From 7cfe2d293fce0302ee827ec5cea3134787fe3d3c Mon Sep 17 00:00:00 2001 From: Dion Hulse Date: Mon, 24 Aug 2015 22:14:43 +0000 Subject: [PATCH] Revert [33688] which removed all branches/4.3 files due to a sync script error. git-svn-id: http://core.svn.wordpress.org/branches/4.3@33692 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- index.php | 17 + license.txt | 385 + readme.html | 98 + wp-activate.php | 131 + wp-admin/about.php | 208 + wp-admin/admin-ajax.php | 102 + wp-admin/admin-footer.php | 100 + wp-admin/admin-functions.php | 15 + wp-admin/admin-header.php | 261 + wp-admin/admin-post.php | 71 + wp-admin/admin.php | 371 + wp-admin/async-upload.php | 115 + wp-admin/comment.php | 333 + wp-admin/credits.php | 191 + wp-admin/css/about-rtl.css | 464 + wp-admin/css/about.css | 464 + wp-admin/css/admin-menu-rtl.css | 944 ++ wp-admin/css/admin-menu.css | 944 ++ wp-admin/css/color-picker-rtl.css | 127 + wp-admin/css/color-picker-rtl.min.css | 1 + wp-admin/css/color-picker.css | 127 + wp-admin/css/color-picker.min.css | 1 + wp-admin/css/colors/_admin.scss | 525 + wp-admin/css/colors/_mixins.scss | 43 + wp-admin/css/colors/_variables.scss | 58 + wp-admin/css/colors/blue/colors-rtl.css | 544 ++ wp-admin/css/colors/blue/colors-rtl.min.css | 1 + wp-admin/css/colors/blue/colors.css | 544 ++ wp-admin/css/colors/blue/colors.min.css | 1 + wp-admin/css/colors/blue/colors.scss | 11 + wp-admin/css/colors/coffee/colors-rtl.css | 544 ++ wp-admin/css/colors/coffee/colors-rtl.min.css | 1 + wp-admin/css/colors/coffee/colors.css | 544 ++ wp-admin/css/colors/coffee/colors.min.css | 1 + wp-admin/css/colors/coffee/colors.scss | 7 + wp-admin/css/colors/ectoplasm/colors-rtl.css | 544 ++ .../css/colors/ectoplasm/colors-rtl.min.css | 1 + wp-admin/css/colors/ectoplasm/colors.css | 544 ++ wp-admin/css/colors/ectoplasm/colors.min.css | 1 + wp-admin/css/colors/ectoplasm/colors.scss | 8 + wp-admin/css/colors/light/colors-rtl.css | 562 ++ wp-admin/css/colors/light/colors-rtl.min.css | 1 + wp-admin/css/colors/light/colors.css | 562 ++ wp-admin/css/colors/light/colors.min.css | 1 + wp-admin/css/colors/light/colors.scss | 38 + wp-admin/css/colors/midnight/colors-rtl.css | 544 ++ .../css/colors/midnight/colors-rtl.min.css | 1 + wp-admin/css/colors/midnight/colors.css | 544 ++ wp-admin/css/colors/midnight/colors.min.css | 1 + wp-admin/css/colors/midnight/colors.scss | 5 + wp-admin/css/colors/ocean/colors-rtl.css | 544 ++ wp-admin/css/colors/ocean/colors-rtl.min.css | 1 + wp-admin/css/colors/ocean/colors.css | 544 ++ wp-admin/css/colors/ocean/colors.min.css | 1 + wp-admin/css/colors/ocean/colors.scss | 8 + wp-admin/css/colors/sunrise/colors-rtl.css | 544 ++ .../css/colors/sunrise/colors-rtl.min.css | 1 + wp-admin/css/colors/sunrise/colors.css | 544 ++ wp-admin/css/colors/sunrise/colors.min.css | 1 + wp-admin/css/colors/sunrise/colors.scss | 6 + wp-admin/css/common-rtl.css | 3453 +++++++ wp-admin/css/common.css | 3453 +++++++ wp-admin/css/customize-controls-rtl.css | 1312 +++ wp-admin/css/customize-controls-rtl.min.css | 1 + wp-admin/css/customize-controls.css | 1312 +++ wp-admin/css/customize-controls.min.css | 1 + wp-admin/css/customize-nav-menus-rtl.css | 1091 +++ wp-admin/css/customize-nav-menus-rtl.min.css | 1 + wp-admin/css/customize-nav-menus.css | 1091 +++ wp-admin/css/customize-nav-menus.min.css | 1 + wp-admin/css/customize-widgets-rtl.css | 694 ++ wp-admin/css/customize-widgets-rtl.min.css | 1 + wp-admin/css/customize-widgets.css | 694 ++ wp-admin/css/customize-widgets.min.css | 1 + wp-admin/css/dashboard-rtl.css | 1107 +++ wp-admin/css/dashboard.css | 1107 +++ wp-admin/css/deprecated-media-rtl.css | 407 + wp-admin/css/deprecated-media-rtl.min.css | 1 + wp-admin/css/deprecated-media.css | 407 + wp-admin/css/deprecated-media.min.css | 1 + wp-admin/css/edit-rtl.css | 1565 +++ wp-admin/css/edit.css | 1565 +++ wp-admin/css/farbtastic-rtl.css | 41 + wp-admin/css/farbtastic.css | 41 + wp-admin/css/forms-rtl.css | 1296 +++ wp-admin/css/forms.css | 1296 +++ wp-admin/css/ie-rtl.css | 776 ++ wp-admin/css/ie-rtl.min.css | 1 + wp-admin/css/ie.css | 776 ++ wp-admin/css/ie.min.css | 1 + wp-admin/css/install-rtl.css | 436 + wp-admin/css/install-rtl.min.css | 1 + wp-admin/css/install.css | 436 + wp-admin/css/install.min.css | 1 + wp-admin/css/l10n-rtl.css | 113 + wp-admin/css/l10n.css | 113 + wp-admin/css/list-tables-rtl.css | 2113 ++++ wp-admin/css/list-tables.css | 2113 ++++ wp-admin/css/login-rtl.css | 282 + wp-admin/css/login-rtl.min.css | 1 + wp-admin/css/login.css | 282 + wp-admin/css/login.min.css | 1 + wp-admin/css/media-rtl.css | 1191 +++ wp-admin/css/media.css | 1191 +++ wp-admin/css/nav-menus-rtl.css | 870 ++ wp-admin/css/nav-menus.css | 870 ++ wp-admin/css/press-this-editor-rtl.css | 122 + wp-admin/css/press-this-editor.css | 122 + wp-admin/css/press-this-rtl.css | 2215 +++++ wp-admin/css/press-this-rtl.min.css | 1 + wp-admin/css/press-this.css | 2215 +++++ wp-admin/css/press-this.min.css | 1 + wp-admin/css/revisions-rtl.css | 575 ++ wp-admin/css/revisions.css | 575 ++ wp-admin/css/site-icon-rtl.css | 37 + wp-admin/css/site-icon.css | 37 + wp-admin/css/themes-rtl.css | 1740 ++++ wp-admin/css/themes.css | 1740 ++++ wp-admin/css/widgets-rtl.css | 587 ++ wp-admin/css/widgets.css | 587 ++ wp-admin/css/wp-admin-rtl.css | 14 + wp-admin/css/wp-admin-rtl.min.css | 8 + wp-admin/css/wp-admin.css | 14 + wp-admin/css/wp-admin.min.css | 8 + wp-admin/custom-background.php | 478 + wp-admin/custom-header.php | 1326 +++ wp-admin/customize.php | 300 + wp-admin/edit-comments.php | 254 + wp-admin/edit-form-advanced.php | 681 ++ wp-admin/edit-form-comment.php | 199 + wp-admin/edit-link-form.php | 150 + wp-admin/edit-tag-form.php | 228 + wp-admin/edit-tags.php | 614 ++ wp-admin/edit.php | 342 + wp-admin/export.php | 242 + wp-admin/freedoms.php | 57 + wp-admin/images/align-center-2x.png | Bin 0 -> 147 bytes wp-admin/images/align-center.png | Bin 0 -> 546 bytes wp-admin/images/align-left-2x.png | Bin 0 -> 143 bytes wp-admin/images/align-left.png | Bin 0 -> 554 bytes wp-admin/images/align-none-2x.png | Bin 0 -> 121 bytes wp-admin/images/align-none.png | Bin 0 -> 417 bytes wp-admin/images/align-right-2x.png | Bin 0 -> 142 bytes wp-admin/images/align-right.png | Bin 0 -> 509 bytes wp-admin/images/arrows-2x.png | Bin 0 -> 863 bytes wp-admin/images/arrows.png | Bin 0 -> 243 bytes wp-admin/images/browser.png | Bin 0 -> 40626 bytes wp-admin/images/bubble_bg-2x.gif | Bin 0 -> 507 bytes wp-admin/images/bubble_bg.gif | Bin 0 -> 398 bytes wp-admin/images/comment-grey-bubble-2x.png | Bin 0 -> 258 bytes wp-admin/images/comment-grey-bubble.png | Bin 0 -> 114 bytes wp-admin/images/date-button-2x.gif | Bin 0 -> 996 bytes wp-admin/images/date-button.gif | Bin 0 -> 400 bytes wp-admin/images/generic.png | Bin 0 -> 719 bytes wp-admin/images/icons32-2x.png | Bin 0 -> 21770 bytes wp-admin/images/icons32-vs-2x.png | Bin 0 -> 21396 bytes wp-admin/images/icons32-vs.png | Bin 0 -> 8007 bytes wp-admin/images/icons32.png | Bin 0 -> 8023 bytes wp-admin/images/imgedit-icons-2x.png | Bin 0 -> 7664 bytes wp-admin/images/imgedit-icons.png | Bin 0 -> 4055 bytes wp-admin/images/list-2x.png | Bin 0 -> 1523 bytes wp-admin/images/list.png | Bin 0 -> 1003 bytes wp-admin/images/loading.gif | Bin 0 -> 2254 bytes wp-admin/images/marker.png | Bin 0 -> 360 bytes wp-admin/images/mask.png | Bin 0 -> 2001 bytes wp-admin/images/media-button-2x.png | Bin 0 -> 850 bytes wp-admin/images/media-button-image.gif | Bin 0 -> 200 bytes wp-admin/images/media-button-music.gif | Bin 0 -> 206 bytes wp-admin/images/media-button-other.gif | Bin 0 -> 248 bytes wp-admin/images/media-button-video.gif | Bin 0 -> 133 bytes wp-admin/images/media-button.png | Bin 0 -> 323 bytes wp-admin/images/menu-2x.png | Bin 0 -> 12672 bytes wp-admin/images/menu-vs-2x.png | Bin 0 -> 12453 bytes wp-admin/images/menu-vs.png | Bin 0 -> 5086 bytes wp-admin/images/menu.png | Bin 0 -> 5039 bytes wp-admin/images/no.png | Bin 0 -> 755 bytes wp-admin/images/post-formats-vs.png | Bin 0 -> 2450 bytes wp-admin/images/post-formats.png | Bin 0 -> 2157 bytes wp-admin/images/post-formats32-vs.png | Bin 0 -> 5111 bytes wp-admin/images/post-formats32.png | Bin 0 -> 5142 bytes wp-admin/images/resize-2x.gif | Bin 0 -> 234 bytes wp-admin/images/resize-rtl-2x.gif | Bin 0 -> 233 bytes wp-admin/images/resize-rtl.gif | Bin 0 -> 149 bytes wp-admin/images/resize.gif | Bin 0 -> 70 bytes wp-admin/images/se.png | Bin 0 -> 120 bytes wp-admin/images/sort-2x.gif | Bin 0 -> 97 bytes wp-admin/images/sort.gif | Bin 0 -> 55 bytes wp-admin/images/spinner-2x.gif | Bin 0 -> 8536 bytes wp-admin/images/spinner.gif | Bin 0 -> 4162 bytes wp-admin/images/stars-2x.png | Bin 0 -> 1257 bytes wp-admin/images/stars.png | Bin 0 -> 924 bytes wp-admin/images/w-logo-blue.png | Bin 0 -> 3113 bytes wp-admin/images/w-logo-white.png | Bin 0 -> 4159 bytes wp-admin/images/wheel.png | Bin 0 -> 6047 bytes wp-admin/images/wordpress-logo-white.svg | 1 + wp-admin/images/wordpress-logo.png | Bin 0 -> 2480 bytes wp-admin/images/wordpress-logo.svg | 1 + wp-admin/images/wpspin_light-2x.gif | Bin 0 -> 9133 bytes wp-admin/images/wpspin_light.gif | Bin 0 -> 2209 bytes wp-admin/images/xit-2x.gif | Bin 0 -> 825 bytes wp-admin/images/xit.gif | Bin 0 -> 181 bytes wp-admin/images/yes.png | Bin 0 -> 539 bytes wp-admin/import.php | 130 + wp-admin/includes/admin-filters.php | 113 + wp-admin/includes/admin.php | 81 + wp-admin/includes/ajax-actions.php | 3176 ++++++ wp-admin/includes/bookmark.php | 308 + wp-admin/includes/class-ftp-pure.php | 190 + wp-admin/includes/class-ftp-sockets.php | 250 + wp-admin/includes/class-ftp.php | 906 ++ wp-admin/includes/class-pclzip.php | 5691 +++++++++++ .../includes/class-wp-comments-list-table.php | 791 ++ .../includes/class-wp-filesystem-base.php | 776 ++ .../includes/class-wp-filesystem-direct.php | 463 + .../includes/class-wp-filesystem-ftpext.php | 525 + .../class-wp-filesystem-ftpsockets.php | 469 + .../includes/class-wp-filesystem-ssh2.php | 517 + wp-admin/includes/class-wp-importer.php | 319 + .../includes/class-wp-links-list-table.php | 324 + wp-admin/includes/class-wp-list-table.php | 1314 +++ .../includes/class-wp-media-list-table.php | 657 ++ .../includes/class-wp-ms-sites-list-table.php | 520 + .../class-wp-ms-themes-list-table.php | 646 ++ .../includes/class-wp-ms-users-list-table.php | 424 + .../class-wp-plugin-install-list-table.php | 551 ++ .../includes/class-wp-plugins-list-table.php | 730 ++ .../includes/class-wp-posts-list-table.php | 1550 +++ wp-admin/includes/class-wp-press-this.php | 1535 +++ wp-admin/includes/class-wp-site-icon.php | 237 + .../includes/class-wp-terms-list-table.php | 583 ++ .../class-wp-theme-install-list-table.php | 464 + .../includes/class-wp-themes-list-table.php | 300 + wp-admin/includes/class-wp-upgrader-skins.php | 941 ++ wp-admin/includes/class-wp-upgrader.php | 3402 +++++++ .../includes/class-wp-users-list-table.php | 488 + wp-admin/includes/comment.php | 176 + wp-admin/includes/continents-cities.php | 493 + wp-admin/includes/dashboard.php | 1390 +++ wp-admin/includes/deprecated.php | 1199 +++ wp-admin/includes/export.php | 524 + wp-admin/includes/file.php | 1239 +++ wp-admin/includes/image-edit.php | 863 ++ wp-admin/includes/image.php | 601 ++ wp-admin/includes/import.php | 207 + wp-admin/includes/list-table.php | 125 + wp-admin/includes/media.php | 3110 ++++++ wp-admin/includes/menu.php | 341 + wp-admin/includes/meta-boxes.php | 1144 +++ wp-admin/includes/misc.php | 901 ++ wp-admin/includes/ms-admin-filters.php | 42 + wp-admin/includes/ms-deprecated.php | 88 + wp-admin/includes/ms.php | 983 ++ wp-admin/includes/nav-menu.php | 1359 +++ wp-admin/includes/plugin-install.php | 590 ++ wp-admin/includes/plugin.php | 1950 ++++ wp-admin/includes/post.php | 1768 ++++ wp-admin/includes/revision.php | 378 + wp-admin/includes/schema.php | 1061 ++ wp-admin/includes/screen.php | 1220 +++ wp-admin/includes/taxonomy.php | 290 + wp-admin/includes/template.php | 2256 +++++ wp-admin/includes/theme-install.php | 211 + wp-admin/includes/theme.php | 560 ++ wp-admin/includes/translation-install.php | 243 + wp-admin/includes/update-core.php | 1289 +++ wp-admin/includes/update.php | 492 + wp-admin/includes/upgrade.php | 2667 ++++++ wp-admin/includes/user.php | 448 + wp-admin/includes/widgets.php | 265 + wp-admin/index.php | 132 + wp-admin/install-helper.php | 200 + wp-admin/install.php | 362 + wp-admin/js/accordion.js | 93 + wp-admin/js/accordion.min.js | 1 + wp-admin/js/bookmarklet.js | 156 + wp-admin/js/bookmarklet.min.js | 1 + wp-admin/js/color-picker.js | 157 + wp-admin/js/color-picker.min.js | 1 + wp-admin/js/comment.js | 63 + wp-admin/js/comment.min.js | 1 + wp-admin/js/common.js | 909 ++ wp-admin/js/common.min.js | 1 + wp-admin/js/custom-background.js | 75 + wp-admin/js/custom-background.min.js | 1 + wp-admin/js/custom-header.js | 61 + wp-admin/js/customize-controls.js | 3581 +++++++ wp-admin/js/customize-controls.min.js | 2 + wp-admin/js/customize-nav-menus.js | 2710 ++++++ wp-admin/js/customize-nav-menus.min.js | 2 + wp-admin/js/customize-widgets.js | 2027 ++++ wp-admin/js/customize-widgets.min.js | 1 + wp-admin/js/dashboard.js | 190 + wp-admin/js/dashboard.min.js | 1 + wp-admin/js/edit-comments.js | 628 ++ wp-admin/js/edit-comments.min.js | 1 + wp-admin/js/editor-expand.js | 1237 +++ wp-admin/js/editor-expand.min.js | 1 + wp-admin/js/editor.js | 370 + wp-admin/js/editor.min.js | 1 + wp-admin/js/farbtastic.js | 276 + wp-admin/js/gallery.js | 237 + wp-admin/js/gallery.min.js | 1 + wp-admin/js/image-edit.js | 633 ++ wp-admin/js/image-edit.min.js | 1 + wp-admin/js/inline-edit-post.js | 361 + wp-admin/js/inline-edit-post.min.js | 1 + wp-admin/js/inline-edit-tax.js | 152 + wp-admin/js/inline-edit-tax.min.js | 1 + wp-admin/js/iris.min.js | 4 + wp-admin/js/language-chooser.js | 26 + wp-admin/js/language-chooser.min.js | 1 + wp-admin/js/link.js | 69 + wp-admin/js/link.min.js | 1 + wp-admin/js/media-gallery.js | 26 + wp-admin/js/media-gallery.min.js | 1 + wp-admin/js/media-upload.js | 69 + wp-admin/js/media-upload.min.js | 1 + wp-admin/js/media.js | 114 + wp-admin/js/media.min.js | 1 + wp-admin/js/nav-menu.js | 1248 +++ wp-admin/js/nav-menu.min.js | 1 + wp-admin/js/password-strength-meter.js | 75 + wp-admin/js/password-strength-meter.min.js | 1 + wp-admin/js/plugin-install.js | 72 + wp-admin/js/plugin-install.min.js | 1 + wp-admin/js/post.js | 973 ++ wp-admin/js/post.min.js | 1 + wp-admin/js/postbox.js | 199 + wp-admin/js/postbox.min.js | 1 + wp-admin/js/press-this.js | 922 ++ wp-admin/js/press-this.min.js | 1 + wp-admin/js/revisions.js | 1166 +++ wp-admin/js/revisions.min.js | 1 + wp-admin/js/set-post-thumbnail.js | 24 + wp-admin/js/set-post-thumbnail.min.js | 1 + wp-admin/js/svg-painter.js | 240 + wp-admin/js/svg-painter.min.js | 1 + wp-admin/js/tags-box.js | 202 + wp-admin/js/tags-box.min.js | 1 + wp-admin/js/tags.js | 72 + wp-admin/js/tags.min.js | 1 + wp-admin/js/theme.js | 1732 ++++ wp-admin/js/theme.min.js | 1 + wp-admin/js/updates.js | 565 ++ wp-admin/js/updates.min.js | 1 + wp-admin/js/user-profile.js | 371 + wp-admin/js/user-profile.min.js | 1 + wp-admin/js/user-suggest.js | 30 + wp-admin/js/user-suggest.min.js | 1 + wp-admin/js/widgets.js | 562 ++ wp-admin/js/widgets.min.js | 1 + wp-admin/js/word-count.js | 112 + wp-admin/js/word-count.min.js | 1 + wp-admin/js/wp-fullscreen-stub.js | 39 + wp-admin/js/wp-fullscreen-stub.min.js | 1 + wp-admin/js/xfn.js | 17 + wp-admin/js/xfn.min.js | 1 + wp-admin/link-add.php | 29 + wp-admin/link-manager.php | 99 + wp-admin/link-parse-opml.php | 90 + wp-admin/link.php | 117 + wp-admin/load-scripts.php | 162 + wp-admin/load-styles.php | 158 + wp-admin/maint/repair.php | 152 + wp-admin/media-new.php | 84 + wp-admin/media-upload.php | 103 + wp-admin/media.php | 146 + wp-admin/menu-header.php | 253 + wp-admin/menu.php | 271 + wp-admin/moderation.php | 12 + wp-admin/ms-admin.php | 13 + wp-admin/ms-delete-site.php | 95 + wp-admin/ms-edit.php | 13 + wp-admin/ms-options.php | 12 + wp-admin/ms-sites.php | 13 + wp-admin/ms-themes.php | 13 + wp-admin/ms-upgrade-network.php | 13 + wp-admin/ms-users.php | 13 + wp-admin/my-sites.php | 127 + wp-admin/nav-menus.php | 828 ++ wp-admin/network.php | 594 ++ wp-admin/network/about.php | 16 + wp-admin/network/admin.php | 32 + wp-admin/network/credits.php | 16 + wp-admin/network/edit.php | 42 + wp-admin/network/freedoms.php | 16 + wp-admin/network/index.php | 79 + wp-admin/network/menu.php | 62 + wp-admin/network/plugin-editor.php | 16 + wp-admin/network/plugin-install.php | 19 + wp-admin/network/plugins.php | 16 + wp-admin/network/profile.php | 16 + wp-admin/network/settings.php | 405 + wp-admin/network/setup.php | 16 + wp-admin/network/site-info.php | 217 + wp-admin/network/site-new.php | 170 + wp-admin/network/site-settings.php | 176 + wp-admin/network/site-themes.php | 198 + wp-admin/network/site-users.php | 320 + wp-admin/network/sites.php | 300 + wp-admin/network/theme-editor.php | 16 + wp-admin/network/theme-install.php | 19 + wp-admin/network/themes.php | 323 + wp-admin/network/update-core.php | 16 + wp-admin/network/update.php | 19 + wp-admin/network/upgrade.php | 132 + wp-admin/network/user-edit.php | 16 + wp-admin/network/user-new.php | 107 + wp-admin/network/users.php | 333 + wp-admin/options-discussion.php | 304 + wp-admin/options-general.php | 390 + wp-admin/options-head.php | 18 + wp-admin/options-media.php | 140 + wp-admin/options-permalink.php | 288 + wp-admin/options-reading.php | 182 + wp-admin/options-writing.php | 180 + wp-admin/options.php | 282 + wp-admin/plugin-editor.php | 279 + wp-admin/plugin-install.php | 138 + wp-admin/plugins.php | 492 + wp-admin/post-new.php | 81 + wp-admin/post.php | 327 + wp-admin/press-this.php | 24 + wp-admin/profile.php | 18 + wp-admin/revision.php | 135 + wp-admin/setup-config.php | 356 + wp-admin/theme-editor.php | 241 + wp-admin/theme-install.php | 269 + wp-admin/themes.php | 419 + wp-admin/tools.php | 119 + wp-admin/update-core.php | 693 ++ wp-admin/update.php | 272 + wp-admin/upgrade-functions.php | 12 + wp-admin/upgrade.php | 126 + wp-admin/upload.php | 294 + wp-admin/user-edit.php | 619 ++ wp-admin/user-new.php | 467 + wp-admin/user/about.php | 13 + wp-admin/user/admin.php | 32 + wp-admin/user/credits.php | 13 + wp-admin/user/freedoms.php | 13 + wp-admin/user/index.php | 13 + wp-admin/user/menu.php | 22 + wp-admin/user/profile.php | 13 + wp-admin/user/user-edit.php | 13 + wp-admin/users.php | 481 + wp-admin/widgets.php | 464 + wp-blog-header.php | 18 + wp-comments-post.php | 167 + wp-config-sample.php | 89 + wp-content/index.php | 2 + wp-content/plugins/hello.php | 82 + wp-content/plugins/index.php | 2 + wp-content/themes/index.php | 2 + wp-content/themes/twentyeleven/404.php | 48 + wp-content/themes/twentyeleven/archive.php | 72 + wp-content/themes/twentyeleven/author.php | 101 + wp-content/themes/twentyeleven/category.php | 74 + .../themes/twentyeleven/colors/dark.css | 623 ++ wp-content/themes/twentyeleven/comments.php | 81 + .../themes/twentyeleven/content-aside.php | 48 + .../themes/twentyeleven/content-featured.php | 47 + .../themes/twentyeleven/content-gallery.php | 90 + .../themes/twentyeleven/content-image.php | 72 + .../themes/twentyeleven/content-intro.php | 21 + .../themes/twentyeleven/content-link.php | 48 + .../themes/twentyeleven/content-page.php | 23 + .../themes/twentyeleven/content-quote.php | 74 + .../themes/twentyeleven/content-single.php | 74 + .../themes/twentyeleven/content-status.php | 61 + wp-content/themes/twentyeleven/content.php | 84 + .../themes/twentyeleven/editor-style-rtl.css | 24 + .../themes/twentyeleven/editor-style.css | 312 + wp-content/themes/twentyeleven/footer.php | 36 + wp-content/themes/twentyeleven/functions.php | 742 ++ wp-content/themes/twentyeleven/header.php | 145 + wp-content/themes/twentyeleven/image.php | 112 + .../comment-arrow-bypostauthor-dark-rtl.png | Bin 0 -> 255 bytes .../comment-arrow-bypostauthor-dark.png | Bin 0 -> 237 bytes .../images/comment-arrow-bypostauthor-rtl.png | Bin 0 -> 257 bytes .../images/comment-arrow-bypostauthor.png | Bin 0 -> 239 bytes .../images/comment-arrow-dark-rtl.png | Bin 0 -> 272 bytes .../images/comment-arrow-dark.png | Bin 0 -> 348 bytes .../twentyeleven/images/comment-arrow-rtl.png | Bin 0 -> 271 bytes .../twentyeleven/images/comment-arrow.png | Bin 0 -> 250 bytes .../images/comment-bubble-dark-rtl.png | Bin 0 -> 856 bytes .../images/comment-bubble-dark.png | Bin 0 -> 872 bytes .../images/comment-bubble-rtl.png | Bin 0 -> 783 bytes .../twentyeleven/images/comment-bubble.png | Bin 0 -> 791 bytes .../images/headers/chessboard-thumbnail.jpg | Bin 0 -> 6420 bytes .../images/headers/chessboard.jpg | Bin 0 -> 52548 bytes .../images/headers/hanoi-thumbnail.jpg | Bin 0 -> 4584 bytes .../twentyeleven/images/headers/hanoi.jpg | Bin 0 -> 39868 bytes .../images/headers/lanterns-thumbnail.jpg | Bin 0 -> 8195 bytes .../twentyeleven/images/headers/lanterns.jpg | Bin 0 -> 91152 bytes .../images/headers/pine-cone-thumbnail.jpg | Bin 0 -> 3770 bytes .../twentyeleven/images/headers/pine-cone.jpg | Bin 0 -> 38272 bytes .../images/headers/shore-thumbnail.jpg | Bin 0 -> 6035 bytes .../twentyeleven/images/headers/shore.jpg | Bin 0 -> 77120 bytes .../images/headers/trolley-thumbnail.jpg | Bin 0 -> 6385 bytes .../twentyeleven/images/headers/trolley.jpg | Bin 0 -> 62046 bytes .../images/headers/wheel-thumbnail.jpg | Bin 0 -> 6460 bytes .../twentyeleven/images/headers/wheel.jpg | Bin 0 -> 59833 bytes .../images/headers/willow-thumbnail.jpg | Bin 0 -> 4297 bytes .../twentyeleven/images/headers/willow.jpg | Bin 0 -> 64681 bytes .../themes/twentyeleven/images/search.png | Bin 0 -> 440 bytes .../themes/twentyeleven/images/wordpress.png | Bin 0 -> 794 bytes .../inc/images/content-sidebar.png | Bin 0 -> 209 bytes .../twentyeleven/inc/images/content.png | Bin 0 -> 185 bytes .../themes/twentyeleven/inc/images/dark.png | Bin 0 -> 5243 bytes .../themes/twentyeleven/inc/images/light.png | Bin 0 -> 5354 bytes .../inc/images/sidebar-content.png | Bin 0 -> 209 bytes .../twentyeleven/inc/theme-customizer.js | 30 + .../themes/twentyeleven/inc/theme-options.css | 35 + .../themes/twentyeleven/inc/theme-options.js | 52 + .../themes/twentyeleven/inc/theme-options.php | 587 ++ .../themes/twentyeleven/inc/widgets.php | 185 + wp-content/themes/twentyeleven/index.php | 52 + wp-content/themes/twentyeleven/js/html5.js | 8 + wp-content/themes/twentyeleven/js/showcase.js | 17 + .../twentyeleven/languages/twentyeleven.pot | 653 ++ wp-content/themes/twentyeleven/license.txt | 281 + wp-content/themes/twentyeleven/page.php | 31 + wp-content/themes/twentyeleven/readme.txt | 104 + wp-content/themes/twentyeleven/rtl.css | 582 ++ wp-content/themes/twentyeleven/screenshot.png | Bin 0 -> 423133 bytes wp-content/themes/twentyeleven/search.php | 59 + wp-content/themes/twentyeleven/searchform.php | 14 + wp-content/themes/twentyeleven/showcase.php | 228 + .../themes/twentyeleven/sidebar-footer.php | 43 + .../themes/twentyeleven/sidebar-page.php | 29 + wp-content/themes/twentyeleven/sidebar.php | 36 + wp-content/themes/twentyeleven/single.php | 32 + wp-content/themes/twentyeleven/style.css | 2774 ++++++ wp-content/themes/twentyeleven/tag.php | 75 + wp-content/themes/twentyfifteen/404.php | 30 + wp-content/themes/twentyfifteen/archive.php | 64 + .../themes/twentyfifteen/author-bio.php | 39 + wp-content/themes/twentyfifteen/comments.php | 58 + .../themes/twentyfifteen/content-link.php | 60 + .../themes/twentyfifteen/content-none.php | 37 + .../themes/twentyfifteen/content-page.php | 37 + .../themes/twentyfifteen/content-search.php | 37 + wp-content/themes/twentyfifteen/content.php | 60 + .../themes/twentyfifteen/css/editor-style.css | 477 + wp-content/themes/twentyfifteen/css/ie.css | 948 ++ wp-content/themes/twentyfifteen/css/ie7.css | 89 + wp-content/themes/twentyfifteen/footer.php | 34 + wp-content/themes/twentyfifteen/functions.php | 355 + .../twentyfifteen/genericons/COPYING.txt | 9 + .../twentyfifteen/genericons/Genericons.eot | Bin 0 -> 22760 bytes .../twentyfifteen/genericons/Genericons.svg | 543 ++ .../twentyfifteen/genericons/Genericons.ttf | Bin 0 -> 22576 bytes .../twentyfifteen/genericons/Genericons.woff | Bin 0 -> 14360 bytes .../twentyfifteen/genericons/LICENSE.txt | 339 + .../themes/twentyfifteen/genericons/README.md | 152 + .../twentyfifteen/genericons/genericons.css | 209 + wp-content/themes/twentyfifteen/header.php | 50 + wp-content/themes/twentyfifteen/image.php | 94 + .../themes/twentyfifteen/inc/back-compat.php | 63 + .../twentyfifteen/inc/custom-header.php | 370 + .../themes/twentyfifteen/inc/customizer.php | 715 ++ .../twentyfifteen/inc/template-tags.php | 243 + wp-content/themes/twentyfifteen/index.php | 61 + .../twentyfifteen/js/color-scheme-control.js | 78 + .../twentyfifteen/js/customize-preview.js | 35 + .../themes/twentyfifteen/js/functions.js | 178 + wp-content/themes/twentyfifteen/js/html5.js | 9 + .../js/keyboard-image-navigation.js | 22 + .../twentyfifteen/js/skip-link-focus-fix.js | 26 + .../twentyfifteen/languages/twentyfifteen.pot | 321 + wp-content/themes/twentyfifteen/page.php | 38 + wp-content/themes/twentyfifteen/readme.txt | 76 + wp-content/themes/twentyfifteen/rtl.css | 840 ++ .../themes/twentyfifteen/screenshot.png | Bin 0 -> 376628 bytes wp-content/themes/twentyfifteen/search.php | 53 + wp-content/themes/twentyfifteen/sidebar.php | 47 + wp-content/themes/twentyfifteen/single.php | 48 + wp-content/themes/twentyfifteen/style.css | 6006 ++++++++++++ wp-content/themes/twentyfourteen/404.php | 32 + wp-content/themes/twentyfourteen/archive.php | 74 + wp-content/themes/twentyfourteen/author.php | 74 + wp-content/themes/twentyfourteen/category.php | 58 + wp-content/themes/twentyfourteen/comments.php | 66 + .../themes/twentyfourteen/content-aside.php | 62 + .../themes/twentyfourteen/content-audio.php | 62 + .../twentyfourteen/content-featured-post.php | 34 + .../themes/twentyfourteen/content-gallery.php | 62 + .../themes/twentyfourteen/content-image.php | 62 + .../themes/twentyfourteen/content-link.php | 62 + .../themes/twentyfourteen/content-none.php | 31 + .../themes/twentyfourteen/content-page.php | 31 + .../themes/twentyfourteen/content-quote.php | 62 + .../themes/twentyfourteen/content-video.php | 62 + wp-content/themes/twentyfourteen/content.php | 71 + .../twentyfourteen/css/editor-style.css | 721 ++ wp-content/themes/twentyfourteen/css/ie.css | 1335 +++ .../twentyfourteen/featured-content.php | 39 + wp-content/themes/twentyfourteen/footer.php | 28 + .../themes/twentyfourteen/functions.php | 519 + .../twentyfourteen/genericons/COPYING.txt | 9 + .../genericons/Genericons-Regular.otf | Bin 0 -> 18212 bytes .../twentyfourteen/genericons/LICENSE.txt | 339 + .../twentyfourteen/genericons/README.txt | 123 + .../font/genericons-regular-webfont.eot | Bin 0 -> 14935 bytes .../font/genericons-regular-webfont.svg | 135 + .../font/genericons-regular-webfont.ttf | Bin 0 -> 27348 bytes .../font/genericons-regular-webfont.woff | Bin 0 -> 17224 bytes .../twentyfourteen/genericons/genericons.css | 197 + wp-content/themes/twentyfourteen/header.php | 65 + wp-content/themes/twentyfourteen/image.php | 79 + .../twentyfourteen/images/pattern-dark.svg | 16 + .../twentyfourteen/images/pattern-light.svg | 6 + .../themes/twentyfourteen/inc/back-compat.php | 63 + .../twentyfourteen/inc/custom-header.php | 147 + .../themes/twentyfourteen/inc/customizer.php | 115 + .../twentyfourteen/inc/featured-content.php | 531 ++ .../twentyfourteen/inc/template-tags.php | 227 + .../themes/twentyfourteen/inc/widgets.php | 269 + wp-content/themes/twentyfourteen/index.php | 61 + .../themes/twentyfourteen/js/customizer.js | 38 + .../js/featured-content-admin.js | 9 + .../themes/twentyfourteen/js/functions.js | 170 + wp-content/themes/twentyfourteen/js/html5.js | 8 + .../js/keyboard-image-navigation.js | 21 + wp-content/themes/twentyfourteen/js/slider.js | 598 ++ .../languages/twentyfourteen.pot | 478 + .../page-templates/contributors.php | 52 + .../page-templates/full-width.php | 42 + wp-content/themes/twentyfourteen/page.php | 48 + wp-content/themes/twentyfourteen/readme.txt | 81 + wp-content/themes/twentyfourteen/rtl.css | 854 ++ .../themes/twentyfourteen/screenshot.png | Bin 0 -> 617254 bytes wp-content/themes/twentyfourteen/search.php | 49 + .../themes/twentyfourteen/sidebar-content.php | 16 + .../themes/twentyfourteen/sidebar-footer.php | 19 + wp-content/themes/twentyfourteen/sidebar.php | 29 + wp-content/themes/twentyfourteen/single.php | 40 + wp-content/themes/twentyfourteen/style.css | 4321 +++++++++ wp-content/themes/twentyfourteen/tag.php | 60 + .../twentyfourteen/taxonomy-post_format.php | 85 + wp-content/themes/twentyten/404.php | 30 + wp-content/themes/twentyten/archive.php | 64 + wp-content/themes/twentyten/attachment.php | 27 + wp-content/themes/twentyten/author.php | 72 + wp-content/themes/twentyten/category.php | 35 + wp-content/themes/twentyten/comments.php | 80 + .../themes/twentyten/editor-style-rtl.css | 29 + wp-content/themes/twentyten/editor-style.css | 297 + wp-content/themes/twentyten/footer.php | 58 + wp-content/themes/twentyten/functions.php | 595 ++ wp-content/themes/twentyten/header.php | 112 + .../images/headers/berries-thumbnail.jpg | Bin 0 -> 5626 bytes .../twentyten/images/headers/berries.jpg | Bin 0 -> 60505 bytes .../headers/cherryblossoms-thumbnail.jpg | Bin 0 -> 6418 bytes .../images/headers/cherryblossoms.jpg | Bin 0 -> 81579 bytes .../images/headers/concave-thumbnail.jpg | Bin 0 -> 5692 bytes .../twentyten/images/headers/concave.jpg | Bin 0 -> 38292 bytes .../images/headers/fern-thumbnail.jpg | Bin 0 -> 5496 bytes .../themes/twentyten/images/headers/fern.jpg | Bin 0 -> 24856 bytes .../images/headers/forestfloor-thumbnail.jpg | Bin 0 -> 6646 bytes .../twentyten/images/headers/forestfloor.jpg | Bin 0 -> 64595 bytes .../images/headers/inkwell-thumbnail.jpg | Bin 0 -> 4039 bytes .../twentyten/images/headers/inkwell.jpg | Bin 0 -> 39133 bytes .../images/headers/path-thumbnail.jpg | Bin 0 -> 4536 bytes .../themes/twentyten/images/headers/path.jpg | Bin 0 -> 51488 bytes .../images/headers/sunset-thumbnail.jpg | Bin 0 -> 2194 bytes .../twentyten/images/headers/sunset.jpg | Bin 0 -> 22115 bytes .../themes/twentyten/images/wordpress.png | Bin 0 -> 794 bytes wp-content/themes/twentyten/index.php | 33 + .../themes/twentyten/languages/twentyten.pot | 409 + wp-content/themes/twentyten/license.txt | 281 + .../themes/twentyten/loop-attachment.php | 132 + wp-content/themes/twentyten/loop-page.php | 36 + wp-content/themes/twentyten/loop-single.php | 70 + wp-content/themes/twentyten/loop.php | 182 + .../themes/twentyten/onecolumn-page.php | 32 + wp-content/themes/twentyten/page.php | 33 + wp-content/themes/twentyten/readme.txt | 93 + wp-content/themes/twentyten/rtl.css | 278 + wp-content/themes/twentyten/screenshot.png | Bin 0 -> 419383 bytes wp-content/themes/twentyten/search.php | 38 + .../themes/twentyten/sidebar-footer.php | 61 + wp-content/themes/twentyten/sidebar.php | 57 + wp-content/themes/twentyten/single.php | 28 + wp-content/themes/twentyten/style.css | 1389 +++ wp-content/themes/twentyten/tag.php | 31 + wp-content/themes/twentythirteen/404.php | 31 + wp-content/themes/twentythirteen/archive.php | 55 + .../themes/twentythirteen/author-bio.php | 34 + wp-content/themes/twentythirteen/author.php | 62 + wp-content/themes/twentythirteen/category.php | 41 + wp-content/themes/twentythirteen/comments.php | 59 + .../themes/twentythirteen/content-aside.php | 38 + .../themes/twentythirteen/content-audio.php | 44 + .../themes/twentythirteen/content-chat.php | 38 + .../themes/twentythirteen/content-gallery.php | 52 + .../themes/twentythirteen/content-image.php | 48 + .../themes/twentythirteen/content-link.php | 43 + .../themes/twentythirteen/content-none.php | 31 + .../themes/twentythirteen/content-quote.php | 34 + .../themes/twentythirteen/content-status.php | 32 + .../themes/twentythirteen/content-video.php | 48 + wp-content/themes/twentythirteen/content.php | 64 + .../twentythirteen/css/editor-style.css | 771 ++ wp-content/themes/twentythirteen/css/ie.css | 288 + wp-content/themes/twentythirteen/footer.php | 26 + .../themes/twentythirteen/functions.php | 552 ++ .../twentythirteen/genericons/COPYING.txt | 9 + .../genericons/Genericons-Regular.otf | Bin 0 -> 18212 bytes .../twentythirteen/genericons/LICENSE.txt | 339 + .../twentythirteen/genericons/README.txt | 123 + .../font/genericons-regular-webfont.eot | Bin 0 -> 14935 bytes .../font/genericons-regular-webfont.svg | 135 + .../font/genericons-regular-webfont.ttf | Bin 0 -> 27348 bytes .../font/genericons-regular-webfont.woff | Bin 0 -> 17224 bytes .../twentythirteen/genericons/genericons.css | 197 + wp-content/themes/twentythirteen/header.php | 51 + wp-content/themes/twentythirteen/image.php | 82 + .../twentythirteen/images/dotted-line-2x.png | Bin 0 -> 86 bytes .../images/dotted-line-light-2x.png | Bin 0 -> 85 bytes .../images/dotted-line-light.png | Bin 0 -> 80 bytes .../twentythirteen/images/dotted-line.png | Bin 0 -> 80 bytes .../images/headers/circle-thumbnail.png | Bin 0 -> 8001 bytes .../twentythirteen/images/headers/circle.png | Bin 0 -> 33848 bytes .../images/headers/diamond-thumbnail.png | Bin 0 -> 1847 bytes .../twentythirteen/images/headers/diamond.png | Bin 0 -> 14266 bytes .../images/headers/star-thumbnail.png | Bin 0 -> 4039 bytes .../twentythirteen/images/headers/star.png | Bin 0 -> 22620 bytes .../twentythirteen/images/search-icon-2x.png | Bin 0 -> 829 bytes .../twentythirteen/images/search-icon.png | Bin 0 -> 422 bytes .../themes/twentythirteen/inc/back-compat.php | 63 + .../twentythirteen/inc/custom-header.php | 230 + wp-content/themes/twentythirteen/index.php | 38 + .../themes/twentythirteen/js/functions.js | 132 + wp-content/themes/twentythirteen/js/html5.js | 8 + .../twentythirteen/js/theme-customizer.js | 41 + .../languages/twentythirteen.pot | 334 + wp-content/themes/twentythirteen/page.php | 50 + wp-content/themes/twentythirteen/readme.txt | 83 + wp-content/themes/twentythirteen/rtl.css | 766 ++ .../themes/twentythirteen/screenshot.png | Bin 0 -> 77773 bytes wp-content/themes/twentythirteen/search.php | 36 + .../themes/twentythirteen/sidebar-main.php | 18 + wp-content/themes/twentythirteen/sidebar.php | 22 + wp-content/themes/twentythirteen/single.php | 28 + wp-content/themes/twentythirteen/style.css | 3227 +++++++ wp-content/themes/twentythirteen/tag.php | 43 + .../twentythirteen/taxonomy-post_format.php | 41 + wp-content/themes/twentytwelve/404.php | 29 + wp-content/themes/twentytwelve/archive.php | 63 + wp-content/themes/twentytwelve/author.php | 84 + wp-content/themes/twentytwelve/category.php | 51 + wp-content/themes/twentytwelve/comments.php | 60 + .../themes/twentytwelve/content-aside.php | 28 + .../themes/twentytwelve/content-image.php | 28 + .../themes/twentytwelve/content-link.php | 26 + .../themes/twentytwelve/content-none.php | 20 + .../themes/twentytwelve/content-page.php | 26 + .../themes/twentytwelve/content-quote.php | 25 + .../themes/twentytwelve/content-status.php | 42 + wp-content/themes/twentytwelve/content.php | 73 + wp-content/themes/twentytwelve/css/ie.css | 273 + .../themes/twentytwelve/editor-style-rtl.css | 28 + .../themes/twentytwelve/editor-style.css | 342 + wp-content/themes/twentytwelve/footer.php | 23 + wp-content/themes/twentytwelve/functions.php | 496 + wp-content/themes/twentytwelve/header.php | 53 + wp-content/themes/twentytwelve/image.php | 116 + .../themes/twentytwelve/inc/custom-header.php | 163 + wp-content/themes/twentytwelve/index.php | 66 + wp-content/themes/twentytwelve/js/html5.js | 8 + .../themes/twentytwelve/js/navigation.js | 55 + .../twentytwelve/js/theme-customizer.js | 65 + .../twentytwelve/languages/twentytwelve.pot | 352 + .../page-templates/front-page.php | 35 + .../page-templates/full-width.php | 30 + wp-content/themes/twentytwelve/page.php | 29 + wp-content/themes/twentytwelve/readme.txt | 84 + wp-content/themes/twentytwelve/rtl.css | 237 + wp-content/themes/twentytwelve/screenshot.png | Bin 0 -> 323498 bytes wp-content/themes/twentytwelve/search.php | 49 + .../themes/twentytwelve/sidebar-front.php | 35 + wp-content/themes/twentytwelve/sidebar.php | 17 + wp-content/themes/twentytwelve/single.php | 33 + wp-content/themes/twentytwelve/style.css | 1778 ++++ wp-content/themes/twentytwelve/tag.php | 52 + wp-cron.php | 129 + wp-includes/ID3/getid3.lib.php | 1380 +++ wp-includes/ID3/getid3.php | 1796 ++++ wp-includes/ID3/license.commercial.txt | 27 + wp-includes/ID3/license.txt | 29 + wp-includes/ID3/module.audio-video.asf.php | 2013 ++++ wp-includes/ID3/module.audio-video.flv.php | 745 ++ .../ID3/module.audio-video.matroska.php | 1751 ++++ .../ID3/module.audio-video.quicktime.php | 2246 +++++ wp-includes/ID3/module.audio-video.riff.php | 2586 +++++ wp-includes/ID3/module.audio.ac3.php | 474 + wp-includes/ID3/module.audio.dts.php | 291 + wp-includes/ID3/module.audio.flac.php | 453 + wp-includes/ID3/module.audio.mp3.php | 2012 ++++ wp-includes/ID3/module.audio.ogg.php | 839 ++ wp-includes/ID3/module.tag.apetag.php | 412 + wp-includes/ID3/module.tag.id3v1.php | 360 + wp-includes/ID3/module.tag.id3v2.php | 3627 +++++++ wp-includes/ID3/module.tag.lyrics3.php | 298 + wp-includes/ID3/readme.txt | 604 ++ wp-includes/SimplePie/Author.php | 157 + wp-includes/SimplePie/Cache.php | 133 + wp-includes/SimplePie/Cache/Base.php | 114 + wp-includes/SimplePie/Cache/DB.php | 137 + wp-includes/SimplePie/Cache/File.php | 173 + wp-includes/SimplePie/Cache/Memcache.php | 183 + wp-includes/SimplePie/Cache/MySQL.php | 438 + wp-includes/SimplePie/Caption.php | 210 + wp-includes/SimplePie/Category.php | 157 + .../SimplePie/Content/Type/Sniffer.php | 332 + wp-includes/SimplePie/Copyright.php | 130 + wp-includes/SimplePie/Core.php | 57 + wp-includes/SimplePie/Credit.php | 156 + .../SimplePie/Decode/HTML/Entities.php | 617 ++ wp-includes/SimplePie/Enclosure.php | 1380 +++ wp-includes/SimplePie/Exception.php | 52 + wp-includes/SimplePie/File.php | 292 + wp-includes/SimplePie/HTTP/Parser.php | 500 + wp-includes/SimplePie/IRI.php | 1238 +++ wp-includes/SimplePie/Item.php | 2964 ++++++ wp-includes/SimplePie/Locator.php | 372 + wp-includes/SimplePie/Misc.php | 2247 +++++ wp-includes/SimplePie/Net/IPv6.php | 276 + wp-includes/SimplePie/Parse/Date.php | 983 ++ wp-includes/SimplePie/Parser.php | 407 + wp-includes/SimplePie/Rating.php | 129 + wp-includes/SimplePie/Registry.php | 225 + wp-includes/SimplePie/Restriction.php | 155 + wp-includes/SimplePie/Sanitize.php | 554 ++ wp-includes/SimplePie/Source.php | 611 ++ .../SimplePie/XML/Declaration/Parser.php | 362 + wp-includes/SimplePie/gzdecode.php | 371 + wp-includes/Text/Diff.php | 506 + wp-includes/Text/Diff/Engine/native.php | 436 + wp-includes/Text/Diff/Engine/shell.php | 162 + wp-includes/Text/Diff/Engine/string.php | 248 + wp-includes/Text/Diff/Engine/xdiff.php | 64 + wp-includes/Text/Diff/Renderer.php | 242 + wp-includes/Text/Diff/Renderer/inline.php | 206 + wp-includes/admin-bar.php | 928 ++ wp-includes/atomlib.php | 363 + wp-includes/author-template.php | 477 + wp-includes/bookmark-template.php | 304 + wp-includes/bookmark.php | 415 + wp-includes/cache.php | 722 ++ wp-includes/canonical.php | 597 ++ wp-includes/capabilities.php | 1631 ++++ wp-includes/category-template.php | 1516 +++ wp-includes/category.php | 340 + wp-includes/certificates/ca-bundle.crt | 3785 ++++++++ wp-includes/class-IXR.php | 1211 +++ wp-includes/class-feed.php | 156 + wp-includes/class-http.php | 2306 +++++ wp-includes/class-json.php | 960 ++ wp-includes/class-oembed.php | 630 ++ wp-includes/class-phpass.php | 278 + wp-includes/class-phpmailer.php | 3622 +++++++ wp-includes/class-pop3.php | 662 ++ wp-includes/class-simplepie.php | 3119 ++++++ wp-includes/class-smtp.php | 1102 +++ wp-includes/class-snoopy.php | 1256 +++ wp-includes/class-wp-admin-bar.php | 578 ++ wp-includes/class-wp-ajax-response.php | 145 + wp-includes/class-wp-customize-control.php | 1971 ++++ wp-includes/class-wp-customize-manager.php | 1665 ++++ wp-includes/class-wp-customize-nav-menus.php | 1001 ++ wp-includes/class-wp-customize-panel.php | 482 + wp-includes/class-wp-customize-section.php | 577 ++ wp-includes/class-wp-customize-setting.php | 2049 ++++ wp-includes/class-wp-customize-widgets.php | 1611 ++++ wp-includes/class-wp-editor.php | 1455 +++ wp-includes/class-wp-embed.php | 370 + wp-includes/class-wp-error.php | 218 + wp-includes/class-wp-http-ixr-client.php | 111 + wp-includes/class-wp-image-editor-gd.php | 487 + wp-includes/class-wp-image-editor-imagick.php | 531 ++ wp-includes/class-wp-image-editor.php | 493 + wp-includes/class-wp-theme.php | 1305 +++ wp-includes/class-wp-walker.php | 421 + wp-includes/class-wp-xmlrpc-server.php | 6345 ++++++++++++ wp-includes/class-wp.php | 725 ++ wp-includes/class.wp-dependencies.php | 509 + wp-includes/class.wp-scripts.php | 331 + wp-includes/class.wp-styles.php | 256 + wp-includes/comment-template.php | 2453 +++++ wp-includes/comment.php | 3169 ++++++ wp-includes/compat.php | 262 + wp-includes/cron.php | 469 + wp-includes/css/admin-bar-rtl.css | 1148 +++ wp-includes/css/admin-bar-rtl.min.css | 1 + wp-includes/css/admin-bar.css | 1148 +++ wp-includes/css/admin-bar.min.css | 1 + wp-includes/css/buttons-rtl.css | 372 + wp-includes/css/buttons-rtl.min.css | 1 + wp-includes/css/buttons.css | 372 + wp-includes/css/buttons.min.css | 1 + wp-includes/css/customize-preview.css | 6 + wp-includes/css/customize-preview.min.css | 1 + wp-includes/css/dashicons.css | 1015 ++ wp-includes/css/dashicons.min.css | 1 + wp-includes/css/editor-rtl.css | 1748 ++++ wp-includes/css/editor-rtl.min.css | 1 + wp-includes/css/editor.css | 1748 ++++ wp-includes/css/editor.min.css | 1 + wp-includes/css/jquery-ui-dialog-rtl.css | 362 + wp-includes/css/jquery-ui-dialog-rtl.min.css | 17 + wp-includes/css/jquery-ui-dialog.css | 362 + wp-includes/css/jquery-ui-dialog.min.css | 17 + wp-includes/css/media-views-rtl.css | 2581 +++++ wp-includes/css/media-views-rtl.min.css | 8 + wp-includes/css/media-views.css | 2581 +++++ wp-includes/css/media-views.min.css | 8 + wp-includes/css/wp-auth-check-rtl.css | 109 + wp-includes/css/wp-auth-check-rtl.min.css | 1 + wp-includes/css/wp-auth-check.css | 109 + wp-includes/css/wp-auth-check.min.css | 1 + wp-includes/css/wp-pointer-rtl.css | 212 + wp-includes/css/wp-pointer-rtl.min.css | 1 + wp-includes/css/wp-pointer.css | 212 + wp-includes/css/wp-pointer.min.css | 1 + wp-includes/date.php | 1013 ++ wp-includes/default-constants.php | 338 + wp-includes/default-filters.php | 412 + wp-includes/default-widgets.php | 1651 ++++ wp-includes/deprecated.php | 3638 +++++++ wp-includes/feed-atom-comments.php | 115 + wp-includes/feed-atom.php | 87 + wp-includes/feed-rdf.php | 85 + wp-includes/feed-rss.php | 46 + wp-includes/feed-rss2-comments.php | 101 + wp-includes/feed-rss2.php | 117 + wp-includes/feed.php | 690 ++ wp-includes/fonts/dashicons.eot | Bin 0 -> 42118 bytes wp-includes/fonts/dashicons.svg | 267 + wp-includes/fonts/dashicons.ttf | Bin 0 -> 41916 bytes wp-includes/fonts/dashicons.woff | Bin 0 -> 26044 bytes wp-includes/formatting.php | 4607 +++++++++ wp-includes/functions.php | 4997 ++++++++++ wp-includes/functions.wp-scripts.php | 293 + wp-includes/functions.wp-styles.php | 221 + wp-includes/general-template.php | 3290 +++++++ wp-includes/http.php | 558 ++ wp-includes/images/admin-bar-sprite-2x.png | Bin 0 -> 3999 bytes wp-includes/images/admin-bar-sprite.png | Bin 0 -> 2467 bytes wp-includes/images/arrow-pointer-blue-2x.png | Bin 0 -> 1666 bytes wp-includes/images/arrow-pointer-blue.png | Bin 0 -> 793 bytes wp-includes/images/blank.gif | Bin 0 -> 43 bytes wp-includes/images/crystal/archive.png | Bin 0 -> 2454 bytes wp-includes/images/crystal/audio.png | Bin 0 -> 2184 bytes wp-includes/images/crystal/code.png | Bin 0 -> 1604 bytes wp-includes/images/crystal/default.png | Bin 0 -> 453 bytes wp-includes/images/crystal/document.png | Bin 0 -> 2063 bytes wp-includes/images/crystal/interactive.png | Bin 0 -> 2217 bytes wp-includes/images/crystal/license.txt | 9 + wp-includes/images/crystal/spreadsheet.png | Bin 0 -> 2408 bytes wp-includes/images/crystal/text.png | Bin 0 -> 670 bytes wp-includes/images/crystal/video.png | Bin 0 -> 1339 bytes wp-includes/images/down_arrow-2x.gif | Bin 0 -> 84 bytes wp-includes/images/down_arrow.gif | Bin 0 -> 59 bytes wp-includes/images/icon-pointer-flag-2x.png | Bin 0 -> 1369 bytes wp-includes/images/icon-pointer-flag.png | Bin 0 -> 783 bytes wp-includes/images/media/archive.png | Bin 0 -> 417 bytes wp-includes/images/media/audio.png | Bin 0 -> 382 bytes wp-includes/images/media/code.png | Bin 0 -> 274 bytes wp-includes/images/media/default.png | Bin 0 -> 168 bytes wp-includes/images/media/document.png | Bin 0 -> 200 bytes wp-includes/images/media/interactive.png | Bin 0 -> 319 bytes wp-includes/images/media/spreadsheet.png | Bin 0 -> 188 bytes wp-includes/images/media/text.png | Bin 0 -> 188 bytes wp-includes/images/media/video.png | Bin 0 -> 283 bytes wp-includes/images/rss-2x.png | Bin 0 -> 1306 bytes wp-includes/images/rss.png | Bin 0 -> 608 bytes wp-includes/images/smilies/frownie.png | Bin 0 -> 1007 bytes wp-includes/images/smilies/icon_arrow.gif | Bin 0 -> 169 bytes wp-includes/images/smilies/icon_biggrin.gif | Bin 0 -> 173 bytes wp-includes/images/smilies/icon_confused.gif | Bin 0 -> 170 bytes wp-includes/images/smilies/icon_cool.gif | Bin 0 -> 172 bytes wp-includes/images/smilies/icon_cry.gif | Bin 0 -> 490 bytes wp-includes/images/smilies/icon_eek.gif | Bin 0 -> 170 bytes wp-includes/images/smilies/icon_evil.gif | Bin 0 -> 241 bytes wp-includes/images/smilies/icon_exclaim.gif | Bin 0 -> 236 bytes wp-includes/images/smilies/icon_idea.gif | Bin 0 -> 174 bytes wp-includes/images/smilies/icon_lol.gif | Bin 0 -> 333 bytes wp-includes/images/smilies/icon_mad.gif | Bin 0 -> 172 bytes wp-includes/images/smilies/icon_mrgreen.gif | Bin 0 -> 348 bytes wp-includes/images/smilies/icon_neutral.gif | Bin 0 -> 167 bytes wp-includes/images/smilies/icon_question.gif | Bin 0 -> 247 bytes wp-includes/images/smilies/icon_razz.gif | Bin 0 -> 175 bytes wp-includes/images/smilies/icon_redface.gif | Bin 0 -> 650 bytes wp-includes/images/smilies/icon_rolleyes.gif | Bin 0 -> 489 bytes wp-includes/images/smilies/icon_sad.gif | Bin 0 -> 167 bytes wp-includes/images/smilies/icon_smile.gif | Bin 0 -> 173 bytes wp-includes/images/smilies/icon_surprised.gif | Bin 0 -> 174 bytes wp-includes/images/smilies/icon_twisted.gif | Bin 0 -> 241 bytes wp-includes/images/smilies/icon_wink.gif | Bin 0 -> 168 bytes wp-includes/images/smilies/mrgreen.png | Bin 0 -> 1486 bytes wp-includes/images/smilies/rolleyes.png | Bin 0 -> 1233 bytes wp-includes/images/smilies/simple-smile.png | Bin 0 -> 1008 bytes wp-includes/images/spinner-2x.gif | Bin 0 -> 8536 bytes wp-includes/images/spinner.gif | Bin 0 -> 4162 bytes wp-includes/images/toggle-arrow-2x.png | Bin 0 -> 354 bytes wp-includes/images/toggle-arrow.png | Bin 0 -> 289 bytes wp-includes/images/uploader-icons-2x.png | Bin 0 -> 3542 bytes wp-includes/images/uploader-icons.png | Bin 0 -> 1556 bytes wp-includes/images/wlw/wp-comments.png | Bin 0 -> 1373 bytes wp-includes/images/wlw/wp-icon.png | Bin 0 -> 664 bytes wp-includes/images/wlw/wp-watermark.png | Bin 0 -> 2376 bytes wp-includes/images/wpicons-2x.png | Bin 0 -> 14931 bytes wp-includes/images/wpicons.png | Bin 0 -> 7086 bytes wp-includes/images/wpspin-2x.gif | Bin 0 -> 9133 bytes wp-includes/images/wpspin.gif | Bin 0 -> 2209 bytes wp-includes/images/xit-2x.gif | Bin 0 -> 825 bytes wp-includes/images/xit.gif | Bin 0 -> 181 bytes wp-includes/js/admin-bar.js | 387 + wp-includes/js/admin-bar.min.js | 1 + wp-includes/js/autosave.js | 591 ++ wp-includes/js/autosave.min.js | 1 + wp-includes/js/backbone.min.js | 1 + wp-includes/js/colorpicker.js | 707 ++ wp-includes/js/colorpicker.min.js | 1 + wp-includes/js/comment-reply.js | 47 + wp-includes/js/comment-reply.min.js | 1 + wp-includes/js/crop/cropper.css | 165 + wp-includes/js/crop/cropper.js | 516 + wp-includes/js/crop/marqueeHoriz.gif | Bin 0 -> 277 bytes wp-includes/js/crop/marqueeVert.gif | Bin 0 -> 293 bytes wp-includes/js/customize-base.js | 647 ++ wp-includes/js/customize-base.min.js | 1 + wp-includes/js/customize-loader.js | 259 + wp-includes/js/customize-loader.min.js | 1 + wp-includes/js/customize-models.js | 247 + wp-includes/js/customize-models.min.js | 1 + wp-includes/js/customize-preview-nav-menus.js | 284 + .../js/customize-preview-nav-menus.min.js | 1 + wp-includes/js/customize-preview-widgets.js | 129 + .../js/customize-preview-widgets.min.js | 1 + wp-includes/js/customize-preview.js | 171 + wp-includes/js/customize-preview.min.js | 1 + wp-includes/js/customize-views.js | 230 + wp-includes/js/customize-views.min.js | 1 + wp-includes/js/heartbeat.js | 749 ++ wp-includes/js/heartbeat.min.js | 1 + wp-includes/js/hoverIntent.js | 115 + wp-includes/js/hoverIntent.min.js | 1 + .../js/imgareaselect/border-anim-h.gif | Bin 0 -> 178 bytes .../js/imgareaselect/border-anim-v.gif | Bin 0 -> 178 bytes .../js/imgareaselect/imgareaselect.css | 41 + .../js/imgareaselect/jquery.imgareaselect.js | 1232 +++ .../imgareaselect/jquery.imgareaselect.min.js | 1 + wp-includes/js/jcrop/Jcrop.gif | Bin 0 -> 323 bytes wp-includes/js/jcrop/jquery.Jcrop.min.css | 29 + wp-includes/js/jcrop/jquery.Jcrop.min.js | 22 + wp-includes/js/jquery/jquery-migrate.js | 521 + wp-includes/js/jquery/jquery-migrate.min.js | 2 + wp-includes/js/jquery/jquery.color.min.js | 2 + wp-includes/js/jquery/jquery.form.js | 1193 +++ wp-includes/js/jquery/jquery.form.min.js | 11 + wp-includes/js/jquery/jquery.hotkeys.js | 134 + wp-includes/js/jquery/jquery.hotkeys.min.js | 1 + wp-includes/js/jquery/jquery.js | 6 + wp-includes/js/jquery/jquery.masonry.min.js | 11 + wp-includes/js/jquery/jquery.query.js | 11 + wp-includes/js/jquery/jquery.schedule.js | 36 + .../js/jquery/jquery.serialize-object.js | 31 + wp-includes/js/jquery/jquery.table-hotkeys.js | 99 + .../js/jquery/jquery.table-hotkeys.min.js | 1 + .../js/jquery/jquery.ui.touch-punch.js | 11 + wp-includes/js/jquery/suggest.js | 316 + wp-includes/js/jquery/suggest.min.js | 1 + wp-includes/js/jquery/ui/accordion.min.js | 11 + wp-includes/js/jquery/ui/autocomplete.min.js | 11 + wp-includes/js/jquery/ui/button.min.js | 11 + wp-includes/js/jquery/ui/core.min.js | 11 + wp-includes/js/jquery/ui/datepicker.min.js | 12 + wp-includes/js/jquery/ui/dialog.min.js | 11 + wp-includes/js/jquery/ui/draggable.min.js | 11 + wp-includes/js/jquery/ui/droppable.min.js | 11 + wp-includes/js/jquery/ui/effect-blind.min.js | 11 + wp-includes/js/jquery/ui/effect-bounce.min.js | 11 + wp-includes/js/jquery/ui/effect-clip.min.js | 11 + wp-includes/js/jquery/ui/effect-drop.min.js | 11 + .../js/jquery/ui/effect-explode.min.js | 11 + wp-includes/js/jquery/ui/effect-fade.min.js | 11 + wp-includes/js/jquery/ui/effect-fold.min.js | 11 + .../js/jquery/ui/effect-highlight.min.js | 11 + wp-includes/js/jquery/ui/effect-puff.min.js | 11 + .../js/jquery/ui/effect-pulsate.min.js | 11 + wp-includes/js/jquery/ui/effect-scale.min.js | 11 + wp-includes/js/jquery/ui/effect-shake.min.js | 11 + wp-includes/js/jquery/ui/effect-size.min.js | 11 + wp-includes/js/jquery/ui/effect-slide.min.js | 11 + .../js/jquery/ui/effect-transfer.min.js | 11 + wp-includes/js/jquery/ui/effect.min.js | 21 + wp-includes/js/jquery/ui/menu.min.js | 11 + wp-includes/js/jquery/ui/mouse.min.js | 11 + wp-includes/js/jquery/ui/position.min.js | 11 + wp-includes/js/jquery/ui/progressbar.min.js | 11 + wp-includes/js/jquery/ui/resizable.min.js | 11 + wp-includes/js/jquery/ui/selectable.min.js | 11 + wp-includes/js/jquery/ui/selectmenu.min.js | 11 + wp-includes/js/jquery/ui/slider.min.js | 11 + wp-includes/js/jquery/ui/sortable.min.js | 11 + wp-includes/js/jquery/ui/spinner.min.js | 11 + wp-includes/js/jquery/ui/tabs.min.js | 11 + wp-includes/js/jquery/ui/tooltip.min.js | 11 + wp-includes/js/jquery/ui/widget.min.js | 11 + wp-includes/js/json2.js | 480 + wp-includes/js/json2.min.js | 1 + wp-includes/js/masonry.min.js | 17 + wp-includes/js/mce-view.js | 912 ++ wp-includes/js/mce-view.min.js | 1 + wp-includes/js/media-audiovideo.js | 916 ++ wp-includes/js/media-audiovideo.min.js | 1 + wp-includes/js/media-editor.js | 1114 +++ wp-includes/js/media-editor.min.js | 1 + wp-includes/js/media-grid.js | 853 ++ wp-includes/js/media-grid.min.js | 1 + wp-includes/js/media-models.js | 1506 +++ wp-includes/js/media-models.min.js | 1 + wp-includes/js/media-views.js | 8489 +++++++++++++++++ wp-includes/js/media-views.min.js | 4 + wp-includes/js/mediaelement/background.png | Bin 0 -> 166 bytes wp-includes/js/mediaelement/bigplay.png | Bin 0 -> 3001 bytes wp-includes/js/mediaelement/bigplay.svg | 1 + wp-includes/js/mediaelement/controls.png | Bin 0 -> 1892 bytes wp-includes/js/mediaelement/controls.svg | 1 + .../js/mediaelement/flashmediaelement.swf | Bin 0 -> 59931 bytes wp-includes/js/mediaelement/froogaloop.min.js | 4 + wp-includes/js/mediaelement/loading.gif | Bin 0 -> 6224 bytes .../mediaelement-and-player.min.js | 28 + .../mediaelement/mediaelementplayer.min.css | 1 + .../mediaelement/silverlightmediaelement.xap | Bin 0 -> 12381 bytes wp-includes/js/mediaelement/skipback.png | Bin 0 -> 4245 bytes .../js/mediaelement/wp-mediaelement.css | 312 + .../js/mediaelement/wp-mediaelement.js | 34 + wp-includes/js/mediaelement/wp-playlist.js | 175 + wp-includes/js/plupload/handlers.js | 488 + wp-includes/js/plupload/handlers.min.js | 1 + wp-includes/js/plupload/license.txt | 339 + wp-includes/js/plupload/plupload.flash.swf | Bin 0 -> 29577 bytes wp-includes/js/plupload/plupload.full.min.js | 28 + .../js/plupload/plupload.silverlight.xap | Bin 0 -> 62535 bytes wp-includes/js/plupload/wp-plupload.js | 424 + wp-includes/js/plupload/wp-plupload.min.js | 1 + wp-includes/js/quicktags.js | 707 ++ wp-includes/js/quicktags.min.js | 1 + wp-includes/js/shortcode.js | 356 + wp-includes/js/shortcode.min.js | 1 + wp-includes/js/swfobject.js | 4 + wp-includes/js/swfupload/handlers.js | 376 + wp-includes/js/swfupload/handlers.min.js | 1 + wp-includes/js/swfupload/license.txt | 32 + .../js/swfupload/plugins/swfupload.cookies.js | 53 + .../js/swfupload/plugins/swfupload.queue.js | 98 + .../js/swfupload/plugins/swfupload.speed.js | 342 + .../swfupload/plugins/swfupload.swfobject.js | 105 + wp-includes/js/swfupload/swfupload.js | 980 ++ wp-includes/js/swfupload/swfupload.swf | Bin 0 -> 13133 bytes wp-includes/js/thickbox/loadingAnimation.gif | Bin 0 -> 15238 bytes wp-includes/js/thickbox/macFFBgHack.png | Bin 0 -> 94 bytes wp-includes/js/thickbox/thickbox.css | 138 + wp-includes/js/thickbox/thickbox.js | 316 + wp-includes/js/tinymce/langs/wp-langs-en.js | 519 + wp-includes/js/tinymce/license.txt | 504 + .../js/tinymce/plugins/charmap/plugin.js | 396 + .../js/tinymce/plugins/charmap/plugin.min.js | 1 + .../js/tinymce/plugins/colorpicker/plugin.js | 112 + .../tinymce/plugins/colorpicker/plugin.min.js | 1 + .../tinymce/plugins/compat3x/css/dialog.css | 212 + .../js/tinymce/plugins/compat3x/plugin.js | 304 + .../js/tinymce/plugins/compat3x/plugin.min.js | 1 + .../tinymce/plugins/directionality/plugin.js | 64 + .../plugins/directionality/plugin.min.js | 1 + .../js/tinymce/plugins/fullscreen/plugin.js | 136 + .../tinymce/plugins/fullscreen/plugin.min.js | 1 + wp-includes/js/tinymce/plugins/hr/plugin.js | 30 + .../js/tinymce/plugins/hr/plugin.min.js | 1 + .../js/tinymce/plugins/image/plugin.js | 569 ++ .../js/tinymce/plugins/image/plugin.min.js | 1 + .../js/tinymce/plugins/lists/plugin.js | 813 ++ .../js/tinymce/plugins/lists/plugin.min.js | 1 + .../js/tinymce/plugins/media/moxieplayer.swf | Bin 0 -> 20017 bytes .../js/tinymce/plugins/media/plugin.js | 782 ++ .../js/tinymce/plugins/media/plugin.min.js | 1 + .../js/tinymce/plugins/paste/plugin.js | 1627 ++++ .../js/tinymce/plugins/paste/plugin.min.js | 1 + .../js/tinymce/plugins/tabfocus/plugin.js | 120 + .../js/tinymce/plugins/tabfocus/plugin.min.js | 1 + .../js/tinymce/plugins/textcolor/plugin.js | 282 + .../tinymce/plugins/textcolor/plugin.min.js | 1 + .../js/tinymce/plugins/wordpress/plugin.js | 896 ++ .../tinymce/plugins/wordpress/plugin.min.js | 1 + .../js/tinymce/plugins/wpautoresize/plugin.js | 207 + .../plugins/wpautoresize/plugin.min.js | 1 + .../js/tinymce/plugins/wpdialogs/plugin.js | 92 + .../tinymce/plugins/wpdialogs/plugin.min.js | 1 + .../js/tinymce/plugins/wpeditimage/plugin.js | 974 ++ .../tinymce/plugins/wpeditimage/plugin.min.js | 1 + .../js/tinymce/plugins/wpemoji/plugin.js | 128 + .../js/tinymce/plugins/wpemoji/plugin.min.js | 1 + .../js/tinymce/plugins/wpgallery/plugin.js | 112 + .../tinymce/plugins/wpgallery/plugin.min.js | 1 + .../js/tinymce/plugins/wplink/plugin.js | 146 + .../js/tinymce/plugins/wplink/plugin.min.js | 1 + .../tinymce/plugins/wptextpattern/plugin.js | 178 + .../plugins/wptextpattern/plugin.min.js | 1 + .../js/tinymce/plugins/wpview/plugin.js | 738 ++ .../js/tinymce/plugins/wpview/plugin.min.js | 1 + .../skins/lightgray/content.inline.min.css | 1 + .../tinymce/skins/lightgray/content.min.css | 1 + .../tinymce/skins/lightgray/fonts/readme.md | 1 + .../skins/lightgray/fonts/tinymce-small.eot | Bin 0 -> 9112 bytes .../skins/lightgray/fonts/tinymce-small.svg | 62 + .../skins/lightgray/fonts/tinymce-small.ttf | Bin 0 -> 8924 bytes .../skins/lightgray/fonts/tinymce-small.woff | Bin 0 -> 9000 bytes .../tinymce/skins/lightgray/fonts/tinymce.eot | Bin 0 -> 12044 bytes .../tinymce/skins/lightgray/fonts/tinymce.svg | 83 + .../tinymce/skins/lightgray/fonts/tinymce.ttf | Bin 0 -> 11880 bytes .../skins/lightgray/fonts/tinymce.woff | Bin 0 -> 11956 bytes .../js/tinymce/skins/lightgray/img/anchor.gif | Bin 0 -> 53 bytes .../js/tinymce/skins/lightgray/img/loader.gif | Bin 0 -> 2608 bytes .../js/tinymce/skins/lightgray/img/object.gif | Bin 0 -> 152 bytes .../js/tinymce/skins/lightgray/img/trans.gif | Bin 0 -> 43 bytes .../tinymce/skins/lightgray/skin.ie7.min.css | 1 + .../js/tinymce/skins/lightgray/skin.min.css | 1 + .../tinymce/skins/wordpress/images/audio.png | Bin 0 -> 412 bytes .../skins/wordpress/images/dashicon-edit.png | Bin 0 -> 368 bytes .../skins/wordpress/images/dashicon-no.png | Bin 0 -> 339 bytes .../skins/wordpress/images/embedded.png | Bin 0 -> 8177 bytes .../skins/wordpress/images/gallery-2x.png | Bin 0 -> 447 bytes .../skins/wordpress/images/gallery.png | Bin 0 -> 379 bytes .../skins/wordpress/images/more-2x.png | Bin 0 -> 603 bytes .../tinymce/skins/wordpress/images/more.png | Bin 0 -> 414 bytes .../skins/wordpress/images/pagebreak-2x.png | Bin 0 -> 835 bytes .../skins/wordpress/images/pagebreak.png | Bin 0 -> 1140 bytes .../skins/wordpress/images/playlist-audio.png | Bin 0 -> 440 bytes .../skins/wordpress/images/playlist-video.png | Bin 0 -> 290 bytes .../tinymce/skins/wordpress/images/video.png | Bin 0 -> 363 bytes .../js/tinymce/skins/wordpress/wp-content.css | 528 + wp-includes/js/tinymce/themes/modern/theme.js | 864 ++ .../js/tinymce/themes/modern/theme.min.js | 1 + wp-includes/js/tinymce/tiny_mce_popup.js | 542 ++ wp-includes/js/tinymce/tinymce.min.js | 12 + .../js/tinymce/utils/editable_selects.js | 70 + wp-includes/js/tinymce/utils/form_utils.js | 210 + wp-includes/js/tinymce/utils/mctabs.js | 164 + wp-includes/js/tinymce/utils/validate.js | 252 + wp-includes/js/tinymce/wp-tinymce.js.gz | Bin 0 -> 146897 bytes wp-includes/js/tinymce/wp-tinymce.php | 39 + wp-includes/js/tw-sack.js | 193 + wp-includes/js/tw-sack.min.js | 1 + wp-includes/js/twemoji.js | 589 ++ wp-includes/js/twemoji.min.js | 1 + wp-includes/js/underscore.min.js | 5 + wp-includes/js/utils.js | 197 + wp-includes/js/utils.min.js | 1 + wp-includes/js/wp-a11y.js | 88 + wp-includes/js/wp-a11y.min.js | 1 + wp-includes/js/wp-ajax-response.js | 64 + wp-includes/js/wp-ajax-response.min.js | 1 + wp-includes/js/wp-auth-check.js | 114 + wp-includes/js/wp-auth-check.min.js | 1 + wp-includes/js/wp-backbone.js | 386 + wp-includes/js/wp-backbone.min.js | 1 + wp-includes/js/wp-emoji-loader.js | 97 + wp-includes/js/wp-emoji-loader.min.js | 1 + wp-includes/js/wp-emoji-release.min.js | 4 + wp-includes/js/wp-emoji.js | 193 + wp-includes/js/wp-emoji.min.js | 1 + wp-includes/js/wp-list-revisions.js | 24 + wp-includes/js/wp-list-revisions.min.js | 1 + wp-includes/js/wp-lists.js | 469 + wp-includes/js/wp-lists.min.js | 1 + wp-includes/js/wp-pointer.js | 282 + wp-includes/js/wp-pointer.min.js | 1 + wp-includes/js/wp-util.js | 123 + wp-includes/js/wp-util.min.js | 1 + wp-includes/js/wpdialog.js | 19 + wp-includes/js/wpdialog.min.js | 1 + wp-includes/js/wplink.js | 723 ++ wp-includes/js/wplink.min.js | 1 + wp-includes/js/zxcvbn-async.js | 18 + wp-includes/js/zxcvbn-async.min.js | 1 + wp-includes/js/zxcvbn.min.js | 47 + wp-includes/kses.php | 1753 ++++ wp-includes/l10n.php | 982 ++ wp-includes/link-template.php | 3689 +++++++ wp-includes/load.php | 839 ++ wp-includes/locale.php | 378 + wp-includes/media-template.php | 1272 +++ wp-includes/media.php | 3472 +++++++ wp-includes/meta.php | 1705 ++++ wp-includes/ms-blogs.php | 979 ++ wp-includes/ms-default-constants.php | 157 + wp-includes/ms-default-filters.php | 89 + wp-includes/ms-deprecated.php | 349 + wp-includes/ms-files.php | 82 + wp-includes/ms-functions.php | 2498 +++++ wp-includes/ms-load.php | 481 + wp-includes/ms-settings.php | 213 + wp-includes/nav-menu-template.php | 694 ++ wp-includes/nav-menu.php | 949 ++ wp-includes/option.php | 1490 +++ wp-includes/pluggable-deprecated.php | 192 + wp-includes/pluggable.php | 2386 +++++ wp-includes/plugin.php | 925 ++ wp-includes/pomo/entry.php | 88 + wp-includes/pomo/mo.php | 302 + wp-includes/pomo/po.php | 409 + wp-includes/pomo/streams.php | 315 + wp-includes/pomo/translations.php | 358 + wp-includes/post-formats.php | 254 + wp-includes/post-template.php | 1862 ++++ wp-includes/post-thumbnail-template.php | 163 + wp-includes/post.php | 6036 ++++++++++++ wp-includes/query.php | 4751 +++++++++ wp-includes/registration-functions.php | 7 + wp-includes/registration.php | 7 + wp-includes/revision.php | 669 ++ wp-includes/rewrite.php | 2326 +++++ wp-includes/rss-functions.php | 9 + wp-includes/rss.php | 956 ++ wp-includes/script-loader.php | 1160 +++ wp-includes/session.php | 439 + wp-includes/shortcodes.php | 558 ++ wp-includes/taxonomy.php | 4971 ++++++++++ wp-includes/template-loader.php | 77 + wp-includes/template.php | 560 ++ wp-includes/theme-compat/comments-popup.php | 131 + wp-includes/theme-compat/comments.php | 114 + wp-includes/theme-compat/footer.php | 30 + wp-includes/theme-compat/header.php | 51 + wp-includes/theme-compat/sidebar.php | 83 + wp-includes/theme.php | 2007 ++++ wp-includes/update.php | 704 ++ wp-includes/user.php | 2684 ++++++ wp-includes/vars.php | 147 + wp-includes/version.php | 35 + wp-includes/widgets.php | 1785 ++++ wp-includes/wlwmanifest.xml | 43 + wp-includes/wp-db.php | 3131 ++++++ wp-includes/wp-diff.php | 544 ++ wp-links-opml.php | 80 + wp-load.php | 81 + wp-login.php | 998 ++ wp-mail.php | 260 + wp-settings.php | 374 + wp-signup.php | 732 ++ wp-trackback.php | 127 + xmlrpc.php | 101 + 1357 files changed, 458905 insertions(+) create mode 100644 index.php create mode 100644 license.txt create mode 100644 readme.html create mode 100644 wp-activate.php create mode 100644 wp-admin/about.php create mode 100644 wp-admin/admin-ajax.php create mode 100644 wp-admin/admin-footer.php create mode 100644 wp-admin/admin-functions.php create mode 100644 wp-admin/admin-header.php create mode 100644 wp-admin/admin-post.php create mode 100644 wp-admin/admin.php create mode 100644 wp-admin/async-upload.php create mode 100644 wp-admin/comment.php create mode 100644 wp-admin/credits.php create mode 100644 wp-admin/css/about-rtl.css create mode 100644 wp-admin/css/about.css create mode 100644 wp-admin/css/admin-menu-rtl.css create mode 100644 wp-admin/css/admin-menu.css create mode 100644 wp-admin/css/color-picker-rtl.css create mode 100644 wp-admin/css/color-picker-rtl.min.css create mode 100644 wp-admin/css/color-picker.css create mode 100644 wp-admin/css/color-picker.min.css create mode 100644 wp-admin/css/colors/_admin.scss create mode 100644 wp-admin/css/colors/_mixins.scss create mode 100644 wp-admin/css/colors/_variables.scss create mode 100644 wp-admin/css/colors/blue/colors-rtl.css create mode 100644 wp-admin/css/colors/blue/colors-rtl.min.css create mode 100644 wp-admin/css/colors/blue/colors.css create mode 100644 wp-admin/css/colors/blue/colors.min.css create mode 100644 wp-admin/css/colors/blue/colors.scss create mode 100644 wp-admin/css/colors/coffee/colors-rtl.css create mode 100644 wp-admin/css/colors/coffee/colors-rtl.min.css create mode 100644 wp-admin/css/colors/coffee/colors.css create mode 100644 wp-admin/css/colors/coffee/colors.min.css create mode 100644 wp-admin/css/colors/coffee/colors.scss create mode 100644 wp-admin/css/colors/ectoplasm/colors-rtl.css create mode 100644 wp-admin/css/colors/ectoplasm/colors-rtl.min.css create mode 100644 wp-admin/css/colors/ectoplasm/colors.css create mode 100644 wp-admin/css/colors/ectoplasm/colors.min.css create mode 100644 wp-admin/css/colors/ectoplasm/colors.scss create mode 100644 wp-admin/css/colors/light/colors-rtl.css create mode 100644 wp-admin/css/colors/light/colors-rtl.min.css create mode 100644 wp-admin/css/colors/light/colors.css create mode 100644 wp-admin/css/colors/light/colors.min.css create mode 100644 wp-admin/css/colors/light/colors.scss create mode 100644 wp-admin/css/colors/midnight/colors-rtl.css create mode 100644 wp-admin/css/colors/midnight/colors-rtl.min.css create mode 100644 wp-admin/css/colors/midnight/colors.css create mode 100644 wp-admin/css/colors/midnight/colors.min.css create mode 100644 wp-admin/css/colors/midnight/colors.scss create mode 100644 wp-admin/css/colors/ocean/colors-rtl.css create mode 100644 wp-admin/css/colors/ocean/colors-rtl.min.css create mode 100644 wp-admin/css/colors/ocean/colors.css create mode 100644 wp-admin/css/colors/ocean/colors.min.css create mode 100644 wp-admin/css/colors/ocean/colors.scss create mode 100644 wp-admin/css/colors/sunrise/colors-rtl.css create mode 100644 wp-admin/css/colors/sunrise/colors-rtl.min.css create mode 100644 wp-admin/css/colors/sunrise/colors.css create mode 100644 wp-admin/css/colors/sunrise/colors.min.css create mode 100644 wp-admin/css/colors/sunrise/colors.scss create mode 100644 wp-admin/css/common-rtl.css create mode 100644 wp-admin/css/common.css create mode 100644 wp-admin/css/customize-controls-rtl.css create mode 100644 wp-admin/css/customize-controls-rtl.min.css create mode 100644 wp-admin/css/customize-controls.css create mode 100644 wp-admin/css/customize-controls.min.css create mode 100644 wp-admin/css/customize-nav-menus-rtl.css create mode 100644 wp-admin/css/customize-nav-menus-rtl.min.css create mode 100644 wp-admin/css/customize-nav-menus.css create mode 100644 wp-admin/css/customize-nav-menus.min.css create mode 100644 wp-admin/css/customize-widgets-rtl.css create mode 100644 wp-admin/css/customize-widgets-rtl.min.css create mode 100644 wp-admin/css/customize-widgets.css create mode 100644 wp-admin/css/customize-widgets.min.css create mode 100644 wp-admin/css/dashboard-rtl.css create mode 100644 wp-admin/css/dashboard.css create mode 100644 wp-admin/css/deprecated-media-rtl.css create mode 100644 wp-admin/css/deprecated-media-rtl.min.css create mode 100644 wp-admin/css/deprecated-media.css create mode 100644 wp-admin/css/deprecated-media.min.css create mode 100644 wp-admin/css/edit-rtl.css create mode 100644 wp-admin/css/edit.css create mode 100644 wp-admin/css/farbtastic-rtl.css create mode 100644 wp-admin/css/farbtastic.css create mode 100644 wp-admin/css/forms-rtl.css create mode 100644 wp-admin/css/forms.css 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 create mode 100644 wp-admin/css/install-rtl.css create mode 100644 wp-admin/css/install-rtl.min.css create mode 100644 wp-admin/css/install.css create mode 100644 wp-admin/css/install.min.css create mode 100644 wp-admin/css/l10n-rtl.css create mode 100644 wp-admin/css/l10n.css create mode 100644 wp-admin/css/list-tables-rtl.css create mode 100644 wp-admin/css/list-tables.css create mode 100644 wp-admin/css/login-rtl.css create mode 100644 wp-admin/css/login-rtl.min.css create mode 100644 wp-admin/css/login.css create mode 100644 wp-admin/css/login.min.css create mode 100644 wp-admin/css/media-rtl.css create mode 100644 wp-admin/css/media.css create mode 100644 wp-admin/css/nav-menus-rtl.css create mode 100644 wp-admin/css/nav-menus.css create mode 100644 wp-admin/css/press-this-editor-rtl.css create mode 100644 wp-admin/css/press-this-editor.css create mode 100644 wp-admin/css/press-this-rtl.css create mode 100644 wp-admin/css/press-this-rtl.min.css create mode 100644 wp-admin/css/press-this.css create mode 100644 wp-admin/css/press-this.min.css create mode 100644 wp-admin/css/revisions-rtl.css create mode 100644 wp-admin/css/revisions.css create mode 100644 wp-admin/css/site-icon-rtl.css create mode 100644 wp-admin/css/site-icon.css create mode 100644 wp-admin/css/themes-rtl.css create mode 100644 wp-admin/css/themes.css create mode 100644 wp-admin/css/widgets-rtl.css create mode 100644 wp-admin/css/widgets.css create mode 100644 wp-admin/css/wp-admin-rtl.css create mode 100644 wp-admin/css/wp-admin-rtl.min.css create mode 100644 wp-admin/css/wp-admin.css create mode 100644 wp-admin/css/wp-admin.min.css create mode 100644 wp-admin/custom-background.php create mode 100644 wp-admin/custom-header.php create mode 100644 wp-admin/customize.php create mode 100644 wp-admin/edit-comments.php create mode 100644 wp-admin/edit-form-advanced.php create mode 100644 wp-admin/edit-form-comment.php create mode 100644 wp-admin/edit-link-form.php create mode 100644 wp-admin/edit-tag-form.php create mode 100644 wp-admin/edit-tags.php create mode 100644 wp-admin/edit.php create mode 100644 wp-admin/export.php create mode 100644 wp-admin/freedoms.php create mode 100644 wp-admin/images/align-center-2x.png create mode 100644 wp-admin/images/align-center.png create mode 100644 wp-admin/images/align-left-2x.png create mode 100644 wp-admin/images/align-left.png create mode 100644 wp-admin/images/align-none-2x.png create mode 100644 wp-admin/images/align-none.png create mode 100644 wp-admin/images/align-right-2x.png create mode 100644 wp-admin/images/align-right.png create mode 100644 wp-admin/images/arrows-2x.png create mode 100644 wp-admin/images/arrows.png create mode 100644 wp-admin/images/browser.png create mode 100644 wp-admin/images/bubble_bg-2x.gif create mode 100644 wp-admin/images/bubble_bg.gif create mode 100644 wp-admin/images/comment-grey-bubble-2x.png create mode 100644 wp-admin/images/comment-grey-bubble.png create mode 100644 wp-admin/images/date-button-2x.gif create mode 100644 wp-admin/images/date-button.gif create mode 100644 wp-admin/images/generic.png create mode 100644 wp-admin/images/icons32-2x.png create mode 100644 wp-admin/images/icons32-vs-2x.png create mode 100644 wp-admin/images/icons32-vs.png create mode 100644 wp-admin/images/icons32.png create mode 100644 wp-admin/images/imgedit-icons-2x.png create mode 100644 wp-admin/images/imgedit-icons.png create mode 100644 wp-admin/images/list-2x.png create mode 100644 wp-admin/images/list.png create mode 100644 wp-admin/images/loading.gif create mode 100644 wp-admin/images/marker.png create mode 100644 wp-admin/images/mask.png create mode 100644 wp-admin/images/media-button-2x.png create mode 100644 wp-admin/images/media-button-image.gif create mode 100644 wp-admin/images/media-button-music.gif create mode 100644 wp-admin/images/media-button-other.gif create mode 100644 wp-admin/images/media-button-video.gif create mode 100644 wp-admin/images/media-button.png create mode 100644 wp-admin/images/menu-2x.png create mode 100644 wp-admin/images/menu-vs-2x.png create mode 100644 wp-admin/images/menu-vs.png create mode 100644 wp-admin/images/menu.png create mode 100644 wp-admin/images/no.png create mode 100644 wp-admin/images/post-formats-vs.png create mode 100644 wp-admin/images/post-formats.png create mode 100644 wp-admin/images/post-formats32-vs.png create mode 100644 wp-admin/images/post-formats32.png create mode 100644 wp-admin/images/resize-2x.gif create mode 100644 wp-admin/images/resize-rtl-2x.gif create mode 100644 wp-admin/images/resize-rtl.gif create mode 100644 wp-admin/images/resize.gif create mode 100644 wp-admin/images/se.png create mode 100644 wp-admin/images/sort-2x.gif create mode 100644 wp-admin/images/sort.gif create mode 100644 wp-admin/images/spinner-2x.gif create mode 100644 wp-admin/images/spinner.gif create mode 100644 wp-admin/images/stars-2x.png create mode 100644 wp-admin/images/stars.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/wheel.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 create mode 100644 wp-admin/images/wpspin_light-2x.gif create mode 100644 wp-admin/images/wpspin_light.gif create mode 100644 wp-admin/images/xit-2x.gif create mode 100644 wp-admin/images/xit.gif create mode 100644 wp-admin/images/yes.png create mode 100644 wp-admin/import.php create mode 100644 wp-admin/includes/admin-filters.php create mode 100644 wp-admin/includes/admin.php create mode 100644 wp-admin/includes/ajax-actions.php create mode 100644 wp-admin/includes/bookmark.php create mode 100644 wp-admin/includes/class-ftp-pure.php create mode 100644 wp-admin/includes/class-ftp-sockets.php create mode 100644 wp-admin/includes/class-ftp.php create mode 100644 wp-admin/includes/class-pclzip.php create mode 100644 wp-admin/includes/class-wp-comments-list-table.php create mode 100644 wp-admin/includes/class-wp-filesystem-base.php create mode 100644 wp-admin/includes/class-wp-filesystem-direct.php create mode 100644 wp-admin/includes/class-wp-filesystem-ftpext.php create mode 100644 wp-admin/includes/class-wp-filesystem-ftpsockets.php create mode 100644 wp-admin/includes/class-wp-filesystem-ssh2.php create mode 100644 wp-admin/includes/class-wp-importer.php create mode 100644 wp-admin/includes/class-wp-links-list-table.php create mode 100644 wp-admin/includes/class-wp-list-table.php create mode 100644 wp-admin/includes/class-wp-media-list-table.php create mode 100644 wp-admin/includes/class-wp-ms-sites-list-table.php create mode 100644 wp-admin/includes/class-wp-ms-themes-list-table.php create mode 100644 wp-admin/includes/class-wp-ms-users-list-table.php create mode 100644 wp-admin/includes/class-wp-plugin-install-list-table.php create mode 100644 wp-admin/includes/class-wp-plugins-list-table.php create mode 100644 wp-admin/includes/class-wp-posts-list-table.php create mode 100644 wp-admin/includes/class-wp-press-this.php create mode 100644 wp-admin/includes/class-wp-site-icon.php create mode 100644 wp-admin/includes/class-wp-terms-list-table.php create mode 100644 wp-admin/includes/class-wp-theme-install-list-table.php create mode 100644 wp-admin/includes/class-wp-themes-list-table.php create mode 100644 wp-admin/includes/class-wp-upgrader-skins.php create mode 100644 wp-admin/includes/class-wp-upgrader.php create mode 100644 wp-admin/includes/class-wp-users-list-table.php create mode 100644 wp-admin/includes/comment.php create mode 100644 wp-admin/includes/continents-cities.php create mode 100644 wp-admin/includes/dashboard.php create mode 100644 wp-admin/includes/deprecated.php create mode 100644 wp-admin/includes/export.php create mode 100644 wp-admin/includes/file.php create mode 100644 wp-admin/includes/image-edit.php create mode 100644 wp-admin/includes/image.php create mode 100644 wp-admin/includes/import.php create mode 100644 wp-admin/includes/list-table.php create mode 100644 wp-admin/includes/media.php create mode 100644 wp-admin/includes/menu.php create mode 100644 wp-admin/includes/meta-boxes.php create mode 100644 wp-admin/includes/misc.php create mode 100644 wp-admin/includes/ms-admin-filters.php create mode 100644 wp-admin/includes/ms-deprecated.php create mode 100644 wp-admin/includes/ms.php create mode 100644 wp-admin/includes/nav-menu.php create mode 100644 wp-admin/includes/plugin-install.php create mode 100644 wp-admin/includes/plugin.php create mode 100644 wp-admin/includes/post.php create mode 100644 wp-admin/includes/revision.php create mode 100644 wp-admin/includes/schema.php create mode 100644 wp-admin/includes/screen.php create mode 100644 wp-admin/includes/taxonomy.php create mode 100644 wp-admin/includes/template.php create mode 100644 wp-admin/includes/theme-install.php create mode 100644 wp-admin/includes/theme.php create mode 100644 wp-admin/includes/translation-install.php create mode 100644 wp-admin/includes/update-core.php create mode 100644 wp-admin/includes/update.php create mode 100644 wp-admin/includes/upgrade.php create mode 100644 wp-admin/includes/user.php create mode 100644 wp-admin/includes/widgets.php create mode 100644 wp-admin/index.php create mode 100644 wp-admin/install-helper.php create mode 100644 wp-admin/install.php create mode 100644 wp-admin/js/accordion.js create mode 100644 wp-admin/js/accordion.min.js create mode 100644 wp-admin/js/bookmarklet.js create mode 100644 wp-admin/js/bookmarklet.min.js create mode 100644 wp-admin/js/color-picker.js create mode 100644 wp-admin/js/color-picker.min.js create mode 100644 wp-admin/js/comment.js create mode 100644 wp-admin/js/comment.min.js create mode 100644 wp-admin/js/common.js create mode 100644 wp-admin/js/common.min.js create mode 100644 wp-admin/js/custom-background.js create mode 100644 wp-admin/js/custom-background.min.js create mode 100644 wp-admin/js/custom-header.js create mode 100644 wp-admin/js/customize-controls.js create mode 100644 wp-admin/js/customize-controls.min.js create mode 100644 wp-admin/js/customize-nav-menus.js create mode 100644 wp-admin/js/customize-nav-menus.min.js create mode 100644 wp-admin/js/customize-widgets.js create mode 100644 wp-admin/js/customize-widgets.min.js create mode 100644 wp-admin/js/dashboard.js create mode 100644 wp-admin/js/dashboard.min.js create mode 100644 wp-admin/js/edit-comments.js create mode 100644 wp-admin/js/edit-comments.min.js create mode 100644 wp-admin/js/editor-expand.js create mode 100644 wp-admin/js/editor-expand.min.js create mode 100644 wp-admin/js/editor.js create mode 100644 wp-admin/js/editor.min.js create mode 100644 wp-admin/js/farbtastic.js create mode 100644 wp-admin/js/gallery.js create mode 100644 wp-admin/js/gallery.min.js create mode 100644 wp-admin/js/image-edit.js create mode 100644 wp-admin/js/image-edit.min.js create mode 100644 wp-admin/js/inline-edit-post.js create mode 100644 wp-admin/js/inline-edit-post.min.js create mode 100644 wp-admin/js/inline-edit-tax.js create mode 100644 wp-admin/js/inline-edit-tax.min.js create mode 100644 wp-admin/js/iris.min.js create mode 100644 wp-admin/js/language-chooser.js create mode 100644 wp-admin/js/language-chooser.min.js create mode 100644 wp-admin/js/link.js create mode 100644 wp-admin/js/link.min.js create mode 100644 wp-admin/js/media-gallery.js create mode 100644 wp-admin/js/media-gallery.min.js create mode 100644 wp-admin/js/media-upload.js create mode 100644 wp-admin/js/media-upload.min.js create mode 100644 wp-admin/js/media.js create mode 100644 wp-admin/js/media.min.js create mode 100644 wp-admin/js/nav-menu.js create mode 100644 wp-admin/js/nav-menu.min.js create mode 100644 wp-admin/js/password-strength-meter.js create mode 100644 wp-admin/js/password-strength-meter.min.js create mode 100644 wp-admin/js/plugin-install.js create mode 100644 wp-admin/js/plugin-install.min.js create mode 100644 wp-admin/js/post.js create mode 100644 wp-admin/js/post.min.js create mode 100644 wp-admin/js/postbox.js create mode 100644 wp-admin/js/postbox.min.js create mode 100644 wp-admin/js/press-this.js create mode 100644 wp-admin/js/press-this.min.js create mode 100644 wp-admin/js/revisions.js create mode 100644 wp-admin/js/revisions.min.js create mode 100644 wp-admin/js/set-post-thumbnail.js create mode 100644 wp-admin/js/set-post-thumbnail.min.js create mode 100644 wp-admin/js/svg-painter.js create mode 100644 wp-admin/js/svg-painter.min.js create mode 100644 wp-admin/js/tags-box.js create mode 100644 wp-admin/js/tags-box.min.js create mode 100644 wp-admin/js/tags.js create mode 100644 wp-admin/js/tags.min.js create mode 100644 wp-admin/js/theme.js create mode 100644 wp-admin/js/theme.min.js create mode 100644 wp-admin/js/updates.js create mode 100644 wp-admin/js/updates.min.js create mode 100644 wp-admin/js/user-profile.js create mode 100644 wp-admin/js/user-profile.min.js create mode 100644 wp-admin/js/user-suggest.js create mode 100644 wp-admin/js/user-suggest.min.js create mode 100644 wp-admin/js/widgets.js create mode 100644 wp-admin/js/widgets.min.js create mode 100644 wp-admin/js/word-count.js create mode 100644 wp-admin/js/word-count.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/js/xfn.js create mode 100644 wp-admin/js/xfn.min.js create mode 100644 wp-admin/link-add.php create mode 100644 wp-admin/link-manager.php create mode 100644 wp-admin/link-parse-opml.php create mode 100644 wp-admin/link.php create mode 100644 wp-admin/load-scripts.php create mode 100644 wp-admin/load-styles.php create mode 100644 wp-admin/maint/repair.php create mode 100644 wp-admin/media-new.php create mode 100644 wp-admin/media-upload.php create mode 100644 wp-admin/media.php create mode 100644 wp-admin/menu-header.php create mode 100644 wp-admin/menu.php create mode 100644 wp-admin/moderation.php create mode 100644 wp-admin/ms-admin.php create mode 100644 wp-admin/ms-delete-site.php create mode 100644 wp-admin/ms-edit.php create mode 100644 wp-admin/ms-options.php create mode 100644 wp-admin/ms-sites.php create mode 100644 wp-admin/ms-themes.php create mode 100644 wp-admin/ms-upgrade-network.php create mode 100644 wp-admin/ms-users.php create mode 100644 wp-admin/my-sites.php create mode 100644 wp-admin/nav-menus.php create mode 100644 wp-admin/network.php create mode 100644 wp-admin/network/about.php create mode 100644 wp-admin/network/admin.php create mode 100644 wp-admin/network/credits.php create mode 100644 wp-admin/network/edit.php create mode 100644 wp-admin/network/freedoms.php create mode 100644 wp-admin/network/index.php create mode 100644 wp-admin/network/menu.php create mode 100644 wp-admin/network/plugin-editor.php create mode 100644 wp-admin/network/plugin-install.php create mode 100644 wp-admin/network/plugins.php create mode 100644 wp-admin/network/profile.php create mode 100644 wp-admin/network/settings.php create mode 100644 wp-admin/network/setup.php create mode 100644 wp-admin/network/site-info.php create mode 100644 wp-admin/network/site-new.php create mode 100644 wp-admin/network/site-settings.php create mode 100644 wp-admin/network/site-themes.php create mode 100644 wp-admin/network/site-users.php create mode 100644 wp-admin/network/sites.php create mode 100644 wp-admin/network/theme-editor.php create mode 100644 wp-admin/network/theme-install.php create mode 100644 wp-admin/network/themes.php create mode 100644 wp-admin/network/update-core.php create mode 100644 wp-admin/network/update.php create mode 100644 wp-admin/network/upgrade.php create mode 100644 wp-admin/network/user-edit.php create mode 100644 wp-admin/network/user-new.php create mode 100644 wp-admin/network/users.php create mode 100644 wp-admin/options-discussion.php create mode 100644 wp-admin/options-general.php create mode 100644 wp-admin/options-head.php create mode 100644 wp-admin/options-media.php create mode 100644 wp-admin/options-permalink.php create mode 100644 wp-admin/options-reading.php create mode 100644 wp-admin/options-writing.php create mode 100644 wp-admin/options.php create mode 100644 wp-admin/plugin-editor.php create mode 100644 wp-admin/plugin-install.php create mode 100644 wp-admin/plugins.php create mode 100644 wp-admin/post-new.php create mode 100644 wp-admin/post.php create mode 100644 wp-admin/press-this.php create mode 100644 wp-admin/profile.php create mode 100644 wp-admin/revision.php create mode 100644 wp-admin/setup-config.php create mode 100644 wp-admin/theme-editor.php create mode 100644 wp-admin/theme-install.php create mode 100644 wp-admin/themes.php create mode 100644 wp-admin/tools.php create mode 100644 wp-admin/update-core.php create mode 100644 wp-admin/update.php create mode 100644 wp-admin/upgrade-functions.php create mode 100644 wp-admin/upgrade.php create mode 100644 wp-admin/upload.php create mode 100644 wp-admin/user-edit.php create mode 100644 wp-admin/user-new.php create mode 100644 wp-admin/user/about.php create mode 100644 wp-admin/user/admin.php create mode 100644 wp-admin/user/credits.php create mode 100644 wp-admin/user/freedoms.php create mode 100644 wp-admin/user/index.php create mode 100644 wp-admin/user/menu.php create mode 100644 wp-admin/user/profile.php create mode 100644 wp-admin/user/user-edit.php create mode 100644 wp-admin/users.php create mode 100644 wp-admin/widgets.php create mode 100644 wp-blog-header.php create mode 100644 wp-comments-post.php create mode 100644 wp-config-sample.php create mode 100644 wp-content/index.php create mode 100644 wp-content/plugins/hello.php create mode 100644 wp-content/plugins/index.php create mode 100644 wp-content/themes/index.php create mode 100644 wp-content/themes/twentyeleven/404.php create mode 100644 wp-content/themes/twentyeleven/archive.php create mode 100644 wp-content/themes/twentyeleven/author.php create mode 100644 wp-content/themes/twentyeleven/category.php create mode 100644 wp-content/themes/twentyeleven/colors/dark.css create mode 100644 wp-content/themes/twentyeleven/comments.php create mode 100644 wp-content/themes/twentyeleven/content-aside.php create mode 100644 wp-content/themes/twentyeleven/content-featured.php create mode 100644 wp-content/themes/twentyeleven/content-gallery.php create mode 100644 wp-content/themes/twentyeleven/content-image.php create mode 100644 wp-content/themes/twentyeleven/content-intro.php create mode 100644 wp-content/themes/twentyeleven/content-link.php create mode 100644 wp-content/themes/twentyeleven/content-page.php create mode 100644 wp-content/themes/twentyeleven/content-quote.php create mode 100644 wp-content/themes/twentyeleven/content-single.php create mode 100644 wp-content/themes/twentyeleven/content-status.php create mode 100644 wp-content/themes/twentyeleven/content.php create mode 100644 wp-content/themes/twentyeleven/editor-style-rtl.css create mode 100644 wp-content/themes/twentyeleven/editor-style.css create mode 100644 wp-content/themes/twentyeleven/footer.php create mode 100644 wp-content/themes/twentyeleven/functions.php create mode 100644 wp-content/themes/twentyeleven/header.php create mode 100644 wp-content/themes/twentyeleven/image.php create mode 100644 wp-content/themes/twentyeleven/images/comment-arrow-bypostauthor-dark-rtl.png create mode 100644 wp-content/themes/twentyeleven/images/comment-arrow-bypostauthor-dark.png create mode 100644 wp-content/themes/twentyeleven/images/comment-arrow-bypostauthor-rtl.png create mode 100644 wp-content/themes/twentyeleven/images/comment-arrow-bypostauthor.png create mode 100644 wp-content/themes/twentyeleven/images/comment-arrow-dark-rtl.png create mode 100644 wp-content/themes/twentyeleven/images/comment-arrow-dark.png create mode 100644 wp-content/themes/twentyeleven/images/comment-arrow-rtl.png create mode 100644 wp-content/themes/twentyeleven/images/comment-arrow.png create mode 100644 wp-content/themes/twentyeleven/images/comment-bubble-dark-rtl.png create mode 100644 wp-content/themes/twentyeleven/images/comment-bubble-dark.png create mode 100644 wp-content/themes/twentyeleven/images/comment-bubble-rtl.png create mode 100644 wp-content/themes/twentyeleven/images/comment-bubble.png create mode 100644 wp-content/themes/twentyeleven/images/headers/chessboard-thumbnail.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/chessboard.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/hanoi-thumbnail.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/hanoi.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/lanterns-thumbnail.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/lanterns.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/pine-cone-thumbnail.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/pine-cone.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/shore-thumbnail.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/shore.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/trolley-thumbnail.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/trolley.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/wheel-thumbnail.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/wheel.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/willow-thumbnail.jpg create mode 100644 wp-content/themes/twentyeleven/images/headers/willow.jpg create mode 100644 wp-content/themes/twentyeleven/images/search.png create mode 100644 wp-content/themes/twentyeleven/images/wordpress.png create mode 100644 wp-content/themes/twentyeleven/inc/images/content-sidebar.png create mode 100644 wp-content/themes/twentyeleven/inc/images/content.png create mode 100644 wp-content/themes/twentyeleven/inc/images/dark.png create mode 100644 wp-content/themes/twentyeleven/inc/images/light.png create mode 100644 wp-content/themes/twentyeleven/inc/images/sidebar-content.png create mode 100644 wp-content/themes/twentyeleven/inc/theme-customizer.js create mode 100644 wp-content/themes/twentyeleven/inc/theme-options.css create mode 100644 wp-content/themes/twentyeleven/inc/theme-options.js create mode 100644 wp-content/themes/twentyeleven/inc/theme-options.php create mode 100644 wp-content/themes/twentyeleven/inc/widgets.php create mode 100644 wp-content/themes/twentyeleven/index.php create mode 100644 wp-content/themes/twentyeleven/js/html5.js create mode 100644 wp-content/themes/twentyeleven/js/showcase.js create mode 100644 wp-content/themes/twentyeleven/languages/twentyeleven.pot create mode 100644 wp-content/themes/twentyeleven/license.txt create mode 100644 wp-content/themes/twentyeleven/page.php create mode 100644 wp-content/themes/twentyeleven/readme.txt create mode 100644 wp-content/themes/twentyeleven/rtl.css create mode 100644 wp-content/themes/twentyeleven/screenshot.png create mode 100644 wp-content/themes/twentyeleven/search.php create mode 100644 wp-content/themes/twentyeleven/searchform.php create mode 100644 wp-content/themes/twentyeleven/showcase.php create mode 100644 wp-content/themes/twentyeleven/sidebar-footer.php create mode 100644 wp-content/themes/twentyeleven/sidebar-page.php create mode 100644 wp-content/themes/twentyeleven/sidebar.php create mode 100644 wp-content/themes/twentyeleven/single.php create mode 100644 wp-content/themes/twentyeleven/style.css create mode 100644 wp-content/themes/twentyeleven/tag.php create mode 100644 wp-content/themes/twentyfifteen/404.php create mode 100644 wp-content/themes/twentyfifteen/archive.php create mode 100644 wp-content/themes/twentyfifteen/author-bio.php create mode 100644 wp-content/themes/twentyfifteen/comments.php create mode 100644 wp-content/themes/twentyfifteen/content-link.php create mode 100644 wp-content/themes/twentyfifteen/content-none.php create mode 100644 wp-content/themes/twentyfifteen/content-page.php create mode 100644 wp-content/themes/twentyfifteen/content-search.php create mode 100644 wp-content/themes/twentyfifteen/content.php create mode 100644 wp-content/themes/twentyfifteen/css/editor-style.css create mode 100644 wp-content/themes/twentyfifteen/css/ie.css create mode 100644 wp-content/themes/twentyfifteen/css/ie7.css create mode 100644 wp-content/themes/twentyfifteen/footer.php create mode 100644 wp-content/themes/twentyfifteen/functions.php create mode 100644 wp-content/themes/twentyfifteen/genericons/COPYING.txt create mode 100644 wp-content/themes/twentyfifteen/genericons/Genericons.eot create mode 100644 wp-content/themes/twentyfifteen/genericons/Genericons.svg create mode 100644 wp-content/themes/twentyfifteen/genericons/Genericons.ttf create mode 100644 wp-content/themes/twentyfifteen/genericons/Genericons.woff create mode 100644 wp-content/themes/twentyfifteen/genericons/LICENSE.txt create mode 100644 wp-content/themes/twentyfifteen/genericons/README.md create mode 100644 wp-content/themes/twentyfifteen/genericons/genericons.css create mode 100644 wp-content/themes/twentyfifteen/header.php create mode 100644 wp-content/themes/twentyfifteen/image.php create mode 100644 wp-content/themes/twentyfifteen/inc/back-compat.php create mode 100644 wp-content/themes/twentyfifteen/inc/custom-header.php create mode 100644 wp-content/themes/twentyfifteen/inc/customizer.php create mode 100644 wp-content/themes/twentyfifteen/inc/template-tags.php create mode 100644 wp-content/themes/twentyfifteen/index.php create mode 100644 wp-content/themes/twentyfifteen/js/color-scheme-control.js create mode 100644 wp-content/themes/twentyfifteen/js/customize-preview.js create mode 100644 wp-content/themes/twentyfifteen/js/functions.js create mode 100644 wp-content/themes/twentyfifteen/js/html5.js create mode 100644 wp-content/themes/twentyfifteen/js/keyboard-image-navigation.js create mode 100644 wp-content/themes/twentyfifteen/js/skip-link-focus-fix.js create mode 100644 wp-content/themes/twentyfifteen/languages/twentyfifteen.pot create mode 100644 wp-content/themes/twentyfifteen/page.php create mode 100644 wp-content/themes/twentyfifteen/readme.txt create mode 100644 wp-content/themes/twentyfifteen/rtl.css create mode 100644 wp-content/themes/twentyfifteen/screenshot.png create mode 100644 wp-content/themes/twentyfifteen/search.php create mode 100644 wp-content/themes/twentyfifteen/sidebar.php create mode 100644 wp-content/themes/twentyfifteen/single.php create mode 100644 wp-content/themes/twentyfifteen/style.css create mode 100644 wp-content/themes/twentyfourteen/404.php create mode 100644 wp-content/themes/twentyfourteen/archive.php create mode 100644 wp-content/themes/twentyfourteen/author.php create mode 100644 wp-content/themes/twentyfourteen/category.php create mode 100644 wp-content/themes/twentyfourteen/comments.php create mode 100644 wp-content/themes/twentyfourteen/content-aside.php create mode 100644 wp-content/themes/twentyfourteen/content-audio.php create mode 100644 wp-content/themes/twentyfourteen/content-featured-post.php create mode 100644 wp-content/themes/twentyfourteen/content-gallery.php create mode 100644 wp-content/themes/twentyfourteen/content-image.php create mode 100644 wp-content/themes/twentyfourteen/content-link.php create mode 100644 wp-content/themes/twentyfourteen/content-none.php create mode 100644 wp-content/themes/twentyfourteen/content-page.php create mode 100644 wp-content/themes/twentyfourteen/content-quote.php create mode 100644 wp-content/themes/twentyfourteen/content-video.php create mode 100644 wp-content/themes/twentyfourteen/content.php create mode 100644 wp-content/themes/twentyfourteen/css/editor-style.css create mode 100644 wp-content/themes/twentyfourteen/css/ie.css create mode 100644 wp-content/themes/twentyfourteen/featured-content.php create mode 100644 wp-content/themes/twentyfourteen/footer.php create mode 100644 wp-content/themes/twentyfourteen/functions.php create mode 100644 wp-content/themes/twentyfourteen/genericons/COPYING.txt create mode 100644 wp-content/themes/twentyfourteen/genericons/Genericons-Regular.otf create mode 100644 wp-content/themes/twentyfourteen/genericons/LICENSE.txt create mode 100644 wp-content/themes/twentyfourteen/genericons/README.txt create mode 100644 wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.eot create mode 100644 wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.svg create mode 100644 wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.ttf create mode 100644 wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.woff create mode 100644 wp-content/themes/twentyfourteen/genericons/genericons.css create mode 100644 wp-content/themes/twentyfourteen/header.php create mode 100644 wp-content/themes/twentyfourteen/image.php create mode 100644 wp-content/themes/twentyfourteen/images/pattern-dark.svg create mode 100644 wp-content/themes/twentyfourteen/images/pattern-light.svg create mode 100644 wp-content/themes/twentyfourteen/inc/back-compat.php create mode 100644 wp-content/themes/twentyfourteen/inc/custom-header.php create mode 100644 wp-content/themes/twentyfourteen/inc/customizer.php create mode 100644 wp-content/themes/twentyfourteen/inc/featured-content.php create mode 100644 wp-content/themes/twentyfourteen/inc/template-tags.php create mode 100644 wp-content/themes/twentyfourteen/inc/widgets.php create mode 100644 wp-content/themes/twentyfourteen/index.php create mode 100644 wp-content/themes/twentyfourteen/js/customizer.js create mode 100644 wp-content/themes/twentyfourteen/js/featured-content-admin.js create mode 100644 wp-content/themes/twentyfourteen/js/functions.js create mode 100644 wp-content/themes/twentyfourteen/js/html5.js create mode 100644 wp-content/themes/twentyfourteen/js/keyboard-image-navigation.js create mode 100644 wp-content/themes/twentyfourteen/js/slider.js create mode 100644 wp-content/themes/twentyfourteen/languages/twentyfourteen.pot create mode 100644 wp-content/themes/twentyfourteen/page-templates/contributors.php create mode 100644 wp-content/themes/twentyfourteen/page-templates/full-width.php create mode 100644 wp-content/themes/twentyfourteen/page.php create mode 100644 wp-content/themes/twentyfourteen/readme.txt create mode 100644 wp-content/themes/twentyfourteen/rtl.css create mode 100644 wp-content/themes/twentyfourteen/screenshot.png create mode 100644 wp-content/themes/twentyfourteen/search.php create mode 100644 wp-content/themes/twentyfourteen/sidebar-content.php create mode 100644 wp-content/themes/twentyfourteen/sidebar-footer.php create mode 100644 wp-content/themes/twentyfourteen/sidebar.php create mode 100644 wp-content/themes/twentyfourteen/single.php create mode 100644 wp-content/themes/twentyfourteen/style.css create mode 100644 wp-content/themes/twentyfourteen/tag.php create mode 100644 wp-content/themes/twentyfourteen/taxonomy-post_format.php create mode 100644 wp-content/themes/twentyten/404.php create mode 100644 wp-content/themes/twentyten/archive.php create mode 100644 wp-content/themes/twentyten/attachment.php create mode 100644 wp-content/themes/twentyten/author.php create mode 100644 wp-content/themes/twentyten/category.php create mode 100644 wp-content/themes/twentyten/comments.php create mode 100644 wp-content/themes/twentyten/editor-style-rtl.css create mode 100644 wp-content/themes/twentyten/editor-style.css create mode 100644 wp-content/themes/twentyten/footer.php create mode 100644 wp-content/themes/twentyten/functions.php create mode 100644 wp-content/themes/twentyten/header.php create mode 100644 wp-content/themes/twentyten/images/headers/berries-thumbnail.jpg create mode 100644 wp-content/themes/twentyten/images/headers/berries.jpg create mode 100644 wp-content/themes/twentyten/images/headers/cherryblossoms-thumbnail.jpg create mode 100644 wp-content/themes/twentyten/images/headers/cherryblossoms.jpg create mode 100644 wp-content/themes/twentyten/images/headers/concave-thumbnail.jpg create mode 100644 wp-content/themes/twentyten/images/headers/concave.jpg create mode 100644 wp-content/themes/twentyten/images/headers/fern-thumbnail.jpg create mode 100644 wp-content/themes/twentyten/images/headers/fern.jpg create mode 100644 wp-content/themes/twentyten/images/headers/forestfloor-thumbnail.jpg create mode 100644 wp-content/themes/twentyten/images/headers/forestfloor.jpg create mode 100644 wp-content/themes/twentyten/images/headers/inkwell-thumbnail.jpg create mode 100644 wp-content/themes/twentyten/images/headers/inkwell.jpg create mode 100644 wp-content/themes/twentyten/images/headers/path-thumbnail.jpg create mode 100644 wp-content/themes/twentyten/images/headers/path.jpg create mode 100644 wp-content/themes/twentyten/images/headers/sunset-thumbnail.jpg create mode 100644 wp-content/themes/twentyten/images/headers/sunset.jpg create mode 100644 wp-content/themes/twentyten/images/wordpress.png create mode 100644 wp-content/themes/twentyten/index.php create mode 100644 wp-content/themes/twentyten/languages/twentyten.pot create mode 100644 wp-content/themes/twentyten/license.txt create mode 100644 wp-content/themes/twentyten/loop-attachment.php create mode 100644 wp-content/themes/twentyten/loop-page.php create mode 100644 wp-content/themes/twentyten/loop-single.php create mode 100644 wp-content/themes/twentyten/loop.php create mode 100644 wp-content/themes/twentyten/onecolumn-page.php create mode 100644 wp-content/themes/twentyten/page.php create mode 100644 wp-content/themes/twentyten/readme.txt create mode 100644 wp-content/themes/twentyten/rtl.css create mode 100644 wp-content/themes/twentyten/screenshot.png create mode 100644 wp-content/themes/twentyten/search.php create mode 100644 wp-content/themes/twentyten/sidebar-footer.php create mode 100644 wp-content/themes/twentyten/sidebar.php create mode 100644 wp-content/themes/twentyten/single.php create mode 100644 wp-content/themes/twentyten/style.css create mode 100644 wp-content/themes/twentyten/tag.php create mode 100644 wp-content/themes/twentythirteen/404.php create mode 100644 wp-content/themes/twentythirteen/archive.php create mode 100644 wp-content/themes/twentythirteen/author-bio.php create mode 100644 wp-content/themes/twentythirteen/author.php create mode 100644 wp-content/themes/twentythirteen/category.php create mode 100644 wp-content/themes/twentythirteen/comments.php create mode 100644 wp-content/themes/twentythirteen/content-aside.php create mode 100644 wp-content/themes/twentythirteen/content-audio.php create mode 100644 wp-content/themes/twentythirteen/content-chat.php create mode 100644 wp-content/themes/twentythirteen/content-gallery.php create mode 100644 wp-content/themes/twentythirteen/content-image.php create mode 100644 wp-content/themes/twentythirteen/content-link.php create mode 100644 wp-content/themes/twentythirteen/content-none.php create mode 100644 wp-content/themes/twentythirteen/content-quote.php create mode 100644 wp-content/themes/twentythirteen/content-status.php create mode 100644 wp-content/themes/twentythirteen/content-video.php create mode 100644 wp-content/themes/twentythirteen/content.php create mode 100644 wp-content/themes/twentythirteen/css/editor-style.css create mode 100644 wp-content/themes/twentythirteen/css/ie.css create mode 100644 wp-content/themes/twentythirteen/footer.php create mode 100644 wp-content/themes/twentythirteen/functions.php create mode 100644 wp-content/themes/twentythirteen/genericons/COPYING.txt create mode 100644 wp-content/themes/twentythirteen/genericons/Genericons-Regular.otf create mode 100644 wp-content/themes/twentythirteen/genericons/LICENSE.txt create mode 100644 wp-content/themes/twentythirteen/genericons/README.txt create mode 100644 wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.eot create mode 100644 wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.svg create mode 100644 wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.ttf create mode 100644 wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.woff create mode 100644 wp-content/themes/twentythirteen/genericons/genericons.css create mode 100644 wp-content/themes/twentythirteen/header.php create mode 100644 wp-content/themes/twentythirteen/image.php create mode 100644 wp-content/themes/twentythirteen/images/dotted-line-2x.png create mode 100644 wp-content/themes/twentythirteen/images/dotted-line-light-2x.png create mode 100644 wp-content/themes/twentythirteen/images/dotted-line-light.png create mode 100644 wp-content/themes/twentythirteen/images/dotted-line.png create mode 100644 wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png create mode 100644 wp-content/themes/twentythirteen/images/headers/circle.png create mode 100644 wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png create mode 100644 wp-content/themes/twentythirteen/images/headers/diamond.png create mode 100644 wp-content/themes/twentythirteen/images/headers/star-thumbnail.png create mode 100644 wp-content/themes/twentythirteen/images/headers/star.png create mode 100644 wp-content/themes/twentythirteen/images/search-icon-2x.png create mode 100644 wp-content/themes/twentythirteen/images/search-icon.png create mode 100644 wp-content/themes/twentythirteen/inc/back-compat.php create mode 100644 wp-content/themes/twentythirteen/inc/custom-header.php create mode 100644 wp-content/themes/twentythirteen/index.php create mode 100644 wp-content/themes/twentythirteen/js/functions.js create mode 100644 wp-content/themes/twentythirteen/js/html5.js create mode 100644 wp-content/themes/twentythirteen/js/theme-customizer.js create mode 100644 wp-content/themes/twentythirteen/languages/twentythirteen.pot create mode 100644 wp-content/themes/twentythirteen/page.php create mode 100644 wp-content/themes/twentythirteen/readme.txt create mode 100644 wp-content/themes/twentythirteen/rtl.css create mode 100644 wp-content/themes/twentythirteen/screenshot.png create mode 100644 wp-content/themes/twentythirteen/search.php create mode 100644 wp-content/themes/twentythirteen/sidebar-main.php create mode 100644 wp-content/themes/twentythirteen/sidebar.php create mode 100644 wp-content/themes/twentythirteen/single.php create mode 100644 wp-content/themes/twentythirteen/style.css create mode 100644 wp-content/themes/twentythirteen/tag.php create mode 100644 wp-content/themes/twentythirteen/taxonomy-post_format.php create mode 100644 wp-content/themes/twentytwelve/404.php create mode 100644 wp-content/themes/twentytwelve/archive.php create mode 100644 wp-content/themes/twentytwelve/author.php create mode 100644 wp-content/themes/twentytwelve/category.php create mode 100644 wp-content/themes/twentytwelve/comments.php create mode 100644 wp-content/themes/twentytwelve/content-aside.php create mode 100644 wp-content/themes/twentytwelve/content-image.php create mode 100644 wp-content/themes/twentytwelve/content-link.php create mode 100644 wp-content/themes/twentytwelve/content-none.php create mode 100644 wp-content/themes/twentytwelve/content-page.php create mode 100644 wp-content/themes/twentytwelve/content-quote.php create mode 100644 wp-content/themes/twentytwelve/content-status.php create mode 100644 wp-content/themes/twentytwelve/content.php create mode 100644 wp-content/themes/twentytwelve/css/ie.css create mode 100644 wp-content/themes/twentytwelve/editor-style-rtl.css create mode 100644 wp-content/themes/twentytwelve/editor-style.css create mode 100644 wp-content/themes/twentytwelve/footer.php create mode 100644 wp-content/themes/twentytwelve/functions.php create mode 100644 wp-content/themes/twentytwelve/header.php create mode 100644 wp-content/themes/twentytwelve/image.php create mode 100644 wp-content/themes/twentytwelve/inc/custom-header.php create mode 100644 wp-content/themes/twentytwelve/index.php create mode 100644 wp-content/themes/twentytwelve/js/html5.js create mode 100644 wp-content/themes/twentytwelve/js/navigation.js create mode 100644 wp-content/themes/twentytwelve/js/theme-customizer.js create mode 100644 wp-content/themes/twentytwelve/languages/twentytwelve.pot create mode 100644 wp-content/themes/twentytwelve/page-templates/front-page.php create mode 100644 wp-content/themes/twentytwelve/page-templates/full-width.php create mode 100644 wp-content/themes/twentytwelve/page.php create mode 100644 wp-content/themes/twentytwelve/readme.txt create mode 100644 wp-content/themes/twentytwelve/rtl.css create mode 100644 wp-content/themes/twentytwelve/screenshot.png create mode 100644 wp-content/themes/twentytwelve/search.php create mode 100644 wp-content/themes/twentytwelve/sidebar-front.php create mode 100644 wp-content/themes/twentytwelve/sidebar.php create mode 100644 wp-content/themes/twentytwelve/single.php create mode 100644 wp-content/themes/twentytwelve/style.css create mode 100644 wp-content/themes/twentytwelve/tag.php create mode 100644 wp-cron.php create mode 100644 wp-includes/ID3/getid3.lib.php create mode 100644 wp-includes/ID3/getid3.php create mode 100644 wp-includes/ID3/license.commercial.txt create mode 100644 wp-includes/ID3/license.txt create mode 100644 wp-includes/ID3/module.audio-video.asf.php create mode 100644 wp-includes/ID3/module.audio-video.flv.php create mode 100644 wp-includes/ID3/module.audio-video.matroska.php create mode 100644 wp-includes/ID3/module.audio-video.quicktime.php create mode 100644 wp-includes/ID3/module.audio-video.riff.php create mode 100644 wp-includes/ID3/module.audio.ac3.php create mode 100644 wp-includes/ID3/module.audio.dts.php create mode 100644 wp-includes/ID3/module.audio.flac.php create mode 100644 wp-includes/ID3/module.audio.mp3.php create mode 100644 wp-includes/ID3/module.audio.ogg.php create mode 100644 wp-includes/ID3/module.tag.apetag.php create mode 100644 wp-includes/ID3/module.tag.id3v1.php create mode 100644 wp-includes/ID3/module.tag.id3v2.php create mode 100644 wp-includes/ID3/module.tag.lyrics3.php create mode 100644 wp-includes/ID3/readme.txt create mode 100644 wp-includes/SimplePie/Author.php create mode 100644 wp-includes/SimplePie/Cache.php create mode 100644 wp-includes/SimplePie/Cache/Base.php create mode 100644 wp-includes/SimplePie/Cache/DB.php create mode 100644 wp-includes/SimplePie/Cache/File.php create mode 100644 wp-includes/SimplePie/Cache/Memcache.php create mode 100644 wp-includes/SimplePie/Cache/MySQL.php create mode 100644 wp-includes/SimplePie/Caption.php create mode 100644 wp-includes/SimplePie/Category.php create mode 100644 wp-includes/SimplePie/Content/Type/Sniffer.php create mode 100644 wp-includes/SimplePie/Copyright.php create mode 100644 wp-includes/SimplePie/Core.php create mode 100644 wp-includes/SimplePie/Credit.php create mode 100644 wp-includes/SimplePie/Decode/HTML/Entities.php create mode 100644 wp-includes/SimplePie/Enclosure.php create mode 100644 wp-includes/SimplePie/Exception.php create mode 100644 wp-includes/SimplePie/File.php create mode 100644 wp-includes/SimplePie/HTTP/Parser.php create mode 100644 wp-includes/SimplePie/IRI.php create mode 100644 wp-includes/SimplePie/Item.php create mode 100644 wp-includes/SimplePie/Locator.php create mode 100644 wp-includes/SimplePie/Misc.php create mode 100644 wp-includes/SimplePie/Net/IPv6.php create mode 100644 wp-includes/SimplePie/Parse/Date.php create mode 100644 wp-includes/SimplePie/Parser.php create mode 100644 wp-includes/SimplePie/Rating.php create mode 100644 wp-includes/SimplePie/Registry.php create mode 100644 wp-includes/SimplePie/Restriction.php create mode 100644 wp-includes/SimplePie/Sanitize.php create mode 100644 wp-includes/SimplePie/Source.php create mode 100644 wp-includes/SimplePie/XML/Declaration/Parser.php create mode 100644 wp-includes/SimplePie/gzdecode.php create mode 100644 wp-includes/Text/Diff.php create mode 100644 wp-includes/Text/Diff/Engine/native.php create mode 100644 wp-includes/Text/Diff/Engine/shell.php create mode 100644 wp-includes/Text/Diff/Engine/string.php create mode 100644 wp-includes/Text/Diff/Engine/xdiff.php create mode 100644 wp-includes/Text/Diff/Renderer.php create mode 100644 wp-includes/Text/Diff/Renderer/inline.php create mode 100644 wp-includes/admin-bar.php create mode 100644 wp-includes/atomlib.php create mode 100644 wp-includes/author-template.php create mode 100644 wp-includes/bookmark-template.php create mode 100644 wp-includes/bookmark.php create mode 100644 wp-includes/cache.php create mode 100644 wp-includes/canonical.php create mode 100644 wp-includes/capabilities.php create mode 100644 wp-includes/category-template.php create mode 100644 wp-includes/category.php create mode 100644 wp-includes/certificates/ca-bundle.crt create mode 100644 wp-includes/class-IXR.php create mode 100644 wp-includes/class-feed.php create mode 100644 wp-includes/class-http.php create mode 100644 wp-includes/class-json.php create mode 100644 wp-includes/class-oembed.php create mode 100644 wp-includes/class-phpass.php create mode 100644 wp-includes/class-phpmailer.php create mode 100644 wp-includes/class-pop3.php create mode 100644 wp-includes/class-simplepie.php create mode 100644 wp-includes/class-smtp.php create mode 100644 wp-includes/class-snoopy.php create mode 100644 wp-includes/class-wp-admin-bar.php create mode 100644 wp-includes/class-wp-ajax-response.php create mode 100644 wp-includes/class-wp-customize-control.php create mode 100644 wp-includes/class-wp-customize-manager.php create mode 100644 wp-includes/class-wp-customize-nav-menus.php create mode 100644 wp-includes/class-wp-customize-panel.php create mode 100644 wp-includes/class-wp-customize-section.php create mode 100644 wp-includes/class-wp-customize-setting.php create mode 100644 wp-includes/class-wp-customize-widgets.php create mode 100644 wp-includes/class-wp-editor.php create mode 100644 wp-includes/class-wp-embed.php create mode 100644 wp-includes/class-wp-error.php create mode 100644 wp-includes/class-wp-http-ixr-client.php create mode 100644 wp-includes/class-wp-image-editor-gd.php create mode 100644 wp-includes/class-wp-image-editor-imagick.php create mode 100644 wp-includes/class-wp-image-editor.php create mode 100644 wp-includes/class-wp-theme.php create mode 100644 wp-includes/class-wp-walker.php create mode 100644 wp-includes/class-wp-xmlrpc-server.php create mode 100644 wp-includes/class-wp.php create mode 100644 wp-includes/class.wp-dependencies.php create mode 100644 wp-includes/class.wp-scripts.php create mode 100644 wp-includes/class.wp-styles.php create mode 100644 wp-includes/comment-template.php create mode 100644 wp-includes/comment.php create mode 100644 wp-includes/compat.php create mode 100644 wp-includes/cron.php create mode 100644 wp-includes/css/admin-bar-rtl.css create mode 100644 wp-includes/css/admin-bar-rtl.min.css create mode 100644 wp-includes/css/admin-bar.css create mode 100644 wp-includes/css/admin-bar.min.css create mode 100644 wp-includes/css/buttons-rtl.css create mode 100644 wp-includes/css/buttons-rtl.min.css create mode 100644 wp-includes/css/buttons.css create mode 100644 wp-includes/css/buttons.min.css create mode 100644 wp-includes/css/customize-preview.css create mode 100644 wp-includes/css/customize-preview.min.css create mode 100644 wp-includes/css/dashicons.css create mode 100644 wp-includes/css/dashicons.min.css create mode 100644 wp-includes/css/editor-rtl.css create mode 100644 wp-includes/css/editor-rtl.min.css create mode 100644 wp-includes/css/editor.css create mode 100644 wp-includes/css/editor.min.css create mode 100644 wp-includes/css/jquery-ui-dialog-rtl.css create mode 100644 wp-includes/css/jquery-ui-dialog-rtl.min.css create mode 100644 wp-includes/css/jquery-ui-dialog.css create mode 100644 wp-includes/css/jquery-ui-dialog.min.css create mode 100644 wp-includes/css/media-views-rtl.css create mode 100644 wp-includes/css/media-views-rtl.min.css create mode 100644 wp-includes/css/media-views.css create mode 100644 wp-includes/css/media-views.min.css create mode 100644 wp-includes/css/wp-auth-check-rtl.css create mode 100644 wp-includes/css/wp-auth-check-rtl.min.css create mode 100644 wp-includes/css/wp-auth-check.css create mode 100644 wp-includes/css/wp-auth-check.min.css create mode 100644 wp-includes/css/wp-pointer-rtl.css create mode 100644 wp-includes/css/wp-pointer-rtl.min.css create mode 100644 wp-includes/css/wp-pointer.css create mode 100644 wp-includes/css/wp-pointer.min.css create mode 100644 wp-includes/date.php create mode 100644 wp-includes/default-constants.php create mode 100644 wp-includes/default-filters.php create mode 100644 wp-includes/default-widgets.php create mode 100644 wp-includes/deprecated.php create mode 100644 wp-includes/feed-atom-comments.php create mode 100644 wp-includes/feed-atom.php create mode 100644 wp-includes/feed-rdf.php create mode 100644 wp-includes/feed-rss.php create mode 100644 wp-includes/feed-rss2-comments.php create mode 100644 wp-includes/feed-rss2.php create mode 100644 wp-includes/feed.php create mode 100644 wp-includes/fonts/dashicons.eot create mode 100644 wp-includes/fonts/dashicons.svg create mode 100644 wp-includes/fonts/dashicons.ttf create mode 100644 wp-includes/fonts/dashicons.woff create mode 100644 wp-includes/formatting.php create mode 100644 wp-includes/functions.php create mode 100644 wp-includes/functions.wp-scripts.php create mode 100644 wp-includes/functions.wp-styles.php create mode 100644 wp-includes/general-template.php create mode 100644 wp-includes/http.php create mode 100644 wp-includes/images/admin-bar-sprite-2x.png create mode 100644 wp-includes/images/admin-bar-sprite.png create mode 100644 wp-includes/images/arrow-pointer-blue-2x.png create mode 100644 wp-includes/images/arrow-pointer-blue.png create mode 100644 wp-includes/images/blank.gif create mode 100644 wp-includes/images/crystal/archive.png create mode 100644 wp-includes/images/crystal/audio.png create mode 100644 wp-includes/images/crystal/code.png create mode 100644 wp-includes/images/crystal/default.png create mode 100644 wp-includes/images/crystal/document.png create mode 100644 wp-includes/images/crystal/interactive.png create mode 100644 wp-includes/images/crystal/license.txt create mode 100644 wp-includes/images/crystal/spreadsheet.png create mode 100644 wp-includes/images/crystal/text.png create mode 100644 wp-includes/images/crystal/video.png create mode 100644 wp-includes/images/down_arrow-2x.gif create mode 100644 wp-includes/images/down_arrow.gif create mode 100644 wp-includes/images/icon-pointer-flag-2x.png create mode 100644 wp-includes/images/icon-pointer-flag.png create mode 100644 wp-includes/images/media/archive.png create mode 100644 wp-includes/images/media/audio.png create mode 100644 wp-includes/images/media/code.png create mode 100644 wp-includes/images/media/default.png create mode 100644 wp-includes/images/media/document.png create mode 100644 wp-includes/images/media/interactive.png create mode 100644 wp-includes/images/media/spreadsheet.png create mode 100644 wp-includes/images/media/text.png create mode 100644 wp-includes/images/media/video.png create mode 100644 wp-includes/images/rss-2x.png create mode 100644 wp-includes/images/rss.png create mode 100644 wp-includes/images/smilies/frownie.png create mode 100644 wp-includes/images/smilies/icon_arrow.gif create mode 100644 wp-includes/images/smilies/icon_biggrin.gif create mode 100644 wp-includes/images/smilies/icon_confused.gif create mode 100644 wp-includes/images/smilies/icon_cool.gif create mode 100644 wp-includes/images/smilies/icon_cry.gif create mode 100644 wp-includes/images/smilies/icon_eek.gif create mode 100644 wp-includes/images/smilies/icon_evil.gif create mode 100644 wp-includes/images/smilies/icon_exclaim.gif create mode 100644 wp-includes/images/smilies/icon_idea.gif create mode 100644 wp-includes/images/smilies/icon_lol.gif create mode 100644 wp-includes/images/smilies/icon_mad.gif create mode 100644 wp-includes/images/smilies/icon_mrgreen.gif create mode 100644 wp-includes/images/smilies/icon_neutral.gif create mode 100644 wp-includes/images/smilies/icon_question.gif create mode 100644 wp-includes/images/smilies/icon_razz.gif create mode 100644 wp-includes/images/smilies/icon_redface.gif create mode 100644 wp-includes/images/smilies/icon_rolleyes.gif create mode 100644 wp-includes/images/smilies/icon_sad.gif create mode 100644 wp-includes/images/smilies/icon_smile.gif create mode 100644 wp-includes/images/smilies/icon_surprised.gif create mode 100644 wp-includes/images/smilies/icon_twisted.gif create mode 100644 wp-includes/images/smilies/icon_wink.gif create mode 100644 wp-includes/images/smilies/mrgreen.png create mode 100644 wp-includes/images/smilies/rolleyes.png create mode 100644 wp-includes/images/smilies/simple-smile.png create mode 100644 wp-includes/images/spinner-2x.gif create mode 100644 wp-includes/images/spinner.gif create mode 100644 wp-includes/images/toggle-arrow-2x.png create mode 100644 wp-includes/images/toggle-arrow.png create mode 100644 wp-includes/images/uploader-icons-2x.png create mode 100644 wp-includes/images/uploader-icons.png 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 create mode 100644 wp-includes/images/wpicons-2x.png create mode 100644 wp-includes/images/wpicons.png create mode 100644 wp-includes/images/wpspin-2x.gif create mode 100644 wp-includes/images/wpspin.gif create mode 100644 wp-includes/images/xit-2x.gif create mode 100644 wp-includes/images/xit.gif create mode 100644 wp-includes/js/admin-bar.js create mode 100644 wp-includes/js/admin-bar.min.js create mode 100644 wp-includes/js/autosave.js create mode 100644 wp-includes/js/autosave.min.js create mode 100644 wp-includes/js/backbone.min.js create mode 100644 wp-includes/js/colorpicker.js create mode 100644 wp-includes/js/colorpicker.min.js create mode 100644 wp-includes/js/comment-reply.js create mode 100644 wp-includes/js/comment-reply.min.js create mode 100644 wp-includes/js/crop/cropper.css create mode 100644 wp-includes/js/crop/cropper.js create mode 100644 wp-includes/js/crop/marqueeHoriz.gif create mode 100644 wp-includes/js/crop/marqueeVert.gif create mode 100644 wp-includes/js/customize-base.js create mode 100644 wp-includes/js/customize-base.min.js create mode 100644 wp-includes/js/customize-loader.js create mode 100644 wp-includes/js/customize-loader.min.js create mode 100644 wp-includes/js/customize-models.js create mode 100644 wp-includes/js/customize-models.min.js create mode 100644 wp-includes/js/customize-preview-nav-menus.js create mode 100644 wp-includes/js/customize-preview-nav-menus.min.js create mode 100644 wp-includes/js/customize-preview-widgets.js create mode 100644 wp-includes/js/customize-preview-widgets.min.js create mode 100644 wp-includes/js/customize-preview.js create mode 100644 wp-includes/js/customize-preview.min.js create mode 100644 wp-includes/js/customize-views.js create mode 100644 wp-includes/js/customize-views.min.js create mode 100644 wp-includes/js/heartbeat.js create mode 100644 wp-includes/js/heartbeat.min.js create mode 100644 wp-includes/js/hoverIntent.js create mode 100644 wp-includes/js/hoverIntent.min.js create mode 100644 wp-includes/js/imgareaselect/border-anim-h.gif create mode 100644 wp-includes/js/imgareaselect/border-anim-v.gif create mode 100644 wp-includes/js/imgareaselect/imgareaselect.css create mode 100644 wp-includes/js/imgareaselect/jquery.imgareaselect.js create mode 100644 wp-includes/js/imgareaselect/jquery.imgareaselect.min.js create mode 100644 wp-includes/js/jcrop/Jcrop.gif create mode 100644 wp-includes/js/jcrop/jquery.Jcrop.min.css create mode 100644 wp-includes/js/jcrop/jquery.Jcrop.min.js create mode 100644 wp-includes/js/jquery/jquery-migrate.js create mode 100644 wp-includes/js/jquery/jquery-migrate.min.js create mode 100644 wp-includes/js/jquery/jquery.color.min.js create mode 100644 wp-includes/js/jquery/jquery.form.js create mode 100644 wp-includes/js/jquery/jquery.form.min.js create mode 100644 wp-includes/js/jquery/jquery.hotkeys.js create mode 100644 wp-includes/js/jquery/jquery.hotkeys.min.js create mode 100644 wp-includes/js/jquery/jquery.js create mode 100644 wp-includes/js/jquery/jquery.masonry.min.js create mode 100644 wp-includes/js/jquery/jquery.query.js create mode 100644 wp-includes/js/jquery/jquery.schedule.js create mode 100644 wp-includes/js/jquery/jquery.serialize-object.js create mode 100644 wp-includes/js/jquery/jquery.table-hotkeys.js create mode 100644 wp-includes/js/jquery/jquery.table-hotkeys.min.js create mode 100644 wp-includes/js/jquery/jquery.ui.touch-punch.js create mode 100644 wp-includes/js/jquery/suggest.js create mode 100644 wp-includes/js/jquery/suggest.min.js create mode 100644 wp-includes/js/jquery/ui/accordion.min.js create mode 100644 wp-includes/js/jquery/ui/autocomplete.min.js create mode 100644 wp-includes/js/jquery/ui/button.min.js create mode 100644 wp-includes/js/jquery/ui/core.min.js create mode 100644 wp-includes/js/jquery/ui/datepicker.min.js create mode 100644 wp-includes/js/jquery/ui/dialog.min.js create mode 100644 wp-includes/js/jquery/ui/draggable.min.js create mode 100644 wp-includes/js/jquery/ui/droppable.min.js create mode 100644 wp-includes/js/jquery/ui/effect-blind.min.js create mode 100644 wp-includes/js/jquery/ui/effect-bounce.min.js create mode 100644 wp-includes/js/jquery/ui/effect-clip.min.js create mode 100644 wp-includes/js/jquery/ui/effect-drop.min.js create mode 100644 wp-includes/js/jquery/ui/effect-explode.min.js create mode 100644 wp-includes/js/jquery/ui/effect-fade.min.js create mode 100644 wp-includes/js/jquery/ui/effect-fold.min.js create mode 100644 wp-includes/js/jquery/ui/effect-highlight.min.js create mode 100644 wp-includes/js/jquery/ui/effect-puff.min.js create mode 100644 wp-includes/js/jquery/ui/effect-pulsate.min.js create mode 100644 wp-includes/js/jquery/ui/effect-scale.min.js create mode 100644 wp-includes/js/jquery/ui/effect-shake.min.js create mode 100644 wp-includes/js/jquery/ui/effect-size.min.js create mode 100644 wp-includes/js/jquery/ui/effect-slide.min.js create mode 100644 wp-includes/js/jquery/ui/effect-transfer.min.js create mode 100644 wp-includes/js/jquery/ui/effect.min.js create mode 100644 wp-includes/js/jquery/ui/menu.min.js create mode 100644 wp-includes/js/jquery/ui/mouse.min.js create mode 100644 wp-includes/js/jquery/ui/position.min.js create mode 100644 wp-includes/js/jquery/ui/progressbar.min.js create mode 100644 wp-includes/js/jquery/ui/resizable.min.js create mode 100644 wp-includes/js/jquery/ui/selectable.min.js create mode 100644 wp-includes/js/jquery/ui/selectmenu.min.js create mode 100644 wp-includes/js/jquery/ui/slider.min.js create mode 100644 wp-includes/js/jquery/ui/sortable.min.js create mode 100644 wp-includes/js/jquery/ui/spinner.min.js create mode 100644 wp-includes/js/jquery/ui/tabs.min.js create mode 100644 wp-includes/js/jquery/ui/tooltip.min.js create mode 100644 wp-includes/js/jquery/ui/widget.min.js create mode 100644 wp-includes/js/json2.js create mode 100644 wp-includes/js/json2.min.js create mode 100644 wp-includes/js/masonry.min.js create mode 100644 wp-includes/js/mce-view.js create mode 100644 wp-includes/js/mce-view.min.js create mode 100644 wp-includes/js/media-audiovideo.js create mode 100644 wp-includes/js/media-audiovideo.min.js create mode 100644 wp-includes/js/media-editor.js create mode 100644 wp-includes/js/media-editor.min.js create mode 100644 wp-includes/js/media-grid.js create mode 100644 wp-includes/js/media-grid.min.js create mode 100644 wp-includes/js/media-models.js create mode 100644 wp-includes/js/media-models.min.js create mode 100644 wp-includes/js/media-views.js create mode 100644 wp-includes/js/media-views.min.js create mode 100644 wp-includes/js/mediaelement/background.png create mode 100644 wp-includes/js/mediaelement/bigplay.png create mode 100644 wp-includes/js/mediaelement/bigplay.svg create mode 100644 wp-includes/js/mediaelement/controls.png create mode 100644 wp-includes/js/mediaelement/controls.svg create mode 100644 wp-includes/js/mediaelement/flashmediaelement.swf create mode 100644 wp-includes/js/mediaelement/froogaloop.min.js create mode 100644 wp-includes/js/mediaelement/loading.gif create mode 100644 wp-includes/js/mediaelement/mediaelement-and-player.min.js create mode 100644 wp-includes/js/mediaelement/mediaelementplayer.min.css create mode 100644 wp-includes/js/mediaelement/silverlightmediaelement.xap create mode 100644 wp-includes/js/mediaelement/skipback.png create mode 100644 wp-includes/js/mediaelement/wp-mediaelement.css create mode 100644 wp-includes/js/mediaelement/wp-mediaelement.js create mode 100644 wp-includes/js/mediaelement/wp-playlist.js create mode 100644 wp-includes/js/plupload/handlers.js create mode 100644 wp-includes/js/plupload/handlers.min.js create mode 100644 wp-includes/js/plupload/license.txt create mode 100644 wp-includes/js/plupload/plupload.flash.swf create mode 100644 wp-includes/js/plupload/plupload.full.min.js create mode 100644 wp-includes/js/plupload/plupload.silverlight.xap create mode 100644 wp-includes/js/plupload/wp-plupload.js create mode 100644 wp-includes/js/plupload/wp-plupload.min.js create mode 100644 wp-includes/js/quicktags.js create mode 100644 wp-includes/js/quicktags.min.js create mode 100644 wp-includes/js/shortcode.js create mode 100644 wp-includes/js/shortcode.min.js create mode 100644 wp-includes/js/swfobject.js create mode 100644 wp-includes/js/swfupload/handlers.js create mode 100644 wp-includes/js/swfupload/handlers.min.js create mode 100644 wp-includes/js/swfupload/license.txt create mode 100644 wp-includes/js/swfupload/plugins/swfupload.cookies.js create mode 100644 wp-includes/js/swfupload/plugins/swfupload.queue.js create mode 100644 wp-includes/js/swfupload/plugins/swfupload.speed.js create mode 100644 wp-includes/js/swfupload/plugins/swfupload.swfobject.js create mode 100644 wp-includes/js/swfupload/swfupload.js create mode 100644 wp-includes/js/swfupload/swfupload.swf create mode 100644 wp-includes/js/thickbox/loadingAnimation.gif create mode 100644 wp-includes/js/thickbox/macFFBgHack.png create mode 100644 wp-includes/js/thickbox/thickbox.css create mode 100644 wp-includes/js/thickbox/thickbox.js create mode 100644 wp-includes/js/tinymce/langs/wp-langs-en.js create mode 100644 wp-includes/js/tinymce/license.txt create mode 100644 wp-includes/js/tinymce/plugins/charmap/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/charmap/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/colorpicker/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/colorpicker/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/compat3x/css/dialog.css create mode 100644 wp-includes/js/tinymce/plugins/compat3x/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/compat3x/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/directionality/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/directionality/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/fullscreen/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/hr/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/hr/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/image/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/image/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/lists/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/lists/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/media/moxieplayer.swf create mode 100644 wp-includes/js/tinymce/plugins/media/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/media/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/paste/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/paste/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/tabfocus/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/tabfocus/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/textcolor/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/textcolor/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/wordpress/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/wordpress/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/wpautoresize/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/wpautoresize/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/wpdialogs/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/wpdialogs/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/wpeditimage/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/wpemoji/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/wpemoji/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/wpgallery/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/wplink/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/wplink/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/wptextpattern/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/wptextpattern/plugin.min.js create mode 100644 wp-includes/js/tinymce/plugins/wpview/plugin.js create mode 100644 wp-includes/js/tinymce/plugins/wpview/plugin.min.js create mode 100644 wp-includes/js/tinymce/skins/lightgray/content.inline.min.css create mode 100644 wp-includes/js/tinymce/skins/lightgray/content.min.css create mode 100644 wp-includes/js/tinymce/skins/lightgray/fonts/readme.md create mode 100644 wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.eot create mode 100644 wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.svg create mode 100644 wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf create mode 100644 wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.woff create mode 100644 wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.eot create mode 100644 wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.svg create mode 100644 wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.ttf create mode 100644 wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.woff create mode 100644 wp-includes/js/tinymce/skins/lightgray/img/anchor.gif create mode 100644 wp-includes/js/tinymce/skins/lightgray/img/loader.gif create mode 100644 wp-includes/js/tinymce/skins/lightgray/img/object.gif create mode 100644 wp-includes/js/tinymce/skins/lightgray/img/trans.gif create mode 100644 wp-includes/js/tinymce/skins/lightgray/skin.ie7.min.css create mode 100644 wp-includes/js/tinymce/skins/lightgray/skin.min.css create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/audio.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/dashicon-edit.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/dashicon-no.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/embedded.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/gallery-2x.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/gallery.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/more-2x.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/more.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/pagebreak-2x.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/pagebreak.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/playlist-audio.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/playlist-video.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/images/video.png create mode 100644 wp-includes/js/tinymce/skins/wordpress/wp-content.css create mode 100644 wp-includes/js/tinymce/themes/modern/theme.js create mode 100644 wp-includes/js/tinymce/themes/modern/theme.min.js create mode 100644 wp-includes/js/tinymce/tiny_mce_popup.js create mode 100644 wp-includes/js/tinymce/tinymce.min.js create mode 100644 wp-includes/js/tinymce/utils/editable_selects.js create mode 100644 wp-includes/js/tinymce/utils/form_utils.js create mode 100644 wp-includes/js/tinymce/utils/mctabs.js create mode 100644 wp-includes/js/tinymce/utils/validate.js create mode 100644 wp-includes/js/tinymce/wp-tinymce.js.gz create mode 100644 wp-includes/js/tinymce/wp-tinymce.php create mode 100644 wp-includes/js/tw-sack.js create mode 100644 wp-includes/js/tw-sack.min.js create mode 100644 wp-includes/js/twemoji.js create mode 100644 wp-includes/js/twemoji.min.js create mode 100644 wp-includes/js/underscore.min.js create mode 100644 wp-includes/js/utils.js create mode 100644 wp-includes/js/utils.min.js create mode 100644 wp-includes/js/wp-a11y.js create mode 100644 wp-includes/js/wp-a11y.min.js create mode 100644 wp-includes/js/wp-ajax-response.js create mode 100644 wp-includes/js/wp-ajax-response.min.js create mode 100644 wp-includes/js/wp-auth-check.js create mode 100644 wp-includes/js/wp-auth-check.min.js create mode 100644 wp-includes/js/wp-backbone.js create mode 100644 wp-includes/js/wp-backbone.min.js create mode 100644 wp-includes/js/wp-emoji-loader.js create mode 100644 wp-includes/js/wp-emoji-loader.min.js create mode 100644 wp-includes/js/wp-emoji-release.min.js create mode 100644 wp-includes/js/wp-emoji.js create mode 100644 wp-includes/js/wp-emoji.min.js create mode 100644 wp-includes/js/wp-list-revisions.js create mode 100644 wp-includes/js/wp-list-revisions.min.js create mode 100644 wp-includes/js/wp-lists.js create mode 100644 wp-includes/js/wp-lists.min.js create mode 100644 wp-includes/js/wp-pointer.js create mode 100644 wp-includes/js/wp-pointer.min.js create mode 100644 wp-includes/js/wp-util.js create mode 100644 wp-includes/js/wp-util.min.js create mode 100644 wp-includes/js/wpdialog.js create mode 100644 wp-includes/js/wpdialog.min.js create mode 100644 wp-includes/js/wplink.js create mode 100644 wp-includes/js/wplink.min.js create mode 100644 wp-includes/js/zxcvbn-async.js create mode 100644 wp-includes/js/zxcvbn-async.min.js create mode 100644 wp-includes/js/zxcvbn.min.js create mode 100644 wp-includes/kses.php create mode 100644 wp-includes/l10n.php create mode 100644 wp-includes/link-template.php create mode 100644 wp-includes/load.php create mode 100644 wp-includes/locale.php create mode 100644 wp-includes/media-template.php create mode 100644 wp-includes/media.php create mode 100644 wp-includes/meta.php create mode 100644 wp-includes/ms-blogs.php create mode 100644 wp-includes/ms-default-constants.php create mode 100644 wp-includes/ms-default-filters.php create mode 100644 wp-includes/ms-deprecated.php create mode 100644 wp-includes/ms-files.php create mode 100644 wp-includes/ms-functions.php create mode 100644 wp-includes/ms-load.php create mode 100644 wp-includes/ms-settings.php create mode 100644 wp-includes/nav-menu-template.php create mode 100644 wp-includes/nav-menu.php create mode 100644 wp-includes/option.php create mode 100644 wp-includes/pluggable-deprecated.php create mode 100644 wp-includes/pluggable.php create mode 100644 wp-includes/plugin.php create mode 100644 wp-includes/pomo/entry.php create mode 100644 wp-includes/pomo/mo.php create mode 100644 wp-includes/pomo/po.php create mode 100644 wp-includes/pomo/streams.php create mode 100644 wp-includes/pomo/translations.php create mode 100644 wp-includes/post-formats.php create mode 100644 wp-includes/post-template.php create mode 100644 wp-includes/post-thumbnail-template.php create mode 100644 wp-includes/post.php create mode 100644 wp-includes/query.php create mode 100644 wp-includes/registration-functions.php create mode 100644 wp-includes/registration.php create mode 100644 wp-includes/revision.php create mode 100644 wp-includes/rewrite.php create mode 100644 wp-includes/rss-functions.php create mode 100644 wp-includes/rss.php create mode 100644 wp-includes/script-loader.php create mode 100644 wp-includes/session.php create mode 100644 wp-includes/shortcodes.php create mode 100644 wp-includes/taxonomy.php create mode 100644 wp-includes/template-loader.php create mode 100644 wp-includes/template.php create mode 100644 wp-includes/theme-compat/comments-popup.php create mode 100644 wp-includes/theme-compat/comments.php create mode 100644 wp-includes/theme-compat/footer.php create mode 100644 wp-includes/theme-compat/header.php create mode 100644 wp-includes/theme-compat/sidebar.php create mode 100644 wp-includes/theme.php create mode 100644 wp-includes/update.php create mode 100644 wp-includes/user.php create mode 100644 wp-includes/vars.php create mode 100644 wp-includes/version.php create mode 100644 wp-includes/widgets.php create mode 100644 wp-includes/wlwmanifest.xml create mode 100644 wp-includes/wp-db.php create mode 100644 wp-includes/wp-diff.php create mode 100644 wp-links-opml.php create mode 100644 wp-load.php create mode 100644 wp-login.php create mode 100644 wp-mail.php create mode 100644 wp-settings.php create mode 100644 wp-signup.php create mode 100644 wp-trackback.php create mode 100644 xmlrpc.php diff --git a/index.php b/index.php new file mode 100644 index 0000000000..dd3d554472 --- /dev/null +++ b/index.php @@ -0,0 +1,17 @@ + + Copyright (C) + + 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 + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + +WRITTEN OFFER + +The source code for any program binaries or compressed scripts that are +included with WordPress can be freely obtained at the following URL: + + https://wordpress.org/download/source/ diff --git a/readme.html b/readme.html new file mode 100644 index 0000000000..e29c0929cb --- /dev/null +++ b/readme.html @@ -0,0 +1,98 @@ + + + + + + WordPress › ReadMe + + + +

+ WordPress +
Version 4.3 +

+

Semantic Personal Publishing Platform

+ +

First Things First

+

Welcome. WordPress is a very special project to me. Every developer and contributor adds something unique to the mix, and together we create something beautiful that I’m proud to be a part of. Thousands of hours have gone into WordPress, and we’re dedicated to making it better every day. Thank you for making it part of your world.

+

— Matt Mullenweg

+ +

Installation: Famous 5-minute install

+
    +
  1. Unzip the package in an empty directory and upload everything.
  2. +
  3. Open wp-admin/install.php in your browser. It will take you through the process to set up a wp-config.php file with your database connection details. +
      +
    1. If for some reason this doesn’t work, don’t worry. It doesn’t work on all web hosts. Open up wp-config-sample.php with a text editor like WordPad or similar and fill in your database connection details.
    2. +
    3. Save the file as wp-config.php and upload it.
    4. +
    5. Open wp-admin/install.php in your browser.
    6. +
    +
  4. +
  5. Once the configuration file is set up, the installer will set up the tables needed for your blog. If there is an error, double check your wp-config.php file, and try again. If it fails again, please go to the support forums with as much data as you can gather.
  6. +
  7. If you did not enter a password, note the password given to you. If you did not provide a username, it will be admin.
  8. +
  9. The installer should then send you to the login page. Sign in with the username and password you chose during the installation. If a password was generated for you, you can then click on “Profile” to change the password.
  10. +
+ +

Updating

+

Using the Automatic Updater

+

If you are updating from version 2.7 or higher, you can use the automatic updater:

+
    +
  1. Open wp-admin/update-core.php in your browser and follow the instructions.
  2. +
  3. You wanted more, perhaps? That’s it!
  4. +
+ +

Updating Manually

+
    +
  1. Before you update anything, make sure you have backup copies of any files you may have modified such as index.php.
  2. +
  3. Delete your old WordPress files, saving ones you’ve modified.
  4. +
  5. Upload the new files.
  6. +
  7. Point your browser to /wp-admin/upgrade.php.
  8. +
+ +

Migrating from other systems

+

WordPress can import from a number of systems. First you need to get WordPress installed and working as described above, before using our import tools.

+ +

System Requirements

+
    +
  • PHP version 5.2.4 or higher.
  • +
  • MySQL version 5.0 or higher.
  • +
+ +

Recommendations

+ + +

Online Resources

+

If you have any questions that aren’t addressed in this document, please take advantage of WordPress’ numerous online resources:

+
+
The WordPress Codex
+
The Codex is the encyclopedia of all things WordPress. It is the most comprehensive source of information for WordPress available.
+
The WordPress Blog
+
This is where you’ll find the latest updates and news related to WordPress. Recent WordPress news appears in your administrative dashboard by default.
+
WordPress Planet
+
The WordPress Planet is a news aggregator that brings together posts from WordPress blogs around the web.
+
WordPress Support Forums
+
If you’ve looked everywhere and still can’t find an answer, the support forums are very active and have a large community ready to help. To help them help you be sure to use a descriptive thread title and describe your question in as much detail as possible.
+
WordPress IRC Channel
+
There is an online chat channel that is used for discussion among people who use WordPress and occasionally support topics. The above wiki page should point you in the right direction. (irc.freenode.net #wordpress)
+
+ +

Final Notes

+
    +
  • If you have any suggestions, ideas, or comments, or if you (gasp!) found a bug, join us in the Support Forums.
  • +
  • WordPress has a robust plugin API that makes extending the code easy. If you are a developer interested in utilizing this, see the plugin documentation in the Codex. You shouldn’t modify any of the core code.
  • +
+ +

Share the Love

+

WordPress has no multi-million dollar marketing campaign or celebrity sponsors, but we do have something even better—you. If you enjoy WordPress please consider telling a friend, setting it up for someone less knowledgable than yourself, or writing the author of a media article that overlooks us.

+ +

WordPress is the official continuation of b2/cafélog, which came from Michel V. The work has been continued by the WordPress developers. If you would like to support WordPress, please consider donating.

+ +

License

+

WordPress is free software, and is released under the terms of the GPL version 2 or (at your option) any later version. See license.txt.

+ + + diff --git a/wp-activate.php b/wp-activate.php new file mode 100644 index 0000000000..a796cc5e48 --- /dev/null +++ b/wp-activate.php @@ -0,0 +1,131 @@ +cache_enabled = false; + +// Fix for page title +$wp_query->is_404 = false; + +/** + * Fires before the Site Activation page is loaded. + * + * @since 3.0.0 + */ +do_action( 'activate_header' ); + +/** + * Adds an action hook specific to this page that fires on wp_head + * + * @since MU + */ +function do_activate_header() { + /** + * Fires before the Site Activation page is loaded, but on the wp_head action. + * + * @since 3.0.0 + */ + do_action( 'activate_wp_head' ); +} +add_action( 'wp_head', 'do_activate_header' ); + +/** + * Loads styles specific to this page. + * + * @since MU + */ +function wpmu_activate_stylesheet() { + ?> + + + +
+ + +

+
+

+ +
+

+

+ +

+
+ + get_error_code() || 'blog_taken' == $result->get_error_code() ) { + $signup = $result->get_error_data(); + ?> +

+ '; + if ( $signup->domain . $signup->path == '' ) { + printf( __('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( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, wp_lostpassword_url() ); + } else { + printf( __('Your site at %2$s is active. You may now log in to your site using your chosen username of “%3$s”. Please check your email inbox at %4$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can reset your password.'), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_email, wp_lostpassword_url() ); + } + echo '

'; + } else { + ?> +

+ '.$result->get_error_message().'

'; + } + } else { + $url = isset( $result['blog_id'] ) ? get_blogaddress_by_id( (int) $result['blog_id'] ) : ''; + $user = get_userdata( (int) $result['user_id'] ); + ?> +

+ +
+

user_login ?>

+

+
+ + +

View your site or Log in'), $url, $url . 'wp-login.php' ); ?>

+ +

Log in or go back to the homepage.' ), network_site_url('wp-login.php', 'login'), network_home_url() ); ?>

+ +
+ + includes_url( 'js/mediaelement/', 'relative' ), + 'pauseOtherPlayers' => '' +) ); + +$title = __( 'About' ); + +list( $display_version ) = explode( '-', $wp_version ); + +include( ABSPATH . 'wp-admin/admin-header.php' ); + +$video_url = 'https://videopress.com/embed/T54Iy7Tw'; +$locale = str_replace( '_', '-', get_locale() ); +if ( 'en-AU' !== $locale ) { + list( $locale ) = explode( '-', $locale ); +} +if ( 'en' !== $locale ) { + $video_url = add_query_arg( 'defaultLangCode', $locale, $video_url ); +} + +$major_features = array( + array( + 'src' => array( + 'mp4' => '//s.w.org/images/core/4.3/formatting.mp4', + 'ogv' => '//s.w.org/images/core/4.3/formatting.ogv', + 'webm' => '//s.w.org/images/core/4.3/formatting.webm', + ), + 'heading' => __( 'Formatting Shortcuts' ), + /* Translators: 1: asterisks; 2: number sign; */ + 'description' => sprintf( __( 'Your writing flow just got faster with new formatting shortcuts in WordPress 4.3. Use asterisks to create lists and number signs to make a heading. No more breaking your flow; your text looks great with a %1$s and a %2$s.' ), '*', '#' ), + ), + array( + 'src' => '//s.w.org/images/core/4.3/menu-customizer.png', + 'heading' => __( 'Menus in the Customizer' ), + 'description' => __( 'Create your menu, update it, and assign it, all while live-previewing in the customizer. The streamlined customizer design provides a mobile-friendly and accessible interface. With every release, it becomes easier and faster to make your site just the way you want it.' ), + ), + array( + 'src' => '//s.w.org/images/core/4.3/better-passwords.png', + 'heading' => __( 'Better Passwords' ), + 'description' => __( 'Keep your site more secure with WordPress’ improved approach to passwords. Instead of receiving passwords via email, you’ll get a password reset link. When you add new users to your site or edit a user profile, WordPress will automatically generate a secure password.' ), + ), + array( + 'src' => '//s.w.org/images/core/4.3/site-icon-customizer.png', + 'heading' => __( 'Site Icons' ), + 'description' => __( 'Site icons represent your site in browser tabs, bookmark menus, and on the home screen of mobile devices. Add your unique site icon in the customizer; it will even stay in place when you switch themes. Make your whole site reflect your brand.' ), + ), +); +shuffle( $major_features ); + +$minor_features = array( + array( + 'src' => 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDAwIj48cGF0aCBmaWxsPSIjMDBhMGQyIiBkPSJNNTAgMjE1aDI0MHYzMEg1MHpNNTAgMjc1aDI0MHYzMEg1MHpNNTAgMTU1aDI0MHYzMEg1MHpNNTAgOTVoMjQwdjMwSDUwek0zMTAuMSA5NWwxOS45IDMwIDIwLjEtMzAiLz48L3N2Zz4=', + 'heading' => __( 'A smoother admin experience' ), + 'description' => __( 'Refinements to the list view across the admin make your WordPress more accessible and easier to work with on any device.' ), + ), + array( + 'src' => 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZmlsbD0iIzAwYTBkMiIgZD0iTTUgMmgxMHEuODIgMCAxLjQxLjU5VDE3IDR2OHEwIC44Mi0uNTkgMS40MVQxNSAxNGgtMmwtNSA1di01SDVxLS44MiAwLTEuNDEtLjU5VDMgMTJWNHEwLS44Mi41OS0xLjQxVDUgMnptOC41IDguNUwxMSA4bDIuNS0yLjUtMS0xTDEwIDcgNy41IDQuNWwtMSAxTDkgOGwtMi41IDIuNSAxIDFMMTAgOWwyLjUgMi41eiIvPjwvc3ZnPg==', + 'heading' => __( 'Comments turned off on pages' ), + 'description' => __( 'All new pages that you create will have comments turned off. Keep discussions to your blog, right where they’re supposed to happen.' ), + ), + array( + 'src' => 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZmlsbD0iIzAwYTBkMiIgZD0iTTI5LjMyOCA1LjcxMnEuMDQ4LS4xNDQuMDk2LS4zODR0LS4wNjQtLjgxNi0uNTI4LS45NzZxLS4zODQtLjM2OC0uODcyLS40NjR0LS43OTIgMGwtLjI4OC4wOHEtMS40NTYuNzItNS44OCAzLjczNnQtNi4zOTIgNS4xNzZxLS43MzYuODMyLTEuNDA4IDIuMzJ0LS44OCAzIC41NDQgMi4zOTJxLjgzMi43MzYgMi4zNDQuNTc2dDMuMDcyLS44MjQgMi4yNDgtMS4zNTJxMi4xNDQtMi4xNDQgNS4xNjgtNi42NTZ0My42MzItNS44MDh6TTIuMjQgMjguMjRxMS4wNTYtLjY4OCAxLjcxMi0xLjUyOHQuOTUyLTEuNjE2LjU0NC0xLjUyLjcyLTEuNDggMS4yNC0xLjI4cTEuMDg4LS44IDIuNTA0LS43MDR0Mi40MjQgMS4xNjhxLjgxNi44OC44MjQgMi42NHQtMS4wOCAyLjg5NnEtMS4yMTYgMS4xMi0yLjkwNCAxLjYyNHQtMy40MjQuNDI0LTMuNTEyLS42MjR6Ii8+PC9zdmc+', + 'heading' => __( 'Customize your site quickly' ), + 'description' => __( 'Wherever you are on the front-end, you can click the customize link in the toolbar to swiftly make changes to your site.' ), + ), +); + +$tech_features = array( + array( + 'heading' => __( 'Taxonomy Roadmap' ), + 'description' => __( 'Terms shared across multiple taxonomies are now split into separate terms.' ), + ), + array( + 'heading' => __( 'Template Hierarchy' ), + /* Translators: 1: singular.php; 2: single.php; 3:page.php */ + 'description' => sprintf( __( 'Added %1$s as a fallback for %2$s and %3$s' ), 'singular.php', 'single.php', 'page.php.' ), + ), + array( + 'heading' => 'WP_List_Table', + 'description' => __( 'List tables can and should designate a primary column.' ), + ), +); + +?> +
+

+ +
+
+ + + +
+ + +
+ +
+ +
+ +
+
+ $feature['src']['mp4'], + 'ogv' => $feature['src']['ogv'], + 'webm' => $feature['src']['webm'], + 'loop' => true, + 'autoplay' => true, + 'width' => 500, + 'height' => 284 + ) ); + + // Image. + else: + ?> + + +
+

+

+
+ +
+ +
+ +
+
+ +
+

+

+
+ +
+ +
+

+ +
+ +
+

+

+
+ +
+ +
+ + + + | + + +
+ +
+
+Version %1$s addressed a security issue.', + 'Version %1$s addressed some security issues.' ); + +/* translators: 1: WordPress version number, 2: plural number of bugs. */ +_n_noop( 'Version %1$s addressed %2$s bug.', + 'Version %1$s addressed %2$s bugs.' ); + +/* translators: 1: WordPress version number, 2: plural number of bugs. Singular security issue. */ +_n_noop( 'Version %1$s addressed a security issue and fixed %2$s bug.', + 'Version %1$s addressed a security issue and fixed %2$s bugs.' ); + +/* translators: 1: WordPress version number, 2: plural number of bugs. More than one security issue. */ +_n_noop( 'Version %1$s addressed some security issues and fixed %2$s bug.', + 'Version %1$s addressed some security issues and fixed %2$s bugs.' ); + +__( 'For more information, see the release notes.' ); diff --git a/wp-admin/admin-ajax.php b/wp-admin/admin-ajax.php new file mode 100644 index 0000000000..225272acbe --- /dev/null +++ b/wp-admin/admin-ajax.php @@ -0,0 +1,102 @@ + + +
+
+
+ + + + +
+ + + diff --git a/wp-admin/admin-functions.php b/wp-admin/admin-functions.php new file mode 100644 index 0000000000..11bd30cd19 --- /dev/null +++ b/wp-admin/admin-functions.php @@ -0,0 +1,15 @@ +site_name ) ); +elseif ( is_user_admin() ) + $admin_title = sprintf( __( 'User Dashboard: %s' ), esc_html( get_current_site()->site_name ) ); +else + $admin_title = get_bloginfo( 'name' ); + +if ( $admin_title == $title ) + $admin_title = sprintf( __( '%1$s — WordPress' ), $title ); +else + $admin_title = sprintf( __( '%1$s ‹ %2$s — WordPress' ), $title, $admin_title ); + +/** + * Filter the title tag content for an admin page. + * + * @since 3.1.0 + * + * @param string $admin_title The page title, with extra context added. + * @param string $title The original page title. + */ +$admin_title = apply_filters( 'admin_title', $admin_title, $title ); + +wp_user_settings(); + +_wp_admin_html_begin(); +?> +<?php echo $admin_title; ?> + + + +post_type ) + $admin_body_class .= ' post-type-' . $current_screen->post_type; + +if ( $current_screen->taxonomy ) + $admin_body_class .= ' taxonomy-' . $current_screen->taxonomy; + +$admin_body_class .= ' branch-' . str_replace( array( '.', ',' ), '-', floatval( $wp_version ) ); +$admin_body_class .= ' version-' . str_replace( '.', '-', preg_replace( '/^([.0-9]+).*/', '$1', $wp_version ) ); +$admin_body_class .= ' admin-color-' . sanitize_html_class( get_user_option( 'admin_color' ), 'fresh' ); +$admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) ); + +if ( wp_is_mobile() ) + $admin_body_class .= ' mobile'; + +if ( is_multisite() ) + $admin_body_class .= ' multisite'; + +if ( is_network_admin() ) + $admin_body_class .= ' network-admin'; + +$admin_body_class .= ' no-customize-support no-svg'; + +?> + + + + + + + +
+ +
+ + + +
+set_parentage( $parent_file ); + +?> + +
+render_screen_meta(); + +if ( is_network_admin() ) { + /** + * Print network admin screen notices. + * + * @since 3.1.0 + */ + do_action( 'network_admin_notices' ); +} elseif ( is_user_admin() ) { + /** + * Print user admin screen notices. + * + * @since 3.1.0 + */ + do_action( 'user_admin_notices' ); +} else { + /** + * Print admin screen notices. + * + * @since 3.1.0 + */ + do_action( 'admin_notices' ); +} + +/** + * Print generic admin screen notices. + * + * @since 3.1.0 + */ +do_action( 'all_admin_notices' ); + +if ( $parent_file == 'options-general.php' ) + require(ABSPATH . 'wp-admin/options-head.php'); diff --git a/wp-admin/admin-post.php b/wp-admin/admin-post.php new file mode 100644 index 0000000000..cb92699efd --- /dev/null +++ b/wp-admin/admin-post.php @@ -0,0 +1,71 @@ + 50 && mt_rand( 0, (int)( $c / 50 ) ) == 1 ) ) { + require_once( ABSPATH . WPINC . '/http.php' ); + $response = wp_remote_get( admin_url( 'upgrade.php?step=1' ), array( 'timeout' => 120, 'httpversion' => '1.1' ) ); + /** This action is documented in wp-admin/network/upgrade.php */ + do_action( 'after_mu_upgrade', $response ); + unset($response); + } + unset($c); + } +} + +require_once(ABSPATH . 'wp-admin/includes/admin.php'); + +auth_redirect(); + +// Schedule trash collection +if ( !wp_next_scheduled('wp_scheduled_delete') && !defined('WP_INSTALLING') ) + wp_schedule_event(time(), 'daily', 'wp_scheduled_delete'); + +set_screen_options(); + +$date_format = get_option('date_format'); +$time_format = get_option('time_format'); + +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 + * + * @global string $pagenow + * @global array $wp_importers + * @global string $hook_suffix + * @global string $plugin_page + * @global string $typenow + * @global string $taxnow + */ +global $pagenow, $wp_importers, $hook_suffix, $plugin_page, $typenow, $taxnow; + +$page_hook = null; + +$editing = false; + +if ( isset($_GET['page']) ) { + $plugin_page = wp_unslash( $_GET['page'] ); + $plugin_page = plugin_basename($plugin_page); +} + +if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) ) + $typenow = $_REQUEST['post_type']; +else + $typenow = ''; + +if ( isset( $_REQUEST['taxonomy'] ) && taxonomy_exists( $_REQUEST['taxonomy'] ) ) + $taxnow = $_REQUEST['taxonomy']; +else + $taxnow = ''; + +if ( WP_NETWORK_ADMIN ) + require(ABSPATH . 'wp-admin/network/menu.php'); +elseif ( WP_USER_ADMIN ) + require(ABSPATH . 'wp-admin/user/menu.php'); +else + require(ABSPATH . 'wp-admin/menu.php'); + +if ( current_user_can( 'manage_options' ) ) { + /** + * Filter the maximum memory limit available for administration screens. + * + * This only applies to administrators, who may require more memory for tasks like updates. + * Memory limits when processing images (uploaded or edited by users of any role) are + * handled separately. + * + * The WP_MAX_MEMORY_LIMIT constant specifically defines the maximum memory limit available + * when in the administration back-end. The default is 256M, or 256 megabytes of memory. + * + * @since 3.0.0 + * + * @param string 'WP_MAX_MEMORY_LIMIT' The maximum WordPress memory limit. Default 256M. + */ + @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); +} + +/** + * Fires as an admin screen or script is being initialized. + * + * Note, this does not just run on user-facing admin screens. + * It runs on admin-ajax.php and admin-post.php as well. + * + * This is roughly analgous to the more general 'init' hook, which fires earlier. + * + * @since 2.5.0 + */ +do_action( 'admin_init' ); + +if ( isset($plugin_page) ) { + if ( !empty($typenow) ) + $the_parent = $pagenow . '?post_type=' . $typenow; + else + $the_parent = $pagenow; + if ( ! $page_hook = get_plugin_page_hook($plugin_page, $the_parent) ) { + $page_hook = get_plugin_page_hook($plugin_page, $plugin_page); + + // Backwards compatibility for plugins using add_management_page(). + if ( empty( $page_hook ) && 'edit.php' == $pagenow && '' != get_plugin_page_hook($plugin_page, 'tools.php') ) { + // There could be plugin specific params on the URL, so we need the whole query string + if ( !empty($_SERVER[ 'QUERY_STRING' ]) ) + $query_string = $_SERVER[ 'QUERY_STRING' ]; + else + $query_string = 'page=' . $plugin_page; + wp_redirect( admin_url('tools.php?' . $query_string) ); + exit; + } + } + unset($the_parent); +} + +$hook_suffix = ''; +if ( isset( $page_hook ) ) { + $hook_suffix = $page_hook; +} elseif ( isset( $plugin_page ) ) { + $hook_suffix = $plugin_page; +} elseif ( isset( $pagenow ) ) { + $hook_suffix = $pagenow; +} + +set_current_screen(); + +// Handle plugin admin pages. +if ( isset($plugin_page) ) { + if ( $page_hook ) { + /** + * Fires before a particular screen is loaded. + * + * The load-* hook fires in a number of contexts. This hook is for plugin screens + * where a callback is provided when the screen is registered. + * + * The dynamic portion of the hook name, `$page_hook`, 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 'load-settings_page_pluginbasename'. + * + * @see get_plugin_page_hook() + * + * @since 2.1.0 + */ + do_action( 'load-' . $page_hook ); + if (! isset($_GET['noheader'])) + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + /** + * Used to call the registered callback for a plugin screen. + * + * @ignore + * @since 1.5.0 + */ + do_action( $page_hook ); + } else { + if ( validate_file($plugin_page) ) + wp_die(__('Invalid plugin page')); + + if ( !( file_exists(WP_PLUGIN_DIR . "/$plugin_page") && is_file(WP_PLUGIN_DIR . "/$plugin_page") ) && !( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") && is_file(WPMU_PLUGIN_DIR . "/$plugin_page") ) ) + wp_die(sprintf(__('Cannot load %s.'), htmlentities($plugin_page))); + + /** + * Fires before a particular screen is loaded. + * + * The load-* hook fires in a number of contexts. This hook is for plugin screens + * where the file to load is directly included, rather than the use of a function. + * + * The dynamic portion of the hook name, `$plugin_page`, refers to the plugin basename. + * + * @see plugin_basename() + * + * @since 1.5.0 + */ + do_action( 'load-' . $plugin_page ); + + if ( !isset($_GET['noheader'])) + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + if ( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") ) + include(WPMU_PLUGIN_DIR . "/$plugin_page"); + else + include(WP_PLUGIN_DIR . "/$plugin_page"); + } + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + exit(); +} elseif ( isset( $_GET['import'] ) ) { + + $importer = $_GET['import']; + + if ( ! current_user_can('import') ) + wp_die(__('You are not allowed to import.')); + + if ( validate_file($importer) ) { + wp_redirect( admin_url( 'import.php?invalid=' . $importer ) ); + exit; + } + + if ( ! isset($wp_importers[$importer]) || ! is_callable($wp_importers[$importer][2]) ) { + wp_redirect( admin_url( 'import.php?invalid=' . $importer ) ); + exit; + } + + /** + * Fires before an importer screen is loaded. + * + * The dynamic portion of the hook name, `$importer`, refers to the importer slug. + * + * @since 3.5.0 + */ + do_action( 'load-importer-' . $importer ); + + $parent_file = 'tools.php'; + $submenu_file = 'import.php'; + $title = __('Import'); + + if (! isset($_GET['noheader'])) + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + define('WP_IMPORTING', true); + + /** + * Whether to filter imported data through kses on import. + * + * 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 + * + * @param bool false Whether to force data to be filtered through kses. Default false. + */ + if ( apply_filters( 'force_filtered_html_on_import', false ) ) { + kses_init_filters(); // Always filter imported data with kses on multisite. + } + + call_user_func($wp_importers[$importer][2]); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + // Make sure rules are flushed + flush_rewrite_rules(false); + + exit(); +} else { + /** + * Fires before a particular screen is loaded. + * + * 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 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 + */ + do_action( 'load-' . $pagenow ); + + /* + * The following hooks are fired to ensure backward compatibility. + * In all other cases, 'load-' . $pagenow should be used instead. + */ + if ( $typenow == 'page' ) { + if ( $pagenow == 'post-new.php' ) + do_action( 'load-page-new.php' ); + elseif ( $pagenow == 'post.php' ) + do_action( 'load-page.php' ); + } elseif ( $pagenow == 'edit-tags.php' ) { + if ( $taxnow == 'category' ) + do_action( 'load-categories.php' ); + elseif ( $taxnow == 'link_category' ) + do_action( 'load-edit-link-categories.php' ); + } +} + +if ( ! empty( $_REQUEST['action'] ) ) { + /** + * Fires when an 'action' request variable is sent. + * + * The dynamic portion of the hook name, `$_REQUEST['action']`, + * refers to the action derived from the `GET` or `POST` request. + * + * @since 2.6.0 + */ + do_action( 'admin_action_' . $_REQUEST['action'] ); +} diff --git a/wp-admin/async-upload.php b/wp-admin/async-upload.php new file mode 100644 index 0000000000..4a18aa1449 --- /dev/null +++ b/wp-admin/async-upload.php @@ -0,0 +1,115 @@ +post_type ) + wp_die( __( 'Unknown post type.' ) ); + if ( ! current_user_can( 'edit_post', $id ) ) + wp_die( __( 'You are not allowed to edit this item.' ) ); + + switch ( $_REQUEST['fetch'] ) { + case 3 : + if ( $thumb_url = wp_get_attachment_image_src( $id, 'thumbnail', true ) ) + echo ''; + echo '' . _x( 'Edit', 'media item' ) . ''; + $title = $post->post_title ? $post->post_title : wp_basename( $post->guid ); // title shouldn't ever be empty, but use filename just in cas.e + 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); + echo get_media_item($id, array( 'send' => false, 'delete' => true )); + break; + default: + add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2); + echo get_media_item($id); + break; + } + exit; +} + +check_admin_referer('media-form'); + +$post_id = 0; +if ( isset( $_REQUEST['post_id'] ) ) { + $post_id = absint( $_REQUEST['post_id'] ); + if ( ! get_post( $post_id ) || ! current_user_can( 'edit_post', $post_id ) ) + $post_id = 0; +} + +$id = media_handle_upload( 'async-upload', $post_id ); +if ( is_wp_error($id) ) { + echo '
+ ' . __('Dismiss') . ' + ' . sprintf(__('“%s” has failed to upload due to an error'), esc_html($_FILES['async-upload']['name']) ) . '
' . + esc_html($id->get_error_message()) . '
'; + exit; +} + +if ( $_REQUEST['short'] ) { + // Short form response - attachment ID only. + echo $id; +} else { + // Long form response - big chunk o html. + $type = $_REQUEST['type']; + + /** + * Filter the returned ID of an uploaded attachment. + * + * The dynamic portion of the hook name, `$type`, refers to the attachment type, + * such as 'image', 'audio', 'video', 'file', etc. + * + * @since 2.5.0 + * + * @param int $id Uploaded attachment ID. + */ + echo apply_filters( "async_upload_{$type}", $id ); +} diff --git a/wp-admin/comment.php b/wp-admin/comment.php new file mode 100644 index 0000000000..7131a0c7f3 --- /dev/null +++ b/wp-admin/comment.php @@ -0,0 +1,333 @@ +

$msg

"; + include( ABSPATH . 'wp-admin/admin-footer.php' ); + die; +} + +switch( $action ) { + +case 'editcomment' : + $title = __('Edit Comment'); + + get_current_screen()->add_help_tab( array( + '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.' ) . '

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

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

' . + '

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

' . + '

' . __( 'Support Forums' ) . '

' + ); + + wp_enqueue_script('comment'); + require_once( ABSPATH . 'wp-admin/admin-header.php' ); + + $comment_id = absint( $_GET['c'] ); + + if ( !$comment = get_comment( $comment_id ) ) + comment_footer_die( __( 'Invalid comment ID.' ) . sprintf(' ' . __('Go back') . '.', 'javascript:history.go(-1)') ); + + if ( !current_user_can( 'edit_comment', $comment_id ) ) + comment_footer_die( __('You are not allowed to edit this comment.') ); + + 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 ); + + include( ABSPATH . 'wp-admin/edit-form-comment.php' ); + + break; + +case 'delete' : +case 'approve' : +case 'trash' : +case 'spam' : + + $title = __('Moderate Comment'); + + $comment_id = absint( $_GET['c'] ); + + if ( !$comment = get_comment_to_edit( $comment_id ) ) { + wp_redirect( admin_url('edit-comments.php?error=1') ); + die(); + } + + if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) { + wp_redirect( admin_url('edit-comments.php?error=2') ); + die(); + } + + // No need to re-approve/re-trash/re-spam a comment. + if ( $action == str_replace( '1', 'approve', $comment->comment_approved ) ) { + wp_redirect( admin_url( 'edit-comments.php?same=' . $comment_id ) ); + die(); + } + + require_once( ABSPATH . 'wp-admin/admin-header.php' ); + + $formaction = $action . 'comment'; + $nonce_action = 'approve' == $action ? 'approve-comment_' : 'delete-comment_'; + $nonce_action .= $comment_id; + +?> +
+ +

+ +comment_approved != '0' ) { // if not unapproved + $message = ''; + switch ( $comment->comment_approved ) { + case '1' : + $message = __('This comment is currently approved.'); + break; + case 'spam' : + $message = __('This comment is currently marked as spam.'); + break; + case 'trash' : + $message = __('This comment is currently in the Trash.'); + break; + } + if ( $message ) { + echo '

' . $message . '

'; + } +} +?> +

+ + + + + + +comment_author_email ) { ?> + + + + + +comment_author_url ) { ?> + + + + + + + + + + + + + + + + + +
comment_author; ?>
comment_author_email; ?>
comment_author_url; ?>
+ comment_post_ID; + if ( current_user_can( 'edit_post', $post_id ) ) { + $post_link = ""; + $post_link .= esc_html( get_the_title( $post_id ) ) . ''; + } else { + $post_link = esc_html( get_the_title( $post_id ) ); + } + echo $post_link; + + if ( $comment->comment_parent ) { + $parent = get_comment( $comment->comment_parent ); + $parent_link = esc_url( get_comment_link( $comment->comment_parent ) ); + $name = get_comment_author( $parent->comment_ID ); + printf( ' | ' . __( 'In reply to %2$s.' ), $parent_link, $name ); + } + ?> +
+ %2$s at %3$s' ), + esc_url( get_comment_link( $comment->comment_ID ) ), + /* translators: comment date format. See http://php.net/date */ + get_comment_date( __( 'Y/m/d' ) ), + get_comment_date( get_option( 'time_format' ) ) + ); + ?> +
comment_content; ?>
+ +
+ +

+ + +

+ + + + + +
+ +
+' . __('Go back') . '.', 'edit-comments.php') ); + if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) + comment_footer_die( __('You are not allowed to edit comments on this post.') ); + + if ( '' != wp_get_referer() && ! $noredir && false === strpos(wp_get_referer(), 'comment.php') ) + $redir = wp_get_referer(); + elseif ( '' != wp_get_original_referer() && ! $noredir ) + $redir = wp_get_original_referer(); + elseif ( in_array( $action, array( 'approvecomment', 'unapprovecomment' ) ) ) + $redir = admin_url('edit-comments.php?p=' . absint( $comment->comment_post_ID ) ); + else + $redir = admin_url('edit-comments.php'); + + $redir = remove_query_arg( array('spammed', 'unspammed', 'trashed', 'untrashed', 'deleted', 'ids', 'approved', 'unapproved'), $redir ); + + switch ( $action ) { + case 'deletecomment' : + wp_delete_comment( $comment_id ); + $redir = add_query_arg( array('deleted' => '1'), $redir ); + break; + case 'trashcomment' : + wp_trash_comment($comment_id); + $redir = add_query_arg( array('trashed' => '1', 'ids' => $comment_id), $redir ); + break; + case 'untrashcomment' : + wp_untrash_comment($comment_id); + $redir = add_query_arg( array('untrashed' => '1'), $redir ); + break; + case 'spamcomment' : + wp_spam_comment($comment_id); + $redir = add_query_arg( array('spammed' => '1', 'ids' => $comment_id), $redir ); + break; + case 'unspamcomment' : + wp_unspam_comment($comment_id); + $redir = add_query_arg( array('unspammed' => '1'), $redir ); + break; + case 'approvecomment' : + wp_set_comment_status( $comment_id, 'approve' ); + $redir = add_query_arg( array( 'approved' => 1 ), $redir ); + break; + case 'unapprovecomment' : + wp_set_comment_status( $comment_id, 'hold' ); + $redir = add_query_arg( array( 'unapproved' => 1 ), $redir ); + break; + } + + wp_redirect( $redir ); + die; + +case 'editedcomment' : + + $comment_id = absint( $_POST['comment_ID'] ); + $comment_post_id = absint( $_POST['comment_post_ID'] ); + + check_admin_referer( 'update-comment_' . $comment_id ); + + edit_comment(); + + $location = ( empty( $_POST['referredby'] ) ? "edit-comments.php?p=$comment_post_id" : $_POST['referredby'] ) . '#comment-' . $comment_id; + + /** + * Filter the URI the user is redirected to after editing a comment in the admin. + * + * @since 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(); + +default: + wp_die( __('Unknown action.') ); + +} // end switch + +include( ABSPATH . 'wp-admin/admin-footer.php' ); diff --git a/wp-admin/credits.php b/wp-admin/credits.php new file mode 100644 index 0000000000..33ae70813f --- /dev/null +++ b/wp-admin/credits.php @@ -0,0 +1,191 @@ +' . esc_html( $display_name ) . ''; +} + +/** + * Retrieve the link to an external library used in WordPress. + * + * @access private + * @since 3.2.0 + * + * @param string &$data External library data, passed by reference. + */ +function _wp_credits_build_object_link( &$data ) { + $data = '' . esc_html( $data[0] ) . ''; +} + +list( $display_version ) = explode( '-', $wp_version ); + +include( ABSPATH . 'wp-admin/admin-header.php' ); +?> +
+ +

+ +
+ +
+ + + +' . sprintf( __( 'WordPress is created by a worldwide team of passionate individuals. Get involved in WordPress.' ), + 'https://wordpress.org/about/', + /* translators: Url to the codex documentation on contributing to WordPress used on the credits page */ + __( 'https://codex.wordpress.org/Contributing_to_WordPress' ) ) . '

'; + include( ABSPATH . 'wp-admin/admin-footer.php' ); + exit; +} + +echo '

' . __( 'WordPress is created by a worldwide team of passionate individuals.' ) . "

\n"; + +foreach ( $credits['groups'] as $group_slug => $group_data ) { + if ( $group_data['name'] ) { + if ( 'Translators' == $group_data['name'] ) { + // Considered a special slug in the API response. (Also, will never be returned for en_US.) + $title = _x( 'Translators', 'Translate this to be the equivalent of English Translators in your language for the credits page Translators section' ); + } elseif ( isset( $group_data['placeholders'] ) ) { + $title = vsprintf( translate( $group_data['name'] ), $group_data['placeholders'] ); + } else { + $title = translate( $group_data['name'] ); + } + + echo '

' . esc_html( $title ) . "

\n"; + } + + if ( ! empty( $group_data['shuffle'] ) ) + shuffle( $group_data['data'] ); // We were going to sort by ability to pronounce "hierarchical," but that wouldn't be fair to Matt. + + switch ( $group_data['type'] ) { + case 'list' : + array_walk( $group_data['data'], '_wp_credits_add_profile_link', $credits['data']['profiles'] ); + echo '

' . wp_sprintf( '%l.', $group_data['data'] ) . "

\n\n"; + break; + case 'libraries' : + array_walk( $group_data['data'], '_wp_credits_build_object_link' ); + echo '

' . wp_sprintf( '%l.', $group_data['data'] ) . "

\n\n"; + break; + default: + $compact = 'compact' == $group_data['type']; + $classes = 'wp-people-group ' . ( $compact ? 'compact' : '' ); + echo '\n"; + break; + } +} + +?> +

Get involved in WordPress.' ), + /* translators: URL to the Make WordPress 'Get Involved' landing page used on the credits page */ + __( 'https://make.wordpress.org/' ) ); ?>

+ +
+ a:focus, +#adminmenu .wp-submenu a:hover, +#adminmenu .wp-submenu 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 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: #32373c; + -webkit-box-shadow: 0 3px 5px rgba(0,0,0,0.2); + box-shadow: 0 3px 5px rgba(0,0,0,0.2); +} + +.js #adminmenu .sub-open, +.js #adminmenu .opensub .wp-submenu, +#adminmenu a.menu-top:focus + .wp-submenu, +.no-js li.wp-has-submenu:hover .wp-submenu { + top: -1px; +} + +#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; + z-index: 3; + top: auto; + right: auto; + left: auto; + bottom: auto; + border: 0 none; + margin-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + background-color: #32373c; +} + +/* ensure that wp-submenu's box shadow doesn't appear on top of the focused menu item's background. */ +#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 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: #0073aa; + color: #fff; +} + +.folded #adminmenu .wp-submenu.sub-open, +.folded #adminmenu .opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, +.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu a.menu-top:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu, +.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu { + top: 0; + right: 36px; +} + +.folded #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .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: 1.2; + margin: 0; + padding: 6px 0; +} + +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .opensub .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover, +#adminmenu .wp-submenu li.current a:focus { + color: #fff; +} + +#adminmenu .wp-not-current-submenu li > a, +.folded #adminmenu .wp-has-current-submenu li > a { + padding-left: 16px; + padding-right: 14px; + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; +} + +#adminmenu .wp-has-current-submenu ul > li > a, +.folded #adminmenu li.menu-top .wp-submenu > li > a { + padding: 6px 12px; +} + +#adminmenu a.menu-top, +#adminmenu .wp-submenu-head { + 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: 0.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; + -webkit-background-size: 20px auto; + background-size: 20px auto; +} + +div.wp-menu-image:before { + color: #a0a5aa; + color: rgba(240,245,250,0.6); + padding: 7px 0; + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; +} + +#adminmenu div.wp-menu-image:before { + color: #a0a5aa; + color: rgba(240,245,250,0.6); +} + +#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before, +#adminmenu .wp-has-current-submenu div.wp-menu-image:before, +#adminmenu .current div.wp-menu-image:before, +#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before, +#adminmenu a.current: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 { + color: #fff; +} + +#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: #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 { + width: 35px; + height: 30px; + position: absolute; + z-index: 25; +} + +.folded #adminmenu a.menu-top { + 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; +} + +/* A new arrow */ + +.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; +} + +/* flyout menu arrow */ +#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; +} + +/* @todo: is this even needed given that it's nested beneath the above li.wp-menu-separator? */ +#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 0px 4px; +} + +#adminmenu li.current, +.folded #adminmenu li.wp-menu-open { + border: 0 none; +} + +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + display: inline-block; + background-color: #d54e21; + color: #fff; + font-size: 9px; + line-height: 17px; + font-weight: 600; + margin: 1px 2px 0 0; + vertical-align: top; + -webkit-border-radius: 10px; + border-radius: 10px; + z-index: 26; +} + +#adminmenu li .awaiting-mod span, +#adminmenu li span.update-plugins span { + display: block; + padding: 0 6px; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins { + background-color: #00b9eb; + color: #fff; +} + +#adminmenu li span.count-0 { + display: none; +} + +#collapse-menu { + font-size: 13px; + line-height: 34px; + margin-top: 10px; + color: #a0a5aa; + color: rgba(240,245,250,0.6); + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; +} + +#collapse-menu:hover, +#collapse-menu:hover #collapse-button div:after { + color: #00b9eb; +} + +.folded #collapse-menu span { + display: none; +} + +#collapse-button, +#collapse-button div { + width: 15px; + height: 15px; +} + +#collapse-button { + float: right; + height: 15px; + margin: 10px 11px 10px 8px; + width: 15px; + -webkit-border-radius: 10px; + border-radius: 10px; +} + +#wpwrap #collapse-button div { + padding: 0; +} + +#collapse-button div:after { + content: '\f148'; + display: block; + line-height: 15px; + right: -3px; + top: -3px; + color: #a0a5aa; + color: rgba(240,245,250,0.6); + font: normal 20px/1 'dashicons' !important; + speak: none; + margin: 0 auto; + padding: 0 !important; + position: relative; + text-align: center; + width: 20px; + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* rtl:ignore */ +.folded #collapse-button div:after, +.rtl #collapse-button div:after { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.rtl.folded #collapse-button div:after { + -webkit-transform: none; + -ms-transform: none; + transform: none; +} + +/** + * Toolbar menu toggle + */ +li#wp-admin-bar-menu-toggle { + display: none; +} + +/* Hide-if-customize for items we can't add classes to */ +.customize-support #menu-appearance a[href="themes.php?page=custom-header"], +.customize-support #menu-appearance a[href="themes.php?page=custom-background"] { + display: none; +} + +/* Auto-folding of the admin menu */ +@media only screen and (max-width: 960px) { + .auto-fold #wpcontent, + .auto-fold #wpfooter { + margin-right: 36px; + } + + .auto-fold #adminmenuback, + .auto-fold #adminmenuwrap, + .auto-fold #adminmenu, + .auto-fold #adminmenu li.menu-top { + width: 36px; + } + + .auto-fold #adminmenu .wp-submenu.sub-open, + .auto-fold #adminmenu .opensub .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, + .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: 0px; + right: 36px; + } + + .auto-fold #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu .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 span { + display: none; + } + + .auto-fold #collapse-button div { + background: none; + } + + /* rtl:ignore */ + .auto-fold #collapse-button div:after { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); + } + + .rtl.auto-fold #collapse-button div:after { + -webkit-transform: none; + -ms-transform: none; + 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; + } + + /* Sidebar Adjustments */ + .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%; + } + + /* Resize the admin menu items to a comfortable touch size */ + .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; + } + + /* Restore the menu names */ + .auto-fold #adminmenu .wp-menu-name { + position: static; + margin-right: 35px; + } + + /* Switch the arrow side */ + .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; + } + + /* Make the submenus appear correctly when tapped. */ + #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; + -webkit-box-shadow: none; + 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 a.menu-top:focus + .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu { + position: relative; + right: -1px; + left: 0; + top: 0; + } + + /* Remove submenu headers and adjust sub meu*/ + #adminmenu .wp-submenu .wp-submenu-head { + display: none; + } + + /* Toolbar menu toggle */ + #wp-responsive-toggle { + position: fixed; + top: 5px; + right: 4px; + padding-left: 10px; + z-index: 99999; + border: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + #wpadminbar #wp-admin-bar-menu-toggle a { + display: block; + padding: 0; + overflow: hidden; + outline: none; + text-decoration: none; + border: 1px solid transparent; + background: none; + 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: none; + 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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #00b9eb; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + #adminmenuwrap, + #adminmenuback { + display: none; + } + + .wp-responsive-open #adminmenuwrap, + .wp-responsive-open #adminmenuback { + display: block; + } + + .auto-fold #adminmenu { + top: 46px; + } +} diff --git a/wp-admin/css/admin-menu.css b/wp-admin/css/admin-menu.css new file mode 100644 index 0000000000..27ffc0996d --- /dev/null +++ b/wp-admin/css/admin-menu.css @@ -0,0 +1,944 @@ +#adminmenuback, +#adminmenuwrap, +#adminmenu, +#adminmenu .wp-submenu { + width: 160px; + background-color: #23282d; +} + +#adminmenuback { + position: fixed; + top: 0; + bottom: -120px; + z-index: 1; /* positive z-index to avoid elastic scrolling woes in Safari */ +} + +#adminmenu { + clear: left; + margin: 12px 0; + padding: 0; + list-style: none; +} + +.folded #adminmenuback, +.folded #adminmenuwrap, +.folded #adminmenu, +.folded #adminmenu li.menu-top { + width: 36px; +} + +.icon16 { + height: 18px; + width: 18px; + padding: 6px 6px; + margin: -6px 0 0 -8px; + float: left; +} + +/* New Menu icons */ + +.icon16:before { + color: #999; + 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; + -webkit-transition: all .1s ease-in-out; + 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: '\f112' +} + +.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; +} + +/*------------------------------------------------------------------------------ + 7.0 - Main Navigation (Left Menu) +------------------------------------------------------------------------------*/ + +#adminmenuwrap { + position: relative; + float: left; + z-index: 9990; +} + +/* side admin menu */ +#adminmenu * { + -webkit-user-select: none; + -moz-user-select: none; + -ms-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,0.7); +} + +#adminmenu .wp-submenu a:hover, +#adminmenu .wp-submenu a:focus { + background: none; +} + +#adminmenu a:hover, +#adminmenu li.menu-top > a:focus, +#adminmenu .wp-submenu a:hover, +#adminmenu .wp-submenu 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 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: #32373c; + -webkit-box-shadow: 0 3px 5px rgba(0,0,0,0.2); + box-shadow: 0 3px 5px rgba(0,0,0,0.2); +} + +.js #adminmenu .sub-open, +.js #adminmenu .opensub .wp-submenu, +#adminmenu a.menu-top:focus + .wp-submenu, +.no-js li.wp-has-submenu:hover .wp-submenu { + top: -1px; +} + +#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; + z-index: 3; + top: auto; + left: auto; + right: auto; + bottom: auto; + border: 0 none; + margin-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + background-color: #32373c; +} + +/* ensure that wp-submenu's box shadow doesn't appear on top of the focused menu item's background. */ +#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 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: #0073aa; + color: #fff; +} + +.folded #adminmenu .wp-submenu.sub-open, +.folded #adminmenu .opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, +.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu a.menu-top:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu, +.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu { + top: 0; + left: 36px; +} + +.folded #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .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: 1.2; + margin: 0; + padding: 6px 0; +} + +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .opensub .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover, +#adminmenu .wp-submenu li.current a:focus { + color: #fff; +} + +#adminmenu .wp-not-current-submenu li > a, +.folded #adminmenu .wp-has-current-submenu li > a { + padding-right: 16px; + padding-left: 14px; + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; +} + +#adminmenu .wp-has-current-submenu ul > li > a, +.folded #adminmenu li.menu-top .wp-submenu > li > a { + padding: 6px 12px; +} + +#adminmenu a.menu-top, +#adminmenu .wp-submenu-head { + 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: 0.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; + -webkit-background-size: 20px auto; + background-size: 20px auto; +} + +div.wp-menu-image:before { + color: #a0a5aa; + color: rgba(240,245,250,0.6); + padding: 7px 0; + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; +} + +#adminmenu div.wp-menu-image:before { + color: #a0a5aa; + color: rgba(240,245,250,0.6); +} + +#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before, +#adminmenu .wp-has-current-submenu div.wp-menu-image:before, +#adminmenu .current div.wp-menu-image:before, +#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before, +#adminmenu a.current: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 { + color: #fff; +} + +#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: #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 { + width: 35px; + height: 30px; + position: absolute; + z-index: 25; +} + +.folded #adminmenu a.menu-top { + 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; +} + +/* A new arrow */ + +.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; +} + +/* flyout menu arrow */ +#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; +} + +/* @todo: is this even needed given that it's nested beneath the above li.wp-menu-separator? */ +#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 0px 4px; +} + +#adminmenu li.current, +.folded #adminmenu li.wp-menu-open { + border: 0 none; +} + +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + display: inline-block; + background-color: #d54e21; + color: #fff; + font-size: 9px; + line-height: 17px; + font-weight: 600; + margin: 1px 0 0 2px; + vertical-align: top; + -webkit-border-radius: 10px; + border-radius: 10px; + z-index: 26; +} + +#adminmenu li .awaiting-mod span, +#adminmenu li span.update-plugins span { + display: block; + padding: 0 6px; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins { + background-color: #00b9eb; + color: #fff; +} + +#adminmenu li span.count-0 { + display: none; +} + +#collapse-menu { + font-size: 13px; + line-height: 34px; + margin-top: 10px; + color: #a0a5aa; + color: rgba(240,245,250,0.6); + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; +} + +#collapse-menu:hover, +#collapse-menu:hover #collapse-button div:after { + color: #00b9eb; +} + +.folded #collapse-menu span { + display: none; +} + +#collapse-button, +#collapse-button div { + width: 15px; + height: 15px; +} + +#collapse-button { + float: left; + height: 15px; + margin: 10px 8px 10px 11px; + width: 15px; + -webkit-border-radius: 10px; + border-radius: 10px; +} + +#wpwrap #collapse-button div { + padding: 0; +} + +#collapse-button div:after { + content: '\f148'; + display: block; + line-height: 15px; + left: -3px; + top: -3px; + color: #a0a5aa; + color: rgba(240,245,250,0.6); + font: normal 20px/1 'dashicons' !important; + speak: none; + margin: 0 auto; + padding: 0 !important; + position: relative; + text-align: center; + width: 20px; + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* rtl:ignore */ +.folded #collapse-button div:after, +.rtl #collapse-button div:after { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.rtl.folded #collapse-button div:after { + -webkit-transform: none; + -ms-transform: none; + transform: none; +} + +/** + * Toolbar menu toggle + */ +li#wp-admin-bar-menu-toggle { + display: none; +} + +/* Hide-if-customize for items we can't add classes to */ +.customize-support #menu-appearance a[href="themes.php?page=custom-header"], +.customize-support #menu-appearance a[href="themes.php?page=custom-background"] { + display: none; +} + +/* Auto-folding of the admin menu */ +@media only screen and (max-width: 960px) { + .auto-fold #wpcontent, + .auto-fold #wpfooter { + margin-left: 36px; + } + + .auto-fold #adminmenuback, + .auto-fold #adminmenuwrap, + .auto-fold #adminmenu, + .auto-fold #adminmenu li.menu-top { + width: 36px; + } + + .auto-fold #adminmenu .wp-submenu.sub-open, + .auto-fold #adminmenu .opensub .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, + .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: 0px; + left: 36px; + } + + .auto-fold #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu .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 span { + display: none; + } + + .auto-fold #collapse-button div { + background: none; + } + + /* rtl:ignore */ + .auto-fold #collapse-button div:after { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); + } + + .rtl.auto-fold #collapse-button div:after { + -webkit-transform: none; + -ms-transform: none; + 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; + } + + /* Sidebar Adjustments */ + .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%; + } + + /* Resize the admin menu items to a comfortable touch size */ + .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; + } + + /* Restore the menu names */ + .auto-fold #adminmenu .wp-menu-name { + position: static; + margin-left: 35px; + } + + /* Switch the arrow side */ + .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; + } + + /* Make the submenus appear correctly when tapped. */ + #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; + -webkit-box-shadow: none; + 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 a.menu-top:focus + .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu { + position: relative; + left: -1px; + right: 0; + top: 0; + } + + /* Remove submenu headers and adjust sub meu*/ + #adminmenu .wp-submenu .wp-submenu-head { + display: none; + } + + /* Toolbar menu toggle */ + #wp-responsive-toggle { + position: fixed; + top: 5px; + left: 4px; + padding-right: 10px; + z-index: 99999; + border: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + #wpadminbar #wp-admin-bar-menu-toggle a { + display: block; + padding: 0; + overflow: hidden; + outline: none; + text-decoration: none; + border: 1px solid transparent; + background: none; + 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: none; + 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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #00b9eb; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + #adminmenuwrap, + #adminmenuback { + display: none; + } + + .wp-responsive-open #adminmenuwrap, + .wp-responsive-open #adminmenuback { + display: block; + } + + .auto-fold #adminmenu { + top: 46px; + } +} diff --git a/wp-admin/css/color-picker-rtl.css b/wp-admin/css/color-picker-rtl.css new file mode 100644 index 0000000000..954376ef5e --- /dev/null +++ b/wp-admin/css/color-picker-rtl.css @@ -0,0 +1,127 @@ +.wp-color-picker { + width: 80px; +} + +.wp-picker-container .hidden { + display: none; +} + +.wp-color-result { + background-color: #f7f7f7; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + border-radius: 3px; + cursor: pointer; + display: inline-block; + height: 22px; + margin: 0 0px 6px 6px; + position: relative; + top: 1px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: bottom; + display: inline-block; + padding-right: 30px; + -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.08); + box-shadow: 0 1px 0 rgba(0,0,0,.08); +} + +.wp-color-result:after { + background: #f7f7f7; + -webkit-border-radius: 2px 0 0 2px; + border-radius: 2px 0 0 2px; + border-right: 1px solid #ccc; + color: #555; + content: attr( title ); + display: block; + font-size: 11px; + line-height: 22px; + padding: 0 6px; + position: relative; + left: 0; + text-align: center; + top: 0; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; +} + +.wp-color-result:hover, +.wp-color-result:focus { + background: #fafafa; + border-color: #999; + color: #23282d; +} + +.wp-color-result:hover:after, +.wp-color-result:focus:after { + color: #23282d; + border-color: #a0a5aa; + border-right: 1px solid #999; +} + +.wp-color-result { + top: 0; +} + +.wp-color-result.wp-picker-open:after { + content: attr( data-current ); +} + +.wp-picker-container, .wp-picker-container:active { + display: inline-block; + outline: 0; +} + +.wp-color-result:focus { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); +} + +.wp-picker-open + .wp-picker-input-wrap { + display: inline-block; + vertical-align: top; +} + +.wp-picker-container .button { + margin-right: 6px; +} + +.wp-picker-container .iris-square-slider .ui-slider-handle:focus { + background-color: #555 +} + +.wp-picker-container .iris-picker { + -webkit-border-radius: 0; + border-radius: 0; + border-color: #dfdfdf; + margin-top: 6px; +} + +.wp-picker-container input[type="text"].wp-color-picker { + width: 65px; + font-size: 12px; + font-family: monospace; + text-align: center; + line-height: 16px; + margin: 0; +} + +.wp-picker-container input[type="text"].wp-color-picker:focus::-webkit-input-placeholder { + color: transparent; +} + +.wp-picker-container input[type="text"].wp-color-picker:-moz-placeholder { + color: #999; +} + +.wp-picker-container input[type="text"].iris-error { + background-color: #ffebe8; + border-color: #c00; + color: #000; +} diff --git a/wp-admin/css/color-picker-rtl.min.css b/wp-admin/css/color-picker-rtl.min.css new file mode 100644 index 0000000000..a08ffc945f --- /dev/null +++ b/wp-admin/css/color-picker-rtl.min.css @@ -0,0 +1 @@ +.wp-color-picker{width:80px}.wp-picker-container .hidden{display:none}.wp-color-result{background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;cursor:pointer;height:22px;margin:0 0 6px 6px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;display:inline-block;padding-right:30px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.08);box-shadow:0 1px 0 rgba(0,0,0,.08);top:0}.wp-color-result:after{background:#f7f7f7;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px;border-right:1px solid #ccc;color:#555;content:attr(title);display:block;font-size:11px;line-height:22px;padding:0 6px;position:relative;left:0;text-align:center;top:0;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.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-color-result.wp-picker-open:after{content:attr(data-current)}.wp-picker-container,.wp-picker-container:active{display:inline-block;outline:0}.wp-color-result:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-container .button{margin-right:6px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#555}.wp-picker-container .iris-picker{-webkit-border-radius:0;border-radius:0;border-color:#dfdfdf;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;text-align:center;line-height:16px;margin:0}.wp-picker-container input[type=text].wp-color-picker:focus::-webkit-input-placeholder{color:transparent}.wp-picker-container input[type=text].wp-color-picker:-moz-placeholder{color:#999}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000} \ No newline at end of file diff --git a/wp-admin/css/color-picker.css b/wp-admin/css/color-picker.css new file mode 100644 index 0000000000..24873a035c --- /dev/null +++ b/wp-admin/css/color-picker.css @@ -0,0 +1,127 @@ +.wp-color-picker { + width: 80px; +} + +.wp-picker-container .hidden { + display: none; +} + +.wp-color-result { + background-color: #f7f7f7; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + border-radius: 3px; + cursor: pointer; + display: inline-block; + height: 22px; + margin: 0 6px 6px 0px; + position: relative; + top: 1px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: bottom; + display: inline-block; + padding-left: 30px; + -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.08); + box-shadow: 0 1px 0 rgba(0,0,0,.08); +} + +.wp-color-result:after { + background: #f7f7f7; + -webkit-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; + border-left: 1px solid #ccc; + color: #555; + content: attr( title ); + display: block; + font-size: 11px; + line-height: 22px; + padding: 0 6px; + position: relative; + right: 0; + text-align: center; + top: 0; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; +} + +.wp-color-result:hover, +.wp-color-result:focus { + background: #fafafa; + border-color: #999; + color: #23282d; +} + +.wp-color-result:hover:after, +.wp-color-result:focus:after { + color: #23282d; + border-color: #a0a5aa; + border-left: 1px solid #999; +} + +.wp-color-result { + top: 0; +} + +.wp-color-result.wp-picker-open:after { + content: attr( data-current ); +} + +.wp-picker-container, .wp-picker-container:active { + display: inline-block; + outline: 0; +} + +.wp-color-result:focus { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); +} + +.wp-picker-open + .wp-picker-input-wrap { + display: inline-block; + vertical-align: top; +} + +.wp-picker-container .button { + margin-left: 6px; +} + +.wp-picker-container .iris-square-slider .ui-slider-handle:focus { + background-color: #555 +} + +.wp-picker-container .iris-picker { + -webkit-border-radius: 0; + border-radius: 0; + border-color: #dfdfdf; + margin-top: 6px; +} + +.wp-picker-container input[type="text"].wp-color-picker { + width: 65px; + font-size: 12px; + font-family: monospace; + text-align: center; + line-height: 16px; + margin: 0; +} + +.wp-picker-container input[type="text"].wp-color-picker:focus::-webkit-input-placeholder { + color: transparent; +} + +.wp-picker-container input[type="text"].wp-color-picker:-moz-placeholder { + color: #999; +} + +.wp-picker-container input[type="text"].iris-error { + background-color: #ffebe8; + border-color: #c00; + color: #000; +} diff --git a/wp-admin/css/color-picker.min.css b/wp-admin/css/color-picker.min.css new file mode 100644 index 0000000000..f3c178d38f --- /dev/null +++ b/wp-admin/css/color-picker.min.css @@ -0,0 +1 @@ +.wp-color-picker{width:80px}.wp-picker-container .hidden{display:none}.wp-color-result{background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;cursor:pointer;height:22px;margin:0 6px 6px 0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;display:inline-block;padding-left:30px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.08);box-shadow:0 1px 0 rgba(0,0,0,.08);top:0}.wp-color-result:after{background:#f7f7f7;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0;border-left:1px solid #ccc;color:#555;content:attr(title);display:block;font-size:11px;line-height:22px;padding:0 6px;position:relative;right:0;text-align:center;top:0;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.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-color-result.wp-picker-open:after{content:attr(data-current)}.wp-picker-container,.wp-picker-container:active{display:inline-block;outline:0}.wp-color-result:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-container .button{margin-left:6px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#555}.wp-picker-container .iris-picker{-webkit-border-radius:0;border-radius:0;border-color:#dfdfdf;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;text-align:center;line-height:16px;margin:0}.wp-picker-container input[type=text].wp-color-picker:focus::-webkit-input-placeholder{color:transparent}.wp-picker-container input[type=text].wp-color-picker:-moz-placeholder{color:#999}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000} \ No newline at end of file diff --git a/wp-admin/css/colors/_admin.scss b/wp-admin/css/colors/_admin.scss new file mode 100644 index 0000000000..6e396428f6 --- /dev/null +++ b/wp-admin/css/colors/_admin.scss @@ -0,0 +1,525 @@ + +@import 'variables'; +@import 'mixins'; + + +html { + background: $body-background; +} + + +/* Links */ + +a { + color: $link; + + &:hover, + &:active, + &:focus { + color: $link-focus; + } +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: $link-focus; +} + + +/* Forms */ + +input[type=checkbox]:checked:before { + color: $form-checked; +} + +input[type=radio]:checked:before { + background: $form-checked; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: $link-focus; +} + + +/* Core UI */ + +.wp-core-ui { + .button-primary { + @include button( $button-color ); + } + + .wp-ui-primary { + color: $text-color; + background-color: $base-color; + } + .wp-ui-text-primary { + color: $base-color; + } + + .wp-ui-highlight { + color: $menu-highlight-text; + background-color: $menu-highlight-background; + } + .wp-ui-text-highlight { + color: $menu-highlight-background; + } + + .wp-ui-notification { + color: $menu-bubble-text; + background-color: $menu-bubble-background; + } + .wp-ui-text-notification { + color: $menu-bubble-background; + } + + .wp-ui-text-icon { + color: $menu-icon; + } +} + + +/* List tables */ + +.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 { + color: $menu-background; +} + +.view-switch a:hover:before { + color: $menu-bubble-background; +} + + +/* Admin Menu */ + +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: $menu-background; +} + +#adminmenu a { + color: $menu-text; +} + +#adminmenu div.wp-menu-image:before { + color: $menu-icon; +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: $menu-highlight-text; + background-color: $menu-highlight-background; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: $menu-highlight-icon; +} + + +/* Active tabs use a bottom border color that matches the page background color. */ + +.about-wrap h2 .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: $body-background; + border-bottom-color: $body-background; +} + + +/* Admin Menu: submenu */ + +#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 { + border-right-color: $menu-submenu-background; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: $menu-submenu-text; +} + +#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; + + &:focus, &:hover { + color: $menu-submenu-focus-text; + } +} + + +/* 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: $menu-submenu-current-text; + + &:hover, &:focus { + color: $menu-submenu-focus-text; + } +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-right-color: $body-background; +} + +#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: $menu-current-text; + background: $menu-current-background; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: $menu-bubble-text; + background: $menu-bubble-background; +} + +#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: $menu-bubble-current-text; + background: $menu-bubble-current-background; +} + + +/* Admin Menu: collapse button */ + +#collapse-menu { + color: $menu-collapse-text; +} + +#collapse-menu:hover { + color: $menu-collapse-focus-text; +} + +#collapse-button div:after { + color: $menu-collapse-icon; +} + +#collapse-menu:hover #collapse-button div:after { + color: $menu-collapse-focus-icon; +} + + +/* Admin Bar */ + +#wpadminbar { + color: $menu-text; + background: $menu-background; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: $menu-text; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: $menu-icon; +} + +#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: $menu-submenu-focus-text; + background: $menu-submenu-background; +} + +#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: $menu-submenu-focus-text; +} + +#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: $menu-highlight-icon; +} + + +/* Admin Bar: submenu */ + +#wpadminbar .menupop .ab-sub-wrapper { + background: $menu-submenu-background; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: $menu-submenu-background-alt; +} + +#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: $menu-submenu-text; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: $menu-icon; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: $menu-submenu-focus-text; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: $menu-submenu-focus-text; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: $menu-icon; +} + + +/* Admin Bar: search */ + +#wpadminbar #adminbarsearch:before { + color: $menu-icon; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: $menu-text; + background: $adminbar-input-background; +} + +#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder { color: $menu-text; opacity: 0.7; } +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { color: $menu-text; opacity: 0.7; } +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { color: $menu-text; opacity: 0.7; } +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { color: $menu-text; opacity: 0.7; } + + +/* Admin Bar: my account */ + +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: $adminbar-avatar-frame; + background-color: $adminbar-avatar-frame; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: $menu-text; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: $menu-submenu-focus-text; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: $menu-submenu-text; +} + + +/* Pointers */ + +.wp-pointer .wp-pointer-content h3 { + background-color: $highlight-color; + border-color: darken( $highlight-color, 5% ); +} + +.wp-pointer .wp-pointer-content h3:before { + color: $highlight-color; +} + +.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: $highlight-color; +} + + +/* Media */ + +.media-item .bar, +.media-progress-bar div { + background-color: $highlight-color; +} + +.details.attachment { + box-shadow: + inset 0 0 0 3px #fff, + inset 0 0 0 7px $highlight-color; +} + +.attachment.details .check { + background-color: $highlight-color; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px $highlight-color; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: + 0px 0px 0px 1px #fff, + 0px 0px 0px 3px $highlight-color; + box-shadow: + 0px 0px 0px 1px #fff, + 0px 0px 0px 3px $highlight-color; +} + + +/* 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: $highlight-color; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: $highlight-color; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: $menu-background; +} + +body.more-filters-opened .more-filters { + color: $menu-text; + background-color: $menu-background; +} + +body.more-filters-opened .more-filters:before { + color: $menu-text; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: $menu-highlight-background; + color: $menu-highlight-text; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: $menu-highlight-text; +} + +/* Widgets */ + +.widgets-chooser li.widgets-chooser-selected { + background-color: $menu-highlight-background; + color: $menu-highlight-text; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: $menu-highlight-text; +} + +/* Customize */ + +#customize-theme-controls .widget-area-select .selected { + background-color: $menu-highlight-background; + color: $menu-highlight-text; +} + +/* jQuery UI Slider */ + +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: $button-color; + border-color: darken( $button-color, 10% ); + box-shadow: inset 0 1px 0 lighten( $button-color, 15% ), 0 1px 0 rgba(0,0,0,.15); +} + +/* Responsive Component */ + +div#wp-responsive-toggle a:before { + color: $menu-icon; +} + +.wp-responsive-open div#wp-responsive-toggle a { + // ToDo: make inset border + border-color: transparent; + background: $menu-highlight-background; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: $menu-submenu-background; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: $menu-icon; +} + +/* 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: $highlight-color; +} diff --git a/wp-admin/css/colors/_mixins.scss b/wp-admin/css/colors/_mixins.scss new file mode 100644 index 0000000000..9c196e0f3b --- /dev/null +++ b/wp-admin/css/colors/_mixins.scss @@ -0,0 +1,43 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +@mixin button( $button-color, $text-color: white ) { + background: $button-color; + border-color: darken( $button-color, 10% ); + color: $text-color; + box-shadow: inset 0 1px 0 lighten( $button-color, 15% ), 0 1px 0 rgba(0,0,0,.15); + + &:hover, + &:focus { + background: darken( $button-color, 5% ); + border-color: darken( $button-color, 15% ); + color: $text-color; + box-shadow: inset 0 1px 0 lighten( $button-color, 10% ); + } + + &:focus { + box-shadow: inset 0 1px 0 lighten( $button-color, 10% ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, .8 ); + } + + &:active { + background: darken( $button-color, 10% ); + border-color: darken( $button-color, 15% ); + color: $text-color; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, .8 ); + } + + &[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; + } +} diff --git a/wp-admin/css/colors/_variables.scss b/wp-admin/css/colors/_variables.scss new file mode 100644 index 0000000000..c203f1b2d5 --- /dev/null +++ b/wp-admin/css/colors/_variables.scss @@ -0,0 +1,58 @@ +// assign default value to all undefined variables + + +// core variables + +$text-color: #fff !default; +$base-color: #23282d !default; +$icon-color: hsl( hue( $base-color ), 7%, 95% ) !default; +$highlight-color: #0073aa !default; +$notification-color: #d54e21 !default; + + +// global + +$body-background: #f1f1f1 !default; + +$link: #0073aa !default; +$link-focus: lighten( $link, 10% ) !default; + +$button-color: $highlight-color !default; +$form-checked: $highlight-color !default; + + +// admin menu & admin-bar + +$menu-text: $text-color !default; +$menu-icon: $icon-color !default; +$menu-background: $base-color !default; + +$menu-highlight-text: $text-color !default; +$menu-highlight-icon: $text-color !default; +$menu-highlight-background: $highlight-color !default; + +$menu-current-text: $menu-highlight-text !default; +$menu-current-icon: $menu-highlight-icon !default; +$menu-current-background: $menu-highlight-background !default; + +$menu-submenu-text: mix( $base-color, $text-color, 30% ) !default; +$menu-submenu-background: darken( $base-color, 7% ) !default; +$menu-submenu-background-alt: desaturate( lighten( $menu-background, 7% ), 7% ) !default; + +$menu-submenu-focus-text: $highlight-color !default; +$menu-submenu-current-text: $text-color !default; + +$menu-bubble-text: $text-color !default; +$menu-bubble-background: $notification-color !default; +$menu-bubble-current-text: $text-color !default; +$menu-bubble-current-background: $menu-submenu-background !default; + +$menu-collapse-text: $menu-icon !default; +$menu-collapse-icon: $menu-icon !default; +$menu-collapse-focus-text: $text-color !default; +$menu-collapse-focus-icon: $menu-highlight-icon !default; + +$adminbar-avatar-frame: lighten( $menu-background, 7% ) !default; +$adminbar-input-background: lighten( $menu-background, 7% ) !default; + +$menu-customizer-text: mix( $base-color, $text-color, 40% ) !default; diff --git a/wp-admin/css/colors/blue/colors-rtl.css b/wp-admin/css/colors/blue/colors-rtl.css new file mode 100644 index 0000000000..97a77a0ba4 --- /dev/null +++ b/wp-admin/css/colors/blue/colors-rtl.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #096484; +} + +input[type=radio]:checked:before { + background: #096484; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #e1a948; + border-color: #d39323; + color: white; + -webkit-box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #dd9f32; + border-color: #bd831f; + color: white; + -webkit-box-shadow: inset 0 1px 0 #e8be74; + box-shadow: inset 0 1px 0 #e8be74; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #e8be74, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #e8be74, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #d39323; + border-color: #bd831f; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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 { + color: #52accc; +} + +.view-switch a:hover:before { + color: #e1a948; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-left-color: #4796b3; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #e2ecf1; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #fff; +} + +/* 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: #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 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: #096484; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #e1a948; +} + +#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: #4796b3; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #e5f8ff; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #e5f8ff; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #e5f8ff; +} + +#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: #fff; + background: #4796b3; +} + +#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: #fff; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #e5f8ff; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #fff; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #096484; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #096484; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #096484; +} + +.attachment.details .check { + background-color: #096484; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #096484; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #096484; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #096484; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #096484; +} + +/* 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: #096484; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #096484; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #096484; + 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: #096484; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #096484; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #e1a948; + border-color: #d39323; + -webkit-box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #096484; +} diff --git a/wp-admin/css/colors/blue/colors-rtl.min.css b/wp-admin/css/colors/blue/colors-rtl.min.css new file mode 100644 index 0000000000..56d9e32040 --- /dev/null +++ b/wp-admin/css/colors/blue/colors-rtl.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#dd9f32;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8be74;box-shadow:inset 0 1px 0 #e8be74}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e8be74,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e8be74,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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-has-current-submenu.opensub .wp-submenu li.current a,#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 a:focus,#adminmenu .wp-submenu a:hover,#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 a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a,#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,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu 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 div:after,#collapse-menu{color:#e5f8ff}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#52accc}#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) 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,#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 .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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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,#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #096484;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-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#e1a948;border-color:#d39323;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..8fb3d6104d --- /dev/null +++ b/wp-admin/css/colors/blue/colors.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #096484; +} + +input[type=radio]:checked:before { + background: #096484; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #e1a948; + border-color: #d39323; + color: white; + -webkit-box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #dd9f32; + border-color: #bd831f; + color: white; + -webkit-box-shadow: inset 0 1px 0 #e8be74; + box-shadow: inset 0 1px 0 #e8be74; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #e8be74, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #e8be74, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #d39323; + border-color: #bd831f; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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 { + color: #52accc; +} + +.view-switch a:hover:before { + color: #e1a948; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-right-color: #4796b3; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #e2ecf1; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #fff; +} + +/* 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: #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 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: #096484; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #e1a948; +} + +#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: #4796b3; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #e5f8ff; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #e5f8ff; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #e5f8ff; +} + +#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: #fff; + background: #4796b3; +} + +#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: #fff; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #e5f8ff; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #fff; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #096484; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #096484; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #096484; +} + +.attachment.details .check { + background-color: #096484; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #096484; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #096484; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #096484; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #096484; +} + +/* 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: #096484; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #096484; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #096484; + 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: #096484; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #096484; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #e1a948; + border-color: #d39323; + -webkit-box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #096484; +} diff --git a/wp-admin/css/colors/blue/colors.min.css b/wp-admin/css/colors/blue/colors.min.css new file mode 100644 index 0000000000..c5d45e3fea --- /dev/null +++ b/wp-admin/css/colors/blue/colors.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#dd9f32;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8be74;box-shadow:inset 0 1px 0 #e8be74}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e8be74,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e8be74,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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-has-current-submenu.opensub .wp-submenu li.current a,#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 a:focus,#adminmenu .wp-submenu a:hover,#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 a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a,#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,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu 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 div:after,#collapse-menu{color:#e5f8ff}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#52accc}#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) 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,#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 .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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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,#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #096484;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-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#e1a948;border-color:#d39323;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..b254d73a8f --- /dev/null +++ b/wp-admin/css/colors/blue/colors.scss @@ -0,0 +1,11 @@ +$base-color: #52accc; +$icon-color: #e5f8ff; +$highlight-color: #096484; +$notification-color: #e1a948; +$button-color: #e1a948; + +$menu-submenu-text: #e2ecf1; +$menu-submenu-focus-text: #fff; +$menu-submenu-background: #4796b3; + +@import "../_admin.scss"; diff --git a/wp-admin/css/colors/coffee/colors-rtl.css b/wp-admin/css/colors/coffee/colors-rtl.css new file mode 100644 index 0000000000..23866fc8cd --- /dev/null +++ b/wp-admin/css/colors/coffee/colors-rtl.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #59524c; +} + +input[type=radio]:checked:before { + background: #59524c; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #c7a589; + border-color: #b78b66; + color: white; + -webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #bf9878; + border-color: #ae7d55; + color: white; + -webkit-box-shadow: inset 0 1px 0 #d7bfac; + box-shadow: inset 0 1px 0 #d7bfac; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #b78b66; + border-color: #ae7d55; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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; +} + +.view-switch a.current:before { + color: #59524c; +} + +.view-switch a:hover:before { + color: #9ea476; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-left-color: #46403c; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #cdcbc9; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #c7a589; +} + +/* 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: #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 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: #c7a589; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #9ea476; +} + +#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: #46403c; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #f3f2f1; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #f3f2f1; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #f3f2f1; +} + +#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: #c7a589; + background: #46403c; +} + +#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: #c7a589; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #f3f2f1; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #c7a589; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #c7a589; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #c7a589; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #c7a589; +} + +.attachment.details .check { + background-color: #c7a589; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #c7a589; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #c7a589; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #c7a589; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #c7a589; +} + +/* 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: #c7a589; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #c7a589; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #c7a589; + 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: #c7a589; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #c7a589; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #c7a589; + border-color: #b78b66; + -webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #c7a589; +} diff --git a/wp-admin/css/colors/coffee/colors-rtl.min.css b/wp-admin/css/colors/coffee/colors-rtl.min.css new file mode 100644 index 0000000000..39921d5b3a --- /dev/null +++ b/wp-admin/css/colors/coffee/colors-rtl.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#bf9878;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 1px 0 #d7bfac;box-shadow:inset 0 1px 0 #d7bfac}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d7bfac,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #d7bfac,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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 div:after,#collapse-menu{color:#f3f2f1}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#59524c}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589;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-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#c7a589;border-color:#b78b66;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..7d690f60c1 --- /dev/null +++ b/wp-admin/css/colors/coffee/colors.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #59524c; +} + +input[type=radio]:checked:before { + background: #59524c; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #c7a589; + border-color: #b78b66; + color: white; + -webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #bf9878; + border-color: #ae7d55; + color: white; + -webkit-box-shadow: inset 0 1px 0 #d7bfac; + box-shadow: inset 0 1px 0 #d7bfac; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #b78b66; + border-color: #ae7d55; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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; +} + +.view-switch a.current:before { + color: #59524c; +} + +.view-switch a:hover:before { + color: #9ea476; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-right-color: #46403c; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #cdcbc9; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #c7a589; +} + +/* 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: #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 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: #c7a589; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #9ea476; +} + +#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: #46403c; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #f3f2f1; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #f3f2f1; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #f3f2f1; +} + +#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: #c7a589; + background: #46403c; +} + +#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: #c7a589; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #f3f2f1; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #c7a589; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #c7a589; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #c7a589; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #c7a589; +} + +.attachment.details .check { + background-color: #c7a589; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #c7a589; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #c7a589; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #c7a589; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #c7a589; +} + +/* 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: #c7a589; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #c7a589; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #c7a589; + 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: #c7a589; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #c7a589; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #c7a589; + border-color: #b78b66; + -webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #c7a589; +} diff --git a/wp-admin/css/colors/coffee/colors.min.css b/wp-admin/css/colors/coffee/colors.min.css new file mode 100644 index 0000000000..6b4654110b --- /dev/null +++ b/wp-admin/css/colors/coffee/colors.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#bf9878;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 1px 0 #d7bfac;box-shadow:inset 0 1px 0 #d7bfac}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d7bfac,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #d7bfac,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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 div:after,#collapse-menu{color:#f3f2f1}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#59524c}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589;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-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#c7a589;border-color:#b78b66;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..49bee9be94 --- /dev/null +++ b/wp-admin/css/colors/coffee/colors.scss @@ -0,0 +1,7 @@ +$base-color: #59524c; +$highlight-color: #c7a589; +$notification-color: #9ea476; + +$form-checked: $base-color; + +@import "../_admin.scss"; diff --git a/wp-admin/css/colors/ectoplasm/colors-rtl.css b/wp-admin/css/colors/ectoplasm/colors-rtl.css new file mode 100644 index 0000000000..01f212f172 --- /dev/null +++ b/wp-admin/css/colors/ectoplasm/colors-rtl.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #523f6d; +} + +input[type=radio]:checked:before { + background: #523f6d; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #a3b745; + border-color: #829237; + color: white; + -webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #93a43e; + border-color: #727f30; + color: white; + -webkit-box-shadow: inset 0 1px 0 #b6c669; + box-shadow: inset 0 1px 0 #b6c669; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #829237; + border-color: #727f30; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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 { + color: #523f6d; +} + +.view-switch a:hover:before { + color: #d46f15; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-left-color: #413256; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #cbc5d3; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #a3b745; +} + +/* 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: #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 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: #a3b745; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #d46f15; +} + +#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: #413256; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #ece6f6; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #ece6f6; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #ece6f6; +} + +#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: #a3b745; + background: #413256; +} + +#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: #a3b745; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #ece6f6; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #a3b745; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #a3b745; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #a3b745; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #a3b745; +} + +.attachment.details .check { + background-color: #a3b745; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #a3b745; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #a3b745; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #a3b745; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #a3b745; +} + +/* 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: #a3b745; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #a3b745; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #a3b745; + 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: #a3b745; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #a3b745; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #a3b745; + border-color: #829237; + -webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #a3b745; +} diff --git a/wp-admin/css/colors/ectoplasm/colors-rtl.min.css b/wp-admin/css/colors/ectoplasm/colors-rtl.min.css new file mode 100644 index 0000000000..eaaa3cdead --- /dev/null +++ b/wp-admin/css/colors/ectoplasm/colors-rtl.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#93a43e;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 1px 0 #b6c669;box-shadow:inset 0 1px 0 #b6c669}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #b6c669,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #b6c669,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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 div:after,#collapse-menu{color:#ece6f6}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#523f6d}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745;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-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#ece6f6}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#a3b745;border-color:#829237;-webkit-box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..f98d460f91 --- /dev/null +++ b/wp-admin/css/colors/ectoplasm/colors.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #523f6d; +} + +input[type=radio]:checked:before { + background: #523f6d; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #a3b745; + border-color: #829237; + color: white; + -webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #93a43e; + border-color: #727f30; + color: white; + -webkit-box-shadow: inset 0 1px 0 #b6c669; + box-shadow: inset 0 1px 0 #b6c669; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #829237; + border-color: #727f30; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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 { + color: #523f6d; +} + +.view-switch a:hover:before { + color: #d46f15; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-right-color: #413256; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #cbc5d3; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #a3b745; +} + +/* 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: #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 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: #a3b745; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #d46f15; +} + +#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: #413256; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #ece6f6; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #ece6f6; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #ece6f6; +} + +#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: #a3b745; + background: #413256; +} + +#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: #a3b745; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #ece6f6; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #a3b745; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #a3b745; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #a3b745; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #a3b745; +} + +.attachment.details .check { + background-color: #a3b745; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #a3b745; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #a3b745; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #a3b745; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #a3b745; +} + +/* 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: #a3b745; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #a3b745; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #a3b745; + 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: #a3b745; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #a3b745; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #a3b745; + border-color: #829237; + -webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #a3b745; +} diff --git a/wp-admin/css/colors/ectoplasm/colors.min.css b/wp-admin/css/colors/ectoplasm/colors.min.css new file mode 100644 index 0000000000..e98bf7bd99 --- /dev/null +++ b/wp-admin/css/colors/ectoplasm/colors.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#93a43e;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 1px 0 #b6c669;box-shadow:inset 0 1px 0 #b6c669}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #b6c669,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #b6c669,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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 div:after,#collapse-menu{color:#ece6f6}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#523f6d}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745;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-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#ece6f6}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#a3b745;border-color:#829237;-webkit-box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..8d14570770 --- /dev/null +++ b/wp-admin/css/colors/ectoplasm/colors.scss @@ -0,0 +1,8 @@ +$base-color: #523f6d; +$icon-color: #ece6f6; +$highlight-color: #a3b745; +$notification-color: #d46f15; + +$form-checked: $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 new file mode 100644 index 0000000000..c1ab81a436 --- /dev/null +++ b/wp-admin/css/colors/light/colors-rtl.css @@ -0,0 +1,562 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f5f5f5; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #04a4cc; +} + +input[type=radio]:checked:before { + background: #04a4cc; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #04a4cc; + border-color: #037c9a; + color: white; + -webkit-box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #0490b3; + border-color: #036881; + color: white; + -webkit-box-shadow: inset 0 1px 0 #09cafa; + box-shadow: inset 0 1px 0 #09cafa; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #09cafa, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #09cafa, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #037c9a; + border-color: #036881; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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 { + color: #e5e5e5; +} + +.view-switch a:hover:before { + color: #d64e07; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f5f5f5; + border-bottom-color: #f5f5f5; +} + +/* Admin Menu: submenu */ +#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 { + border-left-color: #fff; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #686868; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #04a4cc; +} + +/* 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: #333; +} + +#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: #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 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: #888; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #d64e07; +} + +#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: #333; + background: #fff; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #777; +} + +#collapse-menu:hover { + color: #333; +} + +#collapse-button div:after { + color: #999; +} + +#collapse-menu:hover #collapse-button div:after { + color: #555; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #999; +} + +#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: #04a4cc; + background: #fff; +} + +#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: #04a4cc; +} + +#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: #ccc; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #999; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #04a4cc; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #333; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #333; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #333; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #333; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #04a4cc; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #04a4cc; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #04a4cc; +} + +.attachment.details .check { + background-color: #04a4cc; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #04a4cc; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #04a4cc; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #04a4cc; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #04a4cc; +} + +/* 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: #04a4cc; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #04a4cc; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #888; + 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: #888; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #888; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #04a4cc; + border-color: #037c9a; + -webkit-box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #04a4cc; +} + +/* 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 */ +.theme-section.current, +.theme-filter.current { + border-bottom-color: #04a4cc; +} diff --git a/wp-admin/css/colors/light/colors-rtl.min.css b/wp-admin/css/colors/light/colors-rtl.min.css new file mode 100644 index 0000000000..8108994f23 --- /dev/null +++ b/wp-admin/css/colors/light/colors-rtl.min.css @@ -0,0 +1 @@ +html{background:#f5f5f5}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#0490b3;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 1px 0 #09cafa;box-shadow:inset 0 1px 0 #09cafa}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #09cafa,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #09cafa,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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}.theme-filter.current,.theme-section.current,.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}#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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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-menu{color:#777}#collapse-menu:hover,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#collapse-button div:after{color:#999}#collapse-menu:hover #collapse-button div:after{color:#555}#wpadminbar{color:#333;background:#e5e5e5}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#333;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc;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}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}#customize-theme-controls .widget-area-select .selected{background-color:#888;color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#999}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#04a4cc;border-color:#037c9a;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.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}.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} \ No newline at end of file diff --git a/wp-admin/css/colors/light/colors.css b/wp-admin/css/colors/light/colors.css new file mode 100644 index 0000000000..335e3f904b --- /dev/null +++ b/wp-admin/css/colors/light/colors.css @@ -0,0 +1,562 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f5f5f5; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #04a4cc; +} + +input[type=radio]:checked:before { + background: #04a4cc; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #04a4cc; + border-color: #037c9a; + color: white; + -webkit-box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #0490b3; + border-color: #036881; + color: white; + -webkit-box-shadow: inset 0 1px 0 #09cafa; + box-shadow: inset 0 1px 0 #09cafa; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #09cafa, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #09cafa, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #037c9a; + border-color: #036881; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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 { + color: #e5e5e5; +} + +.view-switch a:hover:before { + color: #d64e07; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f5f5f5; + border-bottom-color: #f5f5f5; +} + +/* Admin Menu: submenu */ +#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 { + border-right-color: #fff; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #686868; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #04a4cc; +} + +/* 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: #333; +} + +#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: #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 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: #888; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #d64e07; +} + +#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: #333; + background: #fff; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #777; +} + +#collapse-menu:hover { + color: #333; +} + +#collapse-button div:after { + color: #999; +} + +#collapse-menu:hover #collapse-button div:after { + color: #555; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #999; +} + +#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: #04a4cc; + background: #fff; +} + +#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: #04a4cc; +} + +#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: #ccc; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #999; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #04a4cc; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #333; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #333; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #333; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #333; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #04a4cc; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #04a4cc; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #04a4cc; +} + +.attachment.details .check { + background-color: #04a4cc; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #04a4cc; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #04a4cc; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #04a4cc; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #04a4cc; +} + +/* 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: #04a4cc; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #04a4cc; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #888; + 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: #888; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #888; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #04a4cc; + border-color: #037c9a; + -webkit-box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #04a4cc; +} + +/* 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 */ +.theme-section.current, +.theme-filter.current { + border-bottom-color: #04a4cc; +} diff --git a/wp-admin/css/colors/light/colors.min.css b/wp-admin/css/colors/light/colors.min.css new file mode 100644 index 0000000000..417b5b9716 --- /dev/null +++ b/wp-admin/css/colors/light/colors.min.css @@ -0,0 +1 @@ +html{background:#f5f5f5}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#0490b3;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 1px 0 #09cafa;box-shadow:inset 0 1px 0 #09cafa}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #09cafa,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #09cafa,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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}.theme-filter.current,.theme-section.current,.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}#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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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-menu{color:#777}#collapse-menu:hover,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#collapse-button div:after{color:#999}#collapse-menu:hover #collapse-button div:after{color:#555}#wpadminbar{color:#333;background:#e5e5e5}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#333;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc;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}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}#customize-theme-controls .widget-area-select .selected{background-color:#888;color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#999}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#04a4cc;border-color:#037c9a;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.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}.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} \ No newline at end of file diff --git a/wp-admin/css/colors/light/colors.scss b/wp-admin/css/colors/light/colors.scss new file mode 100644 index 0000000000..ab4230b9db --- /dev/null +++ b/wp-admin/css/colors/light/colors.scss @@ -0,0 +1,38 @@ +$base-color: #e5e5e5; +$icon-color: #999; +$text-color: #333; +$highlight-color: #04a4cc; +$notification-color: #d64e07; + +$body-background: #f5f5f5; + +$menu-highlight-text: #fff; +$menu-highlight-icon: #ccc; +$menu-highlight-background: #888; + +$menu-bubble-text: #fff; +$menu-avatar-frame: #aaa; +$menu-submenu-background: #fff; + +$menu-collapse-text: #777; +$menu-collapse-focus-icon: #555; + +@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 { + border-bottom-color: $highlight-color; +} diff --git a/wp-admin/css/colors/midnight/colors-rtl.css b/wp-admin/css/colors/midnight/colors-rtl.css new file mode 100644 index 0000000000..a54bf44328 --- /dev/null +++ b/wp-admin/css/colors/midnight/colors-rtl.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #e14d43; +} + +input[type=radio]:checked:before { + background: #e14d43; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #e14d43; + border-color: #d02c21; + color: white; + -webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #dd382d; + border-color: #ba281e; + color: white; + -webkit-box-shadow: inset 0 1px 0 #e8776f; + box-shadow: inset 0 1px 0 #e8776f; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #d02c21; + border-color: #ba281e; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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 { + color: #363b3f; +} + +.view-switch a:hover:before { + color: #69a8bb; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-left-color: #26292c; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #c3c4c5; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #e14d43; +} + +/* 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: #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 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: #e14d43; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #69a8bb; +} + +#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: #26292c; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #f1f2f3; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #f1f2f3; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #f1f2f3; +} + +#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: #e14d43; + background: #26292c; +} + +#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: #e14d43; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #f1f2f3; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #e14d43; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #e14d43; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #e14d43; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #e14d43; +} + +.attachment.details .check { + background-color: #e14d43; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #e14d43; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #e14d43; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #e14d43; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #e14d43; +} + +/* 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: #e14d43; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #e14d43; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #e14d43; + 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: #e14d43; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #e14d43; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #e14d43; + border-color: #d02c21; + -webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #e14d43; +} diff --git a/wp-admin/css/colors/midnight/colors-rtl.min.css b/wp-admin/css/colors/midnight/colors-rtl.min.css new file mode 100644 index 0000000000..b5acc563a6 --- /dev/null +++ b/wp-admin/css/colors/midnight/colors-rtl.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#dd382d;border-color:#ba281e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8776f;box-shadow:inset 0 1px 0 #e8776f}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e8776f,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e8776f,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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 div:after,#collapse-menu{color:#f1f2f3}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#363b3f}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43;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-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#e14d43;border-color:#d02c21;-webkit-box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..c9a0b8e375 --- /dev/null +++ b/wp-admin/css/colors/midnight/colors.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #e14d43; +} + +input[type=radio]:checked:before { + background: #e14d43; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #e14d43; + border-color: #d02c21; + color: white; + -webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #dd382d; + border-color: #ba281e; + color: white; + -webkit-box-shadow: inset 0 1px 0 #e8776f; + box-shadow: inset 0 1px 0 #e8776f; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #d02c21; + border-color: #ba281e; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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 { + color: #363b3f; +} + +.view-switch a:hover:before { + color: #69a8bb; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-right-color: #26292c; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #c3c4c5; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #e14d43; +} + +/* 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: #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 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: #e14d43; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #69a8bb; +} + +#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: #26292c; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #f1f2f3; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #f1f2f3; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #f1f2f3; +} + +#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: #e14d43; + background: #26292c; +} + +#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: #e14d43; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #f1f2f3; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #e14d43; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #e14d43; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #e14d43; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #e14d43; +} + +.attachment.details .check { + background-color: #e14d43; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #e14d43; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #e14d43; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #e14d43; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #e14d43; +} + +/* 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: #e14d43; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #e14d43; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #e14d43; + 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: #e14d43; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #e14d43; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #e14d43; + border-color: #d02c21; + -webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #e14d43; +} diff --git a/wp-admin/css/colors/midnight/colors.min.css b/wp-admin/css/colors/midnight/colors.min.css new file mode 100644 index 0000000000..23dac64c29 --- /dev/null +++ b/wp-admin/css/colors/midnight/colors.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#dd382d;border-color:#ba281e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8776f;box-shadow:inset 0 1px 0 #e8776f}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e8776f,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e8776f,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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 div:after,#collapse-menu{color:#f1f2f3}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#363b3f}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43;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-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#e14d43;border-color:#d02c21;-webkit-box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..591232b708 --- /dev/null +++ b/wp-admin/css/colors/midnight/colors.scss @@ -0,0 +1,5 @@ +$base-color: #363b3f; +$highlight-color: #e14d43; +$notification-color: #69a8bb; + +@import "../_admin.scss"; diff --git a/wp-admin/css/colors/ocean/colors-rtl.css b/wp-admin/css/colors/ocean/colors-rtl.css new file mode 100644 index 0000000000..cd056da494 --- /dev/null +++ b/wp-admin/css/colors/ocean/colors-rtl.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #738e96; +} + +input[type=radio]:checked:before { + background: #738e96; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #9ebaa0; + border-color: #80a583; + color: white; + -webkit-box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #8faf91; + border-color: #719a74; + color: white; + -webkit-box-shadow: inset 0 1px 0 #bccfbd; + box-shadow: inset 0 1px 0 #bccfbd; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #bccfbd, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #bccfbd, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #80a583; + border-color: #719a74; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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; +} + +.view-switch a.current:before { + color: #738e96; +} + +.view-switch a:hover:before { + color: #aa9d88; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-left-color: #627c83; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #d5dde0; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #9ebaa0; +} + +/* 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: #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 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: #9ebaa0; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #aa9d88; +} + +#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: #627c83; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #f2fcff; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #f2fcff; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #f2fcff; +} + +#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: #9ebaa0; + background: #627c83; +} + +#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: #9ebaa0; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #f2fcff; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #9ebaa0; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #9ebaa0; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #9ebaa0; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #9ebaa0; +} + +.attachment.details .check { + background-color: #9ebaa0; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #9ebaa0; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #9ebaa0; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #9ebaa0; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #9ebaa0; +} + +/* 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: #9ebaa0; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #9ebaa0; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #9ebaa0; + 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: #9ebaa0; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #9ebaa0; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #9ebaa0; + border-color: #80a583; + -webkit-box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #9ebaa0; +} diff --git a/wp-admin/css/colors/ocean/colors-rtl.min.css b/wp-admin/css/colors/ocean/colors-rtl.min.css new file mode 100644 index 0000000000..223f6a64db --- /dev/null +++ b/wp-admin/css/colors/ocean/colors-rtl.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#8faf91;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bccfbd;box-shadow:inset 0 1px 0 #bccfbd}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #bccfbd,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #bccfbd,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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 div:after,#collapse-menu{color:#f2fcff}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#738e96}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0;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-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f2fcff}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#9ebaa0;border-color:#80a583;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..0ab239dfdd --- /dev/null +++ b/wp-admin/css/colors/ocean/colors.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #738e96; +} + +input[type=radio]:checked:before { + background: #738e96; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #9ebaa0; + border-color: #80a583; + color: white; + -webkit-box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #8faf91; + border-color: #719a74; + color: white; + -webkit-box-shadow: inset 0 1px 0 #bccfbd; + box-shadow: inset 0 1px 0 #bccfbd; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #bccfbd, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #bccfbd, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #80a583; + border-color: #719a74; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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; +} + +.view-switch a.current:before { + color: #738e96; +} + +.view-switch a:hover:before { + color: #aa9d88; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-right-color: #627c83; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #d5dde0; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #9ebaa0; +} + +/* 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: #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 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: #9ebaa0; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #aa9d88; +} + +#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: #627c83; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #f2fcff; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #f2fcff; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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:before, +#wpadminbar .ab-item:after { + color: #f2fcff; +} + +#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: #9ebaa0; + background: #627c83; +} + +#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: #9ebaa0; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #f2fcff; +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #9ebaa0; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* Admin Bar: search */ +#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 #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #9ebaa0; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #9ebaa0; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #9ebaa0; +} + +.attachment.details .check { + background-color: #9ebaa0; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #9ebaa0; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #9ebaa0; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #9ebaa0; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #9ebaa0; +} + +/* 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: #9ebaa0; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #9ebaa0; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #9ebaa0; + 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: #9ebaa0; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #9ebaa0; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #9ebaa0; + border-color: #80a583; + -webkit-box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #9ebaa0; +} diff --git a/wp-admin/css/colors/ocean/colors.min.css b/wp-admin/css/colors/ocean/colors.min.css new file mode 100644 index 0000000000..c3d5eec01c --- /dev/null +++ b/wp-admin/css/colors/ocean/colors.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#8faf91;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bccfbd;box-shadow:inset 0 1px 0 #bccfbd}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #bccfbd,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #bccfbd,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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 div:after,#collapse-menu{color:#f2fcff}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#738e96}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0;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-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f2fcff}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#9ebaa0;border-color:#80a583;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..d52339c6fe --- /dev/null +++ b/wp-admin/css/colors/ocean/colors.scss @@ -0,0 +1,8 @@ +$base-color: #738e96; +$icon-color: #f2fcff; +$highlight-color: #9ebaa0; +$notification-color: #aa9d88; + +$form-checked: $base-color; + +@import "../_admin.scss"; diff --git a/wp-admin/css/colors/sunrise/colors-rtl.css b/wp-admin/css/colors/sunrise/colors-rtl.css new file mode 100644 index 0000000000..cd774e3d83 --- /dev/null +++ b/wp-admin/css/colors/sunrise/colors-rtl.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #dd823b; +} + +input[type=radio]:checked:before { + background: #dd823b; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #dd823b; + border-color: #c36922; + color: white; + -webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #d97426; + border-color: #ad5d1e; + color: white; + -webkit-box-shadow: inset 0 1px 0 #e59e66; + box-shadow: inset 0 1px 0 #e59e66; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #c36922; + border-color: #ad5d1e; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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 { + color: #cf4944; +} + +.view-switch a:hover:before { + color: #ccaf0b; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-left-color: #be3631; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #f1c8c7; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #f7e3d3; +} + +/* 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: #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 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: #dd823b; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #ccaf0b; +} + +#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: #be3631; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #f3f1f1; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #f3f1f1; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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: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: #f7e3d3; + background: #be3631; +} + +#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: #f7e3d3; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #f7e3d3; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* 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: #d66560; +} + +#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #dd823b; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #dd823b; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #dd823b; +} + +.attachment.details .check { + background-color: #dd823b; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #dd823b; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #dd823b; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #dd823b; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #dd823b; +} + +/* 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: #dd823b; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #dd823b; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #dd823b; + 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: #dd823b; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #dd823b; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #dd823b; + border-color: #c36922; + -webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #dd823b; +} diff --git a/wp-admin/css/colors/sunrise/colors-rtl.min.css b/wp-admin/css/colors/sunrise/colors-rtl.min.css new file mode 100644 index 0000000000..ab5d2553b0 --- /dev/null +++ b/wp-admin/css/colors/sunrise/colors-rtl.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#d97426;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e59e66;box-shadow:inset 0 1px 0 #e59e66}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e59e66,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e59e66,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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 div:after,#collapse-menu{color:#f3f1f1}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#cf4944}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b;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-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#dd823b;border-color:#c36922;-webkit-box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..6828a96021 --- /dev/null +++ b/wp-admin/css/colors/sunrise/colors.css @@ -0,0 +1,544 @@ +/* + * Button mixin- creates 3d-ish button effect with correct + * highlights/shadows, based on a base color. + */ +html { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} + +a:hover, +a:active, +a:focus { + color: #0096dd; +} + +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: #0096dd; +} + +/* Forms */ +input[type=checkbox]:checked:before { + color: #dd823b; +} + +input[type=radio]:checked:before { + background: #dd823b; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #0096dd; +} + +/* Core UI */ +.wp-core-ui .button-primary { + background: #dd823b; + border-color: #c36922; + color: white; + -webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.wp-core-ui .button-primary:hover, +.wp-core-ui .button-primary:focus { + background: #d97426; + border-color: #ad5d1e; + color: white; + -webkit-box-shadow: inset 0 1px 0 #e59e66; + box-shadow: inset 0 1px 0 #e59e66; +} + +.wp-core-ui .button-primary:focus { + -webkit-box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.wp-core-ui .button-primary:active { + background: #c36922; + border-color: #ad5d1e; + color: white; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); +} + +.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 .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; +} + +/* List tables */ +.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 { + color: #cf4944; +} + +.view-switch a:hover:before { + color: #ccaf0b; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + 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; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap h2 .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, +.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 { + border-right-color: #be3631; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #f1c8c7; +} + +#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; +} + +#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, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #f7e3d3; +} + +/* 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: #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 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: #dd823b; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current: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:hover div.wp-menu-image:before, +#adminmenu li a:focus 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 .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #ccaf0b; +} + +#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: #be3631; +} + +/* Admin Menu: collapse button */ +#collapse-menu { + color: #f3f1f1; +} + +#collapse-menu:hover { + color: #fff; +} + +#collapse-button div:after { + color: #f3f1f1; +} + +#collapse-menu:hover #collapse-button div:after { + color: #fff; +} + +/* Admin Bar */ +#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: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: #f7e3d3; + background: #be3631; +} + +#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: #f7e3d3; +} + +#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: #fff; +} + +/* Admin Bar: submenu */ +#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 .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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #f7e3d3; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#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; +} + +/* 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: #d66560; +} + +#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #fff; + opacity: 0.7; +} + +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #fff; + opacity: 0.7; +} + +/* Admin Bar: my account */ +#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; +} + +/* Pointers */ +.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 */ +.media-item .bar, +.media-progress-bar div { + background-color: #dd823b; +} + +.details.attachment { + -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #dd823b; + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #dd823b; +} + +.attachment.details .check { + background-color: #dd823b; + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #dd823b; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #dd823b; +} + +.media-selection .attachment.selection.details .thumbnail { + -webkit-box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #dd823b; + box-shadow: 0px 0px 0px 1px #fff, 0px 0px 0px 3px #dd823b; +} + +/* 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: #dd823b; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #dd823b; +} + +.theme-section.current, +.theme-filter.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:hover, +body.more-filters-opened .more-filters:focus { + background-color: #dd823b; + 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: #dd823b; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Customize */ +#customize-theme-controls .widget-area-select .selected { + background-color: #dd823b; + color: #fff; +} + +/* jQuery UI Slider */ +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #dd823b; + border-color: #c36922; + -webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); +} + +/* Responsive Component */ +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; +} + +/* 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: #dd823b; +} diff --git a/wp-admin/css/colors/sunrise/colors.min.css b/wp-admin/css/colors/sunrise/colors.min.css new file mode 100644 index 0000000000..7f60455bcc --- /dev/null +++ b/wp-admin/css/colors/sunrise/colors.min.css @@ -0,0 +1 @@ +html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,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;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#d97426;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e59e66;box-shadow:inset 0 1px 0 #e59e66}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e59e66,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e59e66,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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 .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-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#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 div:after,#collapse-menu{color:#f3f1f1}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#cf4944}#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 .menupop .menupop>.ab-item:hover:before,#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 li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused: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.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item: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 #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.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{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b;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-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,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:before{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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#dd823b;border-color:#c36922;-webkit-box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)}.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}.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 new file mode 100644 index 0000000000..5dd8d82fc1 --- /dev/null +++ b/wp-admin/css/colors/sunrise/colors.scss @@ -0,0 +1,6 @@ +$base-color: #cf4944; +$highlight-color: #dd823b; +$notification-color: #ccaf0b; +$menu-submenu-focus-text: lighten( $highlight-color, 35% ); + +@import "../_admin.scss"; diff --git a/wp-admin/css/common-rtl.css b/wp-admin/css/common-rtl.css new file mode 100644 index 0000000000..b009875106 --- /dev/null +++ b/wp-admin/css/common-rtl.css @@ -0,0 +1,3453 @@ +/* 2 column liquid layout */ +#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 2 column liquid layout */ + +.inner-sidebar { + float: left; + clear: left; + display: none; + width: 281px; + position: relative; +} + +.columns-2 .inner-sidebar { + margin-left: auto; + width: 286px; + display: block; +} + +.inner-sidebar #side-sortables, +.columns-2 .inner-sidebar #side-sortables { + min-height: 300px; + width: 280px; + padding: 0; +} + +.has-right-sidebar .inner-sidebar { + display: block; +} + +.has-right-sidebar #post-body { + float: right; + clear: right; + width: 100%; + margin-left: -2000px; +} + +.has-right-sidebar #post-body-content { + margin-left: 300px; + float: none; + width: auto; +} + +/* 2 columns main area */ + +#col-container, +#col-left, +#col-right { + overflow: hidden; + padding: 0; + margin: 0; +} + +#col-left { + width: 35%; +} + +#col-right { + float: left; + clear: left; + width: 65%; +} + +.col-wrap { + padding: 0 7px; +} + +/* utility classes */ +.alignleft { + float: right; +} + +.alignright { + float: left; +} + +.textleft { + text-align: right; +} + +.textright { + text-align: left; +} + +.clear { + clear: both; +} + +/* Hide visually but not from screen readers */ +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + margin: -1px; + padding: 0; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; + word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */ +} + +.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: #21759b; + z-index: 100000; + line-height: normal; + -webkit-box-shadow: 0 0 2px 2px rgba(0,0,0,.6); + box-shadow: 0 0 2px 2px rgba(0,0,0,.6); + text-decoration: none; + outline: none; +} + +.hidden, +.js .closed .inside, +.js .hide-if-js, +.no-js .hide-if-no-js, +.js.wp-core-ui .hide-if-js, +.js .wp-core-ui .hide-if-js, +.no-js.wp-core-ui .hide-if-no-js, +.no-js .wp-core-ui .hide-if-no-js { + display: none; +} + +/* @todo: Take a second look. Large chunks of shared color, from the colors.css merge */ +.widget-top, +.menu-item-handle, +.widget-inside, +#menu-settings-column .accordion-container, +#menu-management .menu-edit, +.manage-menus, +table.widefat, +.stuffbox, +p.popular-tags, +.widgets-holder-wrap, +.wp-editor-container, +.popular-tags, +.feature-filter, +.imgedit-group, +.comment-ays { + border: 1px solid #e5e5e5; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); +} + +table.widefat, +.wp-editor-container, +.stuffbox, +p.popular-tags, +.widgets-holder-wrap, +.popular-tags, +.feature-filter, +.imgedit-group, +.comment-ays { + background: #fff; +} + +/* general */ +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +html { + background: #f1f1f1; +} + +body { + color: #444; + font-family: "Open Sans", 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; + -webkit-transition-property: border, background, color; + transition-property: border, background, color; + -webkit-transition-duration: .05s; + transition-duration: .05s; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +a, +div { + outline: 0; +} + +a:hover, +a:active { + color: #00a0d2; +} + +a:focus, +a:focus .media-icon img { + color: #124964; + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + 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 { + -webkit-box-shadow: none; + box-shadow: none; + outline: none; +} + +blockquote, +q { + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; + content: none; +} + +p { + font-size: 13px; + line-height: 1.5; + margin: 1em 0; +} + +blockquote { + margin: 1em; +} + +li, +dd { + margin-bottom: 6px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + display: block; + font-weight: 600; +} + +h1 { + font-size: 2em; + margin: .67em 0; +} + +.wrap > h1, +h2 { + color: #23282d; + font-size: 1.5em; + margin: .83em 0; + font-weight: 400; +} + +h3 { + color: #23282d; + font-size: 1.3em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +ul, +ol { + 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; +} + +ul.ul-disc, +ul.ul-square, +ol.ol-decimal { + margin-right: 1.8em; +} + +ul.ul-disc > li, +ul.ul-square > li, +ol.ol-decimal > li { + margin: 0 0 0.5em; +} + +/* rtl:ignore */ +.ltr { + direction: ltr; +} + +/* rtl:ignore */ +.code, +code { + font-family: Consolas, Monaco, monospace; + direction: ltr; + unicode-bidi: embed; +} + +kbd, +code { + padding: 3px 5px 2px 5px; + margin: 0 1px; + background: #eaeaea; + background: rgba(0,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: #999; + font-weight: normal; +} + +.subsubsub a.current { + font-weight: 600; + border: none; +} + +.subsubsub li { + display: inline-block; + margin: 0; + padding: 0; + white-space: nowrap; +} + +/* .widefat - main style for tables */ +.widefat { + border-spacing: 0; + width: 100%; + clear: both; + margin: 0; +} + +.widefat * { + word-wrap: break-word; +} + +.widefat a { + text-decoration: none; +} + +.widefat td, +.widefat th { + padding: 8px 10px; +} + +.widefat thead th, +.widefat thead td { + border-bottom: 1px solid #e1e1e1; +} + +.widefat tfoot th, +.widefat tfoot td { + 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 p, +.widefat td ol, +.widefat td ul { + font-size: 13px; + line-height: 1.5em; +} + +.widefat th, +.widefat thead td, +.widefat tfoot td { + text-align: right; + line-height: 1.3em; + font-size: 14px; +} + +.widefat th input, +.widefat thead td input, +.widefat tfoot 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 th input[type=checkbox], +.widefat thead td input[type=checkbox], +.widefat tfoot td input[type=checkbox] { + margin-top: -1px; +} + +.widefat tbody th.check-column { + padding: 9px 0 22px; +} + +.widefat thead td.check-column, +.widefat tbody th.check-column, +.widefat tfoot td.check-column { + padding: 11px 3px 0 0; +} + +.widefat thead td.check-column, +.widefat tfoot td.check-column { + padding-top: 10px; +} + +.update-php div.updated, +.update-php div.error { + margin-right: 0; +} + +.no-js .widefat thead .check-column input, +.no-js .widefat tfoot .check-column input { + display: none; +} + +.widefat .num, +.column-comments, +.column-links, +.column-posts { + text-align: center; +} + +.widefat th#comments { + vertical-align: middle; +} + +.wrap { + margin: 10px 2px 0 20px; +} + +.wrap h1, +.wrap h2, +.subtitle { + font-weight: normal; + margin: 0; +} + +.wrap h1, +.wrap h2 { + font-size: 23px; + font-weight: 400; + padding: 9px 0 4px 15px; + line-height: 29px; +} + +.subtitle { + color: #777; + font-size: 14px; + padding-right: 25px; +} + +.wrap .add-new-h2, /* deprecated */ +.wrap .add-new-h2:active, /* deprecated */ +.wrap .page-title-action, +.wrap .page-title-action:active { + margin-right: 4px; + padding: 4px 8px; + position: relative; + top: -3px; + text-decoration: none; + border: none; + -webkit-border-radius: 2px; + border-radius: 2px; + background: #e0e0e0; + text-shadow: none; + font-weight: 600; + font-size: 13px; +} + +.wrap .add-new-h2:hover, /* deprecated */ +.wrap .page-title-action:hover { + background: #00a0d2; + color: #fff; +} + +.wrap h1.long-header { + padding-left: 0; +} + +.wp-dialog { + background-color: #fff; +} + +.widgets-chooser ul, +#widgets-left .widget-in-question .widget-top, +#available-widgets .widget-top:hover, +div#widgets-right .widget-top:hover, +#widgets-left .widget-top:hover { + border-color: #999; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.1); + box-shadow: 0 1px 2px rgba(0,0,0,0.1); +} + +.sorthelper { + background-color: #ccf3fa; +} + +.ac_match, +.subsubsub a.current { + color: #000; +} + +.striped > tbody > :nth-child(odd), +ul.striped > :nth-child(odd), +.alternate { + background-color: #f9f9f9; +} + +.bar { + background-color: #e8e8e8; + border-left-color: #99d; +} + +.media-upload-form label.form-help, +td.help { + color: #9a9a9a; +} + +/* Helper classes for plugins to leverage the active WordPress color scheme */ + +.highlight { + background-color: #e4f2fd; + color: #000; +} + +.wp-ui-primary { + color: #fff; + background-color: #32373c; +} +.wp-ui-text-primary { + color: #32373c; +} + +.wp-ui-highlight { + color: white; + 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: #999; +} + +/* For emoji replacement images */ +img.emoji { + display: inline !important; + border: none !important; + height: 1em !important; + width: 1em !important; + margin: 0 .07em !important; + vertical-align: -0.1em !important; + background: none !important; + padding: 0 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +/*------------------------------------------------------------------------------ + 1.0 - Text Styles +------------------------------------------------------------------------------*/ + +.widget .widget-top, +.postbox .hndle, +.stuffbox .hndle, +.control-section .accordion-section-title, +.sidebar-name, +#nav-menu-header, +#nav-menu-footer, +.menu-item-handle, +.checkbox, +.side-info, +#your-profile #rich_editing, +.widefat thead th, +.widefat thead td, +.widefat tfoot th, +.widefat tfoot td { + line-height: 1.4em; +} + +.widget .widget-top, +.menu-item-handle { + 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; +} + +/* @todo can we combine these into a class or use an existing dashicon one? */ +.welcome-panel .welcome-panel-close:before, +.tagchecklist span a:before, +#bulk-titles div a:before, +.notice-dismiss:before { + background: none; + color: #b4b9be; + 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; +} + +.tagchecklist span a:before, +#bulk-titles div a:before { + margin: 1px 0; +} + +.welcome-panel .welcome-panel-close:hover:before, +.welcome-panel .welcome-panel-close:focus:before, +.tagchecklist span a:hover:before, +#bulk-titles div a:hover:before { + color: #c00; +} + +.key-labels label { + line-height: 24px; +} + +strong, b { + font-weight: 600; +} + +.pre { + /* https://developer.mozilla.org/en-US/docs/CSS/white-space */ + white-space: pre-wrap; /* css-3 */ + word-wrap: break-word; /* IE 5.5 - 7 */ +} + +.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; +} + +.row-actions span.delete a, +.row-actions span.trash a, +.row-actions span.spam a, +.plugins a.delete, +#all-plugins-table .plugins a.delete, +#search-plugins-table .plugins a.delete, +.submitbox .submitdelete, +#media-items a.delete, +#media-items a.delete-permanently, +#nav-menu-footer .menu-delete { + color: #a00; +} + +abbr.required, +.file-error, +.widget-control-remove:hover, +.row-actions .delete a:hover, +.row-actions .trash a:hover, +.row-actions .spam a:hover, +.plugins a.delete:hover, +#all-plugins-table .plugins a.delete:hover, +#search-plugins-table .plugins a.delete:hover, +.submitbox .submitdelete:hover, +#media-items a.delete:hover, +#media-items a.delete-permanently:hover, +#nav-menu-footer .menu-delete:hover { + color: #f00; + text-decoration: none; + border: none; +} + +/*------------------------------------------------------------------------------ + 3.0 - Actions +------------------------------------------------------------------------------*/ + +#major-publishing-actions { + padding: 10px; + clear: both; + border-top: 1px solid #ddd; + background: #f5f5f5; +} + +#delete-action { + line-height: 28px; + vertical-align: middle; + text-align: right; + float: right; +} + +#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; +} + +#minor-publishing-actions { + padding: 10px 10px 0 10px; + text-align: left; +} + +#save-post { + float: right; +} + +.preview { + float: left; +} + +#sticky-span { + margin-right: 18px; +} + +.side-info { + margin: 0; + padding: 4px; + font-size: 11px; +} + +.side-info h5 { + padding-bottom: 7px; + font-size: 14px; + margin: 12px 2px 5px; + border-bottom: 1px solid #dadada; +} + +.side-info ul { + margin: 0; + padding-right: 18px; + list-style: square; + color: #666; +} + +.approve, +.unapproved .unapprove { + display: none; +} + +.unapproved .approve, +.spam .approve, +.trash .approve { + display: inline; +} + +td.action-links, +th.action-links { + text-align: left; +} + +/* Filter bar */ +.wp-filter { + display: inline-block; + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin: 12px 0 25px; + padding: 0 10px; + width: 100%; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,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; +} + +.title-count, +.filter-count .count { + display: inline-block; + position: relative; + top: -1px; + padding: 4px 10px; + -webkit-border-radius: 30px; + border-radius: 30px; + background: #777; + color: #fff; + font-size: 14px; + font-weight: 600; +} + +/* not a part of filter bar, but derived from it, so here for now */ +.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 { + -webkit-box-shadow: none; + box-shadow: none; + 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: #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 .drawer-toggle { + display: inline-block; + margin: 0 10px; + padding: 4px 6px; + color: #666; + cursor: pointer; +} + +.wp-filter .drawer-toggle:before { + display: inline-block; + vertical-align: top; + content: "\f111"; + margin: 0 0 0 5px; + width: 16px; + height: 16px; + color: #777; + -webkit-transition: color .1s ease-in 0; + transition: color .1s ease-in 0; + font-family: "dashicons"; + font-size: 16px; + line-height: 1; + text-align: center; + text-decoration: inherit; + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; +} + +.wp-filter .drawer-toggle:hover, +.wp-filter .drawer-toggle:hover:before { + color: #00a0d2; +} + +.wp-filter .drawer-toggle.current:before { + color: #fff; +} + +.filter-drawer { + display: none; + margin: 0 -20px; + padding: 20px; + border-top: 1px solid #eee; + background: #fafafa; +} + +.show-filters .filter-drawer { + display: block; + overflow: hidden; + width: 100%; +} + +.show-filters .wp-filter .drawer-toggle:hover, +.show-filters .wp-filter .drawer-toggle:focus { + background: rgb(46, 162, 204); +} + +.show-filters .filter-links a.current { + border-bottom: none; +} + +.show-filters .wp-filter .drawer-toggle { + -webkit-border-radius: 2px; + border-radius: 2px; + border: none; + background: #777; + color: #fff; +} + +.show-filters .wp-filter .drawer-toggle:before { + color: #fff; +} + +.filter-group { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: right; + margin: 0 0 0 1%; + padding: 10px; + width: 24%; + background: #fff; + border: 1px solid #e5e5e5; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); +} + +.filter-group h4 { + position: relative; + margin: 0; +} + +.filter-drawer ol { + margin: 20px 0 0; + list-style-type: none; + font-size: 12px; +} + +.filter-drawer li { + display: inline-block; + vertical-align: top; + margin: 5px 0; + padding-left: 25px; + width: 160px; + list-style-type: none; +} + +.filter-drawer .buttons { + margin-bottom: 20px; +} + +.filter-drawer .buttons .button span { + display: inline-block; + opacity: 0.8; + font-size: 12px; + text-indent: 10px; +} + +.wp-filter .button.clear-filters { + display: none; + margin-right: 10px; +} + +.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; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); + background: #fff; + font-size: 11px; +} + +.filters-applied .filter-group, +.filters-applied .filter-drawer .buttons, +.filters-applied .filter-drawer br { + display: none !important; +} + +.filters-applied .filtered-by { + display: block; +} + +.filters-applied .filter-drawer { + padding: 20px; +} + +.show-filters .content-filterable, +.show-filters.filters-applied.loading-content .content-filterable, +.loading-content .content-filterable, +.error .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; /* Remove float from media-views.css */ + 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%; + } +} + +/*------------------------------------------------------------------------------ + 4.0 - Notifications +------------------------------------------------------------------------------*/ + +.notice, +div.updated, +div.error { + background: #fff; + border-right: 4px solid #fff; + -webkit-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 15px 2px; + padding: 1px 12px; +} + +.notice p, +div.updated p, +div.error p, +.form-table td .notice p { + margin: 0.5em 0; + padding: 2px; +} + +.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: none; + color: #b4b9be; + cursor: pointer; +} + +.notice-dismiss:hover:before, +.notice-dismiss:active:before, +.notice-dismiss:focus:before { + color: #c00; +} + +.notice-dismiss:focus { + outline: none; + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .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-color: #7ad03a; +} + +.notice-warning { + border-color: #ffba00; +} + +.notice-error, +div.error { + border-color: #dd3d36; +} + +.notice-info { + border-color: #00a0d2; +} + +.wrap .notice, +.wrap div.updated, +.wrap div.error, +.media-upload-form .notice, +.media-upload-form div.error { + margin: 5px 0 15px; +} + +#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; + -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); +} + +.update-message { + color: #000; +} + +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; +} + +.update-php .spinner { + float: none; + margin: -4px 0; +} + +#ajax-loading, +.ajax-loading, +.ajax-feedback, +.imgedit-wait-spin, +.list-ajax-loading { /* deprecated */ + visibility: hidden; +} + +#ajax-response.alignleft { + margin-right: 2em; +} + +/* @todo: this does not need its own section anymore */ +/*------------------------------------------------------------------------------ + 6.0 - Admin Header +------------------------------------------------------------------------------*/ +#adminmenu a, +#taglist a, +#catlist a { + text-decoration: none; +} + +/*------------------------------------------------------------------------------ + 6.1 - Screen Options Tabs +------------------------------------------------------------------------------*/ + +#screen-options-wrap, +#contextual-help-wrap { + margin: 0; + padding: 8px 20px 12px; + position: relative; +} + +#contextual-help-wrap { + overflow: auto; + margin-right: 0 !important; +} + +#screen-meta .screen-reader-text { + visibility: hidden; +} + +#screen-meta-links { + margin: 0 0 0 20px; +} + +/* screen options and help tabs revert */ +#screen-meta { + display: none; + margin: 0 0px -1px 20px; + position: relative; + background-color: #fff; + border: 1px solid #ddd; + border-top: none; + -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.025); + box-shadow: 0 1px 0 rgba(0,0,0,.025); +} + +#screen-options-link-wrap, +#contextual-help-link-wrap { + float: left; + height: 28px; + margin: 0 6px 0 0; + border: 1px solid #ddd; + border-top: none; + background: #fff; + -webkit-box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); + box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); +} + +#screen-meta-links .screen-meta-toggle { + position: relative; + top: 0; +} + +#screen-meta-links .show-settings { + border: 0; + background: none; + -webkit-border-radius: 0; + border-radius: 0; + color: #777; + line-height: 1.7; + padding: 3px 16px 3px 6px; +} + +#screen-meta-links .show-settings:hover, +#screen-meta-links .show-settings:active, +#screen-meta-links .show-settings:focus { + color: #32373c; +} + +#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: #b4b9be; +} + +#screen-meta-links .screen-meta-active:after { + content: '\f142'; +} + +/* end screen options and help tabs */ + +.toggle-arrow { + background-repeat: no-repeat; + background-position: top left; + background-color: transparent; + height: 22px; + line-height: 22px; + display: block; +} + +.toggle-arrow-active { + background-position: bottom left; +} + +#screen-options-wrap h5, +#contextual-help-wrap h5 { + margin: 8px 0; + font-size: 13px; +} + +.metabox-prefs label { + display: inline-block; + padding-left: 15px; + line-height: 30px; +} + +.metabox-prefs label input[type=checkbox] { + margin-top: -4px; + margin-left: 6px; +} + +.metabox-prefs label input { + margin: 0 2px 0 5px; +} + +.metabox-prefs .columns-prefs label input { + margin: 0 2px; +} + +.metabox-prefs label a { + display: none; +} + +.metabox-prefs .screen-options { + padding-top: 10px; +} + +.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; +} + +/*------------------------------------------------------------------------------ + 6.2 - Help Menu +------------------------------------------------------------------------------*/ + +#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; + -webkit-border-bottom-left-radius: 2px; + 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; + -webkit-box-shadow: 0 2px 0 rgba(0,0,0,0.02), 0 1px 0 rgba(0,0,0,0.02); + 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: #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; +} + +/*------------------------------------------------------------------------------ + 8.0 - Layout Blocks +------------------------------------------------------------------------------*/ + +html.wp-toolbar { + padding-top: 32px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.widefat th, +.widefat td { + color: #555; +} + +.widefat th, +.widefat thead td, +.widefat tfoot td { + font-weight: normal; +} + +.widefat thead tr th, +.widefat thead tr td, +.widefat tfoot tr th, +.widefat tfoot tr td { + color: #32373c; +} + +.widefat td p { + margin: 2px 0 0.8em; +} + +.widefat p, +.widefat ol, +.widefat ul { + color: #32373c; +} + +.widefat .column-comment p { + margin: 0.6em 0; +} + +/* Screens with postboxes */ +.postbox-container { + float: right; +} + +.postbox-container .meta-box-sortables { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#wpbody-content .metabox-holder { + padding-top: 10px; +} + +.metabox-holder .postbox-container .empty-container { + border: 3px dashed #b4b9be; + height: 250px; +} + +.metabox-holder.columns-1 .postbox-container .empty-container, +.columns-2 #postbox-container-3 .empty-container, +.columns-2 #postbox-container-4 .empty-container, +.columns-3 #postbox-container-4 .empty-container { + border: 0 none; + height: 0; + min-height: 0; +} + +#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; +} + +/* one column on the dash */ +@media only screen and (max-width: 799px) { + #wpbody-content .metabox-holder .postbox-container .empty-container { + border: 0 none; + height: 0; + min-height: 0; + } +} + +.js .widget .widget-top, +.js .postbox .hndle { + cursor: move; +} + +.hndle a { + font-size: 11px; + font-weight: normal; +} + +.postbox .handlediv { + float: left; + width: 27px; + height: 30px; +} + +.js .postbox .handlediv { + cursor: pointer; +} + +.sortable-placeholder { + border: 1px dashed #b4b9be; + margin-bottom: 20px; +} + +.postbox, +.stuffbox { + margin-bottom: 20px; + padding: 0; + line-height: 1; +} + +/* user-select is not a part of the CSS standard - may change behavior in the future */ +.postbox .hndle, +.stuffbox .hndle { + -webkit-user-select: none; + -moz-user-select: none; + -ms-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; + -webkit-box-shadow: none; + box-shadow: none; +} + +.postbox table.form-table { + margin-bottom: 0; +} + +.postbox table.widefat { + -webkit-box-shadow: none; + box-shadow: none; +} + +.temp-border { + border: 1px dotted #ccc; +} + +.columns-prefs label { + padding: 0 5px; +} + +/* @todo: what is this doing here */ +#dashboard_right_now .versions .b, +#post-status-display, +#post-visibility-display, +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover, +.media-item .percent, +.plugins .name, +#pass-strength-result.strong, +#pass-strength-result.short, +#ed_reply_toolbar #ed_reply_strong, +.item-controls .item-order a, +.feature-filter .feature-name { + font-weight: 600; +} + +/*------------------------------------------------------------------------------ + 21.0 - Admin Footer +------------------------------------------------------------------------------*/ + +#wpfooter { + position: absolute; + bottom: 0; + right: 0; + left: 0; + padding: 10px 20px; + color: #777; +} + +#wpfooter p { + font-size: 13px; + margin: 0; + line-height: 20px; +} + +#footer-thankyou { + font-style: italic; +} + +#wpfooter a { + text-decoration: none; +} + +#wpfooter a:hover { + text-decoration: underline; +} + +/*------------------------------------------------------------------------------ + 25.0 - Tabbed Admin Screen Interface (Experimental) +------------------------------------------------------------------------------*/ + +.nav-tab { + border: 1px solid #ccc; + border-bottom: none; + background: #e4e4e4; + color: #555; + font-size: 12px; + line-height: 16px; + display: inline-block; + padding: 4px 14px 6px; + text-decoration: none; + margin: -4px 0 -1px 4px; +} + +.nav-tab:hover { + background-color: #fff; + color: #464646; +} + +.nav-tab-active { + color: #464646; +} + +.nav-tab-active, +.nav-tab-active:hover { + border-bottom: 1px solid #f1f1f1; + background: #f1f1f1; + color: #000; +} + +h1.nav-tab-wrapper, +h2.nav-tab-wrapper, +h3.nav-tab-wrapper { + border-bottom: 1px solid #ccc; + padding-bottom: 0; + padding-right: 10px; +} + +h1 .nav-tab, +h2 .nav-tab { + padding: 6px 10px; + font-weight: bold; + font-size: 15px; + line-height: 24px; +} + + +/*------------------------------------------------------------------------------ + 26.0 - Misc +------------------------------------------------------------------------------*/ + +.spinner { + background: url(../images/spinner.gif) no-repeat; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + display: inline-block; + visibility: hidden; + float: left; + vertical-align: middle; + opacity: 0.7; + filter: alpha(opacity=70); + width: 20px; + height: 20px; + margin: 4px 10px 0; +} + +.spinner.is-active { + visibility: visible; +} + +#template div { + margin-left: 190px; +} + +.metabox-holder h3 { + font-size: 14px; + padding: 8px 12px; + margin: 0; + line-height: 1.4; +} + +#templateside ul li a { + text-decoration: none; +} + +.plugin-install #description, +.plugin-install-network #description { + width: 60%; +} + +table .vers, +table .column-visible, +table .column-rating { + text-align: right; +} + +.attention, +.error-message { + color: red; + font-weight: 600; +} + +/* Scrollbar fix for bulk upgrade iframe */ +body.iframe { + height: 98%; +} + +/* Upgrader styles, Specific to Language Packs */ +.lp-show-latest p { + display: none; +} +.lp-show-latest p:last-child, +.lp-show-latest .lp-error p { + display: block; +} + +/* - Only used once or twice in all of WP - deprecate for global style +------------------------------------------------------------------------------*/ +.media-icon { + width: 62px; /* icon + border */ + text-align: center; +} + +.media-icon img { + border: 1px solid #e7e7e7; + border: 1px solid rgba(0, 0, 0, 0.07); +} + +#howto { + font-size: 11px; + margin: 0 5px; + display: block; +} + +.importers td { + padding-left: 14px; +} + +.importers { + font-size: 16px; + width: auto; +} + +#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 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; +} + +/* - Used - but could/should be deprecated with a CSS reset +------------------------------------------------------------------------------*/ +.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; +} + +/* Star Ratings - Back-compat for pre-3.8 */ +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: right; +} + +/* Star Ratings */ +.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: normal; + font-style: normal; + vertical-align: top; + -webkit-transition: color .1s ease-in 0; + 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 { + -webkit-transform: rotateY(180deg); + -ms-transform: rotateY(180deg); + transform: rotateY(180deg); +} + +.star-rating .star-empty:before { + content:'\f154'; +} + +div.action-links { + font-weight: normal; + margin: 6px 0 0; +} + +/* Plugin install thickbox */ +#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 20px; + background: #f5f5f5; + font-size: 22px; + font-weight: 600; + line-height: 56px; + position: relative; + top: 0; + left: 0; + right: 0; + height: 56px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +#plugin-information-title.with-banner { + margin-left: 0; + height: 250px; + bottom: 250px; + -webkit-background-size: cover; + background-size: cover; +} + +#plugin-information-title h2 { + font-size: 1em; + font-weight: bold; + padding: 0; + margin: 0; + max-width: 680px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +#plugin-information-title.with-banner h2 { + font-family: "Helvetica Neue", sans-serif; + display: inline-block; + font-size: 30px; + line-height: 50px; + padding: 0 15px; + margin: 174px 10px 0 0; + color: #fff; + background: rgba( 30, 30, 30, 0.9 ); + text-shadow: 0 1px 3px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: 0 0 30px rgba( 255, 255, 255, 0.1 ); + box-shadow: 0 0 30px rgba( 255, 255, 255, 0.1 ); + -webkit-border-radius: 8px; + border-radius: 8px; +} + +#plugin-information-title div.vignette { + display: none; +} + +#plugin-information-title.with-banner div.vignette { + display: block; + float: left; + top: 0; + height: 250px; + width: 772px; + margin: 0 -20px; + background: transparent; + -webkit-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 { + padding: 0 16px; + position: relative; + left: 0; + right: 0; + height: 36px; + z-index: 1; + border-bottom: 1px solid #ddd; + background: #f3f3f3; +} + +#plugin-information-tabs a { + position: relative; + float: right; + padding: 9px 10px; + margin: 0; + height: 18px; + line-height: 18px; + font-size: 14px; + text-decoration: none; + -webkit-transition: none; + transition: none; +} + +#plugin-information-tabs a.current { + margin: 0 -1px 0; + 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: none; +} + +#plugin-information-content { + overflow: hidden; /* equal height column trick */ + background: #fff; + position: relative; + top: 0; + left: 0; + right: 0; + min-height: 100%; + /* Height of title + tabs + install now */ + min-height: -webkit-calc( 100% - 152px ); + min-height: calc( 100% - 152px ); +} + +#plugin-information-content.with-banner { + /* Height of banner + tabs + install now */ + min-height: -webkit-calc( 100% - 346px ); + min-height: calc( 100% - 346px ); +} + +#section-holder { + position: relative; + top: 0; + left: 250px; + bottom: 0; + right: 0; + margin-left: 250px; /* FYI box */ + padding: 10px 26px; + margin-bottom: -99930px; /* a bit less than the padding below to accommodate footer */ + padding-bottom: 99999px; /* equal height column trick */ +} + +#section-holder .updated { + margin: 16px 0; +} + +#plugin-information .fyi { + display: block; + float: left; + position: relative; + top: 0; + left: 0; + padding: 16px; + margin-bottom: -99930px; /* slightly less than the padding below to accommodate footer */ + padding-bottom: 99999px; /* equal height column trick */ + width: 217px; + border-right: 1px solid #ddd; + background: #f3f3f3; + color: #666; +} + +#plugin-information .fyi strong { + color: #464646; +} + +#plugin-information .fyi h3 { + font-weight: bold; + text-transform: uppercase; + font-size: 12px; + color: #666; + margin: 24px 0 8px; +} + +#plugin-information .fyi h2 { + font-size: 0.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 .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: #ececec; + float: right; +} + +#plugin-information .counter-bar { + height: 17px; + background-color: #ffc733; /* slightly lighter than stars due to larger expanse */ + 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: 15px 16px; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 28px; + border-top: 1px solid #ddd; + background: #f3f3f3; +} + +/* rtl:ignore */ +#plugin-information .section { + direction: ltr; +} + +/* rtl:ignore */ +#plugin-information .section ul, +#plugin-information .section ol { + 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; + -webkit-box-shadow: 0 1px 2px rgba( 0, 0, 0, 0.3 ); + box-shadow: 0 1px 2px rgba( 0, 0, 0, 0.3 ); +} + +/* rtl:ignore */ +#plugin-information #section-screenshots li p { + font-style: italic; + padding-left: 20px; +} + +#plugin-information pre { + padding: 7px; + overflow: auto; + border: 1px solid #ccc; +} + +/* rtl:ignore */ +#plugin-information .review { + overflow: hidden; /* clearfix */ + width: 100%; + margin-bottom: 20px; + border-bottom: 1px solid #e6e6e6; +} + +#plugin-information .review-title-section { + overflow: hidden; /* clearfix */ +} + +/* rtl:ignore */ +#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; +} + +/* rtl:ignore */ +#plugin-information .reviewer-info .avatar { + float: left; + margin: 4px 6px 0 0; +} + +/* rtl:ignore */ +#plugin-information .reviewer-info .star-rating { + float: left; +} + +/* rtl:ignore */ +#plugin-information .review-meta { + float: left; + margin-left: 0.75em; +} + +/* rtl:ignore */ +#plugin-information .review-body { + float: left; + width: 100%; +} + +.plugin-version-author-uri { + font-size: 13px; +} + +@media screen and ( max-width: 771px ) { + #plugin-information-title.with-banner { + height: 100px; + bottom: 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; + bottom: 100px; + width: 800%; + } + + #plugin-information-tabs { + overflow: hidden; /* clearfix */ + padding: 0; + height: auto; /* let tabs wrap */ + } + + #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; /* reset from the two column height fix */ + } + + #section-holder { + position: static; + margin: 0; + padding-bottom: 70px; /* reset from the two column height fix, plus accomodate footer */ + } + + #plugin-information .fyi h3, + #plugin-information .fyi small { + display: none; + } + + #plugin-information-footer { + padding: 12px 16px 0; + height: 46px; + } +} + +/* Thickbox for Plugin Install screen */ +body.plugin-install-php #TB_window, +body.import-php #TB_window, +body.plugins-php #TB_window, +body.update-core-php #TB_window, +body.index-php #TB_window { + background: #fcfcfc url( ../images/spinner.gif ) no-repeat center; +} + +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + body.plugin-install-php #TB_window, + body.import-php #TB_window, + body.plugins-php #TB_window, + body.update-core-php #TB_window, + body.index-php #TB_window { + background: #fcfcfc url( ../images/spinner-2x.gif ) no-repeat center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + } +} + +body.plugin-install-php #TB_title, +body.import-php #TB_title, +body.plugins-php #TB_title, +body.update-core-php #TB_title, +body.index-php #TB_title { + float: right; + height: 1px; +} + +body.plugin-install-php #TB_ajaxWindowTitle, +body.import-php #TB_ajaxWindowTitle, +body.plugins-php #TB_ajaxWindowTitle, +body.update-core-php #TB_ajaxWindowTitle, +body.index-php #TB_ajaxWindowTitle { + display: none; +} + +body.plugin-install-php .tb-close-icon, +body.import-php .tb-close-icon, +body.plugins-php .tb-close-icon, +body.update-core-php .tb-close-icon, +body.index-php .tb-close-icon { + right: auto; + left: -30px; + color: #eee; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +body.plugin-install-php #TB_closeWindowButton:focus, +body.plugin-install-php #TB_closeWindowButton:focus .tb-close-icon, +body.plugin-install-php .tb-close-icon:focus, +body.plugin-install-php .tb-close-icon:hover, +body.import-php #TB_closeWindowButton:focus, +body.import-php #TB_closeWindowButton:focus .tb-close-icon, +body.import-php .tb-close-icon:focus, +body.import-php .tb-close-icon:hover, +body.plugins-php #TB_closeWindowButton:focus, +body.plugins-php #TB_closeWindowButton:focus .tb-close-icon, +body.plugins-php .tb-close-icon:focus, +body.plugins-php .tb-close-icon:hover, +body.update-core-php #TB_closeWindowButton:focus, +body.update-core-php #TB_closeWindowButton:focus .tb-close-icon, +body.update-core-php .tb-close-icon:focus, +body.update-core-php .tb-close-icon:hover, +body.index-php #TB_closeWindowButton:focus, +body.index-php #TB_closeWindowButton:focus .tb-close-icon, +body.index-php .tb-close-icon:focus, +body.index-php .tb-close-icon:hover { + color: #00a0d2; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +body.plugin-install-php .tb-close-icon:before, +body.import-php .tb-close-icon:before, +body.plugins-php .tb-close-icon:before, +body.update-core-php .tb-close-icon:before, +body.index-php .tb-close-icon:before { + content: "\f335"; + font-size: 32px; +} + +/* move plugin install close icon to top on narrow screens */ +@media screen and ( max-width: 830px ) { + body.plugin-install-php .tb-close-icon, + body.import-php .tb-close-icon, + body.plugins-php .tb-close-icon, + body.update-core-php .tb-close-icon, + body.index-php .tb-close-icon { + left: 0; + top: -30px; + } +} + +/* @todo: move this. */ +img { + border: none; +} + +/* Header */ +/* @todo: are these also specific to Press This? */ +#wphead { + border-bottom: 1px solid #dfdfdf; +} + +#wphead h1 a { + color: #464646; +} + +/* @todo: these seem misplaced */ +.js .meta-box-sortables .postbox:hover .handlediv { + margin-left: 0 !important; +} + +/* Metabox collapse arrow indicators */ +.js .sidebar-name .sidebar-name-arrow:before, +.js .meta-box-sortables .postbox .handlediv:before { + left: 12px; + font: normal 20px/1 'dashicons'; + speak: none; + display: inline-block; + padding: 8px 10px; + top: 0; + position: relative; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; +} + +.js #widgets-left .sidebar-name .sidebar-name-arrow { + display: none; +} + +.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow, +.js #widgets-left .sidebar-name:hover .sidebar-name-arrow { + display: block; +} + +/* Show the arrow only on hover */ +.js .sidebar-name .sidebar-name-arrow:before, +.js .meta-box-sortables .postbox .handlediv:before { + content: '\f142'; +} + +.js .widgets-holder-wrap.closed .sidebar-name-arrow:before, +.js .meta-box-sortables .postbox.closed .handlediv:before { + content: '\f140'; +} + +.error a { + text-decoration: underline; +} + +.updated a { + text-decoration: none; + padding-bottom: 2px; +} + +/* @todo: appears to be Press This only and overridden */ +#photo-add-url-div input[type="text"] { + width: 300px; +} + +/* Theme/Plugin Editor */ +.alignleft h3 { + margin: 0; +} + +#template textarea { + font-family: Consolas, Monaco, monospace; + font-size: 13px; + width: 97%; + background: #f9f9f9; + outline: none; +} + +/* rtl:ignore */ +#template textarea, +#docs-list { + direction: ltr; +} + +#template p { + width: 97%; +} + +#templateside { + float: left; + width: 190px; + word-wrap: break-word; +} + +#templateside h3, +#postcustomstuff p.submit { + margin: 0; +} + +#templateside h4 { + margin: 1em 0 0; +} + +#templateside ol, +#templateside ul { + margin: .5em 0; + padding: 0; +} + +#templateside li { + margin: 4px 0; +} + +#templateside li a, +.theme-editor-php .highlight { + display: block; + padding: 3px 12px 3px 3px; + text-decoration: none; +} + +.theme-editor-php .highlight { + margin: -3px -12px -3px 3px; +} + +#templateside .highlight { + border: none; + font-weight: bold; +} + +.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%; +} + +/* @todo: can we use a common class for these? */ +.nav-menus-php .item-edit:before, +.widget-top a.widget-action:after, +.control-section .accordion-section-title:after, +.accordion-section-title:after { + left: 0; + content: '\f140'; + border: none; + background: none; + 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; +} + +.widget-action, +.handlediv, +.item-edit, +.sidebar-name-arrow, +.accordion-section-title:after { + color: #a0a5aa; +} + +.widget-action:hover, +.handlediv:hover, +.item-edit:hover, +.sidebar-name:hover .sidebar-name-arrow, +.accordion-section-title:hover:after { + color: #777; +} + +.widget-top a.widget-action:after { + padding: 12px 12px 11px; +} + +.widget-top a.widget-action:focus:after { + -webkit-box-shadow: 0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8); + box-shadow: 0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8); +} + +.nav-menus-php .item-edit:before { + line-height: 2.1; +} + +.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 a.widget-action:after { + 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 { + -ms-touch-action: none; + touch-action: none; +} + +/* Accordion */ +.accordion-section { + border-bottom: 1px solid #dfdfdf; + margin: 0; +} + +.accordion-section.open .accordion-section-content, +.no-js .accordion-section .accordion-section-content { + display: block; +} + +.accordion-section.open:hover { + border-bottom-color: #dfdfdf; +} + +.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 #dfdfdf; + border-left: 1px solid #dfdfdf; + -webkit-user-select: none; + -moz-user-select: none; + -ms-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: none; +} + +.accordion-section-title:hover:after, +.accordion-section-title:focus: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 { + border-right: none; + border-left: none; + padding: 10px 14px 11px 10px; + line-height: 21px; + background: #fff; +} + +.control-section .accordion-section-title:after { + top: 11px; +} + +.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: #23282d; + background: #f5f5f5; +} + +.control-section.open .accordion-section-title { + /* When expanded */ + border-bottom: 1px solid #dfdfdf; +} + +/* Edit Site */ +.network-admin .edit-site-actions { + margin-top: 0; +} + +/* My Sites */ +.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 Queries +-------------------------------------------------------------- */ + +/* @todo: de-duplication */ +@media only screen and (min-width: 769px) { + /* categories */ + #col-left { + width: 35%; + } + + #col-right { + width: 65%; + } +} + +@media only screen and (max-width: 860px) { + + /* categories */ + #col-left { + width: 35%; + } + + #col-right { + width: 65%; + } +} + +@media only screen and (min-width: 980px) { + + /* categories */ + #col-left { + width: 35%; + } + + #col-right { + width: 65%; + } +} + +@media only screen and (max-width: 768px) { + /* categories */ + #col-left { + width: 100%; + } + + #col-right { + width: 100%; + } +} + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + /* Back-compat for pre-3.8 */ + div.star-holder, + div.star-holder .star-rating { + background: url(../images/stars-2x.png?ver=20121108) repeat-x bottom left; + -webkit-background-size: 21px 37px; + background-size: 21px 37px; + } + + .spinner { + 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 a.widget-action, + .widget-top a.widget-action:hover, + .sidebar-name-arrow, + .sidebar-name:hover .sidebar-name-arrow, + .meta-box-sortables .postbox:hover .handlediv, + .tagchecklist span a, + #bulk-titles div a, + .tagchecklist span a:hover, + #bulk-titles div a:hover { + background: none !important; + } + +} + +@-ms-viewport { + width: device-width; +} + +@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-wrap { + padding: 0; + } + + /* Hidden Elements */ + #screen-meta, + #screen-meta-links, + #collapse-menu, + .post-format-select { + display: none !important; + } + + .wrap .add-new-h2, /* deprecated */ + .wrap .add-new-h2:active, /* deprecated */ + .wrap .page-title-action, + .wrap .page-title-action:active { + padding: 10px 15px; + font-size: 14px; + white-space: nowrap; + } + + .wp-color-result { + height: auto; + padding-right: 45px; + } + + .wp-color-result:after { + font-size: 14px; + height: auto; + padding: 6px 14px; + } + + /* Feedback Messages */ + .notice, + .wrap div.updated, + .wrap div.error, + .media-upload-form div.error { + 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: -190px; + } + + code { + word-wrap: break-word; + } + + /* General Metabox */ + .postbox { + font-size: 14px; + } + + .metabox-holder h3 { + padding: 12px; + } + + .postbox .handlediv { + margin-top: 3px; + } + + /* Subsubsub Nav */ + .subsubsub { + font-size: 16px; + text-align: center; + margin-bottom: 15px; + } + + /* Theme/Plugin File Editor */ + #templateside { + float: none; + width: auto; + } + + #templateside li { + margin: 0; + } + + #templateside li a { + display: block; + padding: 5px; + } + + #templateside .highlight { + padding: 5px; + margin-right: -5px; + margin-top: -5px; + } + + #template div { + float: none; + margin: 0; + width: auto; + } + + #template textarea { + width: 100%; + } + + .fileedit-sub .alignright { + margin-top: 15px; + } + + #wpfooter { + display: none; + } + + #comments-form .checkforspam { + display: none; + } + + .edit-comment-author { + margin: 2px 0 0; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + /* Disable horizontal scroll when responsive menu is open + since we push the main content off to the right. */ + #wpwrap.wp-responsive-open { + overflow-x: hidden; + } + + html.wp-toolbar { + padding-top: 0; + } + + #wpbody { + padding-top: 46px; + } + + /* Keep full-width boxes on Edit Post page from causing horizontal scroll */ + div#post-body.metabox-holder.columns-1 { + overflow-x: hidden; + } +} + +@media screen and (max-width: 320px) { + /* Prevent default center alignment and larger font for the Right Now widget when + the network dashboard is viewed on a small mobile device. */ + #network_dashboard_right_now .subsubsub { + font-size: 14px; + text-align: right; + } +} diff --git a/wp-admin/css/common.css b/wp-admin/css/common.css new file mode 100644 index 0000000000..d3765d9d02 --- /dev/null +++ b/wp-admin/css/common.css @@ -0,0 +1,3453 @@ +/* 2 column liquid layout */ +#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 2 column liquid layout */ + +.inner-sidebar { + float: right; + clear: right; + display: none; + width: 281px; + position: relative; +} + +.columns-2 .inner-sidebar { + margin-right: auto; + width: 286px; + display: block; +} + +.inner-sidebar #side-sortables, +.columns-2 .inner-sidebar #side-sortables { + min-height: 300px; + width: 280px; + padding: 0; +} + +.has-right-sidebar .inner-sidebar { + display: block; +} + +.has-right-sidebar #post-body { + float: left; + clear: left; + width: 100%; + margin-right: -2000px; +} + +.has-right-sidebar #post-body-content { + margin-right: 300px; + float: none; + width: auto; +} + +/* 2 columns main area */ + +#col-container, +#col-left, +#col-right { + overflow: hidden; + padding: 0; + margin: 0; +} + +#col-left { + width: 35%; +} + +#col-right { + float: right; + clear: right; + width: 65%; +} + +.col-wrap { + padding: 0 7px; +} + +/* utility classes */ +.alignleft { + float: left; +} + +.alignright { + float: right; +} + +.textleft { + text-align: left; +} + +.textright { + text-align: right; +} + +.clear { + clear: both; +} + +/* Hide visually but not from screen readers */ +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + margin: -1px; + padding: 0; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; + word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */ +} + +.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: #21759b; + z-index: 100000; + line-height: normal; + -webkit-box-shadow: 0 0 2px 2px rgba(0,0,0,.6); + box-shadow: 0 0 2px 2px rgba(0,0,0,.6); + text-decoration: none; + outline: none; +} + +.hidden, +.js .closed .inside, +.js .hide-if-js, +.no-js .hide-if-no-js, +.js.wp-core-ui .hide-if-js, +.js .wp-core-ui .hide-if-js, +.no-js.wp-core-ui .hide-if-no-js, +.no-js .wp-core-ui .hide-if-no-js { + display: none; +} + +/* @todo: Take a second look. Large chunks of shared color, from the colors.css merge */ +.widget-top, +.menu-item-handle, +.widget-inside, +#menu-settings-column .accordion-container, +#menu-management .menu-edit, +.manage-menus, +table.widefat, +.stuffbox, +p.popular-tags, +.widgets-holder-wrap, +.wp-editor-container, +.popular-tags, +.feature-filter, +.imgedit-group, +.comment-ays { + border: 1px solid #e5e5e5; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); +} + +table.widefat, +.wp-editor-container, +.stuffbox, +p.popular-tags, +.widgets-holder-wrap, +.popular-tags, +.feature-filter, +.imgedit-group, +.comment-ays { + background: #fff; +} + +/* general */ +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +html { + background: #f1f1f1; +} + +body { + color: #444; + font-family: "Open Sans", 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; + -webkit-transition-property: border, background, color; + transition-property: border, background, color; + -webkit-transition-duration: .05s; + transition-duration: .05s; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +a, +div { + outline: 0; +} + +a:hover, +a:active { + color: #00a0d2; +} + +a:focus, +a:focus .media-icon img { + color: #124964; + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + 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 { + -webkit-box-shadow: none; + box-shadow: none; + outline: none; +} + +blockquote, +q { + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; + content: none; +} + +p { + font-size: 13px; + line-height: 1.5; + margin: 1em 0; +} + +blockquote { + margin: 1em; +} + +li, +dd { + margin-bottom: 6px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + display: block; + font-weight: 600; +} + +h1 { + font-size: 2em; + margin: .67em 0; +} + +.wrap > h1, +h2 { + color: #23282d; + font-size: 1.5em; + margin: .83em 0; + font-weight: 400; +} + +h3 { + color: #23282d; + font-size: 1.3em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +ul, +ol { + padding: 0; +} + +ul { + list-style: none; +} + +ol { + list-style-type: decimal; + margin-left: 2em; +} + +ul.ul-disc { + list-style: disc outside; +} + +ul.ul-square { + list-style: square outside; +} + +ol.ol-decimal { + list-style: decimal outside; +} + +ul.ul-disc, +ul.ul-square, +ol.ol-decimal { + margin-left: 1.8em; +} + +ul.ul-disc > li, +ul.ul-square > li, +ol.ol-decimal > li { + margin: 0 0 0.5em; +} + +/* rtl:ignore */ +.ltr { + direction: ltr; +} + +/* rtl:ignore */ +.code, +code { + font-family: Consolas, Monaco, monospace; + direction: ltr; + unicode-bidi: embed; +} + +kbd, +code { + padding: 3px 5px 2px 5px; + margin: 0 1px; + background: #eaeaea; + background: rgba(0,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: #999; + font-weight: normal; +} + +.subsubsub a.current { + font-weight: 600; + border: none; +} + +.subsubsub li { + display: inline-block; + margin: 0; + padding: 0; + white-space: nowrap; +} + +/* .widefat - main style for tables */ +.widefat { + border-spacing: 0; + width: 100%; + clear: both; + margin: 0; +} + +.widefat * { + word-wrap: break-word; +} + +.widefat a { + text-decoration: none; +} + +.widefat td, +.widefat th { + padding: 8px 10px; +} + +.widefat thead th, +.widefat thead td { + border-bottom: 1px solid #e1e1e1; +} + +.widefat tfoot th, +.widefat tfoot td { + 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 p, +.widefat td ol, +.widefat td ul { + font-size: 13px; + line-height: 1.5em; +} + +.widefat th, +.widefat thead td, +.widefat tfoot td { + text-align: left; + line-height: 1.3em; + font-size: 14px; +} + +.widefat th input, +.widefat thead td input, +.widefat tfoot 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 th input[type=checkbox], +.widefat thead td input[type=checkbox], +.widefat tfoot td input[type=checkbox] { + margin-top: -1px; +} + +.widefat tbody th.check-column { + padding: 9px 0 22px; +} + +.widefat thead td.check-column, +.widefat tbody th.check-column, +.widefat tfoot td.check-column { + padding: 11px 0 0 3px; +} + +.widefat thead td.check-column, +.widefat tfoot td.check-column { + padding-top: 10px; +} + +.update-php div.updated, +.update-php div.error { + margin-left: 0; +} + +.no-js .widefat thead .check-column input, +.no-js .widefat tfoot .check-column input { + display: none; +} + +.widefat .num, +.column-comments, +.column-links, +.column-posts { + text-align: center; +} + +.widefat th#comments { + vertical-align: middle; +} + +.wrap { + margin: 10px 20px 0 2px; +} + +.wrap h1, +.wrap h2, +.subtitle { + font-weight: normal; + margin: 0; +} + +.wrap h1, +.wrap h2 { + font-size: 23px; + font-weight: 400; + padding: 9px 15px 4px 0; + line-height: 29px; +} + +.subtitle { + color: #777; + font-size: 14px; + padding-left: 25px; +} + +.wrap .add-new-h2, /* deprecated */ +.wrap .add-new-h2:active, /* deprecated */ +.wrap .page-title-action, +.wrap .page-title-action:active { + margin-left: 4px; + padding: 4px 8px; + position: relative; + top: -3px; + text-decoration: none; + border: none; + -webkit-border-radius: 2px; + border-radius: 2px; + background: #e0e0e0; + text-shadow: none; + font-weight: 600; + font-size: 13px; +} + +.wrap .add-new-h2:hover, /* deprecated */ +.wrap .page-title-action:hover { + background: #00a0d2; + color: #fff; +} + +.wrap h1.long-header { + padding-right: 0; +} + +.wp-dialog { + background-color: #fff; +} + +.widgets-chooser ul, +#widgets-left .widget-in-question .widget-top, +#available-widgets .widget-top:hover, +div#widgets-right .widget-top:hover, +#widgets-left .widget-top:hover { + border-color: #999; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.1); + box-shadow: 0 1px 2px rgba(0,0,0,0.1); +} + +.sorthelper { + background-color: #ccf3fa; +} + +.ac_match, +.subsubsub a.current { + color: #000; +} + +.striped > tbody > :nth-child(odd), +ul.striped > :nth-child(odd), +.alternate { + background-color: #f9f9f9; +} + +.bar { + background-color: #e8e8e8; + border-right-color: #99d; +} + +.media-upload-form label.form-help, +td.help { + color: #9a9a9a; +} + +/* Helper classes for plugins to leverage the active WordPress color scheme */ + +.highlight { + background-color: #e4f2fd; + color: #000; +} + +.wp-ui-primary { + color: #fff; + background-color: #32373c; +} +.wp-ui-text-primary { + color: #32373c; +} + +.wp-ui-highlight { + color: white; + 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: #999; +} + +/* For emoji replacement images */ +img.emoji { + display: inline !important; + border: none !important; + height: 1em !important; + width: 1em !important; + margin: 0 .07em !important; + vertical-align: -0.1em !important; + background: none !important; + padding: 0 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +/*------------------------------------------------------------------------------ + 1.0 - Text Styles +------------------------------------------------------------------------------*/ + +.widget .widget-top, +.postbox .hndle, +.stuffbox .hndle, +.control-section .accordion-section-title, +.sidebar-name, +#nav-menu-header, +#nav-menu-footer, +.menu-item-handle, +.checkbox, +.side-info, +#your-profile #rich_editing, +.widefat thead th, +.widefat thead td, +.widefat tfoot th, +.widefat tfoot td { + line-height: 1.4em; +} + +.widget .widget-top, +.menu-item-handle { + 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; +} + +/* @todo can we combine these into a class or use an existing dashicon one? */ +.welcome-panel .welcome-panel-close:before, +.tagchecklist span a:before, +#bulk-titles div a:before, +.notice-dismiss:before { + background: none; + color: #b4b9be; + 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; +} + +.tagchecklist span a:before, +#bulk-titles div a:before { + margin: 1px 0; +} + +.welcome-panel .welcome-panel-close:hover:before, +.welcome-panel .welcome-panel-close:focus:before, +.tagchecklist span a:hover:before, +#bulk-titles div a:hover:before { + color: #c00; +} + +.key-labels label { + line-height: 24px; +} + +strong, b { + font-weight: 600; +} + +.pre { + /* https://developer.mozilla.org/en-US/docs/CSS/white-space */ + white-space: pre-wrap; /* css-3 */ + word-wrap: break-word; /* IE 5.5 - 7 */ +} + +.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; +} + +.row-actions span.delete a, +.row-actions span.trash a, +.row-actions span.spam a, +.plugins a.delete, +#all-plugins-table .plugins a.delete, +#search-plugins-table .plugins a.delete, +.submitbox .submitdelete, +#media-items a.delete, +#media-items a.delete-permanently, +#nav-menu-footer .menu-delete { + color: #a00; +} + +abbr.required, +.file-error, +.widget-control-remove:hover, +.row-actions .delete a:hover, +.row-actions .trash a:hover, +.row-actions .spam a:hover, +.plugins a.delete:hover, +#all-plugins-table .plugins a.delete:hover, +#search-plugins-table .plugins a.delete:hover, +.submitbox .submitdelete:hover, +#media-items a.delete:hover, +#media-items a.delete-permanently:hover, +#nav-menu-footer .menu-delete:hover { + color: #f00; + text-decoration: none; + border: none; +} + +/*------------------------------------------------------------------------------ + 3.0 - Actions +------------------------------------------------------------------------------*/ + +#major-publishing-actions { + padding: 10px; + clear: both; + border-top: 1px solid #ddd; + background: #f5f5f5; +} + +#delete-action { + line-height: 28px; + vertical-align: middle; + text-align: left; + float: left; +} + +#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; +} + +#minor-publishing-actions { + padding: 10px 10px 0 10px; + text-align: right; +} + +#save-post { + float: left; +} + +.preview { + float: right; +} + +#sticky-span { + margin-left: 18px; +} + +.side-info { + margin: 0; + padding: 4px; + font-size: 11px; +} + +.side-info h5 { + padding-bottom: 7px; + font-size: 14px; + margin: 12px 2px 5px; + border-bottom: 1px solid #dadada; +} + +.side-info ul { + margin: 0; + padding-left: 18px; + list-style: square; + color: #666; +} + +.approve, +.unapproved .unapprove { + display: none; +} + +.unapproved .approve, +.spam .approve, +.trash .approve { + display: inline; +} + +td.action-links, +th.action-links { + text-align: right; +} + +/* Filter bar */ +.wp-filter { + display: inline-block; + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin: 12px 0 25px; + padding: 0 10px; + width: 100%; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,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; +} + +.title-count, +.filter-count .count { + display: inline-block; + position: relative; + top: -1px; + padding: 4px 10px; + -webkit-border-radius: 30px; + border-radius: 30px; + background: #777; + color: #fff; + font-size: 14px; + font-weight: 600; +} + +/* not a part of filter bar, but derived from it, so here for now */ +.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 { + -webkit-box-shadow: none; + box-shadow: none; + 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: #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 .drawer-toggle { + display: inline-block; + margin: 0 10px; + padding: 4px 6px; + color: #666; + cursor: pointer; +} + +.wp-filter .drawer-toggle:before { + display: inline-block; + vertical-align: top; + content: "\f111"; + margin: 0 5px 0 0; + width: 16px; + height: 16px; + color: #777; + -webkit-transition: color .1s ease-in 0; + transition: color .1s ease-in 0; + font-family: "dashicons"; + font-size: 16px; + line-height: 1; + text-align: center; + text-decoration: inherit; + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; +} + +.wp-filter .drawer-toggle:hover, +.wp-filter .drawer-toggle:hover:before { + color: #00a0d2; +} + +.wp-filter .drawer-toggle.current:before { + color: #fff; +} + +.filter-drawer { + display: none; + margin: 0 -20px; + padding: 20px; + border-top: 1px solid #eee; + background: #fafafa; +} + +.show-filters .filter-drawer { + display: block; + overflow: hidden; + width: 100%; +} + +.show-filters .wp-filter .drawer-toggle:hover, +.show-filters .wp-filter .drawer-toggle:focus { + background: rgb(46, 162, 204); +} + +.show-filters .filter-links a.current { + border-bottom: none; +} + +.show-filters .wp-filter .drawer-toggle { + -webkit-border-radius: 2px; + border-radius: 2px; + border: none; + background: #777; + color: #fff; +} + +.show-filters .wp-filter .drawer-toggle:before { + color: #fff; +} + +.filter-group { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin: 0 1% 0 0; + padding: 10px; + width: 24%; + background: #fff; + border: 1px solid #e5e5e5; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); +} + +.filter-group h4 { + position: relative; + margin: 0; +} + +.filter-drawer ol { + margin: 20px 0 0; + list-style-type: none; + font-size: 12px; +} + +.filter-drawer li { + display: inline-block; + vertical-align: top; + margin: 5px 0; + padding-right: 25px; + width: 160px; + list-style-type: none; +} + +.filter-drawer .buttons { + margin-bottom: 20px; +} + +.filter-drawer .buttons .button span { + display: inline-block; + opacity: 0.8; + font-size: 12px; + text-indent: 10px; +} + +.wp-filter .button.clear-filters { + display: none; + margin-left: 10px; +} + +.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; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); + background: #fff; + font-size: 11px; +} + +.filters-applied .filter-group, +.filters-applied .filter-drawer .buttons, +.filters-applied .filter-drawer br { + display: none !important; +} + +.filters-applied .filtered-by { + display: block; +} + +.filters-applied .filter-drawer { + padding: 20px; +} + +.show-filters .content-filterable, +.show-filters.filters-applied.loading-content .content-filterable, +.loading-content .content-filterable, +.error .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; /* Remove float from media-views.css */ + 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%; + } +} + +/*------------------------------------------------------------------------------ + 4.0 - Notifications +------------------------------------------------------------------------------*/ + +.notice, +div.updated, +div.error { + background: #fff; + border-left: 4px solid #fff; + -webkit-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 15px 2px; + padding: 1px 12px; +} + +.notice p, +div.updated p, +div.error p, +.form-table td .notice p { + margin: 0.5em 0; + padding: 2px; +} + +.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: none; + color: #b4b9be; + cursor: pointer; +} + +.notice-dismiss:hover:before, +.notice-dismiss:active:before, +.notice-dismiss:focus:before { + color: #c00; +} + +.notice-dismiss:focus { + outline: none; + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .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-color: #7ad03a; +} + +.notice-warning { + border-color: #ffba00; +} + +.notice-error, +div.error { + border-color: #dd3d36; +} + +.notice-info { + border-color: #00a0d2; +} + +.wrap .notice, +.wrap div.updated, +.wrap div.error, +.media-upload-form .notice, +.media-upload-form div.error { + margin: 5px 0 15px; +} + +#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; + -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); +} + +.update-message { + color: #000; +} + +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; +} + +.update-php .spinner { + float: none; + margin: -4px 0; +} + +#ajax-loading, +.ajax-loading, +.ajax-feedback, +.imgedit-wait-spin, +.list-ajax-loading { /* deprecated */ + visibility: hidden; +} + +#ajax-response.alignleft { + margin-left: 2em; +} + +/* @todo: this does not need its own section anymore */ +/*------------------------------------------------------------------------------ + 6.0 - Admin Header +------------------------------------------------------------------------------*/ +#adminmenu a, +#taglist a, +#catlist a { + text-decoration: none; +} + +/*------------------------------------------------------------------------------ + 6.1 - Screen Options Tabs +------------------------------------------------------------------------------*/ + +#screen-options-wrap, +#contextual-help-wrap { + margin: 0; + padding: 8px 20px 12px; + position: relative; +} + +#contextual-help-wrap { + overflow: auto; + margin-left: 0 !important; +} + +#screen-meta .screen-reader-text { + visibility: hidden; +} + +#screen-meta-links { + margin: 0 20px 0 0; +} + +/* screen options and help tabs revert */ +#screen-meta { + display: none; + margin: 0 20px -1px 0px; + position: relative; + background-color: #fff; + border: 1px solid #ddd; + border-top: none; + -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.025); + box-shadow: 0 1px 0 rgba(0,0,0,.025); +} + +#screen-options-link-wrap, +#contextual-help-link-wrap { + float: right; + height: 28px; + margin: 0 0 0 6px; + border: 1px solid #ddd; + border-top: none; + background: #fff; + -webkit-box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); + box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); +} + +#screen-meta-links .screen-meta-toggle { + position: relative; + top: 0; +} + +#screen-meta-links .show-settings { + border: 0; + background: none; + -webkit-border-radius: 0; + border-radius: 0; + color: #777; + line-height: 1.7; + padding: 3px 6px 3px 16px; +} + +#screen-meta-links .show-settings:hover, +#screen-meta-links .show-settings:active, +#screen-meta-links .show-settings:focus { + color: #32373c; +} + +#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: #b4b9be; +} + +#screen-meta-links .screen-meta-active:after { + content: '\f142'; +} + +/* end screen options and help tabs */ + +.toggle-arrow { + background-repeat: no-repeat; + background-position: top left; + background-color: transparent; + height: 22px; + line-height: 22px; + display: block; +} + +.toggle-arrow-active { + background-position: bottom left; +} + +#screen-options-wrap h5, +#contextual-help-wrap h5 { + margin: 8px 0; + font-size: 13px; +} + +.metabox-prefs label { + display: inline-block; + padding-right: 15px; + line-height: 30px; +} + +.metabox-prefs label input[type=checkbox] { + margin-top: -4px; + margin-right: 6px; +} + +.metabox-prefs label input { + margin: 0 5px 0 2px; +} + +.metabox-prefs .columns-prefs label input { + margin: 0 2px; +} + +.metabox-prefs label a { + display: none; +} + +.metabox-prefs .screen-options { + padding-top: 10px; +} + +.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; +} + +/*------------------------------------------------------------------------------ + 6.2 - Help Menu +------------------------------------------------------------------------------*/ + +#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; + -webkit-border-bottom-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +.contextual-help-tabs { + float: left; + width: 150px; + margin: 0; +} + +.contextual-help-tabs ul { + margin: 1em 0; +} + +.contextual-help-tabs li { + margin-bottom: 0; + list-style-type: none; + border-style: solid; + border-width: 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; + -webkit-box-shadow: 0 2px 0 rgba(0,0,0,0.02), 0 1px 0 rgba(0,0,0,0.02); + 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: #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; +} + +/*------------------------------------------------------------------------------ + 8.0 - Layout Blocks +------------------------------------------------------------------------------*/ + +html.wp-toolbar { + padding-top: 32px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.widefat th, +.widefat td { + color: #555; +} + +.widefat th, +.widefat thead td, +.widefat tfoot td { + font-weight: normal; +} + +.widefat thead tr th, +.widefat thead tr td, +.widefat tfoot tr th, +.widefat tfoot tr td { + color: #32373c; +} + +.widefat td p { + margin: 2px 0 0.8em; +} + +.widefat p, +.widefat ol, +.widefat ul { + color: #32373c; +} + +.widefat .column-comment p { + margin: 0.6em 0; +} + +/* Screens with postboxes */ +.postbox-container { + float: left; +} + +.postbox-container .meta-box-sortables { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#wpbody-content .metabox-holder { + padding-top: 10px; +} + +.metabox-holder .postbox-container .empty-container { + border: 3px dashed #b4b9be; + height: 250px; +} + +.metabox-holder.columns-1 .postbox-container .empty-container, +.columns-2 #postbox-container-3 .empty-container, +.columns-2 #postbox-container-4 .empty-container, +.columns-3 #postbox-container-4 .empty-container { + border: 0 none; + height: 0; + min-height: 0; +} + +#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; +} + +/* one column on the dash */ +@media only screen and (max-width: 799px) { + #wpbody-content .metabox-holder .postbox-container .empty-container { + border: 0 none; + height: 0; + min-height: 0; + } +} + +.js .widget .widget-top, +.js .postbox .hndle { + cursor: move; +} + +.hndle a { + font-size: 11px; + font-weight: normal; +} + +.postbox .handlediv { + float: right; + width: 27px; + height: 30px; +} + +.js .postbox .handlediv { + cursor: pointer; +} + +.sortable-placeholder { + border: 1px dashed #b4b9be; + margin-bottom: 20px; +} + +.postbox, +.stuffbox { + margin-bottom: 20px; + padding: 0; + line-height: 1; +} + +/* user-select is not a part of the CSS standard - may change behavior in the future */ +.postbox .hndle, +.stuffbox .hndle { + -webkit-user-select: none; + -moz-user-select: none; + -ms-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; + -webkit-box-shadow: none; + box-shadow: none; +} + +.postbox table.form-table { + margin-bottom: 0; +} + +.postbox table.widefat { + -webkit-box-shadow: none; + box-shadow: none; +} + +.temp-border { + border: 1px dotted #ccc; +} + +.columns-prefs label { + padding: 0 5px; +} + +/* @todo: what is this doing here */ +#dashboard_right_now .versions .b, +#post-status-display, +#post-visibility-display, +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover, +.media-item .percent, +.plugins .name, +#pass-strength-result.strong, +#pass-strength-result.short, +#ed_reply_toolbar #ed_reply_strong, +.item-controls .item-order a, +.feature-filter .feature-name { + font-weight: 600; +} + +/*------------------------------------------------------------------------------ + 21.0 - Admin Footer +------------------------------------------------------------------------------*/ + +#wpfooter { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 10px 20px; + color: #777; +} + +#wpfooter p { + font-size: 13px; + margin: 0; + line-height: 20px; +} + +#footer-thankyou { + font-style: italic; +} + +#wpfooter a { + text-decoration: none; +} + +#wpfooter a:hover { + text-decoration: underline; +} + +/*------------------------------------------------------------------------------ + 25.0 - Tabbed Admin Screen Interface (Experimental) +------------------------------------------------------------------------------*/ + +.nav-tab { + border: 1px solid #ccc; + border-bottom: none; + background: #e4e4e4; + color: #555; + font-size: 12px; + line-height: 16px; + display: inline-block; + padding: 4px 14px 6px; + text-decoration: none; + margin: -4px 4px -1px 0; +} + +.nav-tab:hover { + background-color: #fff; + color: #464646; +} + +.nav-tab-active { + color: #464646; +} + +.nav-tab-active, +.nav-tab-active:hover { + border-bottom: 1px solid #f1f1f1; + background: #f1f1f1; + color: #000; +} + +h1.nav-tab-wrapper, +h2.nav-tab-wrapper, +h3.nav-tab-wrapper { + border-bottom: 1px solid #ccc; + padding-bottom: 0; + padding-left: 10px; +} + +h1 .nav-tab, +h2 .nav-tab { + padding: 6px 10px; + font-weight: bold; + font-size: 15px; + line-height: 24px; +} + + +/*------------------------------------------------------------------------------ + 26.0 - Misc +------------------------------------------------------------------------------*/ + +.spinner { + background: url(../images/spinner.gif) no-repeat; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + display: inline-block; + visibility: hidden; + float: right; + vertical-align: middle; + opacity: 0.7; + filter: alpha(opacity=70); + width: 20px; + height: 20px; + margin: 4px 10px 0; +} + +.spinner.is-active { + visibility: visible; +} + +#template div { + margin-right: 190px; +} + +.metabox-holder h3 { + font-size: 14px; + padding: 8px 12px; + margin: 0; + line-height: 1.4; +} + +#templateside ul li a { + text-decoration: none; +} + +.plugin-install #description, +.plugin-install-network #description { + width: 60%; +} + +table .vers, +table .column-visible, +table .column-rating { + text-align: left; +} + +.attention, +.error-message { + color: red; + font-weight: 600; +} + +/* Scrollbar fix for bulk upgrade iframe */ +body.iframe { + height: 98%; +} + +/* Upgrader styles, Specific to Language Packs */ +.lp-show-latest p { + display: none; +} +.lp-show-latest p:last-child, +.lp-show-latest .lp-error p { + display: block; +} + +/* - Only used once or twice in all of WP - deprecate for global style +------------------------------------------------------------------------------*/ +.media-icon { + width: 62px; /* icon + border */ + text-align: center; +} + +.media-icon img { + border: 1px solid #e7e7e7; + border: 1px solid rgba(0, 0, 0, 0.07); +} + +#howto { + font-size: 11px; + margin: 0 5px; + display: block; +} + +.importers td { + padding-right: 14px; +} + +.importers { + font-size: 16px; + width: auto; +} + +#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 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; +} + +/* - Used - but could/should be deprecated with a CSS reset +------------------------------------------------------------------------------*/ +.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; +} + +/* Star Ratings - Back-compat for pre-3.8 */ +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 Ratings */ +.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: normal; + font-style: normal; + vertical-align: top; + -webkit-transition: color .1s ease-in 0; + 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 { + -webkit-transform: rotateY(180deg); + -ms-transform: rotateY(180deg); + transform: rotateY(180deg); +} + +.star-rating .star-empty:before { + content:'\f154'; +} + +div.action-links { + font-weight: normal; + margin: 6px 0 0; +} + +/* Plugin install thickbox */ +#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 20px; + background: #f5f5f5; + font-size: 22px; + font-weight: 600; + line-height: 56px; + position: relative; + top: 0; + right: 0; + left: 0; + height: 56px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +#plugin-information-title.with-banner { + margin-right: 0; + height: 250px; + bottom: 250px; + -webkit-background-size: cover; + background-size: cover; +} + +#plugin-information-title h2 { + font-size: 1em; + font-weight: bold; + padding: 0; + margin: 0; + max-width: 680px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +#plugin-information-title.with-banner h2 { + font-family: "Helvetica Neue", sans-serif; + display: inline-block; + font-size: 30px; + line-height: 50px; + padding: 0 15px; + margin: 174px 0 0 10px; + color: #fff; + background: rgba( 30, 30, 30, 0.9 ); + text-shadow: 0 1px 3px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: 0 0 30px rgba( 255, 255, 255, 0.1 ); + box-shadow: 0 0 30px rgba( 255, 255, 255, 0.1 ); + -webkit-border-radius: 8px; + border-radius: 8px; +} + +#plugin-information-title div.vignette { + display: none; +} + +#plugin-information-title.with-banner div.vignette { + display: block; + float: right; + top: 0; + height: 250px; + width: 772px; + margin: 0 -20px; + background: transparent; + -webkit-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 { + padding: 0 16px; + position: relative; + right: 0; + left: 0; + height: 36px; + z-index: 1; + border-bottom: 1px solid #ddd; + background: #f3f3f3; +} + +#plugin-information-tabs a { + position: relative; + float: left; + padding: 9px 10px; + margin: 0; + height: 18px; + line-height: 18px; + font-size: 14px; + text-decoration: none; + -webkit-transition: none; + transition: none; +} + +#plugin-information-tabs a.current { + margin: 0 -1px 0; + 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: none; +} + +#plugin-information-content { + overflow: hidden; /* equal height column trick */ + background: #fff; + position: relative; + top: 0; + right: 0; + left: 0; + min-height: 100%; + /* Height of title + tabs + install now */ + min-height: -webkit-calc( 100% - 152px ); + min-height: calc( 100% - 152px ); +} + +#plugin-information-content.with-banner { + /* Height of banner + tabs + install now */ + min-height: -webkit-calc( 100% - 346px ); + min-height: calc( 100% - 346px ); +} + +#section-holder { + position: relative; + top: 0; + right: 250px; + bottom: 0; + left: 0; + margin-right: 250px; /* FYI box */ + padding: 10px 26px; + margin-bottom: -99930px; /* a bit less than the padding below to accommodate footer */ + padding-bottom: 99999px; /* equal height column trick */ +} + +#section-holder .updated { + margin: 16px 0; +} + +#plugin-information .fyi { + display: block; + float: right; + position: relative; + top: 0; + right: 0; + padding: 16px; + margin-bottom: -99930px; /* slightly less than the padding below to accommodate footer */ + padding-bottom: 99999px; /* equal height column trick */ + width: 217px; + border-left: 1px solid #ddd; + background: #f3f3f3; + color: #666; +} + +#plugin-information .fyi strong { + color: #464646; +} + +#plugin-information .fyi h3 { + font-weight: bold; + text-transform: uppercase; + font-size: 12px; + color: #666; + margin: 24px 0 8px; +} + +#plugin-information .fyi h2 { + font-size: 0.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 .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: #ececec; + float: left; +} + +#plugin-information .counter-bar { + height: 17px; + background-color: #ffc733; /* slightly lighter than stars due to larger expanse */ + 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: 15px 16px; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 28px; + border-top: 1px solid #ddd; + background: #f3f3f3; +} + +/* rtl:ignore */ +#plugin-information .section { + direction: ltr; +} + +/* rtl:ignore */ +#plugin-information .section ul, +#plugin-information .section ol { + 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; + -webkit-box-shadow: 0 1px 2px rgba( 0, 0, 0, 0.3 ); + box-shadow: 0 1px 2px rgba( 0, 0, 0, 0.3 ); +} + +/* rtl:ignore */ +#plugin-information #section-screenshots li p { + font-style: italic; + padding-left: 20px; +} + +#plugin-information pre { + padding: 7px; + overflow: auto; + border: 1px solid #ccc; +} + +/* rtl:ignore */ +#plugin-information .review { + overflow: hidden; /* clearfix */ + width: 100%; + margin-bottom: 20px; + border-bottom: 1px solid #e6e6e6; +} + +#plugin-information .review-title-section { + overflow: hidden; /* clearfix */ +} + +/* rtl:ignore */ +#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; +} + +/* rtl:ignore */ +#plugin-information .reviewer-info .avatar { + float: left; + margin: 4px 6px 0 0; +} + +/* rtl:ignore */ +#plugin-information .reviewer-info .star-rating { + float: left; +} + +/* rtl:ignore */ +#plugin-information .review-meta { + float: left; + margin-left: 0.75em; +} + +/* rtl:ignore */ +#plugin-information .review-body { + float: left; + width: 100%; +} + +.plugin-version-author-uri { + font-size: 13px; +} + +@media screen and ( max-width: 771px ) { + #plugin-information-title.with-banner { + height: 100px; + bottom: 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; + bottom: 100px; + width: 800%; + } + + #plugin-information-tabs { + overflow: hidden; /* clearfix */ + padding: 0; + height: auto; /* let tabs wrap */ + } + + #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; /* reset from the two column height fix */ + } + + #section-holder { + position: static; + margin: 0; + padding-bottom: 70px; /* reset from the two column height fix, plus accomodate footer */ + } + + #plugin-information .fyi h3, + #plugin-information .fyi small { + display: none; + } + + #plugin-information-footer { + padding: 12px 16px 0; + height: 46px; + } +} + +/* Thickbox for Plugin Install screen */ +body.plugin-install-php #TB_window, +body.import-php #TB_window, +body.plugins-php #TB_window, +body.update-core-php #TB_window, +body.index-php #TB_window { + background: #fcfcfc url( ../images/spinner.gif ) no-repeat center; +} + +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + body.plugin-install-php #TB_window, + body.import-php #TB_window, + body.plugins-php #TB_window, + body.update-core-php #TB_window, + body.index-php #TB_window { + background: #fcfcfc url( ../images/spinner-2x.gif ) no-repeat center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + } +} + +body.plugin-install-php #TB_title, +body.import-php #TB_title, +body.plugins-php #TB_title, +body.update-core-php #TB_title, +body.index-php #TB_title { + float: left; + height: 1px; +} + +body.plugin-install-php #TB_ajaxWindowTitle, +body.import-php #TB_ajaxWindowTitle, +body.plugins-php #TB_ajaxWindowTitle, +body.update-core-php #TB_ajaxWindowTitle, +body.index-php #TB_ajaxWindowTitle { + display: none; +} + +body.plugin-install-php .tb-close-icon, +body.import-php .tb-close-icon, +body.plugins-php .tb-close-icon, +body.update-core-php .tb-close-icon, +body.index-php .tb-close-icon { + left: auto; + right: -30px; + color: #eee; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +body.plugin-install-php #TB_closeWindowButton:focus, +body.plugin-install-php #TB_closeWindowButton:focus .tb-close-icon, +body.plugin-install-php .tb-close-icon:focus, +body.plugin-install-php .tb-close-icon:hover, +body.import-php #TB_closeWindowButton:focus, +body.import-php #TB_closeWindowButton:focus .tb-close-icon, +body.import-php .tb-close-icon:focus, +body.import-php .tb-close-icon:hover, +body.plugins-php #TB_closeWindowButton:focus, +body.plugins-php #TB_closeWindowButton:focus .tb-close-icon, +body.plugins-php .tb-close-icon:focus, +body.plugins-php .tb-close-icon:hover, +body.update-core-php #TB_closeWindowButton:focus, +body.update-core-php #TB_closeWindowButton:focus .tb-close-icon, +body.update-core-php .tb-close-icon:focus, +body.update-core-php .tb-close-icon:hover, +body.index-php #TB_closeWindowButton:focus, +body.index-php #TB_closeWindowButton:focus .tb-close-icon, +body.index-php .tb-close-icon:focus, +body.index-php .tb-close-icon:hover { + color: #00a0d2; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +body.plugin-install-php .tb-close-icon:before, +body.import-php .tb-close-icon:before, +body.plugins-php .tb-close-icon:before, +body.update-core-php .tb-close-icon:before, +body.index-php .tb-close-icon:before { + content: "\f335"; + font-size: 32px; +} + +/* move plugin install close icon to top on narrow screens */ +@media screen and ( max-width: 830px ) { + body.plugin-install-php .tb-close-icon, + body.import-php .tb-close-icon, + body.plugins-php .tb-close-icon, + body.update-core-php .tb-close-icon, + body.index-php .tb-close-icon { + right: 0; + top: -30px; + } +} + +/* @todo: move this. */ +img { + border: none; +} + +/* Header */ +/* @todo: are these also specific to Press This? */ +#wphead { + border-bottom: 1px solid #dfdfdf; +} + +#wphead h1 a { + color: #464646; +} + +/* @todo: these seem misplaced */ +.js .meta-box-sortables .postbox:hover .handlediv { + margin-right: 0 !important; +} + +/* Metabox collapse arrow indicators */ +.js .sidebar-name .sidebar-name-arrow:before, +.js .meta-box-sortables .postbox .handlediv:before { + right: 12px; + font: normal 20px/1 'dashicons'; + speak: none; + display: inline-block; + padding: 8px 10px; + top: 0; + position: relative; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; +} + +.js #widgets-left .sidebar-name .sidebar-name-arrow { + display: none; +} + +.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow, +.js #widgets-left .sidebar-name:hover .sidebar-name-arrow { + display: block; +} + +/* Show the arrow only on hover */ +.js .sidebar-name .sidebar-name-arrow:before, +.js .meta-box-sortables .postbox .handlediv:before { + content: '\f142'; +} + +.js .widgets-holder-wrap.closed .sidebar-name-arrow:before, +.js .meta-box-sortables .postbox.closed .handlediv:before { + content: '\f140'; +} + +.error a { + text-decoration: underline; +} + +.updated a { + text-decoration: none; + padding-bottom: 2px; +} + +/* @todo: appears to be Press This only and overridden */ +#photo-add-url-div input[type="text"] { + width: 300px; +} + +/* Theme/Plugin Editor */ +.alignleft h3 { + margin: 0; +} + +#template textarea { + font-family: Consolas, Monaco, monospace; + font-size: 13px; + width: 97%; + background: #f9f9f9; + outline: none; +} + +/* rtl:ignore */ +#template textarea, +#docs-list { + direction: ltr; +} + +#template p { + width: 97%; +} + +#templateside { + float: right; + width: 190px; + word-wrap: break-word; +} + +#templateside h3, +#postcustomstuff p.submit { + margin: 0; +} + +#templateside h4 { + margin: 1em 0 0; +} + +#templateside ol, +#templateside ul { + margin: .5em 0; + padding: 0; +} + +#templateside li { + margin: 4px 0; +} + +#templateside li a, +.theme-editor-php .highlight { + display: block; + padding: 3px 3px 3px 12px; + text-decoration: none; +} + +.theme-editor-php .highlight { + margin: -3px 3px -3px -12px; +} + +#templateside .highlight { + border: none; + font-weight: bold; +} + +.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%; +} + +/* @todo: can we use a common class for these? */ +.nav-menus-php .item-edit:before, +.widget-top a.widget-action:after, +.control-section .accordion-section-title:after, +.accordion-section-title:after { + right: 0; + content: '\f140'; + border: none; + background: none; + 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; +} + +.widget-action, +.handlediv, +.item-edit, +.sidebar-name-arrow, +.accordion-section-title:after { + color: #a0a5aa; +} + +.widget-action:hover, +.handlediv:hover, +.item-edit:hover, +.sidebar-name:hover .sidebar-name-arrow, +.accordion-section-title:hover:after { + color: #777; +} + +.widget-top a.widget-action:after { + padding: 12px 12px 11px; +} + +.widget-top a.widget-action:focus:after { + -webkit-box-shadow: 0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8); + box-shadow: 0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8); +} + +.nav-menus-php .item-edit:before { + line-height: 2.1; +} + +.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 a.widget-action:after { + 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 { + -ms-touch-action: none; + touch-action: none; +} + +/* Accordion */ +.accordion-section { + border-bottom: 1px solid #dfdfdf; + margin: 0; +} + +.accordion-section.open .accordion-section-content, +.no-js .accordion-section .accordion-section-content { + display: block; +} + +.accordion-section.open:hover { + border-bottom-color: #dfdfdf; +} + +.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 #dfdfdf; + border-right: 1px solid #dfdfdf; + -webkit-user-select: none; + -moz-user-select: none; + -ms-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: none; +} + +.accordion-section-title:hover:after, +.accordion-section-title:focus: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 { + border-left: none; + border-right: none; + padding: 10px 10px 11px 14px; + line-height: 21px; + background: #fff; +} + +.control-section .accordion-section-title:after { + top: 11px; +} + +.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: #23282d; + background: #f5f5f5; +} + +.control-section.open .accordion-section-title { + /* When expanded */ + border-bottom: 1px solid #dfdfdf; +} + +/* Edit Site */ +.network-admin .edit-site-actions { + margin-top: 0; +} + +/* My Sites */ +.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 Queries +-------------------------------------------------------------- */ + +/* @todo: de-duplication */ +@media only screen and (min-width: 769px) { + /* categories */ + #col-left { + width: 35%; + } + + #col-right { + width: 65%; + } +} + +@media only screen and (max-width: 860px) { + + /* categories */ + #col-left { + width: 35%; + } + + #col-right { + width: 65%; + } +} + +@media only screen and (min-width: 980px) { + + /* categories */ + #col-left { + width: 35%; + } + + #col-right { + width: 65%; + } +} + +@media only screen and (max-width: 768px) { + /* categories */ + #col-left { + width: 100%; + } + + #col-right { + width: 100%; + } +} + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + /* Back-compat for pre-3.8 */ + div.star-holder, + div.star-holder .star-rating { + background: url(../images/stars-2x.png?ver=20121108) repeat-x bottom left; + -webkit-background-size: 21px 37px; + background-size: 21px 37px; + } + + .spinner { + 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 a.widget-action, + .widget-top a.widget-action:hover, + .sidebar-name-arrow, + .sidebar-name:hover .sidebar-name-arrow, + .meta-box-sortables .postbox:hover .handlediv, + .tagchecklist span a, + #bulk-titles div a, + .tagchecklist span a:hover, + #bulk-titles div a:hover { + background: none !important; + } + +} + +@-ms-viewport { + width: device-width; +} + +@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-wrap { + padding: 0; + } + + /* Hidden Elements */ + #screen-meta, + #screen-meta-links, + #collapse-menu, + .post-format-select { + display: none !important; + } + + .wrap .add-new-h2, /* deprecated */ + .wrap .add-new-h2:active, /* deprecated */ + .wrap .page-title-action, + .wrap .page-title-action:active { + padding: 10px 15px; + font-size: 14px; + white-space: nowrap; + } + + .wp-color-result { + height: auto; + padding-left: 45px; + } + + .wp-color-result:after { + font-size: 14px; + height: auto; + padding: 6px 14px; + } + + /* Feedback Messages */ + .notice, + .wrap div.updated, + .wrap div.error, + .media-upload-form div.error { + 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: -190px; + } + + code { + word-wrap: break-word; + } + + /* General Metabox */ + .postbox { + font-size: 14px; + } + + .metabox-holder h3 { + padding: 12px; + } + + .postbox .handlediv { + margin-top: 3px; + } + + /* Subsubsub Nav */ + .subsubsub { + font-size: 16px; + text-align: center; + margin-bottom: 15px; + } + + /* Theme/Plugin File Editor */ + #templateside { + float: none; + width: auto; + } + + #templateside li { + margin: 0; + } + + #templateside li a { + display: block; + padding: 5px; + } + + #templateside .highlight { + padding: 5px; + margin-left: -5px; + margin-top: -5px; + } + + #template div { + float: none; + margin: 0; + width: auto; + } + + #template textarea { + width: 100%; + } + + .fileedit-sub .alignright { + margin-top: 15px; + } + + #wpfooter { + display: none; + } + + #comments-form .checkforspam { + display: none; + } + + .edit-comment-author { + margin: 2px 0 0; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + /* Disable horizontal scroll when responsive menu is open + since we push the main content off to the right. */ + #wpwrap.wp-responsive-open { + overflow-x: hidden; + } + + html.wp-toolbar { + padding-top: 0; + } + + #wpbody { + padding-top: 46px; + } + + /* Keep full-width boxes on Edit Post page from causing horizontal scroll */ + div#post-body.metabox-holder.columns-1 { + overflow-x: hidden; + } +} + +@media screen and (max-width: 320px) { + /* Prevent default center alignment and larger font for the Right Now widget when + the network dashboard is viewed on a small mobile device. */ + #network_dashboard_right_now .subsubsub { + font-size: 14px; + text-align: left; + } +} diff --git a/wp-admin/css/customize-controls-rtl.css b/wp-admin/css/customize-controls-rtl.css new file mode 100644 index 0000000000..4b67787045 --- /dev/null +++ b/wp-admin/css/customize-controls-rtl.css @@ -0,0 +1,1312 @@ +body { + overflow: hidden; + -webkit-text-size-adjust: 100%; +} + +#customize-controls a { + text-decoration: none; +} + +#customize-controls h3 { + font-size: 14px; +} + +#customize-controls img { + max-width: 100%; +} + +#customize-controls .submit { + text-align: center; +} + +#customize-controls .description { + color: #555; +} + +#customize-header-actions .button-primary { + float: left; + margin-top: 9px; +} + +#customize-header-actions .spinner { + margin-top: 13px; + margin-left: 4px; +} + +.saving #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; +} + +#customize-controls .customize-info { + border: none; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin-bottom: 15px; +} + +#customize-controls .customize-info .accordion-section-title { + background: #fff; + color: #555; + border-right: none; + border-left: none; + border-bottom: none; + cursor: default; +} + +#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: #333; +} + +#customize-controls .customize-info .accordion-section-title:after { + display: none; +} + +#customize-controls .customize-info .preview-notice { + font-size: 13px; + line-height: 24px; +} + +#customize-controls .control-section .customize-section-title h3, +#customize-controls .control-section h3.customize-section-title, +#customize-controls .customize-info .panel-title { + font-size: 20px; + font-weight: 200; + line-height: 24px; + 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; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-appearance: none; + background: transparent; + color: #555; + border: none; +} + +#customize-controls .customize-info .customize-help-toggle:before { + position: absolute; + top: 5px; + right: 6px; +} + +#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: #0073aa; +} + +#customize-controls .customize-info .customize-panel-description { + color: #555; + display: none; + background: #fff; + padding: 12px 15px; + border-top: 1px solid #ddd; +} + +#customize-controls .customize-info .customize-panel-description p:first-child { + margin-top: 0; +} + +#customize-controls .customize-info .customize-panel-description p:last-child { + margin-bottom: 0; +} + +#customize-controls .current-panel .control-section > h3.accordion-section-title { + padding-left: 30px; +} + +#customize-theme-controls .control-section { + border: none; +} + +#customize-theme-controls .accordion-section-title { + color: #555; + background-color: #fff; + border-bottom: 1px solid #eee; +} + +#customize-theme-controls .accordion-section-title:after { + content: "\f341"; +} + +#customize-theme-controls .accordion-section-content { + color: #555; + background: transparent; +} + +#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: #23282d; + background: #f5f5f5; +} + +.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: #f5f5f5; +} + +#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 { + color: #23282d; +} + +#customize-theme-controls .control-section.open { + border-bottom: 1px solid #eee; +} + +#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 > ul { + margin: 0; +} + +#customize-theme-controls .accordion-section-content { + position: absolute; + top: 0; + right: 100%; + width: 100%; + margin: 0; + padding: 12px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.customize-section-description-container { + margin-bottom: 15px; +} + +.customize-section-title { + margin: -12px -12px 0 -12px; + border-bottom: 1px solid #ddd; + background: #fff; +} + +div.customize-section-description { + margin-top: 22px; +} + +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: #555; +} + +#customize-theme-controls { + position: relative; + right: 0; + -webkit-transition: .18s right ease-in-out; + transition: .18s right ease-in-out; +} + +.ios #customize-theme-controls { + -webkit-transition: right 0s; + transition: right 0s; +} + +.section-open #customize-info, +.section-open #customize-theme-controls { + right: -100%; +} + +.accordion-sub-container.control-panel-content { + display: none; + position: absolute; + right: 300px; + top: 0; + width: 300px; + -webkit-transition: right ease-in-out .18s; + transition: right ease-in-out .18s; +} + +.ios .accordion-sub-container.control-panel-content { + -webkit-transition: right 0s; + transition: right 0s; +} + +.accordion-sub-container.control-panel-content.animating { + 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: 45px; + padding: 0 0 0 2px; + background: #eee; + border: none; + border-left: 1px solid #ddd; + color: #444; + text-align: right; + cursor: pointer; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.customize-panel-back, +.customize-section-back { + display: block; + float: right; + width: 48px; + height: 69px; + padding: 0 0 0 24px; + margin: 0; + background: #fff; + border: none; + border-left: 1px solid #ddd; + -webkit-box-shadow: none; + box-shadow: none; + cursor: pointer; + -webkit-transition: right .18s ease-in-out, color .1s ease-in-out, background .1s ease-in-out; + transition: right .18s ease-in-out, color .1s ease-in-out, background .1s ease-in-out; +} + +.customize-section-back { + height: 70px; +} + +.ios .customize-panel-back, +.ios .customize-section-back { + -webkit-transition: right 0s; + transition: right 0s; +} + +.ios .customize-panel-back { + display: none; +} + +.ios .expanded.in-sub-panel .customize-panel-back { + display: block; +} + +.panel-meta.customize-info .accordion-section-title { + margin-right: 48px; +} + +#customize-controls .panel-meta.customize-info .accordion-section-title:hover { + background: #fff; + color: #555; +} + +.customize-controls-close:focus, +.customize-controls-close:hover, +.customize-controls-preview-toggle:focus, +.customize-controls-preview-toggle:hover { + background: #ddd; + border-color: #ccc; + color: #000; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.customize-panel-back:hover, +.customize-panel-back:focus, +.customize-section-back:hover, +.customize-section-back:focus { + color: #23282d; + background: #f5f5f5; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.customize-controls-close:before { + font: normal 22px/45px dashicons; + content: "\f335"; + position: relative; + top: 1px; + right: 13px; +} + +.customize-panel-back:before, +.customize-section-back:before { + font: normal 20px/69px dashicons; + content: "\f345"; + position: relative; + right: 13px; +} + +.wp-full-overlay-sidebar .wp-full-overlay-header { + -webkit-transition: padding ease-in-out .18s; + transition: padding ease-in-out .18s; +} + +.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header { + padding-right: 62px; +} + +#customize-info, +#customize-theme-controls > ul > .accordion-section { + position: relative; + right: 0; + -webkit-transition: right ease-in-out .18s; + transition: right ease-in-out .18s; +} + +.ios #customize-info, +.ios #customize-theme-controls > ul > .accordion-section { + -webkit-transition: right 0s; + transition: right 0s; +} + +.in-sub-panel #customize-info, +.in-sub-panel #customize-theme-controls > ul > .accordion-section { + right: -300px; + width: 300px; +} + +.in-sub-panel #customize-theme-controls .accordion-section.current-panel { + width: 100%; +} + +#customize-theme-controls .control-section.current-panel { + padding: 0; +} + +#customize-theme-controls .control-section > h3.accordion-section-title { + position: relative; + right: 0; +} + +#customize-theme-controls .control-section.current-panel > h3.accordion-section-title { + right: -354px; + -webkit-transition: right ease-in-out .18s; + transition: right ease-in-out .18s; +} + +.ios #customize-theme-controls .control-section.current-panel > h3.accordion-section-title { + -webkit-transition: right 0s; + transition: right 0s; +} + +.wp-full-overlay.section-open #customize-controls .wp-full-overlay-sidebar-content { + visibility: hidden; + overflow-y: hidden; +} + +.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open { + visibility: visible; +} + +.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open .accordion-section-content { + overflow-y: auto; +} + +p.customize-section-description { + font-style: normal; + margin-top: 22px; + margin-bottom: 0; +} + +.customize-control { + width: 100%; + float: right; + clear: both; + 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"] { + width: 98%; + line-height: 18px; + margin: 0; +} + +.customize-control-hidden { + margin: 0; +} + +.customize-control-textarea textarea { + width: 100%; + resize: vertical; +} + +.customize-control select { + min-width: 50%; + max-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: 5px; +} + +.customize-control-description { + display: block; + font-style: italic; + line-height: 18px; + margin-bottom: 5px; +} + +.customize-control-color .color-picker, +.customize-control-checkbox label, +.customize-control-upload div { + line-height: 28px; +} + +.customize-control-checkbox input { + margin-left: 5px; +} + +.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-radio label { + line-height: 32px; +} + +.customize-control-radio input { + margin-left: 5px; +} + +.customize-control .attachment-thumb.type-icon { + float: right; + margin: 10px; + width: auto; +} + +.customize-control .attachment-title { + font-weight: bold; + 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 { + line-height: 0; +} + +.customize-control .thumbnail-image img { + cursor: pointer; +} + +#customize-controls .thumbnail-audio .thumbnail { + max-width: 64px; + max-height: 64px; + margin: 10px; + float: right; +} + +#customize-preview iframe { + width: 100%; + height: 100%; +} + +.wp-full-overlay-sidebar { + background: #eee; + border-left: 1px solid #ddd; +} + +/* Style for custom settings */ + +/* + * Dropdowns + */ +.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; + -ms-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; +} + +/* Color Picker */ +.customize-control-color .color-picker-hex { + display: none; +} + +.customize-control-color.open .color-picker-hex { + display: block; +} + +.customize-control-color .dropdown { + margin-left: 5px; + margin-bottom: 5px; +} + +.customize-control-color .dropdown .dropdown-content { + background-color: #555; + border: 1px solid rgba(0, 0, 0, 0.15); +} + +.customize-control-color .dropdown:hover .dropdown-content { + border-color: rgba(0, 0, 0, 0.25); +} + +/** + * iOS can't scroll iframes, + * instead it expands the iframe size to match the size of the content + */ +.ios .wp-full-overlay { + position: relative; +} + +.ios #customize-preview { + position: relative; +} + +.ios #customize-controls .wp-full-overlay-sidebar-content { + -webkit-overflow-scrolling: touch; +} + +/** Media controls **/ + +.customize-control-media .current, +.customize-control-upload .current, +.customize-control-image .current, +.customize-control-background .current, +.customize-control-cropped_image .current, +.customize-control-site_icon .current, +.customize-control-header .current { + margin-bottom: 8px; +} + +.customize-control-header .uploaded { + margin-bottom: 18px; +} + +.customize-control-header .uploaded button:not(.random), +.customize-control-header .default button:not(.random) { + width: 100%; + padding: 0; + margin: 0; + background: none; + border: none; + color: inherit; + cursor: pointer; +} + +.customize-control-header button img { + display: block; +} + +.customize-control-media .remove-button, +.customize-control-media .default-button, +.customize-control-media .upload-button, +.customize-control-upload .remove-button, +.customize-control-upload .default-button, +.customize-control-upload .upload-button, +.customize-control-image .remove-button, +.customize-control-image .default-button, +.customize-control-image .upload-button, +.customize-control-background .remove-button, +.customize-control-background .default-button, +.customize-control-background .upload-button, +.customize-control-cropped_image .remove-button, +.customize-control-cropped_image .default-button, +.customize-control-cropped_image .upload-button, +.customize-control-site_icon .remove-button, +.customize-control-site_icon .default-button, +.customize-control-site_icon .upload-button, +.customize-control-header button.new, +.customize-control-header button.remove { + white-space: normal; + width: 48%; + height: auto; +} + +.customize-control-media .current .container, +.customize-control-upload .current .container, +.customize-control-image .current .container, +.customize-control-background .current .container, +.customize-control-cropped_image .current .container, +.customize-control-site_icon .current .container, +.customize-control-header .current .container { + overflow: hidden; + -webkit-border-radius: 2px; + border: 1px solid #eee; + -webkit-border-radius: 2px; + border-radius: 2px; +} + +.customize-control-media .current .container, +.customize-control-upload .current .container, +.customize-control-background .current .container, +.customize-control-cropped_image .current .container, +.customize-control-site_icon .current .container, +.customize-control-image .current .container { + min-height: 40px; +} + +.customize-control-media .placeholder, +.customize-control-upload .placeholder, +.customize-control-image .placeholder, +.customize-control-background .placeholder, +.customize-control-cropped_image .placeholder, +.customize-control-site_icon .placeholder, +.customize-control-header .placeholder { + width: 100%; + position: relative; + text-align: center; + cursor: default; +} + +.customize-control-media .inner, +.customize-control-upload .inner, +.customize-control-image .inner, +.customize-control-background .inner, +.customize-control-cropped_image .inner, +.customize-control-site_icon .inner, +.customize-control-header .inner { + display: none; + position: absolute; + width: 100%; + color: #555; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.customize-control-media .inner, +.customize-control-upload .inner, +.customize-control-background .inner, +.customize-control-cropped_image .inner, +.customize-control-site_icon .inner, +.customize-control-image .inner { + display: block; + min-height: 40px; +} + +.customize-control-media .inner, +.customize-control-upload .inner, +.customize-control-image .inner, +.customize-control-background .inner, +.customize-control-cropped_image .inner, +.customize-control-site_icon .inner, +.customize-control-header .inner, +.customize-control-header .inner .dashicons { + line-height: 20px; + top: 10px; +} + +.customize-control-header .list .inner, +.customize-control-header .list .inner .dashicons { + top: 9px; +} + +.customize-control-header .header-view { + position: relative; + width: 100%; + margin-bottom: 5px; +} + +.customize-control-header .header-view:last-child { + margin-bottom: 0px; +} + +/* Convoluted, but 'outline' support isn't good enough yet */ +.customize-control-header .header-view:after { + border: 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; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.customize-control-header .header-view.button.selected { + border: 0; +} + +/* Header control: overlay "close" button */ + +.customize-control-header .uploaded .header-view .close { + font-size: 20px; + color: #fff; + background: #555; + background: rgba(0, 0, 0, 0.5); + position: absolute; + top: 10px; + left: -999px; + z-index: 1; + width: 26px; + height: 26px; + cursor: pointer; +} + +.customize-control-header .header-view:hover .close, +.customize-control-header .header-view .close:focus { + left: 10px; +} + +/* Header control: randomiz(s)er */ + +.customize-control-header .random.placeholder { + cursor: pointer; + -webkit-border-radius: 2px; + 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 .placeholder:hover .dice, +.customize-control-header .header-view:hover > button.random .dice { + -webkit-animation: dice-color-change 3s infinite; + animation: dice-color-change 3s infinite; +} + +@-webkit-keyframes dice-color-change { + 0% { color: #d4b146; } + 50% { color: #ef54b0; } + 75% { color: #7190d3; } + 100% { color: #d4b146; } +} + +@keyframes dice-color-change { + 0% { color: #d4b146; } + 50% { color: #ef54b0; } + 75% { color: #7190d3; } + 100% { color: #d4b146; } +} + +.customize-control-media .actions, +.customize-control-upload .actions, +.customize-control-image .actions, +.customize-control-background .actions, +.customize-control-cropped_image .actions, +.customize-control-site_icon .actions, +.customize-control-header .actions { + margin-bottom: 32px; +} + +.customize-control-header .choice { + position: relative; + display: block; + margin-bottom: 9px; +} + +.customize-control-header .uploaded div:last-child > .choice { + margin-bottom: 0; +} + +.customize-control-media img, +.customize-control-upload img, +.customize-control-image img, +.customize-control-background img, +.customize-control-cropped_image img, +.customize-control-site_icon img, +.customize-control-header img { + width: 100%; + -webkit-border-radius: 2px; + border-radius: 2px; +} + +.customize-control-media .remove-button, +.customize-control-media .default-button, +.customize-control-upload .remove-button, +.customize-control-upload .default-button, +.customize-control-image .remove-button, +.customize-control-image .default-button, +.customize-control-background .remove-button, +.customize-control-background .default-button, +.customize-control-cropped_image .remove-button, +.customize-control-cropped_image .default-button, +.customize-control-site_icon .remove-button, +.customize-control-site_icon .default-button, +.customize-control-header .remove { + float: right; + margin-left: 3px; +} + +.customize-control-media .upload-button, +.customize-control-upload .upload-button, +.customize-control-image .upload-button, +.customize-control-background .upload-button, +.customize-control-cropped_image .upload-button, +.customize-control-site_icon .upload-button, +.customize-control-header .new { + float: left; +} + +/** + * Themes + */ +@-webkit-keyframes customize-reload { + 0% { opacity: 0; } + 100% { opacity: 1; } +} + +@keyframes customize-reload { + 0% { opacity: 0; } + 100% { opacity: 1; } +} + +/* #customize-container is reused from customize-loader.js, hence the naming. */ +.wp-customizer .customize-loading #customize-container { + display: block; + -webkit-animation: customize-reload .75s; /* Can't use `transition` because `display` changes here. */ + animation: customize-reload .75s; +} + +.control-section-themes .accordion-section-title { + cursor: default; +} + +#customize-theme-controls .control-section-themes .accordion-section-title:hover, +#customize-theme-controls .control-section-themes .accordion-section-title:focus { + color: #555; + background-color: #fff; +} + +.control-section-themes .accordion-section-title { + margin: 15px 0; +} + +.customize-themes-panel .accordion-section-title { + margin: 15px -8px; +} + +.control-section-themes .accordion-section-title { + padding-left: 100px; /* Space for the button */ +} + +.control-section-themes .accordion-section-title span.customize-action, +#customize-controls .customize-section-title span.customize-action { + font-size: 13px; + display: block; + font-weight: 400; +} + +.control-section-themes .accordion-section-title .change-theme, +.control-section-themes .accordion-section-title .customize-theme { + position: absolute; + left: 10px; + top: 50%; + margin-top: -14px; + font-weight: normal; +} + +.control-section-themes .accordion-section-title:before { + display: none; +} + +.customize-themes-panel { + display: none; + padding: 0 8px; + background: #f1f1f1; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.customize-themes-panel .accordion-section-title:first-child { + margin-top: 0; +} + +#customize-controls .customize-themes-panel .accordion-section-title:nth-child(2) { + font-size: 14px; + font-weight: 600; +} + +.customize-themes-panel > h2 { + padding: 15px 8px 0 8px; +} + +.control-section.open .customize-themes-panel { + display: block; +} + +#customize-theme-controls .customize-themes-panel .accordion-section-content { + background: transparent; + display: block; +} + +.customize-control.customize-control-theme { + margin-bottom: 8px; +} + +#customize-theme-controls .themes.accordion-section-content { + position: relative; + right: 0; + padding: 0; + width: 100%; +} + +.wp-customizer .theme-browser .themes { + padding-bottom: 8px; +} + +.wp-customizer .theme-browser .theme { + margin: 0; + width: 100%; +} + +.wp-customizer .theme-browser .theme .theme-actions { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + opacity: 1; +} + +#customize-controls h3.theme-name { + font-size: 15px; +} + +#customize-controls .theme-overlay .theme-name { + font-size: 32px; +} + +.wp-customizer #themes-filter { + font-size: 16px; + font-weight: 300; + line-height: 1.5; + width: 100%; +} + +#accordion-section-themes .accordion-section-title:after { + display: none; +} + +#customize-theme-controls .control-section-themes.current-panel > h3.accordion-section-title { + right: 0; +} + +.customize-themes-panel.control-panel-content { + position: absolute; + right: -100%; + top: 0; + width: 100%; + border-top: 1px solid #ddd; +} + +.in-themes-panel #customize-info, +.in-themes-panel #customize-theme-controls > ul > .accordion-section { + right: 100%; +} + +/* Details View */ +.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 .theme-overlay .theme-backdrop { + background: rgba( 238, 238, 238, 0.75 ); + position: fixed; + z-index: 110; +} + +.wp-customizer .theme-overlay .theme-wrap { + right: 90px; + left: 90px; + top: 45px; + bottom: 45px; + z-index: 120; + max-width: 1740px; /* To ensure that theme screenshots are not displayed larger than 880px wide. */ +} + +.wp-customizer .theme-overlay .theme-actions { + text-align: left; /* Because there's only one action, match the pattern of media modals and right-align the action. */ +} + +.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content { + overflow: visible; /* Prevent the top-level Customizer controls from becoming visible when elements on the right of the details modal are focused. */ +} + +.ie8 .wp-customizer .theme-overlay .theme-header, +.ie8 .wp-customizer .theme-overlay .theme-about, +.ie8 .wp-customizer .theme-overlay .theme-actions { + position: static; +} + +/* Small Screens */ +@media (max-width:850px), (max-height:472px) { + .wp-customizer .theme-overlay .theme-wrap { + right: 0; + left: 0; + top: 0; + bottom: 0; + } +} + +/* Handle cheaters. */ +body.cheatin { + font-size: medium; + height: auto; + background: #fff; + margin: 50px auto 2em; + padding: 1em 2em; + max-width: 700px; + min-width: 0; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13); + box-shadow: 0 1px 3px rgba(0,0,0,0.13); +} + +body.cheatin p { + font-size: 14px; + line-height: 1.5; + margin: 25px 0 20px; +} + +/* Responsive */ +.customize-controls-preview-toggle { + display: none; +} + +@media only screen and (max-width: 780px) { + .wp-customizer .theme:not(.active):hover .theme-actions, + .wp-customizer .theme:not(.active):focus .theme-actions { + display: block; + } + + .wp-customizer .theme-browser .theme.active .theme-name span { + display: inline; + } +} + +@media screen and ( max-width: 640px ) { + #customize-controls { + width: 100%; + } + + .wp-full-overlay.expanded { + 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 0 12px; + margin: 0; + height: 45px; + background: #eee; + border-left: 1px solid #ddd; + color: #444; + cursor: pointer; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; + } + + #customize-footer-actions, + #customize-preview, + .customize-controls-preview-toggle .controls, + .preview-only .wp-full-overlay-sidebar-content, + .preview-only .customize-controls-preview-toggle .preview { + display: none; + } + + .customize-controls-preview-toggle .preview:before, + .customize-controls-preview-toggle .controls: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; + } + + #customize-preview { + top: 45px; + bottom: 0; + height: auto; + } + + .wp-core-ui.wp-customizer .button { + padding: 6px 14px; + line-height: normal; + font-size: 14px; + vertical-align: middle; + height: auto; + margin-bottom: 4px; + } + + #customize-header-actions .button-primary { + margin-top: 6px; + } +} diff --git a/wp-admin/css/customize-controls-rtl.min.css b/wp-admin/css/customize-controls-rtl.min.css new file mode 100644 index 0000000000..5a935c3963 --- /dev/null +++ b/wp-admin/css/customize-controls-rtl.min.css @@ -0,0 +1 @@ +body{overflow:hidden;-webkit-text-size-adjust:100%}#customize-controls a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls .description{color:#555}#customize-header-actions .button-primary{float:left;margin-top:9px}#customize-header-actions .spinner{margin-top:13px;margin-left:4px}.saving #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}#customize-controls .customize-info{border:none;border-top:1px solid #ddd;border-bottom:1px solid #ddd;margin-bottom:15px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#555;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:#333}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:24px}#customize-controls .control-section .customize-section-title h3,#customize-controls .control-section h3.customize-section-title,#customize-controls .customize-info .panel-title{font-size:20px;font-weight:200;line-height:24px;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;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;background:0 0;color:#555;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{color:#555;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-left:30px}#customize-theme-controls .control-section{border:none}#customize-theme-controls .accordion-section-title{color:#555;background-color:#fff;border-bottom:1px solid #eee}#customize-theme-controls .accordion-section-title:after{content:"\f341"}#customize-theme-controls .accordion-section-content{color:#555;background:0 0;position:absolute;top:0;right:100%;width:100%;margin:0;padding:12px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#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:#23282d;background:#f5f5f5}.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:#f5f5f5}#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:#23282d}#customize-theme-controls .control-section.open{border-bottom:1px solid #eee}#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>ul{margin:0}.customize-section-description-container{margin-bottom:15px}.customize-section-title{margin:-12px -12px 0;border-bottom:1px solid #ddd;background:#fff}div.customize-section-description{margin-top:22px}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}.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:#555}#customize-theme-controls{position:relative;right:0;-webkit-transition:.18s right ease-in-out;transition:.18s right ease-in-out}.ios #customize-theme-controls{-webkit-transition:right 0s;transition:right 0s}.section-open #customize-info,.section-open #customize-theme-controls{right:-100%}.accordion-sub-container.control-panel-content{display:none;position:absolute;right:300px;top:0;width:300px;-webkit-transition:right ease-in-out .18s;transition:right ease-in-out .18s}.ios .accordion-sub-container.control-panel-content{-webkit-transition:right 0s;transition:right 0s}.accordion-sub-container.control-panel-content.animating{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:45px;padding:0 0 0 2px;background:#eee;border:none;border-left:1px solid #ddd;color:#444;text-align:right;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:right;width:48px;height:69px;padding:0 0 0 24px;margin:0;background:#fff;border:none;border-left:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;-webkit-transition:right .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out;transition:right .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out}.customize-section-back{height:70px}.ios .customize-panel-back,.ios .customize-section-back{-webkit-transition:right 0s;transition:right 0s}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}.panel-meta.customize-info .accordion-section-title{margin-right:48px}#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#555}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#23282d;background:#f5f5f5;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-controls-close:before{font:400 22px/45px dashicons;content:"\f335";position:relative;top:1px;right:13px}.customize-panel-back:before,.customize-section-back:before{font:400 20px/69px dashicons;content:"\f345";position:relative;right:13px}.wp-full-overlay-sidebar .wp-full-overlay-header{-webkit-transition:padding ease-in-out .18s;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-right:62px}#customize-info,#customize-theme-controls>ul>.accordion-section{position:relative;right:0;-webkit-transition:right ease-in-out .18s;transition:right ease-in-out .18s}.ios #customize-info,.ios #customize-theme-controls>ul>.accordion-section{-webkit-transition:right 0s;transition:right 0s}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls>ul>.accordion-section{right:-300px;width:300px}.in-sub-panel #customize-theme-controls .accordion-section.current-panel{width:100%}#customize-theme-controls .control-section.current-panel{padding:0}#customize-theme-controls .control-section>h3.accordion-section-title{position:relative;right:0}#customize-theme-controls .control-section.current-panel>h3.accordion-section-title{right:-354px;-webkit-transition:right ease-in-out .18s;transition:right ease-in-out .18s}.ios #customize-theme-controls .control-section.current-panel>h3.accordion-section-title{-webkit-transition:right 0s;transition:right 0s}.wp-full-overlay.section-open #customize-controls .wp-full-overlay-sidebar-content{visibility:hidden;overflow-y:hidden}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open{visibility:visible}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open .accordion-section-content{overflow-y:auto}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-control{width:100%;float:right;clear:both;margin-bottom:12px}.customize-control input[type=radio],.customize-control input[type=checkbox],.customize-control select{line-height:28px}.customize-control input[type=tel],.customize-control input[type=url],.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]{width:98%;line-height:18px;margin:0}.customize-control-hidden{margin:0}.customize-control-checkbox input,.customize-control-radio input{margin-left:5px}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{min-width:50%;max-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:5px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-bottom:5px}.customize-control-checkbox label,.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.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-radio label{line-height:32px}.customize-control .attachment-thumb.type-icon{float:right;margin:10px;width:auto}.customize-control .attachment-title{font-weight:700;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{line-height:0}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:right}#customize-preview iframe{width:100%;height:100%}.wp-full-overlay-sidebar{background:#eee;border-left:1px solid #ddd}.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;-ms-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:400 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 .color-picker-hex{display:none}.customize-control-color.open .color-picker-hex,.customize-control-header button img{display:block}.customize-control-color .dropdown{margin-left:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#555;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios #customize-preview,.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control-background .current,.customize-control-cropped_image .current,.customize-control-header .current,.customize-control-image .current,.customize-control-media .current,.customize-control-site_icon .current,.customize-control-upload .current{margin-bottom:8px}.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-background .default-button,.customize-control-background .remove-button,.customize-control-background .upload-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-cropped_image .upload-button,.customize-control-header button.new,.customize-control-header button.remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-image .upload-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-media .upload-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-site_icon .upload-button,.customize-control-upload .default-button,.customize-control-upload .remove-button,.customize-control-upload .upload-button{white-space:normal;width:48%;height:auto}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-header .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{overflow:hidden;border:1px solid #eee;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{min-height:40px}.customize-control-background .placeholder,.customize-control-cropped_image .placeholder,.customize-control-header .placeholder,.customize-control-image .placeholder,.customize-control-media .placeholder,.customize-control-site_icon .placeholder,.customize-control-upload .placeholder{width:100%;position:relative;text-align:center;cursor:default}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:none;position:absolute;width:100%;color:#555;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:block;min-height:40px}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-header .inner .dashicons,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{line-height:20px;top:10px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:5px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border: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;-webkit-border-radius:2px;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:#555;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:10px}.customize-control-header .random.placeholder{cursor:pointer;-webkit-border-radius:2px;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{-webkit-animation:dice-color-change 3s infinite;animation:dice-color-change 3s infinite}@-webkit-keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}@keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}.customize-control-background .actions,.customize-control-cropped_image .actions,.customize-control-header .actions,.customize-control-image .actions,.customize-control-media .actions,.customize-control-site_icon .actions,.customize-control-upload .actions{margin-bottom:32px}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control-background img,.customize-control-cropped_image img,.customize-control-header img,.customize-control-image img,.customize-control-media img,.customize-control-site_icon img,.customize-control-upload img{width:100%;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .default-button,.customize-control-background .remove-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-header .remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-upload .default-button,.customize-control-upload .remove-button{float:right;margin-left:3px}.customize-control-background .upload-button,.customize-control-cropped_image .upload-button,.customize-control-header .new,.customize-control-image .upload-button,.customize-control-media .upload-button,.customize-control-site_icon .upload-button,.customize-control-upload .upload-button{float:left}@-webkit-keyframes customize-reload{0%{opacity:0}100%{opacity:1}}@keyframes customize-reload{0%{opacity:0}100%{opacity:1}}.wp-customizer .customize-loading #customize-container{display:block;-webkit-animation:customize-reload .75s;animation:customize-reload .75s}.control-section-themes .accordion-section-title{cursor:default;margin:15px 0;padding-left:100px}#customize-theme-controls .control-section-themes .accordion-section-title:focus,#customize-theme-controls .control-section-themes .accordion-section-title:hover{color:#555;background-color:#fff}.customize-themes-panel .accordion-section-title{margin:15px -8px}#customize-controls .customize-section-title span.customize-action,.control-section-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}.control-section-themes .accordion-section-title .change-theme,.control-section-themes .accordion-section-title .customize-theme{position:absolute;left:10px;top:50%;margin-top:-14px;font-weight:400}.control-section-themes .accordion-section-title:before{display:none}.customize-themes-panel{display:none;padding:0 8px;background:#f1f1f1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.customize-themes-panel .accordion-section-title:first-child{margin-top:0}#customize-controls .customize-themes-panel .accordion-section-title:nth-child(2){font-size:14px;font-weight:600}.customize-themes-panel>h2{padding:15px 8px 0}.control-section.open .customize-themes-panel{display:block}#customize-theme-controls .customize-themes-panel .accordion-section-content{background:0 0;display:block}#accordion-section-themes .accordion-section-title:after,.customize-controls-preview-toggle,.wp-customizer .theme-overlay{display:none}.customize-control.customize-control-theme{margin-bottom:8px}#customize-theme-controls .themes.accordion-section-content{position:relative;right:0;padding:0;width:100%}.wp-customizer .theme-browser .themes{padding-bottom:8px}.wp-customizer .theme-browser .theme{margin:0;width:100%}.wp-customizer .theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.wp-customizer #themes-filter{font-size:16px;font-weight:300;line-height:1.5;width:100%}#customize-theme-controls .control-section-themes.current-panel>h3.accordion-section-title{right:0}.customize-themes-panel.control-panel-content{position:absolute;right:-100%;top:0;width:100%;border-top:1px solid #ddd}.in-themes-panel #customize-info,.in-themes-panel #customize-theme-controls>ul>.accordion-section{right:100%}.wp-customizer.modal-open .theme-overlay{position:fixed;right:0;top:0;left:0;bottom:0;z-index:109}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(238,238,238,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .theme-wrap{right:90px;left:90px;top:45px;bottom:45px;z-index:120;max-width:1740px}.wp-customizer .theme-overlay .theme-actions{text-align:left}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.ie8 .wp-customizer .theme-overlay .theme-about,.ie8 .wp-customizer .theme-overlay .theme-actions,.ie8 .wp-customizer .theme-overlay .theme-header{position:static}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{right:0;left:0;top:0;bottom:0}}body.cheatin{font-size:medium;height:auto;background:#fff;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}@media only screen and (max-width:780px){.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}}@media screen and (max-width:640px){#customize-controls{width:100%}.wp-full-overlay.expanded{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-left:1px solid #ddd;color:#444;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,#customize-preview,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:400 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}#customize-preview{top:45px;bottom:0;height:auto}.wp-core-ui.wp-customizer .button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#customize-header-actions .button-primary{margin-top:6px}} \ No newline at end of file diff --git a/wp-admin/css/customize-controls.css b/wp-admin/css/customize-controls.css new file mode 100644 index 0000000000..46c4170bff --- /dev/null +++ b/wp-admin/css/customize-controls.css @@ -0,0 +1,1312 @@ +body { + overflow: hidden; + -webkit-text-size-adjust: 100%; +} + +#customize-controls a { + text-decoration: none; +} + +#customize-controls h3 { + font-size: 14px; +} + +#customize-controls img { + max-width: 100%; +} + +#customize-controls .submit { + text-align: center; +} + +#customize-controls .description { + color: #555; +} + +#customize-header-actions .button-primary { + float: right; + margin-top: 9px; +} + +#customize-header-actions .spinner { + margin-top: 13px; + margin-right: 4px; +} + +.saving #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; +} + +#customize-controls .customize-info { + border: none; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin-bottom: 15px; +} + +#customize-controls .customize-info .accordion-section-title { + background: #fff; + color: #555; + border-left: none; + border-right: none; + border-bottom: none; + cursor: default; +} + +#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: #333; +} + +#customize-controls .customize-info .accordion-section-title:after { + display: none; +} + +#customize-controls .customize-info .preview-notice { + font-size: 13px; + line-height: 24px; +} + +#customize-controls .control-section .customize-section-title h3, +#customize-controls .control-section h3.customize-section-title, +#customize-controls .customize-info .panel-title { + font-size: 20px; + font-weight: 200; + line-height: 24px; + 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; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-appearance: none; + background: transparent; + color: #555; + border: none; +} + +#customize-controls .customize-info .customize-help-toggle:before { + position: absolute; + top: 5px; + left: 6px; +} + +#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: #0073aa; +} + +#customize-controls .customize-info .customize-panel-description { + color: #555; + display: none; + background: #fff; + padding: 12px 15px; + border-top: 1px solid #ddd; +} + +#customize-controls .customize-info .customize-panel-description p:first-child { + margin-top: 0; +} + +#customize-controls .customize-info .customize-panel-description p:last-child { + margin-bottom: 0; +} + +#customize-controls .current-panel .control-section > h3.accordion-section-title { + padding-right: 30px; +} + +#customize-theme-controls .control-section { + border: none; +} + +#customize-theme-controls .accordion-section-title { + color: #555; + background-color: #fff; + border-bottom: 1px solid #eee; +} + +#customize-theme-controls .accordion-section-title:after { + content: "\f345"; +} + +#customize-theme-controls .accordion-section-content { + color: #555; + background: transparent; +} + +#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: #23282d; + background: #f5f5f5; +} + +.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: #f5f5f5; +} + +#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 { + color: #23282d; +} + +#customize-theme-controls .control-section.open { + border-bottom: 1px solid #eee; +} + +#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 > ul { + margin: 0; +} + +#customize-theme-controls .accordion-section-content { + position: absolute; + top: 0; + left: 100%; + width: 100%; + margin: 0; + padding: 12px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.customize-section-description-container { + margin-bottom: 15px; +} + +.customize-section-title { + margin: -12px -12px 0 -12px; + border-bottom: 1px solid #ddd; + background: #fff; +} + +div.customize-section-description { + margin-top: 22px; +} + +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: #555; +} + +#customize-theme-controls { + position: relative; + left: 0; + -webkit-transition: .18s left ease-in-out; + transition: .18s left ease-in-out; +} + +.ios #customize-theme-controls { + -webkit-transition: left 0s; + transition: left 0s; +} + +.section-open #customize-info, +.section-open #customize-theme-controls { + left: -100%; +} + +.accordion-sub-container.control-panel-content { + display: none; + position: absolute; + left: 300px; + top: 0; + width: 300px; + -webkit-transition: left ease-in-out .18s; + transition: left ease-in-out .18s; +} + +.ios .accordion-sub-container.control-panel-content { + -webkit-transition: left 0s; + transition: left 0s; +} + +.accordion-sub-container.control-panel-content.animating { + 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: 45px; + padding: 0 2px 0 0; + background: #eee; + border: none; + border-right: 1px solid #ddd; + color: #444; + text-align: left; + cursor: pointer; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.customize-panel-back, +.customize-section-back { + display: block; + float: left; + width: 48px; + height: 69px; + padding: 0 24px 0 0; + margin: 0; + background: #fff; + border: none; + border-right: 1px solid #ddd; + -webkit-box-shadow: none; + box-shadow: none; + cursor: pointer; + -webkit-transition: left .18s ease-in-out, color .1s ease-in-out, background .1s ease-in-out; + transition: left .18s ease-in-out, color .1s ease-in-out, background .1s ease-in-out; +} + +.customize-section-back { + height: 70px; +} + +.ios .customize-panel-back, +.ios .customize-section-back { + -webkit-transition: left 0s; + transition: left 0s; +} + +.ios .customize-panel-back { + display: none; +} + +.ios .expanded.in-sub-panel .customize-panel-back { + display: block; +} + +.panel-meta.customize-info .accordion-section-title { + margin-left: 48px; +} + +#customize-controls .panel-meta.customize-info .accordion-section-title:hover { + background: #fff; + color: #555; +} + +.customize-controls-close:focus, +.customize-controls-close:hover, +.customize-controls-preview-toggle:focus, +.customize-controls-preview-toggle:hover { + background: #ddd; + border-color: #ccc; + color: #000; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.customize-panel-back:hover, +.customize-panel-back:focus, +.customize-section-back:hover, +.customize-section-back:focus { + color: #23282d; + background: #f5f5f5; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.customize-controls-close:before { + font: normal 22px/45px dashicons; + content: "\f335"; + position: relative; + top: 1px; + left: 13px; +} + +.customize-panel-back:before, +.customize-section-back:before { + font: normal 20px/69px dashicons; + content: "\f341"; + position: relative; + left: 13px; +} + +.wp-full-overlay-sidebar .wp-full-overlay-header { + -webkit-transition: padding ease-in-out .18s; + transition: padding ease-in-out .18s; +} + +.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header { + padding-left: 62px; +} + +#customize-info, +#customize-theme-controls > ul > .accordion-section { + position: relative; + left: 0; + -webkit-transition: left ease-in-out .18s; + transition: left ease-in-out .18s; +} + +.ios #customize-info, +.ios #customize-theme-controls > ul > .accordion-section { + -webkit-transition: left 0s; + transition: left 0s; +} + +.in-sub-panel #customize-info, +.in-sub-panel #customize-theme-controls > ul > .accordion-section { + left: -300px; + width: 300px; +} + +.in-sub-panel #customize-theme-controls .accordion-section.current-panel { + width: 100%; +} + +#customize-theme-controls .control-section.current-panel { + padding: 0; +} + +#customize-theme-controls .control-section > h3.accordion-section-title { + position: relative; + left: 0; +} + +#customize-theme-controls .control-section.current-panel > h3.accordion-section-title { + left: -354px; + -webkit-transition: left ease-in-out .18s; + transition: left ease-in-out .18s; +} + +.ios #customize-theme-controls .control-section.current-panel > h3.accordion-section-title { + -webkit-transition: left 0s; + transition: left 0s; +} + +.wp-full-overlay.section-open #customize-controls .wp-full-overlay-sidebar-content { + visibility: hidden; + overflow-y: hidden; +} + +.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open { + visibility: visible; +} + +.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open .accordion-section-content { + overflow-y: auto; +} + +p.customize-section-description { + font-style: normal; + margin-top: 22px; + margin-bottom: 0; +} + +.customize-control { + width: 100%; + float: left; + clear: both; + 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"] { + width: 98%; + line-height: 18px; + margin: 0; +} + +.customize-control-hidden { + margin: 0; +} + +.customize-control-textarea textarea { + width: 100%; + resize: vertical; +} + +.customize-control select { + min-width: 50%; + max-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: 5px; +} + +.customize-control-description { + display: block; + font-style: italic; + line-height: 18px; + margin-bottom: 5px; +} + +.customize-control-color .color-picker, +.customize-control-checkbox label, +.customize-control-upload div { + line-height: 28px; +} + +.customize-control-checkbox input { + margin-right: 5px; +} + +.customize-control-radio { + padding: 5px 0 10px; +} + +.customize-control-radio .customize-control-title { + margin-bottom: 0; + line-height: 22px; +} + +.customize-control-radio .customize-control-title + .customize-control-description { + margin-top: 7px; +} + +.customize-control-radio label { + line-height: 32px; +} + +.customize-control-radio input { + margin-right: 5px; +} + +.customize-control .attachment-thumb.type-icon { + float: left; + margin: 10px; + width: auto; +} + +.customize-control .attachment-title { + font-weight: bold; + 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 { + line-height: 0; +} + +.customize-control .thumbnail-image img { + cursor: pointer; +} + +#customize-controls .thumbnail-audio .thumbnail { + max-width: 64px; + max-height: 64px; + margin: 10px; + float: left; +} + +#customize-preview iframe { + width: 100%; + height: 100%; +} + +.wp-full-overlay-sidebar { + background: #eee; + border-right: 1px solid #ddd; +} + +/* Style for custom settings */ + +/* + * Dropdowns + */ +.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; + -ms-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; +} + +/* Color Picker */ +.customize-control-color .color-picker-hex { + display: none; +} + +.customize-control-color.open .color-picker-hex { + display: block; +} + +.customize-control-color .dropdown { + margin-right: 5px; + margin-bottom: 5px; +} + +.customize-control-color .dropdown .dropdown-content { + background-color: #555; + border: 1px solid rgba(0, 0, 0, 0.15); +} + +.customize-control-color .dropdown:hover .dropdown-content { + border-color: rgba(0, 0, 0, 0.25); +} + +/** + * iOS can't scroll iframes, + * instead it expands the iframe size to match the size of the content + */ +.ios .wp-full-overlay { + position: relative; +} + +.ios #customize-preview { + position: relative; +} + +.ios #customize-controls .wp-full-overlay-sidebar-content { + -webkit-overflow-scrolling: touch; +} + +/** Media controls **/ + +.customize-control-media .current, +.customize-control-upload .current, +.customize-control-image .current, +.customize-control-background .current, +.customize-control-cropped_image .current, +.customize-control-site_icon .current, +.customize-control-header .current { + margin-bottom: 8px; +} + +.customize-control-header .uploaded { + margin-bottom: 18px; +} + +.customize-control-header .uploaded button:not(.random), +.customize-control-header .default button:not(.random) { + width: 100%; + padding: 0; + margin: 0; + background: none; + border: none; + color: inherit; + cursor: pointer; +} + +.customize-control-header button img { + display: block; +} + +.customize-control-media .remove-button, +.customize-control-media .default-button, +.customize-control-media .upload-button, +.customize-control-upload .remove-button, +.customize-control-upload .default-button, +.customize-control-upload .upload-button, +.customize-control-image .remove-button, +.customize-control-image .default-button, +.customize-control-image .upload-button, +.customize-control-background .remove-button, +.customize-control-background .default-button, +.customize-control-background .upload-button, +.customize-control-cropped_image .remove-button, +.customize-control-cropped_image .default-button, +.customize-control-cropped_image .upload-button, +.customize-control-site_icon .remove-button, +.customize-control-site_icon .default-button, +.customize-control-site_icon .upload-button, +.customize-control-header button.new, +.customize-control-header button.remove { + white-space: normal; + width: 48%; + height: auto; +} + +.customize-control-media .current .container, +.customize-control-upload .current .container, +.customize-control-image .current .container, +.customize-control-background .current .container, +.customize-control-cropped_image .current .container, +.customize-control-site_icon .current .container, +.customize-control-header .current .container { + overflow: hidden; + -webkit-border-radius: 2px; + border: 1px solid #eee; + -webkit-border-radius: 2px; + border-radius: 2px; +} + +.customize-control-media .current .container, +.customize-control-upload .current .container, +.customize-control-background .current .container, +.customize-control-cropped_image .current .container, +.customize-control-site_icon .current .container, +.customize-control-image .current .container { + min-height: 40px; +} + +.customize-control-media .placeholder, +.customize-control-upload .placeholder, +.customize-control-image .placeholder, +.customize-control-background .placeholder, +.customize-control-cropped_image .placeholder, +.customize-control-site_icon .placeholder, +.customize-control-header .placeholder { + width: 100%; + position: relative; + text-align: center; + cursor: default; +} + +.customize-control-media .inner, +.customize-control-upload .inner, +.customize-control-image .inner, +.customize-control-background .inner, +.customize-control-cropped_image .inner, +.customize-control-site_icon .inner, +.customize-control-header .inner { + display: none; + position: absolute; + width: 100%; + color: #555; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.customize-control-media .inner, +.customize-control-upload .inner, +.customize-control-background .inner, +.customize-control-cropped_image .inner, +.customize-control-site_icon .inner, +.customize-control-image .inner { + display: block; + min-height: 40px; +} + +.customize-control-media .inner, +.customize-control-upload .inner, +.customize-control-image .inner, +.customize-control-background .inner, +.customize-control-cropped_image .inner, +.customize-control-site_icon .inner, +.customize-control-header .inner, +.customize-control-header .inner .dashicons { + line-height: 20px; + top: 10px; +} + +.customize-control-header .list .inner, +.customize-control-header .list .inner .dashicons { + top: 9px; +} + +.customize-control-header .header-view { + position: relative; + width: 100%; + margin-bottom: 5px; +} + +.customize-control-header .header-view:last-child { + margin-bottom: 0px; +} + +/* Convoluted, but 'outline' support isn't good enough yet */ +.customize-control-header .header-view:after { + border: 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; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.customize-control-header .header-view.button.selected { + border: 0; +} + +/* Header control: overlay "close" button */ + +.customize-control-header .uploaded .header-view .close { + font-size: 20px; + color: #fff; + background: #555; + background: rgba(0, 0, 0, 0.5); + position: absolute; + top: 10px; + right: -999px; + z-index: 1; + width: 26px; + height: 26px; + cursor: pointer; +} + +.customize-control-header .header-view:hover .close, +.customize-control-header .header-view .close:focus { + right: 10px; +} + +/* Header control: randomiz(s)er */ + +.customize-control-header .random.placeholder { + cursor: pointer; + -webkit-border-radius: 2px; + 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 .placeholder:hover .dice, +.customize-control-header .header-view:hover > button.random .dice { + -webkit-animation: dice-color-change 3s infinite; + animation: dice-color-change 3s infinite; +} + +@-webkit-keyframes dice-color-change { + 0% { color: #d4b146; } + 50% { color: #ef54b0; } + 75% { color: #7190d3; } + 100% { color: #d4b146; } +} + +@keyframes dice-color-change { + 0% { color: #d4b146; } + 50% { color: #ef54b0; } + 75% { color: #7190d3; } + 100% { color: #d4b146; } +} + +.customize-control-media .actions, +.customize-control-upload .actions, +.customize-control-image .actions, +.customize-control-background .actions, +.customize-control-cropped_image .actions, +.customize-control-site_icon .actions, +.customize-control-header .actions { + margin-bottom: 32px; +} + +.customize-control-header .choice { + position: relative; + display: block; + margin-bottom: 9px; +} + +.customize-control-header .uploaded div:last-child > .choice { + margin-bottom: 0; +} + +.customize-control-media img, +.customize-control-upload img, +.customize-control-image img, +.customize-control-background img, +.customize-control-cropped_image img, +.customize-control-site_icon img, +.customize-control-header img { + width: 100%; + -webkit-border-radius: 2px; + border-radius: 2px; +} + +.customize-control-media .remove-button, +.customize-control-media .default-button, +.customize-control-upload .remove-button, +.customize-control-upload .default-button, +.customize-control-image .remove-button, +.customize-control-image .default-button, +.customize-control-background .remove-button, +.customize-control-background .default-button, +.customize-control-cropped_image .remove-button, +.customize-control-cropped_image .default-button, +.customize-control-site_icon .remove-button, +.customize-control-site_icon .default-button, +.customize-control-header .remove { + float: left; + margin-right: 3px; +} + +.customize-control-media .upload-button, +.customize-control-upload .upload-button, +.customize-control-image .upload-button, +.customize-control-background .upload-button, +.customize-control-cropped_image .upload-button, +.customize-control-site_icon .upload-button, +.customize-control-header .new { + float: right; +} + +/** + * Themes + */ +@-webkit-keyframes customize-reload { + 0% { opacity: 0; } + 100% { opacity: 1; } +} + +@keyframes customize-reload { + 0% { opacity: 0; } + 100% { opacity: 1; } +} + +/* #customize-container is reused from customize-loader.js, hence the naming. */ +.wp-customizer .customize-loading #customize-container { + display: block; + -webkit-animation: customize-reload .75s; /* Can't use `transition` because `display` changes here. */ + animation: customize-reload .75s; +} + +.control-section-themes .accordion-section-title { + cursor: default; +} + +#customize-theme-controls .control-section-themes .accordion-section-title:hover, +#customize-theme-controls .control-section-themes .accordion-section-title:focus { + color: #555; + background-color: #fff; +} + +.control-section-themes .accordion-section-title { + margin: 15px 0; +} + +.customize-themes-panel .accordion-section-title { + margin: 15px -8px; +} + +.control-section-themes .accordion-section-title { + padding-right: 100px; /* Space for the button */ +} + +.control-section-themes .accordion-section-title span.customize-action, +#customize-controls .customize-section-title span.customize-action { + font-size: 13px; + display: block; + font-weight: 400; +} + +.control-section-themes .accordion-section-title .change-theme, +.control-section-themes .accordion-section-title .customize-theme { + position: absolute; + right: 10px; + top: 50%; + margin-top: -14px; + font-weight: normal; +} + +.control-section-themes .accordion-section-title:before { + display: none; +} + +.customize-themes-panel { + display: none; + padding: 0 8px; + background: #f1f1f1; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.customize-themes-panel .accordion-section-title:first-child { + margin-top: 0; +} + +#customize-controls .customize-themes-panel .accordion-section-title:nth-child(2) { + font-size: 14px; + font-weight: 600; +} + +.customize-themes-panel > h2 { + padding: 15px 8px 0 8px; +} + +.control-section.open .customize-themes-panel { + display: block; +} + +#customize-theme-controls .customize-themes-panel .accordion-section-content { + background: transparent; + display: block; +} + +.customize-control.customize-control-theme { + margin-bottom: 8px; +} + +#customize-theme-controls .themes.accordion-section-content { + position: relative; + left: 0; + padding: 0; + width: 100%; +} + +.wp-customizer .theme-browser .themes { + padding-bottom: 8px; +} + +.wp-customizer .theme-browser .theme { + margin: 0; + width: 100%; +} + +.wp-customizer .theme-browser .theme .theme-actions { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + opacity: 1; +} + +#customize-controls h3.theme-name { + font-size: 15px; +} + +#customize-controls .theme-overlay .theme-name { + font-size: 32px; +} + +.wp-customizer #themes-filter { + font-size: 16px; + font-weight: 300; + line-height: 1.5; + width: 100%; +} + +#accordion-section-themes .accordion-section-title:after { + display: none; +} + +#customize-theme-controls .control-section-themes.current-panel > h3.accordion-section-title { + left: 0; +} + +.customize-themes-panel.control-panel-content { + position: absolute; + left: -100%; + top: 0; + width: 100%; + border-top: 1px solid #ddd; +} + +.in-themes-panel #customize-info, +.in-themes-panel #customize-theme-controls > ul > .accordion-section { + left: 100%; +} + +/* Details View */ +.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 .theme-overlay .theme-backdrop { + background: rgba( 238, 238, 238, 0.75 ); + position: fixed; + z-index: 110; +} + +.wp-customizer .theme-overlay .theme-wrap { + left: 90px; + right: 90px; + top: 45px; + bottom: 45px; + z-index: 120; + max-width: 1740px; /* To ensure that theme screenshots are not displayed larger than 880px wide. */ +} + +.wp-customizer .theme-overlay .theme-actions { + text-align: right; /* Because there's only one action, match the pattern of media modals and right-align the action. */ +} + +.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content { + overflow: visible; /* Prevent the top-level Customizer controls from becoming visible when elements on the right of the details modal are focused. */ +} + +.ie8 .wp-customizer .theme-overlay .theme-header, +.ie8 .wp-customizer .theme-overlay .theme-about, +.ie8 .wp-customizer .theme-overlay .theme-actions { + position: static; +} + +/* Small Screens */ +@media (max-width:850px), (max-height:472px) { + .wp-customizer .theme-overlay .theme-wrap { + left: 0; + right: 0; + top: 0; + bottom: 0; + } +} + +/* Handle cheaters. */ +body.cheatin { + font-size: medium; + height: auto; + background: #fff; + margin: 50px auto 2em; + padding: 1em 2em; + max-width: 700px; + min-width: 0; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13); + box-shadow: 0 1px 3px rgba(0,0,0,0.13); +} + +body.cheatin p { + font-size: 14px; + line-height: 1.5; + margin: 25px 0 20px; +} + +/* Responsive */ +.customize-controls-preview-toggle { + display: none; +} + +@media only screen and (max-width: 780px) { + .wp-customizer .theme:not(.active):hover .theme-actions, + .wp-customizer .theme:not(.active):focus .theme-actions { + display: block; + } + + .wp-customizer .theme-browser .theme.active .theme-name span { + display: inline; + } +} + +@media screen and ( max-width: 640px ) { + #customize-controls { + width: 100%; + } + + .wp-full-overlay.expanded { + 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 0 12px; + margin: 0; + height: 45px; + background: #eee; + border-right: 1px solid #ddd; + color: #444; + cursor: pointer; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; + } + + #customize-footer-actions, + #customize-preview, + .customize-controls-preview-toggle .controls, + .preview-only .wp-full-overlay-sidebar-content, + .preview-only .customize-controls-preview-toggle .preview { + display: none; + } + + .customize-controls-preview-toggle .preview:before, + .customize-controls-preview-toggle .controls: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; + } + + #customize-preview { + top: 45px; + bottom: 0; + height: auto; + } + + .wp-core-ui.wp-customizer .button { + padding: 6px 14px; + line-height: normal; + font-size: 14px; + vertical-align: middle; + height: auto; + margin-bottom: 4px; + } + + #customize-header-actions .button-primary { + margin-top: 6px; + } +} diff --git a/wp-admin/css/customize-controls.min.css b/wp-admin/css/customize-controls.min.css new file mode 100644 index 0000000000..159987bdca --- /dev/null +++ b/wp-admin/css/customize-controls.min.css @@ -0,0 +1 @@ +body{overflow:hidden;-webkit-text-size-adjust:100%}#customize-controls a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls .description{color:#555}#customize-header-actions .button-primary{float:right;margin-top:9px}#customize-header-actions .spinner{margin-top:13px;margin-right:4px}.saving #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}#customize-controls .customize-info{border:none;border-top:1px solid #ddd;border-bottom:1px solid #ddd;margin-bottom:15px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#555;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:#333}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:24px}#customize-controls .control-section .customize-section-title h3,#customize-controls .control-section h3.customize-section-title,#customize-controls .customize-info .panel-title{font-size:20px;font-weight:200;line-height:24px;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;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;background:0 0;color:#555;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{color:#555;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-right:30px}#customize-theme-controls .control-section{border:none}#customize-theme-controls .accordion-section-title{color:#555;background-color:#fff;border-bottom:1px solid #eee}#customize-theme-controls .accordion-section-title:after{content:"\f345"}#customize-theme-controls .accordion-section-content{color:#555;background:0 0;position:absolute;top:0;left:100%;width:100%;margin:0;padding:12px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#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:#23282d;background:#f5f5f5}.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:#f5f5f5}#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:#23282d}#customize-theme-controls .control-section.open{border-bottom:1px solid #eee}#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>ul{margin:0}.customize-section-description-container{margin-bottom:15px}.customize-section-title{margin:-12px -12px 0;border-bottom:1px solid #ddd;background:#fff}div.customize-section-description{margin-top:22px}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}.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:#555}#customize-theme-controls{position:relative;left:0;-webkit-transition:.18s left ease-in-out;transition:.18s left ease-in-out}.ios #customize-theme-controls{-webkit-transition:left 0s;transition:left 0s}.section-open #customize-info,.section-open #customize-theme-controls{left:-100%}.accordion-sub-container.control-panel-content{display:none;position:absolute;left:300px;top:0;width:300px;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.ios .accordion-sub-container.control-panel-content{-webkit-transition:left 0s;transition:left 0s}.accordion-sub-container.control-panel-content.animating{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:45px;padding:0 2px 0 0;background:#eee;border:none;border-right:1px solid #ddd;color:#444;text-align:left;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:left;width:48px;height:69px;padding:0 24px 0 0;margin:0;background:#fff;border:none;border-right:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;-webkit-transition:left .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out;transition:left .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out}.customize-section-back{height:70px}.ios .customize-panel-back,.ios .customize-section-back{-webkit-transition:left 0s;transition:left 0s}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}.panel-meta.customize-info .accordion-section-title{margin-left:48px}#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#555}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#23282d;background:#f5f5f5;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-controls-close:before{font:400 22px/45px dashicons;content:"\f335";position:relative;top:1px;left:13px}.customize-panel-back:before,.customize-section-back:before{font:400 20px/69px dashicons;content:"\f341";position:relative;left:13px}.wp-full-overlay-sidebar .wp-full-overlay-header{-webkit-transition:padding ease-in-out .18s;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-left:62px}#customize-info,#customize-theme-controls>ul>.accordion-section{position:relative;left:0;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.ios #customize-info,.ios #customize-theme-controls>ul>.accordion-section{-webkit-transition:left 0s;transition:left 0s}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls>ul>.accordion-section{left:-300px;width:300px}.in-sub-panel #customize-theme-controls .accordion-section.current-panel{width:100%}#customize-theme-controls .control-section.current-panel{padding:0}#customize-theme-controls .control-section>h3.accordion-section-title{position:relative;left:0}#customize-theme-controls .control-section.current-panel>h3.accordion-section-title{left:-354px;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.ios #customize-theme-controls .control-section.current-panel>h3.accordion-section-title{-webkit-transition:left 0s;transition:left 0s}.wp-full-overlay.section-open #customize-controls .wp-full-overlay-sidebar-content{visibility:hidden;overflow-y:hidden}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open{visibility:visible}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open .accordion-section-content{overflow-y:auto}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-control{width:100%;float:left;clear:both;margin-bottom:12px}.customize-control input[type=radio],.customize-control input[type=checkbox],.customize-control select{line-height:28px}.customize-control input[type=tel],.customize-control input[type=url],.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]{width:98%;line-height:18px;margin:0}.customize-control-hidden{margin:0}.customize-control-checkbox input,.customize-control-radio input{margin-right:5px}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{min-width:50%;max-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:5px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-bottom:5px}.customize-control-checkbox label,.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.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-radio label{line-height:32px}.customize-control .attachment-thumb.type-icon{float:left;margin:10px;width:auto}.customize-control .attachment-title{font-weight:700;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{line-height:0}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:left}#customize-preview iframe{width:100%;height:100%}.wp-full-overlay-sidebar{background:#eee;border-right:1px solid #ddd}.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;-ms-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:400 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 .color-picker-hex{display:none}.customize-control-color.open .color-picker-hex,.customize-control-header button img{display:block}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#555;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios #customize-preview,.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control-background .current,.customize-control-cropped_image .current,.customize-control-header .current,.customize-control-image .current,.customize-control-media .current,.customize-control-site_icon .current,.customize-control-upload .current{margin-bottom:8px}.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-background .default-button,.customize-control-background .remove-button,.customize-control-background .upload-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-cropped_image .upload-button,.customize-control-header button.new,.customize-control-header button.remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-image .upload-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-media .upload-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-site_icon .upload-button,.customize-control-upload .default-button,.customize-control-upload .remove-button,.customize-control-upload .upload-button{white-space:normal;width:48%;height:auto}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-header .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{overflow:hidden;border:1px solid #eee;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{min-height:40px}.customize-control-background .placeholder,.customize-control-cropped_image .placeholder,.customize-control-header .placeholder,.customize-control-image .placeholder,.customize-control-media .placeholder,.customize-control-site_icon .placeholder,.customize-control-upload .placeholder{width:100%;position:relative;text-align:center;cursor:default}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:none;position:absolute;width:100%;color:#555;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:block;min-height:40px}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-header .inner .dashicons,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{line-height:20px;top:10px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:5px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border: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;-webkit-border-radius:2px;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:#555;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:10px}.customize-control-header .random.placeholder{cursor:pointer;-webkit-border-radius:2px;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{-webkit-animation:dice-color-change 3s infinite;animation:dice-color-change 3s infinite}@-webkit-keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}@keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}.customize-control-background .actions,.customize-control-cropped_image .actions,.customize-control-header .actions,.customize-control-image .actions,.customize-control-media .actions,.customize-control-site_icon .actions,.customize-control-upload .actions{margin-bottom:32px}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control-background img,.customize-control-cropped_image img,.customize-control-header img,.customize-control-image img,.customize-control-media img,.customize-control-site_icon img,.customize-control-upload img{width:100%;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .default-button,.customize-control-background .remove-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-header .remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-upload .default-button,.customize-control-upload .remove-button{float:left;margin-right:3px}.customize-control-background .upload-button,.customize-control-cropped_image .upload-button,.customize-control-header .new,.customize-control-image .upload-button,.customize-control-media .upload-button,.customize-control-site_icon .upload-button,.customize-control-upload .upload-button{float:right}@-webkit-keyframes customize-reload{0%{opacity:0}100%{opacity:1}}@keyframes customize-reload{0%{opacity:0}100%{opacity:1}}.wp-customizer .customize-loading #customize-container{display:block;-webkit-animation:customize-reload .75s;animation:customize-reload .75s}.control-section-themes .accordion-section-title{cursor:default;margin:15px 0;padding-right:100px}#customize-theme-controls .control-section-themes .accordion-section-title:focus,#customize-theme-controls .control-section-themes .accordion-section-title:hover{color:#555;background-color:#fff}.customize-themes-panel .accordion-section-title{margin:15px -8px}#customize-controls .customize-section-title span.customize-action,.control-section-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}.control-section-themes .accordion-section-title .change-theme,.control-section-themes .accordion-section-title .customize-theme{position:absolute;right:10px;top:50%;margin-top:-14px;font-weight:400}.control-section-themes .accordion-section-title:before{display:none}.customize-themes-panel{display:none;padding:0 8px;background:#f1f1f1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.customize-themes-panel .accordion-section-title:first-child{margin-top:0}#customize-controls .customize-themes-panel .accordion-section-title:nth-child(2){font-size:14px;font-weight:600}.customize-themes-panel>h2{padding:15px 8px 0}.control-section.open .customize-themes-panel{display:block}#customize-theme-controls .customize-themes-panel .accordion-section-content{background:0 0;display:block}#accordion-section-themes .accordion-section-title:after,.customize-controls-preview-toggle,.wp-customizer .theme-overlay{display:none}.customize-control.customize-control-theme{margin-bottom:8px}#customize-theme-controls .themes.accordion-section-content{position:relative;left:0;padding:0;width:100%}.wp-customizer .theme-browser .themes{padding-bottom:8px}.wp-customizer .theme-browser .theme{margin:0;width:100%}.wp-customizer .theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.wp-customizer #themes-filter{font-size:16px;font-weight:300;line-height:1.5;width:100%}#customize-theme-controls .control-section-themes.current-panel>h3.accordion-section-title{left:0}.customize-themes-panel.control-panel-content{position:absolute;left:-100%;top:0;width:100%;border-top:1px solid #ddd}.in-themes-panel #customize-info,.in-themes-panel #customize-theme-controls>ul>.accordion-section{left:100%}.wp-customizer.modal-open .theme-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:109}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(238,238,238,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .theme-wrap{left:90px;right:90px;top:45px;bottom:45px;z-index:120;max-width:1740px}.wp-customizer .theme-overlay .theme-actions{text-align:right}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.ie8 .wp-customizer .theme-overlay .theme-about,.ie8 .wp-customizer .theme-overlay .theme-actions,.ie8 .wp-customizer .theme-overlay .theme-header{position:static}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{left:0;right:0;top:0;bottom:0}}body.cheatin{font-size:medium;height:auto;background:#fff;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}@media only screen and (max-width:780px){.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}}@media screen and (max-width:640px){#customize-controls{width:100%}.wp-full-overlay.expanded{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-right:1px solid #ddd;color:#444;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,#customize-preview,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:400 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}#customize-preview{top:45px;bottom:0;height:auto}.wp-core-ui.wp-customizer .button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#customize-header-actions .button-primary{margin-top:6px}} \ 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 new file mode 100644 index 0000000000..726a1611a8 --- /dev/null +++ b/wp-admin/css/customize-nav-menus-rtl.css @@ -0,0 +1,1091 @@ +#accordion-section-menu_locations { + position: relative; + margin-bottom: 15px; +} + +.menu-in-location, +.menu-in-locations { + display: block; + font-weight: 600; + font-size: 10px; +} + +#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, +#customize-controls .control-section .accordion-section-title:focus .menu-in-locations, +#customize-controls .control-section .accordion-section-title:hover .menu-in-locations { + color: #555; +} + +.wp-customizer .menu-item-bar .menu-item-handle, +.wp-customizer .menu-item-settings, +.wp-customizer .menu-item-settings .description-thin { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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-settings { + max-width: 100%; + overflow: hidden; + 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 { + display: block; + float: right; + margin: 6px 0 0; + padding: 0; + cursor: pointer; +} + +.wp-customizer .menu-item .submitbox .submitdelete:focus { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +/* Menu-item reordering nav. */ +.customize-control-nav_menu .reordering .reorder, +.customize-control-nav_menu .reorder-done { + display: none; +} + +.customize-control-nav_menu .reorder, +.customize-control-nav_menu .reordering .reorder-done { + display: inline-block; + padding: 5px 8px; +} + +.menu-item-reorder-nav { + display: none; + background-color: #fff; + position: absolute; + top: 0; + left: 0; +} + +.customize-control-nav_menu .reordering .add-new-menu-item { + opacity: 0.2; + pointer-events: none; + cursor: not-allowed; +} + +.menu-item-reorder-nav button { + position: relative; + overflow: hidden; + float: right; + display: block; + width: 30px; + height: 40px; + color: #82878c; + text-indent: -9999px; + cursor: pointer; + background: transparent; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + outline: none; +} + +.menu-item-reorder-nav button:before { + display: inline-block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + font: normal 20px/40px dashicons; + text-align: center; + text-indent: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.menu-item-reorder-nav button:hover, +.menu-item-reorder-nav button:focus { + color: #191e23; + background: #eee; +} + +.menus-move-down:before { + content: '\f347'; +} + +.menus-move-up:before { + content: '\f343'; +} + +.menus-move-left:before { + content: '\f341'; +} + +.menus-move-right:before { + content: '\f345'; +} + +.move-up-disabled .menus-move-up, +.move-down-disabled .menus-move-down, +.move-right-disabled .menus-move-right, +.move-left-disabled .menus-move-left { + color: #d5d5d5 !important; + background-color: #fff !important; + cursor: default; + pointer-events: none; +} + +.menu-item-reorder-nav:before { + content: ""; + display: block; + position: absolute; + right: -10px; + width: 10px; + height: 40px; + background: -webkit-linear-gradient(right, rgba(250,250,250,0) 0%,rgba(250,250,250,1) 100%); + background: -webkit-gradient(linear, right top, left top, from(rgba(250,250,250,0)), to(rgba(250,250,250,1))); + background: -webkit-linear-gradient(right, rgba(250,250,250,0) 0%, rgba(250,250,250,1) 100%); + background: linear-gradient(to left, rgba(250,250,250,0) 0%,rgba(250,250,250,1) 100%); +} + +.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%; /* Override the 98% default for customizer inputs, to align with the size of menu items. */ + margin: 12px 0; +} + +.wp-customizer .menu-item .item-edit { + position: absolute; + left: -19px; + top: 2px; + display: block; + width: 30px; + height: 38px; + margin-left: 0 !important; + outline: none; + overflow: hidden; + cursor: pointer; +} + +.customize-control-nav_menu_item .item-edit:focus { + color: #0073aa; + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +/* rework the arrow indicator implementation for NVDA bug same as #32715 */ +.wp-customizer .menu-item .item-edit .toggle-indicator { + display: inline-block; + font-size: 20px; + line-height: 1; +} + +.wp-customizer .menu-item .item-edit .toggle-indicator:after { + content: '\f140'; + font: normal 20px/1 dashicons; + color: #a0a5aa; + vertical-align: top; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; +} + +.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:after { + 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; +} + +.menu-settings .customize-control-checkbox label { + line-height: 1; +} + +/* @todo update selector or potentially remove */ +.menu-settings .customize-control.customize-control-checkbox { + margin-bottom: 8px; /* Override collapsing at smaller viewports. */ +} + +.customize-control-menu { + margin-top: 4px; +} + +#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle { + color: #555; +} + +/* Screen Options */ +.customize-screen-options-toggle { + background: none; + 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-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: #0073aa; +} + +.customize-screen-options-toggle:focus, +#customize-controls .customize-info .customize-help-toggle:focus { + outline: none; +} + +.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-screen-options-toggle:focus:before, +#customize-controls .customize-info .customize-help-toggle:focus:before { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + -webkit-border-radius: 100%; + border-radius: 100%; +} + +.wp-customizer #screen-options-wrap { + display: none; + background: #fff; + border-top: 1px solid #ddd; + padding: 4px 15px 0; +} + +.wp-customizer .metabox-prefs label { + display: block; + padding-left: 0; + line-height: 30px; +} + +#accordion-panel-nav_menus .field-link-target, +#accordion-panel-nav_menus .field-attr-title, +#accordion-panel-nav_menus .field-css-classes, +#accordion-panel-nav_menus .field-xfn, +#accordion-panel-nav_menus .field-description { + display: none; +} + +#accordion-panel-nav_menus.field-link-target-active .field-link-target, +#accordion-panel-nav_menus.field-attr-title-active .field-attr-title, +#accordion-panel-nav_menus.field-css-classes-active .field-css-classes, +#accordion-panel-nav_menus.field-xfn-active .field-xfn, +#accordion-panel-nav_menus.field-description-active .field-description { + display: block; +} + +/* WARNING: The 20px factor is hard-coded in JS. */ +.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; } /* Not likely to be used or useful beyond this depth */ +.menu-item-depth-9 { margin-right: 180px; } +.menu-item-depth-10 { margin-right: 200px; } +.menu-item-depth-11 { margin-right: 220px; } + +/* @todo handle .menu-item-settings width */ +.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; } + +/* Submenu left margin. */ +.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; } + +/* WARNING: The 20px factor is hard-coded in JS. */ +.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; } /* Not likely to be used or useful beyond this depth */ +.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: -webkit-calc(100% - 2px); + 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; +} + +/* + * Add-menu-items mode. + */ +.wp-full-overlay-main { + left: auto; /* This overrides a right: 0; which causes the preview to resize rather than slide off screen at the normal size. */ + width: 100%; +} + +.adding-menu-items .control-section { + opacity: .4; +} + +.adding-menu-items .control-panel.control-section, +.adding-menu-items .control-section.open { + opacity: 1; +} + +/* Add-new button. */ +#customize-theme-controls .add-new-menu-item { + cursor: pointer; + float: left; + margin-right: 10px; + -webkit-transition: all 0.2s; + transition: all 0.2s; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + outline: none; +} + +.add-new-menu-item:before { + content: "\f132"; + display: inline-block; + position: relative; + right: -2px; + top: -1px; + font: normal 20px/1 'dashicons'; + vertical-align: middle; + -webkit-transition: all 0.2s; + transition: all 0.2s; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.adding-menu-items .add-new-menu-item, +.adding-menu-items .add-new-menu-item:hover, +.add-menu-toggle.open, +.add-menu-toggle.open:hover { + background: #eee; + border-color: #929793; + color: #32373c; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); +} + +.adding-menu-items .add-new-menu-item:before, +#accordion-section-add_menu .add-new-menu-item.open:before { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +.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"; + font: normal 20px/1 dashicons; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + top: 9px; + right: 5px; +} + +.ie8 .menu-item-bar .item-delete:before { + top: -10px; +} + +.menu-item-bar .item-delete:hover, +.menu-item-bar .item-delete:focus { + color: #f00; +} + +.menu-item-bar .item-delete:focus { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.adding-menu-items .menu-item-bar .item-edit { + display: none; +} + +.adding-menu-items .menu-item-bar .item-delete { + display: block; +} + +#available-menu-items .item { + position: static; +} + +#available-menu-items { + 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; + -webkit-transition: right .18s; + transition: right .18s; + border-left: 1px solid #ddd; +} + +#available-menu-items.opening { + overflow-y: hidden; /* avoid scrollbar jitter with animating heights */ +} + +#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; +} + +#available-menu-items .open .accordion-section-title, +#available-menu-items #available-menu-items-search .accordion-section-title { + background: #eee; +} + +/* rework the arrow indicator implementation for NVDA bug see #32715 */ +#available-menu-items .accordion-section-title:after { + content: none !important; +} + +#available-menu-items .accordion-section-title .toggle-indicator { + display: inline-block; + font-size: 20px; + line-height: 1; +} + +#available-menu-items .accordion-section-title .toggle-indicator:after { + content: '\f140'; + font: normal 20px/1 'dashicons'; + color: #a0a5aa; + vertical-align: top; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; +} + +#available-menu-items .accordion-section-title:hover .toggle-indicator:after { + color: #777; +} + +#available-menu-items .open .accordion-section-title .toggle-indicator:after { + content: '\f142'; +} + +#available-menu-items .accordion-section-content { + overflow-y: auto; + max-height: 200px; /* This gets set in JS to fit the screen size, and based on # of sections. */ + background: transparent; +} + +button.not-a-button { + background: transparent; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-border-radius: 0; + border-radius: 0; + outline: 0; + padding: 0; + margin: 0; +} + +#available-menu-items .accordion-section-title button { + display: block; + width: 28px; + height: 35px; + position: absolute; + top: 5px; + left: 5px; + cursor: pointer; +} + +#available-menu-items .accordion-section-title button:focus { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +#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 { + display: block; + color: #777; + font-weight: normal; + float: left; + margin-right: 5px; +} + +#available-menu-items .accordion-section-content { + padding: 1px 15px 15px 15px; + margin: 0; + min-height: 120px; + max-height: 290px; +} + +#available-menu-items #available-menu-items-search .accordion-section-content { + position: absolute; + right: 1px; + top: 60px; /* below title div / search input */ + bottom: 0px; /* 100% height that still triggers lazy load */ + max-height: none; + width: 100%; + padding: 1px 15px 15px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#available-menu-items .menu-item-tpl { + margin: 0; +} + +#custom-menu-item-name.invalid, +#custom-menu-item-url.invalid, +.menu-name-field.invalid, +.menu-name-field.invalid:focus { + border: 1px solid #f00; +} + +#available-menu-items .item-tpl { + position: relative; + padding: 20px 60px 20px 15px; + border-bottom: 1px solid #e4e4e4; + cursor: pointer; + display: none; +} + +#available-menu-items .item-tpl:hover, +#available-menu-items .item-tpl.selected { + background: #eee; +} + +#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 .item-top, +#available-menu-items .item-top:hover { + border: none; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +#available-menu-items .menu-item-handle { + -webkit-box-shadow: none; + 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; + cursor: pointer; +} + +#available-menu-items .menu-item-handle .item-add:focus { + color: #23282d; + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +#available-menu-items .item-add:before { + content: "\f543"; + font: normal 20px/1 dashicons; + position: relative; + right: 2px; + top: 3px; +} + +#available-menu-items .menu-item-handle.item-added .item-type, +#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: #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 .clear-results { + position: absolute; + top: 20px; + left: 20px; + width: 20px; + height: 20px; + cursor: pointer; + color: #a00; + text-decoration: none; +} + +#available-menu-items-search .clear-results, +#available-menu-items-search.loading .clear-results.is-visible { + display: none; +} + +#available-menu-items-search .clear-results.is-visible { + display: block; +} + +#available-menu-items-search .clear-results:before { + content: "\f335"; + font: normal 20px/1 dashicons; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#available-menu-items-search .clear-results:hover, +#available-menu-items-search .clear-results:focus { + color: #f00; +} + +#available-menu-items-search .clear-results:focus { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +#available-menu-items-search .spinner { + position: absolute; + top: 20px; + margin: 0 !important; + left: 20px; +} + +#available-menu-items-search input { + padding: 6px 10px; + width: 100%; +} + +#available-menu-items-search .accordion-section-title { + padding: 12px 15px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#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 { + -webkit-transition: all 0.2s; + transition: all 0.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: 0.4; +} + +.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; +} + +.nav-menu-inserted-item-loading .menu-item-handle, +.added-menu-item .menu-item-handle.loading { + padding: 10px 8px 10px 15px; + cursor: default; + opacity: .5; + background: #fff; + color: #727773; +} + +.added-menu-item .menu-item-handle { + -webkit-transition-property: opacity, background, color; + transition-property: opacity, background, color; + -webkit-transition-duration: 1.25s; + transition-duration: 1.25s; + -webkit-transition-timing-function: cubic-bezier( .25, -2.5, .75, 8 ); + transition-timing-function: cubic-bezier( .25, -2.5, .75, 8 ); /* Replacement for .hide().fadeIn('slow') in JS to add emphasis when it's loaded. */ +} + +/* Add/delete Menus */ + +/* @todo update selector */ +#accordion-section-add_menu { + margin: 15px 12px; +} + +.new-menu-section-content { + display: none; + padding: 15px 0 0 0; + clear: both; +} + +/* @todo update selector */ +#accordion-section-add_menu .accordion-section-title { + padding-right: 45px; +} + +/* @todo update selector */ +#accordion-section-add_menu .accordion-section-title:before { + font: normal 20px/1 dashicons; + position: absolute; + top: 12px; + right: 14px; + content: "\f132"; +} + +#create-new-menu-submit { + float: left; + margin: 0 0 12px 0; +} + +.menu-delete-item { + display: block; + float: right; + padding: 1em 0; + width: 100%; +} + +li.assigned-to-menu-location .menu-delete-item { + display: none; +} + +li.assigned-to-menu-location .add-new-menu-item { + margin-bottom: 1em; +} + +.menu-delete { + color: #a00; + cursor: pointer; + text-decoration: underline; +} + +.menu-delete:hover, +.menu-delete:focus { + color: #f00; + text-decoration: none; +} + +.menu-delete:focus { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.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; +} + +.menu-item-handle:hover .item-type, +.menu-item-handle:hover .item-edit, +#available-menu-items .menu-item-handle:hover .item-add { + 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 { + margin-top: 12px; +} + +#available-menu-items .customize-section-title { + display: none; +} + +@media screen and ( max-width: 782px ) { + #available-menu-items #available-menu-items-search .accordion-section-content { + top: 63px; + } +} + +@media screen and ( max-width: 640px ) { + body.adding-menu-items div#available-menu-items { + top: 46px; + right: 0; + z-index: 10; + width: 100%; + } + + #available-menu-items #available-menu-items-search .accordion-section-content { + top: 133px; + } + + #available-menu-items .customize-section-title { + display: block; + margin: 0; + } + + #available-menu-items .customize-section-back { + height: 69px; + } + + #available-menu-items .customize-section-title h3 { + font-size: 20px; + font-weight: 200; + padding: 9px 14px 12px 10px; + margin: 0; + line-height: 24px; + color: #555; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + #available-menu-items .customize-section-title .customize-action { + font-size: 13px; + display: block; + font-weight: 400; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } +} diff --git a/wp-admin/css/customize-nav-menus-rtl.min.css b/wp-admin/css/customize-nav-menus-rtl.min.css new file mode 100644 index 0000000000..76bbb43b0d --- /dev/null +++ b/wp-admin/css/customize-nav-menus-rtl.min.css @@ -0,0 +1 @@ +#accordion-section-menu_locations{position:relative;margin-bottom:15px}.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:focus .menu-in-locations,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-locations,#customize-controls .theme-location-set{color:#555}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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-settings{max-width:100%;overflow:hidden;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}.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{display:block;float:right;margin:6px 0 0;padding:0;cursor:pointer}.wp-customizer .menu-item .submitbox .submitdelete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.customize-control-nav_menu .reorder-done,.customize-control-nav_menu .reordering .reorder{display:none}.customize-control-nav_menu .reorder,.customize-control-nav_menu .reordering .reorder-done{display:inline-block;padding:5px 8px}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;left:0}.customize-control-nav_menu .reordering .add-new-menu-item{opacity:.2;pointer-events:none;cursor:not-allowed}.menu-item-reorder-nav button{position:relative;overflow:hidden;float:right;display:block;width:30px;height:40px;color:#82878c;text-indent:-9999px;cursor:pointer;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}.menu-item-reorder-nav button:before{display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;font:400 20px/40px 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{color:#191e23;background:#eee}.menus-move-down:before{content:'\f347'}.menus-move-up:before{content:'\f343'}.menus-move-left:before{content:'\f341'}.menus-move-right:before{content:'\f345'}.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!important;background-color:#fff!important;cursor:default;pointer-events:none}.menu-item-reorder-nav:before{content:"";display:block;position:absolute;right:-10px;width:10px;height:40px;background:-webkit-linear-gradient(right,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%);background:-webkit-gradient(linear,right top,left top,from(rgba(250,250,250,0)),to(rgba(250,250,250,1)));background:-webkit-linear-gradient(right,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%);background:linear-gradient(to left,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%)}.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%;margin:12px 0}.wp-customizer .menu-item .item-edit{position:absolute;left:-19px;top:2px;display:block;width:30px;height:38px;margin-left:0!important;outline:0;overflow:hidden;cursor:pointer}.customize-control-nav_menu_item .item-edit:focus{color:#0073aa;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-customizer .menu-item .item-edit .toggle-indicator{display:inline-block;font-size:20px;line-height:1}.wp-customizer .menu-item .item-edit .toggle-indicator:after{content:'\f140';font:400 20px/1 dashicons;color:#a0a5aa;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:after{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 #ccc}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.menu-settings .customize-control-checkbox label{line-height:1}.menu-settings .customize-control.customize-control-checkbox{margin-bottom:8px}.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{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);-webkit-border-radius:100%;border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 0}.wp-customizer .metabox-prefs label{display:block;padding-left:0;line-height:30px}#accordion-panel-nav_menus .field-attr-title,#accordion-panel-nav_menus .field-css-classes,#accordion-panel-nav_menus .field-description,#accordion-panel-nav_menus .field-link-target,#accordion-panel-nav_menus .field-xfn{display:none}#accordion-panel-nav_menus.field-attr-title-active .field-attr-title,#accordion-panel-nav_menus.field-css-classes-active .field-css-classes,#accordion-panel-nav_menus.field-description-active .field-description,#accordion-panel-nav_menus.field-link-target-active .field-link-target,#accordion-panel-nav_menus.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:-webkit-calc(100% - 2px);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}.wp-full-overlay-main{left:auto;width:100%}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}#customize-theme-controls .add-new-menu-item{cursor:pointer;float:left;margin-right:10px;-webkit-transition:all .2s;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.add-new-menu-item:before{content:"\f132";display:inline-block;position:relative;right:-2px;top:-1px;font:400 20px/1 dashicons;vertical-align:middle;-webkit-transition:all .2s;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover{background:#eee;border-color:#929793;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);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{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.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";font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:9px;right:5px}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{color:red}.menu-item-bar .item-delete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items .item{position:static}#available-menu-items{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;-webkit-transition:right .18s;transition:right .18s;border-left:1px solid #ddd}#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}#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 .toggle-indicator{display:inline-block;font-size:20px;line-height:1}#available-menu-items .accordion-section-title .toggle-indicator:after{content:'\f140';font:400 20px/1 dashicons;color:#a0a5aa;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:after{color:#777}#available-menu-items .open .accordion-section-title .toggle-indicator:after{content:'\f142'}button.not-a-button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;-webkit-border-radius:0;border-radius:0;outline:0;padding:0;margin:0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;left:5px;cursor:pointer}#available-menu-items .accordion-section-title button:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#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{display:block;color:#777;font-weight:400;float:left;margin-right:5px}#available-menu-items .accordion-section-content{overflow-y:auto;background:0 0;padding:1px 15px 15px;margin:0;min-height:120px;max-height:290px}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;right:1px;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items .menu-item-tpl{margin:0}#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid red}#available-menu-items .item-tpl{position:relative;padding:20px 60px 20px 15px;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-menu-items .item-tpl.selected,#available-menu-items .item-tpl:hover{background:#eee}#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 .item-top,#available-menu-items .item-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-menu-items .menu-item-handle{cursor:pointer;-webkit-box-shadow:none;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;cursor:pointer}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items .item-add:before{content:"\f543";font:400 20px/1 dashicons;position:relative;right:2px;top:3px}#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 .clear-results{position:absolute;top:20px;left:20px;width:20px;height:20px;cursor:pointer;color:#a00;text-decoration:none}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible{display:none}#available-menu-items-search .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before{content:"\f335";font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover{color:red}#available-menu-items-search .clear-results:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .clear-results:focus,.menu-delete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .spinner{position:absolute;top:20px;margin:0!important;left:20px}#available-menu-items-search input{padding:6px 10px;width:100%}#available-menu-items-search .accordion-section-title{padding:12px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#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{-webkit-transition:all .2s;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}.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{-webkit-transition-property:opacity,background,color;transition-property:opacity,background,color;-webkit-transition-duration:1.25s;transition-duration:1.25s;-webkit-transition-timing-function:cubic-bezier(.25,-2.5,.75,8);transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#accordion-section-add_menu{margin:15px 12px}.new-menu-section-content{display:none;padding:15px 0 0;clear:both}#accordion-section-add_menu .accordion-section-title{padding-right:45px}#accordion-section-add_menu .accordion-section-title:before{font:400 20px/1 dashicons;position:absolute;top:12px;right:14px;content:"\f132"}#create-new-menu-submit{float:left;margin:0 0 12px}.menu-delete-item{display:block;float:right;padding:1em 0;width:100%}#available-menu-items .customize-section-title,li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-delete{color:#a00;cursor:pointer;text-decoration:underline}.menu-delete:focus,.menu-delete:hover{color:red;text-decoration:none}.menu-delete:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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{margin-top:12px}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){body.adding-menu-items div#available-menu-items{top:46px;right:0;z-index:10;width:100%}#available-menu-items #available-menu-items-search .accordion-section-content{top:133px}#available-menu-items .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back{height:69px}#available-menu-items .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 14px 12px 10px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}} \ No newline at end of file diff --git a/wp-admin/css/customize-nav-menus.css b/wp-admin/css/customize-nav-menus.css new file mode 100644 index 0000000000..7d25c7f58d --- /dev/null +++ b/wp-admin/css/customize-nav-menus.css @@ -0,0 +1,1091 @@ +#accordion-section-menu_locations { + position: relative; + margin-bottom: 15px; +} + +.menu-in-location, +.menu-in-locations { + display: block; + font-weight: 600; + font-size: 10px; +} + +#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, +#customize-controls .control-section .accordion-section-title:focus .menu-in-locations, +#customize-controls .control-section .accordion-section-title:hover .menu-in-locations { + color: #555; +} + +.wp-customizer .menu-item-bar .menu-item-handle, +.wp-customizer .menu-item-settings, +.wp-customizer .menu-item-settings .description-thin { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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-settings { + max-width: 100%; + overflow: hidden; + 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 { + display: block; + float: left; + margin: 6px 0 0; + padding: 0; + cursor: pointer; +} + +.wp-customizer .menu-item .submitbox .submitdelete:focus { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +/* Menu-item reordering nav. */ +.customize-control-nav_menu .reordering .reorder, +.customize-control-nav_menu .reorder-done { + display: none; +} + +.customize-control-nav_menu .reorder, +.customize-control-nav_menu .reordering .reorder-done { + display: inline-block; + padding: 5px 8px; +} + +.menu-item-reorder-nav { + display: none; + background-color: #fff; + position: absolute; + top: 0; + right: 0; +} + +.customize-control-nav_menu .reordering .add-new-menu-item { + opacity: 0.2; + pointer-events: none; + cursor: not-allowed; +} + +.menu-item-reorder-nav button { + position: relative; + overflow: hidden; + float: left; + display: block; + width: 30px; + height: 40px; + color: #82878c; + text-indent: -9999px; + cursor: pointer; + background: transparent; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + outline: none; +} + +.menu-item-reorder-nav button:before { + display: inline-block; + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; + font: normal 20px/40px dashicons; + text-align: center; + text-indent: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.menu-item-reorder-nav button:hover, +.menu-item-reorder-nav button:focus { + color: #191e23; + background: #eee; +} + +.menus-move-down:before { + content: '\f347'; +} + +.menus-move-up:before { + content: '\f343'; +} + +.menus-move-left:before { + content: '\f341'; +} + +.menus-move-right:before { + content: '\f345'; +} + +.move-up-disabled .menus-move-up, +.move-down-disabled .menus-move-down, +.move-right-disabled .menus-move-right, +.move-left-disabled .menus-move-left { + color: #d5d5d5 !important; + background-color: #fff !important; + cursor: default; + pointer-events: none; +} + +.menu-item-reorder-nav:before { + content: ""; + display: block; + position: absolute; + left: -10px; + width: 10px; + height: 40px; + background: -webkit-linear-gradient(left, rgba(250,250,250,0) 0%,rgba(250,250,250,1) 100%); + background: -webkit-gradient(linear, left top, right top, from(rgba(250,250,250,0)), to(rgba(250,250,250,1))); + background: -webkit-linear-gradient(left, rgba(250,250,250,0) 0%, rgba(250,250,250,1) 100%); + background: linear-gradient(to right, rgba(250,250,250,0) 0%,rgba(250,250,250,1) 100%); +} + +.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%; /* Override the 98% default for customizer inputs, to align with the size of menu items. */ + margin: 12px 0; +} + +.wp-customizer .menu-item .item-edit { + position: absolute; + right: -19px; + top: 2px; + display: block; + width: 30px; + height: 38px; + margin-right: 0 !important; + outline: none; + overflow: hidden; + cursor: pointer; +} + +.customize-control-nav_menu_item .item-edit:focus { + color: #0073aa; + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +/* rework the arrow indicator implementation for NVDA bug same as #32715 */ +.wp-customizer .menu-item .item-edit .toggle-indicator { + display: inline-block; + font-size: 20px; + line-height: 1; +} + +.wp-customizer .menu-item .item-edit .toggle-indicator:after { + content: '\f140'; + font: normal 20px/1 dashicons; + color: #a0a5aa; + vertical-align: top; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; +} + +.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:after { + 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; +} + +.menu-settings .customize-control-checkbox label { + line-height: 1; +} + +/* @todo update selector or potentially remove */ +.menu-settings .customize-control.customize-control-checkbox { + margin-bottom: 8px; /* Override collapsing at smaller viewports. */ +} + +.customize-control-menu { + margin-top: 4px; +} + +#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle { + color: #555; +} + +/* Screen Options */ +.customize-screen-options-toggle { + background: none; + 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-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: #0073aa; +} + +.customize-screen-options-toggle:focus, +#customize-controls .customize-info .customize-help-toggle:focus { + outline: none; +} + +.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-screen-options-toggle:focus:before, +#customize-controls .customize-info .customize-help-toggle:focus:before { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + -webkit-border-radius: 100%; + border-radius: 100%; +} + +.wp-customizer #screen-options-wrap { + display: none; + background: #fff; + border-top: 1px solid #ddd; + padding: 4px 15px 0; +} + +.wp-customizer .metabox-prefs label { + display: block; + padding-right: 0; + line-height: 30px; +} + +#accordion-panel-nav_menus .field-link-target, +#accordion-panel-nav_menus .field-attr-title, +#accordion-panel-nav_menus .field-css-classes, +#accordion-panel-nav_menus .field-xfn, +#accordion-panel-nav_menus .field-description { + display: none; +} + +#accordion-panel-nav_menus.field-link-target-active .field-link-target, +#accordion-panel-nav_menus.field-attr-title-active .field-attr-title, +#accordion-panel-nav_menus.field-css-classes-active .field-css-classes, +#accordion-panel-nav_menus.field-xfn-active .field-xfn, +#accordion-panel-nav_menus.field-description-active .field-description { + display: block; +} + +/* WARNING: The 20px factor is hard-coded in JS. */ +.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; } /* Not likely to be used or useful beyond this depth */ +.menu-item-depth-9 { margin-left: 180px; } +.menu-item-depth-10 { margin-left: 200px; } +.menu-item-depth-11 { margin-left: 220px; } + +/* @todo handle .menu-item-settings width */ +.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; } + +/* Submenu left margin. */ +.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; } + +/* WARNING: The 20px factor is hard-coded in JS. */ +.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; } /* Not likely to be used or useful beyond this depth */ +.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: -webkit-calc(100% - 2px); + 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; +} + +/* + * Add-menu-items mode. + */ +.wp-full-overlay-main { + right: auto; /* This overrides a right: 0; which causes the preview to resize rather than slide off screen at the normal size. */ + width: 100%; +} + +.adding-menu-items .control-section { + opacity: .4; +} + +.adding-menu-items .control-panel.control-section, +.adding-menu-items .control-section.open { + opacity: 1; +} + +/* Add-new button. */ +#customize-theme-controls .add-new-menu-item { + cursor: pointer; + float: right; + margin-left: 10px; + -webkit-transition: all 0.2s; + transition: all 0.2s; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + outline: none; +} + +.add-new-menu-item:before { + content: "\f132"; + display: inline-block; + position: relative; + left: -2px; + top: -1px; + font: normal 20px/1 'dashicons'; + vertical-align: middle; + -webkit-transition: all 0.2s; + transition: all 0.2s; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.adding-menu-items .add-new-menu-item, +.adding-menu-items .add-new-menu-item:hover, +.add-menu-toggle.open, +.add-menu-toggle.open:hover { + background: #eee; + border-color: #929793; + color: #32373c; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); +} + +.adding-menu-items .add-new-menu-item:before, +#accordion-section-add_menu .add-new-menu-item.open:before { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + +.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"; + font: normal 20px/1 dashicons; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + top: 9px; + left: 5px; +} + +.ie8 .menu-item-bar .item-delete:before { + top: -10px; +} + +.menu-item-bar .item-delete:hover, +.menu-item-bar .item-delete:focus { + color: #f00; +} + +.menu-item-bar .item-delete:focus { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.adding-menu-items .menu-item-bar .item-edit { + display: none; +} + +.adding-menu-items .menu-item-bar .item-delete { + display: block; +} + +#available-menu-items .item { + position: static; +} + +#available-menu-items { + 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; + -webkit-transition: left .18s; + transition: left .18s; + border-right: 1px solid #ddd; +} + +#available-menu-items.opening { + overflow-y: hidden; /* avoid scrollbar jitter with animating heights */ +} + +#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; +} + +#available-menu-items .open .accordion-section-title, +#available-menu-items #available-menu-items-search .accordion-section-title { + background: #eee; +} + +/* rework the arrow indicator implementation for NVDA bug see #32715 */ +#available-menu-items .accordion-section-title:after { + content: none !important; +} + +#available-menu-items .accordion-section-title .toggle-indicator { + display: inline-block; + font-size: 20px; + line-height: 1; +} + +#available-menu-items .accordion-section-title .toggle-indicator:after { + content: '\f140'; + font: normal 20px/1 'dashicons'; + color: #a0a5aa; + vertical-align: top; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; +} + +#available-menu-items .accordion-section-title:hover .toggle-indicator:after { + color: #777; +} + +#available-menu-items .open .accordion-section-title .toggle-indicator:after { + content: '\f142'; +} + +#available-menu-items .accordion-section-content { + overflow-y: auto; + max-height: 200px; /* This gets set in JS to fit the screen size, and based on # of sections. */ + background: transparent; +} + +button.not-a-button { + background: transparent; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-border-radius: 0; + border-radius: 0; + outline: 0; + padding: 0; + margin: 0; +} + +#available-menu-items .accordion-section-title button { + display: block; + width: 28px; + height: 35px; + position: absolute; + top: 5px; + right: 5px; + cursor: pointer; +} + +#available-menu-items .accordion-section-title button:focus { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +#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 { + display: block; + color: #777; + font-weight: normal; + float: right; + margin-left: 5px; +} + +#available-menu-items .accordion-section-content { + padding: 1px 15px 15px 15px; + margin: 0; + min-height: 120px; + max-height: 290px; +} + +#available-menu-items #available-menu-items-search .accordion-section-content { + position: absolute; + left: 1px; + top: 60px; /* below title div / search input */ + bottom: 0px; /* 100% height that still triggers lazy load */ + max-height: none; + width: 100%; + padding: 1px 15px 15px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#available-menu-items .menu-item-tpl { + margin: 0; +} + +#custom-menu-item-name.invalid, +#custom-menu-item-url.invalid, +.menu-name-field.invalid, +.menu-name-field.invalid:focus { + border: 1px solid #f00; +} + +#available-menu-items .item-tpl { + position: relative; + padding: 20px 15px 20px 60px; + border-bottom: 1px solid #e4e4e4; + cursor: pointer; + display: none; +} + +#available-menu-items .item-tpl:hover, +#available-menu-items .item-tpl.selected { + background: #eee; +} + +#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 .item-top, +#available-menu-items .item-top:hover { + border: none; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +#available-menu-items .menu-item-handle { + -webkit-box-shadow: none; + 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; + cursor: pointer; +} + +#available-menu-items .menu-item-handle .item-add:focus { + color: #23282d; + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +#available-menu-items .item-add:before { + content: "\f543"; + font: normal 20px/1 dashicons; + position: relative; + left: 2px; + top: 3px; +} + +#available-menu-items .menu-item-handle.item-added .item-type, +#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: #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 .clear-results { + position: absolute; + top: 20px; + right: 20px; + width: 20px; + height: 20px; + cursor: pointer; + color: #a00; + text-decoration: none; +} + +#available-menu-items-search .clear-results, +#available-menu-items-search.loading .clear-results.is-visible { + display: none; +} + +#available-menu-items-search .clear-results.is-visible { + display: block; +} + +#available-menu-items-search .clear-results:before { + content: "\f335"; + font: normal 20px/1 dashicons; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#available-menu-items-search .clear-results:hover, +#available-menu-items-search .clear-results:focus { + color: #f00; +} + +#available-menu-items-search .clear-results:focus { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +#available-menu-items-search .spinner { + position: absolute; + top: 20px; + margin: 0 !important; + right: 20px; +} + +#available-menu-items-search input { + padding: 6px 10px; + width: 100%; +} + +#available-menu-items-search .accordion-section-title { + padding: 12px 15px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#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 { + -webkit-transition: all 0.2s; + transition: all 0.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: 0.4; +} + +.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; +} + +.nav-menu-inserted-item-loading .menu-item-handle, +.added-menu-item .menu-item-handle.loading { + padding: 10px 15px 10px 8px; + cursor: default; + opacity: .5; + background: #fff; + color: #727773; +} + +.added-menu-item .menu-item-handle { + -webkit-transition-property: opacity, background, color; + transition-property: opacity, background, color; + -webkit-transition-duration: 1.25s; + transition-duration: 1.25s; + -webkit-transition-timing-function: cubic-bezier( .25, -2.5, .75, 8 ); + transition-timing-function: cubic-bezier( .25, -2.5, .75, 8 ); /* Replacement for .hide().fadeIn('slow') in JS to add emphasis when it's loaded. */ +} + +/* Add/delete Menus */ + +/* @todo update selector */ +#accordion-section-add_menu { + margin: 15px 12px; +} + +.new-menu-section-content { + display: none; + padding: 15px 0 0 0; + clear: both; +} + +/* @todo update selector */ +#accordion-section-add_menu .accordion-section-title { + padding-left: 45px; +} + +/* @todo update selector */ +#accordion-section-add_menu .accordion-section-title:before { + font: normal 20px/1 dashicons; + position: absolute; + top: 12px; + left: 14px; + content: "\f132"; +} + +#create-new-menu-submit { + float: right; + margin: 0 0 12px 0; +} + +.menu-delete-item { + display: block; + float: left; + padding: 1em 0; + width: 100%; +} + +li.assigned-to-menu-location .menu-delete-item { + display: none; +} + +li.assigned-to-menu-location .add-new-menu-item { + margin-bottom: 1em; +} + +.menu-delete { + color: #a00; + cursor: pointer; + text-decoration: underline; +} + +.menu-delete:hover, +.menu-delete:focus { + color: #f00; + text-decoration: none; +} + +.menu-delete:focus { + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.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; +} + +.menu-item-handle:hover .item-type, +.menu-item-handle:hover .item-edit, +#available-menu-items .menu-item-handle:hover .item-add { + 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 { + margin-top: 12px; +} + +#available-menu-items .customize-section-title { + display: none; +} + +@media screen and ( max-width: 782px ) { + #available-menu-items #available-menu-items-search .accordion-section-content { + top: 63px; + } +} + +@media screen and ( max-width: 640px ) { + body.adding-menu-items div#available-menu-items { + top: 46px; + left: 0; + z-index: 10; + width: 100%; + } + + #available-menu-items #available-menu-items-search .accordion-section-content { + top: 133px; + } + + #available-menu-items .customize-section-title { + display: block; + margin: 0; + } + + #available-menu-items .customize-section-back { + height: 69px; + } + + #available-menu-items .customize-section-title h3 { + font-size: 20px; + font-weight: 200; + padding: 9px 10px 12px 14px; + margin: 0; + line-height: 24px; + color: #555; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + #available-menu-items .customize-section-title .customize-action { + font-size: 13px; + display: block; + font-weight: 400; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } +} diff --git a/wp-admin/css/customize-nav-menus.min.css b/wp-admin/css/customize-nav-menus.min.css new file mode 100644 index 0000000000..1702fba117 --- /dev/null +++ b/wp-admin/css/customize-nav-menus.min.css @@ -0,0 +1 @@ +#accordion-section-menu_locations{position:relative;margin-bottom:15px}.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:focus .menu-in-locations,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-locations,#customize-controls .theme-location-set{color:#555}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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-settings{max-width:100%;overflow:hidden;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}.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{display:block;float:left;margin:6px 0 0;padding:0;cursor:pointer}.wp-customizer .menu-item .submitbox .submitdelete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.customize-control-nav_menu .reorder-done,.customize-control-nav_menu .reordering .reorder{display:none}.customize-control-nav_menu .reorder,.customize-control-nav_menu .reordering .reorder-done{display:inline-block;padding:5px 8px}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;right:0}.customize-control-nav_menu .reordering .add-new-menu-item{opacity:.2;pointer-events:none;cursor:not-allowed}.menu-item-reorder-nav button{position:relative;overflow:hidden;float:left;display:block;width:30px;height:40px;color:#82878c;text-indent:-9999px;cursor:pointer;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}.menu-item-reorder-nav button:before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:400 20px/40px 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{color:#191e23;background:#eee}.menus-move-down:before{content:'\f347'}.menus-move-up:before{content:'\f343'}.menus-move-left:before{content:'\f341'}.menus-move-right:before{content:'\f345'}.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!important;background-color:#fff!important;cursor:default;pointer-events:none}.menu-item-reorder-nav:before{content:"";display:block;position:absolute;left:-10px;width:10px;height:40px;background:-webkit-linear-gradient(left,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%);background:-webkit-gradient(linear,left top,right top,from(rgba(250,250,250,0)),to(rgba(250,250,250,1)));background:-webkit-linear-gradient(left,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%);background:linear-gradient(to right,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%)}.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%;margin:12px 0}.wp-customizer .menu-item .item-edit{position:absolute;right:-19px;top:2px;display:block;width:30px;height:38px;margin-right:0!important;outline:0;overflow:hidden;cursor:pointer}.customize-control-nav_menu_item .item-edit:focus{color:#0073aa;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-customizer .menu-item .item-edit .toggle-indicator{display:inline-block;font-size:20px;line-height:1}.wp-customizer .menu-item .item-edit .toggle-indicator:after{content:'\f140';font:400 20px/1 dashicons;color:#a0a5aa;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:after{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 #ccc}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.menu-settings .customize-control-checkbox label{line-height:1}.menu-settings .customize-control.customize-control-checkbox{margin-bottom:8px}.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{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);-webkit-border-radius:100%;border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 0}.wp-customizer .metabox-prefs label{display:block;padding-right:0;line-height:30px}#accordion-panel-nav_menus .field-attr-title,#accordion-panel-nav_menus .field-css-classes,#accordion-panel-nav_menus .field-description,#accordion-panel-nav_menus .field-link-target,#accordion-panel-nav_menus .field-xfn{display:none}#accordion-panel-nav_menus.field-attr-title-active .field-attr-title,#accordion-panel-nav_menus.field-css-classes-active .field-css-classes,#accordion-panel-nav_menus.field-description-active .field-description,#accordion-panel-nav_menus.field-link-target-active .field-link-target,#accordion-panel-nav_menus.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:-webkit-calc(100% - 2px);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}.wp-full-overlay-main{right:auto;width:100%}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}#customize-theme-controls .add-new-menu-item{cursor:pointer;float:right;margin-left:10px;-webkit-transition:all .2s;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.add-new-menu-item:before{content:"\f132";display:inline-block;position:relative;left:-2px;top:-1px;font:400 20px/1 dashicons;vertical-align:middle;-webkit-transition:all .2s;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover{background:#eee;border-color:#929793;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);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{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.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";font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:9px;left:5px}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{color:red}.menu-item-bar .item-delete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items .item{position:static}#available-menu-items{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;-webkit-transition:left .18s;transition:left .18s;border-right:1px solid #ddd}#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}#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 .toggle-indicator{display:inline-block;font-size:20px;line-height:1}#available-menu-items .accordion-section-title .toggle-indicator:after{content:'\f140';font:400 20px/1 dashicons;color:#a0a5aa;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:after{color:#777}#available-menu-items .open .accordion-section-title .toggle-indicator:after{content:'\f142'}button.not-a-button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;-webkit-border-radius:0;border-radius:0;outline:0;padding:0;margin:0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;right:5px;cursor:pointer}#available-menu-items .accordion-section-title button:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#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{display:block;color:#777;font-weight:400;float:right;margin-left:5px}#available-menu-items .accordion-section-content{overflow-y:auto;background:0 0;padding:1px 15px 15px;margin:0;min-height:120px;max-height:290px}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;left:1px;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items .menu-item-tpl{margin:0}#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid red}#available-menu-items .item-tpl{position:relative;padding:20px 15px 20px 60px;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-menu-items .item-tpl.selected,#available-menu-items .item-tpl:hover{background:#eee}#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 .item-top,#available-menu-items .item-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-menu-items .menu-item-handle{cursor:pointer;-webkit-box-shadow:none;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;cursor:pointer}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items .item-add:before{content:"\f543";font:400 20px/1 dashicons;position:relative;left:2px;top:3px}#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 .clear-results{position:absolute;top:20px;right:20px;width:20px;height:20px;cursor:pointer;color:#a00;text-decoration:none}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible{display:none}#available-menu-items-search .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before{content:"\f335";font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover{color:red}#available-menu-items-search .clear-results:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .clear-results:focus,.menu-delete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .spinner{position:absolute;top:20px;margin:0!important;right:20px}#available-menu-items-search input{padding:6px 10px;width:100%}#available-menu-items-search .accordion-section-title{padding:12px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#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{-webkit-transition:all .2s;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}.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{-webkit-transition-property:opacity,background,color;transition-property:opacity,background,color;-webkit-transition-duration:1.25s;transition-duration:1.25s;-webkit-transition-timing-function:cubic-bezier(.25,-2.5,.75,8);transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#accordion-section-add_menu{margin:15px 12px}.new-menu-section-content{display:none;padding:15px 0 0;clear:both}#accordion-section-add_menu .accordion-section-title{padding-left:45px}#accordion-section-add_menu .accordion-section-title:before{font:400 20px/1 dashicons;position:absolute;top:12px;left:14px;content:"\f132"}#create-new-menu-submit{float:right;margin:0 0 12px}.menu-delete-item{display:block;float:left;padding:1em 0;width:100%}#available-menu-items .customize-section-title,li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-delete{color:#a00;cursor:pointer;text-decoration:underline}.menu-delete:focus,.menu-delete:hover{color:red;text-decoration:none}.menu-delete:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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{margin-top:12px}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){body.adding-menu-items div#available-menu-items{top:46px;left:0;z-index:10;width:100%}#available-menu-items #available-menu-items-search .accordion-section-content{top:133px}#available-menu-items .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back{height:69px}#available-menu-items .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 10px 12px 14px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}} \ No newline at end of file diff --git a/wp-admin/css/customize-widgets-rtl.css b/wp-admin/css/customize-widgets-rtl.css new file mode 100644 index 0000000000..95c682d3d6 --- /dev/null +++ b/wp-admin/css/customize-widgets-rtl.css @@ -0,0 +1,694 @@ +.wp-full-overlay-sidebar { + overflow: visible; +} + +/** + * Hide all sidebar sections by default, only show them (via JS) once the + * preview loads and we know whether the sidebars are used in the template. + */ + +.control-section.control-section-sidebar, +.customize-control-sidebar_widgets label, +.customize-control-sidebar_widgets .hide-if-js { + /* The link in .customize-control-sidebar_widgets .hide-if-js will fail if it ever gets used. */ + display: none; +} + +.control-section.control-section-sidebar .accordion-section-content.ui-sortable { + overflow: visible; +} + +.customize-control-widget_form .widget-top { + -webkit-transition: opacity 0.5s; + transition: opacity 0.5s; +} + +.customize-control-widget_form:not(.widget-rendered) .widget-top { + opacity: 0.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: 0.7; + pointer-events: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-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 rgb(229, 229, 229); + overflow: auto; +} +.customize-control-widget_form.wide-widget-control .widget-inside > .form { + padding: 20px; +} + +.customize-control-widget_form.wide-widget-control .widget-top { + -webkit-transition: background-color 0.4s; + transition: background-color 0.4s; +} +.customize-control-widget_form.wide-widget-control.expanding .widget-top, +.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top { + background-color: rgb(227, 227, 227); +} + +.widget-inside { + padding: 1px 10px 10px 10px; + border-top: none; + line-height: 16px; +} + +.widget-top { + cursor: move; +} + +.customize-control-widget_form.expanded a.widget-action:after { + content: "\f142"; +} + +.customize-control-widget_form.wide-widget-control a.widget-action:after { + content: "\f141"; +} + +.customize-control-widget_form.wide-widget-control.expanded a.widget-action:after { + content: "\f139"; +} + +.widget-title-action { + cursor: pointer; +} + +.customize-control-widget_form .widget .customize-control-title { + cursor: move; +} + +.control-section.accordion-section.highlighted > .accordion-section-title, +.customize-control-widget_form.highlighted { + 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); + position: relative; + z-index: 1; +} + +#widget-customizer-control-templates { + display: none; +} + +/** +* Widget reordering styles +**/ + +.reorder-toggle { + float: left; + padding: 5px 8px; + text-decoration: none; + cursor: pointer; + outline: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.reorder-toggle:focus { + outline: 1px dotted; +} + +.reorder-done, +.reordering .reorder { + display: none; +} + +.reordering .reorder-done { + display: block; + color: #0073aa; +} + +.reordering .reorder-done:hover, +.reordering .reorder-done:active { + color: #00a0d2; +} + +#customize-theme-controls .reordering .add-new-widget { + opacity: 0.2; + pointer-events: none; + cursor: not-allowed; +} + +#customize-theme-controls .widget-reorder-nav { + display: none; + float: left; + background-color: #fafafa; +} + +.widget-reorder-nav span { + position: relative; + overflow: hidden; + float: right; + display: block; + width: 33px; /* was 42px for mobile */ + height: 43px; + color: #82878c; + text-indent: -9999px; + cursor: pointer; + outline: none; +} + +.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; +} + +.widget-reorder-nav span:hover, +.widget-reorder-nav span:focus { + color: #444; + background: #eee; +} + +.move-widget:before { + content: '\f504'; +} + +.move-widget-down:before { + content: '\f347'; +} + +.move-widget-up:before { + content: '\f343'; +} + +#customize-theme-controls .first-widget .move-widget-up, +#customize-theme-controls .last-widget .move-widget-down { + color: #d5d5d5; + cursor: default; +} + +#customize-theme-controls .move-widget-area { + display: none; + background: #fff; + border: 1px solid #dedede; + 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; + -ms-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; +} + + +/** + * Styles for new widget addition panel + */ +.wp-full-overlay-main { + left: auto; /* this overrides a right: 0; which causes the preview to resize, I'd rather have it go off screen at the normal size. */ + width: 100%; +} + +#customize-theme-controls .add-new-widget { + cursor: pointer; + float: left; + margin-right: 10px; + -webkit-transition: all 0.2s; + transition: all 0.2s; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + outline: none; +} + +.add-new-widget:before { + content: "\f132"; + display: inline-block; + position: relative; + right: -2px; + top: -1px; + font: normal 20px/1 'dashicons'; + vertical-align: middle; + -webkit-transition: all 0.2s; + transition: all 0.2s; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body.adding-widget .add-new-widget, +body.adding-widget .add-new-widget:hover { + background: #eee; + border-color: #999; + color: #32373c; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); +} +body.adding-widget .add-new-widget:before { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +#available-widgets .widget { + position: static; +} + +/* override widgets admin page rules in wp-admin/css/wp-admin.css */ +#widgets-left #available-widgets .widget { + float: none !important; + width: auto !important; +} + +#available-widgets { + position: absolute; + top: 0; + bottom: 0; + right: -301px; + visibility: hidden; + overflow: auto; + width: 300px; + margin: 0; + z-index: 1; + background: #eee !important; + -webkit-transition: right .18s; + transition: right .18s; + border-left: 1px solid #ddd; +} + +.ios #available-widgets { + -webkit-transition: right 0s; + transition: right 0s; +} + +#available-widgets-list { + top: 46px; + position: absolute; + overflow: auto; + bottom: 0; + width: 100%; +} + +#available-widgets-filter { + position: fixed; + top: 0; + z-index: 1; + width: 300px; + height: 46px; + padding: 8px 13px 7px 17px; + background: #eee; + border-bottom: 1px solid #e4e4e4; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#available-widgets-filter input { + padding: 5px 10px 2px 10px; + width: 100%; +} + +#available-widgets .widget-tpl { + position: relative; + padding: 20px 60px 20px 15px; + background: #fff; + border-bottom: 1px solid #e4e4e4; + cursor: pointer; + display: none; +} + +#available-widgets .widget-tpl:hover, +#available-widgets .widget-tpl.selected { + background: #eee; + border-bottom-color: #ccc; +} + +#available-widgets .widget-top, +#available-widgets .widget-top:hover { + border: none; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +#available-widgets .widget-title h4 { + padding: 0 0 5px; + font-size: 14px; +} + +#available-widgets .widget .widget-description { + padding: 0; + color: #777; +} + +#customize-preview { + -webkit-transition: all 0.2s; + transition: all 0.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: 0.4; +} + + +/** + * Widget Icon styling + * No plurals in naming. + * Ordered from lowest to highest specificity. + **/ +#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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* smiley */ +#available-widgets [class*="easy"] .widget-title:before { content: "\f328"; top: -4px; } + +/* star-filled */ +#available-widgets [class*="super"] .widget-title:before, +#available-widgets [class*="like"] .widget-title:before { content: "\f155"; top: -4px; } + +/* wordpress */ +#available-widgets [class*="meta"] .widget-title:before { content: "\f120"; } + +/* archive-box */ +#available-widgets [class*="archives"] .widget-title:before { content: "\f480"; top: -4px; } + +/* category */ +#available-widgets [class*="categor"] .widget-title:before { content: "\f318"; top: -4px; } + +/* comments */ +#available-widgets [class*="comment"] .widget-title:before, +#available-widgets [class*="testimonial"] .widget-title:before, +#available-widgets [class*="chat"] .widget-title:before { content: "\f101"; } + +/* post */ +#available-widgets [class*="post"] .widget-title:before { content: "\f109"; } + +/* admin-page */ +#available-widgets [class*="page"] .widget-title:before { content: "\f105"; } + +/* text */ +#available-widgets [class*="text"] .widget-title:before { content: "\f478"; } + +/* links */ +#available-widgets [class*="link"] .widget-title:before { content: "\f103"; } + +/* search */ +#available-widgets [class*="search"] .widget-title:before { content: "\f179"; } + +/* menu */ +#available-widgets [class*="menu"] .widget-title:before, +#available-widgets [class*="nav"] .widget-title:before { content: "\f333"; } + +/* tag-cloud */ +#available-widgets [class*="tag"] .widget-title:before { content: "\f479"; } + +/* rss */ +#available-widgets [class*="rss"] .widget-title:before { content: "\f303"; top: -6px; } + +/* calendar */ +#available-widgets [class*="event"] .widget-title:before, +#available-widgets [class*="calendar"] .widget-title:before { content: "\f145"; top: -4px;} + +/* 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"; } + +/* format-gallery */ +#available-widgets [class*="album"] .widget-title:before, +#available-widgets [class*="galler"] .widget-title:before { content: "\f161"; } + +/* format-video */ +#available-widgets [class*="video"] .widget-title:before, +#available-widgets [class*="tube"] .widget-title:before { content: "\f126"; } + +/* 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"; } + +/* admin-users */ +#available-widgets [class*="login"] .widget-title:before, +#available-widgets [class*="user"] .widget-title:before, +#available-widgets [class*="member"] .widget-title:before, +#available-widgets [class*="avatar"] .widget-title:before, +#available-widgets [class*="subscriber"] .widget-title:before, +#available-widgets [class*="profile"] .widget-title:before, +#available-widgets [class*="grofile"] .widget-title:before { content: "\f110"; } + +/* 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; } + +/* shield */ +#available-widgets [class*="secur"] .widget-title:before, +#available-widgets [class*="firewall"] .widget-title:before { content: "\f332"; } + +/* 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"; } + +/* feedback */ +#available-widgets [class*="form"] .widget-title:before { content: "\f175"; } + +/* 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"; } + +/* share */ +#available-widgets [class*="share"] .widget-title:before, +#available-widgets [class*="socia"] .widget-title:before { content: "\f237"; } + +/* translation */ +#available-widgets [class*="lang"] .widget-title:before, +#available-widgets [class*="translat"] .widget-title:before { content: "\f326"; } + +/* location-alt */ +#available-widgets [class*="locat"] .widget-title:before, +#available-widgets [class*="map"] .widget-title:before { content: "\f231"; } + +/* download */ +#available-widgets [class*="download"] .widget-title:before { content: "\f316"; } + +/* cloud */ +#available-widgets [class*="weather"] .widget-title:before { content: "\f176"; top: -4px;} + +/* facebook */ +#available-widgets [class*="facebook"] .widget-title:before { content: "\f304"; } + +/* twitter */ +#available-widgets [class*="tweet"] .widget-title:before, +#available-widgets [class*="twitter"] .widget-title:before { content: "\f301"; } + +#available-widgets .customize-section-title { + display: none; +} + +@media screen and (max-height: 700px) and (min-width: 981px) { + .customize-control-widget { + margin-bottom: 0; + } + .widget-top { + -webkit-box-shadow: none; + box-shadow: none; + margin-top: -1px; + } + .widget-top:hover { + position: relative; + z-index: 1; + } + .last-widget { + margin-bottom: 15px; + } + .widget-title h4 { + padding: 13px 15px; + } + .widget-top a.widget-action:after { + padding-top: 9px; + } + .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; + } +} + +@media screen and ( max-width: 640px ) { + body.adding-widget div#available-widgets { + top: 46px; + right: 0; + z-index: 10; + width: 100%; + } + + #available-widgets .customize-section-title { + display: block; + margin: 0; + } + + #available-widgets .customize-section-back { + height: 69px; + } + + #available-widgets .customize-section-title h3 { + font-size: 20px; + font-weight: 200; + padding: 9px 14px 12px 10px; + margin: 0; + line-height: 24px; + color: #555; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + #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%; + background: #fff; + height: auto; + padding: 10px 15px; + } + + #available-widgets-list { + top: 140px; + } +} diff --git a/wp-admin/css/customize-widgets-rtl.min.css b/wp-admin/css/customize-widgets-rtl.min.css new file mode 100644 index 0000000000..9d9cc391ca --- /dev/null +++ b/wp-admin/css/customize-widgets-rtl.min.css @@ -0,0 +1 @@ +.control-section.control-section-sidebar .accordion-section-content.ui-sortable,.wp-full-overlay-sidebar{overflow:visible}#widget-customizer-control-templates,.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label,.customize-control-widget_form .widget-control-save,.reorder-done,.reordering .reorder{display:none}.customize-control-widget_form .widget-top{-webkit-transition:opacity .5s;transition:opacity .5s}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.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;-ms-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{-webkit-transition:background-color .4s;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;border-top:none;line-height:16px}.widget-top{cursor:move}.customize-control-widget_form.expanded a.widget-action:after{content:"\f142"}.customize-control-widget_form.wide-widget-control a.widget-action:after{content:"\f141"}.customize-control-widget_form.wide-widget-control.expanded a.widget-action:after{content:"\f139"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8);position:relative;z-index:1}.reorder-toggle{float:left;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reorder-toggle:focus{outline:dotted 1px}.reordering .reorder-done{display:block;color:#0073aa}.reordering .reorder-done:active,.reordering .reorder-done:hover{color:#00a0d2}#customize-theme-controls .reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#customize-theme-controls .widget-reorder-nav{display:none;float:left;background-color:#fafafa}.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}.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;font:400 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#444;background:#eee}.move-widget:before{content:'\f504'}.move-widget-down:before{content:'\f347'}.move-widget-up:before{content:'\f343'}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down{color:#d5d5d5;cursor:default}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #dedede;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;-ms-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:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets .widget-title:before,.add-new-widget:before{content:"\f132";-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-full-overlay-main{left:auto;width:100%}#customize-theme-controls .add-new-widget{cursor:pointer;float:left;margin-right:10px;-webkit-transition:all .2s;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.add-new-widget:before{display:inline-block;position:relative;right:-2px;top:-1px;font:400 20px/1 dashicons;vertical-align:middle;-webkit-transition:all .2s;transition:all .2s;-webkit-font-smoothing:antialiased}body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}body.adding-widget .add-new-widget:before{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}#available-widgets .widget{position:static}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}#available-widgets{position:absolute;top:0;bottom:0;right:-301px;visibility:hidden;overflow:auto;width:300px;margin:0;z-index:1;background:#eee!important;-webkit-transition:right .18s;transition:right .18s;border-left:1px solid #ddd}.ios #available-widgets{-webkit-transition:right 0s;transition:right 0s}#available-widgets-list{top:46px;position:absolute;overflow:auto;bottom:0;width:100%}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;height:46px;padding:8px 13px 7px 17px;background:#eee;border-bottom:1px solid #e4e4e4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-widgets-filter input{padding:5px 10px 2px;width:100%}#available-widgets .widget-tpl{position:relative;padding:20px 60px 20px 15px;background:#fff;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#eee;border-bottom-color:#ccc}#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-widgets .widget-title h4{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#777}#customize-preview{-webkit-transition:all .2s;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{position:absolute;top:-3px;left:100%;margin-left:20px;width:20px;height:20px;color:#32373c;font:400 20px/1 dashicons;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=super] .widget-title:before,#available-widgets [class*=like] .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*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before,#available-widgets [class*=chat] .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*=event] .widget-title:before,#available-widgets [class*=calendar] .widget-title:before{content:"\f145";top:-4px}#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"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=video] .widget-title:before,#available-widgets [class*=tube] .widget-title:before{content:"\f126"}#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before,#available-widgets [class*=audio] .widget-title:before{content:"\f127"}#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=user] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before{content:"\f110"}#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}#available-widgets [class*=secur] .widget-title:before,#available-widgets [class*=firewall] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=stat] .widget-title:before,#available-widgets [class*=poll] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#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"}#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"}#available-widgets .customize-section-title{display:none}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget{margin-bottom:0}.widget-top{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h4{padding:13px 15px}.widget-top a.widget-action:after{padding-top:9px}.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}}@media screen and (max-width:640px){body.adding-widget div#available-widgets{top:46px;right:0;z-index:10;width:100%}#available-widgets .customize-section-title{display:block;margin:0}#available-widgets .customize-section-back{height:69px}#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 14px 12px 10px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#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%;background:#fff;height:auto;padding:10px 15px}#available-widgets-list{top:140px}} \ No newline at end of file diff --git a/wp-admin/css/customize-widgets.css b/wp-admin/css/customize-widgets.css new file mode 100644 index 0000000000..278c32fa21 --- /dev/null +++ b/wp-admin/css/customize-widgets.css @@ -0,0 +1,694 @@ +.wp-full-overlay-sidebar { + overflow: visible; +} + +/** + * Hide all sidebar sections by default, only show them (via JS) once the + * preview loads and we know whether the sidebars are used in the template. + */ + +.control-section.control-section-sidebar, +.customize-control-sidebar_widgets label, +.customize-control-sidebar_widgets .hide-if-js { + /* The link in .customize-control-sidebar_widgets .hide-if-js will fail if it ever gets used. */ + display: none; +} + +.control-section.control-section-sidebar .accordion-section-content.ui-sortable { + overflow: visible; +} + +.customize-control-widget_form .widget-top { + -webkit-transition: opacity 0.5s; + transition: opacity 0.5s; +} + +.customize-control-widget_form:not(.widget-rendered) .widget-top { + opacity: 0.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: 0.7; + pointer-events: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-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 rgb(229, 229, 229); + overflow: auto; +} +.customize-control-widget_form.wide-widget-control .widget-inside > .form { + padding: 20px; +} + +.customize-control-widget_form.wide-widget-control .widget-top { + -webkit-transition: background-color 0.4s; + transition: background-color 0.4s; +} +.customize-control-widget_form.wide-widget-control.expanding .widget-top, +.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top { + background-color: rgb(227, 227, 227); +} + +.widget-inside { + padding: 1px 10px 10px 10px; + border-top: none; + line-height: 16px; +} + +.widget-top { + cursor: move; +} + +.customize-control-widget_form.expanded a.widget-action:after { + content: "\f142"; +} + +.customize-control-widget_form.wide-widget-control a.widget-action:after { + content: "\f139"; +} + +.customize-control-widget_form.wide-widget-control.expanded a.widget-action:after { + content: "\f141"; +} + +.widget-title-action { + cursor: pointer; +} + +.customize-control-widget_form .widget .customize-control-title { + cursor: move; +} + +.control-section.accordion-section.highlighted > .accordion-section-title, +.customize-control-widget_form.highlighted { + 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); + position: relative; + z-index: 1; +} + +#widget-customizer-control-templates { + display: none; +} + +/** +* Widget reordering styles +**/ + +.reorder-toggle { + float: right; + padding: 5px 8px; + text-decoration: none; + cursor: pointer; + outline: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.reorder-toggle:focus { + outline: 1px dotted; +} + +.reorder-done, +.reordering .reorder { + display: none; +} + +.reordering .reorder-done { + display: block; + color: #0073aa; +} + +.reordering .reorder-done:hover, +.reordering .reorder-done:active { + color: #00a0d2; +} + +#customize-theme-controls .reordering .add-new-widget { + opacity: 0.2; + pointer-events: none; + cursor: not-allowed; +} + +#customize-theme-controls .widget-reorder-nav { + display: none; + float: right; + background-color: #fafafa; +} + +.widget-reorder-nav span { + position: relative; + overflow: hidden; + float: left; + display: block; + width: 33px; /* was 42px for mobile */ + height: 43px; + color: #82878c; + text-indent: -9999px; + cursor: pointer; + outline: none; +} + +.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; +} + +.widget-reorder-nav span:hover, +.widget-reorder-nav span:focus { + color: #444; + background: #eee; +} + +.move-widget:before { + content: '\f504'; +} + +.move-widget-down:before { + content: '\f347'; +} + +.move-widget-up:before { + content: '\f343'; +} + +#customize-theme-controls .first-widget .move-widget-up, +#customize-theme-controls .last-widget .move-widget-down { + color: #d5d5d5; + cursor: default; +} + +#customize-theme-controls .move-widget-area { + display: none; + background: #fff; + border: 1px solid #dedede; + 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; + -ms-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; +} + + +/** + * Styles for new widget addition panel + */ +.wp-full-overlay-main { + right: auto; /* this overrides a right: 0; which causes the preview to resize, I'd rather have it go off screen at the normal size. */ + width: 100%; +} + +#customize-theme-controls .add-new-widget { + cursor: pointer; + float: right; + margin-left: 10px; + -webkit-transition: all 0.2s; + transition: all 0.2s; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + outline: none; +} + +.add-new-widget:before { + content: "\f132"; + display: inline-block; + position: relative; + left: -2px; + top: -1px; + font: normal 20px/1 'dashicons'; + vertical-align: middle; + -webkit-transition: all 0.2s; + transition: all 0.2s; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body.adding-widget .add-new-widget, +body.adding-widget .add-new-widget:hover { + background: #eee; + border-color: #999; + color: #32373c; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); +} +body.adding-widget .add-new-widget:before { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + +#available-widgets .widget { + position: static; +} + +/* override widgets admin page rules in wp-admin/css/wp-admin.css */ +#widgets-left #available-widgets .widget { + float: none !important; + width: auto !important; +} + +#available-widgets { + position: absolute; + top: 0; + bottom: 0; + left: -301px; + visibility: hidden; + overflow: auto; + width: 300px; + margin: 0; + z-index: 1; + background: #eee !important; + -webkit-transition: left .18s; + transition: left .18s; + border-right: 1px solid #ddd; +} + +.ios #available-widgets { + -webkit-transition: left 0s; + transition: left 0s; +} + +#available-widgets-list { + top: 46px; + position: absolute; + overflow: auto; + bottom: 0; + width: 100%; +} + +#available-widgets-filter { + position: fixed; + top: 0; + z-index: 1; + width: 300px; + height: 46px; + padding: 8px 17px 7px 13px; + background: #eee; + border-bottom: 1px solid #e4e4e4; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#available-widgets-filter input { + padding: 5px 10px 2px 10px; + width: 100%; +} + +#available-widgets .widget-tpl { + position: relative; + padding: 20px 15px 20px 60px; + background: #fff; + border-bottom: 1px solid #e4e4e4; + cursor: pointer; + display: none; +} + +#available-widgets .widget-tpl:hover, +#available-widgets .widget-tpl.selected { + background: #eee; + border-bottom-color: #ccc; +} + +#available-widgets .widget-top, +#available-widgets .widget-top:hover { + border: none; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +#available-widgets .widget-title h4 { + padding: 0 0 5px; + font-size: 14px; +} + +#available-widgets .widget .widget-description { + padding: 0; + color: #777; +} + +#customize-preview { + -webkit-transition: all 0.2s; + transition: all 0.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: 0.4; +} + + +/** + * Widget Icon styling + * No plurals in naming. + * Ordered from lowest to highest specificity. + **/ +#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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* smiley */ +#available-widgets [class*="easy"] .widget-title:before { content: "\f328"; top: -4px; } + +/* star-filled */ +#available-widgets [class*="super"] .widget-title:before, +#available-widgets [class*="like"] .widget-title:before { content: "\f155"; top: -4px; } + +/* wordpress */ +#available-widgets [class*="meta"] .widget-title:before { content: "\f120"; } + +/* archive-box */ +#available-widgets [class*="archives"] .widget-title:before { content: "\f480"; top: -4px; } + +/* category */ +#available-widgets [class*="categor"] .widget-title:before { content: "\f318"; top: -4px; } + +/* comments */ +#available-widgets [class*="comment"] .widget-title:before, +#available-widgets [class*="testimonial"] .widget-title:before, +#available-widgets [class*="chat"] .widget-title:before { content: "\f101"; } + +/* post */ +#available-widgets [class*="post"] .widget-title:before { content: "\f109"; } + +/* admin-page */ +#available-widgets [class*="page"] .widget-title:before { content: "\f105"; } + +/* text */ +#available-widgets [class*="text"] .widget-title:before { content: "\f478"; } + +/* links */ +#available-widgets [class*="link"] .widget-title:before { content: "\f103"; } + +/* search */ +#available-widgets [class*="search"] .widget-title:before { content: "\f179"; } + +/* menu */ +#available-widgets [class*="menu"] .widget-title:before, +#available-widgets [class*="nav"] .widget-title:before { content: "\f333"; } + +/* tag-cloud */ +#available-widgets [class*="tag"] .widget-title:before { content: "\f479"; } + +/* rss */ +#available-widgets [class*="rss"] .widget-title:before { content: "\f303"; top: -6px; } + +/* calendar */ +#available-widgets [class*="event"] .widget-title:before, +#available-widgets [class*="calendar"] .widget-title:before { content: "\f145"; top: -4px;} + +/* 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"; } + +/* format-gallery */ +#available-widgets [class*="album"] .widget-title:before, +#available-widgets [class*="galler"] .widget-title:before { content: "\f161"; } + +/* format-video */ +#available-widgets [class*="video"] .widget-title:before, +#available-widgets [class*="tube"] .widget-title:before { content: "\f126"; } + +/* 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"; } + +/* admin-users */ +#available-widgets [class*="login"] .widget-title:before, +#available-widgets [class*="user"] .widget-title:before, +#available-widgets [class*="member"] .widget-title:before, +#available-widgets [class*="avatar"] .widget-title:before, +#available-widgets [class*="subscriber"] .widget-title:before, +#available-widgets [class*="profile"] .widget-title:before, +#available-widgets [class*="grofile"] .widget-title:before { content: "\f110"; } + +/* 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; } + +/* shield */ +#available-widgets [class*="secur"] .widget-title:before, +#available-widgets [class*="firewall"] .widget-title:before { content: "\f332"; } + +/* 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"; } + +/* feedback */ +#available-widgets [class*="form"] .widget-title:before { content: "\f175"; } + +/* 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"; } + +/* share */ +#available-widgets [class*="share"] .widget-title:before, +#available-widgets [class*="socia"] .widget-title:before { content: "\f237"; } + +/* translation */ +#available-widgets [class*="lang"] .widget-title:before, +#available-widgets [class*="translat"] .widget-title:before { content: "\f326"; } + +/* location-alt */ +#available-widgets [class*="locat"] .widget-title:before, +#available-widgets [class*="map"] .widget-title:before { content: "\f231"; } + +/* download */ +#available-widgets [class*="download"] .widget-title:before { content: "\f316"; } + +/* cloud */ +#available-widgets [class*="weather"] .widget-title:before { content: "\f176"; top: -4px;} + +/* facebook */ +#available-widgets [class*="facebook"] .widget-title:before { content: "\f304"; } + +/* twitter */ +#available-widgets [class*="tweet"] .widget-title:before, +#available-widgets [class*="twitter"] .widget-title:before { content: "\f301"; } + +#available-widgets .customize-section-title { + display: none; +} + +@media screen and (max-height: 700px) and (min-width: 981px) { + .customize-control-widget { + margin-bottom: 0; + } + .widget-top { + -webkit-box-shadow: none; + box-shadow: none; + margin-top: -1px; + } + .widget-top:hover { + position: relative; + z-index: 1; + } + .last-widget { + margin-bottom: 15px; + } + .widget-title h4 { + padding: 13px 15px; + } + .widget-top a.widget-action:after { + padding-top: 9px; + } + .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; + } +} + +@media screen and ( max-width: 640px ) { + body.adding-widget div#available-widgets { + top: 46px; + left: 0; + z-index: 10; + width: 100%; + } + + #available-widgets .customize-section-title { + display: block; + margin: 0; + } + + #available-widgets .customize-section-back { + height: 69px; + } + + #available-widgets .customize-section-title h3 { + font-size: 20px; + font-weight: 200; + padding: 9px 10px 12px 14px; + margin: 0; + line-height: 24px; + color: #555; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + #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%; + background: #fff; + height: auto; + padding: 10px 15px; + } + + #available-widgets-list { + top: 140px; + } +} diff --git a/wp-admin/css/customize-widgets.min.css b/wp-admin/css/customize-widgets.min.css new file mode 100644 index 0000000000..40bfd22e42 --- /dev/null +++ b/wp-admin/css/customize-widgets.min.css @@ -0,0 +1 @@ +.control-section.control-section-sidebar .accordion-section-content.ui-sortable,.wp-full-overlay-sidebar{overflow:visible}#widget-customizer-control-templates,.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label,.customize-control-widget_form .widget-control-save,.reorder-done,.reordering .reorder{display:none}.customize-control-widget_form .widget-top{-webkit-transition:opacity .5s;transition:opacity .5s}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.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;-ms-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{-webkit-transition:background-color .4s;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;border-top:none;line-height:16px}.widget-top{cursor:move}.customize-control-widget_form.expanded a.widget-action:after{content:"\f142"}.customize-control-widget_form.wide-widget-control a.widget-action:after{content:"\f139"}.customize-control-widget_form.wide-widget-control.expanded a.widget-action:after{content:"\f141"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8);position:relative;z-index:1}.reorder-toggle{float:right;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reorder-toggle:focus{outline:dotted 1px}.reordering .reorder-done{display:block;color:#0073aa}.reordering .reorder-done:active,.reordering .reorder-done:hover{color:#00a0d2}#customize-theme-controls .reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#customize-theme-controls .widget-reorder-nav{display:none;float:right;background-color:#fafafa}.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}.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:400 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#444;background:#eee}.move-widget:before{content:'\f504'}.move-widget-down:before{content:'\f347'}.move-widget-up:before{content:'\f343'}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down{color:#d5d5d5;cursor:default}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #dedede;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;-ms-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:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets .widget-title:before,.add-new-widget:before{content:"\f132";-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-full-overlay-main{right:auto;width:100%}#customize-theme-controls .add-new-widget{cursor:pointer;float:right;margin-left:10px;-webkit-transition:all .2s;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.add-new-widget:before{display:inline-block;position:relative;left:-2px;top:-1px;font:400 20px/1 dashicons;vertical-align:middle;-webkit-transition:all .2s;transition:all .2s;-webkit-font-smoothing:antialiased}body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}body.adding-widget .add-new-widget:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#available-widgets .widget{position:static}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}#available-widgets{position:absolute;top:0;bottom:0;left:-301px;visibility:hidden;overflow:auto;width:300px;margin:0;z-index:1;background:#eee!important;-webkit-transition:left .18s;transition:left .18s;border-right:1px solid #ddd}.ios #available-widgets{-webkit-transition:left 0s;transition:left 0s}#available-widgets-list{top:46px;position:absolute;overflow:auto;bottom:0;width:100%}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;height:46px;padding:8px 17px 7px 13px;background:#eee;border-bottom:1px solid #e4e4e4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-widgets-filter input{padding:5px 10px 2px;width:100%}#available-widgets .widget-tpl{position:relative;padding:20px 15px 20px 60px;background:#fff;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#eee;border-bottom-color:#ccc}#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-widgets .widget-title h4{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#777}#customize-preview{-webkit-transition:all .2s;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{position:absolute;top:-3px;right:100%;margin-right:20px;width:20px;height:20px;color:#32373c;font:400 20px/1 dashicons;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=super] .widget-title:before,#available-widgets [class*=like] .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*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before,#available-widgets [class*=chat] .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*=event] .widget-title:before,#available-widgets [class*=calendar] .widget-title:before{content:"\f145";top:-4px}#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"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=video] .widget-title:before,#available-widgets [class*=tube] .widget-title:before{content:"\f126"}#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before,#available-widgets [class*=audio] .widget-title:before{content:"\f127"}#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=user] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before{content:"\f110"}#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}#available-widgets [class*=secur] .widget-title:before,#available-widgets [class*=firewall] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=stat] .widget-title:before,#available-widgets [class*=poll] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#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"}#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"}#available-widgets .customize-section-title{display:none}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget{margin-bottom:0}.widget-top{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h4{padding:13px 15px}.widget-top a.widget-action:after{padding-top:9px}.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}}@media screen and (max-width:640px){body.adding-widget div#available-widgets{top:46px;left:0;z-index:10;width:100%}#available-widgets .customize-section-title{display:block;margin:0}#available-widgets .customize-section-back{height:69px}#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 10px 12px 14px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#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%;background:#fff;height:auto;padding:10px 15px}#available-widgets-list{top:140px}} \ No newline at end of file diff --git a/wp-admin/css/dashboard-rtl.css b/wp-admin/css/dashboard-rtl.css new file mode 100644 index 0000000000..d04ae1ce97 --- /dev/null +++ b/wp-admin/css/dashboard-rtl.css @@ -0,0 +1,1107 @@ +#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; +} + +/*------------------------------------------------------------------------------ + 9.0 - Dashboard +------------------------------------------------------------------------------*/ + +#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; +} + +/* @todo: this was originally in this section, but likely belongs elsewhere */ +#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 */ +.welcome-panel { + position: relative; + overflow: auto; + margin: 16px 0; + padding: 23px 10px 0; + border: 1px solid #e5e5e5; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); + background: #fff; + font-size: 13px; + line-height: 2.1em; +} + +.welcome-panel h3 { + margin: 0; + font-size: 21px; + font-weight: normal; + line-height: 1.2; +} + +.welcome-panel h4 { + margin: 1.33em 0 0; + font-size: 16px; +} + +.welcome-panel li { + font-size: 14px; +} + +.welcome-panel p { + color: #777; +} + +.welcome-panel a { + text-decoration: none; +} + +.welcome-panel .about-description { + font-size: 16px; + margin: 0; +} + +.welcome-panel .welcome-panel-close { + position: absolute; + top: 10px; + left: 10px; + padding: 10px 21px 10px 15px; + font-size: 13px; + line-height: 1.23076923; /* Chrome rounding, needs to be 16px equivalent */ + text-decoration: none; +} + +.welcome-panel .welcome-panel-close:before { + position: absolute; + top: 8px; + right: 0; + -webkit-transition: all .1s ease-in-out; + 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-right: 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: #464646; +} + +.welcome-panel .welcome-icon { + background: transparent !important; +} + +.welcome-panel .welcome-icon:before { + color: #82878c; + font: normal 20px/1 'dashicons'; + speak: none; + display: inline-block; + padding: 0 0 0 10px; + top: -1px; + position: relative; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + vertical-align: top; +} + +.welcome-panel .welcome-write-blog:before, +.welcome-panel .welcome-edit-page:before { + content:'\f119'; + top: -3px; +} + +.welcome-panel .welcome-add-page:before { + content:'\f132'; +} + +.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; +} + +.welcome-panel .welcome-widgets-menus { + line-height: 16px; +} + +.welcome-panel .welcome-panel-column ul { + margin: 0.8em 0 1em 1em; +} + +.welcome-panel .welcome-panel-column li { + line-height: 16px; + list-style-type: none; + padding: 0 0 8px; +} + +/* Dashboard WordPress news */ + +#dashboard_primary .inside { + margin: 0; + padding: 0; +} + +#dashboard_primary .widget-loading, +#dashboard_primary .dashboard-widget-control-form { + padding: 12px 12px 0; +} + +body #dashboard-widgets .postbox form .submit { + margin: 0; +} + +.dashboard-widget-control-form { + overflow: hidden; +} + +.dashboard-widget-control-form p { + margin-top: 0; +} + +.rssSummary { + color: #777; + margin-top: 4px; +} + +#dashboard_primary .rss-widget { + border-bottom: 1px solid #eee; + font-size: 13px; + padding: 8px 12px 10px; +} + +#dashboard_primary .rss-widget:last-child { + border-bottom: none; + padding-bottom: 8px; +} + +#dashboard_primary .rss-widget a { + font-weight: normal; +} + +#dashboard_primary .rss-widget span, +#dashboard_primary .rss-widget span.rss-date { + color: #777; +} + +#dashboard_primary .rss-widget span.rss-date { + margin-right: 12px; +} + +#dashboard_primary .rss-widget ul li { + margin-bottom: 8px; +} + +/* Dashboard right now */ + +#dashboard_right_now ul { + margin: 0; + /* contain floats but don't use overflow: hidden */ + 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 h4.mu-storage { + margin-bottom: 10px; +} + +/* Dashboard right now - Colors */ + +#dashboard_right_now li a:before, +#dashboard_right_now li span:before { + color: #82878c; +} + +#dashboard_right_now .sub { + color: #777; + background: #f5f5f5; + border-top: 1px solid #eee; + padding: 10px 12px 6px 12px; +} + +#dashboard_right_now .sub h4 { + 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 right now - Icons */ +#dashboard_right_now li a:before, +#dashboard_right_now li span:before { + content: '\f159'; + font: normal 20px/1 'dashicons'; + speak: none; + display: block; + float: right; + margin: 0 0 0 5px; + padding: 0; + text-indent: 0; + text-align: center; + position: relative; + -webkit-font-smoothing: antialiased; + text-decoration: none !important; +} + +#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 Quick Draft */ + +#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; +} + +/* Dashboard Quick Draft - Form styling */ + +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 { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: #777; +} + +#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; +} + +/* Dashboard Quick Draft - Drafts list */ + +.js #dashboard_quick_press .drafts { + border-top: 1px solid #eee; +} + +#dashboard_quick_press .drafts abbr { + border: none; +} + +#dashboard_quick_press .drafts h4 { + margin: 0 12px 8px; + font-weight: normal; +} + +#dashboard_quick_press .drafts .view-all { + float: left; + margin: 0 0 0 12px; +} + +#dashboard_primary a.rsswidget { + font-weight: normal; +} + +#dashboard_quick_press .drafts ul { + margin: 0 12px; +} + +#dashboard_quick_press .drafts li { + margin-bottom: 1em; +} +#dashboard_quick_press .drafts li time { + color: #777; +} + +#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 activity widget */ + +#dashboard-widgets #dashboard_activity h4 { + margin: 0 12px 8px 0; + font-weight: normal; +} + +#dashboard-widgets #dashboard_activity h4.comment-meta { + margin: 0; +} + +#dashboard_activity h4.comment-meta { + margin-bottom: 4px; +} + +#dashboard_activity ul { + padding: 0 12px; +} + +#dashboard_activity .comment-meta span.approve:before { + content: '\f227'; + font: 20px/.5 "dashicons"; + margin-right: 12px; + vertical-align: middle; + position: relative; + top: -1px; + margin-left: 2px; +} + +#dashboard_activity .inside { + padding: 0; + margin: 0; +} + +#dashboard_activity .no-activity { + overflow: hidden; + padding: 0 12px 12px; + text-align: center; +} + +#dashboard_activity .no-activity p { + color: #999; + 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 #eeeeee; + margin-top: 0; + padding: 8px 12px 4px; +} + +#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: #777; +} + +.activity-block { + border-bottom: 1px solid #eee; + overflow: hidden; + padding: 8px 0 4px; +} + +.activity-block:last-child { + border-bottom: none; +} + +.activity-block .subsubsub li { + color: #ddd; +} + +/* Dashboard activity widget - Comments */ +/* @todo: needs serious de-duplication */ + +#activity-widget #the-comment-list tr.undo, +#activity-widget #the-comment-list div.undo { + background: none; + 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: 13px; +} + +#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 h4 { + font-size: 13px; + color: #999; +} + +#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 #eeeeee; +} + +#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; +} + +/* Browse happy box */ + +#dashboard-widgets #dashboard_browser_nag.postbox .inside { + margin: 10px; +} + +.edit-box { + display: none; +} + +h3:hover .edit-box { + display: inline; +} + +#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 a { + text-decoration: none; +} + +#dashboard-widgets h3 a { + text-decoration: underline; +} + +#dashboard-widgets h3 .postbox-title-action { + position: absolute; + left: 10px; + padding: 0; + top: 5px; +} + +.js #dashboard-widgets h3 .postbox-title-action { + left: 33px; +} + +#dashboard-widgets h4 { + color: #23282d; + font-weight: normal; + font-size: 14px; + margin: 0 0 .2em; + padding: 0; +} + +#dashboard_plugins h5 { + font-size: 14px; +} + +/* Recent Comments */ + +#latest-comments #the-comment-list { + position: relative; +} + +#activity-widget #the-comment-list .comment, +#activity-widget #the-comment-list .pingback { + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.06); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.06); +} + +#activity-widget .comments #the-comment-list .alt { + background-color: transparent; +} + +#activity-widget #latest-comments #the-comment-list .comment-item { + padding: 1em 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-item h4 { + line-height: 1.5em; + margin-top: 0; + color: #666; +} + +#latest-comments #the-comment-list .comment-item h4 cite { + font-style: normal; + font-weight: normal; +} + +#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; +} + +/* 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; + padding: 0; + list-style: none; +} + +a.rsswidget { + font-size: 14px; + font-weight: 600; + line-height: 1.7em; +} + +.rss-widget ul li { + line-height: 1.5em; + margin-bottom: 12px; +} + +.rss-widget span.rss-date { + color: #999; + 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; +} + +/* Browser Nag */ +#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; + -webkit-box-shadow: none; + box-shadow: none; +} + +#dashboard_browser_nag.postbox.browser-insecure h3 { + border-bottom-color: #cd5a5a; + color: #fff; +} + +#dashboard_browser_nag.postbox h3 { + border-bottom-color: #f6e2ac; + background: transparent none; + color: #fff; + -webkit-box-shadow: none; + box-shadow: none; +} + +#dashboard_browser_nag a { + color: #fff; +} + +/* Make the browser nags easier to read with Open Sans */ + +#dashboard_browser_nag h3.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 p, +.postbox#dashboard_browser_nag a, +.postbox#dashboard_browser_nag p.browser-update-nag { + font-size: 16px; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/* one column on the dash */ +@media only screen and (max-width: 799px) { + #wpbody-content #dashboard-widgets .postbox-container { + width: 100%; + } +} + +/* two columns on the dash, but keep the setting if one is selected */ +@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; + } + + #wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container { + width: 100%; + } + + #wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container { + border: 0 none; + height: 0; + min-height: 0; + } + + /* show the radio buttons for column prefs only for one or two columns */ + .index-php .screen-layout, + .index-php .columns-prefs { + display: block; + } + + .columns-prefs .columns-prefs-3, + .columns-prefs .columns-prefs-4 { + display: none; + } +} + +/* three columns on the dash */ +@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; + } +} + +@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: 0.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; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + /* Keep the close icon from overlapping the Welcome text. */ + .welcome-panel .welcome-panel-close { + overflow: hidden; + text-indent: 40px; + white-space: nowrap; + width: 20px; + height: 20px; + padding: 5px; + top: 5px; + left: 5px; + } + + /* Make the close icon larger for tappability. */ + .welcome-panel .welcome-panel-close:before { + font-size: 20px; + top: 5px; + right: -35px; + } +} diff --git a/wp-admin/css/dashboard.css b/wp-admin/css/dashboard.css new file mode 100644 index 0000000000..2fb891a46c --- /dev/null +++ b/wp-admin/css/dashboard.css @@ -0,0 +1,1107 @@ +#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; +} + +/*------------------------------------------------------------------------------ + 9.0 - Dashboard +------------------------------------------------------------------------------*/ + +#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; +} + +/* @todo: this was originally in this section, but likely belongs elsewhere */ +#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 */ +.welcome-panel { + position: relative; + overflow: auto; + margin: 16px 0; + padding: 23px 10px 0; + border: 1px solid #e5e5e5; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); + background: #fff; + font-size: 13px; + line-height: 2.1em; +} + +.welcome-panel h3 { + margin: 0; + font-size: 21px; + font-weight: normal; + line-height: 1.2; +} + +.welcome-panel h4 { + margin: 1.33em 0 0; + font-size: 16px; +} + +.welcome-panel li { + font-size: 14px; +} + +.welcome-panel p { + color: #777; +} + +.welcome-panel a { + text-decoration: none; +} + +.welcome-panel .about-description { + font-size: 16px; + margin: 0; +} + +.welcome-panel .welcome-panel-close { + position: absolute; + top: 10px; + right: 10px; + padding: 10px 15px 10px 21px; + font-size: 13px; + line-height: 1.23076923; /* Chrome rounding, needs to be 16px equivalent */ + text-decoration: none; +} + +.welcome-panel .welcome-panel-close:before { + position: absolute; + top: 8px; + left: 0; + -webkit-transition: all .1s ease-in-out; + 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-left: 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: #464646; +} + +.welcome-panel .welcome-icon { + background: transparent !important; +} + +.welcome-panel .welcome-icon:before { + color: #82878c; + font: normal 20px/1 'dashicons'; + speak: none; + display: inline-block; + padding: 0 10px 0 0; + top: -1px; + position: relative; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + vertical-align: top; +} + +.welcome-panel .welcome-write-blog:before, +.welcome-panel .welcome-edit-page:before { + content:'\f119'; + top: -3px; +} + +.welcome-panel .welcome-add-page:before { + content:'\f132'; +} + +.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; +} + +.welcome-panel .welcome-widgets-menus { + line-height: 16px; +} + +.welcome-panel .welcome-panel-column ul { + margin: 0.8em 1em 1em 0; +} + +.welcome-panel .welcome-panel-column li { + line-height: 16px; + list-style-type: none; + padding: 0 0 8px; +} + +/* Dashboard WordPress news */ + +#dashboard_primary .inside { + margin: 0; + padding: 0; +} + +#dashboard_primary .widget-loading, +#dashboard_primary .dashboard-widget-control-form { + padding: 12px 12px 0; +} + +body #dashboard-widgets .postbox form .submit { + margin: 0; +} + +.dashboard-widget-control-form { + overflow: hidden; +} + +.dashboard-widget-control-form p { + margin-top: 0; +} + +.rssSummary { + color: #777; + margin-top: 4px; +} + +#dashboard_primary .rss-widget { + border-bottom: 1px solid #eee; + font-size: 13px; + padding: 8px 12px 10px; +} + +#dashboard_primary .rss-widget:last-child { + border-bottom: none; + padding-bottom: 8px; +} + +#dashboard_primary .rss-widget a { + font-weight: normal; +} + +#dashboard_primary .rss-widget span, +#dashboard_primary .rss-widget span.rss-date { + color: #777; +} + +#dashboard_primary .rss-widget span.rss-date { + margin-left: 12px; +} + +#dashboard_primary .rss-widget ul li { + margin-bottom: 8px; +} + +/* Dashboard right now */ + +#dashboard_right_now ul { + margin: 0; + /* contain floats but don't use overflow: hidden */ + 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 h4.mu-storage { + margin-bottom: 10px; +} + +/* Dashboard right now - Colors */ + +#dashboard_right_now li a:before, +#dashboard_right_now li span:before { + color: #82878c; +} + +#dashboard_right_now .sub { + color: #777; + background: #f5f5f5; + border-top: 1px solid #eee; + padding: 10px 12px 6px 12px; +} + +#dashboard_right_now .sub h4 { + 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 right now - Icons */ +#dashboard_right_now li a:before, +#dashboard_right_now li span:before { + content: '\f159'; + font: normal 20px/1 'dashicons'; + speak: none; + display: block; + float: left; + margin: 0 5px 0 0; + padding: 0; + text-indent: 0; + text-align: center; + position: relative; + -webkit-font-smoothing: antialiased; + text-decoration: none !important; +} + +#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 Quick Draft */ + +#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; +} + +/* Dashboard Quick Draft - Form styling */ + +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 { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: #777; +} + +#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; +} + +/* Dashboard Quick Draft - Drafts list */ + +.js #dashboard_quick_press .drafts { + border-top: 1px solid #eee; +} + +#dashboard_quick_press .drafts abbr { + border: none; +} + +#dashboard_quick_press .drafts h4 { + margin: 0 12px 8px; + font-weight: normal; +} + +#dashboard_quick_press .drafts .view-all { + float: right; + margin: 0 12px 0 0; +} + +#dashboard_primary a.rsswidget { + font-weight: normal; +} + +#dashboard_quick_press .drafts ul { + margin: 0 12px; +} + +#dashboard_quick_press .drafts li { + margin-bottom: 1em; +} +#dashboard_quick_press .drafts li time { + color: #777; +} + +#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 activity widget */ + +#dashboard-widgets #dashboard_activity h4 { + margin: 0 0 8px 12px; + font-weight: normal; +} + +#dashboard-widgets #dashboard_activity h4.comment-meta { + margin: 0; +} + +#dashboard_activity h4.comment-meta { + margin-bottom: 4px; +} + +#dashboard_activity ul { + padding: 0 12px; +} + +#dashboard_activity .comment-meta span.approve:before { + content: '\f227'; + font: 20px/.5 "dashicons"; + margin-left: 12px; + vertical-align: middle; + position: relative; + top: -1px; + margin-right: 2px; +} + +#dashboard_activity .inside { + padding: 0; + margin: 0; +} + +#dashboard_activity .no-activity { + overflow: hidden; + padding: 0 12px 12px; + text-align: center; +} + +#dashboard_activity .no-activity p { + color: #999; + 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 #eeeeee; + margin-top: 0; + padding: 8px 12px 4px; +} + +#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: #777; +} + +.activity-block { + border-bottom: 1px solid #eee; + overflow: hidden; + padding: 8px 0 4px; +} + +.activity-block:last-child { + border-bottom: none; +} + +.activity-block .subsubsub li { + color: #ddd; +} + +/* Dashboard activity widget - Comments */ +/* @todo: needs serious de-duplication */ + +#activity-widget #the-comment-list tr.undo, +#activity-widget #the-comment-list div.undo { + background: none; + 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: 13px; +} + +#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 h4 { + font-size: 13px; + color: #999; +} + +#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 #eeeeee; +} + +#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; +} + +/* Browse happy box */ + +#dashboard-widgets #dashboard_browser_nag.postbox .inside { + margin: 10px; +} + +.edit-box { + display: none; +} + +h3:hover .edit-box { + display: inline; +} + +#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 a { + text-decoration: none; +} + +#dashboard-widgets h3 a { + text-decoration: underline; +} + +#dashboard-widgets h3 .postbox-title-action { + position: absolute; + right: 10px; + padding: 0; + top: 5px; +} + +.js #dashboard-widgets h3 .postbox-title-action { + right: 33px; +} + +#dashboard-widgets h4 { + color: #23282d; + font-weight: normal; + font-size: 14px; + margin: 0 0 .2em; + padding: 0; +} + +#dashboard_plugins h5 { + font-size: 14px; +} + +/* Recent Comments */ + +#latest-comments #the-comment-list { + position: relative; +} + +#activity-widget #the-comment-list .comment, +#activity-widget #the-comment-list .pingback { + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.06); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.06); +} + +#activity-widget .comments #the-comment-list .alt { + background-color: transparent; +} + +#activity-widget #latest-comments #the-comment-list .comment-item { + padding: 1em 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-item h4 { + line-height: 1.5em; + margin-top: 0; + color: #666; +} + +#latest-comments #the-comment-list .comment-item h4 cite { + font-style: normal; + font-weight: normal; +} + +#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; +} + +/* 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; + padding: 0; + list-style: none; +} + +a.rsswidget { + font-size: 14px; + font-weight: 600; + line-height: 1.7em; +} + +.rss-widget ul li { + line-height: 1.5em; + margin-bottom: 12px; +} + +.rss-widget span.rss-date { + color: #999; + 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; +} + +/* Browser Nag */ +#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; + -webkit-box-shadow: none; + box-shadow: none; +} + +#dashboard_browser_nag.postbox.browser-insecure h3 { + border-bottom-color: #cd5a5a; + color: #fff; +} + +#dashboard_browser_nag.postbox h3 { + border-bottom-color: #f6e2ac; + background: transparent none; + color: #fff; + -webkit-box-shadow: none; + box-shadow: none; +} + +#dashboard_browser_nag a { + color: #fff; +} + +/* Make the browser nags easier to read with Open Sans */ + +#dashboard_browser_nag h3.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 p, +.postbox#dashboard_browser_nag a, +.postbox#dashboard_browser_nag p.browser-update-nag { + font-size: 16px; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/* one column on the dash */ +@media only screen and (max-width: 799px) { + #wpbody-content #dashboard-widgets .postbox-container { + width: 100%; + } +} + +/* two columns on the dash, but keep the setting if one is selected */ +@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; + } + + #wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container { + width: 100%; + } + + #wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container { + border: 0 none; + height: 0; + min-height: 0; + } + + /* show the radio buttons for column prefs only for one or two columns */ + .index-php .screen-layout, + .index-php .columns-prefs { + display: block; + } + + .columns-prefs .columns-prefs-3, + .columns-prefs .columns-prefs-4 { + display: none; + } +} + +/* three columns on the dash */ +@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; + } +} + +@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: 0.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; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + /* Keep the close icon from overlapping the Welcome text. */ + .welcome-panel .welcome-panel-close { + overflow: hidden; + text-indent: 40px; + white-space: nowrap; + width: 20px; + height: 20px; + padding: 5px; + top: 5px; + right: 5px; + } + + /* Make the close icon larger for tappability. */ + .welcome-panel .welcome-panel-close:before { + font-size: 20px; + top: 5px; + left: -35px; + } +} diff --git a/wp-admin/css/deprecated-media-rtl.css b/wp-admin/css/deprecated-media-rtl.css new file mode 100644 index 0000000000..ddf4edd080 --- /dev/null +++ b/wp-admin/css/deprecated-media-rtl.css @@ -0,0 +1,407 @@ +/* Styles for the media library iframe (not used on the Library screen) */ + +div#media-upload-header { + margin: 0; + padding: 5px 5px 0; + font-weight: bold; + position: relative; + border-bottom: 1px solid #dfdfdf; + 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: normal; +} + +#sidemenu a { + padding: 0 7px; + display: block; + float: right; + line-height: 28px; + border-top: 1px solid #f9f9f9; + border-bottom: 1px solid #dfdfdf; + background-color: #f9f9f9; + text-decoration: none; + -webkit-transition: 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: normal; + padding-right: 6px; + padding-left: 6px; + border: 1px solid #dfdfdf; + border-bottom-color: #f1f1f1; + background-color: #f1f1f1; + color: #000; +} + +#media-upload:after { /* clearfix */ + content: ""; + display: table; + clear: both; +} + +#media-upload .slidetoggle { + border-top-color: #dfdfdf; +} + +#media-upload input[type="radio"] { + padding: 0; +} + +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: normal; +} + +.media-upload-form p.help { + margin: 0; + padding: 0; +} + +.media-upload-form fieldset { + width: 100%; + border: none; + text-align: justify; + margin: 0 0 1em 0; + padding: 0; +} + +/* specific to the image upload form */ + +.image-align-none-label { + background: url(../images/align-none.png) no-repeat center left; +} + +.image-align-left-label { + background: url(../images/align-left.png) no-repeat center left; +} + +.image-align-center-label { + background: url(../images/align-center.png) no-repeat center left; +} + +.image-align-right-label { + background: url(../images/align-right.png) no-repeat center left; +} + +tr.image-size td { + width: 460px; +} + +tr.image-size div.image-size-item { + margin: 0 0 5px; +} + +#library-form .progress, +#gallery-form .progress, +.insert-gallery, +.describe.startopen, +.describe.startclosed { + display: none; +} + +.media-item .thumbnail { + max-width: 128px; + max-height: 128px; +} + +thead.media-item-info tr { + background-color: transparent; +} + +.form-table thead.media-item-info { + border: 8px solid #fff; +} + +abbr.required { + text-decoration: none; + border: none; +} + +.describe label { + display: inline; +} + +.describe td.error { + padding: 2px 8px; +} + +.describe td.A1 { + width: 132px; +} + +.describe input[type="text"], +.describe textarea { + width: 460px; + border-width: 1px; + border-style: solid; +} + +/* Specific to Uploader */ + +#media-upload p.ml-submit { + padding: 1em 0; +} + +#media-upload p.help, +#media-upload label.help { + font-family: sans-serif; + font-style: italic; + font-weight: normal; +} + +#media-upload .ui-sortable .media-item { + cursor: move; +} + +#media-upload tr.image-size { + margin-bottom: 1em; + height: 3em; +} + +#media-upload #filter { + width: 623px; +} + +#media-upload #filter .subsubsub { + margin: 8px 0; +} + +#filter .tablenav select { + border-style: solid; + border-width: 1px; + padding: 2px; + vertical-align: top; + width: auto; +} + +#media-upload .del-attachment { + display: none; + margin: 5px 0; +} + +.menu_order { + float: 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: 0.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 #DADADA; +} + +h3.media-title { + font-size: 1.6em; +} + +h4.media-sub-title { + border-bottom: 1px solid #DADADA; + font-size: 1.3em; + margin: 12px; + padding: 0 0 3px; +} + +#gallery-settings .title, +h3.media-title, +h4.media-sub-title { + font-family: Georgia,"Times New Roman",Times,serif; + font-weight: normal; + color: #5A5A5A; +} + +#gallery-settings .describe td { + vertical-align: middle; + height: 3em; +} + +#gallery-settings .describe th.label { + padding-top: .5em; + text-align: 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: #464646; + margin-left: 15px; +} + +#gallery-settings .align .field label { + margin: 0 3px 0 1em; +} + +#gallery-settings p.ml-submit { + border-top: 1px solid #dfdfdf; +} + +#gallery-settings select#columns { + width: 6em; +} + +#sort-buttons { + font-size: 0.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 { + padding: 1em; +} + +tr.not-image { + display: none; +} + +table.not-image tr.not-image { + display: table-row; +} + +table.not-image tr.image-only { + display: none; +} + +/** + * HiDPI Displays + */ +@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); + -webkit-background-size: 21px 15px; + background-size: 21px 15px; + } + + .image-align-left-label { + background-image: url(../images/align-left-2x.png?ver=20120916); + -webkit-background-size: 22px 15px; + background-size: 22px 15px; + } + + .image-align-center-label { + background-image: url(../images/align-center-2x.png?ver=20120916); + -webkit-background-size: 21px 15px; + background-size: 21px 15px; + } + + .image-align-right-label { + background-image: url(../images/align-right-2x.png?ver=20120916); + -webkit-background-size: 22px 15px; + background-size: 22px 15px; + } +} diff --git a/wp-admin/css/deprecated-media-rtl.min.css b/wp-admin/css/deprecated-media-rtl.min.css new file mode 100644 index 0000000000..103e9f6985 --- /dev/null +++ b/wp-admin/css/deprecated-media-rtl.min.css @@ -0,0 +1 @@ +#sidemenu,th{position:relative}#sidemenu a,#sort-buttons a,abbr.required{text-decoration:none}div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:700;position:relative;border-bottom:1px solid #dfdfdf;background:#f9f9f9}#sidemenu{overflow:hidden;float:none;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 #dfdfdf;background-color:#f9f9f9;-webkit-transition: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 #dfdfdf;border-bottom-color:#f1f1f1;background-color:#f1f1f1;color:#000}#media-upload:after{content:"";display:table;clear:both}#media-upload .slidetoggle{border-top-color:#dfdfdf}#media-upload input[type=radio]{padding:0}form{margin:1em}#search-filter{text-align:left}.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) center left no-repeat}.image-align-left-label{background:url(../images/align-left.png) center left no-repeat}.image-align-center-label{background:url(../images/align-center.png) center left no-repeat}.image-align-right-label{background:url(../images/align-right.png) center left no-repeat}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{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}#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,h4.media-sub-title{border-bottom:1px solid #DADADA;padding:0 0 3px}#gallery-settings .title{clear:both;font-size:1.6em}h3.media-title{font-size:1.6em}h4.media-sub-title{font-size:1.3em;margin:12px}#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:#464646;margin-left:15px}#gallery-settings .align .field label{margin:0 3px 0 1em}#gallery-settings p.ml-submit{border-top:1px solid #dfdfdf}#gallery-settings select#columns{width:6em}#sort-buttons{font-size:.8em;margin:3px 0 -8px 25px;text-align:left;max-width:625px}#sort-buttons #asc,#sort-buttons #showall{padding-right:5px}#sort-buttons span{margin-left:25px}p.media-types{padding:1em}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);-webkit-background-size:21px 15px;background-size:21px 15px}.image-align-left-label{background-image:url(../images/align-left-2x.png?ver=20120916);-webkit-background-size:22px 15px;background-size:22px 15px}.image-align-center-label{background-image:url(../images/align-center-2x.png?ver=20120916);-webkit-background-size:21px 15px;background-size:21px 15px}.image-align-right-label{background-image:url(../images/align-right-2x.png?ver=20120916);-webkit-background-size:22px 15px;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 new file mode 100644 index 0000000000..833512de17 --- /dev/null +++ b/wp-admin/css/deprecated-media.css @@ -0,0 +1,407 @@ +/* Styles for the media library iframe (not used on the Library screen) */ + +div#media-upload-header { + margin: 0; + padding: 5px 5px 0; + font-weight: bold; + position: relative; + border-bottom: 1px solid #dfdfdf; + 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: normal; +} + +#sidemenu a { + padding: 0 7px; + display: block; + float: left; + line-height: 28px; + border-top: 1px solid #f9f9f9; + border-bottom: 1px solid #dfdfdf; + background-color: #f9f9f9; + text-decoration: none; + -webkit-transition: 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: normal; + padding-left: 6px; + padding-right: 6px; + border: 1px solid #dfdfdf; + border-bottom-color: #f1f1f1; + background-color: #f1f1f1; + color: #000; +} + +#media-upload:after { /* clearfix */ + content: ""; + display: table; + clear: both; +} + +#media-upload .slidetoggle { + border-top-color: #dfdfdf; +} + +#media-upload input[type="radio"] { + padding: 0; +} + +form { + margin: 1em; +} + +#search-filter { + text-align: right; +} + +th { + position: relative; +} + +.media-upload-form label.form-help, td.help { + font-family: sans-serif; + font-style: italic; + font-weight: normal; +} + +.media-upload-form p.help { + margin: 0; + padding: 0; +} + +.media-upload-form fieldset { + width: 100%; + border: none; + text-align: justify; + margin: 0 0 1em 0; + padding: 0; +} + +/* specific to the image upload form */ + +.image-align-none-label { + background: url(../images/align-none.png) no-repeat center left; +} + +.image-align-left-label { + background: url(../images/align-left.png) no-repeat center left; +} + +.image-align-center-label { + background: url(../images/align-center.png) no-repeat center left; +} + +.image-align-right-label { + background: url(../images/align-right.png) no-repeat center left; +} + +tr.image-size td { + width: 460px; +} + +tr.image-size div.image-size-item { + margin: 0 0 5px; +} + +#library-form .progress, +#gallery-form .progress, +.insert-gallery, +.describe.startopen, +.describe.startclosed { + display: none; +} + +.media-item .thumbnail { + max-width: 128px; + max-height: 128px; +} + +thead.media-item-info tr { + background-color: transparent; +} + +.form-table thead.media-item-info { + border: 8px solid #fff; +} + +abbr.required { + text-decoration: none; + border: none; +} + +.describe label { + display: inline; +} + +.describe td.error { + padding: 2px 8px; +} + +.describe td.A1 { + width: 132px; +} + +.describe input[type="text"], +.describe textarea { + width: 460px; + border-width: 1px; + border-style: solid; +} + +/* Specific to Uploader */ + +#media-upload p.ml-submit { + padding: 1em 0; +} + +#media-upload p.help, +#media-upload label.help { + font-family: sans-serif; + font-style: italic; + font-weight: normal; +} + +#media-upload .ui-sortable .media-item { + cursor: move; +} + +#media-upload tr.image-size { + margin-bottom: 1em; + height: 3em; +} + +#media-upload #filter { + width: 623px; +} + +#media-upload #filter .subsubsub { + margin: 8px 0; +} + +#filter .tablenav select { + border-style: solid; + border-width: 1px; + padding: 2px; + vertical-align: top; + width: auto; +} + +#media-upload .del-attachment { + display: none; + margin: 5px 0; +} + +.menu_order { + float: right; + font-size: 11px; + margin: 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: 0.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 #DADADA; +} + +h3.media-title { + font-size: 1.6em; +} + +h4.media-sub-title { + border-bottom: 1px solid #DADADA; + font-size: 1.3em; + margin: 12px; + padding: 0 0 3px; +} + +#gallery-settings .title, +h3.media-title, +h4.media-sub-title { + font-family: Georgia,"Times New Roman",Times,serif; + font-weight: normal; + color: #5A5A5A; +} + +#gallery-settings .describe td { + vertical-align: middle; + height: 3em; +} + +#gallery-settings .describe th.label { + padding-top: .5em; + text-align: left; +} + +#gallery-settings .describe { + padding: 5px; + width: 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: #464646; + margin-right: 15px; +} + +#gallery-settings .align .field label { + margin: 0 1em 0 3px; +} + +#gallery-settings p.ml-submit { + border-top: 1px solid #dfdfdf; +} + +#gallery-settings select#columns { + width: 6em; +} + +#sort-buttons { + font-size: 0.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 { + padding: 1em; +} + +tr.not-image { + display: none; +} + +table.not-image tr.not-image { + display: table-row; +} + +table.not-image tr.image-only { + display: none; +} + +/** + * HiDPI Displays + */ +@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); + -webkit-background-size: 21px 15px; + background-size: 21px 15px; + } + + .image-align-left-label { + background-image: url(../images/align-left-2x.png?ver=20120916); + -webkit-background-size: 22px 15px; + background-size: 22px 15px; + } + + .image-align-center-label { + background-image: url(../images/align-center-2x.png?ver=20120916); + -webkit-background-size: 21px 15px; + background-size: 21px 15px; + } + + .image-align-right-label { + background-image: url(../images/align-right-2x.png?ver=20120916); + -webkit-background-size: 22px 15px; + background-size: 22px 15px; + } +} diff --git a/wp-admin/css/deprecated-media.min.css b/wp-admin/css/deprecated-media.min.css new file mode 100644 index 0000000000..130c42061f --- /dev/null +++ b/wp-admin/css/deprecated-media.min.css @@ -0,0 +1 @@ +#sidemenu,th{position:relative}#sidemenu a,#sort-buttons a,abbr.required{text-decoration:none}div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:700;position:relative;border-bottom:1px solid #dfdfdf;background:#f9f9f9}#sidemenu{overflow:hidden;float:none;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 #dfdfdf;background-color:#f9f9f9;-webkit-transition: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 #dfdfdf;border-bottom-color:#f1f1f1;background-color:#f1f1f1;color:#000}#media-upload:after{content:"";display:table;clear:both}#media-upload .slidetoggle{border-top-color:#dfdfdf}#media-upload input[type=radio]{padding:0}form{margin:1em}#search-filter{text-align:right}.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) center left no-repeat}.image-align-left-label{background:url(../images/align-left.png) center left no-repeat}.image-align-center-label{background:url(../images/align-center.png) center left no-repeat}.image-align-right-label{background:url(../images/align-right.png) center left no-repeat}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{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}#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,h4.media-sub-title{border-bottom:1px solid #DADADA;padding:0 0 3px}#gallery-settings .title{clear:both;font-size:1.6em}h3.media-title{font-size:1.6em}h4.media-sub-title{font-size:1.3em;margin:12px}#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:#464646;margin-right:15px}#gallery-settings .align .field label{margin:0 1em 0 3px}#gallery-settings p.ml-submit{border-top:1px solid #dfdfdf}#gallery-settings select#columns{width:6em}#sort-buttons{font-size:.8em;margin:3px 25px -8px 0;text-align:right;max-width:625px}#sort-buttons #asc,#sort-buttons #showall{padding-left:5px}#sort-buttons span{margin-right:25px}p.media-types{padding:1em}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);-webkit-background-size:21px 15px;background-size:21px 15px}.image-align-left-label{background-image:url(../images/align-left-2x.png?ver=20120916);-webkit-background-size:22px 15px;background-size:22px 15px}.image-align-center-label{background-image:url(../images/align-center-2x.png?ver=20120916);-webkit-background-size:21px 15px;background-size:21px 15px}.image-align-right-label{background-image:url(../images/align-right-2x.png?ver=20120916);-webkit-background-size:22px 15px;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 new file mode 100644 index 0000000000..8ab7388fcc --- /dev/null +++ b/wp-admin/css/edit-rtl.css @@ -0,0 +1,1565 @@ +#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; +} + +/*------------------------------------------------------------------------------ + 11.0 - Write/Edit Post Screen +------------------------------------------------------------------------------*/ + +#show-comments { + overflow: hidden; +} + +#save-action .spinner, +#show-comments a, +#show-comments .spinner { + float: right; +} + +#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: none; + margin: 0 0 3px; + background-color: #fff; +} + +#titlediv #title-prompt-text { + color: #777; + position: absolute; + font-size: 1.7em; + padding: 11px 10px; +} + +#poststuff .inside-submitbox, +#side-sortables .inside-submitbox { + margin: 0 3px; + font-size: 11px; +} + +input#link_description, +input#link_url { + width: 98%; +} + +#pending { + background: 100% none; + border: 0 none; + padding: 0; + font-size: 11px; + margin-top: -1px; +} + +#edit-slug-box { + line-height: 24px; + min-height: 25px; /* Yes, line-height + 1 */ + margin-top: 5px; + padding: 0 10px; + color: #666; +} + +#edit-slug-box .cancel { + margin-left: 10px; + font-size: 11px; +} + +#editable-post-name-full { + display: none; +} + +#editable-post-name { + background-color: #fffbcc; +} + +#editable-post-name input { + font-size: 13px; + height: 22px; + margin: 0; + width: 16em; +} + +.postarea h3 label { + float: right; +} + +.submitbox .submit { + text-align: right; + padding: 12px 10px 10px; + font-size: 11px; + background-color: #464646; + color: #ccc; +} + +.submitbox .submitdelete { + text-decoration: none; + padding: 1px 2px; +} + +/* @todo: do we really need this? word on the street is we don't and this +stray rule may actually be compensated for elsewhere. */ +#normal-sortables .submitbox .submitdelete:hover { + color: #000; + background-color: #f00; + border-bottom-color: #f00; +} + +.submitbox .submit a:hover { + text-decoration: underline; +} + +.submitbox .submit input { + margin-bottom: 8px; + margin-left: 4px; + padding: 6px; +} + +.inside-submitbox #post_status { + margin: 2px -2px 2px 0; +} + +#post-status-select { + margin-top: 3px; +} + +/* Post Screen */ +#post-body #normal-sortables { + min-height: 50px; +} + +.postbox { + position: relative; + min-width: 255px; + border: 1px solid #e5e5e5; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,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; +} + +ul.category-tabs li, +#side-sortables .add-menu-item-tabs li, +.wp-tab-bar li { + display: inline; + line-height: 1.35em; +} + +.no-js .category-tabs li.hide-if-no-js { + display: none; +} + +.category-tabs a, +#side-sortables .add-menu-item-tabs a, +.wp-tab-bar a { + text-decoration: none; +} + +/* @todo: do these really need to be so specific? */ +#side-sortables .category-tabs .tabs a, +#side-sortables .add-menu-item-tabs .tabs a, +.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: #32373c; +} + +.category-tabs { + margin: 8px 0 5px; +} + +#category-adder h4 { + margin: 10px 0; +} + +#side-sortables .add-menu-item-tabs, +.wp-tab-bar { + margin-bottom: 3px; +} + +#normal-sortables .postbox #replyrow .submit { + float: none; + margin: 0; + padding: 0 7px 5px; +} + +#side-sortables .submitbox .submit input, +#side-sortables .submitbox .submit .preview, +#side-sortables .submitbox .submit a.preview:hover { + border: 0 none; +} + +#side-sortables .inside-submitbox .insidebox, +.stuffbox .insidebox { + margin: 11px 0; +} + +/* @todo: make this a more generic class */ +ul.category-tabs, +ul.add-menu-item-tabs, +ul.wp-tab-bar { + margin-top: 12px; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li { + border: solid 1px transparent; + position: relative; +} + +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + border: 1px solid #dfdfdf; + border-bottom-color: #fdfdfd; + background-color: #fdfdfd; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li, +ul.wp-tab-bar li { + padding: 3px 5px 5px; +} + +#postimagediv .inside img { + max-width: 100%; + height: auto; + width: auto; +} + +form#tags-filter { + position: relative; +} + +/* Global classes */ +.wp-hidden-children .wp-hidden-child, +.ui-tabs-hide { + 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; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,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: transparent url(../images/resize-rtl.gif) no-repeat scroll right 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; +} + +#content-textarea-clone { + z-index: -1; + position: absolute; + top: 0; + visibility: hidden; + overflow: hidden; + max-width: 100%; + border: 1px solid transparent; +} + +.wp-editor-expand #wp-content-editor-tools { + z-index: 1000; + border-bottom: 1px solid #e5e5e5; +} + +.wp-editor-expand #wp-content-editor-container { + -webkit-box-shadow: none; + 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; +} + +/* TinyMCE native fullscreen mode override */ +.mce-fullscreen #wp-content-wrap .mce-menubar, +.mce-fullscreen #wp-content-wrap .mce-toolbar-grp, +.mce-fullscreen #wp-content-wrap .mce-edit-area, +.mce-fullscreen #wp-content-wrap .mce-statusbar { + 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; +} + +.post-php.mce-fullscreen #wpadminbar, +.mce-fullscreen #wp-content-wrap .mce-wp-dfw { + display: none; +} +/* End TinyMCE native fullscreen mode override */ + +#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, #jj, #hh, #mn { + padding: 1px; + font-size: 12px; +} + +#jj, #hh, #mn { + width: 2em; +} + +#aa { + width: 3.4em; +} + +.curtime #timestamp { + padding: 2px 0 1px 0; + display: inline !important; + height: auto !important; +} + +#misc-publishing-actions label[for="post_status"]:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: #82878c; +} + +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before { + font: normal 20px/1 'dashicons'; + speak: none; + display: inline-block; + padding: 0 0 0 2px; + top: 0; + right: -1px; + position: relative; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; +} + +#post-body #visibility:before { + content: '\f177'; +} + +.curtime #timestamp:before { + content: '\f145'; + 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; + -webkit-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; +} + +.notification-dialog-background { + position: fixed; + top: 0; + right: 0; + left: 0; + bottom: 0; + background: #000; + opacity: 0.7; + filter: alpha(opacity=70); + z-index: 1000000; +} + +#post-lock-dialog .post-locked-message, +#post-lock-dialog .post-taken-over { + margin: 25px; +} + +#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.saving .locked-saving, +#post-lock-dialog.saved .locked-saved { + 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 span { + margin-left: 25px; + display: block; + float: right; + font-size: 13px; + line-height: 1.8em; + cursor: default; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; +} + +.tagchecklist span a { + margin: 1px -17px 0 0; + cursor: pointer; + width: 20px; + height: 20px; + display: block; + float: right; + text-indent: 0; + overflow: hidden; + position: absolute; +} + +#poststuff h2 { + margin-top: 20px; + font-size: 1.5em; + margin-bottom: 15px; + padding: 0 0 3px; + clear: right; +} + +#poststuff h3 { + font-size: 14px; + padding: 8px 12px; + margin: 0; + line-height: 1.4; +} + +#poststuff .inside { + margin: 6px 0 0 0; +} + +#poststuff .inside #parent_id, +#poststuff .inside #page_template { + max-width: 100%; +} + +#poststuff .inside label.spam, +#poststuff .inside label.deleted { + color: red; +} + +#poststuff .inside label.waiting { + color: orange; +} + +#poststuff .inside label.approved { + color: green; +} + +.ie8 #poststuff .inside #parent_id, +.ie8 #poststuff .inside #page_template { + width: 250px; +} + +#post-visibility-select { + line-height: 1.5em; + margin-top: 3px; +} + +#poststuff #submitdiv .inside { + margin: 0; + padding: 0; +} + +#post-body-content, +.edit-form-section { + margin-bottom: 20px; +} + +/*------------------------------------------------------------------------------ + 11.1 - Custom Fields +------------------------------------------------------------------------------*/ + +#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 #dfdfdf; + 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 th.left, +#postcustomstuff td.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; +} + +/*------------------------------------------------------------------------------ + 11.3 - Featured Images +------------------------------------------------------------------------------*/ + +#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; +} + +/*------------------------------------------------------------------------------ + 11.4 - Post formats +------------------------------------------------------------------------------*/ + +.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-state-format:before, +.post-format-icon:before { + color: #ddd; + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; +} + +a.post-state-format:hover:before, +a.post-format-icon: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: 0px; + padding: 2px 0px 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-state-format.post-format-standard:before, +.post-format-icon.post-format-standard:before, +a.post-state-format.format-standard:before { + content: '\f109'; +} + +.post-state-format.post-format-image:before, +.post-format-icon.post-format-image:before, +a.post-state-format.format-image:before { + content: '\f128'; +} + +.post-state-format.post-format-gallery:before, +.post-format-icon.post-format-gallery:before, +a.post-state-format.format-gallery:before { + content: '\f161'; +} + +.post-state-format.post-format-audio:before, +.post-format-icon.post-format-audio:before, +a.post-state-format.format-audio:before { + content: '\f127'; +} + +.post-state-format.post-format-video:before, +.post-format-icon.post-format-video:before, +a.post-state-format.format-video:before { + content: '\f126'; +} + +.post-state-format.post-format-chat:before, +.post-format-icon.post-format-chat:before, +a.post-state-format.format-chat:before { + content: '\f125'; +} + +.post-state-format.post-format-status:before, +.post-format-icon.post-format-status:before, +a.post-state-format.format-status:before { + content: '\f130'; +} + +.post-state-format.post-format-aside:before, +.post-format-icon.post-format-aside:before, +a.post-state-format.format-aside:before { + content: '\f123'; +} + +.post-state-format.post-format-quote:before, +.post-format-icon.post-format-quote:before, +a.post-state-format.format-quote:before { + content: '\f122'; +} + +.post-state-format.post-format-link:before, +.post-format-icon.post-format-link:before, +a.post-state-format.format-link:before { + content: '\f103'; +} + +/*------------------------------------------------------------------------------ + 12.0 - Categories +------------------------------------------------------------------------------*/ + +.category-adder { + margin-right: 120px; + padding: 4px 0; +} + +.category-adder h4 { + margin: 0 0 8px; +} + +#side-sortables .category-adder { + margin: 0; +} + +.wp-tab-panel, +.categorydiv div.tabs-panel, +.customlinkdiv div.tabs-panel, +.posttypediv div.tabs-panel, +.taxonomydiv div.tabs-panel { + min-height: 42px; + max-height: 200px; + overflow: auto; + padding: 0 0.9em; + border: solid 1px #dfdfdf; + background-color: #fdfdfd; +} + +div.tabs-panel-active { + display:block; +} + +div.tabs-panel-inactive { + display:none; +} + +#front-page-warning, +#front-static-pages ul, +ul.export-filters, +.inline-editor ul.cat-checklist ul, +.categorydiv ul.categorychecklist ul, +.customlinkdiv ul.categorychecklist ul, +.posttypediv ul.categorychecklist ul, +.taxonomydiv ul.categorychecklist ul { + margin-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 p, +.form-wrap label { + font-size: 11px; +} + +.form-wrap label { + display: block; + padding: 2px; + font-size: 12px; +} + +.form-field input[type="text"], +.form-field input[type="password"], +.form-field input[type="email"], +.form-field input[type="number"], +.form-field input[type="search"], +.form-field input[type="tel"], +.form-field input[type="url"], +.form-field textarea { + border-style: solid; + border-width: 1px; + width: 95%; +} + +p.description, +.form-wrap p { + margin: 2px 0 5px; + color: #666; +} + +p.help, +p.description, +span.description, +.form-wrap p { + font-size: 13px; + font-style: italic; +} + +.form-wrap .form-field { + margin: 0 0 10px; + padding: 8px 0; +} + +.form-wrap .form-field #parent { + max-width: 100%; +} + +.col-wrap h3 { + margin: 12px 0; + font-size: 1.1em; +} + +.col-wrap p.submit { + margin-top: -10px; +} + + +/*------------------------------------------------------------------------------ + 13.0 - Tags +------------------------------------------------------------------------------*/ + +#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 h3 { + margin: 2px 0 12px; +} + +.ac_results { + padding: 0; + margin: 0; + list-style: none; + position: absolute; + z-index: 10000; + display: none; + border: 1px solid #808080; + background-color: #fff; +} + +.wp-customizer .ac_results { + z-index: 500000; +} + +.ac_results li { + padding: 2px 5px; + white-space: nowrap; + color: #101010; + text-align: right; +} + +.ac_over { + background-color: #f0f0b8; + cursor: pointer; +} + +.ac_match { + text-decoration: underline; +} + +/* Comments */ + +.comment-php .wp-editor-area { + height: 200px; +} + +.comment-ays th, +.comment-ays td { + padding: 10px 15px; +} + +.comment-ays-submit .button-cancel { + margin-right: 1em; +} + +.trash-undo-inside, +.spam-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; +} + +/* links tables */ +table.links-table { + width: 100%; + border-spacing: 0; +} + +.links-table th { + font-weight: normal; + text-align: right; + vertical-align: top; + min-width: 80px; + width: 20%; + word-wrap: break-word; +} + +.links-table th, +.links-table td { + padding: 5px 0; +} + +.links-table td label { + margin-left: 8px; +} + +.links-table td input[type="text"], +.links-table td textarea { + width: 100%; +} + +.links-table #link_rel { + max-width: 280px; +} + +/* 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; +} + +.focus-on .wrap > h1, +.focus-on #wpfooter, +.focus-on .postbox-container > *, +.focus-on div.updated, +.focus-on div.error, +.focus-on div.notice, +.focus-on .update-nag, +.focus-on #wp-toolbar, +.focus-on #screen-meta-links, +.focus-on #screen-meta { + opacity: 0; + -webkit-transition-duration: 0.6s; + transition-duration: 0.6s; + -webkit-transition-property: opacity; + transition-property: opacity; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +.focus-on #wp-toolbar { + opacity: 0.3; +} + +.focus-off .wrap > h1, +.focus-off #wpfooter, +.focus-off .postbox-container > *, +.focus-off div.updated, +.focus-off div.error, +.focus-off div.notice, +.focus-off .update-nag, +.focus-off #wp-toolbar, +.focus-off #screen-meta-links, +.focus-off #screen-meta { + opacity: 1; + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-property: opacity; + transition-property: opacity; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +.focus-off #wp-toolbar { + -webkit-transform: translate(0, 0); +} + +.focus-on #adminmenuback, +.focus-on #adminmenuwrap { + -webkit-transition-duration: 0.6s; + transition-duration: 0.6s; + -webkit-transition-property: -webkit-transform; + transition-property: transform; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +.focus-on #adminmenuback, +.focus-on #adminmenuwrap { + -webkit-transform: translateX( 100% ); + -ms-transform: translateX( 100% ); + transform: translateX( 100% ); +} + +.focus-off #adminmenuback, +.focus-off #adminmenuwrap { + -webkit-transform: translateX( 0 ); + -ms-transform: translateX( 0 ); + transform: translateX( 0 ); + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-property: -webkit-transform; + transition-property: transform; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@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; + -webkit-background-size: 11px 11px; + background-size: 11px 11px; + } + + .rtl #content-resize-handle, + .rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize { + background: transparent url(../images/resize-rtl-2x.gif) no-repeat scroll left bottom; + } +} + +/* one column on the post write/edit screen */ +@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 .empty-container, + #poststuff #postbox-container-1 #side-sortables:empty { + border: 0 none; + height: 0; + min-height: 0; + } + + #poststuff #post-body.columns-2 #side-sortables { + min-height: 0; + width: auto; + } + + /* hide the radio buttons for column prefs */ + .screen-layout, + .columns-prefs { + display: none; + } +} + +@media screen and ( max-width: 782px ) { + #post-body-content { + min-width: 0; + } + + #titlediv #title-prompt-text { + padding: 10px 10px; + } + + #poststuff h3 { + 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; + } + + /* Publish Metabox Options */ + #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 #jj, + .timestamp-wrap #aa, + .timestamp-wrap #hh, + .timestamp-wrap #mn { + padding: 12px 3px; + font-size: 14px; + margin-bottom: 5px; + width: auto; + text-align: center; + } + + /* Categories Metabox */ + 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; + } + + /* Tags Metabox */ + .tagsdiv .newtag { + width: 100%; + height: auto; + margin-bottom: 15px; + } + + .tagchecklist { + margin: 25px 10px; + } + + .tagchecklist span { + font-size: 16px; + line-height: 1.4; + } + + /* Discussion */ + #commentstatusdiv p { + line-height: 2.8; + } + + /* TinyMCE Adjustments */ + .mceToolbar * { + white-space: normal !important; + } + + .mceToolbar tr, + .mceToolbar td { + 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: 16px; + line-height: 37px; + height: 39px; + padding: 0 15px 0 20px; + } + + .wp-media-buttons span.wp-media-buttons-icon, + .wp-media-buttons span.jetpack-contact-form-icon { + width: 22px !important; + margin-top: -3px !important; + margin-right: -5px !important; + } + + .wp-media-buttons .add_media span.wp-media-buttons-icon:before, + .wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-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; /* Half of the Publish button's bottom margin. */ + } + + /* Moderate Comment */ + .comment-ays th, + .comment-ays td { + padding-bottom: 0; + } + + .comment-ays td { + padding-top: 6px; + } + + /* Links */ + .links-table #link_rel { + max-width: none; + } + + .links-table th, + .links-table td { + padding: 10px 0; + } +} + +@media only screen and (max-width: 500px) { + /* Align Add Media + Visual + Text tabs */ + #wp-content-media-buttons a { + font-size: 14px; + padding: 0 10px 0 10px; + } +} diff --git a/wp-admin/css/edit.css b/wp-admin/css/edit.css new file mode 100644 index 0000000000..b2f57ef451 --- /dev/null +++ b/wp-admin/css/edit.css @@ -0,0 +1,1565 @@ +#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; +} + +/*------------------------------------------------------------------------------ + 11.0 - Write/Edit Post Screen +------------------------------------------------------------------------------*/ + +#show-comments { + overflow: hidden; +} + +#save-action .spinner, +#show-comments a, +#show-comments .spinner { + float: left; +} + +#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: none; + margin: 0 0 3px; + background-color: #fff; +} + +#titlediv #title-prompt-text { + color: #777; + position: absolute; + font-size: 1.7em; + padding: 11px 10px; +} + +#poststuff .inside-submitbox, +#side-sortables .inside-submitbox { + margin: 0 3px; + font-size: 11px; +} + +input#link_description, +input#link_url { + width: 98%; +} + +#pending { + background: 0 none; + border: 0 none; + padding: 0; + font-size: 11px; + margin-top: -1px; +} + +#edit-slug-box { + line-height: 24px; + min-height: 25px; /* Yes, line-height + 1 */ + margin-top: 5px; + padding: 0 10px; + color: #666; +} + +#edit-slug-box .cancel { + margin-right: 10px; + font-size: 11px; +} + +#editable-post-name-full { + display: none; +} + +#editable-post-name { + background-color: #fffbcc; +} + +#editable-post-name input { + font-size: 13px; + height: 22px; + margin: 0; + width: 16em; +} + +.postarea h3 label { + float: left; +} + +.submitbox .submit { + text-align: left; + padding: 12px 10px 10px; + font-size: 11px; + background-color: #464646; + color: #ccc; +} + +.submitbox .submitdelete { + text-decoration: none; + padding: 1px 2px; +} + +/* @todo: do we really need this? word on the street is we don't and this +stray rule may actually be compensated for elsewhere. */ +#normal-sortables .submitbox .submitdelete:hover { + color: #000; + background-color: #f00; + border-bottom-color: #f00; +} + +.submitbox .submit a:hover { + text-decoration: underline; +} + +.submitbox .submit input { + margin-bottom: 8px; + margin-right: 4px; + padding: 6px; +} + +.inside-submitbox #post_status { + margin: 2px 0 2px -2px; +} + +#post-status-select { + margin-top: 3px; +} + +/* Post Screen */ +#post-body #normal-sortables { + min-height: 50px; +} + +.postbox { + position: relative; + min-width: 255px; + border: 1px solid #e5e5e5; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,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; +} + +ul.category-tabs li, +#side-sortables .add-menu-item-tabs li, +.wp-tab-bar li { + display: inline; + line-height: 1.35em; +} + +.no-js .category-tabs li.hide-if-no-js { + display: none; +} + +.category-tabs a, +#side-sortables .add-menu-item-tabs a, +.wp-tab-bar a { + text-decoration: none; +} + +/* @todo: do these really need to be so specific? */ +#side-sortables .category-tabs .tabs a, +#side-sortables .add-menu-item-tabs .tabs a, +.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: #32373c; +} + +.category-tabs { + margin: 8px 0 5px; +} + +#category-adder h4 { + margin: 10px 0; +} + +#side-sortables .add-menu-item-tabs, +.wp-tab-bar { + margin-bottom: 3px; +} + +#normal-sortables .postbox #replyrow .submit { + float: none; + margin: 0; + padding: 0 7px 5px; +} + +#side-sortables .submitbox .submit input, +#side-sortables .submitbox .submit .preview, +#side-sortables .submitbox .submit a.preview:hover { + border: 0 none; +} + +#side-sortables .inside-submitbox .insidebox, +.stuffbox .insidebox { + margin: 11px 0; +} + +/* @todo: make this a more generic class */ +ul.category-tabs, +ul.add-menu-item-tabs, +ul.wp-tab-bar { + margin-top: 12px; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li { + border: solid 1px transparent; + position: relative; +} + +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + border: 1px solid #dfdfdf; + border-bottom-color: #fdfdfd; + background-color: #fdfdfd; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li, +ul.wp-tab-bar li { + padding: 3px 5px 5px; +} + +#postimagediv .inside img { + max-width: 100%; + height: auto; + width: auto; +} + +form#tags-filter { + position: relative; +} + +/* Global classes */ +.wp-hidden-children .wp-hidden-child, +.ui-tabs-hide { + 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; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,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: transparent url(../images/resize-rtl.gif) no-repeat scroll 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; +} + +#content-textarea-clone { + z-index: -1; + position: absolute; + top: 0; + visibility: hidden; + overflow: hidden; + max-width: 100%; + border: 1px solid transparent; +} + +.wp-editor-expand #wp-content-editor-tools { + z-index: 1000; + border-bottom: 1px solid #e5e5e5; +} + +.wp-editor-expand #wp-content-editor-container { + -webkit-box-shadow: none; + 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; +} + +/* TinyMCE native fullscreen mode override */ +.mce-fullscreen #wp-content-wrap .mce-menubar, +.mce-fullscreen #wp-content-wrap .mce-toolbar-grp, +.mce-fullscreen #wp-content-wrap .mce-edit-area, +.mce-fullscreen #wp-content-wrap .mce-statusbar { + 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; +} + +.post-php.mce-fullscreen #wpadminbar, +.mce-fullscreen #wp-content-wrap .mce-wp-dfw { + display: none; +} +/* End TinyMCE native fullscreen mode override */ + +#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, #jj, #hh, #mn { + padding: 1px; + font-size: 12px; +} + +#jj, #hh, #mn { + width: 2em; +} + +#aa { + width: 3.4em; +} + +.curtime #timestamp { + padding: 2px 0 1px 0; + display: inline !important; + height: auto !important; +} + +#misc-publishing-actions label[for="post_status"]:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: #82878c; +} + +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before { + font: normal 20px/1 'dashicons'; + speak: none; + display: inline-block; + padding: 0 2px 0 0; + top: 0; + left: -1px; + position: relative; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; +} + +#post-body #visibility:before { + content: '\f177'; +} + +.curtime #timestamp:before { + content: '\f145'; + 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; + -webkit-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; +} + +.notification-dialog-background { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: #000; + opacity: 0.7; + filter: alpha(opacity=70); + z-index: 1000000; +} + +#post-lock-dialog .post-locked-message, +#post-lock-dialog .post-taken-over { + margin: 25px; +} + +#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.saving .locked-saving, +#post-lock-dialog.saved .locked-saved { + 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 span { + margin-right: 25px; + display: block; + float: left; + font-size: 13px; + line-height: 1.8em; + cursor: default; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; +} + +.tagchecklist span a { + margin: 1px 0 0 -17px; + cursor: pointer; + width: 20px; + height: 20px; + display: block; + float: left; + text-indent: 0; + overflow: hidden; + position: absolute; +} + +#poststuff h2 { + margin-top: 20px; + font-size: 1.5em; + margin-bottom: 15px; + padding: 0 0 3px; + clear: left; +} + +#poststuff h3 { + font-size: 14px; + padding: 8px 12px; + margin: 0; + line-height: 1.4; +} + +#poststuff .inside { + margin: 6px 0 0 0; +} + +#poststuff .inside #parent_id, +#poststuff .inside #page_template { + max-width: 100%; +} + +#poststuff .inside label.spam, +#poststuff .inside label.deleted { + color: red; +} + +#poststuff .inside label.waiting { + color: orange; +} + +#poststuff .inside label.approved { + color: green; +} + +.ie8 #poststuff .inside #parent_id, +.ie8 #poststuff .inside #page_template { + width: 250px; +} + +#post-visibility-select { + line-height: 1.5em; + margin-top: 3px; +} + +#poststuff #submitdiv .inside { + margin: 0; + padding: 0; +} + +#post-body-content, +.edit-form-section { + margin-bottom: 20px; +} + +/*------------------------------------------------------------------------------ + 11.1 - Custom Fields +------------------------------------------------------------------------------*/ + +#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 #dfdfdf; + 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 th.left, +#postcustomstuff td.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; +} + +/*------------------------------------------------------------------------------ + 11.3 - Featured Images +------------------------------------------------------------------------------*/ + +#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; +} + +/*------------------------------------------------------------------------------ + 11.4 - Post formats +------------------------------------------------------------------------------*/ + +.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-state-format:before, +.post-format-icon:before { + color: #ddd; + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; +} + +a.post-state-format:hover:before, +a.post-format-icon: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: 0px; + padding: 2px 0 2px 0px; +} + +.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-state-format.post-format-image:before, +.post-format-icon.post-format-image:before, +a.post-state-format.format-image:before { + content: '\f128'; +} + +.post-state-format.post-format-gallery:before, +.post-format-icon.post-format-gallery:before, +a.post-state-format.format-gallery:before { + content: '\f161'; +} + +.post-state-format.post-format-audio:before, +.post-format-icon.post-format-audio:before, +a.post-state-format.format-audio:before { + content: '\f127'; +} + +.post-state-format.post-format-video:before, +.post-format-icon.post-format-video:before, +a.post-state-format.format-video:before { + content: '\f126'; +} + +.post-state-format.post-format-chat:before, +.post-format-icon.post-format-chat:before, +a.post-state-format.format-chat:before { + content: '\f125'; +} + +.post-state-format.post-format-status:before, +.post-format-icon.post-format-status:before, +a.post-state-format.format-status:before { + content: '\f130'; +} + +.post-state-format.post-format-aside:before, +.post-format-icon.post-format-aside:before, +a.post-state-format.format-aside:before { + content: '\f123'; +} + +.post-state-format.post-format-quote:before, +.post-format-icon.post-format-quote:before, +a.post-state-format.format-quote:before { + content: '\f122'; +} + +.post-state-format.post-format-link:before, +.post-format-icon.post-format-link:before, +a.post-state-format.format-link:before { + content: '\f103'; +} + +/*------------------------------------------------------------------------------ + 12.0 - Categories +------------------------------------------------------------------------------*/ + +.category-adder { + margin-left: 120px; + padding: 4px 0; +} + +.category-adder h4 { + margin: 0 0 8px; +} + +#side-sortables .category-adder { + margin: 0; +} + +.wp-tab-panel, +.categorydiv div.tabs-panel, +.customlinkdiv div.tabs-panel, +.posttypediv div.tabs-panel, +.taxonomydiv div.tabs-panel { + min-height: 42px; + max-height: 200px; + overflow: auto; + padding: 0 0.9em; + border: solid 1px #dfdfdf; + background-color: #fdfdfd; +} + +div.tabs-panel-active { + display:block; +} + +div.tabs-panel-inactive { + display:none; +} + +#front-page-warning, +#front-static-pages ul, +ul.export-filters, +.inline-editor ul.cat-checklist ul, +.categorydiv ul.categorychecklist ul, +.customlinkdiv ul.categorychecklist ul, +.posttypediv ul.categorychecklist ul, +.taxonomydiv ul.categorychecklist ul { + margin-left: 18px; +} + +ul.categorychecklist li { + margin: 0; + padding: 0; + line-height: 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 p, +.form-wrap label { + font-size: 11px; +} + +.form-wrap label { + display: block; + padding: 2px; + font-size: 12px; +} + +.form-field input[type="text"], +.form-field input[type="password"], +.form-field input[type="email"], +.form-field input[type="number"], +.form-field input[type="search"], +.form-field input[type="tel"], +.form-field input[type="url"], +.form-field textarea { + border-style: solid; + border-width: 1px; + width: 95%; +} + +p.description, +.form-wrap p { + margin: 2px 0 5px; + color: #666; +} + +p.help, +p.description, +span.description, +.form-wrap p { + font-size: 13px; + font-style: italic; +} + +.form-wrap .form-field { + margin: 0 0 10px; + padding: 8px 0; +} + +.form-wrap .form-field #parent { + max-width: 100%; +} + +.col-wrap h3 { + margin: 12px 0; + font-size: 1.1em; +} + +.col-wrap p.submit { + margin-top: -10px; +} + + +/*------------------------------------------------------------------------------ + 13.0 - Tags +------------------------------------------------------------------------------*/ + +#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 h3 { + margin: 2px 0 12px; +} + +.ac_results { + padding: 0; + margin: 0; + list-style: none; + position: absolute; + z-index: 10000; + display: none; + border: 1px solid #808080; + background-color: #fff; +} + +.wp-customizer .ac_results { + z-index: 500000; +} + +.ac_results li { + padding: 2px 5px; + white-space: nowrap; + color: #101010; + text-align: left; +} + +.ac_over { + background-color: #f0f0b8; + cursor: pointer; +} + +.ac_match { + text-decoration: underline; +} + +/* Comments */ + +.comment-php .wp-editor-area { + height: 200px; +} + +.comment-ays th, +.comment-ays td { + padding: 10px 15px; +} + +.comment-ays-submit .button-cancel { + margin-left: 1em; +} + +.trash-undo-inside, +.spam-undo-inside { + margin: 1px 8px 1px 0; + line-height: 16px; +} + +.spam-undo-inside .avatar, +.trash-undo-inside .avatar { + height: 20px; + width: 20px; + margin-right: 8px; + vertical-align: middle; +} + +.stuffbox .editcomment { + clear: none; +} + +#comment-status-radio p { + margin: 3px 0 5px; +} + +#comment-status-radio input { + margin: 2px 3px 5px 0; + vertical-align: middle; +} + +#comment-status-radio label { + padding: 5px 0; +} + +/* links tables */ +table.links-table { + width: 100%; + border-spacing: 0; +} + +.links-table th { + font-weight: normal; + text-align: left; + vertical-align: top; + min-width: 80px; + width: 20%; + word-wrap: break-word; +} + +.links-table th, +.links-table td { + padding: 5px 0; +} + +.links-table td label { + margin-right: 8px; +} + +.links-table td input[type="text"], +.links-table td textarea { + width: 100%; +} + +.links-table #link_rel { + max-width: 280px; +} + +/* 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; +} + +.focus-on .wrap > h1, +.focus-on #wpfooter, +.focus-on .postbox-container > *, +.focus-on div.updated, +.focus-on div.error, +.focus-on div.notice, +.focus-on .update-nag, +.focus-on #wp-toolbar, +.focus-on #screen-meta-links, +.focus-on #screen-meta { + opacity: 0; + -webkit-transition-duration: 0.6s; + transition-duration: 0.6s; + -webkit-transition-property: opacity; + transition-property: opacity; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +.focus-on #wp-toolbar { + opacity: 0.3; +} + +.focus-off .wrap > h1, +.focus-off #wpfooter, +.focus-off .postbox-container > *, +.focus-off div.updated, +.focus-off div.error, +.focus-off div.notice, +.focus-off .update-nag, +.focus-off #wp-toolbar, +.focus-off #screen-meta-links, +.focus-off #screen-meta { + opacity: 1; + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-property: opacity; + transition-property: opacity; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +.focus-off #wp-toolbar { + -webkit-transform: translate(0, 0); +} + +.focus-on #adminmenuback, +.focus-on #adminmenuwrap { + -webkit-transition-duration: 0.6s; + transition-duration: 0.6s; + -webkit-transition-property: -webkit-transform; + transition-property: transform; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +.focus-on #adminmenuback, +.focus-on #adminmenuwrap { + -webkit-transform: translateX( -100% ); + -ms-transform: translateX( -100% ); + transform: translateX( -100% ); +} + +.focus-off #adminmenuback, +.focus-off #adminmenuwrap { + -webkit-transform: translateX( 0 ); + -ms-transform: translateX( 0 ); + transform: translateX( 0 ); + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-property: -webkit-transform; + transition-property: transform; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@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; + -webkit-background-size: 11px 11px; + background-size: 11px 11px; + } + + .rtl #content-resize-handle, + .rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize { + background: transparent url(../images/resize-rtl-2x.gif) no-repeat scroll right bottom; + } +} + +/* one column on the post write/edit screen */ +@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 .empty-container, + #poststuff #postbox-container-1 #side-sortables:empty { + border: 0 none; + height: 0; + min-height: 0; + } + + #poststuff #post-body.columns-2 #side-sortables { + min-height: 0; + width: auto; + } + + /* hide the radio buttons for column prefs */ + .screen-layout, + .columns-prefs { + display: none; + } +} + +@media screen and ( max-width: 782px ) { + #post-body-content { + min-width: 0; + } + + #titlediv #title-prompt-text { + padding: 10px 10px; + } + + #poststuff h3 { + 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; + } + + /* Publish Metabox Options */ + #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 #jj, + .timestamp-wrap #aa, + .timestamp-wrap #hh, + .timestamp-wrap #mn { + padding: 12px 3px; + font-size: 14px; + margin-bottom: 5px; + width: auto; + text-align: center; + } + + /* Categories Metabox */ + 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; + } + + /* Tags Metabox */ + .tagsdiv .newtag { + width: 100%; + height: auto; + margin-bottom: 15px; + } + + .tagchecklist { + margin: 25px 10px; + } + + .tagchecklist span { + font-size: 16px; + line-height: 1.4; + } + + /* Discussion */ + #commentstatusdiv p { + line-height: 2.8; + } + + /* TinyMCE Adjustments */ + .mceToolbar * { + white-space: normal !important; + } + + .mceToolbar tr, + .mceToolbar td { + 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: 16px; + line-height: 37px; + height: 39px; + padding: 0 20px 0 15px; + } + + .wp-media-buttons span.wp-media-buttons-icon, + .wp-media-buttons span.jetpack-contact-form-icon { + width: 22px !important; + margin-top: -3px !important; + margin-left: -5px !important; + } + + .wp-media-buttons .add_media span.wp-media-buttons-icon:before, + .wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-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; /* Half of the Publish button's bottom margin. */ + } + + /* Moderate Comment */ + .comment-ays th, + .comment-ays td { + padding-bottom: 0; + } + + .comment-ays td { + padding-top: 6px; + } + + /* Links */ + .links-table #link_rel { + max-width: none; + } + + .links-table th, + .links-table td { + padding: 10px 0; + } +} + +@media only screen and (max-width: 500px) { + /* Align Add Media + Visual + Text tabs */ + #wp-content-media-buttons a { + font-size: 14px; + padding: 0 10px 0 10px; + } +} diff --git a/wp-admin/css/farbtastic-rtl.css b/wp-admin/css/farbtastic-rtl.css new file mode 100644 index 0000000000..b7aebadc6e --- /dev/null +++ b/wp-admin/css/farbtastic-rtl.css @@ -0,0 +1,41 @@ + +.farbtastic { + position: relative; +} + +.farbtastic * { + position: absolute; + cursor: crosshair; +} + +.farbtastic, +.farbtastic .wheel { + width: 195px; + height: 195px; +} + +.farbtastic .color, +.farbtastic .overlay { + top: 47px; + right: 47px; + width: 101px; + height: 101px; +} + +.farbtastic .wheel { + background: url(../images/wheel.png) no-repeat; + width: 195px; + height: 195px; +} + +.farbtastic .overlay { + background: url(../images/mask.png) no-repeat; +} + +.farbtastic .marker { + width: 17px; + height: 17px; + margin: -8px -8px 0 0; + overflow: hidden; + background: url(../images/marker.png) no-repeat; +} diff --git a/wp-admin/css/farbtastic.css b/wp-admin/css/farbtastic.css new file mode 100644 index 0000000000..2bb73bfc7c --- /dev/null +++ b/wp-admin/css/farbtastic.css @@ -0,0 +1,41 @@ + +.farbtastic { + position: relative; +} + +.farbtastic * { + position: absolute; + cursor: crosshair; +} + +.farbtastic, +.farbtastic .wheel { + width: 195px; + height: 195px; +} + +.farbtastic .color, +.farbtastic .overlay { + top: 47px; + left: 47px; + width: 101px; + height: 101px; +} + +.farbtastic .wheel { + background: url(../images/wheel.png) no-repeat; + width: 195px; + height: 195px; +} + +.farbtastic .overlay { + background: url(../images/mask.png) no-repeat; +} + +.farbtastic .marker { + width: 17px; + height: 17px; + margin: -8px 0 0 -8px; + overflow: hidden; + background: url(../images/marker.png) no-repeat; +} diff --git a/wp-admin/css/forms-rtl.css b/wp-admin/css/forms-rtl.css new file mode 100644 index 0000000000..4799c71c69 --- /dev/null +++ b/wp-admin/css/forms-rtl.css @@ -0,0 +1,1296 @@ +/* Include margin and padding in the width calculation of input and textarea. */ +input, +textarea { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +input[type="text"], +input[type="password"], +input[type="checkbox"], +input[type="color"], +input[type="date"], +input[type="datetime"], +input[type="datetime-local"], +input[type="email"], +input[type="month"], +input[type="number"], +input[type="password"], +input[type="search"], +input[type="radio"], +input[type="tel"], +input[type="text"], +input[type="time"], +input[type="url"], +input[type="week"], +select, +textarea { + border: 1px solid #ddd; + -webkit-box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.07 ); + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.07 ); + background-color: #fff; + color: #32373c; + outline: none; + -webkit-transition: 0.05s border-color ease-in-out; + transition: 0.05s border-color ease-in-out; +} + +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="password"]: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: #5b9dd9; + -webkit-box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); + box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); +} + +/* rtl:ignore */ +input[type="email"], +input[type="url"] { + direction: ltr; +} + +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; + -webkit-box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.1 ); + -webkit-transition: .05s border-color ease-in-out; + transition: .05s border-color ease-in-out; +} + +input[type="radio"]:checked + label:before { + color: #82878c; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #00a0d2; +} + +td > input[type="checkbox"], +.wp-admin p input[type="checkbox"], +.wp-admin p input[type="radio"] { + 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"] { + -webkit-border-radius: 50%; + 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; + -webkit-border-radius: 50px; + border-radius: 50px; + font-size: 24px; + width: 6px; + height: 6px; + margin: 4px; + line-height: 16px; + background-color: #1e8cbe; +} + +@-moz-document url-prefix() { + input[type="checkbox"], + input[type="radio"], + .form-table input.tog { + margin-bottom: -1px; + } +} + +/* Search */ +input[type="search"] { + -webkit-appearance: textfield; +} + +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; + -webkit-border-radius: 0; + border-radius: 0; /* Reset mobile webkit's default element styling */ +} + +textarea { + overflow: auto; + padding: 2px 6px; + line-height: 1.4; +} + +.wp-admin input[type="file"] { + padding: 3px 0; +} + +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; +} + +:-moz-placeholder, +.wp-core-ui :-moz-placeholder { + color: #a9a9a9; +} + +.form-invalid input, .form-invalid input:focus, +.form-invalid select, .form-invalid select:focus { + border-color: #dc3232 !important; + -webkit-box-shadow: 0 0 2px rgba( 204, 0, 0, 0.8 ); + 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: #dc3232; + margin-right: -25px; + 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, 0.5 ); + border-color: rgba( 222, 222, 222, 0.75 ); + -webkit-box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.04 ); + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.04 ); + color: rgba( 51, 51, 51, 0.5 ); +} + +input[type="file"]:disabled, +input[type="file"].disabled, +input[type="range"]:disabled, +input[type="range"].disabled { + background: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +input[type="checkbox"]:disabled, +input[type="checkbox"].disabled, +input[type="radio"]:disabled, +input[type="radio"].disabled, +input[type="checkbox"]:disabled:checked:before, +input[type="checkbox"].disabled:checked:before, +input[type="radio"]:disabled:checked:before, +input[type="radio"].disabled:checked:before { + opacity: 0.7; +} + +/*------------------------------------------------------------------------------ + 2.0 - Forms +------------------------------------------------------------------------------*/ + + +.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; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -webkit-border-bottom-left-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 + p.submit, +table.form-table + input + p.submit, +table.form-table + input + input + p.submit { + border-top: none; + padding-top: 0; +} + +#minor-publishing-actions input, +#major-publishing-actions input, +#minor-publishing-actions .preview { + text-align: center; +} + +textarea.all-options, +input.all-options { + width: 250px; +} + +input.large-text, +textarea.large-text { + width: 99%; +} + +input.regular-text { + width: 25em; +} + +input.small-text { + width: 50px; + padding: 1px 6px; +} + +input[type="number"].small-text { + width: 65px; +} + +#doaction, +#doaction2, +#post-query-submit { + margin: 1px 0 0 8px; +} + +.tablenav #changeit, +.tablenav #delete_all, +.tablenav #clear-recent-list, +.wp-filter #delete_all { + margin-top: 1px; +} + +.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; +} + +#upload-form label { + color: #777; +} + +button.wp-hide-pw > .dashicons { + position: relative; + top: 3px; +} + +label, +#your-profile label + a { + vertical-align: middle; +} + +fieldset label, +#your-profile label + a { + vertical-align: middle; +} + +.options-media-php label[for*="_size_"], +#misc-publishing-actions label { + vertical-align: baseline; +} + +#misc-publishing-actions label[for="post_status"]:before { + content: '\f173'; + display: inline-block; + font: normal 20px/1 'dashicons'; + speak: none; + right: -1px; + padding: 0 0 0 5px; + position: relative; + top: 0; + text-decoration: none !important; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; +} + +.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; +} + +input[type="text"].ui-autocomplete-loading, +input[type="email"].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; + -webkit-box-shadow: 0 1px 2px rgba( 30, 140, 190, 0.8 ); + box-shadow: 0 1px 2px rgba( 30, 140, 190, 0.8 ); + background-color: #fff; +} + +.ui-autocomplete li { + margin-bottom: 0; + padding: 4px 10px; + white-space: nowrap; + text-align: right; +} + +.ui-autocomplete li.ui-state-focus { + background-color: #ddd; + cursor: pointer; +} + +/*------------------------------------------------------------------------------ + 15.0 - Comments Screen +------------------------------------------------------------------------------*/ + +.form-table { + border-collapse: collapse; + margin-top: 0.5em; + width: 100%; + clear: both; +} + +.form-table, +.form-table td, +.form-table th, +.form-table td p, +.form-wrap label { + 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: normal; + 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 th.th-full { + width: auto; + font-weight: 400; +} + +.form-table td p { + margin-top: 4px; + margin-bottom: 0; +} + +.form-table td fieldset label { + margin: 0.25em 0 0.5em !important; + display: inline-block; +} + +.form-table td fieldset label, +.form-table td fieldset p, +.form-table td fieldset li { + 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: 0.3em 0; +} + +/*------------------------------------------------------------------------------ + 18.0 - Users +------------------------------------------------------------------------------*/ + +#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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-bottom: 3px; +} + +.color-option:hover, +.color-option.selected { + 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; +} + +/*------------------------------------------------------------------------------ + 19.0 - Tools +------------------------------------------------------------------------------*/ + +.tool-box .title { + margin: 8px 0; + font-size: 18px; + font-weight: normal; + line-height: 24px; +} + +/* Card styles */ + +.card { + position: relative; + margin-top: 20px; + padding: 0.7em 2em 1em; + min-width: 255px; + max-width: 520px; + border: 1px solid #e5e5e5; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); + background: #fff; +} + +/* Press this styles */ + +.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:hover, +.pressthis-bookmarklet:focus, +.pressthis-bookmarklet:active { + display: inline-block; + position: relative; + cursor: move; + color: #32373c; + background: #e6e6e6; + -webkit-border-radius: 5px; + border-radius: 5px; + border: 1px solid #b4b4b4; + font-style: normal; + line-height: 16px; + font-size: 14px; + text-decoration: none; +} + +.pressthis-bookmarklet:active { + outline: none; +} + +.pressthis-bookmarklet:after { + content: ''; + width: 70%; + height: 55%; + z-index: -1; + position: absolute; + left: 10px; + bottom: 9px; + background: transparent; + -webkit-transform: skew(-20deg) rotate(-6deg); + -ms-transform: skew(-20deg) rotate(-6deg); + transform: skew(-20deg) rotate(-6deg); + -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); +} + +.pressthis-bookmarklet:hover:after { + -webkit-transform: skew(-20deg) rotate(-9deg); + -ms-transform: skew(-20deg) rotate(-9deg); + transform: skew(-20deg) rotate(-9deg); + -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); +} + +.pressthis-bookmarklet span { + display: inline-block; + margin: 0px 0 0; + padding: 0px 9px 8px 12px; +} + +.pressthis-bookmarklet span:before { + color: #777; + 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 .dashicons { + margin: 5px 7px 6px 8px; + color: #777; +} + +/* to override the button class being applied */ +.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: #777; +} + +/*------------------------------------------------------------------------------ + 20.0 - Settings +------------------------------------------------------------------------------*/ + +#utc-time, #local-time { + padding-right: 25px; + font-style: italic; +} + +.defaultavatarpicker .avatar { + margin: 2px 0; + vertical-align: middle; +} + +.options-general-php input.small-text { + width: 56px; +} + +.options-general-php .spinner { + float: none; + margin: 0 3px; +} + +.settings-php .language-install-spinner, +.options-general-php .language-install-spinner { + display: inline-block; + float: none; + margin: -3px 5px 0; + vertical-align: middle; +} + +/*------------------------------------------------------------------------------ + 21.0 - Network Admin +------------------------------------------------------------------------------*/ + +.setup-php textarea { + max-width: 100%; +} + +.form-field #site-address { + max-width: 25em; +} + +.form-field #domain { + max-width: 22em; +} + +.form-field #site-title, +.form-field #admin-email, +.form-field #path, +.form-field #blog_registered, +.form-field #blog_last_updated { + max-width: 25em; +} + +.form-field #path { + margin-bottom: 5px; +} + +#search-users, +#search-sites { + max-width: 100%; +} + +/*------------------------------------------------------------------------------ + Credentials check dialog for Install and Updates +------------------------------------------------------------------------------*/ + +.request-filesystem-credentials-dialog { + display: none; +} + +.request-filesystem-credentials-dialog .notification-dialog { + top: 15%; + max-height: 85%; +} + +.request-filesystem-credentials-dialog-content { + margin: 25px; +} + +.request-filesystem-credentials-form input[type="text"], +.request-filesystem-credentials-form input[type="password"] { + display: block; +} + +.request-filesystem-credentials-dialog input[type="text"], +.request-filesystem-credentials-dialog input[type="password"] { + width: 100%; +} + +.request-filesystem-credentials-form .field-title { + font-weight: 600; +} + +.request-filesystem-credentials-dialog label[for="hostname"], +.request-filesystem-credentials-dialog label[for="public_key"], +.request-filesystem-credentials-dialog label[for="private_key"] { + display: block; + margin-bottom: 1em; +} + +.request-filesystem-credentials-dialog .ftp-username, +.request-filesystem-credentials-dialog .ftp-password { + 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 .button:not(:last-child) { + margin-left: 10px; +} + +#request-filesystem-credentials-form .cancel-button { + display: none; +} + +#request-filesystem-credentials-dialog .cancel-button { + display: inline; +} + + +/* =Media Queries +-------------------------------------------------------------- */ + +@media screen and ( max-width: 782px ) { + /* Input Elements */ + textarea { + -webkit-appearance: none; + } + + input[type="text"], + input[type="email"], + input[type="search"], + input[type="password"], + input[type="number"] { + -webkit-appearance: none; + padding: 6px 10px; + } + + input.code { + padding-bottom: 5px; + padding-top: 10px; + } + + input[type="checkbox"], + .widefat th input[type="checkbox"], + .widefat thead td input[type="checkbox"], + .widefat tfoot td input[type="checkbox"] { + -webkit-appearance: none; + padding: 10px; + } + + .widefat th input[type="checkbox"], + .widefat thead td input[type="checkbox"], + .widefat tfoot td input[type="checkbox"] { + margin-bottom: 8px; + } + + input[type="checkbox"]:checked:before, + .widefat th input[type="checkbox"]:before, + .widefat thead td input[type="checkbox"]:before, + .widefat tfoot td input[type="checkbox"]:before { + font: normal 30px/1 'Dashicons'; + margin: -3px -5px; + } + + input[type="radio"], + input[type="checkbox"] { + 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 { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .form-table th, + .form-table td { + display: block; + width: auto; + vertical-align: middle; + } + + .form-table .color-palette td { + display: table-cell; + width: 15px; + } + + .form-table table.color-palette { + margin-left: 10px; + } + + textarea, + input { + font-size: 16px; + } + + .form-table td input[type="text"], + .form-table td input[type="email"], + .form-table td input[type="password"], + .form-table td select, + .form-table td textarea, + .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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; + } + + input[type="text"].small-text, + input[type="search"].small-text, + input[type="password"].small-text, + input[type="number"].small-text, + input[type="number"].small-text, + .form-table input[type="text"].small-text { + width: auto; + max-width: 55px; + display: inline; + padding: 3px 6px; + margin: 0 3px; + } + + #pass-strength-result { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; + } + + #utc-time { + margin-top: 10px; + } + + #utc-time, + #local-time { + display: block; + float: none; + padding: 0; + line-height: 2; + } + + .form-field #domain { + max-width: none; + } + + /* New Password */ + .wp-pwd { + position: relative; + } + + .wp-pwd [type="text"], + .wp-pwd [type="password"] { + padding-left: 40px; + } + + .wp-pwd button.button { + background: transparent; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + line-height: 2; + margin: 0; + padding: 5px 10px; + position: absolute; + left: 0; + top: 0; + } + + .wp-pwd button.button:hover, + .wp-pwd button.button:focus, + .wp-pwd button.button:active { + background: transparent; + } + + .wp-pwd .button .text { + display: none; + } +} + +@media only screen and (max-width: 768px) { + .form-field input[type="text"], + .form-field input[type="email"], + .form-field input[type="password"], + .form-field select, + .form-field textarea { + width: 99%; + } + + .form-wrap .form-field { + padding:0; + } + + /* users */ + #profile-page .form-table textarea { + max-width: 400px; + width: auto; + } +} + +@media only screen and (max-height: 480px) { + /* Request Credentials */ + .request-filesystem-credentials-dialog .notification-dialog{ + width: 100%; + height: 100%; + max-height: 100%; + position: fixed; + top: 0; + margin: 0; + right: 0; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + /* Color Picker Options */ + .color-option { + width: 49%; + } +} diff --git a/wp-admin/css/forms.css b/wp-admin/css/forms.css new file mode 100644 index 0000000000..785f3ea377 --- /dev/null +++ b/wp-admin/css/forms.css @@ -0,0 +1,1296 @@ +/* Include margin and padding in the width calculation of input and textarea. */ +input, +textarea { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +input[type="text"], +input[type="password"], +input[type="checkbox"], +input[type="color"], +input[type="date"], +input[type="datetime"], +input[type="datetime-local"], +input[type="email"], +input[type="month"], +input[type="number"], +input[type="password"], +input[type="search"], +input[type="radio"], +input[type="tel"], +input[type="text"], +input[type="time"], +input[type="url"], +input[type="week"], +select, +textarea { + border: 1px solid #ddd; + -webkit-box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.07 ); + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.07 ); + background-color: #fff; + color: #32373c; + outline: none; + -webkit-transition: 0.05s border-color ease-in-out; + transition: 0.05s border-color ease-in-out; +} + +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="password"]: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: #5b9dd9; + -webkit-box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); + box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); +} + +/* rtl:ignore */ +input[type="email"], +input[type="url"] { + direction: ltr; +} + +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; + -webkit-box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.1 ); + -webkit-transition: .05s border-color ease-in-out; + transition: .05s border-color ease-in-out; +} + +input[type="radio"]:checked + label:before { + color: #82878c; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #00a0d2; +} + +td > input[type="checkbox"], +.wp-admin p input[type="checkbox"], +.wp-admin p input[type="radio"] { + 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"] { + -webkit-border-radius: 50%; + 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; + -webkit-border-radius: 50px; + border-radius: 50px; + font-size: 24px; + width: 6px; + height: 6px; + margin: 4px; + line-height: 16px; + background-color: #1e8cbe; +} + +@-moz-document url-prefix() { + input[type="checkbox"], + input[type="radio"], + .form-table input.tog { + margin-bottom: -1px; + } +} + +/* Search */ +input[type="search"] { + -webkit-appearance: textfield; +} + +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; + -webkit-border-radius: 0; + border-radius: 0; /* Reset mobile webkit's default element styling */ +} + +textarea { + overflow: auto; + padding: 2px 6px; + line-height: 1.4; +} + +.wp-admin input[type="file"] { + padding: 3px 0; +} + +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; +} + +:-moz-placeholder, +.wp-core-ui :-moz-placeholder { + color: #a9a9a9; +} + +.form-invalid input, .form-invalid input:focus, +.form-invalid select, .form-invalid select:focus { + border-color: #dc3232 !important; + -webkit-box-shadow: 0 0 2px rgba( 204, 0, 0, 0.8 ); + 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: #dc3232; + margin-left: -25px; + 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, 0.5 ); + border-color: rgba( 222, 222, 222, 0.75 ); + -webkit-box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.04 ); + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.04 ); + color: rgba( 51, 51, 51, 0.5 ); +} + +input[type="file"]:disabled, +input[type="file"].disabled, +input[type="range"]:disabled, +input[type="range"].disabled { + background: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +input[type="checkbox"]:disabled, +input[type="checkbox"].disabled, +input[type="radio"]:disabled, +input[type="radio"].disabled, +input[type="checkbox"]:disabled:checked:before, +input[type="checkbox"].disabled:checked:before, +input[type="radio"]:disabled:checked:before, +input[type="radio"].disabled:checked:before { + opacity: 0.7; +} + +/*------------------------------------------------------------------------------ + 2.0 - Forms +------------------------------------------------------------------------------*/ + + +.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; + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-bottom-right-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 + p.submit, +table.form-table + input + p.submit, +table.form-table + input + input + p.submit { + border-top: none; + padding-top: 0; +} + +#minor-publishing-actions input, +#major-publishing-actions input, +#minor-publishing-actions .preview { + text-align: center; +} + +textarea.all-options, +input.all-options { + width: 250px; +} + +input.large-text, +textarea.large-text { + width: 99%; +} + +input.regular-text { + width: 25em; +} + +input.small-text { + width: 50px; + padding: 1px 6px; +} + +input[type="number"].small-text { + width: 65px; +} + +#doaction, +#doaction2, +#post-query-submit { + margin: 1px 8px 0 0; +} + +.tablenav #changeit, +.tablenav #delete_all, +.tablenav #clear-recent-list, +.wp-filter #delete_all { + margin-top: 1px; +} + +.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; +} + +#upload-form label { + color: #777; +} + +button.wp-hide-pw > .dashicons { + position: relative; + top: 3px; +} + +label, +#your-profile label + a { + vertical-align: middle; +} + +fieldset label, +#your-profile label + a { + vertical-align: middle; +} + +.options-media-php label[for*="_size_"], +#misc-publishing-actions label { + vertical-align: baseline; +} + +#misc-publishing-actions label[for="post_status"]:before { + content: '\f173'; + display: inline-block; + font: normal 20px/1 'dashicons'; + speak: none; + left: -1px; + padding: 0 5px 0 0; + position: relative; + top: 0; + text-decoration: none !important; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; +} + +.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; +} + +input[type="text"].ui-autocomplete-loading, +input[type="email"].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; + -webkit-box-shadow: 0 1px 2px rgba( 30, 140, 190, 0.8 ); + box-shadow: 0 1px 2px rgba( 30, 140, 190, 0.8 ); + background-color: #fff; +} + +.ui-autocomplete li { + margin-bottom: 0; + padding: 4px 10px; + white-space: nowrap; + text-align: left; +} + +.ui-autocomplete li.ui-state-focus { + background-color: #ddd; + cursor: pointer; +} + +/*------------------------------------------------------------------------------ + 15.0 - Comments Screen +------------------------------------------------------------------------------*/ + +.form-table { + border-collapse: collapse; + margin-top: 0.5em; + width: 100%; + clear: both; +} + +.form-table, +.form-table td, +.form-table th, +.form-table td p, +.form-wrap label { + 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: normal; + 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 th.th-full { + width: auto; + font-weight: 400; +} + +.form-table td p { + margin-top: 4px; + margin-bottom: 0; +} + +.form-table td fieldset label { + margin: 0.25em 0 0.5em !important; + display: inline-block; +} + +.form-table td fieldset label, +.form-table td fieldset p, +.form-table td fieldset li { + 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: 0.3em 0; +} + +/*------------------------------------------------------------------------------ + 18.0 - Users +------------------------------------------------------------------------------*/ + +#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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-bottom: 3px; +} + +.color-option:hover, +.color-option.selected { + 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; +} + +/*------------------------------------------------------------------------------ + 19.0 - Tools +------------------------------------------------------------------------------*/ + +.tool-box .title { + margin: 8px 0; + font-size: 18px; + font-weight: normal; + line-height: 24px; +} + +/* Card styles */ + +.card { + position: relative; + margin-top: 20px; + padding: 0.7em 2em 1em; + min-width: 255px; + max-width: 520px; + border: 1px solid #e5e5e5; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); + background: #fff; +} + +/* Press this styles */ + +.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:hover, +.pressthis-bookmarklet:focus, +.pressthis-bookmarklet:active { + display: inline-block; + position: relative; + cursor: move; + color: #32373c; + background: #e6e6e6; + -webkit-border-radius: 5px; + border-radius: 5px; + border: 1px solid #b4b4b4; + font-style: normal; + line-height: 16px; + font-size: 14px; + text-decoration: none; +} + +.pressthis-bookmarklet:active { + outline: none; +} + +.pressthis-bookmarklet:after { + content: ''; + width: 70%; + height: 55%; + z-index: -1; + position: absolute; + right: 10px; + bottom: 9px; + background: transparent; + -webkit-transform: skew(20deg) rotate(6deg); + -ms-transform: skew(20deg) rotate(6deg); + transform: skew(20deg) rotate(6deg); + -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); +} + +.pressthis-bookmarklet:hover:after { + -webkit-transform: skew(20deg) rotate(9deg); + -ms-transform: skew(20deg) rotate(9deg); + transform: skew(20deg) rotate(9deg); + -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); +} + +.pressthis-bookmarklet span { + display: inline-block; + margin: 0px 0 0; + padding: 0px 12px 8px 9px; +} + +.pressthis-bookmarklet span:before { + color: #777; + 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 .dashicons { + margin: 5px 8px 6px 7px; + color: #777; +} + +/* to override the button class being applied */ +.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: #777; +} + +/*------------------------------------------------------------------------------ + 20.0 - Settings +------------------------------------------------------------------------------*/ + +#utc-time, #local-time { + padding-left: 25px; + font-style: italic; +} + +.defaultavatarpicker .avatar { + margin: 2px 0; + vertical-align: middle; +} + +.options-general-php input.small-text { + width: 56px; +} + +.options-general-php .spinner { + float: none; + margin: 0 3px; +} + +.settings-php .language-install-spinner, +.options-general-php .language-install-spinner { + display: inline-block; + float: none; + margin: -3px 5px 0; + vertical-align: middle; +} + +/*------------------------------------------------------------------------------ + 21.0 - Network Admin +------------------------------------------------------------------------------*/ + +.setup-php textarea { + max-width: 100%; +} + +.form-field #site-address { + max-width: 25em; +} + +.form-field #domain { + max-width: 22em; +} + +.form-field #site-title, +.form-field #admin-email, +.form-field #path, +.form-field #blog_registered, +.form-field #blog_last_updated { + max-width: 25em; +} + +.form-field #path { + margin-bottom: 5px; +} + +#search-users, +#search-sites { + max-width: 100%; +} + +/*------------------------------------------------------------------------------ + Credentials check dialog for Install and Updates +------------------------------------------------------------------------------*/ + +.request-filesystem-credentials-dialog { + display: none; +} + +.request-filesystem-credentials-dialog .notification-dialog { + top: 15%; + max-height: 85%; +} + +.request-filesystem-credentials-dialog-content { + margin: 25px; +} + +.request-filesystem-credentials-form input[type="text"], +.request-filesystem-credentials-form input[type="password"] { + display: block; +} + +.request-filesystem-credentials-dialog input[type="text"], +.request-filesystem-credentials-dialog input[type="password"] { + width: 100%; +} + +.request-filesystem-credentials-form .field-title { + font-weight: 600; +} + +.request-filesystem-credentials-dialog label[for="hostname"], +.request-filesystem-credentials-dialog label[for="public_key"], +.request-filesystem-credentials-dialog label[for="private_key"] { + display: block; + margin-bottom: 1em; +} + +.request-filesystem-credentials-dialog .ftp-username, +.request-filesystem-credentials-dialog .ftp-password { + 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 .button:not(:last-child) { + margin-right: 10px; +} + +#request-filesystem-credentials-form .cancel-button { + display: none; +} + +#request-filesystem-credentials-dialog .cancel-button { + display: inline; +} + + +/* =Media Queries +-------------------------------------------------------------- */ + +@media screen and ( max-width: 782px ) { + /* Input Elements */ + textarea { + -webkit-appearance: none; + } + + input[type="text"], + input[type="email"], + input[type="search"], + input[type="password"], + input[type="number"] { + -webkit-appearance: none; + padding: 6px 10px; + } + + input.code { + padding-bottom: 5px; + padding-top: 10px; + } + + input[type="checkbox"], + .widefat th input[type="checkbox"], + .widefat thead td input[type="checkbox"], + .widefat tfoot td input[type="checkbox"] { + -webkit-appearance: none; + padding: 10px; + } + + .widefat th input[type="checkbox"], + .widefat thead td input[type="checkbox"], + .widefat tfoot td input[type="checkbox"] { + margin-bottom: 8px; + } + + input[type="checkbox"]:checked:before, + .widefat th input[type="checkbox"]:before, + .widefat thead td input[type="checkbox"]:before, + .widefat tfoot td input[type="checkbox"]:before { + font: normal 30px/1 'Dashicons'; + margin: -3px -5px; + } + + input[type="radio"], + input[type="checkbox"] { + 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 { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .form-table th, + .form-table td { + display: block; + width: auto; + vertical-align: middle; + } + + .form-table .color-palette td { + display: table-cell; + width: 15px; + } + + .form-table table.color-palette { + margin-right: 10px; + } + + textarea, + input { + font-size: 16px; + } + + .form-table td input[type="text"], + .form-table td input[type="email"], + .form-table td input[type="password"], + .form-table td select, + .form-table td textarea, + .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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; + } + + input[type="text"].small-text, + input[type="search"].small-text, + input[type="password"].small-text, + input[type="number"].small-text, + input[type="number"].small-text, + .form-table input[type="text"].small-text { + width: auto; + max-width: 55px; + display: inline; + padding: 3px 6px; + margin: 0 3px; + } + + #pass-strength-result { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; + } + + #utc-time { + margin-top: 10px; + } + + #utc-time, + #local-time { + display: block; + float: none; + padding: 0; + line-height: 2; + } + + .form-field #domain { + max-width: none; + } + + /* New Password */ + .wp-pwd { + position: relative; + } + + .wp-pwd [type="text"], + .wp-pwd [type="password"] { + padding-right: 40px; + } + + .wp-pwd button.button { + background: transparent; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + line-height: 2; + margin: 0; + padding: 5px 10px; + position: absolute; + right: 0; + top: 0; + } + + .wp-pwd button.button:hover, + .wp-pwd button.button:focus, + .wp-pwd button.button:active { + background: transparent; + } + + .wp-pwd .button .text { + display: none; + } +} + +@media only screen and (max-width: 768px) { + .form-field input[type="text"], + .form-field input[type="email"], + .form-field input[type="password"], + .form-field select, + .form-field textarea { + width: 99%; + } + + .form-wrap .form-field { + padding:0; + } + + /* users */ + #profile-page .form-table textarea { + max-width: 400px; + width: auto; + } +} + +@media only screen and (max-height: 480px) { + /* Request Credentials */ + .request-filesystem-credentials-dialog .notification-dialog{ + width: 100%; + height: 100%; + max-height: 100%; + position: fixed; + top: 0; + margin: 0; + left: 0; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + /* Color Picker Options */ + .color-option { + width: 49%; + } +} diff --git a/wp-admin/css/ie-rtl.css b/wp-admin/css/ie-rtl.css new file mode 100644 index 0000000000..d3705d0f8a --- /dev/null +++ b/wp-admin/css/ie-rtl.css @@ -0,0 +1,776 @@ +/* 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, +#wpbody-content input.button-secondary { + 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 #dfdfdf; +} + +#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 p.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, +.feature-filter .feature-group li { + display: inline; +} + +.feature-filter .feature-group li input { + vertical-align: middle; +} + +#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 span, .tagchecklist span a { + display: inline-block; + display: block; +} + +.tablenav .button-secondary, +.nav .button-secondary { + padding-top: 2px; + padding-bottom: 2px; +} + +.tablenav select { + font-size: 13px; + display: inline-block; + vertical-align: top; + margin-top: 2px; +} + +.tablenav .actions select { + width: 155px; +} + +.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-secondary { + display: inline-block; + padding: 2px 5px; +} + +.inactive-sidebar .widgets-sortables { + padding-bottom: 8px; +} + +#available-widgets .widget-holder { + padding-bottom: 65px; +} + +#widgets-left .inactive { + padding-bottom: 10px; +} + +.widget-liquid-right .widget, +.inactive-sidebar .widget { + position: relative; +} + +.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: normal; + 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 #DFDFDF; +} + +* html .feature-filter .feature-group li { + width: 145px; +} + +* 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 #dfdfdf; +} + +* 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 0000000000..66af3bd5bd --- /dev/null +++ b/wp-admin/css/ie-rtl.min.css @@ -0,0 +1 @@ +.feature-filter .feature-group li input,.tablenav-pages .current-page{vertical-align:middle}#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;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}#adminmenu .wp-submenu,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open{right:110px}#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 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 .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,table.fixed td,table.fixed th{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary{overflow:visible}#dashboard-widgets h3 a{height:14px;line-height:14px}#dashboard_browser_nag{color:#fff}#dashboard_browser_nag .browser-icon{position:relative}#wpbody-content .postbox{border:1px solid #dfdfdf}#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 p.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=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}#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}#submitdiv a.button,#submitdiv input,#submitdiv select,.inactive-sidebar .widget,.revisions.pinned .revisions-controls,.widget-liquid-right .widget{position:relative}#widget-list .widget,.feature-filter .feature-group li{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}#bh{margin:7px 0 0 10px;float:left}div#dashboard-widgets{padding-left:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.nav .button-secondary,.tablenav .button-secondary{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}.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-secondary{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.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}.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 #DFDFDF}* html .feature-filter .feature-group li{width:145px}* 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 #dfdfdf}* 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 0000000000..1fa160f8e4 --- /dev/null +++ b/wp-admin/css/ie.css @@ -0,0 +1,776 @@ +/* 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, +#wpbody-content input.button-secondary { + 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 #dfdfdf; +} + +#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 p.submit { + zoom: 100%; +} + +.inline-edit-row fieldset label span.title { + display: block; + float: left; + width: 5em; +} + +.inline-edit-row fieldset label span.input-text-wrap { + margin-left: 0; + zoom: 100%; +} + +#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input { + line-height: 130%; +} + +#wpbody-content .inline-edit-row .input-text-wrap input { + width: 95%; +} + +#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input { + width: 8em; +} +/* 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, +.feature-filter .feature-group li { + display: inline; +} + +.feature-filter .feature-group li input { + vertical-align: middle; +} + +#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 span, .tagchecklist span a { + display: inline-block; + display: block; +} + +.tablenav .button-secondary, +.nav .button-secondary { + padding-top: 2px; + padding-bottom: 2px; +} + +.tablenav select { + font-size: 13px; + display: inline-block; + vertical-align: top; + margin-top: 2px; +} + +.tablenav .actions select { + width: 155px; +} + +.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-secondary { + display: inline-block; + padding: 2px 5px; +} + +.inactive-sidebar .widgets-sortables { + padding-bottom: 8px; +} + +#available-widgets .widget-holder { + padding-bottom: 65px; +} + +#widgets-left .inactive { + padding-bottom: 10px; +} + +.widget-liquid-right .widget, +.inactive-sidebar .widget { + position: relative; +} + +.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: normal; + 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 #DFDFDF; +} + +* html .feature-filter .feature-group li { + width: 145px; +} + +* html div.widget-liquid-left { + width: 99%; +} + +* html .widgets-sortables { + height: 50px; +} + +* html a#content_resize { + right: -2px; +} + +* html .widget-title h4 { + width: 205px; +} + +* html #removing-widget .in-widget-title { + display: none; +} + +* html .media-item .pinkynail { + height: 32px; + width: 40px; +} + +* html .describe .field input.text, +* html .describe .field textarea { + width: 440px; +} + +* html input { + border: 1px solid #dfdfdf; +} + +* html .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 0000000000..3b5059b57c --- /dev/null +++ b/wp-admin/css/ie.min.css @@ -0,0 +1 @@ +.feature-filter .feature-group li input,.tablenav-pages .current-page{vertical-align:middle}#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;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}#adminmenu .wp-submenu,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open{left:110px}#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 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 .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,table.fixed td,table.fixed th{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary{overflow:visible}#dashboard-widgets h3 a{height:14px;line-height:14px}#dashboard_browser_nag{color:#fff}#dashboard_browser_nag .browser-icon{position:relative}#wpbody-content .postbox{border:1px solid #dfdfdf}#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 p.submit{zoom:100%}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;zoom:100%}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em}#titlediv #title{width:98%}.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}#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}#submitdiv a.button,#submitdiv input,#submitdiv select,.inactive-sidebar .widget,.revisions.pinned .revisions-controls,.widget-liquid-right .widget{position:relative}#widget-list .widget,.feature-filter .feature-group li{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}#bh{margin:7px 10px 0 0;float:right}div#dashboard-widgets{padding-right:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.nav .button-secondary,.tablenav .button-secondary{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}.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-secondary{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.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}.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 #DFDFDF}* html .feature-filter .feature-group li{width:145px}* html div.widget-liquid-left{width:99%}* html .widgets-sortables{height:50px}* html a#content_resize{right:-2px}* html .widget-title h4{width:205px}* html #removing-widget .in-widget-title{display:none}* html .media-item .pinkynail{height:32px;width:40px}* html .describe .field input.text,* html .describe .field textarea{width:440px}* html input{border:1px solid #dfdfdf}* html .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 new file mode 100644 index 0000000000..8211e82a81 --- /dev/null +++ b/wp-admin/css/install-rtl.css @@ -0,0 +1,436 @@ +html { + background: #f1f1f1; + margin: 0 20px; +} + +body { + background: #fff; + color: #444; + font-family: "Open Sans", sans-serif; + margin: 140px auto 25px; + padding: 20px 20px 10px 20px; + max-width: 700px; + -webkit-font-smoothing: subpixel-antialiased; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13); + box-shadow: 0 1px 3px rgba(0,0,0,0.13); +} + +a { + color: #0073aa; + text-decoration: none; +} + +a:hover { + color: #00a0d2; +} + +h1 { + border-bottom: 1px solid #dedede; + clear: both; + color: #666; + font-size: 24px; + margin: 30px 0; + padding: 0; + padding-bottom: 7px; + font-weight: normal; +} + +h2 { + font-size: 16px; +} + +p, li, dd, dt { + padding-bottom: 2px; + font-size: 14px; + line-height: 1.5; +} + +code, .code { + font-family: Consolas, Monaco, monospace; +} + +ul, ol, dl { + padding: 5px 22px 5px 5px; +} + +a img { + border:0 +} +abbr { + border: 0; + font-variant: normal; +} + +label { + cursor: pointer; +} + +#logo { + margin: 6px 0 14px 0; + border-bottom: none; + text-align:center +} +#logo a { + background-image: url(../images/w-logo-blue.png?ver=20131202); + background-image: none, url(../images/wordpress-logo.svg?ver=20131107); + -webkit-background-size: 84px; + background-size: 84px; + background-position: center top; + background-repeat: no-repeat; + color: #999; + height: 84px; + font-size: 20px; + font-weight: normal; + line-height: 1.3em; + margin: -130px auto 25px; + padding: 0; + text-decoration: none; + width: 84px; + text-indent: -9999px; + outline: none; + overflow: hidden; + display: block; +} +.step { + margin: 20px 0 15px; +} +.step, th { + text-align: right; + padding: 0; +} +.language-chooser.wp-core-ui .step .button.button-large { + height: 36px; + vertical-align: middle; + font-size: 14px; +} +textarea { + border: 1px solid #dfdfdf; + font-family: "Open Sans", sans-serif; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); + box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); +} + +input, +submit { + font-family: "Open Sans", sans-serif; +} + +.form-table input[type=text], +.form-table input[type=email], +.form-table input[type=url], +.form-table input[type=password] { + width: 206px; +} + +.form-table th p { + font-weight: normal; +} + +.form-table.install-success td { + 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 0px 5px 5px; + padding: 3px 5px; + text-align: center; + width: 218px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: 1px solid #c00; + padding: 0.5em 0.7em; + margin: 5px 0 15px; + background-color: #ffebe8; +} + +/* rtl:ignore */ +#dbname, +#uname, +#pwd, +#dbhost, +#prefix, +#user_login, +#admin_email, +#pass1, +#pass2 { + 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, +.rtl textarea, +.rtl input, +.rtl submit { + font-family: Tahoma, sans-serif; +} + +:lang(he-il) body.rtl, +:lang(he-il) .rtl textarea, +:lang(he-il) .rtl input, +:lang(he-il) .rtl submit { + 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 th, + .form-table td { + display: block; + width: auto; + vertical-align: middle; + } + + .form-table th { + padding: 20px 0 0; + } + + .form-table td { + padding: 5px 0; + border: 0; + margin: 0; + } + + textarea, + input { + font-size: 16px; + } + + .form-table td input[type="text"], + .form-table td input[type="email"], + .form-table td input[type="url"], + .form-table td input[type="password"], + .form-table td select, + .form-table td textarea, + .form-table span.description { + width: 100%; + font-size: 16px; + line-height: 1.5; + padding: 7px 10px; + display: block; + max-width: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: normal; +} + +.language-chooser p { + text-align: left; +} + +.screen-reader-input, +.screen-reader-text { + position: absolute; + margin: -1px; + padding: 0; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; +} + +.spinner { + background: url(../images/spinner.gif) no-repeat; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + visibility: hidden; + opacity: 0.7; + filter: alpha(opacity=70); + width: 20px; + height: 20px; + margin: 2px 5px 0; +} + +.step .spinner { + display: inline-block; + margin-top: 8px; + margin-left: 15px; + vertical-align: top; +} + +.button-secondary.hide-if-no-js, +.hide-if-no-js { + display: none; +} + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + .spinner { + background-image: url(../images/spinner-2x.gif); + } + +} diff --git a/wp-admin/css/install-rtl.min.css b/wp-admin/css/install-rtl.min.css new file mode 100644 index 0000000000..9b4383f7d2 --- /dev/null +++ b/wp-admin/css/install-rtl.min.css @@ -0,0 +1 @@ +a img,abbr{border:0}#logo a,a{text-decoration:none}#logo a,.form-table th p,h1{font-weight:400}html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:"Open Sans",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;max-width:700px;-webkit-font-smoothing:subpixel-antialiased;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}a{color:#0073aa}a:hover{color:#00a0d2}h1{border-bottom:1px solid #dedede;clear:both;color:#666;font-size:24px;margin:30px 0;padding:0 0 7px}h2{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}input,submit,textarea{font-family:"Open Sans",sans-serif}dl,ol,ul{padding:5px 22px 5px 5px}abbr{font-variant:normal}label{cursor:pointer}#logo{margin:6px 0 14px;border-bottom:none;text-align:center}#logo a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;color:#999;height:84px;font-size:20px;line-height:1.3em;margin:-130px auto 25px;padding:0;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#pass1-text,.pw-weak,.show-password #pass1{display:none}.step{margin:20px 0 15px}.step,th{text-align:right;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;vertical-align:middle;font-size:14px}.form-table td,.form-table th{font-size:14px;padding:10px 0 10px 20px;vertical-align:top}textarea{border:1px solid #dfdfdf;width:100%;box-sizing:border-box}#pass-strength-result,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px}.form-table th{text-align:right;width:140px}.form-table code{line-height:18px;font-size:14px}.form-table p{margin:4px 0 0;font-size:11px}.form-table input{line-height:20px;font-size:15px;padding:3px 5px;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07)}.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:206px}.form-table.install-success td{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}.message{border:1px solid #c00;padding:.5em .7em;margin:5px 0 15px;background-color:#ffebe8}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}.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}.language-chooser select,: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=text],.form-table td input[type=email],.form-table td input[type=url],.form-table td input[type=password],.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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-weight:400}.language-chooser p{text-align:left}.screen-reader-input,.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;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;margin-top:8px;margin-left:15px;vertical-align:top}.button-secondary.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 new file mode 100644 index 0000000000..76793ab77b --- /dev/null +++ b/wp-admin/css/install.css @@ -0,0 +1,436 @@ +html { + background: #f1f1f1; + margin: 0 20px; +} + +body { + background: #fff; + color: #444; + font-family: "Open Sans", sans-serif; + margin: 140px auto 25px; + padding: 20px 20px 10px 20px; + max-width: 700px; + -webkit-font-smoothing: subpixel-antialiased; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13); + box-shadow: 0 1px 3px rgba(0,0,0,0.13); +} + +a { + color: #0073aa; + text-decoration: none; +} + +a:hover { + color: #00a0d2; +} + +h1 { + border-bottom: 1px solid #dedede; + clear: both; + color: #666; + font-size: 24px; + margin: 30px 0; + padding: 0; + padding-bottom: 7px; + font-weight: normal; +} + +h2 { + font-size: 16px; +} + +p, li, dd, dt { + padding-bottom: 2px; + font-size: 14px; + line-height: 1.5; +} + +code, .code { + font-family: Consolas, Monaco, monospace; +} + +ul, ol, dl { + padding: 5px 5px 5px 22px; +} + +a img { + border:0 +} +abbr { + border: 0; + font-variant: normal; +} + +label { + cursor: pointer; +} + +#logo { + margin: 6px 0 14px 0; + border-bottom: none; + text-align:center +} +#logo a { + background-image: url(../images/w-logo-blue.png?ver=20131202); + background-image: none, url(../images/wordpress-logo.svg?ver=20131107); + -webkit-background-size: 84px; + background-size: 84px; + background-position: center top; + background-repeat: no-repeat; + color: #999; + height: 84px; + font-size: 20px; + font-weight: normal; + line-height: 1.3em; + margin: -130px auto 25px; + padding: 0; + text-decoration: none; + width: 84px; + text-indent: -9999px; + outline: none; + overflow: hidden; + display: block; +} +.step { + margin: 20px 0 15px; +} +.step, th { + text-align: left; + padding: 0; +} +.language-chooser.wp-core-ui .step .button.button-large { + height: 36px; + vertical-align: middle; + font-size: 14px; +} +textarea { + border: 1px solid #dfdfdf; + font-family: "Open Sans", sans-serif; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); + box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); +} + +input, +submit { + font-family: "Open Sans", sans-serif; +} + +.form-table input[type=text], +.form-table input[type=email], +.form-table input[type=url], +.form-table input[type=password] { + width: 206px; +} + +.form-table th p { + font-weight: normal; +} + +.form-table.install-success td { + vertical-align: middle; + padding: 16px 20px 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 0px; + padding: 3px 5px; + text-align: center; + width: 218px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: 1px solid #c00; + padding: 0.5em 0.7em; + margin: 5px 0 15px; + background-color: #ffebe8; +} + +/* rtl:ignore */ +#dbname, +#uname, +#pwd, +#dbhost, +#prefix, +#user_login, +#admin_email, +#pass1, +#pass2 { + 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, +.rtl textarea, +.rtl input, +.rtl submit { + font-family: Tahoma, sans-serif; +} + +:lang(he-il) body.rtl, +:lang(he-il) .rtl textarea, +:lang(he-il) .rtl input, +:lang(he-il) .rtl submit { + 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 th, + .form-table td { + display: block; + width: auto; + vertical-align: middle; + } + + .form-table th { + padding: 20px 0 0; + } + + .form-table td { + padding: 5px 0; + border: 0; + margin: 0; + } + + textarea, + input { + font-size: 16px; + } + + .form-table td input[type="text"], + .form-table td input[type="email"], + .form-table td input[type="url"], + .form-table td input[type="password"], + .form-table td select, + .form-table td textarea, + .form-table span.description { + width: 100%; + font-size: 16px; + line-height: 1.5; + padding: 7px 10px; + display: block; + max-width: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: normal; +} + +.language-chooser p { + text-align: right; +} + +.screen-reader-input, +.screen-reader-text { + position: absolute; + margin: -1px; + padding: 0; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; +} + +.spinner { + background: url(../images/spinner.gif) no-repeat; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + visibility: hidden; + opacity: 0.7; + filter: alpha(opacity=70); + width: 20px; + height: 20px; + margin: 2px 5px 0; +} + +.step .spinner { + display: inline-block; + margin-top: 8px; + margin-right: 15px; + vertical-align: top; +} + +.button-secondary.hide-if-no-js, +.hide-if-no-js { + display: none; +} + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + .spinner { + background-image: url(../images/spinner-2x.gif); + } + +} diff --git a/wp-admin/css/install.min.css b/wp-admin/css/install.min.css new file mode 100644 index 0000000000..13cbe9d5cb --- /dev/null +++ b/wp-admin/css/install.min.css @@ -0,0 +1 @@ +a img,abbr{border:0}#logo a,a{text-decoration:none}#logo a,.form-table th p,h1{font-weight:400}html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:"Open Sans",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;max-width:700px;-webkit-font-smoothing:subpixel-antialiased;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}a{color:#0073aa}a:hover{color:#00a0d2}h1{border-bottom:1px solid #dedede;clear:both;color:#666;font-size:24px;margin:30px 0;padding:0 0 7px}h2{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}input,submit,textarea{font-family:"Open Sans",sans-serif}dl,ol,ul{padding:5px 5px 5px 22px}abbr{font-variant:normal}label{cursor:pointer}#logo{margin:6px 0 14px;border-bottom:none;text-align:center}#logo a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;color:#999;height:84px;font-size:20px;line-height:1.3em;margin:-130px auto 25px;padding:0;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#pass1-text,.pw-weak,.show-password #pass1{display:none}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;vertical-align:middle;font-size:14px}.form-table td,.form-table th{font-size:14px;padding:10px 20px 10px 0;vertical-align:top}textarea{border:1px solid #dfdfdf;width:100%;box-sizing:border-box}#pass-strength-result,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px}.form-table th{text-align:left;width:140px}.form-table code{line-height:18px;font-size:14px}.form-table p{margin:4px 0 0;font-size:11px}.form-table input{line-height:20px;font-size:15px;padding:3px 5px;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07)}.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:206px}.form-table.install-success td{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}.message{border:1px solid #c00;padding:.5em .7em;margin:5px 0 15px;background-color:#ffebe8}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}.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}.language-chooser select,: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=text],.form-table td input[type=email],.form-table td input[type=url],.form-table td input[type=password],.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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-weight:400}.language-chooser p{text-align:right}.screen-reader-input,.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;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;margin-top:8px;margin-right:15px;vertical-align:top}.button-secondary.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/l10n-rtl.css b/wp-admin/css/l10n-rtl.css new file mode 100644 index 0000000000..6ede0d3f4d --- /dev/null +++ b/wp-admin/css/l10n-rtl.css @@ -0,0 +1,113 @@ +/*------------------------------------------------------------------------------ + 27.0 - Localization +------------------------------------------------------------------------------*/ + +/* RTL except Hebrew (see below): Tahoma as the first font; */ +body.rtl, +body.rtl .press-this a.wp-switch-editor { + font-family: Tahoma, Arial, sans-serif; +} + +/* Arial is best for RTL headings. */ +.rtl h1, +.rtl h2, +.rtl h3, +.rtl h4, +.rtl h5, +.rtl h6 { + font-family: Arial, sans-serif; + font-weight: bold; +} + +/* he_IL: Remove Tahoma from the font stack. Arial is best for Hebrew. */ +body.locale-he-il, +body.locale-he-il .press-this a.wp-switch-editor { + font-family: Arial, sans-serif; +} + +/* he_IL: Have be bold rather than italic. */ +.locale-he-il em { + font-style: normal; + font-weight: bold; +} + +/* zh_CN: Remove italic properties. */ +.locale-zh-cn .howto, +.locale-zh-cn .tablenav .displaying-num, +.locale-zh-cn .js .input-with-default-title, +.locale-zh-cn .link-to-original, +.locale-zh-cn .inline-edit-row fieldset span.title, +.locale-zh-cn .inline-edit-row fieldset span.checkbox-title, +.locale-zh-cn #utc-time, +.locale-zh-cn #local-time, +.locale-zh-cn p.install-help, +.locale-zh-cn p.help, +.locale-zh-cn p.description, +.locale-zh-cn span.description, +.locale-zh-cn .form-wrap p { + font-style: normal; +} + +/* zh_CN: Enlarge dashboard widget 'Configure' link */ +.locale-zh-cn .hdnle a { font-size: 12px; } + +/* zn_CH: Enlarge font size, set font-size: normal */ +.locale-zh-cn form.upgrade .hint { font-style: normal; font-size: 100%; } + +/* zh_CN: Enlarge font-size. */ +.locale-zh-cn #sort-buttons { font-size: 1em !important; } + +/* de_DE: Text needs more space for translation */ +.locale-de-de #customize-header-actions .button, +.locale-de-de-formal #customize-header-actions .button { + padding: 0 5px 1px; /* default 0 10px 1px */ +} +.locale-de-de #customize-header-actions .spinner, +.locale-de-de-formal #customize-header-actions .spinner { + margin: 16px 3px 0; /* default 16px 4px 0 5px */ +} + +/* ru_RU: Text needs more room to breathe. */ +.locale-ru-ru .inline-edit-row fieldset label span.title, +.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend { + width: 8em; /* default 6em */ +} +.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap, +.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap { + margin-right: 8em; /* default 6em */ +} +.locale-ru-ru.post-php .tagsdiv .newtag, +.locale-ru-ru.post-new-php .tagsdiv .newtag { + width: 165px; /* default 180px - 15px */ +} +.locale-ru-ru.press-this .posting { + margin-left: 277px; /* default 252px + 25px */ +} +.locale-ru-ru .press-this-sidebar { + width: 265px; /* default 240px + 25px */ +} +.locale-ru-ru #customize-header-actions .button { + padding: 0 5px 1px; /* default 0 10px 1px */ +} +.locale-ru-ru #customize-header-actions .spinner { + margin: 16px 3px 0; /* default 16px 4px 0 5px */ +} + +/* lt_LT: QuickEdit */ +.locale-lt-lt .inline-edit-row fieldset label span.title, +.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend { + width: 8em; /* default 6em */ +} +.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap, +.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap { + margin-right: 8em; /* default 6em */ +} + +@media screen and (max-width: 782px) { + .locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap, + .locale-ru-ru .inline-edit-row fieldset .timestamp-wrap, + .locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap, + .locale-lt-lt .inline-edit-row fieldset .timestamp-wrap { + margin-right: 0; + } +} diff --git a/wp-admin/css/l10n.css b/wp-admin/css/l10n.css new file mode 100644 index 0000000000..8b81ebab17 --- /dev/null +++ b/wp-admin/css/l10n.css @@ -0,0 +1,113 @@ +/*------------------------------------------------------------------------------ + 27.0 - Localization +------------------------------------------------------------------------------*/ + +/* RTL except Hebrew (see below): Tahoma as the first font; */ +body.rtl, +body.rtl .press-this a.wp-switch-editor { + font-family: Tahoma, Arial, sans-serif; +} + +/* Arial is best for RTL headings. */ +.rtl h1, +.rtl h2, +.rtl h3, +.rtl h4, +.rtl h5, +.rtl h6 { + font-family: Arial, sans-serif; + font-weight: bold; +} + +/* he_IL: Remove Tahoma from the font stack. Arial is best for Hebrew. */ +body.locale-he-il, +body.locale-he-il .press-this a.wp-switch-editor { + font-family: Arial, sans-serif; +} + +/* he_IL: Have be bold rather than italic. */ +.locale-he-il em { + font-style: normal; + font-weight: bold; +} + +/* zh_CN: Remove italic properties. */ +.locale-zh-cn .howto, +.locale-zh-cn .tablenav .displaying-num, +.locale-zh-cn .js .input-with-default-title, +.locale-zh-cn .link-to-original, +.locale-zh-cn .inline-edit-row fieldset span.title, +.locale-zh-cn .inline-edit-row fieldset span.checkbox-title, +.locale-zh-cn #utc-time, +.locale-zh-cn #local-time, +.locale-zh-cn p.install-help, +.locale-zh-cn p.help, +.locale-zh-cn p.description, +.locale-zh-cn span.description, +.locale-zh-cn .form-wrap p { + font-style: normal; +} + +/* zh_CN: Enlarge dashboard widget 'Configure' link */ +.locale-zh-cn .hdnle a { font-size: 12px; } + +/* zn_CH: Enlarge font size, set font-size: normal */ +.locale-zh-cn form.upgrade .hint { font-style: normal; font-size: 100%; } + +/* zh_CN: Enlarge font-size. */ +.locale-zh-cn #sort-buttons { font-size: 1em !important; } + +/* de_DE: Text needs more space for translation */ +.locale-de-de #customize-header-actions .button, +.locale-de-de-formal #customize-header-actions .button { + padding: 0 5px 1px; /* default 0 10px 1px */ +} +.locale-de-de #customize-header-actions .spinner, +.locale-de-de-formal #customize-header-actions .spinner { + margin: 16px 3px 0; /* default 16px 4px 0 5px */ +} + +/* ru_RU: Text needs more room to breathe. */ +.locale-ru-ru .inline-edit-row fieldset label span.title, +.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend { + width: 8em; /* default 6em */ +} +.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap, +.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap { + margin-left: 8em; /* default 6em */ +} +.locale-ru-ru.post-php .tagsdiv .newtag, +.locale-ru-ru.post-new-php .tagsdiv .newtag { + width: 165px; /* default 180px - 15px */ +} +.locale-ru-ru.press-this .posting { + margin-right: 277px; /* default 252px + 25px */ +} +.locale-ru-ru .press-this-sidebar { + width: 265px; /* default 240px + 25px */ +} +.locale-ru-ru #customize-header-actions .button { + padding: 0 5px 1px; /* default 0 10px 1px */ +} +.locale-ru-ru #customize-header-actions .spinner { + margin: 16px 3px 0; /* default 16px 4px 0 5px */ +} + +/* lt_LT: QuickEdit */ +.locale-lt-lt .inline-edit-row fieldset label span.title, +.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend { + width: 8em; /* default 6em */ +} +.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap, +.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap { + margin-left: 8em; /* default 6em */ +} + +@media screen and (max-width: 782px) { + .locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap, + .locale-ru-ru .inline-edit-row fieldset .timestamp-wrap, + .locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap, + .locale-lt-lt .inline-edit-row fieldset .timestamp-wrap { + margin-left: 0; + } +} diff --git a/wp-admin/css/list-tables-rtl.css b/wp-admin/css/list-tables-rtl.css new file mode 100644 index 0000000000..87a01dde94 --- /dev/null +++ b/wp-admin/css/list-tables-rtl.css @@ -0,0 +1,2113 @@ +.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-response .post-com-count-wrapper, +.column-comments .post-com-count-wrapper { + white-space: nowrap; + word-wrap: normal; +} + +/* comments bubble common */ +.column-response .post-com-count, +.column-comments .post-com-count { + display: inline-block; + vertical-align: top; +} + +/* comments bubble approved */ +.column-response .post-com-count-no-comments, +.column-response .post-com-count-approved, +.column-comments .post-com-count-no-comments, +.column-comments .post-com-count-approved { + margin-top: 5px; +} + +.column-response .comment-count-no-comments, +.column-response .comment-count-approved, +.column-comments .comment-count-no-comments, +.column-comments .comment-count-approved { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: block; + padding: 0 8px; + min-width: 24px; + height: 2em; + -webkit-border-radius: 5px; + border-radius: 5px; + background-color: #72777c; + color: #fff; + font-size: 11px; + 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, +.column-comments .post-com-count-approved:after { + content: ""; + display: block; + margin-right: 8px; + width: 0; + height: 0; + border-top: 5px solid #72777c; + border-left: 5px solid transparent; +} + +.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 .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; +} + +/* comments bubble pending */ +.column-response .post-com-count-pending, +.column-comments .post-com-count-pending { + position: relative; + right: -3px; + padding: 0 5px; + min-width: 7px; + height: 17px; + border: 2px solid #fff; + -webkit-border-radius: 11px; + border-radius: 11px; + background: #ca4a1f; + color: #fff; + font-size: 9px; + line-height: 17px; + text-align: center; +} + +/* comments */ + +.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: #777; +} + +/* reply to comments */ +#replyrow td { + padding: 2px; +} + +#replysubmit { + margin: 0; + padding: 0 5px 3px; + text-align: center; +} + +#replysubmit .button { + margin-left: 5px; +} + +#replysubmit .error { + color: red; + line-height: 21px; + text-align: center; +} + +#replyrow h5 { + margin: .2em 0 0; + padding: 0 5px; + line-height: 1.4em; + font-size: 1em; +} + +#edithead .inside, +#commentsdiv #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; + -webkit-box-shadow: none; + box-shadow: none; +} + +#replyerror { + border-color: #ddd; + background-color: #f9f9f9; +} + +/* @todo: is this used? */ +.commentlist .avatar { + vertical-align: text-top; +} + +#the-comment-list tr.undo, +#the-comment-list div.undo { + background-color: #f4f4f4; +} + +#the-comment-list .unapproved th, +#the-comment-list .unapproved td { + 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 th, +#the-comment-list td { + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +#the-comment-list tr:last-child th, +#the-comment-list tr:last-child td { + -webkit-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); +} + +/* table vim shortcuts */ +.vim-current, +.vim-current th, +.vim-current td { + 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; +} + +/*------------------------------------------------------------------------------ + 10.0 - List Posts (/Pages/etc) +------------------------------------------------------------------------------*/ + +table.fixed { + table-layout: fixed; +} + +.fixed .column-rating, +.fixed .column-visible { + width: 8%; +} + +.fixed .column-posts, +.fixed .column-date, +.fixed .column-parent, +.fixed .column-links, +.fixed .column-author, +.fixed .column-format { + width: 10%; +} + +.fixed .column-posts { + width: 74px; +} + +.fixed .column-comment .comment-author { + display: none; +} + +.fixed .column-response, +.fixed .column-categories, +.fixed .column-tags, +.fixed .column-rel, +.fixed .column-role { + 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; +} + +/* Media file column */ +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; /* Remove descender white-space. */ +} + +table.media .column-title .has-media-icon ~ .row-actions { + margin-right: 70px; /* 60px image + margin */ +} + +table.media .column-title .filename { + margin-bottom: 0.2em; +} + +/* @todo: pick a consistent list table selector */ +.wp-list-table a { + -webkit-transition: none; + transition: none; +} + +#the-list tr:last-child td, +#the-list tr:last-child th { + border-bottom: none !important; + -webkit-box-shadow: none; + box-shadow: none; +} + +#comments-form .fixed .column-author { + width: 20%; +} + +#commentsdiv.postbox .inside { + margin: 0; + padding: 0; +} + +#commentsdiv .inside .row-actions { + line-height:18px; +} + +#commentsdiv .inside .column-author { + width: 25%; +} + +#commentsdiv .column-comment p { + margin: 0.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 th, +#commentsdiv .comments-box thead td { + background: transparent; + padding: 0 7px 4px; + font-style: italic; +} + +#commentsdiv .comments-box tr:last-child td { + border-bottom: 0 none; +} + +#commentsdiv #edithead .inside input { + vertical-align: middle; + width: 160px; +} + +.sorting-indicator { + display: none; + 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.sorted.asc .sorting-indicator:before, +th.desc:hover span.sorting-indicator:before, +th.desc a:focus span.sorting-indicator:before { + content: '\f142'; +} + +th.sorted.desc .sorting-indicator:before, +th.asc:hover span.sorting-indicator:before, +th.asc a:focus span.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: none; + background: transparent; +} + +.wp-list-table .toggle-row:hover { + cursor: pointer; +} + +.wp-list-table .toggle-row:focus:before { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .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 { + -webkit-box-shadow: none; + box-shadow: none; +} + +.wp-list-table .toggle-row:before { + position: absolute; + top: -5px; + right: 10px; + -webkit-border-radius: 50%; + border-radius: 50%; + display: block; + padding: 1px 0 1px 2px; + color: #666; + 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:before { + color: #82878c; + content: '\f160'; + display: inline-block; + float: right; + font: normal 20px/1 'dashicons'; + speak: none; + vertical-align: middle; + margin-right: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +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: 8px; + height: auto; + opacity: 1; +} + +.locked-text { + vertical-align: top; +} + +tr.locked-info, tr.wp-locked .locked-info { + -webkit-transition: height 1s, opacity 0.5s; + transition: height 1s, opacity 0.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: 7px 10px 8px 7px; +} + +.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.sorted .sorting-indicator, +th.desc:hover span.sorting-indicator, +th.desc a:focus span.sorting-indicator, +th.asc:hover span.sorting-indicator, +th.asc a:focus span.sorting-indicator { + display: block; +} + +/* 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; +} + +.tablenav .total-pages { + margin-left: 2px; +} + +.tablenav #table-paging { + margin-right: 2px; +} + +.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 #d2d2d2; + padding: 3px 5px 7px; + background: #e4e4e4; + font-size: 16px; + line-height: 1; + font-weight: normal; + text-align: center; +} + +.tablenav-pages-navspan { + height: 16px; + border-color: #e8e8e8; + background: #ebebeb; + color: #b4b4b4; +} + +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + border-color: #5b9dd9; + color: #fff; + background: #00a0d2; + -webkit-box-shadow: none; + box-shadow: none; + outline: none; /* IE8 */ +} + +.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; +} + +/* @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; + 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:hover:before, +.view-switch a:focus: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: 0.6em; +} + +.column-author img, +.column-username img, +.column-comment .comment-author img { + float: right; + margin-left: 10px; + margin-top: 1px; +} + +.row-actions { + color: #ddd; + font-size: 13px; + visibility: hidden; + padding: 2px 0 0; +} + +tr:hover .row-actions, +.mobile .row-actions, +.row-actions.visible, +div.comment-item:hover .row-actions { + visibility: visible; +} + +/* deprecated */ +.row-actions-visible { + padding: 2px 0 0; +} + + +/*------------------------------------------------------------------------------ + 10.1 - Inline Editing +------------------------------------------------------------------------------*/ + +/* +.quick-edit* is for Quick Edit +.bulk-edit* is for Bulk Edit +.inline-edit* is for everything +*/ + +/* Layout */ + +#wpbody-content .inline-edit-row fieldset { + font-size: 12px; + float: right; + margin: 0; + padding: 0; + width: 100%; +} + +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 { + width: 40%; +} + +#wpbody-content .quick-edit-row-post .inline-edit-col-right { + width: 39%; +} + +#wpbody-content .inline-edit-row-post .inline-edit-col-center { + width: 20%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-left { + width: 50%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-right, +#wpbody-content .bulk-edit-row-post .inline-edit-col-right { + width: 49%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-left { + width: 30%; +} + +#wpbody-content .bulk-edit-row-page .inline-edit-col-right { + width: 69%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: 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 fieldset .inline-edit-group:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.inline-edit-row p.submit { + clear: both; + padding: 0.5em; + margin: 0.5em 0 0; +} + +.inline-edit-row span.error { + line-height: 22px; + margin: 0 15px; + padding: 3px 5px; +} + +/* Positioning */ +.inline-edit-row h4 { + margin: .2em 0; + padding: 0; + line-height: 2.5; +} +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-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 label span.input-text-wrap, +.inline-edit-row fieldset .timestamp-wrap { + display: block; + margin-right: 6em; +} + +.quick-edit-row-post fieldset.inline-edit-col-right label span.title { + width: auto; + padding-left: 0.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: 0.5em +} + +.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input { + width: 6em; +} + +/* Styling */ +.inline-edit-row h4 { + 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; +} + +.inline-edit-row fieldset input[name=jj], +.inline-edit-row fieldset input[name=hh], +.inline-edit-row fieldset input[name=mn] { + font-size: 12px; + width: 2.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 li, +.inline-edit-row fieldset ul.cat-checklist input { + margin: 0; + position: relative; /* RTL fix, #WP27629 */ +} + +.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 { + 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: 0.2em 0.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; +} + +/*------------------------------------------------------------------------------ + 17.0 - Plugins +------------------------------------------------------------------------------*/ + +.plugins tbody th.check-column, +.plugins tbody { + padding: 8px 2px 0 0; +} + +.plugins tbody th.check-column input[type=checkbox] { + margin-top: 4px; +} + +#update-plugins-table tbody td p { + margin-top: 0; +} + +#update-plugins-table tbody td p strong { + font-size: 14px; +} + +.plugins thead td.check-column, +.plugins tfoot td.check-column, +.plugins .inactive th.check-column { + padding-right: 6px; +} + +#update-plugins-table thead td.check-column, +#update-plugins-table tfoot td.check-column { + padding-top: 11px; +} + +.plugins, +.plugins th, +.plugins td { + 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 ul, +.plugins .desc ol { + margin: 0 2em 0 0; +} + +.plugins .desc ul { + list-style-type: disc; +} + +.plugins .row-actions { + font-size: 13px; + padding: 0; +} + +.plugins .inactive td, +.plugins .inactive th, +.plugins .active td, +.plugins .active th { + padding: 10px 9px; +} + +.plugins .active td, +.plugins .active th { + background-color: #f7fcfe; +} + +.plugins .update th, +.plugins .update td { + border-bottom: 0; +} + +.plugin-update-tr td { + border-top: 0; +} + +.plugins .inactive td, +.plugins .inactive th, +.plugins .active td, +.plugins .active th, +.plugin-install #the-list td, +.upgrade .plugins td, +.upgrade .plugins th { + -webkit-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); + -webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,0.02), inset 0 -1px 0 #e1e1e1; + box-shadow: inset 0 1px 0 rgba(0,0,0,0.02), inset 0 -1px 0 #e1e1e1; +} + +.plugins .update td, +.plugins .update th, +.upgrade .plugins tr:last-of-type td, +.upgrade .plugins tr:last-of-type th, +.plugins tr.active + tr.inactive.update th, +.plugins tr.active + tr.inactive.update td, +.plugins .updated td, +.plugins .updated th, +.plugins tr.active + tr.inactive.updated th, +.plugins tr.active + tr.inactive.updated td { + -webkit-box-shadow: none; + box-shadow: none; +} + +.plugins .active.update td, +.plugins .active.update th, +tr.active.update + tr.plugin-update-tr .plugin-update { + background-color: #fef7f1; +} + +.plugins .active th.check-column, +.plugin-update-tr.active td { + border-right: 4px solid #00a0d2; +} + +.plugins .active.update th.check-column, +.plugins .active.update + .plugin-update-tr .plugin-update { + border-right: 4px solid #d54e21; +} + +#wpbody-content .plugins .plugin-title, +#wpbody-content .plugins .theme-title { + padding-left: 12px; + white-space:nowrap; +} + +.plugins .inactive .plugin-title strong { + font-weight: 400; +} + +.plugins .second, +.plugins .row-actions { + padding: 0 0 5px; +} + +.plugins .update .second, +.plugins .update .row-actions, +.plugins .updated .second, +.plugins .updated .row-actions { + padding-bottom: 0; +} + +.plugins-php .widefat tfoot th, +.plugins-php .widefat tfoot td { + border-top-style: solid; + border-top-width: 1px; +} + +.plugin-update-tr .update-message { + font-size: 13px; + font-weight: normal; + margin: 0 31px 8px 10px; + padding: 6px 40px 8px 12px; + background-color: #f7f7f7; + background-color: rgba(0,0,0,0.03); +} + +.plugin-update-tr .update-message:before, +.plugin-card .update-now:before, +.plugin-card .install-now:before { + color: #d54e21; + display: inline-block; + font: normal 20px/1 'dashicons'; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: top; +} + +.plugin-update-tr .update-message:before, +.plugin-card .update-now:before { + content: '\f463'; +} + +.plugin-update-tr .update-message:before { + margin: 0 -30px 0 10px; +} + +.plugin-card .update-now:before, +.plugin-card .install-now:before { + margin: 3px -2px 0 5px; +} + +.plugin-update-tr .updating-message:before, +.plugin-card .updating-message:before { + content: '\f463'; + -webkit-animation: rotation 2s infinite linear; + animation: rotation 2s infinite linear; +} + +@-webkit-keyframes rotation { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(-359deg); + transform: rotate(-359deg); + } +} + +@keyframes rotation { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(-359deg); + transform: rotate(-359deg); + } +} + +.plugin-update-tr .updated-message:before, +.plugin-card .updated-message:before { + color: #79ba49; + content: '\f147'; +} + +.wp-list-table.plugins tbody tr.plugin-update-tr td.plugin-update { + overflow: hidden; /* clearfix */ + padding: 0; + -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); +} + +/* update notices for active plugins */ +tr.active + tr.plugin-update-tr .plugin-update { + background-color: #f7fcfe; +} + +tr.active + tr.plugin-update-tr:not(.updated) .plugin-update .update-message { + background-color: #fcf3ef; +} + +.plugin-install-php h3 { + clear: both; +} + +.plugin-install-php h4 { + margin: 2.5em 0 8px; +} + +.plugin-install-php .wp-filter { + margin-bottom: 0; +} + +/* Plugin card table view */ +.plugin-group { + overflow: hidden; /* clearfix */ + margin-top: 1.5em; +} + +.plugin-group h3 { + margin-top: 0; +} + +.plugin-card { + float: right; + margin: 0 8px 16px; + width: 48.5%; + width: -webkit-calc( 50% - 8px ); + width: calc( 50% - 8px ); + background-color: #fff; + border: 1px solid #dedede; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: -webkit-calc( 33.1% - 8px ); + 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; +} + +div.action-links, +.plugin-action-buttons { + margin: 0; /* Override existing margins */ +} + +.plugin-card h4 { + margin: 0 0 12px; + font-size: 18px; + line-height: 1.3; +} + +.plugin-card .name, +.plugin-card .desc { + margin-right: 148px; /* icon + margin */ + margin-left: 120px; /* action links */ +} + +.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 #dedede; + overflow: hidden; +} + +.plugin-card-bottom .star-rating { + display: inline; +} + +.plugin-card .column-rating { + line-height: 23px; +} + +.plugin-card .column-rating, +.plugin-card .column-updated { + margin-bottom: 4px; +} + +.plugin-card .column-rating, +.plugin-card .column-downloaded { + float: right; + clear: right; + max-width: 180px; +} + +.plugin-card .column-updated, +.plugin-card .column-compatibility { + text-align: left; + float: left; + clear: left; + width: 65%; + width: -webkit-calc( 100% - 180px ); + 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-icon { + position: absolute; + top: 20px; + right: 20px; + width: 128px; + height: 128px; + margin: 0 0 20px 20px; +} + +.plugin-icon img { + width: 128px; + height: 128px; +} + +.no-plugin-results { + color: #999; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 100px 0 0; + text-align: center; +} + +/* ms */ +/* Background Color for Site Status */ +.wp-list-table tr.site-deleted { + background: #ff8573; +} +.wp-list-table tr.site-spammed { + background: #faafaa; +} +.wp-list-table tr.site-archived { + background: #ffebe8; +} +.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 Queries +-------------------------------------------------------------- */ + +@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 .name, + .plugin-card .desc { + margin-left: 0; + } + + .plugin-card .desc p:first-of-type { + margin-top: 0; + } +} + +@media screen and ( max-width: 782px ) { + /* WP List Table Options & Filters */ + .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.top .actions, + .tablenav .view-switch { + display: none; + } + + .view-switch a { + width: 36px; + height: 36px; + line-height: 33px; + } + + /* Pagination */ + .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 16px 12px; + font-size: 18px; + } + + .tablenav-pages-navspan { + height: 18px; + } + + .tablenav-pages .pagination-links .current-page { + padding: 8px 9px 9px; + font-size: 16px; + } + + /* WP List Table Adjustments: General */ + .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%; + } + + /* Checkboxes need to show */ + .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; /* needs to override some columns that are more specifically targeted */ + } + + .wp-list-table td.column-primary { + padding-left: 50px; /* space for toggle button */ + } + + .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; /* match padding of regular table cell */ + display: block; + overflow: hidden; + width: 32%; /* leave a little space for a gutter */ + content: attr(data-colname); + white-space: nowrap; + text-overflow: ellipsis; + } + + .wp-list-table .is-expanded td:not(.hidden) { + display: block !important; + overflow: hidden; /* clearfix */ + } + + /* Special cases */ + .widefat .num, + .column-posts { + text-align: right; + } + + #comments-form .fixed .column-author { + display: none !important; + } + + .fixed .column-comment .comment-author { + display: block; + } + + #the-comment-list .is-expanded td { + -webkit-box-shadow: none; + box-shadow: none; + } + + #the-comment-list .is-expanded td:last-child { + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + } + + /* Show comment bubble as text instead */ + .post-com-count .screen-reader-text { + position: static; + width: auto; + height: auto; + margin: 0; + } + + .column-response .post-com-count-no-comments:after, + .column-response .post-com-count-approved:after, + .column-comments .post-com-count-no-comments:after, + .column-comments .post-com-count-approved:after { + content: none; + } + + .column-response .post-com-count [aria-hidden="true"], + .column-comments .post-com-count [aria-hidden="true"] { + display: none; + } + + .column-response .post-com-count-wrapper, + .column-comments .post-com-count-wrapper { + white-space: normal; + } + + .column-response .post-com-count-wrapper > a, + .column-comments .post-com-count-wrapper > a { + display: block; + } + + .column-response .post-com-count-no-comments, + .column-response .post-com-count-approved, + .column-comments .post-com-count-no-comments, + .column-comments .post-com-count-approved { + margin-top: 0; + margin-left: 0.5em; + } + + .column-response .post-com-count-pending, + .column-comments .post-com-count-pending { + position: static; + height: auto; + min-width: 0; + padding: 0; + border: none; + -webkit-border-radius: 0; + border-radius: 0; + background: none; + color: #bb2a2a; + font-size: inherit; + line-height: inherit; + text-align: right; + } + + .column-response .post-com-count-pending:hover, + .column-comments .post-com-count-pending:hover { + color: #dc3232; + } + + .widefat thead .check-column, .widefat tfoot .check-column { + padding: 10px 0 10px; + } + + .widefat * { + word-wrap: normal; + } + + /* Quick Edit and Bulk Edit */ + #wpbody-content .quick-edit-row-post .inline-edit-col-left, + #wpbody-content .quick-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 .bulk-edit-row-post .inline-edit-col-right, + #wpbody-content .bulk-edit-row .inline-edit-col-left, + #wpbody-content .bulk-edit-row-page .inline-edit-col-right, + #wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: none; + width: 100%; + } + + #wpbody-content .quick-edit-row fieldset .inline-edit-col label, + #wpbody-content .quick-edit-row fieldset .inline-edit-group label, + #wpbody-content .bulk-edit-row fieldset .inline-edit-col label, + #wpbody-content .bulk-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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .inline-edit-row fieldset ul.cat-checklist label, + .inline-edit-row #bulk-titles div { + 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 0.5em; + } + + .inline-edit-row fieldset .inline-edit-col label.inline-edit-tags { + padding: 0; + } + + .inline-edit-row fieldset label span.input-text-wrap, + .inline-edit-row fieldset .timestamp-wrap { + 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; + } + + #bulk-titles div { + margin: 0.8em 0.3em; + } + + #bulk-titles div a { + height: 22px; + } + + /* Updates */ + #wpbody-content #update-themes-table .plugin-title { + width: auto; + } + + /* Links */ + .link-manager-php #posts-filter { + margin-top: 25px; + } + + .link-manager-php .tablenav.bottom { + overflow: hidden; + } + + /* List tables that don't toggle rows */ + .comments-box .toggle-row, + .wp-list-table.plugins .toggle-row { + display: none; + } + + /* Plugin/Theme Management */ + #wpbody-content .wp-list-table.plugins td { + display: block; + width: auto; + padding: 10px 9px; /* reset from other list tables that have a label at this width */ + } + + #wpbody-content .wp-list-table.plugins .column-description { + padding-top: 2px; + } + + .wp-list-table.plugins .plugin-title, + .wp-list-table.plugins .theme-title { + padding-top: 13px; + padding-bottom: 4px; + } + + .plugins #the-list tr > td:not(:last-child), + .plugins #the-list .update th, + .plugins #the-list .update td, + .wp-list-table.plugins #the-list .theme-title { + -webkit-box-shadow: none; + box-shadow: none; + border-top: none; + } + + .plugins #the-list tr td { + border-top: none; + } + + .plugins tbody { + padding: 1px 0 0; + } + + .plugins tr.active + tr.inactive th.check-column, + .plugins tr.active + tr.inactive td.column-description, + .plugins .plugin-update-tr:before { + -webkit-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 + tr.inactive th.check-column, + .plugins tr.active + tr.inactive td { + border-top: none; + } + + /* mimic the checkbox th */ + .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; + } + + .wp-list-table.plugins .plugin-title strong, + .wp-list-table.plugins .theme-title strong { + font-size: 1.4em; + line-height: 1.6em; + } + + /* Add New plugins page */ + table.plugin-install .column-name, + table.plugin-install .column-version, + table.plugin-install .column-rating, + table.plugin-install .column-description { + display: block; + width: auto; + } + + table.plugin-install th.column-name, + table.plugin-install th.column-version, + table.plugin-install th.column-rating, + table.plugin-install th.column-description { + display: none; + } + + table.plugin-install td.column-name strong { + font-size: 1.4em; + line-height: 1.6em; + } + + table.plugin-install #the-list td { + -webkit-box-shadow: none; + box-shadow: none; + } + + table.plugin-install #the-list tr { + display: block; + -webkit-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 { + margin-right: 0; + margin-left: 0; + width: 100%; + } +} diff --git a/wp-admin/css/list-tables.css b/wp-admin/css/list-tables.css new file mode 100644 index 0000000000..fdaa733abe --- /dev/null +++ b/wp-admin/css/list-tables.css @@ -0,0 +1,2113 @@ +.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-response .post-com-count-wrapper, +.column-comments .post-com-count-wrapper { + white-space: nowrap; + word-wrap: normal; +} + +/* comments bubble common */ +.column-response .post-com-count, +.column-comments .post-com-count { + display: inline-block; + vertical-align: top; +} + +/* comments bubble approved */ +.column-response .post-com-count-no-comments, +.column-response .post-com-count-approved, +.column-comments .post-com-count-no-comments, +.column-comments .post-com-count-approved { + margin-top: 5px; +} + +.column-response .comment-count-no-comments, +.column-response .comment-count-approved, +.column-comments .comment-count-no-comments, +.column-comments .comment-count-approved { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: block; + padding: 0 8px; + min-width: 24px; + height: 2em; + -webkit-border-radius: 5px; + border-radius: 5px; + background-color: #72777c; + color: #fff; + font-size: 11px; + 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, +.column-comments .post-com-count-approved:after { + content: ""; + display: block; + margin-left: 8px; + width: 0; + height: 0; + border-top: 5px solid #72777c; + border-right: 5px solid transparent; +} + +.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 .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; +} + +/* comments bubble pending */ +.column-response .post-com-count-pending, +.column-comments .post-com-count-pending { + position: relative; + left: -3px; + padding: 0 5px; + min-width: 7px; + height: 17px; + border: 2px solid #fff; + -webkit-border-radius: 11px; + border-radius: 11px; + background: #ca4a1f; + color: #fff; + font-size: 9px; + line-height: 17px; + text-align: center; +} + +/* comments */ + +.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: #777; +} + +/* reply to comments */ +#replyrow td { + padding: 2px; +} + +#replysubmit { + margin: 0; + padding: 0 5px 3px; + text-align: center; +} + +#replysubmit .button { + margin-right: 5px; +} + +#replysubmit .error { + color: red; + line-height: 21px; + text-align: center; +} + +#replyrow h5 { + margin: .2em 0 0; + padding: 0 5px; + line-height: 1.4em; + font-size: 1em; +} + +#edithead .inside, +#commentsdiv #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; + -webkit-box-shadow: none; + box-shadow: none; +} + +#replyerror { + border-color: #ddd; + background-color: #f9f9f9; +} + +/* @todo: is this used? */ +.commentlist .avatar { + vertical-align: text-top; +} + +#the-comment-list tr.undo, +#the-comment-list div.undo { + background-color: #f4f4f4; +} + +#the-comment-list .unapproved th, +#the-comment-list .unapproved td { + 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 th, +#the-comment-list td { + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +#the-comment-list tr:last-child th, +#the-comment-list tr:last-child td { + -webkit-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); +} + +/* table vim shortcuts */ +.vim-current, +.vim-current th, +.vim-current td { + 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; +} + +/*------------------------------------------------------------------------------ + 10.0 - List Posts (/Pages/etc) +------------------------------------------------------------------------------*/ + +table.fixed { + table-layout: fixed; +} + +.fixed .column-rating, +.fixed .column-visible { + width: 8%; +} + +.fixed .column-posts, +.fixed .column-date, +.fixed .column-parent, +.fixed .column-links, +.fixed .column-author, +.fixed .column-format { + width: 10%; +} + +.fixed .column-posts { + width: 74px; +} + +.fixed .column-comment .comment-author { + display: none; +} + +.fixed .column-response, +.fixed .column-categories, +.fixed .column-tags, +.fixed .column-rel, +.fixed .column-role { + 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; +} + +/* Media file column */ +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; /* Remove descender white-space. */ +} + +table.media .column-title .has-media-icon ~ .row-actions { + margin-left: 70px; /* 60px image + margin */ +} + +table.media .column-title .filename { + margin-bottom: 0.2em; +} + +/* @todo: pick a consistent list table selector */ +.wp-list-table a { + -webkit-transition: none; + transition: none; +} + +#the-list tr:last-child td, +#the-list tr:last-child th { + border-bottom: none !important; + -webkit-box-shadow: none; + box-shadow: none; +} + +#comments-form .fixed .column-author { + width: 20%; +} + +#commentsdiv.postbox .inside { + margin: 0; + padding: 0; +} + +#commentsdiv .inside .row-actions { + line-height:18px; +} + +#commentsdiv .inside .column-author { + width: 25%; +} + +#commentsdiv .column-comment p { + margin: 0.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 th, +#commentsdiv .comments-box thead td { + background: transparent; + padding: 0 7px 4px; + font-style: italic; +} + +#commentsdiv .comments-box tr:last-child td { + border-bottom: 0 none; +} + +#commentsdiv #edithead .inside input { + vertical-align: middle; + width: 160px; +} + +.sorting-indicator { + display: none; + 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.sorted.asc .sorting-indicator:before, +th.desc:hover span.sorting-indicator:before, +th.desc a:focus span.sorting-indicator:before { + content: '\f142'; +} + +th.sorted.desc .sorting-indicator:before, +th.asc:hover span.sorting-indicator:before, +th.asc a:focus span.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: none; + background: transparent; +} + +.wp-list-table .toggle-row:hover { + cursor: pointer; +} + +.wp-list-table .toggle-row:focus:before { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .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 { + -webkit-box-shadow: none; + box-shadow: none; +} + +.wp-list-table .toggle-row:before { + position: absolute; + top: -5px; + left: 10px; + -webkit-border-radius: 50%; + border-radius: 50%; + display: block; + padding: 1px 2px 1px 0; + color: #666; + 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:before { + color: #82878c; + content: '\f160'; + display: inline-block; + float: left; + font: normal 20px/1 'dashicons'; + speak: none; + vertical-align: middle; + margin-left: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +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: 8px; + height: auto; + opacity: 1; +} + +.locked-text { + vertical-align: top; +} + +tr.locked-info, tr.wp-locked .locked-info { + -webkit-transition: height 1s, opacity 0.5s; + transition: height 1s, opacity 0.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: 7px 7px 8px 10px; +} + +.fixed .column-comments.sortable a, +.fixed .column-comments.sorted a { + padding: 8px 0; +} + +th.sortable a span, +th.sorted a span { + float: left; + cursor: pointer; +} + +th.sorted .sorting-indicator, +th.desc:hover span.sorting-indicator, +th.desc a:focus span.sorting-indicator, +th.asc:hover span.sorting-indicator, +th.asc a:focus span.sorting-indicator { + display: block; +} + +/* 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; +} + +.tablenav .total-pages { + margin-right: 2px; +} + +.tablenav #table-paging { + margin-left: 2px; +} + +.tablenav a.button-secondary { + display: block; + margin: 3px 8px 0 0; +} + +.tablenav { + clear: both; + height: 30px; + margin: 6px 0 4px; + vertical-align: middle; +} + +.tablenav.themes { + max-width: 98%; +} + +.tablenav .tablenav-pages { + float: right; + 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 #d2d2d2; + padding: 3px 5px 7px; + background: #e4e4e4; + font-size: 16px; + line-height: 1; + font-weight: normal; + text-align: center; +} + +.tablenav-pages-navspan { + height: 16px; + border-color: #e8e8e8; + background: #ebebeb; + color: #b4b4b4; +} + +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + border-color: #5b9dd9; + color: #fff; + background: #00a0d2; + -webkit-box-shadow: none; + box-shadow: none; + outline: none; /* IE8 */ +} + +.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; +} + +/* @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; + 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:hover:before, +.view-switch a:focus: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: 0.6em; +} + +.column-author img, +.column-username img, +.column-comment .comment-author img { + float: left; + margin-right: 10px; + margin-top: 1px; +} + +.row-actions { + color: #ddd; + font-size: 13px; + visibility: hidden; + padding: 2px 0 0; +} + +tr:hover .row-actions, +.mobile .row-actions, +.row-actions.visible, +div.comment-item:hover .row-actions { + visibility: visible; +} + +/* deprecated */ +.row-actions-visible { + padding: 2px 0 0; +} + + +/*------------------------------------------------------------------------------ + 10.1 - Inline Editing +------------------------------------------------------------------------------*/ + +/* +.quick-edit* is for Quick Edit +.bulk-edit* is for Bulk Edit +.inline-edit* is for everything +*/ + +/* Layout */ + +#wpbody-content .inline-edit-row fieldset { + font-size: 12px; + float: left; + margin: 0; + padding: 0; + width: 100%; +} + +tr.inline-edit-row td, +#wpbody-content .inline-edit-row fieldset .inline-edit-col { + padding: 0 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 .quick-edit-row-page .inline-edit-col-right, +#wpbody-content .bulk-edit-row-post .inline-edit-col-right { + width: 49%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-left { + width: 30%; +} + +#wpbody-content .bulk-edit-row-page .inline-edit-col-right { + width: 69%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: right; + width: 69%; +} + +#wpbody-content .inline-edit-row-page .inline-edit-col-right { + margin-top: 27px; +} + +.inline-edit-row fieldset .inline-edit-group { + clear: both; + line-height: 2.5; +} + +.inline-edit-row fieldset .inline-edit-group:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.inline-edit-row p.submit { + clear: both; + padding: 0.5em; + margin: 0.5em 0 0; +} + +.inline-edit-row span.error { + line-height: 22px; + margin: 0 15px; + padding: 3px 5px; +} + +/* Positioning */ +.inline-edit-row h4 { + margin: .2em 0; + padding: 0; + line-height: 2.5; +} +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-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 label span.input-text-wrap, +.inline-edit-row fieldset .timestamp-wrap { + display: block; + margin-left: 6em; +} + +.quick-edit-row-post fieldset.inline-edit-col-right label span.title { + width: auto; + padding-right: 0.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: 0.5em +} + +.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input { + width: 6em; +} + +/* Styling */ +.inline-edit-row h4 { + 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; +} + +.inline-edit-row fieldset input[name=jj], +.inline-edit-row fieldset input[name=hh], +.inline-edit-row fieldset input[name=mn] { + font-size: 12px; + width: 2.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 li, +.inline-edit-row fieldset ul.cat-checklist input { + margin: 0; + position: relative; /* RTL fix, #WP27629 */ +} + +.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 { + 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: 0.2em 0.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; +} + +/*------------------------------------------------------------------------------ + 17.0 - Plugins +------------------------------------------------------------------------------*/ + +.plugins tbody th.check-column, +.plugins tbody { + padding: 8px 0 0 2px; +} + +.plugins tbody th.check-column input[type=checkbox] { + margin-top: 4px; +} + +#update-plugins-table tbody td p { + margin-top: 0; +} + +#update-plugins-table tbody td p strong { + font-size: 14px; +} + +.plugins thead td.check-column, +.plugins tfoot td.check-column, +.plugins .inactive th.check-column { + padding-left: 6px; +} + +#update-plugins-table thead td.check-column, +#update-plugins-table tfoot td.check-column { + padding-top: 11px; +} + +.plugins, +.plugins th, +.plugins td { + 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 ul, +.plugins .desc ol { + margin: 0 0 0 2em; +} + +.plugins .desc ul { + list-style-type: disc; +} + +.plugins .row-actions { + font-size: 13px; + padding: 0; +} + +.plugins .inactive td, +.plugins .inactive th, +.plugins .active td, +.plugins .active th { + padding: 10px 9px; +} + +.plugins .active td, +.plugins .active th { + background-color: #f7fcfe; +} + +.plugins .update th, +.plugins .update td { + border-bottom: 0; +} + +.plugin-update-tr td { + border-top: 0; +} + +.plugins .inactive td, +.plugins .inactive th, +.plugins .active td, +.plugins .active th, +.plugin-install #the-list td, +.upgrade .plugins td, +.upgrade .plugins th { + -webkit-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); + -webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,0.02), inset 0 -1px 0 #e1e1e1; + box-shadow: inset 0 1px 0 rgba(0,0,0,0.02), inset 0 -1px 0 #e1e1e1; +} + +.plugins .update td, +.plugins .update th, +.upgrade .plugins tr:last-of-type td, +.upgrade .plugins tr:last-of-type th, +.plugins tr.active + tr.inactive.update th, +.plugins tr.active + tr.inactive.update td, +.plugins .updated td, +.plugins .updated th, +.plugins tr.active + tr.inactive.updated th, +.plugins tr.active + tr.inactive.updated td { + -webkit-box-shadow: none; + box-shadow: none; +} + +.plugins .active.update td, +.plugins .active.update th, +tr.active.update + tr.plugin-update-tr .plugin-update { + background-color: #fef7f1; +} + +.plugins .active th.check-column, +.plugin-update-tr.active td { + border-left: 4px solid #00a0d2; +} + +.plugins .active.update th.check-column, +.plugins .active.update + .plugin-update-tr .plugin-update { + border-left: 4px solid #d54e21; +} + +#wpbody-content .plugins .plugin-title, +#wpbody-content .plugins .theme-title { + padding-right: 12px; + white-space:nowrap; +} + +.plugins .inactive .plugin-title strong { + font-weight: 400; +} + +.plugins .second, +.plugins .row-actions { + padding: 0 0 5px; +} + +.plugins .update .second, +.plugins .update .row-actions, +.plugins .updated .second, +.plugins .updated .row-actions { + padding-bottom: 0; +} + +.plugins-php .widefat tfoot th, +.plugins-php .widefat tfoot td { + border-top-style: solid; + border-top-width: 1px; +} + +.plugin-update-tr .update-message { + font-size: 13px; + font-weight: normal; + margin: 0 10px 8px 31px; + padding: 6px 12px 8px 40px; + background-color: #f7f7f7; + background-color: rgba(0,0,0,0.03); +} + +.plugin-update-tr .update-message:before, +.plugin-card .update-now:before, +.plugin-card .install-now:before { + color: #d54e21; + display: inline-block; + font: normal 20px/1 'dashicons'; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: top; +} + +.plugin-update-tr .update-message:before, +.plugin-card .update-now:before { + content: '\f463'; +} + +.plugin-update-tr .update-message:before { + margin: 0 10px 0 -30px; +} + +.plugin-card .update-now:before, +.plugin-card .install-now:before { + margin: 3px 5px 0 -2px; +} + +.plugin-update-tr .updating-message:before, +.plugin-card .updating-message:before { + content: '\f463'; + -webkit-animation: rotation 2s infinite linear; + animation: rotation 2s infinite linear; +} + +@-webkit-keyframes rotation { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes rotation { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +.plugin-update-tr .updated-message:before, +.plugin-card .updated-message:before { + color: #79ba49; + content: '\f147'; +} + +.wp-list-table.plugins tbody tr.plugin-update-tr td.plugin-update { + overflow: hidden; /* clearfix */ + padding: 0; + -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); +} + +/* update notices for active plugins */ +tr.active + tr.plugin-update-tr .plugin-update { + background-color: #f7fcfe; +} + +tr.active + tr.plugin-update-tr:not(.updated) .plugin-update .update-message { + background-color: #fcf3ef; +} + +.plugin-install-php h3 { + clear: both; +} + +.plugin-install-php h4 { + margin: 2.5em 0 8px; +} + +.plugin-install-php .wp-filter { + margin-bottom: 0; +} + +/* Plugin card table view */ +.plugin-group { + overflow: hidden; /* clearfix */ + margin-top: 1.5em; +} + +.plugin-group h3 { + margin-top: 0; +} + +.plugin-card { + float: left; + margin: 0 8px 16px; + width: 48.5%; + width: -webkit-calc( 50% - 8px ); + width: calc( 50% - 8px ); + background-color: #fff; + border: 1px solid #dedede; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: -webkit-calc( 33.1% - 8px ); + 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; +} + +div.action-links, +.plugin-action-buttons { + margin: 0; /* Override existing margins */ +} + +.plugin-card h4 { + margin: 0 0 12px; + font-size: 18px; + line-height: 1.3; +} + +.plugin-card .name, +.plugin-card .desc { + margin-left: 148px; /* icon + margin */ + margin-right: 120px; /* action links */ +} + +.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 #dedede; + overflow: hidden; +} + +.plugin-card-bottom .star-rating { + display: inline; +} + +.plugin-card .column-rating { + line-height: 23px; +} + +.plugin-card .column-rating, +.plugin-card .column-updated { + margin-bottom: 4px; +} + +.plugin-card .column-rating, +.plugin-card .column-downloaded { + float: left; + clear: left; + max-width: 180px; +} + +.plugin-card .column-updated, +.plugin-card .column-compatibility { + text-align: right; + float: right; + clear: right; + width: 65%; + width: -webkit-calc( 100% - 180px ); + 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-icon { + position: absolute; + top: 20px; + left: 20px; + width: 128px; + height: 128px; + margin: 0 20px 20px 0; +} + +.plugin-icon img { + width: 128px; + height: 128px; +} + +.no-plugin-results { + color: #999; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 100px 0 0; + text-align: center; +} + +/* ms */ +/* Background Color for Site Status */ +.wp-list-table tr.site-deleted { + background: #ff8573; +} +.wp-list-table tr.site-spammed { + background: #faafaa; +} +.wp-list-table tr.site-archived { + background: #ffebe8; +} +.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 Queries +-------------------------------------------------------------- */ + +@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 .name, + .plugin-card .desc { + margin-right: 0; + } + + .plugin-card .desc p:first-of-type { + margin-top: 0; + } +} + +@media screen and ( max-width: 782px ) { + /* WP List Table Options & Filters */ + .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.top .actions, + .tablenav .view-switch { + display: none; + } + + .view-switch a { + width: 36px; + height: 36px; + line-height: 33px; + } + + /* Pagination */ + .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 16px 12px; + font-size: 18px; + } + + .tablenav-pages-navspan { + height: 18px; + } + + .tablenav-pages .pagination-links .current-page { + padding: 8px 9px 9px; + font-size: 16px; + } + + /* WP List Table Adjustments: General */ + .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%; + } + + /* Checkboxes need to show */ + .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; /* needs to override some columns that are more specifically targeted */ + } + + .wp-list-table td.column-primary { + padding-right: 50px; /* space for toggle button */ + } + + .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; /* match padding of regular table cell */ + display: block; + overflow: hidden; + width: 32%; /* leave a little space for a gutter */ + content: attr(data-colname); + white-space: nowrap; + text-overflow: ellipsis; + } + + .wp-list-table .is-expanded td:not(.hidden) { + display: block !important; + overflow: hidden; /* clearfix */ + } + + /* Special cases */ + .widefat .num, + .column-posts { + text-align: left; + } + + #comments-form .fixed .column-author { + display: none !important; + } + + .fixed .column-comment .comment-author { + display: block; + } + + #the-comment-list .is-expanded td { + -webkit-box-shadow: none; + box-shadow: none; + } + + #the-comment-list .is-expanded td:last-child { + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + } + + /* Show comment bubble as text instead */ + .post-com-count .screen-reader-text { + position: static; + width: auto; + height: auto; + margin: 0; + } + + .column-response .post-com-count-no-comments:after, + .column-response .post-com-count-approved:after, + .column-comments .post-com-count-no-comments:after, + .column-comments .post-com-count-approved:after { + content: none; + } + + .column-response .post-com-count [aria-hidden="true"], + .column-comments .post-com-count [aria-hidden="true"] { + display: none; + } + + .column-response .post-com-count-wrapper, + .column-comments .post-com-count-wrapper { + white-space: normal; + } + + .column-response .post-com-count-wrapper > a, + .column-comments .post-com-count-wrapper > a { + display: block; + } + + .column-response .post-com-count-no-comments, + .column-response .post-com-count-approved, + .column-comments .post-com-count-no-comments, + .column-comments .post-com-count-approved { + margin-top: 0; + margin-right: 0.5em; + } + + .column-response .post-com-count-pending, + .column-comments .post-com-count-pending { + position: static; + height: auto; + min-width: 0; + padding: 0; + border: none; + -webkit-border-radius: 0; + border-radius: 0; + background: none; + color: #bb2a2a; + font-size: inherit; + line-height: inherit; + text-align: left; + } + + .column-response .post-com-count-pending:hover, + .column-comments .post-com-count-pending:hover { + color: #dc3232; + } + + .widefat thead .check-column, .widefat tfoot .check-column { + padding: 10px 0 10px; + } + + .widefat * { + word-wrap: normal; + } + + /* Quick Edit and Bulk Edit */ + #wpbody-content .quick-edit-row-post .inline-edit-col-left, + #wpbody-content .quick-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 .bulk-edit-row-post .inline-edit-col-right, + #wpbody-content .bulk-edit-row .inline-edit-col-left, + #wpbody-content .bulk-edit-row-page .inline-edit-col-right, + #wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: none; + width: 100%; + } + + #wpbody-content .quick-edit-row fieldset .inline-edit-col label, + #wpbody-content .quick-edit-row fieldset .inline-edit-group label, + #wpbody-content .bulk-edit-row fieldset .inline-edit-col label, + #wpbody-content .bulk-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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .inline-edit-row fieldset ul.cat-checklist label, + .inline-edit-row #bulk-titles div { + 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 0.5em; + } + + .inline-edit-row fieldset .inline-edit-col label.inline-edit-tags { + padding: 0; + } + + .inline-edit-row fieldset label span.input-text-wrap, + .inline-edit-row fieldset .timestamp-wrap { + 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; + } + + #bulk-titles div { + margin: 0.8em 0.3em; + } + + #bulk-titles div a { + height: 22px; + } + + /* Updates */ + #wpbody-content #update-themes-table .plugin-title { + width: auto; + } + + /* Links */ + .link-manager-php #posts-filter { + margin-top: 25px; + } + + .link-manager-php .tablenav.bottom { + overflow: hidden; + } + + /* List tables that don't toggle rows */ + .comments-box .toggle-row, + .wp-list-table.plugins .toggle-row { + display: none; + } + + /* Plugin/Theme Management */ + #wpbody-content .wp-list-table.plugins td { + display: block; + width: auto; + padding: 10px 9px; /* reset from other list tables that have a label at this width */ + } + + #wpbody-content .wp-list-table.plugins .column-description { + padding-top: 2px; + } + + .wp-list-table.plugins .plugin-title, + .wp-list-table.plugins .theme-title { + padding-top: 13px; + padding-bottom: 4px; + } + + .plugins #the-list tr > td:not(:last-child), + .plugins #the-list .update th, + .plugins #the-list .update td, + .wp-list-table.plugins #the-list .theme-title { + -webkit-box-shadow: none; + box-shadow: none; + border-top: none; + } + + .plugins #the-list tr td { + border-top: none; + } + + .plugins tbody { + padding: 1px 0 0; + } + + .plugins tr.active + tr.inactive th.check-column, + .plugins tr.active + tr.inactive td.column-description, + .plugins .plugin-update-tr:before { + -webkit-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 + tr.inactive th.check-column, + .plugins tr.active + tr.inactive td { + border-top: none; + } + + /* mimic the checkbox th */ + .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; + } + + .wp-list-table.plugins .plugin-title strong, + .wp-list-table.plugins .theme-title strong { + font-size: 1.4em; + line-height: 1.6em; + } + + /* Add New plugins page */ + table.plugin-install .column-name, + table.plugin-install .column-version, + table.plugin-install .column-rating, + table.plugin-install .column-description { + display: block; + width: auto; + } + + table.plugin-install th.column-name, + table.plugin-install th.column-version, + table.plugin-install th.column-rating, + table.plugin-install th.column-description { + display: none; + } + + table.plugin-install td.column-name strong { + font-size: 1.4em; + line-height: 1.6em; + } + + table.plugin-install #the-list td { + -webkit-box-shadow: none; + box-shadow: none; + } + + table.plugin-install #the-list tr { + display: block; + -webkit-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 { + margin-left: 0; + margin-right: 0; + width: 100%; + } +} diff --git a/wp-admin/css/login-rtl.css b/wp-admin/css/login-rtl.css new file mode 100644 index 0000000000..7bb3692535 --- /dev/null +++ b/wp-admin/css/login-rtl.css @@ -0,0 +1,282 @@ +@import url(forms-rtl.css); +@import url(l10n-rtl.css); + +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +html { + background: #f1f1f1; +} + +body { + background: #f1f1f1; + min-width: 0; + color: #444; + font-family: "Open Sans", sans-serif; + font-size: 13px; + line-height: 1.4em; +} + +a { + color: #0073aa; + -webkit-transition-property: border, background, color; + transition-property: border, background, color; + -webkit-transition-duration: .05s; + transition-duration: .05s; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +a { + outline: 0; +} + +a:hover, +a:active { + color: #00a0d2; +} + +a:focus { + color: #124964; + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + 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 .message { + border-right: 4px solid #00a0d2; + padding: 1px 12px; + background-color: #fff; + -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); +} + +.login #login_error { + border-right: 4px solid #dd3d36; + background: #fff; + -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); +} + +#loginform p.submit, +.login-action-lostpassword p.submit { + border: none; + margin: -10px 0 20px; /* May want to revisit this */ +} + +.login * { + margin: 0; + padding: 0; +} + +.login form { + margin-top: 20px; + margin-right: 0; + padding: 26px 24px 46px; + font-weight: normal; + overflow: hidden; + background: #fff; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13); + box-shadow: 0 1px 3px rgba(0,0,0,0.13); +} + +.login form .forgetmenot { + font-weight: normal; + 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: #777; + 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=20131202); + background-image: none, url(../images/wordpress-logo.svg?ver=20131107); + -webkit-background-size: 84px; + background-size: 84px; + background-position: center top; + background-repeat: no-repeat; + color: #999; + height: 84px; + font-size: 20px; + font-weight: normal; + line-height: 1.3em; + margin: 0 auto 25px; + padding: 0; + text-decoration: none; + width: 84px; + text-indent: -9999px; + outline: none; + overflow: hidden; + display: block; +} + +#login { + width: 320px; + padding: 8% 0 0; + margin: auto; +} + +#login_error, +.login .message { + margin-right: 0; + padding: 12px; +} + +.login #nav, +.login #backtoblog { + font-size: 13px; + padding: 0 24px 0; +} + +.login #nav { + margin: 24px 0 0 0; +} + +#backtoblog { + margin: 16px 0 0 0; +} + +.login #nav a, +.login #backtoblog a { + text-decoration: none; + color: #999; +} + +.login #nav a:hover, +.login #backtoblog a:hover, +.login h1 a:hover { + color: #00a0d2; +} + +.login #nav a:focus, +.login #backtoblog a:focus, +.login h1 a:focus { + color: #124964; +} + +.login form .input, +.login input[type="text"] { + font-size: 24px; + width: 100%; + padding: 3px; + margin: 2px 0 16px 6px; +} + +.login form .input, +.login input[type="text"], +.login form input[type="checkbox"] { + background: #fbfbfb; +} + +.ie7 .login form .input, +.ie8 .login form .input { + font-family: sans-serif; +} + +.login-action-rp input[type="text"] { + -webkit-box-shadow: none; + 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%; +} + +.mobile #login { + padding: 20px 0; +} + +.mobile #login form, +.mobile #login .message, +.mobile #login_error { + margin-right: 0; +} + +.mobile #login #nav, +.mobile #login #backtoblog { + margin-right: 8px; +} + +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; +} + +@-ms-viewport { + width: device-width; +} + +@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; + } +} diff --git a/wp-admin/css/login-rtl.min.css b/wp-admin/css/login-rtl.min.css new file mode 100644 index 0000000000..f457080709 --- /dev/null +++ b/wp-admin/css/login-rtl.min.css @@ -0,0 +1 @@ +.meta-box-sortables select,p.submit{max-width:100%}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=text],input[type=search],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=text]:focus,input[type=search]:focus,input[type=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=password]:focus,input[type=checkbox]: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,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=url],input[type=email]{direction:ltr}input[type=radio],input[type=checkbox]{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;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;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=radio],.wp-admin p input[type=checkbox],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]{-webkit-border-radius:50%;border-radius:50%;margin-left:4px;line-height:10px}input[type=radio]:checked:before,input[type=checkbox]:checked:before{float:right;display:inline-block;vertical-align:middle;width:16px;font:400 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;-webkit-border-radius:50px;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=radio],input[type=checkbox]{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;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4}.wp-admin input[type=file]{padding:3px 0}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}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin-right:-25px;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);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);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;-webkit-box-shadow:none;box-shadow:none}input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before,input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]: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}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:right;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%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}#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}.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}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,fieldset label,label{vertical-align:middle}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:'\f173';display:inline-block;font:400 20px/1 dashicons;speak:none;right:-1px;padding:0 0 0 5px;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#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,.color-option{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#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}.indicator-hint{padding-top:8px}.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}input[type=text].ui-autocomplete-loading,input[type=email].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;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);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}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{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 th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom: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;cursor:pointer}.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}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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}.login form,.login h1 a{font-weight:400;overflow:hidden}.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:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;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;-webkit-transform:skew(-20deg) rotate(-6deg);-ms-transform:skew(-20deg) rotate(-6deg);transform:skew(-20deg) rotate(-6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(-20deg) rotate(-9deg);-ms-transform:skew(-20deg) rotate(-9deg);transform:skew(-20deg) rotate(-9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 9px 8px 12px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:'\f157';position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#777}#local-time,#utc-time{padding-right:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.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}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_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 .button:not(:last-child),.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=search],input[type=password],input[type=email],input[type=number]{-webkit-appearance:none;padding:6px 10px}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:400 30px/1 Dashicons;margin:-3px -5px}input[type=radio],input[type=checkbox]{height:25px;width:25px}.wp-admin p input[type=radio],.wp-admin p input[type=checkbox]{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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.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=text],.form-table td input[type=password],.form-table td input[type=email],.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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=text].small-text,input[type=search].small-text,input[type=password].small-text,input[type=number].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-left:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow: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}}body,html{background:#f1f1f1}.locale-he-il em,.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}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@media only screen and (max-height:480px){.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%}}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:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.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 .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 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 .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{min-width:0;color:#444;font-family:"Open Sans",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;outline:0}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);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 .message{border-right:4px solid #00a0d2;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error,.login .message{-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error{border-right:4px solid #dd3d36;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login form{margin-top:20px;margin-right:0;padding:26px 24px 46px;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);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:#777;font-size:14px}.login #backtoblog a,.login #nav a,.login h1 a{text-decoration:none;color:#999}.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=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;height:84px;font-size:20px;line-height:1.3em;margin:0 auto 25px;padding:0;width:84px;text-indent:-9999px;outline:0;display:block}#login{width:320px;padding:8% 0 0;margin:auto}#login_error,.login .message{margin-right:0;padding:12px}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0 0}.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 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]{-webkit-box-shadow:none;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%}.mobile #login{padding:20px 0}.mobile #login .message,.mobile #login form,.mobile #login_error{margin-right:0}.mobile #login #backtoblog,.mobile #login #nav{margin-right:8px}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}@-ms-viewport{width:device-width}@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:400 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 new file mode 100644 index 0000000000..6c4d7024fb --- /dev/null +++ b/wp-admin/css/login.css @@ -0,0 +1,282 @@ +@import url(forms.css); +@import url(l10n.css); + +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +html { + background: #f1f1f1; +} + +body { + background: #f1f1f1; + min-width: 0; + color: #444; + font-family: "Open Sans", sans-serif; + font-size: 13px; + line-height: 1.4em; +} + +a { + color: #0073aa; + -webkit-transition-property: border, background, color; + transition-property: border, background, color; + -webkit-transition-duration: .05s; + transition-duration: .05s; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; +} + +a { + outline: 0; +} + +a:hover, +a:active { + color: #00a0d2; +} + +a:focus { + color: #124964; + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + 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 .message { + border-left: 4px solid #00a0d2; + padding: 1px 12px; + background-color: #fff; + -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); +} + +.login #login_error { + border-left: 4px solid #dd3d36; + background: #fff; + -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); +} + +#loginform p.submit, +.login-action-lostpassword p.submit { + border: none; + margin: -10px 0 20px; /* May want to revisit this */ +} + +.login * { + margin: 0; + padding: 0; +} + +.login form { + margin-top: 20px; + margin-left: 0; + padding: 26px 24px 46px; + font-weight: normal; + overflow: hidden; + background: #fff; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13); + box-shadow: 0 1px 3px rgba(0,0,0,0.13); +} + +.login form .forgetmenot { + font-weight: normal; + 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: #777; + 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=20131202); + background-image: none, url(../images/wordpress-logo.svg?ver=20131107); + -webkit-background-size: 84px; + background-size: 84px; + background-position: center top; + background-repeat: no-repeat; + color: #999; + height: 84px; + font-size: 20px; + font-weight: normal; + line-height: 1.3em; + margin: 0 auto 25px; + padding: 0; + text-decoration: none; + width: 84px; + text-indent: -9999px; + outline: none; + overflow: hidden; + display: block; +} + +#login { + width: 320px; + padding: 8% 0 0; + margin: auto; +} + +#login_error, +.login .message { + margin-left: 0; + padding: 12px; +} + +.login #nav, +.login #backtoblog { + font-size: 13px; + padding: 0 24px 0; +} + +.login #nav { + margin: 24px 0 0 0; +} + +#backtoblog { + margin: 16px 0 0 0; +} + +.login #nav a, +.login #backtoblog a { + text-decoration: none; + color: #999; +} + +.login #nav a:hover, +.login #backtoblog a:hover, +.login h1 a:hover { + color: #00a0d2; +} + +.login #nav a:focus, +.login #backtoblog a:focus, +.login h1 a:focus { + color: #124964; +} + +.login form .input, +.login input[type="text"] { + font-size: 24px; + width: 100%; + padding: 3px; + margin: 2px 6px 16px 0; +} + +.login form .input, +.login input[type="text"], +.login form input[type="checkbox"] { + background: #fbfbfb; +} + +.ie7 .login form .input, +.ie8 .login form .input { + font-family: sans-serif; +} + +.login-action-rp input[type="text"] { + -webkit-box-shadow: none; + 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%; +} + +.mobile #login { + padding: 20px 0; +} + +.mobile #login form, +.mobile #login .message, +.mobile #login_error { + margin-left: 0; +} + +.mobile #login #nav, +.mobile #login #backtoblog { + margin-left: 8px; +} + +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; +} + +@-ms-viewport { + width: device-width; +} + +@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; + } +} diff --git a/wp-admin/css/login.min.css b/wp-admin/css/login.min.css new file mode 100644 index 0000000000..6289d33546 --- /dev/null +++ b/wp-admin/css/login.min.css @@ -0,0 +1 @@ +.meta-box-sortables select,p.submit{max-width:100%}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=text],input[type=search],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=text]:focus,input[type=search]:focus,input[type=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=password]:focus,input[type=checkbox]: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,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=url],input[type=email]{direction:ltr}input[type=radio],input[type=checkbox]{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;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;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=radio],.wp-admin p input[type=checkbox],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]{-webkit-border-radius:50%;border-radius:50%;margin-right:4px;line-height:10px}input[type=radio]:checked:before,input[type=checkbox]:checked:before{float:left;display:inline-block;vertical-align:middle;width:16px;font:400 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;-webkit-border-radius:50px;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=radio],input[type=checkbox]{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;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4}.wp-admin input[type=file]{padding:3px 0}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}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin-left:-25px;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);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);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;-webkit-box-shadow:none;box-shadow:none}input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before,input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]: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}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:left;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%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}#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}.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}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,fieldset label,label{vertical-align:middle}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:'\f173';display:inline-block;font:400 20px/1 dashicons;speak:none;left:-1px;padding:0 5px 0 0;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#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,.color-option{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#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}.indicator-hint{padding-top:8px}.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}input[type=text].ui-autocomplete-loading,input[type=email].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;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);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}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{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 th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom: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;cursor:pointer}.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}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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}.login form,.login h1 a{font-weight:400;overflow:hidden}.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:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;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;-webkit-transform:skew(20deg) rotate(6deg);-ms-transform:skew(20deg) rotate(6deg);transform:skew(20deg) rotate(6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(20deg) rotate(9deg);-ms-transform:skew(20deg) rotate(9deg);transform:skew(20deg) rotate(9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 12px 8px 9px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:'\f157';position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#777}#local-time,#utc-time{padding-left:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.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}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_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 .button:not(:last-child),.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=search],input[type=password],input[type=email],input[type=number]{-webkit-appearance:none;padding:6px 10px}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:400 30px/1 Dashicons;margin:-3px -5px}input[type=radio],input[type=checkbox]{height:25px;width:25px}.wp-admin p input[type=radio],.wp-admin p input[type=checkbox]{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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.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=text],.form-table td input[type=password],.form-table td input[type=email],.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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=text].small-text,input[type=search].small-text,input[type=password].small-text,input[type=number].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-right:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow: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}}body,html{background:#f1f1f1}.locale-he-il em,.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}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@media only screen and (max-height:480px){.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%}}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:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.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 .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 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 .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{min-width:0;color:#444;font-family:"Open Sans",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;outline:0}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);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 .message{border-left:4px solid #00a0d2;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error,.login .message{-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error{border-left:4px solid #dd3d36;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login form{margin-top:20px;margin-left:0;padding:26px 24px 46px;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);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:#777;font-size:14px}.login #backtoblog a,.login #nav a,.login h1 a{text-decoration:none;color:#999}.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=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;height:84px;font-size:20px;line-height:1.3em;margin:0 auto 25px;padding:0;width:84px;text-indent:-9999px;outline:0;display:block}#login{width:320px;padding:8% 0 0;margin:auto}#login_error,.login .message{margin-left:0;padding:12px}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0 0}.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 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]{-webkit-box-shadow:none;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%}.mobile #login{padding:20px 0}.mobile #login .message,.mobile #login form,.mobile #login_error{margin-left:0}.mobile #login #backtoblog,.mobile #login #nav{margin-left:8px}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}@-ms-viewport{width:device-width}@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:400 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 new file mode 100644 index 0000000000..20c69fc904 --- /dev/null +++ b/wp-admin/css/media-rtl.css @@ -0,0 +1,1191 @@ +/*------------------------------------------------------------------------------ + 14.0 - Media Screen +------------------------------------------------------------------------------*/ + +.media-item .describe { + border-collapse: collapse; + width: 100%; + border-top: 1px solid #dfdfdf; + 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: 0.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; +} + +.media-item .edit-attachment, +.describe-toggle-on, +.describe-toggle-off { + 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 { + -webkit-box-shadow: 0 1px 0 #dfdfdf; + box-shadow: 0 1px 0 #dfdfdf; +} + +#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 .startopen, +.media-item .startclosed { + 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; + -webkit-border-radius: 22px; + border-radius: 22px; + background: #ddd; + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); + box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); +} + +.media-item .bar { + z-index: 9; + width: 0; + height: 100%; + margin-top: -22px; + -webkit-border-radius: 22px; + border-radius: 22px; + background-color: #0073aa; + -webkit-box-shadow: inset 0 0 2px rgba(0,0,0,0.3); + box-shadow: inset 0 0 2px rgba(0,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,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 a.dismiss { + display: block; + float: left; + margin: 0 15px 0 10px; +} + +/*------------------------------------------------------------------------------ + 14.1 - Media Library +------------------------------------------------------------------------------*/ + +.find-box { + background-color: #fff; + -webkit-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; + position: fixed; + top: 30px; + bottom: 30px; + right: 50%; + z-index: 100105; +} + +.find-box-head { + background: #fcfcfc; + border-bottom: 1px solid #dfdfdf; + 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%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.find-box-search { + padding-bottom: 16px; +} + +.find-box-search .spinner { + float: none; + right: 105px; + position: absolute; +} + +.find-box-search, +#find-posts-response { + position: relative; /* RTL fix, #WP28010 */ +} + +#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; + position: absolute; + top: 0; + left: 0; + cursor: pointer; + text-align: center; + color: #666; +} + +#find-posts-close:hover { + color: #00a0d2; +} + +#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 #dfdfdf; + 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: 0.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: -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; + -webkit-border-radius: 6px; + border-radius: 6px; +} + +.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-area:-moz-drag-over { + border-color: #83b4d8; +} +border color while dragging a file over the uploader drop area */ +.drag-drop.drag-over #drag-drop-area { + border-color: #83b4d8; +} + +#plupload-upload-ui { + position: relative; +} + +/** + * Media Library grid view + */ + +.media-frame.mode-grid, +.media-frame.mode-grid .media-frame-content, +.media-frame.mode-grid .attachments-browser .attachments, +.media-frame.mode-grid .uploader-inline-content { + position: static; +} + +/* Regions we don't use at all */ +.media-frame.mode-grid .media-frame-title, +.media-frame.mode-grid .media-frame-router, +.media-frame.mode-grid .media-frame-menu { + 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-bottom: 16px; + padding: 0 16px; + border-right: 4px solid #dd3d36; + -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px 0 rgba(0, 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; + -webkit-box-shadow: none; + box-shadow: none; + 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: #bbb; +} + +.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 { + display: none; +} + +.media-frame.mode-grid .uploader-inline { + position: relative; + top: auto; + left: auto; + right: auto; + bottom: auto; + padding-top: 0; + margin-top: 0; + border: 4px dashed #b4b9be; +} + +.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 */ +} + +.media-frame.mode-grid .attachment:focus, +.media-frame.mode-grid .selected.attachment:focus, +.media-frame.mode-grid .attachment.details:focus { + -webkit-box-shadow: + inset 0 0 2px 3px #f1f1f1, + inset 0 0 0 7px #5b9dd9; + box-shadow: + inset 0 0 2px 3px #f1f1f1, + inset 0 0 0 7px #5b9dd9; + outline: none; +} + +.media-frame.mode-grid .selected.attachment { + -webkit-box-shadow: + inset 0 0 0 5px #f1f1f1, + inset 0 0 0 7px #ccc; + box-shadow: + inset 0 0 0 5px #f1f1f1, + inset 0 0 0 7px #ccc; +} + +.media-frame.mode-grid .attachment.details { + -webkit-box-shadow: + inset 0 0 0 3px #f1f1f1, + inset 0 0 0 7px #1e8cbe; + box-shadow: + inset 0 0 0 3px #f1f1f1, + inset 0 0 0 7px #1e8cbe; +} + +.media-frame.mode-grid.mode-select .attachment .thumbnail { + opacity: 0.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: #999; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 100px 0 0; + text-align: center; +} + +/** + * Attachment details modal + */ + +.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; +} + +.upload-php .media-modal-close, +.edit-attachment-frame .edit-media-header .left, +.edit-attachment-frame .edit-media-header .right { + cursor: pointer; + color: #777; + background-color: transparent; + height: 50px; + width: 50px; + padding: 0; + position: absolute; + text-align: center; + border: 0; + border-right: 1px solid #ddd; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + 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; /* leave space for prev/next/close */ +} + +.edit-attachment-frame .edit-media-header .right:before, +.edit-attachment-frame .edit-media-header .left:before { + font: normal 20px/50px 'dashicons' !important; + display: inline; + font-weight: 300; +} + +.upload-php .media-modal-close:hover, +.upload-php .media-modal-close:focus, +.edit-attachment-frame .edit-media-header .left:hover, +.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: #ddd; + border-color: #ccc; + color: #000; + outline: none; + -webkit-box-shadow: none; + 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 .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, +.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; + -webkit-box-shadow: inset 0px 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 { + float: right; + width: 65%; + height: 100%; +} + +.edit-attachment-frame .attachment-media-view .thumbnail { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 16px; + height: 100%; +} + +.edit-attachment-frame .attachment-media-view .details-image { + display: block; + margin-bottom: 16px; + max-width: 100%; + max-height: 90%; + max-height: -webkit-calc( 100% - 42px ); + max-height: calc( 100% - 42px ); /* leave space for actions underneath */ +} + +.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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-bottom: 0; + padding: 12px 16px 0; + width: 35%; + height: 100%; + -webkit-box-shadow: inset 0px 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 #ddd; + background: #f3f3f3; +} + +.edit-attachment-frame .attachment-info .details, +.edit-attachment-frame .attachment-info .settings { + position: relative; /* RTL fix, #WP29352 */ + overflow: hidden; + float: none; + margin-bottom: 15px; + padding-bottom: 15px; + border-bottom: 1px solid #ddd; +} + +.edit-attachment-frame .attachment-info .filename { + font-weight: normal; + 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; +} + + +/*------------------------------------------------------------------------------ + 14.2 - Image Editor +------------------------------------------------------------------------------*/ + +.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; +} + +.imgedit-settings p { + margin: 8px 0 0; +} + +.describe .imgedit-wrap .imgedit-settings { + padding: 0 5px; +} + +.wp_attachment_holder div.updated { + margin-top: 0; +} + +.wp_attachment_holder .imgedit-wrap > div { + height: auto; + overflow: hidden; +} + +.wp_attachment_holder .imgedit-wrap .imgedit-panel-content { + padding-left: 16px; + width: auto; + overflow: hidden; +} + +.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; + background: #fff url(../images/spinner.gif) no-repeat center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + opacity: 0.7; + filter: alpha(opacity=70); + width: 100%; + height: 500px; + display: none; +} + +.no-float { + float: none; +} + +.media-disabled, +.imgedit-settings .disabled { + color: grey; +} + +.wp_attachment_image, +.A1B1 { + overflow: hidden; +} + +.wp_attachment_image .button, +.A1B1 .button { + float: right; +} + +.no-js .wp_attachment_image .button { + display: none; +} + +.wp_attachment_image .spinner, +.A1B1 .spinner { + float: right; +} + +.imgedit-menu { + margin: 0 0 12px; + min-width: 300px; +} + +.imgedit-menu div { + float: right; + width: 32px; + border: 1px solid #d5d5d5; + background: #f1f1f1; + margin: 0 0 0 8px; + height: 32px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-align: center; + line-height: 28px; + color: #777; + cursor: pointer; +} + +.imgedit-menu div:before { + font: normal 20px/1 'dashicons'; + speak: none; + vertical-align: middle; +} + +.imgedit-menu div:hover { + border-color: #c1c1c1; + background-color: #eaeaea; + color: #32373c; +} + +.imgedit-menu div.disabled { + border-color: #ccc; + background-color: #ddd; + color: #777; + filter: alpha(opacity=50); + opacity: 0.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 { + 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-applyto img { + margin: 0 0 0 8px; +} + +#poststuff .imgedit-group-top h3 { + padding: 0; +} + +.imgedit-group-top h3 a { + text-decoration: none; +} + +.imgedit-applyto .imgedit-label { + padding: 2px 0 0; + display: block; +} + +.imgedit-help { + display: none; + font-style: italic; +} + +a.imgedit-help-toggle { + text-decoration: none; +} + +.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; +} + +span.imgedit-scale-warn { + color: red; + font-size: 20px; + font-style: normal; + visibility: hidden; + vertical-align: middle; +} + +.imgedit-group { + margin-bottom: 8px; + padding: 10px; +} + +audio, video { + display: inline-block; + max-width: 100%; +} + +.mejs-container { + width: 100%; + max-width: 100%; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + .imgedit-wait { + 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; + } +} + +/** + * Media queries for media grid. + */ + +@media only screen and (max-width: 1120px) { + /* override for media-views.css */ + #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; + } + + .upload-php .media-modal-close, + .edit-attachment-frame .edit-media-header .left, + .edit-attachment-frame .edit-media-header .right { + width: 40px; + 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; + } + + .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%; + } +} diff --git a/wp-admin/css/media.css b/wp-admin/css/media.css new file mode 100644 index 0000000000..27916542a6 --- /dev/null +++ b/wp-admin/css/media.css @@ -0,0 +1,1191 @@ +/*------------------------------------------------------------------------------ + 14.0 - Media Screen +------------------------------------------------------------------------------*/ + +.media-item .describe { + border-collapse: collapse; + width: 100%; + border-top: 1px solid #dfdfdf; + 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: 0.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; +} + +.media-item .edit-attachment, +.describe-toggle-on, +.describe-toggle-off { + 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 { + -webkit-box-shadow: 0 1px 0 #dfdfdf; + box-shadow: 0 1px 0 #dfdfdf; +} + +#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 .startopen, +.media-item .startclosed { + 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; + -webkit-border-radius: 22px; + border-radius: 22px; + background: #ddd; + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); + box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); +} + +.media-item .bar { + z-index: 9; + width: 0; + height: 100%; + margin-top: -22px; + -webkit-border-radius: 22px; + border-radius: 22px; + background-color: #0073aa; + -webkit-box-shadow: inset 0 0 2px rgba(0,0,0,0.3); + box-shadow: inset 0 0 2px rgba(0,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,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 a.dismiss { + display: block; + float: right; + margin: 0 10px 0 15px; +} + +/*------------------------------------------------------------------------------ + 14.1 - Media Library +------------------------------------------------------------------------------*/ + +.find-box { + background-color: #fff; + -webkit-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; + position: fixed; + top: 30px; + bottom: 30px; + left: 50%; + z-index: 100105; +} + +.find-box-head { + background: #fcfcfc; + border-bottom: 1px solid #dfdfdf; + 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%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.find-box-search { + padding-bottom: 16px; +} + +.find-box-search .spinner { + float: none; + left: 105px; + position: absolute; +} + +.find-box-search, +#find-posts-response { + position: relative; /* RTL fix, #WP28010 */ +} + +#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; + position: absolute; + top: 0; + right: 0; + cursor: pointer; + text-align: center; + color: #666; +} + +#find-posts-close:hover { + color: #00a0d2; +} + +#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 #dfdfdf; + 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: 0.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: -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; + -webkit-border-radius: 6px; + border-radius: 6px; +} + +.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-area:-moz-drag-over { + border-color: #83b4d8; +} +border color while dragging a file over the uploader drop area */ +.drag-drop.drag-over #drag-drop-area { + border-color: #83b4d8; +} + +#plupload-upload-ui { + position: relative; +} + +/** + * Media Library grid view + */ + +.media-frame.mode-grid, +.media-frame.mode-grid .media-frame-content, +.media-frame.mode-grid .attachments-browser .attachments, +.media-frame.mode-grid .uploader-inline-content { + position: static; +} + +/* Regions we don't use at all */ +.media-frame.mode-grid .media-frame-title, +.media-frame.mode-grid .media-frame-router, +.media-frame.mode-grid .media-frame-menu { + 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-bottom: 16px; + padding: 0 16px; + border-left: 4px solid #dd3d36; + -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px 0 rgba(0, 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; + -webkit-box-shadow: none; + box-shadow: none; + 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: #bbb; +} + +.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 { + display: none; +} + +.media-frame.mode-grid .uploader-inline { + position: relative; + top: auto; + right: auto; + left: auto; + bottom: auto; + padding-top: 0; + margin-top: 0; + border: 4px dashed #b4b9be; +} + +.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 */ +} + +.media-frame.mode-grid .attachment:focus, +.media-frame.mode-grid .selected.attachment:focus, +.media-frame.mode-grid .attachment.details:focus { + -webkit-box-shadow: + inset 0 0 2px 3px #f1f1f1, + inset 0 0 0 7px #5b9dd9; + box-shadow: + inset 0 0 2px 3px #f1f1f1, + inset 0 0 0 7px #5b9dd9; + outline: none; +} + +.media-frame.mode-grid .selected.attachment { + -webkit-box-shadow: + inset 0 0 0 5px #f1f1f1, + inset 0 0 0 7px #ccc; + box-shadow: + inset 0 0 0 5px #f1f1f1, + inset 0 0 0 7px #ccc; +} + +.media-frame.mode-grid .attachment.details { + -webkit-box-shadow: + inset 0 0 0 3px #f1f1f1, + inset 0 0 0 7px #1e8cbe; + box-shadow: + inset 0 0 0 3px #f1f1f1, + inset 0 0 0 7px #1e8cbe; +} + +.media-frame.mode-grid.mode-select .attachment .thumbnail { + opacity: 0.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: #999; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 100px 0 0; + text-align: center; +} + +/** + * Attachment details modal + */ + +.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; +} + +.upload-php .media-modal-close, +.edit-attachment-frame .edit-media-header .left, +.edit-attachment-frame .edit-media-header .right { + cursor: pointer; + color: #777; + background-color: transparent; + height: 50px; + width: 50px; + padding: 0; + position: absolute; + text-align: center; + border: 0; + border-left: 1px solid #ddd; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + 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; /* leave space for prev/next/close */ +} + +.edit-attachment-frame .edit-media-header .right:before, +.edit-attachment-frame .edit-media-header .left:before { + font: normal 20px/50px 'dashicons' !important; + display: inline; + font-weight: 300; +} + +.upload-php .media-modal-close:hover, +.upload-php .media-modal-close:focus, +.edit-attachment-frame .edit-media-header .left:hover, +.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: #ddd; + border-color: #ccc; + color: #000; + outline: none; + -webkit-box-shadow: none; + 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 .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, +.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; + -webkit-box-shadow: inset 0px 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 { + float: left; + width: 65%; + height: 100%; +} + +.edit-attachment-frame .attachment-media-view .thumbnail { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 16px; + height: 100%; +} + +.edit-attachment-frame .attachment-media-view .details-image { + display: block; + margin-bottom: 16px; + max-width: 100%; + max-height: 90%; + max-height: -webkit-calc( 100% - 42px ); + max-height: calc( 100% - 42px ); /* leave space for actions underneath */ +} + +.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; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-bottom: 0; + padding: 12px 16px 0; + width: 35%; + height: 100%; + -webkit-box-shadow: inset 0px 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 #ddd; + background: #f3f3f3; +} + +.edit-attachment-frame .attachment-info .details, +.edit-attachment-frame .attachment-info .settings { + position: relative; /* RTL fix, #WP29352 */ + overflow: hidden; + float: none; + margin-bottom: 15px; + padding-bottom: 15px; + border-bottom: 1px solid #ddd; +} + +.edit-attachment-frame .attachment-info .filename { + font-weight: normal; + 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; +} + + +/*------------------------------------------------------------------------------ + 14.2 - Image Editor +------------------------------------------------------------------------------*/ + +.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; +} + +.imgedit-settings p { + margin: 8px 0 0; +} + +.describe .imgedit-wrap .imgedit-settings { + padding: 0 5px; +} + +.wp_attachment_holder div.updated { + margin-top: 0; +} + +.wp_attachment_holder .imgedit-wrap > div { + height: auto; + overflow: hidden; +} + +.wp_attachment_holder .imgedit-wrap .imgedit-panel-content { + padding-right: 16px; + width: auto; + overflow: hidden; +} + +.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; + background: #fff url(../images/spinner.gif) no-repeat center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + opacity: 0.7; + filter: alpha(opacity=70); + width: 100%; + height: 500px; + display: none; +} + +.no-float { + float: none; +} + +.media-disabled, +.imgedit-settings .disabled { + color: grey; +} + +.wp_attachment_image, +.A1B1 { + overflow: hidden; +} + +.wp_attachment_image .button, +.A1B1 .button { + float: left; +} + +.no-js .wp_attachment_image .button { + display: none; +} + +.wp_attachment_image .spinner, +.A1B1 .spinner { + float: left; +} + +.imgedit-menu { + margin: 0 0 12px; + min-width: 300px; +} + +.imgedit-menu div { + float: left; + width: 32px; + border: 1px solid #d5d5d5; + background: #f1f1f1; + margin: 0 8px 0 0; + height: 32px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-align: center; + line-height: 28px; + color: #777; + cursor: pointer; +} + +.imgedit-menu div:before { + font: normal 20px/1 'dashicons'; + speak: none; + vertical-align: middle; +} + +.imgedit-menu div:hover { + border-color: #c1c1c1; + background-color: #eaeaea; + color: #32373c; +} + +.imgedit-menu div.disabled { + border-color: #ccc; + background-color: #ddd; + color: #777; + filter: alpha(opacity=50); + opacity: 0.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 { + 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-applyto img { + margin: 0 8px 0 0; +} + +#poststuff .imgedit-group-top h3 { + padding: 0; +} + +.imgedit-group-top h3 a { + text-decoration: none; +} + +.imgedit-applyto .imgedit-label { + padding: 2px 0 0; + display: block; +} + +.imgedit-help { + display: none; + font-style: italic; +} + +a.imgedit-help-toggle { + text-decoration: none; +} + +.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; +} + +span.imgedit-scale-warn { + color: red; + font-size: 20px; + font-style: normal; + visibility: hidden; + vertical-align: middle; +} + +.imgedit-group { + margin-bottom: 8px; + padding: 10px; +} + +audio, video { + display: inline-block; + max-width: 100%; +} + +.mejs-container { + width: 100%; + max-width: 100%; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + .imgedit-wait { + 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; + } +} + +/** + * Media queries for media grid. + */ + +@media only screen and (max-width: 1120px) { + /* override for media-views.css */ + #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; + } + + .upload-php .media-modal-close, + .edit-attachment-frame .edit-media-header .left, + .edit-attachment-frame .edit-media-header .right { + width: 40px; + 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; + } + + .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%; + } +} diff --git a/wp-admin/css/nav-menus-rtl.css b/wp-admin/css/nav-menus-rtl.css new file mode 100644 index 0000000000..a9b0133bf6 --- /dev/null +++ b/wp-admin/css/nav-menus-rtl.css @@ -0,0 +1,870 @@ +/* nav-menu */ + +/* @todo: determine if this is truly for nav menus only */ +.no-js #message { + display: block; +} + +ul.add-menu-item-tabs li { + padding: 3px 8px 3px 5px; +} + +.accordion-section ul.category-tabs, +.accordion-section ul.add-menu-item-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; +} + +#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 .postbox, +.metabox-holder-disabled .accordion-section-content, +.metabox-holder-disabled .accordion-section-title { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.metabox-holder-disabled .button-controls .select-all { + display: none; +} + +#wpbody { + position: relative; +} + +.blank-slate .menu-name { + height: 2em; +} + +.blank-slate .menu-settings { + border: none; + margin-top: 0; + padding-top: 0; + overflow: hidden; +} + +.is-submenu { + color: #999; + font-style: italic; + font-weight: normal; + margin-right: 4px; +} + +.manage-menus { + margin-top: 23px; + padding: 10px; + overflow: hidden; + background: #fbfbfb; +} + +.manage-menus select { + float: right; + margin-left: 6px; +} + +.manage-menus .selected-menu { + float: right; + margin: 5px 0 0 6px; +} + +.manage-menus .submit-btn { + float: right; + margin-top: 1px; +} + +.menu-edit #post-body-content h3 { + margin: 1em 0 10px; +} + +.menu-settings { + border-top: 1px solid #eee; + margin-top: 2em; +} + +.menu-settings dl { + margin: 0 0 10px; + overflow: hidden; + padding-right: 18%; +} + +.menu-settings dd { + float: right; + margin: 0; + width: 100%; +} + +.menu-settings dt { + float: right; + clear: both; + width: 21.951%; + padding: 3px 0 0; + margin-right: -21.951%; +} + +.menu-settings label { + vertical-align: baseline; +} + +.menu-edit .checkbox-input { + margin-top: 4px; +} + +.theme-location-set { + color: #999; + font-size: 11px; +} + +/* Menu Container */ +#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 #dfdfdf; + background: #fff; +} + +#nav-menu-header, +#nav-menu-footer { + padding: 0 10px; +} + +#nav-menu-header { + border-bottom: 1px solid #dfdfdf; + margin-bottom: 0; +} + +#nav-menu-header .menu-name-label { + margin-top: 4px; +} + +.nav-menus-php #post-body div.updated, +.nav-menus-php #post-body div.error { + margin: 0; +} + +.nav-menus-php #post-body-content { + position: relative; + float: none; +} + +#menu-management .menu-add-new abbr { + font-weight: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 tr + tr td { + padding-top: 0; +} + +.widefat .menu-locations td { + vertical-align: middle; +} + +.menu-location-title label { + font-weight: bold; +} + +.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-edit-menu-link, +.locations-add-menu-link { + margin: 0 3px; +} + +.locations-edit-menu-link { + padding-left: 3px; + border-left: 1px solid #ccc; +} + +#wpbody .open-label { + display: block; + float:right; +} + +#wpbody .open-label span { + padding-left: 10px; +} + +.js .input-with-default-title { + color: #a0a5aa; + font-style: italic; +} + +#menu-management .inside { + padding: 0 10px; +} + +/* Add Menu Item Boxes */ +.postbox .howto input, +.accordion-container .howto input { + width: 180px; + float: left; +} + +.accordion-container .outer-border { + margin: 0; +} + +.customlinkdiv .howto input { + width: 180px; +} + +.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; +} + +/* Button Primary Actions */ +#menu-container .submit { + margin: 0 0 10px; + padding: 0; +} + +.nav-menus-php .add-new-menu-action { + float: right; + margin: 6px 6px 0 0; + line-height: 15px; +} + +.nav-menus-php .meta-sep, +.nav-menus-php .submitdelete, +.nav-menus-php .submitcancel { + display: block; + float: right; + margin: 6px 0; + line-height: 15px; +} + +.meta-sep { + padding: 0 2px; +} + +/* @todo: is this actually used? */ +#cancel-save { + text-decoration: underline; + font-size: 12px; + margin-right: 20px; + margin-top: 5px; +} + +.button.right, .button-secondary.right, .button-primary.right { + float: left; +} + +/* Button Secondary Actions */ +.list-controls { + float: right; + margin-top: 5px; +} + +.add-to-menu { + float: left; +} + +.button-controls { + clear:both; + margin: 10px 0; +} + +.show-all, +.hide-all { + cursor: pointer; +} + +.hide-all { + display: none; +} + +/* Create Menu */ +#menu-name { + width: 270px; +} + +#manage-menu .inside { + padding: 0px 0px; +} + +/* Custom Links */ +#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; +} + +.nav-menus-php .howto span { + margin-top: 6px; + display: block; + float: right; +} + +/* Menu item types */ +.quick-search { + width: 190px; +} + +.quick-search-wrap .spinner { + float: none; + margin: 0 5px; +} + +.nav-menus-php .list-wrap { + display: none; + clear: both; + margin-bottom: 10px; +} + +.nav-menus-php .postbox p.submit { + margin-bottom: 0; +} + +/* Listings */ +.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; +} + +/* Nav Menu */ +#menu-container .inside { + padding-bottom: 10px; +} + +.menu { + padding-top:1em; +} + +#menu-to-edit { + margin: 0; + padding: 0.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 #dfdfdf; + 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: #999; +} + +/* Sortables */ +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; +} + +/* Hide the transport list when it's empty */ +.menu-item .menu-item-transport:empty { + display: none; +} + +/* WARNING: The factor of 30px is hardcoded into the nav-menus JavaScript. */ +.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; } +.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: 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; } +.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; } + +/* Menu item controls */ +.item-type { + display: inline-block; + padding: 12px 10px; + 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; + margin-left: 0 !important; + text-indent: 100%; + outline: none; + overflow: hidden; + white-space: nowrap; +} + +/* Menu editing */ +.menu-instructions-inactive { + display: none; +} + +.menu-item-settings { + display: block; + 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 #e5e5e5; + border-top: none; + -webkit-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 a { + 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 auto; + text-align: center; +} + +.link-to-original { + display: block; + margin: 0 0 10px; + padding: 3px 5px 5px; + border: 1px solid #dfdfdf; + color: #777; + 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; +} + +#cancel-save { + cursor: pointer; +} + +/* Major/minor publishing actions (classes) */ +.nav-menus-php .major-publishing-actions { + clear: both; + padding: 3px 0 6px; +} + +.nav-menus-php .major-publishing-actions .publishing-action { + text-align: left; + float: left; + line-height: 23px; + margin: 4px 0 1px; +} + +.nav-menus-php .blank-slate .menu-settings { + display: none; +} + +.nav-menus-php .delete-action { + float: right; + margin-top: 2px; +} + +.nav-menus-php .submitbox .submitcancel { + border-bottom: 1px solid #0073aa; + padding: 1px 2px; + color: #0073aa; + text-decoration: none; +} + +.nav-menus-php .submitbox .submitcancel:hover { + background: #0073aa; + color: #fff; +} + +.nav-menus-php .major-publishing-actions .form-invalid { + padding-right: 4px; + margin-right: -4px; +} + +/* Clearfix */ +#menu-item-name-wrap:after, +#menu-item-url-wrap:after, +#menu-name-label:after, +#menu-settings-column .inside:after, +#nav-menus-frame:after, +.nav-menus-php #post-body-content:after, +.nav-menus-php .button-controls:after, +.nav-menus-php .major-publishing-actions:after, +.nav-menus-php .menu-item-settings:after { + clear: both; + content: "."; + display: block; + height: 0; + visibility: hidden; +} + +#nav-menus-frame, +.button-controls, +#menu-item-url-wrap, +#menu-item-name-wrap { + display: block; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@media screen and ( max-width: 782px ) { + body.nav-menus-php { + 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 .item-controls .item-type { + margin-top: 2px; + } + + .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-label #menu-name { + margin-top: 4px; + } + + .nav-menus-php .major-publishing-actions .publishing-action { + margin-top: 6px; + } + + .nav-menus-php .delete-action { + font-size: 14px; + line-height: 50px; + margin-top: 12px; + } + + .menu-item-bar .menu-item-handle, + .menu-item-settings, + .description-wide { + 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 dl { + padding-right: 0; + } + + .menu-settings dd { + float: none; + width: 100%; + margin-bottom: 15px; + } + + .menu-settings dt { + float: none; + width: auto; + margin-right: 0; + margin-bottom: 15px; + } +} + +@media only screen and (max-width: 768px) { + /* menu locations */ + #menu-locations-wrap .widefat { + width: 100%; + } +} diff --git a/wp-admin/css/nav-menus.css b/wp-admin/css/nav-menus.css new file mode 100644 index 0000000000..2483113697 --- /dev/null +++ b/wp-admin/css/nav-menus.css @@ -0,0 +1,870 @@ +/* nav-menu */ + +/* @todo: determine if this is truly for nav menus only */ +.no-js #message { + display: block; +} + +ul.add-menu-item-tabs li { + padding: 3px 5px 3px 8px; +} + +.accordion-section ul.category-tabs, +.accordion-section ul.add-menu-item-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; +} + +#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 .postbox, +.metabox-holder-disabled .accordion-section-content, +.metabox-holder-disabled .accordion-section-title { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.metabox-holder-disabled .button-controls .select-all { + display: none; +} + +#wpbody { + position: relative; +} + +.blank-slate .menu-name { + height: 2em; +} + +.blank-slate .menu-settings { + border: none; + margin-top: 0; + padding-top: 0; + overflow: hidden; +} + +.is-submenu { + color: #999; + font-style: italic; + font-weight: normal; + margin-left: 4px; +} + +.manage-menus { + margin-top: 23px; + padding: 10px; + overflow: hidden; + background: #fbfbfb; +} + +.manage-menus select { + float: left; + margin-right: 6px; +} + +.manage-menus .selected-menu { + float: left; + margin: 5px 6px 0 0; +} + +.manage-menus .submit-btn { + float: left; + margin-top: 1px; +} + +.menu-edit #post-body-content h3 { + margin: 1em 0 10px; +} + +.menu-settings { + border-top: 1px solid #eee; + margin-top: 2em; +} + +.menu-settings dl { + margin: 0 0 10px; + overflow: hidden; + padding-left: 18%; +} + +.menu-settings dd { + float: left; + margin: 0; + width: 100%; +} + +.menu-settings dt { + float: left; + clear: both; + width: 21.951%; + padding: 3px 0 0; + margin-left: -21.951%; +} + +.menu-settings label { + vertical-align: baseline; +} + +.menu-edit .checkbox-input { + margin-top: 4px; +} + +.theme-location-set { + color: #999; + font-size: 11px; +} + +/* Menu Container */ +#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 #dfdfdf; + background: #fff; +} + +#nav-menu-header, +#nav-menu-footer { + padding: 0 10px; +} + +#nav-menu-header { + border-bottom: 1px solid #dfdfdf; + margin-bottom: 0; +} + +#nav-menu-header .menu-name-label { + margin-top: 4px; +} + +.nav-menus-php #post-body div.updated, +.nav-menus-php #post-body div.error { + margin: 0; +} + +.nav-menus-php #post-body-content { + position: relative; + float: none; +} + +#menu-management .menu-add-new abbr { + font-weight: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 tr + tr td { + padding-top: 0; +} + +.widefat .menu-locations td { + vertical-align: middle; +} + +.menu-location-title label { + font-weight: bold; +} + +.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-edit-menu-link, +.locations-add-menu-link { + margin: 0 3px; +} + +.locations-edit-menu-link { + padding-right: 3px; + border-right: 1px solid #ccc; +} + +#wpbody .open-label { + display: block; + float:left; +} + +#wpbody .open-label span { + padding-right: 10px; +} + +.js .input-with-default-title { + color: #a0a5aa; + font-style: italic; +} + +#menu-management .inside { + padding: 0 10px; +} + +/* Add Menu Item Boxes */ +.postbox .howto input, +.accordion-container .howto input { + width: 180px; + float: right; +} + +.accordion-container .outer-border { + margin: 0; +} + +.customlinkdiv .howto input { + width: 180px; +} + +.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; +} + +/* Button Primary Actions */ +#menu-container .submit { + margin: 0 0 10px; + padding: 0; +} + +.nav-menus-php .add-new-menu-action { + float: left; + margin: 6px 0 0 6px; + line-height: 15px; +} + +.nav-menus-php .meta-sep, +.nav-menus-php .submitdelete, +.nav-menus-php .submitcancel { + display: block; + float: left; + margin: 6px 0; + line-height: 15px; +} + +.meta-sep { + padding: 0 2px; +} + +/* @todo: is this actually used? */ +#cancel-save { + text-decoration: underline; + font-size: 12px; + margin-left: 20px; + margin-top: 5px; +} + +.button.right, .button-secondary.right, .button-primary.right { + float: right; +} + +/* Button Secondary Actions */ +.list-controls { + float: left; + margin-top: 5px; +} + +.add-to-menu { + float: right; +} + +.button-controls { + clear:both; + margin: 10px 0; +} + +.show-all, +.hide-all { + cursor: pointer; +} + +.hide-all { + display: none; +} + +/* Create Menu */ +#menu-name { + width: 270px; +} + +#manage-menu .inside { + padding: 0px 0px; +} + +/* Custom Links */ +#available-links dt { + display: block; +} + +#add-custom-link .howto { + font-size: 12px; +} + +#add-custom-link label span { + display: block; + float: left; + margin-top: 5px; + padding-right: 5px; +} + +.menu-item-textbox { + width: 180px; +} + +.nav-menus-php .howto span { + margin-top: 6px; + display: block; + float: left; +} + +/* Menu item types */ +.quick-search { + width: 190px; +} + +.quick-search-wrap .spinner { + float: none; + margin: 0 5px; +} + +.nav-menus-php .list-wrap { + display: none; + clear: both; + margin-bottom: 10px; +} + +.nav-menus-php .postbox p.submit { + margin-bottom: 0; +} + +/* Listings */ +.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; +} + +/* Nav Menu */ +#menu-container .inside { + padding-bottom: 10px; +} + +.menu { + padding-top:1em; +} + +#menu-to-edit { + margin: 0; + padding: 0.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 #dfdfdf; + 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: #999; +} + +/* Sortables */ +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; +} + +/* Hide the transport list when it's empty */ +.menu-item .menu-item-transport:empty { + display: none; +} + +/* WARNING: The factor of 30px is hardcoded into the nav-menus JavaScript. */ +.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; } +.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: 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; } +.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; } + +/* Menu item controls */ +.item-type { + display: inline-block; + padding: 12px 10px; + 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; + margin-right: 0 !important; + text-indent: 100%; + outline: none; + overflow: hidden; + white-space: nowrap; +} + +/* Menu editing */ +.menu-instructions-inactive { + display: none; +} + +.menu-item-settings { + display: block; + 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 #e5e5e5; + border-top: none; + -webkit-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 a { + 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 auto; + text-align: center; +} + +.link-to-original { + display: block; + margin: 0 0 10px; + padding: 3px 5px 5px; + border: 1px solid #dfdfdf; + color: #777; + 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; +} + +#cancel-save { + cursor: pointer; +} + +/* Major/minor publishing actions (classes) */ +.nav-menus-php .major-publishing-actions { + clear: both; + padding: 3px 0 6px; +} + +.nav-menus-php .major-publishing-actions .publishing-action { + text-align: right; + float: right; + line-height: 23px; + margin: 4px 0 1px; +} + +.nav-menus-php .blank-slate .menu-settings { + display: none; +} + +.nav-menus-php .delete-action { + float: left; + margin-top: 2px; +} + +.nav-menus-php .submitbox .submitcancel { + border-bottom: 1px solid #0073aa; + padding: 1px 2px; + color: #0073aa; + text-decoration: none; +} + +.nav-menus-php .submitbox .submitcancel:hover { + background: #0073aa; + color: #fff; +} + +.nav-menus-php .major-publishing-actions .form-invalid { + padding-left: 4px; + margin-left: -4px; +} + +/* Clearfix */ +#menu-item-name-wrap:after, +#menu-item-url-wrap:after, +#menu-name-label:after, +#menu-settings-column .inside:after, +#nav-menus-frame:after, +.nav-menus-php #post-body-content:after, +.nav-menus-php .button-controls:after, +.nav-menus-php .major-publishing-actions:after, +.nav-menus-php .menu-item-settings:after { + clear: both; + content: "."; + display: block; + height: 0; + visibility: hidden; +} + +#nav-menus-frame, +.button-controls, +#menu-item-url-wrap, +#menu-item-name-wrap { + display: block; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@media screen and ( max-width: 782px ) { + body.nav-menus-php { + 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 .item-controls .item-type { + margin-top: 2px; + } + + .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-label #menu-name { + margin-top: 4px; + } + + .nav-menus-php .major-publishing-actions .publishing-action { + margin-top: 6px; + } + + .nav-menus-php .delete-action { + font-size: 14px; + line-height: 50px; + margin-top: 12px; + } + + .menu-item-bar .menu-item-handle, + .menu-item-settings, + .description-wide { + 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 dl { + padding-left: 0; + } + + .menu-settings dd { + float: none; + width: 100%; + margin-bottom: 15px; + } + + .menu-settings dt { + float: none; + width: auto; + margin-left: 0; + margin-bottom: 15px; + } +} + +@media only screen and (max-width: 768px) { + /* menu locations */ + #menu-locations-wrap .widefat { + width: 100%; + } +} diff --git a/wp-admin/css/press-this-editor-rtl.css b/wp-admin/css/press-this-editor-rtl.css new file mode 100644 index 0000000000..90d8cdcf50 --- /dev/null +++ b/wp-admin/css/press-this-editor-rtl.css @@ -0,0 +1,122 @@ +/* +Press This TinyMCE editor styles :) +*/ + + +/** +* Links +*/ +a { + color: #0073aa; +} + +a:visited { + color: #0073aa; +} + +a:hover, +a:focus, +a:active { + color: #00a0d2; +} + + +/** +* Lists +*/ +ul, +ol { + margin: 0 3em 1.5em 0; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li > ul, +li > ol { + margin-bottom: 0; + margin-right: 1.5em; +} + +dt { + font-weight: 700; +} + +dd { + margin: 0 1.5em 1.5em; +} + + +/** +* Media +* +* Basic image and object styles +*/ +img { + max-width: 100%; + height: auto; +} + +/* Makes sure embeds and iframes fit inside their containers */ +embed, +iframe, +object { + max-width: 100%; +} + + +/** +* TinyMCE styles +* +* Pretty dang good. +*/ +body { + color: #404040; + font-family: "Open Sans", Helvetica, Arial, sans-serif; + font-size: 20px; + font-weight: 400; + line-height: 1.6; +} +@media (max-width: 900px) { + body#tinymce { + padding-top: 30px !important; + } +} +@media (max-width: 640px) { + body { + font-size: 16px; + } +} +@media (max-width: 320px) { + body { + margin: 0 15px; + } +} + +#tinymce b, +#tinymce strong { + /* overrides TinyMCE's !important. Woohoo. */ + font-weight: 700 !important; +} + +blockquote { + margin: 1em 1.5em; + color: #9ea7af; + font-size: em(25px); + font-style: italic; +} +@media (max-width: 900px) { + blockquote { + margin: 1.5em 1em; + } +} + +ul, +ol { + margin: 0 .75em 1.5em 0; +} diff --git a/wp-admin/css/press-this-editor.css b/wp-admin/css/press-this-editor.css new file mode 100644 index 0000000000..96ff426168 --- /dev/null +++ b/wp-admin/css/press-this-editor.css @@ -0,0 +1,122 @@ +/* +Press This TinyMCE editor styles :) +*/ + + +/** +* Links +*/ +a { + color: #0073aa; +} + +a:visited { + color: #0073aa; +} + +a:hover, +a:focus, +a:active { + color: #00a0d2; +} + + +/** +* Lists +*/ +ul, +ol { + margin: 0 0 1.5em 3em; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li > ul, +li > ol { + margin-bottom: 0; + margin-left: 1.5em; +} + +dt { + font-weight: 700; +} + +dd { + margin: 0 1.5em 1.5em; +} + + +/** +* Media +* +* Basic image and object styles +*/ +img { + max-width: 100%; + height: auto; +} + +/* Makes sure embeds and iframes fit inside their containers */ +embed, +iframe, +object { + max-width: 100%; +} + + +/** +* TinyMCE styles +* +* Pretty dang good. +*/ +body { + color: #404040; + font-family: "Open Sans", Helvetica, Arial, sans-serif; + font-size: 20px; + font-weight: 400; + line-height: 1.6; +} +@media (max-width: 900px) { + body#tinymce { + padding-top: 30px !important; + } +} +@media (max-width: 640px) { + body { + font-size: 16px; + } +} +@media (max-width: 320px) { + body { + margin: 0 15px; + } +} + +#tinymce b, +#tinymce strong { + /* overrides TinyMCE's !important. Woohoo. */ + font-weight: 700 !important; +} + +blockquote { + margin: 1em 1.5em; + color: #9ea7af; + font-size: em(25px); + font-style: italic; +} +@media (max-width: 900px) { + blockquote { + margin: 1.5em 1em; + } +} + +ul, +ol { + margin: 0 0 1.5em .75em; +} diff --git a/wp-admin/css/press-this-rtl.css b/wp-admin/css/press-this-rtl.css new file mode 100644 index 0000000000..17c688ceb9 --- /dev/null +++ b/wp-admin/css/press-this-rtl.css @@ -0,0 +1,2215 @@ +/* +Press This styles :) +*/ + + +/** +* Normalize +* +* normalize.css v3.0.0 | MIT License | git.io/normalize +*/ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { + *, + *:before, + *:after { + -webkit-font-smoothing: antialiased; + } +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden], +template { + display: none; +} + +a { + background: transparent; +} + +a:active, +a:hover { + outline: 0; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +mark { + background: #ff0; + color: #000; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 1em 40px; +} + +hr { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +pre { + overflow: auto; +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} + +button { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input { + line-height: normal; +} + +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +fieldset { + border: 0; + margin: 0; + padding: 0; +} + +legend { + border: 0; + padding: 0; +} + +textarea { + overflow: auto; +} + +optgroup { + font-weight: bold; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} + +.clearfix:before, +.clearfix:after { + content: ""; + display: table; +} +.clearfix:after { + clear: both; +} + +.hide-if-js { + display: none; +} + +.screen-reader-text { + position: absolute; + margin: -1px; + padding: 0; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; +} + + +/** +* Typography +* +* Base element typographic styles. +*/ +body, +button, +input, +select, +textarea { + color: #404040; + font-family: "Open Sans", Helvetica, Arial, sans-serif; + font-size: 20px; + font-weight: 400; + line-height: 1.6; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + clear: both; +} + +p { + margin-bottom: 1.5em; +} + +b, +strong { + font-weight: 700; +} + + +/** +* Buttons +* +* Pushing buttons is what I do. +*/ + +.button-subtle, +.scan-submit { + display: inline-block; + margin: 0; + padding: 0 10px 1px; + border-width: 1px; + border-style: solid; + -webkit-border-radius: 3px; + border-radius: 3px; + font-size: 13px; + line-height: 2; + text-decoration: none; + white-space: nowrap; + cursor: pointer; + -webkit-appearance: none; +} + +.button-subtle { + background: none; + border: 0; + color: #0073aa; +} + +.button-subtle:visited { + color: #0073aa; +} + +.button-subtle:focus, +.button-subtle:hover, +.button-subtle:active, +.edit-post-link:focus, +.edit-post-link:hover, +.edit-post-link:active { + color: #00a0d2; +} + +.button-subtle:focus, +.button-subtle:active, +.edit-post-link:focus, +.edit-post-link:active { + outline: 0; + text-decoration: underline; +} + +.preview-button { + margin-left: 5px; +} + +.button-reset { + margin: 0; + padding: 0; + border: 0; + background: none; + cursor: pointer; + -webkit-appearance: none; +} + +.button-reset:focus { + outline: 0; +} + +.button-link { + margin: 0; + padding: 0; + border: 0; + background: none; + color: #0073aa; + cursor: pointer; + -webkit-appearance: none; +} + +.button-link:hover, +.button-link:active, +.button-link:focus { + color: #00a0d2; + text-decoration: underline; +} + +.split-button { + position: relative; + display: inline-block; + vertical-align: middle; +} + +.split-button-body { + display: none; + position: absolute; + bottom: 39px; + left: 0; + border: 1px solid #ddd; + background-color: #fff; + min-width: 180px; + max-width: 100%; + margin: 0; + padding: 8px; + list-style: none; + -webkit-box-shadow: -1px 0 4px rgba( 0, 0, 0, 0.15 ); + box-shadow: -1px 0 4px rgba( 0, 0, 0, 0.15 ); +} + +.split-button-body:before, +.split-button-body:after { + position: absolute; + left: 12px; + display: block; + width: 0; + height: 0; + border-style: solid; + border-color: transparent; + content: ''; +} + +.split-button-body:before { + bottom: -18px; + border-top-color: #ccc; + border-width: 9px; + left: 11px; +} + +.split-button-body:after { + bottom: -16px; + border-top-color: #fff; + border-width: 8px; +} + +.split-button-body .split-button-option { + display: block; + padding: 5px 15px; + margin: 0; + width: 100%; + text-align: right; +} + +.is-open .split-button-body { + display: block; +} + +.split-button-primary, +.split-button-toggle { + -webkit-border-radius: 0; + border-radius: 0; + display: block; + margin: 0; + font-size: 13px; + text-decoration: none; + white-space: nowrap; + cursor: pointer; + -webkit-appearance: none; + line-height: 2; + padding: 0 10px 1px; + background: #00a0d2; + border-color: #0073aa; + border-width: 1px; + border-style: solid; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5 ), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + color: #fff; +} + +.split-button-primary { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + border-left: 0 none; + float: right; +} + +.split-button-toggle { + padding: 0; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + border-right: 0 none; + float: left; +} + +.split-button-toggle i { + margin: 4px 0 3px 20px; + padding: 0 10px; + border-right: 1px solid #fff; +} + +.split-button-primary:hover, +.split-button-toggle:hover { + outline: none; + background: #0091cd; + border-color: #0073aa; +} + +.split-button-primary:focus, +.split-button-toggle:focus { + outline: none; + border-color: #0e3950; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.split-button-primary:active, +.split-button-toggle:active { + background: #0073aa; + border-color: #005082; + color: rgba( 255, 255, 255, 0.95 ); + -webkit-box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); +} + +/** +* Forms +* +* So many input types. +*/ +button, +input, +select, +textarea { + font-size: 100%; + margin: 0; + vertical-align: baseline; + *vertical-align: middle; +} + +[type="checkbox"], +[type="radio"] { + padding: 0; +} + +[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +[type="text"], +[type="email"], +[type="url"], +[type="password"], +[type="search"], +textarea { + padding: 0.4em 0.75em; + color: #32373c; + border: 1px solid #ccc; +} + +[type="text"]:focus, +[type="email"]:focus, +[type="url"]:focus, +[type="password"]:focus, +[type="search"]:focus, +textarea:focus { + color: #32373c; + outline: 0; +} + +textarea { + overflow: auto; + padding-right: 3px; + vertical-align: top; +} + + +/** +* Links +*/ +a { + color: #0073aa; +} + +a:visited { + color: #0073aa; +} + +a:hover, +a:focus, +a:active { + color: #00a0d2; +} + + +/** +* Lists +*/ +ul, +ol { + margin: 0 3em 1.5em 0; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li > ul, +li > ol { + margin-bottom: 0; + margin-right: 1.5em; +} + +dt { + font-weight: 700; +} + +dd { + margin: 0 1.5em 1.5em; +} + + +/** +* Post formats +* +* Complete styles for post formats UI +*/ +/* TODO if we remove the
during merge, this can go. */ +#post-formats-select br { + display: none; +} + +.post-format { + width: 1px; + height: 1px; + position: absolute; + top: -9999px; +} + +.lt-ie9 .post-format { + margin: 17px 13px 0 12px; + width: auto; + height: auto; + position: static; + top: auto; + float: right; + width: 16px; + height: 16px; +} + +.post-format-icon { + position: relative; + display: block; + padding: 13px 13px 14px 2px; + cursor: pointer; +} + +.post-format-icon:before, +.post-format-icon:after { + content: ""; + display: inline-block; + width: 20px; + height: 20px; + margin-left: 10px; + font-size: 20px; + line-height: 1; + font-family: dashicons; + text-decoration: inherit; + color: #9ea7af; + font-weight: 400; + font-style: normal; + vertical-align: top; + text-align: center; + -webkit-transition: color .1s ease-in 0; + transition: color .1s ease-in 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.post-format-icon:before { + content: "\f109"; +} + +.post-format-icon:after { + display: none; + content: "\f147"; + float: left; +} + +.post-format:checked + .post-format-icon { + -webkit-box-shadow: inset -6px 0 0 #00a0d2; + box-shadow: inset -6px 0 0 #00a0d2; + background: rgba(46, 162, 204, 0.1); +} + +.post-format:checked + .post-format-icon:before, +.post-format:checked + .post-format-icon:after { + color: #32373c; +} + +.post-format:focus + .post-format-icon { + background: #00a0d2; + color: #fff; +} + +.post-format:focus + .post-format-icon:before, +.post-format:focus + .post-format-icon:after { + color: #fff; +} + +.post-format:checked + .post-format-icon:after { + display: block; +} + +.lt-ie9 .post-format-icon { + margin-right: 16px; +} + +.post-format-aside:before { + content: "\f123"; +} + +.post-format-image:before { + content: "\f128"; +} + +.post-format-video:before { + content: "\f126"; +} + +.post-format-audio:before { + content: "\f127"; +} + +.post-format-quote:before { + content: "\f122"; +} + +.post-format-link:before { + content: "\f103"; +} + +.post-format-gallery:before { + content: "\f161"; +} + + +/** +* Tags +* +* Complete styles for tags UI +*/ +.tagsdiv p { + margin: 0; +} + +.tagsdiv .ajaxtag { + position: relative; +} + +.tagsdiv .newtag { + display: block; + position: relative; + padding: 11px 16px 11px 58px; + width: 100%; + border: 0; + border-bottom: 1px solid #e5e5e5; + font-size: 16px; +} + +.tagsdiv .tagadd { + position: absolute; + top: 0; + left: 0; + bottom: 1px; + border: 0; + -webkit-border-radius: 0; + border-radius: 0; + margin: 0; + padding: 0 16px; + background: #f7f7f7; + border-right: 1px solid #f1f1f1; + -webkit-box-shadow: none; + box-shadow: none; +} + +.tagsdiv .tagadd:hover, +.tagsdiv .tagadd:active, +.tagsdiv .tagadd:focus { + outline: 0; + background: #2991b7; + border-color: #20708e; + color: #fff; + -webkit-box-shadow: none; + box-shadow: none; +} + +.tagsdiv .howto { + color: #727272; + font-style: italic; + margin: 10px 16px 6px 0; +} + + +/* Tag hint TODO needed? */ +/* Tag suggestions */ +.ac_results { + padding: 0; + margin: -1px -1px 0 0; + list-style: none; + position: absolute; + z-index: 10000; + display: none; + border: 1px solid #d8d8d8; + background-color: #fff; + font-size: 14px; +} + +.ac_results li { + padding: 6px 16px; + white-space: nowrap; + color: #101010; + text-align: right; +} + +.ac_results .ac_over { + background-color: #e5e5e5; + background-color: #00a0d2; + color: #fff; + cursor: pointer; +} + +.ac_match { + text-decoration: underline; +} + +/* Tags */ +.tagchecklist { + padding: 16px 28px 5px; +} + +.tagchecklist:before, +.tagchecklist:after { + content: ""; + display: table; +} + +.tagchecklist:after { + clear: both; +} + +.tagchecklist span { + display: block; + margin-left: 25px; + float: right; + font-size: 13px; + line-height: 1.8; + white-space: nowrap; + cursor: default; +} + +@media (max-width: 600px) { + .tagchecklist span { + margin-bottom: 15px; + font-size: 16px; + line-height: 1.3; + } +} + +.tagchecklist .ntdelbutton { + margin: 1px -17px 0 0; + cursor: pointer; + width: 20px; + height: 20px; + display: block; + float: right; + text-indent: 0; + overflow: hidden; + position: absolute; + outline: 0; +} + +.tagchecklist .ntdelbutton:before { + content: '\f153'; + display: block; + margin: 2px 0; + height: 20px; + width: 20px; + background: 100% 0; + color: #9ea7af; + font: 400 16px/1 dashicons; + text-align: center; + speak: none; + -webkit-font-smoothing: antialiased; +} + +.tagchecklist .ntdelbutton:focus:before { + color: #00a0d2; +} + + +/* THE TAG CLOUD. */ +.tagsdiv + p { + margin: 0; +} + +.tagcloud-link { + display: block; + padding: 0 16px; + text-decoration: none; + outline: 0; +} + +.tagcloud-link:focus { + text-decoration: underline; +} + +.popular-tags { + border: none; + line-height: 2em; + padding: 8px 12px 12px; + text-align: justify; +} + +.popular-tags a { + padding: 0 3px; +} + +.the-tagcloud { + margin: 0; + padding: 16px; +} + +.the-tagcloud a { + text-decoration: none; + outline: 0; +} + +.the-tagcloud a:focus { + text-decoration: underline; +} + +.tagcloud h3 { + margin: 2px 0 12px; +} + + +/** +* Categories +* +* Complete styles for post categories UI +*/ +input[type="search"].categories-search, +.add-category-name { + display: block; + width: 100%; + padding: 0.85714em 1.07143em; + border: 0; + -webkit-border-radius: 0; + border-radius: 0; + border-bottom: 1px solid #e5e5e5; + font-size: 14px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +@media (max-width: 600px) { + input[type="search"].categories-search, + .add-category-name { + /* Needs to be 16px to prevent zooming on iOS. Guh. */ + font-size: 16px; + } +} + +.add-cat-toggle { + float: left; + margin-top: -45px; + line-height: 20px; + padding: 12px 10px 8px; +} + +.add-cat-toggle:focus { + text-decoration: none; + color: #00a0d2; +} + +.add-cat-toggle.is-toggled { + padding: 10px; +} + +.add-cat-toggle.is-toggled .dashicons:before { + content: "\f179"; +} + +.add-category { + position: relative; + border-bottom: 1px solid #e5e5e5; +} + +.add-category.is-hidden { + display: none; +} + +.add-category .add-cat-submit { + position: absolute; + top: 0; + left: 0; + border: 0; + -webkit-border-radius: 0; + border-radius: 0; + padding: 12px 16px; + background: #f7f7f7; + border-right: 1px solid #f1f1f1; +} + +.add-category .add-cat-submit:hover, +.add-category .add-cat-submit:active, +.add-category .add-cat-submit:focus { + outline: 0; + background: #2991b7; + border-color: #20708e; + color: #fff; +} + +/* Parent category select */ +.postform-wrapper { + padding: 12px; +} + +.postform { + display: block; + margin: 0; + width: 100%; + height: 34px; + border: 0; + -webkit-border-radius: 0; + border-radius: 0; + border: 1px solid #e5e5e5; + background: #fff; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + overflow: hidden; + line-height: 21px; + text-overflow: ellipsis; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + cursor: pointer; + outline: 0; +} + +.postform:focus { + border-color: #0073aa; + -webkit-box-shadow: 0 0 0 3px #00a0d2; + box-shadow: 0 0 0 3px #00a0d2; + outline: 0; + -moz-outline: none; + -moz-user-focus: ignore; +} + +.postform::-ms-expand { + display: none; +} + +.postform::-ms-value { + background: none; + color: #727272; +} + +.postform:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #727272; +} + +/* Category list */ +.categories-select { + margin: 0; + padding: 0; + list-style: none; +} + +.categories-select ul { + margin: 0; + padding: 0; + list-style: none; +} + +.category { + position: relative; + display: block; + padding: 13px 16px 14px 16px; + cursor: pointer; + background: #fff; +} + +.category:focus, +.category.selected:focus { + outline: 0; + background: #00a0d2; + color: #fff; +} + +.category.selected { + -webkit-box-shadow: inset -6px 0 0 #00a0d2; + box-shadow: inset -6px 0 0 #00a0d2; + background: #E9F5F9; +} + +.category.selected:after { + display: inline-block; + content: "\f147"; + position: absolute; + top: 13px; + left: 0; + width: 20px; + height: 20px; + margin-left: 10px; + font-size: 20px; + line-height: 1; + font-family: dashicons; + text-decoration: inherit; + color: #23282d; + font-weight: 400; + font-style: normal; + vertical-align: top; + text-align: center; + -webkit-transition: color .1s ease-in 0; + transition: color .1s ease-in 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.category.selected:focus:after { + color: #fff; +} + +.categories-select ul .category { + padding-right: 24px; +} + +.categories-select ul ul .category { + padding-right: 32px; +} + +.categories-select ul ul ul .category { + padding-right: 40px; +} + +.categories-select ul ul ul ul .category { + padding-right: 48px; +} + +.categories-select ul ul ul ul ul .category { + padding-right: 56px; +} + +.categories-select ul ul ul ul ul ul .category { + padding-right: 64px; +} + +.categories-select .is-hidden { + display: none; +} + +.categories-select .is-hidden.searched-parent { + display: block; +} + +/* Category search */ +.categories-search-wrapper { + position: relative; +} + +.categories-search-wrapper.is-hidden { + display: none; +} + +.categories-search-wrapper label { + position: absolute; + top: 50%; + left: 10px; + margin-top: -10px; + color: #9ea7af; +} + + +/** +* Main +*/ +html { + overflow: auto; +} + +body { + overflow-x: hidden; + height: 100%; +} + +html { + background: #fff; + -webkit-box-shadow: 10px 0 0 rgba(0, 0, 0, 0.3); + box-shadow: 10px 0 0 rgba(0, 0, 0, 0.3); +} + +@media (max-width: 900px) { + body { + font-size: 16px; + } +} + +@media (max-width: 320px) { + body { + font-size: 14px; + } +} + +.lt-ie9 { + overflow: visible; +} + +.adminbar { + position: relative; + width: 100%; + padding: 0 0.8em; + min-height: 3.2em; + background: #23282d; + color: #fff; + z-index: 9999; +} + +.adminbar:before, +.adminbar:after { + content: ""; + display: table; +} + +.adminbar:after { + clear: both; +} + +.adminbar .dashicons { + color: #999; +} + +.adminbar button { + position: absolute; + top: 50%; + left: 6px; + margin-top: -13px; +} + +@media (max-width: 320px) { + .adminbar { + min-height: 45px; + } +} + +.current-site { + margin-top: 0.5625em; + font-size: 16px; + line-height: 44px; + font-weight: 400; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +@media (max-width: 600px) { + .current-site { + margin: 3px 0 0; + } +} + +@media (max-width: 320px) { + .current-site { + margin: 0; + font-size: 14px; + } +} + +.current-site-link { + text-decoration: none; +} + +.current-site-link:focus { + outline: 0; +} + +.current-site-link:focus .current-site-name{ + text-decoration: underline; +} + +.current-site-name { + color: #ededed; +} + +@media (max-width: 320px) { + .current-site-name { + font-weight: 600; + } +} + +.current-site .dashicons-wordpress { + position: relative; + top: -1px; + margin-left: 10px; + vertical-align: middle; +} + +.options, +.options.open .on-closed, +.options.closed .on-open { + display: none; +} + +@media (max-width: 900px) { + .options { + display: block; + } +} + +.options-panel-back.is-hidden { + display: none; +} + +.options:focus .dashicons { + color: #fff; + text-decoration: none; +} + +.options .dashicons { + margin-top: 3px; +} + +.options { + color: #00a0d2; +} + +.alert { + position: relative; + margin: 0; + padding: 16px 50px; + border-bottom: 1px solid #e5e5e5; + font-size: 14px; +} + +.alert:before { + content: ''; + position: absolute; + top: 50%; + right: 30px; + width: 8px; + height: 8px; + margin-top: -4px; + -webkit-border-radius: 50%; + border-radius: 50%; + background: #00a0d2; +} + +@media (max-width: 600px) { + .alert { + padding: 16px 35px; + } + .alert:before { + right: 15px; + } +} + +.alert.is-error:before { + background: red; +} + +.scan { + position: relative; + border-bottom: 1px solid #e5e5e5; +} + +@media (max-width: 900px) { + .scan form { + -webkit-transition: opacity .3s ease-in-out; + transition: opacity .3s ease-in-out; + } + .scan.is-hidden form { + opacity: .2; + pointer-events: none; + } +} + +.scan-url { + display: block; + border: 0; + padding: 0.85714em 1.07143em; + font-size: 14px; + width: 100%; +} + +@media (max-width: 600px) { + .scan-url { + font-size: 16px; + } +} + +.scan-submit { + position: absolute; + top: 0; + left: 0; + bottom: 0; + padding: 0 1.07143em; + background: #f7f7f7; + border-color: #dedede; + border: 0; + border-right: 1px solid #f1f1f1; + -webkit-border-radius: 0; + border-radius: 0; + color: #555; + font-size: 14px; + line-height: 1.6; +} + +.scan-submit:hover, +.scan-submit:focus { + background: #2991b7; + border-color: #20708e; + color: #fff; + outline: 0; +} + +.scan-submit:active { + background: #2581a2; + border-color: #20708e; + color: #fff; +} + +.scan-submit:visited { + color: #555; +} + +.wrapper { + position: relative; + margin-bottom: 60px; + margin-left: 320px; +} + +.wrapper:before, +.wrapper:after { + content: ""; + display: table; +} + +.wrapper:after { + clear: both; +} + +@media (max-width: 900px) { + .wrapper { + margin: 0; + width: 100%; + } +} + +.editor-wrapper { + overflow: auto; + float: right; + width: 100%; +} + +.editor-wrapper:before, +.editor-wrapper:after { + content: ""; + display: table; +} + +.editor-wrapper:after { + clear: both; +} + +.editor { + padding: 0 1.5em 4.75em; + max-width: 700px; + margin: 0 auto; +} + +.spinner { + height: 20px; + width: 20px; + display: inline-block; + visibility: hidden; + background: url(../images/spinner.gif) no-repeat center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + opacity: 0.7; + filter: alpha(opacity=70); + line-height: 1; + vertical-align: middle; +} + +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + .spinner { + background-image: url(../images/spinner-2x.gif); + } +} + +.spinner.is-active { + visibility: visible; +} + +/* Make the text inside the editor textarea white. Prevents a "flash" on loading the page */ +#pressthis { + color: #fff; +} + +@media (min-width: 901px) { + .editor { + max-width: 760px; + } +} + +@media (max-width: 320px) { + .editor { + padding: 0; + } +} + +.post-title, +.post-title-placeholder { + margin: 0; + padding: .83em 0; + width: 100%; + border-bottom: 1px solid #e5e5e5; + font-size: 32px; + line-height: 1.4; + font-weight: 700; +} + +.post-title:active, +.post-title:focus, +.post-title-placeholder:active, +.post-title-placeholder:focus { + outline: 0; + -webkit-box-shadow: inset 0px -3px 0 #00a0d2; + box-shadow: inset 0px -3px 0 #00a0d2; + border-color: #00a0d2; +} + +@media (max-width: 900px) { + .post-title, + .post-title-placeholder { + font-size: 24px; + } +} + +@media (max-height: 400px) { + .post-title, + .post-title-placeholder { + padding: 15px 0; + font-size: 16px; + } +} + +@media (max-width: 320px) { + .post-title, + .post-title-placeholder { + font-size: 16px; + font-weight: 600; + padding: 1.14286em 1.42857em; + } +} + +.post-title { + /* IE8 fallback */ + background: url(data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==); + background: none, none; +} + +.post-title:before { + /* Keeps empty container from collapsing */ + content: '\a0'; + display: inline-block; + width: 0; + speak: none; +} + +.post-title-placeholder { + position: absolute; + border: 0; + color: #9ea7af; + z-index: -1; +} + +.post-title-placeholder.is-hidden { + display: none; +} + +/* Suggested images */ +.media-list-container { + position: relative; + padding: 2px 0; + border-bottom: 1px solid #e5e5e5; + display: none; +} + +.media-list-inner-container { + overflow: auto; + max-height: 150px; + max-height: 40vw; +} + +.media-list-container.has-media { + display: block; +} + +.media-list-inner-container:before, +.media-list-inner-container:after { + content: ""; + display: table; +} + +.media-list-inner-container:after { + clear: both; +} + +.media-list { + margin: 0; + padding: 0; +} + +@media (min-width: 321px) { + .media-list-inner-container { + max-height: 250px; + max-height: 40vw; + } +} + +@media (min-width: 601px) { + .media-list-inner-container { + max-height: 200px; + max-height: 18.75vw; + } +} + +.wppt-all-media-list { + list-style: none; + margin: 0; + padding: 0; +} + +.suggested-media-thumbnail:focus, +.is-embed:focus { + outline: 0; + -webkit-box-shadow: inset 0 0 0 3px #00a0d2; + box-shadow: inset 0 0 0 3px #00a0d2; +} + +.suggested-media-thumbnail { + position: relative; + display: block; + float: right; + width: 16.66%; + padding: 16.66% 16.66% 0 0; + background-position: center; + background-repeat: no-repeat; + -webkit-background-size: cover; + background-size: cover; + background-color: #d8d8d8; + color: #fff; + color: rgba(255, 255, 255, 0.6); + cursor: pointer; +} + +.suggested-media-thumbnail:hover, +.suggested-media-thumbnail:active, +.suggested-media-thumbnail:focus { + color: #fff; +} + +.suggested-media-thumbnail:before, +.suggested-media-thumbnail:after { + display: inline-block; + position: absolute; + font-size: 20px; + line-height: 1; + font-family: dashicons; + text-decoration: inherit; + font-weight: 400; + font-style: normal; + -webkit-transition: color .1s ease-in 0; + transition: color .1s ease-in 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.suggested-media-thumbnail:before { + right: 50%; + top: 50%; + margin: -20px -20px 0 0; + font-size: 40px; +} + +.suggested-media-thumbnail:after { + content: "\f132"; + left: 3%; + bottom: 2%; +} + +@media (min-width: 601px) { + .suggested-media-thumbnail { + width: 12.5%; + padding: 12.5% 12.5% 0 0; + } +} + +.is-embed:before { + content: "\f104"; + color: #fff; + color: rgba(255, 255, 255, 0.9); +} + +.is-embed.is-audio:hover:before, +.is-embed.is-audio:active:before, +.is-embed.is-audio:focus:before, +.is-embed.is-tweet:hover:before, +.is-embed.is-tweet:active:before, +.is-embed.is-tweet:focus:before { + color: #fff; +} + +.is-embed.is-video { + background-color: #23282d; +} + +.is-embed.is-video:hover:before, +.is-embed.is-video:active:before, +.is-embed.is-video:focus:before { + color: rgba(255, 255, 255, 0.2); +} + +.is-embed.is-video:before { + content: "\f236"; +} + +.is-embed.is-audio { + background-color: #ff7d44; +} + +.is-embed.is-audio:before { + content: "\f127"; +} + +.is-embed.is-tweet { + background-color: #55acee; +} + +.is-embed.is-tweet:before { + content: "\f301"; +} + +.no-media { + margin: 0; + padding: 0; + border: 0; +} + +/* Actions bar */ +.press-this-actions { + position: fixed; + bottom: 0; + right: 0; + width: 100%; + background: #f1f1f1; + background: rgba(241, 241, 241, 0.9); + border-top: 1px solid #e5e5e5; +} + +@media (max-width: 900px) { + .press-this-actions { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; + } + .press-this-actions.is-hidden { + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); + } +} + +.add-media { + float: right; + margin: 14px 30px 14px 0; + font-size: 0; +} + +@media (max-width: 320px) { + .add-media { + margin: 10px 10px 10px 0; + } +} + +.insert-media { + color: #9ea7af; + float: right; + margin: 0; + padding: 0; + border: 0; + border-left: 1px solid #e5e5e5; + -webkit-border-radius: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: none; + box-shadow: none; + overflow: hidden; +} + +.insert-media:hover, +.insert-media:focus, +.insert-media:active { + margin: 0; + background: none; + border-color: #e5e5e5; + color: #23282d; +} + +.insert-media:focus, +.insert-media:active { + outline: 0; + color: #00a0d2; + text-decoration: none; +} + +.insert-media .dashicons { + padding: 11px; + width: 63px; + height: 58px; + font-size: 40px; +} + +@media (max-width: 320px) { + .insert-media .dashicons { + width: 55px; + height: 49px; + padding: 14px; + font-size: 20px; + } +} + +.post-actions { + float: left; + margin: 14px 0 14px 30px; + font-size: 13px; +} + +@media (max-width: 320px) { + .post-actions { + margin: 10px 0 10px 10px; + } +} + +.edit-post-link { + font-size: 13px; + display: inline-block; + text-decoration: none; + padding: 0 10px; +} + +.publish-button .saving-draft, +.publish-button.is-saving .publish { + display: none; +} + +.publish-button.is-saving .saving-draft { + display: inline; +} + +/* TinyMCE styles */ +.editor .wp-media-buttons { + float: none; +} + +.editor div.mce-toolbar-grp { + padding: 0.71429em 0; + background: none; + border: 0; +} + +@media (max-height: 400px), (max-width: 320px) { + .editor div.mce-toolbar-grp { + padding: 0; + } +} + +.mce-stack-layout:before, +.mce-stack-layout:after { + content: ""; + display: table; +} + +.mce-stack-layout:after { + clear: both; +} + +.mce-container.mce-toolbar { + float: right; +} + +.mce-container.mce-toolbar:nth-child(2) { + float: left; +} + +@media (max-width: 600px) { + .mce-first .mce-btn:nth-child(3), + .mce-first .mce-btn:nth-child(4) { + position: absolute; + margin: -1px; + padding: 0; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; + } + + .mce-first .mce-btn:nth-child(3):focus, + .mce-first .mce-btn:nth-child(4):focus { + position: static; + margin: 1px; + padding: inherit; + height: auto; + width: auto; + overflow: visible; + clip: auto; + border: 1px solid #999; + } +} + +#wp-link-wrap { + font-size: 13px; +} + +#wp-link-wrap input[type="text"] { + padding: 3px 5px; + margin: 1px; +} + +@media screen and (max-width: 782px) { + #wp-link-wrap { + font-size: 14px; + } + + #wp-link-wrap input[type="text"] { + padding: 6px 10px; + } +} + +#wp-link-wrap .howto { + color: #666; + font-style: italic; +} + +/* Options panel (sidebar) */ +.options-panel { + position: relative; + float: left; + margin-left: -320px; + width: 320px; + border-right: 1px solid #e5e5e5; + font-size: 14px; + /* Keeps background the full height of the screen, but only visually. Clicks go through. */ + -webkit-box-shadow: -5001px 5000px 0 5000px #fff, -5000px 5000px 0 5000px #e5e5e5; + box-shadow: -5001px 5000px 0 5000px #fff, -5000px 5000px 0 5000px #e5e5e5; + outline: 0; +} + +.options-panel-back { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 320px; + outline: 0; +} + +@media (max-width: 900px) { + .options-panel { + background: #fff; + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; + } + + .options-panel.is-hidden { + visibility: hidden; + } + + .options-panel.is-off-screen { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } +} + +@media (max-width: 320px) { + .options-panel { + margin-left: -100%; + width: 100%; + border: 0; + -webkit-box-shadow: -5001px 5000px 0 5000px #fff; + box-shadow: -5001px 5000px 0 5000px #fff; + } + + .options-panel-back { + width: 100%; + } +} + +.post-options { + background: #fff; + position: absolute; + left: 0; + width: 100%; + overflow-x: hidden; +} + +.post-options .post-option-contents { + margin-right: 3px; + color: #32373c; +} + +.post-option-forward:before { + position: absolute; + top: 50%; + left: 8px; + margin-top: -10px; + content: "\f341" +} + +.post-option-back:before { + content: "\f345"; +} + +.lt-ie9 .options-panel, +.lt-ie9 .post-options { + border-right: 1px solid #e5e5e5; +} + +.lt-ie9 .post-options.is-off-screen { + border: 0; +} + +.post-option { + position: relative; +} + +.post-options .post-option { + display: block; + width: 100%; + padding: 13px 14px 13px 37px; + border-bottom: 1px solid #e5e5e5; + text-decoration: none; + text-align: right; + color: #9ea7af; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; +} + +.post-options .post-option:focus { + outline: 0; + -webkit-box-shadow: inset -5px 0 0 #00a0d2; + box-shadow: inset -5px 0 0 #00a0d2; +} + +.is-off-screen > .post-option { + left: 100%; +} + +.is-hidden > .post-option { + visibility: hidden; +} + +@media (min-width: 1px) { + .is-off-screen > .post-option { + left: auto; + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + } +} + +.post-option-title { + display: inline-block; + margin: 0 8px 0 0; + font-size: 14px; + font-weight: normal; +} + +.setting-modal { + position: relative; + top: 0; + right: 0; + width: 100%; + overflow: hidden; + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; +} + +.setting-modal.is-hidden { + visibility: hidden; + height: 0; +} + +.setting-modal.is-off-screen { + right: 100%; +} + +@media (min-width: 1px) { + .setting-modal.is-off-screen { + right: 0; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); + } +} + +.modal-close { + display: block; + width: 100%; + padding: 13px 14px; + border-bottom: 1px solid #e5e5e5; + color: #00a0d2; + text-decoration: none; + text-align: right; +} + +.modal-close:focus { + outline: 0; + -webkit-box-shadow: inset -5px 0 0 #00a0d2; + box-shadow: inset -5px 0 0 #00a0d2; +} + +.setting-title { + position: relative; + top: -1px; + margin-right: 11px; +} + +/* Text editor */ +#pressthis { + color: #404040; + resize: none; + padding-top: 30px; + font-size: 16px; +} + +.wp-editor-wrap .quicktags-toolbar { + background: transparent; + border: none; +} + +/* Switch editor buttons */ +.wp-editor-wrap .wp-editor-tools { + z-index: 0; +} + +.wp-editor-wrap .wp-editor-tabs { + padding: 2px; +} + +.wp-editor-wrap .wp-switch-editor { + top: 0; + margin: 3px 5px 0 0; + padding: 3px 8px; + background: #f5f5f5; + color: #555; + border-color: #ccc; +} + +.wp-editor-wrap .wp-switch-editor:hover { + background: #fafafa; + border-color: #999; + color: #23282d; +} + +.wp-editor-wrap.tmce-active .switch-tmce, +.wp-editor-wrap.html-active .switch-html { + background: #fff; + border-color: #d8d8d8; +} diff --git a/wp-admin/css/press-this-rtl.min.css b/wp-admin/css/press-this-rtl.min.css new file mode 100644 index 0000000000..a051a71933 --- /dev/null +++ b/wp-admin/css/press-this-rtl.min.css @@ -0,0 +1 @@ +pre,textarea{overflow:auto}body,fieldset{margin:0}.screen-reader-text,fieldset,legend,td,th{padding:0}.adminbar:after,.clearfix:after,.editor-wrapper:after,.mce-stack-layout:after,.media-list-inner-container:after,.tagchecklist:after,.wrapper:after,h1,h2,h3,h4,h5,h6{clear:both}b,dt,optgroup,strong{font-weight:700}.current-site,.post-options .post-option,.postform{text-overflow:ellipsis;white-space:nowrap}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){*,:after,:before{-webkit-font-smoothing:antialiased}}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}fieldset,img,legend{border:0}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}.clearfix:after,.clearfix:before{content:"";display:table}.hide-if-js{display:none}.screen-reader-text{position:absolute;margin:-1px;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}body,button,input,select,textarea{color:#404040;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:20px;font-weight:400;line-height:1.6}p{margin-bottom:1.5em}.button-subtle,.scan-submit{display:inline-block;margin:0;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px;font-size:13px;line-height:2;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none}.button-link,.button-reset{cursor:pointer;-webkit-appearance:none;padding:0;border:0;background:0 0}.button-subtle{background:0 0;border:0;color:#0073aa}.button-subtle:visited{color:#0073aa}.button-subtle:active,.button-subtle:focus,.button-subtle:hover,.edit-post-link:active,.edit-post-link:focus,.edit-post-link:hover{color:#00a0d2}.button-subtle:active,.button-subtle:focus,.edit-post-link:active,.edit-post-link:focus{outline:0;text-decoration:underline}.preview-button{margin-left:5px}.button-reset{margin:0}.button-reset:focus{outline:0}.button-link{margin:0;color:#0073aa}.button-link:active,.button-link:focus,.button-link:hover{color:#00a0d2;text-decoration:underline}.split-button{position:relative;display:inline-block;vertical-align:middle}.split-button-body{display:none;position:absolute;bottom:39px;left:0;border:1px solid #ddd;background-color:#fff;min-width:180px;max-width:100%;margin:0;padding:8px;list-style:none;-webkit-box-shadow:-1px 0 4px rgba(0,0,0,.15);box-shadow:-1px 0 4px rgba(0,0,0,.15)}.split-button-body:after,.split-button-body:before{position:absolute;left:12px;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:''}.split-button-body:before{bottom:-18px;border-top-color:#ccc;border-width:9px;left:11px}.split-button-body:after{bottom:-16px;border-top-color:#fff;border-width:8px}.split-button-body .split-button-option{display:block;padding:5px 15px;margin:0;width:100%;text-align:right}.is-open .split-button-body{display:block}.split-button-primary,.split-button-toggle{-webkit-border-radius:0;border-radius:0;display:block;margin:0;font-size:13px;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none;line-height:2;padding:0 10px 1px;background:#00a0d2;border-color:#0073aa;border-width:1px;border-style:solid;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff}.split-button-primary{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border-left:0 none;float:right}.split-button-toggle{padding:0;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-right:0 none;float:left}.split-button-toggle i{margin:4px 0 3px 20px;padding:0 10px;border-right:1px solid #fff}.split-button-primary:hover,.split-button-toggle:hover{outline:0;background:#0091cd;border-color:#0073aa}.split-button-primary:focus,.split-button-toggle:focus{outline:0;border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.split-button-primary:active,.split-button-toggle:active{background:#0073aa;border-color:#005082;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline}[type=checkbox],[type=radio]{padding:0}[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}[type=text],[type=email],[type=url],[type=password],[type=search],textarea{padding:.4em .75em;color:#32373c;border:1px solid #ccc}[type=text]:focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=search]:focus,textarea:focus{color:#32373c;outline:0}textarea{padding-right:3px;vertical-align:top}a,a:visited{color:#0073aa}a:active,a:focus,a:hover{color:#00a0d2}ol,ul{margin:0 3em 1.5em 0}ul{list-style:disc}ol{list-style:decimal}li>ol,li>ul{margin-bottom:0;margin-right:1.5em}dd{margin:0 1.5em 1.5em}#post-formats-select br{display:none}.post-format{width:1px;height:1px;position:absolute;top:-9999px}.lt-ie9 .post-format{margin:17px 13px 0 12px;position:static;top:auto;float:right;width:16px;height:16px}.add-category,.post-format-icon,.tagsdiv .ajaxtag,.tagsdiv .newtag{position:relative}.post-format-icon{display:block;padding:13px 13px 14px 2px;cursor:pointer}.post-format-icon:after,.post-format-icon:before{content:"";display:inline-block;width:20px;height:20px;margin-left:10px;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;color:#9ea7af;font-style:normal;text-align:center;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.category.selected:after,.post-format-icon:after,.post-format-icon:before{font-weight:400;vertical-align:top;-webkit-transition:color .1s ease-in 0}.post-format-icon:before{content:"\f109"}.post-format-icon:after{display:none;content:"\f147";float:left}.post-format:checked+.post-format-icon{-webkit-box-shadow:inset -6px 0 0 #00a0d2;box-shadow:inset -6px 0 0 #00a0d2;background:rgba(46,162,204,.1)}.post-format:checked+.post-format-icon:after,.post-format:checked+.post-format-icon:before{color:#32373c}.post-format:focus+.post-format-icon{background:#00a0d2;color:#fff}.post-format:focus+.post-format-icon:after,.post-format:focus+.post-format-icon:before{color:#fff}.post-format:checked+.post-format-icon:after{display:block}.lt-ie9 .post-format-icon{margin-right:16px}.post-format-aside:before{content:"\f123"}.post-format-image:before{content:"\f128"}.post-format-video:before{content:"\f126"}.post-format-audio:before{content:"\f127"}.post-format-quote:before{content:"\f122"}.post-format-link:before{content:"\f103"}.post-format-gallery:before{content:"\f161"}.tagsdiv p{margin:0}.tagsdiv .newtag{display:block;padding:11px 16px 11px 58px;width:100%;border:0;border-bottom:1px solid #e5e5e5;font-size:16px}.tagsdiv .tagadd{position:absolute;top:0;left:0;bottom:1px;border:0;-webkit-border-radius:0;border-radius:0;margin:0;padding:0 16px;background:#f7f7f7;border-right:1px solid #f1f1f1;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .tagadd:active,.tagsdiv .tagadd:focus,.tagsdiv .tagadd:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .howto{color:#727272;font-style:italic;margin:10px 16px 6px 0}.ac_results{padding:0;margin:-1px -1px 0 0;list-style:none;position:absolute;z-index:10000;display:none;border:1px solid #d8d8d8;background-color:#fff;font-size:14px}.ac_results li{padding:6px 16px;white-space:nowrap;color:#101010;text-align:right}.ac_results .ac_over{background-color:#00a0d2;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}.tagchecklist{padding:16px 28px 5px}.tagchecklist:after,.tagchecklist:before{content:"";display:table}.tagchecklist span{display:block;margin-left:25px;float:right;font-size:13px;line-height:1.8;white-space:nowrap;cursor:default}@media (max-width:600px){.tagchecklist span{margin-bottom:15px;font-size:16px;line-height:1.3}}.tagchecklist .ntdelbutton{margin:1px -17px 0 0;cursor:pointer;width:20px;height:20px;display:block;float:right;text-indent:0;overflow:hidden;position:absolute;outline:0}.tagchecklist .ntdelbutton:before{content:'\f153';display:block;margin:2px 0;height:20px;width:20px;background:100% 0;color:#9ea7af;font:400 16px/1 dashicons;text-align:center;speak:none;-webkit-font-smoothing:antialiased}.category.selected:after,.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{font-family:dashicons;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tagchecklist .ntdelbutton:focus:before{color:#00a0d2}.tagsdiv+p{margin:0}.tagcloud-link{display:block;padding:0 16px;text-decoration:none;outline:0}.tagcloud-link:focus{text-decoration:underline}.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}.popular-tags a{padding:0 3px}.the-tagcloud{margin:0;padding:16px}.the-tagcloud a{text-decoration:none;outline:0}.the-tagcloud a:focus{text-decoration:underline}.tagcloud h3{margin:2px 0 12px}.add-category-name,input[type=search].categories-search{display:block;width:100%;padding:.85714em 1.07143em;border:0;-webkit-border-radius:0;border-radius:0;border-bottom:1px solid #e5e5e5;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (max-width:600px){.add-category-name,input[type=search].categories-search{font-size:16px}}.add-cat-toggle{float:left;margin-top:-45px;line-height:20px;padding:12px 10px 8px}.add-cat-toggle:focus{text-decoration:none;color:#00a0d2}.add-cat-toggle.is-toggled{padding:10px}.add-cat-toggle.is-toggled .dashicons:before{content:"\f179"}.add-category{border-bottom:1px solid #e5e5e5}.add-category.is-hidden{display:none}.add-category .add-cat-submit{position:absolute;top:0;left:0;border:0;-webkit-border-radius:0;border-radius:0;padding:12px 16px;background:#f7f7f7;border-right:1px solid #f1f1f1}.alert,.scan{border-bottom:1px solid #e5e5e5}.add-category .add-cat-submit:active,.add-category .add-cat-submit:focus,.add-category .add-cat-submit:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff}.postform-wrapper{padding:12px}.postform{display:block;margin:0;width:100%;height:34px;-webkit-border-radius:0;border-radius:0;border:1px solid #e5e5e5;background:#fff;-webkit-background-size:20px 20px;background-size:20px 20px;overflow:hidden;line-height:21px;text-decoration:none;vertical-align:top;cursor:pointer;outline:0}.postform:focus{border-color:#0073aa;-webkit-box-shadow:0 0 0 3px #00a0d2;box-shadow:0 0 0 3px #00a0d2;outline:0;-moz-outline:none;-moz-user-focus:ignore}.postform::-ms-expand{display:none}.postform::-ms-value{background:0 0;color:#727272}.postform:-moz-focusring{color:transparent;text-shadow:0 0 0 #727272}.categories-select,.categories-select ul{margin:0;padding:0;list-style:none}.category{position:relative;display:block;padding:13px 16px 14px;cursor:pointer;background:#fff}.category.selected:focus,.category:focus{outline:0;background:#00a0d2;color:#fff}.category.selected{-webkit-box-shadow:inset -6px 0 0 #00a0d2;box-shadow:inset -6px 0 0 #00a0d2;background:#E9F5F9}.category.selected:after{display:inline-block;content:"\f147";position:absolute;top:13px;left:0;width:20px;height:20px;margin-left:10px;font-size:20px;line-height:1;text-decoration:inherit;color:#23282d;text-align:center;transition:color .1s ease-in 0}.category.selected:focus:after{color:#fff}.categories-select ul .category{padding-right:24px}.categories-select ul ul .category{padding-right:32px}.categories-select ul ul ul .category{padding-right:40px}.categories-select ul ul ul ul .category{padding-right:48px}.categories-select ul ul ul ul ul .category{padding-right:56px}.categories-select ul ul ul ul ul ul .category{padding-right:64px}.categories-select .is-hidden{display:none}.categories-select .is-hidden.searched-parent{display:block}.categories-search-wrapper{position:relative}.categories-search-wrapper.is-hidden{display:none}.categories-search-wrapper label{position:absolute;top:50%;left:10px;margin-top:-10px;color:#9ea7af}html{overflow:auto;background:#fff;-webkit-box-shadow:10px 0 0 rgba(0,0,0,.3);box-shadow:10px 0 0 rgba(0,0,0,.3)}body{overflow-x:hidden;height:100%}@media (max-width:900px){body{font-size:16px}}.lt-ie9{overflow:visible}.adminbar{position:relative;width:100%;padding:0 .8em;min-height:3.2em;background:#23282d;color:#fff;z-index:9999}.adminbar:after,.adminbar:before{content:"";display:table}.adminbar .dashicons{color:#999}.adminbar button{position:absolute;top:50%;left:6px;margin-top:-13px}@media (max-width:320px){body{font-size:14px}.adminbar{min-height:45px}}.current-site{margin-top:.5625em;font-size:16px;line-height:44px;font-weight:400;overflow:hidden}@media (max-width:600px){.current-site{margin:3px 0 0}}.current-site-link{text-decoration:none}.current-site-link:focus{outline:0}.current-site-link:focus .current-site-name{text-decoration:underline}.current-site-name{color:#ededed}@media (max-width:320px){.current-site{margin:0;font-size:14px}.current-site-name{font-weight:600}}.current-site .dashicons-wordpress{position:relative;top:-1px;margin-left:10px;vertical-align:middle}.options,.options.closed .on-open,.options.open .on-closed{display:none}@media (max-width:900px){.options{display:block}}.options-panel-back.is-hidden{display:none}.options:focus .dashicons{color:#fff;text-decoration:none}.options .dashicons{margin-top:3px}.options{color:#00a0d2}.alert{position:relative;margin:0;padding:16px 50px;font-size:14px}.alert:before{content:'';position:absolute;top:50%;right:30px;width:8px;height:8px;margin-top:-4px;-webkit-border-radius:50%;border-radius:50%;background:#00a0d2}@media (max-width:600px){.alert{padding:16px 35px}.alert:before{right:15px}}.alert.is-error:before{background:red}.scan{position:relative}.scan-url{display:block;border:0;padding:.85714em 1.07143em;font-size:14px;width:100%}.editor-wrapper:after,.editor-wrapper:before,.wrapper:after,.wrapper:before{content:"";display:table}@media (max-width:600px){.scan-url{font-size:16px}}.scan-submit{position:absolute;top:0;left:0;bottom:0;padding:0 1.07143em;background:#f7f7f7;border:0;border-right:1px solid #f1f1f1;-webkit-border-radius:0;border-radius:0;color:#555;font-size:14px;line-height:1.6}.scan-submit:focus,.scan-submit:hover{background:#2991b7;border-color:#20708e;color:#fff;outline:0}.scan-submit:active{background:#2581a2;border-color:#20708e;color:#fff}.scan-submit:visited{color:#555}.wrapper{position:relative;margin-bottom:60px;margin-left:320px}@media (max-width:900px){.scan form{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.scan.is-hidden form{opacity:.2;pointer-events:none}.wrapper{margin:0;width:100%}}.editor-wrapper{overflow:auto;float:right;width:100%}.editor{padding:0 1.5em 4.75em;max-width:700px;margin:0 auto}.spinner{height:20px;width:20px;display:inline-block;visibility:hidden;background:url(../images/spinner.gif) center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);line-height:1;vertical-align:middle}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}}.spinner.is-active{visibility:visible}@media (min-width:901px){.editor{max-width:760px}}@media (max-width:320px){.editor{padding:0}}.post-title,.post-title-placeholder{margin:0;padding:.83em 0;width:100%;border-bottom:1px solid #e5e5e5;font-size:32px;line-height:1.4;font-weight:700}.post-title-placeholder:active,.post-title-placeholder:focus,.post-title:active,.post-title:focus{outline:0;-webkit-box-shadow:inset 0 -3px 0 #00a0d2;box-shadow:inset 0 -3px 0 #00a0d2;border-color:#00a0d2}@media (max-width:900px){.post-title,.post-title-placeholder{font-size:24px}}@media (max-height:400px){.post-title,.post-title-placeholder{padding:15px 0;font-size:16px}}@media (max-width:320px){.post-title,.post-title-placeholder{font-size:16px;font-weight:600;padding:1.14286em 1.42857em}}.post-title{background:url(data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==);background:0 0,none}.post-title:before{content:'\a0';display:inline-block;width:0;speak:none}.post-title-placeholder{position:absolute;border:0;color:#9ea7af;z-index:-1}.is-embed.is-audio:active:before,.is-embed.is-audio:focus:before,.is-embed.is-audio:hover:before,.is-embed.is-tweet:active:before,.is-embed.is-tweet:focus:before,.is-embed.is-tweet:hover:before,.is-embed:before,.suggested-media-thumbnail:active,.suggested-media-thumbnail:focus,.suggested-media-thumbnail:hover{color:#fff}.post-title-placeholder.is-hidden{display:none}.media-list-container{position:relative;padding:2px 0;border-bottom:1px solid #e5e5e5;display:none}.media-list-inner-container{overflow:auto;max-height:150px;max-height:40vw}.media-list-container.has-media{display:block}.media-list-inner-container:after,.media-list-inner-container:before{content:"";display:table}.media-list{margin:0;padding:0}@media (min-width:321px){.media-list-inner-container{max-height:250px;max-height:40vw}}.wppt-all-media-list{list-style:none;margin:0;padding:0}.is-embed:focus,.suggested-media-thumbnail:focus{outline:0;-webkit-box-shadow:inset 0 0 0 3px #00a0d2;box-shadow:inset 0 0 0 3px #00a0d2}.suggested-media-thumbnail{position:relative;display:block;float:right;width:16.66%;padding:16.66% 16.66% 0 0;background-position:center;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover;background-color:#d8d8d8;color:#fff;color:rgba(255,255,255,.6);cursor:pointer}.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{display:inline-block;position:absolute;font-size:20px;line-height:1;text-decoration:inherit;font-weight:400;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0}.suggested-media-thumbnail:before{right:50%;top:50%;margin:-20px -20px 0 0;font-size:40px}.suggested-media-thumbnail:after{content:"\f132";left:3%;bottom:2%}@media (min-width:601px){.media-list-inner-container{max-height:200px;max-height:18.75vw}.suggested-media-thumbnail{width:12.5%;padding:12.5% 12.5% 0 0}}.is-embed:before{content:"\f104";color:rgba(255,255,255,.9)}.is-embed.is-video{background-color:#23282d}.is-embed.is-video:active:before,.is-embed.is-video:focus:before,.is-embed.is-video:hover:before{color:rgba(255,255,255,.2)}.is-embed.is-video:before{content:"\f236"}.is-embed.is-audio{background-color:#ff7d44}.is-embed.is-audio:before{content:"\f127"}.is-embed.is-tweet{background-color:#55acee}.is-embed.is-tweet:before{content:"\f301"}.no-media{margin:0;padding:0;border:0}.press-this-actions{position:fixed;bottom:0;right:0;width:100%;background:#f1f1f1;background:rgba(241,241,241,.9);border-top:1px solid #e5e5e5}.add-media{float:right;margin:14px 30px 14px 0;font-size:0}@media (max-width:320px){.add-media{margin:10px 10px 10px 0}}.insert-media{color:#9ea7af;float:right;margin:0;padding:0;border:0;border-left:1px solid #e5e5e5;-webkit-border-radius:0;border-radius:0;background:0 0;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.insert-media:active,.insert-media:focus,.insert-media:hover{margin:0;background:0 0;border-color:#e5e5e5;color:#23282d}.insert-media:active,.insert-media:focus{outline:0;color:#00a0d2;text-decoration:none}.insert-media .dashicons{padding:11px;width:63px;height:58px;font-size:40px}@media (max-width:320px){.insert-media .dashicons{width:55px;height:49px;padding:14px;font-size:20px}}#wp-link-wrap,.post-actions{font-size:13px}.post-actions{float:left;margin:14px 0 14px 30px}@media (max-width:320px){.post-actions{margin:10px 0 10px 10px}}.edit-post-link{font-size:13px;display:inline-block;text-decoration:none;padding:0 10px}.publish-button .saving-draft,.publish-button.is-saving .publish{display:none}.publish-button.is-saving .saving-draft{display:inline}.editor .wp-media-buttons{float:none}.editor div.mce-toolbar-grp{padding:.71429em 0;background:0 0;border:0}@media (max-height:400px),(max-width:320px){.editor div.mce-toolbar-grp{padding:0}}.mce-stack-layout:after,.mce-stack-layout:before{content:"";display:table}.mce-container.mce-toolbar{float:right}.mce-container.mce-toolbar:nth-child(2){float:left}@media (max-width:600px){.mce-first .mce-btn:nth-child(3),.mce-first .mce-btn:nth-child(4){position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.mce-first .mce-btn:nth-child(3):focus,.mce-first .mce-btn:nth-child(4):focus{position:static;margin:1px;padding:inherit;height:auto;width:auto;overflow:visible;clip:auto;border:1px solid #999}}#wp-link-wrap input[type=text]{padding:3px 5px;margin:1px}@media screen and (max-width:782px){#wp-link-wrap{font-size:14px}#wp-link-wrap input[type=text]{padding:6px 10px}}#wp-link-wrap .howto{color:#666;font-style:italic}.options-panel{position:relative;float:left;margin-left:-320px;width:320px;border-right:1px solid #e5e5e5;font-size:14px;-webkit-box-shadow:-5001px 5000px 0 5000px #fff,-5000px 5000px 0 5000px #e5e5e5;box-shadow:-5001px 5000px 0 5000px #fff,-5000px 5000px 0 5000px #e5e5e5;outline:0}.options-panel-back{position:absolute;top:0;left:0;bottom:0;width:320px;outline:0}@media (max-width:900px){.press-this-actions{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out}.press-this-actions.is-hidden{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.options-panel{background:#fff;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out}.options-panel.is-hidden{visibility:hidden}.options-panel.is-off-screen{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@media (max-width:320px){.options-panel{margin-left:-100%;width:100%;border:0;-webkit-box-shadow:-5001px 5000px 0 5000px #fff;box-shadow:-5001px 5000px 0 5000px #fff}.options-panel-back{width:100%}}.post-options{background:#fff;position:absolute;left:0;width:100%;overflow-x:hidden}.post-options .post-option-contents{margin-right:3px;color:#32373c}.post-option-forward:before{position:absolute;top:50%;left:8px;margin-top:-10px;content:"\f341"}.post-option,.setting-modal,.setting-title{position:relative}.post-option-back:before{content:"\f345"}.lt-ie9 .options-panel,.lt-ie9 .post-options{border-right:1px solid #e5e5e5}.lt-ie9 .post-options.is-off-screen{border:0}.modal-close,.post-options .post-option{border-bottom:1px solid #e5e5e5;text-decoration:none;text-align:right}.post-options .post-option{display:block;padding:13px 14px 13px 37px;color:#9ea7af;transition:transform .3s ease-in-out}.post-options .post-option,.setting-modal{width:100%;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out}.post-options .post-option:focus{box-shadow:inset -5px 0 0 #00a0d2}.modal-close:focus,.post-options .post-option:focus{outline:0;-webkit-box-shadow:inset -5px 0 0 #00a0d2}.is-off-screen>.post-option{left:100%}.is-hidden>.post-option{visibility:hidden}.post-option-title{display:inline-block;margin:0 8px 0 0;font-size:14px;font-weight:400}.setting-modal{top:0;right:0;transition:transform .3s ease-in-out}.setting-modal.is-hidden{visibility:hidden;height:0}.setting-modal.is-off-screen{right:100%}@media (min-width:1px){.is-off-screen>.post-option{left:auto;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.setting-modal.is-off-screen{right:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}}.modal-close{display:block;width:100%;padding:13px 14px;color:#00a0d2}.modal-close:focus{box-shadow:inset -5px 0 0 #00a0d2}.setting-title{top:-1px;margin-right:11px}#pressthis{color:#404040;resize:none;padding-top:30px;font-size:16px}.wp-editor-wrap .quicktags-toolbar{background:0 0;border:none}.wp-editor-wrap .wp-editor-tools{z-index:0}.wp-editor-wrap .wp-editor-tabs{padding:2px}.wp-editor-wrap .wp-switch-editor{top:0;margin:3px 5px 0 0;padding:3px 8px;background:#f5f5f5;color:#555;border-color:#ccc}.wp-editor-wrap .wp-switch-editor:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-editor-wrap.html-active .switch-html,.wp-editor-wrap.tmce-active .switch-tmce{background:#fff;border-color:#d8d8d8} \ No newline at end of file diff --git a/wp-admin/css/press-this.css b/wp-admin/css/press-this.css new file mode 100644 index 0000000000..b99ba1a7e0 --- /dev/null +++ b/wp-admin/css/press-this.css @@ -0,0 +1,2215 @@ +/* +Press This styles :) +*/ + + +/** +* Normalize +* +* normalize.css v3.0.0 | MIT License | git.io/normalize +*/ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { + *, + *:before, + *:after { + -webkit-font-smoothing: antialiased; + } +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden], +template { + display: none; +} + +a { + background: transparent; +} + +a:active, +a:hover { + outline: 0; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +mark { + background: #ff0; + color: #000; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 1em 40px; +} + +hr { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +pre { + overflow: auto; +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} + +button { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input { + line-height: normal; +} + +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +fieldset { + border: 0; + margin: 0; + padding: 0; +} + +legend { + border: 0; + padding: 0; +} + +textarea { + overflow: auto; +} + +optgroup { + font-weight: bold; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} + +.clearfix:before, +.clearfix:after { + content: ""; + display: table; +} +.clearfix:after { + clear: both; +} + +.hide-if-js { + display: none; +} + +.screen-reader-text { + position: absolute; + margin: -1px; + padding: 0; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; +} + + +/** +* Typography +* +* Base element typographic styles. +*/ +body, +button, +input, +select, +textarea { + color: #404040; + font-family: "Open Sans", Helvetica, Arial, sans-serif; + font-size: 20px; + font-weight: 400; + line-height: 1.6; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + clear: both; +} + +p { + margin-bottom: 1.5em; +} + +b, +strong { + font-weight: 700; +} + + +/** +* Buttons +* +* Pushing buttons is what I do. +*/ + +.button-subtle, +.scan-submit { + display: inline-block; + margin: 0; + padding: 0 10px 1px; + border-width: 1px; + border-style: solid; + -webkit-border-radius: 3px; + border-radius: 3px; + font-size: 13px; + line-height: 2; + text-decoration: none; + white-space: nowrap; + cursor: pointer; + -webkit-appearance: none; +} + +.button-subtle { + background: none; + border: 0; + color: #0073aa; +} + +.button-subtle:visited { + color: #0073aa; +} + +.button-subtle:focus, +.button-subtle:hover, +.button-subtle:active, +.edit-post-link:focus, +.edit-post-link:hover, +.edit-post-link:active { + color: #00a0d2; +} + +.button-subtle:focus, +.button-subtle:active, +.edit-post-link:focus, +.edit-post-link:active { + outline: 0; + text-decoration: underline; +} + +.preview-button { + margin-right: 5px; +} + +.button-reset { + margin: 0; + padding: 0; + border: 0; + background: none; + cursor: pointer; + -webkit-appearance: none; +} + +.button-reset:focus { + outline: 0; +} + +.button-link { + margin: 0; + padding: 0; + border: 0; + background: none; + color: #0073aa; + cursor: pointer; + -webkit-appearance: none; +} + +.button-link:hover, +.button-link:active, +.button-link:focus { + color: #00a0d2; + text-decoration: underline; +} + +.split-button { + position: relative; + display: inline-block; + vertical-align: middle; +} + +.split-button-body { + display: none; + position: absolute; + bottom: 39px; + right: 0; + border: 1px solid #ddd; + background-color: #fff; + min-width: 180px; + max-width: 100%; + margin: 0; + padding: 8px; + list-style: none; + -webkit-box-shadow: 1px 0 4px rgba( 0, 0, 0, 0.15 ); + box-shadow: 1px 0 4px rgba( 0, 0, 0, 0.15 ); +} + +.split-button-body:before, +.split-button-body:after { + position: absolute; + right: 12px; + display: block; + width: 0; + height: 0; + border-style: solid; + border-color: transparent; + content: ''; +} + +.split-button-body:before { + bottom: -18px; + border-top-color: #ccc; + border-width: 9px; + right: 11px; +} + +.split-button-body:after { + bottom: -16px; + border-top-color: #fff; + border-width: 8px; +} + +.split-button-body .split-button-option { + display: block; + padding: 5px 15px; + margin: 0; + width: 100%; + text-align: left; +} + +.is-open .split-button-body { + display: block; +} + +.split-button-primary, +.split-button-toggle { + -webkit-border-radius: 0; + border-radius: 0; + display: block; + margin: 0; + font-size: 13px; + text-decoration: none; + white-space: nowrap; + cursor: pointer; + -webkit-appearance: none; + line-height: 2; + padding: 0 10px 1px; + background: #00a0d2; + border-color: #0073aa; + border-width: 1px; + border-style: solid; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5 ), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + color: #fff; +} + +.split-button-primary { + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + border-right: 0 none; + float: left; +} + +.split-button-toggle { + padding: 0; + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + border-left: 0 none; + float: right; +} + +.split-button-toggle i { + margin: 4px 20px 3px 0; + padding: 0 10px; + border-left: 1px solid #fff; +} + +.split-button-primary:hover, +.split-button-toggle:hover { + outline: none; + background: #0091cd; + border-color: #0073aa; +} + +.split-button-primary:focus, +.split-button-toggle:focus { + outline: none; + border-color: #0e3950; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.split-button-primary:active, +.split-button-toggle:active { + background: #0073aa; + border-color: #005082; + color: rgba( 255, 255, 255, 0.95 ); + -webkit-box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); +} + +/** +* Forms +* +* So many input types. +*/ +button, +input, +select, +textarea { + font-size: 100%; + margin: 0; + vertical-align: baseline; + *vertical-align: middle; +} + +[type="checkbox"], +[type="radio"] { + padding: 0; +} + +[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +[type="text"], +[type="email"], +[type="url"], +[type="password"], +[type="search"], +textarea { + padding: 0.4em 0.75em; + color: #32373c; + border: 1px solid #ccc; +} + +[type="text"]:focus, +[type="email"]:focus, +[type="url"]:focus, +[type="password"]:focus, +[type="search"]:focus, +textarea:focus { + color: #32373c; + outline: 0; +} + +textarea { + overflow: auto; + padding-left: 3px; + vertical-align: top; +} + + +/** +* Links +*/ +a { + color: #0073aa; +} + +a:visited { + color: #0073aa; +} + +a:hover, +a:focus, +a:active { + color: #00a0d2; +} + + +/** +* Lists +*/ +ul, +ol { + margin: 0 0 1.5em 3em; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li > ul, +li > ol { + margin-bottom: 0; + margin-left: 1.5em; +} + +dt { + font-weight: 700; +} + +dd { + margin: 0 1.5em 1.5em; +} + + +/** +* Post formats +* +* Complete styles for post formats UI +*/ +/* TODO if we remove the
during merge, this can go. */ +#post-formats-select br { + display: none; +} + +.post-format { + width: 1px; + height: 1px; + position: absolute; + top: -9999px; +} + +.lt-ie9 .post-format { + margin: 17px 12px 0 13px; + width: auto; + height: auto; + position: static; + top: auto; + float: left; + width: 16px; + height: 16px; +} + +.post-format-icon { + position: relative; + display: block; + padding: 13px 2px 14px 13px; + cursor: pointer; +} + +.post-format-icon:before, +.post-format-icon:after { + content: ""; + display: inline-block; + width: 20px; + height: 20px; + margin-right: 10px; + font-size: 20px; + line-height: 1; + font-family: dashicons; + text-decoration: inherit; + color: #9ea7af; + font-weight: 400; + font-style: normal; + vertical-align: top; + text-align: center; + -webkit-transition: color .1s ease-in 0; + transition: color .1s ease-in 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.post-format-icon:before { + content: "\f109"; +} + +.post-format-icon:after { + display: none; + content: "\f147"; + float: right; +} + +.post-format:checked + .post-format-icon { + -webkit-box-shadow: inset 6px 0 0 #00a0d2; + box-shadow: inset 6px 0 0 #00a0d2; + background: rgba(46, 162, 204, 0.1); +} + +.post-format:checked + .post-format-icon:before, +.post-format:checked + .post-format-icon:after { + color: #32373c; +} + +.post-format:focus + .post-format-icon { + background: #00a0d2; + color: #fff; +} + +.post-format:focus + .post-format-icon:before, +.post-format:focus + .post-format-icon:after { + color: #fff; +} + +.post-format:checked + .post-format-icon:after { + display: block; +} + +.lt-ie9 .post-format-icon { + margin-left: 16px; +} + +.post-format-aside:before { + content: "\f123"; +} + +.post-format-image:before { + content: "\f128"; +} + +.post-format-video:before { + content: "\f126"; +} + +.post-format-audio:before { + content: "\f127"; +} + +.post-format-quote:before { + content: "\f122"; +} + +.post-format-link:before { + content: "\f103"; +} + +.post-format-gallery:before { + content: "\f161"; +} + + +/** +* Tags +* +* Complete styles for tags UI +*/ +.tagsdiv p { + margin: 0; +} + +.tagsdiv .ajaxtag { + position: relative; +} + +.tagsdiv .newtag { + display: block; + position: relative; + padding: 11px 58px 11px 16px; + width: 100%; + border: 0; + border-bottom: 1px solid #e5e5e5; + font-size: 16px; +} + +.tagsdiv .tagadd { + position: absolute; + top: 0; + right: 0; + bottom: 1px; + border: 0; + -webkit-border-radius: 0; + border-radius: 0; + margin: 0; + padding: 0 16px; + background: #f7f7f7; + border-left: 1px solid #f1f1f1; + -webkit-box-shadow: none; + box-shadow: none; +} + +.tagsdiv .tagadd:hover, +.tagsdiv .tagadd:active, +.tagsdiv .tagadd:focus { + outline: 0; + background: #2991b7; + border-color: #20708e; + color: #fff; + -webkit-box-shadow: none; + box-shadow: none; +} + +.tagsdiv .howto { + color: #727272; + font-style: italic; + margin: 10px 0 6px 16px; +} + + +/* Tag hint TODO needed? */ +/* Tag suggestions */ +.ac_results { + padding: 0; + margin: -1px 0 0 -1px; + list-style: none; + position: absolute; + z-index: 10000; + display: none; + border: 1px solid #d8d8d8; + background-color: #fff; + font-size: 14px; +} + +.ac_results li { + padding: 6px 16px; + white-space: nowrap; + color: #101010; + text-align: left; +} + +.ac_results .ac_over { + background-color: #e5e5e5; + background-color: #00a0d2; + color: #fff; + cursor: pointer; +} + +.ac_match { + text-decoration: underline; +} + +/* Tags */ +.tagchecklist { + padding: 16px 28px 5px; +} + +.tagchecklist:before, +.tagchecklist:after { + content: ""; + display: table; +} + +.tagchecklist:after { + clear: both; +} + +.tagchecklist span { + display: block; + margin-right: 25px; + float: left; + font-size: 13px; + line-height: 1.8; + white-space: nowrap; + cursor: default; +} + +@media (max-width: 600px) { + .tagchecklist span { + margin-bottom: 15px; + font-size: 16px; + line-height: 1.3; + } +} + +.tagchecklist .ntdelbutton { + margin: 1px 0 0 -17px; + cursor: pointer; + width: 20px; + height: 20px; + display: block; + float: left; + text-indent: 0; + overflow: hidden; + position: absolute; + outline: 0; +} + +.tagchecklist .ntdelbutton:before { + content: '\f153'; + display: block; + margin: 2px 0; + height: 20px; + width: 20px; + background: 0 0; + color: #9ea7af; + font: 400 16px/1 dashicons; + text-align: center; + speak: none; + -webkit-font-smoothing: antialiased; +} + +.tagchecklist .ntdelbutton:focus:before { + color: #00a0d2; +} + + +/* THE TAG CLOUD. */ +.tagsdiv + p { + margin: 0; +} + +.tagcloud-link { + display: block; + padding: 0 16px; + text-decoration: none; + outline: 0; +} + +.tagcloud-link:focus { + text-decoration: underline; +} + +.popular-tags { + border: none; + line-height: 2em; + padding: 8px 12px 12px; + text-align: justify; +} + +.popular-tags a { + padding: 0 3px; +} + +.the-tagcloud { + margin: 0; + padding: 16px; +} + +.the-tagcloud a { + text-decoration: none; + outline: 0; +} + +.the-tagcloud a:focus { + text-decoration: underline; +} + +.tagcloud h3 { + margin: 2px 0 12px; +} + + +/** +* Categories +* +* Complete styles for post categories UI +*/ +input[type="search"].categories-search, +.add-category-name { + display: block; + width: 100%; + padding: 0.85714em 1.07143em; + border: 0; + -webkit-border-radius: 0; + border-radius: 0; + border-bottom: 1px solid #e5e5e5; + font-size: 14px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +@media (max-width: 600px) { + input[type="search"].categories-search, + .add-category-name { + /* Needs to be 16px to prevent zooming on iOS. Guh. */ + font-size: 16px; + } +} + +.add-cat-toggle { + float: right; + margin-top: -45px; + line-height: 20px; + padding: 12px 10px 8px; +} + +.add-cat-toggle:focus { + text-decoration: none; + color: #00a0d2; +} + +.add-cat-toggle.is-toggled { + padding: 10px; +} + +.add-cat-toggle.is-toggled .dashicons:before { + content: "\f179"; +} + +.add-category { + position: relative; + border-bottom: 1px solid #e5e5e5; +} + +.add-category.is-hidden { + display: none; +} + +.add-category .add-cat-submit { + position: absolute; + top: 0; + right: 0; + border: 0; + -webkit-border-radius: 0; + border-radius: 0; + padding: 12px 16px; + background: #f7f7f7; + border-left: 1px solid #f1f1f1; +} + +.add-category .add-cat-submit:hover, +.add-category .add-cat-submit:active, +.add-category .add-cat-submit:focus { + outline: 0; + background: #2991b7; + border-color: #20708e; + color: #fff; +} + +/* Parent category select */ +.postform-wrapper { + padding: 12px; +} + +.postform { + display: block; + margin: 0; + width: 100%; + height: 34px; + border: 0; + -webkit-border-radius: 0; + border-radius: 0; + border: 1px solid #e5e5e5; + background: #fff; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + overflow: hidden; + line-height: 21px; + text-overflow: ellipsis; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + cursor: pointer; + outline: 0; +} + +.postform:focus { + border-color: #0073aa; + -webkit-box-shadow: 0 0 0 3px #00a0d2; + box-shadow: 0 0 0 3px #00a0d2; + outline: 0; + -moz-outline: none; + -moz-user-focus: ignore; +} + +.postform::-ms-expand { + display: none; +} + +.postform::-ms-value { + background: none; + color: #727272; +} + +.postform:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #727272; +} + +/* Category list */ +.categories-select { + margin: 0; + padding: 0; + list-style: none; +} + +.categories-select ul { + margin: 0; + padding: 0; + list-style: none; +} + +.category { + position: relative; + display: block; + padding: 13px 16px 14px 16px; + cursor: pointer; + background: #fff; +} + +.category:focus, +.category.selected:focus { + outline: 0; + background: #00a0d2; + color: #fff; +} + +.category.selected { + -webkit-box-shadow: inset 6px 0 0 #00a0d2; + box-shadow: inset 6px 0 0 #00a0d2; + background: #E9F5F9; +} + +.category.selected:after { + display: inline-block; + content: "\f147"; + position: absolute; + top: 13px; + right: 0; + width: 20px; + height: 20px; + margin-right: 10px; + font-size: 20px; + line-height: 1; + font-family: dashicons; + text-decoration: inherit; + color: #23282d; + font-weight: 400; + font-style: normal; + vertical-align: top; + text-align: center; + -webkit-transition: color .1s ease-in 0; + transition: color .1s ease-in 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.category.selected:focus:after { + color: #fff; +} + +.categories-select ul .category { + padding-left: 24px; +} + +.categories-select ul ul .category { + padding-left: 32px; +} + +.categories-select ul ul ul .category { + padding-left: 40px; +} + +.categories-select ul ul ul ul .category { + padding-left: 48px; +} + +.categories-select ul ul ul ul ul .category { + padding-left: 56px; +} + +.categories-select ul ul ul ul ul ul .category { + padding-left: 64px; +} + +.categories-select .is-hidden { + display: none; +} + +.categories-select .is-hidden.searched-parent { + display: block; +} + +/* Category search */ +.categories-search-wrapper { + position: relative; +} + +.categories-search-wrapper.is-hidden { + display: none; +} + +.categories-search-wrapper label { + position: absolute; + top: 50%; + right: 10px; + margin-top: -10px; + color: #9ea7af; +} + + +/** +* Main +*/ +html { + overflow: auto; +} + +body { + overflow-x: hidden; + height: 100%; +} + +html { + background: #fff; + -webkit-box-shadow: -10px 0 0 rgba(0, 0, 0, 0.3); + box-shadow: -10px 0 0 rgba(0, 0, 0, 0.3); +} + +@media (max-width: 900px) { + body { + font-size: 16px; + } +} + +@media (max-width: 320px) { + body { + font-size: 14px; + } +} + +.lt-ie9 { + overflow: visible; +} + +.adminbar { + position: relative; + width: 100%; + padding: 0 0.8em; + min-height: 3.2em; + background: #23282d; + color: #fff; + z-index: 9999; +} + +.adminbar:before, +.adminbar:after { + content: ""; + display: table; +} + +.adminbar:after { + clear: both; +} + +.adminbar .dashicons { + color: #999; +} + +.adminbar button { + position: absolute; + top: 50%; + right: 6px; + margin-top: -13px; +} + +@media (max-width: 320px) { + .adminbar { + min-height: 45px; + } +} + +.current-site { + margin-top: 0.5625em; + font-size: 16px; + line-height: 44px; + font-weight: 400; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +@media (max-width: 600px) { + .current-site { + margin: 3px 0 0; + } +} + +@media (max-width: 320px) { + .current-site { + margin: 0; + font-size: 14px; + } +} + +.current-site-link { + text-decoration: none; +} + +.current-site-link:focus { + outline: 0; +} + +.current-site-link:focus .current-site-name{ + text-decoration: underline; +} + +.current-site-name { + color: #ededed; +} + +@media (max-width: 320px) { + .current-site-name { + font-weight: 600; + } +} + +.current-site .dashicons-wordpress { + position: relative; + top: -1px; + margin-right: 10px; + vertical-align: middle; +} + +.options, +.options.open .on-closed, +.options.closed .on-open { + display: none; +} + +@media (max-width: 900px) { + .options { + display: block; + } +} + +.options-panel-back.is-hidden { + display: none; +} + +.options:focus .dashicons { + color: #fff; + text-decoration: none; +} + +.options .dashicons { + margin-top: 3px; +} + +.options { + color: #00a0d2; +} + +.alert { + position: relative; + margin: 0; + padding: 16px 50px; + border-bottom: 1px solid #e5e5e5; + font-size: 14px; +} + +.alert:before { + content: ''; + position: absolute; + top: 50%; + left: 30px; + width: 8px; + height: 8px; + margin-top: -4px; + -webkit-border-radius: 50%; + border-radius: 50%; + background: #00a0d2; +} + +@media (max-width: 600px) { + .alert { + padding: 16px 35px; + } + .alert:before { + left: 15px; + } +} + +.alert.is-error:before { + background: red; +} + +.scan { + position: relative; + border-bottom: 1px solid #e5e5e5; +} + +@media (max-width: 900px) { + .scan form { + -webkit-transition: opacity .3s ease-in-out; + transition: opacity .3s ease-in-out; + } + .scan.is-hidden form { + opacity: .2; + pointer-events: none; + } +} + +.scan-url { + display: block; + border: 0; + padding: 0.85714em 1.07143em; + font-size: 14px; + width: 100%; +} + +@media (max-width: 600px) { + .scan-url { + font-size: 16px; + } +} + +.scan-submit { + position: absolute; + top: 0; + right: 0; + bottom: 0; + padding: 0 1.07143em; + background: #f7f7f7; + border-color: #dedede; + border: 0; + border-left: 1px solid #f1f1f1; + -webkit-border-radius: 0; + border-radius: 0; + color: #555; + font-size: 14px; + line-height: 1.6; +} + +.scan-submit:hover, +.scan-submit:focus { + background: #2991b7; + border-color: #20708e; + color: #fff; + outline: 0; +} + +.scan-submit:active { + background: #2581a2; + border-color: #20708e; + color: #fff; +} + +.scan-submit:visited { + color: #555; +} + +.wrapper { + position: relative; + margin-bottom: 60px; + margin-right: 320px; +} + +.wrapper:before, +.wrapper:after { + content: ""; + display: table; +} + +.wrapper:after { + clear: both; +} + +@media (max-width: 900px) { + .wrapper { + margin: 0; + width: 100%; + } +} + +.editor-wrapper { + overflow: auto; + float: left; + width: 100%; +} + +.editor-wrapper:before, +.editor-wrapper:after { + content: ""; + display: table; +} + +.editor-wrapper:after { + clear: both; +} + +.editor { + padding: 0 1.5em 4.75em; + max-width: 700px; + margin: 0 auto; +} + +.spinner { + height: 20px; + width: 20px; + display: inline-block; + visibility: hidden; + background: url(../images/spinner.gif) no-repeat center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + opacity: 0.7; + filter: alpha(opacity=70); + line-height: 1; + vertical-align: middle; +} + +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + .spinner { + background-image: url(../images/spinner-2x.gif); + } +} + +.spinner.is-active { + visibility: visible; +} + +/* Make the text inside the editor textarea white. Prevents a "flash" on loading the page */ +#pressthis { + color: #fff; +} + +@media (min-width: 901px) { + .editor { + max-width: 760px; + } +} + +@media (max-width: 320px) { + .editor { + padding: 0; + } +} + +.post-title, +.post-title-placeholder { + margin: 0; + padding: .83em 0; + width: 100%; + border-bottom: 1px solid #e5e5e5; + font-size: 32px; + line-height: 1.4; + font-weight: 700; +} + +.post-title:active, +.post-title:focus, +.post-title-placeholder:active, +.post-title-placeholder:focus { + outline: 0; + -webkit-box-shadow: inset 0px -3px 0 #00a0d2; + box-shadow: inset 0px -3px 0 #00a0d2; + border-color: #00a0d2; +} + +@media (max-width: 900px) { + .post-title, + .post-title-placeholder { + font-size: 24px; + } +} + +@media (max-height: 400px) { + .post-title, + .post-title-placeholder { + padding: 15px 0; + font-size: 16px; + } +} + +@media (max-width: 320px) { + .post-title, + .post-title-placeholder { + font-size: 16px; + font-weight: 600; + padding: 1.14286em 1.42857em; + } +} + +.post-title { + /* IE8 fallback */ + background: url(data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==); + background: none, none; +} + +.post-title:before { + /* Keeps empty container from collapsing */ + content: '\a0'; + display: inline-block; + width: 0; + speak: none; +} + +.post-title-placeholder { + position: absolute; + border: 0; + color: #9ea7af; + z-index: -1; +} + +.post-title-placeholder.is-hidden { + display: none; +} + +/* Suggested images */ +.media-list-container { + position: relative; + padding: 2px 0; + border-bottom: 1px solid #e5e5e5; + display: none; +} + +.media-list-inner-container { + overflow: auto; + max-height: 150px; + max-height: 40vw; +} + +.media-list-container.has-media { + display: block; +} + +.media-list-inner-container:before, +.media-list-inner-container:after { + content: ""; + display: table; +} + +.media-list-inner-container:after { + clear: both; +} + +.media-list { + margin: 0; + padding: 0; +} + +@media (min-width: 321px) { + .media-list-inner-container { + max-height: 250px; + max-height: 40vw; + } +} + +@media (min-width: 601px) { + .media-list-inner-container { + max-height: 200px; + max-height: 18.75vw; + } +} + +.wppt-all-media-list { + list-style: none; + margin: 0; + padding: 0; +} + +.suggested-media-thumbnail:focus, +.is-embed:focus { + outline: 0; + -webkit-box-shadow: inset 0 0 0 3px #00a0d2; + box-shadow: inset 0 0 0 3px #00a0d2; +} + +.suggested-media-thumbnail { + position: relative; + display: block; + float: left; + width: 16.66%; + padding: 16.66% 0 0 16.66%; + background-position: center; + background-repeat: no-repeat; + -webkit-background-size: cover; + background-size: cover; + background-color: #d8d8d8; + color: #fff; + color: rgba(255, 255, 255, 0.6); + cursor: pointer; +} + +.suggested-media-thumbnail:hover, +.suggested-media-thumbnail:active, +.suggested-media-thumbnail:focus { + color: #fff; +} + +.suggested-media-thumbnail:before, +.suggested-media-thumbnail:after { + display: inline-block; + position: absolute; + font-size: 20px; + line-height: 1; + font-family: dashicons; + text-decoration: inherit; + font-weight: 400; + font-style: normal; + -webkit-transition: color .1s ease-in 0; + transition: color .1s ease-in 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.suggested-media-thumbnail:before { + left: 50%; + top: 50%; + margin: -20px 0 0 -20px; + font-size: 40px; +} + +.suggested-media-thumbnail:after { + content: "\f132"; + right: 3%; + bottom: 2%; +} + +@media (min-width: 601px) { + .suggested-media-thumbnail { + width: 12.5%; + padding: 12.5% 0 0 12.5%; + } +} + +.is-embed:before { + content: "\f104"; + color: #fff; + color: rgba(255, 255, 255, 0.9); +} + +.is-embed.is-audio:hover:before, +.is-embed.is-audio:active:before, +.is-embed.is-audio:focus:before, +.is-embed.is-tweet:hover:before, +.is-embed.is-tweet:active:before, +.is-embed.is-tweet:focus:before { + color: #fff; +} + +.is-embed.is-video { + background-color: #23282d; +} + +.is-embed.is-video:hover:before, +.is-embed.is-video:active:before, +.is-embed.is-video:focus:before { + color: rgba(255, 255, 255, 0.2); +} + +.is-embed.is-video:before { + content: "\f236"; +} + +.is-embed.is-audio { + background-color: #ff7d44; +} + +.is-embed.is-audio:before { + content: "\f127"; +} + +.is-embed.is-tweet { + background-color: #55acee; +} + +.is-embed.is-tweet:before { + content: "\f301"; +} + +.no-media { + margin: 0; + padding: 0; + border: 0; +} + +/* Actions bar */ +.press-this-actions { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + background: #f1f1f1; + background: rgba(241, 241, 241, 0.9); + border-top: 1px solid #e5e5e5; +} + +@media (max-width: 900px) { + .press-this-actions { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; + } + .press-this-actions.is-hidden { + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); + } +} + +.add-media { + float: left; + margin: 14px 0 14px 30px; + font-size: 0; +} + +@media (max-width: 320px) { + .add-media { + margin: 10px 0 10px 10px; + } +} + +.insert-media { + color: #9ea7af; + float: left; + margin: 0; + padding: 0; + border: 0; + border-right: 1px solid #e5e5e5; + -webkit-border-radius: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: none; + box-shadow: none; + overflow: hidden; +} + +.insert-media:hover, +.insert-media:focus, +.insert-media:active { + margin: 0; + background: none; + border-color: #e5e5e5; + color: #23282d; +} + +.insert-media:focus, +.insert-media:active { + outline: 0; + color: #00a0d2; + text-decoration: none; +} + +.insert-media .dashicons { + padding: 11px; + width: 63px; + height: 58px; + font-size: 40px; +} + +@media (max-width: 320px) { + .insert-media .dashicons { + width: 55px; + height: 49px; + padding: 14px; + font-size: 20px; + } +} + +.post-actions { + float: right; + margin: 14px 30px 14px 0; + font-size: 13px; +} + +@media (max-width: 320px) { + .post-actions { + margin: 10px 10px 10px 0; + } +} + +.edit-post-link { + font-size: 13px; + display: inline-block; + text-decoration: none; + padding: 0 10px; +} + +.publish-button .saving-draft, +.publish-button.is-saving .publish { + display: none; +} + +.publish-button.is-saving .saving-draft { + display: inline; +} + +/* TinyMCE styles */ +.editor .wp-media-buttons { + float: none; +} + +.editor div.mce-toolbar-grp { + padding: 0.71429em 0; + background: none; + border: 0; +} + +@media (max-height: 400px), (max-width: 320px) { + .editor div.mce-toolbar-grp { + padding: 0; + } +} + +.mce-stack-layout:before, +.mce-stack-layout:after { + content: ""; + display: table; +} + +.mce-stack-layout:after { + clear: both; +} + +.mce-container.mce-toolbar { + float: left; +} + +.mce-container.mce-toolbar:nth-child(2) { + float: right; +} + +@media (max-width: 600px) { + .mce-first .mce-btn:nth-child(3), + .mce-first .mce-btn:nth-child(4) { + position: absolute; + margin: -1px; + padding: 0; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; + } + + .mce-first .mce-btn:nth-child(3):focus, + .mce-first .mce-btn:nth-child(4):focus { + position: static; + margin: 1px; + padding: inherit; + height: auto; + width: auto; + overflow: visible; + clip: auto; + border: 1px solid #999; + } +} + +#wp-link-wrap { + font-size: 13px; +} + +#wp-link-wrap input[type="text"] { + padding: 3px 5px; + margin: 1px; +} + +@media screen and (max-width: 782px) { + #wp-link-wrap { + font-size: 14px; + } + + #wp-link-wrap input[type="text"] { + padding: 6px 10px; + } +} + +#wp-link-wrap .howto { + color: #666; + font-style: italic; +} + +/* Options panel (sidebar) */ +.options-panel { + position: relative; + float: right; + margin-right: -320px; + width: 320px; + border-left: 1px solid #e5e5e5; + font-size: 14px; + /* Keeps background the full height of the screen, but only visually. Clicks go through. */ + -webkit-box-shadow: 5001px 5000px 0 5000px #fff, 5000px 5000px 0 5000px #e5e5e5; + box-shadow: 5001px 5000px 0 5000px #fff, 5000px 5000px 0 5000px #e5e5e5; + outline: 0; +} + +.options-panel-back { + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 320px; + outline: 0; +} + +@media (max-width: 900px) { + .options-panel { + background: #fff; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; + } + + .options-panel.is-hidden { + visibility: hidden; + } + + .options-panel.is-off-screen { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } +} + +@media (max-width: 320px) { + .options-panel { + margin-right: -100%; + width: 100%; + border: 0; + -webkit-box-shadow: 5001px 5000px 0 5000px #fff; + box-shadow: 5001px 5000px 0 5000px #fff; + } + + .options-panel-back { + width: 100%; + } +} + +.post-options { + background: #fff; + position: absolute; + right: 0; + width: 100%; + overflow-x: hidden; +} + +.post-options .post-option-contents { + margin-left: 3px; + color: #32373c; +} + +.post-option-forward:before { + position: absolute; + top: 50%; + right: 8px; + margin-top: -10px; + content: "\f345" +} + +.post-option-back:before { + content: "\f341"; +} + +.lt-ie9 .options-panel, +.lt-ie9 .post-options { + border-left: 1px solid #e5e5e5; +} + +.lt-ie9 .post-options.is-off-screen { + border: 0; +} + +.post-option { + position: relative; +} + +.post-options .post-option { + display: block; + width: 100%; + padding: 13px 37px 13px 14px; + border-bottom: 1px solid #e5e5e5; + text-decoration: none; + text-align: left; + color: #9ea7af; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; +} + +.post-options .post-option:focus { + outline: 0; + -webkit-box-shadow: inset 5px 0 0 #00a0d2; + box-shadow: inset 5px 0 0 #00a0d2; +} + +.is-off-screen > .post-option { + right: 100%; +} + +.is-hidden > .post-option { + visibility: hidden; +} + +@media (min-width: 1px) { + .is-off-screen > .post-option { + right: auto; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); + } +} + +.post-option-title { + display: inline-block; + margin: 0 0 0 8px; + font-size: 14px; + font-weight: normal; +} + +.setting-modal { + position: relative; + top: 0; + left: 0; + width: 100%; + overflow: hidden; + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; +} + +.setting-modal.is-hidden { + visibility: hidden; + height: 0; +} + +.setting-modal.is-off-screen { + left: 100%; +} + +@media (min-width: 1px) { + .setting-modal.is-off-screen { + left: 0; + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + } +} + +.modal-close { + display: block; + width: 100%; + padding: 13px 14px; + border-bottom: 1px solid #e5e5e5; + color: #00a0d2; + text-decoration: none; + text-align: left; +} + +.modal-close:focus { + outline: 0; + -webkit-box-shadow: inset 5px 0 0 #00a0d2; + box-shadow: inset 5px 0 0 #00a0d2; +} + +.setting-title { + position: relative; + top: -1px; + margin-left: 11px; +} + +/* Text editor */ +#pressthis { + color: #404040; + resize: none; + padding-top: 30px; + font-size: 16px; +} + +.wp-editor-wrap .quicktags-toolbar { + background: transparent; + border: none; +} + +/* Switch editor buttons */ +.wp-editor-wrap .wp-editor-tools { + z-index: 0; +} + +.wp-editor-wrap .wp-editor-tabs { + padding: 2px; +} + +.wp-editor-wrap .wp-switch-editor { + top: 0; + margin: 3px 0 0 5px; + padding: 3px 8px; + background: #f5f5f5; + color: #555; + border-color: #ccc; +} + +.wp-editor-wrap .wp-switch-editor:hover { + background: #fafafa; + border-color: #999; + color: #23282d; +} + +.wp-editor-wrap.tmce-active .switch-tmce, +.wp-editor-wrap.html-active .switch-html { + background: #fff; + border-color: #d8d8d8; +} diff --git a/wp-admin/css/press-this.min.css b/wp-admin/css/press-this.min.css new file mode 100644 index 0000000000..67e59e1341 --- /dev/null +++ b/wp-admin/css/press-this.min.css @@ -0,0 +1 @@ +pre,textarea{overflow:auto}body,fieldset{margin:0}.screen-reader-text,fieldset,legend,td,th{padding:0}.adminbar:after,.clearfix:after,.editor-wrapper:after,.mce-stack-layout:after,.media-list-inner-container:after,.tagchecklist:after,.wrapper:after,h1,h2,h3,h4,h5,h6{clear:both}b,dt,optgroup,strong{font-weight:700}.current-site,.post-options .post-option,.postform{text-overflow:ellipsis;white-space:nowrap}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){*,:after,:before{-webkit-font-smoothing:antialiased}}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}fieldset,img,legend{border:0}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}.clearfix:after,.clearfix:before{content:"";display:table}.hide-if-js{display:none}.screen-reader-text{position:absolute;margin:-1px;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}body,button,input,select,textarea{color:#404040;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:20px;font-weight:400;line-height:1.6}p{margin-bottom:1.5em}.button-subtle,.scan-submit{display:inline-block;margin:0;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px;font-size:13px;line-height:2;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none}.button-link,.button-reset{cursor:pointer;-webkit-appearance:none;padding:0;border:0;background:0 0}.button-subtle{background:0 0;border:0;color:#0073aa}.button-subtle:visited{color:#0073aa}.button-subtle:active,.button-subtle:focus,.button-subtle:hover,.edit-post-link:active,.edit-post-link:focus,.edit-post-link:hover{color:#00a0d2}.button-subtle:active,.button-subtle:focus,.edit-post-link:active,.edit-post-link:focus{outline:0;text-decoration:underline}.preview-button{margin-right:5px}.button-reset{margin:0}.button-reset:focus{outline:0}.button-link{margin:0;color:#0073aa}.button-link:active,.button-link:focus,.button-link:hover{color:#00a0d2;text-decoration:underline}.split-button{position:relative;display:inline-block;vertical-align:middle}.split-button-body{display:none;position:absolute;bottom:39px;right:0;border:1px solid #ddd;background-color:#fff;min-width:180px;max-width:100%;margin:0;padding:8px;list-style:none;-webkit-box-shadow:1px 0 4px rgba(0,0,0,.15);box-shadow:1px 0 4px rgba(0,0,0,.15)}.split-button-body:after,.split-button-body:before{position:absolute;right:12px;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:''}.split-button-body:before{bottom:-18px;border-top-color:#ccc;border-width:9px;right:11px}.split-button-body:after{bottom:-16px;border-top-color:#fff;border-width:8px}.split-button-body .split-button-option{display:block;padding:5px 15px;margin:0;width:100%;text-align:left}.is-open .split-button-body{display:block}.split-button-primary,.split-button-toggle{-webkit-border-radius:0;border-radius:0;display:block;margin:0;font-size:13px;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none;line-height:2;padding:0 10px 1px;background:#00a0d2;border-color:#0073aa;border-width:1px;border-style:solid;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff}.split-button-primary{-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-right:0 none;float:left}.split-button-toggle{padding:0;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border-left:0 none;float:right}.split-button-toggle i{margin:4px 20px 3px 0;padding:0 10px;border-left:1px solid #fff}.split-button-primary:hover,.split-button-toggle:hover{outline:0;background:#0091cd;border-color:#0073aa}.split-button-primary:focus,.split-button-toggle:focus{outline:0;border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.split-button-primary:active,.split-button-toggle:active{background:#0073aa;border-color:#005082;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline}[type=checkbox],[type=radio]{padding:0}[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}[type=text],[type=email],[type=url],[type=password],[type=search],textarea{padding:.4em .75em;color:#32373c;border:1px solid #ccc}[type=text]:focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=search]:focus,textarea:focus{color:#32373c;outline:0}textarea{padding-left:3px;vertical-align:top}a,a:visited{color:#0073aa}a:active,a:focus,a:hover{color:#00a0d2}ol,ul{margin:0 0 1.5em 3em}ul{list-style:disc}ol{list-style:decimal}li>ol,li>ul{margin-bottom:0;margin-left:1.5em}dd{margin:0 1.5em 1.5em}#post-formats-select br{display:none}.post-format{width:1px;height:1px;position:absolute;top:-9999px}.lt-ie9 .post-format{margin:17px 12px 0 13px;position:static;top:auto;float:left;width:16px;height:16px}.add-category,.post-format-icon,.tagsdiv .ajaxtag,.tagsdiv .newtag{position:relative}.post-format-icon{display:block;padding:13px 2px 14px 13px;cursor:pointer}.post-format-icon:after,.post-format-icon:before{content:"";display:inline-block;width:20px;height:20px;margin-right:10px;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;color:#9ea7af;font-style:normal;text-align:center;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.category.selected:after,.post-format-icon:after,.post-format-icon:before{font-weight:400;vertical-align:top;-webkit-transition:color .1s ease-in 0}.post-format-icon:before{content:"\f109"}.post-format-icon:after{display:none;content:"\f147";float:right}.post-format:checked+.post-format-icon{-webkit-box-shadow:inset 6px 0 0 #00a0d2;box-shadow:inset 6px 0 0 #00a0d2;background:rgba(46,162,204,.1)}.post-format:checked+.post-format-icon:after,.post-format:checked+.post-format-icon:before{color:#32373c}.post-format:focus+.post-format-icon{background:#00a0d2;color:#fff}.post-format:focus+.post-format-icon:after,.post-format:focus+.post-format-icon:before{color:#fff}.post-format:checked+.post-format-icon:after{display:block}.lt-ie9 .post-format-icon{margin-left:16px}.post-format-aside:before{content:"\f123"}.post-format-image:before{content:"\f128"}.post-format-video:before{content:"\f126"}.post-format-audio:before{content:"\f127"}.post-format-quote:before{content:"\f122"}.post-format-link:before{content:"\f103"}.post-format-gallery:before{content:"\f161"}.tagsdiv p{margin:0}.tagsdiv .newtag{display:block;padding:11px 58px 11px 16px;width:100%;border:0;border-bottom:1px solid #e5e5e5;font-size:16px}.tagsdiv .tagadd{position:absolute;top:0;right:0;bottom:1px;border:0;-webkit-border-radius:0;border-radius:0;margin:0;padding:0 16px;background:#f7f7f7;border-left:1px solid #f1f1f1;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .tagadd:active,.tagsdiv .tagadd:focus,.tagsdiv .tagadd:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .howto{color:#727272;font-style:italic;margin:10px 0 6px 16px}.ac_results{padding:0;margin:-1px 0 0 -1px;list-style:none;position:absolute;z-index:10000;display:none;border:1px solid #d8d8d8;background-color:#fff;font-size:14px}.ac_results li{padding:6px 16px;white-space:nowrap;color:#101010;text-align:left}.ac_results .ac_over{background-color:#00a0d2;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}.tagchecklist{padding:16px 28px 5px}.tagchecklist:after,.tagchecklist:before{content:"";display:table}.tagchecklist span{display:block;margin-right:25px;float:left;font-size:13px;line-height:1.8;white-space:nowrap;cursor:default}@media (max-width:600px){.tagchecklist span{margin-bottom:15px;font-size:16px;line-height:1.3}}.tagchecklist .ntdelbutton{margin:1px 0 0 -17px;cursor:pointer;width:20px;height:20px;display:block;float:left;text-indent:0;overflow:hidden;position:absolute;outline:0}.tagchecklist .ntdelbutton:before{content:'\f153';display:block;margin:2px 0;height:20px;width:20px;background:0 0;color:#9ea7af;font:400 16px/1 dashicons;text-align:center;speak:none;-webkit-font-smoothing:antialiased}.category.selected:after,.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{font-family:dashicons;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tagchecklist .ntdelbutton:focus:before{color:#00a0d2}.tagsdiv+p{margin:0}.tagcloud-link{display:block;padding:0 16px;text-decoration:none;outline:0}.tagcloud-link:focus{text-decoration:underline}.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}.popular-tags a{padding:0 3px}.the-tagcloud{margin:0;padding:16px}.the-tagcloud a{text-decoration:none;outline:0}.the-tagcloud a:focus{text-decoration:underline}.tagcloud h3{margin:2px 0 12px}.add-category-name,input[type=search].categories-search{display:block;width:100%;padding:.85714em 1.07143em;border:0;-webkit-border-radius:0;border-radius:0;border-bottom:1px solid #e5e5e5;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (max-width:600px){.add-category-name,input[type=search].categories-search{font-size:16px}}.add-cat-toggle{float:right;margin-top:-45px;line-height:20px;padding:12px 10px 8px}.add-cat-toggle:focus{text-decoration:none;color:#00a0d2}.add-cat-toggle.is-toggled{padding:10px}.add-cat-toggle.is-toggled .dashicons:before{content:"\f179"}.add-category{border-bottom:1px solid #e5e5e5}.add-category.is-hidden{display:none}.add-category .add-cat-submit{position:absolute;top:0;right:0;border:0;-webkit-border-radius:0;border-radius:0;padding:12px 16px;background:#f7f7f7;border-left:1px solid #f1f1f1}.alert,.scan{border-bottom:1px solid #e5e5e5}.add-category .add-cat-submit:active,.add-category .add-cat-submit:focus,.add-category .add-cat-submit:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff}.postform-wrapper{padding:12px}.postform{display:block;margin:0;width:100%;height:34px;-webkit-border-radius:0;border-radius:0;border:1px solid #e5e5e5;background:#fff;-webkit-background-size:20px 20px;background-size:20px 20px;overflow:hidden;line-height:21px;text-decoration:none;vertical-align:top;cursor:pointer;outline:0}.postform:focus{border-color:#0073aa;-webkit-box-shadow:0 0 0 3px #00a0d2;box-shadow:0 0 0 3px #00a0d2;outline:0;-moz-outline:none;-moz-user-focus:ignore}.postform::-ms-expand{display:none}.postform::-ms-value{background:0 0;color:#727272}.postform:-moz-focusring{color:transparent;text-shadow:0 0 0 #727272}.categories-select,.categories-select ul{margin:0;padding:0;list-style:none}.category{position:relative;display:block;padding:13px 16px 14px;cursor:pointer;background:#fff}.category.selected:focus,.category:focus{outline:0;background:#00a0d2;color:#fff}.category.selected{-webkit-box-shadow:inset 6px 0 0 #00a0d2;box-shadow:inset 6px 0 0 #00a0d2;background:#E9F5F9}.category.selected:after{display:inline-block;content:"\f147";position:absolute;top:13px;right:0;width:20px;height:20px;margin-right:10px;font-size:20px;line-height:1;text-decoration:inherit;color:#23282d;text-align:center;transition:color .1s ease-in 0}.category.selected:focus:after{color:#fff}.categories-select ul .category{padding-left:24px}.categories-select ul ul .category{padding-left:32px}.categories-select ul ul ul .category{padding-left:40px}.categories-select ul ul ul ul .category{padding-left:48px}.categories-select ul ul ul ul ul .category{padding-left:56px}.categories-select ul ul ul ul ul ul .category{padding-left:64px}.categories-select .is-hidden{display:none}.categories-select .is-hidden.searched-parent{display:block}.categories-search-wrapper{position:relative}.categories-search-wrapper.is-hidden{display:none}.categories-search-wrapper label{position:absolute;top:50%;right:10px;margin-top:-10px;color:#9ea7af}html{overflow:auto;background:#fff;-webkit-box-shadow:-10px 0 0 rgba(0,0,0,.3);box-shadow:-10px 0 0 rgba(0,0,0,.3)}body{overflow-x:hidden;height:100%}@media (max-width:900px){body{font-size:16px}}.lt-ie9{overflow:visible}.adminbar{position:relative;width:100%;padding:0 .8em;min-height:3.2em;background:#23282d;color:#fff;z-index:9999}.adminbar:after,.adminbar:before{content:"";display:table}.adminbar .dashicons{color:#999}.adminbar button{position:absolute;top:50%;right:6px;margin-top:-13px}@media (max-width:320px){body{font-size:14px}.adminbar{min-height:45px}}.current-site{margin-top:.5625em;font-size:16px;line-height:44px;font-weight:400;overflow:hidden}@media (max-width:600px){.current-site{margin:3px 0 0}}.current-site-link{text-decoration:none}.current-site-link:focus{outline:0}.current-site-link:focus .current-site-name{text-decoration:underline}.current-site-name{color:#ededed}@media (max-width:320px){.current-site{margin:0;font-size:14px}.current-site-name{font-weight:600}}.current-site .dashicons-wordpress{position:relative;top:-1px;margin-right:10px;vertical-align:middle}.options,.options.closed .on-open,.options.open .on-closed{display:none}@media (max-width:900px){.options{display:block}}.options-panel-back.is-hidden{display:none}.options:focus .dashicons{color:#fff;text-decoration:none}.options .dashicons{margin-top:3px}.options{color:#00a0d2}.alert{position:relative;margin:0;padding:16px 50px;font-size:14px}.alert:before{content:'';position:absolute;top:50%;left:30px;width:8px;height:8px;margin-top:-4px;-webkit-border-radius:50%;border-radius:50%;background:#00a0d2}@media (max-width:600px){.alert{padding:16px 35px}.alert:before{left:15px}}.alert.is-error:before{background:red}.scan{position:relative}.scan-url{display:block;border:0;padding:.85714em 1.07143em;font-size:14px;width:100%}.editor-wrapper:after,.editor-wrapper:before,.wrapper:after,.wrapper:before{content:"";display:table}@media (max-width:600px){.scan-url{font-size:16px}}.scan-submit{position:absolute;top:0;right:0;bottom:0;padding:0 1.07143em;background:#f7f7f7;border:0;border-left:1px solid #f1f1f1;-webkit-border-radius:0;border-radius:0;color:#555;font-size:14px;line-height:1.6}.scan-submit:focus,.scan-submit:hover{background:#2991b7;border-color:#20708e;color:#fff;outline:0}.scan-submit:active{background:#2581a2;border-color:#20708e;color:#fff}.scan-submit:visited{color:#555}.wrapper{position:relative;margin-bottom:60px;margin-right:320px}@media (max-width:900px){.scan form{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.scan.is-hidden form{opacity:.2;pointer-events:none}.wrapper{margin:0;width:100%}}.editor-wrapper{overflow:auto;float:left;width:100%}.editor{padding:0 1.5em 4.75em;max-width:700px;margin:0 auto}.spinner{height:20px;width:20px;display:inline-block;visibility:hidden;background:url(../images/spinner.gif) center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);line-height:1;vertical-align:middle}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}}.spinner.is-active{visibility:visible}@media (min-width:901px){.editor{max-width:760px}}@media (max-width:320px){.editor{padding:0}}.post-title,.post-title-placeholder{margin:0;padding:.83em 0;width:100%;border-bottom:1px solid #e5e5e5;font-size:32px;line-height:1.4;font-weight:700}.post-title-placeholder:active,.post-title-placeholder:focus,.post-title:active,.post-title:focus{outline:0;-webkit-box-shadow:inset 0 -3px 0 #00a0d2;box-shadow:inset 0 -3px 0 #00a0d2;border-color:#00a0d2}@media (max-width:900px){.post-title,.post-title-placeholder{font-size:24px}}@media (max-height:400px){.post-title,.post-title-placeholder{padding:15px 0;font-size:16px}}@media (max-width:320px){.post-title,.post-title-placeholder{font-size:16px;font-weight:600;padding:1.14286em 1.42857em}}.post-title{background:url(data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==);background:0 0,none}.post-title:before{content:'\a0';display:inline-block;width:0;speak:none}.post-title-placeholder{position:absolute;border:0;color:#9ea7af;z-index:-1}.is-embed.is-audio:active:before,.is-embed.is-audio:focus:before,.is-embed.is-audio:hover:before,.is-embed.is-tweet:active:before,.is-embed.is-tweet:focus:before,.is-embed.is-tweet:hover:before,.is-embed:before,.suggested-media-thumbnail:active,.suggested-media-thumbnail:focus,.suggested-media-thumbnail:hover{color:#fff}.post-title-placeholder.is-hidden{display:none}.media-list-container{position:relative;padding:2px 0;border-bottom:1px solid #e5e5e5;display:none}.media-list-inner-container{overflow:auto;max-height:150px;max-height:40vw}.media-list-container.has-media{display:block}.media-list-inner-container:after,.media-list-inner-container:before{content:"";display:table}.media-list{margin:0;padding:0}@media (min-width:321px){.media-list-inner-container{max-height:250px;max-height:40vw}}.wppt-all-media-list{list-style:none;margin:0;padding:0}.is-embed:focus,.suggested-media-thumbnail:focus{outline:0;-webkit-box-shadow:inset 0 0 0 3px #00a0d2;box-shadow:inset 0 0 0 3px #00a0d2}.suggested-media-thumbnail{position:relative;display:block;float:left;width:16.66%;padding:16.66% 0 0 16.66%;background-position:center;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover;background-color:#d8d8d8;color:#fff;color:rgba(255,255,255,.6);cursor:pointer}.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{display:inline-block;position:absolute;font-size:20px;line-height:1;text-decoration:inherit;font-weight:400;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0}.suggested-media-thumbnail:before{left:50%;top:50%;margin:-20px 0 0 -20px;font-size:40px}.suggested-media-thumbnail:after{content:"\f132";right:3%;bottom:2%}@media (min-width:601px){.media-list-inner-container{max-height:200px;max-height:18.75vw}.suggested-media-thumbnail{width:12.5%;padding:12.5% 0 0 12.5%}}.is-embed:before{content:"\f104";color:rgba(255,255,255,.9)}.is-embed.is-video{background-color:#23282d}.is-embed.is-video:active:before,.is-embed.is-video:focus:before,.is-embed.is-video:hover:before{color:rgba(255,255,255,.2)}.is-embed.is-video:before{content:"\f236"}.is-embed.is-audio{background-color:#ff7d44}.is-embed.is-audio:before{content:"\f127"}.is-embed.is-tweet{background-color:#55acee}.is-embed.is-tweet:before{content:"\f301"}.no-media{margin:0;padding:0;border:0}.press-this-actions{position:fixed;bottom:0;left:0;width:100%;background:#f1f1f1;background:rgba(241,241,241,.9);border-top:1px solid #e5e5e5}.add-media{float:left;margin:14px 0 14px 30px;font-size:0}@media (max-width:320px){.add-media{margin:10px 0 10px 10px}}.insert-media{color:#9ea7af;float:left;margin:0;padding:0;border:0;border-right:1px solid #e5e5e5;-webkit-border-radius:0;border-radius:0;background:0 0;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.insert-media:active,.insert-media:focus,.insert-media:hover{margin:0;background:0 0;border-color:#e5e5e5;color:#23282d}.insert-media:active,.insert-media:focus{outline:0;color:#00a0d2;text-decoration:none}.insert-media .dashicons{padding:11px;width:63px;height:58px;font-size:40px}@media (max-width:320px){.insert-media .dashicons{width:55px;height:49px;padding:14px;font-size:20px}}#wp-link-wrap,.post-actions{font-size:13px}.post-actions{float:right;margin:14px 30px 14px 0}@media (max-width:320px){.post-actions{margin:10px 10px 10px 0}}.edit-post-link{font-size:13px;display:inline-block;text-decoration:none;padding:0 10px}.publish-button .saving-draft,.publish-button.is-saving .publish{display:none}.publish-button.is-saving .saving-draft{display:inline}.editor .wp-media-buttons{float:none}.editor div.mce-toolbar-grp{padding:.71429em 0;background:0 0;border:0}@media (max-height:400px),(max-width:320px){.editor div.mce-toolbar-grp{padding:0}}.mce-stack-layout:after,.mce-stack-layout:before{content:"";display:table}.mce-container.mce-toolbar{float:left}.mce-container.mce-toolbar:nth-child(2){float:right}@media (max-width:600px){.mce-first .mce-btn:nth-child(3),.mce-first .mce-btn:nth-child(4){position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.mce-first .mce-btn:nth-child(3):focus,.mce-first .mce-btn:nth-child(4):focus{position:static;margin:1px;padding:inherit;height:auto;width:auto;overflow:visible;clip:auto;border:1px solid #999}}#wp-link-wrap input[type=text]{padding:3px 5px;margin:1px}@media screen and (max-width:782px){#wp-link-wrap{font-size:14px}#wp-link-wrap input[type=text]{padding:6px 10px}}#wp-link-wrap .howto{color:#666;font-style:italic}.options-panel{position:relative;float:right;margin-right:-320px;width:320px;border-left:1px solid #e5e5e5;font-size:14px;-webkit-box-shadow:5001px 5000px 0 5000px #fff,5000px 5000px 0 5000px #e5e5e5;box-shadow:5001px 5000px 0 5000px #fff,5000px 5000px 0 5000px #e5e5e5;outline:0}.options-panel-back{position:absolute;top:0;right:0;bottom:0;width:320px;outline:0}@media (max-width:900px){.press-this-actions{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out}.press-this-actions.is-hidden{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.options-panel{background:#fff;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out}.options-panel.is-hidden{visibility:hidden}.options-panel.is-off-screen{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@media (max-width:320px){.options-panel{margin-right:-100%;width:100%;border:0;-webkit-box-shadow:5001px 5000px 0 5000px #fff;box-shadow:5001px 5000px 0 5000px #fff}.options-panel-back{width:100%}}.post-options{background:#fff;position:absolute;right:0;width:100%;overflow-x:hidden}.post-options .post-option-contents{margin-left:3px;color:#32373c}.post-option-forward:before{position:absolute;top:50%;right:8px;margin-top:-10px;content:"\f345"}.post-option,.setting-modal,.setting-title{position:relative}.post-option-back:before{content:"\f341"}.lt-ie9 .options-panel,.lt-ie9 .post-options{border-left:1px solid #e5e5e5}.lt-ie9 .post-options.is-off-screen{border:0}.modal-close,.post-options .post-option{border-bottom:1px solid #e5e5e5;text-decoration:none;text-align:left}.post-options .post-option{display:block;padding:13px 37px 13px 14px;color:#9ea7af;transition:transform .3s ease-in-out}.post-options .post-option,.setting-modal{width:100%;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out}.post-options .post-option:focus{outline:0;-webkit-box-shadow:inset 5px 0 0 #00a0d2;box-shadow:inset 5px 0 0 #00a0d2}.is-off-screen>.post-option{right:100%}.is-hidden>.post-option{visibility:hidden}.post-option-title{display:inline-block;margin:0 0 0 8px;font-size:14px;font-weight:400}.setting-modal{top:0;left:0;transition:transform .3s ease-in-out}.setting-modal.is-hidden{visibility:hidden;height:0}.setting-modal.is-off-screen{left:100%}@media (min-width:1px){.is-off-screen>.post-option{right:auto;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.setting-modal.is-off-screen{left:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}}.modal-close{display:block;width:100%;padding:13px 14px;color:#00a0d2}.modal-close:focus{outline:0;-webkit-box-shadow:inset 5px 0 0 #00a0d2;box-shadow:inset 5px 0 0 #00a0d2}.setting-title{top:-1px;margin-left:11px}#pressthis{color:#404040;resize:none;padding-top:30px;font-size:16px}.wp-editor-wrap .quicktags-toolbar{background:0 0;border:none}.wp-editor-wrap .wp-editor-tools{z-index:0}.wp-editor-wrap .wp-editor-tabs{padding:2px}.wp-editor-wrap .wp-switch-editor{top:0;margin:3px 0 0 5px;padding:3px 8px;background:#f5f5f5;color:#555;border-color:#ccc}.wp-editor-wrap .wp-switch-editor:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-editor-wrap.html-active .switch-html,.wp-editor-wrap.tmce-active .switch-tmce{background:#fff;border-color:#d8d8d8} \ No newline at end of file diff --git a/wp-admin/css/revisions-rtl.css b/wp-admin/css/revisions-rtl.css new file mode 100644 index 0000000000..829044af67 --- /dev/null +++ b/wp-admin/css/revisions-rtl.css @@ -0,0 +1,575 @@ +/*------------------------------------------------------------------------------ + 11.2 - Post Revisions +------------------------------------------------------------------------------*/ +.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; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1); + box-shadow: 0 1px 3px rgba(0,0,0,0.1); +} + +.revisions-tickmarks { + position: relative; + margin: 0 auto; + height: 0.7em; + top: 7px; + max-width: 70%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + background-color: #fff; +} + +.revisions-tickmarks > div { + position: absolute; + height: 100%; + border-right: 1px solid #a0a5aa; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: -webkit-calc( 100% - 30px ); + width: calc( 100% - 30px ); + top: 50%; + top: -webkit-calc( 50% - 10px ); + top: calc( 50% - 10px ); + -webkit-transition: opacity 0.5s; + transition: opacity 0.5s; + filter: alpha(opacity=0); /* ie8 and earlier */ +} + +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); /* ie8 and earlier */ +} + +.revisions .diff { + -webkit-transition: opacity 0.5s; + transition: opacity 0.5s; +} + +.revisions.loading .diff { + opacity: 0.5; + filter: alpha(opacity=50); /* ie8 and earlier */ +} + +.revisions.diff-error .diff { + visibility: hidden; +} + +.revisions-meta { + margin-top: 20px; + background-color: #fff; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1); + box-shadow: 0 1px 3px rgba(0,0,0,0.1); +} + +.revisions.pinned .revisions-meta { + -webkit-box-shadow: none; + box-shadow: none; +} + +.revision-toggle-compare-mode { + position: absolute; + top: 0; + left: 0; +} + +.comparing-two-revisions .revisions-previous, +.comparing-two-revisions .revisions-next, +.revisions-meta .diff-meta-to strong { + display: none; +} + +.revisions-controls .author-card .date { + color: #777; +} + +.revisions-controls .author-card.autosave { + color: #d54e21; +} + +.revisions-controls .author-card .author-name { + font-weight: bold; +} + +.comparing-two-revisions .diff-meta-to strong { + display: block; +} + +.revisions.pinned .revisions-buttons { + padding: 0 11px; +} + +.revisions-previous, +.revisions-next { + 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; + -webkit-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 { + margin-top: 0; +} + +/* Revision meta box */ +.post-revisions li img, +#revisions-meta-restored 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-deletedline del, +table.diff .diff-addedline ins { + 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 .avatar, +.revisions-controls .author-card .author-info { + 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; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + 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 #d7d7d7; + 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; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1); + box-shadow: 0 1px 3px rgba(0,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; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + 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; +} + +/* jQuery UI Slider */ +.wp-slider.ui-slider { + position: relative; + border: 1px solid #d7d7d7; + text-align: right; + cursor: pointer; +} + +.wp-slider .ui-slider-handle { + -webkit-border-radius: 50%; + border-radius: 50%; + height: 18px; + margin-top: -3px; + outline: none; + position: absolute; + width: 18px; + z-index: 2; + -ms-touch-action: none; + touch-action: none; +} + +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #00a0d2; + border: 1px solid #0073aa; + -webkit-box-shadow: inset 0 1px 0 #78c8e6, 0 1px 0 rgba(0,0,0,.15); + box-shadow: inset 0 1px 0 #78c8e6, 0 1px 0 rgba(0,0,0,.15); +} + +.wp-slider .ui-slider-handle:before { + background: none; + position: absolute; + top: 0; + right: 0; + color: #fff; + content: "\f229"; + font: normal 18px/1 'dashicons'; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.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: '\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'; + 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 Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@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; + } +} diff --git a/wp-admin/css/revisions.css b/wp-admin/css/revisions.css new file mode 100644 index 0000000000..d2652e38d2 --- /dev/null +++ b/wp-admin/css/revisions.css @@ -0,0 +1,575 @@ +/*------------------------------------------------------------------------------ + 11.2 - Post Revisions +------------------------------------------------------------------------------*/ +.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; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1); + box-shadow: 0 1px 3px rgba(0,0,0,0.1); +} + +.revisions-tickmarks { + position: relative; + margin: 0 auto; + height: 0.7em; + top: 7px; + max-width: 70%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + background-color: #fff; +} + +.revisions-tickmarks > div { + position: absolute; + height: 100%; + border-left: 1px solid #a0a5aa; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: -webkit-calc( 100% - 30px ); + width: calc( 100% - 30px ); + top: 50%; + top: -webkit-calc( 50% - 10px ); + top: calc( 50% - 10px ); + -webkit-transition: opacity 0.5s; + transition: opacity 0.5s; + filter: alpha(opacity=0); /* ie8 and earlier */ +} + +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); /* ie8 and earlier */ +} + +.revisions .diff { + -webkit-transition: opacity 0.5s; + transition: opacity 0.5s; +} + +.revisions.loading .diff { + opacity: 0.5; + filter: alpha(opacity=50); /* ie8 and earlier */ +} + +.revisions.diff-error .diff { + visibility: hidden; +} + +.revisions-meta { + margin-top: 20px; + background-color: #fff; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1); + box-shadow: 0 1px 3px rgba(0,0,0,0.1); +} + +.revisions.pinned .revisions-meta { + -webkit-box-shadow: none; + box-shadow: none; +} + +.revision-toggle-compare-mode { + position: absolute; + top: 0; + right: 0; +} + +.comparing-two-revisions .revisions-previous, +.comparing-two-revisions .revisions-next, +.revisions-meta .diff-meta-to strong { + display: none; +} + +.revisions-controls .author-card .date { + color: #777; +} + +.revisions-controls .author-card.autosave { + color: #d54e21; +} + +.revisions-controls .author-card .author-name { + font-weight: bold; +} + +.comparing-two-revisions .diff-meta-to strong { + display: block; +} + +.revisions.pinned .revisions-buttons { + padding: 0 11px; +} + +.revisions-previous, +.revisions-next { + 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; + -webkit-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 { + margin-top: 0; +} + +/* Revision meta box */ +.post-revisions li img, +#revisions-meta-restored 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-deletedline del, +table.diff .diff-addedline ins { + 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 .avatar, +.revisions-controls .author-card .author-info { + 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; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + 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 #d7d7d7; + 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; + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1); + box-shadow: 0 1px 3px rgba(0,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; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + 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; +} + +/* jQuery UI Slider */ +.wp-slider.ui-slider { + position: relative; + border: 1px solid #d7d7d7; + text-align: left; + cursor: pointer; +} + +.wp-slider .ui-slider-handle { + -webkit-border-radius: 50%; + border-radius: 50%; + height: 18px; + margin-top: -3px; + outline: none; + position: absolute; + width: 18px; + z-index: 2; + -ms-touch-action: none; + touch-action: none; +} + +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.ui-state-hover, +.wp-slider .ui-slider-handle.focus { + background: #00a0d2; + border: 1px solid #0073aa; + -webkit-box-shadow: inset 0 1px 0 #78c8e6, 0 1px 0 rgba(0,0,0,.15); + box-shadow: inset 0 1px 0 #78c8e6, 0 1px 0 rgba(0,0,0,.15); +} + +.wp-slider .ui-slider-handle:before { + background: none; + position: absolute; + top: 0; + left: 0; + color: #fff; + content: "\f229"; + font: normal 18px/1 'dashicons'; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.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 Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@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; + } +} diff --git a/wp-admin/css/site-icon-rtl.css b/wp-admin/css/site-icon-rtl.css new file mode 100644 index 0000000000..e76bd426a9 --- /dev/null +++ b/wp-admin/css/site-icon-rtl.css @@ -0,0 +1,37 @@ +/*------------------------------------------------------------------------------ + 28.0 - Site Icon +------------------------------------------------------------------------------*/ + +.site-icon-preview .favicon-preview { + margin: 5px 0 20px; + overflow: hidden; + position: relative; + max-width: 180px; +} + +.site-icon-preview .favicon, +.site-icon-preview .browser-title { + height: 16px; + right: 88px; + overflow: hidden; + position: absolute; + top: 16px; +} + +.site-icon-preview .favicon { + width: 16px; +} + +.site-icon-preview .browser-title { + right: 109px; +} + +.site-icon-preview .app-icon-preview { + background-color: #000; + -webkit-border-radius: 16px; + border-radius: 16px; + height: 64px; + overflow: hidden; + width: 64px; + margin-top: 5px; +} diff --git a/wp-admin/css/site-icon.css b/wp-admin/css/site-icon.css new file mode 100644 index 0000000000..a612e0eaaa --- /dev/null +++ b/wp-admin/css/site-icon.css @@ -0,0 +1,37 @@ +/*------------------------------------------------------------------------------ + 28.0 - Site Icon +------------------------------------------------------------------------------*/ + +.site-icon-preview .favicon-preview { + margin: 5px 0 20px; + overflow: hidden; + position: relative; + max-width: 180px; +} + +.site-icon-preview .favicon, +.site-icon-preview .browser-title { + height: 16px; + left: 88px; + overflow: hidden; + position: absolute; + top: 16px; +} + +.site-icon-preview .favicon { + width: 16px; +} + +.site-icon-preview .browser-title { + left: 109px; +} + +.site-icon-preview .app-icon-preview { + background-color: #000; + -webkit-border-radius: 16px; + border-radius: 16px; + height: 64px; + overflow: hidden; + width: 64px; + margin-top: 5px; +} diff --git a/wp-admin/css/themes-rtl.css b/wp-admin/css/themes-rtl.css new file mode 100644 index 0000000000..ba7003c518 --- /dev/null +++ b/wp-admin/css/themes-rtl.css @@ -0,0 +1,1740 @@ +/*------------------------------------------------------------------------------ + 16.0 - Themes +------------------------------------------------------------------------------*/ + + +/*------------------------------------------------------------------------------ + 16.1 - Manage Themes +------------------------------------------------------------------------------*/ + +.theme-browser .themes { + clear: both; + padding: 0 0 100px; +} + +.themes-php .wrap h1 { + float: right; + margin-bottom: 15px; +} + +.network-admin.themes-php .wrap h1 { + margin-bottom: 0; +} + +.themes-php .wrap h1 .button { + margin-right: 20px; +} + +/* Search form */ +.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; +} + +/* Position admin messages */ +.themes-php div.updated, +.themes-php div.error, +.themes-php div.notice { + margin: 0 0 20px 0; + clear: both; +} + +.themes-php div.updated a { + text-decoration: underline; +} + +/** + * Main theme element + * (has flexible margins) + */ +.theme-browser .theme { + cursor: pointer; + float: right; + margin: 0 0 4% 4%; + position: relative; + width: 30.6%; + border: 1px solid #dedede; + -webkit-box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); + box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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 { + cursor: pointer; +} + +.theme-browser .theme .theme-name { + font-size: 15px; + font-weight: 600; + height: 18px; + margin: 0; + padding: 15px; + -webkit-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); +} + +/* Activate and Customize buttons, shown on hover and focus */ +.theme-browser .theme .theme-actions { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + opacity: 0; + -webkit-transition: opacity 0.1s ease-in-out; + transition: opacity 0.1s ease-in-out; + position: absolute; + bottom: 0; + left: 0; + height: 38px; + padding: 9px 10px 0 10px; + 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 { + -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-secondary { + float: none; + margin-right: 3px; +} + +/** + * Theme Screenshot + * + * Has a fixed aspect ratio of 1.5 to 1 regardless of screenshot size + * It is also responsive. + */ +.theme-browser .theme .theme-screenshot { + display: block; + overflow: hidden; + position: relative; + -webkit-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; +} + +.theme-browser .theme .theme-screenshot:after { + content: ''; + display: block; + padding-top: 66.66666%; /* using a 3/2 aspect ratio */ +} + +.theme-browser .theme .theme-screenshot img { + height: auto; + position: absolute; + right: 0; + top: 0; + width: 100%; + -webkit-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; +} + +.theme-browser .theme:hover .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 { + opacity: 0.4; +} + +.theme-browser .theme .more-details { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + opacity: 0; + position: absolute; + top: 35%; + left: 25%; + right: 25%; + 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); + -webkit-font-smoothing: antialiased; + font-weight: 600; + padding: 15px 12px; + text-align: center; + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-transition: opacity 0.1s ease-in-out; + transition: opacity 0.1s ease-in-out; +} + +.theme-browser .theme:focus { + border-color: #5b9dd9; + -webkit-box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); + box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); +} + +.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 { + display: block; +} + +.theme-browser.rendered .theme:hover .more-details, +.theme-browser.rendered .theme:focus .more-details { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + opacity: 1; +} + +/** + * Displays a theme update notice + * when an update is available. + */ +.theme-browser .theme .theme-update, +.theme-browser .theme .theme-installed { + background: #d54e21; + background: rgba(213, 78, 33, 0.95); + color: #fff; + display: block; + font-size: 13px; + font-weight: 400; + height: 48px; + line-height: 48px; + padding: 0 10px; + position: absolute; + top: 0; + left: 0; + right: 0; + border-bottom: 1px solid rgba(0,0,0,0.25); + overflow: hidden; +} + +.theme-browser .theme .theme-update:before, +.theme-browser .theme .theme-installed:before { + content: '\f463'; + display: inline-block; + font: normal 20px/1 'dashicons'; + margin: 0 0 0 6px; + opacity: 0.8; + position: relative; + top: 5px; + speak: none; + -webkit-font-smoothing: antialiased; +} + + +/** + * The currently active theme + */ +.theme-browser .theme.active .theme-name { + background: #2f2f2f; + color: #fff; + padding-left: 110px; + font-weight: 300; + -webkit-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 { + padding-left: 15px; +} + +.theme-browser .theme.active .theme-name span { + font-weight: 600; +} + +.theme-browser .theme.active .theme-actions { + background: rgba(49,49,49,0.7); + border-right: none; + opacity: 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; +} + +/** + * Add new theme + */ +.theme-browser .theme.add-new-theme { + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.theme-browser .theme.add-new-theme a { + color: #999; + text-decoration: none; + display: block; + position: relative; + z-index: 1; +} + +.theme-browser .theme.add-new-theme a:after { + display: block; + content: ''; + background: transparent; + 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, 0.1); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.theme-browser .theme.add-new-theme span:after { + background: #e5e5e5; + background: rgba(153, 153, 153, 0.1); + -webkit-border-radius: 50%; + 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: rgb(153, 153, 153); + 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:hover .theme-screenshot, +.theme-browser .theme.add-new-theme a:focus .theme-screenshot { + background: none; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + background: #fff; + 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: #0073aa; + content: ''; +} + +.theme-browser .theme.add-new-theme .theme-name { + background: none; + text-align: center; + -webkit-box-shadow: none; + 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:hover .theme-name, +.theme-browser .theme.add-new-theme a:focus .theme-name { + color: #fff; + z-index: 2; +} + +/** + * Theme Overlay + * Shown when clicking a theme + */ +.theme-overlay .theme-backdrop { + position: absolute; + right: -20px; + left: 0; + top: 0; + bottom: 0; + background: #f1f1f1; + background: rgba( 238, 238, 238, 0.9 ); + z-index: 10000; /* Over WP Pointers. */ +} + +.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; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.theme-overlay .theme-header .close:before { + font: normal 22px/50px 'dashicons' !important; + color: #777; + display: inline-block; + content: '\f335'; + font-weight: 300; +} + +/* Left and right navigation */ +.theme-overlay .theme-header .right, +.theme-overlay .theme-header .left { + cursor: pointer; + color: #777; + background-color: transparent; + height: 48px; + width: 54px; + float: right; + text-align: center; + border: 0; + border-left: 1px solid #ddd; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + 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 .right:focus, +.theme-overlay .theme-header .right:hover, +.theme-overlay .theme-header .left:focus, +.theme-overlay .theme-header .left: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 .right:focus, +.theme-overlay .theme-header .left:focus { + -webkit-box-shadow: 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: #ccc; + background: inherit; + cursor: inherit; +} + +.theme-overlay .theme-header .right:before, +.theme-overlay .theme-header .left: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; + -webkit-box-shadow: 0 1px 20px 5px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 20px 5px rgba(0, 0, 0, 0.1); + z-index: 10000; /* Over WP Pointers. */ + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-overflow-scrolling: touch; +} + +.theme-overlay .theme-wrap:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +body.folded .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-about:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.theme-overlay .theme-actions { + position: absolute; + text-align: center; + bottom: 0; + right: 0; + left: 0; + padding: 10px 25px 5px; + background: #f3f3f3; + z-index: 30; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; +} + +/* Hide-if-customize for items we can't add classes to */ +.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"], +.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"] { + display: none; +} + +.broken-themes a.delete-theme, +.theme-overlay .theme-actions .delete-theme { + color: #a00; + text-decoration: none; + border-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent; +} + +.theme-overlay .theme-actions .delete-theme { + position: absolute; + left: 10px; + bottom: 5px; +} + +.broken-themes a.delete-theme:hover, +.broken-themes a.delete-theme:focus, +.theme-overlay .theme-actions .delete-theme:hover, +.theme-overlay .theme-actions .delete-theme:focus { + 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 Screenshots gallery + */ +.theme-overlay .theme-screenshots { + float: right; + margin: 0 0 0 30px; + width: 55%; + max-width: 880px; + text-align: center; +} + +/* First screenshot, shown big */ +.theme-overlay .screenshot { + border: 1px solid #fff; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + position: relative; + -webkit-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 { + content: ''; + display: block; + padding-top: 75%; /* using a 4/3 aspect ratio */ +} + +.theme-overlay .screenshot img { + height: auto; + position: absolute; + right: 0; + top: 0; + width: 100%; +} +/* Handles old 300px screenshots */ +.theme-overlay.small-screenshot .theme-screenshots { + position: absolute; + width: 302px; +} +.theme-overlay.small-screenshot .theme-info { + margin-right: 350px; + width: auto; +} + +/* Other screenshots, shown small and square */ +.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%; /* using a 1/1 aspect ratio */ +} + +.theme-overlay .screenshot.thumb img { + cursor: pointer; + height: auto; + position: absolute; + right: 0; + top: 0; + width: 100%; + height: auto; +} + +.theme-overlay .screenshot.selected { + background: transparent; + border: 2px solid #00a0d2; +} + +.theme-overlay .screenshot.selected img { + opacity: 0.8; +} + +/* No screenshot placeholder */ +.theme-browser .theme .theme-screenshot.blank, +.theme-overlay .screenshot.blank { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=); +} + +/** + * Theme heading information + */ +.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; + -webkit-border-radius: 2px; + border-radius: 2px; + margin: 0 0 -10px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-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; +} + +.theme-overlay .theme-version { + color: #999; + font-size: 13px; + font-weight: 400; + float: none; + display: inline-block; + margin-right: 10px; +} + +.theme-overlay .theme-author { + color: #686868; + font-size: 16px; + font-weight: 400; + margin: 15px 0 25px; +} + +.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: bold; + margin-left: 5px; +} + +/* Theme Updates info */ +.theme-overlay .theme-update-message { + background: #fef7f1; + border: 1px solid #eee; + border-right: 4px solid #d54e21; + -webkit-border-radius: 3px; + border-radius: 3px; + padding: 5px 20px 10px; +} + +.theme-overlay .theme-update { + color: #23282d; + font-size: 18px; + display: inline-block; + line-height: 40px; + margin: 0; +} + +.theme-overlay .parent-theme { + background: #f7fcfe; + border: 1px solid #eee; + border-right: 4px solid #00a0d2; + font-size: 14px; + font-weight: normal; + margin-top: 30px; + padding: 10px 20px 10px 10px; +} + +.theme-overlay .parent-theme strong { + font-weight: 700; +} + +/** + * Single Theme Mode + * Displays detailed view inline when a user has no switch capabilities + */ +.single-theme .theme-overlay .theme-backdrop, +.single-theme .theme-overlay .theme-header, +.single-theme .theme { + 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; +} + +/** + * Basic Responsive structure... + * + * Shuffles theme columns around based on screen width + */ + +@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; + } +} + +/* Maximum screenshot width reaches 440px */ +@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%; /* using a 4/3 aspect ratio */ + } + + .theme-browser .theme:nth-child(3n) { + margin-left: 3%; + } + + .theme-browser .theme:nth-child(4n) { + margin-left: 0; + } +} +/* Maximum screenshot width reaches 440px */ +@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%; + } +} + +/* Admin menu is folded */ +@media only screen and (max-width: 900px) { + .theme-overlay .theme-wrap { + right: 65px; + } +} + +@media only screen and (max-width: 780px) { + body.folded .theme-overlay .theme-wrap, + .theme-overlay .theme-wrap { + top: 0; /* The adminmenu isn't fixed on mobile, so this can use the full viewport height */ + left: 0; + bottom: 0; + right: 0; + padding: 70px 20px 20px; + border: none; + z-index: 100000; /* should overlap #wpadminbar. */ + position: fixed; + } + + .theme-browser .theme.active .theme-name span { + /* Hide the "Active: " label on smaller screens. */ + 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:not(.active):hover .theme-actions, + .theme:not(.active):focus .theme-actions, + .theme:hover .more-details, + .theme:focus .more-details { + display: none; + } + + .theme-browser.rendered .theme:hover .theme-screenshot img, + .theme-browser.rendered .theme:focus .theme-screenshot img { + opacity: 1.0; + } +} + +@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-update, + .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; + top: 0; + left: 0; + margin: 10px 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; +} + + +/*------------------------------------------------------------------------------ + 16.2 - Install Themes +------------------------------------------------------------------------------*/ + +/* Already installed theme */ +.theme-browser .theme .theme-installed { + background: #0073aa; +} +.theme-browser .theme .theme-installed:before { + content: '\f147'; +} +.theme-browser .theme.is-installed .theme-actions .button-primary { + display: none !important; +} + +.theme-install-php .wp-filter { + padding: 0 20px; +} + +.theme-install-php a.upload, +.theme-install-php a.browse-themes { + cursor: pointer; +} +.theme-install-php a.browse-themes, +.theme-install-php.show-upload-theme a.upload { + display: none; +} +.theme-install-php.show-upload-theme a.browse-themes { + display: inline; +} +.upload-theme, +.upload-plugin { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: none; + margin: 0; + padding: 0; + width: 100%; + overflow: hidden; + position: relative; + top: 10px; +} +body.show-upload-theme .upload-theme, +.upload-plugin { + display: block; +} +.upload-theme .wp-upload-form, +.upload-plugin .wp-upload-form { + background: #fafafa; + border: 1px solid #e5e5e5; + padding: 30px; + margin: 30px auto; + max-width: 380px; +} +.upload-theme .install-help, +.upload-plugin .install-help { + color: #999; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 40px 0 0; + text-align: center; +} +body.show-upload-theme .upload-theme + .wp-filter, +body.show-upload-theme .upload-theme + .wp-filter + .theme-browser { + display: none; +} + +p.no-themes { + clear: both; + color: #666; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 0; + text-align: center; + display: none; +} +body.no-results p.no-themes { + display: block; +} +body.show-upload-theme p.no-themes { + display: none !important; +} + +.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; + text-align: right; + } +} + +.theme-details .star-rating { + margin: 15px 0 0; +} + +.theme-details .star-rating span:before { + color: #ffb900; + content: "\f154"; + display: inline-block; + -webkit-font-smoothing: antialiased; + font: normal 20px/1 'dashicons'; + vertical-align: top; +} + +/* Half stars */ +.star-rating.rating-10 span.one:before, +.star-rating.rating-30 span.two:before, +.star-rating.rating-50 span.three:before, +.star-rating.rating-70 span.four:before, +.star-rating.rating-90 span.five:before { + content: "\f459"; +} + +/* Full stars */ +.star-rating.rating-20 span.one:before, +.star-rating.rating-30 span.one:before, +.star-rating.rating-40 span.one:before, +.star-rating.rating-40 span.two:before, +.star-rating.rating-50 span.one:before, +.star-rating.rating-50 span.two:before, +.star-rating.rating-60 span.one:before, +.star-rating.rating-60 span.two:before, +.star-rating.rating-60 span.three:before, +.star-rating.rating-70 span.one:before, +.star-rating.rating-70 span.two:before, +.star-rating.rating-70 span.three:before, +.star-rating.rating-80 span.one:before, +.star-rating.rating-80 span.two:before, +.star-rating.rating-80 span.three:before, +.star-rating.rating-80 span.four:before, +.star-rating.rating-90 span.one:before, +.star-rating.rating-90 span.two:before, +.star-rating.rating-90 span.three:before, +.star-rating.rating-90 span.four:before, +.star-rating.rating-100 > span:before { + content: "\f155"; +} + +.theme-details .star-rating .ratings { + display: block; + line-height: 20px; + color: #999; +} + +/*------------------------------------------------------------------------------ + 16.3 - Custom Header Screen +------------------------------------------------------------------------------*/ + +.appearance_page_custom-header #headimg { + border: 1px solid #DFDFDF; + 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; +} + + +/*------------------------------------------------------------------------------ + 16.4 - Custom Background Screen +------------------------------------------------------------------------------*/ + +div#custom-background-image { + min-height: 100px; + border: 1px solid #dfdfdf; +} + +div#custom-background-image img { + max-width: 400px; + max-height: 300px; +} + +/*------------------------------------------------------------------------------ + 23.0 - Full Overlay w/ Sidebar +------------------------------------------------------------------------------*/ + +body.full-overlay-active { + overflow: hidden; +} + +.wp-full-overlay { + background: transparent; + z-index: 500000; + position: fixed; + overflow: visible; + top: 0; + bottom: 0; + right: 0; + left: 0; + height: 100%; + min-width: 0; +} + +.wp-full-overlay-sidebar { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + position: fixed; + width: 300px; + height: 100%; + top: 0; + bottom: 0; + 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; +} + +.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%; +} + +#customize-preview.wp-full-overlay-main { + background: url(../images/spinner.gif) no-repeat center center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; +} + +#customize-preview.wp-full-overlay-main.iframe-ready { + background: none; +} + +.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; + -webkit-box-shadow: 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; + -webkit-box-shadow: 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; +} + +/* Close & Navigation Links */ +.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header { + padding: 0; +} + +.theme-install-overlay .close-full-overlay, +.theme-install-overlay .previous-theme, +.theme-install-overlay .next-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; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.theme-install-overlay .close-full-overlay:hover, +.theme-install-overlay .close-full-overlay:focus, +.theme-install-overlay .previous-theme:hover, +.theme-install-overlay .previous-theme:focus, +.theme-install-overlay .next-theme:hover, +.theme-install-overlay .next-theme:focus { + background: #ddd; + border-color: #ccc; + color: #000; + outline: none; + -webkit-box-shadow: none; + 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 .previous-theme.disabled, +.theme-install-overlay .next-theme.disabled, +.theme-install-overlay .previous-theme.disabled:hover, +.theme-install-overlay .previous-theme.disabled:focus, +.theme-install-overlay .next-theme.disabled:hover, +.theme-install-overlay .next-theme.disabled:focus { + color: #b4b9be; + background: #eee; + cursor: default; + pointer-events: none; +} + +/* Collapse Button */ +.wp-core-ui .wp-full-overlay .collapse-sidebar { + position: fixed; + bottom: 8px; + right: 10px; + padding: 0; + color: #656a6f; + outline: 0; + line-height: 1; + background-color: transparent !important; + border: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + -webkit-border-radius: 0 !important; + border-radius: 0 !important; +} + +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + 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; /* avoid the focus box-shadow to be cut-off */ + -webkit-border-radius: 50%; + border-radius: 50%; + overflow: hidden; +} + +.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + 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; +} + +/* rtl:ignore */ +.wp-full-overlay.collapsed .collapse-sidebar-arrow:before, +.rtl .wp-full-overlay .collapse-sidebar-arrow:before { + -webkit-transform: rotate(180.001deg); + -ms-transform: rotate(180.001deg); + transform: rotate(180.001deg); /* Firefox: promoting to its own layer to trigger anti-aliasing */ +} + +.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before { + -webkit-transform: none; + -ms-transform: none; + transform: none; +} + +/* Animations */ +.wp-full-overlay, +.wp-full-overlay-sidebar, +.wp-full-overlay .collapse-sidebar, +.wp-full-overlay-main { + -webkit-transition-property: right, left, top, bottom, width, margin; + transition-property: right, left, top, bottom, width, margin; + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; +} + +/*------------------------------------------------------------------------------ + 24.0 - Customize Loader +------------------------------------------------------------------------------*/ + +.no-customize-support .hide-if-no-customize, +.customize-support .hide-if-customize, +.no-customize-support.wp-core-ui .hide-if-no-customize, +.no-customize-support .wp-core-ui .hide-if-no-customize, +.customize-support.wp-core-ui .hide-if-customize, +.customize-support .wp-core-ui .hide-if-customize { + display: none; +} + +#customize-container { + display: none; + background: #fff; + z-index: 500000; + position: fixed; + overflow: visible; + top: 0; + bottom: 0; + right: 0; + left: 0; + height: 100%; +} + +.customize-active #customize-container { + display: block; +} + +.customize-loading #customize-container iframe { + opacity: 0; +} + +.customize-loading #customize-container { + background: #fff url(../images/spinner.gif) no-repeat fixed center center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; +} + +#customize-container iframe, +.theme-install-overlay iframe { + height: 100%; + width: 100%; + z-index: 20; + -webkit-transition: opacity 0.3s; + transition: opacity 0.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-top: 15px; + width: 258px; + border: 1px solid #ccc; +} + +.install-theme-info .theme-details { + overflow: hidden; +} + +.theme-details .theme-version { + margin: 15px 0; + float: right; +} + +.theme-details .theme-description { + float: right; + color: #777; + line-height: 20px; + max-width: 100%; +} + +.theme-install-overlay .wp-full-overlay-header .theme-install { + 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: #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 { + background: #fff url(../images/spinner.gif) no-repeat center center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@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); + -webkit-background-size: 15px 123px; + background-size: 15px 123px; + } + + #customize-preview.wp-full-overlay-main, + .customize-loading #customize-container, + .theme-install-overlay .wp-full-overlay-main { + background-image: url(../images/spinner-2x.gif); + } + + .theme-install-overlay .wp-full-overlay-header .theme-install { + margin-top: 2px; + } +} + +@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; + } +} diff --git a/wp-admin/css/themes.css b/wp-admin/css/themes.css new file mode 100644 index 0000000000..3121a1e408 --- /dev/null +++ b/wp-admin/css/themes.css @@ -0,0 +1,1740 @@ +/*------------------------------------------------------------------------------ + 16.0 - Themes +------------------------------------------------------------------------------*/ + + +/*------------------------------------------------------------------------------ + 16.1 - Manage Themes +------------------------------------------------------------------------------*/ + +.theme-browser .themes { + clear: both; + padding: 0 0 100px; +} + +.themes-php .wrap h1 { + float: left; + margin-bottom: 15px; +} + +.network-admin.themes-php .wrap h1 { + margin-bottom: 0; +} + +.themes-php .wrap h1 .button { + margin-left: 20px; +} + +/* Search form */ +.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; +} + +/* Position admin messages */ +.themes-php div.updated, +.themes-php div.error, +.themes-php div.notice { + margin: 0 0 20px 0; + clear: both; +} + +.themes-php div.updated a { + text-decoration: underline; +} + +/** + * Main theme element + * (has flexible margins) + */ +.theme-browser .theme { + cursor: pointer; + float: left; + margin: 0 4% 4% 0; + position: relative; + width: 30.6%; + border: 1px solid #dedede; + -webkit-box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); + box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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 { + cursor: pointer; +} + +.theme-browser .theme .theme-name { + font-size: 15px; + font-weight: 600; + height: 18px; + margin: 0; + padding: 15px; + -webkit-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); +} + +/* Activate and Customize buttons, shown on hover and focus */ +.theme-browser .theme .theme-actions { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + opacity: 0; + -webkit-transition: opacity 0.1s ease-in-out; + transition: opacity 0.1s ease-in-out; + position: absolute; + bottom: 0; + right: 0; + height: 38px; + padding: 9px 10px 0 10px; + 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 { + -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-secondary { + float: none; + margin-left: 3px; +} + +/** + * Theme Screenshot + * + * Has a fixed aspect ratio of 1.5 to 1 regardless of screenshot size + * It is also responsive. + */ +.theme-browser .theme .theme-screenshot { + display: block; + overflow: hidden; + position: relative; + -webkit-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; +} + +.theme-browser .theme .theme-screenshot:after { + content: ''; + display: block; + padding-top: 66.66666%; /* using a 3/2 aspect ratio */ +} + +.theme-browser .theme .theme-screenshot img { + height: auto; + position: absolute; + left: 0; + top: 0; + width: 100%; + -webkit-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; +} + +.theme-browser .theme:hover .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 { + opacity: 0.4; +} + +.theme-browser .theme .more-details { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + opacity: 0; + position: absolute; + top: 35%; + right: 25%; + left: 25%; + 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); + -webkit-font-smoothing: antialiased; + font-weight: 600; + padding: 15px 12px; + text-align: center; + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-transition: opacity 0.1s ease-in-out; + transition: opacity 0.1s ease-in-out; +} + +.theme-browser .theme:focus { + border-color: #5b9dd9; + -webkit-box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); + box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); +} + +.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 { + display: block; +} + +.theme-browser.rendered .theme:hover .more-details, +.theme-browser.rendered .theme:focus .more-details { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + opacity: 1; +} + +/** + * Displays a theme update notice + * when an update is available. + */ +.theme-browser .theme .theme-update, +.theme-browser .theme .theme-installed { + background: #d54e21; + background: rgba(213, 78, 33, 0.95); + color: #fff; + display: block; + font-size: 13px; + font-weight: 400; + height: 48px; + line-height: 48px; + padding: 0 10px; + position: absolute; + top: 0; + right: 0; + left: 0; + border-bottom: 1px solid rgba(0,0,0,0.25); + overflow: hidden; +} + +.theme-browser .theme .theme-update:before, +.theme-browser .theme .theme-installed:before { + content: '\f463'; + display: inline-block; + font: normal 20px/1 'dashicons'; + margin: 0 6px 0 0; + opacity: 0.8; + position: relative; + top: 5px; + speak: none; + -webkit-font-smoothing: antialiased; +} + + +/** + * The currently active theme + */ +.theme-browser .theme.active .theme-name { + background: #2f2f2f; + color: #fff; + padding-right: 110px; + font-weight: 300; + -webkit-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 { + padding-right: 15px; +} + +.theme-browser .theme.active .theme-name span { + font-weight: 600; +} + +.theme-browser .theme.active .theme-actions { + background: rgba(49,49,49,0.7); + border-left: none; + opacity: 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; +} + +/** + * Add new theme + */ +.theme-browser .theme.add-new-theme { + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.theme-browser .theme.add-new-theme a { + color: #999; + text-decoration: none; + display: block; + position: relative; + z-index: 1; +} + +.theme-browser .theme.add-new-theme a:after { + display: block; + content: ''; + background: transparent; + 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, 0.1); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.theme-browser .theme.add-new-theme span:after { + background: #e5e5e5; + background: rgba(153, 153, 153, 0.1); + -webkit-border-radius: 50%; + 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: rgb(153, 153, 153); + 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:hover .theme-screenshot, +.theme-browser .theme.add-new-theme a:focus .theme-screenshot { + background: none; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + background: #fff; + 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: #0073aa; + content: ''; +} + +.theme-browser .theme.add-new-theme .theme-name { + background: none; + text-align: center; + -webkit-box-shadow: none; + 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:hover .theme-name, +.theme-browser .theme.add-new-theme a:focus .theme-name { + color: #fff; + z-index: 2; +} + +/** + * Theme Overlay + * Shown when clicking a theme + */ +.theme-overlay .theme-backdrop { + position: absolute; + left: -20px; + right: 0; + top: 0; + bottom: 0; + background: #f1f1f1; + background: rgba( 238, 238, 238, 0.9 ); + z-index: 10000; /* Over WP Pointers. */ +} + +.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; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.theme-overlay .theme-header .close:before { + font: normal 22px/50px 'dashicons' !important; + color: #777; + display: inline-block; + content: '\f335'; + font-weight: 300; +} + +/* Left and right navigation */ +.theme-overlay .theme-header .right, +.theme-overlay .theme-header .left { + cursor: pointer; + color: #777; + background-color: transparent; + height: 48px; + width: 54px; + float: left; + text-align: center; + border: 0; + border-right: 1px solid #ddd; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + 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 .right:focus, +.theme-overlay .theme-header .right:hover, +.theme-overlay .theme-header .left:focus, +.theme-overlay .theme-header .left: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 .right:focus, +.theme-overlay .theme-header .left:focus { + -webkit-box-shadow: 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: #ccc; + background: inherit; + cursor: inherit; +} + +.theme-overlay .theme-header .right:before, +.theme-overlay .theme-header .left: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; + -webkit-box-shadow: 0 1px 20px 5px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 20px 5px rgba(0, 0, 0, 0.1); + z-index: 10000; /* Over WP Pointers. */ + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-overflow-scrolling: touch; +} + +.theme-overlay .theme-wrap:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +body.folded .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-about:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.theme-overlay .theme-actions { + position: absolute; + text-align: center; + bottom: 0; + left: 0; + right: 0; + padding: 10px 25px 5px; + background: #f3f3f3; + z-index: 30; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; +} + +/* Hide-if-customize for items we can't add classes to */ +.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"], +.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"] { + display: none; +} + +.broken-themes a.delete-theme, +.theme-overlay .theme-actions .delete-theme { + color: #a00; + text-decoration: none; + border-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent; +} + +.theme-overlay .theme-actions .delete-theme { + position: absolute; + right: 10px; + bottom: 5px; +} + +.broken-themes a.delete-theme:hover, +.broken-themes a.delete-theme:focus, +.theme-overlay .theme-actions .delete-theme:hover, +.theme-overlay .theme-actions .delete-theme:focus { + 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 Screenshots gallery + */ +.theme-overlay .theme-screenshots { + float: left; + margin: 0 30px 0 0; + width: 55%; + max-width: 880px; + text-align: center; +} + +/* First screenshot, shown big */ +.theme-overlay .screenshot { + border: 1px solid #fff; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + position: relative; + -webkit-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 { + content: ''; + display: block; + padding-top: 75%; /* using a 4/3 aspect ratio */ +} + +.theme-overlay .screenshot img { + height: auto; + position: absolute; + left: 0; + top: 0; + width: 100%; +} +/* Handles old 300px screenshots */ +.theme-overlay.small-screenshot .theme-screenshots { + position: absolute; + width: 302px; +} +.theme-overlay.small-screenshot .theme-info { + margin-left: 350px; + width: auto; +} + +/* Other screenshots, shown small and square */ +.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%; /* using a 1/1 aspect ratio */ +} + +.theme-overlay .screenshot.thumb img { + cursor: pointer; + height: auto; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: auto; +} + +.theme-overlay .screenshot.selected { + background: transparent; + border: 2px solid #00a0d2; +} + +.theme-overlay .screenshot.selected img { + opacity: 0.8; +} + +/* No screenshot placeholder */ +.theme-browser .theme .theme-screenshot.blank, +.theme-overlay .screenshot.blank { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=); +} + +/** + * Theme heading information + */ +.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; + -webkit-border-radius: 2px; + border-radius: 2px; + margin: 0 0 -10px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-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; +} + +.theme-overlay .theme-version { + color: #999; + font-size: 13px; + font-weight: 400; + float: none; + display: inline-block; + margin-left: 10px; +} + +.theme-overlay .theme-author { + color: #686868; + font-size: 16px; + font-weight: 400; + margin: 15px 0 25px; +} + +.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: bold; + margin-right: 5px; +} + +/* Theme Updates info */ +.theme-overlay .theme-update-message { + background: #fef7f1; + border: 1px solid #eee; + border-left: 4px solid #d54e21; + -webkit-border-radius: 3px; + border-radius: 3px; + padding: 5px 20px 10px; +} + +.theme-overlay .theme-update { + color: #23282d; + font-size: 18px; + display: inline-block; + line-height: 40px; + margin: 0; +} + +.theme-overlay .parent-theme { + background: #f7fcfe; + border: 1px solid #eee; + border-left: 4px solid #00a0d2; + font-size: 14px; + font-weight: normal; + margin-top: 30px; + padding: 10px 10px 10px 20px; +} + +.theme-overlay .parent-theme strong { + font-weight: 700; +} + +/** + * Single Theme Mode + * Displays detailed view inline when a user has no switch capabilities + */ +.single-theme .theme-overlay .theme-backdrop, +.single-theme .theme-overlay .theme-header, +.single-theme .theme { + 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; +} + +/** + * Basic Responsive structure... + * + * Shuffles theme columns around based on screen width + */ + +@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; + } +} + +/* Maximum screenshot width reaches 440px */ +@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%; /* using a 4/3 aspect ratio */ + } + + .theme-browser .theme:nth-child(3n) { + margin-right: 3%; + } + + .theme-browser .theme:nth-child(4n) { + margin-right: 0; + } +} +/* Maximum screenshot width reaches 440px */ +@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%; + } +} + +/* Admin menu is folded */ +@media only screen and (max-width: 900px) { + .theme-overlay .theme-wrap { + left: 65px; + } +} + +@media only screen and (max-width: 780px) { + body.folded .theme-overlay .theme-wrap, + .theme-overlay .theme-wrap { + top: 0; /* The adminmenu isn't fixed on mobile, so this can use the full viewport height */ + right: 0; + bottom: 0; + left: 0; + padding: 70px 20px 20px; + border: none; + z-index: 100000; /* should overlap #wpadminbar. */ + position: fixed; + } + + .theme-browser .theme.active .theme-name span { + /* Hide the "Active: " label on smaller screens. */ + 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:not(.active):hover .theme-actions, + .theme:not(.active):focus .theme-actions, + .theme:hover .more-details, + .theme:focus .more-details { + display: none; + } + + .theme-browser.rendered .theme:hover .theme-screenshot img, + .theme-browser.rendered .theme:focus .theme-screenshot img { + opacity: 1.0; + } +} + +@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-update, + .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; + top: 0; + right: 0; + margin: 10px 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; +} + + +/*------------------------------------------------------------------------------ + 16.2 - Install Themes +------------------------------------------------------------------------------*/ + +/* Already installed theme */ +.theme-browser .theme .theme-installed { + background: #0073aa; +} +.theme-browser .theme .theme-installed:before { + content: '\f147'; +} +.theme-browser .theme.is-installed .theme-actions .button-primary { + display: none !important; +} + +.theme-install-php .wp-filter { + padding: 0 20px; +} + +.theme-install-php a.upload, +.theme-install-php a.browse-themes { + cursor: pointer; +} +.theme-install-php a.browse-themes, +.theme-install-php.show-upload-theme a.upload { + display: none; +} +.theme-install-php.show-upload-theme a.browse-themes { + display: inline; +} +.upload-theme, +.upload-plugin { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: none; + margin: 0; + padding: 0; + width: 100%; + overflow: hidden; + position: relative; + top: 10px; +} +body.show-upload-theme .upload-theme, +.upload-plugin { + display: block; +} +.upload-theme .wp-upload-form, +.upload-plugin .wp-upload-form { + background: #fafafa; + border: 1px solid #e5e5e5; + padding: 30px; + margin: 30px auto; + max-width: 380px; +} +.upload-theme .install-help, +.upload-plugin .install-help { + color: #999; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 40px 0 0; + text-align: center; +} +body.show-upload-theme .upload-theme + .wp-filter, +body.show-upload-theme .upload-theme + .wp-filter + .theme-browser { + display: none; +} + +p.no-themes { + clear: both; + color: #666; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 0; + text-align: center; + display: none; +} +body.no-results p.no-themes { + display: block; +} +body.show-upload-theme p.no-themes { + display: none !important; +} + +.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; + text-align: left; + } +} + +.theme-details .star-rating { + margin: 15px 0 0; +} + +.theme-details .star-rating span:before { + color: #ffb900; + content: "\f154"; + display: inline-block; + -webkit-font-smoothing: antialiased; + font: normal 20px/1 'dashicons'; + vertical-align: top; +} + +/* Half stars */ +.star-rating.rating-10 span.one:before, +.star-rating.rating-30 span.two:before, +.star-rating.rating-50 span.three:before, +.star-rating.rating-70 span.four:before, +.star-rating.rating-90 span.five:before { + content: "\f459"; +} + +/* Full stars */ +.star-rating.rating-20 span.one:before, +.star-rating.rating-30 span.one:before, +.star-rating.rating-40 span.one:before, +.star-rating.rating-40 span.two:before, +.star-rating.rating-50 span.one:before, +.star-rating.rating-50 span.two:before, +.star-rating.rating-60 span.one:before, +.star-rating.rating-60 span.two:before, +.star-rating.rating-60 span.three:before, +.star-rating.rating-70 span.one:before, +.star-rating.rating-70 span.two:before, +.star-rating.rating-70 span.three:before, +.star-rating.rating-80 span.one:before, +.star-rating.rating-80 span.two:before, +.star-rating.rating-80 span.three:before, +.star-rating.rating-80 span.four:before, +.star-rating.rating-90 span.one:before, +.star-rating.rating-90 span.two:before, +.star-rating.rating-90 span.three:before, +.star-rating.rating-90 span.four:before, +.star-rating.rating-100 > span:before { + content: "\f155"; +} + +.theme-details .star-rating .ratings { + display: block; + line-height: 20px; + color: #999; +} + +/*------------------------------------------------------------------------------ + 16.3 - Custom Header Screen +------------------------------------------------------------------------------*/ + +.appearance_page_custom-header #headimg { + border: 1px solid #DFDFDF; + 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; +} + + +/*------------------------------------------------------------------------------ + 16.4 - Custom Background Screen +------------------------------------------------------------------------------*/ + +div#custom-background-image { + min-height: 100px; + border: 1px solid #dfdfdf; +} + +div#custom-background-image img { + max-width: 400px; + max-height: 300px; +} + +/*------------------------------------------------------------------------------ + 23.0 - Full Overlay w/ Sidebar +------------------------------------------------------------------------------*/ + +body.full-overlay-active { + overflow: hidden; +} + +.wp-full-overlay { + background: transparent; + z-index: 500000; + position: fixed; + overflow: visible; + top: 0; + bottom: 0; + left: 0; + right: 0; + height: 100%; + min-width: 0; +} + +.wp-full-overlay-sidebar { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + position: fixed; + width: 300px; + height: 100%; + top: 0; + bottom: 0; + left: 0; + padding: 0; + margin: 0; + z-index: 10; + 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; +} + +.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%; +} + +#customize-preview.wp-full-overlay-main { + background: url(../images/spinner.gif) no-repeat center center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; +} + +#customize-preview.wp-full-overlay-main.iframe-ready { + background: none; +} + +.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; + -webkit-box-shadow: 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; + -webkit-box-shadow: 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; +} + +/* Close & Navigation Links */ +.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header { + padding: 0; +} + +.theme-install-overlay .close-full-overlay, +.theme-install-overlay .previous-theme, +.theme-install-overlay .next-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; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.theme-install-overlay .close-full-overlay:hover, +.theme-install-overlay .close-full-overlay:focus, +.theme-install-overlay .previous-theme:hover, +.theme-install-overlay .previous-theme:focus, +.theme-install-overlay .next-theme:hover, +.theme-install-overlay .next-theme:focus { + background: #ddd; + border-color: #ccc; + color: #000; + outline: none; + -webkit-box-shadow: none; + 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 .previous-theme.disabled, +.theme-install-overlay .next-theme.disabled, +.theme-install-overlay .previous-theme.disabled:hover, +.theme-install-overlay .previous-theme.disabled:focus, +.theme-install-overlay .next-theme.disabled:hover, +.theme-install-overlay .next-theme.disabled:focus { + color: #b4b9be; + background: #eee; + cursor: default; + pointer-events: none; +} + +/* Collapse Button */ +.wp-core-ui .wp-full-overlay .collapse-sidebar { + position: fixed; + bottom: 8px; + left: 10px; + padding: 0; + color: #656a6f; + outline: 0; + line-height: 1; + background-color: transparent !important; + border: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + -webkit-border-radius: 0 !important; + border-radius: 0 !important; +} + +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + 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; /* avoid the focus box-shadow to be cut-off */ + -webkit-border-radius: 50%; + border-radius: 50%; + overflow: hidden; +} + +.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + 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; +} + +/* rtl:ignore */ +.wp-full-overlay.collapsed .collapse-sidebar-arrow:before, +.rtl .wp-full-overlay .collapse-sidebar-arrow:before { + -webkit-transform: rotate(180.001deg); + -ms-transform: rotate(180.001deg); + transform: rotate(180.001deg); /* Firefox: promoting to its own layer to trigger anti-aliasing */ +} + +.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before { + -webkit-transform: none; + -ms-transform: none; + transform: none; +} + +/* Animations */ +.wp-full-overlay, +.wp-full-overlay-sidebar, +.wp-full-overlay .collapse-sidebar, +.wp-full-overlay-main { + -webkit-transition-property: left, right, top, bottom, width, margin; + transition-property: left, right, top, bottom, width, margin; + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; +} + +/*------------------------------------------------------------------------------ + 24.0 - Customize Loader +------------------------------------------------------------------------------*/ + +.no-customize-support .hide-if-no-customize, +.customize-support .hide-if-customize, +.no-customize-support.wp-core-ui .hide-if-no-customize, +.no-customize-support .wp-core-ui .hide-if-no-customize, +.customize-support.wp-core-ui .hide-if-customize, +.customize-support .wp-core-ui .hide-if-customize { + display: none; +} + +#customize-container { + display: none; + background: #fff; + z-index: 500000; + position: fixed; + overflow: visible; + top: 0; + bottom: 0; + left: 0; + right: 0; + height: 100%; +} + +.customize-active #customize-container { + display: block; +} + +.customize-loading #customize-container iframe { + opacity: 0; +} + +.customize-loading #customize-container { + background: #fff url(../images/spinner.gif) no-repeat fixed center center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; +} + +#customize-container iframe, +.theme-install-overlay iframe { + height: 100%; + width: 100%; + z-index: 20; + -webkit-transition: opacity 0.3s; + transition: opacity 0.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-top: 15px; + width: 258px; + border: 1px solid #ccc; +} + +.install-theme-info .theme-details { + overflow: hidden; +} + +.theme-details .theme-version { + margin: 15px 0; + float: left; +} + +.theme-details .theme-description { + float: left; + color: #777; + line-height: 20px; + max-width: 100%; +} + +.theme-install-overlay .wp-full-overlay-header .theme-install { + 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: #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 { + background: #fff url(../images/spinner.gif) no-repeat center center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@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); + -webkit-background-size: 15px 123px; + background-size: 15px 123px; + } + + #customize-preview.wp-full-overlay-main, + .customize-loading #customize-container, + .theme-install-overlay .wp-full-overlay-main { + background-image: url(../images/spinner-2x.gif); + } + + .theme-install-overlay .wp-full-overlay-header .theme-install { + margin-top: 2px; + } +} + +@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; + } +} diff --git a/wp-admin/css/widgets-rtl.css b/wp-admin/css/widgets-rtl.css new file mode 100644 index 0000000000..149c11717d --- /dev/null +++ b/wp-admin/css/widgets-rtl.css @@ -0,0 +1,587 @@ +/* General Widgets Styles */ + +.widget { + margin: 0 auto 10px; + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.widget-top { + font-size: 13px; + font-weight: 600; + background: #f7f7f7; +} + +.widget-top a.widget-action, +.widget-top a.widget-action:hover { + -webkit-box-shadow: none; + box-shadow: none; + outline: none; + text-decoration: none; +} + +.widget-title h4 { + margin: 0; + padding: 15px; + line-height: 1; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.widgets-holder-wrap .widget-inside { + border-top: none; + padding: 1px 15px 15px 15px; + line-height: 16px; +} + +.in-widget-title, +#widgets-right a.widget-control-edit, +#available-widgets .widget-description { + color: #666; +} + +.deleting .widget-title, +.deleting .widget-top a.widget-action:after { + color: #a0a5aa; +} + +/* Widget Dragging Helpers */ +.widget.ui-draggable-dragging { + min-width: 100%; +} + +.widget.ui-sortable-helper { + opacity: 0.8; +} + +.widget-placeholder { + border: 1px dashed #b4b9be; + margin: 0 auto 10px; + height: 45px; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#widgets-right .widget-placeholder { + margin-top: 0; +} + +#widgets-right .closed .widget-placeholder { + height: 0; + border: 0; + margin-top: -10px; +} + +/* Widget Sidebars */ +.sidebar-name { + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.sidebar-name-arrow { + position: absolute; + top: 0; + left: 0; + bottom: 0; +} + +.js .sidebar-name { + cursor: pointer; +} + +.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: #777; +} + +#widgets-right .widgets-holder-wrap .description { + padding-right: 7px; + padding-left: 7px; +} + +/* Widgets 2-col Layout */ +div.widget-liquid-left { + margin: 0; + width: 38%; + float: right; +} + +div.widget-liquid-right { + float: left; + width: 58%; +} + +/* Widgets Left - Available Widgets */ + +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 h3 { + padding: 10px 0; + margin: 0 0 0 10px; +} + +div#widgets-left .sidebar-name .sidebar-name-arrow:before { + left: 0; + top: 4px; + padding: 4px 4px 4px 6px; +} + +#widgets-left #available-widgets, +div#widgets-left .widget-holder { + background: transparent; + border: none; +} + +#widgets-left .widgets-holder-wrap { + border: none; + -webkit-box-shadow: 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; +} + +#available-widgets #widget-list { + position: relative; +} + +/* Inactive Sidebars */ +#widgets-left .inactive-sidebar { + clear: both; + width: 100%; + background: transparent; + padding: 0; + margin: 0 0 20px 0; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +#widgets-left .inactive-sidebar.first { + margin-top: 40px; +} + +/* Not sure what this is for... */ +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: transparent; + margin: 0; + position: relative; +} + +/* Widgets Right */ + +div#widgets-right:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +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 h3 { + padding: 15px 7px; +} + +div#widgets-right .sidebar-name .sidebar-name-arrow:before { + left: 0; + top: 4px; +} + +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; +} + +.sidebar-name .spinner { + float: none; + position: relative; + top: -2px; + margin: -5px 5px; +} + +/* Dragging a widget over a closed sidebar */ +#widgets-right .widgets-holder-wrap.widget-hover { + border-color: #777; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.3); + box-shadow: 0 1px 2px rgba(0,0,0,0.3); +} + +/* Accessibility Mode */ +.widgets_access #widgets-left .widget .widget-top { + cursor: auto; +} + +.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description, +.widgets_access #wpwrap .widgets-holder-wrap.closed .widget, +.widgets_access #wpwrap .widget-control-edit { + 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-name, +.widgets-holder-wrap .sidebar-description { + -webkit-user-select: none; + -moz-user-select: none; + -ms-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 .widgets-holder-wrap.closed .widget, +.js .widgets-holder-wrap.closed .sidebar-description, +.js .closed br.clear { + display: none; +} + +.js .widgets-holder-wrap.closed .widget.ui-sortable-helper { + display: block; +} + +/* Hide Widget Settings by Default */ +.widget-inside, +.widget-description { + display: none; +} + +.widget-inside { + background: #fff; +} + +/* Dragging widgets over the available widget area show's a "Deactivate" message */ +#removing-widget { + display: none; + font-weight: normal; + padding-right: 15px; + font-size: 12px; + line-height: 1; + color: black; +} + +.js #removing-widget { + color: #00a0d2; +} + +.widget-control-noform, +#access-off, +.widgets_access .widget-action, +.widgets_access .sidebar-name-arrow, +.widgets_access #access-on, +.widgets_access .widget-holder .description, +.no-js .widget-holder .description { + display: none; +} + +.widgets_access .widget-holder, +.widgets_access #widget-list { + padding-top: 10px; +} + +.widgets_access #access-off { + display: inline; +} + +.widgets_access .sidebar-name, +.widgets_access .widget .widget-top { + cursor: default; +} + + +/* Widgets Area Chooser */ +.widget-liquid-left #widgets-left.chooser #available-widgets .widget, +.widget-liquid-left #widgets-left.chooser .inactive-sidebar { + -webkit-transition: opacity 0.1s linear; + transition: opacity 0.1s linear; +} + +.widget-liquid-left #widgets-left.chooser #available-widgets .widget, +.widget-liquid-left #widgets-left.chooser .inactive-sidebar { + /* -webkit-filter: blur(1px); */ + opacity: 0.2; + pointer-events: none; +} + +.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question { + /* -webkit-filter: none; */ + opacity: 1; + pointer-events: auto; +} + +.widgets-chooser ul, +#widgets-left .widget-in-question .widget-top, +#available-widgets .widget-top:hover, +div#widgets-right .widget-top:hover, +#widgets-left .widget-top:hover { + border-color: #999; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.1); + box-shadow: 0 1px 2px rgba(0,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: none; + position: relative; + -webkit-transition: background 0.2s ease-in-out; + transition: background 0.2s ease-in-out; +} + +.widgets-chooser li:hover, +.widgets-chooser li:focus { + background: rgba(255,255,255,0.7); +} + +.widgets-chooser li:focus:before { + content: '\f147'; + display: block; + -webkit-font-smoothing: antialiased; + font: normal 26px/1 'dashicons'; + color: #999; + 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; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@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 10px !important; + max-width: 480px; + } +} + +@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; + } +} diff --git a/wp-admin/css/widgets.css b/wp-admin/css/widgets.css new file mode 100644 index 0000000000..3befaf29a8 --- /dev/null +++ b/wp-admin/css/widgets.css @@ -0,0 +1,587 @@ +/* General Widgets Styles */ + +.widget { + margin: 0 auto 10px; + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.widget-top { + font-size: 13px; + font-weight: 600; + background: #f7f7f7; +} + +.widget-top a.widget-action, +.widget-top a.widget-action:hover { + -webkit-box-shadow: none; + box-shadow: none; + outline: none; + text-decoration: none; +} + +.widget-title h4 { + margin: 0; + padding: 15px; + line-height: 1; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.widgets-holder-wrap .widget-inside { + border-top: none; + padding: 1px 15px 15px 15px; + line-height: 16px; +} + +.in-widget-title, +#widgets-right a.widget-control-edit, +#available-widgets .widget-description { + color: #666; +} + +.deleting .widget-title, +.deleting .widget-top a.widget-action:after { + color: #a0a5aa; +} + +/* Widget Dragging Helpers */ +.widget.ui-draggable-dragging { + min-width: 100%; +} + +.widget.ui-sortable-helper { + opacity: 0.8; +} + +.widget-placeholder { + border: 1px dashed #b4b9be; + margin: 0 auto 10px; + height: 45px; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#widgets-right .widget-placeholder { + margin-top: 0; +} + +#widgets-right .closed .widget-placeholder { + height: 0; + border: 0; + margin-top: -10px; +} + +/* Widget Sidebars */ +.sidebar-name { + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.sidebar-name-arrow { + position: absolute; + top: 0; + right: 0; + bottom: 0; +} + +.js .sidebar-name { + cursor: pointer; +} + +.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: #777; +} + +#widgets-right .widgets-holder-wrap .description { + padding-left: 7px; + padding-right: 7px; +} + +/* Widgets 2-col Layout */ +div.widget-liquid-left { + margin: 0; + width: 38%; + float: left; +} + +div.widget-liquid-right { + float: right; + width: 58%; +} + +/* Widgets Left - Available Widgets */ + +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 h3 { + padding: 10px 0; + margin: 0 10px 0 0; +} + +div#widgets-left .sidebar-name .sidebar-name-arrow:before { + right: 0; + top: 4px; + padding: 4px 6px 4px 4px; +} + +#widgets-left #available-widgets, +div#widgets-left .widget-holder { + background: transparent; + border: none; +} + +#widgets-left .widgets-holder-wrap { + border: none; + -webkit-box-shadow: 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; +} + +#available-widgets #widget-list { + position: relative; +} + +/* Inactive Sidebars */ +#widgets-left .inactive-sidebar { + clear: both; + width: 100%; + background: transparent; + padding: 0; + margin: 0 0 20px 0; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +#widgets-left .inactive-sidebar.first { + margin-top: 40px; +} + +/* Not sure what this is for... */ +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: transparent; + margin: 0; + position: relative; +} + +/* Widgets Right */ + +div#widgets-right:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +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 h3 { + padding: 15px 7px; +} + +div#widgets-right .sidebar-name .sidebar-name-arrow:before { + right: 0; + top: 4px; +} + +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; +} + +.sidebar-name .spinner { + float: none; + position: relative; + top: -2px; + margin: -5px 5px; +} + +/* Dragging a widget over a closed sidebar */ +#widgets-right .widgets-holder-wrap.widget-hover { + border-color: #777; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.3); + box-shadow: 0 1px 2px rgba(0,0,0,0.3); +} + +/* Accessibility Mode */ +.widgets_access #widgets-left .widget .widget-top { + cursor: auto; +} + +.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description, +.widgets_access #wpwrap .widgets-holder-wrap.closed .widget, +.widgets_access #wpwrap .widget-control-edit { + 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-name, +.widgets-holder-wrap .sidebar-description { + -webkit-user-select: none; + -moz-user-select: none; + -ms-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 .widgets-holder-wrap.closed .widget, +.js .widgets-holder-wrap.closed .sidebar-description, +.js .closed br.clear { + display: none; +} + +.js .widgets-holder-wrap.closed .widget.ui-sortable-helper { + display: block; +} + +/* Hide Widget Settings by Default */ +.widget-inside, +.widget-description { + display: none; +} + +.widget-inside { + background: #fff; +} + +/* Dragging widgets over the available widget area show's a "Deactivate" message */ +#removing-widget { + display: none; + font-weight: normal; + padding-left: 15px; + font-size: 12px; + line-height: 1; + color: black; +} + +.js #removing-widget { + color: #00a0d2; +} + +.widget-control-noform, +#access-off, +.widgets_access .widget-action, +.widgets_access .sidebar-name-arrow, +.widgets_access #access-on, +.widgets_access .widget-holder .description, +.no-js .widget-holder .description { + display: none; +} + +.widgets_access .widget-holder, +.widgets_access #widget-list { + padding-top: 10px; +} + +.widgets_access #access-off { + display: inline; +} + +.widgets_access .sidebar-name, +.widgets_access .widget .widget-top { + cursor: default; +} + + +/* Widgets Area Chooser */ +.widget-liquid-left #widgets-left.chooser #available-widgets .widget, +.widget-liquid-left #widgets-left.chooser .inactive-sidebar { + -webkit-transition: opacity 0.1s linear; + transition: opacity 0.1s linear; +} + +.widget-liquid-left #widgets-left.chooser #available-widgets .widget, +.widget-liquid-left #widgets-left.chooser .inactive-sidebar { + /* -webkit-filter: blur(1px); */ + opacity: 0.2; + pointer-events: none; +} + +.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question { + /* -webkit-filter: none; */ + opacity: 1; + pointer-events: auto; +} + +.widgets-chooser ul, +#widgets-left .widget-in-question .widget-top, +#available-widgets .widget-top:hover, +div#widgets-right .widget-top:hover, +#widgets-left .widget-top:hover { + border-color: #999; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.1); + box-shadow: 0 1px 2px rgba(0,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: none; + position: relative; + -webkit-transition: background 0.2s ease-in-out; + transition: background 0.2s ease-in-out; +} + +.widgets-chooser li:hover, +.widgets-chooser li:focus { + background: rgba(255,255,255,0.7); +} + +.widgets-chooser li:focus:before { + content: '\f147'; + display: block; + -webkit-font-smoothing: antialiased; + font: normal 26px/1 'dashicons'; + color: #999; + 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; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@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 10px !important; + max-width: 480px; + } +} + +@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; + } +} diff --git a/wp-admin/css/wp-admin-rtl.css b/wp-admin/css/wp-admin-rtl.css new file mode 100644 index 0000000000..5e7c37d6d6 --- /dev/null +++ b/wp-admin/css/wp-admin-rtl.css @@ -0,0 +1,14 @@ +@import url(common-rtl.css); +@import url(forms-rtl.css); +@import url(admin-menu-rtl.css); +@import url(dashboard-rtl.css); +@import url(list-tables-rtl.css); +@import url(edit-rtl.css); +@import url(revisions-rtl.css); +@import url(media-rtl.css); +@import url(themes-rtl.css); +@import url(about-rtl.css); +@import url(nav-menus-rtl.css); +@import url(widgets-rtl.css); +@import url(site-icon-rtl.css); +@import url(l10n-rtl.css); diff --git a/wp-admin/css/wp-admin-rtl.min.css b/wp-admin/css/wp-admin-rtl.min.css new file mode 100644 index 0000000000..3ed8f6d477 --- /dev/null +++ b/wp-admin/css/wp-admin-rtl.min.css @@ -0,0 +1,8 @@ +#ajax-loading,#screen-meta .screen-reader-text,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading,.row-actions,.spinner{visibility:hidden}.color-palette,.form-table,.media-item .describe{border-collapse:collapse}#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-container,#col-left,#col-right{overflow:hidden;padding:0;margin:0}#col-left{width:35%}#col-right{float:left;clear:left;width:65%}.alignleft,.subsubsub{float:right}.col-wrap{padding:0 7px}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}.clear{clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}#adminmenu .wp-submenu,#dashboard_quick_press .draft-title,#templateside,#the-comment-list td.comment,.dashboard-comment-wrap,.pre,.widefat *{word-wrap:break-word}.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:#21759b;z-index:100000;line-height:normal;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:0}body,p{font-size:13px}.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;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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}html{background:#f1f1f1}body{color:#444;font-family:"Open Sans",sans-serif;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;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#00a0d2}a:focus,a:focus .media-icon img{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);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{-webkit-box-shadow:none;box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}p{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{font-size:2em;margin:.67em 0}.wrap>h1,h2{color:#23282d;font-size:1.5em;margin:.83em 0;font-weight:400}h3{color:#23282d;font-size:1.3em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-right:2em}ul.ul-disc{list-style:disc}.side-info ul,ul.ul-square{list-style:square}ol.ol-decimal{list-style:decimal}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:#eaeaea;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;color:#666}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;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 a{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}.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 tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-top:-1px}.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:10px}.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}.subtitle,.wrap h1,.wrap h2{font-weight:400;margin:0}.wrap h1,.wrap h2{font-size:23px;font-weight:400;padding:9px 0 4px 15px;line-height:29px}.subtitle{color:#777;font-size:14px;padding-right:25px}.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;-webkit-border-radius:2px;border-radius:2px;background:#e0e0e0;text-shadow:none;font-weight:600;font-size:13px}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{background:#00a0d2;color:#fff}.wrap h1.long-header{padding-left:0}.wp-dialog{background-color:#fff}.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}.media-upload-form label.form-help,td.help{color:#9a9a9a}.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:#999}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;-webkit-box-shadow:none!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;user-select:none}.accordion-section-title,.postbox .hndle,.stuffbox .hndle{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.quicktags,.search{background-color:#ccc;color:#000;font-size:12px}.icon32{display:none}#bulk-titles div a:before,.notice-dismiss:before,.tagchecklist span a:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#b4b9be;content:'\f153';display:block;font:400 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,.tagchecklist span a:before{margin:1px 0}#bulk-titles div a:hover:before,.tagchecklist span a:hover:before,.welcome-panel .welcome-panel-close:focus:before,.welcome-panel .welcome-panel-close:hover:before{color:#c00}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap}#namediv td.first,#plugin-information-title,.no-break,.star-rating,.ui-autocomplete li{white-space:nowrap}.howto{color:#666;font-style:italic;display:block}p.install-help{margin:8px 0;font-style:italic}hr{border:0;border-top:1px solid #ddd;border-bottom:1px solid #fafafa}#all-plugins-table .plugins 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,#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,.widget-control-remove:hover,abbr.required{color:red;text-decoration:none;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #ddd;background:#f5f5f5}#delete-action{line-height:28px;vertical-align:middle;text-align:right;float:right}#publishing-action{text-align:left;float:left;line-height:23px}#publishing-action .spinner,#save-post{float:right}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}#minor-publishing-actions{padding:10px 10px 0;text-align:left}.preview{float:left}#sticky-span{margin-right:18px}.side-info{margin:0;padding:4px;font-size:11px}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom:1px solid #dadada}.side-info ul{margin:0;padding-right:18px;color:#666}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:left}.wp-filter{display:inline-block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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;-webkit-border-radius:30px;border-radius:30px;background:#777;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,.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{-webkit-box-shadow:none;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 .drawer-toggle{display:inline-block;margin:0 10px;padding:4px 6px;color:#666;cursor:pointer}.wp-filter .drawer-toggle:before{display:inline-block;vertical-align:top;content:"\f111";margin:0 0 0 5px;width:16px;height:16px;color:#777;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;font-family:dashicons;font-size:16px;line-height:1;text-align:center;text-decoration:inherit;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased}.wp-filter .drawer-toggle:hover,.wp-filter .drawer-toggle:hover:before{color:#00a0d2}.show-filters .wp-filter .drawer-toggle:before,.wp-filter .drawer-toggle.current:before{color:#fff}.filter-drawer{display:none;margin:0 -20px;padding:20px;border-top:1px solid #eee;background:#fafafa}.show-filters .filter-drawer{display:block;overflow:hidden;width:100%}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2ea2cc}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .drawer-toggle{-webkit-border-radius:2px;border-radius:2px;border:none;background:#777;color:#fff}.filter-group{box-sizing:border-box;float:right;margin:0 0 0 1%;padding:10px;width:24%;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group,.filtered-by .tag{background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group,html.wp-toolbar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.filter-group h4{position:relative;margin:0}.filter-drawer ol{margin:20px 0 0;list-style-type:none;font-size:12px}.filter-drawer li{display:inline-block;vertical-align:top;margin:5px 0;padding-left:25px;width:160px;list-style-type:none}.filter-drawer .buttons{margin-bottom:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.spinner,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-filter .button.clear-filters{display:none;margin-right:10px}.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;box-shadow:0 1px 1px rgba(0,0,0,.04);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.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%}}.notice,div.error,div.updated{background:#fff;border-right:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 15px 2px;padding:1px 12px}.notice-dismiss:focus,.widget-top a.widget-action:focus:after{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.form-table td .notice p,.notice p,div.error p,div.updated p{margin:.5em 0;padding:2px}.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:#b4b9be;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:#5b9dd9 solid 1px}.notice-success,div.updated{border-color:#7ad03a}.notice-warning{border-color:#ffba00}.notice-error,div.error{border-color:#dd3d36}.notice-info{border-color:#00a0d2}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}#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;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.update-message{color:#000}.update-php .spinner{float:none;margin:-4px 0}#ajax-response.alignleft{margin-right:2em}#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;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.025);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;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);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;-webkit-border-radius:0;border-radius:0;color:#777;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:after{left:0;content:'\f140';font:400 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:#b4b9be}.hndle a,.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}#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{margin:8px 0;font-size:13px}.metabox-prefs label{display:inline-block;padding-left:15px;line-height:30px}.metabox-prefs label input[type=checkbox]{margin-top:-4px;margin-left:6px}.metabox-prefs label input{margin:0 2px 0 5px}.metabox-prefs .columns-prefs label input{margin:0 2px}.metabox-prefs label a{display:none}.metabox-prefs .screen-options{padding-top:10px}.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}#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;-webkit-border-bottom-left-radius:2px;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;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02);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}.nav-tab,.spinner{display:inline-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 ol,.widefat p,.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th,.widefat ul{color:#32373c}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:right}.postbox-container .meta-box-sortables{box-sizing:border-box}.postbox-container .meta-box-sortables,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .empty-container{border:3px dashed #b4b9be;height:250px}.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;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;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.js .accordion-section-title,.js .postbox .handlediv{cursor:pointer}.hndle a{font-size:11px}.postbox .handlediv{float:left;width:27px;height:30px}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.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;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{-webkit-box-shadow:none;box-shadow:none}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 5px}#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:#777}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}#wpfooter a{text-decoration:none}#wpfooter a:hover{text-decoration:underline}#templateside ul li a,.nav-tab{text-decoration:none}.nav-tab{border:1px solid #ccc;border-bottom:none;background:#e4e4e4;color:#555;font-size:12px;line-height:16px;padding:4px 14px 6px;margin:-4px 0 -1px 4px}.nav-tab:hover{background-color:#fff;color:#464646}.nav-tab-active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}h1.nav-tab-wrapper,h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;padding-bottom:0;padding-right:10px}h1 .nav-tab,h2 .nav-tab{padding:6px 10px;font-weight:700;font-size:15px;line-height:24px}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;float:left;vertical-align:middle;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.spinner.is-active{visibility:visible}#template div{margin-left:190px}.metabox-holder h3{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:right}.attention,.error-message{color:red;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}#howto,.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 #e7e7e7;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px}.post-categories,.post-categories li{display:inline}.importers td{padding-left:14px}.checkbox,.post-categories,.zerosize,fieldset{margin:0;padding:0}.importers{font-size:16px;width:auto}#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 h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;border:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:none}fieldset{border:0}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) bottom left repeat-x}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) top left repeat-x;height:17px;float:right}.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;-webkit-transition:color .1s ease-in 0;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{-webkit-transform:rotateY(180deg);-ms-transform:rotateY(180deg);transform:rotateY(180deg)}.star-rating .star-empty:before{content:'\f154'}div.action-links{font-weight:400}#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 20px;background:#f5f5f5;font-size:22px;font-weight:600;line-height:56px;position:relative;top:0;left:0;right:0;height:56px;overflow:hidden;text-overflow:ellipsis}#plugin-information-title.with-banner{margin-left:0;height:250px;bottom:250px;-webkit-background-size:cover;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:700;padding:0;margin:0;max-width:680px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta-box-sortables select,p.submit{max-width:100%}#plugin-information-title.with-banner h2{font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:50px;padding:0 15px;margin:174px 10px 0 0;color:#fff;background:rgba(30,30,30,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);-webkit-box-shadow:0 0 30px rgba(255,255,255,.1);box-shadow:0 0 30px rgba(255,255,255,.1);-webkit-border-radius:8px;border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{display:block;float:left;top:0;height:250px;width:772px;margin:0 -20px;background:0 0;-webkit-box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1);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;height:36px;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;float:right;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;-webkit-transition:none;transition:none}#plugin-information-tabs a.current{margin:0 -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:-webkit-calc(100% - 152px);min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:-webkit-calc(100% - 346px);min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;left:250px;bottom:0;right:0;margin-left:250px;padding:10px 26px 99999px;margin-bottom:-99930px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{display:block;float:left;position:relative;top:0;left:0;padding:16px 16px 99999px;margin-bottom:-99930px;width:217px;border-right:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#464646}#plugin-information .fyi h3{font-weight:700;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 .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:#ececec;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 img{vertical-align:middle;margin-left:4px}#plugin-information-footer{padding:15px 16px;position:absolute;left:0;bottom:0;right:0;height:28px;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;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);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 .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #e6e6e6}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#postcustomstuff p.submit,#templateside h3,.alignleft h3{margin: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}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px;bottom: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;bottom:100px;width:800%}#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}}body.import-php #TB_window,body.index-php #TB_window,body.plugin-install-php #TB_window,body.plugins-php #TB_window,body.update-core-php #TB_window{background:url(../images/spinner.gif) center no-repeat #fcfcfc}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){body.import-php #TB_window,body.index-php #TB_window,body.plugin-install-php #TB_window,body.plugins-php #TB_window,body.update-core-php #TB_window{background:url(../images/spinner-2x.gif) center no-repeat #fcfcfc;-webkit-background-size:20px 20px;background-size:20px 20px}}body.import-php #TB_title,body.index-php #TB_title,body.plugin-install-php #TB_title,body.plugins-php #TB_title,body.update-core-php #TB_title{float:right;height:1px}body.import-php #TB_ajaxWindowTitle,body.index-php #TB_ajaxWindowTitle,body.plugin-install-php #TB_ajaxWindowTitle,body.plugins-php #TB_ajaxWindowTitle,body.update-core-php #TB_ajaxWindowTitle{display:none}body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{right:auto;left:-30px;color:#eee;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}body.import-php #TB_closeWindowButton:focus,body.import-php #TB_closeWindowButton:focus .tb-close-icon,body.import-php .tb-close-icon:focus,body.import-php .tb-close-icon:hover,body.index-php #TB_closeWindowButton:focus,body.index-php #TB_closeWindowButton:focus .tb-close-icon,body.index-php .tb-close-icon:focus,body.index-php .tb-close-icon:hover,body.plugin-install-php #TB_closeWindowButton:focus,body.plugin-install-php #TB_closeWindowButton:focus .tb-close-icon,body.plugin-install-php .tb-close-icon:focus,body.plugin-install-php .tb-close-icon:hover,body.plugins-php #TB_closeWindowButton:focus,body.plugins-php #TB_closeWindowButton:focus .tb-close-icon,body.plugins-php .tb-close-icon:focus,body.plugins-php .tb-close-icon:hover,body.update-core-php #TB_closeWindowButton:focus,body.update-core-php #TB_closeWindowButton:focus .tb-close-icon,body.update-core-php .tb-close-icon:focus,body.update-core-php .tb-close-icon:hover{color:#00a0d2;outline:0;-webkit-box-shadow:none;box-shadow:none}body.import-php .tb-close-icon:before,body.index-php .tb-close-icon:before,body.plugin-install-php .tb-close-icon:before,body.plugins-php .tb-close-icon:before,body.update-core-php .tb-close-icon:before{content:"\f335";font-size:32px}@media screen and (max-width:830px){body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{left:0;top:-30px}}img{border:none}#wphead{border-bottom:1px solid #dfdfdf}#wphead h1 a{color:#464646}.js .meta-box-sortables .postbox:hover .handlediv{margin-left:0!important}.js .meta-box-sortables .postbox .handlediv:before,.js .sidebar-name .sidebar-name-arrow:before{left:12px;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:8px 10px;top:0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;content:'\f142'}.js #widgets-left .sidebar-name .sidebar-name-arrow{display:none}.js #widgets-left .sidebar-name:hover .sidebar-name-arrow,.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow{display:block}.js .meta-box-sortables .postbox.closed .handlediv:before,.js .widgets-holder-wrap.closed .sidebar-name-arrow:before{content:'\f140'}.error a{text-decoration:underline}.updated a{text-decoration:none;padding-bottom:2px}#photo-add-url-div input[type=text]{width:300px}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;width:97%;background:#f9f9f9;outline:0}#docs-list,#template textarea{direction:ltr}#template p{width:97%}#templateside{float:left;width:190px}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em 0;padding:0}#templateside li{margin:4px 0}#templateside li a,.theme-editor-php .highlight{display:block;padding:3px 12px 3px 3px;text-decoration:none}.theme-editor-php .highlight{margin:-3px -12px -3px 3px}#templateside .highlight{border:none;font-weight:700}.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%}.accordion-section-title:after,.control-section .accordion-section-title:after,.nav-menus-php .item-edit:before,.widget-top a.widget-action:after{left:0;content:'\f140';border:none;background:0 0;font:400 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}.my-sites li a,form p.submit a.cancel:hover{text-decoration:none}.accordion-section-title:after,.handlediv,.item-edit,.sidebar-name-arrow,.widget-action{color:#a0a5aa}.accordion-section-title:hover:after,.handlediv:hover,.item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.widget-action:hover{color:#777}.widget-top a.widget-action:after{padding:12px 12px 11px}.widget-top a.widget-action:focus:after{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.nav-menus-php .item-edit:before{line-height:2.1}.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 a.widget-action:after{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{-ms-touch-action:none;touch-action:none}.accordion-section{border-bottom:1px solid #dfdfdf;margin:0}.accordion-section.open .accordion-section-content,.no-js .accordion-section .accordion-section-content{display:block}.accordion-section.open:hover{border-bottom-color:#dfdfdf}.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 #dfdfdf;border-left:1px solid #dfdfdf;user-select:none}.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{border-right:none;border-left:none;padding:10px 14px 11px 10px;line-height:21px;background:#fff}.control-section .accordion-section-title:after{top:11px}.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 #dfdfdf}.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}}@media only screen and (min-width:769px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:860px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (min-width:980px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:768px){#col-left,#col-right{width:100%}}@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) bottom left repeat-x;-webkit-background-size:21px 37px;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-arrow,.sidebar-name:hover .sidebar-name-arrow,.tagchecklist span a,.tagchecklist span a:hover,.widget-top a.widget-action,.widget-top a.widget-action:hover{background:0 0!important}}@-ms-viewport{width:device-width}@media screen and (max-width:782px){#template div,#templateside{float:none;width:auto}html.wp-toolbar{padding-top:46px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:transparent!important}#wpcontent{position:relative;margin-right:0;padding-right:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-left:12px;margin-right:0}.col-wrap{padding:0}#collapse-menu,#screen-meta,#screen-meta-links,.post-format-select{display:none!important}.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}.wp-color-result{height:auto;padding-right:45px}.wp-color-result:after{font-size:14px;height:auto;padding:6px 14px}.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:-190px}code{word-wrap:break-word}.postbox{font-size:14px}.metabox-holder h3{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#templateside li{margin:0}#templateside li a{display:block;padding:5px}#templateside .highlight{padding:5px;margin-right:-5px;margin-top:-5px}#template div{margin:0}#template textarea{width:100%}.fileedit-sub .alignright{margin-top:15px}#comments-form .checkforspam,#wpfooter{display:none}.edit-comment-author{margin:2px 0 0}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open,div#post-body.metabox-holder.columns-1{overflow-x:hidden}html.wp-toolbar{padding-top:0}#wpbody{padding-top:46px}}#pressthis-code-wrap,textarea{overflow:auto}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:right}}input,textarea{box-sizing:border-box}input[type=text],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=search],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=text]:focus,input[type=password]:focus,input[type=checkbox]: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=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=search]:focus,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}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;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}#adminmenu,.network-admin.themes-php p.search-box{clear:right}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]{-webkit-border-radius:50%;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:400 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;-webkit-border-radius:50px;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;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4}.wp-admin input[type=file]{padding:3px 0}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}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin-right:-25px;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);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);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;-webkit-box-shadow:none;box-shadow:none}.wp-admin select{padding:2px;line-height:28px;height:28px;vertical-align:middle}.wp-admin .button-cancel{padding:0 5px;line-height:2}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border:none}p.submit{text-align:right;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%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}#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}.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}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,fieldset label,label{vertical-align:middle}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:'\f173';display:inline-block;font:400 20px/1 dashicons;speak:none;right:-1px;padding:0 0 0 5px;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#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,.color-option{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#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}.indicator-hint{padding-top:8px}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:left;margin:0}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:right;height:28px;margin:0 0 0 4px}input[type=text].ui-autocomplete-loading,input[type=email].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;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;text-align:right}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{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 th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom: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;cursor:pointer}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0}.color-palette td{height:20px;padding:0;border:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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-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:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;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;-webkit-transform:skew(-20deg) rotate(-6deg);-ms-transform:skew(-20deg) rotate(-6deg);transform:skew(-20deg) rotate(-6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(-20deg) rotate(-9deg);-ms-transform:skew(-20deg) rotate(-9deg);transform:skew(-20deg) rotate(-9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 9px 8px 12px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:'\f157';position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#777}#local-time,#utc-time{padding-right:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.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}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_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 .button:not(:last-child),.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=password],input[type=email],input[type=number],input[type=search]{-webkit-appearance:none;padding:6px 10px}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:400 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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.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=text],.form-table td input[type=password],.form-table td input[type=email],.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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=text].small-text,input[type=password].small-text,input[type=number].small-text,input[type=search].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-left:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow: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}}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.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){.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%}}#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{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;margin:-6px -8px 0 0;float:right}.icon16:before{color:#999;font:400 20px/1 dashicons;speak:none;padding:6px 0;height:34px;width:20px;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s ease-in-out;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:'\f112'}.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 *{user-select:none}#adminmenu *,.theme-overlay .current-label{-webkit-user-select:none;-moz-user-select:none;-ms-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}#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;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);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;margin-top:0;-webkit-box-shadow:none;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:1.2;margin:0;padding:6px 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;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:6px 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;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;-webkit-background-size:20px auto;background-size:20px auto}div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6);padding:7px 0;-webkit-transition:all .1s ease-in-out;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:8px solid 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;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#collapse-button,#collapse-button div{height:15px;width:15px}#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}#adminmenu .awaiting-mod,#adminmenu .update-plugins{display:inline-block;background-color:#d54e21;color:#fff;font-size:9px;line-height:17px;font-weight:600;margin:1px 2px 0 0;vertical-align:top;-webkit-border-radius:10px;border-radius:10px;z-index:26}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,.folded #collapse-menu span{display:none}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#00b9eb;color:#fff}#collapse-menu{font-size:13px;line-height:34px;margin-top:10px;color:#a0a5aa;color:rgba(240,245,250,.6);-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after{color:#00b9eb}#collapse-button{float:right;margin:10px 11px 10px 8px;-webkit-border-radius:10px;border-radius:10px}#wpwrap #collapse-button div{padding:0}#collapse-button div:after{content:'\f148';display:block;line-height:15px;right:-3px;top:-3px;color:#a0a5aa;color:rgba(240,245,250,.6);font:400 20px/1 dashicons!important;speak:none;margin:0 auto;padding:0!important;position:relative;text-align:center;width:20px;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button div:after,.rtl #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.folded #collapse-button div:after{-webkit-transform:none;-ms-transform:none;transform:none}.customize-support #menu-appearance a[href="themes.php?page=custom-header"],.customize-support #menu-appearance a[href="themes.php?page=custom-background"],li#wp-admin-bar-menu-toggle{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 #collapse-menu span,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.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}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.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-button div{background:0 0}.auto-fold #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.auto-fold #collapse-button div:after{-webkit-transform:none;-ms-transform:none;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;-webkit-box-shadow:none;box-shadow:none}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .selected .wp-submenu,.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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:400 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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}}#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}#dashboard-widgets .postbox-container,#wpbody-content #dashboard-widgets.columns-4 .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;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 img{max-width:100%}.welcome-panel{position:relative;overflow:auto;margin:16px 0;padding:23px 10px 0;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:13px;line-height:2.1em}#activity-widget #the-comment-list .comment-item:first-child,#dashboard_right_now .sub,.js #dashboard_quick_press .drafts{border-top:1px solid #eee}.activity-block,.dashboard-widget-control-form,.mu-storage,.tablenav .actions,th.sortable a,th.sorted a{overflow:hidden}.welcome-panel h3{margin:0;font-size:21px;font-weight:400;line-height:1.2}.welcome-panel h4{margin:1.33em 0 0;font-size:16px}.welcome-panel li{font-size:14px}.welcome-panel p{color:#777}.welcome-panel a{text-decoration:none}.welcome-panel .about-description{font-size:16px;margin:0}.welcome-panel .welcome-panel-close{position:absolute;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;-webkit-transition:all .1s ease-in-out;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-right: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:#464646}.welcome-panel .welcome-icon{background:0 0!important}.welcome-panel .welcome-icon:before{color:#82878c;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 10px;top:-1px;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'}.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}.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}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .dashboard-widget-control-form,#dashboard_primary .widget-loading{padding:12px 12px 0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#777;margin-top:4px}#dashboard_primary .rss-widget{border-bottom:1px solid #eee;font-size:13px;padding:8px 12px 10px}#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:#777}#dashboard_primary .rss-widget span.rss-date{margin-right:12px}#dashboard_primary .rss-widget ul li{margin-bottom:8px}#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-widgets h4.mu-storage{margin-bottom:10px}#dashboard_right_now li a:before,#dashboard_right_now li span:before{color:#82878c}#dashboard_right_now .sub{color:#777;background:#f5f5f5;padding:10px 12px 6px}#dashboard_right_now .sub h4{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 .drafts li time,#title-wrap #title-prompt-text,.textarea-wrap #content-prompt-text{color:#777}#dashboard_right_now li a:before,#dashboard_right_now li span:before{content:'\f159';font:400 20px/1 dashicons;speak:none;display:block;float:right;margin:0 0 0 5px;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#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_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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0}#dashboard_quick_press textarea{resize:vertical}#description-wrap{margin-top:12px}.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}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts h4{margin:0 12px 8px;font-weight:400}#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 p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 0 0 5px}#dashboard-widgets #dashboard_activity h4{margin:0 12px 8px 0;font-weight:400}#dashboard-widgets #dashboard_activity h4.comment-meta{margin:0}#dashboard_activity h4.comment-meta{margin-bottom:4px}#dashboard_activity ul{padding:0 12px}#dashboard_activity .comment-meta span.approve:before{content:'\f227';font:20px/.5 dashicons;margin-right:12px;vertical-align:middle;position:relative;top:-1px;margin-left:2px}#dashboard_activity .inside{padding:0;margin:0}#dashboard_activity .no-activity{overflow:hidden;padding:0 12px 12px;text-align:center}#dashboard_activity .no-activity p{color:#999;font-size:16px}#dashboard_activity .no-activity .smiley{margin-top:0}#dashboard_activity .no-activity .smiley:before{content:'\f328';font:400 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-top:0;padding:8px 12px 4px}#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:#777}.activity-block{border-bottom:1px solid #eee;padding:8px 0 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:13px}#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 h4{font-size:13px;color:#999}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0}#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}.edit-box{display:none}h3:hover .edit-box{display:inline}#dashboard-widgets form .input-text-wrap input,#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 a{text-decoration:none}#dashboard-widgets h3 a,#dashboard_browser_nag a{text-decoration:underline}#dashboard-widgets h3 .postbox-title-action{position:absolute;left:10px;padding:0;top:5px}.js #dashboard-widgets h3 .postbox-title-action{left:33px}#dashboard-widgets h4{color:#23282d;font-weight:400;font-size:14px;margin:0 0 .2em;padding:0}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.06);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{padding:1em 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-item h4{line-height:1.5em;margin-top:0;color:#666}#latest-comments #the-comment-list .comment-item h4 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:14px;font-weight:600;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;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_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#dashboard_browser_nag a{color:#fff}#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;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag.postbox.browser-insecure h3{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h3{border-bottom-color:#f6e2ac;background:0 0;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag h3.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}@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){#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container,#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0;height:0;min-height:0}#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%}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}.index-php .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@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;height:0;min-height:0}}@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}}.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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;-webkit-border-radius:5px;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;-webkit-border-radius:11px;border-radius:11px;background:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center}.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:#777}#replyrow td{padding:2px}#replysubmit{margin:0;padding:0 5px 3px;text-align:center}#replysubmit .button{margin-left:5px}#replysubmit .error{color:red;line-height:21px;text-align:center}#replyrow h5{margin:.2em 0 0;padding:0 5px;line-height:1.4em;font-size:1em}#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;-webkit-box-shadow:none;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:#f4f4f4}#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}.sorting-indicator:before,th .comment-grey-bubble:before{speak:none;-moz-osx-font-smoothing:grayscale;position:relative;text-decoration:none!important;color:#444}#the-comment-list td,#the-comment-list th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);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{-webkit-box-shadow:none;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:400 20px/.5 dashicons;display:inline-block;padding:0;top:4px;right:-4px;vertical-align:top;-webkit-font-smoothing:antialiased}.sorting-indicator:before,th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:'\f142'}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-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{-webkit-transition:none;transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;-webkit-box-shadow:none;box-shadow:none}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0}#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{vertical-align:middle;width:160px}.sorting-indicator{display:none;width:10px;height:4px;margin-top:8px;margin-right:7px}.sorting-indicator:before{font:400 20px/1 dashicons;display:inline-block;padding:0;top:-4px;right:-8px;line-height:10px;vertical-align:top;-webkit-font-smoothing:antialiased}.column-comments .sorting-indicator:before{top:0;right:-10px}.wp-list-table .toggle-row:before,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{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.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{-webkit-box-shadow:none;box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;right:10px;-webkit-border-radius:50%;border-radius:50%;display:block;padding:1px 0 1px 2px;color:#666;font:400 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:before{color:#82878c;content:'\f160';display:inline-block;float:right;font:400 20px/1 dashicons;speak:none;vertical-align:middle;margin-right:0;-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:8px;height:auto;opacity:1}.locked-text{vertical-align:top}tr.locked-info,tr.wp-locked .locked-info{-webkit-transition:height 1s,opacity .5s;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;padding:7px 10px 8px 7px}.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{display:block}.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-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 #d2d2d2;padding:3px 5px 7px;background:#e4e4e4;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#e8e8e8;background:#ebebeb;color:#b4b4b4}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;-webkit-box-shadow:none;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{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:400 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}.row-actions,.row-actions-visible{padding:2px 0 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}.mobile .row-actions,.row-actions.visible,div.comment-item:hover .row-actions,tr:hover .row-actions{visibility:visible}#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%}#bulk-titles div a,.inline-edit-row fieldset .inline-edit-date,.plugin-card,.quick-edit-row-post fieldset label.inline-edit-status{float:right}#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 fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}.inline-edit-row h4{margin:.2em 0;padding:0;line-height:2.5;text-transform:uppercase}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0;font-style:italic}.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}#bulk-titles,ul.cat-checklist{height:12em;border:1px solid #ddd;overflow-y:scroll;padding:0 5px}#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 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{margin:0;background-color:#fff}#bulk-titles{display:block;margin:0 0 5px;line-height:140%}.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}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;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}#update-plugins-table tbody td p{margin-top:0}#update-plugins-table tbody td p strong{font-size:14px}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-right:6px}#update-plugins-table tfoot td.check-column,#update-plugins-table thead td.check-column{padding-top:11px}.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}.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-update-tr td{border-top:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);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);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1;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{-webkit-box-shadow:none;box-shadow:none}.plugins .active.update td,.plugins .active.update th,tr.active.update+tr.plugin-update-tr .plugin-update{background-color:#fef7f1}.plugin-update-tr.active td,.plugins .active th.check-column{border-right:4px solid #00a0d2}.plugins .active.update th.check-column,.plugins .active.update+.plugin-update-tr .plugin-update{border-right:4px solid #d54e21}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-left:12px;white-space:nowrap}.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}.plugin-update-tr .update-message{font-size:13px;font-weight:400;margin:0 31px 8px 10px;padding:6px 40px 8px 12px;background-color:#f7f7f7;background-color:rgba(0,0,0,.03)}.plugin-card .install-now:before,.plugin-card .update-now:before,.plugin-update-tr .update-message:before{color:#d54e21;display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .update-now:before,.plugin-update-tr .update-message:before{content:'\f463'}.plugin-update-tr .update-message:before{margin:0 -30px 0 10px}.plugin-card .install-now:before,.plugin-card .update-now:before{margin:3px -2px 0 5px}.plugin-card .updating-message:before,.plugin-update-tr .updating-message:before{content:'\f463';-webkit-animation:rotation 2s infinite linear;animation:rotation 2s infinite linear}@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(-359deg);transform:rotate(-359deg)}}@keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(-359deg);transform:rotate(-359deg)}}.plugin-card .updated-message:before,.plugin-update-tr .updated-message:before{color:#79ba49;content:'\f147'}.wp-list-table.plugins tbody tr.plugin-update-tr td.plugin-update{overflow:hidden;padding:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}tr.active+tr.plugin-update-tr .plugin-update{background-color:#f7fcfe}tr.active+tr.plugin-update-tr:not(.updated) .plugin-update .update-message{background-color:#fcf3ef}.plugin-install-php h3{clear:both}.plugin-install-php h4{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{margin:0 8px 16px;width:48.5%;width:-webkit-calc(50% - 8px);width:calc(50% - 8px);background-color:#fff;border:1px solid #dedede;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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:-webkit-calc(33.1% - 8px);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 h4{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 #dedede;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.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:-webkit-calc(100% - 180px);width:calc(100% - 180px)}.plugin-icon,.plugin-icon img{width:128px;height:128px}.plugin-card .column-compatibility span:before{font:400 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-icon{position:absolute;top:20px;right:20px;margin:0 0 20px 20px}.no-plugin-results{color:#999;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table tr.site-archived{background:#ffebe8}.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}}@media screen and (max-width:782px){.plugins #the-list tr td,.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.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}.form-wrap>p,.tablenav .view-switch,.tablenav.top .actions,.tablenav.top .displaying-num,.tablenav.top .tablenav-pages.one-page,.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}.view-switch a{width:36px;height:36px;line-height:33px}.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.bottom .tablenav-pages.one-page{margin:15px 0 0;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav-pages .pagination-links a,.tablenav-pages-navspan{padding:9px 16px 12px;font-size:18px}.tablenav-pages-navspan{height:18px}.tablenav-pages .pagination-links .current-page{padding:8px 9px 9px;font-size:16px}.comment-count{font-size:14px}.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{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{-webkit-box-shadow:none;box-shadow:none}#the-comment-list .is-expanded td:last-child{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;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;-webkit-border-radius:0;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 .check-column,.widefat thead .check-column{padding:10px 0}.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-size:16px}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong,table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}.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}#bulk-titles div{margin:.8em .3em}.plugin-card,.plugin-update-tr .update-message{margin-right:0}#bulk-titles div a{height:22px}#wpbody-content #update-themes-table .plugin-title{width:auto}.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}.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{-webkit-box-shadow:none;box-shadow:none;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{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.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}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 #the-list td{-webkit-box-shadow:none;box-shadow:none}table.plugin-install #the-list tr{display:block;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-left:0;width:100%}}#save-action .spinner,#show-comments .spinner,#show-comments a,.postarea h3 label{float:right}#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}#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:#777;position:absolute;font-size:1.7em;padding:11px 10px}#wp-content-editor-container,.postbox,form#tags-filter{position:relative}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px}input#link_description,input#link_url{width:98%}#pending{background:100% none;border:0;padding:0;font-size:11px;margin-top:-1px}#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-left:10px;font-size:11px}#editable-post-name-full{display:none}#editable-post-name{background-color:#fffbcc}#editable-post-name input{font-size:13px;height:22px;margin:0;width:16em}.submitbox .submit{text-align:right;padding:12px 10px 10px;font-size:11px;background-color:#464646;color:#ccc}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:red;border-bottom-color:red}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-left:4px;padding:6px}.inside-submitbox #post_status{margin:2px -2px 2px 0}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{min-width:255px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#post-status-info,.postbox{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:0 0;border:0;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,.ui-tabs-hide,.wp-editor-expand #content-resize-handle,.wp-hidden-children .wp-hidden-child{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:10px 0}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:0 7px 5px}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}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:1px solid transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #dfdfdf;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 5px}#postimagediv .inside img{max-width:100%;height:auto;width:auto}#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:url(../images/resize.gif) left bottom no-repeat;width:12px;cursor:row-resize}.rtl #content-resize-handle{background:url(../images/resize-rtl.gif) right bottom no-repeat}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}#content-textarea-clone{z-index:-1;position:absolute;top:0;visibility:hidden;overflow:hidden;max-width:100%;border:1px solid transparent}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #e5e5e5}.wp-editor-expand #wp-content-editor-container{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px;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,.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;display:inline!important;height:auto!important}#misc-publishing-actions label[for=post_status]:before,#post-body #visibility: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-revisions:before,.curtime #timestamp:before{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 2px;top:0;right:-1px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#post-body #visibility:before{content:'\f177'}.curtime #timestamp:before{content:'\f145';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;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);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}#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 span,.tagchecklist span a{overflow:hidden;display:block;float:right}.tagchecklist strong{margin-right:-8px;position:absolute}.tagchecklist span{margin-left:25px;font-size:13px;line-height:1.8em;cursor:default;max-width:100%;text-overflow:ellipsis}.tagchecklist span a{margin:1px -17px 0 0;cursor:pointer;width:20px;height:20px;text-indent:0;position:absolute}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:right}#poststuff h3{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}#poststuff .inside label.deleted,#poststuff .inside label.spam{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}.ie8 #poststuff .inside #page_template,.ie8 #poststuff .inside #parent_id{width:250px}#post-visibility-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f1f1f1}#postcustom #postcustomstuff .submit{border:0;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 #dfdfdf;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:400 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;-webkit-transition:all .1s ease-in-out;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}.post-format-icon:before{position:relative;display:inline-block;margin-left:7px;font:400 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:1px solid #dfdfdf;background-color:#fdfdfd}.ac_results,.revisions-diff,.revisions-meta,.revisions-tickmarks{background-color:#fff}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display: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;font-size:12px}.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field input[type=number],.form-field input[type=tel],.form-field input[type=url],.form-field input[type=search],.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:0 0 10px;padding:8px 0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h3{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}#poststuff .tagsdiv .howto{margin:0 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw,.ac_results{display:none}#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 h3{margin:2px 0 12px}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid grey}.wp-customizer .ac_results{z-index:500000}.ac_results li{padding:2px 5px;white-space:nowrap;color:#101010;text-align:right}.ac_over{background-color:#f0f0b8;cursor:pointer}.ac_match{text-decoration:underline}.imgedit-group-top h3 a,a.imgedit-help-toggle,table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}#comment-status-radio label,.links-table td,.links-table th{padding:5px 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}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 label{margin-left:8px}.links-table td input[type=text],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}.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 .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;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 .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-timing-function:ease-in-out;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:url(../images/resize-2x.gif) left bottom no-repeat;-webkit-background-size:11px 11px;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background:url(../images/resize-rtl-2x.gif) left bottom no-repeat}}@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;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){#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px}#poststuff h3{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}.tagsdiv .newtag,ul.categorychecklist li{margin-bottom:15px}ul.category-tabs li.tabs{padding: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}.tagchecklist{margin:25px 10px}.tagchecklist span{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:1em;margin:7px 7px 0 0;padding:8px 12px}#wp-content-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 15px 0 20px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-top:-3px!important;margin-right:-5px!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}.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}}@media only screen and (max-width:500px){#wp-content-media-buttons a{font-size:14px;padding:0 10px}}.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;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.revisions-tickmarks>div{position:absolute;height:100%;border-right:1px solid #a0a5aa;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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:-webkit-calc(100% - 30px);width:calc(100% - 30px);top:50%;top:-webkit-calc(50% - 10px);top:calc(50% - 10px);-webkit-transition:opacity .5s;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{-webkit-transition:opacity .5s;transition:opacity .5s}.revisions.loading .diff{opacity:.5;filter:alpha(opacity=50)}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions.pinned .revisions-meta{-webkit-box-shadow:none;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:#777}.revisions-controls .author-card.autosave{color:#d54e21}.revisions-controls .author-card .author-name{font-weight:700}.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;box-shadow:0 1px 3px rgba(0,0,0,.1)}.arrow:after,.revisions-diff{-webkit-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}.about-wrap h2 .nav-tab,.about-wrap p.wp-credits-list a,.imgedit-wrap .nowrap,.nav-menus-php .item-edit,.sidebar-name h3,.widget-title h4{white-space:nowrap}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-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;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{right:20px;top:-20px;width:25px;height:25px;transform:rotate(-45deg)}.arrow:after,.revisions-tooltip-arrow>span{content:"";position:absolute;-webkit-transform:rotate(-45deg);-ms-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 #d7d7d7;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.top{top:-16px;bottom:auto}.arrow.left{right:20%}.arrow:after{z-index:9999;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1);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 #d7d7d7;text-align:right;cursor:pointer}.wp-slider .ui-slider-handle{-webkit-border-radius:50%;border-radius:50%;height:18px;margin-top:-3px;outline:0;position:absolute;width:18px;z-index:2;-ms-touch-action:none;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#00a0d2;border:1px solid #0073aa;-webkit-box-shadow:inset 0 1px 0 #78c8e6,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #78c8e6,0 1px 0 rgba(0,0,0,.15)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:0;right:0;color:#fff;content:"\f229";font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.media-item .media-item-info tr,.wp-slider .ui-slider-range{background-color:transparent}.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:'\f139'}.rtl .wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{content:'\f141'}.rtl .wp-slider .ui-slider-handle.to-handle:before{content:'\f139';left:-1px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;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}}.media-item .describe{width:100%;border-top:1px solid #dfdfdf;clear:both;cursor:default}#media-items:empty,.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 .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}.js .html-uploader #plupload-upload-ui,.media-item .startclosed,.media-item .startopen{display:none}.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{-webkit-box-shadow:0 1px 0 #dfdfdf;box-shadow:0 1px 0 #dfdfdf}.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 .original{position:relative;height:34px}.media-item .progress{float:left;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;-webkit-border-radius:22px;border-radius:22px;background:#ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;-webkit-border-radius:22px;border-radius:22px;background-color:#0073aa;-webkit-box-shadow:inset 0 0 2px rgba(0,0,0,.3);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 #html-upload-ui{display:block}.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}.media-item .error-div a.dismiss{display:block;float:left;margin:0 15px 0 10px}.find-box{background-color:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);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 #dfdfdf;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%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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;position:absolute;top:0;left:0;cursor:pointer;text-align:center;color:#666}#find-posts-close:hover{color:#00a0d2}#find-posts-close:before{font:400 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 #dfdfdf;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}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #ddd;line-height:1.8em;word-spacing:3px;-webkit-border-radius:6px;border-radius:6px}.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}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title,.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.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-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-bottom:16px;padding:0 16px;border-right:4px solid #dd3d36;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.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;-webkit-box-shadow: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:400 16px/1 dashicons;color:#bbb}.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{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;left:auto;right:auto;bottom:auto;padding-top:0;margin-top:0;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{-webkit-box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;outline:0}.media-frame.mode-grid .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc}.media-frame.mode-grid .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe;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:#999;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:#777;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-right:1px solid #ddd;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;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:400 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;-webkit-box-shadow:none;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{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;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin-bottom:16px;max-width:100%;max-height:90%;max-height:-webkit-calc(100% - 42px);max-height:calc(100% - 42px)}.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);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 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}.imgedit-settings p{margin:8px 0 0}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto;overflow:hidden}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding-left:16px;width:auto;overflow:hidden}.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;background:url(../images/spinner.gif) center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.no-float{float:none}.A1B1 .button,.A1B1 .spinner,.wp_attachment_image .button,.wp_attachment_image .spinner{float:right}.imgedit-settings .disabled,.media-disabled{color:grey}.A1B1,.wp_attachment_image{overflow:hidden}.no-js .wp_attachment_image .button{display:none}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:right;width:32px;border:1px solid #d5d5d5;background:#f1f1f1;margin:0 0 0 8px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;line-height:28px;color:#777;cursor:pointer}.imgedit-menu div:before{font:400 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;color:#32373c}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;color:#777;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{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-applyto img{margin:0 0 0 8px}#poststuff .imgedit-group-top h3{padding:0}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-right:20px}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-group{margin-bottom:8px;padding:10px}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{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}}@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%}}.theme-browser .themes{clear:both;padding:0 0 100px}.themes-php .wrap h1{float:right;margin-bottom:15px}.network-admin.themes-php .wrap h1{margin-bottom:0}.themes-php .wrap h1 .button{margin-right:20px}.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}.themes-php div.error,.themes-php div.notice,.themes-php div.updated{margin:0 0 20px;clear:both}.themes-php div.updated a{text-decoration:underline}.theme-browser .theme{cursor:pointer;float:right;margin:0 0 4% 4%;position:relative;width:30.6%;border:1px solid #dedede;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-shadow:0 1px 1px -1px rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);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;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;position:absolute;bottom:0;left:0;height:38px;padding:9px 10px 0;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-secondary{float:none;margin-right:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-transition:opacity .2s ease-in-out;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%;-webkit-transition:opacity .2s ease-in-out;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:25%;right:25%;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;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.theme-browser .theme:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);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 .theme-installed,.theme-browser .theme .theme-update{background:#d54e21;background:rgba(213,78,33,.95);color:#fff;display:block;font-size:13px;font-weight:400;height:48px;line-height:48px;padding:0 10px;position:absolute;top:0;left:0;right:0;border-bottom:1px solid rgba(0,0,0,.25);overflow:hidden}.theme-browser .theme .theme-installed:before,.theme-browser .theme .theme-update:before{content:'\f463';display:inline-block;font:400 20px/1 dashicons;margin:0 0 0 6px;opacity:.8;position:relative;top:5px;speak:none;-webkit-font-smoothing:antialiased}.theme-browser .theme.active .theme-name{background:#2f2f2f;color:#fff;padding-left:110px;font-weight:300;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.5);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-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;-webkit-box-shadow:none;box-shadow:none}.theme-browser .theme.add-new-theme a{color:#999;text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:'';background: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);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#e5e5e5;background:rgba(153,153,153,.1);-webkit-border-radius:50%;border-radius:50%;display:inline-block;content:'\f132';-webkit-font-smoothing:antialiased;font:400 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;-webkit-box-shadow:none;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;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:400 22px/50px dashicons!important;color:#777;display:inline-block;content:'\f335';font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#777;background-color:transparent;height:48px;width:54px;float:right;text-align:center;border:0;border-left:1px solid #ddd;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;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{-webkit-box-shadow:none;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:400 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-about:after,.theme-overlay .theme-wrap:after{clear:both;visibility:hidden;content:".";display:block;height:0}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;right:190px;left:30px;bottom:3%;background:#fff;-webkit-box-shadow:0 1px 20px 5px rgba(0,0,0,.1);box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}.theme-overlay .theme-actions,.theme-overlay .theme-wrap{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}body.folded .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%}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.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}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#a00;text-decoration:none;border-color:transparent;-webkit-box-shadow:none;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 .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:880px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;box-sizing:border-box;overflow:hidden;position:relative;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot,.upload-plugin,.upload-theme{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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;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;-webkit-border-radius:2px;border-radius:2px;margin:0 0 -10px;user-select:none}.theme-overlay .theme-name{color:#23282d;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3}.theme-overlay .theme-version{color:#999;font-size:13px;font-weight:400;float:none;display:inline-block;margin-right:10px}.theme-overlay .theme-author{color:#686868;font-size:16px;font-weight:400;margin:15px 0 25px}.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}.theme-overlay .theme-tags{border-top:3px solid #eee;color:#82878c;font-size:13px;font-weight:400;margin:30px 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#444;font-weight:700;margin-left:5px}.theme-overlay .theme-update-message{background:#fef7f1;border:1px solid #eee;border-right:4px solid #d54e21;-webkit-border-radius:3px;border-radius:3px;padding:5px 20px 10px}.theme-overlay .theme-update{color:#23282d;font-size:18px;display:inline-block;line-height:40px;margin:0}.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-browser .theme.active .theme-name span,.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.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-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-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}}@media only screen and (max-width:650px){.theme-overlay .theme-description,.theme-overlay .theme-update{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;top:0;left:0;margin:10px 0;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:400 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}.theme-browser .theme .theme-installed{background:#0073aa}.theme-browser .theme .theme-installed:before{content:'\f147'}.theme-browser .theme.is-installed .theme-actions .button-primary{display:none!important}.theme-install-php .wp-filter{padding:0 20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.theme-install-php a.browse-themes,.theme-install-php.show-upload-theme a.upload{display:none}.theme-install-php.show-upload-theme a.browse-themes{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:0;width:100%;overflow:hidden;position:relative;top:10px}.wp-full-overlay,.wp-full-overlay-sidebar{right:0;bottom:0;top:0;height:100%;position:fixed}.upload-plugin,body.show-upload-theme .upload-theme{display:block}body.show-upload-theme .upload-theme+.wp-filter,body.show-upload-theme .upload-theme+.wp-filter+.theme-browser,p.no-themes{display:none}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;max-width:380px}.upload-plugin .install-help,.upload-theme .install-help{color:#999;font-size:18px;font-style:normal;margin:0;padding:40px 0 0;text-align:center}p.no-themes{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}body.no-results p.no-themes{display:block}.theme-install-php .add-new-theme,body.show-upload-theme p.no-themes{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;text-align:right}}.theme-details .star-rating{margin:15px 0 0}.theme-details .star-rating span:before{color:#ffb900;content:"\f154";display:inline-block;-webkit-font-smoothing:antialiased;font:400 20px/1 dashicons;vertical-align:top}.star-rating.rating-10 span.one:before,.star-rating.rating-30 span.two:before,.star-rating.rating-50 span.three:before,.star-rating.rating-70 span.four:before,.star-rating.rating-90 span.five:before{content:"\f459"}.star-rating.rating-100>span:before,.star-rating.rating-20 span.one:before,.star-rating.rating-30 span.one:before,.star-rating.rating-40 span.one:before,.star-rating.rating-40 span.two:before,.star-rating.rating-50 span.one:before,.star-rating.rating-50 span.two:before,.star-rating.rating-60 span.one:before,.star-rating.rating-60 span.three:before,.star-rating.rating-60 span.two:before,.star-rating.rating-70 span.one:before,.star-rating.rating-70 span.three:before,.star-rating.rating-70 span.two:before,.star-rating.rating-80 span.four:before,.star-rating.rating-80 span.one:before,.star-rating.rating-80 span.three:before,.star-rating.rating-80 span.two:before,.star-rating.rating-90 span.four:before,.star-rating.rating-90 span.one:before,.star-rating.rating-90 span.three:before,.star-rating.rating-90 span.two:before{content:"\f155"}.theme-details .star-rating .ratings{display:block;line-height:20px;color:#999}.appearance_page_custom-header #headimg{border:1px solid #DFDFDF;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 #dfdfdf}div#custom-background-image img{max-width:400px;max-height:300px}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:0 0;z-index:500000;overflow:visible;left:0;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;width:300px;padding:0;margin:0;z-index:10;background:#eee;border-left:none}.widget,.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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{overflow:visible;margin-right:-300px}.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%}#customize-preview.wp-full-overlay-main{background:url(../images/spinner.gif) center center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready{background:0 0}.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;-webkit-box-shadow: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;-webkit-box-shadow: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;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;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;-webkit-box-shadow:none;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:400 22px/1 dashicons;content:"\f335";position:relative;top:7px;right:13px}.theme-install-overlay .previous-theme:before{font:400 20px/1 dashicons;content:"\f345";position:relative;top:6px;right:14px}.theme-install-overlay .next-theme:before{font:400 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}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:8px;right:10px;padding:0;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:0!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;-webkit-border-radius:50%;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);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:400 20px/1 dashicons;speak:none;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:rotate(180.001deg);-ms-transform:rotate(180.001deg);transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:none;-ms-transform:none;transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{-webkit-transition-property:right,left,top,bottom,width,margin;transition-property:right,left,top,bottom,width,margin;-webkit-transition-duration:.2s;transition-duration:.2s}.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{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;right:0;left:0;height:100%}.customize-active #customize-container{display:block}.customize-loading #customize-container iframe{opacity:0}.customize-loading #customize-container{background:url(../images/spinner.gif) center center no-repeat fixed #fff;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;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-top:15px;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0;float:right}.theme-details .theme-description{float:right;color:#777;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{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{background:url(../images/spinner.gif) center center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px}@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);-webkit-background-size:15px 123px;background-size:15px 123px}#customize-preview.wp-full-overlay-main,.customize-loading #customize-container,.theme-install-overlay .wp-full-overlay-main{background-image:url(../images/spinner-2x.gif)}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:2px}}@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}}.about-wrap{position:relative;margin:25px 20px 0 40px;max-width:1050px;font-size:15px}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.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}.about-wrap .jetpack-video-wrapper{margin-bottom:0}.wp-badge{background:url(../images/w-logo-white.png?ver=20131202) center 24px no-repeat #0073aa;-webkit-background-size:85px 85px;background-size:85px 85px;color:#78c8e6;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:150px;text-rendering:optimizeLegibility;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.svg .wp-badge{background-image:url(../images/wordpress-logo-white.svg?ver=20131110)}.about-wrap .wp-badge{position:absolute;top:0;left:0}.about-wrap h2.nav-tab-wrapper{padding-right:6px}.about-wrap h2 .nav-tab{padding:4px 15px 6px;margin:0 0 -1px 3px;font-size:18px;vertical-align:top;border-width:1px}.about-wrap p{line-height:1.6em;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 h3{margin:1.25em 0 .6em;font-size:1.25em;line-height:1.5em}.about-wrap h4{color:#23282d}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap .about-description,.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6em;font-size:19px}.about-wrap .about-text{margin:1em 0 1em 200px;min-height:60px;color:#777}.about-wrap [class$=col] .col{float:right;position:relative}.about-wrap .two-col .col{margin-left:4.799999999%;width:47.6%}.about-wrap .three-col .col{margin-left:4.999999999%;width:29.95%}.about-wrap .three-col .col:nth-of-type(3n),.about-wrap .two-col .col:nth-of-type(2n){margin-left:0}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #dfdfdf}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .headline-feature h2{margin:50px 0 30px;font-size:2.2em;font-weight:300;line-height:1.3;text-align:right}.about-wrap .headline-feature h3{margin-top:30px;text-align:center}.about-wrap .feature-list h2{margin:30px 0 15px;text-align:center}.about-wrap .feature-section h4{margin:1.4em 0 .6em;font-size:1em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .feature-video{position:relative;margin:40px 0;padding-bottom:56.25%;width:100%;height:0;text-align:center}.about-wrap .feature-video embed{position:absolute;top:0;right:0;width:100%;height:100%}.about-wrap .featured-image{text-align:center}.about-wrap .feature-section{overflow:hidden;padding:0 0 40px;border-bottom:1px solid rgba(0,0,0,.1)}.about-wrap .headline-feature .feature-section{margin:0 auto;max-width:95%}.about-wrap .changelog.feature-section .col,.about-wrap .feature-section:not(.under-the-hood) .col{margin-top:40px}.about-wrap .feature-section .media-container{border:1px solid #ddd;overflow:hidden}.about-wrap .feature-section .svg-container{padding:50px 0;text-align:center;background-color:#e1e1e3}.about-wrap .feature-section .svg-container img{max-width:150px}.about-wrap .changelog{margin-bottom:40px}.about-wrap .return-to-dashboard{margin:30px -5px 0 0;font-size:14px;font-weight:700}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-right:115px}.about-wrap h4.wp-people-group{margin-top:2.6em;font-size:16px}.about-wrap ul.wp-people-group{overflow:hidden;padding:0 5px;margin:0 -5px 0 -15px}.about-wrap ul.compact{margin-bottom:0}.about-wrap li.wp-person{display:inline-block;vertical-align:top;margin-left:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap li.wp-person img.gravatar{float:right;margin:0 0 10px 10px;padding:2px;width:60px;height:60px}.about-wrap ul.compact li.wp-person img.gravatar{width:30px;height:30px}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;font-weight:400;line-height:1.6em;text-decoration:none}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:700}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}@media screen and (max-width:782px){.about-wrap .feature-section{padding:0;border-bottom:none}.about-wrap [class$=col] .col{float:none;width:100%;margin:40px 0 0;padding:0 0 40px;border-bottom:1px solid rgba(0,0,0,.1)}.about-wrap .three-col img{display:block;margin:0 auto}.about-wrap .feature-list .col{margin:0;padding:0;border-bottom:none}.about-wrap .headline-feature .feature-section{max-width:100%}.about-wrap .feature-list .feature-section{padding:0 0 40px}}@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 h2.nav-tab-wrapper{padding-right:0;border-bottom:0}.about-wrap h2 .nav-tab{margin-top:10px;margin-left:10px;border-bottom:1px solid #ccc}.about-wrap .feature-section .svg-container{padding-top:20px;padding-bottom:20px}.about-wrap .headline-feature .feature-section .col,.about-wrap .three-col .col{width:100%!important;float:none!important}}@media only screen and (max-width:400px){.about-wrap .feature-list svg{margin-top:15px;height:65px;width:65px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-right:80px}}.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 8px 3px 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}#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-name{height:2em}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#999;font-style:italic;font-weight:400;margin-right:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus select{float:right;margin-left:6px}.manage-menus .selected-menu{float:right;margin:5px 0 0 6px}.manage-menus .submit-btn{float:right;margin-top:1px}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings dl{margin:0 0 10px;overflow:hidden;padding-right:18%}.menu-settings dd{float:right;margin:0;width:100%}.menu-settings dt{float:right;clear:both;width:21.951%;padding:3px 0 0;margin-right:-21.951%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#999;font-size:11px}#add-custom-link .howto,#cancel-save{font-size:12px}#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 #dfdfdf;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #dfdfdf;margin-bottom:0}#nav-menu-header .menu-name-label{margin-top:4px}.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;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations tr+tr td{padding-top:0}.widefat .menu-locations td{vertical-align:middle}.menu-location-title label{font-weight:700}.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}#wpbody .open-label{display:block;float:right}#wpbody .open-label span{padding-left:10px}.js .input-with-default-title{color:#a0a5aa;font-style:italic}#menu-management .inside{padding:0 10px}.accordion-container .howto input,.postbox .howto input{width:180px;float:left}.accordion-container .outer-border{margin:0}.customlinkdiv .howto input{width:180px}.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}.nav-menus-php .add-new-menu-action{float:right;margin:6px 6px 0 0;line-height:15px}.nav-menus-php .meta-sep,.nav-menus-php .submitcancel,.nav-menus-php .submitdelete{display:block;float:right;margin:6px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;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}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link label span{display:block;float:right;margin-top:5px;padding-left:5px}.menu-item-textbox{width:180px}.nav-menus-php .howto span{margin-top:6px;display:block;float:right}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:0 5px}.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-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 #dfdfdf;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}#cancel-save,.item-controls a:hover,.js .sidebar-name{cursor:pointer}.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:#999}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 10px;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 .item-order{padding-left:10px}.nav-menus-php .item-edit{position:absolute;left:-20px;top:0;display:block;width:30px;height:40px;margin-left:0!important;text-indent:100%;outline:0;overflow:hidden}.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;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move a{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 auto;text-align:center}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;border:1px solid #dfdfdf;color:#777;font-size:12px;font-style:italic}.hidden-field,.nav-menus-php .blank-slate .menu-settings{display:none}.link-to-original a{padding-right:4px;font-style:normal}.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}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 6px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:left;float:left;line-height:23px;margin:4px 0 1px}.nav-menus-php .delete-action{float:right;margin-top:2px}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid #0073aa;padding:1px 2px;color:#0073aa;text-decoration:none}.nav-menus-php .submitbox .submitcancel:hover{background:#0073aa;color:#fff}.nav-menus-php .major-publishing-actions .form-invalid{padding-right:4px;margin-right:-4px}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,.nav-menus-php #post-body-content:after,.nav-menus-php .button-controls:after,.nav-menus-php .major-publishing-actions:after,.nav-menus-php .menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media screen and (max-width:782px){body.nav-menus-php{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 .item-controls .item-type{margin-top:2px}.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-label #menu-name{margin-top:4px}.nav-menus-php .major-publishing-actions .publishing-action{margin-top:6px}.nav-menus-php .delete-action{font-size:14px;line-height:50px;margin-top:12px}.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,.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings dl{padding-right:0}.menu-settings dd{float:none;width:100%;margin-bottom:15px}.menu-settings dt{float:none;width:auto;margin-right:0;margin-bottom:15px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}}.widget{margin:0 auto 10px;position:relative;box-sizing:border-box}.widget-top{font-size:13px;font-weight:600;background:#f7f7f7}.widget-top a.widget-action,.widget-top a.widget-action:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;text-decoration:none}.widget-title h4{margin:0;padding:15px;line-height:1;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.widgets-holder-wrap .widget-inside{border-top:none;padding:1px 15px 15px;line-height:16px}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#666}.deleting .widget-title,.deleting .widget-top a.widget-action:after{color:#a0a5aa}.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}.sidebar-name,.widget-placeholder{-webkit-box-sizing:border-box;-moz-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}.sidebar-name-arrow{position:absolute;top:0;left:0;bottom:0}.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#777}#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 h3{padding:10px 0;margin:0 0 0 10px}div#widgets-left .sidebar-name .sidebar-name-arrow:before{left:0;top:4px;padding:4px 4px 4px 6px}#widgets-left #available-widgets,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;-webkit-box-shadow: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}#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;-webkit-box-shadow: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:after{content:".";display:block;height:0;clear:both;visibility:hidden}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 h3{padding:15px 7px}div#widgets-right .sidebar-name .sidebar-name-arrow:before{left:0;top:4px}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}.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#777;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.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}.editwidget .widget-inside,.widget-control-edit{display:block;padding:0 15px}.widget-control-edit{color:#666;background:#EEE;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:#444 solid 1px}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-control-actions{margin-top:20px}.js .closed br.clear,.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}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widget-description,.widget-inside,.widgets_access #access-on,.widgets_access .sidebar-name-arrow,.widgets_access .widget-action,.widgets_access .widget-holder .description{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}.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{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;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;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);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;-webkit-transition:background .2s ease-in-out;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:400 26px/1 dashicons;color:#999;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:400 26px/1 dashicons;color:#fff;position:absolute;top:7px;right:5px}.locale-he-il em,.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}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px;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}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-left:none;padding-left:0}#widgets-left #available-widgets .widget-top,#widgets-left .inactive-sidebar .widgets-sortables,#widgets-left .sidebar-name{margin-left:0}div.widget-liquid-right{width:100%;float:none}div.widget{margin:0 auto 10px!important;max-width:480px}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@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}}.site-icon-preview .favicon-preview{margin:5px 0 20px;overflow:hidden;position:relative;max-width:180px}.site-icon-preview .browser-title,.site-icon-preview .favicon{height:16px;right:88px;overflow:hidden;position:absolute;top:16px}.site-icon-preview .favicon{width:16px}.site-icon-preview .browser-title{right:109px}.site-icon-preview .app-icon-preview{background-color:#000;-webkit-border-radius:16px;border-radius:16px;height:64px;overflow:hidden;width:64px;margin-top:5px}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:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.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 .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 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 .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}} \ No newline at end of file diff --git a/wp-admin/css/wp-admin.css b/wp-admin/css/wp-admin.css new file mode 100644 index 0000000000..14c10f9cd9 --- /dev/null +++ b/wp-admin/css/wp-admin.css @@ -0,0 +1,14 @@ +@import url(common.css); +@import url(forms.css); +@import url(admin-menu.css); +@import url(dashboard.css); +@import url(list-tables.css); +@import url(edit.css); +@import url(revisions.css); +@import url(media.css); +@import url(themes.css); +@import url(about.css); +@import url(nav-menus.css); +@import url(widgets.css); +@import url(site-icon.css); +@import url(l10n.css); diff --git a/wp-admin/css/wp-admin.min.css b/wp-admin/css/wp-admin.min.css new file mode 100644 index 0000000000..61f0bc17c5 --- /dev/null +++ b/wp-admin/css/wp-admin.min.css @@ -0,0 +1,8 @@ +#ajax-loading,#screen-meta .screen-reader-text,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading,.row-actions,.spinner{visibility:hidden}.color-palette,.form-table,.media-item .describe{border-collapse:collapse}#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-container,#col-left,#col-right{overflow:hidden;padding:0;margin:0}#col-left{width:35%}#col-right{float:right;clear:right;width:65%}.alignleft,.subsubsub{float:left}.col-wrap{padding:0 7px}.alignright{float:right}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}#adminmenu .wp-submenu,#dashboard_quick_press .draft-title,#templateside,#the-comment-list td.comment,.dashboard-comment-wrap,.pre,.widefat *{word-wrap:break-word}.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:#21759b;z-index:100000;line-height:normal;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:0}body,p{font-size:13px}.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;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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}html{background:#f1f1f1}body{color:#444;font-family:"Open Sans",sans-serif;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;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#00a0d2}a:focus,a:focus .media-icon img{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);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{-webkit-box-shadow:none;box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}p{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{font-size:2em;margin:.67em 0}.wrap>h1,h2{color:#23282d;font-size:1.5em;margin:.83em 0;font-weight:400}h3{color:#23282d;font-size:1.3em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc}.side-info ul,ul.ul-square{list-style:square}ol.ol-decimal{list-style:decimal}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:#eaeaea;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;color:#666}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;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 a{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}.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 tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-top:-1px}.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:10px}.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}.subtitle,.wrap h1,.wrap h2{font-weight:400;margin:0}.wrap h1,.wrap h2{font-size:23px;font-weight:400;padding:9px 15px 4px 0;line-height:29px}.subtitle{color:#777;font-size:14px;padding-left:25px}.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;-webkit-border-radius:2px;border-radius:2px;background:#e0e0e0;text-shadow:none;font-weight:600;font-size:13px}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{background:#00a0d2;color:#fff}.wrap h1.long-header{padding-right:0}.wp-dialog{background-color:#fff}.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}.media-upload-form label.form-help,td.help{color:#9a9a9a}.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:#999}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;-webkit-box-shadow:none!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;user-select:none}.accordion-section-title,.postbox .hndle,.stuffbox .hndle{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.quicktags,.search{background-color:#ccc;color:#000;font-size:12px}.icon32{display:none}#bulk-titles div a:before,.notice-dismiss:before,.tagchecklist span a:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#b4b9be;content:'\f153';display:block;font:400 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,.tagchecklist span a:before{margin:1px 0}#bulk-titles div a:hover:before,.tagchecklist span a:hover:before,.welcome-panel .welcome-panel-close:focus:before,.welcome-panel .welcome-panel-close:hover:before{color:#c00}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap}#namediv td.first,#plugin-information-title,.no-break,.star-rating,.ui-autocomplete li{white-space:nowrap}.howto{color:#666;font-style:italic;display:block}p.install-help{margin:8px 0;font-style:italic}hr{border:0;border-top:1px solid #ddd;border-bottom:1px solid #fafafa}#all-plugins-table .plugins 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,#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,.widget-control-remove:hover,abbr.required{color:red;text-decoration:none;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #ddd;background:#f5f5f5}#delete-action{line-height:28px;vertical-align:middle;text-align:left;float:left}#publishing-action{text-align:right;float:right;line-height:23px}#publishing-action .spinner,#save-post{float:left}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}#minor-publishing-actions{padding:10px 10px 0;text-align:right}.preview{float:right}#sticky-span{margin-left:18px}.side-info{margin:0;padding:4px;font-size:11px}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom:1px solid #dadada}.side-info ul{margin:0;padding-left:18px;color:#666}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:right}.wp-filter{display:inline-block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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;-webkit-border-radius:30px;border-radius:30px;background:#777;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,.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{-webkit-box-shadow:none;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 .drawer-toggle{display:inline-block;margin:0 10px;padding:4px 6px;color:#666;cursor:pointer}.wp-filter .drawer-toggle:before{display:inline-block;vertical-align:top;content:"\f111";margin:0 5px 0 0;width:16px;height:16px;color:#777;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;font-family:dashicons;font-size:16px;line-height:1;text-align:center;text-decoration:inherit;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased}.wp-filter .drawer-toggle:hover,.wp-filter .drawer-toggle:hover:before{color:#00a0d2}.show-filters .wp-filter .drawer-toggle:before,.wp-filter .drawer-toggle.current:before{color:#fff}.filter-drawer{display:none;margin:0 -20px;padding:20px;border-top:1px solid #eee;background:#fafafa}.show-filters .filter-drawer{display:block;overflow:hidden;width:100%}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2ea2cc}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .drawer-toggle{-webkit-border-radius:2px;border-radius:2px;border:none;background:#777;color:#fff}.filter-group{box-sizing:border-box;float:left;margin:0 1% 0 0;padding:10px;width:24%;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group,.filtered-by .tag{background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group,html.wp-toolbar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.filter-group h4{position:relative;margin:0}.filter-drawer ol{margin:20px 0 0;list-style-type:none;font-size:12px}.filter-drawer li{display:inline-block;vertical-align:top;margin:5px 0;padding-right:25px;width:160px;list-style-type:none}.filter-drawer .buttons{margin-bottom:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.spinner,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-filter .button.clear-filters{display:none;margin-left:10px}.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;box-shadow:0 1px 1px rgba(0,0,0,.04);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.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%}}.notice,div.error,div.updated{background:#fff;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 15px 2px;padding:1px 12px}.notice-dismiss:focus,.widget-top a.widget-action:focus:after{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.form-table td .notice p,.notice p,div.error p,div.updated p{margin:.5em 0;padding:2px}.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:#b4b9be;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:#5b9dd9 solid 1px}.notice-success,div.updated{border-color:#7ad03a}.notice-warning{border-color:#ffba00}.notice-error,div.error{border-color:#dd3d36}.notice-info{border-color:#00a0d2}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}#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;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.update-message{color:#000}.update-php .spinner{float:none;margin:-4px 0}#ajax-response.alignleft{margin-left:2em}#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;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.025);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;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);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;-webkit-border-radius:0;border-radius:0;color:#777;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:after{right:0;content:'\f140';font:400 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:#b4b9be}.hndle a,.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}#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{margin:8px 0;font-size:13px}.metabox-prefs label{display:inline-block;padding-right:15px;line-height:30px}.metabox-prefs label input[type=checkbox]{margin-top:-4px;margin-right:6px}.metabox-prefs label input{margin:0 5px 0 2px}.metabox-prefs .columns-prefs label input{margin:0 2px}.metabox-prefs label a{display:none}.metabox-prefs .screen-options{padding-top:10px}.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}#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;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px}.contextual-help-tabs{float:left;width:150px;margin:0}.contextual-help-tabs ul{margin:1em 0}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width: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;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02);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}.nav-tab,.spinner{display:inline-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 ol,.widefat p,.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th,.widefat ul{color:#32373c}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:left}.postbox-container .meta-box-sortables{box-sizing:border-box}.postbox-container .meta-box-sortables,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .empty-container{border:3px dashed #b4b9be;height:250px}.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;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;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.js .accordion-section-title,.js .postbox .handlediv{cursor:pointer}.hndle a{font-size:11px}.postbox .handlediv{float:right;width:27px;height:30px}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.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;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{-webkit-box-shadow:none;box-shadow:none}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 5px}#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:#777}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}#wpfooter a{text-decoration:none}#wpfooter a:hover{text-decoration:underline}#templateside ul li a,.nav-tab{text-decoration:none}.nav-tab{border:1px solid #ccc;border-bottom:none;background:#e4e4e4;color:#555;font-size:12px;line-height:16px;padding:4px 14px 6px;margin:-4px 4px -1px 0}.nav-tab:hover{background-color:#fff;color:#464646}.nav-tab-active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}h1.nav-tab-wrapper,h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;padding-bottom:0;padding-left:10px}h1 .nav-tab,h2 .nav-tab{padding:6px 10px;font-weight:700;font-size:15px;line-height:24px}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;float:right;vertical-align:middle;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.spinner.is-active{visibility:visible}#template div{margin-right:190px}.metabox-holder h3{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:left}.attention,.error-message{color:red;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}#howto,.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 #e7e7e7;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px}.post-categories,.post-categories li{display:inline}.importers td{padding-right:14px}.checkbox,.post-categories,.zerosize,fieldset{margin:0;padding:0}.importers{font-size:16px;width:auto}#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 h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;border:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:none}fieldset{border:0}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) bottom left repeat-x}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) top left repeat-x;height:17px;float:left}.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;-webkit-transition:color .1s ease-in 0;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{-webkit-transform:rotateY(180deg);-ms-transform:rotateY(180deg);transform:rotateY(180deg)}.star-rating .star-empty:before{content:'\f154'}div.action-links{font-weight:400}#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 20px;background:#f5f5f5;font-size:22px;font-weight:600;line-height:56px;position:relative;top:0;right:0;left:0;height:56px;overflow:hidden;text-overflow:ellipsis}#plugin-information-title.with-banner{margin-right:0;height:250px;bottom:250px;-webkit-background-size:cover;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:700;padding:0;margin:0;max-width:680px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta-box-sortables select,p.submit{max-width:100%}#plugin-information-title.with-banner h2{font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:50px;padding:0 15px;margin:174px 0 0 10px;color:#fff;background:rgba(30,30,30,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);-webkit-box-shadow:0 0 30px rgba(255,255,255,.1);box-shadow:0 0 30px rgba(255,255,255,.1);-webkit-border-radius:8px;border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{display:block;float:right;top:0;height:250px;width:772px;margin:0 -20px;background:0 0;-webkit-box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1);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;height:36px;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;float:left;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;-webkit-transition:none;transition:none}#plugin-information-tabs a.current{margin:0 -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:-webkit-calc(100% - 152px);min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:-webkit-calc(100% - 346px);min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;right:250px;bottom:0;left:0;margin-right:250px;padding:10px 26px 99999px;margin-bottom:-99930px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{display:block;float:right;position:relative;top:0;right:0;padding:16px 16px 99999px;margin-bottom:-99930px;width:217px;border-left:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#464646}#plugin-information .fyi h3{font-weight:700;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 .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:#ececec;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 img{vertical-align:middle;margin-right:4px}#plugin-information-footer{padding:15px 16px;position:absolute;right:0;bottom:0;left:0;height:28px;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;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);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 .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #e6e6e6}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#postcustomstuff p.submit,#templateside h3,.alignleft h3{margin: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}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px;bottom: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;bottom:100px;width:800%}#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}}body.import-php #TB_window,body.index-php #TB_window,body.plugin-install-php #TB_window,body.plugins-php #TB_window,body.update-core-php #TB_window{background:url(../images/spinner.gif) center no-repeat #fcfcfc}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){body.import-php #TB_window,body.index-php #TB_window,body.plugin-install-php #TB_window,body.plugins-php #TB_window,body.update-core-php #TB_window{background:url(../images/spinner-2x.gif) center no-repeat #fcfcfc;-webkit-background-size:20px 20px;background-size:20px 20px}}body.import-php #TB_title,body.index-php #TB_title,body.plugin-install-php #TB_title,body.plugins-php #TB_title,body.update-core-php #TB_title{float:left;height:1px}body.import-php #TB_ajaxWindowTitle,body.index-php #TB_ajaxWindowTitle,body.plugin-install-php #TB_ajaxWindowTitle,body.plugins-php #TB_ajaxWindowTitle,body.update-core-php #TB_ajaxWindowTitle{display:none}body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{left:auto;right:-30px;color:#eee;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}body.import-php #TB_closeWindowButton:focus,body.import-php #TB_closeWindowButton:focus .tb-close-icon,body.import-php .tb-close-icon:focus,body.import-php .tb-close-icon:hover,body.index-php #TB_closeWindowButton:focus,body.index-php #TB_closeWindowButton:focus .tb-close-icon,body.index-php .tb-close-icon:focus,body.index-php .tb-close-icon:hover,body.plugin-install-php #TB_closeWindowButton:focus,body.plugin-install-php #TB_closeWindowButton:focus .tb-close-icon,body.plugin-install-php .tb-close-icon:focus,body.plugin-install-php .tb-close-icon:hover,body.plugins-php #TB_closeWindowButton:focus,body.plugins-php #TB_closeWindowButton:focus .tb-close-icon,body.plugins-php .tb-close-icon:focus,body.plugins-php .tb-close-icon:hover,body.update-core-php #TB_closeWindowButton:focus,body.update-core-php #TB_closeWindowButton:focus .tb-close-icon,body.update-core-php .tb-close-icon:focus,body.update-core-php .tb-close-icon:hover{color:#00a0d2;outline:0;-webkit-box-shadow:none;box-shadow:none}body.import-php .tb-close-icon:before,body.index-php .tb-close-icon:before,body.plugin-install-php .tb-close-icon:before,body.plugins-php .tb-close-icon:before,body.update-core-php .tb-close-icon:before{content:"\f335";font-size:32px}@media screen and (max-width:830px){body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{right:0;top:-30px}}img{border:none}#wphead{border-bottom:1px solid #dfdfdf}#wphead h1 a{color:#464646}.js .meta-box-sortables .postbox:hover .handlediv{margin-right:0!important}.js .meta-box-sortables .postbox .handlediv:before,.js .sidebar-name .sidebar-name-arrow:before{right:12px;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:8px 10px;top:0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;content:'\f142'}.js #widgets-left .sidebar-name .sidebar-name-arrow{display:none}.js #widgets-left .sidebar-name:hover .sidebar-name-arrow,.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow{display:block}.js .meta-box-sortables .postbox.closed .handlediv:before,.js .widgets-holder-wrap.closed .sidebar-name-arrow:before{content:'\f140'}.error a{text-decoration:underline}.updated a{text-decoration:none;padding-bottom:2px}#photo-add-url-div input[type=text]{width:300px}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;width:97%;background:#f9f9f9;outline:0}#docs-list,#template textarea{direction:ltr}#template p{width:97%}#templateside{float:right;width:190px}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em 0;padding:0}#templateside li{margin:4px 0}#templateside li a,.theme-editor-php .highlight{display:block;padding:3px 3px 3px 12px;text-decoration:none}.theme-editor-php .highlight{margin:-3px 3px -3px -12px}#templateside .highlight{border:none;font-weight:700}.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%}.accordion-section-title:after,.control-section .accordion-section-title:after,.nav-menus-php .item-edit:before,.widget-top a.widget-action:after{right:0;content:'\f140';border:none;background:0 0;font:400 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}.my-sites li a,form p.submit a.cancel:hover{text-decoration:none}.accordion-section-title:after,.handlediv,.item-edit,.sidebar-name-arrow,.widget-action{color:#a0a5aa}.accordion-section-title:hover:after,.handlediv:hover,.item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.widget-action:hover{color:#777}.widget-top a.widget-action:after{padding:12px 12px 11px}.widget-top a.widget-action:focus:after{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.nav-menus-php .item-edit:before{line-height:2.1}.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 a.widget-action:after{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{-ms-touch-action:none;touch-action:none}.accordion-section{border-bottom:1px solid #dfdfdf;margin:0}.accordion-section.open .accordion-section-content,.no-js .accordion-section .accordion-section-content{display:block}.accordion-section.open:hover{border-bottom-color:#dfdfdf}.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 #dfdfdf;border-right:1px solid #dfdfdf;user-select:none}.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{border-left:none;border-right:none;padding:10px 10px 11px 14px;line-height:21px;background:#fff}.control-section .accordion-section-title:after{top:11px}.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 #dfdfdf}.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}}@media only screen and (min-width:769px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:860px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (min-width:980px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:768px){#col-left,#col-right{width:100%}}@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) bottom left repeat-x;-webkit-background-size:21px 37px;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-arrow,.sidebar-name:hover .sidebar-name-arrow,.tagchecklist span a,.tagchecklist span a:hover,.widget-top a.widget-action,.widget-top a.widget-action:hover{background:0 0!important}}@-ms-viewport{width:device-width}@media screen and (max-width:782px){#template div,#templateside{float:none;width:auto}html.wp-toolbar{padding-top:46px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:transparent!important}#wpcontent{position:relative;margin-left:0;padding-left:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-right:12px;margin-left:0}.col-wrap{padding:0}#collapse-menu,#screen-meta,#screen-meta-links,.post-format-select{display:none!important}.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}.wp-color-result{height:auto;padding-left:45px}.wp-color-result:after{font-size:14px;height:auto;padding:6px 14px}.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:-190px}code{word-wrap:break-word}.postbox{font-size:14px}.metabox-holder h3{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#templateside li{margin:0}#templateside li a{display:block;padding:5px}#templateside .highlight{padding:5px;margin-left:-5px;margin-top:-5px}#template div{margin:0}#template textarea{width:100%}.fileedit-sub .alignright{margin-top:15px}#comments-form .checkforspam,#wpfooter{display:none}.edit-comment-author{margin:2px 0 0}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open,div#post-body.metabox-holder.columns-1{overflow-x:hidden}html.wp-toolbar{padding-top:0}#wpbody{padding-top:46px}}#pressthis-code-wrap,textarea{overflow:auto}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:left}}input,textarea{box-sizing:border-box}input[type=text],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=search],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=text]:focus,input[type=password]:focus,input[type=checkbox]: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=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=search]:focus,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}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;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}#adminmenu,.network-admin.themes-php p.search-box{clear:left}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]{-webkit-border-radius:50%;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:400 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;-webkit-border-radius:50px;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;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4}.wp-admin input[type=file]{padding:3px 0}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}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin-left:-25px;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);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);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;-webkit-box-shadow:none;box-shadow:none}.wp-admin select{padding:2px;line-height:28px;height:28px;vertical-align:middle}.wp-admin .button-cancel{padding:0 5px;line-height:2}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border:none}p.submit{text-align:left;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%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}#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}.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}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,fieldset label,label{vertical-align:middle}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:'\f173';display:inline-block;font:400 20px/1 dashicons;speak:none;left:-1px;padding:0 5px 0 0;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#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,.color-option{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#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}.indicator-hint{padding-top:8px}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:right;margin:0}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:left;height:28px;margin:0 4px 0 0}input[type=text].ui-autocomplete-loading,input[type=email].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;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;text-align:left}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{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 th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom: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;cursor:pointer}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0}.color-palette td{height:20px;padding:0;border:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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-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:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;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;-webkit-transform:skew(20deg) rotate(6deg);-ms-transform:skew(20deg) rotate(6deg);transform:skew(20deg) rotate(6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(20deg) rotate(9deg);-ms-transform:skew(20deg) rotate(9deg);transform:skew(20deg) rotate(9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 12px 8px 9px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:'\f157';position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#777}#local-time,#utc-time{padding-left:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.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}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_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 .button:not(:last-child),.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=password],input[type=email],input[type=number],input[type=search]{-webkit-appearance:none;padding:6px 10px}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:400 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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.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=text],.form-table td input[type=password],.form-table td input[type=email],.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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=text].small-text,input[type=password].small-text,input[type=number].small-text,input[type=search].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-right:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow: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}}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.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){.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%}}#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{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;margin:-6px 0 0 -8px;float:left}.icon16:before{color:#999;font:400 20px/1 dashicons;speak:none;padding:6px 0;height:34px;width:20px;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s ease-in-out;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:'\f112'}.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 *{user-select:none}#adminmenu *,.theme-overlay .current-label{-webkit-user-select:none;-moz-user-select:none;-ms-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}#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;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);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;margin-top:0;-webkit-box-shadow:none;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:1.2;margin:0;padding:6px 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;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:6px 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;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;-webkit-background-size:20px auto;background-size:20px auto}div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6);padding:7px 0;-webkit-transition:all .1s ease-in-out;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:8px solid 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;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#collapse-button,#collapse-button div{height:15px;width:15px}#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}#adminmenu .awaiting-mod,#adminmenu .update-plugins{display:inline-block;background-color:#d54e21;color:#fff;font-size:9px;line-height:17px;font-weight:600;margin:1px 0 0 2px;vertical-align:top;-webkit-border-radius:10px;border-radius:10px;z-index:26}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,.folded #collapse-menu span{display:none}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#00b9eb;color:#fff}#collapse-menu{font-size:13px;line-height:34px;margin-top:10px;color:#a0a5aa;color:rgba(240,245,250,.6);-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after{color:#00b9eb}#collapse-button{float:left;margin:10px 8px 10px 11px;-webkit-border-radius:10px;border-radius:10px}#wpwrap #collapse-button div{padding:0}#collapse-button div:after{content:'\f148';display:block;line-height:15px;left:-3px;top:-3px;color:#a0a5aa;color:rgba(240,245,250,.6);font:400 20px/1 dashicons!important;speak:none;margin:0 auto;padding:0!important;position:relative;text-align:center;width:20px;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button div:after,.rtl #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.folded #collapse-button div:after{-webkit-transform:none;-ms-transform:none;transform:none}.customize-support #menu-appearance a[href="themes.php?page=custom-header"],.customize-support #menu-appearance a[href="themes.php?page=custom-background"],li#wp-admin-bar-menu-toggle{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 #collapse-menu span,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.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}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.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-button div{background:0 0}.auto-fold #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.auto-fold #collapse-button div:after{-webkit-transform:none;-ms-transform:none;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;-webkit-box-shadow:none;box-shadow:none}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .selected .wp-submenu,.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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:400 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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}}#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}#dashboard-widgets .postbox-container,#wpbody-content #dashboard-widgets.columns-4 .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;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 img{max-width:100%}.welcome-panel{position:relative;overflow:auto;margin:16px 0;padding:23px 10px 0;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:13px;line-height:2.1em}#activity-widget #the-comment-list .comment-item:first-child,#dashboard_right_now .sub,.js #dashboard_quick_press .drafts{border-top:1px solid #eee}.activity-block,.dashboard-widget-control-form,.mu-storage,.tablenav .actions,th.sortable a,th.sorted a{overflow:hidden}.welcome-panel h3{margin:0;font-size:21px;font-weight:400;line-height:1.2}.welcome-panel h4{margin:1.33em 0 0;font-size:16px}.welcome-panel li{font-size:14px}.welcome-panel p{color:#777}.welcome-panel a{text-decoration:none}.welcome-panel .about-description{font-size:16px;margin:0}.welcome-panel .welcome-panel-close{position:absolute;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;-webkit-transition:all .1s ease-in-out;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-left: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:#464646}.welcome-panel .welcome-icon{background:0 0!important}.welcome-panel .welcome-icon:before{color:#82878c;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 10px 0 0;top:-1px;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'}.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}.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}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .dashboard-widget-control-form,#dashboard_primary .widget-loading{padding:12px 12px 0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#777;margin-top:4px}#dashboard_primary .rss-widget{border-bottom:1px solid #eee;font-size:13px;padding:8px 12px 10px}#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:#777}#dashboard_primary .rss-widget span.rss-date{margin-left:12px}#dashboard_primary .rss-widget ul li{margin-bottom:8px}#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-widgets h4.mu-storage{margin-bottom:10px}#dashboard_right_now li a:before,#dashboard_right_now li span:before{color:#82878c}#dashboard_right_now .sub{color:#777;background:#f5f5f5;padding:10px 12px 6px}#dashboard_right_now .sub h4{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 .drafts li time,#title-wrap #title-prompt-text,.textarea-wrap #content-prompt-text{color:#777}#dashboard_right_now li a:before,#dashboard_right_now li span:before{content:'\f159';font:400 20px/1 dashicons;speak:none;display:block;float:left;margin:0 5px 0 0;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#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_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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0}#dashboard_quick_press textarea{resize:vertical}#description-wrap{margin-top:12px}.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}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts h4{margin:0 12px 8px;font-weight:400}#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 p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 5px 0 0}#dashboard-widgets #dashboard_activity h4{margin:0 0 8px 12px;font-weight:400}#dashboard-widgets #dashboard_activity h4.comment-meta{margin:0}#dashboard_activity h4.comment-meta{margin-bottom:4px}#dashboard_activity ul{padding:0 12px}#dashboard_activity .comment-meta span.approve:before{content:'\f227';font:20px/.5 dashicons;margin-left:12px;vertical-align:middle;position:relative;top:-1px;margin-right:2px}#dashboard_activity .inside{padding:0;margin:0}#dashboard_activity .no-activity{overflow:hidden;padding:0 12px 12px;text-align:center}#dashboard_activity .no-activity p{color:#999;font-size:16px}#dashboard_activity .no-activity .smiley{margin-top:0}#dashboard_activity .no-activity .smiley:before{content:'\f328';font:400 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-top:0;padding:8px 12px 4px}#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:#777}.activity-block{border-bottom:1px solid #eee;padding:8px 0 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:13px}#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 h4{font-size:13px;color:#999}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0}#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}.edit-box{display:none}h3:hover .edit-box{display:inline}#dashboard-widgets form .input-text-wrap input,#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 a{text-decoration:none}#dashboard-widgets h3 a,#dashboard_browser_nag a{text-decoration:underline}#dashboard-widgets h3 .postbox-title-action{position:absolute;right:10px;padding:0;top:5px}.js #dashboard-widgets h3 .postbox-title-action{right:33px}#dashboard-widgets h4{color:#23282d;font-weight:400;font-size:14px;margin:0 0 .2em;padding:0}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.06);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{padding:1em 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-item h4{line-height:1.5em;margin-top:0;color:#666}#latest-comments #the-comment-list .comment-item h4 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:14px;font-weight:600;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;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_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#dashboard_browser_nag a{color:#fff}#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;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag.postbox.browser-insecure h3{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h3{border-bottom-color:#f6e2ac;background:0 0;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag h3.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}@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){#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container,#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0;height:0;min-height:0}#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%}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}.index-php .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@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;height:0;min-height:0}}@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}}.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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;-webkit-border-radius:5px;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;-webkit-border-radius:11px;border-radius:11px;background:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center}.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:#777}#replyrow td{padding:2px}#replysubmit{margin:0;padding:0 5px 3px;text-align:center}#replysubmit .button{margin-right:5px}#replysubmit .error{color:red;line-height:21px;text-align:center}#replyrow h5{margin:.2em 0 0;padding:0 5px;line-height:1.4em;font-size:1em}#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;-webkit-box-shadow:none;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:#f4f4f4}#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}.sorting-indicator:before,th .comment-grey-bubble:before{speak:none;-moz-osx-font-smoothing:grayscale;position:relative;text-decoration:none!important;color:#444}#the-comment-list td,#the-comment-list th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);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{-webkit-box-shadow:none;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:400 20px/.5 dashicons;display:inline-block;padding:0;top:4px;left:-4px;vertical-align:top;-webkit-font-smoothing:antialiased}.sorting-indicator:before,th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:'\f142'}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-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{-webkit-transition:none;transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;-webkit-box-shadow:none;box-shadow:none}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0}#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{vertical-align:middle;width:160px}.sorting-indicator{display:none;width:10px;height:4px;margin-top:8px;margin-left:7px}.sorting-indicator:before{font:400 20px/1 dashicons;display:inline-block;padding:0;top:-4px;left:-8px;line-height:10px;vertical-align:top;-webkit-font-smoothing:antialiased}.column-comments .sorting-indicator:before{top:0;left:-10px}.wp-list-table .toggle-row:before,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{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.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{-webkit-box-shadow:none;box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;left:10px;-webkit-border-radius:50%;border-radius:50%;display:block;padding:1px 2px 1px 0;color:#666;font:400 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:before{color:#82878c;content:'\f160';display:inline-block;float:left;font:400 20px/1 dashicons;speak:none;vertical-align:middle;margin-left:0;-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:8px;height:auto;opacity:1}.locked-text{vertical-align:top}tr.locked-info,tr.wp-locked .locked-info{-webkit-transition:height 1s,opacity .5s;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;padding:7px 7px 8px 10px}.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{display:block}.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-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 #d2d2d2;padding:3px 5px 7px;background:#e4e4e4;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#e8e8e8;background:#ebebeb;color:#b4b4b4}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;-webkit-box-shadow:none;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{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:400 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}.row-actions,.row-actions-visible{padding:2px 0 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:left;margin-right:10px;margin-top:1px}.row-actions{color:#ddd;font-size:13px}.mobile .row-actions,.row-actions.visible,div.comment-item:hover .row-actions,tr:hover .row-actions{visibility:visible}#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%}#bulk-titles div a,.inline-edit-row fieldset .inline-edit-date,.plugin-card,.quick-edit-row-post fieldset label.inline-edit-status{float:left}#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 fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}.inline-edit-row h4{margin:.2em 0;padding:0;line-height:2.5;text-transform:uppercase}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0;font-style:italic}.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}#bulk-titles,ul.cat-checklist{height:12em;border:1px solid #ddd;overflow-y:scroll;padding:0 5px}#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 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{margin:0;background-color:#fff}#bulk-titles{display:block;margin:0 0 5px;line-height:140%}.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}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;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}#update-plugins-table tbody td p{margin-top:0}#update-plugins-table tbody td p strong{font-size:14px}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-left:6px}#update-plugins-table tfoot td.check-column,#update-plugins-table thead td.check-column{padding-top:11px}.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}.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-update-tr td{border-top:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);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);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1;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{-webkit-box-shadow:none;box-shadow:none}.plugins .active.update td,.plugins .active.update th,tr.active.update+tr.plugin-update-tr .plugin-update{background-color:#fef7f1}.plugin-update-tr.active td,.plugins .active th.check-column{border-left:4px solid #00a0d2}.plugins .active.update th.check-column,.plugins .active.update+.plugin-update-tr .plugin-update{border-left:4px solid #d54e21}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap}.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}.plugin-update-tr .update-message{font-size:13px;font-weight:400;margin:0 10px 8px 31px;padding:6px 12px 8px 40px;background-color:#f7f7f7;background-color:rgba(0,0,0,.03)}.plugin-card .install-now:before,.plugin-card .update-now:before,.plugin-update-tr .update-message:before{color:#d54e21;display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .update-now:before,.plugin-update-tr .update-message:before{content:'\f463'}.plugin-update-tr .update-message:before{margin:0 10px 0 -30px}.plugin-card .install-now:before,.plugin-card .update-now:before{margin:3px 5px 0 -2px}.plugin-card .updating-message:before,.plugin-update-tr .updating-message:before{content:'\f463';-webkit-animation:rotation 2s infinite linear;animation:rotation 2s infinite linear}@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.plugin-card .updated-message:before,.plugin-update-tr .updated-message:before{color:#79ba49;content:'\f147'}.wp-list-table.plugins tbody tr.plugin-update-tr td.plugin-update{overflow:hidden;padding:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}tr.active+tr.plugin-update-tr .plugin-update{background-color:#f7fcfe}tr.active+tr.plugin-update-tr:not(.updated) .plugin-update .update-message{background-color:#fcf3ef}.plugin-install-php h3{clear:both}.plugin-install-php h4{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{margin:0 8px 16px;width:48.5%;width:-webkit-calc(50% - 8px);width:calc(50% - 8px);background-color:#fff;border:1px solid #dedede;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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:-webkit-calc(33.1% - 8px);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 h4{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 #dedede;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.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:-webkit-calc(100% - 180px);width:calc(100% - 180px)}.plugin-icon,.plugin-icon img{width:128px;height:128px}.plugin-card .column-compatibility span:before{font:400 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-icon{position:absolute;top:20px;left:20px;margin:0 20px 20px 0}.no-plugin-results{color:#999;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table tr.site-archived{background:#ffebe8}.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}}@media screen and (max-width:782px){.plugins #the-list tr td,.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.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}.form-wrap>p,.tablenav .view-switch,.tablenav.top .actions,.tablenav.top .displaying-num,.tablenav.top .tablenav-pages.one-page,.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}.view-switch a{width:36px;height:36px;line-height:33px}.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.bottom .tablenav-pages.one-page{margin:15px 0 0;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav-pages .pagination-links a,.tablenav-pages-navspan{padding:9px 16px 12px;font-size:18px}.tablenav-pages-navspan{height:18px}.tablenav-pages .pagination-links .current-page{padding:8px 9px 9px;font-size:16px}.comment-count{font-size:14px}.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{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{-webkit-box-shadow:none;box-shadow:none}#the-comment-list .is-expanded td:last-child{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;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;-webkit-border-radius:0;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 .check-column,.widefat thead .check-column{padding:10px 0}.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-size:16px}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong,table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}.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}#bulk-titles div{margin:.8em .3em}.plugin-card,.plugin-update-tr .update-message{margin-left:0}#bulk-titles div a{height:22px}#wpbody-content #update-themes-table .plugin-title{width:auto}.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}.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{-webkit-box-shadow:none;box-shadow:none;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{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.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}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 #the-list td{-webkit-box-shadow:none;box-shadow:none}table.plugin-install #the-list tr{display:block;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-right:0;width:100%}}#save-action .spinner,#show-comments .spinner,#show-comments a,.postarea h3 label{float:left}#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}#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:#777;position:absolute;font-size:1.7em;padding:11px 10px}#wp-content-editor-container,.postbox,form#tags-filter{position:relative}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px}input#link_description,input#link_url{width:98%}#pending{background:0 none;border:0;padding:0;font-size:11px;margin-top:-1px}#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-right:10px;font-size:11px}#editable-post-name-full{display:none}#editable-post-name{background-color:#fffbcc}#editable-post-name input{font-size:13px;height:22px;margin:0;width:16em}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px;background-color:#464646;color:#ccc}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:red;border-bottom-color:red}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}.inside-submitbox #post_status{margin:2px 0 2px -2px}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{min-width:255px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#post-status-info,.postbox{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:0 0;border:0;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,.ui-tabs-hide,.wp-editor-expand #content-resize-handle,.wp-hidden-children .wp-hidden-child{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:10px 0}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:0 7px 5px}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}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:1px solid transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #dfdfdf;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 5px}#postimagediv .inside img{max-width:100%;height:auto;width:auto}#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:url(../images/resize.gif) right bottom no-repeat;width:12px;cursor:row-resize}.rtl #content-resize-handle{background:url(../images/resize-rtl.gif) left bottom no-repeat}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}#content-textarea-clone{z-index:-1;position:absolute;top:0;visibility:hidden;overflow:hidden;max-width:100%;border:1px solid transparent}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #e5e5e5}.wp-editor-expand #wp-content-editor-container{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px;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,.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;display:inline!important;height:auto!important}#misc-publishing-actions label[for=post_status]:before,#post-body #visibility: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-revisions:before,.curtime #timestamp:before{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 2px 0 0;top:0;left:-1px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#post-body #visibility:before{content:'\f177'}.curtime #timestamp:before{content:'\f145';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;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);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}#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 span,.tagchecklist span a{overflow:hidden;display:block;float:left}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist span{margin-right:25px;font-size:13px;line-height:1.8em;cursor:default;max-width:100%;text-overflow:ellipsis}.tagchecklist span a{margin:1px 0 0 -17px;cursor:pointer;width:20px;height:20px;text-indent:0;position:absolute}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:left}#poststuff h3{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}#poststuff .inside label.deleted,#poststuff .inside label.spam{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}.ie8 #poststuff .inside #page_template,.ie8 #poststuff .inside #parent_id{width:250px}#post-visibility-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f1f1f1}#postcustom #postcustomstuff .submit{border:0;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 #dfdfdf;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:400 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;-webkit-transition:all .1s ease-in-out;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}.post-format-icon:before{position:relative;display:inline-block;margin-right:7px;font:400 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:1px solid #dfdfdf;background-color:#fdfdfd}.ac_results,.revisions-diff,.revisions-meta,.revisions-tickmarks{background-color:#fff}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display: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;font-size:12px}.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field input[type=number],.form-field input[type=tel],.form-field input[type=url],.form-field input[type=search],.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:0 0 10px;padding:8px 0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h3{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}#poststuff .tagsdiv .howto{margin:0 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw,.ac_results{display:none}#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 h3{margin:2px 0 12px}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid grey}.wp-customizer .ac_results{z-index:500000}.ac_results li{padding:2px 5px;white-space:nowrap;color:#101010;text-align:left}.ac_over{background-color:#f0f0b8;cursor:pointer}.ac_match{text-decoration:underline}.imgedit-group-top h3 a,a.imgedit-help-toggle,table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}#comment-status-radio label,.links-table td,.links-table th{padding:5px 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}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 label{margin-right:8px}.links-table td input[type=text],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}.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 .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;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 .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-timing-function:ease-in-out;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:url(../images/resize-2x.gif) right bottom no-repeat;-webkit-background-size:11px 11px;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background:url(../images/resize-rtl-2x.gif) right bottom no-repeat}}@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;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){#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px}#poststuff h3{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}.tagsdiv .newtag,ul.categorychecklist li{margin-bottom:15px}ul.category-tabs li.tabs{padding: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}.tagchecklist{margin:25px 10px}.tagchecklist span{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:1em;margin:7px 0 0 7px;padding:8px 12px}#wp-content-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 20px 0 15px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-top:-3px!important;margin-left:-5px!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}.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}}@media only screen and (max-width:500px){#wp-content-media-buttons a{font-size:14px;padding:0 10px}}.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;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.revisions-tickmarks>div{position:absolute;height:100%;border-left:1px solid #a0a5aa;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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:-webkit-calc(100% - 30px);width:calc(100% - 30px);top:50%;top:-webkit-calc(50% - 10px);top:calc(50% - 10px);-webkit-transition:opacity .5s;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{-webkit-transition:opacity .5s;transition:opacity .5s}.revisions.loading .diff{opacity:.5;filter:alpha(opacity=50)}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions.pinned .revisions-meta{-webkit-box-shadow:none;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:#777}.revisions-controls .author-card.autosave{color:#d54e21}.revisions-controls .author-card .author-name{font-weight:700}.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;box-shadow:0 1px 3px rgba(0,0,0,.1)}.arrow:after,.revisions-diff{-webkit-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}.about-wrap h2 .nav-tab,.about-wrap p.wp-credits-list a,.imgedit-wrap .nowrap,.nav-menus-php .item-edit,.sidebar-name h3,.widget-title h4{white-space:nowrap}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-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;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{left:20px;top:-20px;width:25px;height:25px;transform:rotate(45deg)}.arrow:after,.revisions-tooltip-arrow>span{content:"";position:absolute;-webkit-transform:rotate(45deg);-ms-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 #d7d7d7;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.top{top:-16px;bottom:auto}.arrow.left{left:20%}.arrow:after{z-index:9999;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1);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 #d7d7d7;text-align:left;cursor:pointer}.wp-slider .ui-slider-handle{-webkit-border-radius:50%;border-radius:50%;height:18px;margin-top:-3px;outline:0;position:absolute;width:18px;z-index:2;-ms-touch-action:none;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#00a0d2;border:1px solid #0073aa;-webkit-box-shadow:inset 0 1px 0 #78c8e6,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #78c8e6,0 1px 0 rgba(0,0,0,.15)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:0;left:0;color:#fff;content:"\f229";font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.media-item .media-item-info tr,.wp-slider .ui-slider-range{background-color:transparent}.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'}.rtl .wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-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-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}}.media-item .describe{width:100%;border-top:1px solid #dfdfdf;clear:both;cursor:default}#media-items:empty,.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 .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}.js .html-uploader #plupload-upload-ui,.media-item .startclosed,.media-item .startopen{display:none}.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{-webkit-box-shadow:0 1px 0 #dfdfdf;box-shadow:0 1px 0 #dfdfdf}.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 .original{position:relative;height:34px}.media-item .progress{float:right;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;-webkit-border-radius:22px;border-radius:22px;background:#ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;-webkit-border-radius:22px;border-radius:22px;background-color:#0073aa;-webkit-box-shadow:inset 0 0 2px rgba(0,0,0,.3);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 #html-upload-ui{display:block}.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}.media-item .error-div a.dismiss{display:block;float:right;margin:0 10px 0 15px}.find-box{background-color:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);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 #dfdfdf;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%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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;position:absolute;top:0;right:0;cursor:pointer;text-align:center;color:#666}#find-posts-close:hover{color:#00a0d2}#find-posts-close:before{font:400 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 #dfdfdf;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}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #ddd;line-height:1.8em;word-spacing:3px;-webkit-border-radius:6px;border-radius:6px}.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}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title,.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.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-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-bottom:16px;padding:0 16px;border-left:4px solid #dd3d36;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.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;-webkit-box-shadow: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:400 16px/1 dashicons;color:#bbb}.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{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;right:auto;left:auto;bottom:auto;padding-top:0;margin-top:0;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{-webkit-box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;outline:0}.media-frame.mode-grid .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc}.media-frame.mode-grid .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe;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:#999;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:#777;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-left:1px solid #ddd;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;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:400 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;-webkit-box-shadow:none;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;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin-bottom:16px;max-width:100%;max-height:90%;max-height:-webkit-calc(100% - 42px);max-height:calc(100% - 42px)}.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);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 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}.imgedit-settings p{margin:8px 0 0}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto;overflow:hidden}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding-right:16px;width:auto;overflow:hidden}.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;background:url(../images/spinner.gif) center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.no-float{float:none}.A1B1 .button,.A1B1 .spinner,.wp_attachment_image .button,.wp_attachment_image .spinner{float:left}.imgedit-settings .disabled,.media-disabled{color:grey}.A1B1,.wp_attachment_image{overflow:hidden}.no-js .wp_attachment_image .button{display:none}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:left;width:32px;border:1px solid #d5d5d5;background:#f1f1f1;margin:0 8px 0 0;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;line-height:28px;color:#777;cursor:pointer}.imgedit-menu div:before{font:400 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;color:#32373c}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;color:#777;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{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-applyto img{margin:0 8px 0 0}#poststuff .imgedit-group-top h3{padding:0}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-left:20px}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-group{margin-bottom:8px;padding:10px}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{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}}@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%}}.theme-browser .themes{clear:both;padding:0 0 100px}.themes-php .wrap h1{float:left;margin-bottom:15px}.network-admin.themes-php .wrap h1{margin-bottom:0}.themes-php .wrap h1 .button{margin-left:20px}.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}.themes-php div.error,.themes-php div.notice,.themes-php div.updated{margin:0 0 20px;clear:both}.themes-php div.updated a{text-decoration:underline}.theme-browser .theme{cursor:pointer;float:left;margin:0 4% 4% 0;position:relative;width:30.6%;border:1px solid #dedede;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-shadow:0 1px 1px -1px rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);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;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;position:absolute;bottom:0;right:0;height:38px;padding:9px 10px 0;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-secondary{float:none;margin-left:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-transition:opacity .2s ease-in-out;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%;-webkit-transition:opacity .2s ease-in-out;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:25%;left:25%;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;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.theme-browser .theme:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);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 .theme-installed,.theme-browser .theme .theme-update{background:#d54e21;background:rgba(213,78,33,.95);color:#fff;display:block;font-size:13px;font-weight:400;height:48px;line-height:48px;padding:0 10px;position:absolute;top:0;right:0;left:0;border-bottom:1px solid rgba(0,0,0,.25);overflow:hidden}.theme-browser .theme .theme-installed:before,.theme-browser .theme .theme-update:before{content:'\f463';display:inline-block;font:400 20px/1 dashicons;margin:0 6px 0 0;opacity:.8;position:relative;top:5px;speak:none;-webkit-font-smoothing:antialiased}.theme-browser .theme.active .theme-name{background:#2f2f2f;color:#fff;padding-right:110px;font-weight:300;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.5);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-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;-webkit-box-shadow:none;box-shadow:none}.theme-browser .theme.add-new-theme a{color:#999;text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:'';background: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);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#e5e5e5;background:rgba(153,153,153,.1);-webkit-border-radius:50%;border-radius:50%;display:inline-block;content:'\f132';-webkit-font-smoothing:antialiased;font:400 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;-webkit-box-shadow:none;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;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:400 22px/50px dashicons!important;color:#777;display:inline-block;content:'\f335';font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#777;background-color:transparent;height:48px;width:54px;float:left;text-align:center;border:0;border-right:1px solid #ddd;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;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{-webkit-box-shadow:none;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:400 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-about:after,.theme-overlay .theme-wrap:after{clear:both;visibility:hidden;content:".";display:block;height:0}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;left:190px;right:30px;bottom:3%;background:#fff;-webkit-box-shadow:0 1px 20px 5px rgba(0,0,0,.1);box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}.theme-overlay .theme-actions,.theme-overlay .theme-wrap{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}body.folded .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%}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.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}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#a00;text-decoration:none;border-color:transparent;-webkit-box-shadow:none;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 .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:880px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;box-sizing:border-box;overflow:hidden;position:relative;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot,.upload-plugin,.upload-theme{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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;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;-webkit-border-radius:2px;border-radius:2px;margin:0 0 -10px;user-select:none}.theme-overlay .theme-name{color:#23282d;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3}.theme-overlay .theme-version{color:#999;font-size:13px;font-weight:400;float:none;display:inline-block;margin-left:10px}.theme-overlay .theme-author{color:#686868;font-size:16px;font-weight:400;margin:15px 0 25px}.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}.theme-overlay .theme-tags{border-top:3px solid #eee;color:#82878c;font-size:13px;font-weight:400;margin:30px 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#444;font-weight:700;margin-right:5px}.theme-overlay .theme-update-message{background:#fef7f1;border:1px solid #eee;border-left:4px solid #d54e21;-webkit-border-radius:3px;border-radius:3px;padding:5px 20px 10px}.theme-overlay .theme-update{color:#23282d;font-size:18px;display:inline-block;line-height:40px;margin:0}.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-browser .theme.active .theme-name span,.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.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-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-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}}@media only screen and (max-width:650px){.theme-overlay .theme-description,.theme-overlay .theme-update{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;top:0;right:0;margin:10px 0;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:400 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}.theme-browser .theme .theme-installed{background:#0073aa}.theme-browser .theme .theme-installed:before{content:'\f147'}.theme-browser .theme.is-installed .theme-actions .button-primary{display:none!important}.theme-install-php .wp-filter{padding:0 20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.theme-install-php a.browse-themes,.theme-install-php.show-upload-theme a.upload{display:none}.theme-install-php.show-upload-theme a.browse-themes{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:0;width:100%;overflow:hidden;position:relative;top:10px}.wp-full-overlay,.wp-full-overlay-sidebar{left:0;bottom:0;top:0;height:100%;position:fixed}.upload-plugin,body.show-upload-theme .upload-theme{display:block}body.show-upload-theme .upload-theme+.wp-filter,body.show-upload-theme .upload-theme+.wp-filter+.theme-browser,p.no-themes{display:none}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;max-width:380px}.upload-plugin .install-help,.upload-theme .install-help{color:#999;font-size:18px;font-style:normal;margin:0;padding:40px 0 0;text-align:center}p.no-themes{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}body.no-results p.no-themes{display:block}.theme-install-php .add-new-theme,body.show-upload-theme p.no-themes{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;text-align:left}}.theme-details .star-rating{margin:15px 0 0}.theme-details .star-rating span:before{color:#ffb900;content:"\f154";display:inline-block;-webkit-font-smoothing:antialiased;font:400 20px/1 dashicons;vertical-align:top}.star-rating.rating-10 span.one:before,.star-rating.rating-30 span.two:before,.star-rating.rating-50 span.three:before,.star-rating.rating-70 span.four:before,.star-rating.rating-90 span.five:before{content:"\f459"}.star-rating.rating-100>span:before,.star-rating.rating-20 span.one:before,.star-rating.rating-30 span.one:before,.star-rating.rating-40 span.one:before,.star-rating.rating-40 span.two:before,.star-rating.rating-50 span.one:before,.star-rating.rating-50 span.two:before,.star-rating.rating-60 span.one:before,.star-rating.rating-60 span.three:before,.star-rating.rating-60 span.two:before,.star-rating.rating-70 span.one:before,.star-rating.rating-70 span.three:before,.star-rating.rating-70 span.two:before,.star-rating.rating-80 span.four:before,.star-rating.rating-80 span.one:before,.star-rating.rating-80 span.three:before,.star-rating.rating-80 span.two:before,.star-rating.rating-90 span.four:before,.star-rating.rating-90 span.one:before,.star-rating.rating-90 span.three:before,.star-rating.rating-90 span.two:before{content:"\f155"}.theme-details .star-rating .ratings{display:block;line-height:20px;color:#999}.appearance_page_custom-header #headimg{border:1px solid #DFDFDF;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 #dfdfdf}div#custom-background-image img{max-width:400px;max-height:300px}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:0 0;z-index:500000;overflow:visible;right:0;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;width:300px;padding:0;margin:0;z-index:10;background:#eee;border-right:none}.widget,.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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{overflow:visible;margin-left:-300px}.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%}#customize-preview.wp-full-overlay-main{background:url(../images/spinner.gif) center center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready{background:0 0}.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;-webkit-box-shadow: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;-webkit-box-shadow: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;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;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;-webkit-box-shadow:none;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:400 22px/1 dashicons;content:"\f335";position:relative;top:7px;left:13px}.theme-install-overlay .previous-theme:before{font:400 20px/1 dashicons;content:"\f341";position:relative;top:6px;left:14px}.theme-install-overlay .next-theme:before{font:400 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}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:8px;left:10px;padding:0;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:0!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;-webkit-border-radius:50%;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);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:400 20px/1 dashicons;speak:none;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:rotate(180.001deg);-ms-transform:rotate(180.001deg);transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:none;-ms-transform:none;transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{-webkit-transition-property:left,right,top,bottom,width,margin;transition-property:left,right,top,bottom,width,margin;-webkit-transition-duration:.2s;transition-duration:.2s}.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{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%}.customize-active #customize-container{display:block}.customize-loading #customize-container iframe{opacity:0}.customize-loading #customize-container{background:url(../images/spinner.gif) center center no-repeat fixed #fff;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;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-top:15px;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0;float:left}.theme-details .theme-description{float:left;color:#777;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{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{background:url(../images/spinner.gif) center center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px}@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);-webkit-background-size:15px 123px;background-size:15px 123px}#customize-preview.wp-full-overlay-main,.customize-loading #customize-container,.theme-install-overlay .wp-full-overlay-main{background-image:url(../images/spinner-2x.gif)}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:2px}}@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}}.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.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}.about-wrap .jetpack-video-wrapper{margin-bottom:0}.wp-badge{background:url(../images/w-logo-white.png?ver=20131202) center 24px no-repeat #0073aa;-webkit-background-size:85px 85px;background-size:85px 85px;color:#78c8e6;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:150px;text-rendering:optimizeLegibility;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.svg .wp-badge{background-image:url(../images/wordpress-logo-white.svg?ver=20131110)}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap h2.nav-tab-wrapper{padding-left:6px}.about-wrap h2 .nav-tab{padding:4px 15px 6px;margin:0 3px -1px 0;font-size:18px;vertical-align:top;border-width:1px}.about-wrap p{line-height:1.6em;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 h3{margin:1.25em 0 .6em;font-size:1.25em;line-height:1.5em}.about-wrap h4{color:#23282d}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap .about-description,.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6em;font-size:19px}.about-wrap .about-text{margin:1em 200px 1em 0;min-height:60px;color:#777}.about-wrap [class$=col] .col{float:left;position:relative}.about-wrap .two-col .col{margin-right:4.799999999%;width:47.6%}.about-wrap .three-col .col{margin-right:4.999999999%;width:29.95%}.about-wrap .three-col .col:nth-of-type(3n),.about-wrap .two-col .col:nth-of-type(2n){margin-right:0}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #dfdfdf}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .headline-feature h2{margin:50px 0 30px;font-size:2.2em;font-weight:300;line-height:1.3;text-align:left}.about-wrap .headline-feature h3{margin-top:30px;text-align:center}.about-wrap .feature-list h2{margin:30px 0 15px;text-align:center}.about-wrap .feature-section h4{margin:1.4em 0 .6em;font-size:1em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .feature-video{position:relative;margin:40px 0;padding-bottom:56.25%;width:100%;height:0;text-align:center}.about-wrap .feature-video embed{position:absolute;top:0;left:0;width:100%;height:100%}.about-wrap .featured-image{text-align:center}.about-wrap .feature-section{overflow:hidden;padding:0 0 40px;border-bottom:1px solid rgba(0,0,0,.1)}.about-wrap .headline-feature .feature-section{margin:0 auto;max-width:95%}.about-wrap .changelog.feature-section .col,.about-wrap .feature-section:not(.under-the-hood) .col{margin-top:40px}.about-wrap .feature-section .media-container{border:1px solid #ddd;overflow:hidden}.about-wrap .feature-section .svg-container{padding:50px 0;text-align:center;background-color:#e1e1e3}.about-wrap .feature-section .svg-container img{max-width:150px}.about-wrap .changelog{margin-bottom:40px}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:700}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-left:115px}.about-wrap h4.wp-people-group{margin-top:2.6em;font-size:16px}.about-wrap ul.wp-people-group{overflow:hidden;padding:0 5px;margin:0 -15px 0 -5px}.about-wrap ul.compact{margin-bottom:0}.about-wrap li.wp-person{display:inline-block;vertical-align:top;margin-right:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap li.wp-person img.gravatar{float:left;margin:0 10px 10px 0;padding:2px;width:60px;height:60px}.about-wrap ul.compact li.wp-person img.gravatar{width:30px;height:30px}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;font-weight:400;line-height:1.6em;text-decoration:none}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:700}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}@media screen and (max-width:782px){.about-wrap .feature-section{padding:0;border-bottom:none}.about-wrap [class$=col] .col{float:none;width:100%;margin:40px 0 0;padding:0 0 40px;border-bottom:1px solid rgba(0,0,0,.1)}.about-wrap .three-col img{display:block;margin:0 auto}.about-wrap .feature-list .col{margin:0;padding:0;border-bottom:none}.about-wrap .headline-feature .feature-section{max-width:100%}.about-wrap .feature-list .feature-section{padding:0 0 40px}}@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 h2.nav-tab-wrapper{padding-left:0;border-bottom:0}.about-wrap h2 .nav-tab{margin-top:10px;margin-right:10px;border-bottom:1px solid #ccc}.about-wrap .feature-section .svg-container{padding-top:20px;padding-bottom:20px}.about-wrap .headline-feature .feature-section .col,.about-wrap .three-col .col{width:100%!important;float:none!important}}@media only screen and (max-width:400px){.about-wrap .feature-list svg{margin-top:15px;height:65px;width:65px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-left:80px}}.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 5px 3px 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}#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-name{height:2em}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#999;font-style:italic;font-weight:400;margin-left:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus select{float:left;margin-right:6px}.manage-menus .selected-menu{float:left;margin:5px 6px 0 0}.manage-menus .submit-btn{float:left;margin-top:1px}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings dl{margin:0 0 10px;overflow:hidden;padding-left:18%}.menu-settings dd{float:left;margin:0;width:100%}.menu-settings dt{float:left;clear:both;width:21.951%;padding:3px 0 0;margin-left:-21.951%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#999;font-size:11px}#add-custom-link .howto,#cancel-save{font-size:12px}#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 #dfdfdf;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #dfdfdf;margin-bottom:0}#nav-menu-header .menu-name-label{margin-top:4px}.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;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations tr+tr td{padding-top:0}.widefat .menu-locations td{vertical-align:middle}.menu-location-title label{font-weight:700}.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}#wpbody .open-label{display:block;float:left}#wpbody .open-label span{padding-right:10px}.js .input-with-default-title{color:#a0a5aa;font-style:italic}#menu-management .inside{padding:0 10px}.accordion-container .howto input,.postbox .howto input{width:180px;float:right}.accordion-container .outer-border{margin:0}.customlinkdiv .howto input{width:180px}.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}.nav-menus-php .add-new-menu-action{float:left;margin:6px 0 0 6px;line-height:15px}.nav-menus-php .meta-sep,.nav-menus-php .submitcancel,.nav-menus-php .submitdelete{display:block;float:left;margin:6px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;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}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px}.menu-item-textbox{width:180px}.nav-menus-php .howto span{margin-top:6px;display:block;float:left}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:0 5px}.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-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 #dfdfdf;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}#cancel-save,.item-controls a:hover,.js .sidebar-name{cursor:pointer}.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:#999}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 10px;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 .item-order{padding-right:10px}.nav-menus-php .item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:40px;margin-right:0!important;text-indent:100%;outline:0;overflow:hidden}.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;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move a{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 auto;text-align:center}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;border:1px solid #dfdfdf;color:#777;font-size:12px;font-style:italic}.hidden-field,.nav-menus-php .blank-slate .menu-settings{display:none}.link-to-original a{padding-left:4px;font-style:normal}.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}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 6px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:4px 0 1px}.nav-menus-php .delete-action{float:left;margin-top:2px}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid #0073aa;padding:1px 2px;color:#0073aa;text-decoration:none}.nav-menus-php .submitbox .submitcancel:hover{background:#0073aa;color:#fff}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,.nav-menus-php #post-body-content:after,.nav-menus-php .button-controls:after,.nav-menus-php .major-publishing-actions:after,.nav-menus-php .menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media screen and (max-width:782px){body.nav-menus-php{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 .item-controls .item-type{margin-top:2px}.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-label #menu-name{margin-top:4px}.nav-menus-php .major-publishing-actions .publishing-action{margin-top:6px}.nav-menus-php .delete-action{font-size:14px;line-height:50px;margin-top:12px}.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,.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings dl{padding-left:0}.menu-settings dd{float:none;width:100%;margin-bottom:15px}.menu-settings dt{float:none;width:auto;margin-left:0;margin-bottom:15px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}}.widget{margin:0 auto 10px;position:relative;box-sizing:border-box}.widget-top{font-size:13px;font-weight:600;background:#f7f7f7}.widget-top a.widget-action,.widget-top a.widget-action:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;text-decoration:none}.widget-title h4{margin:0;padding:15px;line-height:1;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.widgets-holder-wrap .widget-inside{border-top:none;padding:1px 15px 15px;line-height:16px}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#666}.deleting .widget-title,.deleting .widget-top a.widget-action:after{color:#a0a5aa}.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}.sidebar-name,.widget-placeholder{-webkit-box-sizing:border-box;-moz-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}.sidebar-name-arrow{position:absolute;top:0;right:0;bottom:0}.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#777}#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 h3{padding:10px 0;margin:0 10px 0 0}div#widgets-left .sidebar-name .sidebar-name-arrow:before{right:0;top:4px;padding:4px 6px 4px 4px}#widgets-left #available-widgets,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;-webkit-box-shadow: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}#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;-webkit-box-shadow: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:after{content:".";display:block;height:0;clear:both;visibility:hidden}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 h3{padding:15px 7px}div#widgets-right .sidebar-name .sidebar-name-arrow:before{right:0;top:4px}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}.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#777;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.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}.editwidget .widget-inside,.widget-control-edit{display:block;padding:0 15px}.widget-control-edit{color:#666;background:#EEE;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:#444 solid 1px}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-control-actions{margin-top:20px}.js .closed br.clear,.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}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widget-description,.widget-inside,.widgets_access #access-on,.widgets_access .sidebar-name-arrow,.widgets_access .widget-action,.widgets_access .widget-holder .description{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}.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{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;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;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);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;-webkit-transition:background .2s ease-in-out;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:400 26px/1 dashicons;color:#999;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:400 26px/1 dashicons;color:#fff;position:absolute;top:7px;left:5px}.locale-he-il em,.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}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px;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}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-right:none;padding-right:0}#widgets-left #available-widgets .widget-top,#widgets-left .inactive-sidebar .widgets-sortables,#widgets-left .sidebar-name{margin-right:0}div.widget-liquid-right{width:100%;float:none}div.widget{margin:0 auto 10px!important;max-width:480px}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@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}}.site-icon-preview .favicon-preview{margin:5px 0 20px;overflow:hidden;position:relative;max-width:180px}.site-icon-preview .browser-title,.site-icon-preview .favicon{height:16px;left:88px;overflow:hidden;position:absolute;top:16px}.site-icon-preview .favicon{width:16px}.site-icon-preview .browser-title{left:109px}.site-icon-preview .app-icon-preview{background-color:#000;-webkit-border-radius:16px;border-radius:16px;height:64px;overflow:hidden;width:64px;margin-top:5px}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:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.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 .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 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 .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}} \ No newline at end of file diff --git a/wp-admin/custom-background.php b/wp-admin/custom-background.php new file mode 100644 index 0000000000..36a5b504fa --- /dev/null +++ b/wp-admin/custom-background.php @@ -0,0 +1,478 @@ +admin_header_callback = $admin_header_callback; + $this->admin_image_div_callback = $admin_image_div_callback; + + add_action( 'admin_menu', array( $this, 'init' ) ); + + add_action( 'wp_ajax_custom-background-add', array( $this, 'ajax_background_add' ) ); + + // Unused since 3.5.0. + add_action( 'wp_ajax_set-background-image', array( $this, 'wp_set_background_image' ) ); + } + + /** + * Set up the hooks for the Custom Background admin page. + * + * @since 3.0.0 + */ + public function init() { + $page = add_theme_page( __( 'Background' ), __( 'Background' ), 'edit_theme_options', 'custom-background', array( $this, 'admin_page' ) ); + if ( ! $page ) { + return; + } + + add_action( "load-$page", array( $this, 'admin_load' ) ); + add_action( "load-$page", array( $this, 'take_action' ), 49 ); + add_action( "load-$page", array( $this, 'handle_upload' ), 49 ); + + if ( $this->admin_header_callback ) { + add_action( "admin_head-$page", $this->admin_header_callback, 51 ); + } + } + + /** + * Set up the enqueue for the CSS & JavaScript files. + * + * @since 3.0.0 + */ + public function admin_load() { + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

' . __( 'You can customize the look of your site without touching any of your theme’s code by using a custom background. Your background can be an image or a color.' ) . '

' . + '

' . __( 'To use a background image, simply upload it or choose an image that has already been uploaded to your Media Library by clicking the “Choose Image” button. You can display a single instance of your image, or tile it to fill the screen. You can have your background fixed in place, so your site content moves on top of it, or you can have it scroll with your site.' ) . '

' . + '

' . __( 'You can also choose a background color by clicking the Select Color button and either typing in a legitimate HTML hex value, e.g. “#ff0000” for red, or by choosing a color using the color picker.' ) . '

' . + '

' . __( 'Don’t forget to click on the Save Changes button when you are finished.' ) . '

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

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

' . + '

' . __( 'Documentation on Custom Background' ) . '

' . + '

' . __( 'Support Forums' ) . '

' + ); + + wp_enqueue_media(); + wp_enqueue_script('custom-background'); + wp_enqueue_style('wp-color-picker'); + } + + /** + * Execute custom background modification. + * + * @since 3.0.0 + */ + public function take_action() { + if ( empty($_POST) ) + return; + + if ( isset($_POST['reset-background']) ) { + check_admin_referer('custom-background-reset', '_wpnonce-custom-background-reset'); + remove_theme_mod('background_image'); + remove_theme_mod('background_image_thumb'); + $this->updated = true; + return; + } + + if ( isset($_POST['remove-background']) ) { + // @TODO: Uploaded files are not removed here. + check_admin_referer('custom-background-remove', '_wpnonce-custom-background-remove'); + set_theme_mod('background_image', ''); + set_theme_mod('background_image_thumb', ''); + $this->updated = true; + wp_safe_redirect( $_POST['_wp_http_referer'] ); + return; + } + + if ( isset($_POST['background-repeat']) ) { + check_admin_referer('custom-background'); + if ( in_array($_POST['background-repeat'], array('repeat', 'no-repeat', 'repeat-x', 'repeat-y')) ) + $repeat = $_POST['background-repeat']; + else + $repeat = 'repeat'; + set_theme_mod('background_repeat', $repeat); + } + + if ( isset($_POST['background-position-x']) ) { + check_admin_referer('custom-background'); + if ( in_array($_POST['background-position-x'], array('center', 'right', 'left')) ) + $position = $_POST['background-position-x']; + else + $position = 'left'; + set_theme_mod('background_position_x', $position); + } + + if ( isset($_POST['background-attachment']) ) { + check_admin_referer('custom-background'); + if ( in_array($_POST['background-attachment'], array('fixed', 'scroll')) ) + $attachment = $_POST['background-attachment']; + else + $attachment = 'fixed'; + set_theme_mod('background_attachment', $attachment); + } + + if ( isset($_POST['background-color']) ) { + check_admin_referer('custom-background'); + $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['background-color']); + if ( strlen($color) == 6 || strlen($color) == 3 ) + set_theme_mod('background_color', $color); + else + set_theme_mod('background_color', ''); + } + + $this->updated = true; + } + + /** + * Display the custom background page. + * + * @since 3.0.0 + */ + public function admin_page() { +?> +
+

+ + +
+

+ Customizer.' ), + admin_url( 'customize.php?autofocus[control]=background_image' ) + ); + ?> +

+
+ + +updated ) ) { ?> +
+

Visit your site to see how it looks.' ), home_url( '/' ) ); ?>

+
+ + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ admin_image_div_callback ) { + call_user_func( $this->admin_image_div_callback ); + } else { + $background_styles = ''; + if ( $bgcolor = get_background_color() ) + $background_styles .= 'background-color: #' . $bgcolor . ';'; + + $background_image_thumb = get_background_image(); + if ( $background_image_thumb ) { + $background_image_thumb = esc_url( set_url_scheme( get_theme_mod( 'background_image_thumb', str_replace( '%', '%%', $background_image_thumb ) ) ) ); + + // Background-image URL must be single quote, see below. + $background_styles .= ' background-image: url(\'' . $background_image_thumb . '\');' + . ' background-repeat: ' . get_theme_mod( 'background_repeat', get_theme_support( 'custom-background', 'default-repeat' ) ) . ';' + . ' background-position: top ' . get_theme_mod( 'background_position_x', get_theme_support( 'custom-background', 'default-position-x' ) ); + } + ?> +
+ +
+ + +
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+

+
+ + + + +

+

+
+ +

+
+
+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + +
+ + +
+ + /> +
+ + + +
+ +
+ false); + + $uploaded_file = $_FILES['import']; + $wp_filetype = wp_check_filetype_and_ext( $uploaded_file['tmp_name'], $uploaded_file['name'] ); + if ( ! wp_match_mime_types( 'image', $wp_filetype['type'] ) ) + wp_die( __( 'The uploaded file is not a valid image. Please try again.' ) ); + + $file = wp_handle_upload($uploaded_file, $overrides); + + if ( isset($file['error']) ) + wp_die( $file['error'] ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $filename = basename($file); + + // Construct the object array + $object = array( + 'post_title' => $filename, + 'post_content' => $url, + 'post_mime_type' => $type, + 'guid' => $url, + 'context' => 'custom-background' + ); + + // Save the data + $id = wp_insert_attachment($object, $file); + + // Add the meta-data + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + update_post_meta( $id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) ); + + set_theme_mod('background_image', esc_url_raw($url)); + + $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' ); + set_theme_mod('background_image_thumb', esc_url_raw( $thumbnail[0] ) ); + + /** This action is documented in wp-admin/custom-header.php */ + do_action( 'wp_create_file_in_uploads', $file, $id ); // For replication + $this->updated = true; + } + + /** + * AJAX handler for adding custom background context to an attachment. + * + * Triggered when the user adds a new background image from the + * Media Manager. + * + * @since 4.1.0 + */ + public function ajax_background_add() { + check_ajax_referer( 'background-add', 'nonce' ); + + if ( ! current_user_can( 'edit_theme_options' ) ) { + wp_send_json_error(); + } + + $attachment_id = absint( $_POST['attachment_id'] ); + if ( $attachment_id < 1 ) { + wp_send_json_error(); + } + + update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', get_stylesheet() ); + + wp_send_json_success(); + } + + /** + * + * @since 3.4.0 + * @deprecated 3.5.0 + * + * @param array $form_fields + * @return array $form_fields + */ + public function attachment_fields_to_edit( $form_fields ) { + return $form_fields; + } + + /** + * + * @since 3.4.0 + * @deprecated 3.5.0 + * + * @param array $tabs + * @return array $tabs + */ + public function filter_upload_tabs( $tabs ) { + return $tabs; + } + + /** + * + * @since 3.4.0 + * @deprecated 3.5.0 + */ + public function wp_set_background_image() { + if ( ! current_user_can('edit_theme_options') || ! isset( $_POST['attachment_id'] ) ) exit; + $attachment_id = absint($_POST['attachment_id']); + /** This filter is documented in wp-admin/includes/media.php */ + $sizes = array_keys(apply_filters( 'image_size_names_choose', array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size')) )); + $size = 'thumbnail'; + if ( in_array( $_POST['size'], $sizes ) ) + $size = esc_attr( $_POST['size'] ); + + update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) ); + $url = wp_get_attachment_image_src( $attachment_id, $size ); + $thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail' ); + set_theme_mod( 'background_image', esc_url_raw( $url[0] ) ); + set_theme_mod( 'background_image_thumb', esc_url_raw( $thumbnail[0] ) ); + exit; + } +} diff --git a/wp-admin/custom-header.php b/wp-admin/custom-header.php new file mode 100644 index 0000000000..e61feb781c --- /dev/null +++ b/wp-admin/custom-header.php @@ -0,0 +1,1326 @@ +admin_header_callback = $admin_header_callback; + $this->admin_image_div_callback = $admin_image_div_callback; + + add_action( 'admin_menu', array( $this, 'init' ) ); + + add_action( 'customize_save_after', array( $this, 'customize_set_last_used' ) ); + add_action( 'wp_ajax_custom-header-crop', array( $this, 'ajax_header_crop' ) ); + add_action( 'wp_ajax_custom-header-add', array( $this, 'ajax_header_add' ) ); + add_action( 'wp_ajax_custom-header-remove', array( $this, 'ajax_header_remove' ) ); + } + + /** + * Set up the hooks for the Custom Header admin page. + * + * @since 2.1.0 + */ + public function init() { + $page = add_theme_page( __( 'Header' ), __( 'Header' ), 'edit_theme_options', 'custom-header', array( $this, 'admin_page' ) ); + if ( ! $page ) { + return; + } + + add_action( "admin_print_scripts-$page", array( $this, 'js_includes' ) ); + add_action( "admin_print_styles-$page", array( $this, 'css_includes' ) ); + add_action( "admin_head-$page", array( $this, 'help' ) ); + add_action( "admin_head-$page", array( $this, 'take_action' ), 50 ); + add_action( "admin_head-$page", array( $this, 'js' ), 50 ); + if ( $this->admin_header_callback ) { + add_action( "admin_head-$page", $this->admin_header_callback, 51 ); + } + } + + /** + * Adds contextual help. + * + * @since 3.0.0 + */ + public function help() { + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

' . __( 'This screen is used to customize the header section of your theme.') . '

' . + '

' . __( 'You can choose from the theme’s default header images, or use one of your own. You can also customize how your Site Title and Tagline are displayed.') . '

' + ) ); + + get_current_screen()->add_help_tab( array( + 'id' => 'set-header-image', + 'title' => __('Header Image'), + 'content' => + '

' . __( 'You can set a custom image header for your site. Simply upload the image and crop it, and the new header will go live immediately. Alternatively, you can use an image that has already been uploaded to your Media Library by clicking the “Choose Image” button.' ) . '

' . + '

' . __( 'Some themes come with additional header images bundled. If you see multiple images displayed, select the one you’d like and click the “Save Changes” button.' ) . '

' . + '

' . __( 'If your theme has more than one default header image, or you have uploaded more than one custom header image, you have the option of having WordPress display a randomly different image on each page of your site. Click the “Random” radio button next to the Uploaded Images or Default Images section to enable this feature.') . '

' . + '

' . __( 'If you don’t want a header image to be displayed on your site at all, click the “Remove Header Image” button at the bottom of the Header Image section of this page. If you want to re-enable the header image later, you just have to select one of the other image options and click “Save Changes”.') . '

' + ) ); + + get_current_screen()->add_help_tab( array( + 'id' => 'set-header-text', + 'title' => __('Header Text'), + 'content' => + '

' . sprintf( __( 'For most themes, the header text is your Site Title and Tagline, as defined in the General Settings section.' ), admin_url( 'options-general.php' ) ) . '

' . + '

' . __( 'In the Header Text section of this page, you can choose whether to display this text or hide it. You can also choose a color for the text by clicking the Select Color button and either typing in a legitimate HTML hex value, e.g. “#ff0000” for red, or by choosing a color using the color picker.' ) . '

' . + '

' . __( 'Don’t forget to click “Save Changes” when you’re done!') . '

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

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

' . + '

' . __( 'Documentation on Custom Header' ) . '

' . + '

' . __( 'Support Forums' ) . '

' + ); + } + + /** + * Get the current step. + * + * @since 2.6.0 + * + * @return int Current step + */ + public function step() { + if ( ! isset( $_GET['step'] ) ) + return 1; + + $step = (int) $_GET['step']; + if ( $step < 1 || 3 < $step || + ( 2 == $step && ! wp_verify_nonce( $_REQUEST['_wpnonce-custom-header-upload'], 'custom-header-upload' ) ) || + ( 3 == $step && ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'custom-header-crop-image' ) ) + ) + return 1; + + return $step; + } + + /** + * Set up the enqueue for the JavaScript files. + * + * @since 2.1.0 + */ + public function js_includes() { + $step = $this->step(); + + if ( ( 1 == $step || 3 == $step ) ) { + wp_enqueue_media(); + wp_enqueue_script( 'custom-header' ); + if ( current_theme_supports( 'custom-header', 'header-text' ) ) + wp_enqueue_script( 'wp-color-picker' ); + } elseif ( 2 == $step ) { + wp_enqueue_script('imgareaselect'); + } + } + + /** + * Set up the enqueue for the CSS files + * + * @since 2.7.0 + */ + public function css_includes() { + $step = $this->step(); + + if ( ( 1 == $step || 3 == $step ) && current_theme_supports( 'custom-header', 'header-text' ) ) + wp_enqueue_style( 'wp-color-picker' ); + elseif ( 2 == $step ) + wp_enqueue_style('imgareaselect'); + } + + /** + * Execute custom header modification. + * + * @since 2.6.0 + */ + public function take_action() { + if ( ! current_user_can('edit_theme_options') ) + return; + + if ( empty( $_POST ) ) + return; + + $this->updated = true; + + if ( isset( $_POST['resetheader'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + $this->reset_header_image(); + return; + } + + if ( isset( $_POST['removeheader'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + $this->remove_header_image(); + return; + } + + if ( isset( $_POST['text-color'] ) && ! isset( $_POST['display-header-text'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + set_theme_mod( 'header_textcolor', 'blank' ); + } elseif ( isset( $_POST['text-color'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + $_POST['text-color'] = str_replace( '#', '', $_POST['text-color'] ); + $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['text-color']); + if ( strlen($color) == 6 || strlen($color) == 3 ) + set_theme_mod('header_textcolor', $color); + elseif ( ! $color ) + set_theme_mod( 'header_textcolor', 'blank' ); + } + + if ( isset( $_POST['default-header'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + $this->set_header_image( $_POST['default-header'] ); + return; + } + } + + /** + * Process the default headers + * + * @since 3.0.0 + * + * @global array $_wp_default_headers + */ + public function process_default_headers() { + global $_wp_default_headers; + + if ( !isset($_wp_default_headers) ) + return; + + if ( ! empty( $this->default_headers ) ) { + return; + } + + $this->default_headers = $_wp_default_headers; + $template_directory_uri = get_template_directory_uri(); + $stylesheet_directory_uri = get_stylesheet_directory_uri(); + foreach ( array_keys($this->default_headers) as $header ) { + $this->default_headers[$header]['url'] = sprintf( $this->default_headers[$header]['url'], $template_directory_uri, $stylesheet_directory_uri ); + $this->default_headers[$header]['thumbnail_url'] = sprintf( $this->default_headers[$header]['thumbnail_url'], $template_directory_uri, $stylesheet_directory_uri ); + } + } + + /** + * Display UI for selecting one of several default headers. + * + * Show the random image option if this theme has multiple header images. + * Random image option is on by default if no header has been set. + * + * @since 3.0.0 + */ + public function show_header_selector( $type = 'default' ) { + if ( 'default' == $type ) { + $headers = $this->default_headers; + } else { + $headers = get_uploaded_header_images(); + $type = 'uploaded'; + } + + if ( 1 < count( $headers ) ) { + echo '
'; + echo ''; + echo '
'; + } + + echo '
'; + foreach ( $headers as $header_key => $header ) { + $header_thumbnail = $header['thumbnail_url']; + $header_url = $header['url']; + $header_desc = empty( $header['description'] ) ? '' : $header['description']; + $header_alt_text = empty( $header['alt_text'] ) ? $header_desc : $header['alt_text']; + echo '
'; + echo ''; + echo '
'; + } + echo '
'; + } + + /** + * Execute JavaScript depending on step. + * + * @since 2.1.0 + */ + public function js() { + $step = $this->step(); + if ( ( 1 == $step || 3 == $step ) && current_theme_supports( 'custom-header', 'header-text' ) ) + $this->js_1(); + elseif ( 2 == $step ) + $this->js_2(); + } + + /** + * Display JavaScript based on Step 1 and 3. + * + * @since 2.6.0 + */ + public function js_1() { + $default_color = ''; + if ( current_theme_supports( 'custom-header', 'default-text-color' ) ) { + $default_color = get_theme_support( 'custom-header', 'default-text-color' ); + if ( $default_color && false === strpos( $default_color, '#' ) ) { + $default_color = '#' . $default_color; + } + } + ?> + + + +process_default_headers(); +?> + +
+

+ + +
+

+ Customizer.' ), + admin_url( 'customize.php?autofocus[control]=header_image' ) + ); + ?> +

+
+ + +updated ) ) { ?> +
+

Visit your site to see how it looks.' ), home_url( '/' ) ); ?>

+
+ + +

+ + + + + + + + + + + + + + + + + + +
+ admin_image_div_callback ) { + call_user_func( $this->admin_image_div_callback ); + } else { + $custom_header = get_custom_header(); + $header_image = get_header_image(); + + if ( $header_image ) { + $header_image_style = 'background-image:url(' . esc_url( $header_image ) . ');'; + } else { + $header_image_style = ''; + } + + if ( $custom_header->width ) + $header_image_style .= 'max-width:' . $custom_header->width . 'px;'; + if ( $custom_header->height ) + $header_image_style .= 'height:' . $custom_header->height . 'px;'; + ?> + + +
+


+ %1$d × %2$d pixels will be used as-is.' ) . '
', get_theme_support( 'custom-header', 'width' ), get_theme_support( 'custom-header', 'height' ) ); + } elseif ( current_theme_supports( 'custom-header', 'flex-height' ) ) { + if ( ! current_theme_supports( 'custom-header', 'flex-width' ) ) + printf( __( 'Images should be at least %1$d pixels wide.' ) . ' ', get_theme_support( 'custom-header', 'width' ) ); + } elseif ( current_theme_supports( 'custom-header', 'flex-width' ) ) { + if ( ! current_theme_supports( 'custom-header', 'flex-height' ) ) + printf( __( 'Images should be at least %1$d pixels tall.' ) . ' ', get_theme_support( 'custom-header', 'height' ) ); + } + if ( current_theme_supports( 'custom-header', 'flex-height' ) || current_theme_supports( 'custom-header', 'flex-width' ) ) { + if ( current_theme_supports( 'custom-header', 'width' ) ) + printf( __( 'Suggested width is %1$d pixels.' ) . ' ', get_theme_support( 'custom-header', 'width' ) ); + if ( current_theme_supports( 'custom-header', 'height' ) ) + printf( __( 'Suggested height is %1$d pixels.' ) . ' ', get_theme_support( 'custom-header', 'height' ) ); + } + ?>

+
+

+
+ + + + +

+ 'custom-header', + 'step' => 2, + '_wpnonce-custom-header-upload' => wp_create_nonce('custom-header-upload'), + ), admin_url('themes.php') ) ); + ?> +

+
+ +

+
+
+ +
+ + + + + + + + + default_headers ) ) : ?> + + + + + + + + + + + + + + + + +
+

+ show_header_selector( 'uploaded' ); + ?> +
+ +

+ +

+ + show_header_selector( 'default' ); + ?> +
+

+ +
+

+ +
+ + + +

+ + + + + + + + + + + + + +
+

+ +

+
+

+ '; + if ( $default_color ) { + echo ' ' . sprintf( _x( 'Default: %s', 'color' ), esc_html( $default_color ) ) . ''; + } + ?> +

+
+ + + +
+
+ +step_2_manage_upload(); + $attachment_id = $data['attachment_id']; + $file = $data['file']; + $url = $data['url']; + } + + if ( file_exists( $file ) ) { + list( $width, $height, $type, $attr ) = getimagesize( $file ); + } else { + $data = wp_get_attachment_metadata( $attachment_id ); + $height = isset( $data[ 'height' ] ) ? $data[ 'height' ] : 0; + $width = isset( $data[ 'width' ] ) ? $data[ 'width' ] : 0; + unset( $data ); + } + + $max_width = 0; + // For flex, limit size of image displayed to 1500px unless theme says otherwise + if ( current_theme_supports( 'custom-header', 'flex-width' ) ) + $max_width = 1500; + + if ( current_theme_supports( 'custom-header', 'max-width' ) ) + $max_width = max( $max_width, get_theme_support( 'custom-header', 'max-width' ) ); + $max_width = max( $max_width, get_theme_support( 'custom-header', 'width' ) ); + + // If flexible height isn't supported and the image is the exact right size + if ( ! current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' ) + && $width == get_theme_support( 'custom-header', 'width' ) && $height == get_theme_support( 'custom-header', 'height' ) ) + { + // Add the meta-data + if ( file_exists( $file ) ) + wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) ); + + $this->set_header_image( compact( 'url', 'attachment_id', 'width', 'height' ) ); + + /** + * Fires after the header image is set or an error is returned. + * + * @since 2.1.0 + * + * @param string $file Path to the file. + * @param int $attachment_id Attachment ID. + */ + do_action( 'wp_create_file_in_uploads', $file, $attachment_id ); // For replication + + return $this->finished(); + } elseif ( $width > $max_width ) { + $oitar = $width / $max_width; + $image = wp_crop_image($attachment_id, 0, 0, $width, $height, $max_width, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file)); + if ( ! $image || is_wp_error( $image ) ) + wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); + + /** This filter is documented in wp-admin/custom-header.php */ + $image = apply_filters( 'wp_create_file_in_uploads', $image, $attachment_id ); // For replication + + $url = str_replace(basename($url), basename($image), $url); + $width = $width / $oitar; + $height = $height / $oitar; + } else { + $oitar = 1; + } + ?> + +
+

+ +
+

+

+ +
+ +
+ + + + + + + + + + + + +

+ + +

+
+
+ false); + + $uploaded_file = $_FILES['import']; + $wp_filetype = wp_check_filetype_and_ext( $uploaded_file['tmp_name'], $uploaded_file['name'] ); + if ( ! wp_match_mime_types( 'image', $wp_filetype['type'] ) ) + wp_die( __( 'The uploaded file is not a valid image. Please try again.' ) ); + + $file = wp_handle_upload($uploaded_file, $overrides); + + if ( isset($file['error']) ) + wp_die( $file['error'], __( 'Image Upload Error' ) ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $filename = basename($file); + + // Construct the object array + $object = array( + 'post_title' => $filename, + 'post_content' => $url, + 'post_mime_type' => $type, + 'guid' => $url, + 'context' => 'custom-header' + ); + + // Save the data + $attachment_id = wp_insert_attachment( $object, $file ); + return compact( 'attachment_id', 'file', 'filename', 'url', 'type' ); + } + + /** + * Display third step of custom header image page. + * + * @since 2.1.0 + */ + public function step_3() { + check_admin_referer( 'custom-header-crop-image' ); + + if ( ! current_theme_supports( 'custom-header', 'uploads' ) ) + wp_die( __( 'Cheatin’ uh?' ), 403 ); + + if ( ! empty( $_POST['skip-cropping'] ) && ! ( current_theme_supports( 'custom-header', 'flex-height' ) || current_theme_supports( 'custom-header', 'flex-width' ) ) ) + wp_die( __( 'Cheatin’ uh?' ), 403 ); + + if ( $_POST['oitar'] > 1 ) { + $_POST['x1'] = $_POST['x1'] * $_POST['oitar']; + $_POST['y1'] = $_POST['y1'] * $_POST['oitar']; + $_POST['width'] = $_POST['width'] * $_POST['oitar']; + $_POST['height'] = $_POST['height'] * $_POST['oitar']; + } + + $attachment_id = absint( $_POST['attachment_id'] ); + $original = get_attached_file($attachment_id); + + $dimensions = $this->get_header_dimensions( array( + 'height' => $_POST['height'], + 'width' => $_POST['width'], + ) ); + $height = $dimensions['dst_height']; + $width = $dimensions['dst_width']; + + if ( empty( $_POST['skip-cropping'] ) ) + $cropped = wp_crop_image( $attachment_id, (int) $_POST['x1'], (int) $_POST['y1'], (int) $_POST['width'], (int) $_POST['height'], $width, $height ); + elseif ( ! empty( $_POST['create-new-attachment'] ) ) + $cropped = _copy_image_file( $attachment_id ); + else + $cropped = get_attached_file( $attachment_id ); + + if ( ! $cropped || is_wp_error( $cropped ) ) + wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); + + /** This filter is documented in wp-admin/custom-header.php */ + $cropped = apply_filters( 'wp_create_file_in_uploads', $cropped, $attachment_id ); // For replication + + $object = $this->create_attachment_object( $cropped, $attachment_id ); + + if ( ! empty( $_POST['create-new-attachment'] ) ) + unset( $object['ID'] ); + + // Update the attachment + $attachment_id = $this->insert_attachment( $object, $cropped ); + + $url = $object['guid']; + $this->set_header_image( compact( 'url', 'attachment_id', 'width', 'height' ) ); + + // Cleanup. + $medium = str_replace( basename( $original ), 'midsize-' . basename( $original ), $original ); + if ( file_exists( $medium ) ) { + wp_delete_file( $medium ); + } + + if ( empty( $_POST['create-new-attachment'] ) && empty( $_POST['skip-cropping'] ) ) { + wp_delete_file( $original ); + } + + return $this->finished(); + } + + /** + * Display last step of custom header image page. + * + * @since 2.1.0 + */ + public function finished() { + $this->updated = true; + $this->step_1(); + } + + /** + * Display the page based on the current step. + * + * @since 2.1.0 + */ + public function admin_page() { + if ( ! current_user_can('edit_theme_options') ) + wp_die(__('You do not have permission to customize headers.')); + $step = $this->step(); + if ( 2 == $step ) + $this->step_2(); + elseif ( 3 == $step ) + $this->step_3(); + else + $this->step_1(); + } + + /** + * Unused since 3.5.0. + * + * @since 3.4.0 + * + * @param array $form_fields + * @return array $form_fields + */ + public function attachment_fields_to_edit( $form_fields ) { + return $form_fields; + } + + /** + * Unused since 3.5.0. + * + * @since 3.4.0 + * + * @param array $tabs + * @return array $tabs + */ + public function filter_upload_tabs( $tabs ) { + return $tabs; + } + + /** + * Choose a header image, selected from existing uploaded and default headers, + * or provide an array of uploaded header data (either new, or from media library). + * + * @param mixed $choice Which header image to select. Allows for values of 'random-default-image', + * for randomly cycling among the default images; 'random-uploaded-image', for randomly cycling + * among the uploaded images; the key of a default image registered for that theme; and + * the key of an image uploaded for that theme (the basename of the URL). + * Or an array of arguments: attachment_id, url, width, height. All are required. + * + * @since 3.4.0 + * + * @param array|object|string $choice + */ + final public function set_header_image( $choice ) { + if ( is_array( $choice ) || is_object( $choice ) ) { + $choice = (array) $choice; + if ( ! isset( $choice['attachment_id'] ) || ! isset( $choice['url'] ) ) + return; + + $choice['url'] = esc_url_raw( $choice['url'] ); + + $header_image_data = (object) array( + 'attachment_id' => $choice['attachment_id'], + 'url' => $choice['url'], + 'thumbnail_url' => $choice['url'], + 'height' => $choice['height'], + 'width' => $choice['width'], + ); + + update_post_meta( $choice['attachment_id'], '_wp_attachment_is_custom_header', get_stylesheet() ); + set_theme_mod( 'header_image', $choice['url'] ); + set_theme_mod( 'header_image_data', $header_image_data ); + return; + } + + if ( in_array( $choice, array( 'remove-header', 'random-default-image', 'random-uploaded-image' ) ) ) { + set_theme_mod( 'header_image', $choice ); + remove_theme_mod( 'header_image_data' ); + return; + } + + $uploaded = get_uploaded_header_images(); + if ( $uploaded && isset( $uploaded[ $choice ] ) ) { + $header_image_data = $uploaded[ $choice ]; + + } else { + $this->process_default_headers(); + if ( isset( $this->default_headers[ $choice ] ) ) + $header_image_data = $this->default_headers[ $choice ]; + else + return; + } + + set_theme_mod( 'header_image', esc_url_raw( $header_image_data['url'] ) ); + set_theme_mod( 'header_image_data', $header_image_data ); + } + + /** + * Remove a header image. + * + * @since 3.4.0 + */ + final public function remove_header_image() { + $this->set_header_image( 'remove-header' ); + } + + /** + * Reset a header image to the default image for the theme. + * + * This method does not do anything if the theme does not have a default header image. + * + * @since 3.4.0 + */ + final public function reset_header_image() { + $this->process_default_headers(); + $default = get_theme_support( 'custom-header', 'default-image' ); + + if ( ! $default ) { + $this->remove_header_image(); + return; + } + $default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() ); + + $default_data = array(); + foreach ( $this->default_headers as $header => $details ) { + if ( $details['url'] == $default ) { + $default_data = $details; + break; + } + } + + set_theme_mod( 'header_image', $default ); + set_theme_mod( 'header_image_data', (object) $default_data ); + } + + /** + * Calculate width and height based on what the currently selected theme supports. + * + * @param array $dimensions + * @return array dst_height and dst_width of header image. + */ + final public function get_header_dimensions( $dimensions ) { + $max_width = 0; + $width = absint( $dimensions['width'] ); + $height = absint( $dimensions['height'] ); + $theme_height = get_theme_support( 'custom-header', 'height' ); + $theme_width = get_theme_support( 'custom-header', 'width' ); + $has_flex_width = current_theme_supports( 'custom-header', 'flex-width' ); + $has_flex_height = current_theme_supports( 'custom-header', 'flex-height' ); + $has_max_width = current_theme_supports( 'custom-header', 'max-width' ) ; + $dst = array( 'dst_height' => null, 'dst_width' => null ); + + // For flex, limit size of image displayed to 1500px unless theme says otherwise + if ( $has_flex_width ) { + $max_width = 1500; + } + + if ( $has_max_width ) { + $max_width = max( $max_width, get_theme_support( 'custom-header', 'max-width' ) ); + } + $max_width = max( $max_width, $theme_width ); + + if ( $has_flex_height && ( ! $has_flex_width || $width > $max_width ) ) { + $dst['dst_height'] = absint( $height * ( $max_width / $width ) ); + } + elseif ( $has_flex_height && $has_flex_width ) { + $dst['dst_height'] = $height; + } + else { + $dst['dst_height'] = $theme_height; + } + + if ( $has_flex_width && ( ! $has_flex_height || $width > $max_width ) ) { + $dst['dst_width'] = absint( $width * ( $max_width / $width ) ); + } + elseif ( $has_flex_width && $has_flex_height ) { + $dst['dst_width'] = $width; + } + else { + $dst['dst_width'] = $theme_width; + } + + return $dst; + } + + /** + * Create an attachment 'object'. + * + * @param string $cropped Cropped image URL. + * @param int $parent_attachment_id Attachment ID of parent image. + * + * @return array Attachment object. + */ + final public function create_attachment_object( $cropped, $parent_attachment_id ) { + $parent = get_post( $parent_attachment_id ); + $parent_url = $parent->guid; + $url = str_replace( basename( $parent_url ), basename( $cropped ), $parent_url ); + + $size = @getimagesize( $cropped ); + $image_type = ( $size ) ? $size['mime'] : 'image/jpeg'; + + $object = array( + 'ID' => $parent_attachment_id, + 'post_title' => basename($cropped), + 'post_content' => $url, + 'post_mime_type' => $image_type, + 'guid' => $url, + 'context' => 'custom-header' + ); + + return $object; + } + + /** + * Insert an attachment and its metadata. + * + * @param array $object Attachment object. + * @param string $cropped Cropped image URL. + * + * @return int Attachment ID. + */ + final public function insert_attachment( $object, $cropped ) { + $attachment_id = wp_insert_attachment( $object, $cropped ); + $metadata = wp_generate_attachment_metadata( $attachment_id, $cropped ); + /** + * Filter the header image attachment metadata. + * + * @since 3.9.0 + * + * @see wp_generate_attachment_metadata() + * + * @param array $metadata Attachment metadata. + */ + $metadata = apply_filters( 'wp_header_image_attachment_metadata', $metadata ); + wp_update_attachment_metadata( $attachment_id, $metadata ); + return $attachment_id; + } + + /** + * Gets attachment uploaded by Media Manager, crops it, then saves it as a + * new object. Returns JSON-encoded object details. + */ + public function ajax_header_crop() { + check_ajax_referer( 'image_editor-' . $_POST['id'], 'nonce' ); + + if ( ! current_user_can( 'edit_theme_options' ) ) { + wp_send_json_error(); + } + + if ( ! current_theme_supports( 'custom-header', 'uploads' ) ) { + wp_send_json_error(); + } + + $crop_details = $_POST['cropDetails']; + + $dimensions = $this->get_header_dimensions( array( + 'height' => $crop_details['height'], + 'width' => $crop_details['width'], + ) ); + + $attachment_id = absint( $_POST['id'] ); + + $cropped = wp_crop_image( + $attachment_id, + (int) $crop_details['x1'], + (int) $crop_details['y1'], + (int) $crop_details['width'], + (int) $crop_details['height'], + (int) $dimensions['dst_width'], + (int) $dimensions['dst_height'] + ); + + if ( ! $cropped || is_wp_error( $cropped ) ) { + wp_send_json_error( array( 'message' => __( 'Image could not be processed. Please go back and try again.' ) ) ); + } + + /** This filter is documented in wp-admin/custom-header.php */ + $cropped = apply_filters( 'wp_create_file_in_uploads', $cropped, $attachment_id ); // For replication + + $object = $this->create_attachment_object( $cropped, $attachment_id ); + + unset( $object['ID'] ); + + $new_attachment_id = $this->insert_attachment( $object, $cropped ); + + $object['attachment_id'] = $new_attachment_id; + $object['width'] = $dimensions['dst_width']; + $object['height'] = $dimensions['dst_height']; + + wp_send_json_success( $object ); + } + + /** + * Given an attachment ID for a header image, updates its "last used" + * timestamp to now. + * + * Triggered when the user tries adds a new header image from the + * Media Manager, even if s/he doesn't save that change. + */ + public function ajax_header_add() { + check_ajax_referer( 'header-add', 'nonce' ); + + if ( ! current_user_can( 'edit_theme_options' ) ) { + wp_send_json_error(); + } + + $attachment_id = absint( $_POST['attachment_id'] ); + if ( $attachment_id < 1 ) { + wp_send_json_error(); + } + + $key = '_wp_attachment_custom_header_last_used_' . get_stylesheet(); + update_post_meta( $attachment_id, $key, time() ); + update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', get_stylesheet() ); + + wp_send_json_success(); + } + + /** + * Given an attachment ID for a header image, unsets it as a user-uploaded + * header image for the current theme. + * + * Triggered when the user clicks the overlay "X" button next to each image + * choice in the Customizer's Header tool. + */ + public function ajax_header_remove() { + check_ajax_referer( 'header-remove', 'nonce' ); + + if ( ! current_user_can( 'edit_theme_options' ) ) { + wp_send_json_error(); + } + + $attachment_id = absint( $_POST['attachment_id'] ); + if ( $attachment_id < 1 ) { + wp_send_json_error(); + } + + $key = '_wp_attachment_custom_header_last_used_' . get_stylesheet(); + delete_post_meta( $attachment_id, $key ); + delete_post_meta( $attachment_id, '_wp_attachment_is_custom_header', get_stylesheet() ); + + wp_send_json_success(); + } + + /** + * + * @param WP_Customize_Manager $wp_customize + */ + public function customize_set_last_used( $wp_customize ) { + $data = $wp_customize->get_setting( 'header_image_data' )->post_value(); + + if ( ! isset( $data['attachment_id'] ) ) { + return; + } + + $attachment_id = $data['attachment_id']; + $key = '_wp_attachment_custom_header_last_used_' . get_stylesheet(); + update_post_meta( $attachment_id, $key, time() ); + } + + /** + * + * @return array + */ + public function get_default_header_images() { + $this->process_default_headers(); + + // Get the default image if there is one. + $default = get_theme_support( 'custom-header', 'default-image' ); + + if ( ! $default ) { // If not, + return $this->default_headers; // easy peasy. + } + + $default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() ); + $already_has_default = false; + + foreach ( $this->default_headers as $k => $h ) { + if ( $h['url'] === $default ) { + $already_has_default = true; + break; + } + } + + if ( $already_has_default ) { + return $this->default_headers; + } + + // If the one true image isn't included in the default set, prepend it. + $header_images = array(); + $header_images['default'] = array( + 'url' => $default, + 'thumbnail_url' => $default, + 'description' => 'Default' + ); + + // The rest of the set comes after. + return array_merge( $header_images, $this->default_headers ); + } + + /** + * + * @return array + */ + public function get_uploaded_header_images() { + $header_images = get_uploaded_header_images(); + $timestamp_key = '_wp_attachment_custom_header_last_used_' . get_stylesheet(); + $alt_text_key = '_wp_attachment_image_alt'; + + foreach ( $header_images as &$header_image ) { + $header_meta = get_post_meta( $header_image['attachment_id'] ); + $header_image['timestamp'] = isset( $header_meta[ $timestamp_key ] ) ? $header_meta[ $timestamp_key ] : ''; + $header_image['alt_text'] = isset( $header_meta[ $alt_text_key ] ) ? $header_meta[ $alt_text_key ] : ''; + } + + return $header_images; + } +} diff --git a/wp-admin/customize.php b/wp-admin/customize.php new file mode 100644 index 0000000000..6ee2de007a --- /dev/null +++ b/wp-admin/customize.php @@ -0,0 +1,300 @@ +registered; +$wp_scripts = new WP_Scripts; +$wp_scripts->registered = $registered; + +add_action( 'customize_controls_print_scripts', 'print_head_scripts', 20 ); +add_action( 'customize_controls_print_footer_scripts', '_wp_footer_scripts' ); +add_action( 'customize_controls_print_styles', 'print_admin_styles', 20 ); + +/** + * Fires when Customizer controls are initialized, before scripts are enqueued. + * + * @since 3.4.0 + */ +do_action( 'customize_controls_init' ); + +wp_enqueue_script( 'customize-controls' ); +wp_enqueue_style( 'customize-controls' ); + +/** + * Enqueue Customizer control scripts. + * + * @since 3.4.0 + */ +do_action( 'customize_controls_enqueue_scripts' ); + +// Let's roll. +@header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset')); + +wp_user_settings(); +_wp_admin_html_begin(); + +$body_class = 'wp-core-ui wp-customizer js'; + +if ( wp_is_mobile() ) : + $body_class .= ' mobile'; + + ?>is_theme_active() ) { + $document_title_tmpl = _x( 'Customize: %s', 'Placeholder is the document title from the preview' ); +} else { + $document_title_tmpl = _x( 'Live Preview: %s', 'Placeholder is the document title from the preview' ); +} +$document_title_tmpl = html_entity_decode( $document_title_tmpl, ENT_QUOTES, 'UTF-8' ); // because exported to JS and assigned to document.title +$admin_title = sprintf( $document_title_tmpl, __( 'Loading…' ) ); + +?><?php echo $admin_title; ?> + + + + + + +
+
+
+ is_theme_active() ? __( 'Save & Publish' ) : __( 'Save & Activate' ); + submit_button( $save_text, 'primary save', 'save', false ); + ?> + + + + + + + + +
+ +
+
+
+
+ ' . get_bloginfo( 'name' ) . '' ); + ?> + +
+
+
+ +
+
+
+
+
+ + +
+
+ render_panel_templates(); + $wp_customize->render_section_templates(); + $wp_customize->render_control_templates(); + + /** + * Print Customizer control scripts in the footer. + * + * @since 3.4.0 + */ + do_action( 'customize_controls_print_footer_scripts' ); + + /* + * If the frontend and the admin are served from the same domain, load the + * preview over ssl if the Customizer is being loaded over ssl. This avoids + * insecure content warnings. This is not attempted if the admin and frontend + * are on different domains to avoid the case where the frontend doesn't have + * ssl certs. Domain mapping plugins can allow other urls in these conditions + * using the customize_allowed_urls filter. + */ + + $allowed_urls = array( home_url('/') ); + $admin_origin = parse_url( admin_url() ); + $home_origin = parse_url( home_url() ); + $cross_domain = ( strtolower( $admin_origin[ 'host' ] ) != strtolower( $home_origin[ 'host' ] ) ); + + if ( is_ssl() && ! $cross_domain ) + $allowed_urls[] = home_url( '/', 'https' ); + + /** + * Filter the list of URLs allowed to be clicked and followed in the Customizer preview. + * + * @since 3.4.0 + * + * @param array $allowed_urls An array of allowed URLs. + */ + $allowed_urls = array_unique( apply_filters( 'customize_allowed_urls', $allowed_urls ) ); + + $login_url = add_query_arg( array( + 'interim-login' => 1, + 'customize-login' => 1 + ), wp_login_url() ); + + // Prepare Customizer settings to pass to JavaScript. + $settings = array( + 'theme' => array( + 'stylesheet' => $wp_customize->get_stylesheet(), + 'active' => $wp_customize->is_theme_active(), + ), + 'url' => array( + 'preview' => esc_url_raw( $url ? $url : home_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', $allowed_urls ), + 'isCrossDomain' => $cross_domain, + 'home' => esc_url_raw( home_url( '/' ) ), + 'login' => esc_url_raw( $login_url ), + ), + 'browser' => array( + 'mobile' => wp_is_mobile(), + 'ios' => $is_ios, + ), + 'settings' => array(), + 'controls' => array(), + 'panels' => array(), + 'sections' => array(), + 'nonce' => array( + 'save' => wp_create_nonce( 'save-customize_' . $wp_customize->get_stylesheet() ), + 'preview' => wp_create_nonce( 'preview-customize_' . $wp_customize->get_stylesheet() ) + ), + 'autofocus' => array(), + 'documentTitleTmpl' => $document_title_tmpl, + ); + + // Prepare Customize Setting objects to pass to JavaScript. + foreach ( $wp_customize->settings() as $id => $setting ) { + if ( $setting->check_capabilities() ) { + $settings['settings'][ $id ] = array( + 'value' => $setting->js_value(), + 'transport' => $setting->transport, + 'dirty' => $setting->dirty, + ); + } + } + + // Prepare Customize Control objects to pass to JavaScript. + foreach ( $wp_customize->controls() as $id => $control ) { + if ( $control->check_capabilities() ) { + $settings['controls'][ $id ] = $control->json(); + } + } + + // Prepare Customize Section objects to pass to JavaScript. + foreach ( $wp_customize->sections() as $id => $section ) { + if ( $section->check_capabilities() ) { + $settings['sections'][ $id ] = $section->json(); + } + } + + // Prepare Customize Panel objects to pass to JavaScript. + foreach ( $wp_customize->panels() as $panel_id => $panel ) { + if ( $panel->check_capabilities() ) { + $settings['panels'][ $panel_id ] = $panel->json(); + foreach ( $panel->sections as $section_id => $section ) { + if ( $section->check_capabilities() ) { + $settings['sections'][ $section_id ] = $section->json(); + } + } + } + } + + // Pass to frontend the Customizer construct being deeplinked + if ( isset( $_GET['autofocus'] ) ) { + $autofocus = wp_unslash( $_GET['autofocus'] ); + if ( is_array( $autofocus ) ) { + foreach ( $autofocus as $type => $id ) { + if ( isset( $settings[ $type . 's' ][ $id ] ) ) { + $settings['autofocus'][ $type ] = $id; + } + } + } + } + + ?> + +
+ + diff --git a/wp-admin/edit-comments.php b/wp-admin/edit-comments.php new file mode 100644 index 0000000000..ea5bb7624a --- /dev/null +++ b/wp-admin/edit-comments.php @@ -0,0 +1,254 @@ +get_pagenum(); + +$doaction = $wp_list_table->current_action(); + +if ( $doaction ) { + check_admin_referer( 'bulk-comments' ); + + if ( 'delete_all' == $doaction && !empty( $_REQUEST['pagegen_timestamp'] ) ) { + $comment_status = wp_unslash( $_REQUEST['comment_status'] ); + $delete_time = wp_unslash( $_REQUEST['pagegen_timestamp'] ); + $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = %s AND %s > comment_date_gmt", $comment_status, $delete_time ) ); + $doaction = 'delete'; + } elseif ( isset( $_REQUEST['delete_comments'] ) ) { + $comment_ids = $_REQUEST['delete_comments']; + $doaction = ( $_REQUEST['action'] != -1 ) ? $_REQUEST['action'] : $_REQUEST['action2']; + } elseif ( isset( $_REQUEST['ids'] ) ) { + $comment_ids = array_map( 'absint', explode( ',', $_REQUEST['ids'] ) ); + } elseif ( wp_get_referer() ) { + wp_safe_redirect( wp_get_referer() ); + exit; + } + + $approved = $unapproved = $spammed = $unspammed = $trashed = $untrashed = $deleted = 0; + + $redirect_to = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'spammed', 'unspammed', 'approved', 'unapproved', 'ids' ), wp_get_referer() ); + $redirect_to = add_query_arg( 'paged', $pagenum, $redirect_to ); + + foreach ( $comment_ids as $comment_id ) { // Check the permissions on each + if ( !current_user_can( 'edit_comment', $comment_id ) ) + continue; + + switch ( $doaction ) { + case 'approve' : + wp_set_comment_status( $comment_id, 'approve' ); + $approved++; + break; + case 'unapprove' : + wp_set_comment_status( $comment_id, 'hold' ); + $unapproved++; + break; + case 'spam' : + wp_spam_comment( $comment_id ); + $spammed++; + break; + case 'unspam' : + wp_unspam_comment( $comment_id ); + $unspammed++; + break; + case 'trash' : + wp_trash_comment( $comment_id ); + $trashed++; + break; + case 'untrash' : + wp_untrash_comment( $comment_id ); + $untrashed++; + break; + case 'delete' : + wp_delete_comment( $comment_id ); + $deleted++; + break; + } + } + + if ( $approved ) + $redirect_to = add_query_arg( 'approved', $approved, $redirect_to ); + if ( $unapproved ) + $redirect_to = add_query_arg( 'unapproved', $unapproved, $redirect_to ); + if ( $spammed ) + $redirect_to = add_query_arg( 'spammed', $spammed, $redirect_to ); + if ( $unspammed ) + $redirect_to = add_query_arg( 'unspammed', $unspammed, $redirect_to ); + if ( $trashed ) + $redirect_to = add_query_arg( 'trashed', $trashed, $redirect_to ); + if ( $untrashed ) + $redirect_to = add_query_arg( 'untrashed', $untrashed, $redirect_to ); + if ( $deleted ) + $redirect_to = add_query_arg( 'deleted', $deleted, $redirect_to ); + if ( $trashed || $spammed ) + $redirect_to = add_query_arg( 'ids', join( ',', $comment_ids ), $redirect_to ); + + wp_safe_redirect( $redirect_to ); + exit; +} elseif ( ! empty( $_GET['_wp_http_referer'] ) ) { + wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), wp_unslash( $_SERVER['REQUEST_URI'] ) ) ); + exit; +} + +$wp_list_table->prepare_items(); + +wp_enqueue_script('admin-comments'); +enqueue_comment_hotkeys_js(); + +if ( $post_id ) + $title = sprintf( __( 'Comments on “%s”' ), wp_html_excerpt( _draft_or_post_title( $post_id ), 50, '…' ) ); +else + $title = __('Comments'); + +add_screen_option( 'per_page' ); + +get_current_screen()->add_help_tab( array( +'id' => 'overview', +'title' => __('Overview'), +'content' => + '

' . __( 'You can manage comments made on your site similar to the way you manage posts and other content. This screen is customizable in the same ways as other management screens, and you can act on comments using the on-hover action links or the Bulk Actions.' ) . '

' +) ); +get_current_screen()->add_help_tab( array( +'id' => 'moderating-comments', +'title' => __('Moderating Comments'), +'content' => + '

' . __( 'A red bar on the left means the comment is waiting for you to moderate it.' ) . '

' . + '

' . __( 'In the Author column, in addition to the author’s name, email address, and blog URL, the commenter’s IP address is shown. Clicking on this link will show you all the comments made from this IP address.' ) . '

' . + '

' . __( 'In the Comment column, above each comment it says “Submitted on,” followed by the date and time the comment was left on your site. Clicking on the date/time link will take you to that comment on your live site. Hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment.' ) . '

' . + '

' . __( 'In the In Response To column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The View Post link leads to that post on your live site. The small bubble with the number in it shows the number of approved comments that post has received. If there are pending comments, a red notification circle with the number of pending comments is displayed. Clicking the notification circle will filter the comments screen to show only pending comments on that post.' ) . '

' . + '

' . __( 'Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link to the side to learn more.' ) . '

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

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

' . + '

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

' . + '

' . __( 'Documentation on Comment Spam' ) . '

' . + '

' . __( 'Documentation on Keyboard Shortcuts' ) . '

' . + '

' . __( 'Support Forums' ) . '

' +); + +require_once( ABSPATH . 'wp-admin/admin-header.php' ); +?> + +
+

%s', + get_edit_post_link( $post_id ), + wp_html_excerpt( _draft_or_post_title( $post_id ), 50, '…' ) + ) + ); +else + _e( 'Comments' ); + +if ( isset($_REQUEST['s']) && $_REQUEST['s'] ) + echo '' . sprintf( __( 'Search results for “%s”' ), wp_html_excerpt( esc_html( wp_unslash( $_REQUEST['s'] ) ), 50, '…' ) ) . ''; ?> +

+ +

' . $error_msg . '

'; +} + +if ( isset($_REQUEST['approved']) || isset($_REQUEST['deleted']) || isset($_REQUEST['trashed']) || isset($_REQUEST['untrashed']) || isset($_REQUEST['spammed']) || isset($_REQUEST['unspammed']) || isset($_REQUEST['same']) ) { + $approved = isset( $_REQUEST['approved'] ) ? (int) $_REQUEST['approved'] : 0; + $deleted = isset( $_REQUEST['deleted'] ) ? (int) $_REQUEST['deleted'] : 0; + $trashed = isset( $_REQUEST['trashed'] ) ? (int) $_REQUEST['trashed'] : 0; + $untrashed = isset( $_REQUEST['untrashed'] ) ? (int) $_REQUEST['untrashed'] : 0; + $spammed = isset( $_REQUEST['spammed'] ) ? (int) $_REQUEST['spammed'] : 0; + $unspammed = isset( $_REQUEST['unspammed'] ) ? (int) $_REQUEST['unspammed'] : 0; + $same = isset( $_REQUEST['same'] ) ? (int) $_REQUEST['same'] : 0; + + if ( $approved > 0 || $deleted > 0 || $trashed > 0 || $untrashed > 0 || $spammed > 0 || $unspammed > 0 || $same > 0 ) { + if ( $approved > 0 ) + $messages[] = sprintf( _n( '%s comment approved', '%s comments approved', $approved ), $approved ); + + if ( $spammed > 0 ) { + $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0; + $messages[] = sprintf( _n( '%s comment marked as spam.', '%s comments marked as spam.', $spammed ), $spammed ) . ' ' . __('Undo') . '
'; + } + + if ( $unspammed > 0 ) + $messages[] = sprintf( _n( '%s comment restored from the spam', '%s comments restored from the spam', $unspammed ), $unspammed ); + + if ( $trashed > 0 ) { + $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0; + $messages[] = sprintf( _n( '%s comment moved to the Trash.', '%s comments moved to the Trash.', $trashed ), $trashed ) . ' ' . __('Undo') . '
'; + } + + if ( $untrashed > 0 ) + $messages[] = sprintf( _n( '%s comment restored from the Trash', '%s comments restored from the Trash', $untrashed ), $untrashed ); + + if ( $deleted > 0 ) + $messages[] = sprintf( _n( '%s comment permanently deleted', '%s comments permanently deleted', $deleted ), $deleted ); + + if ( $same > 0 && $comment = get_comment( $same ) ) { + switch ( $comment->comment_approved ) { + case '1' : + $messages[] = __('This comment is already approved.') . ' ' . __( 'Edit comment' ) . ''; + break; + case 'trash' : + $messages[] = __( 'This comment is already in the Trash.' ) . ' ' . __( 'View Trash' ) . ''; + break; + case 'spam' : + $messages[] = __( 'This comment is already marked as spam.' ) . ' ' . __( 'Edit comment' ) . ''; + break; + } + } + + echo '

' . implode( "
\n", $messages ) . '

'; + } +} +?> + +views(); ?> + +
+ +search_box( __( 'Search Comments' ), 'comment' ); ?> + + + + + + + + + + + + + + + +display(); ?> +
+
+ +
+ + diff --git a/wp-admin/edit-form-advanced.php b/wp-admin/edit-form-advanced.php new file mode 100644 index 0000000000..2a963f1c19 --- /dev/null +++ b/wp-admin/edit-form-advanced.php @@ -0,0 +1,681 @@ +post_content ) ) { + add_action( 'edit_form_after_title', '_wp_posts_page_notice' ); + remove_post_type_support( $post_type, 'editor' ); +} + +$thumbnail_support = current_theme_supports( 'post-thumbnails', $post_type ) && post_type_supports( $post_type, 'thumbnail' ); +if ( ! $thumbnail_support && 'attachment' === $post_type && $post->post_mime_type ) { + if ( wp_attachment_is( 'audio', $post ) ) { + $thumbnail_support = post_type_supports( 'attachment:audio', 'thumbnail' ) || current_theme_supports( 'post-thumbnails', 'attachment:audio' ); + } elseif ( wp_attachment_is( 'video', $post ) ) { + $thumbnail_support = post_type_supports( 'attachment:video', 'thumbnail' ) || current_theme_supports( 'post-thumbnails', 'attachment:video' ); + } +} + +if ( $thumbnail_support ) { + add_thickbox(); + wp_enqueue_media( array( 'post' => $post_ID ) ); +} + +// Add the local autosave notice HTML +add_action( 'admin_footer', '_local_storage_notice' ); + +/* + * @todo Document the $messages array(s). + */ +$permalink = get_permalink( $post_ID ); +if ( ! $permalink ) { + $permalink = ''; +} + +$messages = array(); +/** This filter is documented in wp-admin/includes/meta-boxes.php */ +$post_preview_url = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $permalink ), $post ); + +$messages['post'] = array( + 0 => '', // Unused. Messages start at index 1. + 1 => sprintf( __('Post updated. View post'), esc_url( $permalink ) ), + 2 => __('Custom field updated.'), + 3 => __('Custom field deleted.'), + 4 => __('Post updated.'), + /* translators: %s: date and time of the revision */ + 5 => isset($_GET['revision']) ? sprintf( __('Post restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, + 6 => sprintf( __('Post published. View post'), esc_url( $permalink ) ), + 7 => __('Post saved.'), + 8 => sprintf( __('Post submitted. Preview post'), esc_url( $post_preview_url ) ), + 9 => sprintf( __('Post scheduled for: %1$s. Preview post'), + /* translators: Publish box date format, see http://php.net/date */ + date_i18n( __( 'M j, Y @ H:i' ), strtotime( $post->post_date ) ), esc_url( $permalink ) ), + 10 => sprintf( __('Post draft updated. Preview post'), esc_url( $post_preview_url ) ), +); + +/** This filter is documented in wp-admin/includes/meta-boxes.php */ +$page_preview_url = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $permalink ), $post ); + +$messages['page'] = array( + 0 => '', // Unused. Messages start at index 1. + 1 => sprintf( __('Page updated. View page'), esc_url( $permalink ) ), + 2 => __('Custom field updated.'), + 3 => __('Custom field deleted.'), + 4 => __('Page updated.'), + 5 => isset($_GET['revision']) ? sprintf( __('Page restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, + 6 => sprintf( __('Page published. View page'), esc_url( $permalink ) ), + 7 => __('Page saved.'), + 8 => sprintf( __('Page submitted. Preview page'), esc_url( $page_preview_url ) ), + 9 => sprintf( __('Page scheduled for: %1$s. Preview page'), date_i18n( __( 'M j, Y @ H:i' ), strtotime( $post->post_date ) ), esc_url( $permalink ) ), + 10 => sprintf( __('Page draft updated. Preview page'), esc_url( $page_preview_url ) ), +); +$messages['attachment'] = array_fill( 1, 10, __( 'Media attachment updated.' ) ); // Hack, for now. + +/** + * Filter the post updated messages. + * + * @since 3.0.0 + * + * @param array $messages Post updated messages. For defaults @see $messages declarations above. + */ +$messages = apply_filters( 'post_updated_messages', $messages ); + +$message = false; +if ( isset($_GET['message']) ) { + $_GET['message'] = absint( $_GET['message'] ); + if ( isset($messages[$post_type][$_GET['message']]) ) + $message = $messages[$post_type][$_GET['message']]; + elseif ( !isset($messages[$post_type]) && isset($messages['post'][$_GET['message']]) ) + $message = $messages['post'][$_GET['message']]; +} + +$notice = false; +$form_extra = ''; +if ( 'auto-draft' == $post->post_status ) { + if ( 'edit' == $action ) + $post->post_title = ''; + $autosave = false; + $form_extra .= ""; +} else { + $autosave = wp_get_post_autosave( $post_ID ); +} + +$form_action = 'editpost'; +$nonce_action = 'update-post_' . $post_ID; +$form_extra .= ""; + +// Detect if there exists an autosave newer than the post and if that autosave is different than the post +if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) { + foreach ( _wp_post_revision_fields() as $autosave_field => $_autosave_field ) { + if ( normalize_whitespace( $autosave->$autosave_field ) != normalize_whitespace( $post->$autosave_field ) ) { + $notice = sprintf( __( 'There is an autosave of this post that is more recent than the version below. View the autosave' ), get_edit_post_link( $autosave->ID ) ); + break; + } + } + // If this autosave isn't different from the current post, begone. + if ( ! $notice ) + wp_delete_post_revision( $autosave->ID ); + unset($autosave_field, $_autosave_field); +} + +$post_type_object = get_post_type_object($post_type); + +// All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action). +require_once( ABSPATH . 'wp-admin/includes/meta-boxes.php' ); + + +$publish_callback_args = null; +if ( post_type_supports($post_type, 'revisions') && 'auto-draft' != $post->post_status ) { + $revisions = wp_get_post_revisions( $post_ID ); + + // We should aim to show the revisions metabox only when there are revisions. + if ( count( $revisions ) > 1 ) { + reset( $revisions ); // Reset pointer for key() + $publish_callback_args = array( 'revisions_count' => count( $revisions ), 'revision_id' => key( $revisions ) ); + add_meta_box('revisionsdiv', __('Revisions'), 'post_revisions_meta_box', null, 'normal', 'core'); + } +} + +if ( 'attachment' == $post_type ) { + wp_enqueue_script( 'image-edit' ); + wp_enqueue_style( 'imgareaselect' ); + add_meta_box( 'submitdiv', __('Save'), 'attachment_submit_meta_box', null, 'side', 'core' ); + add_action( 'edit_form_after_title', 'edit_form_image_editor' ); + + if ( wp_attachment_is( 'audio', $post ) ) { + add_meta_box( 'attachment-id3', __( 'Metadata' ), 'attachment_id3_data_meta_box', null, 'normal', 'core' ); + } +} else { + add_meta_box( 'submitdiv', __( 'Publish' ), 'post_submit_meta_box', null, 'side', 'core', $publish_callback_args ); +} + +if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post_type, 'post-formats' ) ) + add_meta_box( 'formatdiv', _x( 'Format', 'post format' ), 'post_format_meta_box', null, 'side', 'core' ); + +// all taxonomies +foreach ( get_object_taxonomies( $post ) as $tax_name ) { + $taxonomy = get_taxonomy( $tax_name ); + if ( ! $taxonomy->show_ui || false === $taxonomy->meta_box_cb ) + continue; + + $label = $taxonomy->labels->name; + + if ( ! is_taxonomy_hierarchical( $tax_name ) ) + $tax_meta_box_id = 'tagsdiv-' . $tax_name; + else + $tax_meta_box_id = $tax_name . 'div'; + + add_meta_box( $tax_meta_box_id, $label, $taxonomy->meta_box_cb, null, 'side', 'core', array( 'taxonomy' => $tax_name ) ); +} + +if ( post_type_supports($post_type, 'page-attributes') ) + add_meta_box('pageparentdiv', 'page' == $post_type ? __('Page Attributes') : __('Attributes'), 'page_attributes_meta_box', null, 'side', 'core'); + +if ( $thumbnail_support && current_user_can( 'upload_files' ) ) + add_meta_box('postimagediv', esc_html( $post_type_object->labels->featured_image ), 'post_thumbnail_meta_box', null, 'side', 'low'); + +if ( post_type_supports($post_type, 'excerpt') ) + add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', null, 'normal', 'core'); + +if ( post_type_supports($post_type, 'trackbacks') ) + add_meta_box('trackbacksdiv', __('Send Trackbacks'), 'post_trackback_meta_box', null, 'normal', 'core'); + +if ( post_type_supports($post_type, 'custom-fields') ) + add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', null, 'normal', 'core'); + +/** + * Fires in the middle of built-in meta box registration. + * + * @since 2.1.0 + * @deprecated 3.7.0 Use 'add_meta_boxes' instead. + * + * @param WP_Post $post Post object. + */ +do_action( 'dbx_post_advanced', $post ); + +if ( post_type_supports($post_type, 'comments') ) + add_meta_box('commentstatusdiv', __('Discussion'), 'post_comment_status_meta_box', null, 'normal', 'core'); + +if ( ( 'publish' == get_post_status( $post ) || 'private' == get_post_status( $post ) ) && post_type_supports($post_type, 'comments') ) + add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', null, 'normal', 'core'); + +if ( ! ( 'pending' == get_post_status( $post ) && ! current_user_can( $post_type_object->cap->publish_posts ) ) ) + add_meta_box('slugdiv', __('Slug'), 'post_slug_meta_box', null, 'normal', 'core'); + +if ( post_type_supports($post_type, 'author') ) { + if ( is_super_admin() || current_user_can( $post_type_object->cap->edit_others_posts ) ) + add_meta_box('authordiv', __('Author'), 'post_author_meta_box', null, 'normal', 'core'); +} + +/** + * Fires after all built-in meta boxes have been added. + * + * @since 3.0.0 + * + * @param string $post_type Post type. + * @param WP_Post $post Post object. + */ +do_action( 'add_meta_boxes', $post_type, $post ); + +/** + * Fires after all built-in meta boxes have been added, contextually for the given post type. + * + * The dynamic portion of the hook, `$post_type`, refers to the post type of the post. + * + * @since 3.0.0 + * + * @param WP_Post $post Post object. + */ +do_action( 'add_meta_boxes_' . $post_type, $post ); + +/** + * Fires after meta boxes have been added. + * + * Fires once for each of the default meta box contexts: normal, advanced, and side. + * + * @since 3.0.0 + * + * @param string $post_type Post type of the post. + * @param string $context string Meta box context. + * @param WP_Post $post Post object. + */ +do_action( 'do_meta_boxes', $post_type, 'normal', $post ); +/** This action is documented in wp-admin/edit-form-advanced.php */ +do_action( 'do_meta_boxes', $post_type, 'advanced', $post ); +/** This action is documented in wp-admin/edit-form-advanced.php */ +do_action( 'do_meta_boxes', $post_type, 'side', $post ); + +add_screen_option('layout_columns', array('max' => 2, 'default' => 2) ); + +if ( 'post' == $post_type ) { + $customize_display = '

' . __('The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop. You can also minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.') . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'customize-display', + 'title' => __('Customizing This Display'), + 'content' => $customize_display, + ) ); + + $title_and_editor = '

' . __('Title - Enter a title for your post. After you enter a title, you’ll see the permalink below, which you can edit.') . '

'; + $title_and_editor .= '

' . __( 'Post editor - Enter the text for your post. There are two modes of editing: Visual and Text. Choose the mode by clicking on the appropriate tab.' ) . '

'; + $title_and_editor .= '

' . __( 'Visual mode gives you a WYSIWYG editor. Click the last icon in the row to get a second row of controls. ') . '

'; + $title_and_editor .= '

' . __( 'The Text mode allows you to enter HTML along with your post text. Line breaks will be converted to paragraphs automatically.' ) . '

'; + $title_and_editor .= '

' . __( 'You can insert media files by clicking the icons above the post editor and following the directions. You can align or edit images using the inline formatting toolbar available in Visual mode.' ) . '

'; + $title_and_editor .= '

' . __( 'You can enable distraction-free writing mode using the icon to the right. This feature is not available for old browsers or devices with small screens, and requires that the full-height editor be enabled in Screen Options.' ) . '

'; + $title_and_editor .= '

' . __( 'Keyboard users: When you’re working in the visual editor, you can use Alt + F10 to access the toolbar.' ) . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'title-post-editor', + 'title' => __('Title and Post Editor'), + 'content' => $title_and_editor, + ) ); + + get_current_screen()->set_help_sidebar( + '

' . sprintf(__('You can also create posts with the Press This bookmarklet.'), 'tools.php') . '

' . + '

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

' . + '

' . __('Documentation on Writing and Editing Posts') . '

' . + '

' . __('Support Forums') . '

' + ); +} elseif ( 'page' == $post_type ) { + $about_pages = '

' . __('Pages are similar to posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest pages under other pages by making one the “Parent” of the other, creating a group of pages.') . '

' . + '

' . __('Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. This screen also has the distraction-free writing space, available in both the Visual and Text modes via the Fullscreen buttons. The Page editor mostly works the same as the Post editor, but there are some Page-specific features in the Page Attributes box:') . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'about-pages', + 'title' => __('About Pages'), + 'content' => $about_pages, + ) ); + + get_current_screen()->set_help_sidebar( + '

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

' . + '

' . __('Documentation on Adding New Pages') . '

' . + '

' . __('Documentation on Editing Pages') . '

' . + '

' . __('Support Forums') . '

' + ); +} elseif ( 'attachment' == $post_type ) { + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

' . __('This screen allows you to edit four fields for metadata in a file within the media library.') . '

' . + '

' . __('For images only, you can click on Edit Image under the thumbnail to expand out an inline image editor with icons for cropping, rotating, or flipping the image as well as for undoing and redoing. The boxes on the right give you more options for scaling the image, for cropping it, and for cropping the thumbnail in a different way than you crop the original image. You can click on Help in those boxes to get more information.') . '

' . + '

' . __('Note that you crop the image by clicking on it (the Crop icon is already selected) and dragging the cropping frame to select the desired part. Then click Save to retain the cropping.') . '

' . + '

' . __('Remember to click Update Media to save metadata entered or changed.') . '

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

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

' . + '

' . __('Documentation on Edit Media') . '

' . + '

' . __('Support Forums') . '

' + ); +} + +if ( 'post' == $post_type || 'page' == $post_type ) { + $inserting_media = '

' . __( 'You can upload and insert media (images, audio, documents, etc.) by clicking the Add Media button. You can select from the images and files already uploaded to the Media Library, or upload new media to add to your page or post. To create an image gallery, select the images to add and click the “Create a new gallery” button.' ) . '

'; + $inserting_media .= '

' . __( 'You can also embed media from many popular websites including Twitter, YouTube, Flickr and others by pasting the media URL on its own line into the content of your post/page. Please refer to the Codex to learn more about embeds.' ) . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'inserting-media', + 'title' => __( 'Inserting Media' ), + 'content' => $inserting_media, + ) ); +} + +if ( 'post' == $post_type ) { + $publish_box = '

' . __('Several boxes on this screen contain settings for how your content will be published, including:') . '

'; + $publish_box .= '
  • ' . __('Publish - You can set the terms of publishing your post in the Publish box. For Status, Visibility, and Publish (immediately), click on the Edit link to reveal more options. Visibility includes options for password-protecting a post or making it stay at the top of your blog indefinitely (sticky). Publish (immediately) allows you to set a future or past date and time, so you can schedule a post to be published in the future or backdate a post.') . '
  • '; + + if ( current_theme_supports( 'post-formats' ) && post_type_supports( 'post', 'post-formats' ) ) { + $publish_box .= '
  • ' . __( 'Format - Post Formats designate how your theme will display a specific post. For example, you could have a standard blog post with a title and paragraphs, or a short aside that omits the title and contains a short text blurb. Please refer to the Codex for descriptions of each post format. Your theme could enable all or some of 10 possible formats.' ) . '
  • '; + } + + if ( current_theme_supports( 'post-thumbnails' ) && post_type_supports( 'post', 'thumbnail' ) ) { + /* translators: %s: Featured Image */ + $publish_box .= '
  • ' . sprintf( __( '%s - This allows you to associate an image with your post without inserting it. This is usually useful only if your theme makes use of the image as a post thumbnail on the home page, a custom header, etc.' ), esc_html( $post_type_object->labels->featured_image ) ) . '
  • '; + } + + $publish_box .= '
'; + + get_current_screen()->add_help_tab( array( + 'id' => 'publish-box', + 'title' => __('Publish Settings'), + 'content' => $publish_box, + ) ); + + $discussion_settings = '

' . __('Send Trackbacks - Trackbacks are a way to notify legacy blog systems that you’ve linked to them. Enter the URL(s) you want to send trackbacks. If you link to other WordPress sites they’ll be notified automatically using pingbacks, and this field is unnecessary.') . '

'; + $discussion_settings .= '

' . __('Discussion - You can turn comments and pings on or off, and if there are comments on the post, you can see them here and moderate them.') . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'discussion-settings', + 'title' => __('Discussion Settings'), + 'content' => $discussion_settings, + ) ); +} elseif ( 'page' == $post_type ) { + $page_attributes = '

' . __('Parent - You can arrange your pages in hierarchies. For example, you could have an “About” page that has “Life Story” and “My Dog” pages under it. There are no limits to how many levels you can nest pages.') . '

' . + '

' . __('Template - Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you’ll see them in this dropdown menu.') . '

' . + '

' . __('Order - Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field.') . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'page-attributes', + 'title' => __('Page Attributes'), + 'content' => $page_attributes, + ) ); +} + +require_once( ABSPATH . 'wp-admin/admin-header.php' ); +?> + +
+

cap->create_posts ) ) + echo ' ' . esc_html( $post_type_object->labels->add_new ) . ''; +?>

+ +

+ + +

+ + +
> + + + + + + + + + + + + + + +
+
+
+ + +
+
+ + + +
+ +
+public ? get_sample_permalink_html($post->ID) : ''; +$shortlink = wp_get_shortlink($post->ID, 'post'); + +if ( !empty( $shortlink ) && $shortlink !== $permalink && $permalink !== home_url('?page_id=' . $post->ID) ) + $sample_permalink_html .= '' . __('Get Shortlink') . ''; + +if ( $post_type_object->public && ! ( 'pending' == get_post_status( $post ) && !current_user_can( $post_type_object->cap->publish_posts ) ) ) { + $has_sample_permalink = $sample_permalink_html && 'auto-draft' != $post->post_status; +?> +
+ +
+ +
+ +
+ +
+ +post_content, 'content', array( + '_content_editor_dfw' => $_content_editor_dfw, + 'drag_drop_upload' => true, + 'tabfocus_elements' => 'content-html,save-post', + 'editor_height' => 300, + 'tinymce' => array( + 'resize' => false, + 'wp_autoresize_on' => $_wp_editor_expand, + 'add_unload_trigger' => false, + ), +) ); ?> + + + + +
0' ); ?> +   +post_status ) { + echo ''; + if ( $last_user = get_userdata( get_post_meta( $post_ID, '_edit_last', true ) ) ) { + printf(__('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified)); + } else { + printf(__('Last edited on %1$s at %2$s'), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified)); + } + echo ''; + } ?> +
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +post_title ) : ?> + + diff --git a/wp-admin/edit-form-comment.php b/wp-admin/edit-form-comment.php new file mode 100644 index 0000000000..9b8062da12 --- /dev/null +++ b/wp-admin/edit-form-comment.php @@ -0,0 +1,199 @@ + +
+comment_ID) ?> +
+

+ +
+ + + + +
+
+
+
+
+ + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+' . __( 'Comment' ) . ''; + $quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,close' ); + wp_editor( $comment->comment_content, 'content', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings ) ); + wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?> +
+
+ +
+
+

+
+
+
+ +
+
+ +
+
+
+ +
+ +
+ +
+
+ +
+ +
+%1$s'); +$date = date_i18n( $datef, strtotime( $comment->comment_date ) ); +?> + + +
+ + +
+
+ +comment_post_ID; +if ( current_user_can( 'edit_post', $post_id ) ) { + $post_link = ""; + $post_link .= esc_html( get_the_title( $post_id ) ) . ''; +} else { + $post_link = esc_html( get_the_title( $post_id ) ); +} +?> + +
+ ' . $post_link . '' + ); ?> +
+ +comment_parent ) : + $parent = get_comment( $comment->comment_parent ); + $parent_link = esc_url( get_comment_link( $comment->comment_parent ) ); + $name = get_comment_author( $parent->comment_ID ); +?> +
+ ' . $name . '' + ); ?> +
+ + + + +
+
+
+ +
+
+comment_ID&_wp_original_http_referer=" . urlencode(wp_get_referer()), 'delete-comment_' . $comment->comment_ID) . "'>" . ( !EMPTY_TRASH_DAYS ? __('Delete Permanently') : __('Move to Trash') ) . "\n"; ?> +
+
+ +
+
+
+
+
+
+
+ +
+ +
+ + + + + + + +
+
+
+
+ + + +Links / Edit Link' ), 'link-manager.php' ); + $submit_text = __('Update Link'); + $form_name = 'editlink'; + $nonce_action = 'update-bookmark_' . $link_id; +} else { + $heading = sprintf( __( 'Links / Add New Link' ), 'link-manager.php' ); + $submit_text = __('Add Link'); + $form_name = 'addlink'; + $nonce_action = 'add-bookmark'; +} + +require_once( ABSPATH . 'wp-admin/includes/meta-boxes.php' ); + +add_meta_box('linksubmitdiv', __('Save'), 'link_submit_meta_box', null, 'side', 'core'); +add_meta_box('linkcategorydiv', __('Categories'), 'link_categories_meta_box', null, 'normal', 'core'); +add_meta_box('linktargetdiv', __('Target'), 'link_target_meta_box', null, 'normal', 'core'); +add_meta_box('linkxfndiv', __('Link Relationship (XFN)'), 'link_xfn_meta_box', null, 'normal', 'core'); +add_meta_box('linkadvanceddiv', __('Advanced'), 'link_advanced_meta_box', null, 'normal', 'core'); + +/** This action is documented in wp-admin/edit-form-advanced.php */ +do_action( 'add_meta_boxes', 'link', $link ); + +/** + * Fires when link-specific meta boxes are added. + * + * @since 3.0.0 + * + * @param object $link Link object. + */ +do_action( 'add_meta_boxes_link', $link ); + +/** This action is documented in wp-admin/edit-form-advanced.php */ +do_action( 'do_meta_boxes', 'link', 'normal', $link ); +/** This action is documented in wp-admin/edit-form-advanced.php */ +do_action( 'do_meta_boxes', 'link', 'advanced', $link ); +/** This action is documented in wp-admin/edit-form-advanced.php */ +do_action( 'do_meta_boxes', 'link', 'side', $link ); + +add_screen_option('layout_columns', array('max' => 2, 'default' => 2) ); + +get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

' . __( 'You can add or edit links on this screen by entering information in each of the boxes. Only the link’s web address and name (the text you want to display on your site as the link) are required fields.' ) . '

' . + '

' . __( 'The boxes for link name, web address, and description have fixed positions, while the others may be repositioned using drag and drop. You can also hide boxes you don’t use in the Screen Options tab, or minimize boxes by clicking on the title bar of the box.' ) . '

' . + '

' . __( 'XFN stands for XHTML Friends Network, which is optional. WordPress allows the generation of XFN attributes to show how you are related to the authors/owners of the site to which you are linking.' ) . '

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

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

' . + '

' . __( 'Documentation on Creating Links' ) . '

' . + '

' . __( 'Support Forums' ) . '

' +); + +require_once( ABSPATH . 'wp-admin/admin-header.php' ); +?> + +
+

+ + +

+ + +
+ + +
+ +
+
+
+

+
+ +

+
+
+ +
+

+
+ +

http://wordpress.org/ — don’t forget the http://'); ?>

+
+
+ +
+

+
+ +

+
+
+
+ +
+ +
+
+ +
+ + + + + + + + +
+
+ +
+
diff --git a/wp-admin/edit-tag-form.php b/wp-admin/edit-tag-form.php new file mode 100644 index 0000000000..ac5aafbf8f --- /dev/null +++ b/wp-admin/edit-tag-form.php @@ -0,0 +1,228 @@ + +

+ + +
+

labels->edit_item; ?>

+
+
> + + + + + + + + + + + + + slug ) ? apply_filters( 'editable_slug', $tag->slug ) : ''; + ?> + + + + + + + + + + + + + + +
+

+

+ 0, + 'hide_if_empty' => false, + 'taxonomy' => $taxonomy, + 'name' => 'parent', + 'orderby' => 'name', + 'selected' => $tag->parent, + 'exclude_tree' => $tag->term_id, + 'hierarchical' => true, + 'show_option_none' => __( 'None' ), + ); + + /** This filter is documented in wp-admin/edit-tags.php */ + $dropdown_args = apply_filters( 'taxonomy_parent_dropdown_args', $dropdown_args, $taxonomy, 'edit' ); + wp_dropdown_categories( $dropdown_args ); ?> + +

+ +
+

+ +
+
+ + + +cap->manage_terms ) ) + wp_die( __( 'Cheatin’ uh?' ), 403 ); + +/** + * $post_type is set when the WP_Terms_List_Table instance is created + * + * @global string $post_type + */ +global $post_type; + +$wp_list_table = _get_list_table('WP_Terms_List_Table'); +$pagenum = $wp_list_table->get_pagenum(); + +$title = $tax->labels->name; + +if ( 'post' != $post_type ) { + $parent_file = ( 'attachment' == $post_type ) ? 'upload.php' : "edit.php?post_type=$post_type"; + $submenu_file = "edit-tags.php?taxonomy=$taxonomy&post_type=$post_type"; +} elseif ( 'link_category' == $tax->name ) { + $parent_file = 'link-manager.php'; + $submenu_file = 'edit-tags.php?taxonomy=link_category'; +} else { + $parent_file = 'edit.php'; + $submenu_file = "edit-tags.php?taxonomy=$taxonomy"; +} + +add_screen_option( 'per_page', array( 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page' ) ); + +$location = false; + +switch ( $wp_list_table->current_action() ) { + +case 'add-tag': + + check_admin_referer( 'add-tag', '_wpnonce_add-tag' ); + + if ( !current_user_can( $tax->cap->edit_terms ) ) + wp_die( __( 'Cheatin’ uh?' ), 403 ); + + $ret = wp_insert_term( $_POST['tag-name'], $taxonomy, $_POST ); + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + + if ( $referer = wp_get_original_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + if ( $ret && !is_wp_error( $ret ) ) + $location = add_query_arg( 'message', 1, $location ); + else + $location = add_query_arg( array( 'error' => true, 'message' => 4 ), $location ); + + break; + +case 'delete': + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + if ( ! isset( $_REQUEST['tag_ID'] ) ) { + break; + } + + $tag_ID = (int) $_REQUEST['tag_ID']; + check_admin_referer( 'delete-tag_' . $tag_ID ); + + if ( !current_user_can( $tax->cap->delete_terms ) ) + wp_die( __( 'Cheatin’ uh?' ), 403 ); + + wp_delete_term( $tag_ID, $taxonomy ); + + $location = add_query_arg( 'message', 2, $location ); + + break; + +case 'bulk-delete': + check_admin_referer( 'bulk-tags' ); + + if ( !current_user_can( $tax->cap->delete_terms ) ) + wp_die( __( 'Cheatin’ uh?' ), 403 ); + + $tags = (array) $_REQUEST['delete_tags']; + foreach ( $tags as $tag_ID ) { + wp_delete_term( $tag_ID, $taxonomy ); + } + + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + $location = add_query_arg( 'message', 6, $location ); + + break; + +case 'edit': + $title = $tax->labels->edit_item; + + $tag_ID = (int) $_REQUEST['tag_ID']; + + $tag = get_term( $tag_ID, $taxonomy, OBJECT, 'edit' ); + if ( ! $tag ) + wp_die( __( 'You attempted to edit an item that doesn’t exist. Perhaps it was deleted?' ) ); + require_once( ABSPATH . 'wp-admin/admin-header.php' ); + include( ABSPATH . 'wp-admin/edit-tag-form.php' ); + include( ABSPATH . 'wp-admin/admin-footer.php' ); + + exit; + +case 'editedtag': + $tag_ID = (int) $_POST['tag_ID']; + check_admin_referer( 'update-tag_' . $tag_ID ); + + if ( !current_user_can( $tax->cap->edit_terms ) ) + wp_die( __( 'Cheatin’ uh?' ), 403 ); + + $tag = get_term( $tag_ID, $taxonomy ); + if ( ! $tag ) + wp_die( __( 'You attempted to edit an item that doesn’t exist. Perhaps it was deleted?' ) ); + + $ret = wp_update_term( $tag_ID, $taxonomy, $_POST ); + + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + + if ( $referer = wp_get_original_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + if ( $ret && !is_wp_error( $ret ) ) + $location = add_query_arg( 'message', 3, $location ); + else + $location = add_query_arg( array( 'error' => true, 'message' => 5 ), $location ); + break; +} + +if ( ! $location && ! empty( $_REQUEST['_wp_http_referer'] ) ) { + $location = remove_query_arg( array('_wp_http_referer', '_wpnonce'), wp_unslash($_SERVER['REQUEST_URI']) ); +} + +if ( $location ) { + if ( ! empty( $_REQUEST['paged'] ) ) { + $location = add_query_arg( 'paged', (int) $_REQUEST['paged'], $location ); + } + wp_redirect( $location ); + exit; +} + +$wp_list_table->prepare_items(); +$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); + +if ( $pagenum > $total_pages && $total_pages > 0 ) { + wp_redirect( add_query_arg( 'paged', $total_pages ) ); + exit; +} + +wp_enqueue_script('admin-tags'); +if ( current_user_can($tax->cap->edit_terms) ) + wp_enqueue_script('inline-edit-tax'); + +if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $taxonomy ) { + $help =''; + if ( 'category' == $taxonomy ) + $help = '

' . sprintf(__( 'You can use categories to define sections of your site and group related posts. The default category is “Uncategorized” until you change it in your writing settings.' ) , 'options-writing.php' ) . '

'; + elseif ( 'link_category' == $taxonomy ) + $help = '

' . __( 'You can create groups of links by using Link Categories. Link Category names must be unique and Link Categories are separate from the categories you use for posts.' ) . '

'; + else + $help = '

' . __( 'You can assign keywords to your posts using tags. Unlike categories, tags have no hierarchy, meaning there’s no relationship from one tag to another.' ) . '

'; + + if ( 'link_category' == $taxonomy ) + $help .= '

' . __( 'You can delete Link Categories in the Bulk Action pull-down, but that action does not delete the links within the category. Instead, it moves them to the default Link Category.' ) . '

'; + else + $help .='

' . __( 'What’s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index.' ) . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => $help, + ) ); + + if ( 'category' == $taxonomy || 'post_tag' == $taxonomy ) { + if ( 'category' == $taxonomy ) + $help = '

' . __( 'When adding a new category on this screen, you’ll fill in the following fields:' ) . '

'; + else + $help = '

' . __( 'When adding a new tag on this screen, you’ll fill in the following fields:' ) . '

'; + + $help .= '
    ' . + '
  • ' . __( 'Name - The name is how it appears on your site.' ) . '
  • '; + + if ( ! global_terms_enabled() ) + $help .= '
  • ' . __( 'Slug - The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ) . '
  • '; + + if ( 'category' == $taxonomy ) + $help .= '
  • ' . __( 'Parent - Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have child categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown.' ) . '
  • '; + + $help .= '
  • ' . __( 'Description - The description is not prominent by default; however, some themes may display it.' ) . '
  • ' . + '
' . + '

' . __( 'You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table.' ) . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'adding-terms', + 'title' => 'category' == $taxonomy ? __( 'Adding Categories' ) : __( 'Adding Tags' ), + 'content' => $help, + ) ); + } + + $help = '

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

'; + + if ( 'category' == $taxonomy ) + $help .= '

' . __( 'Documentation on Categories' ) . '

'; + elseif ( 'link_category' == $taxonomy ) + $help .= '

' . __( 'Documentation on Link Categories' ) . '

'; + else + $help .= '

' . __( 'Documentation on Tags' ) . '

'; + + $help .= '

' . __('Support Forums') . '

'; + + get_current_screen()->set_help_sidebar( $help ); + + unset( $help ); +} + +require_once( ABSPATH . 'wp-admin/admin-header.php' ); + +if ( !current_user_can($tax->cap->edit_terms) ) + wp_die( __('You are not allowed to edit this item.') ); + +$messages = array(); +$messages['_item'] = array( + 0 => '', // Unused. Messages start at index 1. + 1 => __( 'Item added.' ), + 2 => __( 'Item deleted.' ), + 3 => __( 'Item updated.' ), + 4 => __( 'Item not added.' ), + 5 => __( 'Item not updated.' ), + 6 => __( 'Items deleted.' ) +); +$messages['category'] = array( + 0 => '', // Unused. Messages start at index 1. + 1 => __( 'Category added.' ), + 2 => __( 'Category deleted.' ), + 3 => __( 'Category updated.' ), + 4 => __( 'Category not added.' ), + 5 => __( 'Category not updated.' ), + 6 => __( 'Categories deleted.' ) +); +$messages['post_tag'] = array( + 0 => '', // Unused. Messages start at index 1. + 1 => __( 'Tag added.' ), + 2 => __( 'Tag deleted.' ), + 3 => __( 'Tag updated.' ), + 4 => __( 'Tag not added.' ), + 5 => __( 'Tag not updated.' ), + 6 => __( 'Tags deleted.' ) +); + +/** + * Filter the messages displayed when a tag is updated. + * + * @since 3.7.0 + * + * @param array $messages The messages to be displayed. + */ +$messages = apply_filters( 'term_updated_messages', $messages ); + +$message = false; +if ( isset( $_REQUEST['message'] ) && ( $msg = (int) $_REQUEST['message'] ) ) { + if ( isset( $messages[ $taxonomy ][ $msg ] ) ) + $message = $messages[ $taxonomy ][ $msg ]; + elseif ( ! isset( $messages[ $taxonomy ] ) && isset( $messages['_item'][ $msg ] ) ) + $message = $messages['_item'][ $msg ]; +} + +$class = ( isset( $_REQUEST['error'] ) ) ? 'error' : 'updated'; + +if ( is_plugin_active( 'wpcat2tag-importer/wpcat2tag-importer.php' ) ) { + $import_link = admin_url( 'admin.php?import=wpcat2tag' ); +} else { + $import_link = admin_url( 'import.php' ); +} + +?> + +
+

' . __('Search results for “%s”') . '', esc_html( wp_unslash($_REQUEST['s']) ) ); ?> +

+ + +

+ +
+ +
+ + + +search_box( $tax->labels->search_items, 'tag' ); ?> + +
+
+ +
+ +
+
+
+ + + +display(); ?> + +
+
+ + +
+

+ Note:
Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the category %s.' ), apply_filters( 'the_category', get_cat_name( get_option( 'default_category') ) ) ); + ?> +

+ +

category to tag converter.' ), esc_url( $import_link ) ) ?>

+ +
+ +
+

tag to category converter.' ), esc_url( $import_link ) ) ;?>

+
+ + +
+
+ +
+
+ +labels->popular_items ) ) { + if ( current_user_can( $tax->cap->edit_terms ) ) + $tag_cloud = wp_tag_cloud( array( 'taxonomy' => $taxonomy, 'post_type' => $post_type, 'echo' => false, 'link' => 'edit' ) ); + else + $tag_cloud = wp_tag_cloud( array( 'taxonomy' => $taxonomy, 'echo' => false ) ); + + if ( $tag_cloud ) : + ?> +
+

labels->popular_items; ?>

+ +
+cap->edit_terms) ) { + if ( 'category' == $taxonomy ) { + /** + * Fires before the Add Category form. + * + * @since 2.1.0 + * @deprecated 3.0.0 Use {$taxonomy}_pre_add_form instead. + * + * @param object $arg Optional arguments cast to an object. + */ + do_action( 'add_category_form_pre', (object) array( 'parent' => 0 ) ); + } elseif ( 'link_category' == $taxonomy ) { + /** + * Fires before the link category form. + * + * @since 2.3.0 + * @deprecated 3.0.0 Use {$taxonomy}_pre_add_form instead. + * + * @param object $arg Optional arguments cast to an object. + */ + do_action( 'add_link_category_form_pre', (object) array( 'parent' => 0 ) ); + } else { + /** + * Fires before the Add Tag form. + * + * @since 2.5.0 + * @deprecated 3.0.0 Use {$taxonomy}_pre_add_form instead. + * + * @param string $taxonomy The taxonomy slug. + */ + do_action( 'add_tag_form_pre', $taxonomy ); + } + + /** + * Fires before the Add Term form for all taxonomies. + * + * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug. + * + * @since 3.0.0 + * + * @param string $taxonomy The taxonomy slug. + */ + do_action( "{$taxonomy}_pre_add_form", $taxonomy ); +?> + +
+

labels->add_new_item; ?>

+
> + + + + + + +
+ + +

+
+ +
+ + +

+
+ + +
+ + 0, + 'hide_if_empty' => false, + 'taxonomy' => $taxonomy, + 'name' => 'parent', + 'orderby' => 'name', + 'hierarchical' => true, + 'show_option_none' => __( 'None' ), + ); + + /** + * Filter the taxonomy parent drop-down on the Edit Term page. + * + * @since 3.7.0 + * @since 4.2.0 Added `$context` parameter. + * + * @param array $dropdown_args { + * An array of taxonomy parent drop-down arguments. + * + * @type int|bool $hide_empty Whether to hide terms not attached to any posts. Default 0|false. + * @type bool $hide_if_empty Whether to hide the drop-down if no terms exist. Default false. + * @type string $taxonomy The taxonomy slug. + * @type string $name Value of the name attribute to use for the drop-down select element. + * Default 'parent'. + * @type string $orderby The field to order by. Default 'name'. + * @type bool $hierarchical Whether the taxonomy is hierarchical. Default true. + * @type string $show_option_none Label to display if there are no terms. Default 'None'. + * } + * @param string $taxonomy The taxonomy slug. + * @param string $context Filter context. Accepts 'new' or 'edit'. + */ + $dropdown_args = apply_filters( 'taxonomy_parent_dropdown_args', $dropdown_args, $taxonomy, 'new' ); + + wp_dropdown_categories( $dropdown_args ); + ?> + +

+ +
+ +
+ + +

+
+ +labels->add_new_item ); + +if ( 'category' == $taxonomy ) { + /** + * Fires at the end of the Edit Category form. + * + * @since 2.1.0 + * @deprecated 3.0.0 Use {$taxonomy}_add_form instead. + * + * @param object $arg Optional arguments cast to an object. + */ + do_action( 'edit_category_form', (object) array( 'parent' => 0 ) ); +} elseif ( 'link_category' == $taxonomy ) { + /** + * Fires at the end of the Edit Link form. + * + * @since 2.3.0 + * @deprecated 3.0.0 Use {$taxonomy}_add_form instead. + * + * @param object $arg Optional arguments cast to an object. + */ + do_action( 'edit_link_category_form', (object) array( 'parent' => 0 ) ); +} else { + /** + * Fires at the end of the Add Tag form. + * + * @since 2.7.0 + * @deprecated 3.0.0 Use {$taxonomy}_add_form instead. + * + * @param string $taxonomy The taxonomy slug. + */ + do_action( 'add_tag_form', $taxonomy ); +} + +/** + * Fires at the end of the Add Term form for all taxonomies. + * + * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug. + * + * @since 3.0.0 + * + * @param string $taxonomy The taxonomy slug. + */ +do_action( "{$taxonomy}_add_form", $taxonomy ); +?> +
+ + +
+
+ +
+
+ + + +inline_edit(); + +include( ABSPATH . 'wp-admin/admin-footer.php' ); diff --git a/wp-admin/edit.php b/wp-admin/edit.php new file mode 100644 index 0000000000..6c285d78ec --- /dev/null +++ b/wp-admin/edit.php @@ -0,0 +1,342 @@ +cap->edit_posts ) ) + wp_die( __( 'Cheatin’ uh?' ), 403 ); + +$wp_list_table = _get_list_table('WP_Posts_List_Table'); +$pagenum = $wp_list_table->get_pagenum(); + +// Back-compat for viewing comments of an entry +foreach ( array( 'p', 'attachment_id', 'page_id' ) as $_redirect ) { + if ( ! empty( $_REQUEST[ $_redirect ] ) ) { + wp_redirect( admin_url( 'edit-comments.php?p=' . absint( $_REQUEST[ $_redirect ] ) ) ); + exit; + } +} +unset( $_redirect ); + +if ( 'post' != $post_type ) { + $parent_file = "edit.php?post_type=$post_type"; + $submenu_file = "edit.php?post_type=$post_type"; + $post_new_file = "post-new.php?post_type=$post_type"; +} else { + $parent_file = 'edit.php'; + $submenu_file = 'edit.php'; + $post_new_file = 'post-new.php'; +} + +$doaction = $wp_list_table->current_action(); + +if ( $doaction ) { + check_admin_referer('bulk-posts'); + + $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'locked', 'ids'), wp_get_referer() ); + if ( ! $sendback ) + $sendback = admin_url( $parent_file ); + $sendback = add_query_arg( 'paged', $pagenum, $sendback ); + if ( strpos($sendback, 'post.php') !== false ) + $sendback = admin_url($post_new_file); + + if ( 'delete_all' == $doaction ) { + // Prepare for deletion of all posts with a specified post status (i.e. Empty trash). + $post_status = preg_replace('/[^a-z0-9_-]+/i', '', $_REQUEST['post_status']); + // Validate the post status exists. + if ( get_post_status_object( $post_status ) ) { + $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type=%s AND post_status = %s", $post_type, $post_status ) ); + } + $doaction = 'delete'; + } elseif ( isset( $_REQUEST['media'] ) ) { + $post_ids = $_REQUEST['media']; + } elseif ( isset( $_REQUEST['ids'] ) ) { + $post_ids = explode( ',', $_REQUEST['ids'] ); + } elseif ( !empty( $_REQUEST['post'] ) ) { + $post_ids = array_map('intval', $_REQUEST['post']); + } + + if ( !isset( $post_ids ) ) { + wp_redirect( $sendback ); + exit; + } + + switch ( $doaction ) { + case 'trash': + $trashed = $locked = 0; + + foreach( (array) $post_ids as $post_id ) { + if ( !current_user_can( 'delete_post', $post_id) ) + wp_die( __('You are not allowed to move this item to the Trash.') ); + + if ( wp_check_post_lock( $post_id ) ) { + $locked++; + continue; + } + + if ( !wp_trash_post($post_id) ) + wp_die( __('Error in moving to Trash.') ); + + $trashed++; + } + + $sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids), 'locked' => $locked ), $sendback ); + break; + case 'untrash': + $untrashed = 0; + foreach( (array) $post_ids as $post_id ) { + if ( !current_user_can( 'delete_post', $post_id) ) + wp_die( __('You are not allowed to restore this item from the Trash.') ); + + if ( !wp_untrash_post($post_id) ) + wp_die( __('Error in restoring from Trash.') ); + + $untrashed++; + } + $sendback = add_query_arg('untrashed', $untrashed, $sendback); + break; + case 'delete': + $deleted = 0; + foreach( (array) $post_ids as $post_id ) { + $post_del = get_post($post_id); + + if ( !current_user_can( 'delete_post', $post_id ) ) + wp_die( __('You are not allowed to delete this item.') ); + + if ( $post_del->post_type == 'attachment' ) { + if ( ! wp_delete_attachment($post_id) ) + wp_die( __('Error in deleting.') ); + } else { + if ( !wp_delete_post($post_id) ) + wp_die( __('Error in deleting.') ); + } + $deleted++; + } + $sendback = add_query_arg('deleted', $deleted, $sendback); + break; + case 'edit': + if ( isset($_REQUEST['bulk_edit']) ) { + $done = bulk_edit_posts($_REQUEST); + + if ( is_array($done) ) { + $done['updated'] = count( $done['updated'] ); + $done['skipped'] = count( $done['skipped'] ); + $done['locked'] = count( $done['locked'] ); + $sendback = add_query_arg( $done, $sendback ); + } + } + break; + } + + $sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status', 'post', 'bulk_edit', 'post_view'), $sendback ); + + wp_redirect($sendback); + exit(); +} elseif ( ! empty($_REQUEST['_wp_http_referer']) ) { + wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), wp_unslash($_SERVER['REQUEST_URI']) ) ); + exit; +} + +$wp_list_table->prepare_items(); + +wp_enqueue_script('inline-edit-post'); +wp_enqueue_script('heartbeat'); + +$title = $post_type_object->labels->name; + +if ( 'post' == $post_type ) { + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

' . __('This screen provides access to all of your posts. You can customize the display of this screen to suit your workflow.') . '

' + ) ); + get_current_screen()->add_help_tab( array( + 'id' => 'screen-content', + 'title' => __('Screen Content'), + 'content' => + '

' . __('You can customize the display of this screen’s contents in a number of ways:') . '

' . + '
    ' . + '
  • ' . __('You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab.') . '
  • ' . + '
  • ' . __('You can filter the list of posts by post status using the text links in the upper left to show All, Published, Draft, or Trashed posts. The default view is to show all posts.') . '
  • ' . + '
  • ' . __('You can view posts in a simple title list or with an excerpt. Choose the view you prefer by clicking on the icons at the top of the list on the right.') . '
  • ' . + '
  • ' . __('You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list.') . '
  • ' . + '
' + ) ); + get_current_screen()->add_help_tab( array( + 'id' => 'action-links', + 'title' => __('Available Actions'), + 'content' => + '

' . __('Hovering over a row in the posts list will display action links that allow you to manage your post. You can perform the following actions:') . '

' . + '
    ' . + '
  • ' . __('Edit takes you to the editing screen for that post. You can also reach that screen by clicking on the post title.') . '
  • ' . + '
  • ' . __('Quick Edit provides inline access to the metadata of your post, allowing you to update post details without leaving this screen.') . '
  • ' . + '
  • ' . __('Trash removes your post from this list and places it in the trash, from which you can permanently delete it.') . '
  • ' . + '
  • ' . __('Preview will show you what your draft post will look like if you publish it. View will take you to your live site to view the post. Which link is available depends on your post’s status.') . '
  • ' . + '
' + ) ); + get_current_screen()->add_help_tab( array( + 'id' => 'bulk-actions', + 'title' => __('Bulk Actions'), + 'content' => + '

' . __('You can also edit or move multiple posts to the trash at once. Select the posts you want to act on using the checkboxes, then select the action you want to take from the Bulk Actions menu and click Apply.') . '

' . + '

' . __('When using Bulk Edit, you can change the metadata (categories, author, etc.) for all selected posts at once. To remove a post from the grouping, just click the x next to its name in the Bulk Edit area that appears.') . '

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

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

' . + '

' . __('Documentation on Managing Posts') . '

' . + '

' . __('Support Forums') . '

' + ); + +} elseif ( 'page' == $post_type ) { + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

' . __('Pages are similar to posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest pages under other pages by making one the “Parent” of the other, creating a group of pages.') . '

' + ) ); + get_current_screen()->add_help_tab( array( + 'id' => 'managing-pages', + 'title' => __('Managing Pages'), + 'content' => + '

' . __('Managing pages is very similar to managing posts, and the screens can be customized in the same way.') . '

' . + '

' . __('You can also perform the same types of actions, including narrowing the list by using the filters, acting on a page using the action links that appear when you hover over a row, or using the Bulk Actions menu to edit the metadata for multiple pages at once.') . '

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

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

' . + '

' . __('Documentation on Managing Pages') . '

' . + '

' . __('Support Forums') . '

' + ); +} + +add_screen_option( 'per_page', array( 'default' => 20, 'option' => 'edit_' . $post_type . '_per_page' ) ); + +$bulk_counts = array( + 'updated' => isset( $_REQUEST['updated'] ) ? absint( $_REQUEST['updated'] ) : 0, + 'locked' => isset( $_REQUEST['locked'] ) ? absint( $_REQUEST['locked'] ) : 0, + 'deleted' => isset( $_REQUEST['deleted'] ) ? absint( $_REQUEST['deleted'] ) : 0, + 'trashed' => isset( $_REQUEST['trashed'] ) ? absint( $_REQUEST['trashed'] ) : 0, + 'untrashed' => isset( $_REQUEST['untrashed'] ) ? absint( $_REQUEST['untrashed'] ) : 0, +); + +$bulk_messages = array(); +$bulk_messages['post'] = array( + 'updated' => _n( '%s post updated.', '%s posts updated.', $bulk_counts['updated'] ), + 'locked' => ( 1 == $bulk_counts['locked'] ) ? __( '1 post not updated, somebody is editing it.' ) : + _n( '%s post not updated, somebody is editing it.', '%s posts not updated, somebody is editing them.', $bulk_counts['locked'] ), + 'deleted' => _n( '%s post permanently deleted.', '%s posts permanently deleted.', $bulk_counts['deleted'] ), + 'trashed' => _n( '%s post moved to the Trash.', '%s posts moved to the Trash.', $bulk_counts['trashed'] ), + 'untrashed' => _n( '%s post restored from the Trash.', '%s posts restored from the Trash.', $bulk_counts['untrashed'] ), +); +$bulk_messages['page'] = array( + 'updated' => _n( '%s page updated.', '%s pages updated.', $bulk_counts['updated'] ), + 'locked' => ( 1 == $bulk_counts['locked'] ) ? __( '1 page not updated, somebody is editing it.' ) : + _n( '%s page not updated, somebody is editing it.', '%s pages not updated, somebody is editing them.', $bulk_counts['locked'] ), + 'deleted' => _n( '%s page permanently deleted.', '%s pages permanently deleted.', $bulk_counts['deleted'] ), + 'trashed' => _n( '%s page moved to the Trash.', '%s pages moved to the Trash.', $bulk_counts['trashed'] ), + 'untrashed' => _n( '%s page restored from the Trash.', '%s pages restored from the Trash.', $bulk_counts['untrashed'] ), +); + +/** + * Filter the bulk action updated messages. + * + * By default, custom post types use the messages for the 'post' post type. + * + * @since 3.7.0 + * + * @param array $bulk_messages Arrays of messages, each keyed by the corresponding post type. Messages are + * keyed with 'updated', 'locked', 'deleted', 'trashed', and 'untrashed'. + * @param array $bulk_counts Array of item counts for each message, used to build internationalized strings. + */ +$bulk_messages = apply_filters( 'bulk_post_updated_messages', $bulk_messages, $bulk_counts ); +$bulk_counts = array_filter( $bulk_counts ); + +require_once( ABSPATH . 'wp-admin/admin-header.php' ); +?> +
+

labels->name ); +if ( current_user_can( $post_type_object->cap->create_posts ) ) + echo ' ' . esc_html( $post_type_object->labels->add_new ) . ''; +if ( ! empty( $_REQUEST['s'] ) ) + printf( ' ' . __('Search results for “%s”') . '', get_search_query() ); +?>

+ + $count ) { + if ( isset( $bulk_messages[ $post_type ][ $message ] ) ) + $messages[] = sprintf( $bulk_messages[ $post_type ][ $message ], number_format_i18n( $count ) ); + elseif ( isset( $bulk_messages['post'][ $message ] ) ) + $messages[] = sprintf( $bulk_messages['post'][ $message ], number_format_i18n( $count ) ); + + if ( $message == 'trashed' && isset( $_REQUEST['ids'] ) ) { + $ids = preg_replace( '/[^0-9,]/', '', $_REQUEST['ids'] ); + $messages[] = '' . __('Undo') . ''; + } +} + +if ( $messages ) + echo '

' . join( ' ', $messages ) . '

'; +unset( $messages ); + +$_SERVER['REQUEST_URI'] = remove_query_arg( array( 'locked', 'skipped', 'updated', 'deleted', 'trashed', 'untrashed' ), $_SERVER['REQUEST_URI'] ); +?> + +views(); ?> + +
+ +search_box( $post_type_object->labels->search_items, 'post' ); ?> + + + + + + + +display(); ?> + +
+ +has_items() ) + $wp_list_table->inline_edit(); +?> + +
+
+
+ + + +add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => '

' . __('You can export a file of your site’s content in order to import it into another installation or platform. The export file will be an XML file format called WXR. Posts, pages, comments, custom fields, categories, and tags can be included. You can choose for the WXR file to include only certain posts or pages by setting the dropdown filters to limit the export by category, author, date range by month, or publishing status.') . '

' . + '

' . __('Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format.') . '

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

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

' . + '

' . __('Documentation on Export') . '

' . + '

' . __('Support Forums') . '

' +); + +// If the 'download' URL parameter is set, a WXR export file is baked and returned. +if ( isset( $_GET['download'] ) ) { + $args = array(); + + if ( ! isset( $_GET['content'] ) || 'all' == $_GET['content'] ) { + $args['content'] = 'all'; + } elseif ( 'posts' == $_GET['content'] ) { + $args['content'] = 'post'; + + if ( $_GET['cat'] ) + $args['category'] = (int) $_GET['cat']; + + if ( $_GET['post_author'] ) + $args['author'] = (int) $_GET['post_author']; + + if ( $_GET['post_start_date'] || $_GET['post_end_date'] ) { + $args['start_date'] = $_GET['post_start_date']; + $args['end_date'] = $_GET['post_end_date']; + } + + if ( $_GET['post_status'] ) + $args['status'] = $_GET['post_status']; + } elseif ( 'pages' == $_GET['content'] ) { + $args['content'] = 'page'; + + if ( $_GET['page_author'] ) + $args['author'] = (int) $_GET['page_author']; + + if ( $_GET['page_start_date'] || $_GET['page_end_date'] ) { + $args['start_date'] = $_GET['page_start_date']; + $args['end_date'] = $_GET['page_end_date']; + } + + if ( $_GET['page_status'] ) + $args['status'] = $_GET['page_status']; + } else { + $args['content'] = $_GET['content']; + } + + /** + * Filter the export args. + * + * @since 3.5.0 + * + * @param array $args The arguments to send to the exporter. + */ + $args = apply_filters( 'export_args', $args ); + + export_wp( $args ); + die(); +} + +require_once( ABSPATH . 'wp-admin/admin-header.php' ); + +/** + * Create the date options fields for exporting a given post type. + * + * @global wpdb $wpdb WordPress database abstraction object. + * @global WP_Locale $wp_locale Date and Time Locale object. + * + * @since 3.1.0 + * + * @param string $post_type The post type. Default 'post'. + */ +function export_date_options( $post_type = 'post' ) { + global $wpdb, $wp_locale; + + $months = $wpdb->get_results( $wpdb->prepare( " + SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month + FROM $wpdb->posts + WHERE post_type = %s AND post_status != 'auto-draft' + ORDER BY post_date DESC + ", $post_type ) ); + + $month_count = count( $months ); + if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) + return; + + foreach ( $months as $date ) { + if ( 0 == $date->year ) + continue; + + $month = zeroise( $date->month, 2 ); + echo ''; + } +} +?> + +
+

+ +

+

+

+ +

+
+ +

+

+ +

+
    +
  • + + __('All') ) ); ?> +
  • +
  • + +get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'post'" ); + wp_dropdown_users( array( 'include' => $authors, 'name' => 'post_author', 'multi' => true, 'show_option_all' => __('All') ) ); +?> +
  • +
  • + + + +
  • +
  • + + +
  • +
+ +

+
    +
  • + +get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'page'" ); + wp_dropdown_users( array( 'include' => $authors, 'name' => 'page_author', 'multi' => true, 'show_option_all' => __('All') ) ); +?> +
  • +
  • + + + +
  • +
  • + + +
  • +
+ + false, 'can_export' => true ), 'objects' ) as $post_type ) : ?> +

+ + + + + +
+
+ + diff --git a/wp-admin/freedoms.php b/wp-admin/freedoms.php new file mode 100644 index 0000000000..7788f65c5d --- /dev/null +++ b/wp-admin/freedoms.php @@ -0,0 +1,57 @@ + +
+ +

+ +
+ +
+ + + +

license, the GPL.' ), 'https://wordpress.org/about/license/' ); ?>

+ +
    +
  1. +
  2. +
  3. +
  4. +
+ +

check out our trademark guidelines first.' ), 'http://wordpressfoundation.org/trademark-policy/' ); ?>

+ +

plugins and themes there. If you get a plugin or theme from another source, make sure to ask them if it’s GPL first. If they don’t respect the WordPress license, we don’t recommend them.' ), $plugins_url, $themes_url, 'https://wordpress.org/about/license/' ); ?>

+ +

Free Software Foundation.' ); ?>

+ +
+ diff --git a/wp-admin/images/align-center-2x.png b/wp-admin/images/align-center-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0b6273445a830ebbb45b3715a3e078c062858deb GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^T0ktv#0(_W-BOBy6i@6G)=pOmiPwxqnfsMLB2}5Uv-TJ0u-6unai1( zy4H^x&L+EeX6KxH?!A*C;uk~|Ge)t%SH?F8I3>jJ#2kw|N(7GlxFHe(>j@BNh>v3u zc)(Pz>vxvX*~uN4Mt5uOla=e1jI&p{ULoJMR*5d9ejKOo3`k$y3qK4z|4ZPzgD4nm z8ApZ1ektFv7W#$x&t;=$KI*@Q%A$Yv-S_=441*x>JWuf%Q_*dLRU$p~it`_~vrcKP zQ(0>l^G)cltrqw&BKc!tQ4li0Ni~i5w{GeAX<_czLd{vneA3-qKipY? zg|@jtbfwz{O!#Qoz&j@z*BWo^dh*GFrRl+> zN&X3az;#`fUqw(sRrPvZ%cID~4D2cV;xopgD4Na>t^edt4gRd3XgC~_Dy&+qHk(bz z+qS(s1Nzr*{xv@ZW{tz6qeg`5#^U8)zopr0G znB+j+s;;hc>fC#aY7aEp8cZcdWi(>vJvOS!+J5%h>mgcv4{*+nk$qGCc>jiN%~ZK0 zm)cb>N`3x^x@0nW{o%WJf<+{V*kcd?CJ*TO%(B73R+OA1ai%NZ$~xtU#jlvmRayQl z?w-}jX<~d=D`kz5;6zabJ6IsjW;2<3I*EIkB<=5ekzFgxI#$zD$LSLtcdu@)n34$# zLzGiZl!cpN1a^+cBcdcOU8JnDa+)zQw|?5TZGLUFc0Ob0DWWeQKg&GVTq%l;F^~Xr zu~#|Dt8yxlAkajQog+kuli5qG0FP7;_KpT{ZaNIYvtD#xviDIcdh@*w09@oJ?#m2&A8LZ V(nc#<;|$O&22WQ%mvv4FO#t<{EOP(= literal 0 HcmV?d00001 diff --git a/wp-admin/images/align-none.png b/wp-admin/images/align-none.png new file mode 100644 index 0000000000000000000000000000000000000000..b72df647167196e48c02f9990c9443373639b01b GIT binary patch literal 417 zcmV;S0bc%zP)7?rZd=6fc?m_9K4Qk0WdRFb$0+zq)P?m$O*$hWiYc+O3pc@6l07rmXNz_$6q;&WBEDlHq$h2W5yX& zHRmiMoaO&ue%xJ9g>6hGKDc{I>Et{|=*vq58VCZrvIQG}7~^B}x5ZVLPaofKuMSQ- zLfVWKdGOCNv#;;3x?I0|hBay6_X4{V_tcZ$-7oc5%NJd~ES^JC(1t*~{Xx~i%pTWQ z)z#uvm+R$g+HXZL5Z2>&oB^2or>b)oR?C-NK7V-2p~A7Yy~9-E0Uq+te*QPVn+mie zG?d%0QEYJc5W?mEA_CT>VkY1sv;&l!Ds^!8ob#nPfNPhAC4r4sXBx07W!I6-tyxKACGf=g>wDkHa1qQA~8xsAT(wna| nFj&owdR4g5Igw#%FVOULmxHx0skwgv8pPn~>gTe~DWM4fggY*F literal 0 HcmV?d00001 diff --git a/wp-admin/images/align-right.png b/wp-admin/images/align-right.png new file mode 100644 index 0000000000000000000000000000000000000000..86a1b2e8764dea8899e847ebdcbd6cdf7570a909 GIT binary patch literal 509 zcmVC-K#*?T{5;D(ppyi8V`KD;~^W=&B>g zRRJoL9(%~;a;a1*lgVVWS;S~f_S^OThGnc+2^9~i?k(P!;d6bu7!6kvTVVKU!Epci zJ|WP%dnp(jkWf1amv+`IW4Rm)UGHlReYR|Dl6-LOgb}C)GYf$VNI-xao(R!E&`>xp z?j&3Wy!5?(-@=SOc_PhbGdPz&U@feR!8fp+Q-u>$9FGUPlT0Sl=``Df`fj(&y%bI+ zs0b{`=;UF6nA4FLI5T4aPVndRc}QT70RJIq=k7(T)uQq6`K1Tn4%Yrl#bo$D`@Vvh zn~wIvUF0#qns+^L4fy!7-|zpZ_!oSGSq{=KU=>uh9B;4*00000NkvXXu0mjfV=U$^ literal 0 HcmV?d00001 diff --git a/wp-admin/images/arrows-2x.png b/wp-admin/images/arrows-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0b0c53d1a6b1988f8a8a079cf58c3fdb4fc3596f GIT binary patch literal 863 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

hc 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 literal 0 HcmV?d00001 diff --git a/wp-admin/images/bubble_bg-2x.gif b/wp-admin/images/bubble_bg-2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..77ac312180c227d318e19a4b3090bcc40094cb84 GIT binary patch literal 507 zcmVNk%w1VI%;^0P_F<`QqF7`1mJCV!yw?(b3T*gRNbSr|-S2tk2-y<>+v( z$>oxE^US~4S}>@!!2kdMA^!_lO;8|2VRT_wO;AHWcyM83Yh`pGVlqK6K_Vb{ZE#IZ zI!SJGbYX5|Wl2OmB6w|ZE@^3GIyOT_F)~FrIWjOdMlmr(GG%ULJtA@OwY&r+fsB}PxO{>nV7G~;}7F;iD));TkXwYqKGr-sa zo0tsfUfV9_>YkPD>jyqv^YIP!KqUA)`{V)&97wPr!Bsb0ts0;Zj=vBK=QyOb#(|GD z4`0}@2&6{F7#vj%iX2I@q{)*gJNz;t>=%NTdJKH@;Btl^naJ|I>|q3_k0LvN6z~Zo xXv(8VlPX=xZCauiP6q%=F^#~?4$r2#Kx8$W6s?M)bZsg%2$ZWXz;cKH06P>E>PG+o literal 0 HcmV?d00001 diff --git a/wp-admin/images/bubble_bg.gif b/wp-admin/images/bubble_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f3bfdcdc2be6c49fb1a292fd0e393a583cb007f2 GIT binary patch literal 398 zcmZ?wbhEHb6kiAVZMb+lDua-}^{^G;_{rhjF*cx|lI&f``~Uxc28w~= zPZm}Y22BPXkVzmvIk2rhFr~mlN2=drNrL8vDU&X&xWci5Noo1YveT}7dUp%1CwO$6 z4?4(r){n{RZAGDjyn@Xqv&#NcznA-XD`a}JL@CvGMumlP2ZixP$#+euFD+3HDiw`V zoI2mFI)x`_QRGtL1*=vkHD| rpEX_WVyVCtX6fJ(#%K=K3lAO^En-tyx=7|ZTWv7gl4vPUM+R#EM$V)! literal 0 HcmV?d00001 diff --git a/wp-admin/images/comment-grey-bubble-2x.png b/wp-admin/images/comment-grey-bubble-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0eec4a6df0c365e51d6de1a9c218d5c6621f6d83 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaN3?zjj6;6Yw0G|-o|NsB**s-IyxVWgOsIahb z=gytxagVXBZ3qj*GX`KKt?1;%yNd7fqhBwvRu7tMO!(wW()Ro~u@)+M|ANpZPfg z!FH$j-gMTOp=wwi`PA}+T=6b8PNQn)wOjj-nFOun6ck#~Vf5-uMHYXuwEz5HZt9bh zE3Ujfu*mjBoPJjP*Zk*^`Rd_&zxvk}Ts^)xu8z^KOy}xf<%w&7E@kj^^>bP0l+XkK DT*hQ1 literal 0 HcmV?d00001 diff --git a/wp-admin/images/comment-grey-bubble.png b/wp-admin/images/comment-grey-bubble.png new file mode 100644 index 0000000000000000000000000000000000000000..558ee8f32dce370bca7686ce2604099cc3eb7ccf GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=-3?y@QpIZW?*aCb)T;1H literal 0 HcmV?d00001 diff --git a/wp-admin/images/date-button-2x.gif b/wp-admin/images/date-button-2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..f658b5154ad3f8ae11207f0fbda7494e06986a1e GIT binary patch literal 996 zcmcK1c~6=L9Ki7(mmI=Gz)2U@0#$2TmpQX+b*3%dbal~gNVW4o1g|P8UX5|dnou$9 zY1cAnHdd{6Pv+V9f*@X~c;m^^7qRaf`26v`^u_0ABV|0` z!Zv`{>uqRgC@LzNn3zaSO+7j~8X6i}SXekXI4CbKKRi6t>2#%~rF(mOX0v&Je}7|R zL!nU2&CTuZ?(XdDtgf!k&d#o_t)-=57Vq`T2SHKjZD!#uPo9$aJRV#|E20gb`xnGYfqF3$&|pYTXyDEVbea9nUA zeFO&4E*t@XE_-C{GS{V7juryy!{@^3M5UX1t%DeN-}&N{6cQhSl3RumeD@alTwM#+ zof+p>mq-M5selB5i1#sQTRtQFT~}HDY2T|IECa3___O2NjJ9qy^XeS|7DK*%mmQ@R z>$E-)0eQm8$PMRhG6!)EVxQAV@0~>?%gSf@!-klKAeJLG$d8>lfXITb#9IFRX8$|` z@9%d;Cqny7oEVC}zvf!W@t2ez6p>7yyz1fr^BqGyeiE3mgzd4*%^Ug=HlL z^5VfnU|NsANY;0RwTYi3ifPjFIkdSk8bGW#;aBy(-_4R*$ ze~gTbZEbC!prF^+*Yfi6;Nal&^z?aodF}1(V`F1{e0-FYlxb;c=;-KPUS4)~cKG=C zC@BG_xJbP+uP62&-V8Ahlht?U|`zX+Un}+*4Ea` z%ggTW?#|B6@$vE4*x1I##?8&m=jZ3#+}w3_b;82J-rnBX+1ZYcjsO4v0000000000 z00000A^8LW0027xEC2ui01yBW06+$)p%4Ku1pvDon19(JE2@igN4*(iM7XS_uP&6@&1sDJqLLLB@ zn3kWA3`YrGbIo>4kO|aIRGg_83OL_@a`EqK>#~w`m%!n literal 0 HcmV?d00001 diff --git a/wp-admin/images/generic.png b/wp-admin/images/generic.png new file mode 100644 index 0000000000000000000000000000000000000000..00575a078f994dea08c3c3cd0a46d1c22366fca0 GIT binary patch literal 719 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 n0000000000000000RO-{)1@R(K735+00000NkvXXu0mjfxlSSx literal 0 HcmV?d00001 diff --git a/wp-admin/images/icons32-vs-2x.png b/wp-admin/images/icons32-vs-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..54e2fb2f5fbb483b6d396fae843568c41f110dee GIT binary patch literal 21396 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�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 P28p!Q^`BQivy1p2jwOXc literal 0 HcmV?d00001 diff --git a/wp-admin/images/icons32-vs.png b/wp-admin/images/icons32-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..e46d6bebb78eb85988ad28bd4c9e3f6e98bc6118 GIT binary patch literal 8007 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 C-$~~H literal 0 HcmV?d00001 diff --git a/wp-admin/images/icons32.png b/wp-admin/images/icons32.png new file mode 100644 index 0000000000000000000000000000000000000000..e491b1a8d28b3b3a0b8594166455b931281a0414 GIT binary patch literal 8023 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 BHO~M5 literal 0 HcmV?d00001 diff --git a/wp-admin/images/imgedit-icons-2x.png b/wp-admin/images/imgedit-icons-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..98dd4124047bff2b12a5d491281e09c009b2f3b3 GIT binary patch literal 7664 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 G2=+hKXu@Lv literal 0 HcmV?d00001 diff --git a/wp-admin/images/imgedit-icons.png b/wp-admin/images/imgedit-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..0d544ee9b83b478c4fe73f6a9c7b02db3fadfd3e GIT binary patch literal 4055 zcmXw6cQ_kd7Y||-)l@09%WKqVQKhPiwD#V6s|cwTqc#y+ZB-Ppx1wmos2N*h@7jv0 zy^DN#zvuhzALst=y}xtsIp=xKdCrZ}(onoj$wUbN0B$QQz0m;xh=2qvOF=@A0}dCb z008lsmYSZt8q`hS8jAn_u(PuxKq+Y%Jwqb`uzU;Ee``kAw6e1%EOj0H{!jeh41>W4 z==0;#BM1aSAfwS}^+YUz^b)G! zFt=eVJvfxz6~-;a!l2o4S=7(*ayB=r!y_Ve>wYJn6L6_t6&hKGmmo?I?0ED%iU zO4A|4aB=4Zx3YhDczAhv`NbFP41=Bhy~a<*ZA|2?j)Z4tXA|s!*jiuT+;nwyHHI0( z;c$YFgs7e@f+<$dzVKK&;AlTO7XR6NrLSh zT{KK}wk-@0;%sSUIXpZ(J3EVVQS$Nj;&Fccv#+7Qw|}JA&&<^2*TH#ritU#yyk5F% zX=$mEkqH8U2nYypfy`!RW>!~M`&K7Rj8FEZz3poMZefn_@haIm`ZM-xF1@z`4*LPO zH@C{{4MPOycx!(v!0)aNCWHmJWOw4XvG|#^81x)|sjTnkZf6x9>1d$jW)#toff?Vj zHv85bt5%Ot92*;>a(P;ULpxR=_xAR{A!gdiJ<-w8wY9Yofu7#(=&&&4d{cU%r&?c0 z++d!Oopt75wrh2eRaTS_BsZ|AZ`C}{=S__D^4_oLHk5uO)W)k*G2MD%S=>_;3KN)a;Qt%r_=E`a9YEuwqG#1!OA z+)w!#D6Ql*f&Yw>{LKn%_Z~5+!lhL-Buj^3MyzI>N?vPiOdMAQ?##cMh;D6($A`P4 z@}|y)kJ^4L^ta=B9d-^@_%Y>fW-lY<_Rf71=Vkqr9$%6@U%|C3}kMP1zA;SZ07b3r;_dd&nt)%E` zNDH{L$`!}E2DCnCURsfKFDM?M`XLeeurr*7Rea5-XlYy2?mWh{q4~LgB-KG|a3aJT zptUsL7-A|^yX))E@F65JyBeZ7uwbfR8H8Uj@%-&PkS+a#4oMYp_UEgZ9Z)VdefemS zV*WBw*@)s}Q;5spot!=nM1t4$V4tlbdY-FCBU>`{v;c&f(B+kj!$Xpbs=~>Lm*;7y zfW{U)&eTHw2ZK|kDU~(1EP2eD>xRg{I}NG~a^z^$fPjq^S0*Cl&We;iFItwjY?lr) zC)+Dbr68Dgp6>_HERX#_hVah&JTZs)?E=>JkMYT3J!jEoiAQ{RJX}pZqyIbY~=rm_xbocRuz5e{Gr_vpzrEC=DD8Bsf} zl~+B5)~f|IqrcphRT@xIe+E`kA5s#)R%LZVcImL)sVOOK6wkZ5>3>S0R1!06jedAN+%GZIDyn`=6Z*g{Oo1ZI?EzHA z`gcT`Eic+lb~7_LyOB3e|8|cKiqtc0cecJ9)pFhRI-*r-%`__c0;QZ5a3^=+&mU5b zhB~Q81%4rxtGy=@xX((|A%}-6-A{CT<*K_@J>RjW!(_f zpbB8~C~ntp(UOch#a9dl+nUi#hD*lgsGo+6JP4Jjv2|H@nV7cx<`QGHx3D{4i$7 z0}y&_gB;qvPr??<9V*s zBu}drH6tSDY~jpy&xXycQ75905?6o`Fl39(Tq3#*wXqK^mBrZm*D(m)y^(a?-;5KV z*U5c(s#B|+){yq~cI~dj&vu1nu!E#ixNAc<6EWsZSsQJ7rvK@c52Iwz4b1(q5vTt9 zoOw{{)^LF~2UDkX(eBN)o0wXqKR(brRw|TC+kqqcMR4uKT@y~0>uYbijz;+N#)F>e z7-b&w`5UegTNVXY%_cwbsr@qE_3V~RFBVflRv9=I==^lf#Tv*0h%kl3tvXA|ialYn zQv$8#?@h^@8sf%>JkRobm`8&pqbmXfk9)NQQJ}|WXe;)8V;DF}`PQ5amv3xm$?D9r zK4k?8<-TV#JvDFP-K7~B8BIb$Lc+u}-g2vY^7uJdQ0Lxkj=8ge_x#3{&rrNbLe1Q- z@O-I24#uBpr91&M>_BpDKHw2~3M(*r`i4YhXH#{=)@zBgc6$kH-WX;Oc>$eib(y&m*_H zoXb3D0wGaYY8x9`F8F=8>l5OdSJ=&{{1;L#Wf!&It1R)VSi{8~e@YMsKgn0(>4uzz z50i!#KEBMA2}6{Ck!&BbVIl9Qq{SD+d?@jG_;A~!;z26pSgIF~!Y|qjv=NikspXD} zCI!W(HYb~}QR4d3J3MSmuZ_NLodmp{cwwxYtY&CFSv)193!Dgt@6&SLSABtS6 zH-J-jfQ5gSJFm+RM%vUwnn7FQf7SK1-}7mXYELfqxqSHu$S3$uFj9aOL@S;^YvNDe z5F3R{WvdUTS0L?NKRY-pCv5-$x35to^M&Cxld+uV2?P1%1t!n#C{?DGZTd`GL>UX) zGbq;oOrZ;Q9_D>qWmw8ePP2X@A>H*iO!j=fGj}Aunt|DJr%`$_uv7(Q<^A`-w-Y5 z#D_ltU|*Uii17hb`=^Jnyy`G_eq#!~3-A?WKR{2{KR}zJwN+Q|mH*CcUrtdFq!W8b z;vFJUJ@eH(dYScFtaTyWPp@Tkv!`g>aFC;8NjyLARrh8u|L^=>E!-O2t*{phA#8C5 z<=hBiO&YOy7NBZHmR?oTTiqfQs7TG2htTH#j=1WZ80Z0hZ?fi!h0X6f?|)jKNIrUJ z4h^atT~iSl8#_r)L|1v(6}@6TW+q8B5sg}geBcog(SH1+pOy;=a>!pRfFrmk*@)$z z1*G5YsNF(^RI=B#Q=T%StQc=8{D8?#xLw5ckOhJR$oUv<6bus#K%U(;G2*|vtcBq%y-4Dns!a@Ff+>SAFV(86g_(H z0~AUf8!KX=o-*4wDwr)^TtX25CyM#}K6{}FAb+?5Z`-`H>Cusw$08Ij?|x>S92EQk zGiuDT@)>kj?jcn>OH3-4p)V}|k;IdbMDC&iY>iiyM~TrLZ0{~_FXnR8h)X9jqRTQg%7*4mgmo9SY zY6e2L>t}4KQw;{}-V*Qm5Up@#1=GvTrcMU8=U3HT0f>-1aj6-R(cCb)VOzSC<~x%@ zSu}MX3*=tGv7%I)4-B-X?nKW(= z)noeN%(g(v7SdF*>CT+dg^Z z=XXp@*MS&uNxL|>BlG@_2Wl9wby5G!QcxE%OL8%EXuM?D!VOMC&r51b1 ziW$8jj$*X!jpioCw>OSva3Z?+HjbmzwpT%z0-Ai_<63#A5A0e_41H!maq2%ZC{fmc zN51b>n?*pfehF1|JP`o!{Ro%4yfOQ>NXo6-N4<%ye5 zTY%Y6&%$RJWb-tQCo8%k-0^E1q-COm&)OGRp((6>vT)E&ztjVveIMt=E4_@)4q001Zm0{{R3PVxb&0004EP)t-s00000 z0000008LFzfPjDi00000000003=9km3=9AO00jjF1qB5F0000008LFzfPjF1e}7C& zOaK4?00018U0q&YUS3{aGBPqVGcz(WGEGfQfPjE~eSJ$yOL}^GdwY9GNJvRZNli^n zZ*OmQc6NY(fSQ_`ot>SZpP!(hprWFpq@<*!rKPB-sI084uCA`HudlGMu(7eRva+(X zv$M3cw70jnxVX5wy1Ki&yT8A`!NI}9!^6hL#>dCU$jHda$;ryf%FD~k%*@Qq&CSlv z&d<-!(9qD*($dt_)YaA1*4Eb7*VowC*xA|H+S=ON+uPjS+}+*X-rnBd-{0Wi;Njun z;^N}tgww2>+9_7?CtIC?(XjI@9*&N@bU5S^78WY z^Yird^!4@i_V)Jo_xJet`1$$y`uh6&`}_R-{Qdp?{{H^||No3X<>~+c03&o#PE!B_ z1O^5Y8bCrrTwGpgbA*J5iI%3hyTH%T*W~2y@$&Qc_?KW?4FCWH9Z5t%R9M5!SWS-; zM-;67uy<{b*SkbvZ6K^f(4wG7HUV*o2#8apobqqEBvOcyLlgyZVWmic9M&I*#2?rm zd+eF%9Co|iy{zAKOC0hJrJ3o{do?|;y4#jAimIR^p3PGD@ z0^;<=pCkD48lQgsNdfQQU)~M9c`|x1d0jxf`k*(0H}CPAUkiAjJ$^Ry=E+L+FJ3_W zr&R%bd8NiFE8v}WO8z_vFuq&aUOQhb^Rug>d^)(ORZCk(*YP|%=Xqt50ILp92uAD5 zTnjAKh{E%=78otw5&7!TR0}NCxBD)huC+j3eoMW=+vY+ij9w7Ddz14ER;Kh})?oUD z_f84kjiC{kT^&%ZpK&d)OcgHcPsY;PjNsK$Bd|v0tBs7n)!|K|2b07IB)gF59DG%8 z$*r_>w#i3!A?HRQ=gcaduM+IY)BrbyJq1e6m{oc`TcKQy4KOZs`_lrY7ASW6J$vL@ z3;muA%d_XAAfeC~m5GyYuYpO=hB$NvOKuAeZerlTDr^Qt#qIrR6Q>R&AulWep$_}@ z$f3ev-v*%*(gO7ivP>@|XAxzHrZyOp&;r@U#YeZT(rTUJ==0QqP?Id1w=9#Sag63s zVnL`$1QXmYEzX~xfl@gO>_N$e#VnWi0aP?(YncZ3;Oibiymo6H=;B&;Lhu^b=b}XTFw2cV`jyQmPLFrUoyjcJYF2QL(I#9&&yIhMDPwCW+8_U2>{eOjb0mJA>^1E9!mrsw}4ic`c;QefviC( zY%mc#gPjgOVsJd7Dk~Lqe3SU-@j+n)W`W+ALIk=dxzWbUQwKr?J|EimSH8jXp#veN zyTl~DHhM0E1%qqi5yQv@ufJ049oscY3utv62#tM5;XbfGav&rwH%X`CfQj$?l0Lcg z!IKY%zV{UPe-62dtA(U^1^DvRq*2J5D1V-u|Nd1}z?=OM1HQcYr$+|`ywT4Kf1aHF zJ=iHACd(<{&Er25oow?YfG3l2x#+J`wORqbyoIV1@)k>fo>WO**b8d_zPvn63wf&m Z-hU36-n|G37`gxe002ovPDHLkV1ka^55oWe literal 0 HcmV?d00001 diff --git a/wp-admin/images/list.png b/wp-admin/images/list.png new file mode 100644 index 0000000000000000000000000000000000000000..85d1295e8131f8f0f3a4c9bc53fa2b3f3d770abc GIT binary patch literal 1003 zcmVjg5`Awzjvox2~?PudlC^l$5Zrur@X}j*gBqGc!Oy zKte)7U|?WjVPRxsWMyS#Yinz4Y;0|9ZEkLEadB~Sa&mQbb#``kczAeud3k(%e0_a= zetv#{fPjRAgocKOhlhuVh=_}ei;azqj*gCykdTp)k&=>kjqokyyrKP2(r>Ci@sj8}~tE;Q5tgNlAt*)-FudlDMv9YqUva_?ZxVX5vxw*Q! zy1To(yu7@>zrVo1z{0}9!^6YG#KgtL#m2_Q%F4>i%gfHr&d<-!(9qD)(b3b>)6~?| z)z#J3*4Ee8*Vx$D+1c6J+S=RO+uhyW-rnBd-{0Wi;Njun;^N}tFMg~>g((4?Ck9A?d|UF?(p#N^Yioc^z`=j_V@Sq`T6<#`}_U<{r~^}ug4=r0000H zbW%=J06#xXPE%FM$?56q>+J09?PoCh2><{BAxT6*R5;6Zl+SAuK@`W|yqO(}iYM_B z5Va+^iC#pcwMSdf98@ZJ_D}O45X6HB^&lwPgOoxkTl+%~dQuPZU`=*5JImn!^eQy*_PuEM7=^M{{*?r1wU|C3K_PFi} zI74;Sxq!>#a!u0#NWq1Y3~zH?=~%^Ow0DMId}Xff#bY0CqXI)k;!n2Gt$d_dJIxT6 z+I`o@DHWPK&^W>>1)0@>VeKn~cqxo4tTB2RY``o@aNo@1|Yeinxp zNN1{FbKN~k5*TLQuoqXDG<+DpHVK_;x$t9hm%PZEp$LpymM>?zM=vNI5W_^vqBl1b z3VP~RV#*us?FI$8gPpHez-R&!SEpGtZ;u{pJS%JhQDw}QmlOcE;t60Wa{K# zxvVDDWMYMs87jSH;LqW5Y3iyXrW9s+YYgN1hB4!M%4DXqT>~TAH)UB>wH2t8*4f?| Z{sDKP&y0=cFCPE^002ovPDHLkV1i3i7!m*g literal 0 HcmV?d00001 diff --git a/wp-admin/images/loading.gif b/wp-admin/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e9dea9b456ec5bc8c3f9298a99739dadccfeb66 GIT binary patch literal 2254 zcmb`|{ZkWn9>DQ$vd_EU-G(%UkfJ6Vf+>TLV6fpq33)&a(uPM7u*HxH2#7qEodBE>&?`L=J$}}eLmjDU)0f2;rgx1#9;o;%)=g&`0PEJox&(6*+EiGNYe*M<1TX*i< zxqtuug9i^DJ$m$b_1V6Cds9%iqkc#E~<|{0-&qS?{L7vj6T5pApY_%J_{R_41C|FSUgT zW-LLFLyAHiC+bPZwj5akSxB*vj-_<&HZ|vbhCucyT~acp%@VeT15e5pj+e#-97z&nAs0*2 z6)@uOOot8Rz1#fQocTKmez>04x0jOaVHr(!n3Szyw;~B3-JsL61dhLwNEh(C)SNAq zpoVCirK)QHYv7szfz<0;`E(6ipjyuv2syLJC!LD}hR&eUN2&E;V%gL&?%_>Q_xqb) z0}{u?kOfYetTvf9-7IG>SGWrun)NgLkY4JmKq>L)E?qO*SJczMX(X7md zaU_n{wrxMHhJE@hwGkm%BK54GJP-&e8wF*ZzL_7m7tb2-1uaP-fvZ2CIgXp017ZVt<1%n8Yn>i!EVl7|MUUvN zvGGeB{nW}IlyGg6yWo$e|l>XKKP zkcxaaskTU9wt|w=v28KhqQZ5NZ$E{caTxB&x^BwJi&`}EpXO>Hn_5(QXJiJl-xFmG&h7-Yu|W_ap0Fja6)tNR$`SgcXaxas6lh>%6hnzR#@MNs>M z>*Ll#t8nhL3t*M}i~dm4W`$j$5U>TM;M4Nh&KT{{^{vBCS(o9U!MGYUjy6{WYC=}e z+})^cUEiv(Dhc!;B9DB|$)JVJrg6o-;5F4(S)Y$#qEEguhCg51pIh#t1S%cNbO=$m z9*lk6MT);`@<_gs@NhA>Vp2k>U3Jc(R5FO|vZp*w=35ef4P-J8(xap`W&)@K zsNsWZG0+!VMGV@R>+C-v%*?YkuQS>dG6`7QPo(xXOqd~t_x-u^2 zeE%*N&G!AvOx0UhBswg_EwwXzJ&tlMUG_Zq`jB9?6K6<-Zi7f=x$UhSczl>ZY5^ZM zeaaWYn&~VDebmhDfrSu$E>K_f@$SLbi`$1Yf6q3pTlI-C7_N@_spB0;Q}m4%jzv9oT0=IY0f9-462&MA zkr9@$QF|iU?f`)t1c)zY)Dg-`SQxS$&~KPIBoc$dB7mVk6|&cx&$TooeU3n87GUc$ HKgDlmm+ghLI1)k}bhc1c_^uB6J z0hP7Z9B06gl7}eHE_H{pRcUq{*Qq=tFe#MQci|3PkMgjDS;flAQl)_it{Zt6<0DV= zg*x@cQZj~XPabS;9HIo$YLd^=WavH*4)gM{$a{eaQ+=Qr^=LrJ(ETPD^4RiG!#2(n zX+~)$LX12Z?ikb;8d;%;q0HfoA^pTK8LlYt#1V1o^>?4M`P)VWqP@`o0000rIT>_nGyL#U7biEZvI|%Tu{Yuh0$6T>SyOO&;c5wX+h-1=j zhh&lFwFY3T!m)E!*6!+a$+gFUM4tiRBxoneJ)+lL0@`8apTiTQ=ga7GC-|=dLeyqY z6<1^cv$2v)ss&}0wPb$;b12}BjZA}_*NVnRjaNvyLZGYHsEoJ3fL2Cf3$L?XqE|LW zcG2%9cuf}ptQ;))&dTsOuurg}w=sP?LSx1g>;So@kb;f{3QBgaSpnG&7+;wbBZOtZ zRDo9s%Cya79GgBWQI_eG**uyMx>|%x%$u3t7Qdr$%@iq>qx_S=y~5ll<^1-qHCcR@ zqLv6fzxm&3+gDFn?O4&Z*o%zK7|KbRx1=yf4Gd9NgBbNSqS&xRq&P;_ij?PLhY=`P zB}+-VM$Ykd!xmkO+Oqnj=6D2zsJmJw1hAG{QE(=Y2iHz`L+YBcc^n0Rx~)kiCh|&! zNF$08s~A~y_QjUVswY4MdQ~NQl7y`B?E0(5Ns$ue304>-q_G=0g{%l5pO8AsCmxVr z0p2p<%Yvin0qq8vD!e5_fhR1vA|ndFFXv&yml0=KR%pw#vt;fnEZ>ki^PUV@>i@$; zpM3~H0XVBj1{j6}BZ;Vb{&J4Y<}oUX?c!^;$OU)F1ktdJB_#`fR2ZBfgeeL8_==Lj{dwdrH79h;x ze$^v7z09MMm??oRQB_qEI1{>7L6oZ_x#>GqJ-JYhdNMRI#5$3*)j8$O z;|NZUm784b{rjEp5Gu3^L9>wOqV>B%^dnIjG56lp;^5?Qh$q96C$D)SCsCv@UkEkA zQl6FUoXa0|cS9yilNFgUiT z6JZumPnOdx*%T=#TE?!#%#@ay61M9Y#S3x+!ZFL62(Gf22i1~8KcDI*5{;1n!kWG# z<(;S$&}BCbhr<&cz-7AA|p?~)&uQ%(r%V*Q@g(grtkGnHR z??@2V33gWA5qS!uXmnJP1p&nRD3Es7ZDlZb9^Wo_;^UOk8B%Z&DOUBA?0sqb`)Rum z^!aWWhLorZQ!Nw3F?%NvcM!ll7qETq>ur(7IN-l=Y(J(LIPTh9);g!TlisUh)2pHg>&f_(IZ}R3)(~6Fb%fQCO(+Di0_6<{7wM z+Ye7c!IC@2R)Oz)(-4aKsj^K=;_N~I|4yxrm!v7bQ?o{@K9u=9{ zYh#w^)fhgA9FtKBFER%kQrl!+c}hj7-#q3O*lc{d{o-9 z^Y6mmXdwCSeoWsHkrL$(X2C(0p&-^^<){L8=Qt{ST`ADX`K)2=xIo{r+NZqY$8Io& jJ3hkz{D;5KOMU(U$~kl8WzRKR00000NkvXXu0mjfeC@PD literal 0 HcmV?d00001 diff --git a/wp-admin/images/media-button-2x.png b/wp-admin/images/media-button-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b8f8ed4df8c50d7e5085d3b7532958c1602a62a3 GIT binary patch literal 850 zcmV-Y1FigtP)UcXxMqczAnzdwhI+eSLj^fPjL6f`^BPh=_=ZiHVDgi;Rqnjg5_ylara5nV+AZ zp`oFpqob>U3S z$H&OX$jQmc%F4>j%*@Tr&Cbrw&(F`$(9qG*(bCe=)6>(`)YR40)z;S5*VotB*x1_I z+S}XP+}zyV-QC~c-{9cj;o;%p;^O1ugww2>+9_7?CtIC z?(XjI@9*&N@bU5S^78WZ^z`-h_4fAm_xJbs`1twx`TF|$`}_O+{QUj>{r>*`|Ns9e zjNhFA000qmQchC<8z(A1NT{o>2q322n7Ds5&&T7Hvq_E z0sM5a6Sl4M6AW6;tJ7#UTgVeGz^~h5=ecTE4ASt_#2$cZPnLOm)2ex@BQHSrhJJm~ zvTa*gn3`Hp=&1TYMb|Ei`KD>6qL>gIO_`>J+^@RMLHV+Do>Lmy?yR0kr!#tNU%NxF za8-V2Kn||+S>@=!DaLRvK0hDN;klxQph|lO%658dbK^xGBgcv5<-`#glT`#I+KUMC zdpkROXJnKCdP%DJ!L({z&k3|mLDS}g6ujA8U2HYuto_L9t=wZN}0tiJ`v)R>1h)uvI2#K#5?&}K&-N}B> cVBqiG0De`Lwb`RaBme*a07*qoM6N<$f{hp1UjP6A literal 0 HcmV?d00001 diff --git a/wp-admin/images/media-button-image.gif b/wp-admin/images/media-button-image.gif new file mode 100644 index 0000000000000000000000000000000000000000..56a974731dcc63d22873564380beda339ac766c1 GIT binary patch literal 200 zcmZ?wbh9u|({UH^75LRnn#Zw-Mo3Tu(0s!*RLNxe*E#{$G30aK7amv z{`~n>t5)sXx9`}oW81cE+puB7zkmPUy?giP&!6n<>^E=TG&D3Y;08J%DUe+btiB6W z`&1--GFB~WT&fYEb9}wV-HN(yj!S^0ZTwev{w>APvV gObiDc^(G%}a!NUyx1PK0RKtc9w>g`;6j>Oo0S|Or$p8QV literal 0 HcmV?d00001 diff --git a/wp-admin/images/media-button-music.gif b/wp-admin/images/media-button-music.gif new file mode 100644 index 0000000000000000000000000000000000000000..42e65b248a540ea7efa2490dada00c0d5f0b6767 GIT binary patch literal 206 zcmV;<05ShZNk%w1VGIBa0Q3L=m6et1>gt!5m#?p{v9YoH`}_3t^w-zdd3kxXw6ueR zgUZUvfq{Xir>C>Cv(nPiSy@@XzrU)gs)>n-`T6V!YA^8LW0018VEC2ui01N;O06+yx;3s|sc6f=@Z2`?j{W z@$vEO?Cj^~=l}ozA^8LW0018VEC2ui01W^Q06+zG;3tY2F^+;mXhY#@Ug9KQz-UDU zR7DnHpF;ycFkp@b0-#g)P&NUG1>k^eHWbmru;_Tb8G+>_X>1}JOyqPDL)ag|1@QoI y0FTRs_VGv-9)W=a4g((w7Yhd*jEn;l7YZL7ViOsc8V&|cBM1l#0G<~kApkooM|BAR literal 0 HcmV?d00001 diff --git a/wp-admin/images/media-button-video.gif b/wp-admin/images/media-button-video.gif new file mode 100644 index 0000000000000000000000000000000000000000..405083b0b36e3c399aaa2865b0cb4023f4843310 GIT binary patch literal 133 zcmV;00DAvNNk%v~VGRHb0P_F+9=xcX!p*)qH$>;NalT&(D5- zers!Mr>CcYfPnx1{{R30EC2ui01W^P06+vfu*pehaSmXeacNkHF$^Y&A!#;b>yphP n&-4tUj_RDa&ZEAAVn{414gyR-$#e(?1cV_$r5X@~K?DFhH;_3a literal 0 HcmV?d00001 diff --git a/wp-admin/images/media-button.png b/wp-admin/images/media-button.png new file mode 100644 index 0000000000000000000000000000000000000000..752ee452321a701ffd061a1a1c4c527a5f0f7667 GIT binary patch literal 323 zcmV-J0lfZ+P)kRD1&!vGO@CAXsUWLQ5?~Y?LdkEK*PQAL5XO^|*zP ze;nr99nc~oCI|vL!1pUyzVBE6B;+ZW)#O9k_noS$LYk0^jql$s&IF1il z(B!V`AagcNLrId5=XprEhy}}fSG-|$k#QiO9OK&f&tE8B0kfKn75-MaD6WbR#V0_G zp5r*Ot|k+iQNqo2-EV+FL+@Nx1CMbW37|Ihp2^EF3e*kJz?-zeu VdC9Lf9jyQW002ovPDHLkV1n4Ni%tLl literal 0 HcmV?d00001 diff --git a/wp-admin/images/menu-2x.png b/wp-admin/images/menu-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7131763a5932500d0d8ff100554cdaca45809c42 GIT binary patch literal 12672 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 literal 0 HcmV?d00001 diff --git a/wp-admin/images/menu-vs-2x.png b/wp-admin/images/menu-vs-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..99b382369ff8f15046cdb9c025f8c8f75c6a60c5 GIT binary patch literal 12453 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 literal 0 HcmV?d00001 diff --git a/wp-admin/images/menu-vs.png b/wp-admin/images/menu-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..fe281087de4f54d09286042dc6476d58ecb1ea61 GIT binary patch literal 5086 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 AHUIzs literal 0 HcmV?d00001 diff --git a/wp-admin/images/menu.png b/wp-admin/images/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d15af82be524a392fa4a0104693f87315d859d GIT binary patch literal 5039 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 Ga{dF?bQEj= literal 0 HcmV?d00001 diff --git a/wp-admin/images/post-formats-vs.png b/wp-admin/images/post-formats-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..d77f91c06464aa2c880cd4f3a25e89385b6d1802 GIT binary patch literal 2450 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 literal 0 HcmV?d00001 diff --git a/wp-admin/images/post-formats32-vs.png b/wp-admin/images/post-formats32-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..f5653407321f2b8a3aca0d260e1aa7470d56a54f GIT binary patch literal 5111 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 literal 0 HcmV?d00001 diff --git a/wp-admin/images/resize-2x.gif b/wp-admin/images/resize-2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..315ea062f659b33db362ba1bbb157013806d978e GIT binary patch literal 234 zcmVw6wI@+1da9{{R30A^!_lO;8|2 zVRT_wO;AHWcyM83Yh`pGVlqK6K_Vb{ZE#IZI!SJGbYX5|Wl2OmB6w|ZE@^3GIxsLX zLOC@zLozTnFflPjGG%ULJtA@KKQu*ag>%7N6B`GaEjae;4umypaF^I|Zv;zW@LL literal 0 HcmV?d00001 diff --git a/wp-admin/images/resize-rtl-2x.gif b/wp-admin/images/resize-rtl-2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..51edc79a820f50c4fe836c3be22a53e8ea366449 GIT binary patch literal 233 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 Q{Z3{xg2nZ3Ku*p78>bi5j{pDw literal 0 HcmV?d00001 diff --git a/wp-admin/images/spinner.gif b/wp-admin/images/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..209d10b6bb1a443fa7488d5238b32b93a2bd8b8d GIT binary patch literal 4162 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 LsoI7F?dpF4ttiU7 literal 0 HcmV?d00001 diff --git a/wp-admin/images/stars-2x.png b/wp-admin/images/stars-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..15aa9debfdf568eda42fcbb0e2c70c680b4b020e GIT binary patch literal 1257 zcmV=P)7t~6(Y2Y=kfwmVZ$Q7I`Q?|9n*`!t0J*88 zenlnkG2|`)p~KjCUGv%WCz|)~M0SECKLUalApRwg{VS+HQOWxivgd)D2f)yKF{)O5 ziDv&SAoK~ay8kwbZ$P7bMIWMt@OI>;9mtFWEBh)D*Ck&!wcD(%XyKNXKuz)ik~vFK zZv%nONO+$9{~iq0RJ265&Rg`ui%h+|N8XU5dv6#T^&{rg8CC! z)t{s3Uxx_bhPgQc`#}8&dbL|j=`$VzSb9Y{lurz3zv@$`y@(6~*IsNG$`v?UQ=XDP zTL=k(4}q(u`boG!d7jqR(S*l==y$;Ub9F;Gf;}x3{mG8lDBydhZYW34)mqW`NiUYW zflE8;Cp-kobG1%1J!wGf1Tbf8jQQQ5ym0G8<7eJM^haR!sm2j`$v;f35skWC2o3@> zPu|HwC+M@=%%Sc&j3=)K_c${RXvCfo$Da+GsQ?Nbv5ZABw)JHjJ?|5MPbz)hI%)fs*M z9x+J(iyxHoq8^L3qTyjLf%0p;U&gsT#7a5;q;{f-^9I}+&Ja!QdMLl2$Y>`TIaM)& z%4Lrk5&Pw}_K#$3(f_?@WNh<;q%GPO)mn7h!ysxRK$!I|>LO64Q?H^%0y2KntEiJe zcIgNbQ!lXWF1?8wcqEJK8Az+&vgoMZMC}B!iv!q*VnIkU&+0{V3riLAF>vIToh&+} z7tuZfnFSl}h;>Oms@os5Xa~!zXP0nyWUqh5q7JP@jl}zP&_f`7`7o+Qv5;g@a84a` zG$M*dD5PdkD>94y+^!Ki8WE+DI(T0S$$xOakXFC1r!SVYG%}(Vmd*JGp>@#IVM(Ww z#bjeyDLA5?KUrTlnh9y;Yq_LN^(T{jznPiufs&w|m0Yr4%SWhLww-HcG>0^O z*7K;wFFXw;L5q<^uWK#Z%R42dK{v^=MlD6paZOdBcJ^u|x|M)H?BJCK-6V^i(@M09 z3;(@hJ?E!C5~@b!F=eY3qAo)0gsKZ>=E2WxK8@B2x>;`5rMBoM7AUTTD@G`DwXf>F zGBNeMC`nbfeY_D-Thv4#aq*>Ek3z;ybd=k>_u9oPd z1ft{HxMSuJ(dda)NZ~HLYKiV8AY*{%l|r82J+2Ic8lo&~=MGh37ct5UN{Q&d=ZrL2 TL7I?T00000NkvXXu0mjfn-y0e literal 0 HcmV?d00001 diff --git a/wp-admin/images/stars.png b/wp-admin/images/stars.png new file mode 100644 index 0000000000000000000000000000000000000000..c01ada13ee9a58afc51489ea80a53dca6dbe7eaa GIT binary patch literal 924 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 literal 0 HcmV?d00001 diff --git a/wp-admin/images/w-logo-white.png b/wp-admin/images/w-logo-white.png new file mode 100644 index 0000000000000000000000000000000000000000..bb70f57852c01cbae105081944424eea79f301cb GIT binary patch literal 4159 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 literal 0 HcmV?d00001 diff --git a/wp-admin/images/wheel.png b/wp-admin/images/wheel.png new file mode 100644 index 0000000000000000000000000000000000000000..9b9fdf4a37ade27ecdc9d7536f40e2b292855a5f GIT binary patch literal 6047 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 X)9&Ogyvk+9EhAuTXilurC&m6he)eAo literal 0 HcmV?d00001 diff --git a/wp-admin/images/wordpress-logo-white.svg b/wp-admin/images/wordpress-logo-white.svg new file mode 100644 index 0000000000..c0d0ba950e --- /dev/null +++ b/wp-admin/images/wordpress-logo-white.svg @@ -0,0 +1 @@ + diff --git a/wp-admin/images/wordpress-logo.png b/wp-admin/images/wordpress-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..63b0379613dce1dd59a81a30cf98fc23275751dc GIT binary patch literal 2480 zcma)8X)qg#7EWr7q7kY{v77|-b; z)4(om@w88aP`vK%l`btiE4O=$q92H-T3y!D-Yse|h$D9paF9%Vd&$l&t7Tz+F74&n zQ;meJU_h;OuNGC)KOt2`N@y%^osXAju=|Uu1@2^}&x;eecnjg?e5VsNKP>M$ z`%*I=^fE=?_?i?-cLTF}k=Ehoer9MsTfnO|4OJ!!1J%a#Yu^evnJ4!* z+Y39iPAFSVqcm^OCFM#s>dGj!?-$q`V+AuHTgIvQ7?Z*o;bjK*LmpMzfakb70Uv6Q z8uXz11c0(;5N|!U$Y(yB%m4_(*J6SN62C>w@@KoGFt0@s^r*|My~4kYsJu8f2#8@I`#F{xX5=X6%If0xnH@>qa&&VXJS4xtr`PEB)u}^aTOk0qIuJElq=NN zhQyMez8!n{csV6@(9fek%{#0>DkCm#!yH(y1L#*mf5TMpFJdC=s=C)KYqIvDr<`}z z1dyuOidPl4#W7#(nf0Vy+e}A&3&T=>r%}qS<5fxG8RQ&4Vp>205v2(PIp^n1N|Zz% z<9f8;nl$3i|CMz{C=_jxBQ|N2nu_aEv3?Epuk5}wabYPqHW!keh-*InPW7nVSTo8@ zqUh1sxe*@yH!%qqm7^T_A-wTV-*pax+V^8OA^P$)zz<+(7%8gt1zZ!$7ot6S8Y^DD zlypzNm{P-b^USuW)+Z>i-L}QbO=4TTb6w{y^6iF+r!dJp#wX}mkxq7CB>QIgcBe^D zZU1&t9^~@is%T6|$49ESBQu-*b?J^A=)Rl@B&{`mc||=}h!BtD6ffUkGe~U4xH64G zG7J9D8}E>8IA;yVcJd)Qpn<^I-4S8vaV1m6tcM+#=6X8GM$YH-(!=bv99ewxDk-k* zNPd@IL1L;UJe}LmK(q0ZvP$UgEkX9WOF>3e%Uu)r=NBQLIb;K8P`ke0ho z`5FpMp}-kYx@;_dD_>f#bd%Eigjp;;^aw*(v*`dnOQ)Eq9WxKoEzfB2<{64)tNig z!`0~fZ=IZelU%i4_3!ajj`I~lPa%1UD6(YCM%{YcANDr8&8!z#B`3@1>89K_f>`#t zx|}J{!o*3$$Q{N)4fH<}>ul8Ik1FYjuuLOgm96M=^@m43mahI#fz;M{AwaG1aKQ72 z556CjnG#@PtVd%o{<02p1AMCnCH-_77rYX_;p6!2Qpu)|qn;Oh&3;rKaz!Cc^4Z|Y zWh%ISH`9*+S1)4@3x-bK@wuqxSNI-!2j2tZ@C#Y7CWE128iuORg%O^{x6y5i-nJ84|U4qQq5IevTdk2g&8IGWCrVd)0p>yleFMd zOrMhetgH?^lqZrivtQmQcwcse7w5Gf7=+ICQQ^<0A8T1siO~0~$pV`9%NnCFRcPn0 zr9{DGYei<2^OG5kOA!`nd3D=q<*@p)4POEG{m~bI=t2i_uSkFlOC7*0EI}=SKEfKr6jE6ZE0Zm<9O$xK))eU zQf86pxVW?w@XEMira~g95=3`*lgSs8Y8P?(XL|5a(Z>U# z2g;1iqE`oS!MFLKmG;nPCk>P \ No newline at end of file diff --git a/wp-admin/images/wpspin_light-2x.gif b/wp-admin/images/wpspin_light-2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..392e82ff71b8c22a401d7c6b85943c0adfe4a98a GIT binary patch literal 9133 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 literal 0 HcmV?d00001 diff --git a/wp-admin/images/xit-2x.gif b/wp-admin/images/xit-2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..3a72ee1a232fa93ffe65b1e68a2b95e35adb0604 GIT binary patch literal 825 zcmdVX=}(ez0KoAdJX~^w8k(77Ihj}CT+2uyBi?$}(o7Q2aYb)0XQeN05 zCG)Bf!7_PhS!zhW2@pfr#NoWffpcygvWXlIDbV~g`u+!>eaksz`2}^EfB^ykXti2z zXXnh!42q&YsWj~M`UVD!Mq@A-4DaqnA`z?A8dR%Moh}-QEH5vcOeUR9=X5$94u^ku zcy@Mne|6PtHve5&@hcS3gM+Zg69@#nU0uGx!M)zz{k65Nt*ycMizSW9qG;X(h zeSIC(YVCIW#>Pg-Yz~=BE|<$@v!QxDYA}S1#;K{P>FH^oOy(7f0}~VBot?$S#ehn+ z*VD5nkr)gHzu&Ld>z9_6qR}Y$pGytlFaW^d^daK#2~3RgU_PImPEUx7OQ5Hd1s#GT zEGi=}k3nS}5yb)tz(OJzBK89!6N6xIcsZV+#1Qxt3FY&UR0SvnaRn9*Gc2t zlJDHKo76s=0~A(aE#vcf7+p3L45_~q(*f?=diOun9RSypK0 z=;g)lim^ z-I{kF;kJ0FEP}d-Tv8%+X7NeoZ)=<8ekq{#YjVaITB)hVr?5xLn}L?lTElq40~a%6 GLE%4BQA4r- literal 0 HcmV?d00001 diff --git a/wp-admin/images/xit.gif b/wp-admin/images/xit.gif new file mode 100644 index 0000000000000000000000000000000000000000..d288954d9fc2fd93eb25e6bb09a2d654b40c873e GIT binary patch literal 181 zcmZ?wbhEHb6k*_E_{_lYY4YUH^X7fqzWv9E6F)Cs{&nNV|NsAAzI^%Y*|P@^9$dS2 z?Zk-_hYlSA3NnC!;!hSv1_oXR9S{#>h678|hOLXQ1-YM6auR5rW{@(|gL%O^=gkv3 z5*3~Zt!VLCaq!?71Lns83=(AxG7ArrT_844hyuh_-TydG@=!*>!j8|8=)k{x|K{|0ceg z-9~AvFq>Sf_{CL^mj2JWknrF9q{e^!4NCu6eVFgCc`$Im1Cc$5bxGQm*ngE5^Zzft zKllIq`!oJ)G%J5mtyOrm;OWf&CATyGd)~18Z+pn_KU+BSU5+$}%_yadd_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => '

' . __('This screen lists links to plugins to import data from blogging/content management platforms. Choose the platform you want to import from, and click Install Now when you are prompted in the popup window. If your platform is not listed, click the link to search the plugin directory for other importer plugins to see if there is one for your platform.') . '

' . + '

' . __('In previous versions of WordPress, all importers were built-in. They have been turned into plugins since most people only use them once or infrequently.') . '

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

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

' . + '

' . __('Documentation on Import') . '

' . + '

' . __('Support Forums') . '

' +); + +if ( current_user_can( 'install_plugins' ) ) + $popular_importers = wp_get_popular_importers(); +else + $popular_importers = array(); + +// Detect and redirect invalid importers like 'movabletype', which is registered as 'mt' +if ( ! empty( $_GET['invalid'] ) && isset( $popular_importers[ $_GET['invalid'] ] ) ) { + $importer_id = $popular_importers[ $_GET['invalid'] ]['importer-id']; + if ( $importer_id != $_GET['invalid'] ) { // Prevent redirect loops. + wp_redirect( admin_url( 'admin.php?import=' . $importer_id ) ); + exit; + } + unset( $importer_id ); +} + +add_thickbox(); +wp_enqueue_script( 'plugin-install' ); + +require_once( ABSPATH . 'wp-admin/admin-header.php' ); +$parent_file = 'tools.php'; +?> + +
+

+ +

%s importer is invalid or is not installed.'), esc_html( $_GET['invalid'] ) ); ?>

+ +

+ + $pop_data ) { + if ( isset( $importers[ $pop_importer ] ) ) + continue; + if ( isset( $importers[ $pop_data['importer-id'] ] ) ) + continue; + $importers[ $pop_data['importer-id'] ] = array( $pop_data['name'], $pop_data['description'], 'install' => $pop_data['plugin-slug'] ); +} + +if ( empty( $importers ) ) { + echo '

' . __('No importers are available.') . '

'; // TODO: make more helpful +} else { + uasort( $importers, '_usort_by_first_member' ); +?> + + + $data) { + $action = ''; + if ( isset( $data['install'] ) ) { + $plugin_slug = $data['install']; + if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_slug ) ) { + // Looks like Importer is installed, But not active + $plugins = get_plugins( '/' . $plugin_slug ); + if ( !empty($plugins) ) { + $keys = array_keys($plugins); + $plugin_file = $plugin_slug . '/' . $keys[0]; + $action = '' . $data[0] . ''; + } + } + if ( empty($action) ) { + if ( is_main_site() ) { + $action = '' . $data[0] . ''; + } else { + $action = $data[0]; + $data[1] = sprintf( __( 'This importer is not installed. Please install importers from the main site.' ), get_admin_url( $current_site->blog_id, 'import.php' ) ); + } + } + } else { + $action = "{$data[0]}"; + } + + echo " + + + + "; + } +?> + +
$action{$data[1]}
+' . sprintf( __('If the importer you need is not listed, search the plugin directory to see if an importer is available.'), esc_url( network_admin_url( 'plugin-install.php?tab=search&type=tag&s=importer' ) ) ) . '

'; +?> + +
+ +id and the JS global 'pagenow'. + if ( ! empty($_POST['screen_id']) ) + $screen_id = sanitize_key($_POST['screen_id']); + else + $screen_id = 'front'; + + if ( ! empty($_POST['data']) ) { + $data = wp_unslash( (array) $_POST['data'] ); + + /** + * Filter Heartbeat AJAX response in no-privilege environments. + * + * @since 3.6.0 + * + * @param array|object $response The no-priv Heartbeat response object or array. + * @param array $data An array of data passed via $_POST. + * @param string $screen_id The screen id. + */ + $response = apply_filters( 'heartbeat_nopriv_received', $response, $data, $screen_id ); + } + + /** + * Filter Heartbeat AJAX response when no data is passed. + * + * @since 3.6.0 + * + * @param array|object $response The Heartbeat response object or array. + * @param string $screen_id The screen id. + */ + $response = apply_filters( 'heartbeat_nopriv_send', $response, $screen_id ); + + /** + * Fires when Heartbeat ticks in no-privilege environments. + * + * Allows the transport to be easily replaced with long-polling. + * + * @since 3.6.0 + * + * @param array|object $response The no-priv Heartbeat response. + * @param string $screen_id The screen id. + */ + do_action( 'heartbeat_nopriv_tick', $response, $screen_id ); + + // Send the current time according to the server. + $response['server_time'] = time(); + + wp_send_json($response); +} + +// +// GET-based Ajax handlers. +// + +/** + * Ajax handler for fetching a list table. + * + * @since 3.1.0 + * + * @global WP_List_Table $wp_list_table + */ +function wp_ajax_fetch_list() { + global $wp_list_table; + + $list_class = $_GET['list_args']['class']; + check_ajax_referer( "fetch-list-$list_class", '_ajax_fetch_list_nonce' ); + + $wp_list_table = _get_list_table( $list_class, array( 'screen' => $_GET['list_args']['screen']['id'] ) ); + if ( ! $wp_list_table ) + wp_die( 0 ); + + if ( ! $wp_list_table->ajax_user_can() ) + wp_die( -1 ); + + $wp_list_table->ajax_response(); + + wp_die( 0 ); +} + +/** + * Ajax handler for tag search. + * + * @since 3.1.0 + */ +function wp_ajax_ajax_tag_search() { + if ( ! isset( $_GET['tax'] ) ) { + wp_die( 0 ); + } + + $taxonomy = sanitize_key( $_GET['tax'] ); + $tax = get_taxonomy( $taxonomy ); + if ( ! $tax ) { + wp_die( 0 ); + } + + if ( ! current_user_can( $tax->cap->assign_terms ) ) { + wp_die( -1 ); + } + + $s = wp_unslash( $_GET['q'] ); + + $comma = _x( ',', 'tag delimiter' ); + if ( ',' !== $comma ) + $s = str_replace( $comma, ',', $s ); + if ( false !== strpos( $s, ',' ) ) { + $s = explode( ',', $s ); + $s = $s[count( $s ) - 1]; + } + $s = trim( $s ); + + /** + * Filter the minimum number of characters required to fire a tag search via AJAX. + * + * @since 4.0.0 + * + * @param int $characters The minimum number of characters required. Default 2. + * @param object $tax The taxonomy object. + * @param string $s The search term. + */ + $term_search_min_chars = (int) apply_filters( 'term_search_min_chars', 2, $tax, $s ); + + /* + * Require $term_search_min_chars chars for matching (default: 2) + * ensure it's a non-negative, non-zero integer. + */ + if ( ( $term_search_min_chars == 0 ) || ( strlen( $s ) < $term_search_min_chars ) ){ + wp_die(); + } + + $results = get_terms( $taxonomy, array( 'name__like' => $s, 'fields' => 'names', 'hide_empty' => false ) ); + + echo join( $results, "\n" ); + wp_die(); +} + +/** + * Ajax handler for compression testing. + * + * @since 3.1.0 + */ +function wp_ajax_wp_compression_test() { + if ( !current_user_can( 'manage_options' ) ) + wp_die( -1 ); + + if ( ini_get('zlib.output_compression') || 'ob_gzhandler' == ini_get('output_handler') ) { + update_site_option('can_compress_scripts', 0); + wp_die( 0 ); + } + + if ( isset($_GET['test']) ) { + header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-cache, must-revalidate, max-age=0' ); + header( 'Pragma: no-cache' ); + header('Content-Type: application/javascript; charset=UTF-8'); + $force_gzip = ( defined('ENFORCE_GZIP') && ENFORCE_GZIP ); + $test_str = '"wpCompressionTest Lorem ipsum dolor sit amet consectetuer mollis sapien urna ut a. Eu nonummy condimentum fringilla tempor pretium platea vel nibh netus Maecenas. Hac molestie amet justo quis pellentesque est ultrices interdum nibh Morbi. Cras mattis pretium Phasellus ante ipsum ipsum ut sociis Suspendisse Lorem. Ante et non molestie. Porta urna Vestibulum egestas id congue nibh eu risus gravida sit. Ac augue auctor Ut et non a elit massa id sodales. Elit eu Nulla at nibh adipiscing mattis lacus mauris at tempus. Netus nibh quis suscipit nec feugiat eget sed lorem et urna. Pellentesque lacus at ut massa consectetuer ligula ut auctor semper Pellentesque. Ut metus massa nibh quam Curabitur molestie nec mauris congue. Volutpat molestie elit justo facilisis neque ac risus Ut nascetur tristique. Vitae sit lorem tellus et quis Phasellus lacus tincidunt nunc Fusce. Pharetra wisi Suspendisse mus sagittis libero lacinia Integer consequat ac Phasellus. Et urna ac cursus tortor aliquam Aliquam amet tellus volutpat Vestibulum. Justo interdum condimentum In augue congue tellus sollicitudin Quisque quis nibh."'; + + if ( 1 == $_GET['test'] ) { + echo $test_str; + wp_die(); + } elseif ( 2 == $_GET['test'] ) { + if ( !isset($_SERVER['HTTP_ACCEPT_ENCODING']) ) + wp_die( -1 ); + if ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') && function_exists('gzdeflate') && ! $force_gzip ) { + header('Content-Encoding: deflate'); + $out = gzdeflate( $test_str, 1 ); + } elseif ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') ) { + header('Content-Encoding: gzip'); + $out = gzencode( $test_str, 1 ); + } else { + wp_die( -1 ); + } + echo $out; + wp_die(); + } elseif ( 'no' == $_GET['test'] ) { + update_site_option('can_compress_scripts', 0); + } elseif ( 'yes' == $_GET['test'] ) { + update_site_option('can_compress_scripts', 1); + } + } + + wp_die( 0 ); +} + +/** + * Ajax handler for image editor previews. + * + * @since 3.1.0 + */ +function wp_ajax_imgedit_preview() { + $post_id = intval($_GET['postid']); + if ( empty($post_id) || !current_user_can('edit_post', $post_id) ) + wp_die( -1 ); + + check_ajax_referer( "image_editor-$post_id" ); + + include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); + if ( ! stream_preview_image($post_id) ) + wp_die( -1 ); + + wp_die(); +} + +/** + * Ajax handler for oEmbed caching. + * + * @since 3.1.0 + * + * @global WP_Embed $wp_embed + */ +function wp_ajax_oembed_cache() { + $GLOBALS['wp_embed']->cache_oembed( $_GET['post'] ); + wp_die( 0 ); +} + +/** + * Ajax handler for user autocomplete. + * + * @since 3.4.0 + */ +function wp_ajax_autocomplete_user() { + if ( ! is_multisite() || ! current_user_can( 'promote_users' ) || wp_is_large_network( 'users' ) ) + wp_die( -1 ); + + /** This filter is documented in wp-admin/user-new.php */ + if ( ! is_super_admin() && ! apply_filters( 'autocomplete_users_for_site_admins', false ) ) + wp_die( -1 ); + + $return = array(); + + // Check the type of request + // Current allowed values are `add` and `search` + if ( isset( $_REQUEST['autocomplete_type'] ) && 'search' === $_REQUEST['autocomplete_type'] ) { + $type = $_REQUEST['autocomplete_type']; + } else { + $type = 'add'; + } + + // Check the desired field for value + // Current allowed values are `user_email` and `user_login` + if ( isset( $_REQUEST['autocomplete_field'] ) && 'user_email' === $_REQUEST['autocomplete_field'] ) { + $field = $_REQUEST['autocomplete_field']; + } else { + $field = 'user_login'; + } + + // Exclude current users of this blog + if ( isset( $_REQUEST['site_id'] ) ) { + $id = absint( $_REQUEST['site_id'] ); + } else { + $id = get_current_blog_id(); + } + + $include_blog_users = ( $type == 'search' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() ); + $exclude_blog_users = ( $type == 'add' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() ); + + $users = get_users( array( + 'blog_id' => false, + 'search' => '*' . $_REQUEST['term'] . '*', + 'include' => $include_blog_users, + 'exclude' => $exclude_blog_users, + 'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ), + ) ); + + foreach ( $users as $user ) { + $return[] = array( + /* translators: 1: user_login, 2: user_email */ + 'label' => sprintf( __( '%1$s (%2$s)' ), $user->user_login, $user->user_email ), + 'value' => $user->$field, + ); + } + + wp_die( wp_json_encode( $return ) ); +} + +/** + * Ajax handler for dashboard widgets. + * + * @since 3.4.0 + */ +function wp_ajax_dashboard_widgets() { + require_once ABSPATH . 'wp-admin/includes/dashboard.php'; + + $pagenow = $_GET['pagenow']; + if ( $pagenow === 'dashboard-user' || $pagenow === 'dashboard-network' || $pagenow === 'dashboard' ) { + set_current_screen( $pagenow ); + } + + switch ( $_GET['widget'] ) { + case 'dashboard_primary' : + wp_dashboard_primary(); + break; + } + wp_die(); +} + +/** + * Ajax handler for Customizer preview logged-in status. + * + * @since 3.4.0 + */ +function wp_ajax_logged_in() { + wp_die( 1 ); +} + +// +// Ajax helpers. +// + +/** + * Sends back current comment total and new page links if they need to be updated. + * + * Contrary to normal success AJAX response ("1"), die with time() on success. + * + * @since 2.7.0 + * + * @param int $comment_id + * @param int $delta + */ +function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) { + $total = isset( $_POST['_total'] ) ? (int) $_POST['_total'] : 0; + $per_page = isset( $_POST['_per_page'] ) ? (int) $_POST['_per_page'] : 0; + $page = isset( $_POST['_page'] ) ? (int) $_POST['_page'] : 0; + $url = isset( $_POST['_url'] ) ? esc_url_raw( $_POST['_url'] ) : ''; + + // JS didn't send us everything we need to know. Just die with success message + if ( !$total || !$per_page || !$page || !$url ) + wp_die( time() ); + + $total += $delta; + if ( $total < 0 ) + $total = 0; + + // Only do the expensive stuff on a page-break, and about 1 other time per page + if ( 0 == $total % $per_page || 1 == mt_rand( 1, $per_page ) ) { + $post_id = 0; + $status = 'total_comments'; // What type of comment count are we looking for? + $parsed = parse_url( $url ); + if ( isset( $parsed['query'] ) ) { + parse_str( $parsed['query'], $query_vars ); + if ( !empty( $query_vars['comment_status'] ) ) + $status = $query_vars['comment_status']; + if ( !empty( $query_vars['p'] ) ) + $post_id = (int) $query_vars['p']; + } + + $comment_count = wp_count_comments($post_id); + + // We're looking for a known type of comment count. + if ( isset( $comment_count->$status ) ) + $total = $comment_count->$status; + // Else use the decremented value from above. + } + + // The time since the last comment count. + $time = time(); + + $x = new WP_Ajax_Response( array( + 'what' => 'comment', + // Here for completeness - not used. + 'id' => $comment_id, + 'supplemental' => array( + 'total_items_i18n' => sprintf( _n( '%s item', '%s items', $total ), number_format_i18n( $total ) ), + 'total_pages' => ceil( $total / $per_page ), + 'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ), + 'total' => $total, + 'time' => $time + ) + ) ); + $x->send(); +} + +// +// POST-based Ajax handlers. +// + +/** + * Ajax handler for adding a hierarchical term. + * + * @since 3.1.0 + */ +function _wp_ajax_add_hierarchical_term() { + $action = $_POST['action']; + $taxonomy = get_taxonomy(substr($action, 4)); + check_ajax_referer( $action, '_ajax_nonce-add-' . $taxonomy->name ); + if ( !current_user_can( $taxonomy->cap->edit_terms ) ) + wp_die( -1 ); + $names = explode(',', $_POST['new'.$taxonomy->name]); + $parent = isset($_POST['new'.$taxonomy->name.'_parent']) ? (int) $_POST['new'.$taxonomy->name.'_parent'] : 0; + if ( 0 > $parent ) + $parent = 0; + if ( $taxonomy->name == 'category' ) + $post_category = isset($_POST['post_category']) ? (array) $_POST['post_category'] : array(); + else + $post_category = ( isset($_POST['tax_input']) && isset($_POST['tax_input'][$taxonomy->name]) ) ? (array) $_POST['tax_input'][$taxonomy->name] : array(); + $checked_categories = array_map( 'absint', (array) $post_category ); + $popular_ids = wp_popular_terms_checklist($taxonomy->name, 0, 10, false); + + foreach ( $names as $cat_name ) { + $cat_name = trim($cat_name); + $category_nicename = sanitize_title($cat_name); + if ( '' === $category_nicename ) + continue; + if ( !$cat_id = term_exists( $cat_name, $taxonomy->name, $parent ) ) + $cat_id = wp_insert_term( $cat_name, $taxonomy->name, array( 'parent' => $parent ) ); + if ( is_wp_error( $cat_id ) ) { + continue; + } elseif ( is_array( $cat_id ) ) { + $cat_id = $cat_id['term_id']; + } + $checked_categories[] = $cat_id; + if ( $parent ) // Do these all at once in a second + continue; + + ob_start(); + + wp_terms_checklist( 0, array( 'taxonomy' => $taxonomy->name, 'descendants_and_self' => $cat_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids )); + + $data = ob_get_clean(); + + $add = array( + 'what' => $taxonomy->name, + 'id' => $cat_id, + 'data' => str_replace( array("\n", "\t"), '', $data), + 'position' => -1 + ); + } + + if ( $parent ) { // Foncy - replace the parent and all its children + $parent = get_term( $parent, $taxonomy->name ); + $term_id = $parent->term_id; + + while ( $parent->parent ) { // get the top parent + $parent = get_term( $parent->parent, $taxonomy->name ); + if ( is_wp_error( $parent ) ) + break; + $term_id = $parent->term_id; + } + + ob_start(); + + wp_terms_checklist( 0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $term_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids)); + + $data = ob_get_clean(); + + $add = array( + 'what' => $taxonomy->name, + 'id' => $term_id, + 'data' => str_replace( array("\n", "\t"), '', $data), + 'position' => -1 + ); + } + + ob_start(); + + wp_dropdown_categories( array( + 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name', + 'hierarchical' => 1, 'show_option_none' => '— '.$taxonomy->labels->parent_item.' —' + ) ); + + $sup = ob_get_clean(); + + $add['supplemental'] = array( 'newcat_parent' => $sup ); + + $x = new WP_Ajax_Response( $add ); + $x->send(); +} + +/** + * Ajax handler for deleting a comment. + * + * @since 3.1.0 + */ +function wp_ajax_delete_comment() { + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + if ( !$comment = get_comment( $id ) ) + wp_die( time() ); + if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) ) + wp_die( -1 ); + + check_ajax_referer( "delete-comment_$id" ); + $status = wp_get_comment_status( $comment->comment_ID ); + + $delta = -1; + if ( isset($_POST['trash']) && 1 == $_POST['trash'] ) { + if ( 'trash' == $status ) + wp_die( time() ); + $r = wp_trash_comment( $comment->comment_ID ); + } elseif ( isset($_POST['untrash']) && 1 == $_POST['untrash'] ) { + if ( 'trash' != $status ) + wp_die( time() ); + $r = wp_untrash_comment( $comment->comment_ID ); + if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'trash' ) // undo trash, not in trash + $delta = 1; + } elseif ( isset($_POST['spam']) && 1 == $_POST['spam'] ) { + if ( 'spam' == $status ) + wp_die( time() ); + $r = wp_spam_comment( $comment->comment_ID ); + } elseif ( isset($_POST['unspam']) && 1 == $_POST['unspam'] ) { + if ( 'spam' != $status ) + wp_die( time() ); + $r = wp_unspam_comment( $comment->comment_ID ); + if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'spam' ) // undo spam, not in spam + $delta = 1; + } elseif ( isset($_POST['delete']) && 1 == $_POST['delete'] ) { + $r = wp_delete_comment( $comment->comment_ID ); + } else { + wp_die( -1 ); + } + + if ( $r ) // Decide if we need to send back '1' or a more complicated response including page links and comment counts + _wp_ajax_delete_comment_response( $comment->comment_ID, $delta ); + wp_die( 0 ); +} + +/** + * Ajax handler for deleting a tag. + * + * @since 3.1.0 + */ +function wp_ajax_delete_tag() { + $tag_id = (int) $_POST['tag_ID']; + check_ajax_referer( "delete-tag_$tag_id" ); + + $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag'; + $tax = get_taxonomy($taxonomy); + + if ( !current_user_can( $tax->cap->delete_terms ) ) + wp_die( -1 ); + + $tag = get_term( $tag_id, $taxonomy ); + if ( !$tag || is_wp_error( $tag ) ) + wp_die( 1 ); + + if ( wp_delete_term($tag_id, $taxonomy)) + wp_die( 1 ); + else + wp_die( 0 ); +} + +/** + * Ajax handler for deleting a link. + * + * @since 3.1.0 + */ +function wp_ajax_delete_link() { + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + check_ajax_referer( "delete-bookmark_$id" ); + if ( !current_user_can( 'manage_links' ) ) + wp_die( -1 ); + + $link = get_bookmark( $id ); + if ( !$link || is_wp_error( $link ) ) + wp_die( 1 ); + + if ( wp_delete_link( $id ) ) + wp_die( 1 ); + else + wp_die( 0 ); +} + +/** + * Ajax handler for deleting meta. + * + * @since 3.1.0 + */ +function wp_ajax_delete_meta() { + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + check_ajax_referer( "delete-meta_$id" ); + if ( !$meta = get_metadata_by_mid( 'post', $id ) ) + wp_die( 1 ); + + if ( is_protected_meta( $meta->meta_key, 'post' ) || ! current_user_can( 'delete_post_meta', $meta->post_id, $meta->meta_key ) ) + wp_die( -1 ); + if ( delete_meta( $meta->meta_id ) ) + wp_die( 1 ); + wp_die( 0 ); +} + +/** + * Ajax handler for deleting a post. + * + * @since 3.1.0 + * + * @param string $action Action to perform. + */ +function wp_ajax_delete_post( $action ) { + if ( empty( $action ) ) + $action = 'delete-post'; + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + check_ajax_referer( "{$action}_$id" ); + if ( !current_user_can( 'delete_post', $id ) ) + wp_die( -1 ); + + if ( !get_post( $id ) ) + wp_die( 1 ); + + if ( wp_delete_post( $id ) ) + wp_die( 1 ); + else + wp_die( 0 ); +} + +/** + * Ajax handler for sending a post to the trash. + * + * @since 3.1.0 + * + * @param string $action Action to perform. + */ +function wp_ajax_trash_post( $action ) { + if ( empty( $action ) ) + $action = 'trash-post'; + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + check_ajax_referer( "{$action}_$id" ); + if ( !current_user_can( 'delete_post', $id ) ) + wp_die( -1 ); + + if ( !get_post( $id ) ) + wp_die( 1 ); + + if ( 'trash-post' == $action ) + $done = wp_trash_post( $id ); + else + $done = wp_untrash_post( $id ); + + if ( $done ) + wp_die( 1 ); + + wp_die( 0 ); +} + +/** + * Ajax handler to restore a post from the trash. + * + * @since 3.1.0 + * + * @param string $action Action to perform. + */ +function wp_ajax_untrash_post( $action ) { + if ( empty( $action ) ) + $action = 'untrash-post'; + wp_ajax_trash_post( $action ); +} + +/** + * @since 3.1.0 + * + * @param string $action + */ +function wp_ajax_delete_page( $action ) { + if ( empty( $action ) ) + $action = 'delete-page'; + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + check_ajax_referer( "{$action}_$id" ); + if ( !current_user_can( 'delete_page', $id ) ) + wp_die( -1 ); + + if ( ! get_post( $id ) ) + wp_die( 1 ); + + if ( wp_delete_post( $id ) ) + wp_die( 1 ); + else + wp_die( 0 ); +} + +/** + * Ajax handler to dim a comment. + * + * @since 3.1.0 + */ +function wp_ajax_dim_comment() { + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + if ( !$comment = get_comment( $id ) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'comment', + 'id' => new WP_Error('invalid_comment', sprintf(__('Comment %d does not exist'), $id)) + ) ); + $x->send(); + } + + if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) && ! current_user_can( 'moderate_comments' ) ) + wp_die( -1 ); + + $current = wp_get_comment_status( $comment->comment_ID ); + if ( isset( $_POST['new'] ) && $_POST['new'] == $current ) + wp_die( time() ); + + check_ajax_referer( "approve-comment_$id" ); + if ( in_array( $current, array( 'unapproved', 'spam' ) ) ) + $result = wp_set_comment_status( $comment->comment_ID, 'approve', true ); + else + $result = wp_set_comment_status( $comment->comment_ID, 'hold', true ); + + if ( is_wp_error($result) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'comment', + 'id' => $result + ) ); + $x->send(); + } + + // Decide if we need to send back '1' or a more complicated response including page links and comment counts + _wp_ajax_delete_comment_response( $comment->comment_ID ); + wp_die( 0 ); +} + +/** + * Ajax handler for deleting a link category. + * + * @since 3.1.0 + * + * @param string $action Action to perform. + */ +function wp_ajax_add_link_category( $action ) { + if ( empty( $action ) ) + $action = 'add-link-category'; + check_ajax_referer( $action ); + if ( !current_user_can( 'manage_categories' ) ) + wp_die( -1 ); + $names = explode(',', wp_unslash( $_POST['newcat'] ) ); + $x = new WP_Ajax_Response(); + foreach ( $names as $cat_name ) { + $cat_name = trim($cat_name); + $slug = sanitize_title($cat_name); + if ( '' === $slug ) + continue; + if ( !$cat_id = term_exists( $cat_name, 'link_category' ) ) + $cat_id = wp_insert_term( $cat_name, 'link_category' ); + if ( is_wp_error( $cat_id ) ) { + continue; + } elseif ( is_array( $cat_id ) ) { + $cat_id = $cat_id['term_id']; + } + $cat_name = esc_html( $cat_name ); + $x->add( array( + 'what' => 'link-category', + 'id' => $cat_id, + 'data' => "", + 'position' => -1 + ) ); + } + $x->send(); +} + +/** + * Ajax handler to add a tag. + * + * @since 3.1.0 + * + * @global WP_List_Table $wp_list_table + */ +function wp_ajax_add_tag() { + global $wp_list_table; + + check_ajax_referer( 'add-tag', '_wpnonce_add-tag' ); + $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag'; + $tax = get_taxonomy($taxonomy); + + if ( !current_user_can( $tax->cap->edit_terms ) ) + wp_die( -1 ); + + $x = new WP_Ajax_Response(); + + $tag = wp_insert_term($_POST['tag-name'], $taxonomy, $_POST ); + + if ( !$tag || is_wp_error($tag) || (!$tag = get_term( $tag['term_id'], $taxonomy )) ) { + $message = __('An error has occurred. Please reload the page and try again.'); + if ( is_wp_error($tag) && $tag->get_error_message() ) + $message = $tag->get_error_message(); + + $x->add( array( + 'what' => 'taxonomy', + 'data' => new WP_Error('error', $message ) + ) ); + $x->send(); + } + + $wp_list_table = _get_list_table( 'WP_Terms_List_Table', array( 'screen' => $_POST['screen'] ) ); + + $level = 0; + if ( is_taxonomy_hierarchical($taxonomy) ) { + $level = count( get_ancestors( $tag->term_id, $taxonomy, 'taxonomy' ) ); + ob_start(); + $wp_list_table->single_row( $tag, $level ); + $noparents = ob_get_clean(); + } + + ob_start(); + $wp_list_table->single_row( $tag ); + $parents = ob_get_clean(); + + $x->add( array( + 'what' => 'taxonomy', + 'supplemental' => compact('parents', 'noparents') + ) ); + $x->add( array( + 'what' => 'term', + 'position' => $level, + 'supplemental' => (array) $tag + ) ); + $x->send(); +} + +/** + * Ajax handler for getting a tagcloud. + * + * @since 3.1.0 + */ +function wp_ajax_get_tagcloud() { + if ( ! isset( $_POST['tax'] ) ) { + wp_die( 0 ); + } + + $taxonomy = sanitize_key( $_POST['tax'] ); + $tax = get_taxonomy( $taxonomy ); + if ( ! $tax ) { + wp_die( 0 ); + } + + if ( ! current_user_can( $tax->cap->assign_terms ) ) { + wp_die( -1 ); + } + + $tags = get_terms( $taxonomy, array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) ); + + if ( empty( $tags ) ) + wp_die( $tax->labels->not_found ); + + if ( is_wp_error( $tags ) ) + wp_die( $tags->get_error_message() ); + + foreach ( $tags as $key => $tag ) { + $tags[ $key ]->link = '#'; + $tags[ $key ]->id = $tag->term_id; + } + + // We need raw tag names here, so don't filter the output + $return = wp_generate_tag_cloud( $tags, array('filter' => 0) ); + + if ( empty($return) ) + wp_die( 0 ); + + echo $return; + + wp_die(); +} + +/** + * Ajax handler for getting comments. + * + * @since 3.1.0 + * + * @global WP_List_Table $wp_list_table + * @global int $post_id + * + * @param string $action Action to perform. + */ +function wp_ajax_get_comments( $action ) { + global $wp_list_table, $post_id; + if ( empty( $action ) ) + $action = 'get-comments'; + + check_ajax_referer( $action ); + + if ( empty( $post_id ) && ! empty( $_REQUEST['p'] ) ) { + $id = absint( $_REQUEST['p'] ); + if ( ! empty( $id ) ) + $post_id = $id; + } + + if ( empty( $post_id ) ) + wp_die( -1 ); + + $wp_list_table = _get_list_table( 'WP_Post_Comments_List_Table', array( 'screen' => 'edit-comments' ) ); + + if ( ! current_user_can( 'edit_post', $post_id ) ) + wp_die( -1 ); + + $wp_list_table->prepare_items(); + + if ( !$wp_list_table->has_items() ) + wp_die( 1 ); + + $x = new WP_Ajax_Response(); + ob_start(); + foreach ( $wp_list_table->items as $comment ) { + if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) ) + continue; + get_comment( $comment ); + $wp_list_table->single_row( $comment ); + } + $comment_list_item = ob_get_clean(); + + $x->add( array( + 'what' => 'comments', + 'data' => $comment_list_item + ) ); + $x->send(); +} + +/** + * Ajax handler for replying to a comment. + * + * @since 3.1.0 + * + * @global WP_List_Table $wp_list_table + * + * @param string $action Action to perform. + */ +function wp_ajax_replyto_comment( $action ) { + global $wp_list_table; + if ( empty( $action ) ) + $action = 'replyto-comment'; + + check_ajax_referer( $action, '_ajax_nonce-replyto-comment' ); + + $comment_post_ID = (int) $_POST['comment_post_ID']; + $post = get_post( $comment_post_ID ); + if ( ! $post ) + wp_die( -1 ); + + if ( !current_user_can( 'edit_post', $comment_post_ID ) ) + wp_die( -1 ); + + if ( empty( $post->post_status ) ) + wp_die( 1 ); + elseif ( in_array($post->post_status, array('draft', 'pending', 'trash') ) ) + wp_die( __('ERROR: you are replying to a comment on a draft post.') ); + + $user = wp_get_current_user(); + if ( $user->exists() ) { + $user_ID = $user->ID; + $comment_author = wp_slash( $user->display_name ); + $comment_author_email = wp_slash( $user->user_email ); + $comment_author_url = wp_slash( $user->user_url ); + $comment_content = trim( $_POST['content'] ); + $comment_type = isset( $_POST['comment_type'] ) ? trim( $_POST['comment_type'] ) : ''; + if ( current_user_can( 'unfiltered_html' ) ) { + if ( ! isset( $_POST['_wp_unfiltered_html_comment'] ) ) + $_POST['_wp_unfiltered_html_comment'] = ''; + + if ( wp_create_nonce( 'unfiltered-html-comment' ) != $_POST['_wp_unfiltered_html_comment'] ) { + kses_remove_filters(); // start with a clean slate + kses_init_filters(); // set up the filters + } + } + } else { + wp_die( __( 'Sorry, you must be logged in to reply to a comment.' ) ); + } + + if ( '' == $comment_content ) + wp_die( __( 'ERROR: please type a comment.' ) ); + + $comment_parent = 0; + if ( isset( $_POST['comment_ID'] ) ) + $comment_parent = absint( $_POST['comment_ID'] ); + $comment_auto_approved = false; + $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID'); + + // Automatically approve parent comment. + if ( !empty($_POST['approve_parent']) ) { + $parent = get_comment( $comment_parent ); + + if ( $parent && $parent->comment_approved === '0' && $parent->comment_post_ID == $comment_post_ID ) { + if ( wp_set_comment_status( $parent->comment_ID, 'approve' ) ) + $comment_auto_approved = true; + } + } + + $comment_id = wp_new_comment( $commentdata ); + $comment = get_comment($comment_id); + if ( ! $comment ) wp_die( 1 ); + + $position = ( isset($_POST['position']) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1'; + + ob_start(); + if ( isset( $_REQUEST['mode'] ) && 'dashboard' == $_REQUEST['mode'] ) { + require_once( ABSPATH . 'wp-admin/includes/dashboard.php' ); + _wp_dashboard_recent_comments_row( $comment ); + } else { + if ( isset( $_REQUEST['mode'] ) && 'single' == $_REQUEST['mode'] ) { + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table', array( 'screen' => 'edit-comments' ) ); + } else { + $wp_list_table = _get_list_table('WP_Comments_List_Table', array( 'screen' => 'edit-comments' ) ); + } + $wp_list_table->single_row( $comment ); + } + $comment_list_item = ob_get_clean(); + + $response = array( + 'what' => 'comment', + 'id' => $comment->comment_ID, + 'data' => $comment_list_item, + 'position' => $position + ); + + if ( $comment_auto_approved ) + $response['supplemental'] = array( 'parent_approved' => $parent->comment_ID ); + + $x = new WP_Ajax_Response(); + $x->add( $response ); + $x->send(); +} + +/** + * Ajax handler for editing a comment. + * + * @since 3.1.0 + * + * @global WP_List_Table $wp_list_table + */ +function wp_ajax_edit_comment() { + global $wp_list_table; + + check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ); + + $comment_id = (int) $_POST['comment_ID']; + if ( ! current_user_can( 'edit_comment', $comment_id ) ) + wp_die( -1 ); + + if ( '' == $_POST['content'] ) + wp_die( __( 'ERROR: please type a comment.' ) ); + + if ( isset( $_POST['status'] ) ) + $_POST['comment_status'] = $_POST['status']; + edit_comment(); + + $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1'; + $checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0; + $wp_list_table = _get_list_table( $checkbox ? 'WP_Comments_List_Table' : 'WP_Post_Comments_List_Table', array( 'screen' => 'edit-comments' ) ); + + $comment = get_comment( $comment_id ); + if ( empty( $comment->comment_ID ) ) + wp_die( -1 ); + + ob_start(); + $wp_list_table->single_row( $comment ); + $comment_list_item = ob_get_clean(); + + $x = new WP_Ajax_Response(); + + $x->add( array( + 'what' => 'edit_comment', + 'id' => $comment->comment_ID, + 'data' => $comment_list_item, + 'position' => $position + )); + + $x->send(); +} + +/** + * Ajax handler for adding a menu item. + * + * @since 3.1.0 + */ +function wp_ajax_add_menu_item() { + check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' ); + + if ( ! current_user_can( 'edit_theme_options' ) ) + wp_die( -1 ); + + require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; + + // For performance reasons, we omit some object properties from the checklist. + // The following is a hacky way to restore them when adding non-custom items. + + $menu_items_data = array(); + foreach ( (array) $_POST['menu-item'] as $menu_item_data ) { + if ( + ! empty( $menu_item_data['menu-item-type'] ) && + 'custom' != $menu_item_data['menu-item-type'] && + ! empty( $menu_item_data['menu-item-object-id'] ) + ) { + switch( $menu_item_data['menu-item-type'] ) { + case 'post_type' : + $_object = get_post( $menu_item_data['menu-item-object-id'] ); + break; + + case 'taxonomy' : + $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] ); + break; + } + + $_menu_items = array_map( 'wp_setup_nav_menu_item', array( $_object ) ); + $_menu_item = reset( $_menu_items ); + + // Restore the missing menu item properties + $menu_item_data['menu-item-description'] = $_menu_item->description; + } + + $menu_items_data[] = $menu_item_data; + } + + $item_ids = wp_save_nav_menu_items( 0, $menu_items_data ); + if ( is_wp_error( $item_ids ) ) + wp_die( 0 ); + + $menu_items = array(); + + foreach ( (array) $item_ids as $menu_item_id ) { + $menu_obj = get_post( $menu_item_id ); + if ( ! empty( $menu_obj->ID ) ) { + $menu_obj = wp_setup_nav_menu_item( $menu_obj ); + $menu_obj->label = $menu_obj->title; // don't show "(pending)" in ajax-added items + $menu_items[] = $menu_obj; + } + } + + /** This filter is documented in wp-admin/includes/nav-menu.php */ + $walker_class_name = apply_filters( 'wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $_POST['menu'] ); + + if ( ! class_exists( $walker_class_name ) ) + wp_die( 0 ); + + if ( ! empty( $menu_items ) ) { + $args = array( + 'after' => '', + 'before' => '', + 'link_after' => '', + 'link_before' => '', + 'walker' => new $walker_class_name, + ); + echo walk_nav_menu_tree( $menu_items, 0, (object) $args ); + } + wp_die(); +} + +/** + * Ajax handler for adding meta. + * + * @since 3.1.0 + */ +function wp_ajax_add_meta() { + check_ajax_referer( 'add-meta', '_ajax_nonce-add-meta' ); + $c = 0; + $pid = (int) $_POST['post_id']; + $post = get_post( $pid ); + + if ( isset($_POST['metakeyselect']) || isset($_POST['metakeyinput']) ) { + if ( !current_user_can( 'edit_post', $pid ) ) + wp_die( -1 ); + if ( isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) ) + wp_die( 1 ); + + // If the post is an autodraft, save the post as a draft and then attempt to save the meta. + if ( $post->post_status == 'auto-draft' ) { + $save_POST = $_POST; // Backup $_POST + $_POST = array(); // Make it empty for edit_post() + $_POST['action'] = 'draft'; // Warning fix + $_POST['post_ID'] = $pid; + $_POST['post_type'] = $post->post_type; + $_POST['post_status'] = 'draft'; + $now = current_time('timestamp', 1); + $_POST['post_title'] = sprintf( __( 'Draft created on %1$s at %2$s' ), date( get_option( 'date_format' ), $now ), date( get_option( 'time_format' ), $now ) ); + + if ( $pid = edit_post() ) { + if ( is_wp_error( $pid ) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'meta', + 'data' => $pid + ) ); + $x->send(); + } + $_POST = $save_POST; // Now we can restore original $_POST again + if ( !$mid = add_meta( $pid ) ) + wp_die( __( 'Please provide a custom field value.' ) ); + } else { + wp_die( 0 ); + } + } elseif ( ! $mid = add_meta( $pid ) ) { + wp_die( __( 'Please provide a custom field value.' ) ); + } + + $meta = get_metadata_by_mid( 'post', $mid ); + $pid = (int) $meta->post_id; + $meta = get_object_vars( $meta ); + $x = new WP_Ajax_Response( array( + 'what' => 'meta', + 'id' => $mid, + 'data' => _list_meta_row( $meta, $c ), + 'position' => 1, + 'supplemental' => array('postid' => $pid) + ) ); + } else { // Update? + $mid = (int) key( $_POST['meta'] ); + $key = wp_unslash( $_POST['meta'][$mid]['key'] ); + $value = wp_unslash( $_POST['meta'][$mid]['value'] ); + if ( '' == trim($key) ) + wp_die( __( 'Please provide a custom field name.' ) ); + if ( '' == trim($value) ) + wp_die( __( 'Please provide a custom field value.' ) ); + if ( ! $meta = get_metadata_by_mid( 'post', $mid ) ) + wp_die( 0 ); // if meta doesn't exist + if ( is_protected_meta( $meta->meta_key, 'post' ) || is_protected_meta( $key, 'post' ) || + ! current_user_can( 'edit_post_meta', $meta->post_id, $meta->meta_key ) || + ! current_user_can( 'edit_post_meta', $meta->post_id, $key ) ) + wp_die( -1 ); + if ( $meta->meta_value != $value || $meta->meta_key != $key ) { + if ( !$u = update_metadata_by_mid( 'post', $mid, $value, $key ) ) + wp_die( 0 ); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems). + } + + $x = new WP_Ajax_Response( array( + 'what' => 'meta', + 'id' => $mid, 'old_id' => $mid, + 'data' => _list_meta_row( array( + 'meta_key' => $key, + 'meta_value' => $value, + 'meta_id' => $mid + ), $c ), + 'position' => 0, + 'supplemental' => array('postid' => $meta->post_id) + ) ); + } + $x->send(); +} + +/** + * Ajax handler for adding a user. + * + * @since 3.1.0 + * + * @global WP_List_Table $wp_list_table + * + * @param string $action Action to perform. + */ +function wp_ajax_add_user( $action ) { + global $wp_list_table; + if ( empty( $action ) ) + $action = 'add-user'; + + check_ajax_referer( $action ); + if ( ! current_user_can('create_users') ) + wp_die( -1 ); + if ( ! $user_id = edit_user() ) { + wp_die( 0 ); + } elseif ( is_wp_error( $user_id ) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'user', + 'id' => $user_id + ) ); + $x->send(); + } + $user_object = get_userdata( $user_id ); + + $wp_list_table = _get_list_table('WP_Users_List_Table'); + + $role = current( $user_object->roles ); + + $x = new WP_Ajax_Response( array( + 'what' => 'user', + 'id' => $user_id, + 'data' => $wp_list_table->single_row( $user_object, '', $role ), + 'supplemental' => array( + 'show-link' => sprintf(__( 'User %s added' ), "user-$user_id", $user_object->user_login), + 'role' => $role, + ) + ) ); + $x->send(); +} + +/** + * Ajax handler for closed post boxes. + * + * @since 3.1.0 + */ +function wp_ajax_closed_postboxes() { + check_ajax_referer( 'closedpostboxes', 'closedpostboxesnonce' ); + $closed = isset( $_POST['closed'] ) ? explode( ',', $_POST['closed']) : array(); + $closed = array_filter($closed); + + $hidden = isset( $_POST['hidden'] ) ? explode( ',', $_POST['hidden']) : array(); + $hidden = array_filter($hidden); + + $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; + + if ( $page != sanitize_key( $page ) ) + wp_die( 0 ); + + if ( ! $user = wp_get_current_user() ) + wp_die( -1 ); + + if ( is_array($closed) ) + update_user_option($user->ID, "closedpostboxes_$page", $closed, true); + + if ( is_array($hidden) ) { + $hidden = array_diff( $hidden, array('submitdiv', 'linksubmitdiv', 'manage-menu', 'create-menu') ); // postboxes that are always shown + update_user_option($user->ID, "metaboxhidden_$page", $hidden, true); + } + + wp_die( 1 ); +} + +/** + * Ajax handler for hidden columns. + * + * @since 3.1.0 + */ +function wp_ajax_hidden_columns() { + check_ajax_referer( 'screen-options-nonce', 'screenoptionnonce' ); + $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; + + if ( $page != sanitize_key( $page ) ) + wp_die( 0 ); + + if ( ! $user = wp_get_current_user() ) + wp_die( -1 ); + + $hidden = ! empty( $_POST['hidden'] ) ? explode( ',', $_POST['hidden'] ) : array(); + update_user_option( $user->ID, "manage{$page}columnshidden", $hidden, true ); + + wp_die( 1 ); +} + +/** + * Ajax handler for updating whether to display the welcome panel. + * + * @since 3.1.0 + */ +function wp_ajax_update_welcome_panel() { + check_ajax_referer( 'welcome-panel-nonce', 'welcomepanelnonce' ); + + if ( ! current_user_can( 'edit_theme_options' ) ) + wp_die( -1 ); + + update_user_meta( get_current_user_id(), 'show_welcome_panel', empty( $_POST['visible'] ) ? 0 : 1 ); + + wp_die( 1 ); +} + +/** + * Ajax handler for retrieving menu meta boxes. + * + * @since 3.1.0 + */ +function wp_ajax_menu_get_metabox() { + if ( ! current_user_can( 'edit_theme_options' ) ) + wp_die( -1 ); + + require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; + + if ( isset( $_POST['item-type'] ) && 'post_type' == $_POST['item-type'] ) { + $type = 'posttype'; + $callback = 'wp_nav_menu_item_post_type_meta_box'; + $items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); + } elseif ( isset( $_POST['item-type'] ) && 'taxonomy' == $_POST['item-type'] ) { + $type = 'taxonomy'; + $callback = 'wp_nav_menu_item_taxonomy_meta_box'; + $items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' ); + } + + if ( ! empty( $_POST['item-object'] ) && isset( $items[$_POST['item-object']] ) ) { + $menus_meta_box_object = $items[ $_POST['item-object'] ]; + + /** This filter is documented in wp-admin/includes/nav-menu.php */ + $item = apply_filters( 'nav_menu_meta_box_object', $menus_meta_box_object ); + ob_start(); + call_user_func_array($callback, array( + null, + array( + 'id' => 'add-' . $item->name, + 'title' => $item->labels->name, + 'callback' => $callback, + 'args' => $item, + ) + )); + + $markup = ob_get_clean(); + + echo wp_json_encode(array( + 'replace-id' => $type . '-' . $item->name, + 'markup' => $markup, + )); + } + + wp_die(); +} + +/** + * Ajax handler for internal linking. + * + * @since 3.1.0 + */ +function wp_ajax_wp_link_ajax() { + check_ajax_referer( 'internal-linking', '_ajax_linking_nonce' ); + + $args = array(); + + if ( isset( $_POST['search'] ) ) + $args['s'] = wp_unslash( $_POST['search'] ); + $args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1; + + require(ABSPATH . WPINC . '/class-wp-editor.php'); + $results = _WP_Editors::wp_link_query( $args ); + + if ( ! isset( $results ) ) + wp_die( 0 ); + + echo wp_json_encode( $results ); + echo "\n"; + + wp_die(); +} + +/** + * Ajax handler for menu locations save. + * + * @since 3.1.0 + */ +function wp_ajax_menu_locations_save() { + if ( ! current_user_can( 'edit_theme_options' ) ) + wp_die( -1 ); + check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' ); + if ( ! isset( $_POST['menu-locations'] ) ) + wp_die( 0 ); + set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) ); + wp_die( 1 ); +} + +/** + * Ajax handler for saving the meta box order. + * + * @since 3.1.0 + */ +function wp_ajax_meta_box_order() { + check_ajax_referer( 'meta-box-order' ); + $order = isset( $_POST['order'] ) ? (array) $_POST['order'] : false; + $page_columns = isset( $_POST['page_columns'] ) ? $_POST['page_columns'] : 'auto'; + + if ( $page_columns != 'auto' ) + $page_columns = (int) $page_columns; + + $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; + + if ( $page != sanitize_key( $page ) ) + wp_die( 0 ); + + if ( ! $user = wp_get_current_user() ) + wp_die( -1 ); + + if ( $order ) + update_user_option($user->ID, "meta-box-order_$page", $order, true); + + if ( $page_columns ) + update_user_option($user->ID, "screen_layout_$page", $page_columns, true); + + wp_die( 1 ); +} + +/** + * Ajax handler for menu quick searching. + * + * @since 3.1.0 + */ +function wp_ajax_menu_quick_search() { + if ( ! current_user_can( 'edit_theme_options' ) ) + wp_die( -1 ); + + require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; + + _wp_ajax_menu_quick_search( $_POST ); + + wp_die(); +} + +/** + * Ajax handler to retrieve a permalink. + * + * @since 3.1.0 + */ +function wp_ajax_get_permalink() { + check_ajax_referer( 'getpermalink', 'getpermalinknonce' ); + $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; + wp_die( add_query_arg( array( 'preview' => 'true' ), get_permalink( $post_id ) ) ); +} + +/** + * Ajax handler to retrieve a sample permalink. + * + * @since 3.1.0 + */ +function wp_ajax_sample_permalink() { + check_ajax_referer( 'samplepermalink', 'samplepermalinknonce' ); + $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; + $title = isset($_POST['new_title'])? $_POST['new_title'] : ''; + $slug = isset($_POST['new_slug'])? $_POST['new_slug'] : null; + wp_die( get_sample_permalink_html( $post_id, $title, $slug ) ); +} + +/** + * Ajax handler for Quick Edit saving a post from a list table. + * + * @since 3.1.0 + * + * @global WP_List_Table $wp_list_table + */ +function wp_ajax_inline_save() { + global $wp_list_table; + + check_ajax_referer( 'inlineeditnonce', '_inline_edit' ); + + if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) ) + wp_die(); + + if ( 'page' == $_POST['post_type'] ) { + if ( ! current_user_can( 'edit_page', $post_ID ) ) + wp_die( __( 'You are not allowed to edit this page.' ) ); + } else { + if ( ! current_user_can( 'edit_post', $post_ID ) ) + wp_die( __( 'You are not allowed to edit this post.' ) ); + } + + if ( $last = wp_check_post_lock( $post_ID ) ) { + $last_user = get_userdata( $last ); + $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' ); + printf( $_POST['post_type'] == 'page' ? __( 'Saving is disabled: %s is currently editing this page.' ) : __( 'Saving is disabled: %s is currently editing this post.' ), esc_html( $last_user_name ) ); + wp_die(); + } + + $data = &$_POST; + + $post = get_post( $post_ID, ARRAY_A ); + + // Since it's coming from the database. + $post = wp_slash($post); + + $data['content'] = $post['post_content']; + $data['excerpt'] = $post['post_excerpt']; + + // Rename. + $data['user_ID'] = get_current_user_id(); + + if ( isset($data['post_parent']) ) + $data['parent_id'] = $data['post_parent']; + + // Status. + if ( isset( $data['keep_private'] ) && 'private' == $data['keep_private'] ) { + $data['visibility'] = 'private'; + $data['post_status'] = 'private'; + } else { + $data['post_status'] = $data['_status']; + } + + if ( empty($data['comment_status']) ) + $data['comment_status'] = 'closed'; + if ( empty($data['ping_status']) ) + $data['ping_status'] = 'closed'; + + // Exclude terms from taxonomies that are not supposed to appear in Quick Edit. + if ( ! empty( $data['tax_input'] ) ) { + foreach ( $data['tax_input'] as $taxonomy => $terms ) { + $tax_object = get_taxonomy( $taxonomy ); + /** This filter is documented in wp-admin/includes/class-wp-posts-list-table.php */ + if ( ! apply_filters( 'quick_edit_show_taxonomy', $tax_object->show_in_quick_edit, $taxonomy, $post['post_type'] ) ) { + unset( $data['tax_input'][ $taxonomy ] ); + } + } + } + + // Hack: wp_unique_post_slug() doesn't work for drafts, so we will fake that our post is published. + if ( ! empty( $data['post_name'] ) && in_array( $post['post_status'], array( 'draft', 'pending' ) ) ) { + $post['post_status'] = 'publish'; + $data['post_name'] = wp_unique_post_slug( $data['post_name'], $post['ID'], $post['post_status'], $post['post_type'], $post['post_parent'] ); + } + + // Update the post. + edit_post(); + + $wp_list_table = _get_list_table( 'WP_Posts_List_Table', array( 'screen' => $_POST['screen'] ) ); + + $level = 0; + $request_post = array( get_post( $_POST['post_ID'] ) ); + $parent = $request_post[0]->post_parent; + + while ( $parent > 0 ) { + $parent_post = get_post( $parent ); + $parent = $parent_post->post_parent; + $level++; + } + + $wp_list_table->display_rows( array( get_post( $_POST['post_ID'] ) ), $level ); + + wp_die(); +} + +/** + * Ajax handler for quick edit saving for a term. + * + * @since 3.1.0 + * + * @global WP_List_Table $wp_list_table + */ +function wp_ajax_inline_save_tax() { + global $wp_list_table; + + check_ajax_referer( 'taxinlineeditnonce', '_inline_edit' ); + + $taxonomy = sanitize_key( $_POST['taxonomy'] ); + $tax = get_taxonomy( $taxonomy ); + if ( ! $tax ) + wp_die( 0 ); + + if ( ! current_user_can( $tax->cap->edit_terms ) ) + wp_die( -1 ); + + $wp_list_table = _get_list_table( 'WP_Terms_List_Table', array( 'screen' => 'edit-' . $taxonomy ) ); + + if ( ! isset($_POST['tax_ID']) || ! ( $id = (int) $_POST['tax_ID'] ) ) + wp_die( -1 ); + + $tag = get_term( $id, $taxonomy ); + $_POST['description'] = $tag->description; + + $updated = wp_update_term($id, $taxonomy, $_POST); + if ( $updated && !is_wp_error($updated) ) { + $tag = get_term( $updated['term_id'], $taxonomy ); + if ( !$tag || is_wp_error( $tag ) ) { + if ( is_wp_error($tag) && $tag->get_error_message() ) + wp_die( $tag->get_error_message() ); + wp_die( __( 'Item not updated.' ) ); + } + } else { + if ( is_wp_error($updated) && $updated->get_error_message() ) + wp_die( $updated->get_error_message() ); + wp_die( __( 'Item not updated.' ) ); + } + $level = 0; + $parent = $tag->parent; + while ( $parent > 0 ) { + $parent_tag = get_term( $parent, $taxonomy ); + $parent = $parent_tag->parent; + $level++; + } + $wp_list_table->single_row( $tag, $level ); + wp_die(); +} + +/** + * Ajax handler for querying posts for the Find Posts modal. + * + * @see window.findPosts + * + * @since 3.1.0 + */ +function wp_ajax_find_posts() { + check_ajax_referer( 'find-posts' ); + + $post_types = get_post_types( array( 'public' => true ), 'objects' ); + unset( $post_types['attachment'] ); + + $s = wp_unslash( $_POST['ps'] ); + $args = array( + 'post_type' => array_keys( $post_types ), + 'post_status' => 'any', + 'posts_per_page' => 50, + ); + if ( '' !== $s ) + $args['s'] = $s; + + $posts = get_posts( $args ); + + if ( ! $posts ) { + wp_send_json_error( __( 'No items found.' ) ); + } + + $html = ''; + $alt = ''; + foreach ( $posts as $post ) { + $title = trim( $post->post_title ) ? $post->post_title : __( '(no title)' ); + $alt = ( 'alternate' == $alt ) ? '' : 'alternate'; + + switch ( $post->post_status ) { + case 'publish' : + case 'private' : + $stat = __('Published'); + break; + case 'future' : + $stat = __('Scheduled'); + break; + case 'pending' : + $stat = __('Pending Review'); + break; + case 'draft' : + $stat = __('Draft'); + break; + } + + if ( '0000-00-00 00:00:00' == $post->post_date ) { + $time = ''; + } else { + /* translators: date format in table columns, see http://php.net/date */ + $time = mysql2date(__('Y/m/d'), $post->post_date); + } + + $html .= ''; + $html .= '' . "\n\n"; + } + + $html .= '

'.__('Title').''.__('Type').''.__('Date').''.__('Status').'
' . esc_html( $post_types[$post->post_type]->labels->singular_name ) . ''.esc_html( $time ) . '' . esc_html( $stat ). '
'; + + wp_send_json_success( $html ); +} + +/** + * Ajax handler for saving the widgets order. + * + * @since 3.1.0 + */ +function wp_ajax_widgets_order() { + check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' ); + + if ( !current_user_can('edit_theme_options') ) + wp_die( -1 ); + + unset( $_POST['savewidgets'], $_POST['action'] ); + + // Save widgets order for all sidebars. + if ( is_array($_POST['sidebars']) ) { + $sidebars = array(); + foreach ( $_POST['sidebars'] as $key => $val ) { + $sb = array(); + if ( !empty($val) ) { + $val = explode(',', $val); + foreach ( $val as $k => $v ) { + if ( strpos($v, 'widget-') === false ) + continue; + + $sb[$k] = substr($v, strpos($v, '_') + 1); + } + } + $sidebars[$key] = $sb; + } + wp_set_sidebars_widgets($sidebars); + wp_die( 1 ); + } + + wp_die( -1 ); +} + +/** + * Ajax handler for saving a widget. + * + * @since 3.1.0 + * + * @global array $wp_registered_widgets + * @global array $wp_registered_widget_controls + * @global array $wp_registered_widget_updates + */ +function wp_ajax_save_widget() { + global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates; + + check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' ); + + if ( !current_user_can('edit_theme_options') || !isset($_POST['id_base']) ) + wp_die( -1 ); + + unset( $_POST['savewidgets'], $_POST['action'] ); + + /** + * Fires early when editing the widgets displayed in sidebars. + * + * @since 2.8.0 + */ + do_action( 'load-widgets.php' ); + + /** + * Fires early when editing the widgets displayed in sidebars. + * + * @since 2.8.0 + */ + do_action( 'widgets.php' ); + + /** This action is documented in wp-admin/widgets.php */ + do_action( 'sidebar_admin_setup' ); + + $id_base = $_POST['id_base']; + $widget_id = $_POST['widget-id']; + $sidebar_id = $_POST['sidebar']; + $multi_number = !empty($_POST['multi_number']) ? (int) $_POST['multi_number'] : 0; + $settings = isset($_POST['widget-' . $id_base]) && is_array($_POST['widget-' . $id_base]) ? $_POST['widget-' . $id_base] : false; + $error = '

' . __('An error has occurred. Please reload the page and try again.') . '

'; + + $sidebars = wp_get_sidebars_widgets(); + $sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array(); + + // Delete. + if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) { + + if ( !isset($wp_registered_widgets[$widget_id]) ) + wp_die( $error ); + + $sidebar = array_diff( $sidebar, array($widget_id) ); + $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1'); + } elseif ( $settings && preg_match( '/__i__|%i%/', key($settings) ) ) { + if ( !$multi_number ) + wp_die( $error ); + + $_POST[ 'widget-' . $id_base ] = array( $multi_number => reset( $settings ) ); + $widget_id = $id_base . '-' . $multi_number; + $sidebar[] = $widget_id; + } + $_POST['widget-id'] = $sidebar; + + foreach ( (array) $wp_registered_widget_updates as $name => $control ) { + + if ( $name == $id_base ) { + if ( !is_callable( $control['callback'] ) ) + continue; + + ob_start(); + call_user_func_array( $control['callback'], $control['params'] ); + ob_end_clean(); + break; + } + } + + if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) { + $sidebars[$sidebar_id] = $sidebar; + wp_set_sidebars_widgets($sidebars); + echo "deleted:$widget_id"; + wp_die(); + } + + if ( !empty($_POST['add_new']) ) + wp_die(); + + if ( $form = $wp_registered_widget_controls[$widget_id] ) + call_user_func_array( $form['callback'], $form['params'] ); + + wp_die(); +} + +/** + * Ajax handler for saving a widget. + * + * @since 3.9.0 + * + * @global WP_Customize_Manager $wp_customize + */ +function wp_ajax_update_widget() { + global $wp_customize; + $wp_customize->widgets->wp_ajax_update_widget(); +} + +/** + * Ajax handler for uploading attachments + * + * @since 3.3.0 + */ +function wp_ajax_upload_attachment() { + check_ajax_referer( 'media-form' ); + /* + * This function does not use wp_send_json_success() / wp_send_json_error() + * as the html4 Plupload handler requires a text/html content-type for older IE. + * See https://core.trac.wordpress.org/ticket/31037 + */ + + if ( ! current_user_can( 'upload_files' ) ) { + echo wp_json_encode( array( + 'success' => false, + 'data' => array( + 'message' => __( "You don't have permission to upload files." ), + 'filename' => $_FILES['async-upload']['name'], + ) + ) ); + + wp_die(); + } + + if ( isset( $_REQUEST['post_id'] ) ) { + $post_id = $_REQUEST['post_id']; + if ( ! current_user_can( 'edit_post', $post_id ) ) { + echo wp_json_encode( array( + 'success' => false, + 'data' => array( + 'message' => __( "You don't have permission to attach files to this post." ), + 'filename' => $_FILES['async-upload']['name'], + ) + ) ); + + wp_die(); + } + } else { + $post_id = null; + } + + $post_data = isset( $_REQUEST['post_data'] ) ? $_REQUEST['post_data'] : array(); + + // If the context is custom header or background, make sure the uploaded file is an image. + if ( isset( $post_data['context'] ) && in_array( $post_data['context'], array( 'custom-header', 'custom-background' ) ) ) { + $wp_filetype = wp_check_filetype_and_ext( $_FILES['async-upload']['tmp_name'], $_FILES['async-upload']['name'] ); + if ( ! wp_match_mime_types( 'image', $wp_filetype['type'] ) ) { + echo wp_json_encode( array( + 'success' => false, + 'data' => array( + 'message' => __( 'The uploaded file is not a valid image. Please try again.' ), + 'filename' => $_FILES['async-upload']['name'], + ) + ) ); + + wp_die(); + } + } + + $attachment_id = media_handle_upload( 'async-upload', $post_id, $post_data ); + + if ( is_wp_error( $attachment_id ) ) { + echo wp_json_encode( array( + 'success' => false, + 'data' => array( + 'message' => $attachment_id->get_error_message(), + 'filename' => $_FILES['async-upload']['name'], + ) + ) ); + + wp_die(); + } + + if ( isset( $post_data['context'] ) && isset( $post_data['theme'] ) ) { + if ( 'custom-background' === $post_data['context'] ) + update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', $post_data['theme'] ); + + if ( 'custom-header' === $post_data['context'] ) + update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', $post_data['theme'] ); + } + + if ( ! $attachment = wp_prepare_attachment_for_js( $attachment_id ) ) + wp_die(); + + echo wp_json_encode( array( + 'success' => true, + 'data' => $attachment, + ) ); + + wp_die(); +} + +/** + * Ajax handler for image editing. + * + * @since 3.1.0 + */ +function wp_ajax_image_editor() { + $attachment_id = intval($_POST['postid']); + if ( empty($attachment_id) || !current_user_can('edit_post', $attachment_id) ) + wp_die( -1 ); + + check_ajax_referer( "image_editor-$attachment_id" ); + include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); + + $msg = false; + switch ( $_POST['do'] ) { + case 'save' : + $msg = wp_save_image($attachment_id); + $msg = wp_json_encode($msg); + wp_die( $msg ); + break; + case 'scale' : + $msg = wp_save_image($attachment_id); + break; + case 'restore' : + $msg = wp_restore_image($attachment_id); + break; + } + + wp_image_editor($attachment_id, $msg); + wp_die(); +} + +/** + * Ajax handler for setting the featured image. + * + * @since 3.1.0 + */ +function wp_ajax_set_post_thumbnail() { + $json = ! empty( $_REQUEST['json'] ); // New-style request + + $post_ID = intval( $_POST['post_id'] ); + if ( ! current_user_can( 'edit_post', $post_ID ) ) + wp_die( -1 ); + + $thumbnail_id = intval( $_POST['thumbnail_id'] ); + + if ( $json ) + check_ajax_referer( "update-post_$post_ID" ); + else + check_ajax_referer( "set_post_thumbnail-$post_ID" ); + + if ( $thumbnail_id == '-1' ) { + if ( delete_post_thumbnail( $post_ID ) ) { + $return = _wp_post_thumbnail_html( null, $post_ID ); + $json ? wp_send_json_success( $return ) : wp_die( $return ); + } else { + wp_die( 0 ); + } + } + + if ( set_post_thumbnail( $post_ID, $thumbnail_id ) ) { + $return = _wp_post_thumbnail_html( $thumbnail_id, $post_ID ); + $json ? wp_send_json_success( $return ) : wp_die( $return ); + } + + wp_die( 0 ); +} + +/** + * AJAX handler for setting the featured image for an attachment. + * + * @since 4.0.0 + * + * @see set_post_thumbnail() + */ +function wp_ajax_set_attachment_thumbnail() { + if ( empty( $_POST['urls'] ) || ! is_array( $_POST['urls'] ) ) { + wp_send_json_error(); + } + + $thumbnail_id = (int) $_POST['thumbnail_id']; + if ( empty( $thumbnail_id ) ) { + wp_send_json_error(); + } + + $post_ids = array(); + // For each URL, try to find its corresponding post ID. + foreach ( $_POST['urls'] as $url ) { + $post_id = attachment_url_to_postid( $url ); + if ( ! empty( $post_id ) ) { + $post_ids[] = $post_id; + } + } + + if ( empty( $post_ids ) ) { + wp_send_json_error(); + } + + $success = 0; + // For each found attachment, set its thumbnail. + foreach ( $post_ids as $post_id ) { + if ( ! current_user_can( 'edit_post', $post_id ) ) { + continue; + } + + if ( set_post_thumbnail( $post_id, $thumbnail_id ) ) { + $success++; + } + } + + if ( 0 === $success ) { + wp_send_json_error(); + } else { + wp_send_json_success(); + } + + wp_send_json_error(); +} + +/** + * Ajax handler for date formatting. + * + * @since 3.1.0 + */ +function wp_ajax_date_format() { + wp_die( date_i18n( sanitize_option( 'date_format', wp_unslash( $_POST['date'] ) ) ) ); +} + +/** + * Ajax handler for time formatting. + * + * @since 3.1.0 + */ +function wp_ajax_time_format() { + wp_die( date_i18n( sanitize_option( 'time_format', wp_unslash( $_POST['date'] ) ) ) ); +} + +/** + * Ajax handler for saving posts from the fullscreen editor. + * + * @since 3.1.0 + * @deprecated 4.3.0 + */ +function wp_ajax_wp_fullscreen_save_post() { + $post_id = isset( $_POST['post_ID'] ) ? (int) $_POST['post_ID'] : 0; + + $post = null; + + if ( $post_id ) + $post = get_post( $post_id ); + + check_ajax_referer('update-post_' . $post_id, '_wpnonce'); + + $post_id = edit_post(); + + if ( is_wp_error( $post_id ) ) { + wp_send_json_error(); + } + + if ( $post ) { + $last_date = mysql2date( get_option('date_format'), $post->post_modified ); + $last_time = mysql2date( get_option('time_format'), $post->post_modified ); + } else { + $last_date = date_i18n( get_option('date_format') ); + $last_time = date_i18n( get_option('time_format') ); + } + + if ( $last_id = get_post_meta( $post_id, '_edit_last', true ) ) { + $last_user = get_userdata( $last_id ); + $last_edited = sprintf( __('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), $last_date, $last_time ); + } else { + $last_edited = sprintf( __('Last edited on %1$s at %2$s'), $last_date, $last_time ); + } + + wp_send_json_success( array( 'last_edited' => $last_edited ) ); +} + +/** + * Ajax handler for removing a post lock. + * + * @since 3.1.0 + */ +function wp_ajax_wp_remove_post_lock() { + if ( empty( $_POST['post_ID'] ) || empty( $_POST['active_post_lock'] ) ) + wp_die( 0 ); + $post_id = (int) $_POST['post_ID']; + if ( ! $post = get_post( $post_id ) ) + wp_die( 0 ); + + check_ajax_referer( 'update-post_' . $post_id ); + + if ( ! current_user_can( 'edit_post', $post_id ) ) + wp_die( -1 ); + + $active_lock = array_map( 'absint', explode( ':', $_POST['active_post_lock'] ) ); + if ( $active_lock[1] != get_current_user_id() ) + wp_die( 0 ); + + /** + * Filter the post lock window duration. + * + * @since 3.3.0 + * + * @param int $interval The interval in seconds the post lock duration + * should last, plus 5 seconds. Default 150. + */ + $new_lock = ( time() - apply_filters( 'wp_check_post_lock_window', 150 ) + 5 ) . ':' . $active_lock[1]; + update_post_meta( $post_id, '_edit_lock', $new_lock, implode( ':', $active_lock ) ); + wp_die( 1 ); +} + +/** + * Ajax handler for dismissing a WordPress pointer. + * + * @since 3.1.0 + */ +function wp_ajax_dismiss_wp_pointer() { + $pointer = $_POST['pointer']; + if ( $pointer != sanitize_key( $pointer ) ) + wp_die( 0 ); + +// check_ajax_referer( 'dismiss-pointer_' . $pointer ); + + $dismissed = array_filter( explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ) ); + + if ( in_array( $pointer, $dismissed ) ) + wp_die( 0 ); + + $dismissed[] = $pointer; + $dismissed = implode( ',', $dismissed ); + + update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed ); + wp_die( 1 ); +} + +/** + * Ajax handler for getting an attachment. + * + * @since 3.5.0 + */ +function wp_ajax_get_attachment() { + if ( ! isset( $_REQUEST['id'] ) ) + wp_send_json_error(); + + if ( ! $id = absint( $_REQUEST['id'] ) ) + wp_send_json_error(); + + if ( ! $post = get_post( $id ) ) + wp_send_json_error(); + + if ( 'attachment' != $post->post_type ) + wp_send_json_error(); + + if ( ! current_user_can( 'upload_files' ) ) + wp_send_json_error(); + + if ( ! $attachment = wp_prepare_attachment_for_js( $id ) ) + wp_send_json_error(); + + wp_send_json_success( $attachment ); +} + +/** + * Ajax handler for querying attachments. + * + * @since 3.5.0 + */ +function wp_ajax_query_attachments() { + if ( ! current_user_can( 'upload_files' ) ) + wp_send_json_error(); + + $query = isset( $_REQUEST['query'] ) ? (array) $_REQUEST['query'] : array(); + $keys = array( + 's', 'order', 'orderby', 'posts_per_page', 'paged', 'post_mime_type', + 'post_parent', 'post__in', 'post__not_in', 'year', 'monthnum' + ); + foreach ( get_taxonomies_for_attachments( 'objects' ) as $t ) { + if ( $t->query_var && isset( $query[ $t->query_var ] ) ) { + $keys[] = $t->query_var; + } + } + + $query = array_intersect_key( $query, array_flip( $keys ) ); + $query['post_type'] = 'attachment'; + if ( MEDIA_TRASH + && ! empty( $_REQUEST['query']['post_status'] ) + && 'trash' === $_REQUEST['query']['post_status'] ) { + $query['post_status'] = 'trash'; + } else { + $query['post_status'] = 'inherit'; + } + + if ( current_user_can( get_post_type_object( 'attachment' )->cap->read_private_posts ) ) + $query['post_status'] .= ',private'; + + /** + * Filter the arguments passed to WP_Query during an AJAX + * call for querying attachments. + * + * @since 3.7.0 + * + * @see WP_Query::parse_query() + * + * @param array $query An array of query variables. + */ + $query = apply_filters( 'ajax_query_attachments_args', $query ); + $query = new WP_Query( $query ); + + $posts = array_map( 'wp_prepare_attachment_for_js', $query->posts ); + $posts = array_filter( $posts ); + + wp_send_json_success( $posts ); +} + +/** + * Ajax handler for updating attachment attributes. + * + * @since 3.5.0 + */ +function wp_ajax_save_attachment() { + if ( ! isset( $_REQUEST['id'] ) || ! isset( $_REQUEST['changes'] ) ) + wp_send_json_error(); + + if ( ! $id = absint( $_REQUEST['id'] ) ) + wp_send_json_error(); + + check_ajax_referer( 'update-post_' . $id, 'nonce' ); + + if ( ! current_user_can( 'edit_post', $id ) ) + wp_send_json_error(); + + $changes = $_REQUEST['changes']; + $post = get_post( $id, ARRAY_A ); + + if ( 'attachment' != $post['post_type'] ) + wp_send_json_error(); + + if ( isset( $changes['parent'] ) ) + $post['post_parent'] = $changes['parent']; + + if ( isset( $changes['title'] ) ) + $post['post_title'] = $changes['title']; + + if ( isset( $changes['caption'] ) ) + $post['post_excerpt'] = $changes['caption']; + + if ( isset( $changes['description'] ) ) + $post['post_content'] = $changes['description']; + + if ( MEDIA_TRASH && isset( $changes['status'] ) ) + $post['post_status'] = $changes['status']; + + if ( isset( $changes['alt'] ) ) { + $alt = wp_unslash( $changes['alt'] ); + if ( $alt != get_post_meta( $id, '_wp_attachment_image_alt', true ) ) { + $alt = wp_strip_all_tags( $alt, true ); + update_post_meta( $id, '_wp_attachment_image_alt', wp_slash( $alt ) ); + } + } + + if ( wp_attachment_is( 'audio', $post['ID'] ) ) { + $changed = false; + $id3data = wp_get_attachment_metadata( $post['ID'] ); + if ( ! is_array( $id3data ) ) { + $changed = true; + $id3data = array(); + } + foreach ( wp_get_attachment_id3_keys( (object) $post, 'edit' ) as $key => $label ) { + if ( isset( $changes[ $key ] ) ) { + $changed = true; + $id3data[ $key ] = sanitize_text_field( wp_unslash( $changes[ $key ] ) ); + } + } + + if ( $changed ) { + wp_update_attachment_metadata( $id, $id3data ); + } + } + + if ( MEDIA_TRASH && isset( $changes['status'] ) && 'trash' === $changes['status'] ) { + wp_delete_post( $id ); + } else { + wp_update_post( $post ); + } + + wp_send_json_success(); +} + +/** + * Ajax handler for saving backwards compatible attachment attributes. + * + * @since 3.5.0 + */ +function wp_ajax_save_attachment_compat() { + if ( ! isset( $_REQUEST['id'] ) ) + wp_send_json_error(); + + if ( ! $id = absint( $_REQUEST['id'] ) ) + wp_send_json_error(); + + if ( empty( $_REQUEST['attachments'] ) || empty( $_REQUEST['attachments'][ $id ] ) ) + wp_send_json_error(); + $attachment_data = $_REQUEST['attachments'][ $id ]; + + check_ajax_referer( 'update-post_' . $id, 'nonce' ); + + if ( ! current_user_can( 'edit_post', $id ) ) + wp_send_json_error(); + + $post = get_post( $id, ARRAY_A ); + + if ( 'attachment' != $post['post_type'] ) + wp_send_json_error(); + + /** This filter is documented in wp-admin/includes/media.php */ + $post = apply_filters( 'attachment_fields_to_save', $post, $attachment_data ); + + if ( isset( $post['errors'] ) ) { + $errors = $post['errors']; // @todo return me and display me! + unset( $post['errors'] ); + } + + wp_update_post( $post ); + + foreach ( get_attachment_taxonomies( $post ) as $taxonomy ) { + if ( isset( $attachment_data[ $taxonomy ] ) ) + wp_set_object_terms( $id, array_map( 'trim', preg_split( '/,+/', $attachment_data[ $taxonomy ] ) ), $taxonomy, false ); + } + + if ( ! $attachment = wp_prepare_attachment_for_js( $id ) ) + wp_send_json_error(); + + wp_send_json_success( $attachment ); +} + +/** + * Ajax handler for saving the attachment order. + * + * @since 3.5.0 + */ +function wp_ajax_save_attachment_order() { + if ( ! isset( $_REQUEST['post_id'] ) ) + wp_send_json_error(); + + if ( ! $post_id = absint( $_REQUEST['post_id'] ) ) + wp_send_json_error(); + + if ( empty( $_REQUEST['attachments'] ) ) + wp_send_json_error(); + + check_ajax_referer( 'update-post_' . $post_id, 'nonce' ); + + $attachments = $_REQUEST['attachments']; + + if ( ! current_user_can( 'edit_post', $post_id ) ) + wp_send_json_error(); + + foreach ( $attachments as $attachment_id => $menu_order ) { + if ( ! current_user_can( 'edit_post', $attachment_id ) ) + continue; + if ( ! $attachment = get_post( $attachment_id ) ) + continue; + if ( 'attachment' != $attachment->post_type ) + continue; + + wp_update_post( array( 'ID' => $attachment_id, 'menu_order' => $menu_order ) ); + } + + wp_send_json_success(); +} + +/** + * Ajax handler for sending an attachment to the editor. + * + * Generates the HTML to send an attachment to the editor. + * Backwards compatible with the media_send_to_editor filter + * and the chain of filters that follow. + * + * @since 3.5.0 + */ +function wp_ajax_send_attachment_to_editor() { + check_ajax_referer( 'media-send-to-editor', 'nonce' ); + + $attachment = wp_unslash( $_POST['attachment'] ); + + $id = intval( $attachment['id'] ); + + if ( ! $post = get_post( $id ) ) + wp_send_json_error(); + + if ( 'attachment' != $post->post_type ) + wp_send_json_error(); + + if ( current_user_can( 'edit_post', $id ) ) { + // If this attachment is unattached, attach it. Primarily a back compat thing. + if ( 0 == $post->post_parent && $insert_into_post_id = intval( $_POST['post_id'] ) ) { + wp_update_post( array( 'ID' => $id, 'post_parent' => $insert_into_post_id ) ); + } + } + + $rel = $url = ''; + $html = isset( $attachment['post_title'] ) ? $attachment['post_title'] : ''; + if ( ! empty( $attachment['url'] ) ) { + $url = $attachment['url']; + if ( strpos( $url, 'attachment_id') || get_attachment_link( $id ) == $url ) + $rel = ' rel="attachment wp-att-' . $id . '"'; + $html = '' . $html . ''; + } + + remove_filter( 'media_send_to_editor', 'image_media_send_to_editor' ); + + if ( 'image' === substr( $post->post_mime_type, 0, 5 ) ) { + $align = isset( $attachment['align'] ) ? $attachment['align'] : 'none'; + $size = isset( $attachment['image-size'] ) ? $attachment['image-size'] : 'medium'; + $alt = isset( $attachment['image_alt'] ) ? $attachment['image_alt'] : ''; + + // No whitespace-only captions. + $caption = isset( $attachment['post_excerpt'] ) ? $attachment['post_excerpt'] : ''; + if ( '' === trim( $caption ) ) { + $caption = ''; + } + + $title = ''; // We no longer insert title tags into tags, as they are redundant. + $html = get_image_send_to_editor( $id, $caption, $title, $align, $url, (bool) $rel, $size, $alt ); + } elseif ( wp_attachment_is( 'video', $post ) || wp_attachment_is( 'audio', $post ) ) { + $html = stripslashes_deep( $_POST['html'] ); + } + + /** This filter is documented in wp-admin/includes/media.php */ + $html = apply_filters( 'media_send_to_editor', $html, $id, $attachment ); + + wp_send_json_success( $html ); +} + +/** + * Ajax handler for sending a link to the editor. + * + * Generates the HTML to send a non-image embed link to the editor. + * + * Backwards compatible with the following filters: + * - file_send_to_editor_url + * - audio_send_to_editor_url + * - video_send_to_editor_url + * + * @since 3.5.0 + * + * @global WP_Post $post + * @global WP_Embed $wp_embed + */ +function wp_ajax_send_link_to_editor() { + global $post, $wp_embed; + + check_ajax_referer( 'media-send-to-editor', 'nonce' ); + + if ( ! $src = wp_unslash( $_POST['src'] ) ) + wp_send_json_error(); + + if ( ! strpos( $src, '://' ) ) + $src = 'http://' . $src; + + if ( ! $src = esc_url_raw( $src ) ) + wp_send_json_error(); + + if ( ! $link_text = trim( wp_unslash( $_POST['link_text'] ) ) ) + $link_text = wp_basename( $src ); + + $post = get_post( isset( $_POST['post_id'] ) ? $_POST['post_id'] : 0 ); + + // Ping WordPress for an embed. + $check_embed = $wp_embed->run_shortcode( '[embed]'. $src .'[/embed]' ); + + // Fallback that WordPress creates when no oEmbed was found. + $fallback = $wp_embed->maybe_make_link( $src ); + + if ( $check_embed !== $fallback ) { + // TinyMCE view for [embed] will parse this + $html = '[embed]' . $src . '[/embed]'; + } elseif ( $link_text ) { + $html = '' . $link_text . ''; + } else { + $html = ''; + } + + // Figure out what filter to run: + $type = 'file'; + if ( ( $ext = preg_replace( '/^.+?\.([^.]+)$/', '$1', $src ) ) && ( $ext_type = wp_ext2type( $ext ) ) + && ( 'audio' == $ext_type || 'video' == $ext_type ) ) + $type = $ext_type; + + /** This filter is documented in wp-admin/includes/media.php */ + $html = apply_filters( $type . '_send_to_editor_url', $html, $src, $link_text ); + + wp_send_json_success( $html ); +} + +/** + * Ajax handler for the Heartbeat API. + * + * Runs when the user is logged in. + * + * @since 3.6.0 + */ +function wp_ajax_heartbeat() { + if ( empty( $_POST['_nonce'] ) ) { + wp_send_json_error(); + } + + $response = $data = array(); + $nonce_state = wp_verify_nonce( $_POST['_nonce'], 'heartbeat-nonce' ); + + // screen_id is the same as $current_screen->id and the JS global 'pagenow'. + if ( ! empty( $_POST['screen_id'] ) ) { + $screen_id = sanitize_key($_POST['screen_id']); + } else { + $screen_id = 'front'; + } + + if ( ! empty( $_POST['data'] ) ) { + $data = wp_unslash( (array) $_POST['data'] ); + } + + if ( 1 !== $nonce_state ) { + $response = apply_filters( 'wp_refresh_nonces', $response, $data, $screen_id ); + + if ( false === $nonce_state ) { + // User is logged in but nonces have expired. + $response['nonces_expired'] = true; + wp_send_json( $response ); + } + } + + if ( ! empty( $data ) ) { + /** + * Filter the Heartbeat response received. + * + * @since 3.6.0 + * + * @param array|object $response The Heartbeat response object or array. + * @param array $data The $_POST data sent. + * @param string $screen_id The screen id. + */ + $response = apply_filters( 'heartbeat_received', $response, $data, $screen_id ); + } + + /** + * Filter the Heartbeat response sent. + * + * @since 3.6.0 + * + * @param array|object $response The Heartbeat response object or array. + * @param string $screen_id The screen id. + */ + $response = apply_filters( 'heartbeat_send', $response, $screen_id ); + + /** + * Fires when Heartbeat ticks in logged-in environments. + * + * Allows the transport to be easily replaced with long-polling. + * + * @since 3.6.0 + * + * @param array|object $response The Heartbeat response object or array. + * @param string $screen_id The screen id. + */ + do_action( 'heartbeat_tick', $response, $screen_id ); + + // Send the current time according to the server + $response['server_time'] = time(); + + wp_send_json( $response ); +} + +/** + * Ajax handler for getting revision diffs. + * + * @since 3.6.0 + */ +function wp_ajax_get_revision_diffs() { + require ABSPATH . 'wp-admin/includes/revision.php'; + + if ( ! $post = get_post( (int) $_REQUEST['post_id'] ) ) + wp_send_json_error(); + + if ( ! current_user_can( 'read_post', $post->ID ) ) + wp_send_json_error(); + + // Really just pre-loading the cache here. + if ( ! $revisions = wp_get_post_revisions( $post->ID, array( 'check_enabled' => false ) ) ) + wp_send_json_error(); + + $return = array(); + @set_time_limit( 0 ); + + foreach ( $_REQUEST['compare'] as $compare_key ) { + list( $compare_from, $compare_to ) = explode( ':', $compare_key ); // from:to + + $return[] = array( + 'id' => $compare_key, + 'fields' => wp_get_revision_ui_diff( $post, $compare_from, $compare_to ), + ); + } + wp_send_json_success( $return ); +} + +/** + * Ajax handler for auto-saving the selected color scheme for + * a user's own profile. + * + * @since 3.8.0 + * + * @global array $_wp_admin_css_colors + */ +function wp_ajax_save_user_color_scheme() { + global $_wp_admin_css_colors; + + check_ajax_referer( 'save-color-scheme', 'nonce' ); + + $color_scheme = sanitize_key( $_POST['color_scheme'] ); + + if ( ! isset( $_wp_admin_css_colors[ $color_scheme ] ) ) { + wp_send_json_error(); + } + + $previous_color_scheme = get_user_meta( get_current_user_id(), 'admin_color', true ); + update_user_meta( get_current_user_id(), 'admin_color', $color_scheme ); + + wp_send_json_success( array( + 'previousScheme' => 'admin-color-' . $previous_color_scheme, + 'currentScheme' => 'admin-color-' . $color_scheme + ) ); +} + +/** + * Ajax handler for getting themes from themes_api(). + * + * @since 3.9.0 + * + * @global array $themes_allowedtags + * @global array $theme_field_defaults + */ +function wp_ajax_query_themes() { + global $themes_allowedtags, $theme_field_defaults; + + if ( ! current_user_can( 'install_themes' ) ) { + wp_send_json_error(); + } + + $args = wp_parse_args( wp_unslash( $_REQUEST['request'] ), array( + 'per_page' => 20, + 'fields' => $theme_field_defaults + ) ); + + $old_filter = isset( $args['browse'] ) ? $args['browse'] : 'search'; + + /** This filter is documented in wp-admin/includes/class-wp-theme-install-list-table.php */ + $args = apply_filters( 'install_themes_table_api_args_' . $old_filter, $args ); + + $api = themes_api( 'query_themes', $args ); + + if ( is_wp_error( $api ) ) { + wp_send_json_error(); + } + + $update_php = network_admin_url( 'update.php?action=install-theme' ); + foreach ( $api->themes as &$theme ) { + $theme->install_url = add_query_arg( array( + 'theme' => $theme->slug, + '_wpnonce' => wp_create_nonce( 'install-theme_' . $theme->slug ) + ), $update_php ); + + $theme->name = wp_kses( $theme->name, $themes_allowedtags ); + $theme->author = wp_kses( $theme->author, $themes_allowedtags ); + $theme->version = wp_kses( $theme->version, $themes_allowedtags ); + $theme->description = wp_kses( $theme->description, $themes_allowedtags ); + $theme->num_ratings = sprintf( _n( '(based on %s rating)', '(based on %s ratings)', $theme->num_ratings ), number_format_i18n( $theme->num_ratings ) ); + $theme->preview_url = set_url_scheme( $theme->preview_url ); + } + + wp_send_json_success( $api ); +} + +/** + * Apply [embed] AJAX handlers to a string. + * + * @since 4.0.0 + * + * @global WP_Post $post Global $post. + * @global WP_Embed $wp_embed Embed API instance. + * @global WP_Scripts $wp_scripts + */ +function wp_ajax_parse_embed() { + global $post, $wp_embed; + + if ( ! $post = get_post( (int) $_POST['post_ID'] ) ) { + wp_send_json_error(); + } + + if ( empty( $_POST['shortcode'] ) || ! current_user_can( 'edit_post', $post->ID ) ) { + wp_send_json_error(); + } + + $shortcode = wp_unslash( $_POST['shortcode'] ); + + preg_match( '/' . get_shortcode_regex() . '/s', $shortcode, $matches ); + $atts = shortcode_parse_atts( $matches[3] ); + if ( ! empty( $matches[5] ) ) { + $url = $matches[5]; + } elseif ( ! empty( $atts['src'] ) ) { + $url = $atts['src']; + } else { + $url = ''; + } + + $parsed = false; + setup_postdata( $post ); + + $wp_embed->return_false_on_fail = true; + + if ( is_ssl() && 0 === strpos( $url, 'http://' ) ) { + // Admin is ssl and the user pasted non-ssl URL. + // Check if the provider supports ssl embeds and use that for the preview. + $ssl_shortcode = preg_replace( '%^(\\[embed[^\\]]*\\])http://%i', '$1https://', $shortcode ); + $parsed = $wp_embed->run_shortcode( $ssl_shortcode ); + + if ( ! $parsed ) { + $no_ssl_support = true; + } + } + + if ( $url && ! $parsed ) { + $parsed = $wp_embed->run_shortcode( $shortcode ); + } + + if ( ! $parsed ) { + wp_send_json_error( array( + 'type' => 'not-embeddable', + 'message' => sprintf( __( '%s failed to embed.' ), '' . esc_html( $url ) . '' ), + ) ); + } + + if ( has_shortcode( $parsed, 'audio' ) || has_shortcode( $parsed, 'video' ) ) { + $styles = ''; + $mce_styles = wpview_media_sandbox_styles(); + foreach ( $mce_styles as $style ) { + $styles .= sprintf( '', $style ); + } + + $html = do_shortcode( $parsed ); + + global $wp_scripts; + if ( ! empty( $wp_scripts ) ) { + $wp_scripts->done = array(); + } + ob_start(); + wp_print_scripts( 'wp-mediaelement' ); + $scripts = ob_get_clean(); + + $parsed = $styles . $html . $scripts; + } + + + if ( ! empty( $no_ssl_support ) || ( is_ssl() && ( preg_match( '%<(iframe|script|embed) [^>]*src="http://%', $parsed ) || + preg_match( '%]*href="http://%', $parsed ) ) ) ) { + // Admin is ssl and the embed is not. Iframes, scripts, and other "active content" will be blocked. + wp_send_json_error( array( + 'type' => 'not-ssl', + 'message' => __( 'This preview is unavailable in the editor.' ), + ) ); + } + + wp_send_json_success( array( + 'body' => $parsed, + 'attr' => $wp_embed->last_attr + ) ); +} + +/** + * @since 4.0.0 + * + * @global WP_Post $post + * @global WP_Scripts $wp_scripts + */ +function wp_ajax_parse_media_shortcode() { + global $post, $wp_scripts; + + if ( empty( $_POST['shortcode'] ) ) { + wp_send_json_error(); + } + + $shortcode = wp_unslash( $_POST['shortcode'] ); + + if ( ! empty( $_POST['post_ID'] ) ) { + $post = get_post( (int) $_POST['post_ID'] ); + } + + // the embed shortcode requires a post + if ( ! $post || ! current_user_can( 'edit_post', $post->ID ) ) { + if ( 'embed' === $shortcode ) { + wp_send_json_error(); + } + } else { + setup_postdata( $post ); + } + + $parsed = do_shortcode( $shortcode ); + + if ( empty( $parsed ) ) { + wp_send_json_error( array( + 'type' => 'no-items', + 'message' => __( 'No items found.' ), + ) ); + } + + $head = ''; + $styles = wpview_media_sandbox_styles(); + + foreach ( $styles as $style ) { + $head .= ''; + } + + if ( ! empty( $wp_scripts ) ) { + $wp_scripts->done = array(); + } + + ob_start(); + + echo $parsed; + + if ( 'playlist' === $_REQUEST['type'] ) { + wp_underscore_playlist_templates(); + + wp_print_scripts( 'wp-playlist' ); + } else { + wp_print_scripts( array( 'froogaloop', 'wp-mediaelement' ) ); + } + + wp_send_json_success( array( + 'head' => $head, + 'body' => ob_get_clean() + ) ); +} + +/** + * AJAX handler for destroying multiple open sessions for a user. + * + * @since 4.1.0 + */ +function wp_ajax_destroy_sessions() { + $user = get_userdata( (int) $_POST['user_id'] ); + if ( $user ) { + if ( ! current_user_can( 'edit_user', $user->ID ) ) { + $user = false; + } elseif ( ! wp_verify_nonce( $_POST['nonce'], 'update-user_' . $user->ID ) ) { + $user = false; + } + } + + if ( ! $user ) { + wp_send_json_error( array( + 'message' => __( 'Could not log out user sessions. Please try again.' ), + ) ); + } + + $sessions = WP_Session_Tokens::get_instance( $user->ID ); + + if ( $user->ID === get_current_user_id() ) { + $sessions->destroy_others( wp_get_session_token() ); + $message = __( 'You are now logged out everywhere else.' ); + } else { + $sessions->destroy_all(); + /* translators: 1: User's display name. */ + $message = sprintf( __( '%s has been logged out.' ), $user->display_name ); + } + + wp_send_json_success( array( 'message' => $message ) ); +} + + +/** + * AJAX handler for updating a plugin. + * + * @since 4.2.0 + * + * @see Plugin_Upgrader + */ +function wp_ajax_update_plugin() { + global $wp_filesystem; + + $plugin = urldecode( $_POST['plugin'] ); + + $status = array( + 'update' => 'plugin', + 'plugin' => $plugin, + 'slug' => sanitize_key( $_POST['slug'] ), + 'oldVersion' => '', + 'newVersion' => '', + ); + + $plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ); + if ( $plugin_data['Version'] ) { + $status['oldVersion'] = sprintf( __( 'Version %s' ), $plugin_data['Version'] ); + } + + if ( ! current_user_can( 'update_plugins' ) ) { + $status['error'] = __( 'You do not have sufficient permissions to update plugins for this site.' ); + wp_send_json_error( $status ); + } + + check_ajax_referer( 'updates' ); + + include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); + + wp_update_plugins(); + + $skin = new Automatic_Upgrader_Skin(); + $upgrader = new Plugin_Upgrader( $skin ); + $result = $upgrader->bulk_upgrade( array( $plugin ) ); + + if ( is_array( $result ) && empty( $result[$plugin] ) && is_wp_error( $skin->result ) ) { + $result = $skin->result; + } + + if ( is_array( $result ) && !empty( $result[ $plugin ] ) ) { + $plugin_update_data = current( $result ); + + /* + * If the `update_plugins` site transient is empty (e.g. when you update + * two plugins in quick succession before the transient repopulates), + * this may be the return. + * + * Preferably something can be done to ensure `update_plugins` isn't empty. + * For now, surface some sort of error here. + */ + if ( $plugin_update_data === true ) { + wp_send_json_error( $status ); + } + + $plugin_data = get_plugins( '/' . $result[ $plugin ]['destination_name'] ); + $plugin_data = reset( $plugin_data ); + + if ( $plugin_data['Version'] ) { + $status['newVersion'] = sprintf( __( 'Version %s' ), $plugin_data['Version'] ); + } + + wp_send_json_success( $status ); + } else if ( is_wp_error( $result ) ) { + $status['error'] = $result->get_error_message(); + wp_send_json_error( $status ); + + } else if ( is_bool( $result ) && ! $result ) { + $status['errorCode'] = 'unable_to_connect_to_filesystem'; + $status['error'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.' ); + + // Pass through the error from WP_Filesystem if one was raised + if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) { + $status['error'] = $wp_filesystem->errors->get_error_message(); + } + + wp_send_json_error( $status ); + + } +} + +/** + * AJAX handler for saving a post from Press This. + * + * @since 4.2.0 + * + * @global WP_Press_This $wp_press_this + */ +function wp_ajax_press_this_save_post() { + if ( empty( $GLOBALS['wp_press_this'] ) ) { + include( ABSPATH . 'wp-admin/includes/class-wp-press-this.php' ); + } + + $GLOBALS['wp_press_this']->save_post(); +} + +/** + * AJAX handler for creating new category from Press This. + * + * @since 4.2.0 + * + * @global WP_Press_This $wp_press_this + */ +function wp_ajax_press_this_add_category() { + if ( empty( $GLOBALS['wp_press_this'] ) ) { + include( ABSPATH . 'wp-admin/includes/class-wp-press-this.php' ); + } + + $GLOBALS['wp_press_this']->add_category(); +} + +/** + * AJAX handler for cropping an image. + * + * @since 4.3.0 + * + * @global WP_Site_Icon $wp_site_icon + */ +function wp_ajax_crop_image() { + $attachment_id = absint( $_POST['id'] ); + + check_ajax_referer( 'image_editor-' . $attachment_id, 'nonce' ); + if ( ! current_user_can( 'customize' ) ) { + wp_send_json_error(); + } + + $context = str_replace( '_', '-', $_POST['context'] ); + $data = array_map( 'absint', $_POST['cropDetails'] ); + $cropped = wp_crop_image( $attachment_id, $data['x1'], $data['y1'], $data['width'], $data['height'], $data['dst_width'], $data['dst_height'] ); + + if ( ! $cropped || is_wp_error( $cropped ) ) { + wp_send_json_error( array( 'message' => __( 'Image could not be processed.' ) ) ); + } + + switch ( $context ) { + case 'site-icon': + require_once ABSPATH . '/wp-admin/includes/class-wp-site-icon.php'; + global $wp_site_icon; + + // Skip creating a new attachment if the attachment is a Site Icon. + if ( get_post_meta( $attachment_id, '_wp_attachment_context', true ) == $context ) { + + // Delete the temporary cropped file, we don't need it. + wp_delete_file( $cropped ); + + // Additional sizes in wp_prepare_attachment_for_js(). + add_filter( 'image_size_names_choose', array( $wp_site_icon, 'additional_sizes' ) ); + break; + } + + /** This filter is documented in wp-admin/custom-header.php */ + $cropped = apply_filters( 'wp_create_file_in_uploads', $cropped, $attachment_id ); // For replication. + $object = $wp_site_icon->create_attachment_object( $cropped, $attachment_id ); + unset( $object['ID'] ); + + // Update the attachment. + add_filter( 'intermediate_image_sizes_advanced', array( $wp_site_icon, 'additional_sizes' ) ); + $attachment_id = $wp_site_icon->insert_attachment( $object, $cropped ); + remove_filter( 'intermediate_image_sizes_advanced', array( $wp_site_icon, 'additional_sizes' ) ); + + // Additional sizes in wp_prepare_attachment_for_js(). + add_filter( 'image_size_names_choose', array( $wp_site_icon, 'additional_sizes' ) ); + break; + + default: + + /** + * Fires before a cropped image is saved. + * + * Allows to add filters to modify the way a cropped image is saved. + * + * @since 4.3.0 + * + * @param string $context The Customizer control requesting the cropped image. + * @param int $attachment_id The attachment ID of the original image. + * @param string $cropped Path to the cropped image file. + */ + do_action( 'wp_ajax_crop_image_pre_save', $context, $attachment_id, $cropped ); + + /** This filter is documented in wp-admin/custom-header.php */ + $cropped = apply_filters( 'wp_create_file_in_uploads', $cropped, $attachment_id ); // For replication. + + $parent_url = get_post( $attachment_id )->guid; + $url = str_replace( basename( $parent_url ), basename( $cropped ), $parent_url ); + + $size = @getimagesize( $cropped ); + $image_type = ( $size ) ? $size['mime'] : 'image/jpeg'; + + $object = array( + 'post_title' => basename( $cropped ), + 'post_content' => $url, + 'post_mime_type' => $image_type, + 'guid' => $url, + 'context' => $context, + ); + + $attachment_id = wp_insert_attachment( $object, $cropped ); + $metadata = wp_generate_attachment_metadata( $attachment_id, $cropped ); + + /** + * Filter the cropped image attachment metadata. + * + * @since 4.3.0 + * + * @see wp_generate_attachment_metadata() + * + * @param array $metadata Attachment metadata. + */ + $metadata = apply_filters( 'wp_ajax_cropped_attachment_metadata', $metadata ); + wp_update_attachment_metadata( $attachment_id, $metadata ); + + /** + * Filter the attachment ID for a cropped image. + * + * @since 4.3.0 + * + * @param int $attachment_id The attachment ID of the cropped image. + * @param string $context The Customizer control requesting the cropped image. + */ + $attachment_id = apply_filters( 'wp_ajax_cropped_attachment_id', $attachment_id, $context ); + } + + wp_send_json_success( wp_prepare_attachment_for_js( $attachment_id ) ); +} diff --git a/wp-admin/includes/bookmark.php b/wp-admin/includes/bookmark.php new file mode 100644 index 0000000000..bdf1d7fa40 --- /dev/null +++ b/wp-admin/includes/bookmark.php @@ -0,0 +1,308 @@ +link_url = esc_url( wp_unslash( $_GET['linkurl'] ) ); + else + $link->link_url = ''; + + if ( isset( $_GET['name'] ) ) + $link->link_name = esc_attr( wp_unslash( $_GET['name'] ) ); + else + $link->link_name = ''; + + $link->link_visible = 'Y'; + + return $link; +} + +/** + * Delete link specified from database. + * + * @since 2.0.0 + * + * @global wpdb $wpdb + * + * @param int $link_id ID of the link to delete + * @return true + */ +function wp_delete_link( $link_id ) { + global $wpdb; + /** + * Fires before a link is deleted. + * + * @since 2.0.0 + * + * @param int $link_id ID of the link to delete. + */ + do_action( 'delete_link', $link_id ); + + wp_delete_object_term_relationships( $link_id, 'link_category' ); + + $wpdb->delete( $wpdb->links, array( 'link_id' => $link_id ) ); + /** + * Fires after a link has been deleted. + * + * @since 2.2.0 + * + * @param int $link_id ID of the deleted link. + */ + do_action( 'deleted_link', $link_id ); + + clean_bookmark_cache( $link_id ); + + return true; +} + +/** + * Retrieves the link categories associated with the link specified. + * + * @since 2.1.0 + * + * @param int $link_id Link ID to look up + * @return array The requested link's categories + */ +function wp_get_link_cats( $link_id = 0 ) { + $cats = wp_get_object_terms( $link_id, 'link_category', array('fields' => 'ids') ); + return array_unique( $cats ); +} + +/** + * Retrieve link data based on ID. + * + * @since 2.0.0 + * + * @param int $link_id ID of link to retrieve + * @return object Link for editing + */ +function get_link_to_edit( $link_id ) { + return get_bookmark( $link_id, OBJECT, 'edit' ); +} + +/** + * This function inserts/updates links into/in the database. + * + * @since 2.0.0 + * + * @global wpdb $wpdb + * + * @param array $linkdata Elements that make up the link to insert. + * @param bool $wp_error Optional. If true return WP_Error object on failure. + * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success. + */ +function wp_insert_link( $linkdata, $wp_error = false ) { + global $wpdb; + + $defaults = array( 'link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0 ); + + $args = wp_parse_args( $linkdata, $defaults ); + $r = wp_unslash( sanitize_bookmark( $args, 'db' ) ); + + $link_id = $r['link_id']; + $link_name = $r['link_name']; + $link_url = $r['link_url']; + + $update = false; + if ( ! empty( $link_id ) ) { + $update = true; + } + + if ( trim( $link_name ) == '' ) { + if ( trim( $link_url ) != '' ) { + $link_name = $link_url; + } else { + return 0; + } + } + + if ( trim( $link_url ) == '' ) { + return 0; + } + + $link_rating = ( ! empty( $r['link_rating'] ) ) ? $r['link_rating'] : 0; + $link_image = ( ! empty( $r['link_image'] ) ) ? $r['link_image'] : ''; + $link_target = ( ! empty( $r['link_target'] ) ) ? $r['link_target'] : ''; + $link_visible = ( ! empty( $r['link_visible'] ) ) ? $r['link_visible'] : 'Y'; + $link_owner = ( ! empty( $r['link_owner'] ) ) ? $r['link_owner'] : get_current_user_id(); + $link_notes = ( ! empty( $r['link_notes'] ) ) ? $r['link_notes'] : ''; + $link_description = ( ! empty( $r['link_description'] ) ) ? $r['link_description'] : ''; + $link_rss = ( ! empty( $r['link_rss'] ) ) ? $r['link_rss'] : ''; + $link_rel = ( ! empty( $r['link_rel'] ) ) ? $r['link_rel'] : ''; + $link_category = ( ! empty( $r['link_category'] ) ) ? $r['link_category'] : array(); + + // Make sure we set a valid category + if ( ! is_array( $link_category ) || 0 == count( $link_category ) ) { + $link_category = array( get_option( 'default_link_category' ) ); + } + + if ( $update ) { + if ( false === $wpdb->update( $wpdb->links, compact( 'link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss' ), compact( 'link_id' ) ) ) { + if ( $wp_error ) { + return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error ); + } else { + return 0; + } + } + } else { + if ( false === $wpdb->insert( $wpdb->links, compact( 'link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss' ) ) ) { + if ( $wp_error ) { + return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error ); + } else { + return 0; + } + } + $link_id = (int) $wpdb->insert_id; + } + + wp_set_link_cats( $link_id, $link_category ); + + if ( $update ) { + /** + * Fires after a link was updated in the database. + * + * @since 2.0.0 + * + * @param int $link_id ID of the link that was updated. + */ + do_action( 'edit_link', $link_id ); + } else { + /** + * Fires after a link was added to the database. + * + * @since 2.0.0 + * + * @param int $link_id ID of the link that was added. + */ + do_action( 'add_link', $link_id ); + } + clean_bookmark_cache( $link_id ); + + return $link_id; +} + +/** + * Update link with the specified link categories. + * + * @since 2.1.0 + * + * @param int $link_id ID of link to update + * @param array $link_categories Array of categories to + */ +function wp_set_link_cats( $link_id = 0, $link_categories = array() ) { + // If $link_categories isn't already an array, make it one: + if ( !is_array( $link_categories ) || 0 == count( $link_categories ) ) + $link_categories = array( get_option( 'default_link_category' ) ); + + $link_categories = array_map( 'intval', $link_categories ); + $link_categories = array_unique( $link_categories ); + + wp_set_object_terms( $link_id, $link_categories, 'link_category' ); + + clean_bookmark_cache( $link_id ); +} + +/** + * Update a link in the database. + * + * @since 2.0.0 + * + * @param array $linkdata Link data to update. + * @return int|WP_Error Value 0 or WP_Error on failure. The updated link ID on success. + */ +function wp_update_link( $linkdata ) { + $link_id = (int) $linkdata['link_id']; + + $link = get_bookmark( $link_id, ARRAY_A ); + + // Escape data pulled from DB. + $link = wp_slash( $link ); + + // Passed link category list overwrites existing category list if not empty. + if ( isset( $linkdata['link_category'] ) && is_array( $linkdata['link_category'] ) + && 0 != count( $linkdata['link_category'] ) ) + $link_cats = $linkdata['link_category']; + else + $link_cats = $link['link_category']; + + // Merge old and new fields with new fields overwriting old ones. + $linkdata = array_merge( $link, $linkdata ); + $linkdata['link_category'] = $link_cats; + + return wp_insert_link( $linkdata ); +} + +/** + * @since 3.5.0 + * @access private + * + * @global string $pagenow + */ +function wp_link_manager_disabled_message() { + global $pagenow; + if ( 'link-manager.php' != $pagenow && 'link-add.php' != $pagenow && 'link.php' != $pagenow ) + return; + + add_filter( 'pre_option_link_manager_enabled', '__return_true', 100 ); + $really_can_manage_links = current_user_can( 'manage_links' ); + remove_filter( 'pre_option_link_manager_enabled', '__return_true', 100 ); + + if ( $really_can_manage_links && current_user_can( 'install_plugins' ) ) { + $link = network_admin_url( 'plugin-install.php?tab=search&s=Link+Manager' ); + wp_die( sprintf( __( 'If you are looking to use the link manager, please install the Link Manager plugin.' ), $link ) ); + } + + wp_die( __( 'You do not have sufficient permissions to edit the links for this site.' ) ); +} diff --git a/wp-admin/includes/class-ftp-pure.php b/wp-admin/includes/class-ftp-pure.php new file mode 100644 index 0000000000..7146c9626d --- /dev/null +++ b/wp-admin/includes/class-ftp-pure.php @@ -0,0 +1,190 @@ +__construct($verb, $le); + } + +// +// +// + + function _settimeout($sock) { + if(!@stream_set_timeout($sock, $this->_timeout)) { + $this->PushError('_settimeout','socket set send timeout'); + $this->_quit(); + return FALSE; + } + return TRUE; + } + + function _connect($host, $port) { + $this->SendMSG("Creating socket"); + $sock = @fsockopen($host, $port, $errno, $errstr, $this->_timeout); + if (!$sock) { + $this->PushError('_connect','socket connect failed', $errstr." (".$errno.")"); + return FALSE; + } + $this->_connected=true; + return $sock; + } + + function _readmsg($fnction="_readmsg"){ + if(!$this->_connected) { + $this->PushError($fnction, 'Connect first'); + return FALSE; + } + $result=true; + $this->_message=""; + $this->_code=0; + $go=true; + do { + $tmp=@fgets($this->_ftp_control_sock, 512); + if($tmp===false) { + $go=$result=false; + $this->PushError($fnction,'Read failed'); + } else { + $this->_message.=$tmp; + if(preg_match("/^([0-9]{3})(-(.*[".CRLF."]{1,2})+\\1)? [^".CRLF."]+[".CRLF."]{1,2}$/", $this->_message, $regs)) $go=false; + } + } while($go); + if($this->LocalEcho) echo "GET < ".rtrim($this->_message, CRLF).CRLF; + $this->_code=(int)$regs[1]; + return $result; + } + + function _exec($cmd, $fnction="_exec") { + if(!$this->_ready) { + $this->PushError($fnction,'Connect first'); + return FALSE; + } + if($this->LocalEcho) echo "PUT > ",$cmd,CRLF; + $status=@fputs($this->_ftp_control_sock, $cmd.CRLF); + if($status===false) { + $this->PushError($fnction,'socket write failed'); + return FALSE; + } + $this->_lastaction=time(); + if(!$this->_readmsg($fnction)) return FALSE; + return TRUE; + } + + function _data_prepare($mode=FTP_ASCII) { + if(!$this->_settype($mode)) return FALSE; + if($this->_passive) { + if(!$this->_exec("PASV", "pasv")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message)); + $this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3]; + $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]); + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + $this->_ftp_data_sock=@fsockopen($this->_datahost, $this->_dataport, $errno, $errstr, $this->_timeout); + if(!$this->_ftp_data_sock) { + $this->PushError("_data_prepare","fsockopen fails", $errstr." (".$errno.")"); + $this->_data_close(); + return FALSE; + } + else $this->_ftp_data_sock; + } else { + $this->SendMSG("Only passive connections available!"); + return FALSE; + } + return TRUE; + } + + function _data_read($mode=FTP_ASCII, $fp=NULL) { + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Only passive connections available!"); + return FALSE; + } + while (!feof($this->_ftp_data_sock)) { + $block=fread($this->_ftp_data_sock, $this->_ftp_buff_size); + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_local], $block); + if(is_resource($fp)) $out+=fwrite($fp, $block, strlen($block)); + else $out.=$block; + } + return $out; + } + + function _data_write($mode=FTP_ASCII, $fp=NULL) { + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Only passive connections available!"); + return FALSE; + } + if(is_resource($fp)) { + while(!feof($fp)) { + $block=fread($fp, $this->_ftp_buff_size); + if(!$this->_data_write_block($mode, $block)) return false; + } + } elseif(!$this->_data_write_block($mode, $fp)) return false; + return TRUE; + } + + function _data_write_block($mode, $block) { + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_remote], $block); + do { + if(($t=@fwrite($this->_ftp_data_sock, $block))===FALSE) { + $this->PushError("_data_write","Can't write to socket"); + return FALSE; + } + $block=substr($block, $t); + } while(!empty($block)); + return true; + } + + function _data_close() { + @fclose($this->_ftp_data_sock); + $this->SendMSG("Disconnected data from remote host"); + return TRUE; + } + + function _quit($force=FALSE) { + if($this->_connected or $force) { + @fclose($this->_ftp_control_sock); + $this->_connected=false; + $this->SendMSG("Socket closed"); + } + } +} + +?> diff --git a/wp-admin/includes/class-ftp-sockets.php b/wp-admin/includes/class-ftp-sockets.php new file mode 100644 index 0000000000..6bf94ebd94 --- /dev/null +++ b/wp-admin/includes/class-ftp-sockets.php @@ -0,0 +1,250 @@ +__construct($verb, $le); + } + +// +// +// + + function _settimeout($sock) { + if(!@socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>$this->_timeout, "usec"=>0))) { + $this->PushError('_connect','socket set receive timeout',socket_strerror(socket_last_error($sock))); + @socket_close($sock); + return FALSE; + } + if(!@socket_set_option($sock, SOL_SOCKET , SO_SNDTIMEO, array("sec"=>$this->_timeout, "usec"=>0))) { + $this->PushError('_connect','socket set send timeout',socket_strerror(socket_last_error($sock))); + @socket_close($sock); + return FALSE; + } + return true; + } + + function _connect($host, $port) { + $this->SendMSG("Creating socket"); + if(!($sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) { + $this->PushError('_connect','socket create failed',socket_strerror(socket_last_error($sock))); + return FALSE; + } + if(!$this->_settimeout($sock)) return FALSE; + $this->SendMSG("Connecting to \"".$host.":".$port."\""); + if (!($res = @socket_connect($sock, $host, $port))) { + $this->PushError('_connect','socket connect failed',socket_strerror(socket_last_error($sock))); + @socket_close($sock); + return FALSE; + } + $this->_connected=true; + return $sock; + } + + function _readmsg($fnction="_readmsg"){ + if(!$this->_connected) { + $this->PushError($fnction,'Connect first'); + return FALSE; + } + $result=true; + $this->_message=""; + $this->_code=0; + $go=true; + do { + $tmp=@socket_read($this->_ftp_control_sock, 4096, PHP_BINARY_READ); + if($tmp===false) { + $go=$result=false; + $this->PushError($fnction,'Read failed', socket_strerror(socket_last_error($this->_ftp_control_sock))); + } else { + $this->_message.=$tmp; + $go = !preg_match("/^([0-9]{3})(-.+\\1)? [^".CRLF."]+".CRLF."$/Us", $this->_message, $regs); + } + } while($go); + if($this->LocalEcho) echo "GET < ".rtrim($this->_message, CRLF).CRLF; + $this->_code=(int)$regs[1]; + return $result; + } + + function _exec($cmd, $fnction="_exec") { + if(!$this->_ready) { + $this->PushError($fnction,'Connect first'); + return FALSE; + } + if($this->LocalEcho) echo "PUT > ",$cmd,CRLF; + $status=@socket_write($this->_ftp_control_sock, $cmd.CRLF); + if($status===false) { + $this->PushError($fnction,'socket write failed', socket_strerror(socket_last_error($this->stream))); + return FALSE; + } + $this->_lastaction=time(); + if(!$this->_readmsg($fnction)) return FALSE; + return TRUE; + } + + function _data_prepare($mode=FTP_ASCII) { + if(!$this->_settype($mode)) return FALSE; + $this->SendMSG("Creating data socket"); + $this->_ftp_data_sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP); + if ($this->_ftp_data_sock < 0) { + $this->PushError('_data_prepare','socket create failed',socket_strerror(socket_last_error($this->_ftp_data_sock))); + return FALSE; + } + if(!$this->_settimeout($this->_ftp_data_sock)) { + $this->_data_close(); + return FALSE; + } + if($this->_passive) { + if(!$this->_exec("PASV", "pasv")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message)); + $this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3]; + $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]); + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + if(!@socket_connect($this->_ftp_data_sock, $this->_datahost, $this->_dataport)) { + $this->PushError("_data_prepare","socket_connect", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + else $this->_ftp_temp_sock=$this->_ftp_data_sock; + } else { + if(!@socket_getsockname($this->_ftp_control_sock, $addr, $port)) { + $this->PushError("_data_prepare","can't get control socket information", socket_strerror(socket_last_error($this->_ftp_control_sock))); + $this->_data_close(); + return FALSE; + } + if(!@socket_bind($this->_ftp_data_sock,$addr)){ + $this->PushError("_data_prepare","can't bind data socket", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + if(!@socket_listen($this->_ftp_data_sock)) { + $this->PushError("_data_prepare","can't listen data socket", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + if(!@socket_getsockname($this->_ftp_data_sock, $this->_datahost, $this->_dataport)) { + $this->PushError("_data_prepare","can't get data socket information", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + if(!$this->_exec('PORT '.str_replace('.',',',$this->_datahost.'.'.($this->_dataport>>8).'.'.($this->_dataport&0x00FF)), "_port")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + } + return TRUE; + } + + function _data_read($mode=FTP_ASCII, $fp=NULL) { + $NewLine=$this->_eol_code[$this->OS_local]; + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + $this->_ftp_temp_sock=socket_accept($this->_ftp_data_sock); + if($this->_ftp_temp_sock===FALSE) { + $this->PushError("_data_read","socket_accept", socket_strerror(socket_last_error($this->_ftp_temp_sock))); + $this->_data_close(); + return FALSE; + } + } + + while(($block=@socket_read($this->_ftp_temp_sock, $this->_ftp_buff_size, PHP_BINARY_READ))!==false) { + if($block==="") break; + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_local], $block); + if(is_resource($fp)) $out+=fwrite($fp, $block, strlen($block)); + else $out.=$block; + } + return $out; + } + + function _data_write($mode=FTP_ASCII, $fp=NULL) { + $NewLine=$this->_eol_code[$this->OS_local]; + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + $this->_ftp_temp_sock=socket_accept($this->_ftp_data_sock); + if($this->_ftp_temp_sock===FALSE) { + $this->PushError("_data_write","socket_accept", socket_strerror(socket_last_error($this->_ftp_temp_sock))); + $this->_data_close(); + return false; + } + } + if(is_resource($fp)) { + while(!feof($fp)) { + $block=fread($fp, $this->_ftp_buff_size); + if(!$this->_data_write_block($mode, $block)) return false; + } + } elseif(!$this->_data_write_block($mode, $fp)) return false; + return true; + } + + function _data_write_block($mode, $block) { + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_remote], $block); + do { + if(($t=@socket_write($this->_ftp_temp_sock, $block))===FALSE) { + $this->PushError("_data_write","socket_write", socket_strerror(socket_last_error($this->_ftp_temp_sock))); + $this->_data_close(); + return FALSE; + } + $block=substr($block, $t); + } while(!empty($block)); + return true; + } + + function _data_close() { + @socket_close($this->_ftp_temp_sock); + @socket_close($this->_ftp_data_sock); + $this->SendMSG("Disconnected data from remote host"); + return TRUE; + } + + function _quit() { + if($this->_connected) { + @socket_close($this->_ftp_control_sock); + $this->_connected=false; + $this->SendMSG("Socket closed"); + } + } +} +?> diff --git a/wp-admin/includes/class-ftp.php b/wp-admin/includes/class-ftp.php new file mode 100644 index 0000000000..c9d965649c --- /dev/null +++ b/wp-admin/includes/class-ftp.php @@ -0,0 +1,906 @@ +LocalEcho=$le; + $this->Verbose=$verb; + $this->_lastaction=NULL; + $this->_error_array=array(); + $this->_eol_code=array(FTP_OS_Unix=>"\n", FTP_OS_Mac=>"\r", FTP_OS_Windows=>"\r\n"); + $this->AuthorizedTransferMode=array(FTP_AUTOASCII, FTP_ASCII, FTP_BINARY); + $this->OS_FullName=array(FTP_OS_Unix => 'UNIX', FTP_OS_Windows => 'WINDOWS', FTP_OS_Mac => 'MACOS'); + $this->AutoAsciiExt=array("ASP","BAT","C","CPP","CSS","CSV","JS","H","HTM","HTML","SHTML","INI","LOG","PHP3","PHTML","PL","PERL","SH","SQL","TXT"); + $this->_port_available=($port_mode==TRUE); + $this->SendMSG("Staring FTP client class".($this->_port_available?"":" without PORT mode support")); + $this->_connected=FALSE; + $this->_ready=FALSE; + $this->_can_restore=FALSE; + $this->_code=0; + $this->_message=""; + $this->_ftp_buff_size=4096; + $this->_curtype=NULL; + $this->SetUmask(0022); + $this->SetType(FTP_AUTOASCII); + $this->SetTimeout(30); + $this->Passive(!$this->_port_available); + $this->_login="anonymous"; + $this->_password="anon@ftp.com"; + $this->_features=array(); + $this->OS_local=FTP_OS_Unix; + $this->OS_remote=FTP_OS_Unix; + $this->features=array(); + if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $this->OS_local=FTP_OS_Windows; + elseif(strtoupper(substr(PHP_OS, 0, 3)) === 'MAC') $this->OS_local=FTP_OS_Mac; + } + + function ftp_base($port_mode=FALSE) { + $this->__construct($port_mode); + } + +// +// +// + + function parselisting($line) { + $is_windows = ($this->OS_remote == FTP_OS_Windows); + if ($is_windows && preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|) +(.+)/",$line,$lucifer)) { + $b = array(); + if ($lucifer[3]<70) { $lucifer[3]+=2000; } else { $lucifer[3]+=1900; } // 4digit year fix + $b['isdir'] = ($lucifer[7]==""); + if ( $b['isdir'] ) + $b['type'] = 'd'; + else + $b['type'] = 'f'; + $b['size'] = $lucifer[7]; + $b['month'] = $lucifer[1]; + $b['day'] = $lucifer[2]; + $b['year'] = $lucifer[3]; + $b['hour'] = $lucifer[4]; + $b['minute'] = $lucifer[5]; + $b['time'] = @mktime($lucifer[4]+(strcasecmp($lucifer[6],"PM")==0?12:0),$lucifer[5],0,$lucifer[1],$lucifer[2],$lucifer[3]); + $b['am/pm'] = $lucifer[6]; + $b['name'] = $lucifer[8]; + } else if (!$is_windows && $lucifer=preg_split("/[ ]/",$line,9,PREG_SPLIT_NO_EMPTY)) { + //echo $line."\n"; + $lcount=count($lucifer); + if ($lcount<8) return ''; + $b = array(); + $b['isdir'] = $lucifer[0]{0} === "d"; + $b['islink'] = $lucifer[0]{0} === "l"; + if ( $b['isdir'] ) + $b['type'] = 'd'; + elseif ( $b['islink'] ) + $b['type'] = 'l'; + else + $b['type'] = 'f'; + $b['perms'] = $lucifer[0]; + $b['number'] = $lucifer[1]; + $b['owner'] = $lucifer[2]; + $b['group'] = $lucifer[3]; + $b['size'] = $lucifer[4]; + if ($lcount==8) { + sscanf($lucifer[5],"%d-%d-%d",$b['year'],$b['month'],$b['day']); + sscanf($lucifer[6],"%d:%d",$b['hour'],$b['minute']); + $b['time'] = @mktime($b['hour'],$b['minute'],0,$b['month'],$b['day'],$b['year']); + $b['name'] = $lucifer[7]; + } else { + $b['month'] = $lucifer[5]; + $b['day'] = $lucifer[6]; + if (preg_match("/([0-9]{2}):([0-9]{2})/",$lucifer[7],$l2)) { + $b['year'] = date("Y"); + $b['hour'] = $l2[1]; + $b['minute'] = $l2[2]; + } else { + $b['year'] = $lucifer[7]; + $b['hour'] = 0; + $b['minute'] = 0; + } + $b['time'] = strtotime(sprintf("%d %s %d %02d:%02d",$b['day'],$b['month'],$b['year'],$b['hour'],$b['minute'])); + $b['name'] = $lucifer[8]; + } + } + + return $b; + } + + function SendMSG($message = "", $crlf=true) { + if ($this->Verbose) { + echo $message.($crlf?CRLF:""); + flush(); + } + return TRUE; + } + + function SetType($mode=FTP_AUTOASCII) { + if(!in_array($mode, $this->AuthorizedTransferMode)) { + $this->SendMSG("Wrong type"); + return FALSE; + } + $this->_type=$mode; + $this->SendMSG("Transfer type: ".($this->_type==FTP_BINARY?"binary":($this->_type==FTP_ASCII?"ASCII":"auto ASCII") ) ); + return TRUE; + } + + function _settype($mode=FTP_ASCII) { + if($this->_ready) { + if($mode==FTP_BINARY) { + if($this->_curtype!=FTP_BINARY) { + if(!$this->_exec("TYPE I", "SetType")) return FALSE; + $this->_curtype=FTP_BINARY; + } + } elseif($this->_curtype!=FTP_ASCII) { + if(!$this->_exec("TYPE A", "SetType")) return FALSE; + $this->_curtype=FTP_ASCII; + } + } else return FALSE; + return TRUE; + } + + function Passive($pasv=NULL) { + if(is_null($pasv)) $this->_passive=!$this->_passive; + else $this->_passive=$pasv; + if(!$this->_port_available and !$this->_passive) { + $this->SendMSG("Only passive connections available!"); + $this->_passive=TRUE; + return FALSE; + } + $this->SendMSG("Passive mode ".($this->_passive?"on":"off")); + return TRUE; + } + + function SetServer($host, $port=21, $reconnect=true) { + if(!is_long($port)) { + $this->verbose=true; + $this->SendMSG("Incorrect port syntax"); + return FALSE; + } else { + $ip=@gethostbyname($host); + $dns=@gethostbyaddr($host); + if(!$ip) $ip=$host; + if(!$dns) $dns=$host; + // Validate the IPAddress PHP4 returns -1 for invalid, PHP5 false + // -1 === "255.255.255.255" which is the broadcast address which is also going to be invalid + $ipaslong = ip2long($ip); + if ( ($ipaslong == false) || ($ipaslong === -1) ) { + $this->SendMSG("Wrong host name/address \"".$host."\""); + return FALSE; + } + $this->_host=$ip; + $this->_fullhost=$dns; + $this->_port=$port; + $this->_dataport=$port-1; + } + $this->SendMSG("Host \"".$this->_fullhost."(".$this->_host."):".$this->_port."\""); + if($reconnect){ + if($this->_connected) { + $this->SendMSG("Reconnecting"); + if(!$this->quit(FTP_FORCE)) return FALSE; + if(!$this->connect()) return FALSE; + } + } + return TRUE; + } + + function SetUmask($umask=0022) { + $this->_umask=$umask; + umask($this->_umask); + $this->SendMSG("UMASK 0".decoct($this->_umask)); + return TRUE; + } + + function SetTimeout($timeout=30) { + $this->_timeout=$timeout; + $this->SendMSG("Timeout ".$this->_timeout); + if($this->_connected) + if(!$this->_settimeout($this->_ftp_control_sock)) return FALSE; + return TRUE; + } + + function connect($server=NULL) { + if(!empty($server)) { + if(!$this->SetServer($server)) return false; + } + if($this->_ready) return true; + $this->SendMsg('Local OS : '.$this->OS_FullName[$this->OS_local]); + if(!($this->_ftp_control_sock = $this->_connect($this->_host, $this->_port))) { + $this->SendMSG("Error : Cannot connect to remote host \"".$this->_fullhost." :".$this->_port."\""); + return FALSE; + } + $this->SendMSG("Connected to remote host \"".$this->_fullhost.":".$this->_port."\". Waiting for greeting."); + do { + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + $this->_lastaction=time(); + } while($this->_code<200); + $this->_ready=true; + $syst=$this->systype(); + if(!$syst) $this->SendMSG("Can't detect remote OS"); + else { + if(preg_match("/win|dos|novell/i", $syst[0])) $this->OS_remote=FTP_OS_Windows; + elseif(preg_match("/os/i", $syst[0])) $this->OS_remote=FTP_OS_Mac; + elseif(preg_match("/(li|u)nix/i", $syst[0])) $this->OS_remote=FTP_OS_Unix; + else $this->OS_remote=FTP_OS_Mac; + $this->SendMSG("Remote OS: ".$this->OS_FullName[$this->OS_remote]); + } + if(!$this->features()) $this->SendMSG("Can't get features list. All supported - disabled"); + else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features))); + return TRUE; + } + + function quit($force=false) { + if($this->_ready) { + if(!$this->_exec("QUIT") and !$force) return FALSE; + if(!$this->_checkCode() and !$force) return FALSE; + $this->_ready=false; + $this->SendMSG("Session finished"); + } + $this->_quit(); + return TRUE; + } + + function login($user=NULL, $pass=NULL) { + if(!is_null($user)) $this->_login=$user; + else $this->_login="anonymous"; + if(!is_null($pass)) $this->_password=$pass; + else $this->_password="anon@anon.com"; + if(!$this->_exec("USER ".$this->_login, "login")) return FALSE; + if(!$this->_checkCode()) return FALSE; + if($this->_code!=230) { + if(!$this->_exec((($this->_code==331)?"PASS ":"ACCT ").$this->_password, "login")) return FALSE; + if(!$this->_checkCode()) return FALSE; + } + $this->SendMSG("Authentication succeeded"); + if(empty($this->_features)) { + if(!$this->features()) $this->SendMSG("Can't get features list. All supported - disabled"); + else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features))); + } + return TRUE; + } + + function pwd() { + if(!$this->_exec("PWD", "pwd")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return ereg_replace("^[0-9]{3} \"(.+)\".+", "\\1", $this->_message); + } + + function cdup() { + if(!$this->_exec("CDUP", "cdup")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return true; + } + + function chdir($pathname) { + if(!$this->_exec("CWD ".$pathname, "chdir")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function rmdir($pathname) { + if(!$this->_exec("RMD ".$pathname, "rmdir")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function mkdir($pathname) { + if(!$this->_exec("MKD ".$pathname, "mkdir")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function rename($from, $to) { + if(!$this->_exec("RNFR ".$from, "rename")) return FALSE; + if(!$this->_checkCode()) return FALSE; + if($this->_code==350) { + if(!$this->_exec("RNTO ".$to, "rename")) return FALSE; + if(!$this->_checkCode()) return FALSE; + } else return FALSE; + return TRUE; + } + + function filesize($pathname) { + if(!isset($this->_features["SIZE"])) { + $this->PushError("filesize", "not supported by server"); + return FALSE; + } + if(!$this->_exec("SIZE ".$pathname, "filesize")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message); + } + + function abort() { + if(!$this->_exec("ABOR", "abort")) return FALSE; + if(!$this->_checkCode()) { + if($this->_code!=426) return FALSE; + if(!$this->_readmsg("abort")) return FALSE; + if(!$this->_checkCode()) return FALSE; + } + return true; + } + + function mdtm($pathname) { + if(!isset($this->_features["MDTM"])) { + $this->PushError("mdtm", "not supported by server"); + return FALSE; + } + if(!$this->_exec("MDTM ".$pathname, "mdtm")) return FALSE; + if(!$this->_checkCode()) return FALSE; + $mdtm = ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message); + $date = sscanf($mdtm, "%4d%2d%2d%2d%2d%2d"); + $timestamp = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]); + return $timestamp; + } + + function systype() { + if(!$this->_exec("SYST", "systype")) return FALSE; + if(!$this->_checkCode()) return FALSE; + $DATA = explode(" ", $this->_message); + return array($DATA[1], $DATA[3]); + } + + function delete($pathname) { + if(!$this->_exec("DELE ".$pathname, "delete")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function site($command, $fnction="site") { + if(!$this->_exec("SITE ".$command, $fnction)) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function chmod($pathname, $mode) { + if(!$this->site( sprintf('CHMOD %o %s', $mode, $pathname), "chmod")) return FALSE; + return TRUE; + } + + function restore($from) { + if(!isset($this->_features["REST"])) { + $this->PushError("restore", "not supported by server"); + return FALSE; + } + if($this->_curtype!=FTP_BINARY) { + $this->PushError("restore", "can't restore in ASCII mode"); + return FALSE; + } + if(!$this->_exec("REST ".$from, "resore")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function features() { + if(!$this->_exec("FEAT", "features")) return FALSE; + if(!$this->_checkCode()) return FALSE; + $f=preg_split("/[".CRLF."]+/", preg_replace("/[0-9]{3}[ -].*[".CRLF."]+/", "", $this->_message), -1, PREG_SPLIT_NO_EMPTY); + $this->_features=array(); + foreach($f as $k=>$v) { + $v=explode(" ", trim($v)); + $this->_features[array_shift($v)]=$v; + } + return true; + } + + function rawlist($pathname="", $arg="") { + return $this->_list(($arg?" ".$arg:"").($pathname?" ".$pathname:""), "LIST", "rawlist"); + } + + function nlist($pathname="", $arg="") { + return $this->_list(($arg?" ".$arg:"").($pathname?" ".$pathname:""), "NLST", "nlist"); + } + + function is_exists($pathname) { + return $this->file_exists($pathname); + } + + function file_exists($pathname) { + $exists=true; + if(!$this->_exec("RNFR ".$pathname, "rename")) $exists=FALSE; + else { + if(!$this->_checkCode()) $exists=FALSE; + $this->abort(); + } + if($exists) $this->SendMSG("Remote file ".$pathname." exists"); + else $this->SendMSG("Remote file ".$pathname." does not exist"); + return $exists; + } + + function fget($fp, $remotefile,$rest=0) { + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($remotefile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("RETR ".$remotefile, "get")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $out=$this->_data_read($mode, $fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $out; + } + + function get($remotefile, $localfile=NULL, $rest=0) { + if(is_null($localfile)) $localfile=$remotefile; + if (@file_exists($localfile)) $this->SendMSG("Warning : local file will be overwritten"); + $fp = @fopen($localfile, "w"); + if (!$fp) { + $this->PushError("get","can't open local file", "Cannot create \"".$localfile."\""); + return FALSE; + } + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($remotefile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + fclose($fp); + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("RETR ".$remotefile, "get")) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + $out=$this->_data_read($mode, $fp); + fclose($fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $out; + } + + function fput($remotefile, $fp) { + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($remotefile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("STOR ".$remotefile, "put")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $ret=$this->_data_write($mode, $fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $ret; + } + + function put($localfile, $remotefile=NULL, $rest=0) { + if(is_null($remotefile)) $remotefile=$localfile; + if (!file_exists($localfile)) { + $this->PushError("put","can't open local file", "No such file or directory \"".$localfile."\""); + return FALSE; + } + $fp = @fopen($localfile, "r"); + + if (!$fp) { + $this->PushError("put","can't open local file", "Cannot read file \"".$localfile."\""); + return FALSE; + } + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($localfile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + fclose($fp); + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("STOR ".$remotefile, "put")) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + $ret=$this->_data_write($mode, $fp); + fclose($fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $ret; + } + + function mput($local=".", $remote=NULL, $continious=false) { + $local=realpath($local); + if(!@file_exists($local)) { + $this->PushError("mput","can't open local folder", "Cannot stat folder \"".$local."\""); + return FALSE; + } + if(!is_dir($local)) return $this->put($local, $remote); + if(empty($remote)) $remote="."; + elseif(!$this->file_exists($remote) and !$this->mkdir($remote)) return FALSE; + if($handle = opendir($local)) { + $list=array(); + while (false !== ($file = readdir($handle))) { + if ($file != "." && $file != "..") $list[]=$file; + } + closedir($handle); + } else { + $this->PushError("mput","can't open local folder", "Cannot read folder \"".$local."\""); + return FALSE; + } + if(empty($list)) return TRUE; + $ret=true; + foreach($list as $el) { + if(is_dir($local."/".$el)) $t=$this->mput($local."/".$el, $remote."/".$el); + else $t=$this->put($local."/".$el, $remote."/".$el); + if(!$t) { + $ret=FALSE; + if(!$continious) break; + } + } + return $ret; + + } + + function mget($remote, $local=".", $continious=false) { + $list=$this->rawlist($remote, "-lA"); + if($list===false) { + $this->PushError("mget","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); + return FALSE; + } + if(empty($list)) return true; + if(!@file_exists($local)) { + if(!@mkdir($local)) { + $this->PushError("mget","can't create local folder", "Cannot create folder \"".$local."\""); + return FALSE; + } + } + foreach($list as $k=>$v) { + $list[$k]=$this->parselisting($v); + if($list[$k]["name"]=="." or $list[$k]["name"]=="..") unset($list[$k]); + } + $ret=true; + foreach($list as $el) { + if($el["type"]=="d") { + if(!$this->mget($remote."/".$el["name"], $local."/".$el["name"], $continious)) { + $this->PushError("mget", "can't copy folder", "Can't copy remote folder \"".$remote."/".$el["name"]."\" to local \"".$local."/".$el["name"]."\""); + $ret=false; + if(!$continious) break; + } + } else { + if(!$this->get($remote."/".$el["name"], $local."/".$el["name"])) { + $this->PushError("mget", "can't copy file", "Can't copy remote file \"".$remote."/".$el["name"]."\" to local \"".$local."/".$el["name"]."\""); + $ret=false; + if(!$continious) break; + } + } + @chmod($local."/".$el["name"], $el["perms"]); + $t=strtotime($el["date"]); + if($t!==-1 and $t!==false) @touch($local."/".$el["name"], $t); + } + return $ret; + } + + function mdel($remote, $continious=false) { + $list=$this->rawlist($remote, "-la"); + if($list===false) { + $this->PushError("mdel","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); + return false; + } + + foreach($list as $k=>$v) { + $list[$k]=$this->parselisting($v); + if($list[$k]["name"]=="." or $list[$k]["name"]=="..") unset($list[$k]); + } + $ret=true; + + foreach($list as $el) { + if ( empty($el) ) + continue; + + if($el["type"]=="d") { + if(!$this->mdel($remote."/".$el["name"], $continious)) { + $ret=false; + if(!$continious) break; + } + } else { + if (!$this->delete($remote."/".$el["name"])) { + $this->PushError("mdel", "can't delete file", "Can't delete remote file \"".$remote."/".$el["name"]."\""); + $ret=false; + if(!$continious) break; + } + } + } + + if(!$this->rmdir($remote)) { + $this->PushError("mdel", "can't delete folder", "Can't delete remote folder \"".$remote."/".$el["name"]."\""); + $ret=false; + } + return $ret; + } + + function mmkdir($dir, $mode = 0777) { + if(empty($dir)) return FALSE; + if($this->is_exists($dir) or $dir == "/" ) return TRUE; + if(!$this->mmkdir(dirname($dir), $mode)) return false; + $r=$this->mkdir($dir, $mode); + $this->chmod($dir,$mode); + return $r; + } + + function glob($pattern, $handle=NULL) { + $path=$output=null; + if(PHP_OS=='WIN32') $slash='\\'; + else $slash='/'; + $lastpos=strrpos($pattern,$slash); + if(!($lastpos===false)) { + $path=substr($pattern,0,-$lastpos-1); + $pattern=substr($pattern,$lastpos); + } else $path=getcwd(); + if(is_array($handle) and !empty($handle)) { + while($dir=each($handle)) { + if($this->glob_pattern_match($pattern,$dir)) + $output[]=$dir; + } + } else { + $handle=@opendir($path); + if($handle===false) return false; + while($dir=readdir($handle)) { + if($this->glob_pattern_match($pattern,$dir)) + $output[]=$dir; + } + closedir($handle); + } + if(is_array($output)) return $output; + return false; + } + + function glob_pattern_match($pattern,$string) { + $out=null; + $chunks=explode(';',$pattern); + foreach($chunks as $pattern) { + $escape=array('$','^','.','{','}','(',')','[',']','|'); + while(strpos($pattern,'**')!==false) + $pattern=str_replace('**','*',$pattern); + foreach($escape as $probe) + $pattern=str_replace($probe,"\\$probe",$pattern); + $pattern=str_replace('?*','*', + str_replace('*?','*', + str_replace('*',".*", + str_replace('?','.{1,1}',$pattern)))); + $out[]=$pattern; + } + if(count($out)==1) return($this->glob_regexp("^$out[0]$",$string)); + else { + foreach($out as $tester) + if($this->my_regexp("^$tester$",$string)) return true; + } + return false; + } + + function glob_regexp($pattern,$probe) { + $sensitive=(PHP_OS!='WIN32'); + return ($sensitive? + ereg($pattern,$probe): + eregi($pattern,$probe) + ); + } + + function dirlist($remote) { + $list=$this->rawlist($remote, "-la"); + if($list===false) { + $this->PushError("dirlist","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); + return false; + } + + $dirlist = array(); + foreach($list as $k=>$v) { + $entry=$this->parselisting($v); + if ( empty($entry) ) + continue; + + if($entry["name"]=="." or $entry["name"]=="..") + continue; + + $dirlist[$entry['name']] = $entry; + } + + return $dirlist; + } +// +// +// + function _checkCode() { + return ($this->_code<400 and $this->_code>0); + } + + function _list($arg="", $cmd="LIST", $fnction="_list") { + if(!$this->_data_prepare()) return false; + if(!$this->_exec($cmd.$arg, $fnction)) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $out=""; + if($this->_code<200) { + $out=$this->_data_read(); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + if($out === FALSE ) return FALSE; + $out=preg_split("/[".CRLF."]+/", $out, -1, PREG_SPLIT_NO_EMPTY); +// $this->SendMSG(implode($this->_eol_code[$this->OS_local], $out)); + } + return $out; + } + +// +// +// +// Gnre une erreur pour traitement externe la classe + function PushError($fctname,$msg,$desc=false){ + $error=array(); + $error['time']=time(); + $error['fctname']=$fctname; + $error['msg']=$msg; + $error['desc']=$desc; + if($desc) $tmp=' ('.$desc.')'; else $tmp=''; + $this->SendMSG($fctname.': '.$msg.$tmp); + return(array_push($this->_error_array,$error)); + } + +// Rcupre une erreur externe + function PopError(){ + if(count($this->_error_array)) return(array_pop($this->_error_array)); + else return(false); + } +} + +$mod_sockets = extension_loaded( 'sockets' ); +if ( ! $mod_sockets && function_exists( 'dl' ) && is_callable( 'dl' ) ) { + $prefix = ( PHP_SHLIB_SUFFIX == 'dll' ) ? 'php_' : ''; + @dl( $prefix . 'sockets.' . PHP_SHLIB_SUFFIX ); + $mod_sockets = extension_loaded( 'sockets' ); +} + +require_once dirname( __FILE__ ) . "/class-ftp-" . ( $mod_sockets ? "sockets" : "pure" ) . ".php"; diff --git a/wp-admin/includes/class-pclzip.php b/wp-admin/includes/class-pclzip.php new file mode 100644 index 0000000000..f36a4a3eef --- /dev/null +++ b/wp-admin/includes/class-pclzip.php @@ -0,0 +1,5691 @@ +zipname = $p_zipname; + $this->zip_fd = 0; + $this->magic_quotes_status = -1; + + // ----- Return + return; + } + + public function PclZip($p_zipname) { + self::__construct($p_zipname); + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // create($p_filelist, $p_add_dir="", $p_remove_dir="") + // create($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two different synopsis. The first one is historical. + // This method creates a Zip Archive. The Zip file is created in the + // filesystem. The files and directories indicated in $p_filelist + // are added in the archive. See the parameters description for the + // supported format of $p_filelist. + // When a directory is in the list, the directory and its content is added + // in the archive. + // In this synopsis, the function takes an optional variable list of + // options. See bellow the supported options. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function create($p_filelist) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove from the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } + else if ($v_size > 2) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Invalid number / type of arguments"); + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + } + + // ----- The list is a list of string names + else { + $v_string_list = $p_filelist; + } + } + + // ----- Look if the $p_filelist is a string + else if (is_string($p_filelist)) { + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + } + + // ----- Invalid variable type for $p_filelist + else { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + if ($v_string != '') { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } + else { + } + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes + = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' + ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' + ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' + ,PCLZIP_ATT_FILE_MTIME => 'optional' + ,PCLZIP_ATT_FILE_CONTENT => 'optional' + ,PCLZIP_ATT_FILE_COMMENT => 'optional' + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, + $v_filedescr_list[], + $v_options, + $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // add($p_filelist, $p_add_dir="", $p_remove_dir="") + // add($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two synopsis. The first one is historical. + // This methods add the list of files in an existing archive. + // If a file with the same name already exists, it is added at the end of the + // archive, the first one is still present. + // If the archive does not exist, it is created. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_OPT_ADD_COMMENT : + // PCLZIP_OPT_PREPEND_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function add($p_filelist) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_ADD_COMMENT => 'optional', + PCLZIP_OPT_PREPEND_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + } + + // ----- The list is a list of string names + else { + $v_string_list = $p_filelist; + } + } + + // ----- Look if the $p_filelist is a string + else if (is_string($p_filelist)) { + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + } + + // ----- Invalid variable type for $p_filelist + else { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist"); + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes + = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' + ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' + ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' + ,PCLZIP_ATT_FILE_MTIME => 'optional' + ,PCLZIP_ATT_FILE_CONTENT => 'optional' + ,PCLZIP_ATT_FILE_COMMENT => 'optional' + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, + $v_filedescr_list[], + $v_options, + $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : listContent() + // Description : + // This public method, gives the list of the files and directories, with their + // properties. + // The properties of each entries in the list are (used also in other functions) : + // filename : Name of the file. For a create or add action it is the filename + // given by the user. For an extract function it is the filename + // of the extracted file. + // stored_filename : Name of the file / directory stored in the archive. + // size : Size of the stored file. + // compressed_size : Size of the file's data compressed in the archive + // (without the headers overhead) + // mtime : Last known modification date of the file (UNIX timestamp) + // comment : Comment associated with the file + // folder : true | false + // index : index of the file in the archive + // status : status of the action (depending of the action) : + // Values are : + // ok : OK ! + // filtered : the file / dir is not extracted (filtered by user) + // already_a_directory : the file can not be extracted because a + // directory with the same name already exists + // write_protected : the file can not be extracted because a file + // with the same name already exists and is + // write protected + // newer_exist : the file was not extracted because a newer file exists + // path_creation_fail : the file is not extracted because the folder + // does not exist and can not be created + // write_error : the file was not extracted because there was a + // error while writing the file + // read_error : the file was not extracted because there was a error + // while reading the file + // invalid_header : the file was not extracted because of an archive + // format error (bad file header) + // Note that each time a method can continue operating when there + // is an action error on a file, the error is only logged in the file status. + // Return Values : + // 0 on an unrecoverable failure, + // The list of the files in the archive. + // -------------------------------------------------------------------------------- + function listContent() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Call the extracting fct + $p_list = array(); + if (($v_result = $this->privList($p_list)) != 1) + { + unset($p_list); + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // extract($p_path="./", $p_remove_path="") + // extract([$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method extract all the files / directories from the archive to the + // folder indicated in $p_path. + // If you want to ignore the 'root' part of path of the memorized files + // you can indicate this in the optional $p_remove_path parameter. + // By default, if a newer file with the same name already exists, the + // file is not extracted. + // + // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions + // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append + // at the end of the path value of PCLZIP_OPT_PATH. + // Parameters : + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 or a negative value on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function extract() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); +// $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional' + ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' + ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Trace + + // ----- Call the extracting fct + $p_list = array(); + $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, + $v_remove_all_path, $v_options); + if ($v_result < 1) { + unset($p_list); + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + + // -------------------------------------------------------------------------------- + // Function : + // extractByIndex($p_index, $p_path="./", $p_remove_path="") + // extractByIndex($p_index, [$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method is doing a partial extract of the archive. + // The extracted files or folders are identified by their index in the + // archive (from 0 to n). + // Note that if the index identify a folder, only the folder entry is + // extracted, not all the files included in the archive. + // Parameters : + // $p_index : A single index (integer) or a string of indexes of files to + // extract. The form of the string is "0,4-6,8-12" with only numbers + // and '-' for range or ',' to separate ranges. No spaces or ';' + // are allowed. + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and + // not as files. + // The resulting content is in a new field 'content' in the file + // structure. + // This option must be used alone (any other options are ignored). + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + //function extractByIndex($p_index, options...) + function extractByIndex($p_index) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); +// $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional' + ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' + ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + } + else { + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Trace + + // ----- Trick + // Here I want to reuse extractByRule(), so I need to parse the $p_index + // with privParseOptions() + $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index); + $v_options_trick = array(); + $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, + array (PCLZIP_OPT_BY_INDEX => 'optional' )); + if ($v_result != 1) { + return 0; + } + $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Call the extracting fct + if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // delete([$p_option, $p_option_value, ...]) + // Description : + // This method removes files from the archive. + // If no parameters are given, then all the archive is emptied. + // Parameters : + // None or optional arguments. + // Options : + // PCLZIP_OPT_BY_INDEX : + // PCLZIP_OPT_BY_NAME : + // PCLZIP_OPT_BY_EREG : + // PCLZIP_OPT_BY_PREG : + // Return Values : + // 0 on failure, + // The list of the files which are still present in the archive. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function delete() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional' )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Call the delete fct + $v_list = array(); + if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) { + $this->privSwapBackMagicQuotes(); + unset($v_list); + return(0); + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : deleteByIndex() + // Description : + // ***** Deprecated ***** + // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered. + // -------------------------------------------------------------------------------- + function deleteByIndex($p_index) + { + + $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : properties() + // Description : + // This method gives the properties of the archive. + // The properties are : + // nb : Number of files in the archive + // comment : Comment associated with the archive file + // status : not_exist, ok + // Parameters : + // None + // Return Values : + // 0 on failure, + // An array with the archive properties. + // -------------------------------------------------------------------------------- + function properties() + { + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + $this->privSwapBackMagicQuotes(); + return(0); + } + + // ----- Default properties + $v_prop = array(); + $v_prop['comment'] = ''; + $v_prop['nb'] = 0; + $v_prop['status'] = 'not_exist'; + + // ----- Look if file exists + if (@is_file($this->zipname)) + { + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) + { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + return 0; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privSwapBackMagicQuotes(); + return 0; + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Set the user attributes + $v_prop['comment'] = $v_central_dir['comment']; + $v_prop['nb'] = $v_central_dir['entries']; + $v_prop['status'] = 'ok'; + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_prop; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : duplicate() + // Description : + // This method creates an archive by copying the content of an other one. If + // the archive already exist, it is replaced by the new one without any warning. + // Parameters : + // $p_archive : The filename of a valid archive, or + // a valid PclZip object. + // Return Values : + // 1 on success. + // 0 or a negative value on error (error code). + // -------------------------------------------------------------------------------- + function duplicate($p_archive) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the $p_archive is a PclZip object + if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) + { + + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive->zipname); + } + + // ----- Look if the $p_archive is a string (so a filename) + else if (is_string($p_archive)) + { + + // ----- Check that $p_archive is a valid zip file + // TBC : Should also check the archive format + if (!is_file($p_archive)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'"); + $v_result = PCLZIP_ERR_MISSING_FILE; + } + else { + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive); + } + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : merge() + // Description : + // This method merge the $p_archive_to_add archive at the end of the current + // one ($this). + // If the archive ($this) does not exist, the merge becomes a duplicate. + // If the $p_archive_to_add archive does not exist, the merge is a success. + // Parameters : + // $p_archive_to_add : It can be directly the filename of a valid zip archive, + // or a PclZip object archive. + // Return Values : + // 1 on success, + // 0 or negative values on error (see below). + // -------------------------------------------------------------------------------- + function merge($p_archive_to_add) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Look if the $p_archive_to_add is a PclZip object + if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) + { + + // ----- Merge the archive + $v_result = $this->privMerge($p_archive_to_add); + } + + // ----- Look if the $p_archive_to_add is a string (so a filename) + else if (is_string($p_archive_to_add)) + { + + // ----- Create a temporary archive + $v_object_archive = new PclZip($p_archive_to_add); + + // ----- Merge the archive + $v_result = $this->privMerge($v_object_archive); + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : errorCode() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorCode() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorCode()); + } + else { + return($this->error_code); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorName() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorName($p_with_code=false) + { + $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', + PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', + PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', + PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', + PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', + PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', + PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', + PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', + PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', + PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', + PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', + PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', + PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', + PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', + PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', + PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', + PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE', + PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', + PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION' + ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE' + ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION' + ); + + if (isset($v_name[$this->error_code])) { + $v_value = $v_name[$this->error_code]; + } + else { + $v_value = 'NoName'; + } + + if ($p_with_code) { + return($v_value.' ('.$this->error_code.')'); + } + else { + return($v_value); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorInfo() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorInfo($p_full=false) + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorString()); + } + else { + if ($p_full) { + return($this->errorName(true)." : ".$this->error_string); + } + else { + return($this->error_string." [code ".$this->error_code."]"); + } + } + } + // -------------------------------------------------------------------------------- + + +// -------------------------------------------------------------------------------- +// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** +// ***** ***** +// ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** +// -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : privCheckFormat() + // Description : + // This method check that the archive exists and is a valid zip archive. + // Several level of check exists. (futur) + // Parameters : + // $p_level : Level of check. Default 0. + // 0 : Check the first bytes (magic codes) (default value)) + // 1 : 0 + Check the central directory (futur) + // 2 : 1 + Check each file header (futur) + // Return Values : + // true on success, + // false on error, the error code is set. + // -------------------------------------------------------------------------------- + function privCheckFormat($p_level=0) + { + $v_result = true; + + // ----- Reset the file system cache + clearstatcache(); + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the file exits + if (!is_file($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); + return(false); + } + + // ----- Check that the file is readeable + if (!is_readable($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); + return(false); + } + + // ----- Check the magic code + // TBC + + // ----- Check the central header + // TBC + + // ----- Check each file header + // TBC + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privParseOptions() + // Description : + // This internal methods reads the variable list of arguments ($p_options_list, + // $p_size) and generate an array with the options and values ($v_result_list). + // $v_requested_options contains the options that can be present and those that + // must be present. + // $v_requested_options is an array, with the option value as key, and 'optional', + // or 'mandatory' as value. + // Parameters : + // See above. + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false) + { + $v_result=1; + + // ----- Read the options + $i=0; + while ($i<$p_size) { + + // ----- Check if the option is supported + if (!isset($v_requested_options[$p_options_list[$i]])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for next option + switch ($p_options_list[$i]) { + // ----- Look for options that request a path value + case PCLZIP_OPT_PATH : + case PCLZIP_OPT_REMOVE_PATH : + case PCLZIP_OPT_ADD_PATH : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_THRESHOLD : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + return PclZip::errorCode(); + } + + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + return PclZip::errorCode(); + } + + // ----- Check the value + $v_value = $p_options_list[$i+1]; + if ((!is_integer($v_value)) || ($v_value<0)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + return PclZip::errorCode(); + } + + // ----- Get the value (and convert it in bytes) + $v_result_list[$p_options_list[$i]] = $v_value*1048576; + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_ON : + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + return PclZip::errorCode(); + } + + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_TEMP_FILE_OFF : + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'"); + return PclZip::errorCode(); + } + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'"); + return PclZip::errorCode(); + } + + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if ( is_string($p_options_list[$i+1]) + && ($p_options_list[$i+1] != '')) { + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); + $i++; + } + else { + } + break; + + // ----- Look for options that request an array of string for value + case PCLZIP_OPT_BY_NAME : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1]; + } + else if (is_array($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that request an EREG or PREG expression + case PCLZIP_OPT_BY_EREG : + // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG + // to PCLZIP_OPT_BY_PREG + $p_options_list[$i] = PCLZIP_OPT_BY_PREG; + case PCLZIP_OPT_BY_PREG : + //case PCLZIP_OPT_CRYPT : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that takes a string + case PCLZIP_OPT_COMMENT : + case PCLZIP_OPT_ADD_COMMENT : + case PCLZIP_OPT_PREPEND_COMMENT : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, + "Missing parameter value for option '" + .PclZipUtilOptionText($p_options_list[$i]) + ."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, + "Wrong parameter value for option '" + .PclZipUtilOptionText($p_options_list[$i]) + ."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that request an array of index + case PCLZIP_OPT_BY_INDEX : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_work_list = array(); + if (is_string($p_options_list[$i+1])) { + + // ----- Remove spaces + $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', ''); + + // ----- Parse items + $v_work_list = explode(",", $p_options_list[$i+1]); + } + else if (is_integer($p_options_list[$i+1])) { + $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; + } + else if (is_array($p_options_list[$i+1])) { + $v_work_list = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Reduce the index list + // each index item in the list must be a couple with a start and + // an end value : [0,3], [5-5], [8-10], ... + // ----- Check the format of each item + $v_sort_flag=false; + $v_sort_value=0; + for ($j=0; $j= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + $i++; + break; + + // ----- Look for options that request a call-back + case PCLZIP_CB_PRE_EXTRACT : + case PCLZIP_CB_POST_EXTRACT : + case PCLZIP_CB_PRE_ADD : + case PCLZIP_CB_POST_ADD : + /* for futur use + case PCLZIP_CB_PRE_DELETE : + case PCLZIP_CB_POST_DELETE : + case PCLZIP_CB_PRE_LIST : + case PCLZIP_CB_POST_LIST : + */ + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_function_name = $p_options_list[$i+1]; + + // ----- Check that the value is a valid existing function + if (!function_exists($v_function_name)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Set the attribute + $v_result_list[$p_options_list[$i]] = $v_function_name; + $i++; + break; + + default : + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Unknown parameter '" + .$p_options_list[$i]."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Next options + $i++; + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($v_result_list[$key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); + + // ----- Return + return PclZip::errorCode(); + } + } + } + } + + // ----- Look for default values + if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOptionDefaultThreshold() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privOptionDefaultThreshold(&$p_options) + { + $v_result=1; + + if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { + return $v_result; + } + + // ----- Get 'memory_limit' configuration value + $v_memory_limit = ini_get('memory_limit'); + $v_memory_limit = trim($v_memory_limit); + $last = strtolower(substr($v_memory_limit, -1)); + + if($last == 'g') + //$v_memory_limit = $v_memory_limit*1024*1024*1024; + $v_memory_limit = $v_memory_limit*1073741824; + if($last == 'm') + //$v_memory_limit = $v_memory_limit*1024*1024; + $v_memory_limit = $v_memory_limit*1048576; + if($last == 'k') + $v_memory_limit = $v_memory_limit*1024; + + $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); + + + // ----- Sanity check : No threshold if value lower than 1M + if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { + unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrParseAtt() + // Description : + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false) + { + $v_result=1; + + // ----- For each file in the list check the attributes + foreach ($p_file_list as $v_key => $v_value) { + + // ----- Check if the option is supported + if (!isset($v_requested_options[$v_key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for attribute + switch ($v_key) { + case PCLZIP_ATT_FILE_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['filename'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + break; + + case PCLZIP_ATT_FILE_NEW_SHORT_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_short_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + break; + + case PCLZIP_ATT_FILE_NEW_FULL_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_full_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + break; + + // ----- Look for options that takes a string + case PCLZIP_ATT_FILE_COMMENT : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['comment'] = $v_value; + break; + + case PCLZIP_ATT_FILE_MTIME : + if (!is_integer($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['mtime'] = $v_value; + break; + + case PCLZIP_ATT_FILE_CONTENT : + $p_filedescr['content'] = $v_value; + break; + + default : + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Unknown parameter '".$v_key."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($p_file_list[$key])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); + return PclZip::errorCode(); + } + } + } + } + + // end foreach + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrExpand() + // Description : + // This method look for each item of the list to see if its a file, a folder + // or a string to be added as file. For any other type of files (link, other) + // just ignore the item. + // Then prepare the information that will be stored for that file. + // When its a folder, expand the folder with all the files that are in that + // folder (recursively). + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privFileDescrExpand(&$p_filedescr_list, &$p_options) + { + $v_result=1; + + // ----- Create a result list + $v_result_list = array(); + + // ----- Look each entry + for ($i=0; $iprivCalculateStoredFilename($v_descr, $p_options); + + // ----- Add the descriptor in result list + $v_result_list[sizeof($v_result_list)] = $v_descr; + + // ----- Look for folder + if ($v_descr['type'] == 'folder') { + // ----- List of items in folder + $v_dirlist_descr = array(); + $v_dirlist_nb = 0; + if ($v_folder_handler = @opendir($v_descr['filename'])) { + while (($v_item_handler = @readdir($v_folder_handler)) !== false) { + + // ----- Skip '.' and '..' + if (($v_item_handler == '.') || ($v_item_handler == '..')) { + continue; + } + + // ----- Compose the full filename + $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler; + + // ----- Look for different stored filename + // Because the name of the folder was changed, the name of the + // files/sub-folders also change + if (($v_descr['stored_filename'] != $v_descr['filename']) + && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { + if ($v_descr['stored_filename'] != '') { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler; + } + else { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler; + } + } + + $v_dirlist_nb++; + } + + @closedir($v_folder_handler); + } + else { + // TBC : unable to open folder in read mode + } + + // ----- Expand each element of the list + if ($v_dirlist_nb != 0) { + // ----- Expand + if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { + return $v_result; + } + + // ----- Concat the resulting list + $v_result_list = array_merge($v_result_list, $v_dirlist_descr); + } + else { + } + + // ----- Free local array + unset($v_dirlist_descr); + } + } + + // ----- Get the result list + $p_filedescr_list = $v_result_list; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCreate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privCreate($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the file in write mode + if (($v_result = $this->privOpenFd('wb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Add the list of files + $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options); + + // ----- Close + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAdd() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAdd($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Look if the archive exists or is empty + if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) + { + + // ----- Do a create + $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options); + + // ----- Return + return $v_result; + } + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) + { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) + { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Create the Central Dir files header + for ($i=0, $v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = $v_central_dir['comment']; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) { + $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) + { + // ----- Reset the file list + unset($v_header_list); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOpenFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privOpenFd($p_mode) + { + $v_result=1; + + // ----- Look if already open + if ($this->zip_fd != 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCloseFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privCloseFd() + { + $v_result=1; + + if ($this->zip_fd != 0) + @fclose($this->zip_fd); + $this->zip_fd = 0; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddList() + // Description : + // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is + // different from the real path of the file. This is usefull if you want to have PclTar + // running in any directory, and memorize relative path from an other directory. + // Parameters : + // $p_list : An array containing the file or directory names to add in the tar + // $p_result_list : list of added files with their properties (specially the status field) + // $p_add_dir : Path to add in the filename path archived + // $p_remove_dir : Path to remove in the filename path archived + // Return Values : + // -------------------------------------------------------------------------------- +// function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) + function privAddList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Create the Central Dir files header + for ($i=0,$v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) + { + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileList() + // Description : + // Parameters : + // $p_filedescr_list : An array containing the file description + // or directory names to add in the zip + // $p_result_list : list of added files with their properties (specially the status field) + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_header = array(); + + // ----- Recuperate the current number of elt in list + $v_nb = sizeof($p_result_list); + + // ----- Loop on the files + for ($j=0; ($jprivAddFile($p_filedescr_list[$j], $v_header, + $p_options); + if ($v_result != 1) { + return $v_result; + } + + // ----- Store the file infos + $p_result_list[$v_nb++] = $v_header; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFile($p_filedescr, &$p_header, &$p_options) + { + $v_result=1; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + // TBC : Already done in the fileAtt check ... ? + if ($p_filename == "") { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for a stored different filename + /* TBC : Removed + if (isset($p_filedescr['stored_filename'])) { + $v_stored_filename = $p_filedescr['stored_filename']; + } + else { + $v_stored_filename = $p_filedescr['stored_filename']; + } + */ + + // ----- Set the file properties + clearstatcache(); + $p_header['version'] = 20; + $p_header['version_extracted'] = 10; + $p_header['flag'] = 0; + $p_header['compression'] = 0; + $p_header['crc'] = 0; + $p_header['compressed_size'] = 0; + $p_header['filename_len'] = strlen($p_filename); + $p_header['extra_len'] = 0; + $p_header['disk'] = 0; + $p_header['internal'] = 0; + $p_header['offset'] = 0; + $p_header['filename'] = $p_filename; +// TBC : Removed $p_header['stored_filename'] = $v_stored_filename; + $p_header['stored_filename'] = $p_filedescr['stored_filename']; + $p_header['extra'] = ''; + $p_header['status'] = 'ok'; + $p_header['index'] = -1; + + // ----- Look for regular file + if ($p_filedescr['type']=='file') { + $p_header['external'] = 0x00000000; + $p_header['size'] = filesize($p_filename); + } + + // ----- Look for regular folder + else if ($p_filedescr['type']=='folder') { + $p_header['external'] = 0x00000010; + $p_header['mtime'] = filemtime($p_filename); + $p_header['size'] = filesize($p_filename); + } + + // ----- Look for virtual file + else if ($p_filedescr['type'] == 'virtual_file') { + $p_header['external'] = 0x00000000; + $p_header['size'] = strlen($p_filedescr['content']); + } + + + // ----- Look for filetime + if (isset($p_filedescr['mtime'])) { + $p_header['mtime'] = $p_filedescr['mtime']; + } + else if ($p_filedescr['type'] == 'virtual_file') { + $p_header['mtime'] = time(); + } + else { + $p_header['mtime'] = filemtime($p_filename); + } + + // ------ Look for file comment + if (isset($p_filedescr['comment'])) { + $p_header['comment_len'] = strlen($p_filedescr['comment']); + $p_header['comment'] = $p_filedescr['comment']; + } + else { + $p_header['comment_len'] = 0; + $p_header['comment'] = ''; + } + + // ----- Look for pre-add callback + if (isset($p_options[PCLZIP_CB_PRE_ADD])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_header['status'] = "skipped"; + $v_result = 1; + } + + // ----- Update the informations + // Only some fields can be modified + if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { + $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); + } + } + + // ----- Look for empty stored filename + if ($p_header['stored_filename'] == "") { + $p_header['status'] = "filtered"; + } + + // ----- Check the path length + if (strlen($p_header['stored_filename']) > 0xFF) { + $p_header['status'] = 'filename_too_long'; + } + + // ----- Look if no error, or file not skipped + if ($p_header['status'] == 'ok') { + + // ----- Look for a file + if ($p_filedescr['type'] == 'file') { + // ----- Look for using temporary file to zip + if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) + && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) + || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) { + $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + } + + // ----- Use "in memory" zip algo + else { + + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + return PclZip::errorCode(); + } + + // ----- Read the file content + $v_content = @fread($v_file, $p_header['size']); + + // ----- Close the file + @fclose($v_file); + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + } + + // ----- Look for normal compression + else { + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + + } + + } + + // ----- Look for a virtual file (a file from string) + else if ($p_filedescr['type'] == 'virtual_file') { + + $v_content = $p_filedescr['content']; + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + } + + // ----- Look for normal compression + else { + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + } + + // ----- Look for a directory + else if ($p_filedescr['type'] == 'folder') { + // ----- Look for directory last '/' + if (@substr($p_header['stored_filename'], -1) != '/') { + $p_header['stored_filename'] .= '/'; + } + + // ----- Set the file properties + $p_header['size'] = 0; + //$p_header['external'] = 0x41FF0010; // Value for a folder : to be checked + $p_header['external'] = 0x00000010; // Value for a folder : to be checked + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) + { + return $v_result; + } + } + } + + // ----- Look for post-add callback + if (isset($p_options[PCLZIP_CB_POST_ADD])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Ignored + $v_result = 1; + } + + // ----- Update the informations + // Nothing can be modified + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) + { + $v_result=PCLZIP_ERR_NO_ERROR; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + return PclZip::errorCode(); + } + + // ----- Creates a compressed temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; + if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = filesize($p_filename); + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @gzputs($v_file_compressed, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file); + @gzclose($v_file_compressed); + + // ----- Check the minimum file size + if (filesize($v_gzip_temp_name) < 18) { + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes'); + return PclZip::errorCode(); + } + + // ----- Extract the compressed attributes + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + // ----- Read the gzip file header + $v_binary_data = @fread($v_file_compressed, 10); + $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data); + + // ----- Check some parameters + $v_data_header['os'] = bin2hex($v_data_header['os']); + + // ----- Read the gzip file footer + @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8); + $v_binary_data = @fread($v_file_compressed, 8); + $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data); + + // ----- Set the attributes + $p_header['compression'] = ord($v_data_header['cm']); + //$p_header['mtime'] = $v_data_header['mtime']; + $p_header['crc'] = $v_data_footer['crc']; + $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18; + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + return $v_result; + } + + // ----- Add the compressed data + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) + { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + fseek($v_file_compressed, 10); + $v_size = $p_header['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file_compressed, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Unlink the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCalculateStoredFilename() + // Description : + // Based on file descriptor properties and global options, this method + // calculate the filename that will be stored in the archive. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privCalculateStoredFilename(&$p_filedescr, &$p_options) + { + $v_result=1; + + // ----- Working variables + $p_filename = $p_filedescr['filename']; + if (isset($p_options[PCLZIP_OPT_ADD_PATH])) { + $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH]; + } + else { + $p_add_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) { + $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH]; + } + else { + $p_remove_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + else { + $p_remove_all_dir = 0; + } + + + // ----- Look for full name change + if (isset($p_filedescr['new_full_name'])) { + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']); + } + + // ----- Look for path and/or short name change + else { + + // ----- Look for short name change + // Its when we cahnge just the filename but not the path + if (isset($p_filedescr['new_short_name'])) { + $v_path_info = pathinfo($p_filename); + $v_dir = ''; + if ($v_path_info['dirname'] != '') { + $v_dir = $v_path_info['dirname'].'/'; + } + $v_stored_filename = $v_dir.$p_filedescr['new_short_name']; + } + else { + // ----- Calculate the stored filename + $v_stored_filename = $p_filename; + } + + // ----- Look for all path to remove + if ($p_remove_all_dir) { + $v_stored_filename = basename($p_filename); + } + // ----- Look for partial path remove + else if ($p_remove_dir != "") { + if (substr($p_remove_dir, -1) != '/') + $p_remove_dir .= "/"; + + if ( (substr($p_filename, 0, 2) == "./") + || (substr($p_remove_dir, 0, 2) == "./")) { + + if ( (substr($p_filename, 0, 2) == "./") + && (substr($p_remove_dir, 0, 2) != "./")) { + $p_remove_dir = "./".$p_remove_dir; + } + if ( (substr($p_filename, 0, 2) != "./") + && (substr($p_remove_dir, 0, 2) == "./")) { + $p_remove_dir = substr($p_remove_dir, 2); + } + } + + $v_compare = PclZipUtilPathInclusion($p_remove_dir, + $v_stored_filename); + if ($v_compare > 0) { + if ($v_compare == 2) { + $v_stored_filename = ""; + } + else { + $v_stored_filename = substr($v_stored_filename, + strlen($p_remove_dir)); + } + } + } + + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); + + // ----- Look for path to add + if ($p_add_dir != "") { + if (substr($p_add_dir, -1) == "/") + $v_stored_filename = $p_add_dir.$v_stored_filename; + else + $v_stored_filename = $p_add_dir."/".$v_stored_filename; + } + } + + // ----- Filename (reduce the path of stored name) + $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); + $p_filedescr['stored_filename'] = $v_stored_filename; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteFileHeader(&$p_header) + { + $v_result=1; + + // ----- Store the offset position of the file + $p_header['offset'] = ftell($this->zip_fd); + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + // ----- Packed data + $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, + $p_header['version_extracted'], $p_header['flag'], + $p_header['compression'], $v_mtime, $v_mdate, + $p_header['crc'], $p_header['compressed_size'], + $p_header['size'], + strlen($p_header['stored_filename']), + $p_header['extra_len']); + + // ----- Write the first 148 bytes of the header in the archive + fputs($this->zip_fd, $v_binary_data, 30); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) + { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) + { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteCentralFileHeader(&$p_header) + { + $v_result=1; + + // TBC + //for(reset($p_header); $key = key($p_header); next($p_header)) { + //} + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + + // ----- Packed data + $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, + $p_header['version'], $p_header['version_extracted'], + $p_header['flag'], $p_header['compression'], + $v_mtime, $v_mdate, $p_header['crc'], + $p_header['compressed_size'], $p_header['size'], + strlen($p_header['stored_filename']), + $p_header['extra_len'], $p_header['comment_len'], + $p_header['disk'], $p_header['internal'], + $p_header['external'], $p_header['offset']); + + // ----- Write the 42 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 46); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) + { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) + { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + if ($p_header['comment_len'] != 0) + { + fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) + { + $v_result=1; + + // ----- Packed data + $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, + $p_nb_entries, $p_size, + $p_offset, strlen($p_comment)); + + // ----- Write the 22 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 22); + + // ----- Write the variable fields + if (strlen($p_comment) != 0) + { + fputs($this->zip_fd, $p_comment, strlen($p_comment)); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privList() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privList(&$p_list) + { + $v_result=1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) + { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Go to beginning of Central Dir + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_central_dir['offset'])) + { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + for ($i=0; $i<$v_central_dir['entries']; $i++) + { + // ----- Read the file header + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + $v_header['index'] = $i; + + // ----- Get the only interesting attributes + $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); + unset($v_header); + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privConvertHeader2FileInfo() + // Description : + // This function takes the file informations from the central directory + // entries and extract the interesting parameters that will be given back. + // The resulting file infos are set in the array $p_info + // $p_info['filename'] : Filename with full path. Given by user (add), + // extracted in the filesystem (extract). + // $p_info['stored_filename'] : Stored filename in the archive. + // $p_info['size'] = Size of the file. + // $p_info['compressed_size'] = Compressed size of the file. + // $p_info['mtime'] = Last modification date of the file. + // $p_info['comment'] = Comment associated with the file. + // $p_info['folder'] = true/false : indicates if the entry is a folder or not. + // $p_info['status'] = status of the action on the file. + // $p_info['crc'] = CRC of the file content. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privConvertHeader2FileInfo($p_header, &$p_info) + { + $v_result=1; + + // ----- Get the interesting attributes + $v_temp_path = PclZipUtilPathReduction($p_header['filename']); + $p_info['filename'] = $v_temp_path; + $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']); + $p_info['stored_filename'] = $v_temp_path; + $p_info['size'] = $p_header['size']; + $p_info['compressed_size'] = $p_header['compressed_size']; + $p_info['mtime'] = $p_header['mtime']; + $p_info['comment'] = $p_header['comment']; + $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010); + $p_info['index'] = $p_header['index']; + $p_info['status'] = $p_header['status']; + $p_info['crc'] = $p_header['crc']; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractByRule() + // Description : + // Extract a file or directory depending of rules (by index, by name, ...) + // Parameters : + // $p_file_list : An array where will be placed the properties of each + // extracted file + // $p_path : Path to add while writing the extracted files + // $p_remove_path : Path to remove (from the file memorized path) while writing the + // extracted files. If the path does not match the file path, + // the file is extracted with its memorized path. + // $p_remove_path does not apply to 'list' mode. + // $p_path and $p_remove_path are commulative. + // Return Values : + // 1 on success,0 or less on error (see error code list) + // -------------------------------------------------------------------------------- + function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result=1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check the path + if ( ($p_path == "") + || ( (substr($p_path, 0, 1) != "/") + && (substr($p_path, 0, 3) != "../") + && (substr($p_path,1,2)!=":/"))) + $p_path = "./".$p_path; + + // ----- Reduce the path last (and duplicated) '/' + if (($p_path != "./") && ($p_path != "/")) + { + // ----- Look for the path end '/' + while (substr($p_path, -1) == "/") + { + $p_path = substr($p_path, 0, strlen($p_path)-1); + } + } + + // ----- Look for path to remove format (should end by /) + if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) + { + $p_remove_path .= '/'; + } + $p_remove_path_size = strlen($p_remove_path); + + // ----- Open the zip file + if (($v_result = $this->privOpenFd('rb')) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + + // ----- Read each entry + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) + { + + // ----- Read next Central dir entry + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Store the index + $v_header['index'] = $i; + + // ----- Store the file position + $v_pos_entry = ftell($this->zip_fd); + + // ----- Look for the specific extract rules + $v_extract = false; + + // ----- Look for extract by name rule + if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) + && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + + // ----- Look if the filename is in the list + for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) + && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_extract = true; + } + } + // ----- Look for a filename + elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + $v_extract = true; + } + } + } + + // ----- Look for extract by ereg rule + // ereg() is deprecated with PHP 5.3 + /* + else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) { + $v_extract = true; + } + } + */ + + // ----- Look for extract by preg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) + && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { + $v_extract = true; + } + } + + // ----- Look for extract by index rule + else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) + && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + + // ----- Look if the index is in the list + for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_extract = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j+1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + break; + } + } + } + + // ----- Look for no rule, which means extract all the archive + else { + $v_extract = true; + } + + // ----- Check compression method + if ( ($v_extract) + && ( ($v_header['compression'] != 8) + && ($v_header['compression'] != 0))) { + $v_header['status'] = 'unsupported_compression'; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, + "Filename '".$v_header['stored_filename']."' is " + ."compressed by an unsupported compression " + ."method (".$v_header['compression'].") "); + + return PclZip::errorCode(); + } + } + + // ----- Check encrypted files + if (($v_extract) && (($v_header['flag'] & 1) == 1)) { + $v_header['status'] = 'unsupported_encryption'; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, + "Unsupported encryption for " + ." filename '".$v_header['stored_filename'] + ."'"); + + return PclZip::errorCode(); + } + } + + // ----- Look for real extraction + if (($v_extract) && ($v_header['status'] != 'ok')) { + $v_result = $this->privConvertHeader2FileInfo($v_header, + $p_file_list[$v_nb_extracted++]); + if ($v_result != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + $v_extract = false; + } + + // ----- Look for real extraction + if ($v_extract) + { + + // ----- Go to the file position + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_header['offset'])) + { + // ----- Close the zip file + $this->privCloseFd(); + + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for extraction as string + if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { + + $v_string = ''; + + // ----- Extracting the file + $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Set the file content + $p_file_list[$v_nb_extracted]['content'] = $v_string; + + // ----- Next extracted file + $v_nb_extracted++; + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + // ----- Look for extraction in standard output + elseif ( (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) + && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { + // ----- Extracting the file in standard output + $v_result1 = $this->privExtractFileInOutput($v_header, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + // ----- Look for normal extraction + else { + // ----- Extracting the file + $v_result1 = $this->privExtractFile($v_header, + $p_path, $p_remove_path, + $p_remove_all_path, + $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + } + } + + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFile() + // Description : + // Parameters : + // Return Values : + // + // 1 : ... ? + // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback + // -------------------------------------------------------------------------------- + function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result=1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) + { + // ----- Return + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for all path to remove + if ($p_remove_all_path == true) { + // ----- Look for folder entry that not need to be extracted + if (($p_entry['external']&0x00000010)==0x00000010) { + + $p_entry['status'] = "filtered"; + + return $v_result; + } + + // ----- Get the basename of the path + $p_entry['filename'] = basename($p_entry['filename']); + } + + // ----- Look for path to remove + else if ($p_remove_path != "") + { + if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) + { + + // ----- Change the file status + $p_entry['status'] = "filtered"; + + // ----- Return + return $v_result; + } + + $p_remove_path_size = strlen($p_remove_path); + if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) + { + + // ----- Remove the path + $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); + + } + } + + // ----- Add the path + if ($p_path != '') { + $p_entry['filename'] = $p_path."/".$p_entry['filename']; + } + + // ----- Check a base_dir_restriction + if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { + $v_inclusion + = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], + $p_entry['filename']); + if ($v_inclusion == 0) { + + PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, + "Filename '".$p_entry['filename']."' is " + ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); + + return PclZip::errorCode(); + } + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Look for specific actions while the file exist + if (file_exists($p_entry['filename'])) + { + + // ----- Look if file is a directory + if (is_dir($p_entry['filename'])) + { + + // ----- Change the file status + $p_entry['status'] = "already_a_directory"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, + "Filename '".$p_entry['filename']."' is " + ."already used by an existing directory"); + + return PclZip::errorCode(); + } + } + // ----- Look if file is write protected + else if (!is_writeable($p_entry['filename'])) + { + + // ----- Change the file status + $p_entry['status'] = "write_protected"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, + "Filename '".$p_entry['filename']."' exists " + ."and is write protected"); + + return PclZip::errorCode(); + } + } + + // ----- Look if the extracted file is older + else if (filemtime($p_entry['filename']) > $p_entry['mtime']) + { + // ----- Change the file status + if ( (isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) + && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) { + } + else { + $p_entry['status'] = "newer_exist"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, + "Newer version of '".$p_entry['filename']."' exists " + ."and option PCLZIP_OPT_REPLACE_NEWER is not selected"); + + return PclZip::errorCode(); + } + } + } + else { + } + } + + // ----- Check the directory availability and create it if necessary + else { + if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/')) + $v_dir_to_check = $p_entry['filename']; + else if (!strstr($p_entry['filename'], "/")) + $v_dir_to_check = ""; + else + $v_dir_to_check = dirname($p_entry['filename']); + + if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { + + // ----- Change the file status + $p_entry['status'] = "path_creation_fail"; + + // ----- Return + //return $v_result; + $v_result = 1; + } + } + } + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) + { + // ----- Look for not compressed file + if ($p_entry['compression'] == 0) { + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) + { + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + // ----- Return + return $v_result; + } + + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + /* Try to speed up the code + $v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_binary_data, $v_read_size); + */ + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Closing the destination file + fclose($v_dest_file); + + // ----- Change the file mtime + touch($p_entry['filename'], $p_entry['mtime']); + + + } + else { + // ----- TBC + // Need to be finished + if (($p_entry['flag'] & 1) == 1) { + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.'); + return PclZip::errorCode(); + } + + + // ----- Look for using temporary file to unzip + if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) + && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) + || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) { + $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + } + + // ----- Look for extract in memory + else { + + + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = @gzinflate($v_buffer); + unset($v_buffer); + if ($v_file_content === FALSE) { + + // ----- Change the file status + // TBC + $p_entry['status'] = "error"; + + return $v_result; + } + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + return $v_result; + } + + // ----- Write the uncompressed data + @fwrite($v_dest_file, $v_file_content, $p_entry['size']); + unset($v_file_content); + + // ----- Closing the destination file + @fclose($v_dest_file); + + } + + // ----- Change the file mtime + @touch($p_entry['filename'], $p_entry['mtime']); + } + + // ----- Look for chmod option + if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { + + // ----- Change the mode of the file + @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); + } + + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileUsingTempFile(&$p_entry, &$p_options) + { + $v_result=1; + + // ----- Creates a temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; + if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); + return PclZip::errorCode(); + } + + + // ----- Write gz file format header + $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); + @fwrite($v_dest_file, $v_binary_data, 10); + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Write gz file format footer + $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']); + @fwrite($v_dest_file, $v_binary_data, 8); + + // ----- Close the temporary file + @fclose($v_dest_file); + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + $p_entry['status'] = "write_error"; + return $v_result; + } + + // ----- Open the temporary gz file + if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) { + @fclose($v_dest_file); + $p_entry['status'] = "read_error"; + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($v_src_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + @fclose($v_dest_file); + @gzclose($v_src_file); + + // ----- Delete the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileInOutput() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileInOutput(&$p_entry, &$p_options) + { + $v_result=1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) { + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. +// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + // ----- Trace + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) { + // ----- Look for not compressed file + if ($p_entry['compressed_size'] == $p_entry['size']) { + + // ----- Read the file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Send the file to the output + echo $v_buffer; + unset($v_buffer); + } + else { + + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = gzinflate($v_buffer); + unset($v_buffer); + + // ----- Send the file to the output + echo $v_file_content; + unset($v_file_content); + } + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileAsString() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileAsString(&$p_entry, &$p_string, &$p_options) + { + $v_result=1; + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadFileHeader($v_header)) != 1) + { + // ----- Return + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) { + // ----- Look for not compressed file + // if ($p_entry['compressed_size'] == $p_entry['size']) + if ($p_entry['compression'] == 0) { + + // ----- Reading the file + $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); + } + else { + + // ----- Reading the file + $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + if (($p_string = @gzinflate($v_data)) === FALSE) { + // TBC + } + } + + // ----- Trace + } + else { + // TBC : error : can not extract a folder in a string + } + + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Swap the content to header + $v_local_header['content'] = $p_string; + $p_string = ''; + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Swap back the content to header + $p_string = $v_local_header['content']; + unset($v_local_header['content']); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadFileHeader(&$p_header) + { + $v_result=1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x04034b50) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 26); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 26) + { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); + + // ----- Get filename + $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); + + // ----- Get extra_fields + if ($v_data['extra_len'] != 0) { + $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); + } + else { + $p_header['extra'] = ''; + } + + // ----- Extract properties + $p_header['version_extracted'] = $v_data['version']; + $p_header['compression'] = $v_data['compression']; + $p_header['size'] = $v_data['size']; + $p_header['compressed_size'] = $v_data['compressed_size']; + $p_header['crc'] = $v_data['crc']; + $p_header['flag'] = $v_data['flag']; + $p_header['filename_len'] = $v_data['filename_len']; + + // ----- Recuperate date in UNIX format + $p_header['mdate'] = $v_data['mdate']; + $p_header['mtime'] = $v_data['mtime']; + if ($p_header['mdate'] && $p_header['mtime']) + { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } + else + { + $p_header['mtime'] = time(); + } + + // TBC + //for(reset($v_data); $key = key($v_data); next($v_data)) { + //} + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set the status field + $p_header['status'] = "ok"; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadCentralFileHeader(&$p_header) + { + $v_result=1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x02014b50) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 42); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 42) + { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); + + // ----- Get filename + if ($p_header['filename_len'] != 0) + $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); + else + $p_header['filename'] = ''; + + // ----- Get extra + if ($p_header['extra_len'] != 0) + $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); + else + $p_header['extra'] = ''; + + // ----- Get comment + if ($p_header['comment_len'] != 0) + $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); + else + $p_header['comment'] = ''; + + // ----- Extract properties + + // ----- Recuperate date in UNIX format + //if ($p_header['mdate'] && $p_header['mtime']) + // TBC : bug : this was ignoring time with 0/0/0 + if (1) + { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } + else + { + $p_header['mtime'] = time(); + } + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set default status to ok + $p_header['status'] = 'ok'; + + // ----- Look if it is a directory + if (substr($p_header['filename'], -1) == '/') { + //$p_header['external'] = 0x41FF0010; + $p_header['external'] = 0x00000010; + } + + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCheckFileHeaders() + // Description : + // Parameters : + // Return Values : + // 1 on success, + // 0 on error; + // -------------------------------------------------------------------------------- + function privCheckFileHeaders(&$p_local_header, &$p_central_header) + { + $v_result=1; + + // ----- Check the static values + // TBC + if ($p_local_header['filename'] != $p_central_header['filename']) { + } + if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) { + } + if ($p_local_header['flag'] != $p_central_header['flag']) { + } + if ($p_local_header['compression'] != $p_central_header['compression']) { + } + if ($p_local_header['mtime'] != $p_central_header['mtime']) { + } + if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { + } + + // ----- Look for flag bit 3 + if (($p_local_header['flag'] & 8) == 8) { + $p_local_header['size'] = $p_central_header['size']; + $p_local_header['compressed_size'] = $p_central_header['compressed_size']; + $p_local_header['crc'] = $p_central_header['crc']; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadEndCentralDir() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadEndCentralDir(&$p_central_dir) + { + $v_result=1; + + // ----- Go to the end of the zip file + $v_size = filesize($this->zipname); + @fseek($this->zip_fd, $v_size); + if (@ftell($this->zip_fd) != $v_size) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- First try : look if this is an archive with no commentaries (most of the time) + // in this case the end of central dir is at 22 bytes of the file end + $v_found = 0; + if ($v_size > 26) { + @fseek($this->zip_fd, $v_size-22); + if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read for bytes + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = @unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] == 0x06054b50) { + $v_found = 1; + } + + $v_pos = ftell($this->zip_fd); + } + + // ----- Go back to the maximum possible size of the Central Dir End Record + if (!$v_found) { + $v_maximum_size = 65557; // 0xFFFF + 22; + if ($v_maximum_size > $v_size) + $v_maximum_size = $v_size; + @fseek($this->zip_fd, $v_size-$v_maximum_size); + if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read byte per byte in order to find the signature + $v_pos = ftell($this->zip_fd); + $v_bytes = 0x00000000; + while ($v_pos < $v_size) + { + // ----- Read a byte + $v_byte = @fread($this->zip_fd, 1); + + // ----- Add the byte + //$v_bytes = ($v_bytes << 8) | Ord($v_byte); + // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number + // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. + $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); + + // ----- Compare the bytes + if ($v_bytes == 0x504b0506) + { + $v_pos++; + break; + } + + $v_pos++; + } + + // ----- Look if not found end of central dir + if ($v_pos == $v_size) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Read the first 18 bytes of the header + $v_binary_data = fread($this->zip_fd, 18); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 18) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); + + // ----- Check the global size + if (($v_pos + $v_data['comment_size'] + 18) != $v_size) { + + // ----- Removed in release 2.2 see readme file + // The check of the file size is a little too strict. + // Some bugs where found when a zip is encrypted/decrypted with 'crypt'. + // While decrypted, zip has training 0 bytes + if (0) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, + 'The central dir is not at the end of the archive.' + .' Some trailing bytes exists after the archive.'); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Get comment + if ($v_data['comment_size'] != 0) { + $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); + } + else + $p_central_dir['comment'] = ''; + + $p_central_dir['entries'] = $v_data['entries']; + $p_central_dir['disk_entries'] = $v_data['disk_entries']; + $p_central_dir['offset'] = $v_data['offset']; + $p_central_dir['size'] = $v_data['size']; + $p_central_dir['disk'] = $v_data['disk']; + $p_central_dir['disk_start'] = $v_data['disk_start']; + + // TBC + //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { + //} + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDeleteByRule() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDeleteByRule(&$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Scan all the files + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) + { + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + $v_header_list = array(); + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) + { + + // ----- Read the file header + $v_header_list[$v_nb_extracted] = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + + return $v_result; + } + + + // ----- Store the index + $v_header_list[$v_nb_extracted]['index'] = $i; + + // ----- Look for the specific extract rules + $v_found = false; + + // ----- Look for extract by name rule + if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) + && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + + // ----- Look if the filename is in the list + for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) + && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } + elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ + && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } + } + // ----- Look for a filename + elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + $v_found = true; + } + } + } + + // ----- Look for extract by ereg rule + // ereg() is deprecated with PHP 5.3 + /* + else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + $v_found = true; + } + } + */ + + // ----- Look for extract by preg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) + && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + $v_found = true; + } + } + + // ----- Look for extract by index rule + else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) + && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + + // ----- Look if the index is in the list + for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_found = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j+1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + break; + } + } + } + else { + $v_found = true; + } + + // ----- Look for deletion + if ($v_found) + { + unset($v_header_list[$v_nb_extracted]); + } + else + { + $v_nb_extracted++; + } + } + + // ----- Look if something need to be deleted + if ($v_nb_extracted > 0) { + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Creates a temporary zip archive + $v_temp_zip = new PclZip($v_zip_temp_name); + + // ----- Open the temporary zip file in write mode + if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Look which file need to be kept + for ($i=0; $izip_fd); + if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_local_header = array(); + if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Check that local file header is same as central file header + if ($this->privCheckFileHeaders($v_local_header, + $v_header_list[$i]) != 1) { + // TBC + } + unset($v_local_header); + + // ----- Write the file header + if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Read/write the data block + if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_temp_zip->zip_fd); + + // ----- Re-Create the Central Dir files header + for ($i=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Transform the header to a 'usable' info + $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { + // ----- Reset the file list + unset($v_header_list); + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Close + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Destroy the temporary archive + unset($v_temp_zip); + } + + // ----- Remove every files : reset the file + else if ($v_central_dir['entries'] != 0) { + $this->privCloseFd(); + + if (($v_result = $this->privOpenFd('wb')) != 1) { + return $v_result; + } + + if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { + return $v_result; + } + + $this->privCloseFd(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDirCheck() + // Description : + // Check if a directory exists, if not it creates it and all the parents directory + // which may be useful. + // Parameters : + // $p_dir : Directory path to check. + // Return Values : + // 1 : OK + // -1 : Unable to create directory + // -------------------------------------------------------------------------------- + function privDirCheck($p_dir, $p_is_dir=false) + { + $v_result = 1; + + + // ----- Remove the final '/' + if (($p_is_dir) && (substr($p_dir, -1)=='/')) + { + $p_dir = substr($p_dir, 0, strlen($p_dir)-1); + } + + // ----- Check the directory availability + if ((is_dir($p_dir)) || ($p_dir == "")) + { + return 1; + } + + // ----- Extract parent directory + $p_parent_dir = dirname($p_dir); + + // ----- Just a check + if ($p_parent_dir != $p_dir) + { + // ----- Look for parent directory + if ($p_parent_dir != "") + { + if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) + { + return $v_result; + } + } + } + + // ----- Create the directory + if (!@mkdir($p_dir, 0777)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privMerge() + // Description : + // If $p_archive_to_add does not exist, the function exit with a success result. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privMerge(&$p_archive_to_add) + { + $v_result=1; + + // ----- Look if the archive_to_add exists + if (!is_file($p_archive_to_add->zipname)) + { + + // ----- Nothing to merge, so merge is a success + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Look if the archive exists + if (!is_file($this->zipname)) + { + + // ----- Do a duplicate + $v_result = $this->privDuplicate($p_archive_to_add->zipname); + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Open the archive_to_add file + if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) + { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir_to_add = array(); + if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + return $v_result; + } + + // ----- Go to beginning of File + @rewind($p_archive_to_add->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the files from the archive_to_add into the temporary file + $v_size = $v_central_dir_to_add['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_zip_temp_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the block of file headers from the archive_to_add + $v_size = $v_central_dir_to_add['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Merge the file comments + $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment']; + + // ----- Calculate the size of the (new) central header + $v_size = @ftell($v_zip_temp_fd)-$v_offset; + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive fd + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + @fclose($v_zip_temp_fd); + $this->zip_fd = null; + + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDuplicate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDuplicate($p_archive_filename) + { + $v_result=1; + + // ----- Look if the $p_archive_filename exists + if (!is_file($p_archive_filename)) + { + + // ----- Nothing to duplicate, so duplicate is a success. + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('wb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) + { + $this->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = filesize($p_archive_filename); + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorLog() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privErrorLog($p_error_code=0, $p_error_string='') + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclError($p_error_code, $p_error_string); + } + else { + $this->error_code = $p_error_code; + $this->error_string = $p_error_string; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorReset() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privErrorReset() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclErrorReset(); + } + else { + $this->error_code = 0; + $this->error_string = ''; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDisableMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDisableMagicQuotes() + { + $v_result=1; + + // ----- Look if function exists + if ( (!function_exists("get_magic_quotes_runtime")) + || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if already done + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Get and memorize the magic_quote value + $this->magic_quotes_status = @get_magic_quotes_runtime(); + + // ----- Disable magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime(0); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privSwapBackMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privSwapBackMagicQuotes() + { + $v_result=1; + + // ----- Look if function exists + if ( (!function_exists("get_magic_quotes_runtime")) + || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if something to do + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Swap back magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime($this->magic_quotes_status); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + } + // End of class + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilPathReduction() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function PclZipUtilPathReduction($p_dir) + { + $v_result = ""; + + // ----- Look for not empty path + if ($p_dir != "") { + // ----- Explode path by directory names + $v_list = explode("/", $p_dir); + + // ----- Study directories from last to first + $v_skip = 0; + for ($i=sizeof($v_list)-1; $i>=0; $i--) { + // ----- Look for current path + if ($v_list[$i] == ".") { + // ----- Ignore this directory + // Should be the first $i=0, but no check is done + } + else if ($v_list[$i] == "..") { + $v_skip++; + } + else if ($v_list[$i] == "") { + // ----- First '/' i.e. root slash + if ($i == 0) { + $v_result = "/".$v_result; + if ($v_skip > 0) { + // ----- It is an invalid path, so the path is not modified + // TBC + $v_result = $p_dir; + $v_skip = 0; + } + } + // ----- Last '/' i.e. indicates a directory + else if ($i == (sizeof($v_list)-1)) { + $v_result = $v_list[$i]; + } + // ----- Double '/' inside the path + else { + // ----- Ignore only the double '//' in path, + // but not the first and last '/' + } + } + else { + // ----- Look for item to skip + if ($v_skip > 0) { + $v_skip--; + } + else { + $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); + } + } + } + + // ----- Look for skip + if ($v_skip > 0) { + while ($v_skip > 0) { + $v_result = '../'.$v_result; + $v_skip--; + } + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilPathInclusion() + // Description : + // This function indicates if the path $p_path is under the $p_dir tree. Or, + // said in an other way, if the file or sub-dir $p_path is inside the dir + // $p_dir. + // The function indicates also if the path is exactly the same as the dir. + // This function supports path with duplicated '/' like '//', but does not + // support '.' or '..' statements. + // Parameters : + // Return Values : + // 0 if $p_path is not inside directory $p_dir + // 1 if $p_path is inside directory $p_dir + // 2 if $p_path is exactly the same as $p_dir + // -------------------------------------------------------------------------------- + function PclZipUtilPathInclusion($p_dir, $p_path) + { + $v_result = 1; + + // ----- Look for path beginning by ./ + if ( ($p_dir == '.') + || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) { + $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1); + } + if ( ($p_path == '.') + || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) { + $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1); + } + + // ----- Explode dir and path by directory separator + $v_list_dir = explode("/", $p_dir); + $v_list_dir_size = sizeof($v_list_dir); + $v_list_path = explode("/", $p_path); + $v_list_path_size = sizeof($v_list_path); + + // ----- Study directories paths + $i = 0; + $j = 0; + while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { + + // ----- Look for empty dir (path reduction) + if ($v_list_dir[$i] == '') { + $i++; + continue; + } + if ($v_list_path[$j] == '') { + $j++; + continue; + } + + // ----- Compare the items + if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != '')) { + $v_result = 0; + } + + // ----- Next items + $i++; + $j++; + } + + // ----- Look if everything seems to be the same + if ($v_result) { + // ----- Skip all the empty items + while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++; + while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++; + + if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { + // ----- There are exactly the same + $v_result = 2; + } + else if ($i < $v_list_dir_size) { + // ----- The path is shorter than the dir + $v_result = 0; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilCopyBlock() + // Description : + // Parameters : + // $p_mode : read/write compression mode + // 0 : src & dest normal + // 1 : src gzip, dest normal + // 2 : src normal, dest gzip + // 3 : src & dest gzip + // Return Values : + // -------------------------------------------------------------------------------- + function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0) + { + $v_result = 1; + + if ($p_mode==0) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==1) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==2) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==3) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilRename() + // Description : + // This function tries to do a simple rename() function. If it fails, it + // tries to copy the $p_src file in a new $p_dest file and then unlink the + // first one. + // Parameters : + // $p_src : Old filename + // $p_dest : New filename + // Return Values : + // 1 on success, 0 on failure. + // -------------------------------------------------------------------------------- + function PclZipUtilRename($p_src, $p_dest) + { + $v_result = 1; + + // ----- Try to rename the files + if (!@rename($p_src, $p_dest)) { + + // ----- Try to copy & unlink the src + if (!@copy($p_src, $p_dest)) { + $v_result = 0; + } + else if (!@unlink($p_src)) { + $v_result = 0; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilOptionText() + // Description : + // Translate option value in text. Mainly for debug purpose. + // Parameters : + // $p_option : the option value. + // Return Values : + // The option text value. + // -------------------------------------------------------------------------------- + function PclZipUtilOptionText($p_option) + { + + $v_list = get_defined_constants(); + for (reset($v_list); $v_key = key($v_list); next($v_list)) { + $v_prefix = substr($v_key, 0, 10); + if (( ($v_prefix == 'PCLZIP_OPT') + || ($v_prefix == 'PCLZIP_CB_') + || ($v_prefix == 'PCLZIP_ATT')) + && ($v_list[$v_key] == $p_option)) { + return $v_key; + } + } + + $v_result = 'Unknown'; + + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilTranslateWinPath() + // Description : + // Translate windows path by replacing '\' by '/' and optionally removing + // drive letter. + // Parameters : + // $p_path : path to translate. + // $p_remove_disk_letter : true | false + // Return Values : + // The path translated. + // -------------------------------------------------------------------------------- + function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true) + { + if (stristr(php_uname(), 'windows')) { + // ----- Look for potential disk letter + if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) { + $p_path = substr($p_path, $v_position+1); + } + // ----- Change potential windows directory separator + if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) { + $p_path = strtr($p_path, '\\', '/'); + } + } + return $p_path; + } + // -------------------------------------------------------------------------------- + + +?> diff --git a/wp-admin/includes/class-wp-comments-list-table.php b/wp-admin/includes/class-wp-comments-list-table.php new file mode 100644 index 0000000000..fcfcd1e36b --- /dev/null +++ b/wp-admin/includes/class-wp-comments-list-table.php @@ -0,0 +1,791 @@ + 'comments', + 'singular' => 'comment', + 'ajax' => true, + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, + ) ); + } + + /** + * @return bool + */ + public function ajax_user_can() { + return current_user_can('edit_posts'); + } + + /** + * + * @global int $post_id + * @global string $comment_status + * @global string $search + * @global string $comment_type + */ + public function prepare_items() { + global $post_id, $comment_status, $search, $comment_type; + + $comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all'; + if ( !in_array( $comment_status, array( 'all', 'moderated', 'approved', 'spam', 'trash' ) ) ) + $comment_status = 'all'; + + $comment_type = !empty( $_REQUEST['comment_type'] ) ? $_REQUEST['comment_type'] : ''; + + $search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s'] : ''; + + $post_type = ( isset( $_REQUEST['post_type'] ) ) ? sanitize_key( $_REQUEST['post_type'] ) : ''; + + $user_id = ( isset( $_REQUEST['user_id'] ) ) ? $_REQUEST['user_id'] : ''; + + $orderby = ( isset( $_REQUEST['orderby'] ) ) ? $_REQUEST['orderby'] : ''; + $order = ( isset( $_REQUEST['order'] ) ) ? $_REQUEST['order'] : ''; + + $comments_per_page = $this->get_per_page( $comment_status ); + + $doing_ajax = defined( 'DOING_AJAX' ) && DOING_AJAX; + + if ( isset( $_REQUEST['number'] ) ) { + $number = (int) $_REQUEST['number']; + } + else { + $number = $comments_per_page + min( 8, $comments_per_page ); // Grab a few extra + } + + $page = $this->get_pagenum(); + + if ( isset( $_REQUEST['start'] ) ) { + $start = $_REQUEST['start']; + } else { + $start = ( $page - 1 ) * $comments_per_page; + } + + if ( $doing_ajax && isset( $_REQUEST['offset'] ) ) { + $start += $_REQUEST['offset']; + } + + $status_map = array( + 'moderated' => 'hold', + 'approved' => 'approve', + 'all' => '', + ); + + $args = array( + 'status' => isset( $status_map[$comment_status] ) ? $status_map[$comment_status] : $comment_status, + 'search' => $search, + 'user_id' => $user_id, + 'offset' => $start, + 'number' => $number, + 'post_id' => $post_id, + 'type' => $comment_type, + 'orderby' => $orderby, + 'order' => $order, + 'post_type' => $post_type, + ); + + $_comments = get_comments( $args ); + if ( is_array( $_comments ) ) { + update_comment_cache( $_comments ); + + $this->items = array_slice( $_comments, 0, $comments_per_page ); + $this->extra_items = array_slice( $_comments, $comments_per_page ); + + $_comment_post_ids = array_unique( wp_list_pluck( $_comments, 'comment_post_ID' ) ); + + $this->pending_count = get_pending_comments_num( $_comment_post_ids ); + } + + $total_comments = get_comments( array_merge( $args, array( + 'count' => true, + 'offset' => 0, + 'number' => 0 + ) ) ); + + $this->set_pagination_args( array( + 'total_items' => $total_comments, + 'per_page' => $comments_per_page, + ) ); + } + + /** + * + * @param string $comment_status + * @return int + */ + public function get_per_page( $comment_status = 'all' ) { + $comments_per_page = $this->get_items_per_page( 'edit_comments_per_page' ); + /** + * Filter the number of comments listed per page in the comments list table. + * + * @since 2.6.0 + * + * @param int $comments_per_page The number of comments to list per page. + * @param string $comment_status The comment status name. Default 'All'. + */ + return apply_filters( 'comments_per_page', $comments_per_page, $comment_status ); + } + + /** + * + * @global string $comment_status + */ + public function no_items() { + global $comment_status; + + if ( 'moderated' == $comment_status ) + _e( 'No comments awaiting moderation.' ); + else + _e( 'No comments found.' ); + } + + /** + * + * @global int $post_id + * @global string $comment_status + * @global string $comment_type + */ + protected function get_views() { + global $post_id, $comment_status, $comment_type; + + $status_links = array(); + $num_comments = ( $post_id ) ? wp_count_comments( $post_id ) : wp_count_comments(); + //, number_format_i18n($num_comments->moderated) ), "" . number_format_i18n($num_comments->moderated) . ""), + //, number_format_i18n($num_comments->spam) ), "" . number_format_i18n($num_comments->spam) . "") + $stati = array( + 'all' => _nx_noop('All', 'All', 'comments'), // singular not used + 'moderated' => _n_noop('Pending (%s)', 'Pending (%s)'), + 'approved' => _n_noop('Approved', 'Approved'), // singular not used + 'spam' => _n_noop('Spam (%s)', 'Spam (%s)'), + 'trash' => _n_noop('Trash (%s)', 'Trash (%s)') + ); + + if ( !EMPTY_TRASH_DAYS ) + unset($stati['trash']); + + $link = 'edit-comments.php'; + if ( !empty($comment_type) && 'all' != $comment_type ) + $link = add_query_arg( 'comment_type', $comment_type, $link ); + + foreach ( $stati as $status => $label ) { + $class = ( $status == $comment_status ) ? ' class="current"' : ''; + + if ( !isset( $num_comments->$status ) ) + $num_comments->$status = 10; + $link = add_query_arg( 'comment_status', $status, $link ); + if ( $post_id ) + $link = add_query_arg( 'p', absint( $post_id ), $link ); + /* + // I toyed with this, but decided against it. Leaving it in here in case anyone thinks it is a good idea. ~ Mark + if ( !empty( $_REQUEST['s'] ) ) + $link = add_query_arg( 's', esc_attr( wp_unslash( $_REQUEST['s'] ) ), $link ); + */ + $status_links[$status] = "" . sprintf( + translate_nooped_plural( $label, $num_comments->$status ), + number_format_i18n( $num_comments->$status ) + ) . ''; + } + + /** + * Filter the comment status links. + * + * @since 2.5.0 + * + * @param array $status_links An array of fully-formed status links. Default 'All'. + * Accepts 'All', 'Pending', 'Approved', 'Spam', and 'Trash'. + */ + return apply_filters( 'comment_status_links', $status_links ); + } + + /** + * + * @global string $comment_status + * + * @return array + */ + protected function get_bulk_actions() { + global $comment_status; + + $actions = array(); + if ( in_array( $comment_status, array( 'all', 'approved' ) ) ) + $actions['unapprove'] = __( 'Unapprove' ); + if ( in_array( $comment_status, array( 'all', 'moderated' ) ) ) + $actions['approve'] = __( 'Approve' ); + if ( in_array( $comment_status, array( 'all', 'moderated', 'approved', 'trash' ) ) ) + $actions['spam'] = _x( 'Mark as Spam', 'comment' ); + + if ( 'trash' == $comment_status ) + $actions['untrash'] = __( 'Restore' ); + elseif ( 'spam' == $comment_status ) + $actions['unspam'] = _x( 'Not Spam', 'comment' ); + + if ( in_array( $comment_status, array( 'trash', 'spam' ) ) || !EMPTY_TRASH_DAYS ) + $actions['delete'] = __( 'Delete Permanently' ); + else + $actions['trash'] = __( 'Move to Trash' ); + + return $actions; + } + + /** + * + * @global string $comment_status + * @global string $comment_type + * + * @param string $which + */ + protected function extra_tablenav( $which ) { + global $comment_status, $comment_type; +?> +
+ + + + 'post-query-submit' ) ); + } + + if ( ( 'spam' == $comment_status || 'trash' == $comment_status ) && current_user_can( 'moderate_comments' ) ) { + wp_nonce_field( 'bulk-destroy', '_destroy_nonce' ); + $title = ( 'spam' == $comment_status ) ? esc_attr__( 'Empty Spam' ) : esc_attr__( 'Empty Trash' ); + submit_button( $title, 'apply', 'delete_all', false ); + } + /** + * Fires after the Filter submit button for comment types. + * + * @since 2.5.0 + * + * @param string $comment_status The comment status name. Default 'All'. + */ + do_action( 'manage_comments_nav', $comment_status ); + echo '
'; + } + + /** + * @return string|false + */ + public function current_action() { + if ( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) ) + return 'delete_all'; + + return parent::current_action(); + } + + /** + * + * @global int $post_id + * + * @return array + */ + public function get_columns() { + global $post_id; + + $columns = array(); + + if ( $this->checkbox ) + $columns['cb'] = ''; + + $columns['author'] = __( 'Author' ); + $columns['comment'] = _x( 'Comment', 'column name' ); + + if ( ! $post_id ) { + /* translators: column name or table row header */ + $columns['response'] = __( 'In Response To' ); + } + + return $columns; + } + + /** + * + * @return array + */ + protected function get_sortable_columns() { + return array( + 'author' => 'comment_author', + 'response' => 'comment_post_ID' + ); + } + + /** + * Get the name of the default primary column. + * + * @since 4.3.0 + * @access protected + * + * @return string Name of the default primary column, in this case, 'comment'. + */ + protected function get_default_primary_column_name() { + return 'comment'; + } + + /** + * @access public + */ + public function display() { + wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' ); + + $this->display_tablenav( 'top' ); + +?> + + + + print_column_headers(); ?> + + + + + display_rows_or_placeholder(); ?> + + + + items = $this->extra_items; $this->display_rows(); ?> + + + + + print_column_headers( false ); ?> + + + +
+display_tablenav( 'bottom' ); + } + + /** + * + * @global WP_Post $post + * @global object $comment + * + * @param object $a_comment + */ + public function single_row( $a_comment ) { + global $post, $comment; + + $comment = $a_comment; + $the_comment_class = wp_get_comment_status( $comment->comment_ID ); + if ( ! $the_comment_class ) { + $the_comment_class = ''; + } + $the_comment_class = join( ' ', get_comment_class( $the_comment_class, $comment->comment_ID, $comment->comment_post_ID ) ); + + $post = get_post( $comment->comment_post_ID ); + + $this->user_can = current_user_can( 'edit_comment', $comment->comment_ID ); + + echo ""; + $this->single_row_columns( $comment ); + echo "\n"; + } + + /** + * Generate and display row actions links. + * + * @since 4.3.0 + * @access protected + * + * @param object $comment Comment being acted upon. + * @param string $column_name Current column name. + * @param string $primary Primary column name. + * @return string|void Comment row actions output. + */ + protected function handle_row_actions( $comment, $column_name, $primary ) { + global $comment_status; + + if ( $primary !== $column_name ) { + return ''; + } + + if ( ! $this->user_can ) { + return; + } + + $the_comment_status = wp_get_comment_status( $comment->comment_ID ); + + $out = ''; + + $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) ); + $approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) ); + + $url = "comment.php?c=$comment->comment_ID"; + + $approve_url = esc_url( $url . "&action=approvecomment&$approve_nonce" ); + $unapprove_url = esc_url( $url . "&action=unapprovecomment&$approve_nonce" ); + $spam_url = esc_url( $url . "&action=spamcomment&$del_nonce" ); + $unspam_url = esc_url( $url . "&action=unspamcomment&$del_nonce" ); + $trash_url = esc_url( $url . "&action=trashcomment&$del_nonce" ); + $untrash_url = esc_url( $url . "&action=untrashcomment&$del_nonce" ); + $delete_url = esc_url( $url . "&action=deletecomment&$del_nonce" ); + + // Preorder it: Approve | Reply | Quick Edit | Edit | Spam | Trash. + $actions = array( + 'approve' => '', 'unapprove' => '', + 'reply' => '', + 'quickedit' => '', + 'edit' => '', + 'spam' => '', 'unspam' => '', + 'trash' => '', 'untrash' => '', 'delete' => '' + ); + + // Not looking at all comments. + if ( $comment_status && 'all' != $comment_status ) { + if ( 'approved' == $the_comment_status ) { + $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; + } elseif ( 'unapproved' == $the_comment_status ) { + $actions['approve'] = "" . __( 'Approve' ) . ''; + } + } else { + $actions['approve'] = "" . __( 'Approve' ) . ''; + $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; + } + + if ( 'spam' != $the_comment_status ) { + $actions['spam'] = "" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . ''; + } elseif ( 'spam' == $the_comment_status ) { + $actions['unspam'] = "" . _x( 'Not Spam', 'comment' ) . ''; + } + + if ( 'trash' == $the_comment_status ) { + $actions['untrash'] = "" . __( 'Restore' ) . ''; + } + + if ( 'spam' == $the_comment_status || 'trash' == $the_comment_status || !EMPTY_TRASH_DAYS ) { + $actions['delete'] = "" . __( 'Delete Permanently' ) . ''; + } else { + $actions['trash'] = "" . _x( 'Trash', 'verb' ) . ''; + } + + if ( 'spam' != $the_comment_status && 'trash' != $the_comment_status ) { + $actions['edit'] = "". __( 'Edit' ) . ''; + + $format = '%s'; + + $actions['quickedit'] = sprintf( $format, $comment->comment_ID, $comment->comment_post_ID, 'edit', 'vim-q comment-inline',esc_attr__( 'Edit this item inline' ), __( 'Quick Edit' ) ); + + $actions['reply'] = sprintf( $format, $comment->comment_ID, $comment->comment_post_ID, 'replyto', 'vim-r comment-inline', esc_attr__( 'Reply to this comment' ), __( 'Reply' ) ); + } + + /** This filter is documented in wp-admin/includes/dashboard.php */ + $actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment ); + + $i = 0; + $out .= '
'; + foreach ( $actions as $action => $link ) { + ++$i; + ( ( ( 'approve' == $action || 'unapprove' == $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; + + // Reply and quickedit need a hide-if-no-js span when not added with ajax + if ( ( 'reply' == $action || 'quickedit' == $action ) && ! defined('DOING_AJAX') ) + $action .= ' hide-if-no-js'; + elseif ( ( $action == 'untrash' && $the_comment_status == 'trash' ) || ( $action == 'unspam' && $the_comment_status == 'spam' ) ) { + if ( '1' == get_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', true ) ) + $action .= ' approve'; + else + $action .= ' unapprove'; + } + + $out .= "$sep$link"; + } + $out .= '
'; + + $out .= ''; + + return $out; + } + + /** + * + * @param object $comment + */ + public function column_cb( $comment ) { + if ( $this->user_can ) { ?> + + + comment_ID ) ); + + echo '
'; + $this->column_author( $comment ); + echo '
'; + + echo ''; + comment_text(); + if ( $this->user_can ) { ?> + + 50 ) + $author_url_display = substr( $author_url_display, 0, 49 ) . '…'; + + echo ""; comment_author(); echo '
'; + if ( !empty( $author_url ) ) + echo "$author_url_display
"; + + if ( $this->user_can ) { + if ( !empty( $comment->comment_author_email ) ) { + comment_author_email_link(); + echo '
'; + } + + $author_ip = get_comment_author_IP(); + if ( $author_ip ) { + $author_ip_url = add_query_arg( array( 's' => $author_ip, 'mode' => 'detail' ), 'edit-comments.php' ); + if ( 'spam' == $comment_status ) { + $author_ip_url = add_query_arg( 'comment_status', 'spam', $author_ip_url ); + } + printf( '%s', esc_url( $author_ip_url ), $author_ip ); + } + } + } + + /** + * + * @return string + */ + public function column_date() { + return get_comment_date( __( 'Y/m/d \a\t g:i a' ) ); + } + + /** + * @access public + */ + public function column_response() { + $post = get_post(); + + if ( ! $post ) { + return; + } + + if ( isset( $this->pending_count[$post->ID] ) ) { + $pending_comments = $this->pending_count[$post->ID]; + } else { + $_pending_count_temp = get_pending_comments_num( array( $post->ID ) ); + $pending_comments = $this->pending_count[$post->ID] = $_pending_count_temp[$post->ID]; + } + + if ( current_user_can( 'edit_post', $post->ID ) ) { + $post_link = ""; + $post_link .= esc_html( get_the_title( $post->ID ) ) . ''; + } else { + $post_link = esc_html( get_the_title( $post->ID ) ); + } + + echo ''; + } + + /** + * + * @param object $comment + * @param string $column_name + */ + public function column_default( $comment, $column_name ) { + /** + * Fires when the default column output is displayed for a single row. + * + * @since 2.8.0 + * + * @param string $column_name The custom column's name. + * @param int $comment->comment_ID The custom column's unique ID number. + */ + do_action( 'manage_comments_custom_column', $column_name, $comment->comment_ID ); + } +} + +/** + * Post Comments List Table class. + * + * @package WordPress + * @subpackage List_Table + * @since 3.1.0 + * @access private + * + * @see WP_Comments_Table + */ +class WP_Post_Comments_List_Table extends WP_Comments_List_Table { + + /** + * + * @return array + */ + protected function get_column_info() { + return array( + array( + 'author' => __( 'Author' ), + 'comment' => _x( 'Comment', 'column name' ), + ), + array(), + array(), + 'comment', + ); + } + + /** + * + * @return array + */ + protected function get_table_classes() { + $classes = parent::get_table_classes(); + $classes[] = 'wp-list-table'; + $classes[] = 'comments-box'; + return $classes; + } + + /** + * + * @param bool $output_empty + */ + public function display( $output_empty = false ) { + $singular = $this->_args['singular']; + + wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' ); +?> + + > + display_rows_or_placeholder(); + } ?> + + +find_folder(ABSPATH); + // Perhaps the FTP folder is rooted at the WordPress install, Check for wp-includes folder in root, Could have some false positives, but rare. + if ( ! $folder && $this->is_dir( '/' . WPINC ) ) + $folder = '/'; + return $folder; + } + + /** + * Return the path on the remote filesystem of WP_CONTENT_DIR. + * + * @access public + * @since 2.7.0 + * + * @return string The location of the remote path. + */ + public function wp_content_dir() { + return $this->find_folder(WP_CONTENT_DIR); + } + + /** + * Return the path on the remote filesystem of WP_PLUGIN_DIR. + * + * @access public + * @since 2.7.0 + * + * @return string The location of the remote path. + */ + public function wp_plugins_dir() { + return $this->find_folder(WP_PLUGIN_DIR); + } + + /** + * Return the path on the remote filesystem of the Themes Directory. + * + * @access public + * @since 2.7.0 + * + * @param string $theme The Theme stylesheet or template for the directory. + * @return string The location of the remote path. + */ + public function wp_themes_dir( $theme = false ) { + $theme_root = get_theme_root( $theme ); + + // Account for relative theme roots + if ( '/themes' == $theme_root || ! is_dir( $theme_root ) ) + $theme_root = WP_CONTENT_DIR . $theme_root; + + return $this->find_folder( $theme_root ); + } + + /** + * Return the path on the remote filesystem of WP_LANG_DIR. + * + * @access public + * @since 3.2.0 + * + * @return string The location of the remote path. + */ + public function wp_lang_dir() { + return $this->find_folder(WP_LANG_DIR); + } + + /** + * Locate a folder on the remote filesystem. + * + * @access public + * @since 2.5.0 + * @deprecated 2.7.0 use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() instead. + * @see WP_Filesystem::abspath() + * @see WP_Filesystem::wp_content_dir() + * @see WP_Filesystem::wp_plugins_dir() + * @see WP_Filesystem::wp_themes_dir() + * @see WP_Filesystem::wp_lang_dir() + * + * @param string $base The folder to start searching from. + * @param bool $echo True to display debug information. + * Default false. + * @return string The location of the remote path. + */ + public function find_base_dir( $base = '.', $echo = false ) { + _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); + $this->verbose = $echo; + return $this->abspath(); + } + + /** + * Locate a folder on the remote filesystem. + * + * @access public + * @since 2.5.0 + * @deprecated 2.7.0 use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead. + * @see WP_Filesystem::abspath() + * @see WP_Filesystem::wp_content_dir() + * @see WP_Filesystem::wp_plugins_dir() + * @see WP_Filesystem::wp_themes_dir() + * @see WP_Filesystem::wp_lang_dir() + * + * @param string $base The folder to start searching from. + * @param bool $echo True to display debug information. + * @return string The location of the remote path. + */ + public function get_base_dir( $base = '.', $echo = false ) { + _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); + $this->verbose = $echo; + return $this->abspath(); + } + + /** + * Locate a folder on the remote filesystem. + * + * Assumes that on Windows systems, Stripping off the Drive + * letter is OK Sanitizes \\ to / in windows filepaths. + * + * @access public + * @since 2.7.0 + * + * @param string $folder the folder to locate. + * @return string|false The location of the remote path, false on failure. + */ + public function find_folder( $folder ) { + if ( isset( $this->cache[ $folder ] ) ) + return $this->cache[ $folder ]; + + if ( stripos($this->method, 'ftp') !== false ) { + $constant_overrides = array( + 'FTP_BASE' => ABSPATH, + 'FTP_CONTENT_DIR' => WP_CONTENT_DIR, + 'FTP_PLUGIN_DIR' => WP_PLUGIN_DIR, + 'FTP_LANG_DIR' => WP_LANG_DIR + ); + + // Direct matches ( folder = CONSTANT/ ) + foreach ( $constant_overrides as $constant => $dir ) { + if ( ! defined( $constant ) ) + continue; + if ( $folder === $dir ) + return trailingslashit( constant( $constant ) ); + } + + // Prefix Matches ( folder = CONSTANT/subdir ) + foreach ( $constant_overrides as $constant => $dir ) { + if ( ! defined( $constant ) ) + continue; + if ( 0 === stripos( $folder, $dir ) ) { // $folder starts with $dir + $potential_folder = preg_replace( '#^' . preg_quote( $dir, '#' ) . '/#i', trailingslashit( constant( $constant ) ), $folder ); + $potential_folder = trailingslashit( $potential_folder ); + + if ( $this->is_dir( $potential_folder ) ) { + $this->cache[ $folder ] = $potential_folder; + return $potential_folder; + } + } + } + } elseif ( 'direct' == $this->method ) { + $folder = str_replace('\\', '/', $folder); // Windows path sanitisation + return trailingslashit($folder); + } + + $folder = preg_replace('|^([a-z]{1}):|i', '', $folder); // Strip out windows drive letter if it's there. + $folder = str_replace('\\', '/', $folder); // Windows path sanitisation + + if ( isset($this->cache[ $folder ] ) ) + return $this->cache[ $folder ]; + + if ( $this->exists($folder) ) { // Folder exists at that absolute path. + $folder = trailingslashit($folder); + $this->cache[ $folder ] = $folder; + return $folder; + } + if ( $return = $this->search_for_folder($folder) ) + $this->cache[ $folder ] = $return; + return $return; + } + + /** + * Locate a folder on the remote filesystem. + * + * Expects Windows sanitized path. + * + * @since 2.7.0 + * + * @param string $folder The folder to locate. + * @param string $base The folder to start searching from. + * @param bool $loop If the function has recursed, Internal use only. + * @return string|false The location of the remote path, false to cease looping. + */ + public function search_for_folder( $folder, $base = '.', $loop = false ) { + if ( empty( $base ) || '.' == $base ) + $base = trailingslashit($this->cwd()); + + $folder = untrailingslashit($folder); + + if ( $this->verbose ) + printf( "\n" . __('Looking for %1$s in %2$s') . "
\n", $folder, $base ); + + $folder_parts = explode('/', $folder); + $folder_part_keys = array_keys( $folder_parts ); + $last_index = array_pop( $folder_part_keys ); + $last_path = $folder_parts[ $last_index ]; + + $files = $this->dirlist( $base ); + + foreach ( $folder_parts as $index => $key ) { + if ( $index == $last_index ) + continue; // We want this to be caught by the next code block. + + /* + * Working from /home/ to /user/ to /wordpress/ see if that file exists within + * the current folder, If it's found, change into it and follow through looking + * for it. If it cant find WordPress down that route, it'll continue onto the next + * folder level, and see if that matches, and so on. If it reaches the end, and still + * cant find it, it'll return false for the entire function. + */ + if ( isset($files[ $key ]) ){ + + // Let's try that folder: + $newdir = trailingslashit(path_join($base, $key)); + if ( $this->verbose ) + printf( "\n" . __('Changing to %s') . "
\n", $newdir ); + + // Only search for the remaining path tokens in the directory, not the full path again. + $newfolder = implode( '/', array_slice( $folder_parts, $index + 1 ) ); + if ( $ret = $this->search_for_folder( $newfolder, $newdir, $loop) ) + return $ret; + } + } + + // Only check this as a last resort, to prevent locating the incorrect install. All above procedures will fail quickly if this is the right branch to take. + if (isset( $files[ $last_path ] ) ) { + if ( $this->verbose ) + printf( "\n" . __('Found %s') . "
\n", $base . $last_path ); + return trailingslashit($base . $last_path); + } + + // Prevent this function from looping again. + // No need to proceed if we've just searched in / + if ( $loop || '/' == $base ) + return false; + + // As an extra last resort, Change back to / if the folder wasn't found. + // This comes into effect when the CWD is /home/user/ but WP is at /var/www/.... + return $this->search_for_folder( $folder, '/', true ); + + } + + /** + * Return the *nix-style file permissions for a file. + * + * From the PHP documentation page for fileperms(). + * + * @link http://docs.php.net/fileperms + * + * @access public + * @since 2.5.0 + * + * @param string $file String filename. + * @return string The *nix-style representation of permissions. + */ + public function gethchmod( $file ){ + $perms = intval( $this->getchmod( $file ), 8 ); + if (($perms & 0xC000) == 0xC000) // Socket + $info = 's'; + elseif (($perms & 0xA000) == 0xA000) // Symbolic Link + $info = 'l'; + elseif (($perms & 0x8000) == 0x8000) // Regular + $info = '-'; + elseif (($perms & 0x6000) == 0x6000) // Block special + $info = 'b'; + elseif (($perms & 0x4000) == 0x4000) // Directory + $info = 'd'; + elseif (($perms & 0x2000) == 0x2000) // Character special + $info = 'c'; + elseif (($perms & 0x1000) == 0x1000) // FIFO pipe + $info = 'p'; + else // Unknown + $info = 'u'; + + // Owner + $info .= (($perms & 0x0100) ? 'r' : '-'); + $info .= (($perms & 0x0080) ? 'w' : '-'); + $info .= (($perms & 0x0040) ? + (($perms & 0x0800) ? 's' : 'x' ) : + (($perms & 0x0800) ? 'S' : '-')); + + // Group + $info .= (($perms & 0x0020) ? 'r' : '-'); + $info .= (($perms & 0x0010) ? 'w' : '-'); + $info .= (($perms & 0x0008) ? + (($perms & 0x0400) ? 's' : 'x' ) : + (($perms & 0x0400) ? 'S' : '-')); + + // World + $info .= (($perms & 0x0004) ? 'r' : '-'); + $info .= (($perms & 0x0002) ? 'w' : '-'); + $info .= (($perms & 0x0001) ? + (($perms & 0x0200) ? 't' : 'x' ) : + (($perms & 0x0200) ? 'T' : '-')); + return $info; + } + + /** + * Gets the permissions of the specified file or filepath in their octal format + * + * @since 2.5.0 + * @param string $file + * @return string the last 3 characters of the octal number + */ + public function getchmod( $file ) { + return '777'; + } + + /** + * Convert *nix-style file permissions to a octal number. + * + * Converts '-rw-r--r--' to 0644 + * From "info at rvgate dot nl"'s comment on the PHP documentation for chmod() + * + * @link http://docs.php.net/manual/en/function.chmod.php#49614 + * + * @access public + * @since 2.5.0 + * + * @param string $mode string The *nix-style file permission. + * @return int octal representation + */ + public function getnumchmodfromh( $mode ) { + $realmode = ''; + $legal = array('', 'w', 'r', 'x', '-'); + $attarray = preg_split('//', $mode); + + for ( $i = 0, $c = count( $attarray ); $i < $c; $i++ ) { + if ($key = array_search($attarray[$i], $legal)) { + $realmode .= $legal[$key]; + } + } + + $mode = str_pad($realmode, 10, '-', STR_PAD_LEFT); + $trans = array('-'=>'0', 'r'=>'4', 'w'=>'2', 'x'=>'1'); + $mode = strtr($mode,$trans); + + $newmode = $mode[0]; + $newmode .= $mode[1] + $mode[2] + $mode[3]; + $newmode .= $mode[4] + $mode[5] + $mode[6]; + $newmode .= $mode[7] + $mode[8] + $mode[9]; + return $newmode; + } + + /** + * Determine if the string provided contains binary characters. + * + * @since 2.7.0 + * + * @param string $text String to test against. + * @return bool true if string is binary, false otherwise. + */ + public function is_binary( $text ) { + return (bool) preg_match( '|[^\x20-\x7E]|', $text ); // chr(32)..chr(127) + } + + /** + * Change the ownership of a file / folder. + * + * Default behavior is to do nothing, override this in your subclass, if desired. + * + * @since 2.5.0 + * + * @param string $file Path to the file. + * @param mixed $owner A user name or number. + * @param bool $recursive Optional. If set True changes file owner recursivly. Defaults to False. + * @return bool Returns true on success or false on failure. + */ + public function chown( $file, $owner, $recursive = false ) { + return false; + } + + /** + * Connect filesystem. + * + * @since 2.5.0 + * @abstract + * @return bool True on success or false on failure (always true for WP_Filesystem_Direct). + */ + public function connect() { + return true; + } + + /** + * Read entire file into a string. + * + * @since 2.5.0 + * @abstract + * @param string $file Name of the file to read. + * @return mixed|bool Returns the read data or false on failure. + */ + public function get_contents( $file ) { + return false; + } + + /** + * Read entire file into an array. + * + * @since 2.5.0 + * @abstract + * @param string $file Path to the file. + * @return array|bool the file contents in an array or false on failure. + */ + public function get_contents_array( $file ) { + return false; + } + + /** + * Write a string to a file. + * + * @since 2.5.0 + * @abstract + * @param string $file Remote path to the file where to write the data. + * @param string $contents The data to write. + * @param int $mode Optional. The file permissions as octal number, usually 0644. + * @return bool False on failure. + */ + public function put_contents( $file, $contents, $mode = false ) { + return false; + } + + /** + * Get the current working directory. + * + * @since 2.5.0 + * @abstract + * @return string|bool The current working directory on success, or false on failure. + */ + public function cwd() { + return false; + } + + /** + * Change current directory. + * + * @since 2.5.0 + * @abstract + * @param string $dir The new current directory. + * @return bool|string + */ + public function chdir( $dir ) { + return false; + } + + /** + * Change the file group. + * + * @since 2.5.0 + * @abstract + * @param string $file Path to the file. + * @param mixed $group A group name or number. + * @param bool $recursive Optional. If set True changes file group recursively. Defaults to False. + * @return bool|string + */ + public function chgrp( $file, $group, $recursive = false ) { + return false; + } + + /** + * Change filesystem permissions. + * + * @since 2.5.0 + * @abstract + * @param string $file Path to the file. + * @param int $mode Optional. The permissions as octal number, usually 0644 for files, 0755 for dirs. + * @param bool $recursive Optional. If set True changes file group recursively. Defaults to False. + * @return bool|string + */ + public function chmod( $file, $mode = false, $recursive = false ) { + return false; + } + + /** + * Get the file owner. + * + * @since 2.5.0 + * @abstract + * @param string $file Path to the file. + * @return string|bool Username of the user or false on error. + */ + public function owner( $file ) { + return false; + } + + /** + * Get the file's group. + * + * @since 2.5.0 + * @abstract + * @param string $file Path to the file. + * @return string|bool The group or false on error. + */ + public function group( $file ) { + return false; + } + + /** + * Copy a file. + * + * @since 2.5.0 + * @abstract + * @param string $source Path to the source file. + * @param string $destination Path to the destination file. + * @param bool $overwrite Optional. Whether to overwrite the destination file if it exists. + * Default false. + * @param int $mode Optional. The permissions as octal number, usually 0644 for files, 0755 for dirs. + * Default false. + * @return bool True if file copied successfully, False otherwise. + */ + public function copy( $source, $destination, $overwrite = false, $mode = false ) { + return false; + } + + /** + * Move a file. + * + * @since 2.5.0 + * @abstract + * @param string $source Path to the source file. + * @param string $destination Path to the destination file. + * @param bool $overwrite Optional. Whether to overwrite the destination file if it exists. + * Default false. + * @return bool True if file copied successfully, False otherwise. + */ + public function move( $source, $destination, $overwrite = false ) { + return false; + } + + /** + * Delete a file or directory. + * + * @since 2.5.0 + * @abstract + * @param string $file Path to the file. + * @param bool $recursive Optional. If set True changes file group recursively. Defaults to False. + * Default false. + * @param bool $type Type of resource. 'f' for file, 'd' for directory. + * Default false. + * @return bool True if the file or directory was deleted, false on failure. + */ + public function delete( $file, $recursive = false, $type = false ) { + return false; + } + + /** + * Check if a file or directory exists. + * + * @since 2.5.0 + * @abstract + * @param string $file Path to file/directory. + * @return bool Whether $file exists or not. + */ + public function exists( $file ) { + return false; + } + + /** + * Check if resource is a file. + * + * @since 2.5.0 + * @abstract + * @param string $file File path. + * @return bool Whether $file is a file. + */ + public function is_file( $file ) { + return false; + } + + /** + * Check if resource is a directory. + * + * @since 2.5.0 + * @abstract + * @param string $path Directory path. + * @return bool Whether $path is a directory. + */ + public function is_dir( $path ) { + return false; + } + + /** + * Check if a file is readable. + * + * @since 2.5.0 + * @abstract + * @param string $file Path to file. + * @return bool Whether $file is readable. + */ + public function is_readable( $file ) { + return false; + } + + /** + * Check if a file or directory is writable. + * + * @since 2.5.0 + * @abstract + * @return bool Whether $file is writable. + */ + public function is_writable( $file ) { + return false; + } + + /** + * Gets the file's last access time. + * + * @since 2.5.0 + * @abstract + * @param string $file Path to file. + * @return int|bool Unix timestamp representing last access time. + */ + public function atime( $file ) { + return false; + } + + /** + * Gets the file modification time. + * + * @since 2.5.0 + * @abstract + * @param string $file Path to file. + * @return int|bool Unix timestamp representing modification time. + */ + public function mtime( $file ) { + return false; + } + + /** + * Gets the file size (in bytes). + * + * @since 2.5.0 + * @abstract + * @param string $file Path to file. + * @return int|bool Size of the file in bytes. + */ + public function size( $file ) { + return false; + } + + /** + * Set the access and modification times of a file. + * + * Note: If $file doesn't exist, it will be created. + * + * @since 2.5.0 + * @abstract + * @param string $file Path to file. + * @param int $time Optional. Modified time to set for file. + * Default 0. + * @param int $atime Optional. Access time to set for file. + * Default 0. + * @return bool Whether operation was successful or not. + */ + public function touch( $file, $time = 0, $atime = 0 ) { + return false; + } + + /** + * Create a directory. + * + * @since 2.5.0 + * @abstract + * @param string $path Path for new directory. + * @param mixed $chmod Optional. The permissions as octal number, (or False to skip chmod) + * Default false. + * @param mixed $chown Optional. A user name or number (or False to skip chown) + * Default false. + * @param mixed $chgrp Optional. A group name or number (or False to skip chgrp). + * Default false. + * @return bool False if directory cannot be created, true otherwise. + */ + public function mkdir( $path, $chmod = false, $chown = false, $chgrp = false ) { + return false; + } + + /** + * Delete a directory. + * + * @since 2.5.0 + * @abstract + * @param string $path Path to directory. + * @param bool $recursive Optional. Whether to recursively remove files/directories. + * Default false. + * @return bool Whether directory is deleted successfully or not. + */ + public function rmdir( $path, $recursive = false ) { + return false; + } + + /** + * Get details for files in a directory or a specific file. + * + * @since 2.5.0 + * @abstract + * + * @param string $path Path to directory or file. + * @param bool $include_hidden Optional. Whether to include details of hidden ("." prefixed) files. + * Default true. + * @param bool $recursive Optional. Whether to recursively include file details in nested directories. + * Default false. + * @return array|bool { + * Array of files. False if unable to list directory contents. + * + * @type string $name Name of the file/directory. + * @type string $perms *nix representation of permissions. + * @type int $permsn Octal representation of permissions. + * @type string $owner Owner name or ID. + * @type int $size Size of file in bytes. + * @type int $lastmodunix Last modified unix timestamp. + * @type mixed $lastmod Last modified month (3 letter) and day (without leading 0). + * @type int $time Last modified time. + * @type string $type Type of resource. 'f' for file, 'd' for directory. + * @type mixed $files If a directory and $recursive is true, contains another array of files. + * } + */ + public function dirlist( $path, $include_hidden = true, $recursive = false ) { + return false; + } + +} // WP_Filesystem_Base diff --git a/wp-admin/includes/class-wp-filesystem-direct.php b/wp-admin/includes/class-wp-filesystem-direct.php new file mode 100644 index 0000000000..f8979c2ac9 --- /dev/null +++ b/wp-admin/includes/class-wp-filesystem-direct.php @@ -0,0 +1,463 @@ +method = 'direct'; + $this->errors = new WP_Error(); + } + + /** + * Reads entire file into a string + * + * @param string $file Name of the file to read. + * @return string|bool The function returns the read data or false on failure. + */ + public function get_contents($file) { + return @file_get_contents($file); + } + + /** + * Reads entire file into an array + * + * @param string $file Path to the file. + * @return array|bool the file contents in an array or false on failure. + */ + public function get_contents_array($file) { + return @file($file); + } + + /** + * Write a string to a file + * + * @param string $file Remote path to the file where to write the data. + * @param string $contents The data to write. + * @param int $mode Optional. The file permissions as octal number, usually 0644. + * Default false. + * @return bool False upon failure, true otherwise. + */ + public function put_contents( $file, $contents, $mode = false ) { + $fp = @fopen( $file, 'wb' ); + if ( ! $fp ) + return false; + + mbstring_binary_safe_encoding(); + + $data_length = strlen( $contents ); + + $bytes_written = fwrite( $fp, $contents ); + + reset_mbstring_encoding(); + + fclose( $fp ); + + if ( $data_length !== $bytes_written ) + return false; + + $this->chmod( $file, $mode ); + + return true; + } + + /** + * Gets the current working directory + * + * @return string|bool the current working directory on success, or false on failure. + */ + public function cwd() { + return @getcwd(); + } + + /** + * Change directory + * + * @param string $dir The new current directory. + * @return bool Returns true on success or false on failure. + */ + public function chdir($dir) { + return @chdir($dir); + } + + /** + * Changes file group + * + * @param string $file Path to the file. + * @param mixed $group A group name or number. + * @param bool $recursive Optional. If set True changes file group recursively. Default false. + * @return bool Returns true on success or false on failure. + */ + public function chgrp($file, $group, $recursive = false) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive ) + return @chgrp($file, $group); + if ( ! $this->is_dir($file) ) + return @chgrp($file, $group); + // Is a directory, and we want recursive + $file = trailingslashit($file); + $filelist = $this->dirlist($file); + foreach ($filelist as $filename) + $this->chgrp($file . $filename, $group, $recursive); + + return true; + } + + /** + * Changes filesystem permissions + * + * @param string $file Path to the file. + * @param int $mode Optional. The permissions as octal number, usually 0644 for files, + * 0755 for dirs. Default false. + * @param bool $recursive Optional. If set True changes file group recursively. Default false. + * @return bool Returns true on success or false on failure. + */ + public function chmod($file, $mode = false, $recursive = false) { + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + if ( ! $recursive || ! $this->is_dir($file) ) + return @chmod($file, $mode); + // Is a directory, and we want recursive + $file = trailingslashit($file); + $filelist = $this->dirlist($file); + foreach ( (array)$filelist as $filename => $filemeta) + $this->chmod($file . $filename, $mode, $recursive); + + return true; + } + + /** + * Changes file owner + * + * @param string $file Path to the file. + * @param mixed $owner A user name or number. + * @param bool $recursive Optional. If set True changes file owner recursively. + * Default false. + * @return bool Returns true on success or false on failure. + */ + public function chown($file, $owner, $recursive = false) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive ) + return @chown($file, $owner); + if ( ! $this->is_dir($file) ) + return @chown($file, $owner); + // Is a directory, and we want recursive + $filelist = $this->dirlist($file); + foreach ($filelist as $filename) { + $this->chown($file . '/' . $filename, $owner, $recursive); + } + return true; + } + + /** + * Gets file owner + * + * @param string $file Path to the file. + * @return string|bool Username of the user or false on error. + */ + public function owner($file) { + $owneruid = @fileowner($file); + if ( ! $owneruid ) + return false; + if ( ! function_exists('posix_getpwuid') ) + return $owneruid; + $ownerarray = posix_getpwuid($owneruid); + return $ownerarray['name']; + } + + /** + * Gets file permissions + * + * FIXME does not handle errors in fileperms() + * + * @param string $file Path to the file. + * @return string Mode of the file (last 3 digits). + */ + public function getchmod($file) { + return substr( decoct( @fileperms( $file ) ), -3 ); + } + + /** + * @param string $file + * @return string|false + */ + public function group($file) { + $gid = @filegroup($file); + if ( ! $gid ) + return false; + if ( ! function_exists('posix_getgrgid') ) + return $gid; + $grouparray = posix_getgrgid($gid); + return $grouparray['name']; + } + + /** + * @param string $source + * @param string $destination + * @param bool $overwrite + * @param int $mode + * @return bool + */ + public function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + + $rtval = copy($source, $destination); + if ( $mode ) + $this->chmod($destination, $mode); + return $rtval; + } + + /** + * @param string $source + * @param string $destination + * @param bool $overwrite + * @return bool + */ + public function move($source, $destination, $overwrite = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + + // Try using rename first. if that fails (for example, source is read only) try copy. + if ( @rename($source, $destination) ) + return true; + + if ( $this->copy($source, $destination, $overwrite) && $this->exists($destination) ) { + $this->delete($source); + return true; + } else { + return false; + } + } + + /** + * @param string $file + * @param bool $recursive + * @param string $type + * @return bool + */ + public function delete($file, $recursive = false, $type = false) { + if ( empty( $file ) ) // Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem. + return false; + $file = str_replace( '\\', '/', $file ); // for win32, occasional problems deleting files otherwise + + if ( 'f' == $type || $this->is_file($file) ) + return @unlink($file); + if ( ! $recursive && $this->is_dir($file) ) + return @rmdir($file); + + // At this point it's a folder, and we're in recursive mode + $file = trailingslashit($file); + $filelist = $this->dirlist($file, true); + + $retval = true; + if ( is_array( $filelist ) ) { + foreach ( $filelist as $filename => $fileinfo ) { + if ( ! $this->delete($file . $filename, $recursive, $fileinfo['type']) ) + $retval = false; + } + } + + if ( file_exists($file) && ! @rmdir($file) ) + $retval = false; + + return $retval; + } + /** + * @param string $file + * @return bool + */ + public function exists($file) { + return @file_exists($file); + } + /** + * @param string $file + * @return bool + */ + public function is_file($file) { + return @is_file($file); + } + /** + * @param string $path + * @return bool + */ + public function is_dir($path) { + return @is_dir($path); + } + + /** + * @param string $file + * @return bool + */ + public function is_readable($file) { + return @is_readable($file); + } + + /** + * @param string $file + * @return bool + */ + public function is_writable($file) { + return @is_writable($file); + } + + /** + * @param string $file + * @return int + */ + public function atime($file) { + return @fileatime($file); + } + + /** + * @param string $file + * @return int + */ + public function mtime($file) { + return @filemtime($file); + } + + /** + * @param string $file + * @return int + */ + public function size($file) { + return @filesize($file); + } + + /** + * @param string $file + * @param int $time + * @param int $atime + * @return bool + */ + public function touch($file, $time = 0, $atime = 0) { + if ($time == 0) + $time = time(); + if ($atime == 0) + $atime = time(); + return @touch($file, $time, $atime); + } + + /** + * @param string $path + * @param mixed $chmod + * @param mixed $chown + * @param mixed $chgrp + * @return bool + */ + public function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { + // Safe mode fails with a trailing slash under certain PHP versions. + $path = untrailingslashit($path); + if ( empty($path) ) + return false; + + if ( ! $chmod ) + $chmod = FS_CHMOD_DIR; + + if ( ! @mkdir($path) ) + return false; + $this->chmod($path, $chmod); + if ( $chown ) + $this->chown($path, $chown); + if ( $chgrp ) + $this->chgrp($path, $chgrp); + return true; + } + + /** + * @param string $path + * @param bool $recursive + * @return bool + */ + public function rmdir($path, $recursive = false) { + return $this->delete($path, $recursive); + } + + /** + * @param string $path + * @param bool $include_hidden + * @param bool $recursive + * @return bool|array + */ + public function dirlist($path, $include_hidden = true, $recursive = false) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path); + } else { + $limit_file = false; + } + + if ( ! $this->is_dir($path) ) + return false; + + $dir = @dir($path); + if ( ! $dir ) + return false; + + $ret = array(); + + while (false !== ($entry = $dir->read()) ) { + $struc = array(); + $struc['name'] = $entry; + + if ( '.' == $struc['name'] || '..' == $struc['name'] ) + continue; + + if ( ! $include_hidden && '.' == $struc['name'][0] ) + continue; + + if ( $limit_file && $struc['name'] != $limit_file) + continue; + + $struc['perms'] = $this->gethchmod($path.'/'.$entry); + $struc['permsn'] = $this->getnumchmodfromh($struc['perms']); + $struc['number'] = false; + $struc['owner'] = $this->owner($path.'/'.$entry); + $struc['group'] = $this->group($path.'/'.$entry); + $struc['size'] = $this->size($path.'/'.$entry); + $struc['lastmodunix']= $this->mtime($path.'/'.$entry); + $struc['lastmod'] = date('M j',$struc['lastmodunix']); + $struc['time'] = date('h:i:s',$struc['lastmodunix']); + $struc['type'] = $this->is_dir($path.'/'.$entry) ? 'd' : 'f'; + + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + $ret[ $struc['name'] ] = $struc; + } + $dir->close(); + unset($dir); + return $ret; + } +} diff --git a/wp-admin/includes/class-wp-filesystem-ftpext.php b/wp-admin/includes/class-wp-filesystem-ftpext.php new file mode 100644 index 0000000000..62ade49136 --- /dev/null +++ b/wp-admin/includes/class-wp-filesystem-ftpext.php @@ -0,0 +1,525 @@ +method = 'ftpext'; + $this->errors = new WP_Error(); + + // Check if possible to use ftp functions. + if ( ! extension_loaded('ftp') ) { + $this->errors->add('no_ftp_ext', __('The ftp PHP extension is not available')); + return; + } + + // This Class uses the timeout on a per-connection basis, Others use it on a per-action basis. + + if ( ! defined('FS_TIMEOUT') ) + define('FS_TIMEOUT', 240); + + if ( empty($opt['port']) ) + $this->options['port'] = 21; + else + $this->options['port'] = $opt['port']; + + if ( empty($opt['hostname']) ) + $this->errors->add('empty_hostname', __('FTP hostname is required')); + else + $this->options['hostname'] = $opt['hostname']; + + // Check if the options provided are OK. + if ( empty($opt['username']) ) + $this->errors->add('empty_username', __('FTP username is required')); + else + $this->options['username'] = $opt['username']; + + if ( empty($opt['password']) ) + $this->errors->add('empty_password', __('FTP password is required')); + else + $this->options['password'] = $opt['password']; + + $this->options['ssl'] = false; + if ( isset($opt['connection_type']) && 'ftps' == $opt['connection_type'] ) + $this->options['ssl'] = true; + } + + /** + * + * @return bool + */ + public function connect() { + if ( isset($this->options['ssl']) && $this->options['ssl'] && function_exists('ftp_ssl_connect') ) + $this->link = @ftp_ssl_connect($this->options['hostname'], $this->options['port'], FS_CONNECT_TIMEOUT); + else + $this->link = @ftp_connect($this->options['hostname'], $this->options['port'], FS_CONNECT_TIMEOUT); + + if ( ! $this->link ) { + $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( ! @ftp_login($this->link,$this->options['username'], $this->options['password']) ) { + $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); + return false; + } + + // Set the Connection to use Passive FTP + @ftp_pasv( $this->link, true ); + if ( @ftp_get_option($this->link, FTP_TIMEOUT_SEC) < FS_TIMEOUT ) + @ftp_set_option($this->link, FTP_TIMEOUT_SEC, FS_TIMEOUT); + + return true; + } + + /** + * @param string $file + * @return false|string + */ + public function get_contents( $file ) { + $tempfile = wp_tempnam($file); + $temp = fopen($tempfile, 'w+'); + + if ( ! $temp ) + return false; + + if ( ! @ftp_fget($this->link, $temp, $file, FTP_BINARY ) ) + return false; + + fseek( $temp, 0 ); // Skip back to the start of the file being written to + $contents = ''; + + while ( ! feof($temp) ) + $contents .= fread($temp, 8192); + + fclose($temp); + unlink($tempfile); + return $contents; + } + + /** + * @param string $file + * @return array + */ + public function get_contents_array($file) { + return explode("\n", $this->get_contents($file)); + } + + /** + * @param string $file + * @param string $contents + * @param bool|int $mode + * @return bool + */ + public function put_contents($file, $contents, $mode = false ) { + $tempfile = wp_tempnam($file); + $temp = fopen( $tempfile, 'wb+' ); + if ( ! $temp ) + return false; + + mbstring_binary_safe_encoding(); + + $data_length = strlen( $contents ); + $bytes_written = fwrite( $temp, $contents ); + + reset_mbstring_encoding(); + + if ( $data_length !== $bytes_written ) { + fclose( $temp ); + unlink( $tempfile ); + return false; + } + + fseek( $temp, 0 ); // Skip back to the start of the file being written to + + $ret = @ftp_fput( $this->link, $file, $temp, FTP_BINARY ); + + fclose($temp); + unlink($tempfile); + + $this->chmod($file, $mode); + + return $ret; + } + + /** + * @return string + */ + public function cwd() { + $cwd = @ftp_pwd($this->link); + if ( $cwd ) + $cwd = trailingslashit($cwd); + return $cwd; + } + + /** + * @param string $dir + * @return bool + */ + public function chdir($dir) { + return @ftp_chdir($this->link, $dir); + } + + /** + * @param string $file + * @param int $mode + * @param bool $recursive + * @return bool + */ + public function chmod($file, $mode = false, $recursive = false) { + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + // chmod any sub-objects if recursive. + if ( $recursive && $this->is_dir($file) ) { + $filelist = $this->dirlist($file); + foreach ( (array)$filelist as $filename => $filemeta ) + $this->chmod($file . '/' . $filename, $mode, $recursive); + } + + // chmod the file or directory + if ( ! function_exists('ftp_chmod') ) + return (bool)@ftp_site($this->link, sprintf('CHMOD %o %s', $mode, $file)); + return (bool)@ftp_chmod($this->link, $mode, $file); + } + + /** + * @param string $file + * @return string + */ + public function owner($file) { + $dir = $this->dirlist($file); + return $dir[$file]['owner']; + } + /** + * @param string $file + * @return string + */ + public function getchmod($file) { + $dir = $this->dirlist($file); + return $dir[$file]['permsn']; + } + /** + * @param string $file + * @return string + */ + public function group($file) { + $dir = $this->dirlist($file); + return $dir[$file]['group']; + } + + /** + * + * @param string $source + * @param string $destination + * @param bool $overwrite + * @param string|bool $mode + * @return bool + */ + public function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + $content = $this->get_contents($source); + if ( false === $content ) + return false; + return $this->put_contents($destination, $content, $mode); + } + /** + * @param string $source + * @param string $destination + * @param bool $overwrite + * @return bool + */ + public function move($source, $destination, $overwrite = false) { + return ftp_rename($this->link, $source, $destination); + } + /** + * @param string $file + * @param bool $recursive + * @param string $type + * @return bool + */ + public function delete($file, $recursive = false, $type = false) { + if ( empty($file) ) + return false; + if ( 'f' == $type || $this->is_file($file) ) + return @ftp_delete($this->link, $file); + if ( !$recursive ) + return @ftp_rmdir($this->link, $file); + + $filelist = $this->dirlist( trailingslashit($file) ); + if ( !empty($filelist) ) + foreach ( $filelist as $delete_file ) + $this->delete( trailingslashit($file) . $delete_file['name'], $recursive, $delete_file['type'] ); + return @ftp_rmdir($this->link, $file); + } + /** + * @param string $file + * @return bool + */ + public function exists($file) { + $list = @ftp_nlist($this->link, $file); + + if ( empty( $list ) && $this->is_dir( $file ) ) { + return true; // File is an empty directory. + } + + return !empty($list); //empty list = no file, so invert. + } + /** + * @param string $file + * @return bool + */ + public function is_file($file) { + return $this->exists($file) && !$this->is_dir($file); + } + /** + * @param string $path + * @return bool + */ + public function is_dir($path) { + $cwd = $this->cwd(); + $result = @ftp_chdir($this->link, trailingslashit($path) ); + if ( $result && $path == $this->cwd() || $this->cwd() != $cwd ) { + @ftp_chdir($this->link, $cwd); + return true; + } + return false; + } + + /** + * @param string $file + * @return bool + */ + public function is_readable($file) { + return true; + } + /** + * @param string $file + * @return bool + */ + public function is_writable($file) { + return true; + } + /** + * @param string $file + * @return bool + */ + public function atime($file) { + return false; + } + /** + * @param string $file + * @return int + */ + public function mtime($file) { + return ftp_mdtm($this->link, $file); + } + /** + * @param string $file + * @return int + */ + public function size($file) { + return ftp_size($this->link, $file); + } + /** + * @param string $file + * @return bool + */ + public function touch($file, $time = 0, $atime = 0) { + return false; + } + + /** + * @param string $path + * @param mixed $chmod + * @param mixed $chown + * @param mixed $chgrp + * @return bool + */ + public function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { + $path = untrailingslashit($path); + if ( empty($path) ) + return false; + + if ( !@ftp_mkdir($this->link, $path) ) + return false; + $this->chmod($path, $chmod); + return true; + } + + /** + * @param string $path + * @param bool $recursive + * @return bool + */ + public function rmdir($path, $recursive = false) { + return $this->delete($path, $recursive); + } + + /** + * @staticvar bool $is_windows + * @param string $line + * @return array + */ + public function parselisting($line) { + static $is_windows = null; + if ( is_null($is_windows) ) + $is_windows = stripos( ftp_systype($this->link), 'win') !== false; + + if ( $is_windows && preg_match('/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|) +(.+)/', $line, $lucifer) ) { + $b = array(); + if ( $lucifer[3] < 70 ) + $lucifer[3] +=2000; + else + $lucifer[3] += 1900; // 4digit year fix + $b['isdir'] = ( $lucifer[7] == ''); + if ( $b['isdir'] ) + $b['type'] = 'd'; + else + $b['type'] = 'f'; + $b['size'] = $lucifer[7]; + $b['month'] = $lucifer[1]; + $b['day'] = $lucifer[2]; + $b['year'] = $lucifer[3]; + $b['hour'] = $lucifer[4]; + $b['minute'] = $lucifer[5]; + $b['time'] = @mktime($lucifer[4] + (strcasecmp($lucifer[6], "PM") == 0 ? 12 : 0), $lucifer[5], 0, $lucifer[1], $lucifer[2], $lucifer[3]); + $b['am/pm'] = $lucifer[6]; + $b['name'] = $lucifer[8]; + } elseif ( !$is_windows && $lucifer = preg_split('/[ ]/', $line, 9, PREG_SPLIT_NO_EMPTY)) { + //echo $line."\n"; + $lcount = count($lucifer); + if ( $lcount < 8 ) + return ''; + $b = array(); + $b['isdir'] = $lucifer[0]{0} === 'd'; + $b['islink'] = $lucifer[0]{0} === 'l'; + if ( $b['isdir'] ) + $b['type'] = 'd'; + elseif ( $b['islink'] ) + $b['type'] = 'l'; + else + $b['type'] = 'f'; + $b['perms'] = $lucifer[0]; + $b['permsn'] = $this->getnumchmodfromh( $b['perms'] ); + $b['number'] = $lucifer[1]; + $b['owner'] = $lucifer[2]; + $b['group'] = $lucifer[3]; + $b['size'] = $lucifer[4]; + if ( $lcount == 8 ) { + sscanf($lucifer[5], '%d-%d-%d', $b['year'], $b['month'], $b['day']); + sscanf($lucifer[6], '%d:%d', $b['hour'], $b['minute']); + $b['time'] = @mktime($b['hour'], $b['minute'], 0, $b['month'], $b['day'], $b['year']); + $b['name'] = $lucifer[7]; + } else { + $b['month'] = $lucifer[5]; + $b['day'] = $lucifer[6]; + if ( preg_match('/([0-9]{2}):([0-9]{2})/', $lucifer[7], $l2) ) { + $b['year'] = date("Y"); + $b['hour'] = $l2[1]; + $b['minute'] = $l2[2]; + } else { + $b['year'] = $lucifer[7]; + $b['hour'] = 0; + $b['minute'] = 0; + } + $b['time'] = strtotime( sprintf('%d %s %d %02d:%02d', $b['day'], $b['month'], $b['year'], $b['hour'], $b['minute']) ); + $b['name'] = $lucifer[8]; + } + } + + // Replace symlinks formatted as "source -> target" with just the source name + if ( $b['islink'] ) + $b['name'] = preg_replace( '/(\s*->\s*.*)$/', '', $b['name'] ); + + return $b; + } + + /** + * @param string $path + * @param bool $include_hidden + * @param bool $recursive + * @return bool|array + */ + public function dirlist($path = '.', $include_hidden = true, $recursive = false) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path) . '/'; + } else { + $limit_file = false; + } + + $pwd = @ftp_pwd($this->link); + if ( ! @ftp_chdir($this->link, $path) ) // Cant change to folder = folder doesn't exist + return false; + $list = @ftp_rawlist($this->link, '-a', false); + @ftp_chdir($this->link, $pwd); + + if ( empty($list) ) // Empty array = non-existent folder (real folder will show . at least) + return false; + + $dirlist = array(); + foreach ( $list as $k => $v ) { + $entry = $this->parselisting($v); + if ( empty($entry) ) + continue; + + if ( '.' == $entry['name'] || '..' == $entry['name'] ) + continue; + + if ( ! $include_hidden && '.' == $entry['name'][0] ) + continue; + + if ( $limit_file && $entry['name'] != $limit_file) + continue; + + $dirlist[ $entry['name'] ] = $entry; + } + + $ret = array(); + foreach ( (array)$dirlist as $struc ) { + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + $ret[ $struc['name'] ] = $struc; + } + return $ret; + } + + /** + * @access public + */ + public function __destruct() { + if ( $this->link ) + ftp_close($this->link); + } +} diff --git a/wp-admin/includes/class-wp-filesystem-ftpsockets.php b/wp-admin/includes/class-wp-filesystem-ftpsockets.php new file mode 100644 index 0000000000..879a2e8ca8 --- /dev/null +++ b/wp-admin/includes/class-wp-filesystem-ftpsockets.php @@ -0,0 +1,469 @@ +method = 'ftpsockets'; + $this->errors = new WP_Error(); + + // Check if possible to use ftp functions. + if ( ! @include_once( ABSPATH . 'wp-admin/includes/class-ftp.php' ) ) { + return; + } + $this->ftp = new ftp(); + + if ( empty($opt['port']) ) + $this->options['port'] = 21; + else + $this->options['port'] = $opt['port']; + + if ( empty($opt['hostname']) ) + $this->errors->add('empty_hostname', __('FTP hostname is required')); + else + $this->options['hostname'] = $opt['hostname']; + + // Check if the options provided are OK. + if ( empty ($opt['username']) ) + $this->errors->add('empty_username', __('FTP username is required')); + else + $this->options['username'] = $opt['username']; + + if ( empty ($opt['password']) ) + $this->errors->add('empty_password', __('FTP password is required')); + else + $this->options['password'] = $opt['password']; + } + + /** + * + * @return bool + */ + public function connect() { + if ( ! $this->ftp ) + return false; + + $this->ftp->setTimeout(FS_CONNECT_TIMEOUT); + + if ( ! $this->ftp->SetServer($this->options['hostname'], $this->options['port']) ) { + $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( ! $this->ftp->connect() ) { + $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( ! $this->ftp->login($this->options['username'], $this->options['password']) ) { + $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); + return false; + } + + $this->ftp->SetType( FTP_BINARY ); + $this->ftp->Passive( true ); + $this->ftp->setTimeout( FS_TIMEOUT ); + return true; + } + + /** + * @param string $file + * @return false|string + */ + public function get_contents( $file ) { + if ( ! $this->exists($file) ) + return false; + + $temp = wp_tempnam( $file ); + + if ( ! $temphandle = fopen($temp, 'w+') ) + return false; + + mbstring_binary_safe_encoding(); + + if ( ! $this->ftp->fget($temphandle, $file) ) { + fclose($temphandle); + unlink($temp); + + reset_mbstring_encoding(); + + return ''; // Blank document, File does exist, It's just blank. + } + + reset_mbstring_encoding(); + + fseek( $temphandle, 0 ); // Skip back to the start of the file being written to + $contents = ''; + + while ( ! feof($temphandle) ) + $contents .= fread($temphandle, 8192); + + fclose($temphandle); + unlink($temp); + return $contents; + } + /** + * @param string $file + * @return array + */ + public function get_contents_array($file) { + return explode("\n", $this->get_contents($file) ); + } + + /** + * @param string $file + * @param string $contents + * @param int|bool $mode + * @return bool + */ + public function put_contents($file, $contents, $mode = false ) { + $temp = wp_tempnam( $file ); + if ( ! $temphandle = @fopen($temp, 'w+') ) { + unlink($temp); + return false; + } + + // The FTP class uses string functions internally during file download/upload + mbstring_binary_safe_encoding(); + + $bytes_written = fwrite( $temphandle, $contents ); + if ( false === $bytes_written || $bytes_written != strlen( $contents ) ) { + fclose( $temphandle ); + unlink( $temp ); + + reset_mbstring_encoding(); + + return false; + } + + fseek( $temphandle, 0 ); // Skip back to the start of the file being written to + + $ret = $this->ftp->fput($file, $temphandle); + + reset_mbstring_encoding(); + + fclose($temphandle); + unlink($temp); + + $this->chmod($file, $mode); + + return $ret; + } + + /** + * + * @return string + */ + public function cwd() { + $cwd = $this->ftp->pwd(); + if ( $cwd ) + $cwd = trailingslashit($cwd); + return $cwd; + } + + /** + * + * @param string $file + * @return bool + */ + public function chdir($file) { + return $this->ftp->chdir($file); + } + + /** + * @param string $file + * @param int|bool $mode + * @param bool $recursive + * @return bool + */ + public function chmod($file, $mode = false, $recursive = false ) { + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + // chmod any sub-objects if recursive. + if ( $recursive && $this->is_dir($file) ) { + $filelist = $this->dirlist($file); + foreach ( (array)$filelist as $filename => $filemeta ) + $this->chmod($file . '/' . $filename, $mode, $recursive); + } + + // chmod the file or directory + return $this->ftp->chmod($file, $mode); + } + + /** + * @param string $file + * @return string + */ + public function owner($file) { + $dir = $this->dirlist($file); + return $dir[$file]['owner']; + } + /** + * @param string $file + * @return string + */ + public function getchmod($file) { + $dir = $this->dirlist($file); + return $dir[$file]['permsn']; + } + /** + * @param string $file + * @return string + */ + public function group($file) { + $dir = $this->dirlist($file); + return $dir[$file]['group']; + } + /** + * @param string $source + * @param string $destination + * @param bool $overwrite + * @param int|bool $mode + * @return bool + */ + public function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + + $content = $this->get_contents($source); + if ( false === $content ) + return false; + + return $this->put_contents($destination, $content, $mode); + } + /** + * @param string $source + * @param string $destination + * @param bool $overwrite + * @return bool + */ + public function move($source, $destination, $overwrite = false ) { + return $this->ftp->rename($source, $destination); + } + /** + * @param string $file + * @param bool $recursive + * @param string $type + * @return bool + */ + public function delete($file, $recursive = false, $type = false) { + if ( empty($file) ) + return false; + if ( 'f' == $type || $this->is_file($file) ) + return $this->ftp->delete($file); + if ( !$recursive ) + return $this->ftp->rmdir($file); + + return $this->ftp->mdel($file); + } + + /** + * @param string $file + * @return bool + */ + public function exists( $file ) { + $list = $this->ftp->nlist( $file ); + + if ( empty( $list ) && $this->is_dir( $file ) ) { + return true; // File is an empty directory. + } + + return !empty( $list ); //empty list = no file, so invert. + // Return $this->ftp->is_exists($file); has issues with ABOR+426 responses on the ncFTPd server. + } + + /** + * @param string $file + * @return bool + */ + public function is_file($file) { + if ( $this->is_dir($file) ) + return false; + if ( $this->exists($file) ) + return true; + return false; + } + + /** + * @param string $path + * @return bool + */ + public function is_dir($path) { + $cwd = $this->cwd(); + if ( $this->chdir($path) ) { + $this->chdir($cwd); + return true; + } + return false; + } + + /** + * @param string $file + * @return bool + */ + public function is_readable($file) { + return true; + } + + /** + * @param string $file + * @return bool + */ + public function is_writable($file) { + return true; + } + + /** + * @param string $file + * @return bool + */ + public function atime($file) { + return false; + } + + /** + * @param string $file + * @return int + */ + public function mtime($file) { + return $this->ftp->mdtm($file); + } + + /** + * @param string $file + * @return int + */ + public function size($file) { + return $this->ftp->filesize($file); + } + /** + * @param string $file + * @param int $time + * @param int $atime + * @return bool + */ + public function touch($file, $time = 0, $atime = 0 ) { + return false; + } + + /** + * @param string $path + * @param mixed $chmod + * @param mixed $chown + * @param mixed $chgrp + * @return bool + */ + public function mkdir($path, $chmod = false, $chown = false, $chgrp = false ) { + $path = untrailingslashit($path); + if ( empty($path) ) + return false; + + if ( ! $this->ftp->mkdir($path) ) + return false; + if ( ! $chmod ) + $chmod = FS_CHMOD_DIR; + $this->chmod($path, $chmod); + return true; + } + + /** + * @param sting $path + * @param bool $recursive + */ + public function rmdir($path, $recursive = false ) { + $this->delete($path, $recursive); + } + + /** + * @param string $path + * @param bool $include_hidden + * @param bool $recursive + * @return bool|array + */ + public function dirlist($path = '.', $include_hidden = true, $recursive = false ) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path) . '/'; + } else { + $limit_file = false; + } + + mbstring_binary_safe_encoding(); + + $list = $this->ftp->dirlist($path); + if ( empty( $list ) && ! $this->exists( $path ) ) { + + reset_mbstring_encoding(); + + return false; + } + + $ret = array(); + foreach ( $list as $struc ) { + + if ( '.' == $struc['name'] || '..' == $struc['name'] ) + continue; + + if ( ! $include_hidden && '.' == $struc['name'][0] ) + continue; + + if ( $limit_file && $struc['name'] != $limit_file ) + continue; + + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + // Replace symlinks formatted as "source -> target" with just the source name + if ( $struc['islink'] ) + $struc['name'] = preg_replace( '/(\s*->\s*.*)$/', '', $struc['name'] ); + + // Add the Octal representation of the file permissions + $struc['permsn'] = $this->getnumchmodfromh( $struc['perms'] ); + + $ret[ $struc['name'] ] = $struc; + } + + reset_mbstring_encoding(); + + return $ret; + } + + /** + * @access public + */ + public function __destruct() { + $this->ftp->quit(); + } +} diff --git a/wp-admin/includes/class-wp-filesystem-ssh2.php b/wp-admin/includes/class-wp-filesystem-ssh2.php new file mode 100644 index 0000000000..e446656ec1 --- /dev/null +++ b/wp-admin/includes/class-wp-filesystem-ssh2.php @@ -0,0 +1,517 @@ +method = 'ssh2'; + $this->errors = new WP_Error(); + + //Check if possible to use ssh2 functions. + if ( ! extension_loaded('ssh2') ) { + $this->errors->add('no_ssh2_ext', __('The ssh2 PHP extension is not available')); + return; + } + if ( !function_exists('stream_get_contents') ) { + $this->errors->add('ssh2_php_requirement', __('The ssh2 PHP extension is available, however, we require the PHP5 function stream_get_contents()')); + return; + } + + // Set defaults: + if ( empty($opt['port']) ) + $this->options['port'] = 22; + else + $this->options['port'] = $opt['port']; + + if ( empty($opt['hostname']) ) + $this->errors->add('empty_hostname', __('SSH2 hostname is required')); + else + $this->options['hostname'] = $opt['hostname']; + + // Check if the options provided are OK. + if ( !empty ($opt['public_key']) && !empty ($opt['private_key']) ) { + $this->options['public_key'] = $opt['public_key']; + $this->options['private_key'] = $opt['private_key']; + + $this->options['hostkey'] = array('hostkey' => 'ssh-rsa'); + + $this->keys = true; + } elseif ( empty ($opt['username']) ) { + $this->errors->add('empty_username', __('SSH2 username is required')); + } + + if ( !empty($opt['username']) ) + $this->options['username'] = $opt['username']; + + if ( empty ($opt['password']) ) { + // Password can be blank if we are using keys. + if ( !$this->keys ) + $this->errors->add('empty_password', __('SSH2 password is required')); + } else { + $this->options['password'] = $opt['password']; + } + } + + /** + * + * @return bool + */ + public function connect() { + if ( ! $this->keys ) { + $this->link = @ssh2_connect($this->options['hostname'], $this->options['port']); + } else { + $this->link = @ssh2_connect($this->options['hostname'], $this->options['port'], $this->options['hostkey']); + } + + if ( ! $this->link ) { + $this->errors->add('connect', sprintf(__('Failed to connect to SSH2 Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( !$this->keys ) { + if ( ! @ssh2_auth_password($this->link, $this->options['username'], $this->options['password']) ) { + $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); + return false; + } + } else { + if ( ! @ssh2_auth_pubkey_file($this->link, $this->options['username'], $this->options['public_key'], $this->options['private_key'], $this->options['password'] ) ) { + $this->errors->add('auth', sprintf(__('Public and Private keys incorrect for %s'), $this->options['username'])); + return false; + } + } + + $this->sftp_link = ssh2_sftp($this->link); + + return true; + } + + /** + * @param string $command + * @param bool $returnbool + * @return bool|string + */ + public function run_command( $command, $returnbool = false ) { + if ( ! $this->link ) + return false; + + if ( ! ($stream = ssh2_exec($this->link, $command)) ) { + $this->errors->add('command', sprintf(__('Unable to perform command: %s'), $command)); + } else { + stream_set_blocking( $stream, true ); + stream_set_timeout( $stream, FS_TIMEOUT ); + $data = stream_get_contents( $stream ); + fclose( $stream ); + + if ( $returnbool ) + return ( $data === false ) ? false : '' != trim($data); + else + return $data; + } + return false; + } + + /** + * @param string $file + * @return string|false + */ + public function get_contents( $file ) { + $file = ltrim($file, '/'); + return file_get_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + /** + * @param string $file + * @return array + */ + public function get_contents_array($file) { + $file = ltrim($file, '/'); + return file('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + /** + * @param string $file + * @param string $contents + * @param bool|int $mode + * @return bool + */ + public function put_contents($file, $contents, $mode = false ) { + $ret = file_put_contents( 'ssh2.sftp://' . $this->sftp_link . '/' . ltrim( $file, '/' ), $contents ); + + if ( $ret !== strlen( $contents ) ) + return false; + + $this->chmod($file, $mode); + + return true; + } + + /** + * + * @return bool + */ + public function cwd() { + $cwd = ssh2_sftp_realpath( $this->sftp_link, '.' ); + if ( $cwd ) { + $cwd = trailingslashit( trim( $cwd ) ); + } + return $cwd; + } + + /** + * @param string $dir + * @return bool|string + */ + public function chdir($dir) { + return $this->run_command('cd ' . $dir, true); + } + + /** + * @param string $file + * @param string $group + * @param bool $recursive + * + * @return bool + */ + public function chgrp($file, $group, $recursive = false ) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive || ! $this->is_dir($file) ) + return $this->run_command(sprintf('chgrp %s %s', escapeshellarg($group), escapeshellarg($file)), true); + return $this->run_command(sprintf('chgrp -R %s %s', escapeshellarg($group), escapeshellarg($file)), true); + } + + /** + * @param string $file + * @param int $mode + * @param bool $recursive + * @return bool|string + */ + public function chmod($file, $mode = false, $recursive = false) { + if ( ! $this->exists($file) ) + return false; + + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + if ( ! $recursive || ! $this->is_dir($file) ) + return $this->run_command(sprintf('chmod %o %s', $mode, escapeshellarg($file)), true); + return $this->run_command(sprintf('chmod -R %o %s', $mode, escapeshellarg($file)), true); + } + + /** + * Change the ownership of a file / folder. + * + * @since Unknown + * + * @param string $file Path to the file. + * @param string|int $owner A user name or number. + * @param bool $recursive Optional. If set True changes file owner recursivly. Defaults to False. + * @return bool|string Returns true on success or false on failure. + */ + public function chown( $file, $owner, $recursive = false ) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive || ! $this->is_dir($file) ) + return $this->run_command(sprintf('chown %s %s', escapeshellarg($owner), escapeshellarg($file)), true); + return $this->run_command(sprintf('chown -R %s %s', escapeshellarg($owner), escapeshellarg($file)), true); + } + + /** + * @param string $file + * @return string|false + */ + public function owner($file) { + $owneruid = @fileowner('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/')); + if ( ! $owneruid ) + return false; + if ( ! function_exists('posix_getpwuid') ) + return $owneruid; + $ownerarray = posix_getpwuid($owneruid); + return $ownerarray['name']; + } + /** + * @param string $file + * @return string + */ + public function getchmod($file) { + return substr( decoct( @fileperms( 'ssh2.sftp://' . $this->sftp_link . '/' . ltrim( $file, '/' ) ) ), -3 ); + } + + /** + * @param string $file + * @return string|false + */ + public function group($file) { + $gid = @filegroup('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/')); + if ( ! $gid ) + return false; + if ( ! function_exists('posix_getgrgid') ) + return $gid; + $grouparray = posix_getgrgid($gid); + return $grouparray['name']; + } + + /** + * @param string $source + * @param string $destination + * @param bool $overwrite + * @param int|bool $mode + * @return bool + */ + public function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + $content = $this->get_contents($source); + if ( false === $content) + return false; + return $this->put_contents($destination, $content, $mode); + } + + /** + * @param string $source + * @param string $destination + * @param bool $overwrite + * @return bool + */ + public function move($source, $destination, $overwrite = false) { + return @ssh2_sftp_rename( $this->sftp_link, $source, $destination ); + } + + /** + * @param string $file + * @param bool $recursive + * @param string|bool $type + * @return bool + */ + public function delete($file, $recursive = false, $type = false) { + if ( 'f' == $type || $this->is_file($file) ) + return ssh2_sftp_unlink($this->sftp_link, $file); + if ( ! $recursive ) + return ssh2_sftp_rmdir($this->sftp_link, $file); + $filelist = $this->dirlist($file); + if ( is_array($filelist) ) { + foreach ( $filelist as $filename => $fileinfo) { + $this->delete($file . '/' . $filename, $recursive, $fileinfo['type']); + } + } + return ssh2_sftp_rmdir($this->sftp_link, $file); + } + + /** + * @param string $file + * @return bool + */ + public function exists($file) { + $file = ltrim($file, '/'); + return file_exists('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + /** + * @param string $file + * @return bool + */ + public function is_file($file) { + $file = ltrim($file, '/'); + return is_file('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + /** + * @param string $path + * @return bool + */ + public function is_dir($path) { + $path = ltrim($path, '/'); + return is_dir('ssh2.sftp://' . $this->sftp_link . '/' . $path); + } + /** + * @param string $file + * @return bool + */ + public function is_readable($file) { + $file = ltrim($file, '/'); + return is_readable('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + /** + * @param string $file + * @return bool + */ + public function is_writable($file) { + $file = ltrim($file, '/'); + return is_writable('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + /** + * @param string $file + * @return int + */ + public function atime($file) { + $file = ltrim($file, '/'); + return fileatime('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + /** + * @param string $file + * @return int + */ + public function mtime($file) { + $file = ltrim($file, '/'); + return filemtime('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + /** + * @param string $file + * @return int + */ + public function size($file) { + $file = ltrim($file, '/'); + return filesize('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + /** + * @param string $file + * @param int $time + * @param int $atime + */ + public function touch($file, $time = 0, $atime = 0) { + //Not implemented. + } + + /** + * @param string $path + * @param mixed $chmod + * @param mixed $chown + * @param mixed $chgrp + * @return bool + */ + public function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { + $path = untrailingslashit($path); + if ( empty($path) ) + return false; + + if ( ! $chmod ) + $chmod = FS_CHMOD_DIR; + if ( ! ssh2_sftp_mkdir($this->sftp_link, $path, $chmod, true) ) + return false; + if ( $chown ) + $this->chown($path, $chown); + if ( $chgrp ) + $this->chgrp($path, $chgrp); + return true; + } + + /** + * @param string $path + * @param bool $recursive + * @return bool + */ + public function rmdir($path, $recursive = false) { + return $this->delete($path, $recursive); + } + + /** + * @param string $path + * @param bool $include_hidden + * @param bool $recursive + * @return bool|array + */ + public function dirlist($path, $include_hidden = true, $recursive = false) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path); + } else { + $limit_file = false; + } + + if ( ! $this->is_dir($path) ) + return false; + + $ret = array(); + $dir = @dir('ssh2.sftp://' . $this->sftp_link .'/' . ltrim($path, '/') ); + + if ( ! $dir ) + return false; + + while (false !== ($entry = $dir->read()) ) { + $struc = array(); + $struc['name'] = $entry; + + if ( '.' == $struc['name'] || '..' == $struc['name'] ) + continue; //Do not care about these folders. + + if ( ! $include_hidden && '.' == $struc['name'][0] ) + continue; + + if ( $limit_file && $struc['name'] != $limit_file ) + continue; + + $struc['perms'] = $this->gethchmod($path.'/'.$entry); + $struc['permsn'] = $this->getnumchmodfromh($struc['perms']); + $struc['number'] = false; + $struc['owner'] = $this->owner($path.'/'.$entry); + $struc['group'] = $this->group($path.'/'.$entry); + $struc['size'] = $this->size($path.'/'.$entry); + $struc['lastmodunix']= $this->mtime($path.'/'.$entry); + $struc['lastmod'] = date('M j',$struc['lastmodunix']); + $struc['time'] = date('h:i:s',$struc['lastmodunix']); + $struc['type'] = $this->is_dir($path.'/'.$entry) ? 'd' : 'f'; + + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + $ret[ $struc['name'] ] = $struc; + } + $dir->close(); + unset($dir); + return $ret; + } +} diff --git a/wp-admin/includes/class-wp-importer.php b/wp-admin/includes/class-wp-importer.php new file mode 100644 index 0000000000..fac5d40e4f --- /dev/null +++ b/wp-admin/includes/class-wp-importer.php @@ -0,0 +1,319 @@ +prepare( "SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = '%s' LIMIT %d,%d", $meta_key, $offset, $limit ); + $results = $wpdb->get_results( $sql ); + + // Increment offset + $offset = ( $limit + $offset ); + + if ( !empty( $results ) ) { + foreach ( $results as $r ) { + // Set permalinks into array + $hashtable[$r->meta_value] = intval( $r->post_id ); + } + } + } while ( count( $results ) == $limit ); + + // Unset to save memory. + unset( $results, $r ); + + return $hashtable; + } + + /** + * Return count of imported permalinks from WordPress database + * + * @global wpdb $wpdb + * + * @param string $importer_name + * @param string $bid + * @return int + */ + public function count_imported_posts( $importer_name, $bid ) { + global $wpdb; + + $count = 0; + + // Get count of permalinks + $meta_key = $importer_name . '_' . $bid . '_permalink'; + $sql = $wpdb->prepare( "SELECT COUNT( post_id ) AS cnt FROM $wpdb->postmeta WHERE meta_key = '%s'", $meta_key ); + + $result = $wpdb->get_results( $sql ); + + if ( !empty( $result ) ) + $count = intval( $result[0]->cnt ); + + // Unset to save memory. + unset( $results ); + + return $count; + } + + /** + * Set array with imported comments from WordPress database + * + * @global wpdb $wpdb + * + * @param string $bid + * @return array + */ + public function get_imported_comments( $bid ) { + global $wpdb; + + $hashtable = array(); + + $limit = 100; + $offset = 0; + + // Grab all comments in chunks + do { + $sql = $wpdb->prepare( "SELECT comment_ID, comment_agent FROM $wpdb->comments LIMIT %d,%d", $offset, $limit ); + $results = $wpdb->get_results( $sql ); + + // Increment offset + $offset = ( $limit + $offset ); + + if ( !empty( $results ) ) { + foreach ( $results as $r ) { + // Explode comment_agent key + list ( $ca_bid, $source_comment_id ) = explode( '-', $r->comment_agent ); + $source_comment_id = intval( $source_comment_id ); + + // Check if this comment came from this blog + if ( $bid == $ca_bid ) { + $hashtable[$source_comment_id] = intval( $r->comment_ID ); + } + } + } + } while ( count( $results ) == $limit ); + + // Unset to save memory. + unset( $results, $r ); + + return $hashtable; + } + + /** + * + * @param int $blog_id + * @return int|void + */ + public function set_blog( $blog_id ) { + if ( is_numeric( $blog_id ) ) { + $blog_id = (int) $blog_id; + } else { + $blog = 'http://' . preg_replace( '#^https?://#', '', $blog_id ); + if ( ( !$parsed = parse_url( $blog ) ) || empty( $parsed['host'] ) ) { + fwrite( STDERR, "Error: can not determine blog_id from $blog_id\n" ); + exit(); + } + if ( empty( $parsed['path'] ) ) + $parsed['path'] = '/'; + $blog = get_blog_details( array( 'domain' => $parsed['host'], 'path' => $parsed['path'] ) ); + if ( !$blog ) { + fwrite( STDERR, "Error: Could not find blog\n" ); + exit(); + } + $blog_id = (int) $blog->blog_id; + } + + if ( function_exists( 'is_multisite' ) ) { + if ( is_multisite() ) + switch_to_blog( $blog_id ); + } + + return $blog_id; + } + + /** + * + * @param int $user_id + * @return int|void + */ + public function set_user( $user_id ) { + if ( is_numeric( $user_id ) ) { + $user_id = (int) $user_id; + } else { + $user_id = (int) username_exists( $user_id ); + } + + if ( !$user_id || !wp_set_current_user( $user_id ) ) { + fwrite( STDERR, "Error: can not find user\n" ); + exit(); + } + + return $user_id; + } + + /** + * Sort by strlen, longest string first + * + * @param string $a + * @param string $b + * @return int + */ + public function cmpr_strlen( $a, $b ) { + return strlen( $b ) - strlen( $a ); + } + + /** + * GET URL + * + * @param string $url + * @param string $username + * @param string $password + * @param bool $head + * @return array + */ + public function get_page( $url, $username = '', $password = '', $head = false ) { + // Increase the timeout + add_filter( 'http_request_timeout', array( $this, 'bump_request_timeout' ) ); + + $headers = array(); + $args = array(); + if ( true === $head ) + $args['method'] = 'HEAD'; + if ( !empty( $username ) && !empty( $password ) ) + $headers['Authorization'] = 'Basic ' . base64_encode( "$username:$password" ); + + $args['headers'] = $headers; + + return wp_safe_remote_request( $url, $args ); + } + + /** + * Bump up the request timeout for http requests + * + * @param int $val + * @return int + */ + public function bump_request_timeout( $val ) { + return 60; + } + + /** + * Check if user has exceeded disk quota + * + * @return bool + */ + public function is_user_over_quota() { + if ( function_exists( 'upload_is_user_over_quota' ) ) { + if ( upload_is_user_over_quota() ) { + return true; + } + } + + return false; + } + + /** + * Replace newlines, tabs, and multiple spaces with a single space + * + * @param string $string + * @return string + */ + public function min_whitespace( $string ) { + return preg_replace( '|[\r\n\t ]+|', ' ', $string ); + } + + /** + * Reset global variables that grow out of control during imports + * + * @global wpdb $wpdb + * @global array $wp_actions + */ + public function stop_the_insanity() { + global $wpdb, $wp_actions; + // Or define( 'WP_IMPORTING', true ); + $wpdb->queries = array(); + // Reset $wp_actions to keep it from growing out of control + $wp_actions = array(); + } +} + +/** + * Returns value of command line params. + * Exits when a required param is not set. + * + * @param string $param + * @param bool $required + * @return mixed + */ +function get_cli_args( $param, $required = false ) { + $args = $_SERVER['argv']; + + $out = array(); + + $last_arg = null; + $return = null; + + $il = sizeof( $args ); + + for ( $i = 1, $il; $i < $il; $i++ ) { + if ( (bool) preg_match( "/^--(.+)/", $args[$i], $match ) ) { + $parts = explode( "=", $match[1] ); + $key = preg_replace( "/[^a-z0-9]+/", "", $parts[0] ); + + if ( isset( $parts[1] ) ) { + $out[$key] = $parts[1]; + } else { + $out[$key] = true; + } + + $last_arg = $key; + } elseif ( (bool) preg_match( "/^-([a-zA-Z0-9]+)/", $args[$i], $match ) ) { + for ( $j = 0, $jl = strlen( $match[1] ); $j < $jl; $j++ ) { + $key = $match[1]{$j}; + $out[$key] = true; + } + + $last_arg = $key; + } elseif ( $last_arg !== null ) { + $out[$last_arg] = $args[$i]; + } + } + + // Check array for specified param + if ( isset( $out[$param] ) ) { + // Set return value + $return = $out[$param]; + } + + // Check for missing required param + if ( !isset( $out[$param] ) && $required ) { + // Display message and exit + echo "\"$param\" parameter is required but was not specified\n"; + exit(); + } + + return $return; +} diff --git a/wp-admin/includes/class-wp-links-list-table.php b/wp-admin/includes/class-wp-links-list-table.php new file mode 100644 index 0000000000..9b917d1db4 --- /dev/null +++ b/wp-admin/includes/class-wp-links-list-table.php @@ -0,0 +1,324 @@ + 'bookmarks', + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, + ) ); + } + + /** + * + * @return bool + */ + public function ajax_user_can() { + return current_user_can( 'manage_links' ); + } + + /** + * + * @global int $cat_id + * @global string $s + * @global string $orderby + * @global string $order + */ + public function prepare_items() { + global $cat_id, $s, $orderby, $order; + + wp_reset_vars( array( 'action', 'cat_id', 'link_id', 'orderby', 'order', 's' ) ); + + $args = array( 'hide_invisible' => 0, 'hide_empty' => 0 ); + + if ( 'all' != $cat_id ) + $args['category'] = $cat_id; + if ( !empty( $s ) ) + $args['search'] = $s; + if ( !empty( $orderby ) ) + $args['orderby'] = $orderby; + if ( !empty( $order ) ) + $args['order'] = $order; + + $this->items = get_bookmarks( $args ); + } + + /** + * @access public + */ + public function no_items() { + _e( 'No links found.' ); + } + + /** + * + * @return array + */ + protected function get_bulk_actions() { + $actions = array(); + $actions['delete'] = __( 'Delete' ); + + return $actions; + } + + /** + * + * @global int $cat_id + * @param string $which + */ + protected function extra_tablenav( $which ) { + global $cat_id; + + if ( 'top' != $which ) + return; +?> +
+ $cat_id, + 'name' => 'cat_id', + 'taxonomy' => 'link_category', + 'show_option_all' => __( 'All categories' ), + 'hide_empty' => true, + 'hierarchical' => 1, + 'show_count' => 0, + 'orderby' => 'name', + ); + + echo ''; + wp_dropdown_categories( $dropdown_options ); + submit_button( __( 'Filter' ), 'button', 'filter_action', false, array( 'id' => 'post-query-submit' ) ); +?> +
+ '', + 'name' => _x( 'Name', 'link name' ), + 'url' => __( 'URL' ), + 'categories' => __( 'Categories' ), + 'rel' => __( 'Relationship' ), + 'visible' => __( 'Visible' ), + 'rating' => __( 'Rating' ) + ); + } + + /** + * + * @return array + */ + protected function get_sortable_columns() { + return array( + 'name' => 'name', + 'url' => 'url', + 'visible' => 'visible', + 'rating' => 'rating' + ); + } + + /** + * Get the name of the default primary column. + * + * @since 4.3.0 + * @access protected + * + * @return string Name of the default primary column, in this case, 'name'. + */ + protected function get_default_primary_column_name() { + return 'name'; + } + + /** + * Handles the checkbox column ouput. + * + * @since 4.3.0 + * @access public + * + * @param object $link The current link object. + */ + public function column_cb( $link ) { + ?> + + + + link_name ?>
+ link_url ); + echo "link_name ) )."'>$short_url"; + } + + /** + * Handles the link categories column output. + * + * @since 4.3.0 + * @access public + * + * @global $cat_id + * + * @param object $link The current link object. + */ + public function column_categories( $link ) { + global $cat_id; + + $cat_names = array(); + foreach ( $link->link_category as $category ) { + $cat = get_term( $category, 'link_category', OBJECT, 'display' ); + if ( is_wp_error( $cat ) ) { + echo $cat->get_error_message(); + } + $cat_name = $cat->name; + if ( $cat_id != $category ) { + $cat_name = "$cat_name"; + } + $cat_names[] = $cat_name; + } + echo implode( ', ', $cat_names ); + } + + /** + * Handles the link relation column ouput. + * + * @since 4.3.0 + * @access public + * + * @param object $link The current link object. + */ + public function column_rel( $link ) { + echo empty( $link->link_rel ) ? '
' : $link->link_rel; + } + + /** + * Handles the link visibility column ouput. + * + * @since 4.3.0 + * @access public + * + * @param object $link The current link object. + */ + public function column_visible( $link ) { + if ( 'Y' === $link->link_visible ) { + _e( 'Yes' ); + } else { + _e( 'No' ); + } + } + + /** + * Handles the link rating column ouput. + * + * @since 4.3.0 + * @access public + * + * @param object $link The current link object. + */ + public function column_rating( $link ) { + echo $link->link_rating; + } + + /** + * Handles the default column output. + * + * @since 4.3.0 + * @access public + * + * @param object $link Link object. + * @param string $column_name Current column name. + */ + public function column_default( $link, $column_name ) { + /** + * Fires for each registered custom link column. + * + * @since 2.1.0 + * + * @param string $column_name Name of the custom column. + * @param int $link_id Link ID. + */ + do_action( 'manage_link_custom_column', $column_name, $link->link_id ); + } + + public function display_rows() { + foreach ( $this->items as $link ) { + $link = sanitize_bookmark( $link ); + $link->link_name = esc_attr( $link->link_name ); + $link->link_category = wp_get_link_cats( $link->link_id ); +?> + + single_row_columns( $link ) ?> + +' . __('Edit') . ''; + $actions['delete'] = "link_id) . "' onclick=\"if ( confirm( '" . esc_js(sprintf(__("You are about to delete this link '%s'\n 'Cancel' to stop, 'OK' to delete."), $link->link_name)) . "' ) ) { return true;}return false;\">" . __('Delete') . ""; + return $this->row_actions( $actions ); + } +} diff --git a/wp-admin/includes/class-wp-list-table.php b/wp-admin/includes/class-wp-list-table.php new file mode 100644 index 0000000000..ad35fc670a --- /dev/null +++ b/wp-admin/includes/class-wp-list-table.php @@ -0,0 +1,1314 @@ +get_column_info() + * + * @var array + */ + protected $_column_headers; + + protected $compat_fields = array( '_args', '_pagination_args', 'screen', '_actions', '_pagination' ); + + protected $compat_methods = array( 'set_pagination_args', 'get_views', 'get_bulk_actions', 'bulk_actions', + 'row_actions', 'months_dropdown', 'view_switcher', 'comments_bubble', 'get_items_per_page', 'pagination', + 'get_sortable_columns', 'get_column_info', 'get_table_classes', 'display_tablenav', 'extra_tablenav', + 'single_row_columns' ); + + /** + * Constructor. + * + * The child class should call this constructor from its own constructor to override + * the default $args. + * + * @since 3.1.0 + * @access public + * + * @param array|string $args { + * Array or string of arguments. + * + * @type string $plural Plural value used for labels and the objects being listed. + * This affects things such as CSS class-names and nonces used + * in the list table, e.g. 'posts'. Default empty. + * @type string $singular Singular label for an object being listed, e.g. 'post'. + * Default empty + * @type bool $ajax Whether the list table supports AJAX. This includes loading + * and sorting data, for example. If true, the class will call + * the {@see _js_vars()} method in the footer to provide variables + * to any scripts handling AJAX events. Default false. + * @type string $screen String containing the hook name used to determine the current + * screen. If left null, the current screen will be automatically set. + * Default null. + * } + */ + public function __construct( $args = array() ) { + $args = wp_parse_args( $args, array( + 'plural' => '', + 'singular' => '', + 'ajax' => false, + 'screen' => null, + ) ); + + $this->screen = convert_to_screen( $args['screen'] ); + + add_filter( "manage_{$this->screen->id}_columns", array( $this, 'get_columns' ), 0 ); + + if ( !$args['plural'] ) + $args['plural'] = $this->screen->base; + + $args['plural'] = sanitize_key( $args['plural'] ); + $args['singular'] = sanitize_key( $args['singular'] ); + + $this->_args = $args; + + if ( $args['ajax'] ) { + // wp_enqueue_script( 'list-table' ); + add_action( 'admin_footer', array( $this, '_js_vars' ) ); + } + + if ( empty( $this->modes ) ) { + $this->modes = array( + 'list' => __( 'List View' ), + 'excerpt' => __( 'Excerpt View' ) + ); + } + } + + /** + * Make private properties readable for backwards compatibility. + * + * @since 4.0.0 + * @access public + * + * @param string $name Property to get. + * @return mixed Property. + */ + public function __get( $name ) { + if ( in_array( $name, $this->compat_fields ) ) { + return $this->$name; + } + } + + /** + * Make private properties settable for backwards compatibility. + * + * @since 4.0.0 + * @access public + * + * @param string $name Property to check if set. + * @param mixed $value Property value. + * @return mixed Newly-set property. + */ + public function __set( $name, $value ) { + if ( in_array( $name, $this->compat_fields ) ) { + return $this->$name = $value; + } + } + + /** + * Make private properties checkable for backwards compatibility. + * + * @since 4.0.0 + * @access public + * + * @param string $name Property to check if set. + * @return bool Whether the property is set. + */ + public function __isset( $name ) { + if ( in_array( $name, $this->compat_fields ) ) { + return isset( $this->$name ); + } + } + + /** + * Make private properties un-settable for backwards compatibility. + * + * @since 4.0.0 + * @access public + * + * @param string $name Property to unset. + */ + public function __unset( $name ) { + if ( in_array( $name, $this->compat_fields ) ) { + unset( $this->$name ); + } + } + + /** + * Make private/protected methods readable for backwards compatibility. + * + * @since 4.0.0 + * @access public + * + * @param callable $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 ) ) { + return call_user_func_array( array( $this, $name ), $arguments ); + } + return false; + } + + /** + * Checks the current user's permissions + * + * @since 3.1.0 + * @access public + * @abstract + */ + public function ajax_user_can() { + die( 'function WP_List_Table::ajax_user_can() must be over-ridden in a sub-class.' ); + } + + /** + * Prepares the list of items for displaying. + * @uses WP_List_Table::set_pagination_args() + * + * @since 3.1.0 + * @access public + * @abstract + */ + public function prepare_items() { + die( 'function WP_List_Table::prepare_items() must be over-ridden in a sub-class.' ); + } + + /** + * An internal method that sets all the necessary pagination arguments + * + * @param array $args An associative array with information about the pagination + * @access protected + * + * @param array|string $args + */ + protected function set_pagination_args( $args ) { + $args = wp_parse_args( $args, array( + 'total_items' => 0, + 'total_pages' => 0, + 'per_page' => 0, + ) ); + + if ( !$args['total_pages'] && $args['per_page'] > 0 ) + $args['total_pages'] = ceil( $args['total_items'] / $args['per_page'] ); + + // Redirect if page number is invalid and headers are not already sent. + if ( ! headers_sent() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages'] ) { + wp_redirect( add_query_arg( 'paged', $args['total_pages'] ) ); + exit; + } + + $this->_pagination_args = $args; + } + + /** + * Access the pagination args. + * + * @since 3.1.0 + * @access public + * + * @param string $key Pagination argument to retrieve. Common values include 'total_items', + * 'total_pages', 'per_page', or 'infinite_scroll'. + * @return int Number of items that correspond to the given pagination argument. + */ + public function get_pagination_arg( $key ) { + if ( 'page' == $key ) + return $this->get_pagenum(); + + if ( isset( $this->_pagination_args[$key] ) ) + return $this->_pagination_args[$key]; + } + + /** + * Whether the table has items to display or not + * + * @since 3.1.0 + * @access public + * + * @return bool + */ + public function has_items() { + return !empty( $this->items ); + } + + /** + * Message to be displayed when there are no items + * + * @since 3.1.0 + * @access public + */ + public function no_items() { + _e( 'No items found.' ); + } + + /** + * Display the search box. + * + * @since 3.1.0 + * @access public + * + * @param string $text The search button text + * @param string $input_id The search input id + */ + public function search_box( $text, $input_id ) { + if ( empty( $_REQUEST['s'] ) && !$this->has_items() ) + return; + + $input_id = $input_id . '-search-input'; + + if ( ! empty( $_REQUEST['orderby'] ) ) + echo ''; + if ( ! empty( $_REQUEST['order'] ) ) + echo ''; + if ( ! empty( $_REQUEST['post_mime_type'] ) ) + echo ''; + if ( ! empty( $_REQUEST['detached'] ) ) + echo ''; +?> + + link ) with the list + * of views available on this table. + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + protected function get_views() { + return array(); + } + + /** + * Display the list of views available on this table. + * + * @since 3.1.0 + * @access public + */ + public function views() { + $views = $this->get_views(); + /** + * Filter the list of available list table views. + * + * The dynamic portion of the hook name, `$this->screen->id`, refers + * to the ID of the current screen, usually a string. + * + * @since 3.5.0 + * + * @param array $views An array of available list table views. + */ + $views = apply_filters( "views_{$this->screen->id}", $views ); + + if ( empty( $views ) ) + return; + + echo "
    \n"; + foreach ( $views as $class => $view ) { + $views[ $class ] = "\t
  • $view"; + } + echo implode( " |
  • \n", $views ) . "\n"; + echo "
"; + } + + /** + * Get an associative array ( option_name => option_title ) with the list + * of bulk actions available on this table. + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + protected function get_bulk_actions() { + return array(); + } + + /** + * Display the bulk actions dropdown. + * + * @since 3.1.0 + * @access protected + * + * @param string $which The location of the bulk actions: 'top' or 'bottom'. + * This is designated as optional for backwards-compatibility. + */ + protected function bulk_actions( $which = '' ) { + if ( is_null( $this->_actions ) ) { + $no_new_actions = $this->_actions = $this->get_bulk_actions(); + /** + * Filter the list table Bulk Actions drop-down. + * + * The dynamic portion of the hook name, `$this->screen->id`, refers + * to the ID of the current screen, usually a string. + * + * This filter can currently only be used to remove bulk actions. + * + * @since 3.5.0 + * + * @param array $actions An array of the available bulk actions. + */ + $this->_actions = apply_filters( "bulk_actions-{$this->screen->id}", $this->_actions ); + $this->_actions = array_intersect_assoc( $this->_actions, $no_new_actions ); + $two = ''; + } else { + $two = '2'; + } + + if ( empty( $this->_actions ) ) + return; + + echo ""; + echo "\n"; + + submit_button( __( 'Apply' ), 'action', '', false, array( 'id' => "doaction$two" ) ); + echo "\n"; + } + + /** + * Get the current action selected from the bulk actions dropdown. + * + * @since 3.1.0 + * @access public + * + * @return string|false The action name or False if no action was selected + */ + public function current_action() { + if ( isset( $_REQUEST['filter_action'] ) && ! empty( $_REQUEST['filter_action'] ) ) + return false; + + if ( isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] ) + return $_REQUEST['action']; + + if ( isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] ) + return $_REQUEST['action2']; + + return false; + } + + /** + * Generate row actions div + * + * @since 3.1.0 + * @access protected + * + * @param array $actions The list of actions + * @param bool $always_visible Whether the actions should be always visible + * @return string + */ + protected function row_actions( $actions, $always_visible = false ) { + $action_count = count( $actions ); + $i = 0; + + if ( !$action_count ) + return ''; + + $out = '
'; + foreach ( $actions as $action => $link ) { + ++$i; + ( $i == $action_count ) ? $sep = '' : $sep = ' | '; + $out .= "$link$sep"; + } + $out .= '
'; + + $out .= ''; + + return $out; + } + + /** + * Display a monthly dropdown for filtering items + * + * @since 3.1.0 + * @access protected + * + * @global wpdb $wpdb + * @global WP_Locale $wp_locale + * + * @param string $post_type + */ + protected function months_dropdown( $post_type ) { + global $wpdb, $wp_locale; + + /** + * Filter whether to remove the 'Months' drop-down from the post list table. + * + * @since 4.2.0 + * + * @param bool $disable Whether to disable the drop-down. Default false. + * @param string $post_type The post type. + */ + if ( apply_filters( 'disable_months_dropdown', false, $post_type ) ) { + return; + } + + $months = $wpdb->get_results( $wpdb->prepare( " + SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month + FROM $wpdb->posts + WHERE post_type = %s + ORDER BY post_date DESC + ", $post_type ) ); + + /** + * Filter the 'Months' drop-down results. + * + * @since 3.7.0 + * + * @param object $months The months drop-down query results. + * @param string $post_type The post type. + */ + $months = apply_filters( 'months_dropdown_results', $months, $post_type ); + + $month_count = count( $months ); + + if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) + return; + + $m = isset( $_GET['m'] ) ? (int) $_GET['m'] : 0; +?> + + + + +
+modes as $mode => $title ) { + $classes = array( 'view-' . $mode ); + if ( $current_mode == $mode ) + $classes[] = 'current'; + printf( + "%s\n", + esc_url( add_query_arg( 'mode', $mode ) ), + implode( ' ', $classes ), + $title + ); + } + ?> +
+—%s', + __( 'No comments' ) + ); + // Approved comments have different display depending on some conditions. + } elseif ( $approved_comments ) { + printf( '%s', + esc_url( add_query_arg( array( 'p' => $post_id, 'comment_status' => 'approved' ), admin_url( 'edit-comments.php' ) ) ), + $approved_comments_number, + $pending_comments ? $approved_phrase : $approved_only_phrase + ); + } else { + printf( '%s', + $approved_comments_number, + $pending_comments ? __( 'No approved comments' ) : __( 'No comments' ) + ); + } + + if ( $pending_comments ) { + printf( '%s', + esc_url( add_query_arg( array( 'p' => $post_id, 'comment_status' => 'moderated' ), admin_url( 'edit-comments.php' ) ) ), + $pending_comments_number, + $pending_phrase + ); + } + } + + /** + * Get the current page number + * + * @since 3.1.0 + * @access public + * + * @return int + */ + public function get_pagenum() { + $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 0; + + if ( isset( $this->_pagination_args['total_pages'] ) && $pagenum > $this->_pagination_args['total_pages'] ) + $pagenum = $this->_pagination_args['total_pages']; + + return max( 1, $pagenum ); + } + + /** + * Get number of items to display on a single page + * + * @since 3.1.0 + * @access protected + * + * @param string $option + * @param int $default + * @return int + */ + protected function get_items_per_page( $option, $default = 20 ) { + $per_page = (int) get_user_option( $option ); + if ( empty( $per_page ) || $per_page < 1 ) + $per_page = $default; + + /** + * Filter the number of items to be displayed on each page of the list table. + * + * The dynamic hook name, $option, refers to the `per_page` option depending + * on the type of list table in use. Possible values include: 'edit_comments_per_page', + * 'sites_network_per_page', 'site_themes_network_per_page', 'themes_network_per_page', + * 'users_network_per_page', 'edit_post_per_page', 'edit_page_per_page', + * 'edit_{$post_type}_per_page', etc. + * + * @since 2.9.0 + * + * @param int $per_page Number of items to be displayed. Default 20. + */ + return (int) apply_filters( $option, $per_page ); + } + + /** + * Display the pagination. + * + * @since 3.1.0 + * @access protected + * + * @param string $which + */ + protected function pagination( $which ) { + if ( empty( $this->_pagination_args ) ) { + return; + } + + $total_items = $this->_pagination_args['total_items']; + $total_pages = $this->_pagination_args['total_pages']; + $infinite_scroll = false; + if ( isset( $this->_pagination_args['infinite_scroll'] ) ) { + $infinite_scroll = $this->_pagination_args['infinite_scroll']; + } + + $output = '' . sprintf( _n( '%s item', '%s items', $total_items ), number_format_i18n( $total_items ) ) . ''; + + $current = $this->get_pagenum(); + + $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); + + $current_url = remove_query_arg( array( 'hotkeys_highlight_last', 'hotkeys_highlight_first' ), $current_url ); + + $page_links = array(); + + $total_pages_before = ''; + $total_pages_after = ''; + + $disable_first = $disable_last = $disable_prev = $disable_next = false; + + if ( $current == 1 ) { + $disable_first = true; + $disable_prev = true; + } + if ( $current == 2 ) { + $disable_first = true; + } + if ( $current == $total_pages ) { + $disable_last = true; + $disable_next = true; + } + if ( $current == $total_pages - 1 ) { + $disable_last = true; + } + + if ( $disable_first ) { + $page_links[] = ''; + } else { + $page_links[] = sprintf( "%s", + esc_url( remove_query_arg( 'paged', $current_url ) ), + __( 'First page' ), + '«' + ); + } + + if ( $disable_prev ) { + $page_links[] = ''; + } else { + $page_links[] = sprintf( "%s", + esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ), + __( 'Previous page' ), + '‹' + ); + } + + if ( 'bottom' == $which ) { + $html_current_page = $current; + $total_pages_before = '' . __( 'Current Page' ) . ''; + } else { + $html_current_page = sprintf( "%s", + '', + $current, + strlen( $total_pages ) + ); + } + $html_total_pages = sprintf( "%s", number_format_i18n( $total_pages ) ); + $page_links[] = $total_pages_before . sprintf( _x( '%1$s of %2$s', 'paging' ), $html_current_page, $html_total_pages ) . $total_pages_after; + + if ( $disable_next ) { + $page_links[] = ''; + } else { + $page_links[] = sprintf( "%s", + esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ), + __( 'Next page' ), + '›' + ); + } + + if ( $disable_last ) { + $page_links[] = ''; + } else { + $page_links[] = sprintf( "%s", + esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ), + __( 'Last page' ), + '»' + ); + } + + $pagination_links_class = 'pagination-links'; + if ( ! empty( $infinite_scroll ) ) { + $pagination_links_class = ' hide-if-js'; + } + $output .= "\n" . join( "\n", $page_links ) . ''; + + if ( $total_pages ) { + $page_class = $total_pages < 2 ? ' one-page' : ''; + } else { + $page_class = ' no-pages'; + } + $this->_pagination = "
$output
"; + + echo $this->_pagination; + } + + /** + * Get a list of columns. The format is: + * 'internal-name' => 'Title' + * + * @since 3.1.0 + * @access public + * @abstract + * + * @return array + */ + public function get_columns() { + die( 'function WP_List_Table::get_columns() must be over-ridden in a sub-class.' ); + } + + /** + * Get a list of sortable columns. The format is: + * 'internal-name' => 'orderby' + * or + * 'internal-name' => array( 'orderby', true ) + * + * The second format will make the initial sorting order be descending + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + protected function get_sortable_columns() { + return array(); + } + + /** + * Gets the name of the default primary column. + * + * @since 4.3.0 + * @access protected + * + * @return string Name of the default primary column, in this case, an empty string. + */ + protected function get_default_primary_column_name() { + $columns = $this->get_columns(); + $column = ''; + + // We need a primary defined so responsive views show something, + // so let's fall back to the first non-checkbox column. + foreach( $columns as $col => $column_name ) { + if ( 'cb' === $col ) { + continue; + } + + $column = $col; + break; + } + + return $column; + } + + /** + * Gets the name of the primary column. + * + * @since 4.3.0 + * @access protected + * + * @return string The name of the primary column. + */ + protected function get_primary_column_name() { + $columns = $this->get_columns(); + $default = $this->get_default_primary_column_name(); + + // If the primary column doesn't exist fall back to the + // first non-checkbox column. + if ( ! isset( $columns[ $default ] ) ) { + $default = WP_List_Table::get_default_primary_column_name(); + } + + /** + * Filter the name of the primary column for the current list table. + * + * @since 4.3.0 + * + * @param string $default Column name default for the specific list table, e.g. 'name'. + * @param string $context Screen ID for specific list table, e.g. 'plugins'. + */ + $column = apply_filters( 'list_table_primary_column', $default, $this->screen->id ); + + if ( empty( $column ) || ! isset( $columns[ $column ] ) ) { + $column = $default; + } + + return $column; + } + + /** + * Get a list of all, hidden and sortable columns, with filter applied + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + protected function get_column_info() { + // $_column_headers is already set / cached + if ( isset( $this->_column_headers ) && is_array( $this->_column_headers ) ) { + // Back-compat for list tables that have been manually setting $_column_headers for horse reasons. + // In 4.3, we added a fourth argument for primary column. + $column_headers = array( array(), array(), array(), $this->get_primary_column_name() ); + foreach ( $this->_column_headers as $key => $value ) { + $column_headers[ $key ] = $value; + } + + return $column_headers; + } + + $columns = get_column_headers( $this->screen ); + $hidden = get_hidden_columns( $this->screen ); + + $sortable_columns = $this->get_sortable_columns(); + /** + * Filter the list table sortable columns for a specific screen. + * + * The dynamic portion of the hook name, `$this->screen->id`, refers + * to the ID of the current screen, usually a string. + * + * @since 3.5.0 + * + * @param array $sortable_columns An array of sortable columns. + */ + $_sortable = apply_filters( "manage_{$this->screen->id}_sortable_columns", $sortable_columns ); + + $sortable = array(); + foreach ( $_sortable as $id => $data ) { + if ( empty( $data ) ) + continue; + + $data = (array) $data; + if ( !isset( $data[1] ) ) + $data[1] = false; + + $sortable[$id] = $data; + } + + $primary = $this->get_primary_column_name(); + $this->_column_headers = array( $columns, $hidden, $sortable, $primary ); + + return $this->_column_headers; + } + + /** + * Return number of visible columns + * + * @since 3.1.0 + * @access public + * + * @return int + */ + public function get_column_count() { + list ( $columns, $hidden ) = $this->get_column_info(); + $hidden = array_intersect( array_keys( $columns ), array_filter( $hidden ) ); + return count( $columns ) - count( $hidden ); + } + + /** + * Print column headers, accounting for hidden and sortable columns. + * + * @since 3.1.0 + * @access public + * + * @staticvar int $cb_counter + * + * @param bool $with_id Whether to set the id attribute or not + */ + public function print_column_headers( $with_id = true ) { + list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info(); + + $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); + $current_url = remove_query_arg( 'paged', $current_url ); + + if ( isset( $_GET['orderby'] ) ) + $current_orderby = $_GET['orderby']; + else + $current_orderby = ''; + + if ( isset( $_GET['order'] ) && 'desc' == $_GET['order'] ) + $current_order = 'desc'; + else + $current_order = 'asc'; + + if ( ! empty( $columns['cb'] ) ) { + static $cb_counter = 1; + $columns['cb'] = '' + . ''; + $cb_counter++; + } + + foreach ( $columns as $column_key => $column_display_name ) { + $class = array( 'manage-column', "column-$column_key" ); + + if ( in_array( $column_key, $hidden ) ) { + $class[] = 'hidden'; + } + + if ( 'cb' == $column_key ) + $class[] = 'check-column'; + elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ) ) ) + $class[] = 'num'; + + if ( $column_key === $primary ) { + $class[] = 'column-primary'; + } + + if ( isset( $sortable[$column_key] ) ) { + list( $orderby, $desc_first ) = $sortable[$column_key]; + + if ( $current_orderby == $orderby ) { + $order = 'asc' == $current_order ? 'desc' : 'asc'; + $class[] = 'sorted'; + $class[] = $current_order; + } else { + $order = $desc_first ? 'desc' : 'asc'; + $class[] = 'sortable'; + $class[] = $desc_first ? 'asc' : 'desc'; + } + + $column_display_name = '' . $column_display_name . ''; + } + + $tag = ( 'cb' === $column_key ) ? 'td' : 'th'; + $scope = ( 'th' === $tag ) ? 'scope="col"' : ''; + $id = $with_id ? "id='$column_key'" : ''; + + if ( !empty( $class ) ) + $class = "class='" . join( ' ', $class ) . "'"; + + echo "<$tag $scope $id $class>$column_display_name"; + } + } + + /** + * Display the table + * + * @since 3.1.0 + * @access public + */ + public function display() { + $singular = $this->_args['singular']; + + $this->display_tablenav( 'top' ); +?> + + + + print_column_headers(); ?> + + + + > + display_rows_or_placeholder(); ?> + + + + + print_column_headers( false ); ?> + + + +
+display_tablenav( 'bottom' ); + } + + /** + * Get a list of CSS classes for the list table table tag. + * + * @since 3.1.0 + * @access protected + * + * @return array List of CSS classes for the table tag. + */ + protected function get_table_classes() { + return array( 'widefat', 'fixed', 'striped', $this->_args['plural'] ); + } + + /** + * Generate the table navigation above or below the table + * + * @since 3.1.0 + * @access protected + * @param string $which + */ + protected function display_tablenav( $which ) { + if ( 'top' == $which ) + wp_nonce_field( 'bulk-' . $this->_args['plural'] ); +?> +
+ +
+ bulk_actions( $which ); ?> +
+extra_tablenav( $which ); + $this->pagination( $which ); +?> + +
+
+has_items() ) { + $this->display_rows(); + } else { + echo ''; + $this->no_items(); + echo ''; + } + } + + /** + * Generate the table rows + * + * @since 3.1.0 + * @access public + */ + public function display_rows() { + foreach ( $this->items as $item ) + $this->single_row( $item ); + } + + /** + * Generates content for a single row of the table + * + * @since 3.1.0 + * @access public + * + * @param object $item The current item + */ + public function single_row( $item ) { + echo ''; + $this->single_row_columns( $item ); + echo ''; + } + + /** + * + * @param object $item + * @param string $column_name + */ + protected function column_default( $item, $column_name ) {} + + /** + * + * @param object $item + */ + protected function column_cb( $item ) {} + + /** + * Generates the columns for a single row of the table + * + * @since 3.1.0 + * @access protected + * + * @param object $item The current item + */ + protected function single_row_columns( $item ) { + list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $classes = "$column_name column-$column_name"; + if ( $primary === $column_name ) { + $classes .= ' has-row-actions column-primary'; + } + + if ( in_array( $column_name, $hidden ) ) { + $classes .= ' hidden'; + } + + // Comments column uses HTML in the display name with screen reader text. + // Instead of using esc_attr(), we strip tags to get closer to a user-friendly string. + $data = 'data-colname="' . wp_strip_all_tags( $column_display_name ) . '"'; + + $attributes = "class='$classes' $data"; + + if ( 'cb' == $column_name ) { + echo ''; + echo $this->column_cb( $item ); + echo ''; + } elseif ( method_exists( $this, '_column_' . $column_name ) ) { + echo call_user_func( + array( $this, '_column_' . $column_name ), + $item, + $classes, + $data, + $primary + ); + } elseif ( method_exists( $this, 'column_' . $column_name ) ) { + echo ""; + echo call_user_func( array( $this, 'column_' . $column_name ), $item ); + echo $this->handle_row_actions( $item, $column_name, $primary ); + echo ""; + } else { + echo ""; + echo $this->column_default( $item, $column_name ); + echo $this->handle_row_actions( $item, $column_name, $primary ); + echo ""; + } + } + } + + /** + * Generates and display row actions links for the list table. + * + * @since 4.3.0 + * @access protected + * + * @param object $item The item being acted upon. + * @param string $column_name Current column name. + * @param string $primary Primary column name. + * @return string The row actions output. In this case, an empty string. + */ + protected function handle_row_actions( $item, $column_name, $primary ) { + return $column_name == $primary ? '' : ''; + } + + /** + * Handle an incoming ajax request (called from admin-ajax.php) + * + * @since 3.1.0 + * @access public + */ + public function ajax_response() { + $this->prepare_items(); + + ob_start(); + if ( ! empty( $_REQUEST['no_placeholder'] ) ) { + $this->display_rows(); + } else { + $this->display_rows_or_placeholder(); + } + + $rows = ob_get_clean(); + + $response = array( 'rows' => $rows ); + + if ( isset( $this->_pagination_args['total_items'] ) ) { + $response['total_items_i18n'] = sprintf( + _n( '%s item', '%s items', $this->_pagination_args['total_items'] ), + number_format_i18n( $this->_pagination_args['total_items'] ) + ); + } + if ( isset( $this->_pagination_args['total_pages'] ) ) { + $response['total_pages'] = $this->_pagination_args['total_pages']; + $response['total_pages_i18n'] = number_format_i18n( $this->_pagination_args['total_pages'] ); + } + + die( wp_json_encode( $response ) ); + } + + /** + * Send required variables to JavaScript land + * + * @access public + */ + public function _js_vars() { + $args = array( + 'class' => get_class( $this ), + 'screen' => array( + 'id' => $this->screen->id, + 'base' => $this->screen->base, + ) + ); + + printf( "\n", wp_json_encode( $args ) ); + } +} diff --git a/wp-admin/includes/class-wp-media-list-table.php b/wp-admin/includes/class-wp-media-list-table.php new file mode 100644 index 0000000000..9c61fc28ef --- /dev/null +++ b/wp-admin/includes/class-wp-media-list-table.php @@ -0,0 +1,657 @@ +detached = ( isset( $_REQUEST['attachment-filter'] ) && 'detached' === $_REQUEST['attachment-filter'] ); + + $this->modes = array( + 'list' => __( 'List View' ), + 'grid' => __( 'Grid View' ) + ); + + parent::__construct( array( + 'plural' => 'media', + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, + ) ); + } + + /** + * + * @return bool + */ + public function ajax_user_can() { + return current_user_can('upload_files'); + } + + /** + * + * @global WP_Query $wp_query + * @global array $post_mime_types + * @global array $avail_post_mime_types + * @global string $mode + */ + public function prepare_items() { + global $wp_query, $post_mime_types, $avail_post_mime_types, $mode; + + list( $post_mime_types, $avail_post_mime_types ) = wp_edit_attachments_query( $_REQUEST ); + + $this->is_trash = isset( $_REQUEST['attachment-filter'] ) && 'trash' == $_REQUEST['attachment-filter']; + + $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode']; + + $this->set_pagination_args( array( + 'total_items' => $wp_query->found_posts, + 'total_pages' => $wp_query->max_num_pages, + 'per_page' => $wp_query->query_vars['posts_per_page'], + ) ); + } + + /** + * + * @global wpdb $wpdb + * @global array $post_mime_types + * @global array $avail_post_mime_types + * @return array + */ + protected function get_views() { + global $wpdb, $post_mime_types, $avail_post_mime_types; + + $type_links = array(); + $_num_posts = (array) wp_count_attachments(); + $_total_posts = array_sum($_num_posts) - $_num_posts['trash']; + $total_orphans = $wpdb->get_var( "SELECT COUNT( * ) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent < 1" ); + $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts)); + $num_posts = array(); + foreach ( $matches as $type => $reals ) { + foreach ( $reals as $real ) { + $num_posts[$type] = ( isset( $num_posts[$type] ) ) ? $num_posts[$type] + $_num_posts[$real] : $_num_posts[$real]; + } + } + $selected = empty( $_GET['attachment-filter'] ) ? ' selected="selected"' : ''; + $type_links['all'] = "'; + foreach ( $post_mime_types as $mime_type => $label ) { + if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) ) + continue; + + $selected = ''; + if ( !empty( $_GET['attachment-filter'] ) && strpos( $_GET['attachment-filter'], 'post_mime_type:' ) === 0 && wp_match_mime_types( $mime_type, str_replace( 'post_mime_type:', '', $_GET['attachment-filter'] ) ) ) + $selected = ' selected="selected"'; + if ( !empty( $num_posts[$mime_type] ) ) + $type_links[$mime_type] = ''; + } + $type_links['detached'] = ''; + + if ( !empty($_num_posts['trash']) ) + $type_links['trash'] = ''; + + return $type_links; + } + + /** + * + * @return array + */ + protected function get_bulk_actions() { + $actions = array(); + if ( MEDIA_TRASH ) { + if ( $this->is_trash ) { + $actions['untrash'] = __( 'Restore' ); + $actions['delete'] = __( 'Delete Permanently' ); + } else { + $actions['trash'] = __( 'Trash' ); + } + } else { + $actions['delete'] = __( 'Delete Permanently' ); + } + + if ( $this->detached ) + $actions['attach'] = __( 'Attach to a post' ); + + return $actions; + } + + /** + * @param string $which + */ + protected function extra_tablenav( $which ) { + if ( 'bar' !== $which ) { + return; + } +?> +
+is_trash ) { + $this->months_dropdown( 'attachment' ); + } + + /** This action is documented in wp-admin/includes/class-wp-posts-list-table.php */ + do_action( 'restrict_manage_posts' ); + submit_button( __( 'Filter' ), 'button', 'filter_action', false, array( 'id' => 'post-query-submit' ) ); + } + + if ( $this->is_trash && current_user_can( 'edit_others_posts' ) ) { + submit_button( __( 'Empty Trash' ), 'apply', 'delete_all', false ); + } ?> +
+get_views(); +?> +
+
+ view_switcher( $mode ); ?> + + + + +extra_tablenav( 'bar' ); + + /** This filter is documented in wp-admin/inclues/class-wp-list-table.php */ + $views = apply_filters( "views_{$this->screen->id}", array() ); + + // Back compat for pre-4.0 view links. + if ( ! empty( $views ) ) { + echo ''; + } +?> +
+ +
+ +
+
+ '; + /* translators: column name */ + $posts_columns['title'] = _x( 'File', 'column name' ); + $posts_columns['author'] = __( 'Author' ); + + $taxonomies = get_taxonomies_for_attachments( 'objects' ); + $taxonomies = wp_filter_object_list( $taxonomies, array( 'show_admin_column' => true ), 'and', 'name' ); + + /** + * Filter the taxonomy columns for attachments in the Media list table. + * + * @since 3.5.0 + * + * @param array $taxonomies An array of registered taxonomies to show for attachments. + * @param string $post_type The post type. Default 'attachment'. + */ + $taxonomies = apply_filters( 'manage_taxonomies_for_attachment_columns', $taxonomies, 'attachment' ); + $taxonomies = array_filter( $taxonomies, 'taxonomy_exists' ); + + foreach ( $taxonomies as $taxonomy ) { + if ( 'category' == $taxonomy ) + $column_key = 'categories'; + elseif ( 'post_tag' == $taxonomy ) + $column_key = 'tags'; + else + $column_key = 'taxonomy-' . $taxonomy; + + $posts_columns[ $column_key ] = get_taxonomy( $taxonomy )->labels->name; + } + + /* translators: column name */ + if ( !$this->detached ) { + $posts_columns['parent'] = _x( 'Uploaded to', 'column name' ); + if ( post_type_supports( 'attachment', 'comments' ) ) + $posts_columns['comments'] = '' . __( 'Comments' ) . ''; + } + /* translators: column name */ + $posts_columns['date'] = _x( 'Date', 'column name' ); + /** + * Filter the Media list table columns. + * + * @since 2.5.0 + * + * @param array $posts_columns An array of columns displayed in the Media list table. + * @param bool $detached Whether the list table contains media not attached + * to any posts. Default true. + */ + return apply_filters( 'manage_media_columns', $posts_columns, $this->detached ); + } + + /** + * + * @return array + */ + protected function get_sortable_columns() { + return array( + 'title' => 'title', + 'author' => 'author', + 'parent' => 'parent', + 'comments' => 'comment_count', + 'date' => array( 'date', true ), + ); + } + + /** + * Handles the checkbox column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_Post $post The current WP_Post object. + */ + public function column_cb( $post ) { + if ( current_user_can( 'edit_post', $post->ID ) ) { ?> + + + post_mime_type ); + + $title = _draft_or_post_title(); + $thumb = wp_get_attachment_image( $post->ID, array( 60, 60 ), true, array( 'alt' => '' ) ); + $link_start = $link_end = ''; + + if ( current_user_can( 'edit_post', $post->ID ) && ! $this->is_trash ) { + $link_start = ''; + $link_end = ''; + } + + $class = $thumb ? ' class="has-media-icon"' : ''; + + ?> + > + + + + + + + + + + +

guid ); ?>

+ %s', + esc_url( add_query_arg( array( 'author' => get_the_author_meta('ID') ), 'upload.php' ) ), + get_the_author() + ); + } + + /** + * Handles the description column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_Post $post The current WP_Post object. + */ + public function column_desc( $post ) { + echo has_excerpt() ? $post->post_excerpt : ''; + } + + /** + * Handles the date column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_Post $post The current WP_Post object. + */ + public function column_date( $post ) { + if ( '0000-00-00 00:00:00' == $post->post_date ) { + $h_time = __( 'Unpublished' ); + } else { + $m_time = $post->post_date; + $time = get_post_time( 'G', true, $post, false ); + if ( ( abs( $t_diff = time() - $time ) ) < DAY_IN_SECONDS ) { + if ( $t_diff < 0 ) { + $h_time = sprintf( __( '%s from now' ), human_time_diff( $time ) ); + } else { + $h_time = sprintf( __( '%s ago' ), human_time_diff( $time ) ); + } + } else { + $h_time = mysql2date( __( 'Y/m/d' ), $m_time ); + } + } + + echo $h_time; + } + + /** + * Handles the parent column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_Post $post The current WP_Post object. + */ + public function column_parent( $post ) { + $user_can_edit = current_user_can( 'edit_post', $post->ID ); + + if ( $post->post_parent > 0 ) { + $parent = get_post( $post->post_parent ); + } else { + $parent = false; + } + + if ( $parent ) { + $title = _draft_or_post_title( $post->post_parent ); + $parent_type = get_post_type_object( $parent->post_type ); +?> + + show_ui && current_user_can( 'edit_post', $post->post_parent ) ) { ?> + + , +
+ $post->post_parent, + 'media[]' => $post->ID, + '_wpnonce' => wp_create_nonce( 'bulk-' . $this->_args['plural'] ) + ), 'upload.php' ); ?> + +
+ + + + '; + + $pending_comments = get_pending_comments_num( $post->ID ); + $this->comments_bubble( $post->ID, $pending_comments ); + + echo '
'; + } + + /** + * Handles output for the default column. + * + * @since 4.3.0 + * @access public + * + * @param WP_Post $post The current WP_Post object. + * @param string $column_name Current column name. + */ + public function column_default( $post, $column_name ) { + if ( 'categories' == $column_name ) { + $taxonomy = 'category'; + } elseif ( 'tags' == $column_name ) { + $taxonomy = 'post_tag'; + } elseif ( 0 === strpos( $column_name, 'taxonomy-' ) ) { + $taxonomy = substr( $column_name, 9 ); + } else { + $taxonomy = false; + } + + if ( $taxonomy ) { + $terms = get_the_terms( $post->ID, $taxonomy ); + if ( is_array( $terms ) ) { + $out = array(); + foreach ( $terms as $t ) { + $posts_in_term_qv = array(); + $posts_in_term_qv['taxonomy'] = $taxonomy; + $posts_in_term_qv['term'] = $t->slug; + + $out[] = sprintf( '%s', + esc_url( add_query_arg( $posts_in_term_qv, 'upload.php' ) ), + esc_html( sanitize_term_field( 'name', $t->name, $t->term_id, $taxonomy, 'display' ) ) + ); + } + /* translators: used between list items, there is a space after the comma */ + echo join( __( ', ' ), $out ); + } else { + echo '' . get_taxonomy( $taxonomy )->labels->no_terms . ''; + } + + return; + } + + /** + * Fires for each custom column in the Media list table. + * + * Custom columns are registered using the {@see 'manage_media_columns'} filter. + * + * @since 2.5.0 + * + * @param string $column_name Name of the custom column. + * @param int $post_id Attachment ID. + */ + do_action( 'manage_media_custom_column', $column_name, $post->ID ); + } + + /** + * + * @global WP_Post $post + */ + public function display_rows() { + global $post; + + add_filter( 'the_title','esc_html' ); + + while ( have_posts() ) : the_post(); + if ( + ( $this->is_trash && $post->post_status != 'trash' ) + || ( ! $this->is_trash && $post->post_status == 'trash' ) + ) { + continue; + } + $post_owner = ( get_current_user_id() == $post->post_author ) ? 'self' : 'other'; + ?> + + single_row_columns( $post ); ?> + + detached ) { + if ( current_user_can( 'edit_post', $post->ID ) ) + $actions['edit'] = '' . __( 'Edit' ) . ''; + if ( current_user_can( 'delete_post', $post->ID ) ) + if ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) { + $actions['trash'] = "ID ) . "'>" . __( 'Trash' ) . ""; + } else { + $delete_ays = !MEDIA_TRASH ? " onclick='return showNotice.warn();'" : ''; + $actions['delete'] = "ID ) . "'>" . __( 'Delete Permanently' ) . ""; + } + $actions['view'] = '' . __( 'View' ) . ''; + if ( current_user_can( 'edit_post', $post->ID ) ) + $actions['attach'] = ''.__( 'Attach' ).''; + } + else { + if ( current_user_can( 'edit_post', $post->ID ) && !$this->is_trash ) + $actions['edit'] = '' . __( 'Edit' ) . ''; + if ( current_user_can( 'delete_post', $post->ID ) ) { + if ( $this->is_trash ) + $actions['untrash'] = "ID ) . "'>" . __( 'Restore' ) . ""; + elseif ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) + $actions['trash'] = "ID ) . "'>" . __( 'Trash' ) . ""; + if ( $this->is_trash || !EMPTY_TRASH_DAYS || !MEDIA_TRASH ) { + $delete_ays = ( !$this->is_trash && !MEDIA_TRASH ) ? " onclick='return showNotice.warn();'" : ''; + $actions['delete'] = "ID ) . "'>" . __( 'Delete Permanently' ) . ""; + } + } + if ( !$this->is_trash ) { + $title =_draft_or_post_title( $post->post_parent ); + $actions['view'] = '' . __( 'View' ) . ''; + } + } + + /** + * Filter the action links for each attachment in the Media list table. + * + * @since 2.8.0 + * + * @param array $actions An array of action links for each attachment. + * Default 'Edit', 'Delete Permanently', 'View'. + * @param WP_Post $post WP_Post object for the current attachment. + * @param bool $detached Whether the list table contains media not attached + * to any posts. Default true. + */ + return apply_filters( 'media_row_actions', $actions, $post, $this->detached ); + } + + /** + * Generates and displays row action links. + * + * @since 4.3.0 + * @access protected + * + * @param object $post Attachment being acted upon. + * @param string $column_name Current column name. + * @param string $primary Primary column name. + * @return string Row actions output for media attachments. + */ + protected function handle_row_actions( $post, $column_name, $primary ) { + if ( $primary !== $column_name ) { + return ''; + } + + $att_title = _draft_or_post_title(); + return $this->row_actions( $this->_get_row_actions( $post, $att_title ) ); + } +} diff --git a/wp-admin/includes/class-wp-ms-sites-list-table.php b/wp-admin/includes/class-wp-ms-sites-list-table.php new file mode 100644 index 0000000000..9fe3f482d4 --- /dev/null +++ b/wp-admin/includes/class-wp-ms-sites-list-table.php @@ -0,0 +1,520 @@ +status_list = array( + 'archived' => array( 'site-archived', __( 'Archived' ) ), + 'spam' => array( 'site-spammed', _x( 'Spam', 'site' ) ), + 'deleted' => array( 'site-deleted', __( 'Deleted' ) ), + 'mature' => array( 'site-mature', __( 'Mature' ) ) + ); + + parent::__construct( array( + 'plural' => 'sites', + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, + ) ); + } + + /** + * + * @return bool + */ + public function ajax_user_can() { + return current_user_can( 'manage_sites' ); + } + + /** + * + * @global string $s + * @global string $mode + * @global wpdb $wpdb + */ + public function prepare_items() { + global $s, $mode, $wpdb; + + $current_site = get_current_site(); + + $mode = ( empty( $_REQUEST['mode'] ) ) ? 'list' : $_REQUEST['mode']; + + $per_page = $this->get_items_per_page( 'sites_network_per_page' ); + + $pagenum = $this->get_pagenum(); + + $s = isset( $_REQUEST['s'] ) ? wp_unslash( trim( $_REQUEST[ 's' ] ) ) : ''; + $wild = ''; + if ( false !== strpos($s, '*') ) { + $wild = '%'; + $s = trim($s, '*'); + } + + /* + * If the network is large and a search is not being performed, show only + * the latest blogs with no paging in order to avoid expensive count queries. + */ + if ( !$s && wp_is_large_network() ) { + if ( !isset($_REQUEST['orderby']) ) + $_GET['orderby'] = $_REQUEST['orderby'] = ''; + if ( !isset($_REQUEST['order']) ) + $_GET['order'] = $_REQUEST['order'] = 'DESC'; + } + + $query = "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' "; + + if ( empty($s) ) { + // Nothing to do. + } elseif ( preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $s ) || + preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.?$/', $s ) || + preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.?$/', $s ) || + preg_match( '/^[0-9]{1,3}\.$/', $s ) ) { + // IPv4 address + $sql = $wpdb->prepare( "SELECT blog_id FROM {$wpdb->registration_log} WHERE {$wpdb->registration_log}.IP LIKE %s", $wpdb->esc_like( $s ) . $wild ); + $reg_blog_ids = $wpdb->get_col( $sql ); + + if ( !$reg_blog_ids ) + $reg_blog_ids = array( 0 ); + + $query = "SELECT * + FROM {$wpdb->blogs} + WHERE site_id = '{$wpdb->siteid}' + AND {$wpdb->blogs}.blog_id IN (" . implode( ', ', $reg_blog_ids ) . ")"; + } else { + if ( is_numeric($s) && empty( $wild ) ) { + $query .= $wpdb->prepare( " AND ( {$wpdb->blogs}.blog_id = %s )", $s ); + } elseif ( is_subdomain_install() ) { + $blog_s = str_replace( '.' . $current_site->domain, '', $s ); + $blog_s = $wpdb->esc_like( $blog_s ) . $wild . $wpdb->esc_like( '.' . $current_site->domain ); + $query .= $wpdb->prepare( " AND ( {$wpdb->blogs}.domain LIKE %s ) ", $blog_s ); + } else { + if ( $s != trim('/', $current_site->path) ) { + $blog_s = $wpdb->esc_like( $current_site->path . $s ) . $wild . $wpdb->esc_like( '/' ); + } else { + $blog_s = $wpdb->esc_like( $s ); + } + $query .= $wpdb->prepare( " AND ( {$wpdb->blogs}.path LIKE %s )", $blog_s ); + } + } + + $order_by = isset( $_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : ''; + if ( $order_by == 'registered' ) { + $query .= ' ORDER BY registered '; + } elseif ( $order_by == 'lastupdated' ) { + $query .= ' ORDER BY last_updated '; + } elseif ( $order_by == 'blogname' ) { + if ( is_subdomain_install() ) { + $query .= ' ORDER BY domain '; + } else { + $query .= ' ORDER BY path '; + } + } elseif ( $order_by == 'blog_id' ) { + $query .= ' ORDER BY blog_id '; + } else { + $order_by = null; + } + + if ( isset( $order_by ) ) { + $order = ( isset( $_REQUEST['order'] ) && 'DESC' == strtoupper( $_REQUEST['order'] ) ) ? "DESC" : "ASC"; + $query .= $order; + } + + // Don't do an unbounded count on large networks + if ( ! wp_is_large_network() ) + $total = $wpdb->get_var( str_replace( 'SELECT *', 'SELECT COUNT( blog_id )', $query ) ); + + $query .= " LIMIT " . intval( ( $pagenum - 1 ) * $per_page ) . ", " . intval( $per_page ); + $this->items = $wpdb->get_results( $query, ARRAY_A ); + + if ( wp_is_large_network() ) + $total = count($this->items); + + $this->set_pagination_args( array( + 'total_items' => $total, + 'per_page' => $per_page, + ) ); + } + + /** + * @access public + */ + public function no_items() { + _e( 'No sites found.' ); + } + + /** + * + * @return array + */ + protected function get_bulk_actions() { + $actions = array(); + if ( current_user_can( 'delete_sites' ) ) + $actions['delete'] = __( 'Delete' ); + $actions['spam'] = _x( 'Mark as Spam', 'site' ); + $actions['notspam'] = _x( 'Not Spam', 'site' ); + + return $actions; + } + + /** + * @global string $mode + * + * @param string $which + */ + protected function pagination( $which ) { + global $mode; + + parent::pagination( $which ); + + if ( 'top' == $which ) + $this->view_switcher( $mode ); + } + + /** + * @return array + */ + public function get_columns() { + $sites_columns = array( + 'cb' => '', + 'blogname' => __( 'URL' ), + 'lastupdated' => __( 'Last Updated' ), + 'registered' => _x( 'Registered', 'site' ), + 'users' => __( 'Users' ), + ); + + if ( has_filter( 'wpmublogsaction' ) ) { + $sites_columns['plugins'] = __( 'Actions' ); + } + + /** + * Filter the displayed site columns in Sites list table. + * + * @since MU + * + * @param array $sites_columns An array of displayed site columns. Default 'cb', + * 'blogname', 'lastupdated', 'registered', 'users'. + */ + return apply_filters( 'wpmu_blogs_columns', $sites_columns ); + } + + /** + * @return array + */ + protected function get_sortable_columns() { + return array( + 'blogname' => 'blogname', + 'lastupdated' => 'lastupdated', + 'registered' => 'blog_id', + ); + } + + /** + * Handles the checkbox column output. + * + * @since 4.3.0 + * @access public + * + * @param array $blog Current site. + */ + public function column_cb( $blog ) { + if ( ! is_main_site( $blog['blog_id'] ) ) : + $blogname = untrailingslashit( $blog['domain'] . $blog['path'] ); + ?> + + + status_list ); + + foreach ( $this->status_list as $status => $col ) { + if ( $blog[ $status ] == 1 ) { + $blog_states[] = $col[1]; + } + } + $blog_state = ''; + if ( ! empty( $blog_states ) ) { + $state_count = count( $blog_states ); + $i = 0; + $blog_state .= ' - '; + foreach ( $blog_states as $state ) { + ++$i; + $sep = ( $i == $state_count ) ? '' : ', '; + $blog_state .= "$state$sep"; + } + } + + ?> + + ' . sprintf( __( '%1$s – %2$s' ), get_option( 'blogname' ), get_option( 'blogdescription ' ) ) . '

'; + restore_current_blog(); + } + } + + /** + * Handles the lastupdated column output. + * + * @since 4.3.0 + * @access public + * + * @param array $blog Current site. + */ + public function column_lastupdated( $blog ) { + global $mode; + + if ( 'list' == $mode ) { + $date = __( 'Y/m/d' ); + } else { + $date = __( 'Y/m/d g:i:s a' ); + } + + echo ( $blog['last_updated'] == '0000-00-00 00:00:00' ) ? __( 'Never' ) : mysql2date( $date, $blog['last_updated'] ); + } + + /** + * Handles the registered column output. + * + * @since 4.3.0 + * @access public + * + * @param array $blog Current site. + */ + public function column_registered( $blog ) { + global $mode; + + if ( 'list' == $mode ) { + $date = __( 'Y/m/d' ); + } else { + $date = __( 'Y/m/d g:i:s a' ); + } + + if ( $blog['registered'] == '0000-00-00 00:00:00' ) { + echo '—'; + } else { + echo mysql2date( $date, $blog['registered'] ); + } + } + + /** + * Handles the users column output. + * + * @since 4.3.0 + * @access public + * + * @param array $blog Current site. + */ + public function column_users( $blog ) { + $user_count = wp_cache_get( $blog['blog_id'] . '_user_count', 'blog-details' ); + if ( ! $user_count ) { + $blog_users = get_users( array( 'blog_id' => $blog['blog_id'], 'fields' => 'ID' ) ); + $user_count = count( $blog_users ); + unset( $blog_users ); + wp_cache_set( $blog['blog_id'] . '_user_count', $user_count, 'blog-details', 12 * HOUR_IN_SECONDS ); + } + + printf( + '%s', + esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ), + number_format_i18n( $user_count ) + ); + } + + /** + * Handles the plugins column output. + * + * @since 4.3.0 + * @access public + * + * @param array $blog Current site. + */ + public function column_plugins( $blog ) { + if ( has_filter( 'wpmublogsaction' ) ) { + /** + * Fires inside the auxiliary 'Actions' column of the Sites list table. + * + * By default this column is hidden unless something is hooked to the action. + * + * @since MU + * + * @param int $blog_id The site ID. + */ + do_action( 'wpmublogsaction', $blog['blog_id'] ); + } + } + + /** + * Handles output for the default column. + * + * @since 4.3.0 + * @access public + * + * @param array $blog Current site. + * @param string $column_name Current column name. + */ + public function column_default( $blog, $column_name ) { + /** + * Fires for each registered custom column in the Sites list table. + * + * @since 3.1.0 + * + * @param string $column_name The name of the column to display. + * @param int $blog_id The site ID. + */ + do_action( 'manage_sites_custom_column', $column_name, $blog['blog_id'] ); + } + + /** + * + * @global string $mode + */ + public function display_rows() { + foreach ( $this->items as $blog ) { + $class = ''; + reset( $this->status_list ); + + foreach ( $this->status_list as $status => $col ) { + if ( $blog[ $status ] == 1 ) { + $class = " class='{$col[0]}'"; + } + } + + echo ""; + + $this->single_row_columns( $blog ); + + echo ''; + } + } + + /** + * Gets the name of the default primary column. + * + * @since 4.3.0 + * @access protected + * + * @return string Name of the default primary column, in this case, 'blogname'. + */ + protected function get_default_primary_column_name() { + return 'blogname'; + } + + /** + * Generates and displays row action links. + * + * @since 4.3.0 + * @access protected + * + * @param object $blog Blog being acted upon. + * @param string $column_name Current column name. + * @param string $primary Primary column name. + * @return string Row actions output. + */ + protected function handle_row_actions( $blog, $column_name, $primary ) { + if ( $primary !== $column_name ) { + return; + } + + $blogname = untrailingslashit( $blog['domain'] . $blog['path'] ); + + // Preordered. + $actions = array( + 'edit' => '', 'backend' => '', + 'activate' => '', 'deactivate' => '', + 'archive' => '', 'unarchive' => '', + 'spam' => '', 'unspam' => '', + 'delete' => '', + 'visit' => '', + ); + + $actions['edit'] = '' . __( 'Edit' ) . ''; + $actions['backend'] = "" . __( 'Dashboard' ) . ''; + if ( get_current_site()->blog_id != $blog['blog_id'] ) { + if ( $blog['deleted'] == '1' ) { + $actions['activate'] = '' . __( 'Activate' ) . ''; + } else { + $actions['deactivate'] = '' . __( 'Deactivate' ) . ''; + } + + if ( $blog['archived'] == '1' ) { + $actions['unarchive'] = '' . __( 'Unarchive' ) . ''; + } else { + $actions['archive'] = '' . _x( 'Archive', 'verb; site' ) . ''; + } + + if ( $blog['spam'] == '1' ) { + $actions['unspam'] = '' . _x( 'Not Spam', 'site' ) . ''; + } else { + $actions['spam'] = '' . _x( 'Spam', 'site' ) . ''; + } + + if ( current_user_can( 'delete_site', $blog['blog_id'] ) ) { + $actions['delete'] = '' . __( 'Delete' ) . ''; + } + } + + $actions['visit'] = "" . __( 'Visit' ) . ''; + + /** + * Filter the action links displayed for each site in the Sites list table. + * + * The 'Edit', 'Dashboard', 'Delete', and 'Visit' links are displayed by + * default for each site. The site's status determines whether to show the + * 'Activate' or 'Deactivate' link, 'Unarchive' or 'Archive' links, and + * 'Not Spam' or 'Spam' link for each site. + * + * @since 3.1.0 + * + * @param array $actions An array of action links to be displayed. + * @param int $blog_id The site ID. + * @param string $blogname Site path, formatted depending on whether it is a sub-domain + * or subdirectory multisite install. + */ + $actions = apply_filters( 'manage_sites_action_links', array_filter( $actions ), $blog['blog_id'], $blogname ); + return $this->row_actions( $actions ); + } +} diff --git a/wp-admin/includes/class-wp-ms-themes-list-table.php b/wp-admin/includes/class-wp-ms-themes-list-table.php new file mode 100644 index 0000000000..991a07749a --- /dev/null +++ b/wp-admin/includes/class-wp-ms-themes-list-table.php @@ -0,0 +1,646 @@ + 'themes', + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, + ) ); + + $status = isset( $_REQUEST['theme_status'] ) ? $_REQUEST['theme_status'] : 'all'; + if ( !in_array( $status, array( 'all', 'enabled', 'disabled', 'upgrade', 'search', 'broken' ) ) ) + $status = 'all'; + + $page = $this->get_pagenum(); + + $this->is_site_themes = ( 'site-themes-network' == $this->screen->id ) ? true : false; + + if ( $this->is_site_themes ) + $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; + } + + /** + * + * @return array + */ + protected function get_table_classes() { + // todo: remove and add CSS for .themes + return array( 'widefat', 'plugins' ); + } + + /** + * + * @return bool + */ + public function ajax_user_can() { + if ( $this->is_site_themes ) + return current_user_can( 'manage_sites' ); + else + return current_user_can( 'manage_network_themes' ); + } + + /** + * + * @global string $status + * @global array $totals + * @global int $page + * @global string $orderby + * @global string $order + * @global string $s + */ + public function prepare_items() { + global $status, $totals, $page, $orderby, $order, $s; + + wp_reset_vars( array( 'orderby', 'order', 's' ) ); + + $themes = array( + /** + * Filter the full array of WP_Theme objects to list in the Multisite + * themes list table. + * + * @since 3.1.0 + * + * @param array $all An array of WP_Theme objects to display in the list table. + */ + 'all' => apply_filters( 'all_themes', wp_get_themes() ), + 'search' => array(), + 'enabled' => array(), + 'disabled' => array(), + 'upgrade' => array(), + 'broken' => $this->is_site_themes ? array() : wp_get_themes( array( 'errors' => true ) ), + ); + + if ( $this->is_site_themes ) { + $themes_per_page = $this->get_items_per_page( 'site_themes_network_per_page' ); + $allowed_where = 'site'; + } else { + $themes_per_page = $this->get_items_per_page( 'themes_network_per_page' ); + $allowed_where = 'network'; + } + + $maybe_update = current_user_can( 'update_themes' ) && ! $this->is_site_themes && $current = get_site_transient( 'update_themes' ); + + foreach ( (array) $themes['all'] as $key => $theme ) { + if ( $this->is_site_themes && $theme->is_allowed( 'network' ) ) { + unset( $themes['all'][ $key ] ); + continue; + } + + if ( $maybe_update && isset( $current->response[ $key ] ) ) { + $themes['all'][ $key ]->update = true; + $themes['upgrade'][ $key ] = $themes['all'][ $key ]; + } + + $filter = $theme->is_allowed( $allowed_where, $this->site_id ) ? 'enabled' : 'disabled'; + $themes[ $filter ][ $key ] = $themes['all'][ $key ]; + } + + if ( $s ) { + $status = 'search'; + $themes['search'] = array_filter( array_merge( $themes['all'], $themes['broken'] ), array( $this, '_search_callback' ) ); + } + + $totals = array(); + foreach ( $themes as $type => $list ) + $totals[ $type ] = count( $list ); + + if ( empty( $themes[ $status ] ) && !in_array( $status, array( 'all', 'search' ) ) ) + $status = 'all'; + + $this->items = $themes[ $status ]; + WP_Theme::sort_by_name( $this->items ); + + $this->has_items = ! empty( $themes['all'] ); + $total_this_page = $totals[ $status ]; + + if ( $orderby ) { + $orderby = ucfirst( $orderby ); + $order = strtoupper( $order ); + + if ( $orderby == 'Name' ) { + if ( 'ASC' == $order ) + $this->items = array_reverse( $this->items ); + } else { + uasort( $this->items, array( $this, '_order_callback' ) ); + } + } + + $start = ( $page - 1 ) * $themes_per_page; + + if ( $total_this_page > $themes_per_page ) + $this->items = array_slice( $this->items, $start, $themes_per_page, true ); + + $this->set_pagination_args( array( + 'total_items' => $total_this_page, + 'per_page' => $themes_per_page, + ) ); + } + + /** + * @staticvar string $term + * @param WP_Theme $theme + * @return bool + */ + public function _search_callback( $theme ) { + static $term = null; + if ( is_null( $term ) ) + $term = wp_unslash( $_REQUEST['s'] ); + + foreach ( array( 'Name', 'Description', 'Author', 'Author', 'AuthorURI' ) as $field ) { + // Don't mark up; Do translate. + if ( false !== stripos( $theme->display( $field, false, true ), $term ) ) + return true; + } + + if ( false !== stripos( $theme->get_stylesheet(), $term ) ) + return true; + + if ( false !== stripos( $theme->get_template(), $term ) ) + return true; + + return false; + } + + // Not used by any core columns. + /** + * @global string $orderby + * @global string $order + * @param array $theme_a + * @param array $theme_b + * @return int + */ + public function _order_callback( $theme_a, $theme_b ) { + global $orderby, $order; + + $a = $theme_a[ $orderby ]; + $b = $theme_b[ $orderby ]; + + if ( $a == $b ) + return 0; + + if ( 'DESC' == $order ) + return ( $a < $b ) ? 1 : -1; + else + return ( $a < $b ) ? -1 : 1; + } + + /** + * @access public + */ + public function no_items() { + if ( ! $this->has_items ) + _e( 'No themes found.' ); + else + _e( 'You do not appear to have any themes available at this time.' ); + } + + /** + * + * @return array + */ + public function get_columns() { + return array( + 'cb' => '', + 'name' => __( 'Theme' ), + 'description' => __( 'Description' ), + ); + } + + /** + * + * @return array + */ + protected function get_sortable_columns() { + return array( + 'name' => 'name', + ); + } + + /** + * Gets the name of the primary column. + * + * @since 4.3.0 + * @access protected + * + * @return string Unalterable name of the primary column name, in this case, 'name'. + */ + protected function get_primary_column_name() { + return 'name'; + } + + /** + * + * @global array $totals + * @global string $status + * @return array + */ + protected function get_views() { + global $totals, $status; + + $status_links = array(); + foreach ( $totals as $type => $count ) { + if ( !$count ) + continue; + + switch ( $type ) { + case 'all': + $text = _nx( 'All (%s)', 'All (%s)', $count, 'themes' ); + break; + case 'enabled': + $text = _n( 'Enabled (%s)', 'Enabled (%s)', $count ); + break; + case 'disabled': + $text = _n( 'Disabled (%s)', 'Disabled (%s)', $count ); + break; + case 'upgrade': + $text = _n( 'Update Available (%s)', 'Update Available (%s)', $count ); + break; + case 'broken' : + $text = _n( 'Broken (%s)', 'Broken (%s)', $count ); + break; + } + + if ( $this->is_site_themes ) + $url = 'site-themes.php?id=' . $this->site_id; + else + $url = 'themes.php'; + + if ( 'search' != $type ) { + $status_links[$type] = sprintf( "%s", + esc_url( add_query_arg('theme_status', $type, $url) ), + ( $type == $status ) ? ' class="current"' : '', + sprintf( $text, number_format_i18n( $count ) ) + ); + } + } + + return $status_links; + } + + /** + * @global string $status + * + * @return array + */ + protected function get_bulk_actions() { + global $status; + + $actions = array(); + if ( 'enabled' != $status ) + $actions['enable-selected'] = $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ); + if ( 'disabled' != $status ) + $actions['disable-selected'] = $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ); + if ( ! $this->is_site_themes ) { + if ( current_user_can( 'update_themes' ) ) + $actions['update-selected'] = __( 'Update' ); + if ( current_user_can( 'delete_themes' ) ) + $actions['delete-selected'] = __( 'Delete' ); + } + return $actions; + } + + /** + * @access public + */ + public function display_rows() { + foreach ( $this->items as $theme ) + $this->single_row( $theme ); + } + + /** + * Handles the checkbox column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_Theme $theme The current WP_Theme object. + */ + public function column_cb( $theme ) { + $checkbox_id = 'checkbox_' . md5( $theme->get('Name') ); + ?> + + + is_site_themes ) { + $url = "site-themes.php?id={$this->site_id}&"; + $allowed = $theme->is_allowed( 'site', $this->site_id ); + } else { + $url = 'themes.php?'; + $allowed = $theme->is_allowed( 'network' ); + } + + // Pre-order. + $actions = array( + 'enable' => '', + 'disable' => '', + 'edit' => '', + 'delete' => '' + ); + + $stylesheet = $theme->get_stylesheet(); + $theme_key = urlencode( $stylesheet ); + + if ( ! $allowed ) { + if ( ! $theme->errors() ) { + $actions['enable'] = '' . ( $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ) ) . ''; + } + } else { + $actions['disable'] = '' . ( $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ) ) . ''; + } + + if ( current_user_can('edit_themes') ) { + $actions['edit'] = '' . __('Edit') . ''; + } + + if ( ! $allowed && current_user_can( 'delete_themes' ) && ! $this->is_site_themes && $stylesheet != get_option( 'stylesheet' ) && $stylesheet != get_option( 'template' ) ) { + $actions['delete'] = '' . __( 'Delete' ) . ''; + } + /** + * Filter the action links displayed for each theme in the Multisite + * themes list table. + * + * The action links displayed are determined by the theme's status, and + * which Multisite themes list table is being displayed - the Network + * themes list table (themes.php), which displays all installed themes, + * or the Site themes list table (site-themes.php), which displays the + * non-network enabled themes when editing a site in the Network admin. + * + * The default action links for the Network themes list table include + * 'Network Enable', 'Network Disable', 'Edit', and 'Delete'. + * + * The default action links for the Site themes list table include + * 'Enable', 'Disable', and 'Edit'. + * + * @since 2.8.0 + * + * @param array $actions An array of action links. + * @param WP_Theme $theme The current WP_Theme object. + * @param string $context Status of the theme. + */ + $actions = apply_filters( 'theme_action_links', array_filter( $actions ), $theme, $context ); + + /** + * Filter the action links of a specific theme in the Multisite themes + * list table. + * + * The dynamic portion of the hook name, `$stylesheet`, refers to the + * directory name of the theme, which in most cases is synonymous + * with the template name. + * + * @since 3.1.0 + * + * @param array $actions An array of action links. + * @param WP_Theme $theme The current WP_Theme object. + * @param string $context Status of the theme. + */ + $actions = apply_filters( "theme_action_links_$stylesheet", $actions, $theme, $context ); + + echo $this->row_actions( $actions, true ); + } + + /** + * Handles the description column output. + * + * @since 4.3.0 + * @access public + * + * @global string $status + * @global array $totals + * + * @param WP_Theme $theme The current WP_Theme object. + */ + public function column_description( $theme ) { + global $status, $totals; + if ( $theme->errors() ) { + $pre = $status == 'broken' ? __( 'Broken Theme:' ) . ' ' : ''; + echo '

' . $pre . $theme->errors()->get_error_message() . '

'; + } + + if ( $this->is_site_themes ) { + $allowed = $theme->is_allowed( 'site', $this->site_id ); + } else { + $allowed = $theme->is_allowed( 'network' ); + } + + $class = ! $allowed ? 'inactive' : 'active'; + if ( ! empty( $totals['upgrade'] ) && ! empty( $theme->update ) ) + $class .= ' update'; + + echo "

" . $theme->display( 'Description' ) . "

+
"; + + $stylesheet = $theme->get_stylesheet(); + $theme_meta = array(); + + if ( $theme->get('Version') ) { + $theme_meta[] = sprintf( __( 'Version %s' ), $theme->display('Version') ); + } + $theme_meta[] = sprintf( __( 'By %s' ), $theme->display('Author') ); + + if ( $theme->get('ThemeURI') ) { + $theme_meta[] = '' . __( 'Visit Theme Site' ) . ''; + } + /** + * Filter the array of row meta for each theme in the Multisite themes + * list table. + * + * @since 3.1.0 + * + * @param array $theme_meta An array of the theme's metadata, + * including the version, author, and + * theme URI. + * @param string $stylesheet Directory name of the theme. + * @param WP_Theme $theme WP_Theme object. + * @param string $status Status of the theme. + */ + $theme_meta = apply_filters( 'theme_row_meta', $theme_meta, $stylesheet, $theme, $status ); + echo implode( ' | ', $theme_meta ); + + echo '
'; + } + + /** + * Handles default column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_Theme $theme The current WP_Theme object. + * @param string $column_name The current column name. + */ + public function column_default( $theme, $column_name ) { + $stylesheet = $theme->get_stylesheet(); + + /** + * Fires inside each custom column of the Multisite themes list table. + * + * @since 3.1.0 + * + * @param string $column_name Name of the column. + * @param string $stylesheet Directory name of the theme. + * @param WP_Theme $theme Current WP_Theme object. + */ + do_action( 'manage_themes_custom_column', $column_name, $stylesheet, $theme ); + } + + /** + * Handles the output for a single table row. + * + * @since 4.3.0 + * @access public + * + * @param WP_Theme $item The current WP_Theme object. + */ + public function single_row_columns( $item ) { + list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $extra_classes = ''; + if ( in_array( $column_name, $hidden ) ) { + $extra_classes .= ' hidden'; + } + + switch ( $column_name ) { + case 'cb': + echo ''; + + $this->column_cb( $item ); + + echo ''; + break; + + case 'name': + echo "" . $item->display('Name') . ""; + + $this->column_name( $item ); + + echo ""; + break; + + case 'description': + echo ""; + + $this->column_description( $item ); + + echo ''; + break; + + default: + echo ""; + + $this->column_default( $item, $column_name ); + + echo ""; + break; + } + } + } + + /** + * @global string $status + * @global array $totals + * + * @param WP_Theme $theme + */ + public function single_row( $theme ) { + global $status, $totals; + + if ( $this->is_site_themes ) { + $allowed = $theme->is_allowed( 'site', $this->site_id ); + } else { + $allowed = $theme->is_allowed( 'network' ); + } + + $stylesheet = $theme->get_stylesheet(); + + $class = ! $allowed ? 'inactive' : 'active'; + + $id = sanitize_html_class( $theme->get_stylesheet() ); + + if ( ! empty( $totals['upgrade'] ) && ! empty( $theme->update ) ) { + $class .= ' update'; + } + + echo ""; + + $this->single_row_columns( $theme ); + + echo ""; + + if ( $this->is_site_themes ) + remove_action( "after_theme_row_$stylesheet", 'wp_theme_update_row' ); + + /** + * Fires after each row in the Multisite themes list table. + * + * @since 3.1.0 + * + * @param string $stylesheet Directory name of the theme. + * @param WP_Theme $theme Current WP_Theme object. + * @param string $status Status of the theme. + */ + do_action( 'after_theme_row', $stylesheet, $theme, $status ); + + /** + * Fires after each specific row in the Multisite themes list table. + * + * The dynamic portion of the hook name, `$stylesheet`, refers to the + * directory name of the theme, most often synonymous with the template + * name of the theme. + * + * @since 3.5.0 + * + * @param string $stylesheet Directory name of the theme. + * @param WP_Theme $theme Current WP_Theme object. + * @param string $status Status of the theme. + */ + do_action( "after_theme_row_$stylesheet", $stylesheet, $theme, $status ); + } +} diff --git a/wp-admin/includes/class-wp-ms-users-list-table.php b/wp-admin/includes/class-wp-ms-users-list-table.php new file mode 100644 index 0000000000..39dadc788a --- /dev/null +++ b/wp-admin/includes/class-wp-ms-users-list-table.php @@ -0,0 +1,424 @@ +get_items_per_page( 'users_network_per_page' ); + + $role = isset( $_REQUEST['role'] ) ? $_REQUEST['role'] : ''; + + $paged = $this->get_pagenum(); + + $args = array( + 'number' => $users_per_page, + 'offset' => ( $paged-1 ) * $users_per_page, + 'search' => $usersearch, + 'blog_id' => 0, + 'fields' => 'all_with_meta' + ); + + if ( wp_is_large_network( 'users' ) ) + $args['search'] = ltrim( $args['search'], '*' ); + + if ( $role == 'super' ) { + $logins = implode( "', '", get_super_admins() ); + $args['include'] = $wpdb->get_col( "SELECT ID FROM $wpdb->users WHERE user_login IN ('$logins')" ); + } + + /* + * If the network is large and a search is not being performed, + * show only the latest users with no paging in order to avoid + * expensive count queries. + */ + if ( !$usersearch && wp_is_large_network( 'users' ) ) { + if ( !isset($_REQUEST['orderby']) ) + $_GET['orderby'] = $_REQUEST['orderby'] = 'id'; + if ( !isset($_REQUEST['order']) ) + $_GET['order'] = $_REQUEST['order'] = 'DESC'; + $args['count_total'] = false; + } + + if ( isset( $_REQUEST['orderby'] ) ) + $args['orderby'] = $_REQUEST['orderby']; + + if ( isset( $_REQUEST['order'] ) ) + $args['order'] = $_REQUEST['order']; + + $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode']; + + // Query the user IDs for this page + $wp_user_search = new WP_User_Query( $args ); + + $this->items = $wp_user_search->get_results(); + + $this->set_pagination_args( array( + 'total_items' => $wp_user_search->get_total(), + 'per_page' => $users_per_page, + ) ); + } + + /** + * + * @return array + */ + protected function get_bulk_actions() { + $actions = array(); + if ( current_user_can( 'delete_users' ) ) + $actions['delete'] = __( 'Delete' ); + $actions['spam'] = _x( 'Mark as Spam', 'user' ); + $actions['notspam'] = _x( 'Not Spam', 'user' ); + + return $actions; + } + + /** + * @access public + */ + public function no_items() { + _e( 'No users found.' ); + } + + /** + * + * @global string $role + * @return array + */ + protected function get_views() { + global $role; + + $total_users = get_user_count(); + $super_admins = get_super_admins(); + $total_admins = count( $super_admins ); + + $class = $role != 'super' ? ' class="current"' : ''; + $role_links = array(); + $role_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $total_users, 'users' ), number_format_i18n( $total_users ) ) . ''; + $class = $role == 'super' ? ' class="current"' : ''; + $role_links['super'] = "" . sprintf( _n( 'Super Admin (%s)', 'Super Admins (%s)', $total_admins ), number_format_i18n( $total_admins ) ) . ''; + + return $role_links; + } + + /** + * @global string $mode + * @param string $which + */ + protected function pagination( $which ) { + global $mode; + + parent::pagination ( $which ); + + if ( 'top' == $which ) + $this->view_switcher( $mode ); + } + + /** + * + * @return array + */ + public function get_columns() { + $users_columns = array( + 'cb' => '', + 'username' => __( 'Username' ), + 'name' => __( 'Name' ), + 'email' => __( 'E-mail' ), + 'registered' => _x( 'Registered', 'user' ), + 'blogs' => __( 'Sites' ) + ); + /** + * Filter the columns displayed in the Network Admin Users list table. + * + * @since MU + * + * @param array $users_columns An array of user columns. Default 'cb', 'username', + * 'name', 'email', 'registered', 'blogs'. + */ + return apply_filters( 'wpmu_users_columns', $users_columns ); + } + + /** + * + * @return array + */ + protected function get_sortable_columns() { + return array( + 'username' => 'login', + 'name' => 'name', + 'email' => 'email', + 'registered' => 'id', + ); + } + + /** + * Handles the checkbox column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_User $user The current WP_User object. + */ + public function column_cb( $user ) { + ?> + + + user_email, 32 ); + $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user->ID ) ) ); + + echo $avatar; + + ?>user_login; ?>user_login, $super_admins ) ) { + echo ' - ' . __( 'Super Admin' ); + } + ?> + first_name $user->last_name"; + } + + /** + * Handles the email column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_User $user The current WP_User object. + */ + public function column_email( $user ) { + echo "$user->user_email"; + } + + /** + * Handles the registered date column output. + * + * @since 4.3.0 + * @access public + * + * @global string $mode + * + * @param WP_User $user The current WP_User object. + */ + public function column_registered( $user ) { + global $mode; + if ( 'list' == $mode ) { + $date = __( 'Y/m/d' ); + } else { + $date = __( 'Y/m/d g:i:s a' ); + } + echo mysql2date( $date, $user->user_registered ); + } + + /** + * @since 4.3.0 + * @access protected + * + * @param WP_User $user + * @param string $classes + * @param string $data + * @param string $primary + */ + protected function _column_blogs( $user, $classes, $data, $primary ) { + echo ''; + echo $this->column_blogs( $user ); + echo $this->handle_row_actions( $user, 'blogs', $primary ); + echo ''; + } + + /** + * Handles the blogs/sites column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_User $user The current WP_User object. + */ + public function column_blogs( $user ) { + $blogs = get_blogs_of_user( $user->ID, true ); + if ( ! is_array( $blogs ) ) { + return; + } + + foreach ( $blogs as $val ) { + if ( ! can_edit_network( $val->site_id ) ) { + continue; + } + + $path = ( $val->path == '/' ) ? '' : $val->path; + echo ''; + echo '' . str_replace( '.' . get_current_site()->domain, '', $val->domain . $path ) . ''; + echo ' '; + $actions = array(); + $actions['edit'] = '' . __( 'Edit' ) . ''; + + $class = ''; + if ( $val->spam == 1 ) { + $class .= 'site-spammed '; + } + if ( $val->mature == 1 ) { + $class .= 'site-mature '; + } + if ( $val->deleted == 1 ) { + $class .= 'site-deleted '; + } + if ( $val->archived == 1 ) { + $class .= 'site-archived '; + } + + $actions['view'] = '' . __( 'View' ) . ''; + + /** + * Filter the action links displayed next the sites a user belongs to + * in the Network Admin Users list table. + * + * @since 3.1.0 + * + * @param array $actions An array of action links to be displayed. + * Default 'Edit', 'View'. + * @param int $userblog_id The site ID. + */ + $actions = apply_filters( 'ms_user_list_site_actions', $actions, $val->userblog_id ); + + $i=0; + $action_count = count( $actions ); + foreach ( $actions as $action => $link ) { + ++$i; + $sep = ( $i == $action_count ) ? '' : ' | '; + echo "$link$sep"; + } + echo '
'; + } + } + + /** + * Handles the default column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_User $user The current WP_User object. + * @param string $column_name The current column name. + */ + public function column_default( $user, $column_name ) { + /** This filter is documented in wp-admin/includes/class-wp-users-list-table.php */ + echo apply_filters( 'manage_users_custom_column', '', $column_name, $user->ID ); + } + + public function display_rows() { + foreach ( $this->items as $user ) { + $class = ''; + + $status_list = array( 'spam' => 'site-spammed', 'deleted' => 'site-deleted' ); + + foreach ( $status_list as $status => $col ) { + if ( $user->$status ) { + $class .= " $col"; + } + } + + ?> + + single_row_columns( $user ); ?> + + ID ) ) ); + + $actions = array(); + $actions['edit'] = '' . __( 'Edit' ) . ''; + + if ( current_user_can( 'delete_user', $user->ID ) && ! in_array( $user->user_login, $super_admins ) ) { + $actions['delete'] = '' . __( 'Delete' ) . ''; + } + + /** + * Filter the action links displayed under each user in the Network Admin Users list table. + * + * @since 3.2.0 + * + * @param array $actions An array of action links to be displayed. + * Default 'Edit', 'Delete'. + * @param WP_User $user WP_User object. + */ + $actions = apply_filters( 'ms_user_row_actions', $actions, $user ); + return $this->row_actions( $actions ); + } +} diff --git a/wp-admin/includes/class-wp-plugin-install-list-table.php b/wp-admin/includes/class-wp-plugin-install-list-table.php new file mode 100644 index 0000000000..45a5251285 --- /dev/null +++ b/wp-admin/includes/class-wp-plugin-install-list-table.php @@ -0,0 +1,551 @@ +no_update ) ) { + foreach ( $plugin_info->no_update as $plugin ) { + $slugs[] = $plugin->slug; + } + } + + if ( isset( $plugin_info->response ) ) { + foreach ( $plugin_info->response as $plugin ) { + $slugs[] = $plugin->slug; + } + } + + return $slugs; + } + + /** + * + * @global array $tabs + * @global string $tab + * @global int $paged + * @global string $type + * @global string $term + * @global string $wp_version + */ + public function prepare_items() { + include( ABSPATH . 'wp-admin/includes/plugin-install.php' ); + + global $tabs, $tab, $paged, $type, $term; + + wp_reset_vars( array( 'tab' ) ); + + $paged = $this->get_pagenum(); + + $per_page = 30; + + // These are the tabs which are shown on the page + $tabs = array(); + + if ( 'search' == $tab ) + $tabs['search'] = __( 'Search Results' ); + $tabs['featured'] = _x( 'Featured', 'Plugin Installer' ); + $tabs['popular'] = _x( 'Popular', 'Plugin Installer' ); + $tabs['recommended'] = _x( 'Recommended', 'Plugin Installer' ); + $tabs['favorites'] = _x( 'Favorites', 'Plugin Installer' ); + if ( $tab === 'beta' || false !== strpos( $GLOBALS['wp_version'], '-' ) ) { + $tabs['beta'] = _x( 'Beta Testing', 'Plugin Installer' ); + } + if ( current_user_can( 'upload_plugins' ) ) { + // No longer a real tab. Here for filter compatibility. + // Gets skipped in get_views(). + $tabs['upload'] = __( 'Upload Plugin' ); + } + + $nonmenu_tabs = array( 'plugin-information' ); // Valid actions to perform which do not have a Menu item. + + /** + * Filter the tabs shown on the Plugin Install screen. + * + * @since 2.7.0 + * + * @param array $tabs The tabs shown on the Plugin Install screen. Defaults include 'featured', 'popular', + * 'recommended', 'favorites', and 'upload'. + */ + $tabs = apply_filters( 'install_plugins_tabs', $tabs ); + + /** + * Filter tabs not associated with a menu item on the Plugin Install screen. + * + * @since 2.7.0 + * + * @param array $nonmenu_tabs The tabs that don't have a Menu item on the Plugin Install screen. + */ + $nonmenu_tabs = apply_filters( 'install_plugins_nonmenu_tabs', $nonmenu_tabs ); + + // If a non-valid menu tab has been selected, And it's not a non-menu action. + if ( empty( $tab ) || ( !isset( $tabs[ $tab ] ) && !in_array( $tab, (array) $nonmenu_tabs ) ) ) + $tab = key( $tabs ); + + $args = array( + 'page' => $paged, + 'per_page' => $per_page, + 'fields' => array( + 'last_updated' => true, + 'icons' => true, + 'active_installs' => true + ), + // Send the locale and installed plugin slugs to the API so it can provide context-sensitive results. + 'locale' => get_locale(), + 'installed_plugins' => $this->get_installed_plugin_slugs(), + ); + + switch ( $tab ) { + case 'search': + $type = isset( $_REQUEST['type'] ) ? wp_unslash( $_REQUEST['type'] ) : 'term'; + $term = isset( $_REQUEST['s'] ) ? wp_unslash( $_REQUEST['s'] ) : ''; + + switch ( $type ) { + case 'tag': + $args['tag'] = sanitize_title_with_dashes( $term ); + break; + case 'term': + $args['search'] = $term; + break; + case 'author': + $args['author'] = $term; + break; + } + + break; + + case 'featured': + $args['fields']['group'] = true; + $this->orderby = 'group'; + // No break! + case 'popular': + case 'new': + case 'beta': + case 'recommended': + $args['browse'] = $tab; + break; + + case 'favorites': + $user = isset( $_GET['user'] ) ? wp_unslash( $_GET['user'] ) : get_user_option( 'wporg_favorites' ); + update_user_meta( get_current_user_id(), 'wporg_favorites', $user ); + if ( $user ) + $args['user'] = $user; + else + $args = false; + + add_action( 'install_plugins_favorites', 'install_plugins_favorites_form', 9, 0 ); + break; + + default: + $args = false; + break; + } + + /** + * Filter API request arguments for each Plugin Install screen tab. + * + * The dynamic portion of the hook name, `$tab`, refers to the plugin install tabs. + * Default tabs include 'featured', 'popular', 'recommended', 'favorites', and 'upload'. + * + * @since 3.7.0 + * + * @param array|bool $args Plugin Install API arguments. + */ + $args = apply_filters( "install_plugins_table_api_args_$tab", $args ); + + if ( !$args ) + return; + + $api = plugins_api( 'query_plugins', $args ); + + if ( is_wp_error( $api ) ) { + $this->error = $api; + return; + } + + $this->items = $api->plugins; + + if ( $this->orderby ) { + uasort( $this->items, array( $this, 'order_callback' ) ); + } + + $this->set_pagination_args( array( + 'total_items' => $api->info['results'], + 'per_page' => $args['per_page'], + ) ); + + if ( isset( $api->info['groups'] ) ) { + $this->groups = $api->info['groups']; + } + } + + /** + * @access public + */ + public function no_items() { + if ( isset( $this->error ) ) { + $message = $this->error->get_error_message() . '

' . __( 'Try again' ) . '

'; + } else { + $message = __( 'No plugins match your request.' ); + } + echo '
' . $message . '
'; + } + + /** + * + * @global array $tabs + * @global string $tab + * + * @return array + */ + protected function get_views() { + global $tabs, $tab; + + $display_tabs = array(); + foreach ( (array) $tabs as $action => $text ) { + $class = ( $action == $tab ) ? ' current' : ''; + $href = self_admin_url('plugin-install.php?tab=' . $action); + $display_tabs['plugin-install-'.$action] = "$text"; + } + // No longer a real tab. + unset( $display_tabs['plugin-install-upload'] ); + + return $display_tabs; + } + + /** + * Override parent views so we can use the filter bar display. + */ + public function views() { + $views = $this->get_views(); + + /** This filter is documented in wp-admin/inclues/class-wp-list-table.php */ + $views = apply_filters( "views_{$this->screen->id}", $views ); + +?> +
+ + + +
+_args['singular']; + + $data_attr = ''; + + if ( $singular ) { + $data_attr = " data-wp-lists='list:$singular'"; + } + + $this->display_tablenav( 'top' ); + +?> +
+ +
> + display_rows_or_placeholder(); ?> +
+
+display_tablenav( 'bottom' ); + } + + /** + * @global string $tab + * + * @param string $which + */ + protected function display_tablenav( $which ) { + if ( $GLOBALS['tab'] === 'featured' ) { + return; + } + + if ( 'top' == $which ) { + wp_referer_field(); + ?> +
+
+ +
+ pagination( $which ); ?> +
+
+ +
+ pagination( $which ); ?> +
+
+ _args['plural'] ); + } + + /** + * @return array + */ + public function get_columns() { + return array(); + } + + /** + * @param object $plugin_a + * @param object $plugin_b + * @return int + */ + private function order_callback( $plugin_a, $plugin_b ) { + $orderby = $this->orderby; + if ( ! isset( $plugin_a->$orderby, $plugin_b->$orderby ) ) { + return 0; + } + + $a = $plugin_a->$orderby; + $b = $plugin_b->$orderby; + + if ( $a == $b ) { + return 0; + } + + if ( 'DESC' == $this->order ) { + return ( $a < $b ) ? 1 : -1; + } else { + return ( $a < $b ) ? -1 : 1; + } + } + + /** + * @global string $wp_version + */ + public function display_rows() { + $plugins_allowedtags = array( + 'a' => array( 'href' => array(),'title' => array(), 'target' => array() ), + 'abbr' => array( 'title' => array() ),'acronym' => array( 'title' => array() ), + 'code' => array(), 'pre' => array(), 'em' => array(),'strong' => array(), + 'ul' => array(), 'ol' => array(), 'li' => array(), 'p' => array(), 'br' => array() + ); + + $plugins_group_titles = array( + 'Performance' => _x( 'Performance', 'Plugin installer group title' ), + 'Social' => _x( 'Social', 'Plugin installer group title' ), + 'Tools' => _x( 'Tools', 'Plugin installer group title' ), + ); + + $group = null; + + foreach ( (array) $this->items as $plugin ) { + if ( is_object( $plugin ) ) { + $plugin = (array) $plugin; + } + + // Display the group heading if there is one + if ( isset( $plugin['group'] ) && $plugin['group'] != $group ) { + if ( isset( $this->groups[ $plugin['group'] ] ) ) { + $group_name = $this->groups[ $plugin['group'] ]; + if ( isset( $plugins_group_titles[ $group_name ] ) ) { + $group_name = $plugins_group_titles[ $group_name ]; + } + } else { + $group_name = $plugin['group']; + } + + // Starting a new group, close off the divs of the last one + if ( ! empty( $group ) ) { + echo '
'; + } + + echo '

' . esc_html( $group_name ) . '

'; + // needs an extra wrapping div for nth-child selectors to work + echo '
'; + + $group = $plugin['group']; + } + $title = wp_kses( $plugin['name'], $plugins_allowedtags ); + + // Remove any HTML from the description. + $description = strip_tags( $plugin['short_description'] ); + $version = wp_kses( $plugin['version'], $plugins_allowedtags ); + + $name = strip_tags( $title . ' ' . $version ); + + $author = wp_kses( $plugin['author'], $plugins_allowedtags ); + if ( ! empty( $author ) ) { + $author = ' ' . sprintf( __( 'By %s' ), $author ) . ''; + } + + $action_links = array(); + + if ( current_user_can( 'install_plugins' ) || current_user_can( 'update_plugins' ) ) { + $status = install_plugin_install_status( $plugin ); + + switch ( $status['status'] ) { + case 'install': + if ( $status['url'] ) { + /* translators: 1: Plugin name and version. */ + $action_links[] = '' . __( 'Install Now' ) . ''; + } + + break; + case 'update_available': + if ( $status['url'] ) { + /* translators: 1: Plugin name and version */ + $action_links[] = '' . __( 'Update Now' ) . ''; + } + + break; + case 'latest_installed': + case 'newer_installed': + $action_links[] = '' . _x( 'Installed', 'plugin' ) . ''; + break; + } + } + + $details_link = self_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $plugin['slug'] . + '&TB_iframe=true&width=600&height=550' ); + + /* translators: 1: Plugin name and version. */ + $action_links[] = '' . __( 'More Details' ) . ''; + + if ( !empty( $plugin['icons']['svg'] ) ) { + $plugin_icon_url = $plugin['icons']['svg']; + } elseif ( !empty( $plugin['icons']['2x'] ) ) { + $plugin_icon_url = $plugin['icons']['2x']; + } elseif ( !empty( $plugin['icons']['1x'] ) ) { + $plugin_icon_url = $plugin['icons']['1x']; + } else { + $plugin_icon_url = $plugin['icons']['default']; + } + + /** + * Filter the install action links for a plugin. + * + * @since 2.7.0 + * + * @param array $action_links An array of plugin action hyperlinks. Defaults are links to Details and Install Now. + * @param array $plugin The plugin currently being listed. + */ + $action_links = apply_filters( 'plugin_install_action_links', $action_links, $plugin ); + + $date_format = __( 'M j, Y @ H:i' ); + $last_updated_timestamp = strtotime( $plugin['last_updated'] ); + ?> +
+
+ +
+

+
+ +
+

+

+
+
+
+
+ $plugin['rating'], 'type' => 'percent', 'number' => $plugin['num_ratings'] ) ); ?> + () +
+
+ + + +
+
+ = 1000000 ) { + $active_installs_text = _x( '1+ Million', 'Active plugin installs' ); + } else { + $active_installs_text = number_format_i18n( $plugin['active_installs'] ) . '+'; + } + printf( __( '%s Active Installs' ), $active_installs_text ); + ?> +
+
+ ' ) ) { + echo '' . __( 'Untested with your version of WordPress' ) . ''; + } elseif ( ! empty( $plugin['requires'] ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $plugin['requires'] ) ), $plugin['requires'], '<' ) ) { + echo '' . __( 'Incompatible with your version of WordPress' ) . ''; + } else { + echo '' . __( 'Compatible with your version of WordPress' ) . ''; + } + ?> +
+
+
+
'; + } + } +} diff --git a/wp-admin/includes/class-wp-plugins-list-table.php b/wp-admin/includes/class-wp-plugins-list-table.php new file mode 100644 index 0000000000..781330cbdf --- /dev/null +++ b/wp-admin/includes/class-wp-plugins-list-table.php @@ -0,0 +1,730 @@ + 'plugins', + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, + ) ); + + $status = 'all'; + if ( isset( $_REQUEST['plugin_status'] ) && in_array( $_REQUEST['plugin_status'], array( 'active', 'inactive', 'recently_activated', 'upgrade', 'mustuse', 'dropins', 'search' ) ) ) + $status = $_REQUEST['plugin_status']; + + if ( isset($_REQUEST['s']) ) + $_SERVER['REQUEST_URI'] = add_query_arg('s', wp_unslash($_REQUEST['s']) ); + + $page = $this->get_pagenum(); + } + + /** + * @return array + */ + protected function get_table_classes() { + return array( 'widefat', $this->_args['plural'] ); + } + + /** + * @return bool + */ + public function ajax_user_can() { + return current_user_can('activate_plugins'); + } + + /** + * + * @global string $status + * @global type $plugins + * @global array $totals + * @global int $page + * @global string $orderby + * @global string $order + * @global string $s + */ + public function prepare_items() { + global $status, $plugins, $totals, $page, $orderby, $order, $s; + + wp_reset_vars( array( 'orderby', 'order', 's' ) ); + + /** + * Filter the full array of plugins to list in the Plugins list table. + * + * @since 3.0.0 + * + * @see get_plugins() + * + * @param array $plugins An array of plugins to display in the list table. + */ + $plugins = array( + 'all' => apply_filters( 'all_plugins', get_plugins() ), + 'search' => array(), + 'active' => array(), + 'inactive' => array(), + 'recently_activated' => array(), + 'upgrade' => array(), + 'mustuse' => array(), + 'dropins' => array() + ); + + $screen = $this->screen; + + if ( ! is_multisite() || ( $screen->in_admin( 'network' ) && current_user_can( 'manage_network_plugins' ) ) ) { + + /** + * Filter whether to display the advanced plugins list table. + * + * There are two types of advanced plugins - must-use and drop-ins - + * which can be used in a single site or Multisite network. + * + * The $type parameter allows you to differentiate between the type of advanced + * plugins to filter the display of. Contexts include 'mustuse' and 'dropins'. + * + * @since 3.0.0 + * + * @param bool $show Whether to show the advanced plugins for the specified + * plugin type. Default true. + * @param string $type The plugin type. Accepts 'mustuse', 'dropins'. + */ + if ( apply_filters( 'show_advanced_plugins', true, 'mustuse' ) ) { + $plugins['mustuse'] = get_mu_plugins(); + } + + /** This action is documented in wp-admin/includes/class-wp-plugins-list-table.php */ + if ( apply_filters( 'show_advanced_plugins', true, 'dropins' ) ) + $plugins['dropins'] = get_dropins(); + + if ( current_user_can( 'update_plugins' ) ) { + $current = get_site_transient( 'update_plugins' ); + foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) { + if ( isset( $current->response[ $plugin_file ] ) ) { + $plugins['all'][ $plugin_file ]['update'] = true; + $plugins['upgrade'][ $plugin_file ] = $plugins['all'][ $plugin_file ]; + } + } + } + } + + set_transient( 'plugin_slugs', array_keys( $plugins['all'] ), DAY_IN_SECONDS ); + + if ( ! $screen->in_admin( 'network' ) ) { + $recently_activated = get_option( 'recently_activated', array() ); + + foreach ( $recently_activated as $key => $time ) + if ( $time + WEEK_IN_SECONDS < time() ) + unset( $recently_activated[$key] ); + update_option( 'recently_activated', $recently_activated ); + } + + $plugin_info = get_site_transient( 'update_plugins' ); + + foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) { + // Extra info if known. array_merge() ensures $plugin_data has precedence if keys collide. + if ( isset( $plugin_info->response[ $plugin_file ] ) ) { + $plugins['all'][ $plugin_file ] = $plugin_data = array_merge( (array) $plugin_info->response[ $plugin_file ], $plugin_data ); + // Make sure that $plugins['upgrade'] also receives the extra info since it is used on ?plugin_status=upgrade + if ( isset( $plugins['upgrade'][ $plugin_file ] ) ) { + $plugins['upgrade'][ $plugin_file ] = $plugin_data = array_merge( (array) $plugin_info->response[ $plugin_file ], $plugin_data ); + } + + } elseif ( isset( $plugin_info->no_update[ $plugin_file ] ) ) { + $plugins['all'][ $plugin_file ] = $plugin_data = array_merge( (array) $plugin_info->no_update[ $plugin_file ], $plugin_data ); + // Make sure that $plugins['upgrade'] also receives the extra info since it is used on ?plugin_status=upgrade + if ( isset( $plugins['upgrade'][ $plugin_file ] ) ) { + $plugins['upgrade'][ $plugin_file ] = $plugin_data = array_merge( (array) $plugin_info->no_update[ $plugin_file ], $plugin_data ); + } + } + + // Filter into individual sections + if ( is_multisite() && ! $screen->in_admin( 'network' ) && is_network_only_plugin( $plugin_file ) && ! is_plugin_active( $plugin_file ) ) { + // On the non-network screen, filter out network-only plugins as long as they're not individually activated + unset( $plugins['all'][ $plugin_file ] ); + } elseif ( ! $screen->in_admin( 'network' ) && is_plugin_active_for_network( $plugin_file ) ) { + // On the non-network screen, filter out network activated plugins + unset( $plugins['all'][ $plugin_file ] ); + } elseif ( ( ! $screen->in_admin( 'network' ) && is_plugin_active( $plugin_file ) ) + || ( $screen->in_admin( 'network' ) && is_plugin_active_for_network( $plugin_file ) ) ) { + // On the non-network screen, populate the active list with plugins that are individually activated + // On the network-admin screen, populate the active list with plugins that are network activated + $plugins['active'][ $plugin_file ] = $plugin_data; + } else { + if ( ! $screen->in_admin( 'network' ) && isset( $recently_activated[ $plugin_file ] ) ) { + // On the non-network screen, populate the recently activated list with plugins that have been recently activated + $plugins['recently_activated'][ $plugin_file ] = $plugin_data; + } + // Populate the inactive list with plugins that aren't activated + $plugins['inactive'][ $plugin_file ] = $plugin_data; + } + } + + if ( $s ) { + $status = 'search'; + $plugins['search'] = array_filter( $plugins['all'], array( $this, '_search_callback' ) ); + } + + $totals = array(); + foreach ( $plugins as $type => $list ) + $totals[ $type ] = count( $list ); + + if ( empty( $plugins[ $status ] ) && !in_array( $status, array( 'all', 'search' ) ) ) + $status = 'all'; + + $this->items = array(); + foreach ( $plugins[ $status ] as $plugin_file => $plugin_data ) { + // Translate, Don't Apply Markup, Sanitize HTML + $this->items[$plugin_file] = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, false, true ); + } + + $total_this_page = $totals[ $status ]; + + if ( ! $orderby ) { + $orderby = 'Name'; + } else { + $orderby = ucfirst( $orderby ); + } + + $order = strtoupper( $order ); + + uasort( $this->items, array( $this, '_order_callback' ) ); + + $plugins_per_page = $this->get_items_per_page( str_replace( '-', '_', $screen->id . '_per_page' ), 999 ); + + $start = ( $page - 1 ) * $plugins_per_page; + + if ( $total_this_page > $plugins_per_page ) + $this->items = array_slice( $this->items, $start, $plugins_per_page ); + + $this->set_pagination_args( array( + 'total_items' => $total_this_page, + 'per_page' => $plugins_per_page, + ) ); + } + + /** + * @staticvar string $term + * @param array $plugin + * @return bool + */ + public function _search_callback( $plugin ) { + static $term = null; + if ( is_null( $term ) ) + $term = wp_unslash( $_REQUEST['s'] ); + + foreach ( $plugin as $value ) { + if ( false !== stripos( strip_tags( $value ), $term ) ) { + return true; + } + } + + return false; + } + + /** + * @global string $orderby + * @global string $order + * @param array $plugin_a + * @param array $plugin_b + * @return int + */ + public function _order_callback( $plugin_a, $plugin_b ) { + global $orderby, $order; + + $a = $plugin_a[$orderby]; + $b = $plugin_b[$orderby]; + + if ( $a == $b ) + return 0; + + if ( 'DESC' == $order ) { + return strcasecmp( $b, $a ); + } else { + return strcasecmp( $a, $b ); + } + } + + /** + * + * @global array $plugins + */ + public function no_items() { + global $plugins; + + if ( !empty( $plugins['all'] ) ) + _e( 'No plugins found.' ); + else + _e( 'You do not appear to have any plugins available at this time.' ); + } + + /** + * + * @global string $status + * @return array + */ + public function get_columns() { + global $status; + + return array( + 'cb' => !in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : '', + 'name' => __( 'Plugin' ), + 'description' => __( 'Description' ), + ); + } + + /** + * @return array + */ + protected function get_sortable_columns() { + return array(); + } + + /** + * + * @global array $totals + * @global string $status + * @return array + */ + protected function get_views() { + global $totals, $status; + + $status_links = array(); + foreach ( $totals as $type => $count ) { + if ( !$count ) + continue; + + switch ( $type ) { + case 'all': + $text = _nx( 'All (%s)', 'All (%s)', $count, 'plugins' ); + break; + case 'active': + $text = _n( 'Active (%s)', 'Active (%s)', $count ); + break; + case 'recently_activated': + $text = _n( 'Recently Active (%s)', 'Recently Active (%s)', $count ); + break; + case 'inactive': + $text = _n( 'Inactive (%s)', 'Inactive (%s)', $count ); + break; + case 'mustuse': + $text = _n( 'Must-Use (%s)', 'Must-Use (%s)', $count ); + break; + case 'dropins': + $text = _n( 'Drop-ins (%s)', 'Drop-ins (%s)', $count ); + break; + case 'upgrade': + $text = _n( 'Update Available (%s)', 'Update Available (%s)', $count ); + break; + } + + if ( 'search' != $type ) { + $status_links[$type] = sprintf( "%s", + add_query_arg('plugin_status', $type, 'plugins.php'), + ( $type == $status ) ? ' class="current"' : '', + sprintf( $text, number_format_i18n( $count ) ) + ); + } + } + + return $status_links; + } + + /** + * + * @global string $status + * @return array + */ + protected function get_bulk_actions() { + global $status; + + $actions = array(); + + if ( 'active' != $status ) + $actions['activate-selected'] = $this->screen->in_admin( 'network' ) ? __( 'Network Activate' ) : __( 'Activate' ); + + if ( 'inactive' != $status && 'recent' != $status ) + $actions['deactivate-selected'] = $this->screen->in_admin( 'network' ) ? __( 'Network Deactivate' ) : __( 'Deactivate' ); + + if ( !is_multisite() || $this->screen->in_admin( 'network' ) ) { + if ( current_user_can( 'update_plugins' ) ) + $actions['update-selected'] = __( 'Update' ); + if ( current_user_can( 'delete_plugins' ) && ( 'active' != $status ) ) + $actions['delete-selected'] = __( 'Delete' ); + } + + return $actions; + } + + /** + * @global string $status + * @param string $which + */ + public function bulk_actions( $which = '' ) { + global $status; + + if ( in_array( $status, array( 'mustuse', 'dropins' ) ) ) + return; + + parent::bulk_actions( $which ); + } + + /** + * @global string $status + * @param string $which + */ + protected function extra_tablenav( $which ) { + global $status; + + if ( ! in_array($status, array('recently_activated', 'mustuse', 'dropins') ) ) + return; + + echo '
'; + + if ( ! $this->screen->in_admin( 'network' ) && 'recently_activated' == $status ) + submit_button( __( 'Clear List' ), 'button', 'clear-recent-list', false ); + elseif ( 'top' == $which && 'mustuse' == $status ) + echo '

' . sprintf( __( 'Files in the %s directory are executed automatically.' ), str_replace( ABSPATH, '/', WPMU_PLUGIN_DIR ) ) . '

'; + elseif ( 'top' == $which && 'dropins' == $status ) + echo '

' . sprintf( __( 'Drop-ins are advanced plugins in the %s directory that replace WordPress functionality when present.' ), str_replace( ABSPATH, '', WP_CONTENT_DIR ) ) . '

'; + + echo '
'; + } + + /** + * @return string + */ + public function current_action() { + if ( isset($_POST['clear-recent-list']) ) + return 'clear-recent-list'; + + return parent::current_action(); + } + + /** + * + * @global string $status + */ + public function display_rows() { + global $status; + + if ( is_multisite() && ! $this->screen->in_admin( 'network' ) && in_array( $status, array( 'mustuse', 'dropins' ) ) ) + return; + + foreach ( $this->items as $plugin_file => $plugin_data ) + $this->single_row( array( $plugin_file, $plugin_data ) ); + } + + /** + * @global string $status + * @global int $page + * @global string $s + * @global array $totals + * + * @param array $item + */ + public function single_row( $item ) { + global $status, $page, $s, $totals; + + list( $plugin_file, $plugin_data ) = $item; + $context = $status; + $screen = $this->screen; + + // Pre-order. + $actions = array( + 'deactivate' => '', + 'activate' => '', + 'details' => '', + 'edit' => '', + 'delete' => '', + ); + + if ( 'mustuse' == $context ) { + $is_active = true; + } elseif ( 'dropins' == $context ) { + $dropins = _get_dropins(); + $plugin_name = $plugin_file; + if ( $plugin_file != $plugin_data['Name'] ) + $plugin_name .= '
' . $plugin_data['Name']; + if ( true === ( $dropins[ $plugin_file ][1] ) ) { // Doesn't require a constant + $is_active = true; + $description = '

' . $dropins[ $plugin_file ][0] . '

'; + } elseif ( defined( $dropins[ $plugin_file ][1] ) && constant( $dropins[ $plugin_file ][1] ) ) { // Constant is true + $is_active = true; + $description = '

' . $dropins[ $plugin_file ][0] . '

'; + } else { + $is_active = false; + $description = '

' . $dropins[ $plugin_file ][0] . ' ' . __('Inactive:') . ' ' . sprintf( __( 'Requires %s in wp-config.php.' ), "define('" . $dropins[ $plugin_file ][1] . "', true);" ) . '

'; + } + if ( $plugin_data['Description'] ) + $description .= '

' . $plugin_data['Description'] . '

'; + } else { + if ( $screen->in_admin( 'network' ) ) + $is_active = is_plugin_active_for_network( $plugin_file ); + else + $is_active = is_plugin_active( $plugin_file ); + + if ( $screen->in_admin( 'network' ) ) { + if ( $is_active ) { + if ( current_user_can( 'manage_network_plugins' ) ) { + /* translators: %s: plugin name */ + $actions['deactivate'] = '' . __( 'Network Deactivate' ) . ''; + } + } else { + if ( current_user_can( 'manage_network_plugins' ) ) { + /* translators: %s: plugin name */ + $actions['activate'] = '' . __( 'Network Activate' ) . ''; + } + if ( current_user_can( 'delete_plugins' ) && ! is_plugin_active( $plugin_file ) ) { + /* translators: %s: plugin name */ + $actions['delete'] = '' . __( 'Delete' ) . ''; + } + } + } else { + if ( $is_active ) { + /* translators: %s: plugin name */ + $actions['deactivate'] = '' . __( 'Deactivate' ) . ''; + } else { + /* translators: %s: plugin name */ + $actions['activate'] = '' . __( 'Activate' ) . ''; + + if ( ! is_multisite() && current_user_can( 'delete_plugins' ) ) { + /* translators: %s: plugin name */ + $actions['delete'] = '' . __( 'Delete' ) . ''; + } + } // end if $is_active + + } // end if $screen->in_admin( 'network' ) + + if ( ( ! is_multisite() || $screen->in_admin( 'network' ) ) && current_user_can( 'edit_plugins' ) && is_writable( WP_PLUGIN_DIR . '/' . $plugin_file ) ) { + /* translators: %s: plugin name */ + $actions['edit'] = '' . __( 'Edit' ) . ''; + } + } // end if $context + + $prefix = $screen->in_admin( 'network' ) ? 'network_admin_' : ''; + + /** + * Filter the action links displayed for each plugin in the Plugins list table. + * + * The dynamic portion of the hook name, `$prefix`, refers to the context the + * action links are displayed in. The 'network_admin_' prefix is used if the + * current screen is the Network plugins list table. The prefix is empty ('') + * if the current screen is the site plugins list table. + * + * The default action links for the Network plugins list table include + * 'Network Activate', 'Network Deactivate', 'Edit', and 'Delete'. + * + * The default action links for the site plugins list table include + * 'Activate', 'Deactivate', and 'Edit', for a network site, and + * 'Activate', 'Deactivate', 'Edit', and 'Delete' for a single site. + * + * @since 2.5.0 + * + * @param array $actions An array of plugin action links. + * @param string $plugin_file Path to the plugin file. + * @param array $plugin_data An array of plugin data. + * @param string $context The plugin context. Defaults are 'All', 'Active', + * 'Inactive', 'Recently Activated', 'Upgrade', + * 'Must-Use', 'Drop-ins', 'Search'. + */ + $actions = apply_filters( $prefix . 'plugin_action_links', array_filter( $actions ), $plugin_file, $plugin_data, $context ); + + /** + * Filter the list of action links displayed for a specific plugin. + * + * The first dynamic portion of the hook name, $prefix, refers to the context + * the action links are displayed in. The 'network_admin_' prefix is used if the + * current screen is the Network plugins list table. The prefix is empty ('') + * if the current screen is the site plugins list table. + * + * The second dynamic portion of the hook name, $plugin_file, refers to the path + * to the plugin file, relative to the plugins directory. + * + * @since 2.7.0 + * + * @param array $actions An array of plugin action links. + * @param string $plugin_file Path to the plugin file. + * @param array $plugin_data An array of plugin data. + * @param string $context The plugin context. Defaults are 'All', 'Active', + * 'Inactive', 'Recently Activated', 'Upgrade', + * 'Must-Use', 'Drop-ins', 'Search'. + */ + $actions = apply_filters( $prefix . "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context ); + + $class = $is_active ? 'active' : 'inactive'; + $checkbox_id = "checkbox_" . md5($plugin_data['Name']); + if ( in_array( $status, array( 'mustuse', 'dropins' ) ) ) { + $checkbox = ''; + } else { + $checkbox = "" + . ""; + } + if ( 'dropins' != $context ) { + $description = '

' . ( $plugin_data['Description'] ? $plugin_data['Description'] : ' ' ) . '

'; + $plugin_name = $plugin_data['Name']; + } + + $id = sanitize_title( $plugin_name ); + if ( ! empty( $totals['upgrade'] ) && ! empty( $plugin_data['update'] ) ) + $class .= ' update'; + + $plugin_slug = ( isset( $plugin_data['slug'] ) ) ? $plugin_data['slug'] : ''; + printf( "", + $id, + $class, + $plugin_slug + ); + + list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $extra_classes = ''; + if ( in_array( $column_name, $hidden ) ) { + $extra_classes = ' hidden'; + } + + switch ( $column_name ) { + case 'cb': + echo "$checkbox"; + break; + case 'name': + echo "$plugin_name"; + echo $this->row_actions( $actions, true ); + echo ""; + break; + case 'description': + $classes = 'column-description desc'; + + echo " +
$description
+
"; + + $plugin_meta = array(); + if ( !empty( $plugin_data['Version'] ) ) + $plugin_meta[] = sprintf( __( 'Version %s' ), $plugin_data['Version'] ); + if ( !empty( $plugin_data['Author'] ) ) { + $author = $plugin_data['Author']; + if ( !empty( $plugin_data['AuthorURI'] ) ) + $author = '' . $plugin_data['Author'] . ''; + $plugin_meta[] = sprintf( __( 'By %s' ), $author ); + } + + // Details link using API info, if available + if ( isset( $plugin_data['slug'] ) && current_user_can( 'install_plugins' ) ) { + $plugin_meta[] = sprintf( '%s', + esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $plugin_data['slug'] . + '&TB_iframe=true&width=600&height=550' ) ), + esc_attr( sprintf( __( 'More information about %s' ), $plugin_name ) ), + esc_attr( $plugin_name ), + __( 'View details' ) + ); + } elseif ( ! empty( $plugin_data['PluginURI'] ) ) { + $plugin_meta[] = sprintf( '%s', + esc_url( $plugin_data['PluginURI'] ), + __( 'Visit plugin site' ) + ); + } + + /** + * Filter the array of row meta for each plugin in the Plugins list table. + * + * @since 2.8.0 + * + * @param array $plugin_meta An array of the plugin's metadata, + * including the version, author, + * author URI, and plugin URI. + * @param string $plugin_file Path to the plugin file, relative to the plugins directory. + * @param array $plugin_data An array of plugin data. + * @param string $status Status of the plugin. Defaults are 'All', 'Active', + * 'Inactive', 'Recently Activated', 'Upgrade', 'Must-Use', + * 'Drop-ins', 'Search'. + */ + $plugin_meta = apply_filters( 'plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $status ); + echo implode( ' | ', $plugin_meta ); + + echo "
"; + break; + default: + $classes = "$column_name column-$column_name$class"; + + echo ""; + + /** + * Fires inside each custom column of the Plugins list table. + * + * @since 3.1.0 + * + * @param string $column_name Name of the column. + * @param string $plugin_file Path to the plugin file. + * @param array $plugin_data An array of plugin data. + */ + do_action( 'manage_plugins_custom_column', $column_name, $plugin_file, $plugin_data ); + + echo ""; + } + } + + echo ""; + + /** + * Fires after each row in the Plugins list table. + * + * @since 2.3.0 + * + * @param string $plugin_file Path to the plugin file, relative to the plugins directory. + * @param array $plugin_data An array of plugin data. + * @param string $status Status of the plugin. Defaults are 'All', 'Active', + * 'Inactive', 'Recently Activated', 'Upgrade', 'Must-Use', + * 'Drop-ins', 'Search'. + */ + do_action( 'after_plugin_row', $plugin_file, $plugin_data, $status ); + + /** + * Fires after each specific row in the Plugins list table. + * + * The dynamic portion of the hook name, `$plugin_file`, refers to the path + * to the plugin file, relative to the plugins directory. + * + * @since 2.7.0 + * + * @param string $plugin_file Path to the plugin file, relative to the plugins directory. + * @param array $plugin_data An array of plugin data. + * @param string $status Status of the plugin. Defaults are 'All', 'Active', + * 'Inactive', 'Recently Activated', 'Upgrade', 'Must-Use', + * 'Drop-ins', 'Search'. + */ + do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status ); + } + + /** + * Gets the name of the primary column for this specific list table. + * + * @since 4.3.0 + * @access protected + * + * @return string Unalterable name for the primary column, in this case, 'name'. + */ + protected function get_primary_column_name() { + return 'name'; + } +} diff --git a/wp-admin/includes/class-wp-posts-list-table.php b/wp-admin/includes/class-wp-posts-list-table.php new file mode 100644 index 0000000000..04639347d2 --- /dev/null +++ b/wp-admin/includes/class-wp-posts-list-table.php @@ -0,0 +1,1550 @@ + 'posts', + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, + ) ); + + $post_type = $this->screen->post_type; + $post_type_object = get_post_type_object( $post_type ); + + if ( !current_user_can( $post_type_object->cap->edit_others_posts ) ) { + $exclude_states = get_post_stati( array( 'show_in_admin_all_list' => false ) ); + $this->user_posts_count = $wpdb->get_var( $wpdb->prepare( " + SELECT COUNT( 1 ) FROM $wpdb->posts + WHERE post_type = %s AND post_status NOT IN ( '" . implode( "','", $exclude_states ) . "' ) + AND post_author = %d + ", $post_type, get_current_user_id() ) ); + + if ( $this->user_posts_count && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['all_posts'] ) && empty( $_REQUEST['author'] ) && empty( $_REQUEST['show_sticky'] ) ) + $_GET['author'] = get_current_user_id(); + } + + if ( 'post' == $post_type && $sticky_posts = get_option( 'sticky_posts' ) ) { + $sticky_posts = implode( ', ', array_map( 'absint', (array) $sticky_posts ) ); + $this->sticky_posts_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT( 1 ) FROM $wpdb->posts WHERE post_type = %s AND post_status NOT IN ('trash', 'auto-draft') AND ID IN ($sticky_posts)", $post_type ) ); + } + } + + /** + * Sets whether the table layout should be hierarchical or not. + * + * @since 4.2.0 + * + * @param bool $display Whether the table layout should be hierarchical. + */ + public function set_hierarchical_display( $display ) { + $this->hierarchical_display = $display; + } + + /** + * + * @return bool + */ + public function ajax_user_can() { + return current_user_can( get_post_type_object( $this->screen->post_type )->cap->edit_posts ); + } + + /** + * + * @global array $avail_post_stati + * @global WP_Query $wp_query + * @global int $per_page + * @global string $mode + */ + public function prepare_items() { + global $avail_post_stati, $wp_query, $per_page, $mode; + + $avail_post_stati = wp_edit_posts_query(); + + $this->set_hierarchical_display( is_post_type_hierarchical( $this->screen->post_type ) && 'menu_order title' == $wp_query->query['orderby'] ); + + $total_items = $this->hierarchical_display ? $wp_query->post_count : $wp_query->found_posts; + + $post_type = $this->screen->post_type; + $per_page = $this->get_items_per_page( 'edit_' . $post_type . '_per_page' ); + + /** This filter is documented in wp-admin/includes/post.php */ + $per_page = apply_filters( 'edit_posts_per_page', $per_page, $post_type ); + + if ( $this->hierarchical_display ) + $total_pages = ceil( $total_items / $per_page ); + else + $total_pages = $wp_query->max_num_pages; + + if ( ! empty( $_REQUEST['mode'] ) ) { + $mode = $_REQUEST['mode'] == 'excerpt' ? 'excerpt' : 'list'; + set_user_setting ( 'posts_list_mode', $mode ); + } else { + $mode = get_user_setting ( 'posts_list_mode', 'list' ); + } + + $this->is_trash = isset( $_REQUEST['post_status'] ) && $_REQUEST['post_status'] == 'trash'; + + $this->set_pagination_args( array( + 'total_items' => $total_items, + 'total_pages' => $total_pages, + 'per_page' => $per_page + ) ); + } + + /** + * + * @return bool + */ + public function has_items() { + return have_posts(); + } + + /** + * @access public + */ + public function no_items() { + if ( isset( $_REQUEST['post_status'] ) && 'trash' == $_REQUEST['post_status'] ) + echo get_post_type_object( $this->screen->post_type )->labels->not_found_in_trash; + else + echo get_post_type_object( $this->screen->post_type )->labels->not_found; + } + + /** + * Determine if the current view is the "All" view. + * + * @since 4.2.0 + * + * @return bool Whether the current view is the "All" view. + */ + protected function is_base_request() { + if ( empty( $_GET ) ) { + return true; + } elseif ( 1 === count( $_GET ) && ! empty( $_GET['post_type'] ) ) { + return $this->screen->post_type === $_GET['post_type']; + } + } + + /** + * + * @global array $locked_post_status This seems to be deprecated. + * @global array $avail_post_stati + * @return array + */ + protected function get_views() { + global $locked_post_status, $avail_post_stati; + + $post_type = $this->screen->post_type; + + if ( !empty($locked_post_status) ) + return array(); + + $status_links = array(); + $num_posts = wp_count_posts( $post_type, 'readable' ); + $class = ''; + $allposts = ''; + + $current_user_id = get_current_user_id(); + + if ( $this->user_posts_count ) { + if ( isset( $_GET['author'] ) && ( $_GET['author'] == $current_user_id ) ) + $class = ' class="current"'; + $status_links['mine'] = "" . sprintf( _nx( 'Mine (%s)', 'Mine (%s)', $this->user_posts_count, 'posts' ), number_format_i18n( $this->user_posts_count ) ) . ''; + $allposts = '&all_posts=1'; + $class = ''; + } + + $total_posts = array_sum( (array) $num_posts ); + + // Subtract post types that are not included in the admin all list. + foreach ( get_post_stati( array('show_in_admin_all_list' => false) ) as $state ) + $total_posts -= $num_posts->$state; + + if ( empty( $class ) && ( ( $this->is_base_request() && ! $this->user_posts_count ) || isset( $_REQUEST['all_posts'] ) ) ) { + $class = ' class="current"'; + } + + $all_inner_html = sprintf( + _nx( + 'All (%s)', + 'All (%s)', + $total_posts, + 'posts' + ), + number_format_i18n( $total_posts ) + ); + + $status_links['all'] = "" . $all_inner_html . ''; + + foreach ( get_post_stati(array('show_in_admin_status_list' => true), 'objects') as $status ) { + $class = ''; + + $status_name = $status->name; + + if ( !in_array( $status_name, $avail_post_stati ) ) + continue; + + if ( empty( $num_posts->$status_name ) ) + continue; + + if ( isset($_REQUEST['post_status']) && $status_name == $_REQUEST['post_status'] ) + $class = ' class="current"'; + + $status_links[$status_name] = "" . sprintf( translate_nooped_plural( $status->label_count, $num_posts->$status_name ), number_format_i18n( $num_posts->$status_name ) ) . ''; + } + + if ( ! empty( $this->sticky_posts_count ) ) { + $class = ! empty( $_REQUEST['show_sticky'] ) ? ' class="current"' : ''; + + $sticky_link = array( 'sticky' => "" . sprintf( _nx( 'Sticky (%s)', 'Sticky (%s)', $this->sticky_posts_count, 'posts' ), number_format_i18n( $this->sticky_posts_count ) ) . '' ); + + // Sticky comes after Publish, or if not listed, after All. + $split = 1 + array_search( ( isset( $status_links['publish'] ) ? 'publish' : 'all' ), array_keys( $status_links ) ); + $status_links = array_merge( array_slice( $status_links, 0, $split ), $sticky_link, array_slice( $status_links, $split ) ); + } + + return $status_links; + } + + /** + * + * @return array + */ + protected function get_bulk_actions() { + $actions = array(); + $post_type_obj = get_post_type_object( $this->screen->post_type ); + + if ( $this->is_trash ) { + $actions['untrash'] = __( 'Restore' ); + } else { + $actions['edit'] = __( 'Edit' ); + } + + if ( current_user_can( $post_type_obj->cap->delete_posts ) ) { + if ( $this->is_trash || ! EMPTY_TRASH_DAYS ) { + $actions['delete'] = __( 'Delete Permanently' ); + } else { + $actions['trash'] = __( 'Move to Trash' ); + } + } + + return $actions; + } + + /** + * @global int $cat + * @param string $which + */ + protected function extra_tablenav( $which ) { + global $cat; +?> +
+months_dropdown( $this->screen->post_type ); + + if ( is_object_in_taxonomy( $this->screen->post_type, 'category' ) ) { + $dropdown_options = array( + 'show_option_all' => __( 'All categories' ), + 'hide_empty' => 0, + 'hierarchical' => 1, + 'show_count' => 0, + 'orderby' => 'name', + 'selected' => $cat + ); + + echo ''; + wp_dropdown_categories( $dropdown_options ); + } + + /** + * Fires before the Filter button on the Posts and Pages list tables. + * + * The Filter button allows sorting by date and/or category on the + * Posts list table, and sorting by date on the Pages list table. + * + * @since 2.1.0 + */ + do_action( 'restrict_manage_posts' ); + + submit_button( __( 'Filter' ), 'button', 'filter_action', false, array( 'id' => 'post-query-submit' ) ); + } + + if ( $this->is_trash && current_user_can( get_post_type_object( $this->screen->post_type )->cap->edit_others_posts ) ) { + submit_button( __( 'Empty Trash' ), 'apply', 'delete_all', false ); + } +?> +
+screen->post_type ) ) + $this->view_switcher( $mode ); + } + + /** + * + * @return array + */ + protected function get_table_classes() { + return array( 'widefat', 'fixed', 'striped', is_post_type_hierarchical( $this->screen->post_type ) ? 'pages' : 'posts' ); + } + + /** + * + * @return array + */ + public function get_columns() { + $post_type = $this->screen->post_type; + + $posts_columns = array(); + + $posts_columns['cb'] = ''; + + /* translators: manage posts column name */ + $posts_columns['title'] = _x( 'Title', 'column name' ); + + if ( post_type_supports( $post_type, 'author' ) ) { + $posts_columns['author'] = __( 'Author' ); + } + + $taxonomies = get_object_taxonomies( $post_type, 'objects' ); + $taxonomies = wp_filter_object_list( $taxonomies, array( 'show_admin_column' => true ), 'and', 'name' ); + + /** + * Filter the taxonomy columns in the Posts list table. + * + * The dynamic portion of the hook name, `$post_type`, refers to the post + * type slug. + * + * @since 3.5.0 + * + * @param array $taxonomies Array of taxonomies to show columns for. + * @param string $post_type The post type. + */ + $taxonomies = apply_filters( "manage_taxonomies_for_{$post_type}_columns", $taxonomies, $post_type ); + $taxonomies = array_filter( $taxonomies, 'taxonomy_exists' ); + + foreach ( $taxonomies as $taxonomy ) { + if ( 'category' == $taxonomy ) + $column_key = 'categories'; + elseif ( 'post_tag' == $taxonomy ) + $column_key = 'tags'; + else + $column_key = 'taxonomy-' . $taxonomy; + + $posts_columns[ $column_key ] = get_taxonomy( $taxonomy )->labels->name; + } + + $post_status = !empty( $_REQUEST['post_status'] ) ? $_REQUEST['post_status'] : 'all'; + if ( post_type_supports( $post_type, 'comments' ) && !in_array( $post_status, array( 'pending', 'draft', 'future' ) ) ) + $posts_columns['comments'] = '' . __( 'Comments' ) . ''; + + $posts_columns['date'] = __( 'Date' ); + + if ( 'page' == $post_type ) { + + /** + * Filter the columns displayed in the Pages list table. + * + * @since 2.5.0 + * + * @param array $post_columns An array of column names. + */ + $posts_columns = apply_filters( 'manage_pages_columns', $posts_columns ); + } else { + + /** + * Filter the columns displayed in the Posts list table. + * + * @since 1.5.0 + * + * @param array $posts_columns An array of column names. + * @param string $post_type The post type slug. + */ + $posts_columns = apply_filters( 'manage_posts_columns', $posts_columns, $post_type ); + } + + /** + * Filter the columns displayed in the Posts list table for a specific post type. + * + * The dynamic portion of the hook name, `$post_type`, refers to the post type slug. + * + * @since 3.0.0 + * + * @param array $post_columns An array of column names. + */ + return apply_filters( "manage_{$post_type}_posts_columns", $posts_columns ); + } + + /** + * + * @return array + */ + protected function get_sortable_columns() { + return array( + 'title' => 'title', + 'parent' => 'parent', + 'comments' => 'comment_count', + 'date' => array( 'date', true ) + ); + } + + /** + * @global WP_Query $wp_query + * @global int $per_page + * @param array $posts + * @param int $level + */ + public function display_rows( $posts = array(), $level = 0 ) { + global $wp_query, $per_page; + + if ( empty( $posts ) ) + $posts = $wp_query->posts; + + add_filter( 'the_title', 'esc_html' ); + + if ( $this->hierarchical_display ) { + $this->_display_rows_hierarchical( $posts, $this->get_pagenum(), $per_page ); + } else { + $this->_display_rows( $posts, $level ); + } + } + + /** + * @global string $mode + * @param array $posts + * @param int $level + */ + private function _display_rows( $posts, $level = 0 ) { + global $mode; + + // Create array of post IDs. + $post_ids = array(); + + foreach ( $posts as $a_post ) + $post_ids[] = $a_post->ID; + + $this->comment_pending_count = get_pending_comments_num( $post_ids ); + + foreach ( $posts as $post ) + $this->single_row( $post, $level ); + } + + /** + * @global wpdb $wpdb + * @global WP_Post $post + * @param array $pages + * @param int $pagenum + * @param int $per_page + */ + private function _display_rows_hierarchical( $pages, $pagenum = 1, $per_page = 20 ) { + global $wpdb; + + $level = 0; + + if ( ! $pages ) { + $pages = get_pages( array( 'sort_column' => 'menu_order' ) ); + + if ( ! $pages ) + return; + } + + /* + * Arrange pages into two parts: top level pages and children_pages + * children_pages is two dimensional array, eg. + * children_pages[10][] contains all sub-pages whose parent is 10. + * It only takes O( N ) to arrange this and it takes O( 1 ) for subsequent lookup operations + * If searching, ignore hierarchy and treat everything as top level + */ + if ( empty( $_REQUEST['s'] ) ) { + + $top_level_pages = array(); + $children_pages = array(); + + foreach ( $pages as $page ) { + + // Catch and repair bad pages. + if ( $page->post_parent == $page->ID ) { + $page->post_parent = 0; + $wpdb->update( $wpdb->posts, array( 'post_parent' => 0 ), array( 'ID' => $page->ID ) ); + clean_post_cache( $page ); + } + + if ( 0 == $page->post_parent ) + $top_level_pages[] = $page; + else + $children_pages[ $page->post_parent ][] = $page; + } + + $pages = &$top_level_pages; + } + + $count = 0; + $start = ( $pagenum - 1 ) * $per_page; + $end = $start + $per_page; + $to_display = array(); + + foreach ( $pages as $page ) { + if ( $count >= $end ) + break; + + if ( $count >= $start ) { + $to_display[$page->ID] = $level; + } + + $count++; + + if ( isset( $children_pages ) ) + $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page, $to_display ); + } + + // If it is the last pagenum and there are orphaned pages, display them with paging as well. + if ( isset( $children_pages ) && $count < $end ){ + foreach ( $children_pages as $orphans ){ + foreach ( $orphans as $op ) { + if ( $count >= $end ) + break; + + if ( $count >= $start ) { + $to_display[$op->ID] = 0; + } + + $count++; + } + } + } + + $ids = array_keys( $to_display ); + _prime_post_caches( $ids ); + + if ( ! isset( $GLOBALS['post'] ) ) { + $GLOBALS['post'] = reset( $ids ); + } + + foreach ( $to_display as $page_id => $level ) { + echo "\t"; + $this->single_row( $page_id, $level ); + } + } + + /** + * Given a top level page ID, display the nested hierarchy of sub-pages + * together with paging support + * + * @since 3.1.0 (Standalone function exists since 2.6.0) + * @since 4.2.0 Added the `$to_display` parameter. + * + * @param array $children_pages + * @param int $count + * @param int $parent + * @param int $level + * @param int $pagenum + * @param int $per_page + * @param array $to_display List of pages to be displayed. Passed by reference. + */ + private function _page_rows( &$children_pages, &$count, $parent, $level, $pagenum, $per_page, &$to_display ) { + if ( ! isset( $children_pages[$parent] ) ) + return; + + $start = ( $pagenum - 1 ) * $per_page; + $end = $start + $per_page; + + foreach ( $children_pages[$parent] as $page ) { + if ( $count >= $end ) + break; + + // If the page starts in a subtree, print the parents. + if ( $count == $start && $page->post_parent > 0 ) { + $my_parents = array(); + $my_parent = $page->post_parent; + while ( $my_parent ) { + // Get the ID from the list or the attribute if my_parent is an object + $parent_id = $my_parent; + if ( is_object( $my_parent ) ) { + $parent_id = $my_parent->ID; + } + + $my_parent = get_post( $parent_id ); + $my_parents[] = $my_parent; + if ( !$my_parent->post_parent ) + break; + $my_parent = $my_parent->post_parent; + } + $num_parents = count( $my_parents ); + while ( $my_parent = array_pop( $my_parents ) ) { + $to_display[$my_parent->ID] = $level - $num_parents; + $num_parents--; + } + } + + if ( $count >= $start ) { + $to_display[$page->ID] = $level; + } + + $count++; + + $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page, $to_display ); + } + + unset( $children_pages[$parent] ); //required in order to keep track of orphans + } + + /** + * Handles the checkbox column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_Post $post The current WP_Post object. + */ + public function column_cb( $post ) { + if ( current_user_can( 'edit_post', $post->ID ) ): ?> + + +
+ '; + echo $this->column_title( $post ); + echo $this->handle_row_actions( $post, 'title', $primary ); + echo ''; + } + + /** + * Handles the title column output. + * + * @since 4.3.0 + * @access public + * + * @global string $mode + * + * @param WP_Post $post The current WP_Post object. + */ + public function column_title( $post ) { + global $mode; + + if ( $this->hierarchical_display ) { + if ( 0 === $this->current_level && (int) $post->post_parent > 0 ) { + // Sent level 0 by accident, by default, or because we don't know the actual level. + $find_main_page = (int) $post->post_parent; + while ( $find_main_page > 0 ) { + $parent = get_post( $find_main_page ); + + if ( is_null( $parent ) ) { + break; + } + + $this->current_level++; + $find_main_page = (int) $parent->post_parent; + + if ( ! isset( $parent_name ) ) { + /** This filter is documented in wp-includes/post-template.php */ + $parent_name = apply_filters( 'the_title', $parent->post_title, $parent->ID ); + } + } + } + } + + $pad = str_repeat( '— ', $this->current_level ); + echo ""; + + $format = get_post_format( $post->ID ); + if ( $format ) { + $label = get_post_format_string( $format ); + + echo '' . $label . ": "; + } + + $can_edit_post = current_user_can( 'edit_post', $post->ID ); + $title = _draft_or_post_title(); + + if ( $can_edit_post && $post->post_status != 'trash' ) { + $edit_link = get_edit_post_link( $post->ID ); + echo '' . $pad . $title . ''; + } else { + echo $pad . $title; + } + _post_states( $post ); + + if ( isset( $parent_name ) ) { + $post_type_object = get_post_type_object( $post->post_type ); + echo ' | ' . $post_type_object->labels->parent_item_colon . ' ' . esc_html( $parent_name ); + } + echo "\n"; + + if ( $can_edit_post && $post->post_status != 'trash' ) { + $lock_holder = wp_check_post_lock( $post->ID ); + + if ( $lock_holder ) { + $lock_holder = get_userdata( $lock_holder ); + $locked_avatar = get_avatar( $lock_holder->ID, 18 ); + $locked_text = esc_html( sprintf( __( '%s is currently editing' ), $lock_holder->display_name ) ); + } else { + $locked_avatar = $locked_text = ''; + } + + echo '
' . $locked_avatar . ' ' . $locked_text . "
\n"; + } + + if ( ! is_post_type_hierarchical( $this->screen->post_type ) && 'excerpt' == $mode && current_user_can( 'read_post', $post->ID ) ) { + the_excerpt(); + } + + get_inline_data( $post ); + } + + /** + * Handles the post date column output. + * + * @since 4.3.0 + * @access public + * + * @global string $mode + * + * @param WP_Post $post The current WP_Post object. + */ + public function column_date( $post ) { + global $mode; + + if ( '0000-00-00 00:00:00' == $post->post_date ) { + $t_time = $h_time = __( 'Unpublished' ); + $time_diff = 0; + } else { + $t_time = get_the_time( __( 'Y/m/d g:i:s a' ) ); + $m_time = $post->post_date; + $time = get_post_time( 'G', true, $post ); + + $time_diff = time() - $time; + + if ( $time_diff > 0 && $time_diff < DAY_IN_SECONDS ) { + $h_time = sprintf( __( '%s ago' ), human_time_diff( $time ) ); + } else { + $h_time = mysql2date( __( 'Y/m/d' ), $m_time ); + } + } + + if ( 'excerpt' == $mode ) { + /** + * Filter the published time of the post. + * + * If $mode equals 'excerpt', the published time and date are both displayed. + * If $mode equals 'list' (default), the publish date is displayed, with the + * time and date together available as an abbreviation definition. + * + * @since 2.5.1 + * + * @param array $t_time The published time. + * @param WP_Post $post Post object. + * @param string $column_name The column name. + * @param string $mode The list display mode ('excerpt' or 'list'). + */ + echo apply_filters( 'post_date_column_time', $t_time, $post, 'date', $mode ); + } else { + + /** This filter is documented in wp-admin/includes/class-wp-posts-list-table.php */ + echo '' . apply_filters( 'post_date_column_time', $h_time, $post, 'date', $mode ) . ''; + } + echo '
'; + if ( 'publish' == $post->post_status ) { + _e( 'Published' ); + } elseif ( 'future' == $post->post_status ) { + if ( $time_diff > 0 ) { + echo '' . __( 'Missed schedule' ) . ''; + } else { + _e( 'Scheduled' ); + } + } else { + _e( 'Last Modified' ); + } + } + + /** + * Handles the comments column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_Post $post The current WP_Post object. + */ + public function column_comments( $post ) { + ?> +
+ comment_pending_count[$post->ID] ) ? $this->comment_pending_count[$post->ID] : 0; + + $this->comments_bubble( $post->ID, $pending_comments ); + ?> +
+ %s', + esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'author' => get_the_author_meta( 'ID' ) ), 'edit.php' )), + get_the_author() + ); + } + + /** + * Handles the default column output. + * + * @since 4.3.0 + * @access public + * + * @param WP_Post $post The current WP_Post object. + * @param string $column_name The current column name. + */ + public function column_default( $post, $column_name ) { + if ( 'categories' == $column_name ) { + $taxonomy = 'category'; + } elseif ( 'tags' == $column_name ) { + $taxonomy = 'post_tag'; + } elseif ( 0 === strpos( $column_name, 'taxonomy-' ) ) { + $taxonomy = substr( $column_name, 9 ); + } else { + $taxonomy = false; + } + if ( $taxonomy ) { + $taxonomy_object = get_taxonomy( $taxonomy ); + $terms = get_the_terms( $post->ID, $taxonomy ); + if ( is_array( $terms ) ) { + $out = array(); + foreach ( $terms as $t ) { + $posts_in_term_qv = array(); + if ( 'post' != $post->post_type ) { + $posts_in_term_qv['post_type'] = $post->post_type; + } + if ( $taxonomy_object->query_var ) { + $posts_in_term_qv[ $taxonomy_object->query_var ] = $t->slug; + } else { + $posts_in_term_qv['taxonomy'] = $taxonomy; + $posts_in_term_qv['term'] = $t->slug; + } + + $out[] = sprintf( '%s', + esc_url( add_query_arg( $posts_in_term_qv, 'edit.php' ) ), + esc_html( sanitize_term_field( 'name', $t->name, $t->term_id, $taxonomy, 'display' ) ) + ); + } + /* translators: used between list items, there is a space after the comma */ + echo join( __( ', ' ), $out ); + } else { + echo '' . $taxonomy_object->labels->no_terms . ''; + } + return; + } + + if ( is_post_type_hierarchical( $post->post_type ) ) { + + /** + * Fires in each custom column on the Posts list table. + * + * This hook only fires if the current post type is hierarchical, + * such as pages. + * + * @since 2.5.0 + * + * @param string $column_name The name of the column to display. + * @param int $post_id The current post ID. + */ + do_action( 'manage_pages_custom_column', $column_name, $post->ID ); + } else { + + /** + * Fires in each custom column in the Posts list table. + * + * This hook only fires if the current post type is non-hierarchical, + * such as posts. + * + * @since 1.5.0 + * + * @param string $column_name The name of the column to display. + * @param int $post_id The current post ID. + */ + do_action( 'manage_posts_custom_column', $column_name, $post->ID ); + } + + /** + * Fires for each custom column of a specific post type in the Posts list table. + * + * The dynamic portion of the hook name, `$post->post_type`, refers to the post type. + * + * @since 3.1.0 + * + * @param string $column_name The name of the column to display. + * @param int $post_id The current post ID. + */ + do_action( "manage_{$post->post_type}_posts_custom_column", $column_name, $post->ID ); + } + + /** + * @global WP_Post $post + * + * @param int|WP_Post $post + * @param int $level + */ + public function single_row( $post, $level = 0 ) { + $global_post = get_post(); + + $post = get_post( $post ); + $this->current_level = $level; + + $GLOBALS['post'] = $post; + setup_postdata( $post ); + + $classes = 'iedit author-' . ( get_current_user_id() == $post->post_author ? 'self' : 'other' ); + + $lock_holder = wp_check_post_lock( $post->ID ); + if ( $lock_holder ) { + $classes .= ' wp-locked'; + } + + if ( $post->post_parent ) { + $count = count( get_post_ancestors( $post->ID ) ); + $classes .= ' level-'. $count; + } else { + $classes .= ' level-0'; + } + ?> + + single_row_columns( $post ); ?> + + post_type ); + $can_edit_post = current_user_can( 'edit_post', $post->ID ); + $actions = array(); + + if ( $can_edit_post && 'trash' != $post->post_status ) { + $actions['edit'] = '' . __( 'Edit' ) . ''; + $actions['inline hide-if-no-js'] = '' . __( 'Quick Edit' ) . ''; + } + + if ( current_user_can( 'delete_post', $post->ID ) ) { + if ( 'trash' == $post->post_status ) + $actions['untrash'] = "ID ) ), 'untrash-post_' . $post->ID ) . "'>" . __( 'Restore' ) . ""; + elseif ( EMPTY_TRASH_DAYS ) + $actions['trash'] = "" . __( 'Trash' ) . ""; + if ( 'trash' == $post->post_status || !EMPTY_TRASH_DAYS ) + $actions['delete'] = "" . __( 'Delete Permanently' ) . ""; + } + + if ( $post_type_object->public ) { + $title = _draft_or_post_title(); + if ( in_array( $post->post_status, array( 'pending', 'draft', 'future' ) ) ) { + if ( $can_edit_post ) { + $preview_link = set_url_scheme( get_permalink( $post->ID ) ); + /** This filter is documented in wp-admin/includes/meta-boxes.php */ + $preview_link = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post ); + $actions['view'] = '' . __( 'Preview' ) . ''; + } + } elseif ( 'trash' != $post->post_status ) { + $actions['view'] = '' . __( 'View' ) . ''; + } + } + + if ( is_post_type_hierarchical( $post->post_type ) ) { + + /** + * Filter the array of row action links on the Pages list table. + * + * The filter is evaluated only for hierarchical post types. + * + * @since 2.8.0 + * + * @param array $actions An array of row action links. Defaults are + * 'Edit', 'Quick Edit', 'Restore, 'Trash', + * 'Delete Permanently', 'Preview', and 'View'. + * @param WP_Post $post The post object. + */ + $actions = apply_filters( 'page_row_actions', $actions, $post ); + } else { + + /** + * Filter the array of row action links on the Posts list table. + * + * The filter is evaluated only for non-hierarchical post types. + * + * @since 2.8.0 + * + * @param array $actions An array of row action links. Defaults are + * 'Edit', 'Quick Edit', 'Restore, 'Trash', + * 'Delete Permanently', 'Preview', and 'View'. + * @param WP_Post $post The post object. + */ + $actions = apply_filters( 'post_row_actions', $actions, $post ); + } + + return $this->row_actions( $actions ); + } + + /** + * Outputs the hidden row displayed when inline editing + * + * @since 3.1.0 + * + * @global string $mode + */ + public function inline_edit() { + global $mode; + + $screen = $this->screen; + + $post = get_default_post_to_edit( $screen->post_type ); + $post_type_object = get_post_type_object( $screen->post_type ); + + $taxonomy_names = get_object_taxonomies( $screen->post_type ); + $hierarchical_taxonomies = array(); + $flat_taxonomies = array(); + foreach ( $taxonomy_names as $taxonomy_name ) { + + $taxonomy = get_taxonomy( $taxonomy_name ); + + $show_in_quick_edit = $taxonomy->show_in_quick_edit; + + /** + * Filter whether the current taxonomy should be shown in the Quick Edit panel. + * + * @since 4.2.0 + * + * @param bool $show_in_quick_edit Whether to show the current taxonomy in Quick Edit. + * @param string $taxonomy_name Taxonomy name. + * @param string $post_type Post type of current Quick Edit post. + */ + if ( ! apply_filters( 'quick_edit_show_taxonomy', $show_in_quick_edit, $taxonomy_name, $screen->post_type ) ) { + continue; + } + + if ( $taxonomy->hierarchical ) + $hierarchical_taxonomies[] = $taxonomy; + else + $flat_taxonomies[] = $taxonomy; + } + + $m = ( isset( $mode ) && 'excerpt' == $mode ) ? 'excerpt' : 'list'; + $can_publish = current_user_can( $post_type_object->cap->publish_posts ); + $core_columns = array( 'cb' => true, 'date' => true, 'title' => true, 'categories' => true, 'tags' => true, 'comments' => true, 'author' => true ); + + ?> + +
+ + + post_type; + echo $bulk ? " bulk-edit-row bulk-edit-row-$hclass bulk-edit-{$screen->post_type}" : " quick-edit-row quick-edit-row-$hclass inline-edit-{$screen->post_type}"; + ?>" style="display: none"> + +
+ +
+

+ post_type, 'title' ) ) : + if ( $bulk ) : ?> +
+
+
+ + + + + + + + + + +
+ + +
+
+ post_type, 'author' ) ) : + $authors_dropdown = ''; + + if ( is_super_admin() || current_user_can( $post_type_object->cap->edit_others_posts ) ) : + $users_opt = array( + 'hide_if_only_one_author' => false, + 'who' => 'authors', + 'name' => 'post_author', + 'class'=> 'authors', + 'multi' => 1, + 'echo' => 0 + ); + if ( $bulk ) + $users_opt['show_option_none'] = __( '— No Change —' ); + + if ( $authors = wp_dropdown_users( $users_opt ) ) : + $authors_dropdown = ''; + endif; + endif; // authors + ?> + + + +
+ + + + + + +
+ + + +
+ + + +
+ + + + labels->name ) ?> + +
    + $taxonomy->name ) ) ?> +
+ + + +
+ + + +
+ + post_type, 'author' ) && $bulk ) + echo $authors_dropdown; + + if ( post_type_supports( $screen->post_type, 'page-attributes' ) ) : + + if ( $post_type_object->hierarchical ) : + ?> + + + + + + + post_type ) : + ?> + + + + + + + + + cap->assign_terms ) ) : ?> + + + + + + + + post_type, 'comments' ) || post_type_supports( $screen->post_type, 'trackbacks' ) ) : + if ( $bulk ) : ?> + +
+ post_type, 'comments' ) ) : ?> + + post_type, 'trackbacks' ) ) : ?> + + +
+ + + +
+ post_type, 'comments' ) ) : ?> + + post_type, 'trackbacks' ) ) : ?> + + +
+ + + +
+ + + post_type && $can_publish && current_user_can( $post_type_object->cap->edit_others_posts ) ) : ?> + + + + + + + + + + + + + +
+ + post_type, 'post-formats' ) ) { + $post_formats = get_theme_support( 'post-formats' ); + + ?> + + + +
+ + get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + if ( isset( $core_columns[$column_name] ) ) + continue; + + if ( $bulk ) { + + /** + * Fires once for each column in Bulk Edit mode. + * + * @since 2.7.0 + * + * @param string $column_name Name of the column to edit. + * @param WP_Post $post_type The post type slug. + */ + do_action( 'bulk_edit_custom_box', $column_name, $screen->post_type ); + } else { + + /** + * Fires once for each column in Quick Edit mode. + * + * @since 2.7.0 + * + * @param string $column_name Name of the column to edit. + * @param WP_Post $post_type The post type slug. + */ + do_action( 'quick_edit_custom_box', $column_name, $screen->post_type ); + } + + } + ?> +

+ + + + + + + + post_type, 'author' ) ) { ?> + + + +
+

+
+ apply_filters( 'press_this_redirect_in_parent', false ), + ); + } + + /** + * Get the source's images and save them locally, for posterity, unless we can't. + * + * @since 4.2.0 + * @access public + * + * @param int $post_id Post ID. + * @param string $content Optional. Current expected markup for Press This. Expects slashed. Default empty. + * @return string New markup with old image URLs replaced with the local attachment ones if swapped. + */ + public function side_load_images( $post_id, $content = '' ) { + $content = wp_unslash( $content ); + + if ( preg_match_all( '/]+>/', $content, $matches ) && current_user_can( 'upload_files' ) ) { + foreach ( (array) $matches[0] as $image ) { + // This is inserted from our JS so HTML attributes should always be in double quotes. + if ( ! preg_match( '/src="([^"]+)"/', $image, $url_matches ) ) { + continue; + } + + $image_src = $url_matches[1]; + + // Don't try to sideload a file without a file extension, leads to WP upload error. + if ( ! preg_match( '/[^\?]+\.(?:jpe?g|jpe|gif|png)(?:\?|$)/i', $image_src ) ) { + continue; + } + + // Sideload image, which gives us a new image src. + $new_src = media_sideload_image( $image_src, $post_id, null, 'src' ); + + if ( ! is_wp_error( $new_src ) ) { + // Replace the POSTED content with correct uploaded ones. + // Need to do it in two steps so we don't replace links to the original image if any. + $new_image = str_replace( $image_src, $new_src, $image ); + $content = str_replace( $image, $new_image, $content ); + } + } + } + + // Edxpected slashed + return wp_slash( $content ); + } + + /** + * AJAX handler for saving the post as draft or published. + * + * @since 4.2.0 + * @access public + */ + public function save_post() { + if ( empty( $_POST['post_ID'] ) || ! $post_id = (int) $_POST['post_ID'] ) { + wp_send_json_error( array( 'errorMessage' => __( 'Missing post ID.' ) ) ); + } + + if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'update-post_' . $post_id ) || + ! current_user_can( 'edit_post', $post_id ) ) { + + wp_send_json_error( array( 'errorMessage' => __( 'Invalid post.' ) ) ); + } + + $post = array( + 'ID' => $post_id, + 'post_title' => ( ! empty( $_POST['post_title'] ) ) ? sanitize_text_field( trim( $_POST['post_title'] ) ) : '', + 'post_content' => ( ! empty( $_POST['post_content'] ) ) ? trim( $_POST['post_content'] ) : '', + 'post_type' => 'post', + 'post_status' => 'draft', + 'post_format' => ( ! empty( $_POST['post_format'] ) ) ? sanitize_text_field( $_POST['post_format'] ) : '', + 'tax_input' => ( ! empty( $_POST['tax_input'] ) ) ? $_POST['tax_input'] : array(), + 'post_category' => ( ! empty( $_POST['post_category'] ) ) ? $_POST['post_category'] : array(), + ); + + if ( ! empty( $_POST['post_status'] ) && 'publish' === $_POST['post_status'] ) { + if ( current_user_can( 'publish_posts' ) ) { + $post['post_status'] = 'publish'; + } else { + $post['post_status'] = 'pending'; + } + } + + $post['post_content'] = $this->side_load_images( $post_id, $post['post_content'] ); + + $updated = wp_update_post( $post, true ); + + if ( is_wp_error( $updated ) ) { + wp_send_json_error( array( 'errorMessage' => $updated->get_error_message() ) ); + } else { + if ( isset( $post['post_format'] ) ) { + if ( current_theme_supports( 'post-formats', $post['post_format'] ) ) { + set_post_format( $post_id, $post['post_format'] ); + } elseif ( $post['post_format'] ) { + set_post_format( $post_id, false ); + } + } + + $forceRedirect = false; + + if ( 'publish' === get_post_status( $post_id ) ) { + $redirect = get_post_permalink( $post_id ); + } elseif ( isset( $_POST['pt-force-redirect'] ) && $_POST['pt-force-redirect'] === 'true' ) { + $forceRedirect = true; + $redirect = get_edit_post_link( $post_id, 'js' ); + } else { + $redirect = false; + } + + /** + * Filter the URL to redirect to when Press This saves. + * + * @since 4.2.0 + * + * @param string $url Redirect URL. If `$status` is 'publish', this will be the post permalink. + * Otherwise, the default is false resulting in no redirect. + * @param int $post_id Post ID. + * @param string $status Post status. + */ + $redirect = apply_filters( 'press_this_save_redirect', $redirect, $post_id, $post['post_status'] ); + + if ( $redirect ) { + wp_send_json_success( array( 'redirect' => $redirect, 'force' => $forceRedirect ) ); + } else { + wp_send_json_success( array( 'postSaved' => true ) ); + } + } + } + + /** + * AJAX handler for adding a new category. + * + * @since 4.2.0 + * @access public + */ + public function add_category() { + if ( false === wp_verify_nonce( $_POST['new_cat_nonce'], 'add-category' ) ) { + wp_send_json_error(); + } + + $taxonomy = get_taxonomy( 'category' ); + + if ( ! current_user_can( $taxonomy->cap->edit_terms ) || empty( $_POST['name'] ) ) { + wp_send_json_error(); + } + + $parent = isset( $_POST['parent'] ) && (int) $_POST['parent'] > 0 ? (int) $_POST['parent'] : 0; + $names = explode( ',', $_POST['name'] ); + $added = $data = array(); + + foreach ( $names as $cat_name ) { + $cat_name = trim( $cat_name ); + $cat_nicename = sanitize_title( $cat_name ); + + if ( empty( $cat_nicename ) ) { + continue; + } + + // @todo Find a more performant way to check existence, maybe get_term() with a separate parent check. + if ( term_exists( $cat_name, $taxonomy->name, $parent ) ) { + if ( count( $names ) === 1 ) { + wp_send_json_error( array( 'errorMessage' => __( 'This category already exists.' ) ) ); + } else { + continue; + } + } + + $cat_id = wp_insert_term( $cat_name, $taxonomy->name, array( 'parent' => $parent ) ); + + if ( is_wp_error( $cat_id ) ) { + continue; + } elseif ( is_array( $cat_id ) ) { + $cat_id = $cat_id['term_id']; + } + + $added[] = $cat_id; + } + + if ( empty( $added ) ) { + wp_send_json_error( array( 'errorMessage' => __( 'This category cannot be added. Please change the name and try again.' ) ) ); + } + + foreach ( $added as $new_cat_id ) { + $new_cat = get_category( $new_cat_id ); + + if ( is_wp_error( $new_cat ) ) { + wp_send_json_error( array( 'errorMessage' => __( 'Error while adding the category. Please try again later.' ) ) ); + } + + $data[] = array( + 'term_id' => $new_cat->term_id, + 'name' => $new_cat->name, + 'parent' => $new_cat->parent, + ); + } + wp_send_json_success( $data ); + } + + /** + * Downloads the source's HTML via server-side call for the given URL. + * + * @since 4.2.0 + * @access public + * + * @param string $url URL to scan. + * @return string Source's HTML sanitized markup + */ + public function fetch_source_html( $url ) { + global $wp_version; + + if ( empty( $url ) ) { + return new WP_Error( 'invalid-url', __( 'A valid URL was not provided.' ) ); + } + + $remote_url = wp_safe_remote_get( $url, array( + 'timeout' => 30, + // Use an explicit user-agent for Press This + 'user-agent' => 'Press This (WordPress/' . $wp_version . '); ' . get_bloginfo( 'url' ) + ) ); + + if ( is_wp_error( $remote_url ) ) { + return $remote_url; + } + + $useful_html_elements = array( + 'img' => array( + 'src' => true, + 'width' => true, + 'height' => true, + ), + 'iframe' => array( + 'src' => true, + ), + 'link' => array( + 'rel' => true, + 'itemprop' => true, + 'href' => true, + ), + 'meta' => array( + 'property' => true, + 'name' => true, + 'content' => true, + ) + ); + + $source_content = wp_remote_retrieve_body( $remote_url ); + $source_content = wp_kses( $source_content, $useful_html_elements ); + + return $source_content; + } + + /** + * Utility method to limit an array to 50 values. + * + * @ignore + * @since 4.2.0 + * + * @param array $value Array to limit. + * @return array Original array if fewer than 50 values, limited array, empty array otherwise. + */ + private function _limit_array( $value ) { + if ( is_array( $value ) ) { + if ( count( $value ) > 50 ) { + return array_slice( $value, 0, 50 ); + } + + return $value; + } + + return array(); + } + + /** + * Utility method to limit the length of a given string to 5,000 characters. + * + * @ignore + * @since 4.2.0 + * + * @param string $value String to limit. + * @return bool|int|string If boolean or integer, that value. If a string, the original value + * if fewer than 5,000 characters, a truncated version, otherwise an + * empty string. + */ + private function _limit_string( $value ) { + $return = ''; + + if ( is_numeric( $value ) || is_bool( $value ) ) { + $return = $value; + } else if ( is_string( $value ) ) { + if ( mb_strlen( $value ) > 5000 ) { + $return = mb_substr( $value, 0, 5000 ); + } else { + $return = $value; + } + + $return = html_entity_decode( $return, ENT_QUOTES, 'UTF-8' ); + $return = sanitize_text_field( trim( $return ) ); + } + + return $return; + } + + /** + * Utility method to limit a given URL to 2,048 characters. + * + * @ignore + * @since 4.2.0 + * + * @param string $url URL to check for length and validity. + * @return string Escaped URL if of valid length (< 2048) and makeup. Empty string otherwise. + */ + private function _limit_url( $url ) { + if ( ! is_string( $url ) ) { + return ''; + } + + // HTTP 1.1 allows 8000 chars but the "de-facto" standard supported in all current browsers is 2048. + if ( strlen( $url ) > 2048 ) { + return ''; // Return empty rather than a truncated/invalid URL + } + + // Does not look like an URL. + if ( ! preg_match( '/^([!#$&-;=?-\[\]_a-z~]|%[0-9a-fA-F]{2})+$/', $url ) ) { + return ''; + } + + // If the URL is root-relative, prepend the protocol and domain name + if ( $url && $this->domain && preg_match( '%^/[^/]+%', $url ) ) { + $url = $this->domain . $url; + } + + // Not absolute or protocol-relative URL. + if ( ! preg_match( '%^(?:https?:)?//[^/]+%', $url ) ) { + return ''; + } + + return esc_url_raw( $url, array( 'http', 'https' ) ); + } + + /** + * Utility method to limit image source URLs. + * + * Excluded URLs include share-this type buttons, loaders, spinners, spacers, WP interface images, + * tiny buttons or thumbs, mathtag.com or quantserve.com images, or the WP stats gif. + * + * @ignore + * @since 4.2.0 + * + * @param string $src Image source URL. + * @return string If not matched an excluded URL type, the original URL, empty string otherwise. + */ + private function _limit_img( $src ) { + $src = $this->_limit_url( $src ); + + if ( preg_match( '/\/ad[sx]{1}?\//', $src ) ) { + // Ads + return ''; + } else if ( preg_match( '/(\/share-?this[^\.]+?\.[a-z0-9]{3,4})(\?.*)?$/', $src ) ) { + // Share-this type button + return ''; + } else if ( preg_match( '/\/(spinner|loading|spacer|blank|rss)\.(gif|jpg|png)/', $src ) ) { + // Loaders, spinners, spacers + return ''; + } else if ( preg_match( '/\/([^\.\/]+[-_]{1})?(spinner|loading|spacer|blank)s?([-_]{1}[^\.\/]+)?\.[a-z0-9]{3,4}/', $src ) ) { + // Fancy loaders, spinners, spacers + return ''; + } else if ( preg_match( '/([^\.\/]+[-_]{1})?thumb[^.]*\.(gif|jpg|png)$/', $src ) ) { + // Thumbnails, too small, usually irrelevant to context + return ''; + } else if ( preg_match( '/\/wp-includes\//', $src ) ) { + // Classic WP interface images + return ''; + } else if ( preg_match( '/[^\d]{1}\d{1,2}x\d+\.(gif|jpg|png)$/', $src ) ) { + // Most often tiny buttons/thumbs (< 100px wide) + return ''; + } else if ( preg_match( '/\/pixel\.(mathtag|quantserve)\.com/', $src ) ) { + // See mathtag.com and https://www.quantcast.com/how-we-do-it/iab-standard-measurement/how-we-collect-data/ + return ''; + } else if ( preg_match( '/\/[gb]\.gif(\?.+)?$/', $src ) ) { + // Classic WP stats gif + return ''; + } + + return $src; + } + + /** + * Limit embed source URLs to specific providers. + * + * Not all core oEmbed providers are supported. Supported providers include YouTube, Vimeo, + * Vine, Daily Motion, SoundCloud, and Twitter. + * + * @ignore + * @since 4.2.0 + * + * @param string $src Embed source URL. + * @return string If not from a supported provider, an empty string. Otherwise, a reformattd embed URL. + */ + private function _limit_embed( $src ) { + $src = $this->_limit_url( $src ); + + if ( empty( $src ) ) + return ''; + + if ( preg_match( '/\/\/(m|www)\.youtube\.com\/(embed|v)\/([^\?]+)\?.+$/', $src, $src_matches ) ) { + // Embedded Youtube videos (www or mobile) + $src = 'https://www.youtube.com/watch?v=' . $src_matches[3]; + } else if ( preg_match( '/\/\/player\.vimeo\.com\/video\/([\d]+)([\?\/]{1}.*)?$/', $src, $src_matches ) ) { + // Embedded Vimeo iframe videos + $src = 'https://vimeo.com/' . (int) $src_matches[1]; + } else if ( preg_match( '/\/\/vimeo\.com\/moogaloop\.swf\?clip_id=([\d]+)$/', $src, $src_matches ) ) { + // Embedded Vimeo Flash videos + $src = 'https://vimeo.com/' . (int) $src_matches[1]; + } else if ( preg_match( '/\/\/vine\.co\/v\/([^\/]+)\/embed/', $src, $src_matches ) ) { + // Embedded Vine videos + $src = 'https://vine.co/v/' . $src_matches[1]; + } else if ( preg_match( '/\/\/(www\.)?dailymotion\.com\/embed\/video\/([^\/\?]+)([\/\?]{1}.+)?/', $src, $src_matches ) ) { + // Embedded Daily Motion videos + $src = 'https://www.dailymotion.com/video/' . $src_matches[2]; + } else { + require_once( ABSPATH . WPINC . '/class-oembed.php' ); + $oembed = _wp_oembed_get_object(); + + if ( ! $oembed->get_provider( $src, array( 'discover' => false ) ) ) { + $src = ''; + } + } + + return $src; + } + + /** + * Process a meta data entry from the source. + * + * @ignore + * @since 4.2.0 + * + * @param string $meta_name Meta key name. + * @param mixed $meta_value Meta value. + * @param array $data Associative array of source data. + * @return array Processed data array. + */ + private function _process_meta_entry( $meta_name, $meta_value, $data ) { + if ( preg_match( '/:?(title|description|keywords|site_name)$/', $meta_name ) ) { + $data['_meta'][ $meta_name ] = $meta_value; + } else { + switch ( $meta_name ) { + case 'og:url': + case 'og:video': + case 'og:video:secure_url': + $meta_value = $this->_limit_embed( $meta_value ); + + if ( ! isset( $data['_embeds'] ) ) { + $data['_embeds'] = array(); + } + + if ( ! empty( $meta_value ) && ! in_array( $meta_value, $data['_embeds'] ) ) { + $data['_embeds'][] = $meta_value; + } + + break; + case 'og:image': + case 'og:image:secure_url': + case 'twitter:image0:src': + case 'twitter:image0': + case 'twitter:image:src': + case 'twitter:image': + $meta_value = $this->_limit_img( $meta_value ); + + if ( ! isset( $data['_images'] ) ) { + $data['_images'] = array(); + } + + if ( ! empty( $meta_value ) && ! in_array( $meta_value, $data['_images'] ) ) { + $data['_images'][] = $meta_value; + } + + break; + } + } + + return $data; + } + + /** + * Fetches and parses _meta, _images, and _links data from the source. + * + * @since 4.2.0 + * @access public + * + * @param string $url URL to scan. + * @param array $data Optional. Existing data array if you have one. Default empty array. + * @return array New data array. + */ + public function source_data_fetch_fallback( $url, $data = array() ) { + if ( empty( $url ) ) { + return array(); + } + + // Download source page to tmp file. + $source_content = $this->fetch_source_html( $url ); + if ( is_wp_error( $source_content ) ) { + return array( 'errors' => $source_content->get_error_messages() ); + } + + // Fetch and gather data first, so discovered media is offered 1st to user. + if ( empty( $data['_meta'] ) ) { + $data['_meta'] = array(); + } + + if ( preg_match_all( '/]+>/', $source_content, $matches ) ) { + $items = $this->_limit_array( $matches[0] ); + + foreach ( $items as $value ) { + if ( preg_match( '/(property|name)="([^"]+)"[^>]+content="([^"]+)"/', $value, $new_matches ) ) { + $meta_name = $this->_limit_string( $new_matches[2] ); + $meta_value = $this->_limit_string( $new_matches[3] ); + + // Sanity check. $key is usually things like 'title', 'description', 'keywords', etc. + if ( strlen( $meta_name ) > 100 ) { + continue; + } + + $data = $this->_process_meta_entry( $meta_name, $meta_value, $data ); + } + } + } + + // Fetch and gather data. + if ( empty( $data['_images'] ) ) { + $data['_images'] = array(); + } + + if ( preg_match_all( '/]+>/', $source_content, $matches ) ) { + $items = $this->_limit_array( $matches[0] ); + + foreach ( $items as $value ) { + if ( ( preg_match( '/width=(\'|")(\d+)\\1/i', $value, $new_matches ) && $new_matches[2] < 256 ) || + ( preg_match( '/height=(\'|")(\d+)\\1/i', $value, $new_matches ) && $new_matches[2] < 128 ) ) { + + continue; + } + + if ( preg_match( '/src=(\'|")([^\'"]+)\\1/i', $value, $new_matches ) ) { + $src = $this->_limit_img( $new_matches[2] ); + if ( ! empty( $src ) && ! in_array( $src, $data['_images'] ) ) { + $data['_images'][] = $src; + } + } + } + } + + // Fetch and gather +
+ + name, $themes_allowedtags ); + $author = wp_kses( $theme->author, $themes_allowedtags ); + + $install_url = add_query_arg( array( + 'action' => 'install-theme', + 'theme' => $theme->slug, + ), self_admin_url( 'update.php' ) ); + + $update_url = add_query_arg( array( + 'action' => 'upgrade-theme', + 'theme' => $theme->slug, + ), self_admin_url( 'update.php' ) ); + + $status = $this->_get_theme_status( $theme ); + + ?> +
slug ) ) . '" title="' . esc_attr( sprintf( __( 'Update to version %s' ), $theme->version ) ) . '">' . __( 'Update' ) . ''; + break; + case 'newer_installed': + case 'latest_installed': + echo '' . _x( 'Installed', 'theme' ) . ''; + break; + case 'install': + default: + echo '' . __( 'Install' ) . ''; + break; + } ?> +

+ + screenshot_url ) ): ?> + + +
+ $theme->rating, 'type' => 'percent', 'number' => $theme->num_ratings ) ); ?> +
+ + version, $themes_allowedtags ); ?> +
+
+ description, $themes_allowedtags ); ?> +
+
+ +
+ Install screen + * @global string $type Type of search. + * + * @param array $extra_args Unused. + */ + public function _js_vars( $extra_args = array() ) { + global $tab, $type; + parent::_js_vars( compact( 'tab', 'type' ) ); + } + + /** + * Check to see if the theme is already installed. + * + * @since 3.4.0 + * @access private + * + * @param object $theme - A WordPress.org Theme API object. + * @return string Theme status. + */ + private function _get_theme_status( $theme ) { + $status = 'install'; + + $installed_theme = wp_get_theme( $theme->slug ); + if ( $installed_theme->exists() ) { + if ( version_compare( $installed_theme->get('Version'), $theme->version, '=' ) ) + $status = 'latest_installed'; + elseif ( version_compare( $installed_theme->get('Version'), $theme->version, '>' ) ) + $status = 'newer_installed'; + else + $status = 'update_available'; + } + + return $status; + } +} diff --git a/wp-admin/includes/class-wp-themes-list-table.php b/wp-admin/includes/class-wp-themes-list-table.php new file mode 100644 index 0000000000..e01e3d4636 --- /dev/null +++ b/wp-admin/includes/class-wp-themes-list-table.php @@ -0,0 +1,300 @@ + true, + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, + ) ); + } + + /** + * + * @return bool + */ + public function ajax_user_can() { + // Do not check edit_theme_options here. AJAX calls for available themes require switch_themes. + return current_user_can( 'switch_themes' ); + } + + /** + * @access public + */ + public function prepare_items() { + $themes = wp_get_themes( array( 'allowed' => true ) ); + + if ( ! empty( $_REQUEST['s'] ) ) + $this->search_terms = array_unique( array_filter( array_map( 'trim', explode( ',', strtolower( wp_unslash( $_REQUEST['s'] ) ) ) ) ) ); + + if ( ! empty( $_REQUEST['features'] ) ) + $this->features = $_REQUEST['features']; + + if ( $this->search_terms || $this->features ) { + foreach ( $themes as $key => $theme ) { + if ( ! $this->search_theme( $theme ) ) + unset( $themes[ $key ] ); + } + } + + unset( $themes[ get_option( 'stylesheet' ) ] ); + WP_Theme::sort_by_name( $themes ); + + $per_page = 36; + $page = $this->get_pagenum(); + + $start = ( $page - 1 ) * $per_page; + + $this->items = array_slice( $themes, $start, $per_page, true ); + + $this->set_pagination_args( array( + 'total_items' => count( $themes ), + 'per_page' => $per_page, + 'infinite_scroll' => true, + ) ); + } + + /** + * @access public + */ + public function no_items() { + if ( $this->search_terms || $this->features ) { + _e( 'No items found.' ); + return; + } + + if ( is_multisite() ) { + if ( current_user_can( 'install_themes' ) && current_user_can( 'manage_network_themes' ) ) { + printf( __( 'You only have one theme enabled for this site right now. Visit the Network Admin to enable or install more themes.' ), network_admin_url( 'site-themes.php?id=' . $GLOBALS['blog_id'] ), network_admin_url( 'theme-install.php' ) ); + + return; + } elseif ( current_user_can( 'manage_network_themes' ) ) { + printf( __( 'You only have one theme enabled for this site right now. Visit the Network Admin to enable more themes.' ), network_admin_url( 'site-themes.php?id=' . $GLOBALS['blog_id'] ) ); + + return; + } + // Else, fallthrough. install_themes doesn't help if you can't enable it. + } else { + if ( current_user_can( 'install_themes' ) ) { + printf( __( 'You only have one theme installed right now. Live a little! You can choose from over 1,000 free themes in the WordPress.org Theme Directory at any time: just click on the Install Themes tab above.' ), admin_url( 'theme-install.php' ) ); + + return; + } + } + // Fallthrough. + printf( __( 'Only the current theme is available to you. Contact the %s administrator for information about accessing additional themes.' ), get_site_option( 'site_name' ) ); + } + + /** + * @param string $which + */ + public function tablenav( $which = 'top' ) { + if ( $this->get_pagination_arg( 'total_pages' ) <= 1 ) + return; + ?> +
+ pagination( $which ); ?> + +
+
+ + tablenav( 'top' ); ?> + +
+ display_rows_or_placeholder(); ?> +
+ + tablenav( 'bottom' ); ?> +has_items() ) { + $this->display_rows(); + } else { + echo '
'; + $this->no_items(); + echo '
'; + } + } + + /** + * @access public + */ + public function display_rows() { + $themes = $this->items; + + foreach ( $themes as $theme ): + ?>
get_template(); + $stylesheet = $theme->get_stylesheet(); + $title = $theme->display('Name'); + $version = $theme->display('Version'); + $author = $theme->display('Author'); + + $activate_link = wp_nonce_url( "themes.php?action=activate&template=" . urlencode( $template ) . "&stylesheet=" . urlencode( $stylesheet ), 'switch-theme_' . $stylesheet ); + + $actions = array(); + $actions['activate'] = '' . __( 'Activate' ) . ''; + + if ( current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) ) { + $actions['preview'] .= '' + . __( 'Live Preview' ) . ''; + } + + if ( ! is_multisite() && current_user_can( 'delete_themes' ) ) + $actions['delete'] = '' . __( 'Delete' ) . ''; + + /** This filter is documented in wp-admin/includes/class-wp-ms-themes-list-table.php */ + $actions = apply_filters( 'theme_action_links', $actions, $theme ); + + /** This filter is documented in wp-admin/includes/class-wp-ms-themes-list-table.php */ + $actions = apply_filters( "theme_action_links_$stylesheet", $actions, $theme ); + $delete_action = isset( $actions['delete'] ) ? '
' . $actions['delete'] . '
' : ''; + unset( $actions['delete'] ); + + ?> + + + get_screenshot() ) : ?> + + + + + get_screenshot() ) : ?> + + + + +

+
+ + +
+

+

display('Description'); ?>

+ parent() ) { + printf( '

' . __( 'This child theme requires its parent theme, %2$s.' ) . '

', + __( 'https://codex.wordpress.org/Child_Themes' ), + $theme->parent()->display( 'Name' ) ); + } ?> +
+ +
+ features as $word ) { + if ( ! in_array( $word, $theme->get('Tags') ) ) + return false; + } + + // Match all phrases + foreach ( $this->search_terms as $word ) { + if ( in_array( $word, $theme->get('Tags') ) ) + continue; + + foreach ( array( 'Name', 'Description', 'Author', 'AuthorURI' ) as $header ) { + // Don't mark up; Do translate. + if ( false !== stripos( strip_tags( $theme->display( $header, false, true ) ), $word ) ) { + continue 2; + } + } + + if ( false !== stripos( $theme->get_stylesheet(), $word ) ) + continue; + + if ( false !== stripos( $theme->get_template(), $word ) ) + continue; + + return false; + } + + return true; + } + + /** + * Send required variables to JavaScript land + * + * @since 3.4.0 + * @access public + * + * @param array $extra_args + */ + public function _js_vars( $extra_args = array() ) { + $search_string = isset( $_REQUEST['s'] ) ? esc_attr( wp_unslash( $_REQUEST['s'] ) ) : ''; + + $args = array( + 'search' => $search_string, + 'features' => $this->features, + 'paged' => $this->get_pagenum(), + 'total_pages' => ! empty( $this->_pagination_args['total_pages'] ) ? $this->_pagination_args['total_pages'] : 1, + ); + + if ( is_array( $extra_args ) ) + $args = array_merge( $args, $extra_args ); + + printf( "\n", wp_json_encode( $args ) ); + parent::_js_vars(); + } +} diff --git a/wp-admin/includes/class-wp-upgrader-skins.php b/wp-admin/includes/class-wp-upgrader-skins.php new file mode 100644 index 0000000000..3e9a5556b6 --- /dev/null +++ b/wp-admin/includes/class-wp-upgrader-skins.php @@ -0,0 +1,941 @@ + '', 'nonce' => '', 'title' => '', 'context' => false ); + $this->options = wp_parse_args($args, $defaults); + } + + /** + * @param WP_Upgrader $upgrader + */ + public function set_upgrader(&$upgrader) { + if ( is_object($upgrader) ) + $this->upgrader =& $upgrader; + $this->add_strings(); + } + + /** + * @access public + */ + public function add_strings() { + } + + /** + * + * @param string|false|WP_Error $result + */ + public function set_result($result) { + $this->result = $result; + } + + /** + * + * @param bool $error + * @param string $context + * @param bool $allow_relaxed_file_ownership + * @return type + */ + public function request_filesystem_credentials( $error = false, $context = false, $allow_relaxed_file_ownership = false ) { + $url = $this->options['url']; + if ( ! $context ) { + $context = $this->options['context']; + } + if ( !empty($this->options['nonce']) ) { + $url = wp_nonce_url($url, $this->options['nonce']); + } + + $extra_fields = array(); + + return request_filesystem_credentials( $url, '', $error, $context, $extra_fields, $allow_relaxed_file_ownership ); + } + + /** + * @access public + */ + public function header() { + if ( $this->done_header ) { + return; + } + $this->done_header = true; + echo '
'; + echo '

' . $this->options['title'] . '

'; + } + + /** + * @access public + */ + public function footer() { + if ( $this->done_footer ) { + return; + } + $this->done_footer = true; + echo '
'; + } + + /** + * + * @param string|WP_Error $errors + */ + public function error($errors) { + if ( ! $this->done_header ) + $this->header(); + if ( is_string($errors) ) { + $this->feedback($errors); + } elseif ( is_wp_error($errors) && $errors->get_error_code() ) { + foreach ( $errors->get_error_messages() as $message ) { + if ( $errors->get_error_data() && is_string( $errors->get_error_data() ) ) + $this->feedback($message . ' ' . esc_html( strip_tags( $errors->get_error_data() ) ) ); + else + $this->feedback($message); + } + } + } + + /** + * + * @param string $string + */ + public function feedback($string) { + if ( isset( $this->upgrader->strings[$string] ) ) + $string = $this->upgrader->strings[$string]; + + if ( strpos($string, '%') !== false ) { + $args = func_get_args(); + $args = array_splice($args, 1); + if ( $args ) { + $args = array_map( 'strip_tags', $args ); + $args = array_map( 'esc_html', $args ); + $string = vsprintf($string, $args); + } + } + if ( empty($string) ) + return; + show_message($string); + } + + /** + * @access public + */ + public function before() {} + + /** + * @access public + */ + public function after() {} + + /** + * Output JavaScript that calls function to decrement the update counts. + * + * @since 3.9.0 + * + * @param string $type Type of update count to decrement. Likely values include 'plugin', + * 'theme', 'translation', etc. + */ + protected function decrement_update_count( $type ) { + if ( ! $this->result || is_wp_error( $this->result ) || 'up_to_date' === $this->result ) { + return; + } + + if ( defined( 'IFRAME_REQUEST' ) ) { + echo ''; + } else { + echo ''; + } + } + + /** + * @access public + */ + public function bulk_header() {} + + /** + * @access public + */ + public function bulk_footer() {} +} + +/** + * Plugin Upgrader Skin for WordPress Plugin Upgrades. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Plugin_Upgrader_Skin extends WP_Upgrader_Skin { + public $plugin = ''; + public $plugin_active = false; + public $plugin_network_active = false; + + /** + * + * @param array $args + */ + public function __construct( $args = array() ) { + $defaults = array( 'url' => '', 'plugin' => '', 'nonce' => '', 'title' => __('Update Plugin') ); + $args = wp_parse_args($args, $defaults); + + $this->plugin = $args['plugin']; + + $this->plugin_active = is_plugin_active( $this->plugin ); + $this->plugin_network_active = is_plugin_active_for_network( $this->plugin ); + + parent::__construct($args); + } + + /** + * @access public + */ + public function after() { + $this->plugin = $this->upgrader->plugin_info(); + if ( !empty($this->plugin) && !is_wp_error($this->result) && $this->plugin_active ){ + echo ''; + } + + $this->decrement_update_count( 'plugin' ); + + $update_actions = array( + 'activate_plugin' => '' . __( 'Activate Plugin' ) . '', + 'plugins_page' => '' . __( 'Return to Plugins page' ) . '' + ); + if ( $this->plugin_active || ! $this->result || is_wp_error( $this->result ) || ! current_user_can( 'activate_plugins' ) ) + unset( $update_actions['activate_plugin'] ); + + /** + * Filter the list of action links available following a single plugin update. + * + * @since 2.7.0 + * + * @param array $update_actions Array of plugin action links. + * @param string $plugin Path to the plugin file. + */ + $update_actions = apply_filters( 'update_plugin_complete_actions', $update_actions, $this->plugin ); + + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } +} + +/** + * Plugin Upgrader Skin for WordPress Plugin Upgrades. + * + * @package WordPress + * @subpackage Upgrader + * @since 3.0.0 + */ +class Bulk_Upgrader_Skin extends WP_Upgrader_Skin { + public $in_loop = false; + /** + * @var string|false + */ + public $error = false; + + /** + * + * @param array $args + */ + public function __construct($args = array()) { + $defaults = array( 'url' => '', 'nonce' => '' ); + $args = wp_parse_args($args, $defaults); + + parent::__construct($args); + } + + /** + * @access public + */ + public function add_strings() { + $this->upgrader->strings['skin_upgrade_start'] = __('The update process is starting. This process may take a while on some hosts, so please be patient.'); + $this->upgrader->strings['skin_update_failed_error'] = __('An error occurred while updating %1$s: %2$s'); + $this->upgrader->strings['skin_update_failed'] = __('The update of %1$s failed.'); + $this->upgrader->strings['skin_update_successful'] = __( '%1$s updated successfully.' ) . ' ' . __( 'Show Details' ) . ''; + $this->upgrader->strings['skin_upgrade_end'] = __('All updates have been completed.'); + } + + /** + * @param string $string + */ + public function feedback($string) { + if ( isset( $this->upgrader->strings[$string] ) ) + $string = $this->upgrader->strings[$string]; + + if ( strpos($string, '%') !== false ) { + $args = func_get_args(); + $args = array_splice($args, 1); + if ( $args ) { + $args = array_map( 'strip_tags', $args ); + $args = array_map( 'esc_html', $args ); + $string = vsprintf($string, $args); + } + } + if ( empty($string) ) + return; + if ( $this->in_loop ) + echo "$string
\n"; + else + echo "

$string

\n"; + } + + /** + * @access public + */ + public function header() { + // Nothing, This will be displayed within a iframe. + } + + /** + * @access public + */ + public function footer() { + // Nothing, This will be displayed within a iframe. + } + + /** + * + * @param string|WP_Error $error + */ + public function error($error) { + if ( is_string($error) && isset( $this->upgrader->strings[$error] ) ) + $this->error = $this->upgrader->strings[$error]; + + if ( is_wp_error($error) ) { + $messages = array(); + foreach ( $error->get_error_messages() as $emessage ) { + if ( $error->get_error_data() && is_string( $error->get_error_data() ) ) + $messages[] = $emessage . ' ' . esc_html( strip_tags( $error->get_error_data() ) ); + else + $messages[] = $emessage; + } + $this->error = implode(', ', $messages); + } + echo ''; + } + + /** + * @access public + */ + public function bulk_header() { + $this->feedback('skin_upgrade_start'); + } + + /** + * @access public + */ + public function bulk_footer() { + $this->feedback('skin_upgrade_end'); + } + + /** + * + * @param string $title + */ + public function before($title = '') { + $this->in_loop = true; + printf( '

' . $this->upgrader->strings['skin_before_update_header'] . '

', $title, $this->upgrader->update_current, $this->upgrader->update_count); + echo ''; + echo '

'; + $this->flush_output(); + } + + /** + * + * @param string $title + */ + public function after($title = '') { + echo '

'; + if ( $this->error || ! $this->result ) { + if ( $this->error ) + echo '

' . sprintf($this->upgrader->strings['skin_update_failed_error'], $title, $this->error) . '

'; + else + echo '

' . sprintf($this->upgrader->strings['skin_update_failed'], $title) . '

'; + + echo ''; + } + if ( $this->result && ! is_wp_error( $this->result ) ) { + if ( ! $this->error ) + echo '

' . sprintf($this->upgrader->strings['skin_update_successful'], $title, 'jQuery(\'#progress-' . esc_js($this->upgrader->update_current) . '\').toggle();jQuery(\'span\', this).toggle(); return false;') . '

'; + echo ''; + } + + $this->reset(); + $this->flush_output(); + } + + /** + * @access public + */ + public function reset() { + $this->in_loop = false; + $this->error = false; + } + + /** + * @access public + */ + public function flush_output() { + wp_ob_end_flush_all(); + flush(); + } +} + +class Bulk_Plugin_Upgrader_Skin extends Bulk_Upgrader_Skin { + public $plugin_info = array(); // Plugin_Upgrader::bulk() will fill this in. + + public function add_strings() { + parent::add_strings(); + $this->upgrader->strings['skin_before_update_header'] = __('Updating Plugin %1$s (%2$d/%3$d)'); + } + + /** + * + * @param string $title + */ + public function before($title = '') { + parent::before($this->plugin_info['Title']); + } + + /** + * + * @param string $title + */ + public function after($title = '') { + parent::after($this->plugin_info['Title']); + $this->decrement_update_count( 'plugin' ); + } + + /** + * @access public + */ + public function bulk_footer() { + parent::bulk_footer(); + $update_actions = array( + 'plugins_page' => '' . __( 'Return to Plugins page' ) . '', + 'updates_page' => '' . __( 'Return to WordPress Updates page' ) . '' + ); + if ( ! current_user_can( 'activate_plugins' ) ) + unset( $update_actions['plugins_page'] ); + + /** + * Filter the list of action links available following bulk plugin updates. + * + * @since 3.0.0 + * + * @param array $update_actions Array of plugin action links. + * @param array $plugin_info Array of information for the last-updated plugin. + */ + $update_actions = apply_filters( 'update_bulk_plugins_complete_actions', $update_actions, $this->plugin_info ); + + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } +} + +class Bulk_Theme_Upgrader_Skin extends Bulk_Upgrader_Skin { + public $theme_info = array(); // Theme_Upgrader::bulk() will fill this in. + + public function add_strings() { + parent::add_strings(); + $this->upgrader->strings['skin_before_update_header'] = __('Updating Theme %1$s (%2$d/%3$d)'); + } + + /** + * + * @param string $title + */ + public function before($title = '') { + parent::before( $this->theme_info->display('Name') ); + } + + /** + * + * @param string $title + */ + public function after($title = '') { + parent::after( $this->theme_info->display('Name') ); + $this->decrement_update_count( 'theme' ); + } + + /** + * @access public + */ + public function bulk_footer() { + parent::bulk_footer(); + $update_actions = array( + 'themes_page' => '' . __( 'Return to Themes page' ) . '', + 'updates_page' => '' . __( 'Return to WordPress Updates page' ) . '' + ); + if ( ! current_user_can( 'switch_themes' ) && ! current_user_can( 'edit_theme_options' ) ) + unset( $update_actions['themes_page'] ); + + /** + * Filter the list of action links available following bulk theme updates. + * + * @since 3.0.0 + * + * @param array $update_actions Array of theme action links. + * @param array $theme_info Array of information for the last-updated theme. + */ + $update_actions = apply_filters( 'update_bulk_theme_complete_actions', $update_actions, $this->theme_info ); + + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } +} + +/** + * Plugin Installer Skin for WordPress Plugin Installer. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Plugin_Installer_Skin extends WP_Upgrader_Skin { + public $api; + public $type; + + /** + * + * @param array $args + */ + public function __construct($args = array()) { + $defaults = array( 'type' => 'web', 'url' => '', 'plugin' => '', 'nonce' => '', 'title' => '' ); + $args = wp_parse_args($args, $defaults); + + $this->type = $args['type']; + $this->api = isset($args['api']) ? $args['api'] : array(); + + parent::__construct($args); + } + + /** + * @access public + */ + public function before() { + if ( !empty($this->api) ) + $this->upgrader->strings['process_success'] = sprintf( __('Successfully installed the plugin %s %s.'), $this->api->name, $this->api->version); + } + + /** + * @access public + */ + public function after() { + $plugin_file = $this->upgrader->plugin_info(); + + $install_actions = array(); + + $from = isset($_GET['from']) ? wp_unslash( $_GET['from'] ) : 'plugins'; + + if ( 'import' == $from ) + $install_actions['activate_plugin'] = '' . __( 'Activate Plugin & Run Importer' ) . ''; + else + $install_actions['activate_plugin'] = '' . __( 'Activate Plugin' ) . ''; + + if ( is_multisite() && current_user_can( 'manage_network_plugins' ) ) { + $install_actions['network_activate'] = '' . __( 'Network Activate' ) . ''; + unset( $install_actions['activate_plugin'] ); + } + + if ( 'import' == $from ) { + $install_actions['importers_page'] = '' . __( 'Return to Importers' ) . ''; + } elseif ( $this->type == 'web' ) { + $install_actions['plugins_page'] = '' . __( 'Return to Plugin Installer' ) . ''; + } else { + $install_actions['plugins_page'] = '' . __( 'Return to Plugins page' ) . ''; + } + + if ( ! $this->result || is_wp_error($this->result) ) { + unset( $install_actions['activate_plugin'], $install_actions['network_activate'] ); + } elseif ( ! current_user_can( 'activate_plugins' ) ) { + unset( $install_actions['activate_plugin'] ); + } + + /** + * Filter the list of action links available following a single plugin installation. + * + * @since 2.7.0 + * + * @param array $install_actions Array of plugin action links. + * @param object $api Object containing WordPress.org API plugin data. Empty + * for non-API installs, such as when a plugin is installed + * via upload. + * @param string $plugin_file Path to the plugin file. + */ + $install_actions = apply_filters( 'install_plugin_complete_actions', $install_actions, $this->api, $plugin_file ); + + if ( ! empty($install_actions) ) + $this->feedback(implode(' | ', (array)$install_actions)); + } +} + +/** + * Theme Installer Skin for the WordPress Theme Installer. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Theme_Installer_Skin extends WP_Upgrader_Skin { + public $api; + public $type; + + /** + * + * @param array $args + */ + public function __construct($args = array()) { + $defaults = array( 'type' => 'web', 'url' => '', 'theme' => '', 'nonce' => '', 'title' => '' ); + $args = wp_parse_args($args, $defaults); + + $this->type = $args['type']; + $this->api = isset($args['api']) ? $args['api'] : array(); + + parent::__construct($args); + } + + /** + * @access public + */ + public function before() { + if ( !empty($this->api) ) + $this->upgrader->strings['process_success'] = sprintf( $this->upgrader->strings['process_success_specific'], $this->api->name, $this->api->version); + } + + /** + * @access public + */ + public function after() { + if ( empty($this->upgrader->result['destination_name']) ) + return; + + $theme_info = $this->upgrader->theme_info(); + if ( empty( $theme_info ) ) + return; + + $name = $theme_info->display('Name'); + $stylesheet = $this->upgrader->result['destination_name']; + $template = $theme_info->get_template(); + + $activate_link = add_query_arg( array( + 'action' => 'activate', + 'template' => urlencode( $template ), + 'stylesheet' => urlencode( $stylesheet ), + ), admin_url('themes.php') ); + $activate_link = wp_nonce_url( $activate_link, 'switch-theme_' . $stylesheet ); + + $install_actions = array(); + + if ( current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) ) { + $install_actions['preview'] = '' . sprintf( __( 'Live Preview “%s”' ), $name ) . ''; + } + $install_actions['activate'] = '' . sprintf( __( 'Activate “%s”' ), $name ) . ''; + + if ( is_network_admin() && current_user_can( 'manage_network_themes' ) ) + $install_actions['network_enable'] = '' . __( 'Network Enable' ) . ''; + + if ( $this->type == 'web' ) + $install_actions['themes_page'] = '' . __( 'Return to Theme Installer' ) . ''; + elseif ( current_user_can( 'switch_themes' ) || current_user_can( 'edit_theme_options' ) ) + $install_actions['themes_page'] = '' . __( 'Return to Themes page' ) . ''; + + if ( ! $this->result || is_wp_error($this->result) || is_network_admin() || ! current_user_can( 'switch_themes' ) ) + unset( $install_actions['activate'], $install_actions['preview'] ); + + /** + * Filter the list of action links available following a single theme installation. + * + * @since 2.8.0 + * + * @param array $install_actions Array of theme action links. + * @param object $api Object containing WordPress.org API theme data. + * @param string $stylesheet Theme directory name. + * @param WP_Theme $theme_info Theme object. + */ + $install_actions = apply_filters( 'install_theme_complete_actions', $install_actions, $this->api, $stylesheet, $theme_info ); + if ( ! empty($install_actions) ) + $this->feedback(implode(' | ', (array)$install_actions)); + } +} + +/** + * Theme Upgrader Skin for WordPress Theme Upgrades. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Theme_Upgrader_Skin extends WP_Upgrader_Skin { + public $theme = ''; + + /** + * + * @param array $args + */ + public function __construct($args = array()) { + $defaults = array( 'url' => '', 'theme' => '', 'nonce' => '', 'title' => __('Update Theme') ); + $args = wp_parse_args($args, $defaults); + + $this->theme = $args['theme']; + + parent::__construct($args); + } + + /** + * @access public + */ + public function after() { + $this->decrement_update_count( 'theme' ); + + $update_actions = array(); + if ( ! empty( $this->upgrader->result['destination_name'] ) && $theme_info = $this->upgrader->theme_info() ) { + $name = $theme_info->display('Name'); + $stylesheet = $this->upgrader->result['destination_name']; + $template = $theme_info->get_template(); + + $activate_link = add_query_arg( array( + 'action' => 'activate', + 'template' => urlencode( $template ), + 'stylesheet' => urlencode( $stylesheet ), + ), admin_url('themes.php') ); + $activate_link = wp_nonce_url( $activate_link, 'switch-theme_' . $stylesheet ); + + if ( get_stylesheet() == $stylesheet ) { + if ( current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) ) { + $update_actions['preview'] = '' . sprintf( __( 'Customize “%s”' ), $name ) . ''; + } + } elseif ( current_user_can( 'switch_themes' ) ) { + if ( current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) ) { + $update_actions['preview'] .= '' . sprintf( __( 'Live Preview “%s”' ), $name ) . ''; + } + $update_actions['activate'] = '' . sprintf( __( 'Activate “%s”' ), $name ) . ''; + } + + if ( ! $this->result || is_wp_error( $this->result ) || is_network_admin() ) + unset( $update_actions['preview'], $update_actions['activate'] ); + } + + $update_actions['themes_page'] = '' . __( 'Return to Themes page' ) . ''; + + /** + * Filter the list of action links available following a single theme update. + * + * @since 2.8.0 + * + * @param array $update_actions Array of theme action links. + * @param string $theme Theme directory name. + */ + $update_actions = apply_filters( 'update_theme_complete_actions', $update_actions, $this->theme ); + + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } +} + +/** + * Translation Upgrader Skin for WordPress Translation Upgrades. + * + * @package WordPress + * @subpackage Upgrader + * @since 3.7.0 + */ +class Language_Pack_Upgrader_Skin extends WP_Upgrader_Skin { + public $language_update = null; + public $done_header = false; + public $done_footer = false; + public $display_footer_actions = true; + + /** + * + * @param array $args + */ + public function __construct( $args = array() ) { + $defaults = array( 'url' => '', 'nonce' => '', 'title' => __( 'Update Translations' ), 'skip_header_footer' => false ); + $args = wp_parse_args( $args, $defaults ); + if ( $args['skip_header_footer'] ) { + $this->done_header = true; + $this->done_footer = true; + $this->display_footer_actions = false; + } + parent::__construct( $args ); + } + + /** + * @access public + */ + public function before() { + $name = $this->upgrader->get_name_for_update( $this->language_update ); + + echo '
'; + + printf( '

' . __( 'Updating translations for %1$s (%2$s)…' ) . '

', $name, $this->language_update->language ); + } + + /** + * + * @param string|WP_Error $error + */ + public function error( $error ) { + echo '
'; + parent::error( $error ); + echo '
'; + } + + /** + * @access public + */ + public function after() { + echo '
'; + } + + /** + * @access public + */ + public function bulk_footer() { + $this->decrement_update_count( 'translation' ); + $update_actions = array(); + $update_actions['updates_page'] = '' . __( 'Return to WordPress Updates page' ) . ''; + + /** + * Filter the list of action links available following a translations update. + * + * @since 3.7.0 + * + * @param array $update_actions Array of translations update links. + */ + $update_actions = apply_filters( 'update_translations_complete_actions', $update_actions ); + + if ( $update_actions && $this->display_footer_actions ) + $this->feedback( implode( ' | ', $update_actions ) ); + } +} + +/** + * Upgrader Skin for Automatic WordPress Upgrades + * + * This skin is designed to be used when no output is intended, all output + * is captured and stored for the caller to process and log/email/discard. + * + * @package WordPress + * @subpackage Upgrader + * @since 3.7.0 + */ +class Automatic_Upgrader_Skin extends WP_Upgrader_Skin { + protected $messages = array(); + + /** + * + * @param bool $error + * @param string $context + * @param bool $allow_relaxed_file_ownership + * @return bool + */ + public function request_filesystem_credentials( $error = false, $context = '', $allow_relaxed_file_ownership = false ) { + if ( $context ) { + $this->options['context'] = $context; + } + // TODO: fix up request_filesystem_credentials(), or split it, to allow us to request a no-output version + // This will output a credentials form in event of failure, We don't want that, so just hide with a buffer + ob_start(); + $result = parent::request_filesystem_credentials( $error, $context, $allow_relaxed_file_ownership ); + ob_end_clean(); + return $result; + } + + /** + * @access public + * + * @return array + */ + public function get_upgrade_messages() { + return $this->messages; + } + + /** + * @param string|array|WP_Error $data + */ + public function feedback( $data ) { + if ( is_wp_error( $data ) ) { + $string = $data->get_error_message(); + } elseif ( is_array( $data ) ) { + return; + } else { + $string = $data; + } + if ( ! empty( $this->upgrader->strings[ $string ] ) ) + $string = $this->upgrader->strings[ $string ]; + + if ( strpos( $string, '%' ) !== false ) { + $args = func_get_args(); + $args = array_splice( $args, 1 ); + if ( ! empty( $args ) ) + $string = vsprintf( $string, $args ); + } + + $string = trim( $string ); + + // Only allow basic HTML in the messages, as it'll be used in emails/logs rather than direct browser output. + $string = wp_kses( $string, array( + 'a' => array( + 'href' => true + ), + 'br' => true, + 'em' => true, + 'strong' => true, + ) ); + + if ( empty( $string ) ) + return; + + $this->messages[] = $string; + } + + /** + * @access public + */ + public function header() { + ob_start(); + } + + /** + * @access public + */ + public function footer() { + $output = ob_get_clean(); + if ( ! empty( $output ) ) + $this->feedback( $output ); + } +} diff --git a/wp-admin/includes/class-wp-upgrader.php b/wp-admin/includes/class-wp-upgrader.php new file mode 100644 index 0000000000..235df514c1 --- /dev/null +++ b/wp-admin/includes/class-wp-upgrader.php @@ -0,0 +1,3402 @@ +skin = new WP_Upgrader_Skin(); + else + $this->skin = $skin; + } + + /** + * Initialize the upgrader. + * + * This will set the relationship between the skin being used and this upgrader, + * and also add the generic strings to `WP_Upgrader::$strings`. + * + * @since 2.8.0 + */ + public function init() { + $this->skin->set_upgrader($this); + $this->generic_strings(); + } + + /** + * Add the generic strings to WP_Upgrader::$strings. + * + * @since 2.8.0 + */ + public function generic_strings() { + $this->strings['bad_request'] = __('Invalid Data provided.'); + $this->strings['fs_unavailable'] = __('Could not access filesystem.'); + $this->strings['fs_error'] = __('Filesystem error.'); + $this->strings['fs_no_root_dir'] = __('Unable to locate WordPress Root directory.'); + $this->strings['fs_no_content_dir'] = __('Unable to locate WordPress Content directory (wp-content).'); + $this->strings['fs_no_plugins_dir'] = __('Unable to locate WordPress Plugin directory.'); + $this->strings['fs_no_themes_dir'] = __('Unable to locate WordPress Theme directory.'); + /* translators: %s: directory name */ + $this->strings['fs_no_folder'] = __('Unable to locate needed folder (%s).'); + + $this->strings['download_failed'] = __('Download failed.'); + $this->strings['installing_package'] = __('Installing the latest version…'); + $this->strings['no_files'] = __('The package contains no files.'); + $this->strings['folder_exists'] = __('Destination folder already exists.'); + $this->strings['mkdir_failed'] = __('Could not create directory.'); + $this->strings['incompatible_archive'] = __('The package could not be installed.'); + $this->strings['files_not_writable'] = __( 'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.' ); + + $this->strings['maintenance_start'] = __('Enabling Maintenance mode…'); + $this->strings['maintenance_end'] = __('Disabling Maintenance mode…'); + } + + /** + * Connect to the filesystem. + * + * @since 2.8.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param array $directories Optional. A list of directories. If any of these do + * not exist, a {@see WP_Error} object will be returned. + * Default empty array. + * @param bool $allow_relaxed_file_ownership Whether to allow relaxed file ownership. + * Default false. + * @return bool|WP_Error True if able to connect, false or a {@see WP_Error} otherwise. + */ + public function fs_connect( $directories = array(), $allow_relaxed_file_ownership = false ) { + global $wp_filesystem; + + if ( false === ( $credentials = $this->skin->request_filesystem_credentials( false, $directories[0], $allow_relaxed_file_ownership ) ) ) { + return false; + } + + if ( ! WP_Filesystem( $credentials, $directories[0], $allow_relaxed_file_ownership ) ) { + $error = true; + if ( is_object($wp_filesystem) && $wp_filesystem->errors->get_error_code() ) + $error = $wp_filesystem->errors; + // Failed to connect, Error and request again + $this->skin->request_filesystem_credentials( $error, $directories[0], $allow_relaxed_file_ownership ); + return false; + } + + if ( ! is_object($wp_filesystem) ) + return new WP_Error('fs_unavailable', $this->strings['fs_unavailable'] ); + + if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) + return new WP_Error('fs_error', $this->strings['fs_error'], $wp_filesystem->errors); + + foreach ( (array)$directories as $dir ) { + switch ( $dir ) { + case ABSPATH: + if ( ! $wp_filesystem->abspath() ) + return new WP_Error('fs_no_root_dir', $this->strings['fs_no_root_dir']); + break; + case WP_CONTENT_DIR: + if ( ! $wp_filesystem->wp_content_dir() ) + return new WP_Error('fs_no_content_dir', $this->strings['fs_no_content_dir']); + break; + case WP_PLUGIN_DIR: + if ( ! $wp_filesystem->wp_plugins_dir() ) + return new WP_Error('fs_no_plugins_dir', $this->strings['fs_no_plugins_dir']); + break; + case get_theme_root(): + if ( ! $wp_filesystem->wp_themes_dir() ) + return new WP_Error('fs_no_themes_dir', $this->strings['fs_no_themes_dir']); + break; + default: + if ( ! $wp_filesystem->find_folder($dir) ) + return new WP_Error( 'fs_no_folder', sprintf( $this->strings['fs_no_folder'], esc_html( basename( $dir ) ) ) ); + break; + } + } + return true; + } //end fs_connect(); + + /** + * Download a package. + * + * @since 2.8.0 + * + * @param string $package The URI of the package. If this is the full path to an + * existing local file, it will be returned untouched. + * @return string|WP_Error The full path to the downloaded package file, or a {@see WP_Error} object. + */ + public function download_package( $package ) { + + /** + * Filter whether to return the package. + * + * @since 3.7.0 + * + * @param bool $reply Whether to bail without returning the package. + * Default false. + * @param string $package The package file name. + * @param WP_Upgrader $this The WP_Upgrader instance. + */ + $reply = apply_filters( 'upgrader_pre_download', false, $package, $this ); + if ( false !== $reply ) + return $reply; + + if ( ! preg_match('!^(http|https|ftp)://!i', $package) && file_exists($package) ) //Local file or remote? + return $package; //must be a local file.. + + if ( empty($package) ) + return new WP_Error('no_package', $this->strings['no_package']); + + $this->skin->feedback('downloading_package', $package); + + $download_file = download_url($package); + + if ( is_wp_error($download_file) ) + return new WP_Error('download_failed', $this->strings['download_failed'], $download_file->get_error_message()); + + return $download_file; + } + + /** + * Unpack a compressed package file. + * + * @since 2.8.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param string $package Full path to the package file. + * @param bool $delete_package Optional. Whether to delete the package file after attempting + * to unpack it. Default true. + * @return string|WP_Error The path to the unpacked contents, or a {@see WP_Error} on failure. + */ + public function unpack_package( $package, $delete_package = true ) { + global $wp_filesystem; + + $this->skin->feedback('unpack_package'); + + $upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/'; + + //Clean up contents of upgrade directory beforehand. + $upgrade_files = $wp_filesystem->dirlist($upgrade_folder); + if ( !empty($upgrade_files) ) { + foreach ( $upgrade_files as $file ) + $wp_filesystem->delete($upgrade_folder . $file['name'], true); + } + + // We need a working directory - Strip off any .tmp or .zip suffixes + $working_dir = $upgrade_folder . basename( basename( $package, '.tmp' ), '.zip' ); + + // Clean up working directory + if ( $wp_filesystem->is_dir($working_dir) ) + $wp_filesystem->delete($working_dir, true); + + // Unzip package to working directory + $result = unzip_file( $package, $working_dir ); + + // Once extracted, delete the package if required. + if ( $delete_package ) + unlink($package); + + if ( is_wp_error($result) ) { + $wp_filesystem->delete($working_dir, true); + if ( 'incompatible_archive' == $result->get_error_code() ) { + return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], $result->get_error_data() ); + } + return $result; + } + + return $working_dir; + } + + /** + * Clears the directory where this item is going to be installed into. + * + * @since 4.3.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param string $remote_destination The location on the remote filesystem to be cleared + * @return bool|WP_Error True upon success, WP_Error on failure. + */ + public function clear_destination( $remote_destination ) { + global $wp_filesystem; + + if ( ! $wp_filesystem->exists( $remote_destination ) ) { + return true; + } + + // Check all files are writable before attempting to clear the destination. + $unwritable_files = array(); + + $_files = $wp_filesystem->dirlist( $remote_destination, true, true ); + + // Flatten the resulting array, iterate using each as we append to the array during iteration. + while ( $f = each( $_files ) ) { + $file = $f['value']; + $name = $f['key']; + + if ( ! isset( $file['files'] ) ) { + continue; + } + + foreach ( $file['files'] as $filename => $details ) { + $_files[ $name . '/' . $filename ] = $details; + } + } + + // Check writability. + foreach ( $_files as $filename => $file_details ) { + if ( ! $wp_filesystem->is_writable( $remote_destination . $filename ) ) { + + // Attempt to alter permissions to allow writes and try again. + $wp_filesystem->chmod( $remote_destination . $filename, ( 'd' == $file_details['type'] ? FS_CHMOD_DIR : FS_CHMOD_FILE ) ); + if ( ! $wp_filesystem->is_writable( $remote_destination . $filename ) ) { + $unwritable_files[] = $filename; + } + } + } + + if ( ! empty( $unwritable_files ) ) { + return new WP_Error( 'files_not_writable', $this->strings['files_not_writable'], implode( ', ', $unwritable_files ) ); + } + + if ( ! $wp_filesystem->delete( $remote_destination, true ) ) { + return new WP_Error( 'remove_old_failed', $this->strings['remove_old_failed'] ); + } + + return true; + } + + /** + * Install a package. + * + * Copies the contents of a package form a source directory, and installs them in + * a destination directory. Optionally removes the source. It can also optionally + * clear out the destination folder if it already exists. + * + * @since 2.8.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * @global array $wp_theme_directories + * + * @param array|string $args { + * Optional. Array or string of arguments for installing a package. Default empty array. + * + * @type string $source Required path to the package source. Default empty. + * @type string $destination Required path to a folder to install the package in. + * Default empty. + * @type bool $clear_destination Whether to delete any files already in the destination + * folder. Default false. + * @type bool $clear_working Whether to delete the files form the working directory + * after copying to the destination. Default false. + * @type bool $abort_if_destination_exists Whether to abort the installation if + * the destination folder already exists. Default true. + * @type array $hook_extra Extra arguments to pass to the filter hooks called by + * {@see WP_Upgrader::install_package()}. Default empty array. + * } + * + * @return array|WP_Error The result (also stored in `WP_Upgrader:$result`), or a {@see WP_Error} on failure. + */ + public function install_package( $args = array() ) { + global $wp_filesystem, $wp_theme_directories; + + $defaults = array( + 'source' => '', // Please always pass this + 'destination' => '', // and this + 'clear_destination' => false, + 'clear_working' => false, + 'abort_if_destination_exists' => true, + 'hook_extra' => array() + ); + + $args = wp_parse_args($args, $defaults); + + // These were previously extract()'d. + $source = $args['source']; + $destination = $args['destination']; + $clear_destination = $args['clear_destination']; + + @set_time_limit( 300 ); + + if ( empty( $source ) || empty( $destination ) ) { + return new WP_Error( 'bad_request', $this->strings['bad_request'] ); + } + $this->skin->feedback( 'installing_package' ); + + /** + * Filter the install response before the installation has started. + * + * Returning a truthy value, or one that could be evaluated as a WP_Error + * will effectively short-circuit the installation, returning that value + * instead. + * + * @since 2.8.0 + * + * @param bool|WP_Error $response Response. + * @param array $hook_extra Extra arguments passed to hooked filters. + */ + $res = apply_filters( 'upgrader_pre_install', true, $args['hook_extra'] ); + if ( is_wp_error( $res ) ) { + return $res; + } + + //Retain the Original source and destinations + $remote_source = $args['source']; + $local_destination = $destination; + + $source_files = array_keys( $wp_filesystem->dirlist( $remote_source ) ); + $remote_destination = $wp_filesystem->find_folder( $local_destination ); + + //Locate which directory to copy to the new folder, This is based on the actual folder holding the files. + if ( 1 == count( $source_files ) && $wp_filesystem->is_dir( trailingslashit( $args['source'] ) . $source_files[0] . '/' ) ) { //Only one folder? Then we want its contents. + $source = trailingslashit( $args['source'] ) . trailingslashit( $source_files[0] ); + } elseif ( count( $source_files ) == 0 ) { + return new WP_Error( 'incompatible_archive_empty', $this->strings['incompatible_archive'], $this->strings['no_files'] ); // There are no files? + } else { //It's only a single file, the upgrader will use the foldername of this file as the destination folder. foldername is based on zip filename. + $source = trailingslashit( $args['source'] ); + } + + /** + * Filter the source file location for the upgrade package. + * + * @since 2.8.0 + * + * @param string $source File source location. + * @param string $remote_source Remove file source location. + * @param WP_Upgrader $this WP_Upgrader instance. + */ + $source = apply_filters( 'upgrader_source_selection', $source, $remote_source, $this ); + if ( is_wp_error( $source ) ) { + return $source; + } + + // Has the source location changed? If so, we need a new source_files list. + if ( $source !== $remote_source ) { + $source_files = array_keys( $wp_filesystem->dirlist( $source ) ); + } + /* + * Protection against deleting files in any important base directories. + * Theme_Upgrader & Plugin_Upgrader also trigger this, as they pass the + * destination directory (WP_PLUGIN_DIR / wp-content/themes) intending + * to copy the directory into the directory, whilst they pass the source + * as the actual files to copy. + */ + $protected_directories = array( ABSPATH, WP_CONTENT_DIR, WP_PLUGIN_DIR, WP_CONTENT_DIR . '/themes' ); + + if ( is_array( $wp_theme_directories ) ) { + $protected_directories = array_merge( $protected_directories, $wp_theme_directories ); + } + if ( in_array( $destination, $protected_directories ) ) { + $remote_destination = trailingslashit( $remote_destination ) . trailingslashit( basename( $source ) ); + $destination = trailingslashit( $destination ) . trailingslashit( basename( $source ) ); + } + + if ( $clear_destination ) { + // We're going to clear the destination if there's something there + $this->skin->feedback('remove_old'); + + $removed = $this->clear_destination( $remote_destination ); + + /** + * Filter whether the upgrader cleared the destination. + * + * @since 2.8.0 + * + * @param mixed $removed Whether the destination was cleared. true on success, WP_Error on failure + * @param string $local_destination The local package destination. + * @param string $remote_destination The remote package destination. + * @param array $hook_extra Extra arguments passed to hooked filters. + */ + $removed = apply_filters( 'upgrader_clear_destination', $removed, $local_destination, $remote_destination, $args['hook_extra'] ); + + if ( is_wp_error( $removed ) ) { + return $removed; + } + } elseif ( $args['abort_if_destination_exists'] && $wp_filesystem->exists($remote_destination) ) { + //If we're not clearing the destination folder and something exists there already, Bail. + //But first check to see if there are actually any files in the folder. + $_files = $wp_filesystem->dirlist($remote_destination); + if ( ! empty($_files) ) { + $wp_filesystem->delete($remote_source, true); //Clear out the source files. + return new WP_Error('folder_exists', $this->strings['folder_exists'], $remote_destination ); + } + } + + //Create destination if needed + if ( ! $wp_filesystem->exists( $remote_destination ) ) { + if ( ! $wp_filesystem->mkdir( $remote_destination, FS_CHMOD_DIR ) ) { + return new WP_Error( 'mkdir_failed_destination', $this->strings['mkdir_failed'], $remote_destination ); + } + } + // Copy new version of item into place. + $result = copy_dir($source, $remote_destination); + if ( is_wp_error($result) ) { + if ( $args['clear_working'] ) { + $wp_filesystem->delete( $remote_source, true ); + } + return $result; + } + + //Clear the Working folder? + if ( $args['clear_working'] ) { + $wp_filesystem->delete( $remote_source, true ); + } + + $destination_name = basename( str_replace($local_destination, '', $destination) ); + if ( '.' == $destination_name ) { + $destination_name = ''; + } + + $this->result = compact( 'source', 'source_files', 'destination', 'destination_name', 'local_destination', 'remote_destination', 'clear_destination' ); + + /** + * Filter the install response after the installation has finished. + * + * @since 2.8.0 + * + * @param bool $response Install response. + * @param array $hook_extra Extra arguments passed to hooked filters. + * @param array $result Installation result data. + */ + $res = apply_filters( 'upgrader_post_install', true, $args['hook_extra'], $this->result ); + + if ( is_wp_error($res) ) { + $this->result = $res; + return $res; + } + + //Bombard the calling function will all the info which we've just used. + return $this->result; + } + + /** + * Run an upgrade/install. + * + * Attempts to download the package (if it is not a local file), unpack it, and + * install it in the destination folder. + * + * @since 2.8.0 + * + * @param array $options { + * Array or string of arguments for upgrading/installing a package. + * + * @type string $package The full path or URI of the package to install. + * Default empty. + * @type string $destination The full path to the destination folder. + * Default empty. + * @type bool $clear_destination Whether to delete any files already in the + * destination folder. Default false. + * @type bool $clear_working Whether to delete the files form the working + * directory after copying to the destination. + * Default false. + * @type bool $abort_if_destination_exists Whether to abort the installation if the destination + * folder already exists. When true, `$clear_destination` + * should be false. Default true. + * @type bool $is_multi Whether this run is one of multiple upgrade/install + * actions being performed in bulk. When true, the skin + * {@see WP_Upgrader::header()} and {@see WP_Upgrader::footer()} + * aren't called. Default false. + * @type array $hook_extra Extra arguments to pass to the filter hooks called by + * {@see WP_Upgrader::run()}. + * } + * + * @return array|false|WP_error The result from self::install_package() on success, otherwise a WP_Error, + * or false if unable to connect to the filesystem. + */ + public function run( $options ) { + + $defaults = array( + 'package' => '', // Please always pass this. + 'destination' => '', // And this + 'clear_destination' => false, + 'abort_if_destination_exists' => true, // Abort if the Destination directory exists, Pass clear_destination as false please + 'clear_working' => true, + 'is_multi' => false, + 'hook_extra' => array() // Pass any extra $hook_extra args here, this will be passed to any hooked filters. + ); + + $options = wp_parse_args( $options, $defaults ); + + /** + * Filter the package options before running an update. + * + * @since 4.3.0 + * + * @param array $options { + * Options used by the upgrader. + * + * @type string $package Package for update. + * @type string $destination Update location. + * @type bool $clear_destination Clear the destination resource. + * @type bool $clear_working Clear the working resource. + * @type bool $abort_if_destination_exists Abort if the Destination directory exists. + * @type bool $is_multi Whether the upgrader is running multiple times. + * @type array $hook_extra Extra hook arguments. + * } + */ + $options = apply_filters( 'upgrader_package_options', $options ); + + if ( ! $options['is_multi'] ) { // call $this->header separately if running multiple times + $this->skin->header(); + } + + // Connect to the Filesystem first. + $res = $this->fs_connect( array( WP_CONTENT_DIR, $options['destination'] ) ); + // Mainly for non-connected filesystem. + if ( ! $res ) { + if ( ! $options['is_multi'] ) { + $this->skin->footer(); + } + return false; + } + + $this->skin->before(); + + if ( is_wp_error($res) ) { + $this->skin->error($res); + $this->skin->after(); + if ( ! $options['is_multi'] ) { + $this->skin->footer(); + } + return $res; + } + + //Download the package (Note, This just returns the filename of the file if the package is a local file) + $download = $this->download_package( $options['package'] ); + if ( is_wp_error($download) ) { + $this->skin->error($download); + $this->skin->after(); + if ( ! $options['is_multi'] ) { + $this->skin->footer(); + } + return $download; + } + + $delete_package = ( $download != $options['package'] ); // Do not delete a "local" file + + //Unzips the file into a temporary directory + $working_dir = $this->unpack_package( $download, $delete_package ); + if ( is_wp_error($working_dir) ) { + $this->skin->error($working_dir); + $this->skin->after(); + if ( ! $options['is_multi'] ) { + $this->skin->footer(); + } + return $working_dir; + } + + //With the given options, this installs it to the destination directory. + $result = $this->install_package( array( + 'source' => $working_dir, + 'destination' => $options['destination'], + 'clear_destination' => $options['clear_destination'], + 'abort_if_destination_exists' => $options['abort_if_destination_exists'], + 'clear_working' => $options['clear_working'], + 'hook_extra' => $options['hook_extra'] + ) ); + + $this->skin->set_result($result); + if ( is_wp_error($result) ) { + $this->skin->error($result); + $this->skin->feedback('process_failed'); + } else { + //Install Succeeded + $this->skin->feedback('process_success'); + } + + $this->skin->after(); + + if ( ! $options['is_multi'] ) { + + /** This action is documented in wp-admin/includes/class-wp-upgrader.php */ + do_action( 'upgrader_process_complete', $this, $options['hook_extra'] ); + $this->skin->footer(); + } + + return $result; + } + + /** + * Toggle maintenance mode for the site. + * + * Creates/deletes the maintenance file to enable/disable maintenance mode. + * + * @since 2.8.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param bool $enable True to enable maintenance mode, false to disable. + */ + public function maintenance_mode( $enable = false ) { + global $wp_filesystem; + $file = $wp_filesystem->abspath() . '.maintenance'; + if ( $enable ) { + $this->skin->feedback('maintenance_start'); + // Create maintenance file to signal that we are upgrading + $maintenance_string = ''; + $wp_filesystem->delete($file); + $wp_filesystem->put_contents($file, $maintenance_string, FS_CHMOD_FILE); + } elseif ( ! $enable && $wp_filesystem->exists( $file ) ) { + $this->skin->feedback('maintenance_end'); + $wp_filesystem->delete($file); + } + } + +} + +/** + * Plugin Upgrader class for WordPress Plugins, It is designed to upgrade/install plugins from a local zip, remote zip URL, or uploaded zip file. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Plugin_Upgrader extends WP_Upgrader { + + /** + * Plugin upgrade result. + * + * @since 2.8.0 + * @var array|WP_Error $result + * @see WP_Upgrader::$result + */ + public $result; + + /** + * Whether a bulk upgrade/install is being performed. + * + * @since 2.9.0 + * @var bool $bulk + */ + public $bulk = false; + + /** + * Initialize the upgrade strings. + * + * @since 2.8.0 + */ + public function upgrade_strings() { + $this->strings['up_to_date'] = __('The plugin is at the latest version.'); + $this->strings['no_package'] = __('Update package not available.'); + $this->strings['downloading_package'] = __('Downloading update from %s…'); + $this->strings['unpack_package'] = __('Unpacking the update…'); + $this->strings['remove_old'] = __('Removing the old version of the plugin…'); + $this->strings['remove_old_failed'] = __('Could not remove the old plugin.'); + $this->strings['process_failed'] = __('Plugin update failed.'); + $this->strings['process_success'] = __('Plugin updated successfully.'); + $this->strings['process_bulk_success'] = __('Plugins updated successfully.'); + } + + /** + * Initialize the install strings. + * + * @since 2.8.0 + */ + public function install_strings() { + $this->strings['no_package'] = __('Install package not available.'); + $this->strings['downloading_package'] = __('Downloading install package from %s…'); + $this->strings['unpack_package'] = __('Unpacking the package…'); + $this->strings['installing_package'] = __('Installing the plugin…'); + $this->strings['no_files'] = __('The plugin contains no files.'); + $this->strings['process_failed'] = __('Plugin install failed.'); + $this->strings['process_success'] = __('Plugin installed successfully.'); + } + + /** + * Install a plugin package. + * + * @since 2.8.0 + * @since 3.7.0 The `$args` parameter was added, making clearing the plugin update cache optional. + * + * @param string $package The full local path or URI of the package. + * @param array $args { + * Optional. Other arguments for installing a plugin package. Default empty array. + * + * @type bool $clear_update_cache Whether to clear the plugin updates cache if successful. + * Default true. + * } + * + * @return bool|WP_Error True if the install was successful, false or a WP_Error otherwise. + */ + public function install( $package, $args = array() ) { + + $defaults = array( + 'clear_update_cache' => true, + ); + $parsed_args = wp_parse_args( $args, $defaults ); + + $this->init(); + $this->install_strings(); + + add_filter('upgrader_source_selection', array($this, 'check_package') ); + + $this->run( array( + 'package' => $package, + 'destination' => WP_PLUGIN_DIR, + 'clear_destination' => false, // Do not overwrite files. + 'clear_working' => true, + 'hook_extra' => array( + 'type' => 'plugin', + 'action' => 'install', + ) + ) ); + + remove_filter('upgrader_source_selection', array($this, 'check_package') ); + + if ( ! $this->result || is_wp_error($this->result) ) + return $this->result; + + // Force refresh of plugin update information + wp_clean_plugins_cache( $parsed_args['clear_update_cache'] ); + + return true; + } + + /** + * Upgrade a plugin. + * + * @since 2.8.0 + * @since 3.7.0 The `$args` parameter was added, making clearing the plugin update cache optional. + * + * @param string $plugin The basename path to the main plugin file. + * @param array $args { + * Optional. Other arguments for upgrading a plugin package. Defualt empty array. + * + * @type bool $clear_update_cache Whether to clear the plugin updates cache if successful. + * Default true. + * } + * @return bool|WP_Error True if the upgrade was successful, false or a {@see WP_Error} object otherwise. + */ + public function upgrade( $plugin, $args = array() ) { + + $defaults = array( + 'clear_update_cache' => true, + ); + $parsed_args = wp_parse_args( $args, $defaults ); + + $this->init(); + $this->upgrade_strings(); + + $current = get_site_transient( 'update_plugins' ); + if ( !isset( $current->response[ $plugin ] ) ) { + $this->skin->before(); + $this->skin->set_result(false); + $this->skin->error('up_to_date'); + $this->skin->after(); + return false; + } + + // Get the URL to the zip file + $r = $current->response[ $plugin ]; + + add_filter('upgrader_pre_install', array($this, 'deactivate_plugin_before_upgrade'), 10, 2); + add_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'), 10, 4); + //'source_selection' => array($this, 'source_selection'), //there's a trac ticket to move up the directory for zip's which are made a bit differently, useful for non-.org plugins. + + $this->run( array( + 'package' => $r->package, + 'destination' => WP_PLUGIN_DIR, + 'clear_destination' => true, + 'clear_working' => true, + 'hook_extra' => array( + 'plugin' => $plugin, + 'type' => 'plugin', + 'action' => 'update', + ), + ) ); + + // Cleanup our hooks, in case something else does a upgrade on this connection. + remove_filter('upgrader_pre_install', array($this, 'deactivate_plugin_before_upgrade')); + remove_filter('upgrader_clear_destination', array($this, 'delete_old_plugin')); + + if ( ! $this->result || is_wp_error($this->result) ) + return $this->result; + + // Force refresh of plugin update information + wp_clean_plugins_cache( $parsed_args['clear_update_cache'] ); + + return true; + } + + /** + * Bulk upgrade several plugins at once. + * + * @since 2.8.0 + * @since 3.7.0 The `$args` parameter was added, making clearing the plugin update cache optional. + * + * @param array $plugins Array of the basename paths of the plugins' main files. + * @param array $args { + * Optional. Other arguments for upgrading several plugins at once. Default empty array. + * + * @type bool $clear_update_cache Whether to clear the plugin updates cache if successful. + * Default true. + * } + * + * @return array|false An array of results indexed by plugin file, or false if unable to connect to the filesystem. + */ + public function bulk_upgrade( $plugins, $args = array() ) { + + $defaults = array( + 'clear_update_cache' => true, + ); + $parsed_args = wp_parse_args( $args, $defaults ); + + $this->init(); + $this->bulk = true; + $this->upgrade_strings(); + + $current = get_site_transient( 'update_plugins' ); + + add_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'), 10, 4); + + $this->skin->header(); + + // Connect to the Filesystem first. + $res = $this->fs_connect( array(WP_CONTENT_DIR, WP_PLUGIN_DIR) ); + if ( ! $res ) { + $this->skin->footer(); + return false; + } + + $this->skin->bulk_header(); + + // Only start maintenance mode if: + // - running Multisite and there are one or more plugins specified, OR + // - a plugin with an update available is currently active. + // @TODO: For multisite, maintenance mode should only kick in for individual sites if at all possible. + $maintenance = ( is_multisite() && ! empty( $plugins ) ); + foreach ( $plugins as $plugin ) + $maintenance = $maintenance || ( is_plugin_active( $plugin ) && isset( $current->response[ $plugin] ) ); + if ( $maintenance ) + $this->maintenance_mode(true); + + $results = array(); + + $this->update_count = count($plugins); + $this->update_current = 0; + foreach ( $plugins as $plugin ) { + $this->update_current++; + $this->skin->plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin, false, true); + + if ( !isset( $current->response[ $plugin ] ) ) { + $this->skin->set_result('up_to_date'); + $this->skin->before(); + $this->skin->feedback('up_to_date'); + $this->skin->after(); + $results[$plugin] = true; + continue; + } + + // Get the URL to the zip file + $r = $current->response[ $plugin ]; + + $this->skin->plugin_active = is_plugin_active($plugin); + + $result = $this->run( array( + 'package' => $r->package, + 'destination' => WP_PLUGIN_DIR, + 'clear_destination' => true, + 'clear_working' => true, + 'is_multi' => true, + 'hook_extra' => array( + 'plugin' => $plugin + ) + ) ); + + $results[$plugin] = $this->result; + + // Prevent credentials auth screen from displaying multiple times + if ( false === $result ) + break; + } //end foreach $plugins + + $this->maintenance_mode(false); + + /** + * Fires when the bulk upgrader process is complete. + * + * @since 3.6.0 + * + * @param Plugin_Upgrader $this Plugin_Upgrader instance. In other contexts, $this, might + * be a Theme_Upgrader or Core_Upgrade instance. + * @param array $data { + * Array of bulk item update data. + * + * @type string $action Type of action. Default 'update'. + * @type string $type Type of update process. Accepts 'plugin', 'theme', or 'core'. + * @type bool $bulk Whether the update process is a bulk update. Default true. + * @type array $packages Array of plugin, theme, or core packages to update. + * } + */ + do_action( 'upgrader_process_complete', $this, array( + 'action' => 'update', + 'type' => 'plugin', + 'bulk' => true, + 'plugins' => $plugins, + ) ); + + $this->skin->bulk_footer(); + + $this->skin->footer(); + + // Cleanup our hooks, in case something else does a upgrade on this connection. + remove_filter('upgrader_clear_destination', array($this, 'delete_old_plugin')); + + // Force refresh of plugin update information + wp_clean_plugins_cache( $parsed_args['clear_update_cache'] ); + + return $results; + } + + /** + * Check a source package to be sure it contains a plugin. + * + * This function is added to the {@see 'upgrader_source_selection'} filter by + * {@see Plugin_Upgrader::install()}. + * + * @since 3.3.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param string $source The path to the downloaded package source. + * @return string|WP_Error The source as passed, or a {@see WP_Error} object if no plugins were found. + */ + public function check_package($source) { + global $wp_filesystem; + + if ( is_wp_error($source) ) + return $source; + + $working_directory = str_replace( $wp_filesystem->wp_content_dir(), trailingslashit(WP_CONTENT_DIR), $source); + if ( ! is_dir($working_directory) ) // Sanity check, if the above fails, let's not prevent installation. + return $source; + + // Check the folder contains at least 1 valid plugin. + $plugins_found = false; + $files = glob( $working_directory . '*.php' ); + if ( $files ) { + foreach ( $files as $file ) { + $info = get_plugin_data( $file, false, false ); + if ( ! empty( $info['Name'] ) ) { + $plugins_found = true; + break; + } + } + } + + if ( ! $plugins_found ) + return new WP_Error( 'incompatible_archive_no_plugins', $this->strings['incompatible_archive'], __( 'No valid plugins were found.' ) ); + + return $source; + } + + /** + * Retrieve the path to the file that contains the plugin info. + * + * This isn't used internally in the class, but is called by the skins. + * + * @since 2.8.0 + * + * @return string|false The full path to the main plugin file, or false. + */ + public function plugin_info() { + if ( ! is_array($this->result) ) + return false; + if ( empty($this->result['destination_name']) ) + return false; + + $plugin = get_plugins('/' . $this->result['destination_name']); //Ensure to pass with leading slash + if ( empty($plugin) ) + return false; + + $pluginfiles = array_keys($plugin); //Assume the requested plugin is the first in the list + + return $this->result['destination_name'] . '/' . $pluginfiles[0]; + } + + /** + * Deactivates a plugin before it is upgraded. + * + * Hooked to the {@see 'upgrader_pre_install'} filter by {@see Plugin_Upgrader::upgrade()}. + * + * @since 2.8.0 + * @since 4.1.0 Added a return value. + * + * @param bool|WP_Error $return Upgrade offer return. + * @param array $plugin Plugin package arguments. + * @return bool|WP_Error The passed in $return param or {@see WP_Error}. + */ + public function deactivate_plugin_before_upgrade($return, $plugin) { + + if ( is_wp_error($return) ) //Bypass. + return $return; + + // When in cron (background updates) don't deactivate the plugin, as we require a browser to reactivate it + if ( defined( 'DOING_CRON' ) && DOING_CRON ) + return $return; + + $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : ''; + if ( empty($plugin) ) + return new WP_Error('bad_request', $this->strings['bad_request']); + + if ( is_plugin_active($plugin) ) { + //Deactivate the plugin silently, Prevent deactivation hooks from running. + deactivate_plugins($plugin, true); + } + + return $return; + } + + /** + * Delete the old plugin during an upgrade. + * + * Hooked to the {@see 'upgrader_clear_destination'} filter by + * {@see Plugin_Upgrader::upgrade()} and {@see Plugin_Upgrader::bulk_upgrade()}. + * + * @since 2.8.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param bool|WP_Error $removed + * @param string $local_destination + * @param string $remote_destination + * @param array $plugin + * @return WP_Error|bool + */ + public function delete_old_plugin($removed, $local_destination, $remote_destination, $plugin) { + global $wp_filesystem; + + if ( is_wp_error($removed) ) + return $removed; //Pass errors through. + + $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : ''; + if ( empty($plugin) ) + return new WP_Error('bad_request', $this->strings['bad_request']); + + $plugins_dir = $wp_filesystem->wp_plugins_dir(); + $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin) ); + + if ( ! $wp_filesystem->exists($this_plugin_dir) ) //If it's already vanished. + return $removed; + + // If plugin is in its own directory, recursively delete the directory. + if ( strpos($plugin, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory separator AND that it's not the root plugin folder + $deleted = $wp_filesystem->delete($this_plugin_dir, true); + else + $deleted = $wp_filesystem->delete($plugins_dir . $plugin); + + if ( ! $deleted ) + return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']); + + return true; + } +} + +/** + * Theme Upgrader class for WordPress Themes, It is designed to upgrade/install themes from a local zip, remote zip URL, or uploaded zip file. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Theme_Upgrader extends WP_Upgrader { + + /** + * Result of the theme upgrade offer. + * + * @since 2.8.0 + * @var array|WP_Erorr $result + * @see WP_Upgrader::$result + */ + public $result; + + /** + * Whether multiple plugins are being upgraded/installed in bulk. + * + * @since 2.9.0 + * @var bool $bulk + */ + public $bulk = false; + + /** + * Initialize the upgrade strings. + * + * @since 2.8.0 + */ + public function upgrade_strings() { + $this->strings['up_to_date'] = __('The theme is at the latest version.'); + $this->strings['no_package'] = __('Update package not available.'); + $this->strings['downloading_package'] = __('Downloading update from %s…'); + $this->strings['unpack_package'] = __('Unpacking the update…'); + $this->strings['remove_old'] = __('Removing the old version of the theme…'); + $this->strings['remove_old_failed'] = __('Could not remove the old theme.'); + $this->strings['process_failed'] = __('Theme update failed.'); + $this->strings['process_success'] = __('Theme updated successfully.'); + } + + /** + * Initialize the install strings. + * + * @since 2.8.0 + */ + public function install_strings() { + $this->strings['no_package'] = __('Install package not available.'); + $this->strings['downloading_package'] = __('Downloading install package from %s…'); + $this->strings['unpack_package'] = __('Unpacking the package…'); + $this->strings['installing_package'] = __('Installing the theme…'); + $this->strings['no_files'] = __('The theme contains no files.'); + $this->strings['process_failed'] = __('Theme install failed.'); + $this->strings['process_success'] = __('Theme installed successfully.'); + /* translators: 1: theme name, 2: version */ + $this->strings['process_success_specific'] = __('Successfully installed the theme %1$s %2$s.'); + $this->strings['parent_theme_search'] = __('This theme requires a parent theme. Checking if it is installed…'); + /* translators: 1: theme name, 2: version */ + $this->strings['parent_theme_prepare_install'] = __('Preparing to install %1$s %2$s…'); + /* translators: 1: theme name, 2: version */ + $this->strings['parent_theme_currently_installed'] = __('The parent theme, %1$s %2$s, is currently installed.'); + /* translators: 1: theme name, 2: version */ + $this->strings['parent_theme_install_success'] = __('Successfully installed the parent theme, %1$s %2$s.'); + $this->strings['parent_theme_not_found'] = __('The parent theme could not be found. You will need to install the parent theme, %s, before you can use this child theme.'); + } + + /** + * Check if a child theme is being installed and we need to install its parent. + * + * Hooked to the {@see 'upgrader_post_install'} filter by {@see Theme_Upgrader::install()}. + * + * @since 3.4.0 + * + * @param bool $install_result + * @param array $hook_extra + * @param array $child_result + * @return type + */ + public function check_parent_theme_filter( $install_result, $hook_extra, $child_result ) { + // Check to see if we need to install a parent theme + $theme_info = $this->theme_info(); + + if ( ! $theme_info->parent() ) + return $install_result; + + $this->skin->feedback( 'parent_theme_search' ); + + if ( ! $theme_info->parent()->errors() ) { + $this->skin->feedback( 'parent_theme_currently_installed', $theme_info->parent()->display('Name'), $theme_info->parent()->display('Version') ); + // We already have the theme, fall through. + return $install_result; + } + + // We don't have the parent theme, let's install it. + $api = themes_api('theme_information', array('slug' => $theme_info->get('Template'), 'fields' => array('sections' => false, 'tags' => false) ) ); //Save on a bit of bandwidth. + + if ( ! $api || is_wp_error($api) ) { + $this->skin->feedback( 'parent_theme_not_found', $theme_info->get('Template') ); + // Don't show activate or preview actions after install + add_filter('install_theme_complete_actions', array($this, 'hide_activate_preview_actions') ); + return $install_result; + } + + // Backup required data we're going to override: + $child_api = $this->skin->api; + $child_success_message = $this->strings['process_success']; + + // Override them + $this->skin->api = $api; + $this->strings['process_success_specific'] = $this->strings['parent_theme_install_success'];//, $api->name, $api->version); + + $this->skin->feedback('parent_theme_prepare_install', $api->name, $api->version); + + add_filter('install_theme_complete_actions', '__return_false', 999); // Don't show any actions after installing the theme. + + // Install the parent theme + $parent_result = $this->run( array( + 'package' => $api->download_link, + 'destination' => get_theme_root(), + 'clear_destination' => false, //Do not overwrite files. + 'clear_working' => true + ) ); + + if ( is_wp_error($parent_result) ) + add_filter('install_theme_complete_actions', array($this, 'hide_activate_preview_actions') ); + + // Start cleaning up after the parents installation + remove_filter('install_theme_complete_actions', '__return_false', 999); + + // Reset child's result and data + $this->result = $child_result; + $this->skin->api = $child_api; + $this->strings['process_success'] = $child_success_message; + + return $install_result; + } + + /** + * Don't display the activate and preview actions to the user. + * + * Hooked to the {@see 'install_theme_complete_actions'} filter by + * {@see Theme_Upgrader::check_parent_theme_filter()} when installing + * a child theme and installing the parent theme fails. + * + * @since 3.4.0 + * + * @param array $actions Preview actions. + * @return array + */ + public function hide_activate_preview_actions( $actions ) { + unset($actions['activate'], $actions['preview']); + return $actions; + } + + /** + * Install a theme package. + * + * @since 2.8.0 + * @since 3.7.0 The `$args` parameter was added, making clearing the update cache optional. + * + * @param string $package The full local path or URI of the package. + * @param array $args { + * Optional. Other arguments for installing a theme package. Default empty array. + * + * @type bool $clear_update_cache Whether to clear the updates cache if successful. + * Default true. + * } + * + * @return bool|WP_Error True if the install was successful, false or a {@see WP_Error} object otherwise. + */ + public function install( $package, $args = array() ) { + + $defaults = array( + 'clear_update_cache' => true, + ); + $parsed_args = wp_parse_args( $args, $defaults ); + + $this->init(); + $this->install_strings(); + + add_filter('upgrader_source_selection', array($this, 'check_package') ); + add_filter('upgrader_post_install', array($this, 'check_parent_theme_filter'), 10, 3); + + $this->run( array( + 'package' => $package, + 'destination' => get_theme_root(), + 'clear_destination' => false, //Do not overwrite files. + 'clear_working' => true, + 'hook_extra' => array( + 'type' => 'theme', + 'action' => 'install', + ), + ) ); + + remove_filter('upgrader_source_selection', array($this, 'check_package') ); + remove_filter('upgrader_post_install', array($this, 'check_parent_theme_filter')); + + if ( ! $this->result || is_wp_error($this->result) ) + return $this->result; + + // Refresh the Theme Update information + wp_clean_themes_cache( $parsed_args['clear_update_cache'] ); + + return true; + } + + /** + * Upgrade a theme. + * + * @since 2.8.0 + * @since 3.7.0 The `$args` parameter was added, making clearing the update cache optional. + * + * @param string $theme The theme slug. + * @param array $args { + * Optional. Other arguments for upgrading a theme. Default empty array. + * + * @type bool $clear_update_cache Whether to clear the update cache if successful. + * Default true. + * } + * @return bool|WP_Error True if the upgrade was successful, false or a {@see WP_Error} object otherwise. + */ + public function upgrade( $theme, $args = array() ) { + + $defaults = array( + 'clear_update_cache' => true, + ); + $parsed_args = wp_parse_args( $args, $defaults ); + + $this->init(); + $this->upgrade_strings(); + + // Is an update available? + $current = get_site_transient( 'update_themes' ); + if ( !isset( $current->response[ $theme ] ) ) { + $this->skin->before(); + $this->skin->set_result(false); + $this->skin->error( 'up_to_date' ); + $this->skin->after(); + return false; + } + + $r = $current->response[ $theme ]; + + add_filter('upgrader_pre_install', array($this, 'current_before'), 10, 2); + add_filter('upgrader_post_install', array($this, 'current_after'), 10, 2); + add_filter('upgrader_clear_destination', array($this, 'delete_old_theme'), 10, 4); + + $this->run( array( + 'package' => $r['package'], + 'destination' => get_theme_root( $theme ), + 'clear_destination' => true, + 'clear_working' => true, + 'hook_extra' => array( + 'theme' => $theme, + 'type' => 'theme', + 'action' => 'update', + ), + ) ); + + remove_filter('upgrader_pre_install', array($this, 'current_before')); + remove_filter('upgrader_post_install', array($this, 'current_after')); + remove_filter('upgrader_clear_destination', array($this, 'delete_old_theme')); + + if ( ! $this->result || is_wp_error($this->result) ) + return $this->result; + + wp_clean_themes_cache( $parsed_args['clear_update_cache'] ); + + return true; + } + + /** + * Upgrade several themes at once. + * + * @since 3.0.0 + * @since 3.7.0 The `$args` parameter was added, making clearing the update cache optional. + * + * @param array $themes The theme slugs. + * @param array $args { + * Optional. Other arguments for upgrading several themes at once. Default empty array. + * + * @type bool $clear_update_cache Whether to clear the update cache if successful. + * Default true. + * } + * @return array[]|false An array of results, or false if unable to connect to the filesystem. + */ + public function bulk_upgrade( $themes, $args = array() ) { + + $defaults = array( + 'clear_update_cache' => true, + ); + $parsed_args = wp_parse_args( $args, $defaults ); + + $this->init(); + $this->bulk = true; + $this->upgrade_strings(); + + $current = get_site_transient( 'update_themes' ); + + add_filter('upgrader_pre_install', array($this, 'current_before'), 10, 2); + add_filter('upgrader_post_install', array($this, 'current_after'), 10, 2); + add_filter('upgrader_clear_destination', array($this, 'delete_old_theme'), 10, 4); + + $this->skin->header(); + + // Connect to the Filesystem first. + $res = $this->fs_connect( array(WP_CONTENT_DIR) ); + if ( ! $res ) { + $this->skin->footer(); + return false; + } + + $this->skin->bulk_header(); + + // Only start maintenance mode if: + // - running Multisite and there are one or more themes specified, OR + // - a theme with an update available is currently in use. + // @TODO: For multisite, maintenance mode should only kick in for individual sites if at all possible. + $maintenance = ( is_multisite() && ! empty( $themes ) ); + foreach ( $themes as $theme ) + $maintenance = $maintenance || $theme == get_stylesheet() || $theme == get_template(); + if ( $maintenance ) + $this->maintenance_mode(true); + + $results = array(); + + $this->update_count = count($themes); + $this->update_current = 0; + foreach ( $themes as $theme ) { + $this->update_current++; + + $this->skin->theme_info = $this->theme_info($theme); + + if ( !isset( $current->response[ $theme ] ) ) { + $this->skin->set_result(true); + $this->skin->before(); + $this->skin->feedback( 'up_to_date' ); + $this->skin->after(); + $results[$theme] = true; + continue; + } + + // Get the URL to the zip file + $r = $current->response[ $theme ]; + + $result = $this->run( array( + 'package' => $r['package'], + 'destination' => get_theme_root( $theme ), + 'clear_destination' => true, + 'clear_working' => true, + 'is_multi' => true, + 'hook_extra' => array( + 'theme' => $theme + ), + ) ); + + $results[$theme] = $this->result; + + // Prevent credentials auth screen from displaying multiple times + if ( false === $result ) + break; + } //end foreach $plugins + + $this->maintenance_mode(false); + + /** This action is documented in wp-admin/includes/class-wp-upgrader.php */ + do_action( 'upgrader_process_complete', $this, array( + 'action' => 'update', + 'type' => 'theme', + 'bulk' => true, + 'themes' => $themes, + ) ); + + $this->skin->bulk_footer(); + + $this->skin->footer(); + + // Cleanup our hooks, in case something else does a upgrade on this connection. + remove_filter('upgrader_pre_install', array($this, 'current_before')); + remove_filter('upgrader_post_install', array($this, 'current_after')); + remove_filter('upgrader_clear_destination', array($this, 'delete_old_theme')); + + // Refresh the Theme Update information + wp_clean_themes_cache( $parsed_args['clear_update_cache'] ); + + return $results; + } + + /** + * Check that the package source contains a valid theme. + * + * Hooked to the {@see 'upgrader_source_selection'} filter by {@see Theme_Upgrader::install()}. + * It will return an error if the theme doesn't have style.css or index.php + * files. + * + * @since 3.3.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param string $source The full path to the package source. + * @return string|WP_Error The source or a WP_Error. + */ + public function check_package( $source ) { + global $wp_filesystem; + + if ( is_wp_error($source) ) + return $source; + + // Check the folder contains a valid theme + $working_directory = str_replace( $wp_filesystem->wp_content_dir(), trailingslashit(WP_CONTENT_DIR), $source); + if ( ! is_dir($working_directory) ) // Sanity check, if the above fails, let's not prevent installation. + return $source; + + // A proper archive should have a style.css file in the single subdirectory + if ( ! file_exists( $working_directory . 'style.css' ) ) + return new WP_Error( 'incompatible_archive_theme_no_style', $this->strings['incompatible_archive'], __( 'The theme is missing the style.css stylesheet.' ) ); + + $info = get_file_data( $working_directory . 'style.css', array( 'Name' => 'Theme Name', 'Template' => 'Template' ) ); + + if ( empty( $info['Name'] ) ) + return new WP_Error( 'incompatible_archive_theme_no_name', $this->strings['incompatible_archive'], __( "The style.css stylesheet doesn't contain a valid theme header." ) ); + + // If it's not a child theme, it must have at least an index.php to be legit. + if ( empty( $info['Template'] ) && ! file_exists( $working_directory . 'index.php' ) ) + return new WP_Error( 'incompatible_archive_theme_no_index', $this->strings['incompatible_archive'], __( 'The theme is missing the index.php file.' ) ); + + return $source; + } + + /** + * Turn on maintenance mode before attempting to upgrade the current theme. + * + * Hooked to the {@see 'upgrader_pre_install'} filter by {@see Theme_Upgrader::upgrade()} and + * {@see Theme_Upgrader::bulk_upgrade()}. + * + * @since 2.8.0 + * + * @param bool|WP_Error $return + * @param array $theme + * @return bool|WP_Error + */ + public function current_before($return, $theme) { + if ( is_wp_error($return) ) + return $return; + + $theme = isset($theme['theme']) ? $theme['theme'] : ''; + + if ( $theme != get_stylesheet() ) //If not current + return $return; + //Change to maintenance mode now. + if ( ! $this->bulk ) + $this->maintenance_mode(true); + + return $return; + } + + /** + * Turn off maintenance mode after upgrading the current theme. + * + * Hooked to the {@see 'upgrader_post_install'} filter by {@see Theme_Upgrader::upgrade()} + * and {@see Theme_Upgrader::bulk_upgrade()}. + * + * @since 2.8.0 + * + * @param bool|WP_Error $return + * @param array $theme + * @return bool|WP_Error + */ + public function current_after($return, $theme) { + if ( is_wp_error($return) ) + return $return; + + $theme = isset($theme['theme']) ? $theme['theme'] : ''; + + if ( $theme != get_stylesheet() ) // If not current + return $return; + + // Ensure stylesheet name hasn't changed after the upgrade: + if ( $theme == get_stylesheet() && $theme != $this->result['destination_name'] ) { + wp_clean_themes_cache(); + $stylesheet = $this->result['destination_name']; + switch_theme( $stylesheet ); + } + + //Time to remove maintenance mode + if ( ! $this->bulk ) + $this->maintenance_mode(false); + return $return; + } + + /** + * Delete the old theme during an upgrade. + * + * Hooked to the {@see 'upgrader_clear_destination'} filter by {@see Theme_Upgrader::upgrade()} + * and {@see Theme_Upgrader::bulk_upgrade()}. + * + * @since 2.8.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param bool $removed + * @param string $local_destination + * @param string $remote_destination + * @param array $theme + * @return bool + */ + public function delete_old_theme( $removed, $local_destination, $remote_destination, $theme ) { + global $wp_filesystem; + + if ( is_wp_error( $removed ) ) + return $removed; // Pass errors through. + + if ( ! isset( $theme['theme'] ) ) + return $removed; + + $theme = $theme['theme']; + $themes_dir = trailingslashit( $wp_filesystem->wp_themes_dir( $theme ) ); + if ( $wp_filesystem->exists( $themes_dir . $theme ) ) { + if ( ! $wp_filesystem->delete( $themes_dir . $theme, true ) ) + return false; + } + + return true; + } + + /** + * Get the WP_Theme object for a theme. + * + * @since 2.8.0 + * @since 3.0.0 The `$theme` argument was added. + * + * @param string $theme The directory name of the theme. This is optional, and if not supplied, + * the directory name from the last result will be used. + * @return WP_Theme|false The theme's info object, or false `$theme` is not supplied + * and the last result isn't set. + */ + public function theme_info($theme = null) { + + if ( empty($theme) ) { + if ( !empty($this->result['destination_name']) ) + $theme = $this->result['destination_name']; + else + return false; + } + return wp_get_theme( $theme ); + } + +} + +/** + * Language pack upgrader, for updating translations of plugins, themes, and core. + * + * @package WordPress + * @subpackage Upgrader + * @since 3.7.0 + */ +class Language_Pack_Upgrader extends WP_Upgrader { + + /** + * Result of the language pack upgrade. + * + * @since 3.7.0 + * @var array|WP_Error $result + * @see WP_Upgrader::$result + */ + public $result; + + /** + * Whether a bulk upgrade/install is being performed. + * + * @since 3.7.0 + * @var bool $bulk + */ + public $bulk = true; + + /** + * Asynchronously upgrade language packs after other upgrades have been made. + * + * Hooked to the {@see 'upgrader_process_complete'} action by default. + * + * @since 3.7.0 + * + * @static + * + * @param false|WP_Upgrader $upgrader + */ + public static function async_upgrade( $upgrader = false ) { + // Avoid recursion. + if ( $upgrader && $upgrader instanceof Language_Pack_Upgrader ) { + return; + } + + // Nothing to do? + $language_updates = wp_get_translation_updates(); + if ( ! $language_updates ) { + return; + } + + // Avoid messing with VCS installs, at least for now. + // Noted: this is not the ideal way to accomplish this. + $check_vcs = new WP_Automatic_Updater; + if ( $check_vcs->is_vcs_checkout( WP_CONTENT_DIR ) ) { + return; + } + + foreach ( $language_updates as $key => $language_update ) { + $update = ! empty( $language_update->autoupdate ); + + /** + * Filter whether to asynchronously update translation for core, a plugin, or a theme. + * + * @since 4.0.0 + * + * @param bool $update Whether to update. + * @param object $language_update The update offer. + */ + $update = apply_filters( 'async_update_translation', $update, $language_update ); + + if ( ! $update ) { + unset( $language_updates[ $key ] ); + } + } + + if ( empty( $language_updates ) ) { + return; + } + + $skin = new Language_Pack_Upgrader_Skin( array( + 'skip_header_footer' => true, + ) ); + + $lp_upgrader = new Language_Pack_Upgrader( $skin ); + $lp_upgrader->bulk_upgrade( $language_updates ); + } + + /** + * Initialize the upgrade strings. + * + * @since 3.7.0 + */ + public function upgrade_strings() { + $this->strings['starting_upgrade'] = __( 'Some of your translations need updating. Sit tight for a few more seconds while we update them as well.' ); + $this->strings['up_to_date'] = __( 'The translation is up to date.' ); // We need to silently skip this case + $this->strings['no_package'] = __( 'Update package not available.' ); + $this->strings['downloading_package'] = __( 'Downloading translation from %s…' ); + $this->strings['unpack_package'] = __( 'Unpacking the update…' ); + $this->strings['process_failed'] = __( 'Translation update failed.' ); + $this->strings['process_success'] = __( 'Translation updated successfully.' ); + } + + /** + * Upgrade a language pack. + * + * @since 3.7.0 + * + * @param string|false $update Optional. Whether an update offer is available. Default false. + * @param array $args Optional. Other optional arguments, see + * {@see Language_Pack_Upgrader::bulk_upgrade()}. Default empty array. + * @return array|bool|WP_Error The result of the upgrade, or a {@see wP_Error} object instead. + */ + public function upgrade( $update = false, $args = array() ) { + if ( $update ) { + $update = array( $update ); + } + + $results = $this->bulk_upgrade( $update, $args ); + + if ( ! is_array( $results ) ) { + return $results; + } + + return $results[0]; + } + + /** + * Bulk upgrade language packs. + * + * @since 3.7.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param array $language_updates Optional. Language pack updates. Default empty array. + * @param array $args { + * Optional. Other arguments for upgrading multiple language packs. Default empty array + * + * @type bool $clear_update_cache Whether to clear the update cache when done. + * Default true. + * } + * @return array|bool|WP_Error Will return an array of results, or true if there are no updates, + * false or WP_Error for initial errors. + */ + public function bulk_upgrade( $language_updates = array(), $args = array() ) { + global $wp_filesystem; + + $defaults = array( + 'clear_update_cache' => true, + ); + $parsed_args = wp_parse_args( $args, $defaults ); + + $this->init(); + $this->upgrade_strings(); + + if ( ! $language_updates ) + $language_updates = wp_get_translation_updates(); + + if ( empty( $language_updates ) ) { + $this->skin->header(); + $this->skin->before(); + $this->skin->set_result( true ); + $this->skin->feedback( 'up_to_date' ); + $this->skin->after(); + $this->skin->bulk_footer(); + $this->skin->footer(); + return true; + } + + if ( 'upgrader_process_complete' == current_filter() ) + $this->skin->feedback( 'starting_upgrade' ); + + // Remove any existing upgrade filters from the plugin/theme upgraders #WP29425 & #WP29230 + remove_all_filters( 'upgrader_pre_install' ); + remove_all_filters( 'upgrader_clear_destination' ); + remove_all_filters( 'upgrader_post_install' ); + remove_all_filters( 'upgrader_source_selection' ); + + add_filter( 'upgrader_source_selection', array( $this, 'check_package' ), 10, 2 ); + + $this->skin->header(); + + // Connect to the Filesystem first. + $res = $this->fs_connect( array( WP_CONTENT_DIR, WP_LANG_DIR ) ); + if ( ! $res ) { + $this->skin->footer(); + return false; + } + + $results = array(); + + $this->update_count = count( $language_updates ); + $this->update_current = 0; + + /* + * The filesystem's mkdir() is not recursive. Make sure WP_LANG_DIR exists, + * as we then may need to create a /plugins or /themes directory inside of it. + */ + $remote_destination = $wp_filesystem->find_folder( WP_LANG_DIR ); + if ( ! $wp_filesystem->exists( $remote_destination ) ) + if ( ! $wp_filesystem->mkdir( $remote_destination, FS_CHMOD_DIR ) ) + return new WP_Error( 'mkdir_failed_lang_dir', $this->strings['mkdir_failed'], $remote_destination ); + + foreach ( $language_updates as $language_update ) { + + $this->skin->language_update = $language_update; + + $destination = WP_LANG_DIR; + if ( 'plugin' == $language_update->type ) + $destination .= '/plugins'; + elseif ( 'theme' == $language_update->type ) + $destination .= '/themes'; + + $this->update_current++; + + $options = array( + 'package' => $language_update->package, + 'destination' => $destination, + 'clear_destination' => false, + 'abort_if_destination_exists' => false, // We expect the destination to exist. + 'clear_working' => true, + 'is_multi' => true, + 'hook_extra' => array( + 'language_update_type' => $language_update->type, + 'language_update' => $language_update, + ) + ); + + $result = $this->run( $options ); + + $results[] = $this->result; + + // Prevent credentials auth screen from displaying multiple times. + if ( false === $result ) + break; + } + + $this->skin->bulk_footer(); + + $this->skin->footer(); + + // Clean up our hooks, in case something else does an upgrade on this connection. + remove_filter( 'upgrader_source_selection', array( $this, 'check_package' ) ); + + if ( $parsed_args['clear_update_cache'] ) { + wp_clean_update_cache(); + } + + return $results; + } + + /** + * Check the package source to make sure there are .mo and .po files. + * + * Hooked to the {@see 'upgrader_source_selection'} filter by + * {@see Language_Pack_Upgrader::bulk_upgrade()}. + * + * @since 3.7.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param string|WP_Error $source + * @param string $remote_source + */ + public function check_package( $source, $remote_source ) { + global $wp_filesystem; + + if ( is_wp_error( $source ) ) + return $source; + + // Check that the folder contains a valid language. + $files = $wp_filesystem->dirlist( $remote_source ); + + // Check to see if a .po and .mo exist in the folder. + $po = $mo = false; + foreach ( (array) $files as $file => $filedata ) { + if ( '.po' == substr( $file, -3 ) ) + $po = true; + elseif ( '.mo' == substr( $file, -3 ) ) + $mo = true; + } + + if ( ! $mo || ! $po ) + return new WP_Error( 'incompatible_archive_pomo', $this->strings['incompatible_archive'], + __( 'The language pack is missing either the .po or .mo files.' ) ); + + return $source; + } + + /** + * Get the name of an item being updated. + * + * @since 3.7.0 + * + * @param object $update The data for an update. + * @return string The name of the item being updated. + */ + public function get_name_for_update( $update ) { + switch ( $update->type ) { + case 'core': + return 'WordPress'; // Not translated + + case 'theme': + $theme = wp_get_theme( $update->slug ); + if ( $theme->exists() ) + return $theme->Get( 'Name' ); + break; + case 'plugin': + $plugin_data = get_plugins( '/' . $update->slug ); + $plugin_data = reset( $plugin_data ); + if ( $plugin_data ) + return $plugin_data['Name']; + break; + } + return ''; + } + +} + +/** + * Core Upgrader class for WordPress. It allows for WordPress to upgrade itself in combination with the wp-admin/includes/update-core.php file + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Core_Upgrader extends WP_Upgrader { + + /** + * Initialize the upgrade strings. + * + * @since 2.8.0 + */ + public function upgrade_strings() { + $this->strings['up_to_date'] = __('WordPress is at the latest version.'); + $this->strings['no_package'] = __('Update package not available.'); + $this->strings['downloading_package'] = __('Downloading update from %s…'); + $this->strings['unpack_package'] = __('Unpacking the update…'); + $this->strings['copy_failed'] = __('Could not copy files.'); + $this->strings['copy_failed_space'] = __('Could not copy files. You may have run out of disk space.' ); + $this->strings['start_rollback'] = __( 'Attempting to roll back to previous version.' ); + $this->strings['rollback_was_required'] = __( 'Due to an error during updating, WordPress has rolled back to your previous version.' ); + } + + /** + * Upgrade WordPress core. + * + * @since 2.8.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * @global callback $_wp_filesystem_direct_method + * + * @param object $current Response object for whether WordPress is current. + * @param array $args { + * Optional. Arguments for upgrading WordPress core. Default empty array. + * + * @type bool $pre_check_md5 Whether to check the file checksums before + * attempting the upgrade. Default true. + * @type bool $attempt_rollback Whether to attempt to rollback the chances if + * there is a problem. Default false. + * @type bool $do_rollback Whether to perform this "upgrade" as a rollback. + * Default false. + * } + * @return null|false|WP_Error False or WP_Error on failure, null on success. + */ + public function upgrade( $current, $args = array() ) { + global $wp_filesystem; + + include( ABSPATH . WPINC . '/version.php' ); // $wp_version; + + $start_time = time(); + + $defaults = array( + 'pre_check_md5' => true, + 'attempt_rollback' => false, + 'do_rollback' => false, + 'allow_relaxed_file_ownership' => false, + ); + $parsed_args = wp_parse_args( $args, $defaults ); + + $this->init(); + $this->upgrade_strings(); + + // Is an update available? + if ( !isset( $current->response ) || $current->response == 'latest' ) + return new WP_Error('up_to_date', $this->strings['up_to_date']); + + $res = $this->fs_connect( array( ABSPATH, WP_CONTENT_DIR ), $parsed_args['allow_relaxed_file_ownership'] ); + if ( ! $res || is_wp_error( $res ) ) { + return $res; + } + + $wp_dir = trailingslashit($wp_filesystem->abspath()); + + $partial = true; + if ( $parsed_args['do_rollback'] ) + $partial = false; + elseif ( $parsed_args['pre_check_md5'] && ! $this->check_files() ) + $partial = false; + + /* + * If partial update is returned from the API, use that, unless we're doing + * a reinstall. If we cross the new_bundled version number, then use + * the new_bundled zip. Don't though if the constant is set to skip bundled items. + * If the API returns a no_content zip, go with it. Finally, default to the full zip. + */ + if ( $parsed_args['do_rollback'] && $current->packages->rollback ) + $to_download = 'rollback'; + elseif ( $current->packages->partial && 'reinstall' != $current->response && $wp_version == $current->partial_version && $partial ) + $to_download = 'partial'; + elseif ( $current->packages->new_bundled && version_compare( $wp_version, $current->new_bundled, '<' ) + && ( ! defined( 'CORE_UPGRADE_SKIP_NEW_BUNDLED' ) || ! CORE_UPGRADE_SKIP_NEW_BUNDLED ) ) + $to_download = 'new_bundled'; + elseif ( $current->packages->no_content ) + $to_download = 'no_content'; + else + $to_download = 'full'; + + $download = $this->download_package( $current->packages->$to_download ); + if ( is_wp_error($download) ) + return $download; + + $working_dir = $this->unpack_package( $download ); + if ( is_wp_error($working_dir) ) + return $working_dir; + + // Copy update-core.php from the new version into place. + if ( !$wp_filesystem->copy($working_dir . '/wordpress/wp-admin/includes/update-core.php', $wp_dir . 'wp-admin/includes/update-core.php', true) ) { + $wp_filesystem->delete($working_dir, true); + return new WP_Error( 'copy_failed_for_update_core_file', __( 'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.' ), 'wp-admin/includes/update-core.php' ); + } + $wp_filesystem->chmod($wp_dir . 'wp-admin/includes/update-core.php', FS_CHMOD_FILE); + + require_once( ABSPATH . 'wp-admin/includes/update-core.php' ); + + if ( ! function_exists( 'update_core' ) ) + return new WP_Error( 'copy_failed_space', $this->strings['copy_failed_space'] ); + + $result = update_core( $working_dir, $wp_dir ); + + // In the event of an issue, we may be able to roll back. + if ( $parsed_args['attempt_rollback'] && $current->packages->rollback && ! $parsed_args['do_rollback'] ) { + $try_rollback = false; + if ( is_wp_error( $result ) ) { + $error_code = $result->get_error_code(); + /* + * Not all errors are equal. These codes are critical: copy_failed__copy_dir, + * mkdir_failed__copy_dir, copy_failed__copy_dir_retry, and disk_full. + * do_rollback allows for update_core() to trigger a rollback if needed. + */ + if ( false !== strpos( $error_code, 'do_rollback' ) ) + $try_rollback = true; + elseif ( false !== strpos( $error_code, '__copy_dir' ) ) + $try_rollback = true; + elseif ( 'disk_full' === $error_code ) + $try_rollback = true; + } + + if ( $try_rollback ) { + /** This filter is documented in wp-admin/includes/update-core.php */ + apply_filters( 'update_feedback', $result ); + + /** This filter is documented in wp-admin/includes/update-core.php */ + apply_filters( 'update_feedback', $this->strings['start_rollback'] ); + + $rollback_result = $this->upgrade( $current, array_merge( $parsed_args, array( 'do_rollback' => true ) ) ); + + $original_result = $result; + $result = new WP_Error( 'rollback_was_required', $this->strings['rollback_was_required'], (object) array( 'update' => $original_result, 'rollback' => $rollback_result ) ); + } + } + + /** This action is documented in wp-admin/includes/class-wp-upgrader.php */ + do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', 'type' => 'core' ) ); + + // Clear the current updates + delete_site_transient( 'update_core' ); + + if ( ! $parsed_args['do_rollback'] ) { + $stats = array( + 'update_type' => $current->response, + 'success' => true, + 'fs_method' => $wp_filesystem->method, + 'fs_method_forced' => defined( 'FS_METHOD' ) || has_filter( 'filesystem_method' ), + 'fs_method_direct' => !empty( $GLOBALS['_wp_filesystem_direct_method'] ) ? $GLOBALS['_wp_filesystem_direct_method'] : '', + 'time_taken' => time() - $start_time, + 'reported' => $wp_version, + 'attempted' => $current->version, + ); + + if ( is_wp_error( $result ) ) { + $stats['success'] = false; + // Did a rollback occur? + if ( ! empty( $try_rollback ) ) { + $stats['error_code'] = $original_result->get_error_code(); + $stats['error_data'] = $original_result->get_error_data(); + // Was the rollback successful? If not, collect its error too. + $stats['rollback'] = ! is_wp_error( $rollback_result ); + if ( is_wp_error( $rollback_result ) ) { + $stats['rollback_code'] = $rollback_result->get_error_code(); + $stats['rollback_data'] = $rollback_result->get_error_data(); + } + } else { + $stats['error_code'] = $result->get_error_code(); + $stats['error_data'] = $result->get_error_data(); + } + } + + wp_version_check( $stats ); + } + + return $result; + } + + /** + * Determines if this WordPress Core version should update to an offered version or not. + * + * @since 3.7.0 + * + * @static + * + * @param string $offered_ver The offered version, of the format x.y.z. + * @return bool True if we should update to the offered version, otherwise false. + */ + public static function should_update_to_version( $offered_ver ) { + include( ABSPATH . WPINC . '/version.php' ); // $wp_version; // x.y.z + + $current_branch = implode( '.', array_slice( preg_split( '/[.-]/', $wp_version ), 0, 2 ) ); // x.y + $new_branch = implode( '.', array_slice( preg_split( '/[.-]/', $offered_ver ), 0, 2 ) ); // x.y + $current_is_development_version = (bool) strpos( $wp_version, '-' ); + + // Defaults: + $upgrade_dev = true; + $upgrade_minor = true; + $upgrade_major = false; + + // WP_AUTO_UPDATE_CORE = true (all), 'minor', false. + if ( defined( 'WP_AUTO_UPDATE_CORE' ) ) { + if ( false === WP_AUTO_UPDATE_CORE ) { + // Defaults to turned off, unless a filter allows it + $upgrade_dev = $upgrade_minor = $upgrade_major = false; + } elseif ( true === WP_AUTO_UPDATE_CORE ) { + // ALL updates for core + $upgrade_dev = $upgrade_minor = $upgrade_major = true; + } elseif ( 'minor' === WP_AUTO_UPDATE_CORE ) { + // Only minor updates for core + $upgrade_dev = $upgrade_major = false; + $upgrade_minor = true; + } + } + + // 1: If we're already on that version, not much point in updating? + if ( $offered_ver == $wp_version ) + return false; + + // 2: If we're running a newer version, that's a nope + if ( version_compare( $wp_version, $offered_ver, '>' ) ) + return false; + + $failure_data = get_site_option( 'auto_core_update_failed' ); + if ( $failure_data ) { + // If this was a critical update failure, cannot update. + if ( ! empty( $failure_data['critical'] ) ) + return false; + + // Don't claim we can update on update-core.php if we have a non-critical failure logged. + if ( $wp_version == $failure_data['current'] && false !== strpos( $offered_ver, '.1.next.minor' ) ) + return false; + + // Cannot update if we're retrying the same A to B update that caused a non-critical failure. + // Some non-critical failures do allow retries, like download_failed. + // 3.7.1 => 3.7.2 resulted in files_not_writable, if we are still on 3.7.1 and still trying to update to 3.7.2. + if ( empty( $failure_data['retry'] ) && $wp_version == $failure_data['current'] && $offered_ver == $failure_data['attempted'] ) + return false; + } + + // 3: 3.7-alpha-25000 -> 3.7-alpha-25678 -> 3.7-beta1 -> 3.7-beta2 + if ( $current_is_development_version ) { + + /** + * Filter whether to enable automatic core updates for development versions. + * + * @since 3.7.0 + * + * @param bool $upgrade_dev Whether to enable automatic updates for + * development versions. + */ + if ( ! apply_filters( 'allow_dev_auto_core_updates', $upgrade_dev ) ) + return false; + // Else fall through to minor + major branches below. + } + + // 4: Minor In-branch updates (3.7.0 -> 3.7.1 -> 3.7.2 -> 3.7.4) + if ( $current_branch == $new_branch ) { + + /** + * Filter whether to enable minor automatic core updates. + * + * @since 3.7.0 + * + * @param bool $upgrade_minor Whether to enable minor automatic core updates. + */ + return apply_filters( 'allow_minor_auto_core_updates', $upgrade_minor ); + } + + // 5: Major version updates (3.7.0 -> 3.8.0 -> 3.9.1) + if ( version_compare( $new_branch, $current_branch, '>' ) ) { + + /** + * Filter whether to enable major automatic core updates. + * + * @since 3.7.0 + * + * @param bool $upgrade_major Whether to enable major automatic core updates. + */ + return apply_filters( 'allow_major_auto_core_updates', $upgrade_major ); + } + + // If we're not sure, we don't want it + return false; + } + + /** + * Compare the disk file checksums agains the expected checksums. + * + * @since 3.7.0 + * + * @global string $wp_version + * @global string $wp_local_package + * + * @return bool True if the checksums match, otherwise false. + */ + public function check_files() { + global $wp_version, $wp_local_package; + + $checksums = get_core_checksums( $wp_version, isset( $wp_local_package ) ? $wp_local_package : 'en_US' ); + + if ( ! is_array( $checksums ) ) + return false; + + foreach ( $checksums as $file => $checksum ) { + // Skip files which get updated + if ( 'wp-content' == substr( $file, 0, 10 ) ) + continue; + if ( ! file_exists( ABSPATH . $file ) || md5_file( ABSPATH . $file ) !== $checksum ) + return false; + } + + return true; + } +} + +/** + * Upgrade Skin helper for File uploads. This class handles the upload process and passes it as if it's a local file to the Upgrade/Installer functions. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class File_Upload_Upgrader { + + /** + * The full path to the file package. + * + * @since 2.8.0 + * @var string $package + */ + public $package; + + /** + * The name of the file. + * + * @since 2.8.0 + * @var string $filename + */ + public $filename; + + /** + * The ID of the attachment post for this file. + * + * @since 3.3.0 + * @var int $id + */ + public $id = 0; + + /** + * Construct the upgrader for a form. + * + * @since 2.8.0 + * + * @param string $form The name of the form the file was uploaded from. + * @param string $urlholder The name of the `GET` parameter that holds the filename. + */ + public function __construct( $form, $urlholder ) { + + if ( empty($_FILES[$form]['name']) && empty($_GET[$urlholder]) ) + wp_die(__('Please select a file')); + + //Handle a newly uploaded file, Else assume it's already been uploaded + if ( ! empty($_FILES) ) { + $overrides = array( 'test_form' => false, 'test_type' => false ); + $file = wp_handle_upload( $_FILES[$form], $overrides ); + + if ( isset( $file['error'] ) ) + wp_die( $file['error'] ); + + $this->filename = $_FILES[$form]['name']; + $this->package = $file['file']; + + // Construct the object array + $object = array( + 'post_title' => $this->filename, + 'post_content' => $file['url'], + 'post_mime_type' => $file['type'], + 'guid' => $file['url'], + 'context' => 'upgrader', + 'post_status' => 'private' + ); + + // Save the data. + $this->id = wp_insert_attachment( $object, $file['file'] ); + + // Schedule a cleanup for 2 hours from now in case of failed install. + wp_schedule_single_event( time() + 2 * HOUR_IN_SECONDS, 'upgrader_scheduled_cleanup', array( $this->id ) ); + + } elseif ( is_numeric( $_GET[$urlholder] ) ) { + // Numeric Package = previously uploaded file, see above. + $this->id = (int) $_GET[$urlholder]; + $attachment = get_post( $this->id ); + if ( empty($attachment) ) + wp_die(__('Please select a file')); + + $this->filename = $attachment->post_title; + $this->package = get_attached_file( $attachment->ID ); + } else { + // Else, It's set to something, Back compat for plugins using the old (pre-3.3) File_Uploader handler. + if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) ) + wp_die( $uploads['error'] ); + + $this->filename = $_GET[$urlholder]; + $this->package = $uploads['basedir'] . '/' . $this->filename; + } + } + + /** + * Delete the attachment/uploaded file. + * + * @since 3.2.2 + * + * @return bool Whether the cleanup was successful. + */ + public function cleanup() { + if ( $this->id ) + wp_delete_attachment( $this->id ); + + elseif ( file_exists( $this->package ) ) + return @unlink( $this->package ); + + return true; + } +} + +/** + * The WordPress automatic background updater. + * + * @package WordPress + * @subpackage Upgrader + * @since 3.7.0 + */ +class WP_Automatic_Updater { + + /** + * Tracks update results during processing. + * + * @var array + */ + protected $update_results = array(); + + /** + * Whether the entire automatic updater is disabled. + * + * @since 3.7.0 + */ + public function is_disabled() { + // Background updates are disabled if you don't want file changes. + if ( defined( 'DISALLOW_FILE_MODS' ) && DISALLOW_FILE_MODS ) + return true; + + if ( defined( 'WP_INSTALLING' ) ) + return true; + + // More fine grained control can be done through the WP_AUTO_UPDATE_CORE constant and filters. + $disabled = defined( 'AUTOMATIC_UPDATER_DISABLED' ) && AUTOMATIC_UPDATER_DISABLED; + + /** + * Filter whether to entirely disable background updates. + * + * There are more fine-grained filters and controls for selective disabling. + * This filter parallels the AUTOMATIC_UPDATER_DISABLED constant in name. + * + * This also disables update notification emails. That may change in the future. + * + * @since 3.7.0 + * + * @param bool $disabled Whether the updater should be disabled. + */ + return apply_filters( 'automatic_updater_disabled', $disabled ); + } + + /** + * Check for version control checkouts. + * + * Checks for Subversion, Git, Mercurial, and Bazaar. It recursively looks up the + * filesystem to the top of the drive, erring on the side of detecting a VCS + * checkout somewhere. + * + * ABSPATH is always checked in addition to whatever $context is (which may be the + * wp-content directory, for example). The underlying assumption is that if you are + * using version control *anywhere*, then you should be making decisions for + * how things get updated. + * + * @since 3.7.0 + * + * @param string $context The filesystem path to check, in addition to ABSPATH. + */ + public function is_vcs_checkout( $context ) { + $context_dirs = array( untrailingslashit( $context ) ); + if ( $context !== ABSPATH ) + $context_dirs[] = untrailingslashit( ABSPATH ); + + $vcs_dirs = array( '.svn', '.git', '.hg', '.bzr' ); + $check_dirs = array(); + + foreach ( $context_dirs as $context_dir ) { + // Walk up from $context_dir to the root. + do { + $check_dirs[] = $context_dir; + + // Once we've hit '/' or 'C:\', we need to stop. dirname will keep returning the input here. + if ( $context_dir == dirname( $context_dir ) ) + break; + + // Continue one level at a time. + } while ( $context_dir = dirname( $context_dir ) ); + } + + $check_dirs = array_unique( $check_dirs ); + + // Search all directories we've found for evidence of version control. + foreach ( $vcs_dirs as $vcs_dir ) { + foreach ( $check_dirs as $check_dir ) { + if ( $checkout = @is_dir( rtrim( $check_dir, '\\/' ) . "/$vcs_dir" ) ) + break 2; + } + } + + /** + * Filter whether the automatic updater should consider a filesystem + * location to be potentially managed by a version control system. + * + * @since 3.7.0 + * + * @param bool $checkout Whether a VCS checkout was discovered at $context + * or ABSPATH, or anywhere higher. + * @param string $context The filesystem context (a path) against which + * filesystem status should be checked. + */ + return apply_filters( 'automatic_updates_is_vcs_checkout', $checkout, $context ); + } + + /** + * Tests to see if we can and should update a specific item. + * + * @since 3.7.0 + * + * @global wpdb $wpdb + * + * @param string $type The type of update being checked: 'core', 'theme', + * 'plugin', 'translation'. + * @param object $item The update offer. + * @param string $context The filesystem context (a path) against which filesystem + * access and status should be checked. + */ + public function should_update( $type, $item, $context ) { + // Used to see if WP_Filesystem is set up to allow unattended updates. + $skin = new Automatic_Upgrader_Skin; + + if ( $this->is_disabled() ) + return false; + + // Only relax the filesystem checks when the update doesn't include new files + $allow_relaxed_file_ownership = false; + if ( 'core' == $type && isset( $item->new_files ) && ! $item->new_files ) { + $allow_relaxed_file_ownership = true; + } + + // If we can't do an auto core update, we may still be able to email the user. + if ( ! $skin->request_filesystem_credentials( false, $context, $allow_relaxed_file_ownership ) || $this->is_vcs_checkout( $context ) ) { + if ( 'core' == $type ) + $this->send_core_update_notification_email( $item ); + return false; + } + + // Next up, is this an item we can update? + if ( 'core' == $type ) + $update = Core_Upgrader::should_update_to_version( $item->current ); + else + $update = ! empty( $item->autoupdate ); + + /** + * Filter whether to automatically update core, a plugin, a theme, or a language. + * + * The dynamic portion of the hook name, `$type`, refers to the type of update + * being checked. Can be 'core', 'theme', 'plugin', or 'translation'. + * + * Generally speaking, plugins, themes, and major core versions are not updated + * by default, while translations and minor and development versions for core + * are updated by default. + * + * See the {@see 'allow_dev_auto_core_updates', {@see 'allow_minor_auto_core_updates'}, + * and {@see 'allow_major_auto_core_updates'} filters for a more straightforward way to + * adjust core updates. + * + * @since 3.7.0 + * + * @param bool $update Whether to update. + * @param object $item The update offer. + */ + $update = apply_filters( 'auto_update_' . $type, $update, $item ); + + if ( ! $update ) { + if ( 'core' == $type ) + $this->send_core_update_notification_email( $item ); + return false; + } + + // If it's a core update, are we actually compatible with its requirements? + if ( 'core' == $type ) { + global $wpdb; + + $php_compat = version_compare( phpversion(), $item->php_version, '>=' ); + if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql ) ) + $mysql_compat = true; + else + $mysql_compat = version_compare( $wpdb->db_version(), $item->mysql_version, '>=' ); + + if ( ! $php_compat || ! $mysql_compat ) + return false; + } + + return true; + } + + /** + * Notifies an administrator of a core update. + * + * @since 3.7.0 + * + * @param object $item The update offer. + */ + protected function send_core_update_notification_email( $item ) { + $notified = get_site_option( 'auto_core_update_notified' ); + + // Don't notify if we've already notified the same email address of the same version. + if ( $notified && $notified['email'] == get_site_option( 'admin_email' ) && $notified['version'] == $item->current ) + return false; + + // See if we need to notify users of a core update. + $notify = ! empty( $item->notify_email ); + + /** + * Filter whether to notify the site administrator of a new core update. + * + * By default, administrators are notified when the update offer received + * from WordPress.org sets a particular flag. This allows some discretion + * in if and when to notify. + * + * This filter is only evaluated once per release. If the same email address + * was already notified of the same new version, WordPress won't repeatedly + * email the administrator. + * + * This filter is also used on about.php to check if a plugin has disabled + * these notifications. + * + * @since 3.7.0 + * + * @param bool $notify Whether the site administrator is notified. + * @param object $item The update offer. + */ + if ( ! apply_filters( 'send_core_update_notification_email', $notify, $item ) ) + return false; + + $this->send_email( 'manual', $item ); + return true; + } + + /** + * Update an item, if appropriate. + * + * @since 3.7.0 + * + * @param string $type The type of update being checked: 'core', 'theme', 'plugin', 'translation'. + * @param object $item The update offer. + * + * @return null|WP_Error + */ + public function update( $type, $item ) { + $skin = new Automatic_Upgrader_Skin; + + switch ( $type ) { + case 'core': + // The Core upgrader doesn't use the Upgrader's skin during the actual main part of the upgrade, instead, firing a filter. + add_filter( 'update_feedback', array( $skin, 'feedback' ) ); + $upgrader = new Core_Upgrader( $skin ); + $context = ABSPATH; + break; + case 'plugin': + $upgrader = new Plugin_Upgrader( $skin ); + $context = WP_PLUGIN_DIR; // We don't support custom Plugin directories, or updates for WPMU_PLUGIN_DIR + break; + case 'theme': + $upgrader = new Theme_Upgrader( $skin ); + $context = get_theme_root( $item->theme ); + break; + case 'translation': + $upgrader = new Language_Pack_Upgrader( $skin ); + $context = WP_CONTENT_DIR; // WP_LANG_DIR; + break; + } + + // Determine whether we can and should perform this update. + if ( ! $this->should_update( $type, $item, $context ) ) + return false; + + $upgrader_item = $item; + switch ( $type ) { + case 'core': + $skin->feedback( __( 'Updating to WordPress %s' ), $item->version ); + $item_name = sprintf( __( 'WordPress %s' ), $item->version ); + break; + case 'theme': + $upgrader_item = $item->theme; + $theme = wp_get_theme( $upgrader_item ); + $item_name = $theme->Get( 'Name' ); + $skin->feedback( __( 'Updating theme: %s' ), $item_name ); + break; + case 'plugin': + $upgrader_item = $item->plugin; + $plugin_data = get_plugin_data( $context . '/' . $upgrader_item ); + $item_name = $plugin_data['Name']; + $skin->feedback( __( 'Updating plugin: %s' ), $item_name ); + break; + case 'translation': + $language_item_name = $upgrader->get_name_for_update( $item ); + $item_name = sprintf( __( 'Translations for %s' ), $language_item_name ); + $skin->feedback( sprintf( __( 'Updating translations for %1$s (%2$s)…' ), $language_item_name, $item->language ) ); + break; + } + + $allow_relaxed_file_ownership = false; + if ( 'core' == $type && isset( $item->new_files ) && ! $item->new_files ) { + $allow_relaxed_file_ownership = true; + } + + // Boom, This sites about to get a whole new splash of paint! + $upgrade_result = $upgrader->upgrade( $upgrader_item, array( + 'clear_update_cache' => false, + // Always use partial builds if possible for core updates. + 'pre_check_md5' => false, + // Only available for core updates. + 'attempt_rollback' => true, + // Allow relaxed file ownership in some scenarios + 'allow_relaxed_file_ownership' => $allow_relaxed_file_ownership, + ) ); + + // If the filesystem is unavailable, false is returned. + if ( false === $upgrade_result ) { + $upgrade_result = new WP_Error( 'fs_unavailable', __( 'Could not access filesystem.' ) ); + } + + // Core doesn't output this, so let's append it so we don't get confused. + if ( 'core' == $type ) { + if ( is_wp_error( $upgrade_result ) ) { + $skin->error( __( 'Installation Failed' ), $upgrade_result ); + } else { + $skin->feedback( __( 'WordPress updated successfully' ) ); + } + } + + $this->update_results[ $type ][] = (object) array( + 'item' => $item, + 'result' => $upgrade_result, + 'name' => $item_name, + 'messages' => $skin->get_upgrade_messages() + ); + + return $upgrade_result; + } + + /** + * Kicks off the background update process, looping through all pending updates. + * + * @since 3.7.0 + * + * @global wpdb $wpdb + * @global string $wp_version + */ + public function run() { + global $wpdb, $wp_version; + + if ( $this->is_disabled() ) + return; + + if ( ! is_main_network() || ! is_main_site() ) + return; + + $lock_name = 'auto_updater.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 ); + + // If we couldn't create a lock, and there isn't a lock, bail + if ( ! $lock_result ) + return; + + // Check to see if the lock is still valid + if ( $lock_result > ( time() - HOUR_IN_SECONDS ) ) + 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() ); + + // Don't automatically run these thins, as we'll handle it ourselves + remove_action( 'upgrader_process_complete', array( 'Language_Pack_Upgrader', 'async_upgrade' ), 20 ); + remove_action( 'upgrader_process_complete', 'wp_version_check' ); + remove_action( 'upgrader_process_complete', 'wp_update_plugins' ); + remove_action( 'upgrader_process_complete', 'wp_update_themes' ); + + // Next, Plugins + wp_update_plugins(); // Check for Plugin updates + $plugin_updates = get_site_transient( 'update_plugins' ); + if ( $plugin_updates && !empty( $plugin_updates->response ) ) { + foreach ( $plugin_updates->response as $plugin ) { + $this->update( 'plugin', $plugin ); + } + // Force refresh of plugin update information + wp_clean_plugins_cache(); + } + + // Next, those themes we all love + wp_update_themes(); // Check for Theme updates + $theme_updates = get_site_transient( 'update_themes' ); + if ( $theme_updates && !empty( $theme_updates->response ) ) { + foreach ( $theme_updates->response as $theme ) { + $this->update( 'theme', (object) $theme ); + } + // Force refresh of theme update information + wp_clean_themes_cache(); + } + + // Next, Process any core update + wp_version_check(); // Check for Core updates + $core_update = find_core_auto_update(); + + if ( $core_update ) + $this->update( 'core', $core_update ); + + // Clean up, and check for any pending translations + // (Core_Upgrader checks for core updates) + $theme_stats = array(); + if ( isset( $this->update_results['theme'] ) ) { + foreach ( $this->update_results['theme'] as $upgrade ) { + $theme_stats[ $upgrade->item->theme ] = ( true === $upgrade->result ); + } + } + wp_update_themes( $theme_stats ); // Check for Theme updates + + $plugin_stats = array(); + if ( isset( $this->update_results['plugin'] ) ) { + foreach ( $this->update_results['plugin'] as $upgrade ) { + $plugin_stats[ $upgrade->item->plugin ] = ( true === $upgrade->result ); + } + } + wp_update_plugins( $plugin_stats ); // Check for Plugin updates + + // Finally, Process any new translations + $language_updates = wp_get_translation_updates(); + if ( $language_updates ) { + foreach ( $language_updates as $update ) { + $this->update( 'translation', $update ); + } + + // Clear existing caches + wp_clean_update_cache(); + + wp_version_check(); // check for Core updates + wp_update_themes(); // Check for Theme updates + wp_update_plugins(); // Check for Plugin updates + } + + // Send debugging email to all development installs. + if ( ! empty( $this->update_results ) ) { + $development_version = false !== strpos( $wp_version, '-' ); + + /** + * Filter whether to send a debugging email for each automatic background update. + * + * @since 3.7.0 + * + * @param bool $development_version By default, emails are sent if the + * install is a development version. + * Return false to avoid the email. + */ + if ( apply_filters( 'automatic_updates_send_debug_email', $development_version ) ) + $this->send_debug_email(); + + if ( ! empty( $this->update_results['core'] ) ) + $this->after_core_update( $this->update_results['core'][0] ); + + /** + * Fires after all automatic updates have run. + * + * @since 3.8.0 + * + * @param array $update_results The results of all attempted updates. + */ + do_action( 'automatic_updates_complete', $this->update_results ); + } + + // Clear the lock + delete_option( $lock_name ); + } + + /** + * If we tried to perform a core update, check if we should send an email, + * and if we need to avoid processing future updates. + * + * @global string $wp_version + * + * @param object|WP_Error $update_result The result of the core update. Includes the update offer and result. + */ + protected function after_core_update( $update_result ) { + global $wp_version; + + $core_update = $update_result->item; + $result = $update_result->result; + + if ( ! is_wp_error( $result ) ) { + $this->send_email( 'success', $core_update ); + return; + } + + $error_code = $result->get_error_code(); + + // Any of these WP_Error codes are critical failures, as in they occurred after we started to copy core files. + // We should not try to perform a background update again until there is a successful one-click update performed by the user. + $critical = false; + if ( $error_code === 'disk_full' || false !== strpos( $error_code, '__copy_dir' ) ) { + $critical = true; + } elseif ( $error_code === 'rollback_was_required' && is_wp_error( $result->get_error_data()->rollback ) ) { + // A rollback is only critical if it failed too. + $critical = true; + $rollback_result = $result->get_error_data()->rollback; + } elseif ( false !== strpos( $error_code, 'do_rollback' ) ) { + $critical = true; + } + + if ( $critical ) { + $critical_data = array( + 'attempted' => $core_update->current, + 'current' => $wp_version, + 'error_code' => $error_code, + 'error_data' => $result->get_error_data(), + 'timestamp' => time(), + 'critical' => true, + ); + if ( isset( $rollback_result ) ) { + $critical_data['rollback_code'] = $rollback_result->get_error_code(); + $critical_data['rollback_data'] = $rollback_result->get_error_data(); + } + update_site_option( 'auto_core_update_failed', $critical_data ); + $this->send_email( 'critical', $core_update, $result ); + return; + } + + /* + * Any other WP_Error code (like download_failed or files_not_writable) occurs before + * we tried to copy over core files. Thus, the failures are early and graceful. + * + * We should avoid trying to perform a background update again for the same version. + * But we can try again if another version is released. + * + * For certain 'transient' failures, like download_failed, we should allow retries. + * In fact, let's schedule a special update for an hour from now. (It's possible + * the issue could actually be on WordPress.org's side.) If that one fails, then email. + */ + $send = true; + $transient_failures = array( 'incompatible_archive', 'download_failed', 'insane_distro' ); + if ( in_array( $error_code, $transient_failures ) && ! get_site_option( 'auto_core_update_failed' ) ) { + wp_schedule_single_event( time() + HOUR_IN_SECONDS, 'wp_maybe_auto_update' ); + $send = false; + } + + $n = get_site_option( 'auto_core_update_notified' ); + // Don't notify if we've already notified the same email address of the same version of the same notification type. + if ( $n && 'fail' == $n['type'] && $n['email'] == get_site_option( 'admin_email' ) && $n['version'] == $core_update->current ) + $send = false; + + update_site_option( 'auto_core_update_failed', array( + 'attempted' => $core_update->current, + 'current' => $wp_version, + 'error_code' => $error_code, + 'error_data' => $result->get_error_data(), + 'timestamp' => time(), + 'retry' => in_array( $error_code, $transient_failures ), + ) ); + + if ( $send ) + $this->send_email( 'fail', $core_update, $result ); + } + + /** + * Sends an email upon the completion or failure of a background core update. + * + * @since 3.7.0 + * + * @global string $wp_version + * + * @param string $type The type of email to send. Can be one of 'success', 'fail', 'manual', 'critical'. + * @param object $core_update The update offer that was attempted. + * @param mixed $result Optional. The result for the core update. Can be WP_Error. + */ + protected function send_email( $type, $core_update, $result = null ) { + update_site_option( 'auto_core_update_notified', array( + 'type' => $type, + 'email' => get_site_option( 'admin_email' ), + 'version' => $core_update->current, + 'timestamp' => time(), + ) ); + + $next_user_core_update = get_preferred_from_update_core(); + // If the update transient is empty, use the update we just performed + if ( ! $next_user_core_update ) + $next_user_core_update = $core_update; + $newer_version_available = ( 'upgrade' == $next_user_core_update->response && version_compare( $next_user_core_update->version, $core_update->version, '>' ) ); + + /** + * Filter whether to send an email following an automatic background core update. + * + * @since 3.7.0 + * + * @param bool $send Whether to send the email. Default true. + * @param string $type The type of email to send. Can be one of + * 'success', 'fail', 'critical'. + * @param object $core_update The update offer that was attempted. + * @param mixed $result The result for the core update. Can be WP_Error. + */ + if ( 'manual' !== $type && ! apply_filters( 'auto_core_update_send_email', true, $type, $core_update, $result ) ) + return; + + switch ( $type ) { + case 'success' : // We updated. + /* translators: 1: Site name, 2: WordPress version number. */ + $subject = __( '[%1$s] Your site has updated to WordPress %2$s' ); + break; + + case 'fail' : // We tried to update but couldn't. + case 'manual' : // We can't update (and made no attempt). + /* translators: 1: Site name, 2: WordPress version number. */ + $subject = __( '[%1$s] WordPress %2$s is available. Please update!' ); + break; + + case 'critical' : // We tried to update, started to copy files, then things went wrong. + /* translators: 1: Site name. */ + $subject = __( '[%1$s] URGENT: Your site may be down due to a failed update' ); + break; + + default : + return; + } + + // If the auto update is not to the latest version, say that the current version of WP is available instead. + $version = 'success' === $type ? $core_update->current : $next_user_core_update->current; + $subject = sprintf( $subject, wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ), $version ); + + $body = ''; + + switch ( $type ) { + case 'success' : + $body .= sprintf( __( 'Howdy! Your site at %1$s has been updated automatically to WordPress %2$s.' ), home_url(), $core_update->current ); + $body .= "\n\n"; + if ( ! $newer_version_available ) + $body .= __( 'No further action is needed on your part.' ) . ' '; + + // Can only reference the About screen if their update was successful. + list( $about_version ) = explode( '-', $core_update->current, 2 ); + $body .= sprintf( __( "For more on version %s, see the About WordPress screen:" ), $about_version ); + $body .= "\n" . admin_url( 'about.php' ); + + if ( $newer_version_available ) { + $body .= "\n\n" . sprintf( __( 'WordPress %s is also now available.' ), $next_user_core_update->current ) . ' '; + $body .= __( 'Updating is easy and only takes a few moments:' ); + $body .= "\n" . network_admin_url( 'update-core.php' ); + } + + break; + + case 'fail' : + case 'manual' : + $body .= sprintf( __( 'Please update your site at %1$s to WordPress %2$s.' ), home_url(), $next_user_core_update->current ); + + $body .= "\n\n"; + + // Don't show this message if there is a newer version available. + // Potential for confusion, and also not useful for them to know at this point. + if ( 'fail' == $type && ! $newer_version_available ) + $body .= __( 'We tried but were unable to update your site automatically.' ) . ' '; + + $body .= __( 'Updating is easy and only takes a few moments:' ); + $body .= "\n" . network_admin_url( 'update-core.php' ); + break; + + case 'critical' : + if ( $newer_version_available ) + $body .= sprintf( __( 'Your site at %1$s experienced a critical failure while trying to update WordPress to version %2$s.' ), home_url(), $core_update->current ); + else + $body .= sprintf( __( 'Your site at %1$s experienced a critical failure while trying to update to the latest version of WordPress, %2$s.' ), home_url(), $core_update->current ); + + $body .= "\n\n" . __( "This means your site may be offline or broken. Don't panic; this can be fixed." ); + + $body .= "\n\n" . __( "Please check out your site now. It's possible that everything is working. If it says you need to update, you should do so:" ); + $body .= "\n" . network_admin_url( 'update-core.php' ); + break; + } + + $critical_support = 'critical' === $type && ! empty( $core_update->support_email ); + if ( $critical_support ) { + // Support offer if available. + $body .= "\n\n" . sprintf( __( "The WordPress team is willing to help you. Forward this email to %s and the team will work with you to make sure your site is working." ), $core_update->support_email ); + } else { + // Add a note about the support forums. + $body .= "\n\n" . __( 'If you experience any issues or need support, the volunteers in the WordPress.org support forums may be able to help.' ); + $body .= "\n" . __( 'https://wordpress.org/support/' ); + } + + // Updates are important! + if ( $type != 'success' || $newer_version_available ) { + $body .= "\n\n" . __( 'Keeping your site updated is important for security. It also makes the internet a safer place for you and your readers.' ); + } + + if ( $critical_support ) { + $body .= " " . __( "If you reach out to us, we'll also ensure you'll never have this problem again." ); + } + + // If things are successful and we're now on the latest, mention plugins and themes if any are out of date. + if ( $type == 'success' && ! $newer_version_available && ( get_plugin_updates() || get_theme_updates() ) ) { + $body .= "\n\n" . __( 'You also have some plugins or themes with updates available. Update them now:' ); + $body .= "\n" . network_admin_url(); + } + + $body .= "\n\n" . __( 'The WordPress Team' ) . "\n"; + + if ( 'critical' == $type && is_wp_error( $result ) ) { + $body .= "\n***\n\n"; + $body .= sprintf( __( 'Your site was running version %s.' ), $GLOBALS['wp_version'] ); + $body .= ' ' . __( 'We have some data that describes the error your site encountered.' ); + $body .= ' ' . __( 'Your hosting company, support forum volunteers, or a friendly developer may be able to use this information to help you:' ); + + // If we had a rollback and we're still critical, then the rollback failed too. + // Loop through all errors (the main WP_Error, the update result, the rollback result) for code, data, etc. + if ( 'rollback_was_required' == $result->get_error_code() ) + $errors = array( $result, $result->get_error_data()->update, $result->get_error_data()->rollback ); + else + $errors = array( $result ); + + foreach ( $errors as $error ) { + if ( ! is_wp_error( $error ) ) + continue; + $error_code = $error->get_error_code(); + $body .= "\n\n" . sprintf( __( "Error code: %s" ), $error_code ); + if ( 'rollback_was_required' == $error_code ) + continue; + if ( $error->get_error_message() ) + $body .= "\n" . $error->get_error_message(); + $error_data = $error->get_error_data(); + if ( $error_data ) + $body .= "\n" . implode( ', ', (array) $error_data ); + } + $body .= "\n"; + } + + $to = get_site_option( 'admin_email' ); + $headers = ''; + + $email = compact( 'to', 'subject', 'body', 'headers' ); + + /** + * Filter the email sent following an automatic background core update. + * + * @since 3.7.0 + * + * @param array $email { + * Array of email arguments that will be passed to wp_mail(). + * + * @type string $to The email recipient. An array of emails + * can be returned, as handled by wp_mail(). + * @type string $subject The email's subject. + * @type string $body The email message body. + * @type string $headers Any email headers, defaults to no headers. + * } + * @param string $type The type of email being sent. Can be one of + * 'success', 'fail', 'manual', 'critical'. + * @param object $core_update The update offer that was attempted. + * @param mixed $result The result for the core update. Can be WP_Error. + */ + $email = apply_filters( 'auto_core_update_email', $email, $type, $core_update, $result ); + + wp_mail( $email['to'], wp_specialchars_decode( $email['subject'] ), $email['body'], $email['headers'] ); + } + + /** + * Prepares and sends an email of a full log of background update results, useful for debugging and geekery. + * + * @since 3.7.0 + */ + protected function send_debug_email() { + $update_count = 0; + foreach ( $this->update_results as $type => $updates ) + $update_count += count( $updates ); + + $body = array(); + $failures = 0; + + $body[] = sprintf( __( 'WordPress site: %s' ), network_home_url( '/' ) ); + + // Core + if ( isset( $this->update_results['core'] ) ) { + $result = $this->update_results['core'][0]; + if ( $result->result && ! is_wp_error( $result->result ) ) { + $body[] = sprintf( __( 'SUCCESS: WordPress was successfully updated to %s' ), $result->name ); + } else { + $body[] = sprintf( __( 'FAILED: WordPress failed to update to %s' ), $result->name ); + $failures++; + } + $body[] = ''; + } + + // Plugins, Themes, Translations + foreach ( array( 'plugin', 'theme', 'translation' ) as $type ) { + if ( ! isset( $this->update_results[ $type ] ) ) + continue; + $success_items = wp_list_filter( $this->update_results[ $type ], array( 'result' => true ) ); + if ( $success_items ) { + $messages = array( + 'plugin' => __( 'The following plugins were successfully updated:' ), + 'theme' => __( 'The following themes were successfully updated:' ), + 'translation' => __( 'The following translations were successfully updated:' ), + ); + + $body[] = $messages[ $type ]; + foreach ( wp_list_pluck( $success_items, 'name' ) as $name ) { + $body[] = ' * ' . sprintf( __( 'SUCCESS: %s' ), $name ); + } + } + if ( $success_items != $this->update_results[ $type ] ) { + // Failed updates + $messages = array( + 'plugin' => __( 'The following plugins failed to update:' ), + 'theme' => __( 'The following themes failed to update:' ), + 'translation' => __( 'The following translations failed to update:' ), + ); + + $body[] = $messages[ $type ]; + foreach ( $this->update_results[ $type ] as $item ) { + if ( ! $item->result || is_wp_error( $item->result ) ) { + $body[] = ' * ' . sprintf( __( 'FAILED: %s' ), $item->name ); + $failures++; + } + } + } + $body[] = ''; + } + + $site_title = wp_specialchars_decode( get_bloginfo( 'name' ), ENT_QUOTES ); + if ( $failures ) { + $body[] = trim( __( +"BETA TESTING? +============= + +This debugging email is sent when you are using a development version of WordPress. + +If you think these failures might be due to a bug in WordPress, could you report it? + * Open a thread in the support forums: https://wordpress.org/support/forum/alphabeta + * Or, if you're comfortable writing a bug report: https://core.trac.wordpress.org/ + +Thanks! -- The WordPress Team" ) ); + $body[] = ''; + + $subject = sprintf( __( '[%s] There were failures during background updates' ), $site_title ); + } else { + $subject = sprintf( __( '[%s] Background updates have finished' ), $site_title ); + } + + $body[] = trim( __( +'UPDATE LOG +==========' ) ); + $body[] = ''; + + foreach ( array( 'core', 'plugin', 'theme', 'translation' ) as $type ) { + if ( ! isset( $this->update_results[ $type ] ) ) + continue; + foreach ( $this->update_results[ $type ] as $update ) { + $body[] = $update->name; + $body[] = str_repeat( '-', strlen( $update->name ) ); + foreach ( $update->messages as $message ) + $body[] = " " . html_entity_decode( str_replace( '…', '...', $message ) ); + if ( is_wp_error( $update->result ) ) { + $results = array( 'update' => $update->result ); + // If we rolled back, we want to know an error that occurred then too. + if ( 'rollback_was_required' === $update->result->get_error_code() ) + $results = (array) $update->result->get_error_data(); + foreach ( $results as $result_type => $result ) { + if ( ! is_wp_error( $result ) ) + continue; + + if ( 'rollback' === $result_type ) { + /* translators: 1: Error code, 2: Error message. */ + $body[] = ' ' . sprintf( __( 'Rollback Error: [%1$s] %2$s' ), $result->get_error_code(), $result->get_error_message() ); + } else { + /* translators: 1: Error code, 2: Error message. */ + $body[] = ' ' . sprintf( __( 'Error: [%1$s] %2$s' ), $result->get_error_code(), $result->get_error_message() ); + } + + if ( $result->get_error_data() ) + $body[] = ' ' . implode( ', ', (array) $result->get_error_data() ); + } + } + $body[] = ''; + } + } + + $email = array( + 'to' => get_site_option( 'admin_email' ), + 'subject' => $subject, + 'body' => implode( "\n", $body ), + 'headers' => '' + ); + + /** + * Filter the debug email that can be sent following an automatic + * background core update. + * + * @since 3.8.0 + * + * @param array $email { + * Array of email arguments that will be passed to wp_mail(). + * + * @type string $to The email recipient. An array of emails + * can be returned, as handled by wp_mail(). + * @type string $subject Email subject. + * @type string $body Email message body. + * @type string $headers Any email headers. Default empty. + * } + * @param int $failures The number of failures encountered while upgrading. + * @param mixed $results The results of all attempted updates. + */ + $email = apply_filters( 'automatic_updates_debug_email', $email, $failures, $this->update_results ); + + wp_mail( $email['to'], wp_specialchars_decode( $email['subject'] ), $email['body'], $email['headers'] ); + } +} diff --git a/wp-admin/includes/class-wp-users-list-table.php b/wp-admin/includes/class-wp-users-list-table.php new file mode 100644 index 0000000000..4035c58cb6 --- /dev/null +++ b/wp-admin/includes/class-wp-users-list-table.php @@ -0,0 +1,488 @@ + 'user', + 'plural' => 'users', + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, + ) ); + + $this->is_site_users = 'site-users-network' == $this->screen->id; + + if ( $this->is_site_users ) + $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; + } + + /** + * Check the current user's permissions. + * + * @since 3.1.0 + * @access public + * + * @return bool + */ + public function ajax_user_can() { + if ( $this->is_site_users ) + return current_user_can( 'manage_sites' ); + else + return current_user_can( 'list_users' ); + } + + /** + * Prepare the users list for display. + * + * @since 3.1.0 + * @access public + * + * @global string $role + * @global string $usersearch + */ + public function prepare_items() { + global $role, $usersearch; + + $usersearch = isset( $_REQUEST['s'] ) ? wp_unslash( trim( $_REQUEST['s'] ) ) : ''; + + $role = isset( $_REQUEST['role'] ) ? $_REQUEST['role'] : ''; + + $per_page = ( $this->is_site_users ) ? 'site_users_network_per_page' : 'users_per_page'; + $users_per_page = $this->get_items_per_page( $per_page ); + + $paged = $this->get_pagenum(); + + $args = array( + 'number' => $users_per_page, + 'offset' => ( $paged-1 ) * $users_per_page, + 'role' => $role, + 'search' => $usersearch, + 'fields' => 'all_with_meta' + ); + + if ( '' !== $args['search'] ) + $args['search'] = '*' . $args['search'] . '*'; + + if ( $this->is_site_users ) + $args['blog_id'] = $this->site_id; + + if ( isset( $_REQUEST['orderby'] ) ) + $args['orderby'] = $_REQUEST['orderby']; + + if ( isset( $_REQUEST['order'] ) ) + $args['order'] = $_REQUEST['order']; + + // Query the user IDs for this page + $wp_user_search = new WP_User_Query( $args ); + + $this->items = $wp_user_search->get_results(); + + $this->set_pagination_args( array( + 'total_items' => $wp_user_search->get_total(), + 'per_page' => $users_per_page, + ) ); + } + + /** + * Output 'no users' message. + * + * @since 3.1.0 + * @access public + */ + public function no_items() { + _e( 'No users found.' ); + } + + /** + * Return an associative array listing all the views that can be used + * with this table. + * + * Provides a list of roles and user count for that role for easy + * filtering of the user table. + * + * @since 3.1.0 + * @access protected + * + * @global string $role + * + * @return array An array of HTML links, one for each view. + */ + protected function get_views() { + global $role; + + $wp_roles = wp_roles(); + + if ( $this->is_site_users ) { + $url = 'site-users.php?id=' . $this->site_id; + switch_to_blog( $this->site_id ); + $users_of_blog = count_users(); + restore_current_blog(); + } else { + $url = 'users.php'; + $users_of_blog = count_users(); + } + $total_users = $users_of_blog['total_users']; + $avail_roles =& $users_of_blog['avail_roles']; + unset($users_of_blog); + + $class = empty($role) ? ' class="current"' : ''; + $role_links = array(); + $role_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $total_users, 'users' ), number_format_i18n( $total_users ) ) . ''; + foreach ( $wp_roles->get_names() as $this_role => $name ) { + if ( !isset($avail_roles[$this_role]) ) + continue; + + $class = ''; + + if ( $this_role == $role ) { + $class = ' class="current"'; + } + + $name = translate_user_role( $name ); + /* translators: User role name with count */ + $name = sprintf( __('%1$s (%2$s)'), $name, number_format_i18n( $avail_roles[$this_role] ) ); + $role_links[$this_role] = "$name"; + } + + return $role_links; + } + + /** + * Retrieve an associative array of bulk actions available on this table. + * + * @since 3.1.0 + * @access protected + * + * @return array Array of bulk actions. + */ + protected function get_bulk_actions() { + $actions = array(); + + if ( is_multisite() ) { + if ( current_user_can( 'remove_users' ) ) + $actions['remove'] = __( 'Remove' ); + } else { + if ( current_user_can( 'delete_users' ) ) + $actions['delete'] = __( 'Delete' ); + } + + return $actions; + } + + /** + * Output the controls to allow user roles to be changed in bulk. + * + * @since 3.1.0 + * @access protected + * + * @param string $which Whether this is being invoked above ("top") + * or below the table ("bottom"). + */ + protected function extra_tablenav( $which ) { + if ( 'top' != $which ) + return; + ?> +
+ + + + '; + } + + /** + * Capture the bulk action required, and return it. + * + * Overridden from the base class implementation to capture + * the role change drop-down. + * + * @since 3.1.0 + * @access public + * + * @return string The bulk action required. + */ + public function current_action() { + if ( isset($_REQUEST['changeit']) && !empty($_REQUEST['new_role']) ) + return 'promote'; + + return parent::current_action(); + } + + /** + * Get a list of columns for the list table. + * + * @since 3.1.0 + * @access public + * + * @return array Array in which the key is the ID of the column, + * and the value is the description. + */ + public function get_columns() { + $c = array( + 'cb' => '', + 'username' => __( 'Username' ), + 'name' => __( 'Name' ), + 'email' => __( 'E-mail' ), + 'role' => __( 'Role' ), + 'posts' => __( 'Posts' ) + ); + + if ( $this->is_site_users ) + unset( $c['posts'] ); + + return $c; + } + + /** + * Get a list of sortable columns for the list table. + * + * @since 3.1.0 + * @access protected + * + * @return array Array of sortable columns. + */ + protected function get_sortable_columns() { + $c = array( + 'username' => 'login', + 'name' => 'name', + 'email' => 'email', + ); + + if ( $this->is_site_users ) + unset( $c['posts'] ); + + return $c; + } + + /** + * Generate the list table rows. + * + * @since 3.1.0 + * @access public + */ + public function display_rows() { + // Query the post counts for this page + if ( ! $this->is_site_users ) + $post_counts = count_many_users_posts( array_keys( $this->items ) ); + + $editable_roles = array_keys( get_editable_roles() ); + + foreach ( $this->items as $userid => $user_object ) { + if ( count( $user_object->roles ) <= 1 ) { + $role = reset( $user_object->roles ); + } elseif ( $roles = array_intersect( array_values( $user_object->roles ), $editable_roles ) ) { + $role = reset( $roles ); + } else { + $role = reset( $user_object->roles ); + } + + if ( is_multisite() && empty( $user_object->allcaps ) ) + continue; + + echo "\n\t" . $this->single_row( $user_object, $style = '', $role, isset( $post_counts ) ? $post_counts[ $userid ] : 0 ); + } + } + + /** + * Generate HTML for a single row on the users.php admin panel. + * + * @since 3.1.0 + * @since 4.2.0 The `$style` argument was deprecated. + * @access public + * + * @param object $user_object The current user object. + * @param string $style Deprecated. Not used. + * @param string $role Optional. Key for the $wp_roles array. Default empty. + * @param int $numposts Optional. Post count to display for this user. Defaults + * to zero, as in, a new user has made zero posts. + * @return string Output for a single row. + */ + public function single_row( $user_object, $style = '', $role = '', $numposts = 0 ) { + $wp_roles = wp_roles(); + + if ( ! ( $user_object instanceof WP_User ) ) { + $user_object = get_userdata( (int) $user_object ); + } + $user_object->filter = 'display'; + $email = $user_object->user_email; + + if ( $this->is_site_users ) + $url = "site-users.php?id={$this->site_id}&"; + else + $url = 'users.php?'; + + $checkbox = ''; + // Check if the user for this row is editable + if ( current_user_can( 'list_users' ) ) { + // Set up the user editing link + $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user_object->ID ) ) ); + + // Set up the hover actions for this user + $actions = array(); + + if ( current_user_can( 'edit_user', $user_object->ID ) ) { + $edit = "$user_object->user_login
"; + $actions['edit'] = '' . __( 'Edit' ) . ''; + } else { + $edit = "$user_object->user_login
"; + } + + if ( !is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'delete_user', $user_object->ID ) ) + $actions['delete'] = "" . __( 'Delete' ) . ""; + if ( is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'remove_user', $user_object->ID ) ) + $actions['remove'] = "" . __( 'Remove' ) . ""; + + /** + * Filter the action links displayed under each user in the Users list table. + * + * @since 2.8.0 + * + * @param array $actions An array of action links to be displayed. + * Default 'Edit', 'Delete' for single site, and + * 'Edit', 'Remove' for Multisite. + * @param WP_User $user_object WP_User object for the currently-listed user. + */ + $actions = apply_filters( 'user_row_actions', $actions, $user_object ); + + // Set up the checkbox ( because the user is editable, otherwise it's empty ) + $checkbox = '' + . ""; + + } else { + $edit = '' . $user_object->user_login . ''; + } + $role_name = isset( $wp_roles->role_names[$role] ) ? translate_user_role( $wp_roles->role_names[$role] ) : __( 'None' ); + $avatar = get_avatar( $user_object->ID, 32 ); + + $r = ""; + + list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $classes = "$column_name column-$column_name"; + if ( $primary === $column_name ) { + $classes .= ' has-row-actions column-primary'; + } + if ( 'posts' === $column_name ) { + $classes .= ' num'; // Special case for that column + } + + if ( in_array( $column_name, $hidden ) ) { + $classes .= ' hidden'; + } + + $data = 'data-colname="' . wp_strip_all_tags( $column_display_name ) . '"'; + + $attributes = "class='$classes' $data"; + + if ( 'cb' === $column_name ) { + $r .= "$checkbox"; + } else { + $r .= ""; + switch ( $column_name ) { + case 'username': + $r .= "$avatar $edit"; + break; + case 'name': + $r .= "$user_object->first_name $user_object->last_name"; + break; + case 'email': + $r .= "$email"; + break; + case 'role': + $r .= $role_name; + break; + case 'posts': + if ( $numposts > 0 ) { + $r .= ""; + $r .= ''; + $r .= '' . sprintf( _n( '%s post by this author', '%s posts by this author', $numposts ), number_format_i18n( $numposts ) ) . ''; + $r .= ''; + } else { + $r .= 0; + } + break; + default: + /** + * Filter the display output of custom columns in the Users list table. + * + * @since 2.8.0 + * + * @param string $output Custom column output. Default empty. + * @param string $column_name Column name. + * @param int $user_id ID of the currently-listed user. + */ + $r .= apply_filters( 'manage_users_custom_column', '', $column_name, $user_object->ID ); + } + + if ( $primary === $column_name ) { + $r .= $this->row_actions( $actions ); + } + $r .= ""; + } + } + $r .= ''; + + return $r; + } + + /** + * Gets the name of the default primary column. + * + * @since 4.3.0 + * @access protected + * + * @return string Name of the default primary column, in this case, 'username'. + */ + protected function get_default_primary_column_name() { + return 'username'; + } +} diff --git a/wp-admin/includes/comment.php b/wp-admin/includes/comment.php new file mode 100644 index 0000000000..36954b231c --- /dev/null +++ b/wp-admin/includes/comment.php @@ -0,0 +1,176 @@ +get_var( $wpdb->prepare("SELECT comment_post_ID FROM $wpdb->comments + WHERE comment_author = %s AND comment_date = %s", + stripslashes( $comment_author ), + stripslashes( $comment_date ) + ) ); +} + +/** + * Update a comment with values provided in $_POST. + * + * @since 2.0.0 + */ +function edit_comment() { + if ( ! current_user_can( 'edit_comment', (int) $_POST['comment_ID'] ) ) + wp_die ( __( 'You are not allowed to edit comments on this post.' ) ); + + if ( isset( $_POST['newcomment_author'] ) ) + $_POST['comment_author'] = $_POST['newcomment_author']; + if ( isset( $_POST['newcomment_author_email'] ) ) + $_POST['comment_author_email'] = $_POST['newcomment_author_email']; + if ( isset( $_POST['newcomment_author_url'] ) ) + $_POST['comment_author_url'] = $_POST['newcomment_author_url']; + if ( isset( $_POST['comment_status'] ) ) + $_POST['comment_approved'] = $_POST['comment_status']; + if ( isset( $_POST['content'] ) ) + $_POST['comment_content'] = $_POST['content']; + if ( isset( $_POST['comment_ID'] ) ) + $_POST['comment_ID'] = (int) $_POST['comment_ID']; + + foreach ( array ('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) { + if ( !empty( $_POST['hidden_' . $timeunit] ) && $_POST['hidden_' . $timeunit] != $_POST[$timeunit] ) { + $_POST['edit_date'] = '1'; + break; + } + } + + if ( !empty ( $_POST['edit_date'] ) ) { + $aa = $_POST['aa']; + $mm = $_POST['mm']; + $jj = $_POST['jj']; + $hh = $_POST['hh']; + $mn = $_POST['mn']; + $ss = $_POST['ss']; + $jj = ($jj > 31 ) ? 31 : $jj; + $hh = ($hh > 23 ) ? $hh -24 : $hh; + $mn = ($mn > 59 ) ? $mn -60 : $mn; + $ss = ($ss > 59 ) ? $ss -60 : $ss; + $_POST['comment_date'] = "$aa-$mm-$jj $hh:$mn:$ss"; + } + + wp_update_comment( $_POST ); +} + +/** + * Returns a comment object based on comment ID. + * + * @since 2.0.0 + * + * @param int $id ID of comment to retrieve. + * @return object|false Comment if found. False on failure. + */ +function get_comment_to_edit( $id ) { + if ( !$comment = get_comment($id) ) + return false; + + $comment->comment_ID = (int) $comment->comment_ID; + $comment->comment_post_ID = (int) $comment->comment_post_ID; + + $comment->comment_content = format_to_edit( $comment->comment_content ); + /** + * Filter the comment content before editing. + * + * @since 2.0.0 + * + * @param string $comment->comment_content Comment content. + */ + $comment->comment_content = apply_filters( 'comment_edit_pre', $comment->comment_content ); + + $comment->comment_author = format_to_edit( $comment->comment_author ); + $comment->comment_author_email = format_to_edit( $comment->comment_author_email ); + $comment->comment_author_url = format_to_edit( $comment->comment_author_url ); + $comment->comment_author_url = esc_url($comment->comment_author_url); + + return $comment; +} + +/** + * Get the number of pending comments on a post or posts + * + * @since 2.3.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param int|array $post_id Either a single Post ID or an array of Post IDs + * @return int|array Either a single Posts pending comments as an int or an array of ints keyed on the Post IDs + */ +function get_pending_comments_num( $post_id ) { + global $wpdb; + + $single = false; + if ( !is_array($post_id) ) { + $post_id_array = (array) $post_id; + $single = true; + } else { + $post_id_array = $post_id; + } + $post_id_array = array_map('intval', $post_id_array); + $post_id_in = "'" . implode("', '", $post_id_array) . "'"; + + $pending = $wpdb->get_results( "SELECT comment_post_ID, COUNT(comment_ID) as num_comments FROM $wpdb->comments WHERE comment_post_ID IN ( $post_id_in ) AND comment_approved = '0' GROUP BY comment_post_ID", ARRAY_A ); + + if ( $single ) { + if ( empty($pending) ) + return 0; + else + return absint($pending[0]['num_comments']); + } + + $pending_keyed = array(); + + // Default to zero pending for all posts in request + foreach ( $post_id_array as $id ) + $pending_keyed[$id] = 0; + + if ( !empty($pending) ) + foreach ( $pending as $pend ) + $pending_keyed[$pend['comment_post_ID']] = absint($pend['num_comments']); + + return $pending_keyed; +} + +/** + * Add avatars to relevant places in admin, or try to. + * + * @since 2.5.0 + * + * @global object $comment + * + * @param string $name User name. + * @return string Avatar with Admin name. + */ +function floated_admin_avatar( $name ) { + global $comment; + $avatar = get_avatar( $comment, 32, 'mystery' ); + return "$avatar $name"; +} + +/** + * @since 2.7.0 + */ +function enqueue_comment_hotkeys_js() { + if ( 'true' == get_user_option( 'comment_shortcuts' ) ) + wp_enqueue_script( 'jquery-table-hotkeys' ); +} diff --git a/wp-admin/includes/continents-cities.php b/wp-admin/includes/continents-cities.php new file mode 100644 index 0000000000..0ebc4f3fce --- /dev/null +++ b/wp-admin/includes/continents-cities.php @@ -0,0 +1,493 @@ +%1$s %2$s', __( 'Quick Draft' ), __( 'Drafts' ) ); + wp_add_dashboard_widget( 'dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press' ); + } + + // WordPress News + wp_add_dashboard_widget( 'dashboard_primary', __( 'WordPress News' ), 'wp_dashboard_primary' ); + + if ( is_network_admin() ) { + + /** + * Fires after core widgets for the Network Admin dashboard have been registered. + * + * @since 3.1.0 + */ + do_action( 'wp_network_dashboard_setup' ); + + /** + * Filter the list of widgets to load for the Network Admin dashboard. + * + * @since 3.1.0 + * + * @param array $dashboard_widgets An array of dashboard widgets. + */ + $dashboard_widgets = apply_filters( 'wp_network_dashboard_widgets', array() ); + } elseif ( is_user_admin() ) { + + /** + * Fires after core widgets for the User Admin dashboard have been registered. + * + * @since 3.1.0 + */ + do_action( 'wp_user_dashboard_setup' ); + + /** + * Filter the list of widgets to load for the User Admin dashboard. + * + * @since 3.1.0 + * + * @param array $dashboard_widgets An array of dashboard widgets. + */ + $dashboard_widgets = apply_filters( 'wp_user_dashboard_widgets', array() ); + } else { + + /** + * Fires after core widgets for the admin dashboard have been registered. + * + * @since 2.5.0 + */ + do_action( 'wp_dashboard_setup' ); + + /** + * Filter the list of widgets to load for the admin dashboard. + * + * @since 2.5.0 + * + * @param array $dashboard_widgets An array of dashboard widgets. + */ + $dashboard_widgets = apply_filters( 'wp_dashboard_widgets', array() ); + } + + foreach ( $dashboard_widgets as $widget_id ) { + $name = empty( $wp_registered_widgets[$widget_id]['all_link'] ) ? $wp_registered_widgets[$widget_id]['name'] : $wp_registered_widgets[$widget_id]['name'] . " " . __('View all') . ''; + wp_add_dashboard_widget( $widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback'] ); + } + + if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id']) ) { + check_admin_referer( 'edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce' ); + ob_start(); // hack - but the same hack wp-admin/widgets.php uses + wp_dashboard_trigger_widget_control( $_POST['widget_id'] ); + ob_end_clean(); + wp_redirect( remove_query_arg( 'edit' ) ); + exit; + } + + /** This action is documented in wp-admin/edit-form-advanced.php */ + do_action( 'do_meta_boxes', $screen->id, 'normal', '' ); + + /** This action is documented in wp-admin/edit-form-advanced.php */ + do_action( 'do_meta_boxes', $screen->id, 'side', '' ); +} + +/** + * + * @global array $wp_dashboard_control_callbacks + * + * @param string $widget_id + * @param string $widget_name + * @param callback $callback + * @param callback $control_callback + * @param array $callback_args + */ +function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null, $callback_args = null ) { + $screen = get_current_screen(); + global $wp_dashboard_control_callbacks; + + if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) { + $wp_dashboard_control_callbacks[$widget_id] = $control_callback; + if ( isset( $_GET['edit'] ) && $widget_id == $_GET['edit'] ) { + list($url) = explode( '#', add_query_arg( 'edit', false ), 2 ); + $widget_name .= ' ' . __( 'Cancel' ) . ''; + $callback = '_wp_dashboard_control_callback'; + } else { + list($url) = explode( '#', add_query_arg( 'edit', $widget_id ), 2 ); + $widget_name .= ' ' . __( 'Configure' ) . ''; + } + } + + $side_widgets = array( 'dashboard_quick_press', 'dashboard_primary' ); + + $location = 'normal'; + if ( in_array($widget_id, $side_widgets) ) + $location = 'side'; + + $priority = 'core'; + if ( 'dashboard_browser_nag' === $widget_id ) + $priority = 'high'; + + add_meta_box( $widget_id, $widget_name, $callback, $screen, $location, $priority, $callback_args ); +} + +/** + * + * @param type $dashboard + * @param type $meta_box + */ +function _wp_dashboard_control_callback( $dashboard, $meta_box ) { + echo '
'; + wp_dashboard_trigger_widget_control( $meta_box['id'] ); + wp_nonce_field( 'edit-dashboard-widget_' . $meta_box['id'], 'dashboard-widget-nonce' ); + echo ''; + submit_button( __('Submit') ); + echo '
'; +} + +/** + * Displays the dashboard. + * + * @since 2.5.0 + */ +function wp_dashboard() { + $screen = get_current_screen(); + $columns = absint( $screen->get_columns() ); + $columns_css = ''; + if ( $columns ) { + $columns_css = " columns-$columns"; + } + +?> +
+
+ id, 'normal', '' ); ?> +
+
+ id, 'side', '' ); ?> +
+
+ id, 'column3', '' ); ?> +
+
+ id, 'column4', '' ); ?> +
+
+ + +
+
    + publish ) { + if ( 'post' == $post_type ) { + $text = _n( '%s Post', '%s Posts', $num_posts->publish ); + } else { + $text = _n( '%s Page', '%s Pages', $num_posts->publish ); + } + $text = sprintf( $text, number_format_i18n( $num_posts->publish ) ); + $post_type_object = get_post_type_object( $post_type ); + if ( $post_type_object && current_user_can( $post_type_object->cap->edit_posts ) ) { + printf( '
  • %2$s
  • ', $post_type, $text ); + } else { + printf( '
  • %2$s
  • ', $post_type, $text ); + } + + } + } + // Comments + $num_comm = wp_count_comments(); + if ( $num_comm && $num_comm->approved ) { + $text = sprintf( _n( '%s Comment', '%s Comments', $num_comm->approved ), number_format_i18n( $num_comm->approved ) ); + ?> +
  • + moderated ) { + /* translators: Number of comments in moderation */ + $text = sprintf( _nx( '%s in moderation', '%s in moderation', $num_comm->moderated, 'comments' ), number_format_i18n( $num_comm->moderated ) ); + ?> +
  • + ' . implode( "\n
  • ", $elements ) . "
  • \n"; + } + + ?> +
+ $content

"; + } + ?> +
+ +
+ +
+ ' . __( 'Create a New Site' ) . ''; + if ( current_user_can('create_users') ) + $actions['create-user'] = '' . __( 'Create a New User' ) . ''; + + $c_users = get_user_count(); + $c_blogs = get_blog_count(); + + $user_text = sprintf( _n( '%s user', '%s users', $c_users ), number_format_i18n( $c_users ) ); + $blog_text = sprintf( _n( '%s site', '%s sites', $c_blogs ), number_format_i18n( $c_blogs ) ); + + $sentence = sprintf( __( 'You have %1$s and %2$s.' ), $blog_text, $user_text ); + + if ( $actions ) { + echo '
    '; + foreach ( $actions as $class => $action ) { + $actions[ $class ] = "\t
  • $action"; + } + echo implode( " |
  • \n", $actions ) . "\n"; + echo '
'; + } +?> +
+ +

+ + + + +
+

+ + + 'submit_users' ) ); ?> +

+
+ +
+

+ + + 'submit_sites' ) ); ?> +

+
+post_status != 'auto-draft' ) { // auto-draft doesn't exists anymore + $post = get_default_post_to_edit( 'post', true ); + update_user_option( get_current_user_id(), 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID + } else { + $post->post_title = ''; // Remove the auto draft title + } + } else { + $post = get_default_post_to_edit( 'post' , true); + $user_id = get_current_user_id(); + // Don't create an option if this is a super admin who does not belong to this site. + if ( ! ( is_super_admin( $user_id ) && ! in_array( get_current_blog_id(), array_keys( get_blogs_of_user( $user_id ) ) ) ) ) + update_user_option( $user_id, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID + } + + $post_ID = (int) $post->ID; +?> + +
+ + +
+ + +
+ + +
+ +
+ + +
+ +

+ + + + + 'save-post' ) ); ?> +
+

+ +
+ 'post', + 'post_status' => 'draft', + 'author' => get_current_user_id(), + 'posts_per_page' => 4, + 'orderby' => 'modified', + 'order' => 'DESC' + ); + $drafts = get_posts( $query_args ); + if ( ! $drafts ) { + return; + } + } + + echo '
'; + if ( count( $drafts ) > 3 ) { + echo '

' . _x( 'View all', 'drafts' ) . "

\n"; + } + echo '

' . __( 'Drafts' ) . "

\n
    "; + + $drafts = array_slice( $drafts, 0, 3 ); + foreach ( $drafts as $draft ) { + $url = get_edit_post_link( $draft->ID ); + $title = _draft_or_post_title( $draft->ID ); + echo "
  • \n"; + echo '
    ' . esc_html( $title ) . ''; + echo '
    '; + if ( $the_content = wp_trim_words( $draft->post_content, 10 ) ) { + echo '

    ' . $the_content . '

    '; + } + echo "
  • \n"; + } + echo "
\n
"; +} + +/** + * @global object $comment + * + * @param object $comment + * @param bool $show_date + */ +function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) { + $GLOBALS['comment'] =& $comment; + + $comment_post_title = _draft_or_post_title( $comment->comment_post_ID ); + + if ( current_user_can( 'edit_post', $comment->comment_post_ID ) ) { + $comment_post_url = get_edit_post_link( $comment->comment_post_ID ); + $comment_post_link = "$comment_post_title"; + } else { + $comment_post_link = $comment_post_title; + } + + $comment_link = '#'; + + $actions_string = ''; + if ( current_user_can( 'edit_comment', $comment->comment_ID ) ) { + // Pre-order it: Approve | Reply | Edit | Spam | Trash. + $actions = array( + 'approve' => '', 'unapprove' => '', + 'reply' => '', + 'edit' => '', + 'spam' => '', + 'trash' => '', 'delete' => '' + ); + + $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) ); + $approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) ); + + $approve_url = esc_url( "comment.php?action=approvecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" ); + $unapprove_url = esc_url( "comment.php?action=unapprovecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" ); + $spam_url = esc_url( "comment.php?action=spamcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); + $trash_url = esc_url( "comment.php?action=trashcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); + $delete_url = esc_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); + + $actions['approve'] = "" . __( 'Approve' ) . ''; + $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; + $actions['edit'] = "". __('Edit') . ''; + $actions['reply'] = '' . __('Reply') . ''; + $actions['spam'] = "" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . ''; + if ( !EMPTY_TRASH_DAYS ) + $actions['delete'] = "" . __('Delete Permanently') . ''; + else + $actions['trash'] = "" . _x('Trash', 'verb') . ''; + + /** + * Filter the action links displayed for each comment in the 'Recent Comments' + * dashboard widget. + * + * @since 2.6.0 + * + * @param array $actions An array of comment actions. Default actions include: + * 'Approve', 'Unapprove', 'Edit', 'Reply', 'Spam', + * 'Delete', and 'Trash'. + * @param object $comment The comment object. + */ + $actions = apply_filters( 'comment_row_actions', array_filter($actions), $comment ); + + $i = 0; + foreach ( $actions as $action => $link ) { + ++$i; + ( ( ('approve' == $action || 'unapprove' == $action) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; + + // Reply and quickedit need a hide-if-no-js span + if ( 'reply' == $action || 'quickedit' == $action ) + $action .= ' hide-if-no-js'; + + $actions_string .= "$sep$link"; + } + } + +?> + +
comment_ID) ) ); ?>> + + + + comment_type || 'comment' == $comment->comment_type ) : ?> + +
+

+ ' . get_comment_author_link() . '', $comment_post_link.' '.$comment_link, ' ' . __( '[Pending]' ) . '' ); ?> +

+ + comment_type ) { + case 'pingback' : + $type = __( 'Pingback' ); + break; + case 'trackback' : + $type = __( 'Trackback' ); + break; + default : + $type = ucwords( $comment->comment_type ); + } + $type = esc_html( $type ); + ?> +
+ +

$type", $comment_post_link." ".$comment_link ); ?>

+

+ + +

+

+
+
+'; + + $future_posts = wp_dashboard_recent_posts( array( + 'max' => 5, + 'status' => 'future', + 'order' => 'ASC', + 'title' => __( 'Publishing Soon' ), + 'id' => 'future-posts', + ) ); + $recent_posts = wp_dashboard_recent_posts( array( + 'max' => 5, + 'status' => 'publish', + 'order' => 'DESC', + 'title' => __( 'Recently Published' ), + 'id' => 'published-posts', + ) ); + + $recent_comments = wp_dashboard_recent_comments(); + + if ( !$future_posts && !$recent_posts && !$recent_comments ) { + echo '
'; + echo '

'; + echo '

' . __( 'No activity yet!' ) . '

'; + echo '
'; + } + + echo '
'; +} + +/** + * Generates Publishing Soon and Recently Published sections. + * + * @since 3.8.0 + * + * @param array $args { + * An array of query and display arguments. + * + * @type int $max Number of posts to display. + * @type string $status Post status. + * @type string $order Designates ascending ('ASC') or descending ('DESC') order. + * @type string $title Section title. + * @type string $id The container id. + * } + * @return bool False if no posts were found. True otherwise. + */ +function wp_dashboard_recent_posts( $args ) { + $query_args = array( + 'post_type' => 'post', + 'post_status' => $args['status'], + 'orderby' => 'date', + 'order' => $args['order'], + 'posts_per_page' => intval( $args['max'] ), + 'no_found_rows' => true, + 'cache_results' => false, + 'perm' => ( 'future' === $args['status'] ) ? 'editable' : 'readable', + ); + + /** + * Filter the query arguments used for the Recent Posts widget. + * + * @since 4.2.0 + * + * @param array $query_args The arguments passed to WP_Query to produce the list of posts. + */ + $query_args = apply_filters( 'dashboard_recent_posts_query_args', $query_args ); + $posts = new WP_Query( $query_args ); + + if ( $posts->have_posts() ) { + + echo '
'; + + echo '

' . $args['title'] . '

'; + + echo '
    '; + + $today = date( 'Y-m-d', current_time( 'timestamp' ) ); + $tomorrow = date( 'Y-m-d', strtotime( '+1 day', current_time( 'timestamp' ) ) ); + + while ( $posts->have_posts() ) { + $posts->the_post(); + + $time = get_the_time( 'U' ); + if ( date( 'Y-m-d', $time ) == $today ) { + $relative = __( 'Today' ); + } elseif ( date( 'Y-m-d', $time ) == $tomorrow ) { + $relative = __( 'Tomorrow' ); + } else { + /* translators: date and time format for recent posts on the dashboard, see http://php.net/date */ + $relative = date_i18n( __( 'M jS' ), $time ); + } + + // Use the post edit link for those who can edit, the permalink otherwise. + $recent_post_link = current_user_can( 'edit_post', get_the_ID() ) ? get_edit_post_link() : get_permalink(); + + /* translators: 1: relative date, 2: time, 3: post edit link or permalink, 4: post title */ + $format = __( '%1$s, %2$s %4$s' ); + printf( "
  • $format
  • ", $relative, get_the_time(), $recent_post_link, _draft_or_post_title() ); + } + + echo '
'; + echo '
'; + + } else { + return false; + } + + wp_reset_postdata(); + + return true; +} + +/** + * Show Comments section. + * + * @since 3.8.0 + * + * @param int $total_items Optional. Number of comments to query. Default 5. + * @return bool False if no comments were found. True otherwise. + */ +function wp_dashboard_recent_comments( $total_items = 5 ) { + // Select all comment types and filter out spam later for better query performance. + $comments = array(); + + $comments_query = array( + 'number' => $total_items * 5, + 'offset' => 0 + ); + if ( ! current_user_can( 'edit_posts' ) ) + $comments_query['status'] = 'approve'; + + while ( count( $comments ) < $total_items && $possible = get_comments( $comments_query ) ) { + if ( ! is_array( $possible ) ) { + break; + } + foreach ( $possible as $comment ) { + if ( ! current_user_can( 'read_post', $comment->comment_post_ID ) ) + continue; + $comments[] = $comment; + if ( count( $comments ) == $total_items ) + break 2; + } + $comments_query['offset'] += $comments_query['number']; + $comments_query['number'] = $total_items * 10; + } + + if ( $comments ) { + echo '
'; + echo '

' . __( 'Comments' ) . '

'; + + echo '
'; + foreach ( $comments as $comment ) + _wp_dashboard_recent_comments_row( $comment ); + echo '
'; + + if ( current_user_can('edit_posts') ) + _get_list_table('WP_Comments_List_Table')->views(); + + wp_comment_reply( -1, false, 'dashboard', false ); + wp_comment_trashnotice(); + + echo '
'; + } else { + return false; + } + return true; +} + +/** + * Display generic dashboard RSS widget feed. + * + * @since 2.5.0 + * + * @param string $widget_id + */ +function wp_dashboard_rss_output( $widget_id ) { + $widgets = get_option( 'dashboard_widget_options' ); + echo '
'; + wp_widget_rss_output( $widgets[ $widget_id ] ); + echo "
"; +} + +/** + * Checks to see if all of the feed url in $check_urls are cached. + * + * If $check_urls is empty, look for the rss feed url found in the dashboard + * widget options of $widget_id. If cached, call $callback, a function that + * echoes out output for this widget. If not cache, echo a "Loading..." stub + * which is later replaced by AJAX call (see top of /wp-admin/index.php) + * + * @since 2.5.0 + * + * @param string $widget_id + * @param callback $callback + * @param array $check_urls RSS feeds + * @return bool False on failure. True on success. + */ +function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = array() ) { + $loading = '

' . __( 'Loading…' ) . '

' . __( 'This widget requires JavaScript.' ) . '

'; + $doing_ajax = ( defined('DOING_AJAX') && DOING_AJAX ); + + if ( empty($check_urls) ) { + $widgets = get_option( 'dashboard_widget_options' ); + if ( empty($widgets[$widget_id]['url']) && ! $doing_ajax ) { + echo $loading; + return false; + } + $check_urls = array( $widgets[$widget_id]['url'] ); + } + + $locale = get_locale(); + $cache_key = 'dash_' . md5( $widget_id . '_' . $locale ); + if ( false !== ( $output = get_transient( $cache_key ) ) ) { + echo $output; + return true; + } + + if ( ! $doing_ajax ) { + echo $loading; + return false; + } + + if ( $callback && is_callable( $callback ) ) { + $args = array_slice( func_get_args(), 3 ); + array_unshift( $args, $widget_id, $check_urls ); + ob_start(); + call_user_func_array( $callback, $args ); + set_transient( $cache_key, ob_get_flush(), 12 * HOUR_IN_SECONDS ); // Default lifetime in cache of 12 hours (same as the feeds) + } + + return true; +} + +/* Dashboard Widgets Controls */ + +// Calls widget_control callback +/** + * Calls widget control callback. + * + * @since 2.5.0 + * + * @global array $wp_dashboard_control_callbacks + * + * @param int $widget_control_id Registered Widget ID. + */ +function wp_dashboard_trigger_widget_control( $widget_control_id = false ) { + global $wp_dashboard_control_callbacks; + + if ( is_scalar($widget_control_id) && $widget_control_id && isset($wp_dashboard_control_callbacks[$widget_control_id]) && is_callable($wp_dashboard_control_callbacks[$widget_control_id]) ) { + call_user_func( $wp_dashboard_control_callbacks[$widget_control_id], '', array( 'id' => $widget_control_id, 'callback' => $wp_dashboard_control_callbacks[$widget_control_id] ) ); + } +} + +/** + * The RSS dashboard widget control. + * + * Sets up $args to be used as input to wp_widget_rss_form(). Handles POST data + * from RSS-type widgets. + * + * @since 2.5.0 + * + * @param string $widget_id + * @param array $form_inputs + */ +function wp_dashboard_rss_control( $widget_id, $form_inputs = array() ) { + if ( !$widget_options = get_option( 'dashboard_widget_options' ) ) + $widget_options = array(); + + if ( !isset($widget_options[$widget_id]) ) + $widget_options[$widget_id] = array(); + + $number = 1; // Hack to use wp_widget_rss_form() + $widget_options[$widget_id]['number'] = $number; + + if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget-rss'][$number]) ) { + $_POST['widget-rss'][$number] = wp_unslash( $_POST['widget-rss'][$number] ); + $widget_options[$widget_id] = wp_widget_rss_process( $_POST['widget-rss'][$number] ); + $widget_options[$widget_id]['number'] = $number; + + // Title is optional. If black, fill it if possible. + if ( !$widget_options[$widget_id]['title'] && isset($_POST['widget-rss'][$number]['title']) ) { + $rss = fetch_feed($widget_options[$widget_id]['url']); + if ( is_wp_error($rss) ) { + $widget_options[$widget_id]['title'] = htmlentities(__('Unknown Feed')); + } else { + $widget_options[$widget_id]['title'] = htmlentities(strip_tags($rss->get_title())); + $rss->__destruct(); + unset($rss); + } + } + update_option( 'dashboard_widget_options', $widget_options ); + $cache_key = 'dash_' . md5( $widget_id ); + delete_transient( $cache_key ); + } + + wp_widget_rss_form( $widget_options[$widget_id], $form_inputs ); +} + +/** + * WordPress News dashboard widget. + * + * @since 2.7.0 + */ +function wp_dashboard_primary() { + $feeds = array( + 'news' => array( + + /** + * Filter the primary link URL for the 'WordPress News' dashboard widget. + * + * @since 2.5.0 + * + * @param string $link The widget's primary link URL. + */ + 'link' => apply_filters( 'dashboard_primary_link', __( 'http://wordpress.org/news/' ) ), + + /** + * Filter the primary feed URL for the 'WordPress News' dashboard widget. + * + * @since 2.3.0 + * + * @param string $url The widget's primary feed URL. + */ + 'url' => apply_filters( 'dashboard_primary_feed', __( 'http://wordpress.org/news/feed/' ) ), + + /** + * Filter the primary link title for the 'WordPress News' dashboard widget. + * + * @since 2.3.0 + * + * @param string $title Title attribute for the widget's primary link. + */ + 'title' => apply_filters( 'dashboard_primary_title', __( 'WordPress Blog' ) ), + 'items' => 1, + 'show_summary' => 1, + 'show_author' => 0, + 'show_date' => 1, + ), + 'planet' => array( + + /** + * Filter the secondary link URL for the 'WordPress News' dashboard widget. + * + * @since 2.3.0 + * + * @param string $link The widget's secondary link URL. + */ + 'link' => apply_filters( 'dashboard_secondary_link', __( 'https://planet.wordpress.org/' ) ), + + /** + * Filter the secondary feed URL for the 'WordPress News' dashboard widget. + * + * @since 2.3.0 + * + * @param string $url The widget's secondary feed URL. + */ + 'url' => apply_filters( 'dashboard_secondary_feed', __( 'https://planet.wordpress.org/feed/' ) ), + + /** + * Filter the secondary link title for the 'WordPress News' dashboard widget. + * + * @since 2.3.0 + * + * @param string $title Title attribute for the widget's secondary link. + */ + 'title' => apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' ) ), + 'items' => 3, + 'show_summary' => 0, + 'show_author' => 0, + 'show_date' => 0, + ) + ); + + if ( ( ! is_multisite() && is_blog_admin() && current_user_can( 'install_plugins' ) ) || ( is_network_admin() && current_user_can( 'manage_network_plugins' ) && current_user_can( 'install_plugins' ) ) ) { + $feeds['plugins'] = array( + 'link' => '', + 'url' => array( + 'popular' => 'http://wordpress.org/plugins/rss/browse/popular/', + ), + 'title' => '', + 'items' => 1, + 'show_summary' => 0, + 'show_author' => 0, + 'show_date' => 0, + ); + } + + wp_dashboard_cached_rss_widget( 'dashboard_primary', 'wp_dashboard_primary_output', $feeds ); +} + +/** + * Display the WordPress news feeds. + * + * @since 3.8.0 + * + * @param string $widget_id Widget ID. + * @param array $feeds Array of RSS feeds. + */ +function wp_dashboard_primary_output( $widget_id, $feeds ) { + foreach( $feeds as $type => $args ) { + $args['type'] = $type; + echo '
'; + if ( $type === 'plugins' ) { + wp_dashboard_plugins_output( $args['url'], $args ); + } else { + wp_widget_rss_output( $args['url'], $args ); + } + echo "
"; + } +} + +/** + * Display plugins text for the WordPress news widget. + * + * @since 2.5.0 + */ +function wp_dashboard_plugins_output( $rss, $args = array() ) { + // Plugin feeds plus link to install them + $popular = fetch_feed( $args['url']['popular'] ); + + if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) { + $plugin_slugs = array_keys( get_plugins() ); + set_transient( 'plugin_slugs', $plugin_slugs, DAY_IN_SECONDS ); + } + + echo '
    '; + + foreach ( array( $popular ) as $feed ) { + if ( is_wp_error( $feed ) || ! $feed->get_item_quantity() ) + continue; + + $items = $feed->get_items(0, 5); + + // Pick a random, non-installed plugin + while ( true ) { + // Abort this foreach loop iteration if there's no plugins left of this type + if ( 0 == count($items) ) + continue 2; + + $item_key = array_rand($items); + $item = $items[$item_key]; + + list($link, $frag) = explode( '#', $item->get_link() ); + + $link = esc_url($link); + if ( preg_match( '|/([^/]+?)/?$|', $link, $matches ) ) + $slug = $matches[1]; + else { + unset( $items[$item_key] ); + continue; + } + + // Is this random plugin's slug already installed? If so, try again. + reset( $plugin_slugs ); + foreach ( $plugin_slugs as $plugin_slug ) { + if ( $slug == substr( $plugin_slug, 0, strlen( $slug ) ) ) { + unset( $items[$item_key] ); + continue 2; + } + } + + // If we get to this point, then the random plugin isn't installed and we can stop the while(). + break; + } + + // Eliminate some common badly formed plugin descriptions + while ( ( null !== $item_key = array_rand($items) ) && false !== strpos( $items[$item_key]->get_description(), 'Plugin Name:' ) ) + unset($items[$item_key]); + + if ( !isset($items[$item_key]) ) + continue; + + $title = esc_html( $item->get_title() ); + + $ilink = wp_nonce_url('plugin-install.php?tab=plugin-information&plugin=' . $slug, 'install-plugin_' . $slug) . '&TB_iframe=true&width=600&height=800'; + echo "
  • " . __( 'Popular Plugin' ) . ": $title (" . __( 'Install' ) . ")
  • "; + + $feed->__destruct(); + unset( $feed ); + } + + echo '
'; +} + +/** + * Display file upload quota on dashboard. + * + * Runs on the activity_box_end hook in wp_dashboard_right_now(). + * + * @since 3.0.0 + * + * @return bool|null True if not multisite, user can't upload files, or the space check option is disabled. +*/ +function wp_dashboard_quota() { + if ( !is_multisite() || !current_user_can( 'upload_files' ) || get_site_option( 'upload_space_check_disabled' ) ) + return true; + + $quota = get_space_allowed(); + $used = get_space_used(); + + if ( $used > $quota ) + $percentused = '100'; + else + $percentused = ( $used / $quota ) * 100; + $used_class = ( $percentused >= 70 ) ? ' warning' : ''; + $used = round( $used, 2 ); + $percentused = number_format( $percentused ); + + ?> +

+
+
    +
  • + %3$s', + esc_url( admin_url( 'upload.php' ) ), + __( 'Manage Uploads' ), + $text + ); ?> +
  • + %3$s', + esc_url( admin_url( 'upload.php' ) ), + __( 'Manage Uploads' ), + $text + ); ?> +
  • +
+
+ %s. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser." ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ) ); + } else { + $msg = sprintf( __( "It looks like you're using an old version of %s. For the best WordPress experience, please update your browser." ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ) ); + } + + $browser_nag_class = ''; + if ( !empty( $response['img_src'] ) ) { + $img_src = ( is_ssl() && ! empty( $response['img_src_ssl'] ) )? $response['img_src_ssl'] : $response['img_src']; + + $notice .= '
'; + $browser_nag_class = ' has-browser-icon'; + } + $notice .= "

{$msg}

"; + + $browsehappy = 'http://browsehappy.com/'; + $locale = get_locale(); + if ( 'en_US' !== $locale ) + $browsehappy = add_query_arg( 'locale', $locale, $browsehappy ); + + $notice .= '

' . sprintf( __( 'Update %2$s or learn how to browse happy' ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ), esc_url( $browsehappy ) ) . '

'; + $notice .= '

' . __( 'Dismiss' ) . '

'; + $notice .= '
'; + } + + /** + * Filter the notice output for the 'Browse Happy' nag meta box. + * + * @since 3.2.0 + * + * @param string $notice The notice content. + * @param array $response An array containing web browser information. + */ + echo apply_filters( 'browse-happy-notice', $notice, $response ); +} + +/** + * @since 3.2.0 + * + * @param array $classes + * @return array + */ +function dashboard_browser_nag_class( $classes ) { + $response = wp_check_browser_version(); + + if ( $response && $response['insecure'] ) + $classes[] = 'browser-insecure'; + + return $classes; +} + +/** + * Check if the user needs a browser update + * + * @since 3.2.0 + * + * @global string $wp_version + * + * @return array|bool False on failure, array of browser data on success. + */ +function wp_check_browser_version() { + if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) + return false; + + $key = md5( $_SERVER['HTTP_USER_AGENT'] ); + + if ( false === ($response = get_site_transient('browser_' . $key) ) ) { + global $wp_version; + + $options = array( + 'body' => array( 'useragent' => $_SERVER['HTTP_USER_AGENT'] ), + 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url() + ); + + $response = wp_remote_post( 'http://api.wordpress.org/core/browse-happy/1.1/', $options ); + + if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) + return false; + + /** + * Response should be an array with: + * 'name' - string - A user friendly browser name + * 'version' - string - The most recent version of the browser + * 'current_version' - string - The version of the browser the user is using + * 'upgrade' - boolean - Whether the browser needs an upgrade + * 'insecure' - boolean - Whether the browser is deemed insecure + * 'upgrade_url' - string - The url to visit to upgrade + * 'img_src' - string - An image representing the browser + * 'img_src_ssl' - string - An image (over SSL) representing the browser + */ + $response = json_decode( wp_remote_retrieve_body( $response ), true ); + + if ( ! is_array( $response ) ) + return false; + + set_site_transient( 'browser_' . $key, $response, WEEK_IN_SECONDS ); + } + + return $response; +} + +/** + * Empty function usable by plugins to output empty dashboard widget (to be populated later by JS). + */ +function wp_dashboard_empty() {} + +/** + * Displays a welcome panel to introduce users to WordPress. + * + * @since 3.3.0 + */ +function wp_welcome_panel() { + ?> +
+

+

+
+
+ +

+ + + + true ) ) ) > 1 ) ) : ?> +

change your theme completely' ), admin_url( 'themes.php' ) ); ?>

+ +
+
+

+
    + +
  • ' . __( 'Edit your front page' ) . '', get_edit_post_link( get_option( 'page_on_front' ) ) ); ?>
  • +
  • ' . __( 'Add additional pages' ) . '', admin_url( 'post-new.php?post_type=page' ) ); ?>
  • + +
  • ' . __( 'Edit your front page' ) . '', get_edit_post_link( get_option( 'page_on_front' ) ) ); ?>
  • +
  • ' . __( 'Add additional pages' ) . '', admin_url( 'post-new.php?post_type=page' ) ); ?>
  • +
  • ' . __( 'Add a blog post' ) . '', admin_url( 'post-new.php' ) ); ?>
  • + +
  • ' . __( 'Write your first blog post' ) . '', admin_url( 'post-new.php' ) ); ?>
  • +
  • ' . __( 'Add an About page' ) . '', admin_url( 'post-new.php?post_type=page' ) ); ?>
  • + +
  • ' . __( 'View your site' ) . '', home_url( '/' ) ); ?>
  • +
+
+
+

+
    + +
  • widgets or menus' ), + admin_url( 'widgets.php' ), admin_url( 'nav-menus.php' ) ); + } elseif ( current_theme_supports( 'widgets' ) ) { + echo '' . __( 'Manage widgets' ) . ''; + } else { + echo '' . __( 'Manage menus' ) . ''; + } + ?>
  • + + +
  • ' . __( 'Turn comments on or off' ) . '', admin_url( 'options-discussion.php' ) ); ?>
  • + +
  • ' . __( 'Learn more about getting started' ) . '', __( 'https://codex.wordpress.org/First_Steps_With_WordPress' ) ); ?>
  • +
+
+
+
+ 0) ); + + if ( $categories ) { + foreach ( $categories as $category ) { + if ( $currentcat != $category->term_id && $parent == $category->parent) { + $pad = str_repeat( '– ', $level ); + $category->name = esc_html( $category->name ); + echo "\n\t"; + wp_dropdown_cats( $currentcat, $currentparent, $category->term_id, $level +1, $categories ); + } + } + } else { + return false; + } +} + +/** + * Register a setting and its sanitization callback + * + * @since 2.7.0 + * @deprecated 3.0.0 + * @deprecated Use register_setting() + * @see register_setting() + * + * @param string $option_group A settings group name. Should correspond to a whitelisted option key name. + * Default whitelisted option key names include "general," "discussion," and "reading," among others. + * @param string $option_name The name of an option to sanitize and save. + * @param callable $sanitize_callback A callback function that sanitizes the option's value. + */ +function add_option_update_handler( $option_group, $option_name, $sanitize_callback = '' ) { + _deprecated_function( __FUNCTION__, '3.0', 'register_setting()' ); + register_setting( $option_group, $option_name, $sanitize_callback ); +} + +/** + * Unregister a setting + * + * @since 2.7.0 + * @deprecated 3.0.0 + * @deprecated Use unregister_setting() + * @see unregister_setting() + * + * @param string $option_group + * @param string $option_name + * @param callable $sanitize_callback + */ +function remove_option_update_handler( $option_group, $option_name, $sanitize_callback = '' ) { + _deprecated_function( __FUNCTION__, '3.0', 'unregister_setting()' ); + unregister_setting( $option_group, $option_name, $sanitize_callback ); +} + +/** + * Determines the language to use for CodePress syntax highlighting. + * + * @since 2.8.0 + * @deprecated 3.0.0 + * + * @param string $filename +**/ +function codepress_get_lang( $filename ) { + _deprecated_function( __FUNCTION__, '3.0' ); +} + +/** + * Adds JavaScript required to make CodePress work on the theme/plugin editors. + * + * @since 2.8.0 + * @deprecated 3.0.0 +**/ +function codepress_footer_js() { + _deprecated_function( __FUNCTION__, '3.0' ); +} + +/** + * Determine whether to use CodePress. + * + * @since 2.8.0 + * @deprecated 3.0.0 +**/ +function use_codepress() { + _deprecated_function( __FUNCTION__, '3.0' ); +} + +/** + * @deprecated 3.1.0 + * + * @return array List of user IDs. + */ +function get_author_user_ids() { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + if ( !is_multisite() ) + $level_key = $wpdb->get_blog_prefix() . 'user_level'; + else + $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels + + return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value != '0'", $level_key) ); +} + +/** + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @return array|bool List of editable authors. False if no editable users. + */ +function get_editable_authors( $user_id ) { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + + $editable = get_editable_user_ids( $user_id ); + + if ( !$editable ) { + return false; + } else { + $editable = join(',', $editable); + $authors = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($editable) ORDER BY display_name" ); + } + + return apply_filters('get_editable_authors', $authors); +} + +/** + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @param bool $exclude_zeros Optional, default is true. Whether to exclude zeros. + * @return mixed + */ +function get_editable_user_ids( $user_id, $exclude_zeros = true, $post_type = 'post' ) { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + + if ( ! $user = get_userdata( $user_id ) ) + return array(); + $post_type_obj = get_post_type_object($post_type); + + if ( ! $user->has_cap($post_type_obj->cap->edit_others_posts) ) { + if ( $user->has_cap($post_type_obj->cap->edit_posts) || ! $exclude_zeros ) + return array($user->ID); + else + return array(); + } + + if ( !is_multisite() ) + $level_key = $wpdb->get_blog_prefix() . 'user_level'; + else + $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels + + $query = $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s", $level_key); + if ( $exclude_zeros ) + $query .= " AND meta_value != '0'"; + + return $wpdb->get_col( $query ); +} + +/** + * @deprecated 3.1.0 + */ +function get_nonauthor_user_ids() { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + + if ( !is_multisite() ) + $level_key = $wpdb->get_blog_prefix() . 'user_level'; + else + $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels + + return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value = '0'", $level_key) ); +} + +if ( !class_exists('WP_User_Search') ) : +/** + * WordPress User Search class. + * + * @since 2.1.0 + * @deprecated 3.1.0 + */ +class WP_User_Search { + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var mixed + */ + var $results; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var string + */ + var $search_term; + + /** + * Page number. + * + * @since 2.1.0 + * @access private + * @var int + */ + var $page; + + /** + * Role name that users have. + * + * @since 2.5.0 + * @access private + * @var string + */ + var $role; + + /** + * Raw page number. + * + * @since 2.1.0 + * @access private + * @var int|bool + */ + var $raw_page; + + /** + * Amount of users to display per page. + * + * @since 2.1.0 + * @access public + * @var int + */ + var $users_per_page = 50; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var int + */ + var $first_user; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var int + */ + var $last_user; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var string + */ + var $query_limit; + + /** + * {@internal Missing Description}} + * + * @since 3.0.0 + * @access private + * @var string + */ + var $query_orderby; + + /** + * {@internal Missing Description}} + * + * @since 3.0.0 + * @access private + * @var string + */ + var $query_from; + + /** + * {@internal Missing Description}} + * + * @since 3.0.0 + * @access private + * @var string + */ + var $query_where; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var int + */ + var $total_users_for_query = 0; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var bool + */ + var $too_many_total_users = false; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var WP_Error + */ + var $search_errors; + + /** + * {@internal Missing Description}} + * + * @since 2.7.0 + * @access private + * @var string + */ + var $paging_text; + + /** + * PHP5 Constructor - Sets up the object properties. + * + * @since 2.1.0 + * + * @param string $search_term Search terms string. + * @param int $page Optional. Page ID. + * @param string $role Role name. + * @return WP_User_Search + */ + function __construct( $search_term = '', $page = '', $role = '' ) { + _deprecated_function( __FUNCTION__, '3.1', 'WP_User_Query' ); + + $this->search_term = wp_unslash( $search_term ); + $this->raw_page = ( '' == $page ) ? false : (int) $page; + $this->page = (int) ( '' == $page ) ? 1 : $page; + $this->role = $role; + + $this->prepare_query(); + $this->query(); + $this->do_paging(); + } + + /** + * PHP4 Constructor - Sets up the object properties. + * + * @since 2.1.0 + * + * @param string $search_term Search terms string. + * @param int $page Optional. Page ID. + * @param string $role Role name. + * @return WP_User_Search + */ + public function WP_User_Search( $search_term = '', $page = '', $role = '' ) { + self::__construct( $search_term, $page, $role ); + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function prepare_query() { + global $wpdb; + $this->first_user = ($this->page - 1) * $this->users_per_page; + + $this->query_limit = $wpdb->prepare(" LIMIT %d, %d", $this->first_user, $this->users_per_page); + $this->query_orderby = ' ORDER BY user_login'; + + $search_sql = ''; + if ( $this->search_term ) { + $searches = array(); + $search_sql = 'AND ('; + foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col ) + $searches[] = $wpdb->prepare( $col . ' LIKE %s', '%' . like_escape($this->search_term) . '%' ); + $search_sql .= implode(' OR ', $searches); + $search_sql .= ')'; + } + + $this->query_from = " FROM $wpdb->users"; + $this->query_where = " WHERE 1=1 $search_sql"; + + if ( $this->role ) { + $this->query_from .= " INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id"; + $this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%'); + } elseif ( is_multisite() ) { + $level_key = $wpdb->prefix . 'capabilities'; // wpmu site admins don't have user_levels + $this->query_from .= ", $wpdb->usermeta"; + $this->query_where .= " AND $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = '{$level_key}'"; + } + + do_action_ref_array( 'pre_user_search', array( &$this ) ); + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function query() { + global $wpdb; + + $this->results = $wpdb->get_col("SELECT DISTINCT($wpdb->users.ID)" . $this->query_from . $this->query_where . $this->query_orderby . $this->query_limit); + + if ( $this->results ) + $this->total_users_for_query = $wpdb->get_var("SELECT COUNT(DISTINCT($wpdb->users.ID))" . $this->query_from . $this->query_where); // no limit + else + $this->search_errors = new WP_Error('no_matching_users_found', __('No users found.')); + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function prepare_vars_for_template_usage() {} + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function do_paging() { + if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results + $args = array(); + if ( ! empty($this->search_term) ) + $args['usersearch'] = urlencode($this->search_term); + if ( ! empty($this->role) ) + $args['role'] = urlencode($this->role); + + $this->paging_text = paginate_links( array( + 'total' => ceil($this->total_users_for_query / $this->users_per_page), + 'current' => $this->page, + 'base' => 'users.php?%_%', + 'format' => 'userspage=%#%', + 'add_args' => $args + ) ); + if ( $this->paging_text ) { + $this->paging_text = sprintf( '' . __( 'Displaying %s–%s of %s' ) . '%s', + number_format_i18n( ( $this->page - 1 ) * $this->users_per_page + 1 ), + number_format_i18n( min( $this->page * $this->users_per_page, $this->total_users_for_query ) ), + number_format_i18n( $this->total_users_for_query ), + $this->paging_text + ); + } + } + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + * + * @return array + */ + function get_results() { + return (array) $this->results; + } + + /** + * Displaying paging text. + * + * @see do_paging() Builds paging text. + * + * @since 2.1.0 + * @access public + */ + function page_links() { + echo $this->paging_text; + } + + /** + * Whether paging is enabled. + * + * @see do_paging() Builds paging text. + * + * @since 2.1.0 + * @access public + * + * @return bool + */ + function results_are_paged() { + if ( $this->paging_text ) + return true; + return false; + } + + /** + * Whether there are search terms. + * + * @since 2.1.0 + * @access public + * + * @return bool + */ + function is_search() { + if ( $this->search_term ) + return true; + return false; + } +} +endif; + +/** + * Retrieve editable posts from other users. + * + * @deprecated 3.1.0 + * + * @param int $user_id User ID to not retrieve posts from. + * @param string $type Optional, defaults to 'any'. Post type to retrieve, can be 'draft' or 'pending'. + * @return array List of posts from others. + */ +function get_others_unpublished_posts($user_id, $type='any') { + _deprecated_function( __FUNCTION__, '3.1' ); + + global $wpdb; + + $editable = get_editable_user_ids( $user_id ); + + if ( in_array($type, array('draft', 'pending')) ) + $type_sql = " post_status = '$type' "; + else + $type_sql = " ( post_status = 'draft' OR post_status = 'pending' ) "; + + $dir = ( 'pending' == $type ) ? 'ASC' : 'DESC'; + + if ( !$editable ) { + $other_unpubs = ''; + } else { + $editable = join(',', $editable); + $other_unpubs = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title, post_author FROM $wpdb->posts WHERE post_type = 'post' AND $type_sql AND post_author IN ($editable) AND post_author != %d ORDER BY post_modified $dir", $user_id) ); + } + + return apply_filters('get_others_drafts', $other_unpubs); +} + +/** + * Retrieve drafts from other users. + * + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @return array List of drafts from other users. + */ +function get_others_drafts($user_id) { + _deprecated_function( __FUNCTION__, '3.1' ); + + return get_others_unpublished_posts($user_id, 'draft'); +} + +/** + * Retrieve pending review posts from other users. + * + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @return array List of posts with pending review post type from other users. + */ +function get_others_pending($user_id) { + _deprecated_function( __FUNCTION__, '3.1' ); + + return get_others_unpublished_posts($user_id, 'pending'); +} + +/** + * Output the QuickPress dashboard widget. + * + * @since 3.0.0 + * @deprecated 3.2.0 + * @deprecated Use wp_dashboard_quick_press() + * @see wp_dashboard_quick_press() + */ +function wp_dashboard_quick_press_output() { + _deprecated_function( __FUNCTION__, '3.2', 'wp_dashboard_quick_press()' ); + wp_dashboard_quick_press(); +} + +/** + * @since 2.7.0 + * @deprecated 3.3.0 + * @deprecated Use wp_editor() + * @see wp_editor() + * + * @staticvar int $num + */ +function wp_tiny_mce( $teeny = false, $settings = false ) { + _deprecated_function( __FUNCTION__, '3.3', 'wp_editor()' ); + + static $num = 1; + + if ( ! class_exists('_WP_Editors' ) ) + require_once( ABSPATH . WPINC . '/class-wp-editor.php' ); + + $editor_id = 'content' . $num++; + + $set = array( + 'teeny' => $teeny, + 'tinymce' => $settings ? $settings : true, + 'quicktags' => false + ); + + $set = _WP_Editors::parse_settings($editor_id, $set); + _WP_Editors::editor_settings($editor_id, $set); +} + +/** + * @deprecated 3.3.0 + * @deprecated Use wp_editor() + * @see wp_editor() + */ +function wp_preload_dialogs() { + _deprecated_function( __FUNCTION__, '3.3', 'wp_editor()' ); +} + +/** + * @deprecated 3.3.0 + * @deprecated Use wp_editor() + * @see wp_editor() + */ +function wp_print_editor_js() { + _deprecated_function( __FUNCTION__, '3.3', 'wp_editor()' ); +} + +/** + * @deprecated 3.3.0 + * @deprecated Use wp_editor() + * @see wp_editor() + */ +function wp_quicktags() { + _deprecated_function( __FUNCTION__, '3.3', 'wp_editor()' ); +} + +/** + * Returns the screen layout options. + * + * @since 2.8.0 + * @deprecated 3.3.0 + * @deprecated Use $current_screen->render_screen_layout() + * @see WP_Screen::render_screen_layout() + */ +function screen_layout( $screen ) { + _deprecated_function( __FUNCTION__, '3.3', '$current_screen->render_screen_layout()' ); + + $current_screen = get_current_screen(); + + if ( ! $current_screen ) + return ''; + + ob_start(); + $current_screen->render_screen_layout(); + return ob_get_clean(); +} + +/** + * Returns the screen's per-page options. + * + * @since 2.8.0 + * @deprecated 3.3.0 + * @deprecated Use $current_screen->render_per_page_options() + * @see WP_Screen::render_per_page_options() + */ +function screen_options( $screen ) { + _deprecated_function( __FUNCTION__, '3.3', '$current_screen->render_per_page_options()' ); + + $current_screen = get_current_screen(); + + if ( ! $current_screen ) + return ''; + + ob_start(); + $current_screen->render_per_page_options(); + return ob_get_clean(); +} + +/** + * Renders the screen's help. + * + * @since 2.7.0 + * @deprecated 3.3.0 + * @deprecated Use $current_screen->render_screen_meta() + * @see WP_Screen::render_screen_meta() + */ +function screen_meta( $screen ) { + $current_screen = get_current_screen(); + $current_screen->render_screen_meta(); +} + +/** + * Favorite actions were deprecated in version 3.2. Use the admin bar instead. + * + * @since 2.7.0 + * @deprecated 3.2.0 + */ +function favorite_actions() { + _deprecated_function( __FUNCTION__, '3.2', 'WP_Admin_Bar' ); +} + +function media_upload_image() { + _deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' ); + return wp_media_upload_handler(); +} + +function media_upload_audio() { + _deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' ); + return wp_media_upload_handler(); +} + +function media_upload_video() { + _deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' ); + return wp_media_upload_handler(); +} + +function media_upload_file() { + _deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' ); + return wp_media_upload_handler(); +} + +function type_url_form_image() { + _deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('image')" ); + return wp_media_insert_url_form( 'image' ); +} + +function type_url_form_audio() { + _deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('audio')" ); + return wp_media_insert_url_form( 'audio' ); +} + +function type_url_form_video() { + _deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('video')" ); + return wp_media_insert_url_form( 'video' ); +} + +function type_url_form_file() { + _deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('file')" ); + return wp_media_insert_url_form( 'file' ); +} + +/** + * Add contextual help text for a page. + * + * Creates an 'Overview' help tab. + * + * @since 2.7.0 + * @deprecated 3.3.0 + * @deprecated Use get_current_screen()->add_help_tab() + * @see WP_Screen + * + * @param string $screen The handle for the screen to add help to. This is usually the hook name returned by the add_*_page() functions. + * @param string $help The content of an 'Overview' help tab. + */ +function add_contextual_help( $screen, $help ) { + _deprecated_function( __FUNCTION__, '3.3', 'get_current_screen()->add_help_tab()' ); + + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + WP_Screen::add_old_compat_help( $screen, $help ); +} + +/** + * Get the allowed themes for the current blog. + * + * @since 3.0.0 + * @deprecated 3.4.0 + * @deprecated Use wp_get_themes() + * @see wp_get_themes() + * + * @return array $themes Array of allowed themes. + */ +function get_allowed_themes() { + _deprecated_function( __FUNCTION__, '3.4', "wp_get_themes( array( 'allowed' => true ) )" ); + + $themes = wp_get_themes( array( 'allowed' => true ) ); + + $wp_themes = array(); + foreach ( $themes as $theme ) { + $wp_themes[ $theme->get('Name') ] = $theme; + } + + return $wp_themes; +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.5.0 + * @deprecated 3.4.0 + * + * @return array + */ +function get_broken_themes() { + _deprecated_function( __FUNCTION__, '3.4', "wp_get_themes( array( 'errors' => true )" ); + + $themes = wp_get_themes( array( 'errors' => true ) ); + $broken = array(); + foreach ( $themes as $theme ) { + $name = $theme->get('Name'); + $broken[ $name ] = array( + 'Name' => $name, + 'Title' => $name, + 'Description' => $theme->errors()->get_error_message(), + ); + } + return $broken; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.0.0 + * @deprecated 3.4.0 + * + * @return WP_Theme + */ +function current_theme_info() { + _deprecated_function( __FUNCTION__, '3.4', 'wp_get_theme()' ); + + return wp_get_theme(); +} + +/** + * This was once used to display an 'Insert into Post' button. Now it is deprecated and stubbed. + * + * @deprecated 3.5.0 + */ +function _insert_into_post_button( $type ) { + _deprecated_function( __FUNCTION__, '3.5' ); +} + +/** + * This was once used to display a media button. Now it is deprecated and stubbed. + * + * @deprecated 3.5.0 + */ +function _media_button($title, $icon, $type, $id) { + _deprecated_function( __FUNCTION__, '3.5' ); +} + +/** + * Get an existing post and format it for editing. + * + * @since 2.0.0 + * @deprecated 3.5.0 + * + * @param int $id + * @return object + */ +function get_post_to_edit( $id ) { + _deprecated_function( __FUNCTION__, '3.5', 'get_post()' ); + + return get_post( $id, OBJECT, 'edit' ); +} + +/** + * Get the default page information to use. + * + * @since 2.5.0 + * @deprecated 3.5.0 + * @deprecated Use get_default_post_to_edit() + * + * @return WP_Post Post object containing all the default post data as attributes + */ +function get_default_page_to_edit() { + _deprecated_function( __FUNCTION__, '3.5', "get_default_post_to_edit( 'page' )" ); + + $page = get_default_post_to_edit(); + $page->post_type = 'page'; + return $page; +} + +/** + * This was once used to create a thumbnail from an Image given a maximum side size. + * + * @since 1.2.0 + * @deprecated 3.5.0 + * @deprecated Use image_resize() + * @see image_resize() + * + * @param mixed $file Filename of the original image, Or attachment id. + * @param int $max_side Maximum length of a single side for the thumbnail. + * @param mixed $deprecated Never used. + * @return string Thumbnail path on success, Error string on failure. + */ +function wp_create_thumbnail( $file, $max_side, $deprecated = '' ) { + _deprecated_function( __FUNCTION__, '3.5', 'image_resize()' ); + return apply_filters( 'wp_create_thumbnail', image_resize( $file, $max_side, $max_side ) ); +} + +/** + * This was once used to display a metabox for the nav menu theme locations. + * + * Deprecated in favor of a 'Manage Locations' tab added to nav menus management screen. + * + * @since 3.0.0 + * @deprecated 3.6.0 + */ +function wp_nav_menu_locations_meta_box() { + _deprecated_function( __FUNCTION__, '3.6' ); +} + +/** + * This was once used to kick-off the Core Updater. + * + * Deprecated in favor of instantating a Core_Upgrader instance directly, + * and calling the 'upgrade' method. + * + * @since 2.7.0 + * @deprecated 3.7.0 + * @see Core_Upgrader + */ +function wp_update_core($current, $feedback = '') { + _deprecated_function( __FUNCTION__, '3.7', 'new Core_Upgrader();' ); + + if ( !empty($feedback) ) + add_filter('update_feedback', $feedback); + + include( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); + $upgrader = new Core_Upgrader(); + return $upgrader->upgrade($current); + +} + +/** + * This was once used to kick-off the Plugin Updater. + * + * Deprecated in favor of instantating a Plugin_Upgrader instance directly, + * and calling the 'upgrade' method. + * Unused since 2.8.0. + * + * @since 2.5.0 + * @deprecated 3.7.0 + * @see Plugin_Upgrader + */ +function wp_update_plugin($plugin, $feedback = '') { + _deprecated_function( __FUNCTION__, '3.7', 'new Plugin_Upgrader();' ); + + if ( !empty($feedback) ) + add_filter('update_feedback', $feedback); + + include( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); + $upgrader = new Plugin_Upgrader(); + return $upgrader->upgrade($plugin); +} + +/** + * This was once used to kick-off the Theme Updater. + * + * Deprecated in favor of instantating a Theme_Upgrader instance directly, + * and calling the 'upgrade' method. + * Unused since 2.8.0. + * + * @since 2.7.0 + * @deprecated 3.7.0 + * @see Theme_Upgrader + */ +function wp_update_theme($theme, $feedback = '') { + _deprecated_function( __FUNCTION__, '3.7', 'new Theme_Upgrader();' ); + + if ( !empty($feedback) ) + add_filter('update_feedback', $feedback); + + include( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); + $upgrader = new Theme_Upgrader(); + return $upgrader->upgrade($theme); +} + +/** + * This was once used to display attachment links. Now it is deprecated and stubbed. + * + * {@internal Missing Short Description}} + * + * @since 2.0.0 + * @deprecated 3.7.0 + * + * @param int|bool $id + */ +function the_attachment_links( $id = false ) { + _deprecated_function( __FUNCTION__, '3.7' ); +} + +/**#@+ + * Displays a screen icon. + * + * @since 2.7.0 + * @since 3.8.0 Screen icons are no longer used in WordPress. This function no longer produces output. + * @deprecated 3.8.0 + */ +function screen_icon() { + echo get_screen_icon(); +} +function get_screen_icon() { + return ''; +} +/**#@-*/ + +/**#@+ + * Deprecated dashboard widget controls. + * + * @since 2.5.0 + * @deprecated 3.8.0 + */ +function wp_dashboard_incoming_links_output() {} +function wp_dashboard_secondary_output() {} +/**#@-*/ + +/**#@+ + * Deprecated dashboard widget controls. + * + * @since 2.7.0 + * @deprecated 3.8.0 + */ +function wp_dashboard_incoming_links() {} +function wp_dashboard_incoming_links_control() {} +function wp_dashboard_plugins() {} +function wp_dashboard_primary_control() {} +function wp_dashboard_recent_comments_control() {} +function wp_dashboard_secondary() {} +function wp_dashboard_secondary_control() {} +/**#@-*/ + +/** + * This was once used to move child posts to a new parent. + * + * @since 2.3.0 + * @deprecated 3.9.0 + * @access private + * + * @param int $old_ID + * @param int $new_ID + */ +function _relocate_children( $old_ID, $new_ID ) { + _deprecated_function( __FUNCTION__, '3.9' ); +} diff --git a/wp-admin/includes/export.php b/wp-admin/includes/export.php new file mode 100644 index 0000000000..98989324e1 --- /dev/null +++ b/wp-admin/includes/export.php @@ -0,0 +1,524 @@ + 'all', 'author' => false, 'category' => false, + 'start_date' => false, 'end_date' => false, 'status' => false, + ); + $args = wp_parse_args( $args, $defaults ); + + /** + * Fires at the beginning of an export, before any headers are sent. + * + * @since 2.3.0 + * + * @param array $args An array of export arguments. + */ + do_action( 'export_wp', $args ); + + $sitename = sanitize_key( get_bloginfo( 'name' ) ); + if ( ! empty($sitename) ) $sitename .= '.'; + $filename = $sitename . 'wordpress.' . date( 'Y-m-d' ) . '.xml'; + + header( 'Content-Description: File Transfer' ); + header( 'Content-Disposition: attachment; filename=' . $filename ); + header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true ); + + if ( 'all' != $args['content'] && post_type_exists( $args['content'] ) ) { + $ptype = get_post_type_object( $args['content'] ); + if ( ! $ptype->can_export ) + $args['content'] = 'post'; + + $where = $wpdb->prepare( "{$wpdb->posts}.post_type = %s", $args['content'] ); + } else { + $post_types = get_post_types( array( 'can_export' => true ) ); + $esses = array_fill( 0, count($post_types), '%s' ); + $where = $wpdb->prepare( "{$wpdb->posts}.post_type IN (" . implode( ',', $esses ) . ')', $post_types ); + } + + if ( $args['status'] && ( 'post' == $args['content'] || 'page' == $args['content'] ) ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_status = %s", $args['status'] ); + else + $where .= " AND {$wpdb->posts}.post_status != 'auto-draft'"; + + $join = ''; + if ( $args['category'] && 'post' == $args['content'] ) { + if ( $term = term_exists( $args['category'], 'category' ) ) { + $join = "INNER JOIN {$wpdb->term_relationships} ON ({$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id)"; + $where .= $wpdb->prepare( " AND {$wpdb->term_relationships}.term_taxonomy_id = %d", $term['term_taxonomy_id'] ); + } + } + + if ( 'post' == $args['content'] || 'page' == $args['content'] ) { + if ( $args['author'] ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_author = %d", $args['author'] ); + + if ( $args['start_date'] ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date >= %s", date( 'Y-m-d', strtotime($args['start_date']) ) ); + + if ( $args['end_date'] ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date < %s", date( 'Y-m-d', strtotime('+1 month', strtotime($args['end_date'])) ) ); + } + + // Grab a snapshot of post IDs, just in case it changes during the export. + $post_ids = $wpdb->get_col( "SELECT ID FROM {$wpdb->posts} $join WHERE $where" ); + + /* + * Get the requested terms ready, empty unless posts filtered by category + * or all content. + */ + $cats = $tags = $terms = array(); + if ( isset( $term ) && $term ) { + $cat = get_term( $term['term_id'], 'category' ); + $cats = array( $cat->term_id => $cat ); + unset( $term, $cat ); + } elseif ( 'all' == $args['content'] ) { + $categories = (array) get_categories( array( 'get' => 'all' ) ); + $tags = (array) get_tags( array( 'get' => 'all' ) ); + + $custom_taxonomies = get_taxonomies( array( '_builtin' => false ) ); + $custom_terms = (array) get_terms( $custom_taxonomies, array( 'get' => 'all' ) ); + + // Put categories in order with no child going before its parent. + while ( $cat = array_shift( $categories ) ) { + if ( $cat->parent == 0 || isset( $cats[$cat->parent] ) ) + $cats[$cat->term_id] = $cat; + else + $categories[] = $cat; + } + + // Put terms in order with no child going before its parent. + while ( $t = array_shift( $custom_terms ) ) { + if ( $t->parent == 0 || isset( $terms[$t->parent] ) ) + $terms[$t->term_id] = $t; + else + $custom_terms[] = $t; + } + + unset( $categories, $custom_taxonomies, $custom_terms ); + } + + /** + * Wrap given string in XML CDATA tag. + * + * @since 2.1.0 + * + * @param string $str String to wrap in XML CDATA tag. + * @return string + */ + function wxr_cdata( $str ) { + if ( ! seems_utf8( $str ) ) { + $str = utf8_encode( $str ); + } + // $str = ent2ncr(esc_html($str)); + $str = '', ']]]]>', $str ) . ']]>'; + + return $str; + } + + /** + * Return the URL of the site + * + * @since 2.5.0 + * + * @return string Site URL. + */ + function wxr_site_url() { + // Multisite: the base URL. + if ( is_multisite() ) + return network_home_url(); + // WordPress (single site): the blog URL. + else + return get_bloginfo_rss( 'url' ); + } + + /** + * Output a cat_name XML tag from a given category object + * + * @since 2.1.0 + * + * @param object $category Category Object + */ + function wxr_cat_name( $category ) { + if ( empty( $category->name ) ) + return; + + echo '' . wxr_cdata( $category->name ) . ''; + } + + /** + * Output a category_description XML tag from a given category object + * + * @since 2.1.0 + * + * @param object $category Category Object + */ + function wxr_category_description( $category ) { + if ( empty( $category->description ) ) + return; + + echo '' . wxr_cdata( $category->description ) . ''; + } + + /** + * Output a tag_name XML tag from a given tag object + * + * @since 2.3.0 + * + * @param object $tag Tag Object + */ + function wxr_tag_name( $tag ) { + if ( empty( $tag->name ) ) + return; + + echo '' . wxr_cdata( $tag->name ) . ''; + } + + /** + * Output a tag_description XML tag from a given tag object + * + * @since 2.3.0 + * + * @param object $tag Tag Object + */ + function wxr_tag_description( $tag ) { + if ( empty( $tag->description ) ) + return; + + echo '' . wxr_cdata( $tag->description ) . ''; + } + + /** + * Output a term_name XML tag from a given term object + * + * @since 2.9.0 + * + * @param object $term Term Object + */ + function wxr_term_name( $term ) { + if ( empty( $term->name ) ) + return; + + echo '' . wxr_cdata( $term->name ) . ''; + } + + /** + * Output a term_description XML tag from a given term object + * + * @since 2.9.0 + * + * @param object $term Term Object + */ + function wxr_term_description( $term ) { + if ( empty( $term->description ) ) + return; + + echo '' . wxr_cdata( $term->description ) . ''; + } + + /** + * Output list of authors with posts + * + * @since 3.1.0 + * + * @global wpdb $wpdb + * + * @param array $post_ids Array of post IDs to filter the query by. Optional. + */ + function wxr_authors_list( array $post_ids = null ) { + global $wpdb; + + if ( !empty( $post_ids ) ) { + $post_ids = array_map( 'absint', $post_ids ); + $and = 'AND ID IN ( ' . implode( ', ', $post_ids ) . ')'; + } else { + $and = ''; + } + + $authors = array(); + $results = $wpdb->get_results( "SELECT DISTINCT post_author FROM $wpdb->posts WHERE post_status != 'auto-draft' $and" ); + foreach ( (array) $results as $result ) + $authors[] = get_userdata( $result->post_author ); + + $authors = array_filter( $authors ); + + foreach ( $authors as $author ) { + echo "\t"; + echo '' . $author->ID . ''; + echo '' . $author->user_login . ''; + echo '' . $author->user_email . ''; + echo '' . wxr_cdata( $author->display_name ) . ''; + echo '' . wxr_cdata( $author->user_firstname ) . ''; + echo '' . wxr_cdata( $author->user_lastname ) . ''; + echo "\n"; + } + } + + /** + * Ouput all navigation menu terms + * + * @since 3.1.0 + */ + function wxr_nav_menu_terms() { + $nav_menus = wp_get_nav_menus(); + if ( empty( $nav_menus ) || ! is_array( $nav_menus ) ) + return; + + foreach ( $nav_menus as $menu ) { + echo "\t{$menu->term_id}nav_menu{$menu->slug}"; + wxr_term_name( $menu ); + echo "\n"; + } + } + + /** + * Output list of taxonomy terms, in XML tag format, associated with a post + * + * @since 2.3.0 + */ + function wxr_post_taxonomy() { + $post = get_post(); + + $taxonomies = get_object_taxonomies( $post->post_type ); + if ( empty( $taxonomies ) ) + return; + $terms = wp_get_object_terms( $post->ID, $taxonomies ); + + foreach ( (array) $terms as $term ) { + echo "\t\ttaxonomy}\" nicename=\"{$term->slug}\">" . wxr_cdata( $term->name ) . "\n"; + } + } + + /** + * + * @param bool $return_me + * @param string $meta_key + * @return bool + */ + function wxr_filter_postmeta( $return_me, $meta_key ) { + if ( '_edit_lock' == $meta_key ) + $return_me = true; + return $return_me; + } + add_filter( 'wxr_export_skip_postmeta', 'wxr_filter_postmeta', 10, 2 ); + + echo '\n"; + + ?> + + + + + + + + + + + + + + + + + + + + + + <?php bloginfo_rss( 'name' ); ?> + + + + + + + + + + + + term_id ?>slug; ?>parent ? $cats[$c->parent]->slug : ''; ?> + + + term_id ?>slug; ?> + + + term_id ?>taxonomy; ?>slug; ?>parent ? $terms[$t->parent]->slug : ''; ?> + + + + + +in_the_loop = true; + + // Fetch 20 posts at a time rather than loading the entire table into memory. + while ( $next_posts = array_splice( $post_ids, 0, 20 ) ) { + $where = 'WHERE ID IN (' . join( ',', $next_posts ) . ')'; + $posts = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} $where" ); + + // Begin Loop. + foreach ( $posts as $post ) { + setup_postdata( $post ); + $is_sticky = is_sticky( $post->ID ) ? 1 : 0; +?> + + <?php + /** This filter is documented in wp-includes/feed.php */ + echo apply_filters( 'the_title_rss', $post->post_title ); + ?> + + + + + + post_content ) ); + ?> + post_excerpt ) ); + ?> + ID; ?> + post_date; ?> + post_date_gmt; ?> + comment_status; ?> + ping_status; ?> + post_name; ?> + post_status; ?> + post_parent; ?> + menu_order; ?> + post_type; ?> + post_password; ?> + +post_type == 'attachment' ) : ?> + ID ); ?> + + +get_results( $wpdb->prepare( "SELECT * FROM $wpdb->postmeta WHERE post_id = %d", $post->ID ) ); + foreach ( $postmeta as $meta ) : + /** + * Filter whether to selectively skip post meta used for WXR exports. + * + * Returning a truthy value to the filter will skip the current meta + * object from being exported. + * + * @since 3.3.0 + * + * @param bool $skip Whether to skip the current post meta. Default false. + * @param string $meta_key Current meta key. + * @param object $meta Current meta object. + */ + if ( apply_filters( 'wxr_export_skip_postmeta', false, $meta->meta_key, $meta ) ) + continue; + ?> + + meta_key; ?> + meta_value ); ?> + +get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved <> 'spam'", $post->ID ) ); + foreach ( $comments as $c ) : ?> + + comment_ID; ?> + comment_author ); ?> + comment_author_email; ?> + comment_author_url ); ?> + comment_author_IP; ?> + comment_date; ?> + comment_date_gmt; ?> + comment_content ) ?> + comment_approved; ?> + comment_type; ?> + comment_parent; ?> + user_id; ?> +get_results( $wpdb->prepare( "SELECT * FROM $wpdb->commentmeta WHERE comment_id = %d", $c->comment_ID ) ); + foreach ( $c_meta as $meta ) : + /** + * Filter whether to selectively skip comment meta used for WXR exports. + * + * Returning a truthy value to the filter will skip the current meta + * object from being exported. + * + * @since 4.0.0 + * + * @param bool $skip Whether to skip the current comment meta. Default false. + * @param string $meta_key Current meta key. + * @param object $meta Current meta object. + */ + if ( apply_filters( 'wxr_export_skip_commentmeta', false, $meta->meta_key, $meta ) ) { + continue; + } + ?> + + meta_key; ?> + meta_value ); ?> + + + + + + + + + __( 'Main Index Template' ), + 'style.css' => __( 'Stylesheet' ), + 'editor-style.css' => __( 'Visual Editor Stylesheet' ), + 'editor-style-rtl.css' => __( 'Visual Editor RTL Stylesheet' ), + 'rtl.css' => __( 'RTL Stylesheet' ), + 'comments.php' => __( 'Comments' ), + 'comments-popup.php' => __( 'Popup Comments' ), + 'footer.php' => __( 'Footer' ), + 'header.php' => __( 'Header' ), + 'sidebar.php' => __( 'Sidebar' ), + 'archive.php' => __( 'Archives' ), + 'author.php' => __( 'Author Template' ), + 'tag.php' => __( 'Tag Template' ), + 'category.php' => __( 'Category Template' ), + 'page.php' => __( 'Page Template' ), + 'search.php' => __( 'Search Results' ), + 'searchform.php' => __( 'Search Form' ), + 'single.php' => __( 'Single Post' ), + '404.php' => __( '404 Template' ), + 'link.php' => __( 'Links Template' ), + 'functions.php' => __( 'Theme Functions' ), + 'attachment.php' => __( 'Attachment Template' ), + 'image.php' => __('Image Attachment Template'), + 'video.php' => __('Video Attachment Template'), + 'audio.php' => __('Audio Attachment Template'), + 'application.php' => __('Application Attachment Template'), + 'my-hacks.php' => __( 'my-hacks.php (legacy hacks support)' ), + '.htaccess' => __( '.htaccess (for rewrite rules )' ), + // Deprecated files + 'wp-layout.css' => __( 'Stylesheet' ), + 'wp-comments.php' => __( 'Comments Template' ), + 'wp-comments-popup.php' => __( 'Popup Comments Template' ), +); + +/** + * Get the description for standard WordPress theme files and other various standard + * WordPress files + * + * @since 1.5.0 + * + * @global array $wp_file_descriptions + * @param string $file Filesystem path or filename + * @return string Description of file from $wp_file_descriptions or basename of $file if description doesn't exist + */ +function get_file_description( $file ) { + global $wp_file_descriptions; + + if ( isset( $wp_file_descriptions[basename( $file )] ) ) { + return $wp_file_descriptions[basename( $file )]; + } + elseif ( file_exists( $file ) && is_file( $file ) ) { + $template_data = implode( '', file( $file ) ); + if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name )) + return sprintf( __( '%s Page Template' ), _cleanup_header_comment($name[1]) ); + } + + return trim( basename( $file ) ); +} + +/** + * Get the absolute filesystem path to the root of the WordPress installation + * + * @since 1.5.0 + * + * @return string Full filesystem path to the root of the WordPress installation + */ +function get_home_path() { + $home = set_url_scheme( get_option( 'home' ), 'http' ); + $siteurl = set_url_scheme( get_option( 'siteurl' ), 'http' ); + if ( ! empty( $home ) && 0 !== strcasecmp( $home, $siteurl ) ) { + $wp_path_rel_to_home = str_ireplace( $home, '', $siteurl ); /* $siteurl - $home */ + $pos = strripos( str_replace( '\\', '/', $_SERVER['SCRIPT_FILENAME'] ), trailingslashit( $wp_path_rel_to_home ) ); + $home_path = substr( $_SERVER['SCRIPT_FILENAME'], 0, $pos ); + $home_path = trailingslashit( $home_path ); + } else { + $home_path = ABSPATH; + } + + return str_replace( '\\', '/', $home_path ); +} + +/** + * Returns a listing of all files in the specified folder and all subdirectories up to 100 levels deep. + * The depth of the recursiveness can be controlled by the $levels param. + * + * @since 2.6.0 + * + * @param string $folder Optional. Full path to folder. Default empty. + * @param int $levels Optional. Levels of folders to follow, Default 100 (PHP Loop limit). + * @return bool|array False on failure, Else array of files + */ +function list_files( $folder = '', $levels = 100 ) { + if ( empty($folder) ) + return false; + + if ( ! $levels ) + return false; + + $files = array(); + if ( $dir = @opendir( $folder ) ) { + while (($file = readdir( $dir ) ) !== false ) { + if ( in_array($file, array('.', '..') ) ) + continue; + if ( is_dir( $folder . '/' . $file ) ) { + $files2 = list_files( $folder . '/' . $file, $levels - 1); + if ( $files2 ) + $files = array_merge($files, $files2 ); + else + $files[] = $folder . '/' . $file . '/'; + } else { + $files[] = $folder . '/' . $file; + } + } + } + @closedir( $dir ); + return $files; +} + +/** + * Returns a filename of a Temporary unique file. + * Please note that the calling function must unlink() this itself. + * + * The filename is based off the passed parameter or defaults to the current unix timestamp, + * while the directory can either be passed as well, or by leaving it blank, default to a writable temporary directory. + * + * @since 2.6.0 + * + * @param string $filename Optional. Filename to base the Unique file off. Default empty. + * @param string $dir Optional. Directory to store the file in. Default empty. + * @return string a writable filename + */ +function wp_tempnam( $filename = '', $dir = '' ) { + if ( empty( $dir ) ) { + $dir = get_temp_dir(); + } + + if ( empty( $filename ) || '.' == $filename || '/' == $filename ) { + $filename = time(); + } + + // Use the basename of the given file without the extension as the name for the temporary directory + $temp_filename = basename( $filename ); + $temp_filename = preg_replace( '|\.[^.]*$|', '', $temp_filename ); + + // If the folder is falsey, use it's parent directory name instead + if ( ! $temp_filename ) { + return wp_tempnam( dirname( $filename ), $dir ); + } + + $temp_filename .= '.tmp'; + $temp_filename = $dir . wp_unique_filename( $dir, $temp_filename ); + touch( $temp_filename ); + + return $temp_filename; +} + +/** + * Make sure that the file that was requested to edit, is allowed to be edited + * + * Function will die if if you are not allowed to edit the file + * + * @since 1.5.0 + * + * @param string $file file the users is attempting to edit + * @param array $allowed_files Array of allowed files to edit, $file must match an entry exactly + * @return string|null + */ +function validate_file_to_edit( $file, $allowed_files = '' ) { + $code = validate_file( $file, $allowed_files ); + + if (!$code ) + return $file; + + switch ( $code ) { + case 1 : + wp_die( __( 'Sorry, that file cannot be edited.' ) ); + + // case 2 : + // wp_die( __('Sorry, can’t call files with their real path.' )); + + case 3 : + wp_die( __( 'Sorry, that file cannot be edited.' ) ); + } +} + +/** + * Handle PHP uploads in WordPress, sanitizing file names, checking extensions for mime type, + * and moving the file to the appropriate directory within the uploads directory. + * + * @since 4.0.0 + * + * @see wp_handle_upload_error + * + * @param array $file Reference to a single element of $_FILES. Call the function once for each uploaded file. + * @param array|false $overrides An associative array of names => values to override default variables. Default false. + * @param string $time Time formatted in 'yyyy/mm'. + * @param string $action Expected value for $_POST['action']. + * @return array On success, returns an associative array of file attributes. On failure, returns + * $overrides['upload_error_handler'](&$file, $message ) or array( 'error'=>$message ). +*/ +function _wp_handle_upload( &$file, $overrides, $time, $action ) { + // The default error handler. + if ( ! function_exists( 'wp_handle_upload_error' ) ) { + function wp_handle_upload_error( &$file, $message ) { + return array( 'error' => $message ); + } + } + + /** + * Filter the data for a file before it is uploaded to WordPress. + * + * The dynamic portion of the hook name, `$action`, refers to the post action. + * + * @since 2.9.0 as 'wp_handle_upload_prefilter'. + * @since 4.0.0 Converted to a dynamic hook with `$action`. + * + * @param array $file An array of data for a single file. + */ + $file = apply_filters( "{$action}_prefilter", $file ); + + // You may define your own function and pass the name in $overrides['upload_error_handler'] + $upload_error_handler = 'wp_handle_upload_error'; + if ( isset( $overrides['upload_error_handler'] ) ) { + $upload_error_handler = $overrides['upload_error_handler']; + } + + // You may have had one or more 'wp_handle_upload_prefilter' functions error out the file. Handle that gracefully. + if ( isset( $file['error'] ) && ! is_numeric( $file['error'] ) && $file['error'] ) { + return $upload_error_handler( $file, $file['error'] ); + } + + // Install user overrides. Did we mention that this voids your warranty? + + // You may define your own function and pass the name in $overrides['unique_filename_callback'] + $unique_filename_callback = null; + if ( isset( $overrides['unique_filename_callback'] ) ) { + $unique_filename_callback = $overrides['unique_filename_callback']; + } + + /* + * This may not have orignially been intended to be overrideable, + * but historically has been. + */ + if ( isset( $overrides['upload_error_strings'] ) ) { + $upload_error_strings = $overrides['upload_error_strings']; + } else { + // Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error']. + $upload_error_strings = array( + false, + __( 'The uploaded file exceeds the upload_max_filesize directive in php.ini.' ), + __( 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.' ), + __( 'The uploaded file was only partially uploaded.' ), + __( 'No file was uploaded.' ), + '', + __( 'Missing a temporary folder.' ), + __( 'Failed to write file to disk.' ), + __( 'File upload stopped by extension.' ) + ); + } + + // All tests are on by default. Most can be turned off by $overrides[{test_name}] = false; + $test_form = isset( $overrides['test_form'] ) ? $overrides['test_form'] : true; + $test_size = isset( $overrides['test_size'] ) ? $overrides['test_size'] : true; + + // If you override this, you must provide $ext and $type!! + $test_type = isset( $overrides['test_type'] ) ? $overrides['test_type'] : true; + $mimes = isset( $overrides['mimes'] ) ? $overrides['mimes'] : false; + + // A correct form post will pass this test. + if ( $test_form && ( ! isset( $_POST['action'] ) || ( $_POST['action'] != $action ) ) ) { + return call_user_func( $upload_error_handler, $file, __( 'Invalid form submission.' ) ); + } + // A successful upload will pass this test. It makes no sense to override this one. + if ( isset( $file['error'] ) && $file['error'] > 0 ) { + return call_user_func( $upload_error_handler, $file, $upload_error_strings[ $file['error'] ] ); + } + + $test_file_size = 'wp_handle_upload' === $action ? $file['size'] : filesize( $file['tmp_name'] ); + // A non-empty file will pass this test. + if ( $test_size && ! ( $test_file_size > 0 ) ) { + if ( is_multisite() ) { + $error_msg = __( 'File is empty. Please upload something more substantial.' ); + } else { + $error_msg = __( 'File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini.' ); + } + return call_user_func( $upload_error_handler, $file, $error_msg ); + } + + // A properly uploaded file will pass this test. There should be no reason to override this one. + $test_uploaded_file = 'wp_handle_upload' === $action ? @ is_uploaded_file( $file['tmp_name'] ) : @ is_file( $file['tmp_name'] ); + if ( ! $test_uploaded_file ) { + return call_user_func( $upload_error_handler, $file, __( 'Specified file failed upload test.' ) ); + } + + // A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter. + if ( $test_type ) { + $wp_filetype = wp_check_filetype_and_ext( $file['tmp_name'], $file['name'], $mimes ); + $ext = empty( $wp_filetype['ext'] ) ? '' : $wp_filetype['ext']; + $type = empty( $wp_filetype['type'] ) ? '' : $wp_filetype['type']; + $proper_filename = empty( $wp_filetype['proper_filename'] ) ? '' : $wp_filetype['proper_filename']; + + // Check to see if wp_check_filetype_and_ext() determined the filename was incorrect + if ( $proper_filename ) { + $file['name'] = $proper_filename; + } + if ( ( ! $type || !$ext ) && ! current_user_can( 'unfiltered_upload' ) ) { + return call_user_func( $upload_error_handler, $file, __( 'Sorry, this file type is not permitted for security reasons.' ) ); + } + if ( ! $type ) { + $type = $file['type']; + } + } else { + $type = ''; + } + + /* + * A writable uploads dir will pass this test. Again, there's no point + * overriding this one. + */ + if ( ! ( ( $uploads = wp_upload_dir( $time ) ) && false === $uploads['error'] ) ) { + return call_user_func( $upload_error_handler, $file, $uploads['error'] ); + } + + $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback ); + + // Move the file to the uploads dir. + $new_file = $uploads['path'] . "/$filename"; + if ( 'wp_handle_upload' === $action ) { + $move_new_file = @ move_uploaded_file( $file['tmp_name'], $new_file ); + } else { + $move_new_file = @ rename( $file['tmp_name'], $new_file ); + } + + if ( false === $move_new_file ) { + if ( 0 === strpos( $uploads['basedir'], ABSPATH ) ) { + $error_path = str_replace( ABSPATH, '', $uploads['basedir'] ) . $uploads['subdir']; + } else { + $error_path = basename( $uploads['basedir'] ) . $uploads['subdir']; + } + return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $error_path ) ); + } + + // Set correct file permissions. + $stat = stat( dirname( $new_file )); + $perms = $stat['mode'] & 0000666; + @ chmod( $new_file, $perms ); + + // Compute the URL. + $url = $uploads['url'] . "/$filename"; + + if ( is_multisite() ) { + delete_transient( 'dirsize_cache' ); + } + + /** + * Filter the data array for the uploaded file. + * + * @since 2.1.0 + * + * @param array $upload { + * Array of upload data. + * + * @type string $file Filename of the newly-uploaded file. + * @type string $url URL of the uploaded file. + * @type string $type File type. + * } + * @param string $context The type of upload action. Values include 'upload' or 'sideload'. + */ + return apply_filters( 'wp_handle_upload', array( + 'file' => $new_file, + 'url' => $url, + 'type' => $type + ), 'wp_handle_sideload' === $action ? 'sideload' : 'upload' ); } + +/** + * Wrapper for _wp_handle_upload(), passes 'wp_handle_upload' action. + * + * @since 2.0.0 + * + * @see _wp_handle_upload() + * + * @param array $file Reference to a single element of $_FILES. Call the function once for + * each uploaded file. + * @param array|bool $overrides Optional. An associative array of names=>values to override default + * variables. Default false. + * @param string $time Optional. Time formatted in 'yyyy/mm'. Default null. + * @return array On success, returns an associative array of file attributes. On failure, returns + * $overrides['upload_error_handler'](&$file, $message ) or array( 'error'=>$message ). + */ +function wp_handle_upload( &$file, $overrides = false, $time = null ) { + /* + * $_POST['action'] must be set and its value must equal $overrides['action'] + * or this: + */ + $action = 'wp_handle_upload'; + if ( isset( $overrides['action'] ) ) { + $action = $overrides['action']; + } + + return _wp_handle_upload( $file, $overrides, $time, $action ); +} + +/** + * Wrapper for _wp_handle_upload(), passes 'wp_handle_sideload' action + * + * @since 2.6.0 + * + * @see _wp_handle_upload() + * + * @param array $file An array similar to that of a PHP $_FILES POST array + * @param array|bool $overrides Optional. An associative array of names=>values to override default + * variables. Default false. + * @param string $time Optional. Time formatted in 'yyyy/mm'. Default null. + * @return array On success, returns an associative array of file attributes. On failure, returns + * $overrides['upload_error_handler'](&$file, $message ) or array( 'error'=>$message ). + */ +function wp_handle_sideload( &$file, $overrides = false, $time = null ) { + /* + * $_POST['action'] must be set and its value must equal $overrides['action'] + * or this: + */ + $action = 'wp_handle_sideload'; + if ( isset( $overrides['action'] ) ) { + $action = $overrides['action']; + } + return _wp_handle_upload( $file, $overrides, $time, $action ); +} + + +/** + * Downloads a url to a local temporary file using the WordPress HTTP Class. + * Please note, That the calling function must unlink() the file. + * + * @since 2.5.0 + * + * @param string $url the URL of the file to download + * @param int $timeout The timeout for the request to download the file default 300 seconds + * @return mixed WP_Error on failure, string Filename on success. + */ +function download_url( $url, $timeout = 300 ) { + //WARNING: The file is not automatically deleted, The script must unlink() the file. + if ( ! $url ) + return new WP_Error('http_no_url', __('Invalid URL Provided.')); + + $tmpfname = wp_tempnam($url); + if ( ! $tmpfname ) + return new WP_Error('http_no_file', __('Could not create Temporary file.')); + + $response = wp_safe_remote_get( $url, array( 'timeout' => $timeout, 'stream' => true, 'filename' => $tmpfname ) ); + + if ( is_wp_error( $response ) ) { + unlink( $tmpfname ); + return $response; + } + + if ( 200 != wp_remote_retrieve_response_code( $response ) ){ + unlink( $tmpfname ); + return new WP_Error( 'http_404', trim( wp_remote_retrieve_response_message( $response ) ) ); + } + + $content_md5 = wp_remote_retrieve_header( $response, 'content-md5' ); + if ( $content_md5 ) { + $md5_check = verify_file_md5( $tmpfname, $content_md5 ); + if ( is_wp_error( $md5_check ) ) { + unlink( $tmpfname ); + return $md5_check; + } + } + + return $tmpfname; +} + +/** + * Calculates and compares the MD5 of a file to its expected value. + * + * @since 3.7.0 + * + * @param string $filename The filename to check the MD5 of. + * @param string $expected_md5 The expected MD5 of the file, either a base64 encoded raw md5, or a hex-encoded md5 + * @return bool|object WP_Error on failure, true on success, false when the MD5 format is unknown/unexpected + */ +function verify_file_md5( $filename, $expected_md5 ) { + if ( 32 == strlen( $expected_md5 ) ) + $expected_raw_md5 = pack( 'H*', $expected_md5 ); + elseif ( 24 == strlen( $expected_md5 ) ) + $expected_raw_md5 = base64_decode( $expected_md5 ); + else + return false; // unknown format + + $file_md5 = md5_file( $filename, true ); + + if ( $file_md5 === $expected_raw_md5 ) + return true; + + return new WP_Error( 'md5_mismatch', sprintf( __( 'The checksum of the file (%1$s) does not match the expected checksum value (%2$s).' ), bin2hex( $file_md5 ), bin2hex( $expected_raw_md5 ) ) ); +} + +/** + * Unzips a specified ZIP file to a location on the Filesystem via the WordPress Filesystem Abstraction. + * Assumes that WP_Filesystem() has already been called and set up. Does not extract a root-level __MACOSX directory, if present. + * + * Attempts to increase the PHP Memory limit to 256M before uncompressing, + * However, The most memory required shouldn't be much larger than the Archive itself. + * + * @since 2.5.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param string $file Full path and filename of zip archive + * @param string $to Full path on the filesystem to extract archive to + * @return mixed WP_Error on failure, True on success + */ +function unzip_file($file, $to) { + global $wp_filesystem; + + if ( ! $wp_filesystem || !is_object($wp_filesystem) ) + return new WP_Error('fs_unavailable', __('Could not access filesystem.')); + + // Unzip can use a lot of memory, but not this much hopefully + /** This filter is documented in wp-admin/admin.php */ + @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); + + $needed_dirs = array(); + $to = trailingslashit($to); + + // Determine any parent dir's needed (of the upgrade directory) + if ( ! $wp_filesystem->is_dir($to) ) { //Only do parents if no children exist + $path = preg_split('![/\\\]!', untrailingslashit($to)); + for ( $i = count($path); $i >= 0; $i-- ) { + if ( empty($path[$i]) ) + continue; + + $dir = implode('/', array_slice($path, 0, $i+1) ); + if ( preg_match('!^[a-z]:$!i', $dir) ) // Skip it if it looks like a Windows Drive letter. + continue; + + if ( ! $wp_filesystem->is_dir($dir) ) + $needed_dirs[] = $dir; + else + break; // A folder exists, therefor, we dont need the check the levels below this + } + } + + /** + * Filter whether to use ZipArchive to unzip archives. + * + * @since 3.0.0 + * + * @param bool $ziparchive Whether to use ZipArchive. Default true. + */ + if ( class_exists( 'ZipArchive' ) && apply_filters( 'unzip_file_use_ziparchive', true ) ) { + $result = _unzip_file_ziparchive($file, $to, $needed_dirs); + if ( true === $result ) { + return $result; + } elseif ( is_wp_error($result) ) { + if ( 'incompatible_archive' != $result->get_error_code() ) + return $result; + } + } + // Fall through to PclZip if ZipArchive is not available, or encountered an error opening the file. + return _unzip_file_pclzip($file, $to, $needed_dirs); +} + +/** + * This function should not be called directly, use unzip_file instead. Attempts to unzip an archive using the ZipArchive class. + * Assumes that WP_Filesystem() has already been called and set up. + * + * @since 3.0.0 + * @see unzip_file + * @access private + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param string $file Full path and filename of zip archive + * @param string $to Full path on the filesystem to extract archive to + * @param array $needed_dirs A partial list of required folders needed to be created. + * @return mixed WP_Error on failure, True on success + */ +function _unzip_file_ziparchive($file, $to, $needed_dirs = array() ) { + global $wp_filesystem; + + $z = new ZipArchive(); + + $zopen = $z->open( $file, ZIPARCHIVE::CHECKCONS ); + if ( true !== $zopen ) + return new WP_Error( 'incompatible_archive', __( 'Incompatible Archive.' ), array( 'ziparchive_error' => $zopen ) ); + + $uncompressed_size = 0; + + for ( $i = 0; $i < $z->numFiles; $i++ ) { + if ( ! $info = $z->statIndex($i) ) + return new WP_Error( 'stat_failed_ziparchive', __( 'Could not retrieve file from archive.' ) ); + + if ( '__MACOSX/' === substr($info['name'], 0, 9) ) // Skip the OS X-created __MACOSX directory + continue; + + $uncompressed_size += $info['size']; + + if ( '/' == substr($info['name'], -1) ) // directory + $needed_dirs[] = $to . untrailingslashit($info['name']); + else + $needed_dirs[] = $to . untrailingslashit(dirname($info['name'])); + } + + /* + * disk_free_space() could return false. Assume that any falsey value is an error. + * A disk that has zero free bytes has bigger problems. + * Require we have enough space to unzip the file and copy its contents, with a 10% buffer. + */ + if ( defined( 'DOING_CRON' ) && DOING_CRON ) { + $available_space = @disk_free_space( WP_CONTENT_DIR ); + if ( $available_space && ( $uncompressed_size * 2.1 ) > $available_space ) + return new WP_Error( 'disk_full_unzip_file', __( 'Could not copy files. You may have run out of disk space.' ), compact( 'uncompressed_size', 'available_space' ) ); + } + + $needed_dirs = array_unique($needed_dirs); + foreach ( $needed_dirs as $dir ) { + // Check the parent folders of the folders all exist within the creation array. + if ( untrailingslashit($to) == $dir ) // Skip over the working directory, We know this exists (or will exist) + continue; + if ( strpos($dir, $to) === false ) // If the directory is not within the working directory, Skip it + continue; + + $parent_folder = dirname($dir); + while ( !empty($parent_folder) && untrailingslashit($to) != $parent_folder && !in_array($parent_folder, $needed_dirs) ) { + $needed_dirs[] = $parent_folder; + $parent_folder = dirname($parent_folder); + } + } + asort($needed_dirs); + + // Create those directories if need be: + foreach ( $needed_dirs as $_dir ) { + // Only check to see if the Dir exists upon creation failure. Less I/O this way. + if ( ! $wp_filesystem->mkdir( $_dir, FS_CHMOD_DIR ) && ! $wp_filesystem->is_dir( $_dir ) ) { + return new WP_Error( 'mkdir_failed_ziparchive', __( 'Could not create directory.' ), substr( $_dir, strlen( $to ) ) ); + } + } + unset($needed_dirs); + + for ( $i = 0; $i < $z->numFiles; $i++ ) { + if ( ! $info = $z->statIndex($i) ) + return new WP_Error( 'stat_failed_ziparchive', __( 'Could not retrieve file from archive.' ) ); + + if ( '/' == substr($info['name'], -1) ) // directory + continue; + + if ( '__MACOSX/' === substr($info['name'], 0, 9) ) // Don't extract the OS X-created __MACOSX directory files + continue; + + $contents = $z->getFromIndex($i); + if ( false === $contents ) + return new WP_Error( 'extract_failed_ziparchive', __( 'Could not extract file from archive.' ), $info['name'] ); + + if ( ! $wp_filesystem->put_contents( $to . $info['name'], $contents, FS_CHMOD_FILE) ) + return new WP_Error( 'copy_failed_ziparchive', __( 'Could not copy file.' ), $info['name'] ); + } + + $z->close(); + + return true; +} + +/** + * This function should not be called directly, use unzip_file instead. Attempts to unzip an archive using the PclZip library. + * Assumes that WP_Filesystem() has already been called and set up. + * + * @since 3.0.0 + * @see unzip_file + * @access private + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param string $file Full path and filename of zip archive + * @param string $to Full path on the filesystem to extract archive to + * @param array $needed_dirs A partial list of required folders needed to be created. + * @return mixed WP_Error on failure, True on success + */ +function _unzip_file_pclzip($file, $to, $needed_dirs = array()) { + global $wp_filesystem; + + mbstring_binary_safe_encoding(); + + require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php'); + + $archive = new PclZip($file); + + $archive_files = $archive->extract(PCLZIP_OPT_EXTRACT_AS_STRING); + + reset_mbstring_encoding(); + + // Is the archive valid? + if ( !is_array($archive_files) ) + return new WP_Error('incompatible_archive', __('Incompatible Archive.'), $archive->errorInfo(true)); + + if ( 0 == count($archive_files) ) + return new WP_Error( 'empty_archive_pclzip', __( 'Empty archive.' ) ); + + $uncompressed_size = 0; + + // Determine any children directories needed (From within the archive) + foreach ( $archive_files as $file ) { + if ( '__MACOSX/' === substr($file['filename'], 0, 9) ) // Skip the OS X-created __MACOSX directory + continue; + + $uncompressed_size += $file['size']; + + $needed_dirs[] = $to . untrailingslashit( $file['folder'] ? $file['filename'] : dirname($file['filename']) ); + } + + /* + * disk_free_space() could return false. Assume that any falsey value is an error. + * A disk that has zero free bytes has bigger problems. + * Require we have enough space to unzip the file and copy its contents, with a 10% buffer. + */ + if ( defined( 'DOING_CRON' ) && DOING_CRON ) { + $available_space = @disk_free_space( WP_CONTENT_DIR ); + if ( $available_space && ( $uncompressed_size * 2.1 ) > $available_space ) + return new WP_Error( 'disk_full_unzip_file', __( 'Could not copy files. You may have run out of disk space.' ), compact( 'uncompressed_size', 'available_space' ) ); + } + + $needed_dirs = array_unique($needed_dirs); + foreach ( $needed_dirs as $dir ) { + // Check the parent folders of the folders all exist within the creation array. + if ( untrailingslashit($to) == $dir ) // Skip over the working directory, We know this exists (or will exist) + continue; + if ( strpos($dir, $to) === false ) // If the directory is not within the working directory, Skip it + continue; + + $parent_folder = dirname($dir); + while ( !empty($parent_folder) && untrailingslashit($to) != $parent_folder && !in_array($parent_folder, $needed_dirs) ) { + $needed_dirs[] = $parent_folder; + $parent_folder = dirname($parent_folder); + } + } + asort($needed_dirs); + + // Create those directories if need be: + foreach ( $needed_dirs as $_dir ) { + // Only check to see if the dir exists upon creation failure. Less I/O this way. + if ( ! $wp_filesystem->mkdir( $_dir, FS_CHMOD_DIR ) && ! $wp_filesystem->is_dir( $_dir ) ) + return new WP_Error( 'mkdir_failed_pclzip', __( 'Could not create directory.' ), substr( $_dir, strlen( $to ) ) ); + } + unset($needed_dirs); + + // Extract the files from the zip + foreach ( $archive_files as $file ) { + if ( $file['folder'] ) + continue; + + if ( '__MACOSX/' === substr($file['filename'], 0, 9) ) // Don't extract the OS X-created __MACOSX directory files + continue; + + if ( ! $wp_filesystem->put_contents( $to . $file['filename'], $file['content'], FS_CHMOD_FILE) ) + return new WP_Error( 'copy_failed_pclzip', __( 'Could not copy file.' ), $file['filename'] ); + } + return true; +} + +/** + * Copies a directory from one location to another via the WordPress Filesystem Abstraction. + * Assumes that WP_Filesystem() has already been called and setup. + * + * @since 2.5.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param string $from source directory + * @param string $to destination directory + * @param array $skip_list a list of files/folders to skip copying + * @return mixed WP_Error on failure, True on success. + */ +function copy_dir($from, $to, $skip_list = array() ) { + global $wp_filesystem; + + $dirlist = $wp_filesystem->dirlist($from); + + $from = trailingslashit($from); + $to = trailingslashit($to); + + foreach ( (array) $dirlist as $filename => $fileinfo ) { + if ( in_array( $filename, $skip_list ) ) + continue; + + if ( 'f' == $fileinfo['type'] ) { + if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) { + // If copy failed, chmod file to 0644 and try again. + $wp_filesystem->chmod( $to . $filename, FS_CHMOD_FILE ); + if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) + return new WP_Error( 'copy_failed_copy_dir', __( 'Could not copy file.' ), $to . $filename ); + } + } elseif ( 'd' == $fileinfo['type'] ) { + if ( !$wp_filesystem->is_dir($to . $filename) ) { + if ( !$wp_filesystem->mkdir($to . $filename, FS_CHMOD_DIR) ) + return new WP_Error( 'mkdir_failed_copy_dir', __( 'Could not create directory.' ), $to . $filename ); + } + + // generate the $sub_skip_list for the subdirectory as a sub-set of the existing $skip_list + $sub_skip_list = array(); + foreach ( $skip_list as $skip_item ) { + if ( 0 === strpos( $skip_item, $filename . '/' ) ) + $sub_skip_list[] = preg_replace( '!^' . preg_quote( $filename, '!' ) . '/!i', '', $skip_item ); + } + + $result = copy_dir($from . $filename, $to . $filename, $sub_skip_list); + if ( is_wp_error($result) ) + return $result; + } + } + return true; +} + +/** + * Initialises and connects the WordPress Filesystem Abstraction classes. + * This function will include the chosen transport and attempt connecting. + * + * Plugins may add extra transports, And force WordPress to use them by returning + * the filename via the {@see 'filesystem_method_file'} filter. + * + * @since 2.5.0 + * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param array|false $args Optional. Connection args, These are passed directly to + * the `WP_Filesystem_*()` classes. Default false. + * @param string|false $context Optional. Context for get_filesystem_method(). Default false. + * @param bool $allow_relaxed_file_ownership Optional. Whether to allow Group/World writable. Default false. + * @return null|bool false on failure, true on success. + */ +function WP_Filesystem( $args = false, $context = false, $allow_relaxed_file_ownership = false ) { + global $wp_filesystem; + + require_once(ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php'); + + $method = get_filesystem_method( $args, $context, $allow_relaxed_file_ownership ); + + if ( ! $method ) + return false; + + if ( ! class_exists("WP_Filesystem_$method") ) { + + /** + * Filter the path for a specific filesystem method class file. + * + * @since 2.6.0 + * + * @see get_filesystem_method() + * + * @param string $path Path to the specific filesystem method class file. + * @param string $method The filesystem method to use. + */ + $abstraction_file = apply_filters( 'filesystem_method_file', ABSPATH . 'wp-admin/includes/class-wp-filesystem-' . $method . '.php', $method ); + + if ( ! file_exists($abstraction_file) ) + return; + + require_once($abstraction_file); + } + $method = "WP_Filesystem_$method"; + + $wp_filesystem = new $method($args); + + //Define the timeouts for the connections. Only available after the construct is called to allow for per-transport overriding of the default. + if ( ! defined('FS_CONNECT_TIMEOUT') ) + define('FS_CONNECT_TIMEOUT', 30); + if ( ! defined('FS_TIMEOUT') ) + define('FS_TIMEOUT', 30); + + if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) + return false; + + if ( !$wp_filesystem->connect() ) + return false; //There was an error connecting to the server. + + // Set the permission constants if not already set. + if ( ! defined('FS_CHMOD_DIR') ) + define('FS_CHMOD_DIR', ( fileperms( ABSPATH ) & 0777 | 0755 ) ); + if ( ! defined('FS_CHMOD_FILE') ) + define('FS_CHMOD_FILE', ( fileperms( ABSPATH . 'index.php' ) & 0777 | 0644 ) ); + + return true; +} + +/** + * Determines which method to use for reading, writing, modifying, or deleting + * files on the filesystem. + * + * The priority of the transports are: Direct, SSH2, FTP PHP Extension, FTP Sockets + * (Via Sockets class, or `fsockopen()`). Valid values for these are: 'direct', 'ssh2', + * 'ftpext' or 'ftpsockets'. + * + * The return value can be overridden by defining the `FS_METHOD` constant in `wp-config.php`, + * or filtering via {@see 'filesystem_method'}. + * + * @link https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants + * + * Plugins may define a custom transport handler, See WP_Filesystem(). + * + * @since 2.5.0 + * + * @global callback $_wp_filesystem_direct_method + * + * @param array $args Optional. Connection details. Default empty array. + * @param string $context Optional. Full path to the directory that is tested + * for being writable. Default false. + * @param bool $allow_relaxed_file_ownership Optional. Whether to allow Group/World writable. + * Default false. + * @return string The transport to use, see description for valid return values. + */ +function get_filesystem_method( $args = array(), $context = false, $allow_relaxed_file_ownership = false ) { + $method = defined('FS_METHOD') ? FS_METHOD : false; // Please ensure that this is either 'direct', 'ssh2', 'ftpext' or 'ftpsockets' + + if ( ! $context ) { + $context = WP_CONTENT_DIR; + } + + // If the directory doesn't exist (wp-content/languages) then use the parent directory as we'll create it. + if ( WP_LANG_DIR == $context && ! is_dir( $context ) ) { + $context = dirname( $context ); + } + + $context = trailingslashit( $context ); + + if ( ! $method ) { + + $temp_file_name = $context . 'temp-write-test-' . time(); + $temp_handle = @fopen($temp_file_name, 'w'); + if ( $temp_handle ) { + + // Attempt to determine the file owner of the WordPress files, and that of newly created files + $wp_file_owner = $temp_file_owner = false; + if ( function_exists('fileowner') ) { + $wp_file_owner = @fileowner( __FILE__ ); + $temp_file_owner = @fileowner( $temp_file_name ); + } + + if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) { + // WordPress is creating files as the same owner as the WordPress files, + // this means it's safe to modify & create new files via PHP. + $method = 'direct'; + $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner'; + } elseif ( $allow_relaxed_file_ownership ) { + // The $context directory is writable, and $allow_relaxed_file_ownership is set, this means we can modify files + // safely in this directory. This mode doesn't create new files, only alter existing ones. + $method = 'direct'; + $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership'; + } + + @fclose($temp_handle); + @unlink($temp_file_name); + } + } + + if ( ! $method && isset($args['connection_type']) && 'ssh' == $args['connection_type'] && extension_loaded('ssh2') && function_exists('stream_get_contents') ) $method = 'ssh2'; + if ( ! $method && extension_loaded('ftp') ) $method = 'ftpext'; + if ( ! $method && ( extension_loaded('sockets') || function_exists('fsockopen') ) ) $method = 'ftpsockets'; //Sockets: Socket extension; PHP Mode: FSockopen / fwrite / fread + + /** + * Filter the filesystem method to use. + * + * @since 2.6.0 + * + * @param string $method Filesystem method to return. + * @param array $args An array of connection details for the method. + * @param string $context Full path to the directory that is tested for being writable. + * @param bool $allow_relaxed_file_ownership Whether to allow Group/World writable. + */ + return apply_filters( 'filesystem_method', $method, $args, $context, $allow_relaxed_file_ownership ); +} + +/** + * Displays a form to the user to request for their FTP/SSH details in order + * to connect to the filesystem. + * + * All chosen/entered details are saved, Excluding the Password. + * + * Hostnames may be in the form of hostname:portnumber (eg: wordpress.org:2467) + * to specify an alternate FTP/SSH port. + * + * Plugins may override this form by returning true|false via the + * {@see 'request_filesystem_credentials'} filter. + * + * @since 2.5. + * + * @todo Properly mark optional arguments as such + * + * @param string $form_post the URL to post the form to + * @param string $type the chosen Filesystem method in use + * @param bool $error if the current request has failed to connect + * @param string $context The directory which is needed access to, The write-test will be performed on this directory by get_filesystem_method() + * @param array $extra_fields Extra POST fields which should be checked for to be included in the post. + * @param bool $allow_relaxed_file_ownership Whether to allow Group/World writable. + * @return bool False on failure. True on success. + */ +function request_filesystem_credentials($form_post, $type = '', $error = false, $context = false, $extra_fields = null, $allow_relaxed_file_ownership = false ) { + + /** + * Filter the filesystem credentials form output. + * + * Returning anything other than an empty string will effectively short-circuit + * output of the filesystem credentials form, returning that value instead. + * + * @since 2.5.0 + * + * @param mixed $output Form output to return instead. Default empty. + * @param string $form_post URL to POST the form to. + * @param string $type Chosen type of filesystem. + * @param bool $error Whether the current request has failed to connect. + * Default false. + * @param string $context Full path to the directory that is tested for + * being writable. + * @param bool $allow_relaxed_file_ownership Whether to allow Group/World writable. + * @param array $extra_fields Extra POST fields. + */ + $req_cred = apply_filters( 'request_filesystem_credentials', '', $form_post, $type, $error, $context, $extra_fields, $allow_relaxed_file_ownership ); + if ( '' !== $req_cred ) + return $req_cred; + + if ( empty($type) ) { + $type = get_filesystem_method( array(), $context, $allow_relaxed_file_ownership ); + } + + if ( 'direct' == $type ) + return true; + + if ( is_null( $extra_fields ) ) + $extra_fields = array( 'version', 'locale' ); + + $credentials = get_option('ftp_credentials', array( 'hostname' => '', 'username' => '')); + + // If defined, set it to that, Else, If POST'd, set it to that, If not, Set it to whatever it previously was(saved details in option) + $credentials['hostname'] = defined('FTP_HOST') ? FTP_HOST : (!empty($_POST['hostname']) ? wp_unslash( $_POST['hostname'] ) : $credentials['hostname']); + $credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($_POST['username']) ? wp_unslash( $_POST['username'] ) : $credentials['username']); + $credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($_POST['password']) ? wp_unslash( $_POST['password'] ) : ''); + + // Check to see if we are setting the public/private keys for ssh + $credentials['public_key'] = defined('FTP_PUBKEY') ? FTP_PUBKEY : (!empty($_POST['public_key']) ? wp_unslash( $_POST['public_key'] ) : ''); + $credentials['private_key'] = defined('FTP_PRIKEY') ? FTP_PRIKEY : (!empty($_POST['private_key']) ? wp_unslash( $_POST['private_key'] ) : ''); + + // Sanitize the hostname, Some people might pass in odd-data: + $credentials['hostname'] = preg_replace('|\w+://|', '', $credentials['hostname']); //Strip any schemes off + + if ( strpos($credentials['hostname'], ':') ) { + list( $credentials['hostname'], $credentials['port'] ) = explode(':', $credentials['hostname'], 2); + if ( ! is_numeric($credentials['port']) ) + unset($credentials['port']); + } else { + unset($credentials['port']); + } + + if ( ( defined( 'FTP_SSH' ) && FTP_SSH ) || ( defined( 'FS_METHOD' ) && 'ssh2' == FS_METHOD ) ) { + $credentials['connection_type'] = 'ssh'; + } elseif ( ( defined( 'FTP_SSL' ) && FTP_SSL ) && 'ftpext' == $type ) { //Only the FTP Extension understands SSL + $credentials['connection_type'] = 'ftps'; + } elseif ( ! empty( $_POST['connection_type'] ) ) { + $credentials['connection_type'] = wp_unslash( $_POST['connection_type'] ); + } elseif ( ! isset( $credentials['connection_type'] ) ) { //All else fails (And it's not defaulted to something else saved), Default to FTP + $credentials['connection_type'] = 'ftp'; + } + if ( ! $error && + ( + ( !empty($credentials['password']) && !empty($credentials['username']) && !empty($credentials['hostname']) ) || + ( 'ssh' == $credentials['connection_type'] && !empty($credentials['public_key']) && !empty($credentials['private_key']) ) + ) ) { + $stored_credentials = $credentials; + if ( !empty($stored_credentials['port']) ) //save port as part of hostname to simplify above code. + $stored_credentials['hostname'] .= ':' . $stored_credentials['port']; + + unset($stored_credentials['password'], $stored_credentials['port'], $stored_credentials['private_key'], $stored_credentials['public_key']); + if ( ! defined( 'WP_INSTALLING' ) ) { + update_option( 'ftp_credentials', $stored_credentials ); + } + return $credentials; + } + $hostname = isset( $credentials['hostname'] ) ? $credentials['hostname'] : ''; + $username = isset( $credentials['username'] ) ? $credentials['username'] : ''; + $public_key = isset( $credentials['public_key'] ) ? $credentials['public_key'] : ''; + $private_key = isset( $credentials['private_key'] ) ? $credentials['private_key'] : ''; + $port = isset( $credentials['port'] ) ? $credentials['port'] : ''; + $connection_type = isset( $credentials['connection_type'] ) ? $credentials['connection_type'] : ''; + + if ( $error ) { + $error_string = __('ERROR: There was an error connecting to the server, Please verify the settings are correct.'); + if ( is_wp_error($error) ) + $error_string = esc_html( $error->get_error_message() ); + echo '

' . $error_string . '

'; + } + + $types = array(); + if ( extension_loaded('ftp') || extension_loaded('sockets') || function_exists('fsockopen') ) + $types[ 'ftp' ] = __('FTP'); + if ( extension_loaded('ftp') ) //Only this supports FTPS + $types[ 'ftps' ] = __('FTPS (SSL)'); + if ( extension_loaded('ssh2') && function_exists('stream_get_contents') ) + $types[ 'ssh' ] = __('SSH2'); + + /** + * Filter the connection types to output to the filesystem credentials form. + * + * @since 2.9.0 + * + * @param array $types Types of connections. + * @param array $credentials Credentials to connect with. + * @param string $type Chosen filesystem method. + * @param object $error Error object. + * @param string $context Full path to the directory that is tested + * for being writable. + */ + $types = apply_filters( 'fs_ftp_connection_types', $types, $credentials, $type, $error, $context ); + +?> + +
+
+

+

+ +
+ +
+
+ +
+ +

+ + + + +

+
+ $text ) : ?> + + +
+'; +} +?> +

+ + +

+
+
+ +
+
+ '; + exit; + } +} +?>
+ +

+ +

+ + + +
+ + + +

+ + + +
+
+ +
+
+
+ + + +
+ + + + + + + | + | + +
+ + + +
+ + + + + + + + +
    + $reals ) + foreach ( $reals as $real ) + if ( isset($num_posts[$_type]) ) + $num_posts[$_type] += $_num_posts[$real]; + else + $num_posts[$_type] = $_num_posts[$real]; +// If available type specified by media button clicked, filter by that type +if ( empty($_GET['post_mime_type']) && !empty($num_posts[$type]) ) { + $_GET['post_mime_type'] = $type; + list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query(); +} +if ( empty($_GET['post_mime_type']) || $_GET['post_mime_type'] == 'all' ) + $class = ' class="current"'; +else + $class = ''; +$type_links[] = '
  • ' . __('All Types') . ''; +foreach ( $post_mime_types as $mime_type => $label ) { + $class = ''; + + if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) ) + continue; + + if ( isset($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) ) + $class = ' class="current"'; + + $type_links[] = '
  • ' . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), '' . number_format_i18n( $num_posts[$mime_type] ) . '') . ''; +} +/** + * Filter the media upload mime type list items. + * + * Returned values should begin with an `
  • ` tag. + * + * @since 3.1.0 + * + * @param array $type_links An array of list items containing mime type link HTML. + */ +echo implode(' |
  • ', apply_filters( 'media_upload_mime_type_links', $type_links ) ) . ''; +unset($type_links); +?> +
+ +
+ + add_query_arg( 'paged', '%#%' ), + 'format' => '', + 'prev_text' => __('«'), + 'next_text' => __('»'), + 'total' => ceil($wp_query->found_posts / 10), + 'current' => $q['paged'], +)); + +if ( $page_links ) + echo "
$page_links
"; +?> + +
+posts WHERE post_type = 'attachment' ORDER BY post_date DESC"; + +$arc_result = $wpdb->get_results( $arc_query ); + +$month_count = count($arc_result); +$selected_month = isset( $_GET['m'] ) ? $_GET['m'] : 0; + +if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?> + + + + + +
+ +
+
+
+ +
+ + + + + + +
+ + +
+

+ + +

+
+ + + + + + +'; + } else { + $caption = ''; + } + + $default_align = get_option('image_default_align'); + if ( empty($default_align) ) + $default_align = 'none'; + + if ( 'image' == $default_view ) { + $view = 'image-only'; + $table_class = ''; + } else { + $view = $table_class = 'not-image'; + } + + return ' +

   

+ + + + + + + + + + + + + + + + + + ' . $caption . ' + + + + + + + + + + + + + + + + + +
+ + * +
+ + * +

' . __('Link text, e.g. “Ransom Demands (PDF)”') . '

+ + +

' . __('Alt text for the image, e.g. “The Mona Lisa”') . '

+ + + + + + + + +
+ +
+ + + +

' . __('Enter a link URL or click above for presets.') . '

+ +
+ ' . get_submit_button( __( 'Insert into Post' ), 'button', 'insertonlybutton', false ) . ' +
+'; + +} + +/** + * Displays the multi-file uploader message. + * + * @since 2.6.0 + * + * @global int $post_ID + */ +function media_upload_flash_bypass() { + $browser_uploader = admin_url( 'media-new.php?browser-uploader' ); + + if ( $post = get_post() ) + $browser_uploader .= '&post_id=' . intval( $post->ID ); + elseif ( ! empty( $GLOBALS['post_ID'] ) ) + $browser_uploader .= '&post_id=' . intval( $GLOBALS['post_ID'] ); + + ?> +

+ browser uploader instead.' ), $browser_uploader, '_blank' ); ?> +

+ +

+ Switch to the multi-file uploader.'); ?> +

+ '; + $end = ''; + } +?> +

+' . sprintf( __( 'Sorry, you have used all of your storage quota of %s MB.' ), get_space_allowed() ) . '

'; +} + +/** + * Displays the image and editor in the post editor + * + * @since 3.5.0 + */ +function edit_form_image_editor( $post ) { + $open = isset( $_GET['image-editor'] ); + if ( $open ) + require_once ABSPATH . 'wp-admin/includes/image-edit.php'; + + $thumb_url = false; + if ( $attachment_id = intval( $post->ID ) ) + $thumb_url = wp_get_attachment_image_src( $attachment_id, array( 900, 450 ), true ); + + $alt_text = get_post_meta( $post->ID, '_wp_attachment_image_alt', true ); + + $att_url = wp_get_attachment_url( $post->ID ); ?> +
+ ID ) ) : + $image_edit_button = ''; + if ( wp_image_editor_supports( array( 'mime_type' => $post->post_mime_type ) ) ) { + $nonce = wp_create_nonce( "image_editor-$post->ID" ); + $image_edit_button = " "; + } + ?> + +
+ + class="wp_attachment_image" id="media-head-"> +

+

+
+ class="image-editor" id="image-editor-"> + +
+ $att_url ) ); + + elseif ( $attachment_id && wp_attachment_is( 'video', $post ) ): + + wp_maybe_generate_attachment_metadata( $post ); + + $meta = wp_get_attachment_metadata( $attachment_id ); + $w = ! empty( $meta['width'] ) ? min( $meta['width'], 640 ) : 0; + $h = ! empty( $meta['height'] ) ? $meta['height'] : 0; + if ( $h && $w < $meta['width'] ) { + $h = round( ( $meta['height'] * $w ) / $meta['width'] ); + } + + $attr = array( 'src' => $att_url ); + if ( ! empty( $w ) && ! empty( $h ) ) { + $attr['width'] = $w; + $attr['height'] = $h; + } + + $thumb_id = get_post_thumbnail_id( $attachment_id ); + if ( ! empty( $thumb_id ) ) { + $attr['poster'] = wp_get_attachment_url( $thumb_id ); + } + + echo wp_video_shortcode( $attr ); + + endif; ?> + +
+

+
+ +

+ + + post_mime_type, 0, 5 ) ) : ?> +

+
+ +

+ + + 'strong,em,link,block,del,ins,img,ul,ol,li,code,close' ); + $editor_args = array( + 'textarea_name' => 'content', + 'textarea_rows' => 5, + 'media_buttons' => false, + 'tinymce' => false, + 'quicktags' => $quicktags_settings, + ); + ?> + + + post_content, 'attachment_content', $editor_args ); ?> + +
+ ID ); + echo $extras['item']; + echo '' . "\n"; +} + +/** + * Displays non-editable attachment metadata in the publish metabox + * + * @since 3.5.0 + */ +function attachment_submitbox_metadata() { + $post = get_post(); + + $filename = esc_html( wp_basename( $post->guid ) ); + + $media_dims = ''; + $meta = wp_get_attachment_metadata( $post->ID ); + if ( isset( $meta['width'], $meta['height'] ) ) + $media_dims .= "{$meta['width']} × {$meta['height']} "; + /** This filter is documented in wp-admin/includes/media.php */ + $media_dims = apply_filters( 'media_meta', $media_dims, $post ); + + $att_url = wp_get_attachment_url( $post->ID ); +?> +
+ + +
+
+ +
+
+ ID ), $matches ) ) { + echo esc_html( strtoupper( $matches[1] ) ); + list( $mime_type ) = explode( '/', $post->post_mime_type ); + if ( $mime_type !== 'image' && ! empty( $meta['mime_type'] ) ) { + if ( $meta['mime_type'] !== "$mime_type/" . strtolower( $matches[1] ) ) { + echo ' (' . $meta['mime_type'] . ')'; + } + } + } else { + echo strtoupper( str_replace( 'image/', '', $post->post_mime_type ) ); + } + ?> +
+ + ID ); + $file_size = false; + + if ( isset( $meta['filesize'] ) ) + $file_size = $meta['filesize']; + elseif ( file_exists( $file ) ) + $file_size = filesize( $file ); + + if ( ! empty( $file_size ) ) : ?> +
+ +
+ post_mime_type ) ) { + + /** + * Filter the audio and video metadata fields to be shown in the publish meta box. + * + * The key for each item in the array should correspond to an attachment + * metadata key, and the value should be the desired label. + * + * @since 3.7.0 + * + * @param array $fields An array of the attachment metadata keys and labels. + */ + $fields = apply_filters( 'media_submitbox_misc_sections', array( + 'length_formatted' => __( 'Length:' ), + 'bitrate' => __( 'Bitrate:' ), + ) ); + + foreach ( $fields as $key => $label ) { + if ( empty( $meta[ $key ] ) ) { + continue; + } + ?> +
+ +
+ __( 'Audio Format:' ), + 'codec' => __( 'Audio Codec:' ) + ) ); + + foreach ( $audio_fields as $key => $label ) { + if ( empty( $meta['audio'][ $key ] ) ) { + continue; + } + ?> +
+ +
+ +
+ +
+ $list ) { + if ( 'length' !== $key && ! empty( $list ) ) { + $metadata[$key] = reset( $list ); + // Fix bug in byte stream analysis. + if ( 'terms_of_use' === $key && 0 === strpos( $metadata[$key], 'yright notice.' ) ) + $metadata[$key] = 'Cop' . $metadata[$key]; + } + } + break; + } + } + + if ( ! empty( $data['id3v2']['APIC'] ) ) { + $image = reset( $data['id3v2']['APIC']); + if ( ! empty( $image['data'] ) ) { + $metadata['image'] = array( + 'data' => $image['data'], + 'mime' => $image['image_mime'], + 'width' => $image['image_width'], + 'height' => $image['image_height'] + ); + } + } elseif ( ! empty( $data['comments']['picture'] ) ) { + $image = reset( $data['comments']['picture'] ); + if ( ! empty( $image['data'] ) ) { + $metadata['image'] = array( + 'data' => $image['data'], + 'mime' => $image['image_mime'] + ); + } + } +} + +/** + * Retrieve metadata from a video file's ID3 tags + * + * @since 3.6.0 + * + * @param string $file Path to file. + * @return array|bool Returns array of metadata, if found. + */ +function wp_read_video_metadata( $file ) { + if ( ! file_exists( $file ) ) + return false; + + $metadata = array(); + + if ( ! class_exists( 'getID3' ) ) + require( ABSPATH . WPINC . '/ID3/getid3.php' ); + $id3 = new getID3(); + $data = $id3->analyze( $file ); + + if ( isset( $data['video']['lossless'] ) ) + $metadata['lossless'] = $data['video']['lossless']; + if ( ! empty( $data['video']['bitrate'] ) ) + $metadata['bitrate'] = (int) $data['video']['bitrate']; + if ( ! empty( $data['video']['bitrate_mode'] ) ) + $metadata['bitrate_mode'] = $data['video']['bitrate_mode']; + if ( ! empty( $data['filesize'] ) ) + $metadata['filesize'] = (int) $data['filesize']; + if ( ! empty( $data['mime_type'] ) ) + $metadata['mime_type'] = $data['mime_type']; + if ( ! empty( $data['playtime_seconds'] ) ) + $metadata['length'] = (int) round( $data['playtime_seconds'] ); + if ( ! empty( $data['playtime_string'] ) ) + $metadata['length_formatted'] = $data['playtime_string']; + if ( ! empty( $data['video']['resolution_x'] ) ) + $metadata['width'] = (int) $data['video']['resolution_x']; + if ( ! empty( $data['video']['resolution_y'] ) ) + $metadata['height'] = (int) $data['video']['resolution_y']; + if ( ! empty( $data['fileformat'] ) ) + $metadata['fileformat'] = $data['fileformat']; + if ( ! empty( $data['video']['dataformat'] ) ) + $metadata['dataformat'] = $data['video']['dataformat']; + if ( ! empty( $data['video']['encoder'] ) ) + $metadata['encoder'] = $data['video']['encoder']; + if ( ! empty( $data['video']['codec'] ) ) + $metadata['codec'] = $data['video']['codec']; + + if ( ! empty( $data['audio'] ) ) { + unset( $data['audio']['streams'] ); + $metadata['audio'] = $data['audio']; + } + + wp_add_id3_tag_data( $metadata, $data ); + + return $metadata; +} + +/** + * Retrieve metadata from a audio file's ID3 tags + * + * @since 3.6.0 + * + * @param string $file Path to file. + * @return array|bool Returns array of metadata, if found. + */ +function wp_read_audio_metadata( $file ) { + if ( ! file_exists( $file ) ) + return false; + $metadata = array(); + + if ( ! class_exists( 'getID3' ) ) + require( ABSPATH . WPINC . '/ID3/getid3.php' ); + $id3 = new getID3(); + $data = $id3->analyze( $file ); + + if ( ! empty( $data['audio'] ) ) { + unset( $data['audio']['streams'] ); + $metadata = $data['audio']; + } + + if ( ! empty( $data['fileformat'] ) ) + $metadata['fileformat'] = $data['fileformat']; + if ( ! empty( $data['filesize'] ) ) + $metadata['filesize'] = (int) $data['filesize']; + if ( ! empty( $data['mime_type'] ) ) + $metadata['mime_type'] = $data['mime_type']; + if ( ! empty( $data['playtime_seconds'] ) ) + $metadata['length'] = (int) round( $data['playtime_seconds'] ); + if ( ! empty( $data['playtime_string'] ) ) + $metadata['length_formatted'] = $data['playtime_string']; + + wp_add_id3_tag_data( $metadata, $data ); + + return $metadata; +} + +/** + * Encapsulate logic for Attach/Detach actions + * + * @since 4.2.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param int $parent_id Attachment parent ID. + * @param string $action Optional. Attach/detach action. Accepts 'attach' or 'detach'. + * Default 'attach'. + */ +function wp_media_attach_action( $parent_id, $action = 'attach' ) { + global $wpdb; + + if ( ! $parent_id ) { + return; + } + + if ( ! current_user_can( 'edit_post', $parent_id ) ) { + wp_die( __( 'You are not allowed to edit this post.' ) ); + } + $ids = array(); + foreach ( (array) $_REQUEST['media'] as $att_id ) { + $att_id = (int) $att_id; + + if ( ! current_user_can( 'edit_post', $att_id ) ) { + continue; + } + + $ids[] = $att_id; + } + + if ( ! empty( $ids ) ) { + $ids_string = implode( ',', $ids ); + if ( 'attach' === $action ) { + $result = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_parent = %d WHERE post_type = 'attachment' AND ID IN ( $ids_string )", $parent_id ) ); + } else { + $result = $wpdb->query( "UPDATE $wpdb->posts SET post_parent = 0 WHERE post_type = 'attachment' AND ID IN ( $ids_string )" ); + } + + foreach ( $ids as $att_id ) { + clean_attachment_cache( $att_id ); + } + } + + if ( isset( $result ) ) { + $location = 'upload.php'; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos( $referer, 'upload.php' ) ) { + $location = remove_query_arg( array( 'attached', 'detach' ), $referer ); + } + } + + $key = 'attach' === $action ? 'attached' : 'detach'; + $location = add_query_arg( array( $key => $result ), $location ); + wp_redirect( $location ); + exit; + } +} diff --git a/wp-admin/includes/menu.php b/wp-admin/includes/menu.php new file mode 100644 index 0000000000..accc04b1b0 --- /dev/null +++ b/wp-admin/includes/menu.php @@ -0,0 +1,341 @@ + $sub) { + foreach ($sub as $index => $data) { + if ( ! current_user_can($data[1]) ) { + unset($submenu[$parent][$index]); + $_wp_submenu_nopriv[$parent][$data[2]] = true; + } + } + unset($index, $data); + + if ( empty($submenu[$parent]) ) + unset($submenu[$parent]); +} +unset($sub, $parent); + +/* + * Loop over the top-level menu. + * Menus for which the original parent is not accessible due to lack of privileges + * will have the next submenu in line be assigned as the new menu parent. + */ +foreach ( $menu as $id => $data ) { + if ( empty($submenu[$data[2]]) ) + continue; + $subs = $submenu[$data[2]]; + $first_sub = reset( $subs ); + $old_parent = $data[2]; + $new_parent = $first_sub[2]; + /* + * If the first submenu is not the same as the assigned parent, + * make the first submenu the new parent. + */ + if ( $new_parent != $old_parent ) { + $_wp_real_parent_file[$old_parent] = $new_parent; + $menu[$id][2] = $new_parent; + + foreach ($submenu[$old_parent] as $index => $data) { + $submenu[$new_parent][$index] = $submenu[$old_parent][$index]; + unset($submenu[$old_parent][$index]); + } + unset($submenu[$old_parent], $index); + + if ( isset($_wp_submenu_nopriv[$old_parent]) ) + $_wp_submenu_nopriv[$new_parent] = $_wp_submenu_nopriv[$old_parent]; + } +} +unset($id, $data, $subs, $first_sub, $old_parent, $new_parent); + +if ( is_network_admin() ) { + + /** + * Fires before the administration menu loads in the Network Admin. + * + * @since 3.1.0 + * + * @param string $context Empty context. + */ + do_action( 'network_admin_menu', '' ); +} elseif ( is_user_admin() ) { + + /** + * Fires before the administration menu loads in the User Admin. + * + * @since 3.1.0 + * + * @param string $context Empty context. + */ + do_action( 'user_admin_menu', '' ); +} else { + + /** + * Fires before the administration menu loads in the admin. + * + * @since 1.5.0 + * + * @param string $context Empty context. + */ + do_action( 'admin_menu', '' ); +} + +/* + * Remove menus that have no accessible submenus and require privileges + * that the user does not have. Run re-parent loop again. + */ +foreach ( $menu as $id => $data ) { + if ( ! current_user_can($data[1]) ) + $_wp_menu_nopriv[$data[2]] = true; + + /* + * If there is only one submenu and it is has same destination as the parent, + * remove the submenu. + */ + if ( ! empty( $submenu[$data[2]] ) && 1 == count ( $submenu[$data[2]] ) ) { + $subs = $submenu[$data[2]]; + $first_sub = reset( $subs ); + if ( $data[2] == $first_sub[2] ) + unset( $submenu[$data[2]] ); + } + + // If submenu is empty... + if ( empty($submenu[$data[2]]) ) { + // And user doesn't have privs, remove menu. + if ( isset( $_wp_menu_nopriv[$data[2]] ) ) { + unset($menu[$id]); + } + } +} +unset($id, $data, $subs, $first_sub); + +// Remove any duplicated separators +$separator_found = false; +foreach ( $menu as $id => $data ) { + if ( 0 == strcmp('wp-menu-separator', $data[4] ) ) { + if ( ! $separator_found ) { + $separator_found = true; + } else { + unset($menu[$id]); + $separator_found = false; + } + } else { + $separator_found = false; + } +} +unset($id, $data); + +/** + * + * @param string $add + * @param string $class + * @return string + */ +function add_cssclass($add, $class) { + $class = empty($class) ? $add : $class .= ' ' . $add; + return $class; +} + +/** + * + * @param array $menu + * @return array + */ +function add_menu_classes($menu) { + $first = $lastorder = false; + $i = 0; + $mc = count($menu); + foreach ( $menu as $order => $top ) { + $i++; + + if ( 0 == $order ) { // dashboard is always shown/single + $menu[0][4] = add_cssclass('menu-top-first', $top[4]); + $lastorder = 0; + continue; + } + + if ( 0 === strpos($top[2], 'separator') && false !== $lastorder ) { // if separator + $first = true; + $c = $menu[$lastorder][4]; + $menu[$lastorder][4] = add_cssclass('menu-top-last', $c); + continue; + } + + if ( $first ) { + $c = $menu[$order][4]; + $menu[$order][4] = add_cssclass('menu-top-first', $c); + $first = false; + } + + if ( $mc == $i ) { // last item + $c = $menu[$order][4]; + $menu[$order][4] = add_cssclass('menu-top-last', $c); + } + + $lastorder = $order; + } + + /** + * Filter administration menus array with classes added for top-level items. + * + * @since 2.7.0 + * + * @param array $menu Associative array of administration menu items. + */ + return apply_filters( 'add_menu_classes', $menu ); +} + +uksort($menu, "strnatcasecmp"); // make it all pretty + +/** + * Filter whether to enable custom ordering of the administration menu. + * + * See the 'menu_order' filter for reordering menu items. + * + * @since 2.8.0 + * + * @param bool $custom Whether custom ordering is enabled. Default false. + */ +if ( apply_filters( 'custom_menu_order', false ) ) { + $menu_order = array(); + foreach ( $menu as $menu_item ) { + $menu_order[] = $menu_item[2]; + } + unset($menu_item); + $default_menu_order = $menu_order; + + /** + * Filter the order of administration menu items. + * + * A truthy value must first be passed to the 'custom_menu_order' filter + * for this filter to work. Use the following to enable custom menu ordering: + * + * add_filter( 'custom_menu_order', '__return_true' ); + * + * @since 2.8.0 + * + * @param array $menu_order An ordered array of menu items. + */ + $menu_order = apply_filters( 'menu_order', $menu_order ); + $menu_order = array_flip($menu_order); + $default_menu_order = array_flip($default_menu_order); + + /** + * + * @global array $menu_order + * @global array $default_menu_order + * + * @param array $a + * @param array $b + * @return int + */ + function sort_menu($a, $b) { + global $menu_order, $default_menu_order; + $a = $a[2]; + $b = $b[2]; + if ( isset($menu_order[$a]) && !isset($menu_order[$b]) ) { + return -1; + } elseif ( !isset($menu_order[$a]) && isset($menu_order[$b]) ) { + return 1; + } elseif ( isset($menu_order[$a]) && isset($menu_order[$b]) ) { + if ( $menu_order[$a] == $menu_order[$b] ) + return 0; + return ($menu_order[$a] < $menu_order[$b]) ? -1 : 1; + } else { + return ($default_menu_order[$a] <= $default_menu_order[$b]) ? -1 : 1; + } + } + + usort($menu, 'sort_menu'); + unset($menu_order, $default_menu_order); +} + +// Remove the last menu item if it is a separator. +$last_menu_key = array_keys( $menu ); +$last_menu_key = array_pop( $last_menu_key ); +if ( !empty( $menu ) && 'wp-menu-separator' == $menu[ $last_menu_key ][ 4 ] ) + unset( $menu[ $last_menu_key ] ); +unset( $last_menu_key ); + +if ( !user_can_access_admin_page() ) { + + /** + * Fires when access to an admin page is denied. + * + * @since 2.5.0 + */ + do_action( 'admin_page_access_denied' ); + + wp_die( __( 'You do not have sufficient permissions to access this page.' ), 403 ); +} + +$menu = add_menu_classes($menu); diff --git a/wp-admin/includes/meta-boxes.php b/wp-admin/includes/meta-boxes.php new file mode 100644 index 0000000000..a7a895a194 --- /dev/null +++ b/wp-admin/includes/meta-boxes.php @@ -0,0 +1,1144 @@ +post_type; + $post_type_object = get_post_type_object($post_type); + $can_publish = current_user_can($post_type_object->cap->publish_posts); +?> +
+ +
+ + +
+ +
+ +
+
+post_status && 'future' != $post->post_status && 'pending' != $post->post_status ) { ?> +post_status ) { ?>style="display:none" type="submit" name="save" id="save-post" value="" class="button" /> +post_status && $can_publish ) { ?> + + + +
+public ) : ?> +
+post_status ) { + $preview_link = esc_url( get_permalink( $post->ID ) ); + $preview_button = __( 'Preview Changes' ); +} else { + $preview_link = set_url_scheme( get_permalink( $post->ID ) ); + + /** + * Filter the URI of a post preview in the post submit box. + * + * @since 2.0.5 + * @since 4.0.0 $post parameter was added. + * + * @param string $preview_link URI the user will be directed to for a post preview. + * @param WP_Post $post Post object. + */ + $preview_link = esc_url( apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post ) ); + $preview_button = __( 'Preview' ); +} +?> + + +
+ +
+
+ +
+ +
+ +post_status ) { + case 'private': + _e('Privately Published'); + break; + case 'publish': + _e('Published'); + break; + case 'future': + _e('Scheduled'); + break; + case 'pending': + _e('Pending Review'); + break; + case 'draft': + case 'auto-draft': + _e('Draft'); + break; +} +?> + +post_status || 'private' == $post->post_status || $can_publish ) { ?> +post_status ) { ?>style="display:none;" class="edit-post-status hide-if-no-js"> + +
+ + + + +
+ + +
+ +
+ post_status ) { + $post->post_password = ''; + $visibility = 'private'; + $visibility_trans = __('Private'); +} elseif ( !empty( $post->post_password ) ) { + $visibility = 'password'; + $visibility_trans = __('Password protected'); +} elseif ( $post_type == 'post' && is_sticky( $post->ID ) ) { + $visibility = 'public'; + $visibility_trans = __('Public, Sticky'); +} else { + $visibility = 'public'; + $visibility_trans = __('Public'); +} + +echo esc_html( $visibility_trans ); ?> + + + +
+ + +ID)); ?> /> + + + />
+ +ID ) ); ?> />
+ + />
+
+ />
+ +

+ + +

+
+ + +
+ +ID ) { + if ( 'future' == $post->post_status ) { // scheduled for publishing at a future date + $stamp = __('Scheduled for: %1$s'); + } elseif ( 'publish' == $post->post_status || 'private' == $post->post_status ) { // already published + $stamp = __('Published on: %1$s'); + } elseif ( '0000-00-00 00:00:00' == $post->post_date_gmt ) { // draft, 1 or more saves, no date specified + $stamp = __('Publish immediately'); + } elseif ( time() < strtotime( $post->post_date_gmt . ' +0000' ) ) { // draft, 1 or more saves, future date specified + $stamp = __('Schedule for: %1$s'); + } else { // draft, 1 or more saves, date specified + $stamp = __('Publish on: %1$s'); + } + $date = date_i18n( $datef, strtotime( $post->post_date ) ); +} else { // draft (no saves, and thus no date specified) + $stamp = __('Publish immediately'); + $date = date_i18n( $datef, strtotime( current_time('mysql') ) ); +} + +if ( ! empty( $args['args']['revisions_count'] ) ) : + $revisions_to_keep = wp_revisions_to_keep( $post ); +?> +
+ 0 && $revisions_to_keep <= $args['args']['revisions_count'] ) { + echo ''; + printf( __( 'Revisions: %s' ), '' . number_format_i18n( $args['args']['revisions_count'] ) . '+' ); + echo ''; + } else { + printf( __( 'Revisions: %s' ), '' . number_format_i18n( $args['args']['revisions_count'] ) . '' ); + } +?> + +
+ +
+ + + +
+ + +
+
+ + + +
+
+
+ +
+ +
+ID ) ) { + if ( !EMPTY_TRASH_DAYS ) + $delete_text = __('Delete Permanently'); + else + $delete_text = __('Move to Trash'); + ?> + +
+ +
+ +post_status, array('publish', 'future', 'private') ) || 0 == $post->ID ) { + if ( $can_publish ) : + if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?> + + + + + + + + + + + + +
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ %1$s'); + $date = date_i18n( $datef, strtotime( $post->post_date ) ); + ?> +
+ +
+ + +
+
+
+ +
+
+ ID ) ) + if ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) { + echo "" . __( 'Trash' ) . ""; + } else { + $delete_ays = ! MEDIA_TRASH ? " onclick='return showNotice.warn();'" : ''; + echo "" . __( 'Delete Permanently' ) . ""; + } + ?> +
+ +
+ + + +
+
+
+ +
+ +post_type, 'post-formats' ) ) : + $post_formats = get_theme_support( 'post-formats' ); + + if ( is_array( $post_formats[0] ) ) : + $post_format = get_post_format( $post->ID ); + if ( !$post_format ) + $post_format = '0'; + // Add in the current one if it isn't there yet, in case the current theme doesn't support it + if ( $post_format && !in_array( $post_format, $post_formats[0] ) ) + $post_formats[0][] = $post_format; + ?> +
+
+ + /> + +
/> + +
+
+ 'post_tag' ); + if ( ! isset( $box['args'] ) || ! is_array( $box['args'] ) ) { + $args = array(); + } else { + $args = $box['args']; + } + $r = wp_parse_args( $args, $defaults ); + $tax_name = esc_attr( $r['taxonomy'] ); + $taxonomy = get_taxonomy( $r['taxonomy'] ); + $user_can_assign_terms = current_user_can( $taxonomy->cap->assign_terms ); + $comma = _x( ',', 'tag delimiter' ); +?> +
+
+
+

labels->add_or_remove_items; ?>

+
+ +
+ +

+

+
+

labels->separate_items_with_commas; ?>

+ +
+
+
+ +

labels->choose_from_most_used; ?>

+ + 'category' ); + if ( ! isset( $box['args'] ) || ! is_array( $box['args'] ) ) { + $args = array(); + } else { + $args = $box['args']; + } + $r = wp_parse_args( $args, $defaults ); + $tax_name = esc_attr( $r['taxonomy'] ); + $taxonomy = get_taxonomy( $r['taxonomy'] ); + ?> +
+ + + + +
+ "; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks. + ?> +
    + ID, array( 'taxonomy' => $tax_name, 'popular_cats' => $popular_ids ) ); ?> +
+
+ cap->edit_terms ) ) : ?> +
+

+ + labels->add_new_item ); + ?> + +

+

+ + + + $tax_name, 'hide_empty' => 0, 'name' => 'new' . $tax_name . '_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '— ' . $taxonomy->labels->parent_item . ' —' ) ); ?> + + + +

+
+ +
+ + +

Learn more about manual excerpts.'); ?>

+to_ping) ) .'" />'; + if ('' != $post->pinged) { + $pings = '

'. __('Already pinged:') . '

    '; + $already_pinged = explode("\n", trim($post->pinged)); + foreach ($already_pinged as $pinged_url) { + $pings .= "\n\t
  • " . esc_html($pinged_url) . "
  • "; + } + $pings .= '
'; + } + +?> +


()

+

pingbacks, no other action necessary.'); ?>

+ +
+
+ID); +foreach ( $metadata as $key => $value ) { + if ( is_protected_meta( $metadata[ $key ][ 'meta_key' ], 'post' ) || ! current_user_can( 'edit_post_meta', $post->ID, $metadata[ $key ][ 'meta_key' ] ) ) + unset( $metadata[ $key ] ); +} +list_meta( $metadata ); +meta_form( $post ); ?> +
+

use in your theme.'); ?>

+ + +

+
+ + +

+ +

+ $post->ID, 'number' => 1, 'count' => true ) ); + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); + $wp_list_table->display( true ); + + if ( 1 > $total ) { + echo '

' . __('No comments yet.') . '

'; + } else { + $hidden = get_hidden_meta_boxes( get_current_screen() ); + if ( ! in_array('commentsdiv', $hidden) ) { + ?> + + +

+ + + + + 'authors', + 'name' => 'post_author_override', + 'selected' => empty($post->ID) ? $user_ID : $post->post_author, + 'include_selected' => true + ) ); +} + +/** + * Display list of revisions. + * + * @since 2.6.0 + * + * @param object $post + */ +function post_revisions_meta_box( $post ) { + wp_list_post_revisions( $post ); +} + +// -- Page related Meta Boxes + +/** + * Display page attributes form fields. + * + * @since 2.7.0 + * + * @param object $post + */ +function page_attributes_meta_box($post) { + $post_type_object = get_post_type_object($post->post_type); + if ( $post_type_object->hierarchical ) { + $dropdown_args = array( + 'post_type' => $post->post_type, + 'exclude_tree' => $post->ID, + 'selected' => $post->post_parent, + 'name' => 'parent_id', + 'show_option_none' => __('(no parent)'), + 'sort_column' => 'menu_order, post_title', + 'echo' => 0, + ); + + /** + * Filter the arguments used to generate a Pages drop-down element. + * + * @since 3.3.0 + * + * @see wp_dropdown_pages() + * + * @param array $dropdown_args Array of arguments used to generate the pages drop-down. + * @param WP_Post $post The current WP_Post object. + */ + $dropdown_args = apply_filters( 'page_attributes_dropdown_pages_args', $dropdown_args, $post ); + $pages = wp_dropdown_pages( $dropdown_args ); + if ( ! empty($pages) ) { +?> +

+ + +post_type && 0 != count( get_page_templates( $post ) ) && get_option( 'page_for_posts' ) != $post->ID ) { + $template = !empty($post->page_template) ? $post->page_template : false; + ?> +

+ + +

+

+post_type && get_current_screen()->get_help_tabs() ) { ?> +

+ + + +
+
    +
  • +
  • +
+ +
+
    + link_id) ) + wp_link_category_checklist($link->link_id); + else + wp_link_category_checklist(); + ?> +
+
+ + + +
+

+ +
+
+ +
+

+

+

+
+

+link_rel ) ? $link->link_rel : ''; // In PHP 5.3: $link_rel = $link->link_rel ?: ''; + $rels = preg_split('/\s+/', $link_rel); + + if ('' != $value && in_array($value, $rels) ) { + echo ' checked="checked"'; + } + + if ('' == $value) { + if ('family' == $class && strpos($link_rel, 'child') === false && strpos($link_rel, 'parent') === false && strpos($link_rel, 'sibling') === false && strpos($link_rel, 'spouse') === false && strpos($link_rel, 'kin') === false) echo ' checked="checked"'; + if ('friendship' == $class && strpos($link_rel, 'friend') === false && strpos($link_rel, 'acquaintance') === false && strpos($link_rel, 'contact') === false) echo ' checked="checked"'; + if ('geographical' == $class && strpos($link_rel, 'co-resident') === false && strpos($link_rel, 'neighbor') === false) echo ' checked="checked"'; + if ('identity' == $class && in_array('me', $rels) ) echo ' checked="checked"'; + } +} + +/** + * Display xfn form fields. + * + * @since 2.6.0 + * + * @param object $link + */ +function link_xfn_meta_box($link) { +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

XFN.'); ?>

+ + + + + + + + + + + + + + + + + + + +ID, '_thumbnail_id', true ); + echo _wp_post_thumbnail_html( $thumbnail_id, $post->ID ); +} + +/** + * Display fields for ID3 data + * + * @since 3.9.0 + * + * @param WP_Post $post + */ +function attachment_id3_data_meta_box( $post ) { + $meta = array(); + if ( ! empty( $post->ID ) ) { + $meta = wp_get_attachment_metadata( $post->ID ); + } + + foreach ( wp_get_attachment_id3_keys( $post, 'edit' ) as $key => $label ) : ?> +

+
+ +

+ $markerline ) { + if (strpos($markerline, '# BEGIN ' . $marker) !== false) + $state = false; + if ( $state ) { + if ( $n + 1 < count( $markerdata ) ) + fwrite( $f, "{$markerline}\n" ); + else + fwrite( $f, "{$markerline}" ); + } + if (strpos($markerline, '# END ' . $marker) !== false) { + fwrite( $f, "# BEGIN {$marker}\n" ); + if ( is_array( $insertion )) + foreach ( $insertion as $insertline ) + fwrite( $f, "{$insertline}\n" ); + fwrite( $f, "# END {$marker}\n" ); + $state = true; + $foundit = true; + } + } + } + if (!$foundit) { + fwrite( $f, "\n# BEGIN {$marker}\n" ); + foreach ( $insertion as $insertline ) + fwrite( $f, "{$insertline}\n" ); + fwrite( $f, "# END {$marker}\n" ); + } + fclose( $f ); + return true; + } else { + return false; + } +} + +/** + * Updates the htaccess file with the current rules if it is writable. + * + * Always writes to the file if it exists and is writable to ensure that we + * blank out old rules. + * + * @since 1.5.0 + * + * @global WP_Rewrite $wp_rewrite + */ +function save_mod_rewrite_rules() { + if ( is_multisite() ) + return; + + global $wp_rewrite; + + $home_path = get_home_path(); + $htaccess_file = $home_path.'.htaccess'; + + /* + * If the file doesn't already exist check for write access to the directory + * and whether we have some rules. Else check for write access to the file. + */ + if ((!file_exists($htaccess_file) && is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks()) || is_writable($htaccess_file)) { + if ( got_mod_rewrite() ) { + $rules = explode( "\n", $wp_rewrite->mod_rewrite_rules() ); + return insert_with_markers( $htaccess_file, 'WordPress', $rules ); + } + } + + return false; +} + +/** + * Updates the IIS web.config file with the current rules if it is writable. + * If the permalinks do not require rewrite rules then the rules are deleted from the web.config file. + * + * @since 2.8.0 + * + * @global WP_Rewrite $wp_rewrite + * + * @return bool True if web.config was updated successfully + */ +function iis7_save_url_rewrite_rules(){ + if ( is_multisite() ) + return; + + global $wp_rewrite; + + $home_path = get_home_path(); + $web_config_file = $home_path . 'web.config'; + + // Using win_is_writable() instead of is_writable() because of a bug in Windows PHP + if ( iis7_supports_permalinks() && ( ( ! file_exists($web_config_file) && win_is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks() ) || win_is_writable($web_config_file) ) ) { + $rule = $wp_rewrite->iis7_url_rewrite_rules(false, '', ''); + if ( ! empty($rule) ) { + return iis7_add_rewrite_rule($web_config_file, $rule); + } else { + return iis7_delete_rewrite_rule($web_config_file); + } + } + return false; +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.5.0 + * + * @param string $file + */ +function update_recently_edited( $file ) { + $oldfiles = (array ) get_option( 'recently_edited' ); + if ( $oldfiles ) { + $oldfiles = array_reverse( $oldfiles ); + $oldfiles[] = $file; + $oldfiles = array_reverse( $oldfiles ); + $oldfiles = array_unique( $oldfiles ); + if ( 5 < count( $oldfiles )) + array_pop( $oldfiles ); + } else { + $oldfiles[] = $file; + } + update_option( 'recently_edited', $oldfiles ); +} + +/** + * If siteurl, home or page_on_front changed, flush rewrite rules. + * + * @since 2.1.0 + * + * @param string $old_value + * @param string $value + */ +function update_home_siteurl( $old_value, $value ) { + if ( defined( "WP_INSTALLING" ) ) + return; + + // If home changed, write rewrite rules to new location. + flush_rewrite_rules(); +} + +/** + * Shorten an URL, to be used as link text + * + * @since 1.2.0 + * + * @param string $url + * @return string + */ +function url_shorten( $url ) { + $short_url = str_replace( array( 'http://', 'www.' ), '', $url ); + $short_url = untrailingslashit( $short_url ); + if ( strlen( $short_url ) > 35 ) + $short_url = substr( $short_url, 0, 32 ) . '…'; + return $short_url; +} + +/** + * Resets global variables based on $_GET and $_POST + * + * This function resets global variables based on the names passed + * in the $vars array to the value of $_POST[$var] or $_GET[$var] or '' + * if neither is defined. + * + * @since 2.0.0 + * + * @param array $vars An array of globals to reset. + */ +function wp_reset_vars( $vars ) { + foreach ( $vars as $var ) { + if ( empty( $_POST[ $var ] ) ) { + if ( empty( $_GET[ $var ] ) ) { + $GLOBALS[ $var ] = ''; + } else { + $GLOBALS[ $var ] = $_GET[ $var ]; + } + } else { + $GLOBALS[ $var ] = $_POST[ $var ]; + } + } +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.1.0 + * + * @param string|WP_Error $message + */ +function show_message($message) { + if ( is_wp_error($message) ){ + if ( $message->get_error_data() && is_string( $message->get_error_data() ) ) + $message = $message->get_error_message() . ': ' . $message->get_error_data(); + else + $message = $message->get_error_message(); + } + echo "

$message

\n"; + wp_ob_end_flush_all(); + flush(); +} + +/** + * @since 2.8.0 + * + * @param string $content + * @return array + */ +function wp_doc_link_parse( $content ) { + if ( !is_string( $content ) || empty( $content ) ) + return array(); + + if ( !function_exists('token_get_all') ) + return array(); + + $tokens = token_get_all( $content ); + $count = count( $tokens ); + $functions = array(); + $ignore_functions = array(); + for ( $t = 0; $t < $count - 2; $t++ ) { + if ( ! is_array( $tokens[ $t ] ) ) { + continue; + } + + if ( T_STRING == $tokens[ $t ][0] && ( '(' == $tokens[ $t + 1 ] || '(' == $tokens[ $t + 2 ] ) ) { + // If it's a function or class defined locally, there's not going to be any docs available + if ( ( isset( $tokens[ $t - 2 ][1] ) && in_array( $tokens[ $t - 2 ][1], array( 'function', 'class' ) ) ) || ( isset( $tokens[ $t - 2 ][0] ) && T_OBJECT_OPERATOR == $tokens[ $t - 1 ][0] ) ) { + $ignore_functions[] = $tokens[$t][1]; + } + // Add this to our stack of unique references + $functions[] = $tokens[$t][1]; + } + } + + $functions = array_unique( $functions ); + sort( $functions ); + + /** + * Filter the list of functions and classes to be ignored from the documentation lookup. + * + * @since 2.8.0 + * + * @param array $ignore_functions Functions and classes to be ignored. + */ + $ignore_functions = apply_filters( 'documentation_ignore_functions', $ignore_functions ); + + $ignore_functions = array_unique( $ignore_functions ); + + $out = array(); + foreach ( $functions as $function ) { + if ( in_array( $function, $ignore_functions ) ) + continue; + $out[] = $function; + } + + return $out; +} + +/** + * Saves option for number of rows when listing posts, pages, comments, etc. + * + * @since 2.8.0 + */ +function set_screen_options() { + + if ( isset($_POST['wp_screen_options']) && is_array($_POST['wp_screen_options']) ) { + check_admin_referer( 'screen-options-nonce', 'screenoptionnonce' ); + + if ( !$user = wp_get_current_user() ) + return; + $option = $_POST['wp_screen_options']['option']; + $value = $_POST['wp_screen_options']['value']; + + if ( $option != sanitize_key( $option ) ) + return; + + $map_option = $option; + $type = str_replace('edit_', '', $map_option); + $type = str_replace('_per_page', '', $type); + if ( in_array( $type, get_taxonomies() ) ) + $map_option = 'edit_tags_per_page'; + elseif ( in_array( $type, get_post_types() ) ) + $map_option = 'edit_per_page'; + else + $option = str_replace('-', '_', $option); + + switch ( $map_option ) { + case 'edit_per_page': + case 'users_per_page': + case 'edit_comments_per_page': + case 'upload_per_page': + case 'edit_tags_per_page': + case 'plugins_per_page': + // Network admin + case 'sites_network_per_page': + case 'users_network_per_page': + case 'site_users_network_per_page': + case 'plugins_network_per_page': + case 'themes_network_per_page': + case 'site_themes_network_per_page': + $value = (int) $value; + if ( $value < 1 || $value > 999 ) + return; + break; + default: + + /** + * Filter a screen option value before it is set. + * + * The filter can also be used to modify non-standard [items]_per_page + * settings. See the parent function for a full list of standard options. + * + * Returning false to the filter will skip saving the current option. + * + * @since 2.8.0 + * + * @see set_screen_options() + * + * @param bool|int $value Screen option value. Default false to skip. + * @param string $option The option name. + * @param int $value The number of rows to use. + */ + $value = apply_filters( 'set-screen-option', false, $option, $value ); + + if ( false === $value ) + return; + break; + } + + update_user_meta($user->ID, $option, $value); + wp_safe_redirect( remove_query_arg( array('pagenum', 'apage', 'paged'), wp_get_referer() ) ); + exit; + } +} + +/** + * Check if rewrite rule for WordPress already exists in the IIS 7+ configuration file + * + * @since 2.8.0 + * + * @return bool + * @param string $filename The file path to the configuration file + */ +function iis7_rewrite_rule_exists($filename) { + if ( ! file_exists($filename) ) + return false; + if ( ! class_exists('DOMDocument') ) + return false; + + $doc = new DOMDocument(); + if ( $doc->load($filename) === false ) + return false; + $xpath = new DOMXPath($doc); + $rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); + if ( $rules->length == 0 ) + return false; + else + return true; +} + +/** + * Delete WordPress rewrite rule from web.config file if it exists there + * + * @since 2.8.0 + * + * @param string $filename Name of the configuration file + * @return bool + */ +function iis7_delete_rewrite_rule($filename) { + // If configuration file does not exist then rules also do not exist so there is nothing to delete + if ( ! file_exists($filename) ) + return true; + + if ( ! class_exists('DOMDocument') ) + return false; + + $doc = new DOMDocument(); + $doc->preserveWhiteSpace = false; + + if ( $doc -> load($filename) === false ) + return false; + $xpath = new DOMXPath($doc); + $rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); + if ( $rules->length > 0 ) { + $child = $rules->item(0); + $parent = $child->parentNode; + $parent->removeChild($child); + $doc->formatOutput = true; + saveDomDocument($doc, $filename); + } + return true; +} + +/** + * Add WordPress rewrite rule to the IIS 7+ configuration file. + * + * @since 2.8.0 + * + * @param string $filename The file path to the configuration file + * @param string $rewrite_rule The XML fragment with URL Rewrite rule + * @return bool + */ +function iis7_add_rewrite_rule($filename, $rewrite_rule) { + if ( ! class_exists('DOMDocument') ) + return false; + + // If configuration file does not exist then we create one. + if ( ! file_exists($filename) ) { + $fp = fopen( $filename, 'w'); + fwrite($fp, ''); + fclose($fp); + } + + $doc = new DOMDocument(); + $doc->preserveWhiteSpace = false; + + if ( $doc->load($filename) === false ) + return false; + + $xpath = new DOMXPath($doc); + + // First check if the rule already exists as in that case there is no need to re-add it + $wordpress_rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); + if ( $wordpress_rules->length > 0 ) + return true; + + // Check the XPath to the rewrite rule and create XML nodes if they do not exist + $xmlnodes = $xpath->query('/configuration/system.webServer/rewrite/rules'); + if ( $xmlnodes->length > 0 ) { + $rules_node = $xmlnodes->item(0); + } else { + $rules_node = $doc->createElement('rules'); + + $xmlnodes = $xpath->query('/configuration/system.webServer/rewrite'); + if ( $xmlnodes->length > 0 ) { + $rewrite_node = $xmlnodes->item(0); + $rewrite_node->appendChild($rules_node); + } else { + $rewrite_node = $doc->createElement('rewrite'); + $rewrite_node->appendChild($rules_node); + + $xmlnodes = $xpath->query('/configuration/system.webServer'); + if ( $xmlnodes->length > 0 ) { + $system_webServer_node = $xmlnodes->item(0); + $system_webServer_node->appendChild($rewrite_node); + } else { + $system_webServer_node = $doc->createElement('system.webServer'); + $system_webServer_node->appendChild($rewrite_node); + + $xmlnodes = $xpath->query('/configuration'); + if ( $xmlnodes->length > 0 ) { + $config_node = $xmlnodes->item(0); + $config_node->appendChild($system_webServer_node); + } else { + $config_node = $doc->createElement('configuration'); + $doc->appendChild($config_node); + $config_node->appendChild($system_webServer_node); + } + } + } + } + + $rule_fragment = $doc->createDocumentFragment(); + $rule_fragment->appendXML($rewrite_rule); + $rules_node->appendChild($rule_fragment); + + $doc->encoding = "UTF-8"; + $doc->formatOutput = true; + saveDomDocument($doc, $filename); + + return true; +} + +/** + * Saves the XML document into a file + * + * @since 2.8.0 + * + * @param DOMDocument $doc + * @param string $filename + */ +function saveDomDocument($doc, $filename) { + $config = $doc->saveXML(); + $config = preg_replace("/([^\r])\n/", "$1\r\n", $config); + $fp = fopen($filename, 'w'); + fwrite($fp, $config); + fclose($fp); +} + +/** + * Display the default admin color scheme picker (Used in user-edit.php) + * + * @since 3.0.0 + * + * @global array $_wp_admin_css_colors + */ +function admin_color_scheme_picker( $user_id ) { + global $_wp_admin_css_colors; + + ksort( $_wp_admin_css_colors ); + + if ( isset( $_wp_admin_css_colors['fresh'] ) ) { + // Set Default ('fresh') and Light should go first. + $_wp_admin_css_colors = array_filter( array_merge( array( 'fresh' => '', 'light' => '' ), $_wp_admin_css_colors ) ); + } + + $current_color = get_user_option( 'admin_color', $user_id ); + + if ( empty( $current_color ) || ! isset( $_wp_admin_css_colors[ $current_color ] ) ) { + $current_color = 'fresh'; + } + + ?> +
+ + $color_info ) : + + ?> +
+ /> + + + + + + colors as $html_color ) { + ?> + + + +
 
+
+ +
+ icon_colors ) ) { + $icon_colors = $_wp_admin_css_colors[ $color_scheme ]->icon_colors; + } elseif ( ! empty( $_wp_admin_css_colors['fresh']->icon_colors ) ) { + $icon_colors = $_wp_admin_css_colors['fresh']->icon_colors; + } else { + // Fall back to the default set of icon colors if the default scheme is missing. + $icon_colors = array( 'base' => '#999', 'focus' => '#00a0d2', 'current' => '#fff' ); + } + + echo '\n"; +} + +/** + * @since 3.3.0 + */ +function _ipad_meta() { + if ( wp_is_mobile() ) { + ?> + + sprintf( __( '%s is currently editing' ), $user->display_name ) ); + + if ( ( $avatar = get_avatar( $user->ID, 18 ) ) && preg_match( "|src='([^']+)'|", $avatar, $matches ) ) + $send['avatar_src'] = $matches[1]; + + $checked[$key] = $send; + } + } + } + + if ( ! empty( $checked ) ) + $response['wp-check-locked-posts'] = $checked; + + return $response; +} + +/** + * Check lock status on the New/Edit Post screen and refresh the lock + * + * @since 3.6.0 + */ +function wp_refresh_post_lock( $response, $data, $screen_id ) { + if ( array_key_exists( 'wp-refresh-post-lock', $data ) ) { + $received = $data['wp-refresh-post-lock']; + $send = array(); + + if ( ! $post_id = absint( $received['post_id'] ) ) + return $response; + + if ( ! current_user_can('edit_post', $post_id) ) + return $response; + + if ( ( $user_id = wp_check_post_lock( $post_id ) ) && ( $user = get_userdata( $user_id ) ) ) { + $error = array( + 'text' => sprintf( __( '%s has taken over and is currently editing.' ), $user->display_name ) + ); + + if ( $avatar = get_avatar( $user->ID, 64 ) ) { + if ( preg_match( "|src='([^']+)'|", $avatar, $matches ) ) + $error['avatar_src'] = $matches[1]; + } + + $send['lock_error'] = $error; + } else { + if ( $new_lock = wp_set_post_lock( $post_id ) ) + $send['new_lock'] = implode( ':', $new_lock ); + } + + $response['wp-refresh-post-lock'] = $send; + } + + return $response; +} + +/** + * Check nonce expiration on the New/Edit Post screen and refresh if needed + * + * @since 3.6.0 + */ +function wp_refresh_post_nonces( $response, $data, $screen_id ) { + if ( array_key_exists( 'wp-refresh-post-nonces', $data ) ) { + $received = $data['wp-refresh-post-nonces']; + $response['wp-refresh-post-nonces'] = array( 'check' => 1 ); + + if ( ! $post_id = absint( $received['post_id'] ) ) { + return $response; + } + + if ( ! current_user_can( 'edit_post', $post_id ) ) { + return $response; + } + + $response['wp-refresh-post-nonces'] = array( + 'replace' => array( + 'getpermalinknonce' => wp_create_nonce('getpermalink'), + 'samplepermalinknonce' => wp_create_nonce('samplepermalink'), + 'closedpostboxesnonce' => wp_create_nonce('closedpostboxes'), + '_ajax_linking_nonce' => wp_create_nonce( 'internal-linking' ), + '_wpnonce' => wp_create_nonce( 'update-post_' . $post_id ), + ), + 'heartbeatNonce' => wp_create_nonce( 'heartbeat-nonce' ), + ); + } + + return $response; +} + +/** + * Disable suspension of Heartbeat on the Add/Edit Post screens. + * + * @since 3.8.0 + * + * @global string $pagenow + * + * @param array $settings An array of Heartbeat settings. + * @return array Filtered Heartbeat settings. + */ +function wp_heartbeat_set_suspension( $settings ) { + global $pagenow; + + if ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) { + $settings['suspension'] = 'disable'; + } + + return $settings; +} + +/** + * Autosave with heartbeat + * + * @since 3.9.0 + */ +function heartbeat_autosave( $response, $data ) { + if ( ! empty( $data['wp_autosave'] ) ) { + $saved = wp_autosave( $data['wp_autosave'] ); + + if ( is_wp_error( $saved ) ) { + $response['wp_autosave'] = array( 'success' => false, 'message' => $saved->get_error_message() ); + } elseif ( empty( $saved ) ) { + $response['wp_autosave'] = array( 'success' => false, 'message' => __( 'Error while saving.' ) ); + } else { + /* translators: draft saved date format, see http://php.net/date */ + $draft_saved_date_format = __( 'g:i:s a' ); + /* translators: %s: date and time */ + $response['wp_autosave'] = array( 'success' => true, 'message' => sprintf( __( 'Draft saved at %s.' ), date_i18n( $draft_saved_date_format ) ) ); + } + } + + return $response; +} + +/** + * Disables autocomplete on the 'post' form (Add/Edit Post screens) for WebKit browsers, + * as they disregard the autocomplete setting on the editor textarea. That can break the editor + * when the user navigates to it with the browser's Back button. See #28037 + * + * @since 4.0 + * + * @global bool $is_safari + * @global bool $is_chrome + */ +function post_form_autocomplete_off() { + global $is_safari, $is_chrome; + + if ( $is_safari || $is_chrome ) { + echo ' autocomplete="off"'; + } +} + +/** + * Remove single-use URL parameters and create canonical link based on new URL. + * + * Remove specific query string parameters from a URL, create the canonical link, + * put it in the admin header, and change the current URL to match. + * + * @since 4.2.0 + */ +function wp_admin_canonical_url() { + $removable_query_args = array( + 'message', 'settings-updated', 'saved', + 'update', 'updated', 'activated', + 'activate', 'deactivate', 'locked', + 'deleted', 'trashed', 'untrashed', + 'enabled', 'disabled', 'skipped', + 'spammed', 'unspammed', + ); + + /** + * Filter the list of URL parameters to remove. + * + * @since 4.2.0 + * + * @param array $removable_query_args An array of parameters to remove from the URL. + */ + $removable_query_args = apply_filters( 'removable_query_args', $removable_query_args ); + + if ( empty( $removable_query_args ) ) { + return; + } + + // Ensure we're using an absolute URL. + $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); + $filtered_url = remove_query_arg( $removable_query_args, $current_url ); + ?> + + + ( 1024 * get_site_option( 'fileupload_maxk', 1500 ) ) ) + $file['error'] = sprintf(__('This file is too big. Files must be less than %1$s KB in size.'), get_site_option( 'fileupload_maxk', 1500 ) ); + if ( upload_is_user_over_quota( false ) ) { + $file['error'] = __( 'You have used your space quota. Please delete files before uploading.' ); + } + if ( $file['error'] != '0' && ! isset( $_POST['html-upload'] ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) { + wp_die( $file['error'] . ' ' . __( 'Back' ) . '' ); + } + + return $file; +} + +/** + * Delete a blog. + * + * @since 3.0.0 + * + * @global wpdb $wpdb + * + * @param int $blog_id Blog ID. + * @param bool $drop True if blog's table should be dropped. Default is false. + */ +function wpmu_delete_blog( $blog_id, $drop = false ) { + global $wpdb; + + $switch = false; + if ( get_current_blog_id() != $blog_id ) { + $switch = true; + switch_to_blog( $blog_id ); + } + + $blog = get_blog_details( $blog_id ); + /** + * Fires before a blog is deleted. + * + * @since MU + * + * @param int $blog_id The blog ID. + * @param bool $drop True if blog's table should be dropped. Default is false. + */ + do_action( 'delete_blog', $blog_id, $drop ); + + $users = get_users( array( 'blog_id' => $blog_id, 'fields' => 'ids' ) ); + + // Remove users from this blog. + if ( ! empty( $users ) ) { + foreach ( $users as $user_id ) { + remove_user_from_blog( $user_id, $blog_id ); + } + } + + update_blog_status( $blog_id, 'deleted', 1 ); + + $current_site = get_current_site(); + + // If a full blog object is not available, do not destroy anything. + if ( $drop && ! $blog ) { + $drop = false; + } + + // Don't destroy the initial, main, or root blog. + if ( $drop && ( 1 == $blog_id || is_main_site( $blog_id ) || ( $blog->path == $current_site->path && $blog->domain == $current_site->domain ) ) ) { + $drop = false; + } + + $upload_path = trim( get_option( 'upload_path' ) ); + + // If ms_files_rewriting is enabled and upload_path is empty, wp_upload_dir is not reliable. + if ( $drop && get_site_option( 'ms_files_rewriting' ) && empty( $upload_path ) ) { + $drop = false; + } + + if ( $drop ) { + $uploads = wp_upload_dir(); + + $tables = $wpdb->tables( 'blog' ); + /** + * Filter the tables to drop when the blog is deleted. + * + * @since MU + * + * @param array $tables The blog tables to be dropped. + * @param int $blog_id The ID of the blog to drop tables for. + */ + $drop_tables = apply_filters( 'wpmu_drop_tables', $tables, $blog_id ); + + foreach ( (array) $drop_tables as $table ) { + $wpdb->query( "DROP TABLE IF EXISTS `$table`" ); + } + + $wpdb->delete( $wpdb->blogs, array( 'blog_id' => $blog_id ) ); + + /** + * Filter the upload base directory to delete when the blog is deleted. + * + * @since MU + * + * @param string $uploads['basedir'] Uploads path without subdirectory. @see wp_upload_dir() + * @param int $blog_id The blog ID. + */ + $dir = apply_filters( 'wpmu_delete_blog_upload_dir', $uploads['basedir'], $blog_id ); + $dir = rtrim( $dir, DIRECTORY_SEPARATOR ); + $top_dir = $dir; + $stack = array($dir); + $index = 0; + + while ( $index < count( $stack ) ) { + // Get indexed directory from stack + $dir = $stack[$index]; + + $dh = @opendir( $dir ); + if ( $dh ) { + while ( ( $file = @readdir( $dh ) ) !== false ) { + if ( $file == '.' || $file == '..' ) + continue; + + if ( @is_dir( $dir . DIRECTORY_SEPARATOR . $file ) ) { + $stack[] = $dir . DIRECTORY_SEPARATOR . $file; + } elseif ( @is_file( $dir . DIRECTORY_SEPARATOR . $file ) ) { + @unlink( $dir . DIRECTORY_SEPARATOR . $file ); + } + } + @closedir( $dh ); + } + $index++; + } + + $stack = array_reverse( $stack ); // Last added dirs are deepest + foreach( (array) $stack as $dir ) { + if ( $dir != $top_dir) + @rmdir( $dir ); + } + + clean_blog_cache( $blog ); + } + + if ( $switch ) + restore_current_blog(); +} + +/** + * Delete a user from the network and remove from all sites. + * + * @since 3.0.0 + * + * @todo Merge with wp_delete_user() ? + * + * @global wpdb $wpdb + * + * @param int $id The user ID. + * @return bool True if the user was deleted, otherwise false. + */ +function wpmu_delete_user( $id ) { + global $wpdb; + + $id = (int) $id; + $user = new WP_User( $id ); + + if ( !$user->exists() ) + return false; + + // Global super-administrators are protected, and cannot be deleted. + $_super_admins = get_super_admins(); + if ( in_array( $user->user_login, $_super_admins, true ) ) { + return false; + } + + /** + * Fires before a user is deleted from the network. + * + * @since MU + * + * @param int $id ID of the user about to be deleted from the network. + */ + do_action( 'wpmu_delete_user', $id ); + + $blogs = get_blogs_of_user( $id ); + + if ( ! empty( $blogs ) ) { + foreach ( $blogs as $blog ) { + switch_to_blog( $blog->userblog_id ); + remove_user_from_blog( $id, $blog->userblog_id ); + + $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_author = %d", $id ) ); + foreach ( (array) $post_ids as $post_id ) { + wp_delete_post( $post_id ); + } + + // Clean links + $link_ids = $wpdb->get_col( $wpdb->prepare( "SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id ) ); + + if ( $link_ids ) { + foreach ( $link_ids as $link_id ) + wp_delete_link( $link_id ); + } + + restore_current_blog(); + } + } + + $meta = $wpdb->get_col( $wpdb->prepare( "SELECT umeta_id FROM $wpdb->usermeta WHERE user_id = %d", $id ) ); + foreach ( $meta as $mid ) + delete_metadata_by_mid( 'user', $mid ); + + $wpdb->delete( $wpdb->users, array( 'ID' => $id ) ); + + clean_user_cache( $user ); + + /** This action is documented in wp-admin/includes/user.php */ + do_action( 'deleted_user', $id ); + + return true; +} + +/** + * Sends an email when a site administrator email address is changed. + * + * @since 3.0.0 + * + * @param string $old_value The old email address. Not currently used. + * @param string $value The new email address. + */ +function update_option_new_admin_email( $old_value, $value ) { + if ( $value == get_option( 'admin_email' ) || !is_email( $value ) ) + return; + + $hash = md5( $value. time() .mt_rand() ); + $new_admin_email = array( + 'hash' => $hash, + 'newemail' => $value + ); + update_option( 'adminhash', $new_admin_email ); + + /* translators: Do not translate USERNAME, ADMIN_URL, EMAIL, SITENAME, SITEURL: those are placeholders. */ + $email_text = __( 'Howdy ###USERNAME###, + +You recently requested to have the administration email address on +your site changed. + +If this is correct, please click on the following link to change it: +###ADMIN_URL### + +You can safely ignore and delete this email if you do not want to +take this action. + +This email has been sent to ###EMAIL### + +Regards, +All at ###SITENAME### +###SITEURL###' ); + + /** + * Filter the email text sent when the site admin email is changed. + * + * The following strings have a special meaning and will get replaced dynamically: + * ###USERNAME### The current user's username. + * ###ADMIN_URL### The link to click on to confirm the email change. + * ###EMAIL### The new email. + * ###SITENAME### The name of the site. + * ###SITEURL### The URL to the site. + * + * @since MU + * + * @param string $email_text Text in the email. + * @param string $new_admin_email New admin email that the current administration email was changed to. + */ + $content = apply_filters( 'new_admin_email_content', $email_text, $new_admin_email ); + + $current_user = wp_get_current_user(); + $content = str_replace( '###USERNAME###', $current_user->user_login, $content ); + $content = str_replace( '###ADMIN_URL###', esc_url( admin_url( 'options.php?adminhash='.$hash ) ), $content ); + $content = str_replace( '###EMAIL###', $value, $content ); + $content = str_replace( '###SITENAME###', get_site_option( 'site_name' ), $content ); + $content = str_replace( '###SITEURL###', network_home_url(), $content ); + + wp_mail( $value, sprintf( __( '[%s] New Admin Email Address' ), wp_specialchars_decode( get_option( 'blogname' ) ) ), $content ); +} + +/** + * Sends an email when an email address change is requested. + * + * @since 3.0.0 + * + * @global object $errors WP_Error object. + * @global object $wpdb WordPress database object. + */ +function send_confirmation_on_profile_email() { + global $errors, $wpdb; + $current_user = wp_get_current_user(); + if ( ! is_object($errors) ) + $errors = new WP_Error(); + + if ( $current_user->ID != $_POST['user_id'] ) + return false; + + if ( $current_user->user_email != $_POST['email'] ) { + if ( !is_email( $_POST['email'] ) ) { + $errors->add( 'user_email', __( "ERROR: The email address isn’t correct." ), array( 'form-field' => 'email' ) ); + return; + } + + if ( $wpdb->get_var( $wpdb->prepare( "SELECT user_email FROM {$wpdb->users} WHERE user_email=%s", $_POST['email'] ) ) ) { + $errors->add( 'user_email', __( "ERROR: The email address is already used." ), array( 'form-field' => 'email' ) ); + delete_option( $current_user->ID . '_new_email' ); + return; + } + + $hash = md5( $_POST['email'] . time() . mt_rand() ); + $new_user_email = array( + 'hash' => $hash, + 'newemail' => $_POST['email'] + ); + update_option( $current_user->ID . '_new_email', $new_user_email ); + + /* translators: Do not translate USERNAME, ADMIN_URL, EMAIL, SITENAME, SITEURL: those are placeholders. */ + $email_text = __( 'Howdy ###USERNAME###, + +You recently requested to have the email address on your account changed. + +If this is correct, please click on the following link to change it: +###ADMIN_URL### + +You can safely ignore and delete this email if you do not want to +take this action. + +This email has been sent to ###EMAIL### + +Regards, +All at ###SITENAME### +###SITEURL###' ); + + /** + * Filter the email text sent when a user changes emails. + * + * The following strings have a special meaning and will get replaced dynamically: + * ###USERNAME### The current user's username. + * ###ADMIN_URL### The link to click on to confirm the email change. + * ###EMAIL### The new email. + * ###SITENAME### The name of the site. + * ###SITEURL### The URL to the site. + * + * @since MU + * + * @param string $email_text Text in the email. + * @param string $new_user_email New user email that the current user has changed to. + */ + $content = apply_filters( 'new_user_email_content', $email_text, $new_user_email ); + + $content = str_replace( '###USERNAME###', $current_user->user_login, $content ); + $content = str_replace( '###ADMIN_URL###', esc_url( admin_url( 'profile.php?newuseremail='.$hash ) ), $content ); + $content = str_replace( '###EMAIL###', $_POST['email'], $content); + $content = str_replace( '###SITENAME###', get_site_option( 'site_name' ), $content ); + $content = str_replace( '###SITEURL###', network_home_url(), $content ); + + wp_mail( $_POST['email'], sprintf( __( '[%s] New Email Address' ), wp_specialchars_decode( get_option( 'blogname' ) ) ), $content ); + $_POST['email'] = $current_user->user_email; + } +} + +/** + * Adds an admin notice alerting the user to check for confirmation email + * after email address change. + * + * @since 3.0.0 + */ +function new_user_email_admin_notice() { + if ( strpos( $_SERVER['PHP_SELF'], 'profile.php' ) && isset( $_GET['updated'] ) && $email = get_option( get_current_user_id() . '_new_email' ) ) + echo "
" . sprintf( __( "Your email address has not been updated yet. Please check your inbox at %s for a confirmation email." ), $email['newemail'] ) . "
"; +} + +/** + * Check whether a blog has used its allotted upload space. + * + * @since MU + * + * @param bool $echo Optional. If $echo is set and the quota is exceeded, a warning message is echoed. Default is true. + * @return bool True if user is over upload space quota, otherwise false. + */ +function upload_is_user_over_quota( $echo = true ) { + if ( get_site_option( 'upload_space_check_disabled' ) ) + return false; + + $space_allowed = get_space_allowed(); + if ( empty( $space_allowed ) || !is_numeric( $space_allowed ) ) + $space_allowed = 10; // Default space allowed is 10 MB + + $space_used = get_space_used(); + + if ( ( $space_allowed - $space_used ) < 0 ) { + if ( $echo ) + _e( 'Sorry, you have used your space allocation. Please delete some files to upload more files.' ); + return true; + } else { + return false; + } +} + +/** + * Displays the amount of disk space used by the current blog. Not used in core. + * + * @since MU + */ +function display_space_usage() { + $space_allowed = get_space_allowed(); + $space_used = get_space_used(); + + $percent_used = ( $space_used / $space_allowed ) * 100; + + if ( $space_allowed > 1000 ) { + $space = number_format( $space_allowed / 1024 ); + /* translators: Gigabytes */ + $space .= __( 'GB' ); + } else { + $space = number_format( $space_allowed ); + /* translators: Megabytes */ + $space .= __( 'MB' ); + } + ?> + + + + + + + + + + update( $wpdb->users, array( sanitize_key( $pref ) => $value ), array( 'ID' => $id ) ); + + $user = new WP_User( $id ); + clean_user_cache( $user ); + + if ( $pref == 'spam' ) { + if ( $value == 1 ) { + /** + * Fires after the user is marked as a SPAM user. + * + * @since 3.0.0 + * + * @param int $id ID of the user marked as SPAM. + */ + do_action( 'make_spam_user', $id ); + } else { + /** + * Fires after the user is marked as a HAM user. Opposite of SPAM. + * + * @since 3.0.0 + * + * @param int $id ID of the user marked as HAM. + */ + do_action( 'make_ham_user', $id ); + } + } + + return $value; +} + +/** + * Cleans the user cache for a specific user. + * + * @since 3.0.0 + * + * @param int $id The user ID. + * @return bool|int The ID of the refreshed user or false if the user does not exist. + */ +function refresh_user_details( $id ) { + $id = (int) $id; + + if ( !$user = get_userdata( $id ) ) + return false; + + clean_user_cache( $user ); + + return $id; +} + +/** + * Returns the language for a language code. + * + * @since 3.0.0 + * + * @param string $code Optional. The two-letter language code. Default empty. + * @return string The language corresponding to $code if it exists. If it does not exist, + * then the first two letters of $code is returned. + */ +function format_code_lang( $code = '' ) { + $code = strtolower( substr( $code, 0, 2 ) ); + $lang_codes = array( + 'aa' => 'Afar', 'ab' => 'Abkhazian', 'af' => 'Afrikaans', 'ak' => 'Akan', 'sq' => 'Albanian', 'am' => 'Amharic', 'ar' => 'Arabic', 'an' => 'Aragonese', 'hy' => 'Armenian', 'as' => 'Assamese', 'av' => 'Avaric', 'ae' => 'Avestan', 'ay' => 'Aymara', 'az' => 'Azerbaijani', 'ba' => 'Bashkir', 'bm' => 'Bambara', 'eu' => 'Basque', 'be' => 'Belarusian', 'bn' => 'Bengali', + 'bh' => 'Bihari', 'bi' => 'Bislama', 'bs' => 'Bosnian', 'br' => 'Breton', 'bg' => 'Bulgarian', 'my' => 'Burmese', 'ca' => 'Catalan; Valencian', 'ch' => 'Chamorro', 'ce' => 'Chechen', 'zh' => 'Chinese', 'cu' => 'Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic', 'cv' => 'Chuvash', 'kw' => 'Cornish', 'co' => 'Corsican', 'cr' => 'Cree', + 'cs' => 'Czech', 'da' => 'Danish', 'dv' => 'Divehi; Dhivehi; Maldivian', 'nl' => 'Dutch; Flemish', 'dz' => 'Dzongkha', 'en' => 'English', 'eo' => 'Esperanto', 'et' => 'Estonian', 'ee' => 'Ewe', 'fo' => 'Faroese', 'fj' => 'Fijjian', 'fi' => 'Finnish', 'fr' => 'French', 'fy' => 'Western Frisian', 'ff' => 'Fulah', 'ka' => 'Georgian', 'de' => 'German', 'gd' => 'Gaelic; Scottish Gaelic', + 'ga' => 'Irish', 'gl' => 'Galician', 'gv' => 'Manx', 'el' => 'Greek, Modern', 'gn' => 'Guarani', 'gu' => 'Gujarati', 'ht' => 'Haitian; Haitian Creole', 'ha' => 'Hausa', 'he' => 'Hebrew', 'hz' => 'Herero', 'hi' => 'Hindi', 'ho' => 'Hiri Motu', 'hu' => 'Hungarian', 'ig' => 'Igbo', 'is' => 'Icelandic', 'io' => 'Ido', 'ii' => 'Sichuan Yi', 'iu' => 'Inuktitut', 'ie' => 'Interlingue', + 'ia' => 'Interlingua (International Auxiliary Language Association)', 'id' => 'Indonesian', 'ik' => 'Inupiaq', 'it' => 'Italian', 'jv' => 'Javanese', 'ja' => 'Japanese', 'kl' => 'Kalaallisut; Greenlandic', 'kn' => 'Kannada', 'ks' => 'Kashmiri', 'kr' => 'Kanuri', 'kk' => 'Kazakh', 'km' => 'Central Khmer', 'ki' => 'Kikuyu; Gikuyu', 'rw' => 'Kinyarwanda', 'ky' => 'Kirghiz; Kyrgyz', + 'kv' => 'Komi', 'kg' => 'Kongo', 'ko' => 'Korean', 'kj' => 'Kuanyama; Kwanyama', 'ku' => 'Kurdish', 'lo' => 'Lao', 'la' => 'Latin', 'lv' => 'Latvian', 'li' => 'Limburgan; Limburger; Limburgish', 'ln' => 'Lingala', 'lt' => 'Lithuanian', 'lb' => 'Luxembourgish; Letzeburgesch', 'lu' => 'Luba-Katanga', 'lg' => 'Ganda', 'mk' => 'Macedonian', 'mh' => 'Marshallese', 'ml' => 'Malayalam', + 'mi' => 'Maori', 'mr' => 'Marathi', 'ms' => 'Malay', 'mg' => 'Malagasy', 'mt' => 'Maltese', 'mo' => 'Moldavian', 'mn' => 'Mongolian', 'na' => 'Nauru', 'nv' => 'Navajo; Navaho', 'nr' => 'Ndebele, South; South Ndebele', 'nd' => 'Ndebele, North; North Ndebele', 'ng' => 'Ndonga', 'ne' => 'Nepali', 'nn' => 'Norwegian Nynorsk; Nynorsk, Norwegian', 'nb' => 'Bokmål, Norwegian, Norwegian Bokmål', + 'no' => 'Norwegian', 'ny' => 'Chichewa; Chewa; Nyanja', 'oc' => 'Occitan, Provençal', 'oj' => 'Ojibwa', 'or' => 'Oriya', 'om' => 'Oromo', 'os' => 'Ossetian; Ossetic', 'pa' => 'Panjabi; Punjabi', 'fa' => 'Persian', 'pi' => 'Pali', 'pl' => 'Polish', 'pt' => 'Portuguese', 'ps' => 'Pushto', 'qu' => 'Quechua', 'rm' => 'Romansh', 'ro' => 'Romanian', 'rn' => 'Rundi', 'ru' => 'Russian', + 'sg' => 'Sango', 'sa' => 'Sanskrit', 'sr' => 'Serbian', 'hr' => 'Croatian', 'si' => 'Sinhala; Sinhalese', 'sk' => 'Slovak', 'sl' => 'Slovenian', 'se' => 'Northern Sami', 'sm' => 'Samoan', 'sn' => 'Shona', 'sd' => 'Sindhi', 'so' => 'Somali', 'st' => 'Sotho, Southern', 'es' => 'Spanish; Castilian', 'sc' => 'Sardinian', 'ss' => 'Swati', 'su' => 'Sundanese', 'sw' => 'Swahili', + 'sv' => 'Swedish', 'ty' => 'Tahitian', 'ta' => 'Tamil', 'tt' => 'Tatar', 'te' => 'Telugu', 'tg' => 'Tajik', 'tl' => 'Tagalog', 'th' => 'Thai', 'bo' => 'Tibetan', 'ti' => 'Tigrinya', 'to' => 'Tonga (Tonga Islands)', 'tn' => 'Tswana', 'ts' => 'Tsonga', 'tk' => 'Turkmen', 'tr' => 'Turkish', 'tw' => 'Twi', 'ug' => 'Uighur; Uyghur', 'uk' => 'Ukrainian', 'ur' => 'Urdu', 'uz' => 'Uzbek', + 've' => 'Venda', 'vi' => 'Vietnamese', 'vo' => 'Volapük', 'cy' => 'Welsh','wa' => 'Walloon','wo' => 'Wolof', 'xh' => 'Xhosa', 'yi' => 'Yiddish', 'yo' => 'Yoruba', 'za' => 'Zhuang; Chuang', 'zu' => 'Zulu' ); + + /** + * Filter the language codes. + * + * @since MU + * + * @param array $lang_codes Key/value pair of language codes where key is the short version. + * @param string $code A two-letter designation of the language. + */ + $lang_codes = apply_filters( 'lang_codes', $lang_codes, $code ); + return strtr( $code, $lang_codes ); +} + +/** + * Synchronize category and post tag slugs when global terms are enabled. + * + * @since 3.0.0 + * + * @param object $term The term. + * @param string $taxonomy The taxonomy for $term. Should be 'category' or 'post_tag', as these are + * the only taxonomies which are processed by this function; anything else + * will be returned untouched. + * @return object|array Returns `$term`, after filtering the 'slug' field with {@see sanitize_title()} + * if $taxonomy is 'category' or 'post_tag'. + */ +function sync_category_tag_slugs( $term, $taxonomy ) { + if ( global_terms_enabled() && ( $taxonomy == 'category' || $taxonomy == 'post_tag' ) ) { + if ( is_object( $term ) ) { + $term->slug = sanitize_title( $term->name ); + } else { + $term['slug'] = sanitize_title( $term['name'] ); + } + } + return $term; +} + +/** + * Displays an access denied message when a user tries to view a site's dashboard they + * do not have access to. + * + * @since 3.2.0 + * @access private + */ +function _access_denied_splash() { + if ( ! is_user_logged_in() || is_network_admin() ) + return; + + $blogs = get_blogs_of_user( get_current_user_id() ); + + if ( wp_list_filter( $blogs, array( 'userblog_id' => get_current_blog_id() ) ) ) + return; + + $blog_name = get_bloginfo( 'name' ); + + if ( empty( $blogs ) ) + wp_die( sprintf( __( 'You attempted to access the "%1$s" dashboard, but you do not currently have privileges on this site. If you believe you should be able to access the "%1$s" dashboard, please contact your network administrator.' ), $blog_name ), 403 ); + + $output = '

' . sprintf( __( 'You attempted to access the "%1$s" dashboard, but you do not currently have privileges on this site. If you believe you should be able to access the "%1$s" dashboard, please contact your network administrator.' ), $blog_name ) . '

'; + $output .= '

' . __( 'If you reached this screen by accident and meant to visit one of your own sites, here are some shortcuts to help you find your way.' ) . '

'; + + $output .= '

' . __('Your Sites') . '

'; + $output .= ''; + + foreach ( $blogs as $blog ) { + $output .= ''; + $output .= ""; + $output .= ''; + $output .= ''; + } + + $output .= '
{$blog->blogname}' . __( 'Visit Dashboard' ) . ' | ' . + '' . __( 'View Site' ) . '
'; + + wp_die( $output, 403 ); +} + +/** + * Checks if the current user has permissions to import new users. + * + * @since 3.0.0 + * + * @param string $permission A permission to be checked. Currently not used. + * @return bool True if the user has proper permissions, false if they do not. + */ +function check_import_new_users( $permission ) { + if ( !is_super_admin() ) + return false; + return true; +} +// See "import_allow_fetch_attachments" and "import_attachment_size_limit" filters too. + +/** + * Generates and displays a drop-down of available languages. + * + * @since 3.0.0 + * + * @param array $lang_files Optional. An array of the language files. Default empty array. + * @param string $current Optional. The current language code. Default empty. + */ +function mu_dropdown_languages( $lang_files = array(), $current = '' ) { + $flag = false; + $output = array(); + + foreach ( (array) $lang_files as $val ) { + $code_lang = basename( $val, '.mo' ); + + if ( $code_lang == 'en_US' ) { // American English + $flag = true; + $ae = __( 'American English' ); + $output[$ae] = ''; + } elseif ( $code_lang == 'en_GB' ) { // British English + $flag = true; + $be = __( 'British English' ); + $output[$be] = ''; + } else { + $translated = format_code_lang( $code_lang ); + $output[$translated] = ''; + } + + } + + if ( $flag === false ) // WordPress english + $output[] = '"; + + // Order by name + uksort( $output, 'strnatcasecmp' ); + + /** + * Filter the languages available in the dropdown. + * + * @since MU + * + * @param array $output HTML output of the dropdown. + * @param array $lang_files Available language files. + * @param string $current The current language code. + */ + $output = apply_filters( 'mu_dropdown_languages', $output, $lang_files, $current ); + + echo implode( "\n\t", $output ); +} + +/** + * Displays an admin notice to upgrade all sites after a core upgrade. + * + * @since 3.0.0 + * + * @global int $wp_db_version The version number of the database. + * + * @return false False if the current user is not a super admin. + */ +function site_admin_notice() { + global $wp_db_version; + if ( !is_super_admin() ) + return false; + if ( get_site_option( 'wpmu_upgrade_site' ) != $wp_db_version ) + echo "
" . sprintf( __( 'Thank you for Updating! Please visit the Upgrade Network page to update all your sites.' ), esc_url( network_admin_url( 'upgrade.php' ) ) ) . "
"; +} + +/** + * Avoids a collision between a site slug and a permalink slug. + * + * In a subdirectory install this will make sure that a site and a post do not use the + * same subdirectory by checking for a site with the same name as a new post. + * + * @since 3.0.0 + * + * @param array $data An array of post data. + * @param array $postarr An array of posts. Not currently used. + * @return array The new array of post data after checking for collisions. + */ +function avoid_blog_page_permalink_collision( $data, $postarr ) { + if ( is_subdomain_install() ) + return $data; + if ( $data['post_type'] != 'page' ) + return $data; + if ( !isset( $data['post_name'] ) || $data['post_name'] == '' ) + return $data; + if ( !is_main_site() ) + return $data; + + $post_name = $data['post_name']; + $c = 0; + while( $c < 10 && get_id_from_blogname( $post_name ) ) { + $post_name .= mt_rand( 1, 10 ); + $c ++; + } + if ( $post_name != $data['post_name'] ) { + $data['post_name'] = $post_name; + } + return $data; +} + +/** + * Handles the display of choosing a user's primary site. + * + * This displays the user's primary site and allows the user to choose + * which site is primary. + * + * @since 3.0.0 + */ +function choose_primary_blog() { + ?> + + + + + + + + + + + +
+ 1 ) { + $found = false; + ?> + + userblog_id ); + } + } elseif ( count( $all_blogs ) == 1 ) { + $blog = reset( $all_blogs ); + echo esc_url( get_home_url( $blog->userblog_id ) ); + if ( $primary_blog != $blog->userblog_id ) // Set the primary blog again if it's out of sync with blog list. + update_user_meta( get_current_user_id(), 'primary_blog', $blog->userblog_id ); + } else { + echo "N/A"; + } + ?> +
+ + +
+ user_login, $super_admins ) ) { + $super_admins[] = $user->user_login; + update_site_option( 'site_admins' , $super_admins ); + + /** + * Fires after the user is granted Super Admin privileges. + * + * @since 3.0.0 + * + * @param int $user_id ID of the user that was granted Super Admin privileges. + */ + do_action( 'granted_super_admin', $user_id ); + return true; + } + return false; +} + +/** + * Revokes Super Admin privileges. + * + * @since 3.0.0 + * + * @global array $super_admins + * + * @param int $user_id ID of the user Super Admin privileges to be revoked from. + * @return bool True on success, false on failure. This can fail when the user's email + * is the network admin email or when the `$super_admins` global is defined. + */ +function revoke_super_admin( $user_id ) { + // If global super_admins override is defined, there is nothing to do here. + if ( isset( $GLOBALS['super_admins'] ) ) { + return false; + } + + /** + * Fires before the user's Super Admin privileges are revoked. + * + * @since 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() + $super_admins = get_site_option( 'site_admins', array( 'admin' ) ); + + $user = get_userdata( $user_id ); + if ( $user && 0 !== strcasecmp( $user->user_email, get_site_option( 'admin_email' ) ) ) { + if ( false !== ( $key = array_search( $user->user_login, $super_admins ) ) ) { + unset( $super_admins[$key] ); + update_site_option( 'site_admins', $super_admins ); + + /** + * Fires after the user's Super Admin privileges are revoked. + * + * @since 3.0.0 + * + * @param int $user_id ID of the user Super Admin privileges were revoked from. + */ + do_action( 'revoked_super_admin', $user_id ); + return true; + } + } + return false; +} + +/** + * Whether or not we can edit this network from this page. + * + * By default editing of network is restricted to the Network Admin for that `$site_id` + * this allows for this to be overridden. + * + * @since 3.1.0 + * + * @global wpdb $wpdb + * + * @param int $site_id The network/site ID to check. + * @return bool True if network can be edited, otherwise false. + */ +function can_edit_network( $site_id ) { + global $wpdb; + + if ( $site_id == $wpdb->siteid ) + $result = true; + else + $result = false; + + /** + * Filter whether this network can be edited from this page. + * + * @since 3.1.0 + * + * @param bool $result Whether the network can be edited from this page. + * @param int $site_id The network/site ID to check. + */ + return apply_filters( 'can_edit_network', $result, $site_id ); +} + +/** + * Thickbox image paths for Network Admin. + * + * @since 3.1.0 + * + * @access private + */ +function _thickbox_path_admin_subfolder() { +?> + + $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth; + + ob_start(); + $item_id = esc_attr( $item->ID ); + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + $original_title = ''; + if ( 'taxonomy' == $item->type ) { + $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' ); + if ( is_wp_error( $original_title ) ) + $original_title = false; + } elseif ( 'post_type' == $item->type ) { + $original_object = get_post( $item->object_id ); + $original_title = get_the_title( $original_object->ID ); + } + + $classes = array( + 'menu-item menu-item-depth-' . $depth, + 'menu-item-' . esc_attr( $item->object ), + 'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'), + ); + + $title = $item->title; + + if ( ! empty( $item->_invalid ) ) { + $classes[] = 'menu-item-invalid'; + /* translators: %s: title of menu item which is invalid */ + $title = sprintf( __( '%s (Invalid)' ), $item->title ); + } elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) { + $classes[] = 'pending'; + /* translators: %s: title of menu item in draft status */ + $title = sprintf( __('%s (Pending)'), $item->title ); + } + + $title = ( ! isset( $item->label ) || '' == $item->label ) ? $title : $item->label; + + $submenu_text = ''; + if ( 0 == $depth ) + $submenu_text = 'style="display: none;"'; + + ?> +
  • '; + $output .= ''; + + // Menu item hidden fields + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + } + +} // Walker_Nav_Menu_Checklist + +/** + * Prints the appropriate response to a menu quick search. + * + * @since 3.0.0 + * + * @param array $request The unsanitized request values. + */ +function _wp_ajax_menu_quick_search( $request = array() ) { + $args = array(); + $type = isset( $request['type'] ) ? $request['type'] : ''; + $object_type = isset( $request['object_type'] ) ? $request['object_type'] : ''; + $query = isset( $request['q'] ) ? $request['q'] : ''; + $response_format = isset( $request['response-format'] ) && in_array( $request['response-format'], array( 'json', 'markup' ) ) ? $request['response-format'] : 'json'; + + if ( 'markup' == $response_format ) { + $args['walker'] = new Walker_Nav_Menu_Checklist; + } + + if ( 'get-post-item' == $type ) { + if ( post_type_exists( $object_type ) ) { + if ( isset( $request['ID'] ) ) { + $object_id = (int) $request['ID']; + if ( 'markup' == $response_format ) { + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $object_id ) ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + echo wp_json_encode( + array( + 'ID' => $object_id, + 'post_title' => get_the_title( $object_id ), + 'post_type' => get_post_type( $object_id ), + ) + ); + echo "\n"; + } + } + } elseif ( taxonomy_exists( $object_type ) ) { + if ( isset( $request['ID'] ) ) { + $object_id = (int) $request['ID']; + if ( 'markup' == $response_format ) { + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_term( $object_id, $object_type ) ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + $post_obj = get_term( $object_id, $object_type ); + echo wp_json_encode( + array( + 'ID' => $object_id, + 'post_title' => $post_obj->name, + 'post_type' => $object_type, + ) + ); + echo "\n"; + } + } + + } + + } elseif ( preg_match('/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*\b)/', $type, $matches) ) { + if ( 'posttype' == $matches[1] && get_post_type_object( $matches[2] ) ) { + query_posts(array( + 'posts_per_page' => 10, + 'post_type' => $matches[2], + 's' => $query, + )); + if ( ! have_posts() ) + return; + while ( have_posts() ) { + the_post(); + if ( 'markup' == $response_format ) { + $var_by_ref = get_the_ID(); + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $var_by_ref ) ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + echo wp_json_encode( + array( + 'ID' => get_the_ID(), + 'post_title' => get_the_title(), + 'post_type' => get_post_type(), + ) + ); + echo "\n"; + } + } + } elseif ( 'taxonomy' == $matches[1] ) { + $terms = get_terms( $matches[2], array( + 'name__like' => $query, + 'number' => 10, + )); + if ( empty( $terms ) || is_wp_error( $terms ) ) + return; + foreach( (array) $terms as $term ) { + if ( 'markup' == $response_format ) { + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( $term ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + echo wp_json_encode( + array( + 'ID' => $term->term_id, + 'post_title' => $term->name, + 'post_type' => $matches[2], + ) + ); + echo "\n"; + } + } + } + } +} + +/** + * Register nav menu metaboxes and advanced menu items + * + * @since 3.0.0 + **/ +function wp_nav_menu_setup() { + // Register meta boxes + wp_nav_menu_post_type_meta_boxes(); + add_meta_box( 'add-custom-links', __( 'Custom Links' ), 'wp_nav_menu_item_link_meta_box', 'nav-menus', 'side', 'default' ); + wp_nav_menu_taxonomy_meta_boxes(); + + // Register advanced menu items (columns) + add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns' ); + + // If first time editing, disable advanced items by default. + if ( false === get_user_option( 'managenav-menuscolumnshidden' ) ) { + $user = wp_get_current_user(); + update_user_option($user->ID, 'managenav-menuscolumnshidden', + array( 0 => 'link-target', 1 => 'css-classes', 2 => 'xfn', 3 => 'description', 4 => 'title-attribute', ), + true); + } +} + +/** + * Limit the amount of meta boxes to pages, posts, links, and categories for first time users. + * + * @since 3.0.0 + * + * @global array $wp_meta_boxes + **/ +function wp_initial_nav_menu_meta_boxes() { + global $wp_meta_boxes; + + if ( get_user_option( 'metaboxhidden_nav-menus' ) !== false || ! is_array($wp_meta_boxes) ) + return; + + $initial_meta_boxes = array( 'add-page', 'add-post', 'add-custom-links', 'add-category' ); + $hidden_meta_boxes = array(); + + foreach ( array_keys($wp_meta_boxes['nav-menus']) as $context ) { + foreach ( array_keys($wp_meta_boxes['nav-menus'][$context]) as $priority ) { + foreach ( $wp_meta_boxes['nav-menus'][$context][$priority] as $box ) { + if ( in_array( $box['id'], $initial_meta_boxes ) ) { + unset( $box['id'] ); + } else { + $hidden_meta_boxes[] = $box['id']; + } + } + } + } + + $user = wp_get_current_user(); + update_user_option( $user->ID, 'metaboxhidden_nav-menus', $hidden_meta_boxes, true ); +} + +/** + * Creates metaboxes for any post type menu item. + * + * @since 3.0.0 + */ +function wp_nav_menu_post_type_meta_boxes() { + $post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); + + if ( ! $post_types ) + return; + + foreach ( $post_types as $post_type ) { + /** + * Filter whether a menu items meta box will be added for the current + * object type. + * + * If a falsey value is returned instead of an object, the menu items + * meta box for the current meta box object will not be added. + * + * @since 3.0.0 + * + * @param object $meta_box_object The current object to add a menu items + * meta box for. + */ + $post_type = apply_filters( 'nav_menu_meta_box_object', $post_type ); + if ( $post_type ) { + $id = $post_type->name; + // Give pages a higher priority. + $priority = ( 'page' == $post_type->name ? 'core' : 'default' ); + add_meta_box( "add-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', $priority, $post_type ); + } + } +} + +/** + * Creates metaboxes for any taxonomy menu item. + * + * @since 3.0.0 + */ +function wp_nav_menu_taxonomy_meta_boxes() { + $taxonomies = get_taxonomies( array( 'show_in_nav_menus' => true ), 'object' ); + + if ( !$taxonomies ) + return; + + foreach ( $taxonomies as $tax ) { + /** This filter is documented in wp-admin/includes/nav-menu.php */ + $tax = apply_filters( 'nav_menu_meta_box_object', $tax ); + if ( $tax ) { + $id = $tax->name; + add_meta_box( "add-{$id}", $tax->labels->name, 'wp_nav_menu_item_taxonomy_meta_box', 'nav-menus', 'side', 'default', $tax ); + } + } +} + +/** + * Check whether to disable the Menu Locations meta box submit button + * + * @since 3.6.0 + * + * @global bool $one_theme_location_no_menus to determine if no menus exist + * + * @param int|string $nav_menu_selected_id (id, name or slug) of the currently-selected menu + * @return string Disabled attribute if at least one menu exists, false if not +*/ +function wp_nav_menu_disabled_check( $nav_menu_selected_id ) { + global $one_theme_location_no_menus; + + if ( $one_theme_location_no_menus ) + return false; + + return disabled( $nav_menu_selected_id, 0 ); +} + +/** + * Displays a metabox for the custom links menu item. + * + * @since 3.0.0 + * + * @global int $_nav_menu_placeholder + * @global int|string $nav_menu_selected_id + */ +function wp_nav_menu_item_link_meta_box() { + global $_nav_menu_placeholder, $nav_menu_selected_id; + + $_nav_menu_placeholder = 0 > $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1; + + ?> +
    + + + + + +

    + + class="button-secondary submit-add-to-menu right" value="" name="add-custom-menu-item" id="submit-customlinkdiv" /> + + +

    + +
    + name; + + // Paginate browsing for large numbers of post objects. + $per_page = 50; + $pagenum = isset( $_REQUEST[$post_type_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; + $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; + + $args = array( + 'offset' => $offset, + 'order' => 'ASC', + 'orderby' => 'title', + 'posts_per_page' => $per_page, + 'post_type' => $post_type_name, + 'suppress_filters' => true, + 'update_post_term_cache' => false, + 'update_post_meta_cache' => false + ); + + if ( isset( $post_type['args']->_default_query ) ) + $args = array_merge($args, (array) $post_type['args']->_default_query ); + + // @todo transient caching of these results with proper invalidation on updating of a post of this type + $get_posts = new WP_Query; + $posts = $get_posts->query( $args ); + if ( ! $get_posts->post_count ) { + echo '

    ' . __( 'No items.' ) . '

    '; + return; + } + + $num_pages = $get_posts->max_num_pages; + + $page_links = paginate_links( array( + 'base' => add_query_arg( + array( + $post_type_name . '-tab' => 'all', + 'paged' => '%#%', + 'item-type' => 'post_type', + 'item-object' => $post_type_name, + ) + ), + 'format' => '', + 'prev_text' => __('«'), + 'next_text' => __('»'), + 'total' => $num_pages, + 'current' => $pagenum + )); + + $db_fields = false; + if ( is_post_type_hierarchical( $post_type_name ) ) { + $db_fields = array( 'parent' => 'post_parent', 'id' => 'ID' ); + } + + $walker = new Walker_Nav_Menu_Checklist( $db_fields ); + + $current_tab = 'most-recent'; + if ( isset( $_REQUEST[$post_type_name . '-tab'] ) && in_array( $_REQUEST[$post_type_name . '-tab'], array('all', 'search') ) ) { + $current_tab = $_REQUEST[$post_type_name . '-tab']; + } + + if ( ! empty( $_REQUEST['quick-search-posttype-' . $post_type_name] ) ) { + $current_tab = 'search'; + } + + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + ?> +
    + + +
    +
      + 'post_date', 'order' => 'DESC', 'posts_per_page' => 15 ) ); + $most_recent = $get_posts->query( $recent_args ); + $args['walker'] = $walker; + + /** + * Filter the posts displayed in the 'Most Recent' tab of the current + * post type's menu items meta box. + * + * The dynamic portion of the hook name, `$post_type_name`, refers to the post type name. + * + * @since 4.3.0 + * + * @param array $most_recent An array of post objects being listed. + * @param array $args An array of WP_Query arguments. + * @param object $post_type The current post type object for this menu item meta box. + */ + $most_recent = apply_filters( "nav_menu_items_{$post_type_name}_recent", $most_recent, $args, $post_type ); + + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $most_recent), 0, (object) $args ); + ?> +
    +
    + + + +
    + + + +
      + front_or_home = true; + array_unshift( $posts, $front_page_obj ); + } else { + $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1; + array_unshift( $posts, (object) array( + 'front_or_home' => true, + 'ID' => 0, + 'object_id' => $_nav_menu_placeholder, + 'post_content' => '', + 'post_excerpt' => '', + 'post_parent' => '', + 'post_title' => _x('Home', 'nav menu home label'), + 'post_type' => 'nav_menu_item', + 'type' => 'custom', + 'url' => home_url('/'), + ) ); + } + } + + /** + * Filter the posts displayed in the 'View All' tab of the current + * post type's menu items meta box. + * + * The dynamic portion of the hook name, `$post_type_name`, refers + * to the slug of the current post type. + * + * @since 3.2.0 + * + * @see WP_Query::query() + * + * @param array $posts The posts for the current post type. + * @param array $args An array of WP_Query arguments. + * @param object $post_type The current post type object for this menu item meta box. + */ + $posts = apply_filters( "nav_menu_items_{$post_type_name}", $posts, $args, $post_type ); + $checkbox_items = walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $posts), 0, (object) $args ); + + if ( 'all' == $current_tab && ! empty( $_REQUEST['selectall'] ) ) { + $checkbox_items = preg_replace('/(type=(.)checkbox(\2))/', '$1 checked=$2checked$2', $checkbox_items); + + } + + echo $checkbox_items; + ?> +
    + + + +
    + +

    + + + + + + class="button-secondary submit-add-to-menu right" value="" name="add-post-type-menu-item" id="" /> + + +

    + +
    + name; + + // Paginate browsing for large numbers of objects. + $per_page = 50; + $pagenum = isset( $_REQUEST[$taxonomy_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; + $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; + + $args = array( + 'child_of' => 0, + 'exclude' => '', + 'hide_empty' => false, + 'hierarchical' => 1, + 'include' => '', + 'number' => $per_page, + 'offset' => $offset, + 'order' => 'ASC', + 'orderby' => 'name', + 'pad_counts' => false, + ); + + $terms = get_terms( $taxonomy_name, $args ); + + if ( ! $terms || is_wp_error($terms) ) { + echo '

    ' . __( 'No items.' ) . '

    '; + return; + } + + $num_pages = ceil( wp_count_terms( $taxonomy_name , array_merge( $args, array('number' => '', 'offset' => '') ) ) / $per_page ); + + $page_links = paginate_links( array( + 'base' => add_query_arg( + array( + $taxonomy_name . '-tab' => 'all', + 'paged' => '%#%', + 'item-type' => 'taxonomy', + 'item-object' => $taxonomy_name, + ) + ), + 'format' => '', + 'prev_text' => __('«'), + 'next_text' => __('»'), + 'total' => $num_pages, + 'current' => $pagenum + )); + + $db_fields = false; + if ( is_taxonomy_hierarchical( $taxonomy_name ) ) { + $db_fields = array( 'parent' => 'parent', 'id' => 'term_id' ); + } + + $walker = new Walker_Nav_Menu_Checklist( $db_fields ); + + $current_tab = 'most-used'; + if ( isset( $_REQUEST[$taxonomy_name . '-tab'] ) && in_array( $_REQUEST[$taxonomy_name . '-tab'], array('all', 'most-used', 'search') ) ) { + $current_tab = $_REQUEST[$taxonomy_name . '-tab']; + } + + if ( ! empty( $_REQUEST['quick-search-taxonomy-' . $taxonomy_name] ) ) { + $current_tab = 'search'; + } + + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + ?> +
    + + +
    +
      + 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) ); + $args['walker'] = $walker; + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $popular_terms), 0, (object) $args ); + ?> +
    +
    + +
    + + + +
      + +
    + + + +
    + +
    + $searched, 'fields' => 'all', 'orderby' => 'count', 'order' => 'DESC', 'hierarchical' => false ) ); + } else { + $searched = ''; + $search_results = array(); + } + ?> +

    + + + 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?> +

    + +
      + + + +
    • get_error_message(); ?>
    • + +
    • + +
    +
    + +

    + + + + + + class="button-secondary submit-add-to-menu right" value="" name="add-taxonomy-menu-item" id="" /> + + +

    + +
    + $_item_object_data ) { + if ( + // Checkbox is not checked. + empty( $_item_object_data['menu-item-object-id'] ) && + ( + // And item type either isn't set. + ! isset( $_item_object_data['menu-item-type'] ) || + // Or URL is the default. + in_array( $_item_object_data['menu-item-url'], array( 'http://', '' ) ) || + ! ( 'custom' == $_item_object_data['menu-item-type'] && ! isset( $_item_object_data['menu-item-db-id'] ) ) || // or it's not a custom menu item (but not the custom home page) + // Or it *is* a custom menu item that already exists. + ! empty( $_item_object_data['menu-item-db-id'] ) + ) + ) { + // Then this potential menu item is not getting added to this menu. + continue; + } + + // If this possible menu item doesn't actually have a menu database ID yet. + if ( + empty( $_item_object_data['menu-item-db-id'] ) || + ( 0 > $_possible_db_id ) || + $_possible_db_id != $_item_object_data['menu-item-db-id'] + ) { + $_actual_db_id = 0; + } else { + $_actual_db_id = (int) $_item_object_data['menu-item-db-id']; + } + + $args = array( + 'menu-item-db-id' => ( isset( $_item_object_data['menu-item-db-id'] ) ? $_item_object_data['menu-item-db-id'] : '' ), + 'menu-item-object-id' => ( isset( $_item_object_data['menu-item-object-id'] ) ? $_item_object_data['menu-item-object-id'] : '' ), + 'menu-item-object' => ( isset( $_item_object_data['menu-item-object'] ) ? $_item_object_data['menu-item-object'] : '' ), + 'menu-item-parent-id' => ( isset( $_item_object_data['menu-item-parent-id'] ) ? $_item_object_data['menu-item-parent-id'] : '' ), + 'menu-item-position' => ( isset( $_item_object_data['menu-item-position'] ) ? $_item_object_data['menu-item-position'] : '' ), + 'menu-item-type' => ( isset( $_item_object_data['menu-item-type'] ) ? $_item_object_data['menu-item-type'] : '' ), + 'menu-item-title' => ( isset( $_item_object_data['menu-item-title'] ) ? $_item_object_data['menu-item-title'] : '' ), + 'menu-item-url' => ( isset( $_item_object_data['menu-item-url'] ) ? $_item_object_data['menu-item-url'] : '' ), + 'menu-item-description' => ( isset( $_item_object_data['menu-item-description'] ) ? $_item_object_data['menu-item-description'] : '' ), + 'menu-item-attr-title' => ( isset( $_item_object_data['menu-item-attr-title'] ) ? $_item_object_data['menu-item-attr-title'] : '' ), + 'menu-item-target' => ( isset( $_item_object_data['menu-item-target'] ) ? $_item_object_data['menu-item-target'] : '' ), + 'menu-item-classes' => ( isset( $_item_object_data['menu-item-classes'] ) ? $_item_object_data['menu-item-classes'] : '' ), + 'menu-item-xfn' => ( isset( $_item_object_data['menu-item-xfn'] ) ? $_item_object_data['menu-item-xfn'] : '' ), + ); + + $items_saved[] = wp_update_nav_menu_item( $menu_id, $_actual_db_id, $args ); + + } + } + return $items_saved; +} + +/** + * Adds custom arguments to some of the meta box object types. + * + * @since 3.0.0 + * + * @access private + * + * @param object $object The post type or taxonomy meta-object. + * @return object The post type of taxonomy object. + */ +function _wp_nav_menu_meta_box_object( $object = null ) { + if ( isset( $object->name ) ) { + + if ( 'page' == $object->name ) { + $object->_default_query = array( + 'orderby' => 'menu_order title', + 'post_status' => 'publish', + ); + + // Posts should show only published items. + } elseif ( 'post' == $object->name ) { + $object->_default_query = array( + 'post_status' => 'publish', + ); + + // Categories should be in reverse chronological order. + } elseif ( 'category' == $object->name ) { + $object->_default_query = array( + 'orderby' => 'id', + 'order' => 'DESC', + ); + + // Custom post types should show only published items. + } else { + $object->_default_query = array( + 'post_status' => 'publish', + ); + } + } + + return $object; +} + +/** + * Returns the menu formatted to edit. + * + * @since 3.0.0 + * + * @param int $menu_id Optional. The ID of the menu to format. Default 0. + * @return string|WP_Error $output The menu formatted to edit or error object on failure. + */ +function wp_get_nav_menu_to_edit( $menu_id = 0 ) { + $menu = wp_get_nav_menu_object( $menu_id ); + + // If the menu exists, get its items. + if ( is_nav_menu( $menu ) ) { + $menu_items = wp_get_nav_menu_items( $menu->term_id, array('post_status' => 'any') ); + $result = '
    ' : '">'; + $result .= '

    ' . __( 'Add menu items from the column on the left.' ) . '

    '; + $result .= '
    '; + + if ( empty($menu_items) ) + return $result . ' '; + + /** + * Filter the Walker class used when adding nav menu items. + * + * @since 3.0.0 + * + * @param string $class The walker class to use. Default 'Walker_Nav_Menu_Edit'. + * @param int $menu_id ID of the menu being rendered. + */ + $walker_class_name = apply_filters( 'wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $menu_id ); + + if ( class_exists( $walker_class_name ) ) + $walker = new $walker_class_name; + else + return new WP_Error( 'menu_walker_not_exist', sprintf( __('The Walker class named %s does not exist.'), $walker_class_name ) ); + + $some_pending_menu_items = $some_invalid_menu_items = false; + foreach( (array) $menu_items as $menu_item ) { + if ( isset( $menu_item->post_status ) && 'draft' == $menu_item->post_status ) + $some_pending_menu_items = true; + if ( ! empty( $menu_item->_invalid ) ) + $some_invalid_menu_items = true; + } + + if ( $some_pending_menu_items ) + $result .= '

    ' . __('Click Save Menu to make pending menu items public.') . '

    '; + + if ( $some_invalid_menu_items ) + $result .= '

    ' . __('There are some invalid menu items. Please check or delete them.') . '

    '; + + $result .= ' '; + return $result; + } elseif ( is_wp_error( $menu ) ) { + return $menu; + } + +} + +/** + * Returns the columns for the nav menus page. + * + * @since 3.0.0 + * + * @return string|WP_Error $output The menu formatted to edit or error object on failure. + */ +function wp_nav_menu_manage_columns() { + return array( + '_title' => __('Show advanced menu properties'), + 'cb' => '', + 'title-attribute' => __('Title Attribute'), + 'link-target' => __('Link Target'), + 'css-classes' => __('CSS Classes'), + 'xfn' => __('Link Relationship (XFN)'), + 'description' => __('Description'), + ); +} + +/** + * Deletes orphaned draft menu items + * + * @access private + * @since 3.0.0 + * + * @global wpdb $wpdb + */ +function _wp_delete_orphaned_draft_menu_items() { + global $wpdb; + $delete_timestamp = time() - ( DAY_IN_SECONDS * EMPTY_TRASH_DAYS ); + + // Delete orphaned draft menu items. + $menu_items_to_delete = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts AS p LEFT JOIN $wpdb->postmeta AS m ON p.ID = m.post_id WHERE post_type = 'nav_menu_item' AND post_status = 'draft' AND meta_key = '_menu_item_orphaned' AND meta_value < '%d'", $delete_timestamp ) ); + + foreach( (array) $menu_items_to_delete as $menu_item_id ) + wp_delete_post( $menu_item_id, true ); +} + +/** + * Saves nav menu items + * + * @since 3.6.0 + * + * @param int|string $nav_menu_selected_id (id, slug, or name ) of the currently-selected menu + * @param string $nav_menu_selected_title Title of the currently-selected menu + * @return array $messages The menu updated message + */ +function wp_nav_menu_update_menu_items ( $nav_menu_selected_id, $nav_menu_selected_title ) { + $unsorted_menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array( 'orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID', 'post_status' => 'draft,publish' ) ); + $messages = array(); + $menu_items = array(); + // Index menu items by db ID + foreach ( $unsorted_menu_items as $_item ) + $menu_items[$_item->db_id] = $_item; + + $post_fields = array( + 'menu-item-db-id', 'menu-item-object-id', 'menu-item-object', + 'menu-item-parent-id', 'menu-item-position', 'menu-item-type', + 'menu-item-title', 'menu-item-url', 'menu-item-description', + 'menu-item-attr-title', 'menu-item-target', 'menu-item-classes', 'menu-item-xfn' + ); + + wp_defer_term_counting( true ); + // Loop through all the menu items' POST variables + if ( ! empty( $_POST['menu-item-db-id'] ) ) { + foreach( (array) $_POST['menu-item-db-id'] as $_key => $k ) { + + // Menu item title can't be blank + if ( ! isset( $_POST['menu-item-title'][ $_key ] ) || '' == $_POST['menu-item-title'][ $_key ] ) + continue; + + $args = array(); + foreach ( $post_fields as $field ) + $args[$field] = isset( $_POST[$field][$_key] ) ? $_POST[$field][$_key] : ''; + + $menu_item_db_id = wp_update_nav_menu_item( $nav_menu_selected_id, ( $_POST['menu-item-db-id'][$_key] != $_key ? 0 : $_key ), $args ); + + if ( is_wp_error( $menu_item_db_id ) ) { + $messages[] = '

    ' . $menu_item_db_id->get_error_message() . '

    '; + } else { + unset( $menu_items[ $menu_item_db_id ] ); + } + } + } + + // Remove menu items from the menu that weren't in $_POST + if ( ! empty( $menu_items ) ) { + foreach ( array_keys( $menu_items ) as $menu_item_id ) { + if ( is_nav_menu_item( $menu_item_id ) ) { + wp_delete_post( $menu_item_id ); + } + } + } + + // Store 'auto-add' pages. + $auto_add = ! empty( $_POST['auto-add-pages'] ); + $nav_menu_option = (array) get_option( 'nav_menu_options' ); + if ( ! isset( $nav_menu_option['auto_add'] ) ) + $nav_menu_option['auto_add'] = array(); + if ( $auto_add ) { + if ( ! in_array( $nav_menu_selected_id, $nav_menu_option['auto_add'] ) ) + $nav_menu_option['auto_add'][] = $nav_menu_selected_id; + } else { + if ( false !== ( $key = array_search( $nav_menu_selected_id, $nav_menu_option['auto_add'] ) ) ) + unset( $nav_menu_option['auto_add'][$key] ); + } + // Remove nonexistent/deleted menus + $nav_menu_option['auto_add'] = array_intersect( $nav_menu_option['auto_add'], wp_get_nav_menus( array( 'fields' => 'ids' ) ) ); + update_option( 'nav_menu_options', $nav_menu_option ); + + wp_defer_term_counting( false ); + + /** This action is documented in wp-includes/nav-menu.php */ + do_action( 'wp_update_nav_menu', $nav_menu_selected_id ); + + $messages[] = '

    ' . sprintf( __( '%1$s has been updated.' ), $nav_menu_selected_title ) . '

    '; + unset( $menu_items, $unsorted_menu_items ); + + return $messages; +} diff --git a/wp-admin/includes/plugin-install.php b/wp-admin/includes/plugin-install.php new file mode 100644 index 0000000000..ab776e8dd2 --- /dev/null +++ b/wp-admin/includes/plugin-install.php @@ -0,0 +1,590 @@ +per_page ) ) { + $args->per_page = 24; + } + + if ( ! isset( $args->locale ) ) { + $args->locale = get_locale(); + } + + /** + * Override the Plugin Install API arguments. + * + * Please ensure that an object is returned. + * + * @since 2.7.0 + * + * @param object $args Plugin API arguments. + * @param string $action The type of information being requested from the Plugin Install API. + */ + $args = apply_filters( 'plugins_api_args', $args, $action ); + + /** + * Allows a plugin to override the WordPress.org Plugin Install API entirely. + * + * Please ensure that an object is returned. + * + * @since 2.7.0 + * + * @param bool|object $result The result object. Default false. + * @param string $action The type of information being requested from the Plugin Install API. + * @param object $args Plugin API arguments. + */ + $res = apply_filters( 'plugins_api', false, $action, $args ); + + if ( false === $res ) { + $url = $http_url = 'http://api.wordpress.org/plugins/info/1.0/'; + if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) + $url = set_url_scheme( $url, 'https' ); + + $http_args = array( + 'timeout' => 15, + 'body' => array( + 'action' => $action, + 'request' => serialize( $args ) + ) + ); + $request = wp_remote_post( $url, $http_args ); + + if ( $ssl && is_wp_error( $request ) ) { + trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); + $request = wp_remote_post( $http_url, $http_args ); + } + + if ( is_wp_error($request) ) { + $res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ), $request->get_error_message() ); + } else { + $res = maybe_unserialize( wp_remote_retrieve_body( $request ) ); + if ( ! is_object( $res ) && ! is_array( $res ) ) + $res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ), wp_remote_retrieve_body( $request ) ); + } + } elseif ( !is_wp_error($res) ) { + $res->external = true; + } + + /** + * Filter the Plugin Install API response results. + * + * @since 2.7.0 + * + * @param object|WP_Error $res Response object or WP_Error. + * @param string $action The type of information being requested from the Plugin Install API. + * @param object $args Plugin API arguments. + */ + return apply_filters( 'plugins_api_result', $res, $action, $args ); +} + +/** + * Retrieve popular WordPress plugin tags. + * + * @since 2.7.0 + * + * @param array $args + * @return array + */ +function install_popular_tags( $args = array() ) { + $key = md5(serialize($args)); + if ( false !== ($tags = get_site_transient('poptags_' . $key) ) ) + return $tags; + + $tags = plugins_api('hot_tags', $args); + + if ( is_wp_error($tags) ) + return $tags; + + set_site_transient( 'poptags_' . $key, $tags, 3 * HOUR_IN_SECONDS ); + + return $tags; +} + +/** + * @since 2.7.0 + */ +function install_dashboard() { + ?> +

    WordPress Plugin Directory or upload a plugin in .zip format via this page.' ), 'https://wordpress.org/plugins/', self_admin_url( 'plugin-install.php?tab=upload' ) ); ?>

    + + + +

    +

    + '; + if ( is_wp_error($api_tags) ) { + echo $api_tags->get_error_message(); + } else { + //Set up the tags in a way which can be interpreted by wp_generate_tag_cloud() + $tags = array(); + foreach ( (array) $api_tags as $tag ) { + $url = self_admin_url( 'plugin-install.php?tab=search&type=tag&s=' . urlencode( $tag['name'] ) ); + $data = array( + 'link' => esc_url( $url ), + 'name' => $tag['name'], + 'slug' => $tag['slug'], + 'id' => sanitize_title_with_dashes( $tag['name'] ), + 'count' => $tag['count'] + ); + $tags[ $tag['name'] ] = (object) $data; + } + echo wp_generate_tag_cloud($tags, array( 'single_text' => __('%s plugin'), 'multiple_text' => __('%s plugins') ) ); + } + echo '


    '; +} + +/** + * Display search form for searching plugins. + * + * @since 2.7.0 + * + * @param bool $type_selector + */ +function install_search_form( $type_selector = true ) { + $type = isset($_REQUEST['type']) ? wp_unslash( $_REQUEST['type'] ) : 'term'; + $term = isset($_REQUEST['s']) ? wp_unslash( $_REQUEST['s'] ) : ''; + $input_attrs = ''; + $button_type = 'button screen-reader-text'; + + // assume no $type_selector means it's a simplified search form + if ( ! $type_selector ) { + $input_attrs = 'class="wp-filter-search" placeholder="' . esc_attr__( 'Search Plugins' ) . '" '; + } + + ?>
    + + + + + + 'search-submit' ) ); ?> +
    +
    +

    +
    + + + + +
    +
    + +

    +
    + +

    + + + +

    +
    + ' . __( 'These suggestions are based on the plugins you and other users have installed.' ) . '

    '; + break; + } + + ?> +
    + display(); ?> +
    + response ) ) { + foreach ( (array)$update_plugins->response as $file => $plugin ) { + if ( $plugin->slug === $api->slug ) { + $status = 'update_available'; + $update_file = $file; + $version = $plugin->new_version; + if ( current_user_can('update_plugins') ) + $url = wp_nonce_url(self_admin_url('update.php?action=upgrade-plugin&plugin=' . $update_file), 'upgrade-plugin_' . $update_file); + break; + } + } + } + + if ( 'install' == $status ) { + if ( is_dir( WP_PLUGIN_DIR . '/' . $api->slug ) ) { + $installed_plugin = get_plugins('/' . $api->slug); + if ( empty($installed_plugin) ) { + if ( current_user_can('install_plugins') ) + $url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug); + } else { + $key = array_keys( $installed_plugin ); + $key = reset( $key ); //Use the first plugin regardless of the name, Could have issues for multiple-plugins in one directory if they share different version numbers + $update_file = $api->slug . '/' . $key; + if ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '=') ){ + $status = 'latest_installed'; + } elseif ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '<') ) { + $status = 'newer_installed'; + $version = $installed_plugin[ $key ]['Version']; + } else { + //If the above update check failed, Then that probably means that the update checker has out-of-date information, force a refresh + if ( ! $loop ) { + delete_site_transient('update_plugins'); + wp_update_plugins(); + return install_plugin_install_status($api, true); + } + } + } + } else { + // "install" & no directory with that slug + if ( current_user_can('install_plugins') ) + $url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug); + } + } + if ( isset($_GET['from']) ) + $url .= '&from=' . urlencode( wp_unslash( $_GET['from'] ) ); + + $file = $update_file; + return compact( 'status', 'url', 'version', 'file' ); +} + +/** + * Display plugin information in dialog box form. + * + * @since 2.7.0 + * + * @global string $tab + * @global string $wp_version + */ +function install_plugin_information() { + global $tab; + + if ( empty( $_REQUEST['plugin'] ) ) { + return; + } + + $api = plugins_api( 'plugin_information', array( + 'slug' => wp_unslash( $_REQUEST['plugin'] ), + 'is_ssl' => is_ssl(), + 'fields' => array( + 'banners' => true, + 'reviews' => true, + 'downloaded' => false, + 'active_installs' => true + ) + ) ); + + if ( is_wp_error( $api ) ) { + wp_die( $api ); + } + + $plugins_allowedtags = array( + 'a' => array( 'href' => array(), 'title' => array(), 'target' => array() ), + 'abbr' => array( 'title' => array() ), 'acronym' => array( 'title' => array() ), + 'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(), + 'div' => array( 'class' => array() ), 'span' => array( 'class' => array() ), + 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(), + 'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(), + 'img' => array( 'src' => array(), 'class' => array(), 'alt' => array() ) + ); + + $plugins_section_titles = array( + 'description' => _x( 'Description', 'Plugin installer section title' ), + 'installation' => _x( 'Installation', 'Plugin installer section title' ), + 'faq' => _x( 'FAQ', 'Plugin installer section title' ), + 'screenshots' => _x( 'Screenshots', 'Plugin installer section title' ), + 'changelog' => _x( 'Changelog', 'Plugin installer section title' ), + 'reviews' => _x( 'Reviews', 'Plugin installer section title' ), + 'other_notes' => _x( 'Other Notes', 'Plugin installer section title' ) + ); + + // Sanitize HTML + foreach ( (array) $api->sections as $section_name => $content ) { + $api->sections[$section_name] = wp_kses( $content, $plugins_allowedtags ); + } + + foreach ( array( 'version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug' ) as $key ) { + if ( isset( $api->$key ) ) { + $api->$key = wp_kses( $api->$key, $plugins_allowedtags ); + } + } + + $_tab = esc_attr( $tab ); + + $section = isset( $_REQUEST['section'] ) ? wp_unslash( $_REQUEST['section'] ) : 'description'; // Default to the Description tab, Do not translate, API returns English. + if ( empty( $section ) || ! isset( $api->sections[ $section ] ) ) { + $section_titles = array_keys( (array) $api->sections ); + $section = reset( $section_titles ); + } + + iframe_header( __( 'Plugin Install' ) ); + + $_with_banner = ''; + + if ( ! empty( $api->banners ) && ( ! empty( $api->banners['low'] ) || ! empty( $api->banners['high'] ) ) ) { + $_with_banner = 'with-banner'; + $low = empty( $api->banners['low'] ) ? $api->banners['high'] : $api->banners['low']; + $high = empty( $api->banners['high'] ) ? $api->banners['low'] : $api->banners['high']; + ?> + + '; + echo "

    {$api->name}

    "; + echo "
    \n"; + + foreach ( (array) $api->sections as $section_name => $content ) { + if ( 'reviews' === $section_name && ( empty( $api->ratings ) || 0 === array_sum( (array) $api->ratings ) ) ) { + continue; + } + + if ( isset( $plugins_section_titles[ $section_name ] ) ) { + $title = $plugins_section_titles[ $section_name ]; + } else { + $title = ucwords( str_replace( '_', ' ', $section_name ) ); + } + + $class = ( $section_name === $section ) ? ' class="current"' : ''; + $href = add_query_arg( array('tab' => $tab, 'section' => $section_name) ); + $href = esc_url( $href ); + $san_section = esc_attr( $section_name ); + echo "\t$title\n"; + } + + echo "
    \n"; + + $date_format = __( 'M j, Y @ H:i' ); + $last_updated_timestamp = strtotime( $api->last_updated ); + ?> +
    +
    +
      + version ) ) { ?> +
    • version; ?>
    • + author ) ) { ?> +
    • author, '_blank' ); ?>
    • + last_updated ) ) { ?> +
    • + +
    • + requires ) ) { ?> +
    • requires ); ?>
    • + tested ) ) { ?> +
    • tested; ?>
    • + active_installs ) ) { ?> +
    • active_installs >= 1000000 ) { + _ex( '1+ Million', 'Active plugin installs' ); + } else { + echo number_format_i18n( $api->active_installs ) . '+'; + } + ?>
    • + slug ) && empty( $api->external ) ) { ?> +
    • + homepage ) ) { ?> +
    • + donate_link ) && empty( $api->contributors ) ) { ?> +
    • + +
    + rating ) ) { ?> +

    + $api->rating, 'type' => 'percent', 'number' => $api->num_ratings ) ); ?> + num_ratings ), number_format_i18n( $api->num_ratings ) ); ?> + ratings ) && array_sum( (array) $api->ratings ) > 0 ) { + foreach( $api->ratings as $key => $ratecount ) { + // Avoid div-by-zero. + $_rating = $api->num_ratings ? ( $ratecount / $api->num_ratings ) : 0; + ?> +
    + + + + + +
    + contributors ) ) { ?> +

    +
      + contributors as $contrib_username => $contrib_profile ) { + if ( empty( $contrib_username ) && empty( $contrib_profile ) ) { + continue; + } + if ( empty( $contrib_username ) ) { + $contrib_username = preg_replace( '/^.+\/(.+)\/?$/', '\1', $contrib_profile ); + } + $contrib_username = sanitize_user( $contrib_username ); + if ( empty( $contrib_profile ) ) { + echo "
    • {$contrib_username}
    • "; + } else { + echo "
    • {$contrib_username}
    • "; + } + } + ?> +
    + donate_link ) ) { ?> + + + +
    +
    + tested ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->tested ) ), $api->tested, '>' ) ) { + echo '

    ' . __('Warning: This plugin has not been tested with your current version of WordPress.') . '

    '; + } elseif ( ! empty( $api->requires ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->requires ) ), $api->requires, '<' ) ) { + echo '

    ' . __('Warning: This plugin has not been marked as compatible with your version of WordPress.') . '

    '; + } + + foreach ( (array) $api->sections as $section_name => $content ) { + $content = links_add_base_url( $content, 'https://wordpress.org/plugins/' . $api->slug . '/' ); + $content = links_add_target( $content, '_blank' ); + + $san_section = esc_attr( $section_name ); + + $display = ( $section_name === $section ) ? 'block' : 'none'; + + echo "\t
    \n"; + echo $content; + echo "\t
    \n"; + } + echo "
    \n"; + echo "
    \n"; + echo "\n"; // #plugin-information-scrollable + echo "\n"; + + iframe_footer(); + exit; +} diff --git a/wp-admin/includes/plugin.php b/wp-admin/includes/plugin.php new file mode 100644 index 0000000000..233d990818 --- /dev/null +++ b/wp-admin/includes/plugin.php @@ -0,0 +1,1950 @@ + 'Plugin Name', + 'PluginURI' => 'Plugin URI', + 'Version' => 'Version', + 'Description' => 'Description', + 'Author' => 'Author', + 'AuthorURI' => 'Author URI', + 'TextDomain' => 'Text Domain', + 'DomainPath' => 'Domain Path', + 'Network' => 'Network', + // Site Wide Only is deprecated in favor of Network. + '_sitewide' => 'Site Wide Only', + ); + + $plugin_data = get_file_data( $plugin_file, $default_headers, 'plugin' ); + + // Site Wide Only is the old header for Network + if ( ! $plugin_data['Network'] && $plugin_data['_sitewide'] ) { + _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The %1$s plugin header is deprecated. Use %2$s instead.' ), 'Site Wide Only: true', 'Network: true' ) ); + $plugin_data['Network'] = $plugin_data['_sitewide']; + } + $plugin_data['Network'] = ( 'true' == strtolower( $plugin_data['Network'] ) ); + unset( $plugin_data['_sitewide'] ); + + if ( $markup || $translate ) { + $plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate ); + } else { + $plugin_data['Title'] = $plugin_data['Name']; + $plugin_data['AuthorName'] = $plugin_data['Author']; + } + + return $plugin_data; +} + +/** + * Sanitizes plugin data, optionally adds markup, optionally translates. + * + * @since 2.7.0 + * @access private + * @see get_plugin_data() + */ +function _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup = true, $translate = true ) { + + // Sanitize the plugin filename to a WP_PLUGIN_DIR relative path + $plugin_file = plugin_basename( $plugin_file ); + + // Translate fields + if ( $translate ) { + if ( $textdomain = $plugin_data['TextDomain'] ) { + if ( $plugin_data['DomainPath'] ) + load_plugin_textdomain( $textdomain, false, dirname( $plugin_file ) . $plugin_data['DomainPath'] ); + else + load_plugin_textdomain( $textdomain, false, dirname( $plugin_file ) ); + } elseif ( in_array( basename( $plugin_file ), array( 'hello.php', 'akismet.php' ) ) ) { + $textdomain = 'default'; + } + if ( $textdomain ) { + foreach ( array( 'Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version' ) as $field ) + $plugin_data[ $field ] = translate( $plugin_data[ $field ], $textdomain ); + } + } + + // Sanitize fields + $allowed_tags = $allowed_tags_in_links = array( + 'abbr' => array( 'title' => true ), + 'acronym' => array( 'title' => true ), + 'code' => true, + 'em' => true, + 'strong' => true, + ); + $allowed_tags['a'] = array( 'href' => true, 'title' => true ); + + // Name is marked up inside tags. Don't allow these. + // Author is too, but some plugins have used here (omitting Author URI). + $plugin_data['Name'] = wp_kses( $plugin_data['Name'], $allowed_tags_in_links ); + $plugin_data['Author'] = wp_kses( $plugin_data['Author'], $allowed_tags ); + + $plugin_data['Description'] = wp_kses( $plugin_data['Description'], $allowed_tags ); + $plugin_data['Version'] = wp_kses( $plugin_data['Version'], $allowed_tags ); + + $plugin_data['PluginURI'] = esc_url( $plugin_data['PluginURI'] ); + $plugin_data['AuthorURI'] = esc_url( $plugin_data['AuthorURI'] ); + + $plugin_data['Title'] = $plugin_data['Name']; + $plugin_data['AuthorName'] = $plugin_data['Author']; + + // Apply markup + if ( $markup ) { + if ( $plugin_data['PluginURI'] && $plugin_data['Name'] ) + $plugin_data['Title'] = '' . $plugin_data['Name'] . ''; + + if ( $plugin_data['AuthorURI'] && $plugin_data['Author'] ) + $plugin_data['Author'] = '' . $plugin_data['Author'] . ''; + + $plugin_data['Description'] = wptexturize( $plugin_data['Description'] ); + + if ( $plugin_data['Author'] ) + $plugin_data['Description'] .= ' ' . sprintf( __('By %s.'), $plugin_data['Author'] ) . ''; + } + + return $plugin_data; +} + +/** + * Get a list of a plugin's files. + * + * @since 2.8.0 + * + * @param string $plugin Plugin ID + * @return array List of files relative to the plugin root. + */ +function get_plugin_files($plugin) { + $plugin_file = WP_PLUGIN_DIR . '/' . $plugin; + $dir = dirname($plugin_file); + $plugin_files = array($plugin); + if ( is_dir($dir) && $dir != WP_PLUGIN_DIR ) { + $plugins_dir = @ opendir( $dir ); + if ( $plugins_dir ) { + while (($file = readdir( $plugins_dir ) ) !== false ) { + if ( substr($file, 0, 1) == '.' ) + continue; + if ( is_dir( $dir . '/' . $file ) ) { + $plugins_subdir = @ opendir( $dir . '/' . $file ); + if ( $plugins_subdir ) { + while (($subfile = readdir( $plugins_subdir ) ) !== false ) { + if ( substr($subfile, 0, 1) == '.' ) + continue; + $plugin_files[] = plugin_basename("$dir/$file/$subfile"); + } + @closedir( $plugins_subdir ); + } + } else { + if ( plugin_basename("$dir/$file") != $plugin ) + $plugin_files[] = plugin_basename("$dir/$file"); + } + } + @closedir( $plugins_dir ); + } + } + + return $plugin_files; +} + +/** + * Check the plugins directory and retrieve all plugin files with plugin data. + * + * WordPress only supports plugin files in the base plugins directory + * (wp-content/plugins) and in one directory above the plugins directory + * (wp-content/plugins/my-plugin). The file it looks for has the plugin data + * and must be found in those two locations. It is recommended to keep your + * plugin files in their own directories. + * + * The file with the plugin data is the file that will be included and therefore + * needs to have the main execution for the plugin. This does not mean + * everything must be contained in the file and it is recommended that the file + * be split for maintainability. Keep everything in one file for extreme + * optimization purposes. + * + * @since 1.5.0 + * + * @param string $plugin_folder Optional. Relative path to single plugin folder. + * @return array Key is the plugin file path and the value is an array of the plugin data. + */ +function get_plugins($plugin_folder = '') { + + if ( ! $cache_plugins = wp_cache_get('plugins', 'plugins') ) + $cache_plugins = array(); + + if ( isset($cache_plugins[ $plugin_folder ]) ) + return $cache_plugins[ $plugin_folder ]; + + $wp_plugins = array (); + $plugin_root = WP_PLUGIN_DIR; + if ( !empty($plugin_folder) ) + $plugin_root .= $plugin_folder; + + // Files in wp-content/plugins directory + $plugins_dir = @ opendir( $plugin_root); + $plugin_files = array(); + if ( $plugins_dir ) { + while (($file = readdir( $plugins_dir ) ) !== false ) { + if ( substr($file, 0, 1) == '.' ) + continue; + if ( is_dir( $plugin_root.'/'.$file ) ) { + $plugins_subdir = @ opendir( $plugin_root.'/'.$file ); + if ( $plugins_subdir ) { + while (($subfile = readdir( $plugins_subdir ) ) !== false ) { + if ( substr($subfile, 0, 1) == '.' ) + continue; + if ( substr($subfile, -4) == '.php' ) + $plugin_files[] = "$file/$subfile"; + } + closedir( $plugins_subdir ); + } + } else { + if ( substr($file, -4) == '.php' ) + $plugin_files[] = $file; + } + } + closedir( $plugins_dir ); + } + + if ( empty($plugin_files) ) + return $wp_plugins; + + foreach ( $plugin_files as $plugin_file ) { + if ( !is_readable( "$plugin_root/$plugin_file" ) ) + continue; + + $plugin_data = get_plugin_data( "$plugin_root/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. + + if ( empty ( $plugin_data['Name'] ) ) + continue; + + $wp_plugins[plugin_basename( $plugin_file )] = $plugin_data; + } + + uasort( $wp_plugins, '_sort_uname_callback' ); + + $cache_plugins[ $plugin_folder ] = $wp_plugins; + wp_cache_set('plugins', $cache_plugins, 'plugins'); + + return $wp_plugins; +} + +/** + * Check the mu-plugins directory and retrieve all mu-plugin files with any plugin data. + * + * WordPress only includes mu-plugin files in the base mu-plugins directory (wp-content/mu-plugins). + * + * @since 3.0.0 + * @return array Key is the mu-plugin file path and the value is an array of the mu-plugin data. + */ +function get_mu_plugins() { + $wp_plugins = array(); + // Files in wp-content/mu-plugins directory + $plugin_files = array(); + + if ( ! is_dir( WPMU_PLUGIN_DIR ) ) + return $wp_plugins; + if ( $plugins_dir = @ opendir( WPMU_PLUGIN_DIR ) ) { + while ( ( $file = readdir( $plugins_dir ) ) !== false ) { + if ( substr( $file, -4 ) == '.php' ) + $plugin_files[] = $file; + } + } else { + return $wp_plugins; + } + + @closedir( $plugins_dir ); + + if ( empty($plugin_files) ) + return $wp_plugins; + + foreach ( $plugin_files as $plugin_file ) { + if ( !is_readable( WPMU_PLUGIN_DIR . "/$plugin_file" ) ) + continue; + + $plugin_data = get_plugin_data( WPMU_PLUGIN_DIR . "/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. + + if ( empty ( $plugin_data['Name'] ) ) + $plugin_data['Name'] = $plugin_file; + + $wp_plugins[ $plugin_file ] = $plugin_data; + } + + if ( isset( $wp_plugins['index.php'] ) && filesize( WPMU_PLUGIN_DIR . '/index.php') <= 30 ) // silence is golden + unset( $wp_plugins['index.php'] ); + + uasort( $wp_plugins, '_sort_uname_callback' ); + + return $wp_plugins; +} + +/** + * Callback to sort array by a 'Name' key. + * + * @since 3.1.0 + * @access private + */ +function _sort_uname_callback( $a, $b ) { + return strnatcasecmp( $a['Name'], $b['Name'] ); +} + +/** + * Check the wp-content directory and retrieve all drop-ins with any plugin data. + * + * @since 3.0.0 + * @return array Key is the file path and the value is an array of the plugin data. + */ +function get_dropins() { + $dropins = array(); + $plugin_files = array(); + + $_dropins = _get_dropins(); + + // These exist in the wp-content directory + if ( $plugins_dir = @ opendir( WP_CONTENT_DIR ) ) { + while ( ( $file = readdir( $plugins_dir ) ) !== false ) { + if ( isset( $_dropins[ $file ] ) ) + $plugin_files[] = $file; + } + } else { + return $dropins; + } + + @closedir( $plugins_dir ); + + if ( empty($plugin_files) ) + return $dropins; + + foreach ( $plugin_files as $plugin_file ) { + if ( !is_readable( WP_CONTENT_DIR . "/$plugin_file" ) ) + continue; + $plugin_data = get_plugin_data( WP_CONTENT_DIR . "/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. + if ( empty( $plugin_data['Name'] ) ) + $plugin_data['Name'] = $plugin_file; + $dropins[ $plugin_file ] = $plugin_data; + } + + uksort( $dropins, 'strnatcasecmp' ); + + return $dropins; +} + +/** + * Returns drop-ins that WordPress uses. + * + * Includes Multisite drop-ins only when is_multisite() + * + * @since 3.0.0 + * @return array Key is file name. The value is an array, with the first value the + * purpose of the drop-in and the second value the name of the constant that must be + * true for the drop-in to be used, or true if no constant is required. + */ +function _get_dropins() { + $dropins = array( + 'advanced-cache.php' => array( __( 'Advanced caching plugin.' ), 'WP_CACHE' ), // WP_CACHE + 'db.php' => array( __( 'Custom database class.' ), true ), // auto on load + 'db-error.php' => array( __( 'Custom database error message.' ), true ), // auto on error + 'install.php' => array( __( 'Custom install script.' ), true ), // auto on install + 'maintenance.php' => array( __( 'Custom maintenance message.' ), true ), // auto on maintenance + 'object-cache.php' => array( __( 'External object cache.' ), true ), // auto on load + ); + + if ( is_multisite() ) { + $dropins['sunrise.php' ] = array( __( 'Executed before Multisite is loaded.' ), 'SUNRISE' ); // SUNRISE + $dropins['blog-deleted.php' ] = array( __( 'Custom site deleted message.' ), true ); // auto on deleted blog + $dropins['blog-inactive.php' ] = array( __( 'Custom site inactive message.' ), true ); // auto on inactive blog + $dropins['blog-suspended.php'] = array( __( 'Custom site suspended message.' ), true ); // auto on archived or spammed blog + } + + return $dropins; +} + +/** + * Check whether the plugin is active by checking the active_plugins list. + * + * @since 2.5.0 + * + * @param string $plugin Base plugin path from plugins directory. + * @return bool True, if in the active plugins list. False, not in the list. + */ +function is_plugin_active( $plugin ) { + return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || is_plugin_active_for_network( $plugin ); +} + +/** + * Check whether the plugin is inactive. + * + * Reverse of is_plugin_active(). Used as a callback. + * + * @since 3.1.0 + * @see is_plugin_active() + * + * @param string $plugin Base plugin path from plugins directory. + * @return bool True if inactive. False if active. + */ +function is_plugin_inactive( $plugin ) { + return ! is_plugin_active( $plugin ); +} + +/** + * Check whether the plugin is active for the entire network. + * + * @since 3.0.0 + * + * @param string $plugin Base plugin path from plugins directory. + * @return bool True, if active for the network, otherwise false. + */ +function is_plugin_active_for_network( $plugin ) { + if ( !is_multisite() ) + return false; + + $plugins = get_site_option( 'active_sitewide_plugins'); + if ( isset($plugins[$plugin]) ) + return true; + + return false; +} + +/** + * Checks for "Network: true" in the plugin header to see if this should + * be activated only as a network wide plugin. The plugin would also work + * when Multisite is not enabled. + * + * Checks for "Site Wide Only: true" for backwards compatibility. + * + * @since 3.0.0 + * + * @param string $plugin Plugin to check + * @return bool True if plugin is network only, false otherwise. + */ +function is_network_only_plugin( $plugin ) { + $plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ); + if ( $plugin_data ) + return $plugin_data['Network']; + return false; +} + +/** + * Attempts activation of plugin in a "sandbox" and redirects on success. + * + * A plugin that is already activated will not attempt to be activated again. + * + * The way it works is by setting the redirection to the error before trying to + * include the plugin file. If the plugin fails, then the redirection will not + * be overwritten with the success message. Also, the options will not be + * updated and the activation hook will not be called on plugin error. + * + * It should be noted that in no way the below code will actually prevent errors + * within the file. The code should not be used elsewhere to replicate the + * "sandbox", which uses redirection to work. + * {@source 13 1} + * + * If any errors are found or text is outputted, then it will be captured to + * ensure that the success redirection will update the error redirection. + * + * @since 2.5.0 + * + * @param string $plugin Plugin path to main plugin file with plugin data. + * @param string $redirect Optional. URL to redirect to. + * @param bool $network_wide Whether to enable the plugin for all sites in the + * network or just the current site. Multisite only. Default is false. + * @param bool $silent Prevent calling activation hooks. Optional, default is false. + * @return WP_Error|null WP_Error on invalid file or null on success. + */ +function activate_plugin( $plugin, $redirect = '', $network_wide = false, $silent = false ) { + $plugin = plugin_basename( trim( $plugin ) ); + + if ( is_multisite() && ( $network_wide || is_network_only_plugin($plugin) ) ) { + $network_wide = true; + $current = get_site_option( 'active_sitewide_plugins', array() ); + $_GET['networkwide'] = 1; // Back compat for plugins looking for this value. + } else { + $current = get_option( 'active_plugins', array() ); + } + + $valid = validate_plugin($plugin); + if ( is_wp_error($valid) ) + return $valid; + + if ( ( $network_wide && ! isset( $current[ $plugin ] ) ) || ( ! $network_wide && ! in_array( $plugin, $current ) ) ) { + if ( !empty($redirect) ) + wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); // we'll override this later if the plugin can be included without fatal error + ob_start(); + wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . $plugin ); + $_wp_plugin_file = $plugin; + include_once( WP_PLUGIN_DIR . '/' . $plugin ); + $plugin = $_wp_plugin_file; // Avoid stomping of the $plugin variable in a plugin. + + if ( ! $silent ) { + /** + * Fires before a plugin is activated. + * + * If a plugin is silently activated (such as during an update), + * this hook does not fire. + * + * @since 2.9.0 + * + * @param string $plugin Plugin path to main plugin file with plugin data. + * @param bool $network_wide Whether to enable the plugin for all sites in the network + * or just the current site. Multisite only. Default is false. + */ + do_action( 'activate_plugin', $plugin, $network_wide ); + + /** + * Fires as a specific plugin is being activated. + * + * This hook is the "activation" hook used internally by + * {@see register_activation_hook()}. The dynamic portion of the + * hook name, `$plugin`, refers to the plugin basename. + * + * If a plugin is silently activated (such as during an update), + * this hook does not fire. + * + * @since 2.0.0 + * + * @param bool $network_wide Whether to enable the plugin for all sites in the network + * or just the current site. Multisite only. Default is false. + */ + do_action( 'activate_' . $plugin, $network_wide ); + } + + if ( $network_wide ) { + $current = get_site_option( 'active_sitewide_plugins', array() ); + $current[$plugin] = time(); + update_site_option( 'active_sitewide_plugins', $current ); + } else { + $current = get_option( 'active_plugins', array() ); + $current[] = $plugin; + sort($current); + update_option('active_plugins', $current); + } + + if ( ! $silent ) { + /** + * Fires after a plugin has been activated. + * + * If a plugin is silently activated (such as during an update), + * this hook does not fire. + * + * @since 2.9.0 + * + * @param string $plugin Plugin path to main plugin file with plugin data. + * @param bool $network_wide Whether to enable the plugin for all sites in the network + * or just the current site. Multisite only. Default is false. + */ + do_action( 'activated_plugin', $plugin, $network_wide ); + } + + if ( ob_get_length() > 0 ) { + $output = ob_get_clean(); + return new WP_Error('unexpected_output', __('The plugin generated unexpected output.'), $output); + } + ob_end_clean(); + } + + return null; +} + +/** + * Deactivate a single plugin or multiple plugins. + * + * The deactivation hook is disabled by the plugin upgrader by using the $silent + * parameter. + * + * @since 2.5.0 + * + * @param string|array $plugins Single plugin or list of plugins to deactivate. + * @param bool $silent Prevent calling deactivation hooks. Default is false. + * @param mixed $network_wide Whether to deactivate the plugin for all sites in the network. + * A value of null (the default) will deactivate plugins for both the site and the network. + */ +function deactivate_plugins( $plugins, $silent = false, $network_wide = null ) { + if ( is_multisite() ) + $network_current = get_site_option( 'active_sitewide_plugins', array() ); + $current = get_option( 'active_plugins', array() ); + $do_blog = $do_network = false; + + foreach ( (array) $plugins as $plugin ) { + $plugin = plugin_basename( trim( $plugin ) ); + if ( ! is_plugin_active($plugin) ) + continue; + + $network_deactivating = false !== $network_wide && is_plugin_active_for_network( $plugin ); + + if ( ! $silent ) { + /** + * Fires before a plugin is deactivated. + * + * If a plugin is silently deactivated (such as during an update), + * this hook does not fire. + * + * @since 2.9.0 + * + * @param string $plugin Plugin path to main plugin file with plugin data. + * @param bool $network_deactivating Whether the plugin is deactivated for all sites in the network + * or just the current site. Multisite only. Default is false. + */ + do_action( 'deactivate_plugin', $plugin, $network_deactivating ); + } + + if ( false !== $network_wide ) { + if ( is_plugin_active_for_network( $plugin ) ) { + $do_network = true; + unset( $network_current[ $plugin ] ); + } elseif ( $network_wide ) { + continue; + } + } + + if ( true !== $network_wide ) { + $key = array_search( $plugin, $current ); + if ( false !== $key ) { + $do_blog = true; + unset( $current[ $key ] ); + } + } + + if ( ! $silent ) { + /** + * Fires as a specific plugin is being deactivated. + * + * This hook is the "deactivation" hook used internally by + * {@see register_deactivation_hook()}. The dynamic portion of the + * hook name, `$plugin`, refers to the plugin basename. + * + * If a plugin is silently deactivated (such as during an update), + * this hook does not fire. + * + * @since 2.0.0 + * + * @param bool $network_deactivating Whether the plugin is deactivated for all sites in the network + * or just the current site. Multisite only. Default is false. + */ + do_action( 'deactivate_' . $plugin, $network_deactivating ); + + /** + * Fires after a plugin is deactivated. + * + * If a plugin is silently deactivated (such as during an update), + * this hook does not fire. + * + * @since 2.9.0 + * + * @param string $plugin Plugin basename. + * @param bool $network_deactivating Whether the plugin is deactivated for all sites in the network + * or just the current site. Multisite only. Default false. + */ + do_action( 'deactivated_plugin', $plugin, $network_deactivating ); + } + } + + if ( $do_blog ) + update_option('active_plugins', $current); + if ( $do_network ) + update_site_option( 'active_sitewide_plugins', $network_current ); +} + +/** + * Activate multiple plugins. + * + * When WP_Error is returned, it does not mean that one of the plugins had + * errors. It means that one or more of the plugins file path was invalid. + * + * The execution will be halted as soon as one of the plugins has an error. + * + * @since 2.6.0 + * + * @param string|array $plugins Single plugin or list of plugins to activate. + * @param string $redirect Redirect to page after successful activation. + * @param bool $network_wide Whether to enable the plugin for all sites in the network. + * @param bool $silent Prevent calling activation hooks. Default is false. + * @return bool|WP_Error True when finished or WP_Error if there were errors during a plugin activation. + */ +function activate_plugins( $plugins, $redirect = '', $network_wide = false, $silent = false ) { + if ( !is_array($plugins) ) + $plugins = array($plugins); + + $errors = array(); + foreach ( $plugins as $plugin ) { + if ( !empty($redirect) ) + $redirect = add_query_arg('plugin', $plugin, $redirect); + $result = activate_plugin($plugin, $redirect, $network_wide, $silent); + if ( is_wp_error($result) ) + $errors[$plugin] = $result; + } + + if ( !empty($errors) ) + return new WP_Error('plugins_invalid', __('One of the plugins is invalid.'), $errors); + + return true; +} + +/** + * Remove directory and files of a plugin for a list of plugins. + * + * @since 2.6.0 + * + * @global WP_Filesystem_Base $wp_filesystem + * + * @param array $plugins List of plugins to delete. + * @param string $deprecated Deprecated. + * @return bool|null|WP_Error True on success, false is $plugins is empty, WP_Error on failure. + * Null if filesystem credentials are required to proceed. + */ +function delete_plugins( $plugins, $deprecated = '' ) { + global $wp_filesystem; + + if ( empty($plugins) ) + return false; + + $checked = array(); + foreach( $plugins as $plugin ) + $checked[] = 'checked[]=' . $plugin; + + ob_start(); + $url = wp_nonce_url('plugins.php?action=delete-selected&verify-delete=1&' . implode('&', $checked), 'bulk-plugins'); + if ( false === ($credentials = request_filesystem_credentials($url)) ) { + $data = ob_get_clean(); + + if ( ! empty($data) ){ + include_once( ABSPATH . 'wp-admin/admin-header.php'); + echo $data; + include( ABSPATH . 'wp-admin/admin-footer.php'); + exit; + } + return; + } + + if ( ! WP_Filesystem($credentials) ) { + request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again + $data = ob_get_clean(); + + if ( ! empty($data) ){ + include_once( ABSPATH . 'wp-admin/admin-header.php'); + echo $data; + include( ABSPATH . 'wp-admin/admin-footer.php'); + exit; + } + return; + } + + if ( ! is_object($wp_filesystem) ) + return new WP_Error('fs_unavailable', __('Could not access filesystem.')); + + if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) + return new WP_Error('fs_error', __('Filesystem error.'), $wp_filesystem->errors); + + // Get the base plugin folder. + $plugins_dir = $wp_filesystem->wp_plugins_dir(); + if ( empty( $plugins_dir ) ) { + return new WP_Error( 'fs_no_plugins_dir', __( 'Unable to locate WordPress Plugin directory.' ) ); + } + + $plugins_dir = trailingslashit( $plugins_dir ); + + $plugin_translations = wp_get_installed_translations( 'plugins' ); + + $errors = array(); + + foreach( $plugins as $plugin_file ) { + // Run Uninstall hook. + if ( is_uninstallable_plugin( $plugin_file ) ) { + uninstall_plugin($plugin_file); + } + + $this_plugin_dir = trailingslashit( dirname( $plugins_dir . $plugin_file ) ); + // If plugin is in its own directory, recursively delete the directory. + if ( strpos( $plugin_file, '/' ) && $this_plugin_dir != $plugins_dir ) { //base check on if plugin includes directory separator AND that it's not the root plugin folder + $deleted = $wp_filesystem->delete( $this_plugin_dir, true ); + } else { + $deleted = $wp_filesystem->delete( $plugins_dir . $plugin_file ); + } + + if ( ! $deleted ) { + $errors[] = $plugin_file; + continue; + } + + // Remove language files, silently. + $plugin_slug = dirname( $plugin_file ); + if ( '.' !== $plugin_slug && ! empty( $plugin_translations[ $plugin_slug ] ) ) { + $translations = $plugin_translations[ $plugin_slug ]; + + foreach ( $translations as $translation => $data ) { + $wp_filesystem->delete( WP_LANG_DIR . '/plugins/' . $plugin_slug . '-' . $translation . '.po' ); + $wp_filesystem->delete( WP_LANG_DIR . '/plugins/' . $plugin_slug . '-' . $translation . '.mo' ); + } + } + } + + // Remove deleted plugins from the plugin updates list. + if ( $current = get_site_transient('update_plugins') ) { + // Don't remove the plugins that weren't deleted. + $deleted = array_diff( $plugins, $errors ); + + foreach ( $deleted as $plugin_file ) { + unset( $current->response[ $plugin_file ] ); + } + + set_site_transient( 'update_plugins', $current ); + } + + if ( ! empty($errors) ) + return new WP_Error('could_not_remove_plugin', sprintf(__('Could not fully remove the plugin(s) %s.'), implode(', ', $errors)) ); + + return true; +} + +/** + * Validate active plugins + * + * Validate all active plugins, deactivates invalid and + * returns an array of deactivated ones. + * + * @since 2.5.0 + * @return array invalid plugins, plugin as key, error as value + */ +function validate_active_plugins() { + $plugins = get_option( 'active_plugins', array() ); + // Validate vartype: array. + if ( ! is_array( $plugins ) ) { + update_option( 'active_plugins', array() ); + $plugins = array(); + } + + if ( is_multisite() && current_user_can( 'manage_network_plugins' ) ) { + $network_plugins = (array) get_site_option( 'active_sitewide_plugins', array() ); + $plugins = array_merge( $plugins, array_keys( $network_plugins ) ); + } + + if ( empty( $plugins ) ) + return array(); + + $invalid = array(); + + // Invalid plugins get deactivated. + foreach ( $plugins as $plugin ) { + $result = validate_plugin( $plugin ); + if ( is_wp_error( $result ) ) { + $invalid[$plugin] = $result; + deactivate_plugins( $plugin, true ); + } + } + return $invalid; +} + +/** + * Validate the plugin path. + * + * Checks that the file exists and {@link validate_file() is valid file}. + * + * @since 2.5.0 + * + * @param string $plugin Plugin Path + * @return WP_Error|int 0 on success, WP_Error on failure. + */ +function validate_plugin($plugin) { + if ( validate_file($plugin) ) + return new WP_Error('plugin_invalid', __('Invalid plugin path.')); + if ( ! file_exists(WP_PLUGIN_DIR . '/' . $plugin) ) + return new WP_Error('plugin_not_found', __('Plugin file does not exist.')); + + $installed_plugins = get_plugins(); + if ( ! isset($installed_plugins[$plugin]) ) + return new WP_Error('no_plugin_header', __('The plugin does not have a valid header.')); + return 0; +} + +/** + * Whether the plugin can be uninstalled. + * + * @since 2.7.0 + * + * @param string $plugin Plugin path to check. + * @return bool Whether plugin can be uninstalled. + */ +function is_uninstallable_plugin($plugin) { + $file = plugin_basename($plugin); + + $uninstallable_plugins = (array) get_option('uninstall_plugins'); + if ( isset( $uninstallable_plugins[$file] ) || file_exists( WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php' ) ) + return true; + + return false; +} + +/** + * Uninstall a single plugin. + * + * Calls the uninstall hook, if it is available. + * + * @since 2.7.0 + * + * @param string $plugin Relative plugin path from Plugin Directory. + * @return true True if a plugin's uninstall.php file has been found and included. + */ +function uninstall_plugin($plugin) { + $file = plugin_basename($plugin); + + $uninstallable_plugins = (array) get_option('uninstall_plugins'); + if ( file_exists( WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php' ) ) { + if ( isset( $uninstallable_plugins[$file] ) ) { + unset($uninstallable_plugins[$file]); + update_option('uninstall_plugins', $uninstallable_plugins); + } + unset($uninstallable_plugins); + + define('WP_UNINSTALL_PLUGIN', $file); + wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . dirname( $file ) ); + include( WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php' ); + + return true; + } + + if ( isset( $uninstallable_plugins[$file] ) ) { + $callable = $uninstallable_plugins[$file]; + unset($uninstallable_plugins[$file]); + update_option('uninstall_plugins', $uninstallable_plugins); + unset($uninstallable_plugins); + + wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . $file ); + include( WP_PLUGIN_DIR . '/' . $file ); + + add_action( 'uninstall_' . $file, $callable ); + + /** + * Fires in uninstall_plugin() once the plugin has been uninstalled. + * + * The action concatenates the 'uninstall_' prefix with the basename of the + * plugin passed to {@see uninstall_plugin()} to create a dynamically-named action. + * + * @since 2.7.0 + */ + do_action( 'uninstall_' . $file ); + } +} + +// +// Menu +// + +/** + * Add a top level menu page + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @global array $menu + * @global array $admin_page_hooks + * @global array $_registered_pages + * @global array $_parent_pages + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * @param string $icon_url 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 to use a font icon, e.g. 'dashicons-chart-pie'. + * * Pass 'none' to leave div.wp-menu-image empty so an icon can be added via CSS. + * @param int $position The position in the menu order this one should appear + * + * @return string The resulting page's hook_suffix + */ +function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = null ) { + global $menu, $admin_page_hooks, $_registered_pages, $_parent_pages; + + $menu_slug = plugin_basename( $menu_slug ); + + $admin_page_hooks[$menu_slug] = sanitize_title( $menu_title ); + + $hookname = get_plugin_page_hookname( $menu_slug, '' ); + + if ( !empty( $function ) && !empty( $hookname ) && current_user_can( $capability ) ) + add_action( $hookname, $function ); + + if ( empty($icon_url) ) { + $icon_url = 'dashicons-admin-generic'; + $icon_class = 'menu-icon-generic '; + } else { + $icon_url = set_url_scheme( $icon_url ); + $icon_class = ''; + } + + $new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $icon_class . $hookname, $hookname, $icon_url ); + + if ( null === $position ) + $menu[] = $new_menu; + else + $menu[$position] = $new_menu; + + $_registered_pages[$hookname] = true; + + // No parent as top level + $_parent_pages[$menu_slug] = false; + + return $hookname; +} + +/** + * Add a top level menu page in the 'objects' section + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @global int $_wp_last_object_menu + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * @param string $icon_url The url to the icon to be used for this menu + * + * @return string The resulting page's hook_suffix + */ +function add_object_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '') { + global $_wp_last_object_menu; + + $_wp_last_object_menu++; + + return add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $_wp_last_object_menu); +} + +/** + * Add a top level menu page in the 'utility' section + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @global int $_wp_last_utility_menu + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * @param string $icon_url The url to the icon to be used for this menu + * + * @return string The resulting page's hook_suffix + */ +function add_utility_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '') { + global $_wp_last_utility_menu; + + $_wp_last_utility_menu++; + + return add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $_wp_last_utility_menu); +} + +/** + * Add a sub menu page + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @global array $submenu + * @global array $menu + * @global type $_wp_real_parent_file + * @global bool $_wp_submenu_nopriv + * @global array $_registered_pages + * @global array $_parent_pages + * + * @param string $parent_slug The slug name for the parent menu (or the file name of a standard WordPress admin page) + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + global $submenu, $menu, $_wp_real_parent_file, $_wp_submenu_nopriv, + $_registered_pages, $_parent_pages; + + $menu_slug = plugin_basename( $menu_slug ); + $parent_slug = plugin_basename( $parent_slug); + + if ( isset( $_wp_real_parent_file[$parent_slug] ) ) + $parent_slug = $_wp_real_parent_file[$parent_slug]; + + if ( !current_user_can( $capability ) ) { + $_wp_submenu_nopriv[$parent_slug][$menu_slug] = true; + return false; + } + + /* + * If the parent doesn't already have a submenu, add a link to the parent + * as the first item in the submenu. If the submenu file is the same as the + * parent file someone is trying to link back to the parent manually. In + * this case, don't automatically add a link back to avoid duplication. + */ + if (!isset( $submenu[$parent_slug] ) && $menu_slug != $parent_slug ) { + foreach ( (array)$menu as $parent_menu ) { + if ( $parent_menu[2] == $parent_slug && current_user_can( $parent_menu[1] ) ) + $submenu[$parent_slug][] = array_slice( $parent_menu, 0, 4 ); + } + } + + $submenu[$parent_slug][] = array ( $menu_title, $capability, $menu_slug, $page_title ); + + $hookname = get_plugin_page_hookname( $menu_slug, $parent_slug); + if (!empty ( $function ) && !empty ( $hookname )) + add_action( $hookname, $function ); + + $_registered_pages[$hookname] = true; + + /* + * Backward-compatibility for plugins using add_management page. + * See wp-admin/admin.php for redirect from edit.php to tools.php + */ + if ( 'tools.php' == $parent_slug ) + $_registered_pages[get_plugin_page_hookname( $menu_slug, 'edit.php')] = true; + + // No parent as top level. + $_parent_pages[$menu_slug] = $parent_slug; + + return $hookname; +} + +/** + * Add sub menu page to the tools main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_management_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'tools.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the options main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'options-general.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the themes main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'themes.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the plugins main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_plugins_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'plugins.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the Users/Profile main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_users_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + if ( current_user_can('edit_users') ) + $parent = 'users.php'; + else + $parent = 'profile.php'; + return add_submenu_page( $parent, $page_title, $menu_title, $capability, $menu_slug, $function ); +} +/** + * Add sub menu page to the Dashboard main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'index.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the posts main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_posts_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'edit.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the media main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_media_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'upload.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the links main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_links_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'link-manager.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the pages main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. +*/ +function add_pages_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'edit.php?post_type=page', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the comments main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required. +*/ +function add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'edit-comments.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Remove a top level admin menu + * + * @since 3.1.0 + * + * @global array $menu + * + * @param string $menu_slug The slug of the menu + * @return array|bool The removed menu on success, False if not found + */ +function remove_menu_page( $menu_slug ) { + global $menu; + + foreach ( $menu as $i => $item ) { + if ( $menu_slug == $item[2] ) { + unset( $menu[$i] ); + return $item; + } + } + + return false; +} + +/** + * Remove an admin submenu + * + * @since 3.1.0 + * + * @global array $submenu + * + * @param string $menu_slug The slug for the parent menu + * @param string $submenu_slug The slug of the submenu + * @return array|bool The removed submenu on success, False if not found + */ +function remove_submenu_page( $menu_slug, $submenu_slug ) { + global $submenu; + + if ( !isset( $submenu[$menu_slug] ) ) + return false; + + foreach ( $submenu[$menu_slug] as $i => $item ) { + if ( $submenu_slug == $item[2] ) { + unset( $submenu[$menu_slug][$i] ); + return $item; + } + } + + return false; +} + +/** + * Get the url to access a particular menu page based on the slug it was registered with. + * + * If the slug hasn't been registered properly no url will be returned + * + * @since 3.0.0 + * + * @global array $_parent_pages + * + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param bool $echo Whether or not to echo the url - default is true + * @return string the url + */ +function menu_page_url($menu_slug, $echo = true) { + global $_parent_pages; + + if ( isset( $_parent_pages[$menu_slug] ) ) { + $parent_slug = $_parent_pages[$menu_slug]; + if ( $parent_slug && ! isset( $_parent_pages[$parent_slug] ) ) { + $url = admin_url( add_query_arg( 'page', $menu_slug, $parent_slug ) ); + } else { + $url = admin_url( 'admin.php?page=' . $menu_slug ); + } + } else { + $url = ''; + } + + $url = esc_url($url); + + if ( $echo ) + echo $url; + + return $url; +} + +// +// Pluggable Menu Support -- Private +// +/** + * + * @global string $parent_file + * @global array $menu + * @global array $submenu + * @global string $pagenow + * @global string $typenow + * @global string $plugin_page + * @global string $_wp_real_parent_file + * @global array $_wp_menu_nopriv + * @global array $_wp_submenu_nopriv + */ +function get_admin_page_parent( $parent = '' ) { + global $parent_file, $menu, $submenu, $pagenow, $typenow, + $plugin_page, $_wp_real_parent_file, $_wp_menu_nopriv, $_wp_submenu_nopriv; + + if ( !empty ( $parent ) && 'admin.php' != $parent ) { + if ( isset( $_wp_real_parent_file[$parent] ) ) + $parent = $_wp_real_parent_file[$parent]; + return $parent; + } + + if ( $pagenow == 'admin.php' && isset( $plugin_page ) ) { + foreach ( (array)$menu as $parent_menu ) { + if ( $parent_menu[2] == $plugin_page ) { + $parent_file = $plugin_page; + if ( isset( $_wp_real_parent_file[$parent_file] ) ) + $parent_file = $_wp_real_parent_file[$parent_file]; + return $parent_file; + } + } + if ( isset( $_wp_menu_nopriv[$plugin_page] ) ) { + $parent_file = $plugin_page; + if ( isset( $_wp_real_parent_file[$parent_file] ) ) + $parent_file = $_wp_real_parent_file[$parent_file]; + return $parent_file; + } + } + + if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) ) { + $parent_file = $pagenow; + if ( isset( $_wp_real_parent_file[$parent_file] ) ) + $parent_file = $_wp_real_parent_file[$parent_file]; + return $parent_file; + } + + foreach (array_keys( (array)$submenu ) as $parent) { + foreach ( $submenu[$parent] as $submenu_array ) { + if ( isset( $_wp_real_parent_file[$parent] ) ) + $parent = $_wp_real_parent_file[$parent]; + if ( !empty($typenow) && ($submenu_array[2] == "$pagenow?post_type=$typenow") ) { + $parent_file = $parent; + return $parent; + } elseif ( $submenu_array[2] == $pagenow && empty($typenow) && ( empty($parent_file) || false === strpos($parent_file, '?') ) ) { + $parent_file = $parent; + return $parent; + } elseif ( isset( $plugin_page ) && ($plugin_page == $submenu_array[2] ) ) { + $parent_file = $parent; + return $parent; + } + } + } + + if ( empty($parent_file) ) + $parent_file = ''; + return ''; +} + +/** + * + * @global string $title + * @global array $menu + * @global array $submenu + * @global string $pagenow + * @global string $plugin_page + * @global string $typenow + */ +function get_admin_page_title() { + global $title, $menu, $submenu, $pagenow, $plugin_page, $typenow; + + if ( ! empty ( $title ) ) + return $title; + + $hook = get_plugin_page_hook( $plugin_page, $pagenow ); + + $parent = $parent1 = get_admin_page_parent(); + + if ( empty ( $parent) ) { + foreach ( (array)$menu as $menu_array ) { + if ( isset( $menu_array[3] ) ) { + if ( $menu_array[2] == $pagenow ) { + $title = $menu_array[3]; + return $menu_array[3]; + } elseif ( isset( $plugin_page ) && ($plugin_page == $menu_array[2] ) && ($hook == $menu_array[3] ) ) { + $title = $menu_array[3]; + return $menu_array[3]; + } + } else { + $title = $menu_array[0]; + return $title; + } + } + } else { + foreach ( array_keys( $submenu ) as $parent ) { + foreach ( $submenu[$parent] as $submenu_array ) { + if ( isset( $plugin_page ) && + ( $plugin_page == $submenu_array[2] ) && + ( + ( $parent == $pagenow ) || + ( $parent == $plugin_page ) || + ( $plugin_page == $hook ) || + ( $pagenow == 'admin.php' && $parent1 != $submenu_array[2] ) || + ( !empty($typenow) && $parent == $pagenow . '?post_type=' . $typenow) + ) + ) { + $title = $submenu_array[3]; + return $submenu_array[3]; + } + + if ( $submenu_array[2] != $pagenow || isset( $_GET['page'] ) ) // not the current page + continue; + + if ( isset( $submenu_array[3] ) ) { + $title = $submenu_array[3]; + return $submenu_array[3]; + } else { + $title = $submenu_array[0]; + return $title; + } + } + } + if ( empty ( $title ) ) { + foreach ( $menu as $menu_array ) { + if ( isset( $plugin_page ) && + ( $plugin_page == $menu_array[2] ) && + ( $pagenow == 'admin.php' ) && + ( $parent1 == $menu_array[2] ) ) + { + $title = $menu_array[3]; + return $menu_array[3]; + } + } + } + } + + return $title; +} + +/** + * @since 2.3.0 + * + * @param string $plugin_page + * @param string $parent_page + * @return string|null + */ +function get_plugin_page_hook( $plugin_page, $parent_page ) { + $hook = get_plugin_page_hookname( $plugin_page, $parent_page ); + if ( has_action($hook) ) + return $hook; + else + return null; +} + +/** + * + * @global array $admin_page_hooks + * @param string $plugin_page + * @param string $parent_page + */ +function get_plugin_page_hookname( $plugin_page, $parent_page ) { + global $admin_page_hooks; + + $parent = get_admin_page_parent( $parent_page ); + + $page_type = 'admin'; + if ( empty ( $parent_page ) || 'admin.php' == $parent_page || isset( $admin_page_hooks[$plugin_page] ) ) { + if ( isset( $admin_page_hooks[$plugin_page] ) ) { + $page_type = 'toplevel'; + } elseif ( isset( $admin_page_hooks[$parent] )) { + $page_type = $admin_page_hooks[$parent]; + } + } elseif ( isset( $admin_page_hooks[$parent] ) ) { + $page_type = $admin_page_hooks[$parent]; + } + + $plugin_name = preg_replace( '!\.php!', '', $plugin_page ); + + return $page_type . '_page_' . $plugin_name; +} + +/** + * + * @global string $pagenow + * @global array $menu + * @global array $submenu + * @global array $_wp_menu_nopriv + * @global array $_wp_submenu_nopriv + * @global string $plugin_page + * @global array $_registered_pages + */ +function user_can_access_admin_page() { + global $pagenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv, + $plugin_page, $_registered_pages; + + $parent = get_admin_page_parent(); + + if ( !isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$pagenow] ) ) + return false; + + if ( isset( $plugin_page ) ) { + if ( isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) ) + return false; + + $hookname = get_plugin_page_hookname($plugin_page, $parent); + + if ( !isset($_registered_pages[$hookname]) ) + return false; + } + + if ( empty( $parent) ) { + if ( isset( $_wp_menu_nopriv[$pagenow] ) ) + return false; + if ( isset( $_wp_submenu_nopriv[$pagenow][$pagenow] ) ) + return false; + if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) ) + return false; + if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) + return false; + foreach (array_keys( $_wp_submenu_nopriv ) as $key ) { + if ( isset( $_wp_submenu_nopriv[$key][$pagenow] ) ) + return false; + if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$key][$plugin_page] ) ) + return false; + } + return true; + } + + if ( isset( $plugin_page ) && ( $plugin_page == $parent ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) + return false; + + if ( isset( $submenu[$parent] ) ) { + foreach ( $submenu[$parent] as $submenu_array ) { + if ( isset( $plugin_page ) && ( $submenu_array[2] == $plugin_page ) ) { + if ( current_user_can( $submenu_array[1] )) + return true; + else + return false; + } elseif ( $submenu_array[2] == $pagenow ) { + if ( current_user_can( $submenu_array[1] )) + return true; + else + return false; + } + } + } + + foreach ( $menu as $menu_array ) { + if ( $menu_array[2] == $parent) { + if ( current_user_can( $menu_array[1] )) + return true; + else + return false; + } + } + + return true; +} + +/* Whitelist functions */ + +/** + * Register a setting and its sanitization callback + * + * @since 2.7.0 + * + * @global array $new_whitelist_options + * + * @param string $option_group A settings group name. Should correspond to a whitelisted option key name. + * Default whitelisted option key names include "general," "discussion," and "reading," among others. + * @param string $option_name The name of an option to sanitize and save. + * @param callable $sanitize_callback A callback function that sanitizes the option's value. + */ +function register_setting( $option_group, $option_name, $sanitize_callback = '' ) { + global $new_whitelist_options; + + if ( 'misc' == $option_group ) { + _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'misc' ) ); + $option_group = 'general'; + } + + if ( 'privacy' == $option_group ) { + _deprecated_argument( __FUNCTION__, '3.5', sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'privacy' ) ); + $option_group = 'reading'; + } + + $new_whitelist_options[ $option_group ][] = $option_name; + if ( $sanitize_callback != '' ) + add_filter( "sanitize_option_{$option_name}", $sanitize_callback ); +} + +/** + * Unregister a setting + * + * @since 2.7.0 + * + * @global array $new_whitelist_options + * + * @param string $option_group + * @param string $option_name + * @param callable $sanitize_callback + */ +function unregister_setting( $option_group, $option_name, $sanitize_callback = '' ) { + global $new_whitelist_options; + + if ( 'misc' == $option_group ) { + _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'misc' ) ); + $option_group = 'general'; + } + + if ( 'privacy' == $option_group ) { + _deprecated_argument( __FUNCTION__, '3.5', sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'privacy' ) ); + $option_group = 'reading'; + } + + $pos = array_search( $option_name, (array) $new_whitelist_options[ $option_group ] ); + if ( $pos !== false ) + unset( $new_whitelist_options[ $option_group ][ $pos ] ); + if ( $sanitize_callback != '' ) + remove_filter( "sanitize_option_{$option_name}", $sanitize_callback ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @global array $new_whitelist_options + * + * @param array $options + * @return array + */ +function option_update_filter( $options ) { + global $new_whitelist_options; + + if ( is_array( $new_whitelist_options ) ) + $options = add_option_whitelist( $new_whitelist_options, $options ); + + return $options; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @global array $whitelist_options + * + * @param array $new_options + * @param string|array $options + * @return array + */ +function add_option_whitelist( $new_options, $options = '' ) { + if ( $options == '' ) + global $whitelist_options; + else + $whitelist_options = $options; + + foreach ( $new_options as $page => $keys ) { + foreach ( $keys as $key ) { + if ( !isset($whitelist_options[ $page ]) || !is_array($whitelist_options[ $page ]) ) { + $whitelist_options[ $page ] = array(); + $whitelist_options[ $page ][] = $key; + } else { + $pos = array_search( $key, $whitelist_options[ $page ] ); + if ( $pos === false ) + $whitelist_options[ $page ][] = $key; + } + } + } + + return $whitelist_options; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @global array $whitelist_options + * + * @param array $del_options + * @param string|array $options + * @return array + */ +function remove_option_whitelist( $del_options, $options = '' ) { + if ( $options == '' ) + global $whitelist_options; + else + $whitelist_options = $options; + + foreach ( $del_options as $page => $keys ) { + foreach ( $keys as $key ) { + if ( isset($whitelist_options[ $page ]) && is_array($whitelist_options[ $page ]) ) { + $pos = array_search( $key, $whitelist_options[ $page ] ); + if ( $pos !== false ) + unset( $whitelist_options[ $page ][ $pos ] ); + } + } + } + + return $whitelist_options; +} + +/** + * Output nonce, action, and option_page fields for a settings page. + * + * @since 2.7.0 + * + * @param string $option_group A settings group name. This should match the group name used in register_setting(). + */ +function settings_fields($option_group) { + echo ""; + echo ''; + wp_nonce_field("$option_group-options"); +} + +/** + * Clears the Plugins cache used by get_plugins() and by default, the Plugin Update cache. + * + * @since 3.7.0 + * + * @param bool $clear_update_cache Whether to clear the Plugin updates cache + */ +function wp_clean_plugins_cache( $clear_update_cache = true ) { + if ( $clear_update_cache ) + delete_site_transient( 'update_plugins' ); + wp_cache_delete( 'plugins', 'plugins' ); +} diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php new file mode 100644 index 0000000000..5fcceec001 --- /dev/null +++ b/wp-admin/includes/post.php @@ -0,0 +1,1768 @@ +cap->create_posts ) ) { + if ( 'page' == $post_data['post_type'] ) + return new WP_Error( 'edit_others_pages', __( 'You are not allowed to create pages as this user.' ) ); + else + return new WP_Error( 'edit_others_posts', __( 'You are not allowed to create posts as this user.' ) ); + } + + if ( isset( $post_data['content'] ) ) + $post_data['post_content'] = $post_data['content']; + + if ( isset( $post_data['excerpt'] ) ) + $post_data['post_excerpt'] = $post_data['excerpt']; + + if ( isset( $post_data['parent_id'] ) ) + $post_data['post_parent'] = (int) $post_data['parent_id']; + + if ( isset($post_data['trackback_url']) ) + $post_data['to_ping'] = $post_data['trackback_url']; + + $post_data['user_ID'] = get_current_user_id(); + + if (!empty ( $post_data['post_author_override'] ) ) { + $post_data['post_author'] = (int) $post_data['post_author_override']; + } else { + if (!empty ( $post_data['post_author'] ) ) { + $post_data['post_author'] = (int) $post_data['post_author']; + } else { + $post_data['post_author'] = (int) $post_data['user_ID']; + } + } + + if ( isset( $post_data['user_ID'] ) && ( $post_data['post_author'] != $post_data['user_ID'] ) + && ! current_user_can( $ptype->cap->edit_others_posts ) ) { + if ( $update ) { + if ( 'page' == $post_data['post_type'] ) + return new WP_Error( 'edit_others_pages', __( 'You are not allowed to edit pages as this user.' ) ); + else + return new WP_Error( 'edit_others_posts', __( 'You are not allowed to edit posts as this user.' ) ); + } else { + if ( 'page' == $post_data['post_type'] ) + return new WP_Error( 'edit_others_pages', __( 'You are not allowed to create pages as this user.' ) ); + else + return new WP_Error( 'edit_others_posts', __( 'You are not allowed to create posts as this user.' ) ); + } + } + + if ( ! empty( $post_data['post_status'] ) ) { + $post_data['post_status'] = sanitize_key( $post_data['post_status'] ); + + // No longer an auto-draft + if ( 'auto-draft' === $post_data['post_status'] ) { + $post_data['post_status'] = 'draft'; + } + + if ( ! get_post_status_object( $post_data['post_status'] ) ) { + unset( $post_data['post_status'] ); + } + } + + // What to do based on which button they pressed + if ( isset($post_data['saveasdraft']) && '' != $post_data['saveasdraft'] ) + $post_data['post_status'] = 'draft'; + if ( isset($post_data['saveasprivate']) && '' != $post_data['saveasprivate'] ) + $post_data['post_status'] = 'private'; + if ( isset($post_data['publish']) && ( '' != $post_data['publish'] ) && ( !isset($post_data['post_status']) || $post_data['post_status'] != 'private' ) ) + $post_data['post_status'] = 'publish'; + if ( isset($post_data['advanced']) && '' != $post_data['advanced'] ) + $post_data['post_status'] = 'draft'; + if ( isset($post_data['pending']) && '' != $post_data['pending'] ) + $post_data['post_status'] = 'pending'; + + if ( isset( $post_data['ID'] ) ) + $post_id = $post_data['ID']; + else + $post_id = false; + $previous_status = $post_id ? get_post_field( 'post_status', $post_id ) : false; + + if ( isset( $post_data['post_status'] ) && 'private' == $post_data['post_status'] && ! current_user_can( $ptype->cap->publish_posts ) ) { + $post_data['post_status'] = $previous_status ? $previous_status : 'pending'; + } + + $published_statuses = array( 'publish', 'future' ); + + // Posts 'submitted for approval' present are submitted to $_POST the same as if they were being published. + // Change status from 'publish' to 'pending' if user lacks permissions to publish or to resave published posts. + if ( isset($post_data['post_status']) && (in_array( $post_data['post_status'], $published_statuses ) && !current_user_can( $ptype->cap->publish_posts )) ) + if ( ! in_array( $previous_status, $published_statuses ) || !current_user_can( 'edit_post', $post_id ) ) + $post_data['post_status'] = 'pending'; + + if ( ! isset( $post_data['post_status'] ) ) { + $post_data['post_status'] = 'auto-draft' === $previous_status ? 'draft' : $previous_status; + } + + if ( isset( $post_data['post_password'] ) && ! current_user_can( $ptype->cap->publish_posts ) ) { + unset( $post_data['post_password'] ); + } + + if (!isset( $post_data['comment_status'] )) + $post_data['comment_status'] = 'closed'; + + if (!isset( $post_data['ping_status'] )) + $post_data['ping_status'] = 'closed'; + + foreach ( array('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) { + if ( !empty( $post_data['hidden_' . $timeunit] ) && $post_data['hidden_' . $timeunit] != $post_data[$timeunit] ) { + $post_data['edit_date'] = '1'; + break; + } + } + + if ( !empty( $post_data['edit_date'] ) ) { + $aa = $post_data['aa']; + $mm = $post_data['mm']; + $jj = $post_data['jj']; + $hh = $post_data['hh']; + $mn = $post_data['mn']; + $ss = $post_data['ss']; + $aa = ($aa <= 0 ) ? date('Y') : $aa; + $mm = ($mm <= 0 ) ? date('n') : $mm; + $jj = ($jj > 31 ) ? 31 : $jj; + $jj = ($jj <= 0 ) ? date('j') : $jj; + $hh = ($hh > 23 ) ? $hh -24 : $hh; + $mn = ($mn > 59 ) ? $mn -60 : $mn; + $ss = ($ss > 59 ) ? $ss -60 : $ss; + $post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss ); + $valid_date = wp_checkdate( $mm, $jj, $aa, $post_data['post_date'] ); + if ( !$valid_date ) { + return new WP_Error( 'invalid_date', __( 'Whoops, the provided date is invalid.' ) ); + } + $post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] ); + } + + return $post_data; +} + +/** + * Update an existing post with values provided in $_POST. + * + * @since 1.5.0 + * + * @global wpdb $wpdb + * + * @param array $post_data Optional. + * @return int Post ID. + */ +function edit_post( $post_data = null ) { + global $wpdb; + + if ( empty($post_data) ) + $post_data = &$_POST; + + // Clear out any data in internal vars. + unset( $post_data['filter'] ); + + $post_ID = (int) $post_data['post_ID']; + $post = get_post( $post_ID ); + $post_data['post_type'] = $post->post_type; + $post_data['post_mime_type'] = $post->post_mime_type; + + if ( ! empty( $post_data['post_status'] ) ) { + $post_data['post_status'] = sanitize_key( $post_data['post_status'] ); + + if ( 'inherit' == $post_data['post_status'] ) { + unset( $post_data['post_status'] ); + } + } + + $ptype = get_post_type_object($post_data['post_type']); + if ( !current_user_can( 'edit_post', $post_ID ) ) { + if ( 'page' == $post_data['post_type'] ) + wp_die( __('You are not allowed to edit this page.' )); + else + wp_die( __('You are not allowed to edit this post.' )); + } + + if ( post_type_supports( $ptype->name, 'revisions' ) ) { + $revisions = wp_get_post_revisions( $post_ID, array( 'order' => 'ASC', 'posts_per_page' => 1 ) ); + $revision = current( $revisions ); + + // Check if the revisions have been upgraded + if ( $revisions && _wp_get_post_revision_version( $revision ) < 1 ) + _wp_upgrade_revisions_of_post( $post, wp_get_post_revisions( $post_ID ) ); + } + + if ( isset($post_data['visibility']) ) { + switch ( $post_data['visibility'] ) { + case 'public' : + $post_data['post_password'] = ''; + break; + case 'password' : + unset( $post_data['sticky'] ); + break; + case 'private' : + $post_data['post_status'] = 'private'; + $post_data['post_password'] = ''; + unset( $post_data['sticky'] ); + break; + } + } + + $post_data = _wp_translate_postdata( true, $post_data ); + if ( is_wp_error($post_data) ) + wp_die( $post_data->get_error_message() ); + + // Post Formats + if ( isset( $post_data['post_format'] ) ) + set_post_format( $post_ID, $post_data['post_format'] ); + + $format_meta_urls = array( 'url', 'link_url', 'quote_source_url' ); + foreach ( $format_meta_urls as $format_meta_url ) { + $keyed = '_format_' . $format_meta_url; + if ( isset( $post_data[ $keyed ] ) ) + update_post_meta( $post_ID, $keyed, wp_slash( esc_url_raw( wp_unslash( $post_data[ $keyed ] ) ) ) ); + } + + $format_keys = array( 'quote', 'quote_source_name', 'image', 'gallery', 'audio_embed', 'video_embed' ); + + foreach ( $format_keys as $key ) { + $keyed = '_format_' . $key; + if ( isset( $post_data[ $keyed ] ) ) { + if ( current_user_can( 'unfiltered_html' ) ) + update_post_meta( $post_ID, $keyed, $post_data[ $keyed ] ); + else + update_post_meta( $post_ID, $keyed, wp_filter_post_kses( $post_data[ $keyed ] ) ); + } + } + + if ( 'attachment' === $post_data['post_type'] && preg_match( '#^(audio|video)/#', $post_data['post_mime_type'] ) ) { + $id3data = wp_get_attachment_metadata( $post_ID ); + if ( ! is_array( $id3data ) ) { + $id3data = array(); + } + + foreach ( wp_get_attachment_id3_keys( $post, 'edit' ) as $key => $label ) { + if ( isset( $post_data[ 'id3_' . $key ] ) ) { + $id3data[ $key ] = sanitize_text_field( wp_unslash( $post_data[ 'id3_' . $key ] ) ); + } + } + wp_update_attachment_metadata( $post_ID, $id3data ); + } + + // Meta Stuff + if ( isset($post_data['meta']) && $post_data['meta'] ) { + foreach ( $post_data['meta'] as $key => $value ) { + if ( !$meta = get_post_meta_by_id( $key ) ) + continue; + if ( $meta->post_id != $post_ID ) + continue; + if ( is_protected_meta( $value['key'], 'post' ) || ! current_user_can( 'edit_post_meta', $post_ID, $value['key'] ) ) + continue; + update_meta( $key, $value['key'], $value['value'] ); + } + } + + if ( isset($post_data['deletemeta']) && $post_data['deletemeta'] ) { + foreach ( $post_data['deletemeta'] as $key => $value ) { + if ( !$meta = get_post_meta_by_id( $key ) ) + continue; + if ( $meta->post_id != $post_ID ) + continue; + if ( is_protected_meta( $meta->meta_key, 'post' ) || ! current_user_can( 'delete_post_meta', $post_ID, $meta->meta_key ) ) + continue; + delete_meta( $key ); + } + } + + // Attachment stuff + if ( 'attachment' == $post_data['post_type'] ) { + if ( isset( $post_data[ '_wp_attachment_image_alt' ] ) ) { + $image_alt = wp_unslash( $post_data['_wp_attachment_image_alt'] ); + if ( $image_alt != get_post_meta( $post_ID, '_wp_attachment_image_alt', true ) ) { + $image_alt = wp_strip_all_tags( $image_alt, true ); + // update_meta expects slashed. + update_post_meta( $post_ID, '_wp_attachment_image_alt', wp_slash( $image_alt ) ); + } + } + + $attachment_data = isset( $post_data['attachments'][ $post_ID ] ) ? $post_data['attachments'][ $post_ID ] : array(); + + /** This filter is documented in wp-admin/includes/media.php */ + $post_data = apply_filters( 'attachment_fields_to_save', $post_data, $attachment_data ); + } + + // Convert taxonomy input to term IDs, to avoid ambiguity. + if ( isset( $post_data['tax_input'] ) ) { + foreach ( (array) $post_data['tax_input'] as $taxonomy => $terms ) { + // Hierarchical taxonomy data is already sent as term IDs, so no conversion is necessary. + if ( is_taxonomy_hierarchical( $taxonomy ) ) { + continue; + } + + /* + * Assume that a 'tax_input' string is a comma-separated list of term names. + * Some languages may use a character other than a comma as a delimiter, so we standardize on + * commas before parsing the list. + */ + if ( ! is_array( $terms ) ) { + $comma = _x( ',', 'tag delimiter' ); + if ( ',' !== $comma ) { + $terms = str_replace( $comma, ',', $terms ); + } + $terms = explode( ',', trim( $terms, " \n\t\r\0\x0B," ) ); + } + + $clean_terms = array(); + foreach ( $terms as $term ) { + // Empty terms are invalid input. + if ( empty( $term ) ) { + continue; + } + + $_term = get_terms( $taxonomy, array( + 'name' => $term, + 'fields' => 'ids', + 'hide_empty' => false, + ) ); + + if ( ! empty( $_term ) ) { + $clean_terms[] = intval( $_term[0] ); + } else { + // No existing term was found, so pass the string. A new term will be created. + $clean_terms[] = $term; + } + } + + $post_data['tax_input'][ $taxonomy ] = $clean_terms; + } + } + + add_meta( $post_ID ); + + update_post_meta( $post_ID, '_edit_last', get_current_user_id() ); + + $success = wp_update_post( $post_data ); + // If the save failed, see if we can sanity check the main fields and try again + if ( ! $success && is_callable( array( $wpdb, 'strip_invalid_text_for_column' ) ) ) { + $fields = array( 'post_title', 'post_content', 'post_excerpt' ); + + foreach( $fields as $field ) { + if ( isset( $post_data[ $field ] ) ) { + $post_data[ $field ] = $wpdb->strip_invalid_text_for_column( $wpdb->posts, $field, $post_data[ $field ] ); + } + } + + wp_update_post( $post_data ); + } + + // Now that we have an ID we can fix any attachment anchor hrefs + _fix_attachment_links( $post_ID ); + + wp_set_post_lock( $post_ID ); + + if ( current_user_can( $ptype->cap->edit_others_posts ) && current_user_can( $ptype->cap->publish_posts ) ) { + if ( ! empty( $post_data['sticky'] ) ) + stick_post( $post_ID ); + else + unstick_post( $post_ID ); + } + + return $post_ID; +} + +/** + * Process the post data for the bulk editing of posts. + * + * Updates all bulk edited posts/pages, adding (but not removing) tags and + * categories. Skips pages when they would be their own parent or child. + * + * @since 2.7.0 + * + * @global wpdb $wpdb + * + * @param array $post_data Optional, the array of post data to process if not provided will use $_POST superglobal. + * @return array + */ +function bulk_edit_posts( $post_data = null ) { + global $wpdb; + + if ( empty($post_data) ) + $post_data = &$_POST; + + if ( isset($post_data['post_type']) ) + $ptype = get_post_type_object($post_data['post_type']); + else + $ptype = get_post_type_object('post'); + + if ( !current_user_can( $ptype->cap->edit_posts ) ) { + if ( 'page' == $ptype->name ) + wp_die( __('You are not allowed to edit pages.')); + else + wp_die( __('You are not allowed to edit posts.')); + } + + if ( -1 == $post_data['_status'] ) { + $post_data['post_status'] = null; + unset($post_data['post_status']); + } else { + $post_data['post_status'] = $post_data['_status']; + } + unset($post_data['_status']); + + if ( ! empty( $post_data['post_status'] ) ) { + $post_data['post_status'] = sanitize_key( $post_data['post_status'] ); + + if ( 'inherit' == $post_data['post_status'] ) { + unset( $post_data['post_status'] ); + } + } + + $post_IDs = array_map( 'intval', (array) $post_data['post'] ); + + $reset = array( + 'post_author', 'post_status', 'post_password', + 'post_parent', 'page_template', 'comment_status', + 'ping_status', 'keep_private', 'tax_input', + 'post_category', 'sticky', 'post_format', + ); + + foreach ( $reset as $field ) { + if ( isset($post_data[$field]) && ( '' == $post_data[$field] || -1 == $post_data[$field] ) ) + unset($post_data[$field]); + } + + if ( isset($post_data['post_category']) ) { + if ( is_array($post_data['post_category']) && ! empty($post_data['post_category']) ) + $new_cats = array_map( 'absint', $post_data['post_category'] ); + else + unset($post_data['post_category']); + } + + $tax_input = array(); + if ( isset($post_data['tax_input'])) { + foreach ( $post_data['tax_input'] as $tax_name => $terms ) { + if ( empty($terms) ) + continue; + if ( is_taxonomy_hierarchical( $tax_name ) ) { + $tax_input[ $tax_name ] = array_map( 'absint', $terms ); + } else { + $comma = _x( ',', 'tag delimiter' ); + if ( ',' !== $comma ) + $terms = str_replace( $comma, ',', $terms ); + $tax_input[ $tax_name ] = explode( ',', trim( $terms, " \n\t\r\0\x0B," ) ); + } + } + } + + if ( isset($post_data['post_parent']) && ($parent = (int) $post_data['post_parent']) ) { + $pages = $wpdb->get_results("SELECT ID, post_parent FROM $wpdb->posts WHERE post_type = 'page'"); + $children = array(); + + for ( $i = 0; $i < 50 && $parent > 0; $i++ ) { + $children[] = $parent; + + foreach ( $pages as $page ) { + if ( $page->ID == $parent ) { + $parent = $page->post_parent; + break; + } + } + } + } + + $updated = $skipped = $locked = array(); + $shared_post_data = $post_data; + + foreach ( $post_IDs as $post_ID ) { + // Start with fresh post data with each iteration. + $post_data = $shared_post_data; + + $post_type_object = get_post_type_object( get_post_type( $post_ID ) ); + + if ( !isset( $post_type_object ) || ( isset($children) && in_array($post_ID, $children) ) || !current_user_can( 'edit_post', $post_ID ) ) { + $skipped[] = $post_ID; + continue; + } + + if ( wp_check_post_lock( $post_ID ) ) { + $locked[] = $post_ID; + continue; + } + + $post = get_post( $post_ID ); + $tax_names = get_object_taxonomies( $post ); + foreach ( $tax_names as $tax_name ) { + $taxonomy_obj = get_taxonomy($tax_name); + if ( isset( $tax_input[$tax_name]) && current_user_can( $taxonomy_obj->cap->assign_terms ) ) + $new_terms = $tax_input[$tax_name]; + else + $new_terms = array(); + + if ( $taxonomy_obj->hierarchical ) + $current_terms = (array) wp_get_object_terms( $post_ID, $tax_name, array('fields' => 'ids') ); + else + $current_terms = (array) wp_get_object_terms( $post_ID, $tax_name, array('fields' => 'names') ); + + $post_data['tax_input'][$tax_name] = array_merge( $current_terms, $new_terms ); + } + + if ( isset($new_cats) && in_array( 'category', $tax_names ) ) { + $cats = (array) wp_get_post_categories($post_ID); + $post_data['post_category'] = array_unique( array_merge($cats, $new_cats) ); + unset( $post_data['tax_input']['category'] ); + } + + $post_data['post_type'] = $post->post_type; + $post_data['post_mime_type'] = $post->post_mime_type; + $post_data['guid'] = $post->guid; + + foreach ( array( 'comment_status', 'ping_status', 'post_author' ) as $field ) { + if ( ! isset( $post_data[ $field ] ) ) { + $post_data[ $field ] = $post->$field; + } + } + + $post_data['ID'] = $post_ID; + $post_data['post_ID'] = $post_ID; + + $post_data = _wp_translate_postdata( true, $post_data ); + if ( is_wp_error( $post_data ) ) { + $skipped[] = $post_ID; + continue; + } + + $updated[] = wp_update_post( $post_data ); + + if ( isset( $post_data['sticky'] ) && current_user_can( $ptype->cap->edit_others_posts ) ) { + if ( 'sticky' == $post_data['sticky'] ) + stick_post( $post_ID ); + else + unstick_post( $post_ID ); + } + + if ( isset( $post_data['post_format'] ) ) + set_post_format( $post_ID, $post_data['post_format'] ); + } + + return array( 'updated' => $updated, 'skipped' => $skipped, 'locked' => $locked ); +} + +/** + * Default post information to use when populating the "Write Post" form. + * + * @since 2.0.0 + * + * @param string $post_type A post type string, defaults to 'post'. + * @return WP_Post Post object containing all the default post data as attributes + */ +function get_default_post_to_edit( $post_type = 'post', $create_in_db = false ) { + $post_title = ''; + if ( !empty( $_REQUEST['post_title'] ) ) + $post_title = esc_html( wp_unslash( $_REQUEST['post_title'] )); + + $post_content = ''; + if ( !empty( $_REQUEST['content'] ) ) + $post_content = esc_html( wp_unslash( $_REQUEST['content'] )); + + $post_excerpt = ''; + if ( !empty( $_REQUEST['excerpt'] ) ) + $post_excerpt = esc_html( wp_unslash( $_REQUEST['excerpt'] )); + + if ( $create_in_db ) { + $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) ); + $post = get_post( $post_id ); + if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) ) + set_post_format( $post, get_option( 'default_post_format' ) ); + } else { + $post = new stdClass; + $post->ID = 0; + $post->post_author = ''; + $post->post_date = ''; + $post->post_date_gmt = ''; + $post->post_password = ''; + $post->post_name = ''; + $post->post_type = $post_type; + $post->post_status = 'draft'; + $post->to_ping = ''; + $post->pinged = ''; + $post->comment_status = get_default_comment_status( $post_type ); + $post->ping_status = get_default_comment_status( $post_type, 'pingback' ); + $post->post_pingback = get_option( 'default_pingback_flag' ); + $post->post_category = get_option( 'default_category' ); + $post->page_template = 'default'; + $post->post_parent = 0; + $post->menu_order = 0; + $post = new WP_Post( $post ); + } + + /** + * Filter the default post content initially used in the "Write Post" form. + * + * @since 1.5.0 + * + * @param string $post_content Default post content. + * @param WP_Post $post Post object. + */ + $post->post_content = apply_filters( 'default_content', $post_content, $post ); + + /** + * Filter the default post title initially used in the "Write Post" form. + * + * @since 1.5.0 + * + * @param string $post_title Default post title. + * @param WP_Post $post Post object. + */ + $post->post_title = apply_filters( 'default_title', $post_title, $post ); + + /** + * Filter the default post excerpt initially used in the "Write Post" form. + * + * @since 1.5.0 + * + * @param string $post_excerpt Default post excerpt. + * @param WP_Post $post Post object. + */ + $post->post_excerpt = apply_filters( 'default_excerpt', $post_excerpt, $post ); + + return $post; +} + +/** + * Determine if a post exists based on title, content, and date + * + * @since 2.0.0 + * + * @global wpdb $wpdb + * + * @param string $title Post title + * @param string $content Optional post content + * @param string $date Optional post date + * @return int Post ID if post exists, 0 otherwise. + */ +function post_exists($title, $content = '', $date = '') { + global $wpdb; + + $post_title = wp_unslash( sanitize_post_field( 'post_title', $title, 0, 'db' ) ); + $post_content = wp_unslash( sanitize_post_field( 'post_content', $content, 0, 'db' ) ); + $post_date = wp_unslash( sanitize_post_field( 'post_date', $date, 0, 'db' ) ); + + $query = "SELECT ID FROM $wpdb->posts WHERE 1=1"; + $args = array(); + + if ( !empty ( $date ) ) { + $query .= ' AND post_date = %s'; + $args[] = $post_date; + } + + if ( !empty ( $title ) ) { + $query .= ' AND post_title = %s'; + $args[] = $post_title; + } + + if ( !empty ( $content ) ) { + $query .= 'AND post_content = %s'; + $args[] = $post_content; + } + + if ( !empty ( $args ) ) + return (int) $wpdb->get_var( $wpdb->prepare($query, $args) ); + + return 0; +} + +/** + * Creates a new post from the "Write Post" form using $_POST information. + * + * @since 2.1.0 + * + * @global WP_User $current_user + * + * @return int|WP_Error + */ +function wp_write_post() { + if ( isset($_POST['post_type']) ) + $ptype = get_post_type_object($_POST['post_type']); + else + $ptype = get_post_type_object('post'); + + if ( !current_user_can( $ptype->cap->edit_posts ) ) { + if ( 'page' == $ptype->name ) + return new WP_Error( 'edit_pages', __( 'You are not allowed to create pages on this site.' ) ); + else + return new WP_Error( 'edit_posts', __( 'You are not allowed to create posts or drafts on this site.' ) ); + } + + $_POST['post_mime_type'] = ''; + + // Clear out any data in internal vars. + unset( $_POST['filter'] ); + + // Edit don't write if we have a post id. + if ( isset( $_POST['post_ID'] ) ) + return edit_post(); + + if ( isset($_POST['visibility']) ) { + switch ( $_POST['visibility'] ) { + case 'public' : + $_POST['post_password'] = ''; + break; + case 'password' : + unset( $_POST['sticky'] ); + break; + case 'private' : + $_POST['post_status'] = 'private'; + $_POST['post_password'] = ''; + unset( $_POST['sticky'] ); + break; + } + } + + $translated = _wp_translate_postdata( false ); + if ( is_wp_error($translated) ) + return $translated; + + // Create the post. + $post_ID = wp_insert_post( $_POST ); + if ( is_wp_error( $post_ID ) ) + return $post_ID; + + if ( empty($post_ID) ) + return 0; + + add_meta( $post_ID ); + + add_post_meta( $post_ID, '_edit_last', $GLOBALS['current_user']->ID ); + + // Now that we have an ID we can fix any attachment anchor hrefs + _fix_attachment_links( $post_ID ); + + wp_set_post_lock( $post_ID ); + + return $post_ID; +} + +/** + * Calls wp_write_post() and handles the errors. + * + * @since 2.0.0 + * + * @return int|null + */ +function write_post() { + $result = wp_write_post(); + if ( is_wp_error( $result ) ) + wp_die( $result->get_error_message() ); + else + return $result; +} + +// +// Post Meta +// + +/** + * Add post meta data defined in $_POST superglobal for post with given ID. + * + * @since 1.2.0 + * + * @param int $post_ID + * @return int|bool + */ +function add_meta( $post_ID ) { + $post_ID = (int) $post_ID; + + $metakeyselect = isset($_POST['metakeyselect']) ? wp_unslash( trim( $_POST['metakeyselect'] ) ) : ''; + $metakeyinput = isset($_POST['metakeyinput']) ? wp_unslash( trim( $_POST['metakeyinput'] ) ) : ''; + $metavalue = isset($_POST['metavalue']) ? $_POST['metavalue'] : ''; + if ( is_string( $metavalue ) ) + $metavalue = trim( $metavalue ); + + if ( ('0' === $metavalue || ! empty ( $metavalue ) ) && ( ( ( '#NONE#' != $metakeyselect ) && !empty ( $metakeyselect) ) || !empty ( $metakeyinput ) ) ) { + /* + * We have a key/value pair. If both the select and the input + * for the key have data, the input takes precedence. + */ + if ( '#NONE#' != $metakeyselect ) + $metakey = $metakeyselect; + + if ( $metakeyinput ) + $metakey = $metakeyinput; // default + + if ( is_protected_meta( $metakey, 'post' ) || ! current_user_can( 'add_post_meta', $post_ID, $metakey ) ) + return false; + + $metakey = wp_slash( $metakey ); + + return add_post_meta( $post_ID, $metakey, $metavalue ); + } + + return false; +} // add_meta + +/** + * Delete post meta data by meta ID. + * + * @since 1.2.0 + * + * @param int $mid + * @return bool + */ +function delete_meta( $mid ) { + return delete_metadata_by_mid( 'post' , $mid ); +} + +/** + * Get a list of previously defined keys. + * + * @since 1.2.0 + * + * @global wpdb $wpdb + * + * @return mixed + */ +function get_meta_keys() { + global $wpdb; + + $keys = $wpdb->get_col( " + SELECT meta_key + FROM $wpdb->postmeta + GROUP BY meta_key + ORDER BY meta_key" ); + + return $keys; +} + +/** + * Get post meta data by meta ID. + * + * @since 2.1.0 + * + * @param int $mid + * @return object|bool + */ +function get_post_meta_by_id( $mid ) { + return get_metadata_by_mid( 'post', $mid ); +} + +/** + * Get meta data for the given post ID. + * + * @since 1.2.0 + * + * @global wpdb $wpdb + * + * @param int $postid + * @return mixed + */ +function has_meta( $postid ) { + global $wpdb; + + return $wpdb->get_results( $wpdb->prepare("SELECT meta_key, meta_value, meta_id, post_id + FROM $wpdb->postmeta WHERE post_id = %d + ORDER BY meta_key,meta_id", $postid), ARRAY_A ); +} + +/** + * Update post meta data by meta ID. + * + * @since 1.2.0 + * + * @param int $meta_id + * @param string $meta_key Expect Slashed + * @param string $meta_value Expect Slashed + * @return bool + */ +function update_meta( $meta_id, $meta_key, $meta_value ) { + $meta_key = wp_unslash( $meta_key ); + $meta_value = wp_unslash( $meta_value ); + + return update_metadata_by_mid( 'post', $meta_id, $meta_value, $meta_key ); +} + +// +// Private +// + +/** + * Replace hrefs of attachment anchors with up-to-date permalinks. + * + * @since 2.3.0 + * @access private + * + * @param int|object $post Post ID or post object. + * @return void|int|WP_Error Void if nothing fixed. 0 or WP_Error on update failure. The post ID on update success. + */ +function _fix_attachment_links( $post ) { + $post = get_post( $post, ARRAY_A ); + $content = $post['post_content']; + + // Don't run if no pretty permalinks or post is not published, scheduled, or privately published. + if ( ! get_option( 'permalink_structure' ) || ! in_array( $post['post_status'], array( 'publish', 'future', 'private' ) ) ) + return; + + // Short if there aren't any links or no '?attachment_id=' strings (strpos cannot be zero) + if ( !strpos($content, '?attachment_id=') || !preg_match_all( '/]+)>[\s\S]+?<\/a>/', $content, $link_matches ) ) + return; + + $site_url = get_bloginfo('url'); + $site_url = substr( $site_url, (int) strpos($site_url, '://') ); // remove the http(s) + $replace = ''; + + foreach ( $link_matches[1] as $key => $value ) { + if ( !strpos($value, '?attachment_id=') || !strpos($value, 'wp-att-') + || !preg_match( '/href=(["\'])[^"\']*\?attachment_id=(\d+)[^"\']*\\1/', $value, $url_match ) + || !preg_match( '/rel=["\'][^"\']*wp-att-(\d+)/', $value, $rel_match ) ) + continue; + + $quote = $url_match[1]; // the quote (single or double) + $url_id = (int) $url_match[2]; + $rel_id = (int) $rel_match[1]; + + if ( !$url_id || !$rel_id || $url_id != $rel_id || strpos($url_match[0], $site_url) === false ) + continue; + + $link = $link_matches[0][$key]; + $replace = str_replace( $url_match[0], 'href=' . $quote . get_attachment_link( $url_id ) . $quote, $link ); + + $content = str_replace( $link, $replace, $content ); + } + + if ( $replace ) { + $post['post_content'] = $content; + // Escape data pulled from DB. + $post = add_magic_quotes($post); + + return wp_update_post($post); + } +} + +/** + * Get all the possible statuses for a post_type + * + * @since 2.5.0 + * + * @param string $type The post_type you want the statuses for + * @return array As array of all the statuses for the supplied post type + */ +function get_available_post_statuses($type = 'post') { + $stati = wp_count_posts($type); + + return array_keys(get_object_vars($stati)); +} + +/** + * Run the wp query to fetch the posts for listing on the edit posts page + * + * @since 2.5.0 + * + * @param array|bool $q Array of query variables to use to build the query or false to use $_GET superglobal. + * @return array + */ +function wp_edit_posts_query( $q = false ) { + if ( false === $q ) + $q = $_GET; + $q['m'] = isset($q['m']) ? (int) $q['m'] : 0; + $q['cat'] = isset($q['cat']) ? (int) $q['cat'] : 0; + $post_stati = get_post_stati(); + + if ( isset($q['post_type']) && in_array( $q['post_type'], get_post_types() ) ) + $post_type = $q['post_type']; + else + $post_type = 'post'; + + $avail_post_stati = get_available_post_statuses($post_type); + + if ( isset($q['post_status']) && in_array( $q['post_status'], $post_stati ) ) { + $post_status = $q['post_status']; + $perm = 'readable'; + } + + if ( isset($q['orderby']) ) + $orderby = $q['orderby']; + elseif ( isset($q['post_status']) && in_array($q['post_status'], array('pending', 'draft')) ) + $orderby = 'modified'; + + if ( isset($q['order']) ) + $order = $q['order']; + elseif ( isset($q['post_status']) && 'pending' == $q['post_status'] ) + $order = 'ASC'; + + $per_page = "edit_{$post_type}_per_page"; + $posts_per_page = (int) get_user_option( $per_page ); + if ( empty( $posts_per_page ) || $posts_per_page < 1 ) + $posts_per_page = 20; + + /** + * Filter the number of items per page to show for a specific 'per_page' type. + * + * The dynamic portion of the hook name, `$post_type`, refers to the post type. + * + * Some examples of filter hooks generated here include: 'edit_attachment_per_page', + * 'edit_post_per_page', 'edit_page_per_page', etc. + * + * @since 3.0.0 + * + * @param int $posts_per_page Number of posts to display per page for the given post + * type. Default 20. + */ + $posts_per_page = apply_filters( "edit_{$post_type}_per_page", $posts_per_page ); + + /** + * Filter the number of posts displayed per page when specifically listing "posts". + * + * @since 2.8.0 + * + * @param int $posts_per_page Number of posts to be displayed. Default 20. + * @param string $post_type The post type. + */ + $posts_per_page = apply_filters( 'edit_posts_per_page', $posts_per_page, $post_type ); + + $query = compact('post_type', 'post_status', 'perm', 'order', 'orderby', 'posts_per_page'); + + // Hierarchical types require special args. + if ( is_post_type_hierarchical( $post_type ) && !isset($orderby) ) { + $query['orderby'] = 'menu_order title'; + $query['order'] = 'asc'; + $query['posts_per_page'] = -1; + $query['posts_per_archive_page'] = -1; + $query['fields'] = 'id=>parent'; + } + + if ( ! empty( $q['show_sticky'] ) ) + $query['post__in'] = (array) get_option( 'sticky_posts' ); + + wp( $query ); + + return $avail_post_stati; +} + +/** + * Get all available post MIME types for a given post type. + * + * @since 2.5.0 + * + * @global wpdb $wpdb + * + * @param string $type + * @return mixed + */ +function get_available_post_mime_types($type = 'attachment') { + global $wpdb; + + $types = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT post_mime_type FROM $wpdb->posts WHERE post_type = %s", $type)); + return $types; +} + +/** + * Get the query variables for the current attachments request. + * + * @since 4.2.0 + * + * @param array|false $q Optional. Array of query variables to use to build the query or false + * to use $_GET superglobal. Default false. + * @return array The parsed query vars. + */ +function wp_edit_attachments_query_vars( $q = false ) { + if ( false === $q ) { + $q = $_GET; + } + $q['m'] = isset( $q['m'] ) ? (int) $q['m'] : 0; + $q['cat'] = isset( $q['cat'] ) ? (int) $q['cat'] : 0; + $q['post_type'] = 'attachment'; + $post_type = get_post_type_object( 'attachment' ); + $states = 'inherit'; + if ( current_user_can( $post_type->cap->read_private_posts ) ) { + $states .= ',private'; + } + + $q['post_status'] = isset( $q['status'] ) && 'trash' == $q['status'] ? 'trash' : $states; + $q['post_status'] = isset( $q['attachment-filter'] ) && 'trash' == $q['attachment-filter'] ? 'trash' : $states; + + $media_per_page = (int) get_user_option( 'upload_per_page' ); + if ( empty( $media_per_page ) || $media_per_page < 1 ) { + $media_per_page = 20; + } + + /** + * Filter the number of items to list per page when listing media items. + * + * @since 2.9.0 + * + * @param int $media_per_page Number of media to list. Default 20. + */ + $q['posts_per_page'] = apply_filters( 'upload_per_page', $media_per_page ); + + $post_mime_types = get_post_mime_types(); + if ( isset($q['post_mime_type']) && !array_intersect( (array) $q['post_mime_type'], array_keys($post_mime_types) ) ) { + unset($q['post_mime_type']); + } + + foreach( array_keys( $post_mime_types ) as $type ) { + if ( isset( $q['attachment-filter'] ) && "post_mime_type:$type" == $q['attachment-filter'] ) { + $q['post_mime_type'] = $type; + break; + } + } + + if ( isset( $q['detached'] ) || ( isset( $q['attachment-filter'] ) && 'detached' == $q['attachment-filter'] ) ) { + $q['post_parent'] = 0; + } + + return $q; +} + +/** + * Executes a query for attachments. An array of WP_Query arguments + * can be passed in, which will override the arguments set by this function. + * + * @since 2.5.0 + * + * @param array|false $q Array of query variables to use to build the query or false to use $_GET superglobal. + * @return array + */ +function wp_edit_attachments_query( $q = false ) { + wp( wp_edit_attachments_query_vars( $q ) ); + + $post_mime_types = get_post_mime_types(); + $avail_post_mime_types = get_available_post_mime_types( 'attachment' ); + + return array( $post_mime_types, $avail_post_mime_types ); +} + +/** + * Returns the list of classes to be used by a metabox + * + * @since 2.5.0 + * + * @param string $id + * @param string $page + * @return string + */ +function postbox_classes( $id, $page ) { + if ( isset( $_GET['edit'] ) && $_GET['edit'] == $id ) { + $classes = array( '' ); + } elseif ( $closed = get_user_option('closedpostboxes_'.$page ) ) { + if ( !is_array( $closed ) ) { + $classes = array( '' ); + } else { + $classes = in_array( $id, $closed ) ? array( 'closed' ) : array( '' ); + } + } else { + $classes = array( '' ); + } + + /** + * Filter the postbox classes for a specific screen and screen ID combo. + * + * The dynamic portions of the hook name, `$page` and `$id`, refer to + * the screen and screen ID, respectively. + * + * @since 3.2.0 + * + * @param array $classes An array of postbox classes. + */ + $classes = apply_filters( "postbox_classes_{$page}_{$id}", $classes ); + return implode( ' ', $classes ); +} + +/** + * Get a sample permalink based off of the post name. + * + * @since 2.5.0 + * + * @param int $id Post ID or post object. + * @param string $title Optional. Title. Default null. + * @param string $name Optional. Name. Default null. + * @return array Array with two entries of type string. + */ +function get_sample_permalink($id, $title = null, $name = null) { + $post = get_post( $id ); + if ( ! $post ) + return array( '', '' ); + + $ptype = get_post_type_object($post->post_type); + + $original_status = $post->post_status; + $original_date = $post->post_date; + $original_name = $post->post_name; + + // Hack: get_permalink() would return ugly permalink for drafts, so we will fake that our post is published. + if ( in_array( $post->post_status, array( 'draft', 'pending', 'future' ) ) ) { + $post->post_status = 'publish'; + $post->post_name = sanitize_title($post->post_name ? $post->post_name : $post->post_title, $post->ID); + } + + // If the user wants to set a new name -- override the current one + // Note: if empty name is supplied -- use the title instead, see #6072 + if ( !is_null($name) ) + $post->post_name = sanitize_title($name ? $name : $title, $post->ID); + + $post->post_name = wp_unique_post_slug($post->post_name, $post->ID, $post->post_status, $post->post_type, $post->post_parent); + + $post->filter = 'sample'; + + $permalink = get_permalink($post, true); + + // Replace custom post_type Token with generic pagename token for ease of use. + $permalink = str_replace("%$post->post_type%", '%pagename%', $permalink); + + // Handle page hierarchy + if ( $ptype->hierarchical ) { + $uri = get_page_uri($post); + if ( $uri ) { + $uri = untrailingslashit($uri); + $uri = strrev( stristr( strrev( $uri ), '/' ) ); + $uri = untrailingslashit($uri); + } + + /** This filter is documented in wp-admin/edit-tag-form.php */ + $uri = apply_filters( 'editable_slug', $uri ); + if ( !empty($uri) ) + $uri .= '/'; + $permalink = str_replace('%pagename%', "{$uri}%pagename%", $permalink); + } + + /** This filter is documented in wp-admin/edit-tag-form.php */ + $permalink = array( $permalink, apply_filters( 'editable_slug', $post->post_name ) ); + $post->post_status = $original_status; + $post->post_date = $original_date; + $post->post_name = $original_name; + unset($post->filter); + + return $permalink; +} + +/** + * Returns the HTML of the sample permalink slug editor. + * + * @since 2.5.0 + * + * @param int $id Post ID or post object. + * @param string $new_title Optional. New title. Default null. + * @param string $new_slug Optional. New slug. Default null. + * @return string The HTML of the sample permalink slug editor. + */ +function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) { + $post = get_post( $id ); + if ( ! $post ) + return ''; + + list($permalink, $post_name) = get_sample_permalink($post->ID, $new_title, $new_slug); + + if ( current_user_can( 'read_post', $post->ID ) ) { + $ptype = get_post_type_object( $post->post_type ); + $view_post = $ptype->labels->view_item; + } + + if ( 'publish' == get_post_status( $post ) ) { + $title = __('Click to edit this part of the permalink'); + } else { + $title = __('Temporary permalink. Click to edit this part.'); + } + + if ( false === strpos( $permalink, '%postname%' ) && false === strpos( $permalink, '%pagename%' ) ) { + $return = '' . __('Permalink:') . "\n" . '' . $permalink . "\n"; + if ( '' == get_option( 'permalink_structure' ) && current_user_can( 'manage_options' ) && !( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') ) ) { + $return .= '' . __('Change Permalinks') . "\n"; + } + } else { + if ( function_exists( 'mb_strlen' ) ) { + if ( mb_strlen( $post_name ) > 30 ) { + $post_name_abridged = mb_substr( $post_name, 0, 14 ) . '…' . mb_substr( $post_name, -14 ); + } else { + $post_name_abridged = $post_name; + } + } else { + if ( strlen( $post_name ) > 30 ) { + $post_name_abridged = substr( $post_name, 0, 14 ) . '…' . substr( $post_name, -14 ); + } else { + $post_name_abridged = $post_name; + } + } + + $post_name_html = '' . $post_name_abridged . ''; + $display_link = str_replace( array( '%pagename%', '%postname%' ), $post_name_html, urldecode( $permalink ) ); + $pretty_permalink = str_replace( array( '%pagename%', '%postname%' ), $post_name, urldecode( $permalink ) ); + + $return = '' . __( 'Permalink:' ) . "\n"; + $return .= '' . $display_link . "\n"; + $return .= '‎'; // Fix bi-directional text display defect in RTL languages. + $return .= '' . __( 'Edit' ) . "\n"; + $return .= '' . $post_name . "\n"; + } + + if ( isset( $view_post ) ) { + if ( 'draft' == $post->post_status ) { + $preview_link = set_url_scheme( get_permalink( $post->ID ) ); + /** This filter is documented in wp-admin/includes/meta-boxes.php */ + $preview_link = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post ); + $return .= "$view_post\n"; + } else { + if ( empty( $pretty_permalink ) ) { + $pretty_permalink = $permalink; + } + + $return .= "$view_post\n"; + } + } + + /** + * Filter the sample permalink HTML markup. + * + * @since 2.9.0 + * + * @param string $return Sample permalink HTML markup. + * @param int|WP_Post $id Post object or ID. + * @param string $new_title New sample permalink title. + * @param string $new_slug New sample permalink slug. + */ + $return = apply_filters( 'get_sample_permalink_html', $return, $id, $new_title, $new_slug ); + + return $return; +} + +/** + * Output HTML for the post thumbnail meta-box. + * + * @since 2.9.0 + * + * @global int $content_width + * @global array $_wp_additional_image_sizes + * + * @param int $thumbnail_id ID of the attachment used for thumbnail + * @param mixed $post The post ID or object associated with the thumbnail, defaults to global $post. + * @return string html + */ +function _wp_post_thumbnail_html( $thumbnail_id = null, $post = null ) { + global $content_width, $_wp_additional_image_sizes; + + $post = get_post( $post ); + $post_type_object = get_post_type_object( $post->post_type ); + $set_thumbnail_link = '

    %s

    '; + $upload_iframe_src = get_upload_iframe_src( 'image', $post->ID ); + + $content = sprintf( $set_thumbnail_link, + esc_attr( $post_type_object->labels->set_featured_image ), + esc_url( $upload_iframe_src ), + esc_html( $post_type_object->labels->set_featured_image ) + ); + + if ( $thumbnail_id && get_post( $thumbnail_id ) ) { + $old_content_width = $content_width; + $content_width = 266; + if ( !isset( $_wp_additional_image_sizes['post-thumbnail'] ) ) + $thumbnail_html = wp_get_attachment_image( $thumbnail_id, array( $content_width, $content_width ) ); + else + $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'post-thumbnail' ); + if ( !empty( $thumbnail_html ) ) { + $ajax_nonce = wp_create_nonce( 'set_post_thumbnail-' . $post->ID ); + $content = sprintf( $set_thumbnail_link, + esc_attr( $post_type_object->labels->set_featured_image ), + esc_url( $upload_iframe_src ), + $thumbnail_html + ); + $content .= '

    ' . esc_html( $post_type_object->labels->remove_featured_image ) . '

    '; + } + $content_width = $old_content_width; + } + + /** + * Filter the admin post thumbnail HTML markup to return. + * + * @since 2.9.0 + * + * @param string $content Admin post thumbnail HTML markup. + * @param int $post_id Post ID. + */ + return apply_filters( 'admin_post_thumbnail_html', $content, $post->ID ); +} + +/** + * Check to see if the post is currently being edited by another user. + * + * @since 2.5.0 + * + * @param int $post_id ID of the post to check for editing + * @return integer False: not locked or locked by current user. Int: user ID of user with lock. + */ +function wp_check_post_lock( $post_id ) { + if ( !$post = get_post( $post_id ) ) + return false; + + if ( !$lock = get_post_meta( $post->ID, '_edit_lock', true ) ) + return false; + + $lock = explode( ':', $lock ); + $time = $lock[0]; + $user = isset( $lock[1] ) ? $lock[1] : get_post_meta( $post->ID, '_edit_last', true ); + + /** This filter is documented in wp-admin/includes/ajax-actions.php */ + $time_window = apply_filters( 'wp_check_post_lock_window', 150 ); + + if ( $time && $time > time() - $time_window && $user != get_current_user_id() ) + return $user; + return false; +} + +/** + * Mark the post as currently being edited by the current user + * + * @since 2.5.0 + * + * @param int $post_id ID of the post to being edited + * @return bool|array Returns false if the post doesn't exist of there is no current user, or + * an array of the lock time and the user ID. + */ +function wp_set_post_lock( $post_id ) { + if ( !$post = get_post( $post_id ) ) + return false; + if ( 0 == ($user_id = get_current_user_id()) ) + return false; + + $now = time(); + $lock = "$now:$user_id"; + + update_post_meta( $post->ID, '_edit_lock', $lock ); + return array( $now, $user_id ); +} + +/** + * Outputs the HTML for the notice to say that someone else is editing or has taken over editing of this post. + * + * @since 2.8.5 + * @return none + */ +function _admin_notice_post_locked() { + if ( ! $post = get_post() ) + return; + + $user = null; + if ( $user_id = wp_check_post_lock( $post->ID ) ) + $user = get_userdata( $user_id ); + + if ( $user ) { + + /** + * Filter whether to show the post locked dialog. + * + * Returning a falsey value to the filter will short-circuit displaying the dialog. + * + * @since 3.6.0 + * + * @param bool $display Whether to display the dialog. Default true. + * @param WP_User|bool $user WP_User object on success, false otherwise. + */ + if ( ! apply_filters( 'show_post_locked_dialog', true, $post, $user ) ) + return; + + $locked = true; + } else { + $locked = false; + } + + if ( $locked && ( $sendback = wp_get_referer() ) && + false === strpos( $sendback, 'post.php' ) && false === strpos( $sendback, 'post-new.php' ) ) { + + $sendback_text = __('Go back'); + } else { + $sendback = admin_url( 'edit.php' ); + + if ( 'post' != $post->post_type ) + $sendback = add_query_arg( 'post_type', $post->post_type, $sendback ); + + $sendback_text = get_post_type_object( $post->post_type )->labels->all_items; + } + + $hidden = $locked ? '' : ' hidden'; + + ?> +
    +
    +
    + post_type )->public ) { + $preview_link = set_url_scheme( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) ); + + if ( 'publish' == $post->post_status || $user->ID != $post->post_author ) { + // Latest content is in autosave + $nonce = wp_create_nonce( 'post_preview_' . $post->ID ); + $preview_link = add_query_arg( array( 'preview_id' => $post->ID, 'preview_nonce' => $nonce ), $preview_link ); + } + } else { + $preview_link = ''; + } + + /** This filter is documented in wp-admin/includes/meta-boxes.php */ + $preview_link = apply_filters( 'preview_post_link', $preview_link, $post ); + + /** + * Filter whether to allow the post lock to be overridden. + * + * Returning a falsey value to the filter will disable the ability + * to override the post lock. + * + * @since 3.6.0 + * + * @param bool $override Whether to allow overriding post locks. Default true. + * @param WP_Post $post Post object. + * @param WP_User $user User object. + */ + $override = apply_filters( 'override_post_lock', true, $post, $user ); + $tab_last = $override ? '' : ' wp-tab-last'; + + ?> +
    +
    ID, 64 ); ?>
    +

    + display_name ) ); + ?> +

    + +

    + + + + + + +

    +
    + +
    +
    +

    +
    + + +

    + +

    +
    + +
    +
    + ID; + $new_autosave['post_author'] = $post_author; + + // If the new autosave has the same content as the post, delete the autosave. + $post = get_post( $post_id ); + $autosave_is_different = false; + foreach ( array_intersect( array_keys( $new_autosave ), array_keys( _wp_post_revision_fields() ) ) as $field ) { + if ( normalize_whitespace( $new_autosave[ $field ] ) != normalize_whitespace( $post->$field ) ) { + $autosave_is_different = true; + break; + } + } + + if ( ! $autosave_is_different ) { + wp_delete_post_revision( $old_autosave->ID ); + return 0; + } + + /** + * Fires before an autosave is stored. + * + * @since 4.1.0 + * + * @param array $new_autosave Post array - the autosave that is about to be saved. + */ + do_action( 'wp_creating_autosave', $new_autosave ); + + return wp_update_post( $new_autosave ); + } + + // _wp_put_post_revision() expects unescaped. + $post_data = wp_unslash( $post_data ); + + // Otherwise create the new autosave as a special post revision + return _wp_put_post_revision( $post_data, true ); +} + +/** + * Save draft or manually autosave for showing preview. + * + * @package WordPress + * @since 2.7.0 + * + * @return str URL to redirect to show the preview + */ +function post_preview() { + + $post_ID = (int) $_POST['post_ID']; + $_POST['ID'] = $post_ID; + + if ( ! $post = get_post( $post_ID ) ) { + wp_die( __( 'You are not allowed to edit this post.' ) ); + } + + if ( ! current_user_can( 'edit_post', $post->ID ) ) { + wp_die( __( 'You are not allowed to edit this post.' ) ); + } + + $is_autosave = false; + + if ( ! wp_check_post_lock( $post->ID ) && get_current_user_id() == $post->post_author && ( 'draft' == $post->post_status || 'auto-draft' == $post->post_status ) ) { + $saved_post_id = edit_post(); + } else { + $is_autosave = true; + + if ( isset( $_POST['post_status'] ) && 'auto-draft' == $_POST['post_status'] ) + $_POST['post_status'] = 'draft'; + + $saved_post_id = wp_create_post_autosave( $post->ID ); + } + + if ( is_wp_error( $saved_post_id ) ) + wp_die( $saved_post_id->get_error_message() ); + + $query_args = array( 'preview' => 'true' ); + + if ( $is_autosave && $saved_post_id ) { + $query_args['preview_id'] = $post->ID; + $query_args['preview_nonce'] = wp_create_nonce( 'post_preview_' . $post->ID ); + + if ( isset( $_POST['post_format'] ) ) + $query_args['post_format'] = empty( $_POST['post_format'] ) ? 'standard' : sanitize_key( $_POST['post_format'] ); + } + + $url = add_query_arg( $query_args, get_permalink( $post->ID ) ); + + /** This filter is documented in wp-admin/includes/meta-boxes.php */ + return apply_filters( 'preview_post_link', $url, $post ); +} + +/** + * Save a post submitted with XHR + * + * Intended for use with heartbeat and autosave.js + * + * @since 3.9.0 + * + * @param array $post_data Associative array of the submitted post data. + * @return mixed The value 0 or WP_Error on failure. The saved post ID on success. + * Te ID can be the draft post_id or the autosave revision post_id. + */ +function wp_autosave( $post_data ) { + // Back-compat + if ( ! defined( 'DOING_AUTOSAVE' ) ) + define( 'DOING_AUTOSAVE', true ); + + $post_id = (int) $post_data['post_id']; + $post_data['ID'] = $post_data['post_ID'] = $post_id; + + if ( false === wp_verify_nonce( $post_data['_wpnonce'], 'update-post_' . $post_id ) ) { + return new WP_Error( 'invalid_nonce', __( 'Error while saving.' ) ); + } + + $post = get_post( $post_id ); + + if ( ! current_user_can( 'edit_post', $post->ID ) ) { + return new WP_Error( 'edit_posts', __( 'You are not allowed to edit this item.' ) ); + } + + if ( 'auto-draft' == $post->post_status ) + $post_data['post_status'] = 'draft'; + + if ( $post_data['post_type'] != 'page' && ! empty( $post_data['catslist'] ) ) + $post_data['post_category'] = explode( ',', $post_data['catslist'] ); + + if ( ! wp_check_post_lock( $post->ID ) && get_current_user_id() == $post->post_author && ( 'auto-draft' == $post->post_status || 'draft' == $post->post_status ) ) { + // Drafts and auto-drafts are just overwritten by autosave for the same user if the post is not locked + return edit_post( wp_slash( $post_data ) ); + } else { + // Non drafts or other users drafts are not overwritten. The autosave is stored in a special post revision for each user. + return wp_create_post_autosave( wp_slash( $post_data ) ); + } +} diff --git a/wp-admin/includes/revision.php b/wp-admin/includes/revision.php new file mode 100644 index 0000000000..67bb56c761 --- /dev/null +++ b/wp-admin/includes/revision.php @@ -0,0 +1,378 @@ +post_parent !== $post->ID && $compare_from->ID !== $post->ID ) + return false; + if ( $compare_to->post_parent !== $post->ID && $compare_to->ID !== $post->ID ) + return false; + + if ( $compare_from && strtotime( $compare_from->post_date_gmt ) > strtotime( $compare_to->post_date_gmt ) ) { + $temp = $compare_from; + $compare_from = $compare_to; + $compare_to = $temp; + } + + // Add default title if title field is empty + if ( $compare_from && empty( $compare_from->post_title ) ) + $compare_from->post_title = __( '(no title)' ); + if ( empty( $compare_to->post_title ) ) + $compare_to->post_title = __( '(no title)' ); + + $return = array(); + + foreach ( _wp_post_revision_fields() as $field => $name ) { + /** + * Contextually filter a post revision field. + * + * The dynamic portion of the hook name, `$field`, corresponds to each of the post + * fields of the revision object being iterated over in a foreach statement. + * + * @since 3.6.0 + * + * @param string $compare_from->$field The current revision field to compare to or from. + * @param string $field The current revision field. + * @param WP_Post $compare_from The revision post object to compare to or from. + * @param string null The context of whether the current revision is the old + * or the new one. Values are 'to' or 'from'. + */ + $content_from = $compare_from ? apply_filters( "_wp_post_revision_field_$field", $compare_from->$field, $field, $compare_from, 'from' ) : ''; + + /** This filter is documented in wp-admin/includes/revision.php */ + $content_to = apply_filters( "_wp_post_revision_field_$field", $compare_to->$field, $field, $compare_to, 'to' ); + + $args = array( + 'show_split_view' => true + ); + + /** + * Filter revisions text diff options. + * + * Filter the options passed to {@see wp_text_diff()} when viewing a post revision. + * + * @since 4.1.0 + * + * @param array $args { + * Associative array of options to pass to {@see wp_text_diff()}. + * + * @type bool $show_split_view True for split view (two columns), false for + * un-split view (single column). Default true. + * } + * @param string $field The current revision field. + * @param WP_Post $compare_from The revision post to compare from. + * @param WP_Post $compare_to The revision post to compare to. + */ + $args = apply_filters( 'revision_text_diff_options', $args, $field, $compare_from, $compare_to ); + + $diff = wp_text_diff( $content_from, $content_to, $args ); + + if ( ! $diff && 'post_title' === $field ) { + // It's a better user experience to still show the Title, even if it didn't change. + // No, you didn't see this. + $diff = ''; + $diff .= ''; + $diff .= ''; + $diff .= '
    ' . esc_html( $compare_from->post_title ) . '' . esc_html( $compare_to->post_title ) . '
    '; + } + + if ( $diff ) { + $return[] = array( + 'id' => $field, + 'name' => $name, + 'diff' => $diff, + ); + } + } + + /** + * Filter the fields displayed in the post revision diff UI. + * + * @since 4.1.0 + * + * @param array $return Revision UI fields. Each item is an array of id, name and diff. + * @param WP_Post $compare_from The revision post to compare from. + * @param WP_Post $compare_to The revision post to compare to. + */ + return apply_filters( 'wp_get_revision_ui_diff', $return, $compare_from, $compare_to ); + +} + +/** + * Prepare revisions for JavaScript. + * + * @since 3.6.0 + * + * @param object|int $post The post object. Also accepts a post ID. + * @param int $selected_revision_id The selected revision ID. + * @param int $from Optional. The revision ID to compare from. + * + * @return array An associative array of revision data and related settings. + */ +function wp_prepare_revisions_for_js( $post, $selected_revision_id, $from = null ) { + $post = get_post( $post ); + $authors = array(); + $now_gmt = time(); + + $revisions = wp_get_post_revisions( $post->ID, array( 'order' => 'ASC', 'check_enabled' => false ) ); + // If revisions are disabled, we only want autosaves and the current post. + if ( ! wp_revisions_enabled( $post ) ) { + foreach ( $revisions as $revision_id => $revision ) { + if ( ! wp_is_post_autosave( $revision ) ) + unset( $revisions[ $revision_id ] ); + } + $revisions = array( $post->ID => $post ) + $revisions; + } + + $show_avatars = get_option( 'show_avatars' ); + + cache_users( wp_list_pluck( $revisions, 'post_author' ) ); + + $can_restore = current_user_can( 'edit_post', $post->ID ); + $current_id = false; + + foreach ( $revisions as $revision ) { + $modified = strtotime( $revision->post_modified ); + $modified_gmt = strtotime( $revision->post_modified_gmt ); + if ( $can_restore ) { + $restore_link = str_replace( '&', '&', wp_nonce_url( + add_query_arg( + array( 'revision' => $revision->ID, + 'action' => 'restore' ), + admin_url( 'revision.php' ) + ), + "restore-post_{$revision->ID}" + ) ); + } + + if ( ! isset( $authors[ $revision->post_author ] ) ) { + $authors[ $revision->post_author ] = array( + 'id' => (int) $revision->post_author, + 'avatar' => $show_avatars ? get_avatar( $revision->post_author, 32 ) : '', + 'name' => get_the_author_meta( 'display_name', $revision->post_author ), + ); + } + + $autosave = (bool) wp_is_post_autosave( $revision ); + $current = ! $autosave && $revision->post_modified_gmt === $post->post_modified_gmt; + if ( $current && ! empty( $current_id ) ) { + // If multiple revisions have the same post_modified_gmt, highest ID is current. + if ( $current_id < $revision->ID ) { + $revisions[ $current_id ]['current'] = false; + $current_id = $revision->ID; + } else { + $current = false; + } + } elseif ( $current ) { + $current_id = $revision->ID; + } + + $revisions[ $revision->ID ] = array( + 'id' => $revision->ID, + 'title' => get_the_title( $post->ID ), + 'author' => $authors[ $revision->post_author ], + 'date' => date_i18n( __( 'M j, Y @ H:i' ), $modified ), + 'dateShort' => date_i18n( _x( 'j M @ H:i', 'revision date short format' ), $modified ), + 'timeAgo' => sprintf( __( '%s ago' ), human_time_diff( $modified_gmt, $now_gmt ) ), + 'autosave' => $autosave, + 'current' => $current, + 'restoreUrl' => $can_restore ? $restore_link : false, + ); + } + + /** + * If we only have one revision, the initial revision is missing; This happens + * when we have an autsosave and the user has clicked 'View the Autosave' + */ + if ( 1 === sizeof( $revisions ) ) { + $revisions[ $post->ID ] = array( + 'id' => $post->ID, + 'title' => get_the_title( $post->ID ), + 'author' => $authors[ $post->post_author ], + 'date' => date_i18n( __( 'M j, Y @ H:i' ), strtotime( $post->post_modified ) ), + 'dateShort' => date_i18n( _x( 'j M @ H:i', 'revision date short format' ), strtotime( $post->post_modified ) ), + 'timeAgo' => sprintf( __( '%s ago' ), human_time_diff( strtotime( $post->post_modified_gmt ), $now_gmt ) ), + 'autosave' => false, + 'current' => true, + 'restoreUrl' => false, + ); + $current_id = $post->ID; + } + + /* + * If a post has been saved since the last revision (no revisioned fields + * were changed), we may not have a "current" revision. Mark the latest + * revision as "current". + */ + if ( empty( $current_id ) ) { + if ( $revisions[ $revision->ID ]['autosave'] ) { + $revision = end( $revisions ); + while ( $revision['autosave'] ) { + $revision = prev( $revisions ); + } + $current_id = $revision['id']; + } else { + $current_id = $revision->ID; + } + $revisions[ $current_id ]['current'] = true; + } + + // Now, grab the initial diff. + $compare_two_mode = is_numeric( $from ); + if ( ! $compare_two_mode ) { + $found = array_search( $selected_revision_id, array_keys( $revisions ) ); + if ( $found ) { + $from = array_keys( array_slice( $revisions, $found - 1, 1, true ) ); + $from = reset( $from ); + } else { + $from = 0; + } + } + + $from = absint( $from ); + + $diffs = array( array( + 'id' => $from . ':' . $selected_revision_id, + 'fields' => wp_get_revision_ui_diff( $post->ID, $from, $selected_revision_id ), + )); + + return array( + 'postId' => $post->ID, + 'nonce' => wp_create_nonce( 'revisions-ajax-nonce' ), + 'revisionData' => array_values( $revisions ), + 'to' => $selected_revision_id, + 'from' => $from, + 'diffData' => $diffs, + 'baseUrl' => parse_url( admin_url( 'revision.php' ), PHP_URL_PATH ), + 'compareTwoMode' => absint( $compare_two_mode ), // Apparently booleans are not allowed + 'revisionIds' => array_keys( $revisions ), + ); +} + +/** + * Print JavaScript templates required for the revisions experience. + * + * @since 4.1.0 + * + * @global WP_Post $post The global `$post` object. + */ +function wp_print_revision_templates() { + global $post; + ?> + + + + + + + + get_charset_collate(); + +/** + * Retrieve the SQL for creating database tables. + * + * @since 3.3.0 + * + * @global wpdb $wpdb + * + * @param string $scope Optional. The tables for which to retrieve SQL. Can be all, global, ms_global, or blog tables. Defaults to all. + * @param int $blog_id Optional. The blog ID for which to retrieve SQL. Default is the current blog ID. + * @return string The SQL needed to create the requested tables. + */ +function wp_get_db_schema( $scope = 'all', $blog_id = null ) { + global $wpdb; + + $charset_collate = ''; + + if ( ! empty($wpdb->charset) ) + $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; + if ( ! empty($wpdb->collate) ) + $charset_collate .= " COLLATE $wpdb->collate"; + + if ( $blog_id && $blog_id != $wpdb->blogid ) + $old_blog_id = $wpdb->set_blog_id( $blog_id ); + + // Engage multisite if in the middle of turning it on from network.php. + $is_multisite = is_multisite() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ); + + /* + * Indexes have a maximum size of 767 bytes. Historically, we haven't need to be concerned about that. + * As of 4.2, however, we moved to utf8mb4, which uses 4 bytes per character. This means that an index which + * used to have room for floor(767/3) = 255 characters, now only has room for floor(767/4) = 191 characters. + */ + $max_index_length = 191; + + // Blog specific tables. + $blog_tables = "CREATE TABLE $wpdb->terms ( + term_id bigint(20) unsigned NOT NULL auto_increment, + name varchar(200) NOT NULL default '', + slug varchar(200) NOT NULL default '', + term_group bigint(10) NOT NULL default 0, + PRIMARY KEY (term_id), + KEY slug (slug($max_index_length)), + KEY name (name($max_index_length)) +) $charset_collate; +CREATE TABLE $wpdb->term_taxonomy ( + term_taxonomy_id bigint(20) unsigned NOT NULL auto_increment, + term_id bigint(20) unsigned NOT NULL default 0, + taxonomy varchar(32) NOT NULL default '', + description longtext NOT NULL, + parent bigint(20) unsigned NOT NULL default 0, + count bigint(20) NOT NULL default 0, + PRIMARY KEY (term_taxonomy_id), + UNIQUE KEY term_id_taxonomy (term_id,taxonomy), + KEY taxonomy (taxonomy) +) $charset_collate; +CREATE TABLE $wpdb->term_relationships ( + object_id bigint(20) unsigned NOT NULL default 0, + term_taxonomy_id bigint(20) unsigned NOT NULL default 0, + term_order int(11) NOT NULL default 0, + PRIMARY KEY (object_id,term_taxonomy_id), + KEY term_taxonomy_id (term_taxonomy_id) +) $charset_collate; +CREATE TABLE $wpdb->commentmeta ( + meta_id bigint(20) unsigned NOT NULL auto_increment, + comment_id bigint(20) unsigned NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (meta_id), + KEY comment_id (comment_id), + KEY meta_key (meta_key($max_index_length)) +) $charset_collate; +CREATE TABLE $wpdb->comments ( + comment_ID bigint(20) unsigned NOT NULL auto_increment, + comment_post_ID bigint(20) unsigned NOT NULL default '0', + comment_author tinytext NOT NULL, + comment_author_email varchar(100) NOT NULL default '', + comment_author_url varchar(200) NOT NULL default '', + comment_author_IP varchar(100) NOT NULL default '', + comment_date datetime NOT NULL default '0000-00-00 00:00:00', + comment_date_gmt datetime NOT NULL default '0000-00-00 00:00:00', + comment_content text NOT NULL, + comment_karma int(11) NOT NULL default '0', + comment_approved varchar(20) NOT NULL default '1', + comment_agent varchar(255) NOT NULL default '', + comment_type varchar(20) NOT NULL default '', + comment_parent bigint(20) unsigned NOT NULL default '0', + user_id bigint(20) unsigned NOT NULL default '0', + PRIMARY KEY (comment_ID), + KEY comment_post_ID (comment_post_ID), + KEY comment_approved_date_gmt (comment_approved,comment_date_gmt), + KEY comment_date_gmt (comment_date_gmt), + KEY comment_parent (comment_parent), + KEY comment_author_email (comment_author_email(10)) +) $charset_collate; +CREATE TABLE $wpdb->links ( + link_id bigint(20) unsigned NOT NULL auto_increment, + link_url varchar(255) NOT NULL default '', + link_name varchar(255) NOT NULL default '', + link_image varchar(255) NOT NULL default '', + link_target varchar(25) NOT NULL default '', + link_description varchar(255) NOT NULL default '', + link_visible varchar(20) NOT NULL default 'Y', + link_owner bigint(20) unsigned NOT NULL default '1', + link_rating int(11) NOT NULL default '0', + link_updated datetime NOT NULL default '0000-00-00 00:00:00', + link_rel varchar(255) NOT NULL default '', + link_notes mediumtext NOT NULL, + link_rss varchar(255) NOT NULL default '', + PRIMARY KEY (link_id), + KEY link_visible (link_visible) +) $charset_collate; +CREATE TABLE $wpdb->options ( + option_id bigint(20) unsigned NOT NULL auto_increment, + option_name varchar(64) NOT NULL default '', + option_value longtext NOT NULL, + autoload varchar(20) NOT NULL default 'yes', + PRIMARY KEY (option_id), + UNIQUE KEY option_name (option_name) +) $charset_collate; +CREATE TABLE $wpdb->postmeta ( + meta_id bigint(20) unsigned NOT NULL auto_increment, + post_id bigint(20) unsigned NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (meta_id), + KEY post_id (post_id), + KEY meta_key (meta_key($max_index_length)) +) $charset_collate; +CREATE TABLE $wpdb->posts ( + ID bigint(20) unsigned NOT NULL auto_increment, + post_author bigint(20) unsigned NOT NULL default '0', + post_date datetime NOT NULL default '0000-00-00 00:00:00', + post_date_gmt datetime NOT NULL default '0000-00-00 00:00:00', + post_content longtext NOT NULL, + post_title text NOT NULL, + post_excerpt text NOT NULL, + post_status varchar(20) NOT NULL default 'publish', + comment_status varchar(20) NOT NULL default 'open', + ping_status varchar(20) NOT NULL default 'open', + post_password varchar(20) NOT NULL default '', + post_name varchar(200) NOT NULL default '', + to_ping text NOT NULL, + pinged text NOT NULL, + post_modified datetime NOT NULL default '0000-00-00 00:00:00', + post_modified_gmt datetime NOT NULL default '0000-00-00 00:00:00', + post_content_filtered longtext NOT NULL, + post_parent bigint(20) unsigned NOT NULL default '0', + guid varchar(255) NOT NULL default '', + menu_order int(11) NOT NULL default '0', + post_type varchar(20) NOT NULL default 'post', + post_mime_type varchar(100) NOT NULL default '', + comment_count bigint(20) NOT NULL default '0', + PRIMARY KEY (ID), + KEY post_name (post_name($max_index_length)), + KEY type_status_date (post_type,post_status,post_date,ID), + KEY post_parent (post_parent), + KEY post_author (post_author) +) $charset_collate;\n"; + + // Single site users table. The multisite flavor of the users table is handled below. + $users_single_table = "CREATE TABLE $wpdb->users ( + ID bigint(20) unsigned NOT NULL auto_increment, + user_login varchar(60) NOT NULL default '', + user_pass varchar(64) NOT NULL default '', + user_nicename varchar(50) NOT NULL default '', + user_email varchar(100) NOT NULL default '', + user_url varchar(100) NOT NULL default '', + user_registered datetime NOT NULL default '0000-00-00 00:00:00', + user_activation_key varchar(60) NOT NULL default '', + user_status int(11) NOT NULL default '0', + display_name varchar(250) NOT NULL default '', + PRIMARY KEY (ID), + KEY user_login_key (user_login), + KEY user_nicename (user_nicename) +) $charset_collate;\n"; + + // Multisite users table + $users_multi_table = "CREATE TABLE $wpdb->users ( + ID bigint(20) unsigned NOT NULL auto_increment, + user_login varchar(60) NOT NULL default '', + user_pass varchar(64) NOT NULL default '', + user_nicename varchar(50) NOT NULL default '', + user_email varchar(100) NOT NULL default '', + user_url varchar(100) NOT NULL default '', + user_registered datetime NOT NULL default '0000-00-00 00:00:00', + user_activation_key varchar(60) NOT NULL default '', + user_status int(11) NOT NULL default '0', + display_name varchar(250) NOT NULL default '', + spam tinyint(2) NOT NULL default '0', + deleted tinyint(2) NOT NULL default '0', + PRIMARY KEY (ID), + KEY user_login_key (user_login), + KEY user_nicename (user_nicename) +) $charset_collate;\n"; + + // Usermeta. + $usermeta_table = "CREATE TABLE $wpdb->usermeta ( + umeta_id bigint(20) unsigned NOT NULL auto_increment, + user_id bigint(20) unsigned NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (umeta_id), + KEY user_id (user_id), + KEY meta_key (meta_key($max_index_length)) +) $charset_collate;\n"; + + // Global tables + if ( $is_multisite ) + $global_tables = $users_multi_table . $usermeta_table; + else + $global_tables = $users_single_table . $usermeta_table; + + // Multisite global tables. + $ms_global_tables = "CREATE TABLE $wpdb->blogs ( + blog_id bigint(20) NOT NULL auto_increment, + site_id bigint(20) NOT NULL default '0', + domain varchar(200) NOT NULL default '', + path varchar(100) NOT NULL default '', + registered datetime NOT NULL default '0000-00-00 00:00:00', + last_updated datetime NOT NULL default '0000-00-00 00:00:00', + public tinyint(2) NOT NULL default '1', + archived tinyint(2) NOT NULL default '0', + mature tinyint(2) NOT NULL default '0', + spam tinyint(2) NOT NULL default '0', + deleted tinyint(2) NOT NULL default '0', + lang_id int(11) NOT NULL default '0', + PRIMARY KEY (blog_id), + KEY domain (domain(50),path(5)), + KEY lang_id (lang_id) +) $charset_collate; +CREATE TABLE $wpdb->blog_versions ( + blog_id bigint(20) NOT NULL default '0', + db_version varchar(20) NOT NULL default '', + last_updated datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (blog_id), + KEY db_version (db_version) +) $charset_collate; +CREATE TABLE $wpdb->registration_log ( + ID bigint(20) NOT NULL auto_increment, + email varchar(255) NOT NULL default '', + IP varchar(30) NOT NULL default '', + blog_id bigint(20) NOT NULL default '0', + date_registered datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (ID), + KEY IP (IP) +) $charset_collate; +CREATE TABLE $wpdb->site ( + id bigint(20) NOT NULL auto_increment, + domain varchar(200) NOT NULL default '', + path varchar(100) NOT NULL default '', + PRIMARY KEY (id), + KEY domain (domain(140),path(51)) +) $charset_collate; +CREATE TABLE $wpdb->sitemeta ( + meta_id bigint(20) NOT NULL auto_increment, + site_id bigint(20) NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (meta_id), + KEY meta_key (meta_key($max_index_length)), + KEY site_id (site_id) +) $charset_collate; +CREATE TABLE $wpdb->signups ( + signup_id bigint(20) NOT NULL auto_increment, + domain varchar(200) NOT NULL default '', + path varchar(100) NOT NULL default '', + title longtext NOT NULL, + user_login varchar(60) NOT NULL default '', + user_email varchar(100) NOT NULL default '', + registered datetime NOT NULL default '0000-00-00 00:00:00', + activated datetime NOT NULL default '0000-00-00 00:00:00', + active tinyint(1) NOT NULL default '0', + activation_key varchar(50) NOT NULL default '', + meta longtext, + PRIMARY KEY (signup_id), + KEY activation_key (activation_key), + KEY user_email (user_email), + KEY user_login_email (user_login,user_email), + KEY domain_path (domain(140),path(51)) +) $charset_collate;"; + + switch ( $scope ) { + case 'blog' : + $queries = $blog_tables; + break; + case 'global' : + $queries = $global_tables; + if ( $is_multisite ) + $queries .= $ms_global_tables; + break; + case 'ms_global' : + $queries = $ms_global_tables; + break; + case 'all' : + default: + $queries = $global_tables . $blog_tables; + if ( $is_multisite ) + $queries .= $ms_global_tables; + break; + } + + if ( isset( $old_blog_id ) ) + $wpdb->set_blog_id( $old_blog_id ); + + return $queries; +} + +// Populate for back compat. +$wp_queries = wp_get_db_schema( 'all' ); + +/** + * Create WordPress options and set the default values. + * + * @since 1.5.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * @global int $wp_db_version + * @global int $wp_current_db_version + */ +function populate_options() { + global $wpdb, $wp_db_version, $wp_current_db_version; + + $guessurl = wp_guess_url(); + /** + * Fires before creating WordPress options and populating their default values. + * + * @since 2.6.0 + */ + do_action( 'populate_options' ); + + if ( ini_get('safe_mode') ) { + // Safe mode can break mkdir() so use a flat structure by default. + $uploads_use_yearmonth_folders = 0; + } else { + $uploads_use_yearmonth_folders = 1; + } + + $template = WP_DEFAULT_THEME; + // If default theme is a child theme, we need to get its template + $theme = wp_get_theme( $template ); + if ( ! $theme->errors() ) + $template = $theme->get_template(); + + $timezone_string = ''; + $gmt_offset = 0; + /* translators: default GMT offset or timezone string. Must be either a valid offset (-12 to 14) + or a valid timezone string (America/New_York). See http://us3.php.net/manual/en/timezones.php + for all timezone strings supported by PHP. + */ + $offset_or_tz = _x( '0', 'default GMT offset or timezone string' ); + if ( is_numeric( $offset_or_tz ) ) + $gmt_offset = $offset_or_tz; + elseif ( $offset_or_tz && in_array( $offset_or_tz, timezone_identifiers_list() ) ) + $timezone_string = $offset_or_tz; + + $options = array( + 'siteurl' => $guessurl, + 'home' => $guessurl, + 'blogname' => __('My Site'), + /* translators: blog tagline */ + 'blogdescription' => __('Just another WordPress site'), + 'users_can_register' => 0, + 'admin_email' => 'you@example.com', + /* translators: default start of the week. 0 = Sunday, 1 = Monday */ + 'start_of_week' => _x( '1', 'start of week' ), + 'use_balanceTags' => 0, + 'use_smilies' => 1, + 'require_name_email' => 1, + 'comments_notify' => 1, + 'posts_per_rss' => 10, + 'rss_use_excerpt' => 0, + 'mailserver_url' => 'mail.example.com', + 'mailserver_login' => 'login@example.com', + 'mailserver_pass' => 'password', + 'mailserver_port' => 110, + 'default_category' => 1, + 'default_comment_status' => 'open', + 'default_ping_status' => 'open', + 'default_pingback_flag' => 1, + 'posts_per_page' => 10, + /* translators: default date format, see http://php.net/date */ + 'date_format' => __('F j, Y'), + /* translators: default time format, see http://php.net/date */ + 'time_format' => __('g:i a'), + /* translators: links last updated date format, see http://php.net/date */ + 'links_updated_date_format' => __('F j, Y g:i a'), + 'comment_moderation' => 0, + 'moderation_notify' => 1, + 'permalink_structure' => '', + 'gzipcompression' => 0, + 'hack_file' => 0, + 'blog_charset' => 'UTF-8', + 'moderation_keys' => '', + 'active_plugins' => array(), + 'category_base' => '', + 'ping_sites' => 'http://rpc.pingomatic.com/', + 'advanced_edit' => 0, + 'comment_max_links' => 2, + 'gmt_offset' => $gmt_offset, + + // 1.5 + 'default_email_category' => 1, + 'recently_edited' => '', + 'template' => $template, + 'stylesheet' => WP_DEFAULT_THEME, + 'comment_whitelist' => 1, + 'blacklist_keys' => '', + 'comment_registration' => 0, + 'html_type' => 'text/html', + + // 1.5.1 + 'use_trackback' => 0, + + // 2.0 + 'default_role' => 'subscriber', + 'db_version' => $wp_db_version, + + // 2.0.1 + 'uploads_use_yearmonth_folders' => $uploads_use_yearmonth_folders, + 'upload_path' => '', + + // 2.1 + 'blog_public' => '1', + 'default_link_category' => 2, + 'show_on_front' => 'posts', + + // 2.2 + 'tag_base' => '', + + // 2.5 + 'show_avatars' => '1', + 'avatar_rating' => 'G', + 'upload_url_path' => '', + 'thumbnail_size_w' => 150, + 'thumbnail_size_h' => 150, + 'thumbnail_crop' => 1, + 'medium_size_w' => 300, + 'medium_size_h' => 300, + + // 2.6 + 'avatar_default' => 'mystery', + + // 2.7 + 'large_size_w' => 1024, + 'large_size_h' => 1024, + 'image_default_link_type' => 'file', + 'image_default_size' => '', + 'image_default_align' => '', + 'close_comments_for_old_posts' => 0, + 'close_comments_days_old' => 14, + 'thread_comments' => 1, + 'thread_comments_depth' => 5, + 'page_comments' => 0, + 'comments_per_page' => 50, + 'default_comments_page' => 'newest', + 'comment_order' => 'asc', + 'sticky_posts' => array(), + 'widget_categories' => array(), + 'widget_text' => array(), + 'widget_rss' => array(), + 'uninstall_plugins' => array(), + + // 2.8 + 'timezone_string' => $timezone_string, + + // 3.0 + 'page_for_posts' => 0, + 'page_on_front' => 0, + + // 3.1 + 'default_post_format' => 0, + + // 3.5 + 'link_manager_enabled' => 0, + + // 4.3.0 + 'finished_splitting_shared_terms' => 1, + ); + + // 3.3 + if ( ! is_multisite() ) { + $options['initial_db_version'] = ! empty( $wp_current_db_version ) && $wp_current_db_version < $wp_db_version + ? $wp_current_db_version : $wp_db_version; + } + + // 3.0 multisite + if ( is_multisite() ) { + /* translators: blog tagline */ + $options[ 'blogdescription' ] = sprintf(__('Just another %s site'), get_current_site()->site_name ); + $options[ 'permalink_structure' ] = '/%year%/%monthnum%/%day%/%postname%/'; + } + + // Set autoload to no for these options + $fat_options = array( 'moderation_keys', 'recently_edited', 'blacklist_keys', 'uninstall_plugins' ); + + $keys = "'" . implode( "', '", array_keys( $options ) ) . "'"; + $existing_options = $wpdb->get_col( "SELECT option_name FROM $wpdb->options WHERE option_name in ( $keys )" ); + + $insert = ''; + foreach ( $options as $option => $value ) { + if ( in_array($option, $existing_options) ) + continue; + if ( in_array($option, $fat_options) ) + $autoload = 'no'; + else + $autoload = 'yes'; + + if ( is_array($value) ) + $value = serialize($value); + if ( !empty($insert) ) + $insert .= ', '; + $insert .= $wpdb->prepare( "(%s, %s, %s)", $option, $value, $autoload ); + } + + if ( !empty($insert) ) + $wpdb->query("INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES " . $insert); + + // In case it is set, but blank, update "home". + if ( !__get_option('home') ) update_option('home', $guessurl); + + // Delete unused options. + $unusedoptions = array( + 'blodotgsping_url', 'bodyterminator', 'emailtestonly', 'phoneemail_separator', 'smilies_directory', + 'subjectprefix', 'use_bbcode', 'use_blodotgsping', 'use_phoneemail', 'use_quicktags', 'use_weblogsping', + 'weblogs_cache_file', 'use_preview', 'use_htmltrans', 'smilies_directory', 'fileupload_allowedusers', + 'use_phoneemail', 'default_post_status', 'default_post_category', 'archive_mode', 'time_difference', + 'links_minadminlevel', 'links_use_adminlevels', 'links_rating_type', 'links_rating_char', + 'links_rating_ignore_zero', 'links_rating_single_image', 'links_rating_image0', 'links_rating_image1', + 'links_rating_image2', 'links_rating_image3', 'links_rating_image4', 'links_rating_image5', + 'links_rating_image6', 'links_rating_image7', 'links_rating_image8', 'links_rating_image9', + 'links_recently_updated_time', 'links_recently_updated_prepend', 'links_recently_updated_append', + 'weblogs_cacheminutes', 'comment_allowed_tags', 'search_engine_friendly_urls', 'default_geourl_lat', + 'default_geourl_lon', 'use_default_geourl', 'weblogs_xml_url', 'new_users_can_blog', '_wpnonce', + '_wp_http_referer', 'Update', 'action', 'rich_editing', 'autosave_interval', 'deactivated_plugins', + 'can_compress_scripts', 'page_uris', 'update_core', 'update_plugins', 'update_themes', 'doing_cron', + 'random_seed', 'rss_excerpt_length', 'secret', 'use_linksupdate', 'default_comment_status_page', + 'wporg_popular_tags', 'what_to_show', 'rss_language', 'language', 'enable_xmlrpc', 'enable_app', + 'embed_autourls', 'default_post_edit_rows', + ); + foreach ( $unusedoptions as $option ) + delete_option($option); + + // Delete obsolete magpie stuff. + $wpdb->query("DELETE FROM $wpdb->options WHERE option_name REGEXP '^rss_[0-9a-f]{32}(_ts)?$'"); + + /* + * Deletes all expired transients. The multi-table delete syntax is used + * to delete the transient record from table a, and the corresponding + * transient_timeout record from table b. + */ + $time = time(); + $sql = "DELETE a, b FROM $wpdb->options a, $wpdb->options b + WHERE a.option_name LIKE %s + AND a.option_name NOT LIKE %s + AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) ) + AND b.option_value < %d"; + $wpdb->query( $wpdb->prepare( $sql, $wpdb->esc_like( '_transient_' ) . '%', $wpdb->esc_like( '_transient_timeout_' ) . '%', $time ) ); + + if ( is_main_site() && is_main_network() ) { + $sql = "DELETE a, b FROM $wpdb->options a, $wpdb->options b + WHERE a.option_name LIKE %s + AND a.option_name NOT LIKE %s + AND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) ) + AND b.option_value < %d"; + $wpdb->query( $wpdb->prepare( $sql, $wpdb->esc_like( '_site_transient_' ) . '%', $wpdb->esc_like( '_site_transient_timeout_' ) . '%', $time ) ); + } +} + +/** + * Execute WordPress role creation for the various WordPress versions. + * + * @since 2.0.0 + */ +function populate_roles() { + populate_roles_160(); + populate_roles_210(); + populate_roles_230(); + populate_roles_250(); + populate_roles_260(); + populate_roles_270(); + populate_roles_280(); + populate_roles_300(); +} + +/** + * Create the roles for WordPress 2.0 + * + * @since 2.0.0 + */ +function populate_roles_160() { + // Add roles + + // Dummy gettext calls to get strings in the catalog. + /* translators: user role */ + _x('Administrator', 'User role'); + /* translators: user role */ + _x('Editor', 'User role'); + /* translators: user role */ + _x('Author', 'User role'); + /* translators: user role */ + _x('Contributor', 'User role'); + /* translators: user role */ + _x('Subscriber', 'User role'); + + add_role('administrator', 'Administrator'); + add_role('editor', 'Editor'); + add_role('author', 'Author'); + add_role('contributor', 'Contributor'); + add_role('subscriber', 'Subscriber'); + + // Add caps for Administrator role + $role = get_role('administrator'); + $role->add_cap('switch_themes'); + $role->add_cap('edit_themes'); + $role->add_cap('activate_plugins'); + $role->add_cap('edit_plugins'); + $role->add_cap('edit_users'); + $role->add_cap('edit_files'); + $role->add_cap('manage_options'); + $role->add_cap('moderate_comments'); + $role->add_cap('manage_categories'); + $role->add_cap('manage_links'); + $role->add_cap('upload_files'); + $role->add_cap('import'); + $role->add_cap('unfiltered_html'); + $role->add_cap('edit_posts'); + $role->add_cap('edit_others_posts'); + $role->add_cap('edit_published_posts'); + $role->add_cap('publish_posts'); + $role->add_cap('edit_pages'); + $role->add_cap('read'); + $role->add_cap('level_10'); + $role->add_cap('level_9'); + $role->add_cap('level_8'); + $role->add_cap('level_7'); + $role->add_cap('level_6'); + $role->add_cap('level_5'); + $role->add_cap('level_4'); + $role->add_cap('level_3'); + $role->add_cap('level_2'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Editor role + $role = get_role('editor'); + $role->add_cap('moderate_comments'); + $role->add_cap('manage_categories'); + $role->add_cap('manage_links'); + $role->add_cap('upload_files'); + $role->add_cap('unfiltered_html'); + $role->add_cap('edit_posts'); + $role->add_cap('edit_others_posts'); + $role->add_cap('edit_published_posts'); + $role->add_cap('publish_posts'); + $role->add_cap('edit_pages'); + $role->add_cap('read'); + $role->add_cap('level_7'); + $role->add_cap('level_6'); + $role->add_cap('level_5'); + $role->add_cap('level_4'); + $role->add_cap('level_3'); + $role->add_cap('level_2'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Author role + $role = get_role('author'); + $role->add_cap('upload_files'); + $role->add_cap('edit_posts'); + $role->add_cap('edit_published_posts'); + $role->add_cap('publish_posts'); + $role->add_cap('read'); + $role->add_cap('level_2'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Contributor role + $role = get_role('contributor'); + $role->add_cap('edit_posts'); + $role->add_cap('read'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Subscriber role + $role = get_role('subscriber'); + $role->add_cap('read'); + $role->add_cap('level_0'); +} + +/** + * Create and modify WordPress roles for WordPress 2.1. + * + * @since 2.1.0 + */ +function populate_roles_210() { + $roles = array('administrator', 'editor'); + foreach ($roles as $role) { + $role = get_role($role); + if ( empty($role) ) + continue; + + $role->add_cap('edit_others_pages'); + $role->add_cap('edit_published_pages'); + $role->add_cap('publish_pages'); + $role->add_cap('delete_pages'); + $role->add_cap('delete_others_pages'); + $role->add_cap('delete_published_pages'); + $role->add_cap('delete_posts'); + $role->add_cap('delete_others_posts'); + $role->add_cap('delete_published_posts'); + $role->add_cap('delete_private_posts'); + $role->add_cap('edit_private_posts'); + $role->add_cap('read_private_posts'); + $role->add_cap('delete_private_pages'); + $role->add_cap('edit_private_pages'); + $role->add_cap('read_private_pages'); + } + + $role = get_role('administrator'); + if ( ! empty($role) ) { + $role->add_cap('delete_users'); + $role->add_cap('create_users'); + } + + $role = get_role('author'); + if ( ! empty($role) ) { + $role->add_cap('delete_posts'); + $role->add_cap('delete_published_posts'); + } + + $role = get_role('contributor'); + if ( ! empty($role) ) { + $role->add_cap('delete_posts'); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.3. + * + * @since 2.3.0 + */ +function populate_roles_230() { + $role = get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'unfiltered_upload' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.5. + * + * @since 2.5.0 + */ +function populate_roles_250() { + $role = get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'edit_dashboard' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.6. + * + * @since 2.6.0 + */ +function populate_roles_260() { + $role = get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'update_plugins' ); + $role->add_cap( 'delete_plugins' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.7. + * + * @since 2.7.0 + */ +function populate_roles_270() { + $role = get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'install_plugins' ); + $role->add_cap( 'update_themes' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.8. + * + * @since 2.8.0 + */ +function populate_roles_280() { + $role = get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'install_themes' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 3.0. + * + * @since 3.0.0 + */ +function populate_roles_300() { + $role = get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'update_core' ); + $role->add_cap( 'list_users' ); + $role->add_cap( 'remove_users' ); + + /* + * Never used, will be removed. create_users or promote_users + * is the capability you're looking for. + */ + $role->add_cap( 'add_users' ); + + $role->add_cap( 'promote_users' ); + $role->add_cap( 'edit_theme_options' ); + $role->add_cap( 'delete_themes' ); + $role->add_cap( 'export' ); + } +} + +/** + * Install Network. + * + * @since 3.0.0 + * + */ +if ( !function_exists( 'install_network' ) ) : +function install_network() { + if ( ! defined( 'WP_INSTALLING_NETWORK' ) ) + define( 'WP_INSTALLING_NETWORK', true ); + + dbDelta( wp_get_db_schema( 'global' ) ); +} +endif; + +/** + * Populate network settings. + * + * @since 3.0.0 + * + * @global wpdb $wpdb + * @global object $current_site + * @global int $wp_db_version + * @global WP_Rewrite $wp_rewrite + * + * @param int $network_id ID of network to populate. + * @return bool|WP_Error True on success, or WP_Error on warning (with the install otherwise successful, + * so the error code must be checked) or failure. + */ +function populate_network( $network_id = 1, $domain = '', $email = '', $site_name = '', $path = '/', $subdomain_install = false ) { + global $wpdb, $current_site, $wp_db_version, $wp_rewrite; + + $errors = new WP_Error(); + if ( '' == $domain ) + $errors->add( 'empty_domain', __( 'You must provide a domain name.' ) ); + if ( '' == $site_name ) + $errors->add( 'empty_sitename', __( 'You must provide a name for your network of sites.' ) ); + + // Check for network collision. + if ( $network_id == $wpdb->get_var( $wpdb->prepare( "SELECT id FROM $wpdb->site WHERE id = %d", $network_id ) ) ) + $errors->add( 'siteid_exists', __( 'The network already exists.' ) ); + + $site_user = get_user_by( 'email', $email ); + if ( ! is_email( $email ) ) + $errors->add( 'invalid_email', __( 'You must provide a valid e-mail address.' ) ); + + if ( $errors->get_error_code() ) + return $errors; + + // Set up site tables. + $template = get_option( 'template' ); + $stylesheet = get_option( 'stylesheet' ); + $allowed_themes = array( $stylesheet => true ); + if ( $template != $stylesheet ) + $allowed_themes[ $template ] = true; + if ( WP_DEFAULT_THEME != $stylesheet && WP_DEFAULT_THEME != $template ) + $allowed_themes[ WP_DEFAULT_THEME ] = true; + + if ( 1 == $network_id ) { + $wpdb->insert( $wpdb->site, array( 'domain' => $domain, 'path' => $path ) ); + $network_id = $wpdb->insert_id; + } else { + $wpdb->insert( $wpdb->site, array( 'domain' => $domain, 'path' => $path, 'id' => $network_id ) ); + } + + wp_cache_delete( 'networks_have_paths', 'site-options' ); + + if ( !is_multisite() ) { + $site_admins = array( $site_user->user_login ); + $users = get_users( array( 'fields' => array( 'ID', 'user_login' ) ) ); + if ( $users ) { + foreach ( $users as $user ) { + if ( is_super_admin( $user->ID ) && !in_array( $user->user_login, $site_admins ) ) + $site_admins[] = $user->user_login; + } + } + } else { + $site_admins = get_site_option( 'site_admins' ); + } + + /* translators: Do not translate USERNAME, SITE_NAME, BLOG_URL, PASSWORD: those are placeholders. */ + $welcome_email = __( 'Howdy USERNAME, + +Your new SITE_NAME site has been successfully set up at: +BLOG_URL + +You can log in to the administrator account with the following information: + +Username: USERNAME +Password: PASSWORD +Log in here: BLOG_URLwp-login.php + +We hope you enjoy your new site. Thanks! + +--The Team @ SITE_NAME' ); + + $misc_exts = array( + // Images. + 'jpg', 'jpeg', 'png', 'gif', + // Video. + 'mov', 'avi', 'mpg', '3gp', '3g2', + // "audio". + 'midi', 'mid', + // Miscellaneous. + 'pdf', 'doc', 'ppt', 'odt', 'pptx', 'docx', 'pps', 'ppsx', 'xls', 'xlsx', 'key', + ); + $audio_exts = wp_get_audio_extensions(); + $video_exts = wp_get_video_extensions(); + $upload_filetypes = array_unique( array_merge( $misc_exts, $audio_exts, $video_exts ) ); + + $sitemeta = array( + 'site_name' => $site_name, + 'admin_email' => $site_user->user_email, + 'admin_user_id' => $site_user->ID, + 'registration' => 'none', + 'upload_filetypes' => implode( ' ', $upload_filetypes ), + 'blog_upload_space' => 100, + 'fileupload_maxk' => 1500, + 'site_admins' => $site_admins, + 'allowedthemes' => $allowed_themes, + 'illegal_names' => array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator', 'files' ), + 'wpmu_upgrade_site' => $wp_db_version, + 'welcome_email' => $welcome_email, + 'first_post' => __( 'Welcome to SITE_NAME. This is your first post. Edit or delete it, then start blogging!' ), + // @todo - network admins should have a method of editing the network siteurl (used for cookie hash) + 'siteurl' => get_option( 'siteurl' ) . '/', + 'add_new_users' => '0', + 'upload_space_check_disabled' => is_multisite() ? get_site_option( 'upload_space_check_disabled' ) : '1', + 'subdomain_install' => intval( $subdomain_install ), + 'global_terms_enabled' => global_terms_enabled() ? '1' : '0', + 'ms_files_rewriting' => is_multisite() ? get_site_option( 'ms_files_rewriting' ) : '0', + 'initial_db_version' => get_option( 'initial_db_version' ), + 'active_sitewide_plugins' => array(), + 'WPLANG' => get_locale(), + ); + if ( ! $subdomain_install ) + $sitemeta['illegal_names'][] = 'blog'; + + /** + * Filter meta for a network on creation. + * + * @since 3.7.0 + * + * @param array $sitemeta Associative array of network meta keys and values to be inserted. + * @param int $network_id ID of network to populate. + */ + $sitemeta = apply_filters( 'populate_network_meta', $sitemeta, $network_id ); + + $insert = ''; + foreach ( $sitemeta as $meta_key => $meta_value ) { + if ( is_array( $meta_value ) ) + $meta_value = serialize( $meta_value ); + if ( !empty( $insert ) ) + $insert .= ', '; + $insert .= $wpdb->prepare( "( %d, %s, %s)", $network_id, $meta_key, $meta_value ); + } + $wpdb->query( "INSERT INTO $wpdb->sitemeta ( site_id, meta_key, meta_value ) VALUES " . $insert ); + + /* + * When upgrading from single to multisite, assume the current site will + * become the main site of the network. When using populate_network() + * to create another network in an existing multisite environment, skip + * these steps since the main site of the new network has not yet been + * created. + */ + if ( ! is_multisite() ) { + $current_site = new stdClass; + $current_site->domain = $domain; + $current_site->path = $path; + $current_site->site_name = ucfirst( $domain ); + $wpdb->insert( $wpdb->blogs, array( 'site_id' => $network_id, 'blog_id' => 1, 'domain' => $domain, 'path' => $path, 'registered' => current_time( 'mysql' ) ) ); + $current_site->blog_id = $blog_id = $wpdb->insert_id; + update_user_meta( $site_user->ID, 'source_domain', $domain ); + update_user_meta( $site_user->ID, 'primary_blog', $blog_id ); + + if ( $subdomain_install ) + $wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' ); + else + $wp_rewrite->set_permalink_structure( '/blog/%year%/%monthnum%/%day%/%postname%/' ); + + flush_rewrite_rules(); + + if ( ! $subdomain_install ) + return true; + + $vhost_ok = false; + $errstr = ''; + $hostname = substr( md5( time() ), 0, 6 ) . '.' . $domain; // Very random hostname! + $page = wp_remote_get( 'http://' . $hostname, array( 'timeout' => 5, 'httpversion' => '1.1' ) ); + if ( is_wp_error( $page ) ) + $errstr = $page->get_error_message(); + elseif ( 200 == wp_remote_retrieve_response_code( $page ) ) + $vhost_ok = true; + + if ( ! $vhost_ok ) { + $msg = '

    ' . __( 'Warning! Wildcard DNS may not be configured correctly!' ) . '

    '; + $msg .= '

    ' . sprintf( __( 'The installer attempted to contact a random hostname (%1$s) on your domain.' ), $hostname ); + if ( ! empty ( $errstr ) ) + $msg .= ' ' . sprintf( __( 'This resulted in an error message: %s' ), '' . $errstr . '' ); + $msg .= '

    '; + $msg .= '

    ' . __( 'To use a subdomain configuration, you must have a wildcard entry in your DNS. This usually means adding a * hostname record pointing at your web server in your DNS configuration tool.' ) . '

    '; + $msg .= '

    ' . __( 'You can still use your site but any subdomain you create may not be accessible. If you know your DNS is correct, ignore this message.' ) . '

    '; + return new WP_Error( 'no_wildcard_dns', $msg ); + } + } + + return true; +} diff --git a/wp-admin/includes/screen.php b/wp-admin/includes/screen.php new file mode 100644 index 0000000000..fba5dc9da0 --- /dev/null +++ b/wp-admin/includes/screen.php @@ -0,0 +1,1220 @@ + UI String + */ +function get_column_headers( $screen ) { + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + static $column_headers = array(); + + if ( ! isset( $column_headers[ $screen->id ] ) ) { + + /** + * Filter the column headers for a list table on a specific screen. + * + * The dynamic portion of the hook name, `$screen->id`, refers to the + * ID of a specific screen. For example, the screen ID for the Posts + * list table is edit-post, so the filter for that screen would be + * manage_edit-post_columns. + * + * @since 3.0.0 + * + * @param array $columns An array of column headers. Default empty. + */ + $column_headers[ $screen->id ] = apply_filters( "manage_{$screen->id}_columns", array() ); + } + + return $column_headers[ $screen->id ]; +} + +/** + * Get a list of hidden columns. + * + * @since 2.7.0 + * + * @param string|WP_Screen $screen The screen you want the hidden columns for + * @return array + */ +function get_hidden_columns( $screen ) { + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + return (array) get_user_option( 'manage' . $screen->id . 'columnshidden' ); +} + +/** + * Prints the meta box preferences for screen meta. + * + * @since 2.7.0 + * + * @global array $wp_meta_boxes + * + * @param WP_Screen $screen + */ +function meta_box_prefs( $screen ) { + global $wp_meta_boxes; + + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + if ( empty($wp_meta_boxes[$screen->id]) ) + return; + + $hidden = get_hidden_meta_boxes($screen); + + foreach ( array_keys( $wp_meta_boxes[ $screen->id ] ) as $context ) { + foreach ( array( 'high', 'core', 'default', 'low' ) as $priority ) { + if ( ! isset( $wp_meta_boxes[ $screen->id ][ $context ][ $priority ] ) ) { + continue; + } + foreach ( $wp_meta_boxes[ $screen->id ][ $context ][ $priority ] as $box ) { + if ( false == $box || ! $box['title'] ) + continue; + // Submit box cannot be hidden + if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] ) + continue; + $box_id = $box['id']; + echo '\n"; + } + } + } +} + +/** + * Get Hidden Meta Boxes + * + * @since 2.7.0 + * + * @param string|WP_Screen $screen Screen identifier + * @return array Hidden Meta Boxes + */ +function get_hidden_meta_boxes( $screen ) { + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + $hidden = get_user_option( "metaboxhidden_{$screen->id}" ); + + $use_defaults = ! is_array( $hidden ); + + // Hide slug boxes by default + if ( $use_defaults ) { + $hidden = array(); + if ( 'post' == $screen->base ) { + if ( 'post' == $screen->post_type || 'page' == $screen->post_type || 'attachment' == $screen->post_type ) + $hidden = array('slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv'); + else + $hidden = array( 'slugdiv' ); + } + + /** + * Filter the default list of hidden meta boxes. + * + * @since 3.1.0 + * + * @param array $hidden An array of meta boxes hidden by default. + * @param WP_Screen $screen WP_Screen object of the current screen. + */ + $hidden = apply_filters( 'default_hidden_meta_boxes', $hidden, $screen ); + } + + /** + * Filter the list of hidden meta boxes. + * + * @since 3.3.0 + * + * @param array $hidden An array of hidden meta boxes. + * @param WP_Screen $screen WP_Screen object of the current screen. + * @param bool $use_defaults Whether to show the default meta boxes. + * Default true. + */ + return apply_filters( 'hidden_meta_boxes', $hidden, $screen, $use_defaults ); +} + +/** + * Register and configure an admin screen option + * + * @since 3.1.0 + * + * @param string $option An option name. + * @param mixed $args Option-dependent arguments. + */ +function add_screen_option( $option, $args = array() ) { + $current_screen = get_current_screen(); + + if ( ! $current_screen ) + return; + + $current_screen->add_option( $option, $args ); +} + +/** + * Get the current screen object + * + * @since 3.1.0 + * + * @global WP_Screen $current_screen + * + * @return WP_Screen Current screen object + */ +function get_current_screen() { + global $current_screen; + + if ( ! isset( $current_screen ) ) + return null; + + return $current_screen; +} + +/** + * Set the current screen object + * + * @since 3.0.0 + * + * @param mixed $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen, + * or an existing screen object. + */ +function set_current_screen( $hook_name = '' ) { + WP_Screen::get( $hook_name )->set_current_screen(); +} + +/** + * A class representing the admin screen. + * + * @since 3.3.0 + * @access public + */ +final class WP_Screen { + /** + * Any action associated with the screen. 'add' for *-add.php and *-new.php screens. Empty otherwise. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $action; + + /** + * The base type of the screen. This is typically the same as $id but with any post types and taxonomies stripped. + * For example, for an $id of 'edit-post' the base is 'edit'. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $base; + + /** + * The number of columns to display. Access with get_columns(). + * + * @since 3.4.0 + * @var int + * @access private + */ + private $columns = 0; + + /** + * The unique ID of the screen. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $id; + + /** + * Which admin the screen is in. network | user | site | false + * + * @since 3.5.0 + * @var string + * @access protected + */ + protected $in_admin; + + /** + * Whether the screen is in the network admin. + * + * Deprecated. Use in_admin() instead. + * + * @since 3.3.0 + * @deprecated 3.5.0 + * @var bool + * @access public + */ + public $is_network; + + /** + * Whether the screen is in the user admin. + * + * Deprecated. Use in_admin() instead. + * + * @since 3.3.0 + * @deprecated 3.5.0 + * @var bool + * @access public + */ + public $is_user; + + /** + * The base menu parent. + * This is derived from $parent_file by removing the query string and any .php extension. + * $parent_file values of 'edit.php?post_type=page' and 'edit.php?post_type=post' have a $parent_base of 'edit'. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $parent_base; + + /** + * The parent_file for the screen per the admin menu system. + * Some $parent_file values are 'edit.php?post_type=page', 'edit.php', and 'options-general.php'. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $parent_file; + + /** + * The post type associated with the screen, if any. + * The 'edit.php?post_type=page' screen has a post type of 'page'. + * The 'edit-tags.php?taxonomy=$taxonomy&post_type=page' screen has a post type of 'page'. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $post_type; + + /** + * The taxonomy associated with the screen, if any. + * The 'edit-tags.php?taxonomy=category' screen has a taxonomy of 'category'. + * @since 3.3.0 + * @var string + * @access public + */ + public $taxonomy; + + /** + * The help tab data associated with the screen, if any. + * + * @since 3.3.0 + * @var array + * @access private + */ + private $_help_tabs = array(); + + /** + * The help sidebar data associated with screen, if any. + * + * @since 3.3.0 + * @var string + * @access private + */ + private $_help_sidebar = ''; + + /** + * Stores old string-based help. + * + * @static + * @access private + * + * @var array + */ + private static $_old_compat_help = array(); + + /** + * The screen options associated with screen, if any. + * + * @since 3.3.0 + * @var array + * @access private + */ + private $_options = array(); + + /** + * The screen object registry. + * + * @since 3.3.0 + * + * @static + * @access private + * + * @var array + */ + private static $_registry = array(); + + /** + * Stores the result of the public show_screen_options function. + * + * @since 3.3.0 + * @var bool + * @access private + */ + private $_show_screen_options; + + /** + * Stores the 'screen_settings' section of screen options. + * + * @since 3.3.0 + * @var string + * @access private + */ + private $_screen_settings; + + /** + * Fetches a screen object. + * + * @since 3.3.0 + * @access public + * + * @static + * + * @global string $hook_suffix + * + * @param string|WP_Screen $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen. + * Defaults to the current $hook_suffix global. + * @return WP_Screen Screen object. + */ + public static function get( $hook_name = '' ) { + if ( $hook_name instanceof WP_Screen ) { + return $hook_name; + } + + $post_type = $taxonomy = null; + $in_admin = false; + $action = ''; + + if ( $hook_name ) + $id = $hook_name; + else + $id = $GLOBALS['hook_suffix']; + + // For those pesky meta boxes. + if ( $hook_name && post_type_exists( $hook_name ) ) { + $post_type = $id; + $id = 'post'; // changes later. ends up being $base. + } else { + if ( '.php' == substr( $id, -4 ) ) + $id = substr( $id, 0, -4 ); + + if ( 'post-new' == $id || 'link-add' == $id || 'media-new' == $id || 'user-new' == $id ) { + $id = substr( $id, 0, -4 ); + $action = 'add'; + } + } + + if ( ! $post_type && $hook_name ) { + if ( '-network' == substr( $id, -8 ) ) { + $id = substr( $id, 0, -8 ); + $in_admin = 'network'; + } elseif ( '-user' == substr( $id, -5 ) ) { + $id = substr( $id, 0, -5 ); + $in_admin = 'user'; + } + + $id = sanitize_key( $id ); + if ( 'edit-comments' != $id && 'edit-tags' != $id && 'edit-' == substr( $id, 0, 5 ) ) { + $maybe = substr( $id, 5 ); + if ( taxonomy_exists( $maybe ) ) { + $id = 'edit-tags'; + $taxonomy = $maybe; + } elseif ( post_type_exists( $maybe ) ) { + $id = 'edit'; + $post_type = $maybe; + } + } + + if ( ! $in_admin ) + $in_admin = 'site'; + } else { + if ( defined( 'WP_NETWORK_ADMIN' ) && WP_NETWORK_ADMIN ) + $in_admin = 'network'; + elseif ( defined( 'WP_USER_ADMIN' ) && WP_USER_ADMIN ) + $in_admin = 'user'; + else + $in_admin = 'site'; + } + + if ( 'index' == $id ) + $id = 'dashboard'; + elseif ( 'front' == $id ) + $in_admin = false; + + $base = $id; + + // If this is the current screen, see if we can be more accurate for post types and taxonomies. + if ( ! $hook_name ) { + if ( isset( $_REQUEST['post_type'] ) ) + $post_type = post_type_exists( $_REQUEST['post_type'] ) ? $_REQUEST['post_type'] : false; + if ( isset( $_REQUEST['taxonomy'] ) ) + $taxonomy = taxonomy_exists( $_REQUEST['taxonomy'] ) ? $_REQUEST['taxonomy'] : false; + + switch ( $base ) { + case 'post' : + if ( isset( $_GET['post'] ) ) + $post_id = (int) $_GET['post']; + elseif ( isset( $_POST['post_ID'] ) ) + $post_id = (int) $_POST['post_ID']; + else + $post_id = 0; + + if ( $post_id ) { + $post = get_post( $post_id ); + if ( $post ) + $post_type = $post->post_type; + } + break; + case 'edit-tags' : + if ( null === $post_type && is_object_in_taxonomy( 'post', $taxonomy ? $taxonomy : 'post_tag' ) ) + $post_type = 'post'; + break; + } + } + + switch ( $base ) { + case 'post' : + if ( null === $post_type ) + $post_type = 'post'; + $id = $post_type; + break; + case 'edit' : + if ( null === $post_type ) + $post_type = 'post'; + $id .= '-' . $post_type; + break; + case 'edit-tags' : + if ( null === $taxonomy ) + $taxonomy = 'post_tag'; + // The edit-tags ID does not contain the post type. Look for it in the request. + if ( null === $post_type ) { + $post_type = 'post'; + if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) ) + $post_type = $_REQUEST['post_type']; + } + + $id = 'edit-' . $taxonomy; + break; + } + + if ( 'network' == $in_admin ) { + $id .= '-network'; + $base .= '-network'; + } elseif ( 'user' == $in_admin ) { + $id .= '-user'; + $base .= '-user'; + } + + if ( isset( self::$_registry[ $id ] ) ) { + $screen = self::$_registry[ $id ]; + if ( $screen === get_current_screen() ) + return $screen; + } else { + $screen = new WP_Screen(); + $screen->id = $id; + } + + $screen->base = $base; + $screen->action = $action; + $screen->post_type = (string) $post_type; + $screen->taxonomy = (string) $taxonomy; + $screen->is_user = ( 'user' == $in_admin ); + $screen->is_network = ( 'network' == $in_admin ); + $screen->in_admin = $in_admin; + + self::$_registry[ $id ] = $screen; + + return $screen; + } + + /** + * Makes the screen object the current screen. + * + * @see set_current_screen() + * @since 3.3.0 + * + * @global WP_Screen $current_screen + * @global string $taxnow + * @global string $typenow + */ + public function set_current_screen() { + global $current_screen, $taxnow, $typenow; + $current_screen = $this; + $taxnow = $this->taxonomy; + $typenow = $this->post_type; + + /** + * Fires after the current screen has been set. + * + * @since 3.0.0 + * + * @param WP_Screen $current_screen Current WP_Screen object. + */ + do_action( 'current_screen', $current_screen ); + } + + /** + * Constructor + * + * @since 3.3.0 + * @access private + */ + private function __construct() {} + + /** + * Indicates whether the screen is in a particular admin + * + * @since 3.5.0 + * + * @param string $admin The admin to check against (network | user | site). + * If empty any of the three admins will result in true. + * @return bool True if the screen is in the indicated admin, false otherwise. + */ + public function in_admin( $admin = null ) { + if ( empty( $admin ) ) + return (bool) $this->in_admin; + + return ( $admin == $this->in_admin ); + } + + /** + * Sets the old string-based contextual help for the screen. + * + * For backwards compatibility. + * + * @since 3.3.0 + * + * @static + * + * @param WP_Screen $screen A screen object. + * @param string $help Help text. + */ + public static function add_old_compat_help( $screen, $help ) { + self::$_old_compat_help[ $screen->id ] = $help; + } + + /** + * Set the parent information for the screen. + * This is called in admin-header.php after the menu parent for the screen has been determined. + * + * @since 3.3.0 + * + * @param string $parent_file The parent file of the screen. Typically the $parent_file global. + */ + public function set_parentage( $parent_file ) { + $this->parent_file = $parent_file; + list( $this->parent_base ) = explode( '?', $parent_file ); + $this->parent_base = str_replace( '.php', '', $this->parent_base ); + } + + /** + * Adds an option for the screen. + * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add screen options. + * + * @since 3.3.0 + * + * @param string $option Option ID + * @param mixed $args Option-dependent arguments. + */ + public function add_option( $option, $args = array() ) { + $this->_options[ $option ] = $args; + } + + /** + * Remove an option from the screen. + * + * @since 3.8.0 + * + * @param string $option Option ID. + */ + public function remove_option( $option ) { + unset( $this->_options[ $option ] ); + } + + /** + * Remove all options from the screen. + * + * @since 3.8.0 + */ + public function remove_options() { + $this->_options = array(); + } + + /** + * Get the options registered for the screen. + * + * @since 3.8.0 + * + * @return array Options with arguments. + */ + public function get_options() { + return $this->_options; + } + + /** + * Gets the arguments for an option for the screen. + * + * @since 3.3.0 + * + * @param string $option Option name. + * @param string $key Optional. Specific array key for when the option is an array. + * Default false. + * @return string The option value if set, null otherwise. + */ + public function get_option( $option, $key = false ) { + if ( ! isset( $this->_options[ $option ] ) ) + return null; + if ( $key ) { + if ( isset( $this->_options[ $option ][ $key ] ) ) + return $this->_options[ $option ][ $key ]; + return null; + } + return $this->_options[ $option ]; + } + + /** + * Gets the help tabs registered for the screen. + * + * @since 3.4.0 + * + * @return array Help tabs with arguments. + */ + public function get_help_tabs() { + return $this->_help_tabs; + } + + /** + * Gets the arguments for a help tab. + * + * @since 3.4.0 + * + * @param string $id Help Tab ID. + * @return array Help tab arguments. + */ + public function get_help_tab( $id ) { + if ( ! isset( $this->_help_tabs[ $id ] ) ) + return null; + return $this->_help_tabs[ $id ]; + } + + /** + * Add a help tab to the contextual help for the screen. + * Call this on the load-$pagenow hook for the relevant screen. + * + * @since 3.3.0 + * + * @param array $args + * - string - title - Title for the tab. + * - string - id - Tab ID. Must be HTML-safe. + * - string - content - Help tab content in plain text or HTML. Optional. + * - callback - callback - A callback to generate the tab content. Optional. + * + */ + public function add_help_tab( $args ) { + $defaults = array( + 'title' => false, + 'id' => false, + 'content' => '', + 'callback' => false, + ); + $args = wp_parse_args( $args, $defaults ); + + $args['id'] = sanitize_html_class( $args['id'] ); + + // Ensure we have an ID and title. + if ( ! $args['id'] || ! $args['title'] ) + return; + + // Allows for overriding an existing tab with that ID. + $this->_help_tabs[ $args['id'] ] = $args; + } + + /** + * Removes a help tab from the contextual help for the screen. + * + * @since 3.3.0 + * + * @param string $id The help tab ID. + */ + public function remove_help_tab( $id ) { + unset( $this->_help_tabs[ $id ] ); + } + + /** + * Removes all help tabs from the contextual help for the screen. + * + * @since 3.3.0 + */ + public function remove_help_tabs() { + $this->_help_tabs = array(); + } + + /** + * Gets the content from a contextual help sidebar. + * + * @since 3.4.0 + * + * @return string Contents of the help sidebar. + */ + public function get_help_sidebar() { + return $this->_help_sidebar; + } + + /** + * Add a sidebar to the contextual help for the screen. + * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add a sidebar to the contextual help. + * + * @since 3.3.0 + * + * @param string $content Sidebar content in plain text or HTML. + */ + public function set_help_sidebar( $content ) { + $this->_help_sidebar = $content; + } + + /** + * Gets the number of layout columns the user has selected. + * + * The layout_columns option controls the max number and default number of + * columns. This method returns the number of columns within that range selected + * by the user via Screen Options. If no selection has been made, the default + * provisioned in layout_columns is returned. If the screen does not support + * selecting the number of layout columns, 0 is returned. + * + * @since 3.4.0 + * + * @return int Number of columns to display. + */ + public function get_columns() { + return $this->columns; + } + + /** + * Render the screen's help section. + * + * This will trigger the deprecated filters for backwards compatibility. + * + * @since 3.3.0 + * + * @global string $screen_layout_columns + */ + public function render_screen_meta() { + + /** + * Filter the legacy contextual help list. + * + * @since 2.7.0 + * @deprecated 3.3.0 Use get_current_screen()->add_help_tab() or + * get_current_screen()->remove_help_tab() instead. + * + * @param array $old_compat_help Old contextual help. + * @param WP_Screen $this Current WP_Screen instance. + */ + self::$_old_compat_help = apply_filters( 'contextual_help_list', self::$_old_compat_help, $this ); + + $old_help = isset( self::$_old_compat_help[ $this->id ] ) ? self::$_old_compat_help[ $this->id ] : ''; + + /** + * Filter the legacy contextual help text. + * + * @since 2.7.0 + * @deprecated 3.3.0 Use get_current_screen()->add_help_tab() or + * get_current_screen()->remove_help_tab() instead. + * + * @param string $old_help Help text that appears on the screen. + * @param string $screen_id Screen ID. + * @param WP_Screen $this Current WP_Screen instance. + * + */ + $old_help = apply_filters( 'contextual_help', $old_help, $this->id, $this ); + + // Default help only if there is no old-style block of text and no new-style help tabs. + if ( empty( $old_help ) && ! $this->get_help_tabs() ) { + + /** + * Filter the default legacy contextual help text. + * + * @since 2.8.0 + * @deprecated 3.3.0 Use get_current_screen()->add_help_tab() or + * get_current_screen()->remove_help_tab() instead. + * + * @param string $old_help_default Default contextual help text. + */ + $default_help = apply_filters( 'default_contextual_help', '' ); + if ( $default_help ) + $old_help = '

    ' . $default_help . '

    '; + } + + if ( $old_help ) { + $this->add_help_tab( array( + 'id' => 'old-contextual-help', + 'title' => __('Overview'), + 'content' => $old_help, + ) ); + } + + $help_sidebar = $this->get_help_sidebar(); + + $help_class = 'hidden'; + if ( ! $help_sidebar ) + $help_class .= ' no-sidebar'; + + // Time to render! + ?> +
    + +
    +
    +
    +
    +
      + get_help_tabs() as $tab ) : + $link_id = "tab-link-{$tab['id']}"; + $panel_id = "tab-panel-{$tab['id']}"; + ?> + + + +
    +
    + + +
    + +
    + + +
    + get_help_tabs() as $tab ): + $panel_id = "tab-panel-{$tab['id']}"; + ?> + +
    + +
    + +
    +
    +
    + id, $this ); + + if ( ! empty( $columns ) && isset( $columns[ $this->id ] ) ) + $this->add_option( 'layout_columns', array('max' => $columns[ $this->id ] ) ); + + if ( $this->get_option( 'layout_columns' ) ) { + $this->columns = (int) get_user_option("screen_layout_$this->id"); + + if ( ! $this->columns && $this->get_option( 'layout_columns', 'default' ) ) + $this->columns = $this->get_option( 'layout_columns', 'default' ); + } + $GLOBALS[ 'screen_layout_columns' ] = $this->columns; // Set the global for back-compat. + + // Add screen options + if ( $this->show_screen_options() ) + $this->render_screen_options(); + ?> +
    + get_help_tabs() && ! $this->show_screen_options() ) + return; + ?> + + _show_screen_options ) ) + return $this->_show_screen_options; + + $columns = get_column_headers( $this ); + + $show_screen = ! empty( $wp_meta_boxes[ $this->id ] ) || $columns || $this->get_option( 'per_page' ); + + switch ( $this->base ) { + case 'widgets': + $this->_screen_settings = '

    ' . __('Enable accessibility mode') . '' . __('Disable accessibility mode') . "

    \n"; + break; + case 'post' : + $expand = ''; + $this->_screen_settings = $expand; + break; + default: + $this->_screen_settings = ''; + break; + } + + /** + * Filter the screen settings text displayed in the Screen Options tab. + * + * This filter is currently only used on the Widgets screen to enable + * accessibility mode. + * + * @since 3.0.0 + * + * @param string $screen_settings Screen settings. + * @param WP_Screen $this WP_Screen object. + */ + $this->_screen_settings = apply_filters( 'screen_settings', $this->_screen_settings, $this ); + + if ( $this->_screen_settings || $this->_options ) + $show_screen = true; + + /** + * Filter whether to show the Screen Options tab. + * + * @since 3.2.0 + * + * @param bool $show_screen Whether to show Screen Options tab. + * Default true. + * @param WP_Screen $this Current WP_Screen instance. + */ + $this->_show_screen_options = apply_filters( 'screen_options_show_screen', $show_screen, $this ); + return $this->_show_screen_options; + } + + /** + * Render the screen options tab. + * + * @since 3.3.0 + * + * @global array $wp_meta_boxes + */ + public function render_screen_options() { + global $wp_meta_boxes; + + $columns = get_column_headers( $this ); + $hidden = get_hidden_columns( $this ); + + ?> + + get_option('layout_columns') ) + return; + + $screen_layout_columns = $this->get_columns(); + $num = $this->get_option( 'layout_columns', 'max' ); + + ?> +
    +
    + + +
    + get_option( 'per_page' ) ) { + return; + } + + $per_page_label = $this->get_option( 'per_page', 'label' ); + if ( null === $per_page_label ) { + $per_page_label = __( 'Number of items per page:' ); + } + + $option = $this->get_option( 'per_page', 'option' ); + if ( ! $option ) { + $option = str_replace( '-', '_', "{$this->id}_per_page" ); + } + + $per_page = (int) get_user_option( $option ); + if ( empty( $per_page ) || $per_page < 1 ) { + $per_page = $this->get_option( 'per_page', 'default' ); + if ( ! $per_page ) { + $per_page = 20; + } + } + + if ( 'edit_comments_per_page' == $option ) { + $comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all'; + + /** This filter is documented in wp-admin/includes/class-wp-comments-list-table.php */ + $per_page = apply_filters( 'comments_per_page', $per_page, $comment_status ); + } elseif ( 'categories_per_page' == $option ) { + /** This filter is documented in wp-admin/includes/class-wp-terms-list-table.php */ + $per_page = apply_filters( 'edit_categories_per_page', $per_page ); + } else { + /** This filter is documented in wp-admin/includes/class-wp-list-table.php */ + $per_page = apply_filters( $option, $per_page ); + } + + // Back compat + if ( isset( $this->post_type ) ) { + /** This filter is documented in wp-admin/includes/class-wp-posts-list-table.php */ + $per_page = apply_filters( 'edit_posts_per_page', $per_page, $this->post_type ); + } + + ?> +
    + + + + + +
    + $cat_name, 'category_parent' => $parent) ); +} + +/** + * Create categories for the given post. + * + * @since 2.0.0 + * + * @param array $categories List of categories to create. + * @param int $post_id Optional. The post ID. Default empty. + * @return List of categories to create for the given post. + */ +function wp_create_categories( $categories, $post_id = '' ) { + $cat_ids = array (); + foreach ( $categories as $category ) { + if ( $id = category_exists( $category ) ) { + $cat_ids[] = $id; + } elseif ( $id = wp_create_category( $category ) ) { + $cat_ids[] = $id; + } + } + + if ( $post_id ) + wp_set_post_categories($post_id, $cat_ids); + + return $cat_ids; +} + +/** + * Updates an existing Category or creates a new Category. + * + * @since 2.0.0 + * @since 2.5.0 $wp_error parameter was added. + * @since 3.0.0 The 'taxonomy' argument was added. + * + * @param array $catarr { + * Array of arguments for inserting a new category. + * + * @type int $cat_ID Categoriy ID. A non-zero value updates an existing category. + * Default 0. + * @type string $taxonomy Taxonomy slug. Defualt 'category'. + * @type string $cat_name Category name. Default empty. + * @type string $category_description Category description. Default empty. + * @type string $category_nicename Category nice (display) name. Default empty. + * @type int|string $category_parent Category parent ID. Default empty. + * } + * @param bool $wp_error Optional. Default false. + * @return int|object The ID number of the new or updated Category on success. Zero or a WP_Error on failure, + * depending on param $wp_error. + */ +function wp_insert_category( $catarr, $wp_error = false ) { + $cat_defaults = array( 'cat_ID' => 0, 'taxonomy' => 'category', 'cat_name' => '', 'category_description' => '', 'category_nicename' => '', 'category_parent' => '' ); + $catarr = wp_parse_args( $catarr, $cat_defaults ); + + if ( trim( $catarr['cat_name'] ) == '' ) { + if ( ! $wp_error ) { + return 0; + } else { + return new WP_Error( 'cat_name', __( 'You did not enter a category name.' ) ); + } + } + + $catarr['cat_ID'] = (int) $catarr['cat_ID']; + + // Are we updating or creating? + $update = ! empty ( $catarr['cat_ID'] ); + + $name = $catarr['cat_name']; + $description = $catarr['category_description']; + $slug = $catarr['category_nicename']; + $parent = (int) $catarr['category_parent']; + if ( $parent < 0 ) { + $parent = 0; + } + + if ( empty( $parent ) + || ! term_exists( $parent, $catarr['taxonomy'] ) + || ( $catarr['cat_ID'] && term_is_ancestor_of( $catarr['cat_ID'], $parent, $catarr['taxonomy'] ) ) ) { + $parent = 0; + } + + $args = compact('name', 'slug', 'parent', 'description'); + + if ( $update ) { + $catarr['cat_ID'] = wp_update_term( $catarr['cat_ID'], $catarr['taxonomy'], $args ); + } else { + $catarr['cat_ID'] = wp_insert_term( $catarr['cat_name'], $catarr['taxonomy'], $args ); + } + + if ( is_wp_error( $catarr['cat_ID'] ) ) { + if ( $wp_error ) { + return $catarr['cat_ID']; + } else { + return 0; + } + } + return $catarr['cat_ID']['term_id']; +} + +/** + * Aliases wp_insert_category() with minimal args. + * + * If you want to update only some fields of an existing category, call this + * function with only the new values set inside $catarr. + * + * @since 2.0.0 + * + * @param array $catarr The 'cat_ID' value is required. All other keys are optional. + * @return int|bool The ID number of the new or updated Category on success. Zero or FALSE on failure. + */ +function wp_update_category($catarr) { + $cat_ID = (int) $catarr['cat_ID']; + + if ( isset($catarr['category_parent']) && ($cat_ID == $catarr['category_parent']) ) + return false; + + // First, get all of the original fields + $category = get_term( $cat_ID, 'category', ARRAY_A ); + _make_cat_compat( $category ); + + // Escape data pulled from DB. + $category = wp_slash($category); + + // Merge old and new fields with new fields overwriting old ones. + $catarr = array_merge($category, $catarr); + + return wp_insert_category($catarr); +} + +// +// Tags +// + +/** + * Check whether a post tag with a given name exists. + * + * @since 2.3.0 + * + * @param int|string $tag_name + * @return mixed + */ +function tag_exists($tag_name) { + return term_exists($tag_name, 'post_tag'); +} + +/** + * Add a new tag to the database if it does not already exist. + * + * @since 2.3.0 + * + * @param int|string $tag_name + * @return array|WP_Error + */ +function wp_create_tag($tag_name) { + return wp_create_term( $tag_name, 'post_tag'); +} + +/** + * Get comma-separated list of tags available to edit. + * + * @since 2.3.0 + * + * @param int $post_id + * @param string $taxonomy Optional. The taxonomy for which to retrieve terms. Default 'post_tag'. + * @return string|bool|WP_Error + */ +function get_tags_to_edit( $post_id, $taxonomy = 'post_tag' ) { + return get_terms_to_edit( $post_id, $taxonomy); +} + +/** + * Get comma-separated list of terms available to edit for the given post ID. + * + * @since 2.8.0 + * + * @param int $post_id + * @param string $taxonomy Optional. The taxonomy for which to retrieve terms. Default 'post_tag'. + * @return string|bool|WP_Error + */ +function get_terms_to_edit( $post_id, $taxonomy = 'post_tag' ) { + $post_id = (int) $post_id; + if ( !$post_id ) + return false; + + $terms = get_object_term_cache( $post_id, $taxonomy ); + if ( false === $terms ) { + $terms = wp_get_object_terms( $post_id, $taxonomy ); + wp_cache_add( $post_id, $terms, $taxonomy . '_relationships' ); + } + + if ( ! $terms ) { + return false; + } + if ( is_wp_error( $terms ) ) { + return $terms; + } + $term_names = array(); + foreach ( $terms as $term ) { + $term_names[] = $term->name; + } + + $terms_to_edit = esc_attr( join( ',', $term_names ) ); + + /** + * Filter the comma-separated list of terms available to edit. + * + * @since 2.8.0 + * + * @see get_terms_to_edit() + * + * @param array $terms_to_edit An array of terms. + * @param string $taxonomy The taxonomy for which to retrieve terms. Default 'post_tag'. + */ + $terms_to_edit = apply_filters( 'terms_to_edit', $terms_to_edit, $taxonomy ); + + return $terms_to_edit; +} + +/** + * Add a new term to the database if it does not already exist. + * + * @since 2.8.0 + * + * @param int|string $tag_name + * @param string $taxonomy Optional. The taxonomy for which to retrieve terms. Default 'post_tag'. + * @return array|WP_Error + */ +function wp_create_term($tag_name, $taxonomy = 'post_tag') { + if ( $id = term_exists($tag_name, $taxonomy) ) + return $id; + + return wp_insert_term($tag_name, $taxonomy); +} diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php new file mode 100644 index 0000000000..d1a85870cf --- /dev/null +++ b/wp-admin/includes/template.php @@ -0,0 +1,2256 @@ + 'parent', 'id' => 'term_id'); //TODO: decouple this + + /** + * Starts the list before the elements are added. + * + * @see Walker:start_lvl() + * + * @since 2.5.1 + * + * @param string $output Passed by reference. Used to append additional content. + * @param int $depth Depth of category. Used for tab indentation. + * @param array $args An array of arguments. @see wp_terms_checklist() + */ + public function start_lvl( &$output, $depth = 0, $args = array() ) { + $indent = str_repeat("\t", $depth); + $output .= "$indent
      \n"; + } + + /** + * Ends the list of after the elements are added. + * + * @see Walker::end_lvl() + * + * @since 2.5.1 + * + * @param string $output Passed by reference. Used to append additional content. + * @param int $depth Depth of category. Used for tab indentation. + * @param array $args An array of arguments. @see wp_terms_checklist() + */ + public function end_lvl( &$output, $depth = 0, $args = array() ) { + $indent = str_repeat("\t", $depth); + $output .= "$indent
    \n"; + } + + /** + * Start the element output. + * + * @see Walker::start_el() + * + * @since 2.5.1 + * + * @param string $output Passed by reference. Used to append additional content. + * @param object $category The current term object. + * @param int $depth Depth of the term in reference to parents. Default 0. + * @param array $args An array of arguments. @see wp_terms_checklist() + * @param int $id ID of the current term. + */ + public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) { + if ( empty( $args['taxonomy'] ) ) { + $taxonomy = 'category'; + } else { + $taxonomy = $args['taxonomy']; + } + + if ( $taxonomy == 'category' ) { + $name = 'post_category'; + } else { + $name = 'tax_input[' . $taxonomy . ']'; + } + + $args['popular_cats'] = empty( $args['popular_cats'] ) ? array() : $args['popular_cats']; + $class = in_array( $category->term_id, $args['popular_cats'] ) ? ' class="popular-category"' : ''; + + $args['selected_cats'] = empty( $args['selected_cats'] ) ? array() : $args['selected_cats']; + + /** This filter is documented in wp-includes/category-template.php */ + if ( ! empty( $args['list_only'] ) ) { + $aria_cheched = 'false'; + $inner_class = 'category'; + + if ( in_array( $category->term_id, $args['selected_cats'] ) ) { + $inner_class .= ' selected'; + $aria_cheched = 'true'; + } + + $output .= "\n" . '' . + ''; + } else { + $output .= "\n
  • " . + ''; + } + } + + /** + * Ends the element output, if needed. + * + * @see Walker::end_el() + * + * @since 2.5.1 + * + * @param string $output Passed by reference. Used to append additional content. + * @param object $category The current term object. + * @param int $depth Depth of the term in reference to parents. Default 0. + * @param array $args An array of arguments. @see wp_terms_checklist() + */ + public function end_el( &$output, $category, $depth = 0, $args = array() ) { + $output .= "
  • \n"; + } +} + +/** + * Output an unordered list of checkbox input elements labeled with category names. + * + * @since 2.5.1 + * + * @see wp_terms_checklist() + * + * @param int $post_id Optional. Post to generate a categories checklist for. Default 0. + * $selected_cats must not be an array. Default 0. + * @param int $descendants_and_self Optional. ID of the category to output along with its descendants. + * Default 0. + * @param array $selected_cats Optional. List of categories to mark as checked. Default false. + * @param array $popular_cats Optional. List of categories to receive the "popular-category" class. + * Default false. + * @param object $walker Optional. Walker object to use to build the output. + * Default is a Walker_Category_Checklist instance. + * @param bool $checked_ontop Optional. Whether to move checked items out of the hierarchy and to + * the top of the list. Default true. + */ +function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null, $checked_ontop = true ) { + wp_terms_checklist( $post_id, array( + 'taxonomy' => 'category', + 'descendants_and_self' => $descendants_and_self, + 'selected_cats' => $selected_cats, + 'popular_cats' => $popular_cats, + 'walker' => $walker, + 'checked_ontop' => $checked_ontop + ) ); +} + +/** + * Output an unordered list of checkbox input elements labelled with term names. + * + * Taxonomy-independent version of wp_category_checklist(). + * + * @since 3.0.0 + * + * @param int $post_id Optional. Post ID. Default 0. + * @param array|string $args { + * Optional. Array or string of arguments for generating a terms checklist. Default empty array. + * + * @type int $descendants_and_self ID of the category to output along with its descendants. + * Default 0. + * @type array $selected_cats List of categories to mark as checked. Default false. + * @type array $popular_cats List of categories to receive the "popular-category" class. + * Default false. + * @type object $walker Walker object to use to build the output. + * Default is a Walker_Category_Checklist instance. + * @type string $taxonomy Taxonomy to generate the checklist for. Default 'category'. + * @type bool $checked_ontop Whether to move checked items out of the hierarchy and to + * the top of the list. Default true. + * } + */ +function wp_terms_checklist( $post_id = 0, $args = array() ) { + $defaults = array( + 'descendants_and_self' => 0, + 'selected_cats' => false, + 'popular_cats' => false, + 'walker' => null, + 'taxonomy' => 'category', + 'checked_ontop' => true + ); + + /** + * Filter the taxonomy terms checklist arguments. + * + * @since 3.4.0 + * + * @see wp_terms_checklist() + * + * @param array $args An array of arguments. + * @param int $post_id The post ID. + */ + $params = apply_filters( 'wp_terms_checklist_args', $args, $post_id ); + + $r = wp_parse_args( $params, $defaults ); + + if ( empty( $r['walker'] ) || ! ( $r['walker'] instanceof Walker ) ) { + $walker = new Walker_Category_Checklist; + } else { + $walker = $r['walker']; + } + + $taxonomy = $r['taxonomy']; + $descendants_and_self = (int) $r['descendants_and_self']; + + $args = array( 'taxonomy' => $taxonomy ); + + $tax = get_taxonomy( $taxonomy ); + $args['disabled'] = ! current_user_can( $tax->cap->assign_terms ); + + $args['list_only'] = ! empty( $r['list_only'] ); + + if ( is_array( $r['selected_cats'] ) ) { + $args['selected_cats'] = $r['selected_cats']; + } elseif ( $post_id ) { + $args['selected_cats'] = wp_get_object_terms( $post_id, $taxonomy, array_merge( $args, array( 'fields' => 'ids' ) ) ); + } else { + $args['selected_cats'] = array(); + } + if ( is_array( $r['popular_cats'] ) ) { + $args['popular_cats'] = $r['popular_cats']; + } else { + $args['popular_cats'] = get_terms( $taxonomy, array( + 'fields' => 'ids', + 'orderby' => 'count', + 'order' => 'DESC', + 'number' => 10, + 'hierarchical' => false + ) ); + } + if ( $descendants_and_self ) { + $categories = (array) get_terms( $taxonomy, array( + 'child_of' => $descendants_and_self, + 'hierarchical' => 0, + 'hide_empty' => 0 + ) ); + $self = get_term( $descendants_and_self, $taxonomy ); + array_unshift( $categories, $self ); + } else { + $categories = (array) get_terms( $taxonomy, array( 'get' => 'all' ) ); + } + + if ( $r['checked_ontop'] ) { + // Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache) + $checked_categories = array(); + $keys = array_keys( $categories ); + + foreach( $keys as $k ) { + if ( in_array( $categories[$k]->term_id, $args['selected_cats'] ) ) { + $checked_categories[] = $categories[$k]; + unset( $categories[$k] ); + } + } + + // Put checked cats on top + echo call_user_func_array( array( $walker, 'walk' ), array( $checked_categories, 0, $args ) ); + } + // Then the rest of them + echo call_user_func_array( array( $walker, 'walk' ), array( $categories, 0, $args ) ); +} + +/** + * Retrieve a list of the most popular terms from the specified taxonomy. + * + * If the $echo argument is true then the elements for a list of checkbox + * `` elements labelled with the names of the selected terms is output. + * If the $post_ID global isn't empty then the terms associated with that + * post will be marked as checked. + * + * @since 2.5.0 + * + * @param string $taxonomy Taxonomy to retrieve terms from. + * @param int $default Not used. + * @param int $number Number of terms to retrieve. Defaults to 10. + * @param bool $echo Optionally output the list as well. Defaults to true. + * @return array List of popular term IDs. + */ +function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $echo = true ) { + $post = get_post(); + + if ( $post && $post->ID ) + $checked_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields'=>'ids')); + else + $checked_terms = array(); + + $terms = get_terms( $taxonomy, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => $number, 'hierarchical' => false ) ); + + $tax = get_taxonomy($taxonomy); + + $popular_ids = array(); + foreach ( (array) $terms as $term ) { + $popular_ids[] = $term->term_id; + if ( !$echo ) // hack for AJAX use + continue; + $id = "popular-$taxonomy-$term->term_id"; + $checked = in_array( $term->term_id, $checked_terms ) ? 'checked="checked"' : ''; + ?> + + + + 'name', 'hide_empty' => 0 ) ); + + if ( empty( $categories ) ) + return; + + foreach ( $categories as $category ) { + $cat_id = $category->term_id; + + /** This filter is documented in wp-includes/category-template.php */ + $name = esc_html( apply_filters( 'the_category', $category->name ) ); + $checked = in_array( $cat_id, $checked_categories ) ? ' checked="checked"' : ''; + echo '"; + } +} + +/** + * Adds hidden fields with the data for use in the inline editor for posts and pages. + * + * @since 2.7.0 + * + * @param WP_Post $post Post object. + */ +function get_inline_data($post) { + $post_type_object = get_post_type_object($post->post_type); + if ( ! current_user_can( 'edit_post', $post->ID ) ) + return; + + $title = esc_textarea( trim( $post->post_title ) ); + + /** This filter is documented in wp-admin/edit-tag-form.php */ + echo ' +'; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @global WP_List_Table $wp_list_table + * + * @param int $position + * @param bool $checkbox + * @param string $mode + * @param bool $table_row + */ +function wp_comment_reply( $position = 1, $checkbox = false, $mode = 'single', $table_row = true ) { + global $wp_list_table; + /** + * Filter the in-line comment reply-to form output in the Comments + * list table. + * + * Returning a non-empty value here will short-circuit display + * of the in-line comment-reply form in the Comments list table, + * echoing the returned value instead. + * + * @since 2.7.0 + * + * @see wp_comment_reply() + * + * @param string $content The reply-to form content. + * @param array $args An array of default args. + */ + $content = apply_filters( 'wp_comment_reply', '', array( 'position' => $position, 'checkbox' => $checkbox, 'mode' => $mode ) ); + + if ( ! empty($content) ) { + echo $content; + return; + } + + if ( ! $wp_list_table ) { + if ( $mode == 'single' ) { + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); + } else { + $wp_list_table = _get_list_table('WP_Comments_List_Table'); + } + } + +?> +
    + +
    + + + +
    + + + + + + + ' . _x( 'Name', 'meta name' ) . ' + ' . __( 'Value' ) . ' + + + + + +'; //TBODY needed for list-manipulation JS + return; + } + $count = 0; +?> + + + + + + + + + + +
    + + $entry['meta_id'] = (int) $entry['meta_id']; + + $delete_nonce = wp_create_nonce( 'delete-meta_' . $entry['meta_id'] ); + + $r .= "\n\t"; + $r .= "\n\t\t"; + + $r .= "\n\t\t
    "; + $r .= get_submit_button( __( 'Delete' ), 'deletemeta small', "deletemeta[{$entry['meta_id']}]", false, array( 'data-wp-lists' => "delete:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$delete_nonce" ) ); + $r .= "\n\t\t"; + $r .= get_submit_button( __( 'Update' ), 'updatemeta small', "meta-{$entry['meta_id']}-submit", false, array( 'data-wp-lists' => "add:the-list:meta-{$entry['meta_id']}::_ajax_nonce-add-meta=$update_nonce" ) ); + $r .= "
    "; + $r .= wp_nonce_field( 'change-meta', '_ajax_nonce', false, false ); + $r .= ""; + + $r .= "\n\t\t\n\t"; + return $r; +} + +/** + * Prints the form in the Custom Fields meta box. + * + * @since 1.2.0 + * + * @global wpdb $wpdb + * + * @param WP_Post $post Optional. The post being edited. + */ +function meta_form( $post = null ) { + global $wpdb; + $post = get_post( $post ); + + /** + * Filter the number of custom fields to retrieve for the drop-down + * in the Custom Fields meta box. + * + * @since 2.1.0 + * + * @param int $limit Number of custom fields to retrieve. Default 30. + */ + $limit = apply_filters( 'postmeta_form_limit', 30 ); + $sql = "SELECT DISTINCT meta_key + FROM $wpdb->postmeta + WHERE meta_key NOT BETWEEN '_' AND '_z' + HAVING meta_key NOT LIKE %s + ORDER BY meta_key + LIMIT %d"; + $keys = $wpdb->get_col( $wpdb->prepare( $sql, $wpdb->esc_like( '_' ) . '%', $limit ) ); + if ( $keys ) { + natcasesort( $keys ); + $meta_key_input_id = 'metakeyselect'; + } else { + $meta_key_input_id = 'metakeyinput'; + } +?> +

    + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    +
    + 'newmeta-submit', 'data-wp-lists' => 'add:the-list:newmeta' ) ); ?> +
    + +
    +post_status, array('draft', 'pending') ) && (!$post->post_date_gmt || '0000-00-00 00:00:00' == $post->post_date_gmt ) ); + + $tab_index_attribute = ''; + if ( (int) $tab_index > 0 ) + $tab_index_attribute = " tabindex=\"$tab_index\""; + + // todo: Remove this? + // echo '
    '; + + $time_adj = current_time('timestamp'); + $post_date = ($for_post) ? $post->post_date : $comment->comment_date; + $jj = ($edit) ? mysql2date( 'd', $post_date, false ) : gmdate( 'd', $time_adj ); + $mm = ($edit) ? mysql2date( 'm', $post_date, false ) : gmdate( 'm', $time_adj ); + $aa = ($edit) ? mysql2date( 'Y', $post_date, false ) : gmdate( 'Y', $time_adj ); + $hh = ($edit) ? mysql2date( 'H', $post_date, false ) : gmdate( 'H', $time_adj ); + $mn = ($edit) ? mysql2date( 'i', $post_date, false ) : gmdate( 'i', $time_adj ); + $ss = ($edit) ? mysql2date( 's', $post_date, false ) : gmdate( 's', $time_adj ); + + $cur_jj = gmdate( 'd', $time_adj ); + $cur_mm = gmdate( 'm', $time_adj ); + $cur_aa = gmdate( 'Y', $time_adj ); + $cur_hh = gmdate( 'H', $time_adj ); + $cur_mn = gmdate( 'i', $time_adj ); + + $month = ''; + + $day = ''; + $year = ''; + $hour = ''; + $minute = ''; + + echo '
    '; + /* translators: 1: month, 2: day, 3: year, 4: hour, 5: minute */ + printf( __( '%1$s %2$s, %3$s @ %4$s:%5$s' ), $month, $day, $year, $hour, $minute ); + + echo '
    '; + + if ( $multi ) return; + + echo "\n\n"; + $map = array( + 'mm' => array( $mm, $cur_mm ), + 'jj' => array( $jj, $cur_jj ), + 'aa' => array( $aa, $cur_aa ), + 'hh' => array( $hh, $cur_hh ), + 'mn' => array( $mn, $cur_mn ), + ); + foreach ( $map as $timeunit => $value ) { + list( $unit, $curr ) = $value; + + echo '' . "\n"; + $cur_timeunit = 'cur_' . $timeunit; + echo '' . "\n"; + } +?> + +

    + + +

    +$template"; + } +} + +/** + * Print out option HTML elements for the page parents drop-down. + * + * @since 1.5.0 + * + * @global wpdb $wpdb + * + * @param int $default Optional. The default page ID to be pre-selected. Default 0. + * @param int $parent Optional. The parent page ID. Default 0. + * @param int $level Optional. Page depth level. Default 0. + * + * @return null|false Boolean False if page has no children, otherwise print out html elements + */ +function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) { + global $wpdb; + $post = get_post(); + $items = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' ORDER BY menu_order", $parent) ); + + if ( $items ) { + foreach ( $items as $item ) { + // A page cannot be its own parent. + if ( $post && $post->ID && $item->ID == $post->ID ) + continue; + + $pad = str_repeat( ' ', $level * 3 ); + $selected = selected( $default, $item->ID, false ); + + echo "\n\t"; + parent_dropdown( $default, $item->ID, $level +1 ); + } + } else { + return false; + } +} + +/** + * Print out option html elements for role selectors. + * + * @since 2.1.0 + * + * @param string $selected Slug for the role that should be already selected. + */ +function wp_dropdown_roles( $selected = '' ) { + $p = ''; + $r = ''; + + $editable_roles = array_reverse( get_editable_roles() ); + + foreach ( $editable_roles as $role => $details ) { + $name = translate_user_role($details['name'] ); + if ( $selected == $role ) // preselect specified role + $p = "\n\t"; + else + $r .= "\n\t"; + } + echo $p . $r; +} + +/** + * Outputs the form used by the importers to accept the data to be imported + * + * @since 2.0.0 + * + * @param string $action The action attribute for the form. + */ +function wp_import_upload_form( $action ) { + + /** + * Filter the maximum allowed upload size for import files. + * + * @since 2.3.0 + * + * @see wp_max_upload_size() + * + * @param int $max_upload_size Allowed upload size. Default 1 MB. + */ + $bytes = apply_filters( 'import_upload_size_limit', wp_max_upload_size() ); + $size = size_format( $bytes ); + $upload_dir = wp_upload_dir(); + if ( ! empty( $upload_dir['error'] ) ) : + ?>

    +

    +
    +

    + () + + + +

    + +
    +id; + + if ( !isset($wp_meta_boxes) ) + $wp_meta_boxes = array(); + if ( !isset($wp_meta_boxes[$page]) ) + $wp_meta_boxes[$page] = array(); + if ( !isset($wp_meta_boxes[$page][$context]) ) + $wp_meta_boxes[$page][$context] = array(); + + foreach ( array_keys($wp_meta_boxes[$page]) as $a_context ) { + foreach ( array('high', 'core', 'default', 'low') as $a_priority ) { + if ( !isset($wp_meta_boxes[$page][$a_context][$a_priority][$id]) ) + continue; + + // If a core box was previously added or removed by a plugin, don't add. + if ( 'core' == $priority ) { + // If core box previously deleted, don't add + if ( false === $wp_meta_boxes[$page][$a_context][$a_priority][$id] ) + return; + + /* + * If box was added with default priority, give it core priority to + * maintain sort order. + */ + if ( 'default' == $a_priority ) { + $wp_meta_boxes[$page][$a_context]['core'][$id] = $wp_meta_boxes[$page][$a_context]['default'][$id]; + unset($wp_meta_boxes[$page][$a_context]['default'][$id]); + } + return; + } + // If no priority given and id already present, use existing priority. + if ( empty($priority) ) { + $priority = $a_priority; + /* + * Else, if we're adding to the sorted priority, we don't know the title + * or callback. Grab them from the previously added context/priority. + */ + } elseif ( 'sorted' == $priority ) { + $title = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['title']; + $callback = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['callback']; + $callback_args = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['args']; + } + // An id can be in only one priority and one context. + if ( $priority != $a_priority || $context != $a_context ) + unset($wp_meta_boxes[$page][$a_context][$a_priority][$id]); + } + } + + if ( empty($priority) ) + $priority = 'low'; + + if ( !isset($wp_meta_boxes[$page][$context][$priority]) ) + $wp_meta_boxes[$page][$context][$priority] = array(); + + $wp_meta_boxes[$page][$context][$priority][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $callback_args); +} + +/** + * Meta-Box template function + * + * @since 2.5.0 + * + * @global array $wp_meta_boxes + * + * @staticvar bool $already_sorted + * @param string|WP_Screen $screen Screen identifier + * @param string $context box context + * @param mixed $object gets passed to the box callback function as first parameter + * @return int number of meta_boxes + */ +function do_meta_boxes( $screen, $context, $object ) { + global $wp_meta_boxes; + static $already_sorted = false; + + if ( empty( $screen ) ) + $screen = get_current_screen(); + elseif ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + $page = $screen->id; + + $hidden = get_hidden_meta_boxes( $screen ); + + printf('
    ', htmlspecialchars($context)); + + // Grab the ones the user has manually sorted. Pull them out of their previous context/priority and into the one the user chose + if ( ! $already_sorted && $sorted = get_user_option( "meta-box-order_$page" ) ) { + foreach ( $sorted as $box_context => $ids ) { + foreach ( explode( ',', $ids ) as $id ) { + if ( $id && 'dashboard_browser_nag' !== $id ) { + add_meta_box( $id, null, null, $screen, $box_context, 'sorted' ); + } + } + } + } + + $already_sorted = true; + + $i = 0; + + if ( isset( $wp_meta_boxes[ $page ][ $context ] ) ) { + foreach ( array( 'high', 'sorted', 'core', 'default', 'low' ) as $priority ) { + if ( isset( $wp_meta_boxes[ $page ][ $context ][ $priority ]) ) { + foreach ( (array) $wp_meta_boxes[ $page ][ $context ][ $priority ] as $box ) { + if ( false == $box || ! $box['title'] ) + continue; + $i++; + $hidden_class = in_array($box['id'], $hidden) ? ' hide-if-js' : ''; + echo '
    ' . "\n"; + if ( 'dashboard_browser_nag' != $box['id'] ) + echo '

    '; + echo "

    {$box['title']}

    \n"; + echo '
    ' . "\n"; + call_user_func($box['callback'], $object, $box); + echo "
    \n"; + echo "
    \n"; + } + } + } + } + + echo "
    "; + + return $i; + +} + +/** + * Remove a meta box from an edit form. + * + * @since 2.6.0 + * + * @global array $wp_meta_boxes + * + * @param string $id String for use in the 'id' attribute of tags. + * @param string|object $screen The screen on which to show the box (post, page, link). + * @param string $context The context within the page where the boxes should show ('normal', 'advanced'). + */ +function remove_meta_box($id, $screen, $context) { + global $wp_meta_boxes; + + if ( empty( $screen ) ) + $screen = get_current_screen(); + elseif ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + $page = $screen->id; + + if ( !isset($wp_meta_boxes) ) + $wp_meta_boxes = array(); + if ( !isset($wp_meta_boxes[$page]) ) + $wp_meta_boxes[$page] = array(); + if ( !isset($wp_meta_boxes[$page][$context]) ) + $wp_meta_boxes[$page][$context] = array(); + + foreach ( array('high', 'core', 'default', 'low') as $priority ) + $wp_meta_boxes[$page][$context][$priority][$id] = false; +} + +/** + * Meta Box Accordion Template Function + * + * Largely made up of abstracted code from {@link do_meta_boxes()}, this + * function serves to build meta boxes as list items for display as + * a collapsible accordion. + * + * @since 3.6.0 + * + * @uses global $wp_meta_boxes Used to retrieve registered meta boxes. + * + * @param string|object $screen The screen identifier. + * @param string $context The meta box context. + * @param mixed $object gets passed to the section callback function as first parameter. + * @return int number of meta boxes as accordion sections. + */ +function do_accordion_sections( $screen, $context, $object ) { + global $wp_meta_boxes; + + wp_enqueue_script( 'accordion' ); + + if ( empty( $screen ) ) + $screen = get_current_screen(); + elseif ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + $page = $screen->id; + + $hidden = get_hidden_meta_boxes( $screen ); + ?> +
    +
      + +
    • +

      + + +

      +
      +
      + +
      +
      +
    • + +
    +
    + $id, 'title' => $title, 'callback' => $callback); +} + +/** + * Add a new field to a section of a settings page + * + * Part of the Settings API. Use this to define a settings field that will show + * as part of a settings section inside a settings page. The fields are shown using + * do_settings_fields() in do_settings-sections() + * + * The $callback argument should be the name of a function that echoes out the + * html input tags for this setting field. Use get_option() to retrieve existing + * values to show. + * + * @since 2.7.0 + * @since 4.2.0 The `$class` argument was added. + * + * @global $wp_settings_fields Storage array of settings fields and info about their pages/sections + * + * @param string $id Slug-name to identify the field. Used in the 'id' attribute of tags. + * @param string $title Formatted title of the field. Shown as the label for the field + * during output. + * @param string $callback Function that fills the field with the desired form inputs. The + * function should echo its output. + * @param string $page The slug-name of the settings page on which to show the section + * (general, reading, writing, ...). + * @param string $section Optional. The slug-name of the section of the settings page + * in which to show the box. Default 'default'. + * @param array $args { + * Optional. Extra arguments used when outputting the field. + * + * @type string $label_for When supplied, the setting title will be wrapped + * in a `
      C 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� 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 Iq}^OxF|v_KU)e$6zxorj-M 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

      qn!P6i10rbDopaiVh|LC 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

      -vNtchaz0_t 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 + +

      +
      + + + + + + + +
      +
      + + + diff --git a/wp-content/themes/twentyfourteen/sidebar-footer.php b/wp-content/themes/twentyfourteen/sidebar-footer.php new file mode 100644 index 0000000000..20f3798a20 --- /dev/null +++ b/wp-content/themes/twentyfourteen/sidebar-footer.php @@ -0,0 +1,19 @@ + + +
      + +
      diff --git a/wp-content/themes/twentyfourteen/sidebar.php b/wp-content/themes/twentyfourteen/sidebar.php new file mode 100644 index 0000000000..be3c8e0280 --- /dev/null +++ b/wp-content/themes/twentyfourteen/sidebar.php @@ -0,0 +1,29 @@ + +
      + +

      + + + + + + + + + +
      diff --git a/wp-content/themes/twentyfourteen/single.php b/wp-content/themes/twentyfourteen/single.php new file mode 100644 index 0000000000..e2db3b0454 --- /dev/null +++ b/wp-content/themes/twentyfourteen/single.php @@ -0,0 +1,40 @@ + + +
      +
      + +
      +
      + + ul, +li > ol { + margin: 0 0 0 20px; +} + +img { + -ms-interpolation-mode: bicubic; + border: 0; + vertical-align: middle; +} + +figure { + margin: 0; +} + +fieldset { + border: 1px solid rgba(0, 0, 0, 0.1); + margin: 0 0 24px; + padding: 11px 12px 0; +} + +legend { + white-space: normal; +} + +button, +input, +select, +textarea { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + font-size: 100%; + margin: 0; + max-width: 100%; + vertical-align: baseline; +} + +button, +input { + line-height: normal; +} + +input, +textarea { + background-image: -webkit-linear-gradient(hsla(0,0%,100%,0), hsla(0,0%,100%,0)); /* Removing the inner shadow, rounded corners on iOS inputs */ +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} + +button[disabled], +input[disabled] { + cursor: default; +} + +input[type="checkbox"], +input[type="radio"] { + padding: 0; +} + +input[type="search"] { + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +table, +th, +td { + border: 1px solid rgba(0, 0, 0, 0.1); +} + +table { + border-collapse: separate; + border-spacing: 0; + border-width: 1px 0 0 1px; + margin-bottom: 24px; + width: 100%; +} + +caption, +th, +td { + font-weight: normal; + text-align: left; +} + +th { + border-width: 0 1px 1px 0; + font-weight: bold; +} + +td { + border-width: 0 1px 1px 0; +} + +del { + color: #767676; +} + +hr { + background-color: rgba(0, 0, 0, 0.1); + border: 0; + height: 1px; + margin-bottom: 23px; +} + +/* Support a widely-adopted but non-standard selector for text selection styles + * to achieve a better experience. See https://core.trac.wordpress.org/ticket/25898. + */ +::selection { + background: #24890d; + color: #fff; + text-shadow: none; +} + +::-moz-selection { + background: #24890d; + color: #fff; + text-shadow: none; +} + + +/** + * 2.0 Repeatable Patterns + * ----------------------------------------------------------------------------- + */ + +/* Input fields */ + +input, +textarea { + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 2px; + color: #2b2b2b; + padding: 8px 10px 7px; +} + +textarea { + width: 100%; +} + +input:focus, +textarea:focus { + border: 1px solid rgba(0, 0, 0, 0.3); + outline: 0; +} + +/* Buttons */ + +button, +.button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + background-color: #24890d; + border: 0; + border-radius: 2px; + color: #fff; + font-size: 12px; + font-weight: 700; + padding: 10px 30px 11px; + text-transform: uppercase; + vertical-align: bottom; +} + +button:hover, +button:focus, +.button:hover, +.button:focus, +input[type="button"]:hover, +input[type="button"]:focus, +input[type="reset"]:hover, +input[type="reset"]:focus, +input[type="submit"]:hover, +input[type="submit"]:focus { + background-color: #41a62a; + color: #fff; +} + +button:active, +.button:active, +input[type="button"]:active, +input[type="reset"]:active, +input[type="submit"]:active { + background-color: #55d737; +} + +.search-field { + width: 100%; +} + +.search-submit { + display: none; +} + +/* Placeholder text color -- selectors need to be separate to work. */ + +::-webkit-input-placeholder { + color: #939393; +} + +:-moz-placeholder { + color: #939393; +} + +::-moz-placeholder { + color: #939393; + opacity: 1; /* Since FF19 lowers the opacity of the placeholder by default */ +} + +:-ms-input-placeholder { + color: #939393; +} + +/* Responsive images. Fluid images for posts, comments, and widgets */ + +.comment-content img, +.entry-content img, +.entry-summary img, +#site-header img, +.widget img, +.wp-caption { + max-width: 100%; +} + +/** + * Make sure images with WordPress-added height and width attributes are + * scaled correctly. + */ + +.comment-content img[height], +.entry-content img, +.entry-summary img, +img[class*="align"], +img[class*="wp-image-"], +img[class*="attachment-"], +#site-header img { + height: auto; +} + +img.size-full, +img.size-large, +.wp-post-image, +.post-thumbnail img { + height: auto; + max-width: 100%; +} + +/* Make sure embeds and iframes fit their containers */ + +embed, +iframe, +object, +video { + margin-bottom: 24px; + max-width: 100%; +} + +p > embed, +p > iframe, +p > object, +span > embed, +span > iframe, +span > object { + margin-bottom: 0; +} + +/* Alignment */ + +.alignleft { + float: left; +} + +.alignright { + float: right; +} + +.aligncenter { + display: block; + margin-left: auto; + margin-right: auto; +} + +blockquote.alignleft, +figure.wp-caption.alignleft, +img.alignleft { + margin: 7px 24px 7px 0; +} + +.wp-caption.alignleft { + margin: 7px 14px 7px 0; +} + +blockquote.alignright, +figure.wp-caption.alignright, +img.alignright { + margin: 7px 0 7px 24px; +} + +.wp-caption.alignright { + margin: 7px 0 7px 14px; +} + +blockquote.aligncenter, +img.aligncenter, +.wp-caption.aligncenter { + margin-top: 7px; + margin-bottom: 7px; +} + +.site-content blockquote.alignleft, +.site-content blockquote.alignright { + border-top: 1px solid rgba(0, 0, 0, 0.1); + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + padding-top: 17px; + width: 50%; +} + +.site-content blockquote.alignleft p, +.site-content blockquote.alignright p { + margin-bottom: 17px; +} + +.wp-caption { + margin-bottom: 24px; +} + +.wp-caption img[class*="wp-image-"] { + display: block; + margin: 0; +} + +.wp-caption { + color: #767676; +} + +.wp-caption-text { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + font-size: 12px; + font-style: italic; + line-height: 1.5; + margin: 9px 0; +} + +div.wp-caption .wp-caption-text { + padding-right: 10px; +} + +div.wp-caption.alignright img[class*="wp-image-"], +div.wp-caption.alignright .wp-caption-text { + padding-left: 10px; + padding-right: 0; +} + +.wp-smiley { + border: 0; + margin-bottom: 0; + margin-top: 0; + padding: 0; +} + +/* Assistive text */ + +.screen-reader-text { + clip: rect(1px, 1px, 1px, 1px); + overflow: hidden; + position: absolute !important; + height: 1px; + width: 1px; +} + +.screen-reader-text:focus { + background-color: #f1f1f1; + border-radius: 3px; + box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); + clip: auto; + color: #21759b; + display: block; + font-size: 14px; + font-weight: bold; + height: auto; + line-height: normal; + padding: 15px 23px 14px; + position: absolute; + left: 5px; + top: 5px; + text-decoration: none; + text-transform: none; + width: auto; + z-index: 100000; /* Above WP toolbar */ +} + +.hide { + display: none; +} + +/* Clearing floats */ + +.footer-sidebar:before, +.footer-sidebar:after, +.hentry:before, +.hentry:after, +.gallery:before, +.gallery:after, +.slider-direction-nav:before, +.slider-direction-nav:after, +.contributor-info:before, +.contributor-info:after, +.search-box:before, +.search-box:after, +[class*="content"]:before, +[class*="content"]:after, +[class*="site"]:before, +[class*="site"]:after { + content: ""; + display: table; +} + +.footer-sidebar:after, +.hentry:after, +.gallery:after, +.slider-direction-nav:after, +.contributor-info:after, +.search-box:after, +[class*="content"]:after, +[class*="site"]:after { + clear: both; +} + +/* Genericons */ + +.bypostauthor > article .fn:before, +.comment-edit-link:before, +.comment-reply-link:before, +.comment-reply-login:before, +.comment-reply-title small a:before, +.contributor-posts-link:before, +.menu-toggle:before, +.search-toggle:before, +.slider-direction-nav a:before, +.widget_twentyfourteen_ephemera .widget-title:before { + -webkit-font-smoothing: antialiased; + display: inline-block; + font: normal 16px/1 Genericons; + text-decoration: inherit; + vertical-align: text-bottom; +} + +/* Separators */ + +.site-content span + .entry-date:before, +.full-size-link:before, +.parent-post-link:before, +span + .byline:before, +span + .comments-link:before, +span + .edit-link:before, +.widget_twentyfourteen_ephemera .entry-title:after { + content: "\0020\007c\0020"; +} + + +/** + * 3.0 Basic Structure + * ----------------------------------------------------------------------------- + */ + +.site { + background-color: #fff; + max-width: 1260px; + position: relative; +} + +.main-content { + width: 100%; +} + + +/** + * 4.0 Header + * ----------------------------------------------------------------------------- + */ + +/* Ensure that there is no gap between the header and + the admin bar for WordPress versions before 3.8. */ +#wpadminbar { + min-height: 32px; +} + +#site-header { + position: relative; + z-index: 3; +} + +.site-header { + background-color: #000; + max-width: 1260px; + position: relative; + width: 100%; + z-index: 4; +} + +.header-main { + min-height: 48px; + padding: 0 10px; +} + +.site-title { + float: left; + font-size: 18px; + font-weight: 700; + line-height: 48px; + margin: 0; + + /* Nav-toggle width + search-toggle width - gutter = 86px */ + max-width: -webkit-calc(100% - 86px); + max-width: calc(100% - 86px); +} + +.site-title a, +.site-title a:hover { + color: #fff; + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +/* Search in the header */ + +.search-toggle { + background-color: #24890d; + cursor: pointer; + float: right; + height: 48px; + margin-right: 38px; + text-align: center; + width: 48px; +} + +.search-toggle:hover, +.search-toggle.active { + background-color: #41a62a; +} + +.search-toggle:before { + color: #fff; + content: "\f400"; + font-size: 20px; + margin-top: 14px; +} + +.search-toggle .screen-reader-text { + left: 5px; /* Avoid a horizontal scrollbar when the site has a long menu */ +} + +.search-box-wrapper { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + position: absolute; + top: 48px; + right: 0; + width: 100%; + z-index: 2; +} + +.search-box { + background-color: #41a62a; + padding: 12px; +} + +.search-box .search-field { + background-color: #fff; + border: 0; + float: right; + font-size: 16px; + padding: 2px 2px 3px 6px; + width: 100%; +} + + +/** + * 5.0 Navigation + * ----------------------------------------------------------------------------- + */ + +.site-navigation ul { + list-style: none; + margin: 0; +} + +.site-navigation li { + border-top: 1px solid rgba(255, 255, 255, 0.2); +} + +.site-navigation ul ul { + margin-left: 20px; +} + +.site-navigation a { + color: #fff; + display: block; + text-transform: uppercase; +} + +.site-navigation a:hover { + color: #41a62a; +} + +.site-navigation .current_page_item > a, +.site-navigation .current_page_ancestor > a, +.site-navigation .current-menu-item > a, +.site-navigation .current-menu-ancestor > a { + color: #55d737; + font-weight: 900; +} + +/* Primary Navigation */ + +.primary-navigation { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + font-size: 14px; + padding-top: 24px; +} + +.primary-navigation.toggled-on { + padding: 72px 0 36px; +} + +.primary-navigation .nav-menu { + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + display: none; +} + +.primary-navigation.toggled-on .nav-menu { + display: block; +} + +.primary-navigation a { + padding: 7px 0; +} + +/* Secondary Navigation */ + +.secondary-navigation { + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + font-size: 12px; + margin: 48px 0; +} + +.secondary-navigation a { + padding: 9px 0; +} + +.menu-toggle { + background-color: #000; + border-radius: 0; + cursor: pointer; + height: 48px; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + top: 0; + right: 0; + text-align: center; + width: 48px; +} + +.menu-toggle:before { + color: #fff; + content: "\f419"; + padding: 16px; +} + +.menu-toggle:active, +.menu-toggle:focus, +.menu-toggle:hover { + background-color: #444; +} + +.menu-toggle:focus { + outline: 1px dotted; +} + + +/** + * 6.0 Content + * ----------------------------------------------------------------------------- + */ + +.content-area { + padding-top: 48px; +} + +.hentry { + margin: 0 auto 48px; + max-width: 672px; +} + +.site-content .entry-header, +.site-content .entry-content, +.site-content .entry-summary, +.site-content .entry-meta, +.page-content { + margin: 0 auto; + max-width: 474px; +} + +.page-content { + margin-bottom: 48px; +} + + +/** + * 6.1 Post Thumbnail + * ----------------------------------------------------------------------------- + */ + +.post-thumbnail { + background: #b2b2b2 url(images/pattern-light.svg) repeat fixed; + display: block; + position: relative; + width: 100%; + z-index: 0; +} + +a.post-thumbnail:hover { + background-color: #999; +} + +.full-width .post-thumbnail img { + display: block; + margin: 0 auto; +} + + +/** + * 6.2 Entry Header + * ----------------------------------------------------------------------------- + */ + +.entry-header { + position: relative; + z-index: 1; +} + +.entry-title { + font-size: 33px; + font-weight: 300; + line-height: 1.0909090909; + margin-bottom: 12px; + margin: 0 0 12px 0; + text-transform: uppercase; +} + +.entry-title a { + color: #2b2b2b; +} + +.entry-title a:hover { + color: #41a62a; +} + +.site-content .entry-header { + background-color: #fff; + padding: 0 10px 12px; +} + +.site-content .has-post-thumbnail .entry-header { + padding-top: 24px; +} + + +/** + * 6.3 Entry Meta + * ----------------------------------------------------------------------------- + */ + +.entry-meta { + clear: both; + color: #767676; + font-size: 12px; + font-weight: 400; + line-height: 1.3333333333; + text-transform: uppercase; +} + +.entry-meta a { + color: #767676; +} + +.entry-meta a:hover { + color: #41a62a; +} + +.sticky .entry-date { + display: none; +} + +.cat-links { + font-weight: 900; + text-transform: uppercase; +} + +.cat-links a { + color: #2b2b2b; +} + +.cat-links a:hover { + color: #41a62a; +} + +.byline { + display: none; +} + +.single .byline, +.group-blog .byline { + display: inline; +} + +.site-content .entry-meta { + background-color: #fff; + margin-bottom: 8px; +} + +.site-content footer.entry-meta { + margin: 24px auto 0; + padding: 0 10px; +} + +/* Tag links style */ + +.entry-meta .tag-links a { + background-color: #767676; + border-radius: 0 2px 2px 0; + color: #fff; + display: inline-block; + font-size: 11px; + font-weight: 700; + line-height: 1.2727272727; + margin: 2px 4px 2px 10px; + padding: 3px 7px; + position: relative; + text-transform: uppercase; +} + +.entry-meta .tag-links a:hover { + background-color: #41a62a; + color: #fff; +} + +.entry-meta .tag-links a:before { + border-top: 10px solid transparent; + border-right: 8px solid #767676; + border-bottom: 10px solid transparent; + content: ""; + height: 0; + position: absolute; + top: 0; + left: -8px; + width: 0; +} + +.entry-meta .tag-links a:hover:before { + border-right-color: #41a62a; +} + +.entry-meta .tag-links a:after { + background-color: #fff; + border-radius: 50%; + content: ""; + height: 4px; + position: absolute; + top: 8px; + left: -2px; + width: 4px; +} + + +/** + * 6.4 Entry Content + * ----------------------------------------------------------------------------- + */ + +.entry-content, +.entry-summary, +.page-content { + -webkit-hyphens: auto; + -moz-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; + word-wrap: break-word; +} + +.site-content .entry-content, +.site-content .entry-summary, +.page-content { + background-color: #fff; + padding: 12px 10px 0; +} + +.page .entry-content { + padding-top: 0; +} + +.entry-content h1:first-child, +.entry-content h2:first-child, +.entry-content h3:first-child, +.entry-content h4:first-child, +.entry-content h5:first-child, +.entry-content h6:first-child, +.entry-summary h1:first-child, +.entry-summary h2:first-child, +.entry-summary h3:first-child, +.entry-summary h4:first-child, +.entry-summary h5:first-child, +.entry-summary h6:first-child, +.page-content h1:first-child, +.page-content h2:first-child, +.page-content h3:first-child, +.page-content h4:first-child, +.page-content h5:first-child, +.page-content h6:first-child { + margin-top: 0; +} + +.entry-content a, +.entry-summary a, +.page-content a, +.comment-content a { + text-decoration: underline; +} + +.entry-content a:hover, +.entry-summary a:hover, +.page-content a:hover, +.comment-content a:hover, +.entry-content a.button, +.entry-summary a.button, +.page-content a.button, +.comment-content a.button { + text-decoration: none; +} + +.entry-content table, +.comment-content table { + font-size: 14px; + line-height: 1.2857142857; + margin-bottom: 24px; +} + +.entry-content th, +.comment-content th { + font-weight: 700; + padding: 8px; + text-transform: uppercase; +} + +.entry-content td, +.comment-content td { + padding: 8px; +} + +.entry-content .edit-link { + clear: both; + display: block; + font-size: 12px; + font-weight: 400; + line-height: 1.3333333333; + text-transform: uppercase; +} + +.entry-content .edit-link a { + color: #767676; + text-decoration: none; +} + +.entry-content .edit-link a:hover { + color: #41a62a; +} + +.entry-content .more-link { + white-space: nowrap; +} + +/* Mediaelements */ + +.hentry .mejs-container { + margin: 12px 0 18px; +} + +.hentry .mejs-mediaelement, +.hentry .mejs-container .mejs-controls { + background: #000; +} + +.hentry .mejs-controls .mejs-time-rail .mejs-time-loaded, +.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { + background: #fff; +} + +.hentry .mejs-controls .mejs-time-rail .mejs-time-current { + background: #24890d; +} + +.hentry .mejs-controls .mejs-time-rail .mejs-time-total, +.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total { + background: rgba(255, 255, 255, .33); +} + +.hentry .mejs-container .mejs-controls .mejs-time { + padding-top: 9px; +} + +.hentry .mejs-controls .mejs-time-rail span, +.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total, +.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { + border-radius: 0; +} + +.hentry .mejs-overlay-loading { + background: transparent; +} + +.hentry .mejs-overlay-button { + background-color: #fff; + background-image: none; + border-radius: 2px; + box-shadow: 1px 1px 1px rgba(0,0,0,.8); + color: #000; + height: 36px; + margin-left: -24px; + width: 48px; +} + +.hentry .mejs-overlay-button:before { + -webkit-font-smoothing: antialiased; + content: '\f452'; + display: inline-block; + font: normal 32px/1.125 Genericons; + position: absolute; + top: 1px; + left: 10px; +} + +.hentry .mejs-controls .mejs-button button:focus { + outline: none; +} + +.hentry .mejs-controls .mejs-button button { + -webkit-font-smoothing: antialiased; + background: none; + color: #fff; + display: inline-block; + font: normal 16px/1 Genericons; +} + +.hentry .mejs-playpause-button.mejs-play button:before { + content: '\f452'; +} + +.hentry .mejs-playpause-button.mejs-pause button:before { + content: '\f448'; +} + +.hentry .mejs-volume-button.mejs-mute button:before { + content: '\f109'; + font-size: 20px; + position: absolute; + top: -2px; + left: 0; +} + +.hentry .mejs-volume-button.mejs-unmute button:before { + content: '\f109'; + left: 0; + position: absolute; + top: 0; +} + +.hentry .mejs-fullscreen-button button:before { + content: '\f474'; +} + +.hentry .mejs-fullscreen-button.mejs-unfullscreen button:before { + content: '\f406'; +} + +.hentry .mejs-overlay:hover .mejs-overlay-button { + background-color: #24890d; + color: #fff; +} + +.hentry .mejs-controls .mejs-button button:hover { + color: #41a62a; +} + +.content-sidebar .wp-playlist-item .wp-playlist-caption { + color: #000; +} + +/* Page links */ + +.page-links { + clear: both; + font-size: 12px; + font-weight: 900; + line-height: 2; + margin: 24px 0; + text-transform: uppercase; +} + +.page-links a, +.page-links > span { + background: #fff; + border: 1px solid #fff; + display: inline-block; + height: 22px; + margin: 0 1px 2px 0; + text-align: center; + width: 22px; +} + +.page-links a { + background: #000; + border: 1px solid #000; + color: #fff; + text-decoration: none; +} + +.page-links a:hover { + background: #41a62a; + border: 1px solid #41a62a; + color: #fff; +} + +.page-links > .page-links-title { + height: auto; + margin: 0; + padding-right: 7px; + width: auto; +} + + +/** + * 6.5 Gallery + * ----------------------------------------------------------------------------- + */ + +.gallery { + margin-bottom: 20px; +} + +.gallery-item { + float: left; + margin: 0 4px 4px 0; + overflow: hidden; + position: relative; +} + +.gallery-columns-1 .gallery-item { + max-width: 100%; +} + +.gallery-columns-2 .gallery-item { + max-width: 48%; + max-width: -webkit-calc(50% - 4px); + max-width: calc(50% - 4px); +} + +.gallery-columns-3 .gallery-item { + max-width: 32%; + max-width: -webkit-calc(33.3% - 4px); + max-width: calc(33.3% - 4px); +} + +.gallery-columns-4 .gallery-item { + max-width: 23%; + max-width: -webkit-calc(25% - 4px); + max-width: calc(25% - 4px); +} + +.gallery-columns-5 .gallery-item { + max-width: 19%; + max-width: -webkit-calc(20% - 4px); + max-width: calc(20% - 4px); +} + +.gallery-columns-6 .gallery-item { + max-width: 15%; + max-width: -webkit-calc(16.7% - 4px); + max-width: calc(16.7% - 4px); +} + +.gallery-columns-7 .gallery-item { + max-width: 13%; + max-width: -webkit-calc(14.28% - 4px); + max-width: calc(14.28% - 4px); +} + +.gallery-columns-8 .gallery-item { + max-width: 11%; + max-width: -webkit-calc(12.5% - 4px); + max-width: calc(12.5% - 4px); +} + +.gallery-columns-9 .gallery-item { + max-width: 9%; + max-width: -webkit-calc(11.1% - 4px); + max-width: calc(11.1% - 4px); +} + +.gallery-columns-1 .gallery-item:nth-of-type(1n), +.gallery-columns-2 .gallery-item:nth-of-type(2n), +.gallery-columns-3 .gallery-item:nth-of-type(3n), +.gallery-columns-4 .gallery-item:nth-of-type(4n), +.gallery-columns-5 .gallery-item:nth-of-type(5n), +.gallery-columns-6 .gallery-item:nth-of-type(6n), +.gallery-columns-7 .gallery-item:nth-of-type(7n), +.gallery-columns-8 .gallery-item:nth-of-type(8n), +.gallery-columns-9 .gallery-item:nth-of-type(9n) { + margin-right: 0; +} + +.gallery-columns-1.gallery-size-medium figure.gallery-item:nth-of-type(1n+1), +.gallery-columns-1.gallery-size-thumbnail figure.gallery-item:nth-of-type(1n+1), +.gallery-columns-2.gallery-size-thumbnail figure.gallery-item:nth-of-type(2n+1), +.gallery-columns-3.gallery-size-thumbnail figure.gallery-item:nth-of-type(3n+1) { + clear: left; +} + +.gallery-caption { + background-color: rgba(0, 0, 0, 0.7); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #fff; + font-size: 12px; + line-height: 1.5; + margin: 0; + max-height: 50%; + opacity: 0; + padding: 6px 8px; + position: absolute; + bottom: 0; + left: 0; + text-align: left; + width: 100%; +} + +.gallery-caption:before { + content: ""; + height: 100%; + min-height: 49px; + position: absolute; + top: 0; + left: 0; + width: 100%; +} + +.gallery-item:hover .gallery-caption { + opacity: 1; +} + +.gallery-columns-7 .gallery-caption, +.gallery-columns-8 .gallery-caption, +.gallery-columns-9 .gallery-caption { + display: none; +} + + +/** + * 6.6 Post Formats + * ----------------------------------------------------------------------------- + */ + +.format-aside .entry-content, +.format-aside .entry-summary, +.format-quote .entry-content, +.format-quote .entry-summary, +.format-link .entry-content, +.format-link .entry-summary { + padding-top: 0; +} + +.site-content .format-link .entry-title, +.site-content .format-aside .entry-title, +.site-content .format-quote .entry-title { + display: none; +} + + +/** + * 6.7 Post/Image/Paging Navigation + * ----------------------------------------------------------------------------- + */ + +.nav-links { + -webkit-hyphens: auto; + -moz-hyphens: auto; + -ms-hyphens: auto; + border-top: 1px solid rgba(0, 0, 0, 0.1); + hyphens: auto; + word-wrap: break-word; +} + +.post-navigation, +.image-navigation { + margin: 24px auto 48px; + max-width: 474px; + padding: 0 10px; +} + +.post-navigation a, +.image-navigation .previous-image, +.image-navigation .next-image { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + padding: 11px 0 12px; + width: 100%; +} + +.post-navigation .meta-nav { + color: #767676; + display: block; + font-size: 12px; + font-weight: 900; + line-height: 2; + text-transform: uppercase; +} + +.post-navigation a, +.image-navigation a { + color: #2b2b2b; + display: block; + font-size: 14px; + font-weight: 700; + line-height: 1.7142857142; + text-transform: none; +} + +.post-navigation a:hover, +.image-navigation a:hover { + color: #41a62a; +} + +/* Paging Navigation */ + +.paging-navigation { + border-top: 5px solid #000; + margin: 48px 0; +} + +.paging-navigation .loop-pagination { + margin-top: -5px; + text-align: center; +} + +.paging-navigation .page-numbers { + border-top: 5px solid transparent; + display: inline-block; + font-size: 14px; + font-weight: 900; + margin-right: 1px; + padding: 7px 16px; + text-transform: uppercase; +} + +.paging-navigation a { + color: #2b2b2b; +} + +.paging-navigation .page-numbers.current { + border-top: 5px solid #24890d; +} + +.paging-navigation a:hover { + border-top: 5px solid #41a62a; + color: #2b2b2b; +} + + +/** + * 6.8 Attachments + * ----------------------------------------------------------------------------- + */ + +.attachment .content-sidebar, +.attachment .post-thumbnail { + display: none; +} + +.attachment .entry-content { + padding-top: 0; +} + +.attachment footer.entry-meta { + text-transform: none; +} + +.entry-attachment .attachment { + margin-bottom: 24px; +} + + +/** + * 6.9 Archives + * ----------------------------------------------------------------------------- + */ + +.archive-header, +.page-header { + margin: 24px auto; + max-width: 474px; +} + +.archive-title, +.page-title { + font-size: 16px; + font-weight: 900; + line-height: 1.5; + margin: 0; +} + +.taxonomy-description, +.author-description { + color: #767676; + font-size: 14px; + line-height: 1.2857142857; + padding-top: 18px; +} + +.taxonomy-description p, +.author-description p { + margin-bottom: 18px; +} + +.taxonomy-description p:last-child, +.author-description p:last-child { + margin-bottom: 0; +} + +.taxonomy-description a, +.author-description a { + text-decoration: underline; +} + +.taxonomy-description a:hover, +.author-description a:hover { + text-decoration: none; +} + + +/** + * 6.10 Contributor Page + * ----------------------------------------------------------------------------- + */ + +.contributor { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 48px 10px; +} + +.contributor:first-of-type { + padding-top: 24px; +} + +.contributor-info { + margin: 0 auto; + max-width: 474px; +} + +.contributor-avatar { + border: 1px solid rgba(0, 0, 0, 0.1); + float: left; + margin: 0 30px 20px 0; + padding: 2px; +} + +.contributor-name { + font-size: 16px; + font-weight: 900; + line-height: 1.5; + margin: 0; +} + +.contributor-bio a { + text-decoration: underline; +} + +.contributor-bio a:hover { + text-decoration: none; +} + +.contributor-posts-link { + display: inline-block; + line-height: normal; + padding: 10px 30px; +} + +.contributor-posts-link:before { + content: "\f443"; +} + + +/** + * 6.11 404 Page + * ----------------------------------------------------------------------------- + */ + +.error404 .page-content { + padding-top: 0; +} + +.error404 .page-content .search-form { + margin-bottom: 24px; +} + + +/** + * 6.12 Full-width + * ----------------------------------------------------------------------------- + */ + +.full-width .hentry { + max-width: 100%; +} + + +/** + * 6.13 Singular + * ----------------------------------------------------------------------------- + */ + +.singular .site-content .hentry.has-post-thumbnail { + margin-top: -48px; +} + + +/** + * 6.14 Comments + * ----------------------------------------------------------------------------- + */ + +.comments-area { + margin: 48px auto; + max-width: 474px; + padding: 0 10px; +} + +.comment-reply-title, +.comments-title { + font: 900 16px/1.5 Lato, sans-serif; + margin: 0; + text-transform: uppercase; +} + +.comment-list { + list-style: none; + margin: 0 0 48px 0; +} + +.comment-author { + font-size: 14px; + line-height: 1.7142857142; +} + +.comment-list .reply, +.comment-metadata { + font-size: 12px; + line-height: 2; + text-transform: uppercase; +} + +.comment-list .reply { + margin-top: 24px; +} + +.comment-author .fn { + font-weight: 900; +} + +.comment-author a { + color: #2b2b2b; +} + +.comment-list .trackback a, +.comment-list .pingback a, +.comment-metadata a { + color: #767676; +} + +.comment-author a:hover, +.comment-list .pingback a:hover, +.comment-list .trackback a:hover, +.comment-metadata a:hover { + color: #41a62a; +} + +.comment-list article, +.comment-list .pingback, +.comment-list .trackback { + border-top: 1px solid rgba(0, 0, 0, 0.1); + margin-bottom: 24px; + padding-top: 24px; +} + +.comment-list > li:first-child > article, +.comment-list > .pingback:first-child, +.comment-list > .trackback:first-child { + border-top: 0; +} + +.comment-author { + position: relative; +} + +.comment-author .avatar { + border: 1px solid rgba(0, 0, 0, 0.1); + height: 18px; + padding: 2px; + position: absolute; + top: 0; + left: 0; + width: 18px; +} + +.bypostauthor > article .fn:before { + content: "\f408"; + margin: 0 2px 0 -2px; + position: relative; + top: -1px; +} + +.says { + display: none; +} + +.comment-author, +.comment-awaiting-moderation, +.comment-content, +.comment-list .reply, +.comment-metadata { + padding-left: 30px; +} + +.comment-edit-link { + margin-left: 10px; +} + +.comment-edit-link:before { + content: "\f411"; +} + +.comment-reply-link:before, +.comment-reply-login:before { + content: "\f412"; + margin-right: 2px; +} + +.comment-content { + -webkit-hyphens: auto; + -moz-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; + word-wrap: break-word; +} + +.comment-content ul, +.comment-content ol { + margin: 0 0 24px 22px; +} + +.comment-content li > ul, +.comment-content li > ol { + margin-bottom: 0; +} + +.comment-content > :last-child { + margin-bottom: 0; +} + +.comment-list .children { + list-style: none; + margin-left: 15px; +} + +.comment-respond { + margin-bottom: 24px; + padding: 0; +} + +.comment .comment-respond { + margin-top: 24px; +} + +.comment-respond h3 { + margin-top: 0; + margin-bottom: 24px; +} + +.comment-notes, +.comment-awaiting-moderation, +.logged-in-as, +.no-comments, +.form-allowed-tags, +.form-allowed-tags code { + color: #767676; +} + +.comment-notes, +.comment-awaiting-moderation, +.logged-in-as { + font-size: 14px; + line-height: 1.7142857142; +} + +.no-comments { + font-size: 16px; + font-weight: 900; + line-height: 1.5; + margin-top: 24px; + text-transform: uppercase; +} + +.comment-form label { + display: block; +} + +.comment-form input[type="text"], +.comment-form input[type="email"], +.comment-form input[type="url"] { + width: 100%; +} + +.form-allowed-tags, +.form-allowed-tags code { + font-size: 12px; + line-height: 1.5; +} + +.required { + color: #c0392b; +} + +.comment-reply-title small a { + color: #2b2b2b; + float: right; + height: 24px; + overflow: hidden; + width: 24px; +} + +.comment-reply-title small a:hover { + color: #41a62a; +} + +.comment-reply-title small a:before { + content: "\f405"; + font-size: 32px; +} + +.comment-navigation { + font-size: 12px; + line-height: 2; + margin-bottom: 48px; + text-transform: uppercase; +} + +.comment-navigation .nav-next, +.comment-navigation .nav-previous { + display: inline-block; +} + +.comment-navigation .nav-previous a { + margin-right: 10px; +} + +#comment-nav-above { + margin-top: 36px; + margin-bottom: 0; +} + + +/** + * 7.0 Sidebars + * ----------------------------------------------------------------------------- + */ + +/* Secondary */ + +#secondary { + background-color: #000; + border-top: 1px solid #000; + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + clear: both; + color: rgba(255, 255, 255, 0.7); + margin-top: -1px; + padding: 0 10px; + position: relative; + z-index: 2; +} + +.site-description { + display: none; + font-size: 12px; + font-weight: 400; + line-height: 1.5; +} + +/* Primary Sidebar */ + +.primary-sidebar { + padding-top: 48px; +} + +.secondary-navigation + .primary-sidebar { + padding-top: 0; +} + +/* Content Sidebar */ + +.content-sidebar { + border-top: 1px solid rgba(0, 0, 0, 0.1); + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #767676; + padding: 48px 10px 0; +} + + +/** + * 7.1 Widgets + * ----------------------------------------------------------------------------- + */ + +/* Primary Sidebar, Footer Sidebar */ + +.widget { + font-size: 14px; + -webkit-hyphens: auto; + -moz-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; + line-height: 1.2857142857; + margin-bottom: 48px; + width: 100%; + word-wrap: break-word; +} + +.widget a { + color: #fff; +} + +.widget a:hover { + color: #41a62a; +} + +.widget h1, +.widget h2, +.widget h3, +.widget h4, +.widget h5, +.widget h6 { + margin: 24px 0 12px; +} + +.widget h1 { + font-size: 22px; + line-height: 1.0909090909; +} + +.widget h2 { + font-size: 20px; + line-height: 1.2; +} + +.widget h3 { + font-size: 18px; + line-height: 1.3333333333; +} + +.widget h4 { + font-size: 16px; + line-height: 1.5; +} + +.widget h5 { + font-size: 14px; + line-height: 1.7142857142; +} + +.widget h6 { + font-size: 12px; + line-height: 2; +} + +.widget address { + margin-bottom: 18px; +} + +.widget abbr[title] { + border-color: rgba(255, 255, 255, 0.7); +} + +.widget mark, +.widget ins { + color: #000; +} + +.widget pre, +.widget fieldset { + border-color: rgba(255, 255, 255, 0.2); +} + +.widget code, +.widget kbd, +.widget tt, +.widget var, +.widget samp, +.widget pre { + font-size: 12px; + line-height: 1.5; +} + +.widget blockquote { + color: rgba(255, 255, 255, 0.7); + font-size: 18px; + line-height: 1.5; + margin-bottom: 18px; +} + +.widget blockquote cite { + color: #fff; + font-size: 14px; + line-height: 1.2857142857; +} + +.widget dl, +.widget dd { + margin-bottom: 18px; +} + +.widget ul, +.widget ol { + list-style: none; + margin: 0; +} + +.widget li > ol, +.widget li > ul { + margin-left: 10px; +} + +.widget table, +.widget th, +.widget td { + border-color: rgba(255, 255, 255, 0.2); +} + +.widget table { + margin-bottom: 18px; +} + +.widget del { + color: rgba(255, 255, 255, 0.4); +} + +.widget hr { + background-color: rgba(255, 255, 255, 0.2); +} + +.widget p { + margin-bottom: 18px; +} + +.widget-area .widget input, +.widget-area .widget textarea { + background-color: rgba(255, 255, 255, 0.1); + border-color: rgba(255, 255, 255, 0.2); + color: #fff; + font-size: 16px; + padding: 1px 2px 2px 4px; +} + +.widget-area .widget input:focus, +.widget-area .widget textarea:focus { + border-color: rgba(255, 255, 255, 0.3); +} + +.widget button, +.widget .button, +.widget input[type="button"], +.widget input[type="reset"], +.widget input[type="submit"] { + background-color: #24890d; + border: 0; + font-size: 12px; + padding: 5px 15px 4px; +} + +.widget input[type="button"]:hover, +.widget input[type="button"]:focus, +.widget input[type="reset"]:hover, +.widget input[type="reset"]:focus, +.widget input[type="submit"]:hover, +.widget input[type="submit"]:focus { + background-color: #41a62a; +} + +.widget input[type="button"]:active, +.widget input[type="reset"]:active, +.widget input[type="submit"]:active { + background-color: #55d737; +} + +.widget .wp-caption { + color: rgba(255, 255, 255, 0.7); + margin-bottom: 18px; +} + +.widget .widget-title { + font-size: 14px; + font-weight: 700; + line-height: 1.7142857142; + margin: 0 0 24px 0; + text-transform: uppercase; +} + +.widget-title, +.widget-title a { + color: #fff; +} + +.widget-title a:hover { + color: #41a62a; +} + +/* Calendar Widget*/ + +.widget_calendar table { + line-height: 2; + margin: 0; +} + +.widget_calendar caption { + color: #fff; + font-weight: 700; + line-height: 1.7142857142; + margin-bottom: 18px; + text-align: left; + text-transform: uppercase; +} + +.widget_calendar thead th { + background-color: rgba(255, 255, 255, 0.1); +} + +.widget_calendar tbody td, +.widget_calendar thead th { + text-align: center; +} + +.widget_calendar tbody a { + background-color: #24890d; + color: #fff; + display: block; +} + +.widget_calendar tbody a:hover { + background-color: #41a62a; +} + +.widget_calendar tbody a:hover { + color: #fff; +} + +.widget_calendar #prev { + padding-left: 5px; +} + +.widget_calendar #next { + padding-right: 5px; + text-align: right; +} + +/* Ephemera Widget*/ + +.widget_twentyfourteen_ephemera > ol > li { + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + margin-bottom: 18px; + padding: 0; +} + +.widget_twentyfourteen_ephemera .hentry { + margin: 0; + max-width: 100%; +} + +.widget_twentyfourteen_ephemera .entry-title, +.widget_twentyfourteen_ephemera .entry-meta, +.widget_twentyfourteen_ephemera .wp-caption-text, +.widget_twentyfourteen_ephemera .post-format-archive-link, +.widget_twentyfourteen_ephemera .entry-content table { + font-size: 12px; + line-height: 1.5; +} + +.widget_twentyfourteen_ephemera .entry-title { + display: inline; + font-weight: 400; +} + +.widget_twentyfourteen_ephemera .entry-meta { + margin-bottom: 18px; +} + +.widget_twentyfourteen_ephemera .entry-meta a { + color: rgba(255, 255, 255, 0.7); +} + +.widget_twentyfourteen_ephemera .entry-meta a:hover { + color: #41a62a; +} + +.widget_twentyfourteen_ephemera .entry-content ul, +.widget_twentyfourteen_ephemera .entry-content ol { + margin: 0 0 18px 20px; +} + +.widget_twentyfourteen_ephemera .entry-content ul { + list-style: disc; +} + +.widget_twentyfourteen_ephemera .entry-content ol { + list-style: decimal; +} + +.widget_twentyfourteen_ephemera .entry-content li > ul, +.widget_twentyfourteen_ephemera .entry-content li > ol { + margin: 0 0 0 20px; +} + +.widget_twentyfourteen_ephemera .entry-content th, +.widget_twentyfourteen_ephemera .entry-content td { + padding: 6px; +} + +.widget_twentyfourteen_ephemera .post-format-archive-link { + font-weight: 700; + text-transform: uppercase; +} + +/* List Style Widgets*/ + +.widget_archive li, +.widget_categories li, +.widget_links li, +.widget_meta li, +.widget_nav_menu li, +.widget_pages li, +.widget_recent_comments li, +.widget_recent_entries li { + border-top: 1px solid rgba(255, 255, 255, 0.2); + padding: 8px 0 9px; +} + +.widget_archive li:first-child, +.widget_categories li:first-child, +.widget_links li:first-child, +.widget_meta li:first-child, +.widget_nav_menu li:first-child, +.widget_pages li:first-child, +.widget_recent_comments li:first-child, +.widget_recent_entries li:first-child { + border-top: 0; +} + +.widget_categories li ul, +.widget_nav_menu li ul, +.widget_pages li ul { + border-top: 1px solid rgba(255, 255, 255, 0.2); + margin-top: 9px; +} + +.widget_categories li li:last-child, +.widget_nav_menu li li:last-child, +.widget_pages li li:last-child { + padding-bottom: 0; +} + +/* Recent Posts Widget */ + +.widget_recent_entries .post-date { + display: block; +} + +/* RSS Widget */ + +.rsswidget img { + margin-top: -4px; +} + +.rssSummary { + margin: 9px 0; +} + +.rss-date { + display: block; +} + +.widget_rss li { + margin-bottom: 18px; +} + +.widget_rss li:last-child { + margin-bottom: 0; +} + +/* Text Widget */ + +.widget_text > div > :last-child { + margin-bottom: 0; +} + + +/** + * 7.2 Content Sidebar Widgets + * ----------------------------------------------------------------------------- + */ + +.content-sidebar .widget a { + color: #24890d; +} + +.content-sidebar .widget a:hover { + color: #41a62a; +} + +.content-sidebar .widget pre { + border-color: rgba(0, 0, 0, 0.1); +} + +.content-sidebar .widget mark, +.content-sidebar .widget ins { + color: #2b2b2b; +} + +.content-sidebar .widget abbr[title] { + border-color: #2b2b2b; +} + +.content-sidebar .widget fieldset { + border-color: rgba(0, 0, 0, 0.1); +} + +.content-sidebar .widget blockquote { + color: #767676; +} + +.content-sidebar .widget blockquote cite { + color: #2b2b2b; +} + +.content-sidebar .widget li > ol, +.content-sidebar .widget li > ul { + margin-left: 18px; +} + +.content-sidebar .widget table, +.content-sidebar .widget th, +.content-sidebar .widget td { + border-color: rgba(0, 0, 0, 0.1); +} + +.content-sidebar .widget del { + color: #767676; +} + +.content-sidebar .widget hr { + background-color: rgba(0, 0, 0, 0.1); +} + +.content-sidebar .widget input, +.content-sidebar .widget textarea { + background-color: #fff; + border-color: rgba(0, 0, 0, 0.1); + color: #2b2b2b; +} + +.content-sidebar .widget input:focus, +.content-sidebar .widget textarea:focus { + border-color: rgba(0, 0, 0, 0.3); +} + +.content-sidebar .widget input[type="button"], +.content-sidebar .widget input[type="reset"], +.content-sidebar .widget input[type="submit"] { + background-color: #24890d; + border: 0; + color: #fff; +} + +.content-sidebar .widget input[type="button"]:hover, +.content-sidebar .widget input[type="button"]:focus, +.content-sidebar .widget input[type="reset"]:hover, +.content-sidebar .widget input[type="reset"]:focus, +.content-sidebar .widget input[type="submit"]:hover, +.content-sidebar .widget input[type="submit"]:focus { + background-color: #41a62a; +} + +.content-sidebar .widget input[type="button"]:active, +.content-sidebar .widget input[type="reset"]:active, +.content-sidebar .widget input[type="submit"]:active { + background-color: #55d737; +} + +.content-sidebar .widget .wp-caption { + color: #767676; +} + +.content-sidebar .widget .widget-title { + border-top: 5px solid #000; + color: #2b2b2b; + font-size: 14px; + font-weight: 900; + margin: 0 0 18px; + padding-top: 7px; + text-transform: uppercase; +} + +.content-sidebar .widget .widget-title a { + color: #2b2b2b; +} + +.content-sidebar .widget .widget-title a:hover { + color: #41a62a; +} + +/* List Style Widgets*/ + +.content-sidebar .widget_archive li, +.content-sidebar .widget_categories li, +.content-sidebar .widget_links li, +.content-sidebar .widget_meta li, +.content-sidebar .widget_nav_menu li, +.content-sidebar .widget_pages li, +.content-sidebar .widget_recent_comments li, +.content-sidebar .widget_recent_entries li, +.content-sidebar .widget_categories li ul, +.content-sidebar .widget_nav_menu li ul, +.content-sidebar .widget_pages li ul { + border-color: rgba(0, 0, 0, 0.1); +} + +/* Calendar Widget */ + +.content-sidebar .widget_calendar caption { + color: #2b2b2b; + font-weight: 900; +} + +.content-sidebar .widget_calendar thead th { + background-color: rgba(0, 0, 0, 0.02); +} + +.content-sidebar .widget_calendar tbody a, +.content-sidebar .widget_calendar tbody a:hover { + color: #fff; +} + +/* Ephemera widget*/ + +.content-sidebar .widget_twentyfourteen_ephemera .widget-title { + line-height: 1.2857142857; + padding-top: 1px; +} + +.content-sidebar .widget_twentyfourteen_ephemera .widget-title:before { + background-color: #000; + color: #fff; + margin: -1px 9px 0 0; + padding: 6px 0 9px; + text-align: center; + vertical-align: middle; + width: 36px; +} + +.content-sidebar .widget_twentyfourteen_ephemera .video.widget-title:before { + content: "\f104"; +} + +.content-sidebar .widget_twentyfourteen_ephemera .audio.widget-title:before { + content: "\f109"; +} + +.content-sidebar .widget_twentyfourteen_ephemera .image.widget-title:before { + content: "\f473"; +} + +.content-sidebar .widget_twentyfourteen_ephemera .gallery.widget-title:before { + content: "\f103"; +} + +.content-sidebar .widget_twentyfourteen_ephemera .aside.widget-title:before { + content: "\f101"; +} + +.content-sidebar .widget_twentyfourteen_ephemera .quote.widget-title:before { + content: "\f106"; +} + +.content-sidebar .widget_twentyfourteen_ephemera .link.widget-title:before { + content: "\f107"; +} + +.content-sidebar .widget_twentyfourteen_ephemera > ol > li { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); +} + +.content-sidebar .widget_twentyfourteen_ephemera .entry-meta { + color: #ccc; +} + +.content-sidebar .widget_twentyfourteen_ephemera .entry-meta a { + color: #767676; +} + +.content-sidebar .widget_twentyfourteen_ephemera .entry-meta a:hover { + color: #41a62a; +} + +.content-sidebar.widget_twentyfourteen_ephemera blockquote cite { + font-size: 13px; + line-height: 1.3846153846; +} + +.content-sidebar .widget_twentyfourteen_ephemera .post-format-archive-link { + font-weight: 900; +} + + +/** + * 8.0 Footer + * ----------------------------------------------------------------------------- + */ + +#supplementary { + padding: 0 10px; +} + +.site-footer, +.site-info, +.site-info a { + color: rgba(255, 255, 255, 0.7); +} + +.site-footer { + background-color: #000; + font-size: 12px; + position: relative; + z-index: 3; +} + +.footer-sidebar { + padding-top: 48px; +} + +.site-info { + padding: 15px 10px; +} + +#supplementary + .site-info { + border-top: 1px solid rgba(255, 255, 255, 0.2); +} + +.site-info a:hover { + color: #41a62a; +} + + +/** + * 9.0 Featured Content + * ----------------------------------------------------------------------------- + */ + +.featured-content { + background: #000 url(images/pattern-dark.svg) repeat fixed; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + position: relative; + width: 100%; +} + +.featured-content-inner { + overflow: hidden; +} + +.featured-content .hentry { + color: #fff; + margin: 0; + max-width: 100%; + width: 100%; +} + +.featured-content .post-thumbnail, +.featured-content .post-thumbnail:hover { + background: transparent; +} + +.featured-content .post-thumbnail { + display: block; + position: relative; + padding-top: 55.357142857%; + overflow: hidden; +} + +.featured-content .post-thumbnail img { + left: 0; + position: absolute; + top: 0; +} + +.featured-content .entry-header { + background-color: #000; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + min-height: 96px; + overflow: hidden; + padding: 24px 10px; +} + +.featured-content a { + color: #fff; +} + +.featured-content a:hover { + color: #41a62a; +} + +.featured-content .entry-meta { + color: #fff; + font-size: 11px; + font-weight: 700; + line-height: 1.0909090909; + margin-bottom: 12px; +} + +.featured-content .cat-links { + font-weight: 700; +} + +.featured-content .entry-title { + font-size: 18px; + font-weight: 300; + line-height: 1.3333333333; + margin: 0; + text-transform: uppercase; +} + + +/* Slider */ + +.slider .featured-content .hentry { + -webkit-backface-visibility: hidden; + display: none; + position: relative; +} + +.slider .featured-content .post-thumbnail { + padding-top: 55.49132947%; +} + +.slider-control-paging { + background-color: #000; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + list-style: none; + margin: -24px 0 0 0; + position: relative; + width: 100%; + z-index: 3; +} + +.slider-control-paging li { + float: left; + margin: 2px 4px 2px 0; +} + +.slider-control-paging li:last-child { + margin-right: 0; +} + +.slider-control-paging a { + cursor: pointer; + display: block; + height: 44px; + position: relative; + text-indent: -999em; + width: 44px; +} + +.slider-control-paging a:before { + background-color: #4d4d4d; + content: ""; + height: 12px; + left: 10px; + position: absolute; + top: 16px; + width: 12px; +} + +.slider-control-paging a:hover:before { + background-color: #41a62a; +} + +.slider-control-paging .slider-active:before, +.slider-control-paging .slider-active:hover:before { + background-color: #24890d; +} + +.slider-direction-nav { + clear: both; + list-style: none; + margin: 0; + position: relative; + width: 100%; + z-index: 3; +} + +.slider-direction-nav li { + border-color: #fff; + border-style: solid; + border-width: 2px 1px 0 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + text-align: center; + width: 50%; +} + +.slider-direction-nav li:last-child { + border-width: 2px 0 0 1px; +} + +.slider-direction-nav a { + background-color: #000; + display: block; + font-size: 0; + height: 46px; +} + +.slider-direction-nav a:hover { + background-color: #24890d; +} + +.slider-direction-nav a:before { + color: #fff; + content: "\f430"; + font-size: 32px; + line-height: 46px; +} + +.slider-direction-nav .slider-next:before { + content: "\f429"; +} + +.slider-direction-nav .slider-disabled { + display: none; +} + + +/** + * 10.0 Multisite + * ----------------------------------------------------------------------------- + */ + +.site-main .widecolumn { + padding-top: 72px; + width: auto; +} +.site-main .mu_register, +.widecolumn > h2, +.widecolumn > form { + margin: 0 auto 48px; + max-width: 474px; + padding: 0 30px; +} + +.site-main .mu_register #blog_title, +.site-main .mu_register #user_email, +.site-main .mu_register #blogname, +.site-main .mu_register #user_name { + font-size: inherit; + width: 90%; +} + +.site-main .mu_register input[type="submit"], +.widecolumn #submit { + font-size: inherit; + width: auto; +} + + +/** + * 11.0 Media Queries + * ----------------------------------------------------------------------------- + */ + +/* Does the same thing as , + * but in the future W3C standard way. -ms- prefix is required for IE10+ to + * render responsive styling in Windows 8 "snapped" views; IE10+ does not honor + * the meta tag. See https://core.trac.wordpress.org/ticket/25888. + */ +@-ms-viewport { + width: device-width; +} + +@viewport { + width: device-width; +} + +@media screen and (max-width: 400px) { + .list-view .site-content .post-thumbnail { + background: none; + width: auto; + z-index: 2; + } + + .list-view .site-content .post-thumbnail img { + float: left; + margin: 0 10px 3px 0; + width: 84px; + } + + .list-view .site-content .entry-header { + background-color: transparent; + padding: 0; + } + + .list-view .content-area { + padding: 0 10px; + } + + .list-view .site-content .hentry { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + margin: 0; + min-height: 60px; + padding: 12px 0 9px; + } + + .list-view .site-content .cat-links, + .list-view .site-content .type-post .entry-content, + .list-view .site-content .type-page .entry-content, + .list-view .site-content .type-post .entry-summary, + .list-view .site-content .type-page .entry-summary, + .list-view .site-content footer.entry-meta { + display: none; + } + + .list-view .site-content .entry-title { + clear: none; + font-size: 15px; + font-weight: 900; + line-height: 1.2; + margin-bottom: 6px; + text-transform: none; + } + + .list-view .site-content .format-aside .entry-title, + .list-view .site-content .format-link .entry-title, + .list-view .site-content .format-quote .entry-title { + display: block; + } + + .list-view .site-content .entry-meta { + background-color: transparent; + clear: none; + margin: 0; + text-transform: none; + } + + .archive-header, + .page-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + margin: 24px auto 0; + padding-bottom: 24px; + } + + .error404 .page-header { + border-bottom: 0; + margin: 0 auto 24px; + padding: 0 10px; + } +} + +@media screen and (min-width: 401px) { + a.post-thumbnail:hover img { + opacity: 0.85; + } + + .full-size-link:before, + .parent-post-link:before, + .site-content span + .byline:before, + .site-content span + .comments-link:before, + .site-content span + .edit-link:before, + .site-content span + .entry-date:before { + content: ""; + } + + .attachment span.entry-date:before, + .entry-content .edit-link a:before, + .entry-meta .edit-link a:before, + .site-content .byline a:before, + .site-content .comments-link a:before, + .site-content .entry-date a:before, + .site-content .featured-post:before, + .site-content .full-size-link a:before, + .site-content .parent-post-link a:before, + .site-content .post-format a:before { + -webkit-font-smoothing: antialiased; + display: inline-block; + font: normal 16px/1 Genericons; + text-decoration: inherit; + vertical-align: text-bottom; + } + + .site-content .entry-meta > span { + margin-right: 10px; + } + + .site-content .format-video .post-format a:before { + content: "\f104"; + } + + .site-content .format-audio .post-format a:before { + content: "\f109"; + } + + .site-content .format-image .post-format a:before { + content: "\f473"; + } + + .site-content .format-quote .post-format a:before { + content: "\f106"; + margin-right: 2px; + } + + .site-content .format-gallery .post-format a:before { + content: "\f103"; + margin-right: 4px; + } + + .site-content .format-aside .post-format a:before { + content: "\f101"; + margin-right: 2px; + } + + .site-content .format-link .post-format a:before { + content: "\f107"; + position: relative; + top: 1px; + } + + .site-content .featured-post:before { + content: "\f308"; + margin-right: 3px; + position: relative; + top: 1px; + } + + .site-content .entry-date a:before, + .attachment .site-content span.entry-date:before { + content: "\f303"; + margin-right: 1px; + position: relative; + top: 1px; + } + + .site-content .byline a:before { + content: "\f304"; + } + + .site-content .comments-link a:before { + content: "\f300"; + margin-right: 2px; + } + + .entry-content .edit-link a:before, + .entry-meta .edit-link a:before { + content: "\f411"; + } + + .site-content .full-size-link a:before { + content: "\f402"; + margin-right: 1px; + } + + .site-content .parent-post-link a:before { + content: "\f301"; + } + + .list-view .site-content .hentry { + border-top: 1px solid rgba(0, 0, 0, 0.1); + padding-top: 48px; + } + + .list-view .site-content .hentry:first-of-type, + .list-view .site-content .hentry.has-post-thumbnail { + border-top: 0; + padding-top: 0; + } + + .archive-header, + .page-header { + margin: 0 auto 60px; + padding: 0 10px; + } + + .error404 .page-header { + margin-bottom: 24px; + } +} + +@media screen and (min-width: 594px) { + .site-content .entry-header { + padding-right: 30px; + padding-left: 30px; + } + + .site-content .has-post-thumbnail .entry-header { + margin-top: -48px; + } +} + +@media screen and (min-width: 673px) { + .header-main { + padding: 0 30px; + } + + .search-toggle { + margin-right: 18px; + } + + .search-box .search-field { + width: 50%; + } + + .content-area { + float: left; + width: 100%; + } + + .site-content { + margin-right: 33.33333333%; + } + + .site-content .has-post-thumbnail .entry-header { + margin-top: 0; + } + + .archive-header, + .comments-area, + .image-navigation, + .page-header, + .page-content, + .post-navigation, + .site-content .entry-content, + .site-content .entry-summary, + .site-content footer.entry-meta { + padding-right: 30px; + padding-left: 30px; + } + + .singular .site-content .hentry.has-post-thumbnail { + margin-top: 0; + } + + .full-width .site-content { + margin-right: 0; + } + + .full-width .site-content .has-post-thumbnail .entry-header, + .full-width .site-content .hentry.has-post-thumbnail:first-child { + margin-top: -48px; + } + + #secondary, + #supplementary { + padding: 0 30px; + } + + .content-sidebar { + border: 0; + float: right; + margin-left: -33.33333333%; + padding: 48px 30px 24px; + position: relative; + width: 33.33333333%; + } + + .grid .featured-content .hentry { + float: left; + width: 50%; + } + + .grid .featured-content .hentry:nth-child( 2n+1 ) { + clear: both; + } + + .grid .featured-content .entry-header { + border-color: #000; + border-style: solid; + border-width: 12px 10px; + height: 96px; + padding: 0; + } + + .slider .featured-content .entry-title { + font-size: 22px; + line-height: 1.0909090909; + } + + .slider .featured-content .entry-header { + min-height: inherit; + padding: 24px 30px 48px; + position: absolute; + left: 0; + bottom: 0; + width: 50%; + z-index: 3; + } + + .slider-control-paging { + background: transparent; + margin-top: -48px; + padding-left: 20px; + width: 50%; + } + + .slider-direction-nav { + clear: none; + float: right; + margin-top: -48px; + width: 98px; + } + + .slider-direction-nav li { + border: 0; + padding: 0 1px 0 0; + } + + .slider-direction-nav li:last-child { + padding: 0 0 0 1px; + } + + .slider-direction-nav a { + height: 48px; + } + + .slider-direction-nav a:before { + line-height: 48px; + } + + .site-info { + padding: 15px 30px; + } +} + +@media screen and (min-width: 783px) { + .site-title { + /* Search-toggle width = 48px */ + max-width: -webkit-calc(100% - 48px); + max-width: calc(100% - 48px); + } + + .header-main { + padding-right: 0; + } + + .search-toggle { + margin-right: 0; + } + + /* Fixed Header */ + + .masthead-fixed .site-header { + position: fixed; + top: 0; + } + + .admin-bar.masthead-fixed .site-header { + top: 32px; + } + + .masthead-fixed .site-main { + margin-top: 48px; + } + + /* Navigation */ + + .site-navigation li .current_page_item > a, + .site-navigation li .current_page_ancestor > a, + .site-navigation li .current-menu-item > a, + .site-navigation li .current-menu-ancestor > a { + color: #fff; + } + + /* Primary Navigation */ + + .primary-navigation { + float: right; + font-size: 11px; + margin: 0 1px 0 -12px; + padding: 0; + text-transform: uppercase; + } + + .primary-navigation .menu-toggle { + display: none; + padding: 0; + } + + .primary-navigation .nav-menu { + border-bottom: 0; + display: block; + } + + .primary-navigation.toggled-on { + border-bottom: 0; + margin: 0; + padding: 0; + } + + .primary-navigation li { + border: 0; + display: inline-block; + height: 48px; + line-height: 48px; + position: relative; + } + + .primary-navigation a { + display: inline-block; + padding: 0 12px; + white-space: nowrap; + } + + .primary-navigation ul ul { + background-color: #24890d; + float: left; + margin: 0; + position: absolute; + top: 48px; + left: -999em; + z-index: 99999; + } + + .primary-navigation li li { + border: 0; + display: block; + height: auto; + line-height: 1.0909090909; + } + + .primary-navigation ul ul ul { + left: -999em; + top: 0; + } + + .primary-navigation ul ul a { + padding: 18px 12px; + white-space: normal; + width: 176px; + } + + .primary-navigation li:hover > a, + .primary-navigation li.focus > a { + background-color: #24890d; + color: #fff; + } + + .primary-navigation ul ul a:hover, + .primary-navigation ul ul li.focus > a { + background-color: #41a62a; + } + + .primary-navigation ul li:hover > ul, + .primary-navigation ul li.focus > ul { + left: auto; + } + + .primary-navigation ul ul li:hover > ul, + .primary-navigation ul ul li.focus > ul { + left: 100%; + } + + .primary-navigation .menu-item-has-children > a, + .primary-navigation .page_item_has_children > a { + padding-right: 26px; + } + + .primary-navigation .menu-item-has-children > a:after, + .primary-navigation .page_item_has_children > a:after { + -webkit-font-smoothing: antialiased; + content: "\f502"; + display: inline-block; + font: normal 8px/1 Genericons; + position: absolute; + right: 12px; + top: 22px; + vertical-align: text-bottom; + } + + .primary-navigation li .menu-item-has-children > a, + .primary-navigation li .page_item_has_children > a { + padding-right: 20px; + width: 168px; + } + + .primary-navigation .menu-item-has-children li.menu-item-has-children > a:after, + .primary-navigation .menu-item-has-children li.page_item_has_children > a:after, + .primary-navigation .page_item_has_children li.menu-item-has-children > a:after, + .primary-navigation .page_item_has_children li.page_item_has_children > a:after { + content: "\f501"; + right: 8px; + top: 20px; + } +} + +@media screen and (min-width: 810px) { + .attachment .entry-attachment .attachment { + margin-right: -168px; + margin-left: -168px; + max-width: 810px; + } + + .attachment .site-content .attachment img { + display: block; + margin: 0 auto; + } + + .contributor-avatar { + margin-left: -168px; + } + + .contributor-summary { + float: left; + } + + .full-width .site-content blockquote.alignleft, + .full-width .site-content blockquote.alignright { + width: -webkit-calc(50% + 130px); + width: calc(50% + 130px); + } + + .full-width .site-content blockquote.alignleft, + .full-width .site-content img.size-full.alignleft, + .full-width .site-content img.size-large.alignleft, + .full-width .site-content img.size-medium.alignleft, + .full-width .site-content .wp-caption.alignleft { + margin-left: -168px; + } + + .full-width .site-content .alignleft { + clear: left; + } + + .full-width .site-content blockquote.alignright, + .full-width .site-content img.size-full.alignright, + .full-width .site-content img.size-large.alignright, + .full-width .site-content img.size-medium.alignright, + .full-width .site-content .wp-caption.alignright { + margin-right: -168px; + } + + .full-width .site-content .alignright { + clear: right; + } +} + +@media screen and (min-width: 846px) { + .content-area, + .content-sidebar { + padding-top: 72px; + } + + .site-content .has-post-thumbnail .entry-header { + margin-top: -48px; + } + + .comment-list .trackback, + .comment-list .pingback, + .comment-list article { + margin-bottom: 36px; + padding-top: 36px; + } + + .comment-author .avatar { + height: 34px; + top: 2px; + width: 34px; + } + + .comment-author, + .comment-awaiting-moderation, + .comment-content, + .comment-list .reply, + .comment-metadata { + padding-left: 50px; + } + + .comment-list .children { + margin-left: 20px; + } + + .full-width .site-content .hentry.has-post-thumbnail:first-child { + margin-top: -72px; + } + + .featured-content { + margin-bottom: 0; + } +} + +@media screen and (min-width: 1008px) { + .search-box-wrapper { + padding-left: 182px; + } + + .main-content { + float: left; + } + + .site-content { + margin-right: 29.04761904%; + margin-left: 182px; + } + + .site-content .entry-header { + margin-top: 0; + } + + .site-content .has-post-thumbnail .entry-header { + margin-top: 0; + } + + .content-sidebar { + margin-left: -29.04761904%; + width: 29.04761904%; + } + + .site:before { + background-color: #000; + content: ""; + display: block; + height: 100%; + min-height: 100%; + position: absolute; + top: 0; + left: 0; + width: 182px; + z-index: 2; + } + + #secondary { + background-color: transparent; + border: 0; + clear: none; + float: left; + margin: 0 0 0 -100%; + min-height: 100vh; + width: 122px; + } + + .primary-sidebar { + padding-top: 0; + } + + .site-description { + display: block; + margin: 0 0 18px; + } + + .site-description:empty { + margin: 0; + } + + .secondary-navigation { + font-size: 11px; + margin: 0 -30px 48px; + width: 182px; + } + + .secondary-navigation li { + border-top: 1px solid rgba(255, 255, 255, 0.2); + position: relative; + } + + .secondary-navigation a { + padding: 10px 30px; + } + + .secondary-navigation ul ul { + background-color: #24890d; + position: absolute; + top: 0; + left: -999em; + width: 182px; + z-index: 99999; + } + + .secondary-navigation li li { + border-top: 0; + } + + .secondary-navigation li:hover > a, + .secondary-navigation li.focus > a { + background-color: #24890d; + color: #fff; + } + + .secondary-navigation ul ul a:hover, + .secondary-navigation ul ul li.focus > a { + background-color: #41a62a; + } + + .secondary-navigation ul li:hover > ul, + .secondary-navigation ul li.focus > ul { + left: 162px; + } + + .secondary-navigation .menu-item-has-children > a { + padding-right: 38px; + } + + .secondary-navigation .menu-item-has-children > a:after { + -webkit-font-smoothing: antialiased; + content: "\f501"; + display: inline-block; + font: normal 8px/1 Genericons; + position: absolute; + right: 26px; + top: 14px; + vertical-align: text-bottom; + } + + .footer-sidebar .widget, + .primary-sidebar .widget { + font-size: 12px; + line-height: 1.5; + } + + .footer-sidebar .widget { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + padding: 0 30px; + width: 25%; + } + + .footer-sidebar .widget h1, + .primary-sidebar .widget h1 { + font-size: 20px; + line-height: 1.2; + } + + .footer-sidebar .widget h2, + .primary-sidebar .widget h2 { + font-size: 18px; + line-height: 1.3333333333; + } + + .footer-sidebar .widget h3, + .primary-sidebar .widget h3 { + font-size: 16px; + line-height: 1.5; + } + + .footer-sidebar .widget h4, + .primary-sidebar .widget h4 { + font-size: 14px; + line-height: 1.7142857142; + } + + .footer-sidebar .widget h5, + .primary-sidebar .widget h5 { + font-size: 12px; + line-height: 2; + } + + .footer-sidebar .widget h6, + .primary-sidebar .widget h6 { + font-size: 11px; + line-height: 2.1818181818; + } + + .footer-sidebar .widget code, + .footer-sidebar .widget kbd, + .footer-sidebar .widget tt, + .footer-sidebar .widget var, + .footer-sidebar .widget samp, + .footer-sidebar .widget pre, + .primary-sidebar .widget code, + .primary-sidebar .widget kbd, + .primary-sidebar .widget tt, + .primary-sidebar .widget var, + .primary-sidebar .widget samp, + .primary-sidebar .widget pre { + font-size: 11px; + line-height: 1.6363636363; + } + + .footer-sidebar .widget blockquote, + .primary-sidebar .widget blockquote { + font-size: 14px; + line-height: 1.2857142857; + } + + .footer-sidebar .widget blockquote cite, + .primary-sidebar .widget blockquote cite { + font-size: 12px; + line-height: 1.5; + } + + .footer-sidebar .widget input, + .footer-sidebar .widget textarea, + .primary-sidebar .widget input, + .primary-sidebar .widget textarea { + font-size: 12px; + padding: 3px 2px 4px 4px; + } + + .footer-sidebar .widget input[type="button"], + .footer-sidebar .widget input[type="reset"], + .footer-sidebar .widget input[type="submit"], + .primary-sidebar .widget input[type="button"], + .primary-sidebar .widget input[type="reset"], + .primary-sidebar .widget input[type="submit"] { + padding: 5px 15px 4px; + } + + .footer-sidebar .widget .widget-title, + .primary-sidebar .widget .widget-title { + font-size: 11px; + font-weight: 900; + line-height: 1.6363636363; + margin-bottom: 18px; + } + + .footer-sidebar .widget_twentyfourteen_ephemera .entry-title, + .footer-sidebar .widget_twentyfourteen_ephemera .entry-meta, + .footer-sidebar .widget_twentyfourteen_ephemera .wp-caption-text, + .footer-sidebar .widget_twentyfourteen_ephemera .post-format-archive-link, + .footer-sidebar .widget_twentyfourteen_ephemera .entry-content table, + .primary-sidebar .widget_twentyfourteen_ephemera .entry-title, + .primary-sidebar .widget_twentyfourteen_ephemera .entry-meta, + .primary-sidebar .widget_twentyfourteen_ephemera .wp-caption-text, + .primary-sidebar .widget_twentyfourteen_ephemera .post-format-archive-link, + .primary-sidebar .widget_twentyfourteen_ephemera .entry-content table { + font-size: 11px; + line-height: 1.6363636363; + } + + .footer-sidebar .widget_archive li, + .footer-sidebar .widget_categories li, + .footer-sidebar .widget_links li, + .footer-sidebar .widget_meta li, + .footer-sidebar .widget_nav_menu li, + .footer-sidebar .widget_pages li, + .footer-sidebar .widget_recent_comments li, + .footer-sidebar .widget_recent_entries li, + .primary-sidebar .widget_archive li, + .primary-sidebar .widget_categories li, + .primary-sidebar .widget_links li, + .primary-sidebar .widget_meta li, + .primary-sidebar .widget_nav_menu li, + .primary-sidebar .widget_pages li, + .primary-sidebar .widget_recent_comments li, + .primary-sidebar .widget_recent_entries li { + border-top: 0; + padding: 0 0 6px; + } + + .footer-sidebar .widget_archive li:last-child, + .footer-sidebar .widget_categories li:last-child, + .footer-sidebar .widget_links li:last-child, + .footer-sidebar .widget_meta li:last-child, + .footer-sidebar .widget_nav_menu li:last-child, + .footer-sidebar .widget_pages li:last-child, + .footer-sidebar .widget_recent_comments li:last-child, + .footer-sidebar .widget_recent_entries li:last-child, + .primary-sidebar .widget_archive li:last-child, + .primary-sidebar .widget_categories li:last-child, + .primary-sidebar .widget_links li:last-child, + .primary-sidebar .widget_meta li:last-child, + .primary-sidebar .widget_nav_menu li:last-child, + .primary-sidebar .widget_pages li:last-child, + .primary-sidebar .widget_recent_comments li:last-child, + .primary-sidebar .widget_recent_entries li:last-child { + padding: 0; + } + + .footer-sidebar .widget_categories li ul, + .footer-sidebar .widget_nav_menu li ul, + .footer-sidebar .widget_pages li ul, + .primary-sidebar .widget_categories li ul, + .primary-sidebar .widget_nav_menu li ul, + .primary-sidebar .widget_pages li ul { + border-top: 0; + margin-top: 6px; + } + + #supplementary { + padding: 0; + } + + .footer-sidebar { + font-size: 12px; + line-height: 1.5; + } + + .featured-content { + padding-left: 182px; + } + + .grid .featured-content .hentry { + width: 33.3333333%; + } + + .grid .featured-content .hentry:nth-child( 2n+1 ) { + clear: none; + } + + .grid .featured-content .hentry:nth-child( 3n+1 ) { + clear: both; + } + + .grid .featured-content .entry-header { + height: 120px; + } +} + +@media screen and (min-width: 1040px) { + .site-content .has-post-thumbnail .entry-header { + margin-top: -48px; + } + + .archive-header, + .comments-area, + .image-navigation, + .page-header, + .page-content, + .post-navigation, + .site-content .entry-header, + .site-content .entry-content, + .site-content .entry-summary, + .site-content footer.entry-meta { + padding-right: 15px; + padding-left: 15px; + } + + .full-width .archive-header, + .full-width .comments-area, + .full-width .image-navigation, + .full-width .page-header, + .full-width .page-content, + .full-width .post-navigation, + .full-width .site-content .entry-header, + .full-width .site-content .entry-content, + .full-width .site-content .entry-summary, + .full-width .site-content footer.entry-meta { + padding-right: 30px; + padding-left: 30px; + } +} + +@media screen and (min-width: 1080px) { + .search-box .search-field { + width: 324px; + } + + .site-content, + .site-main .widecolumn { + margin-left: 222px; + } + + .site:before { + width: 222px; + } + + .search-box-wrapper, + .featured-content { + padding-left: 222px; + } + + #secondary { + width: 162px; + } + + .secondary-navigation, + .secondary-navigation ul ul { + width: 222px; + } + + .secondary-navigation ul li:hover > ul, + .secondary-navigation ul li.focus > ul { + left: 202px; + } + + .slider .featured-content .entry-title { + font-size: 33px; + } + + .slider .featured-content .entry-header, + .slider-control-paging { + width: 534px; + } + + .slider-control-paging { + padding-left: 24px; + } + + .slider-control-paging li { + margin: 12px 12px 12px 0; + } + + .slider-control-paging a { + height: 24px; + width: 24px; + } + + .slider-control-paging a:before { + top: 6px; + left: 6px; + } +} + +@media screen and (min-width: 1110px) { + .archive-header, + .comments-area, + .image-navigation, + .page-header, + .page-content, + .post-navigation, + .site-content .entry-header, + .site-content .entry-content, + .site-content .entry-summary, + .site-content footer.entry-meta { + padding-right: 30px; + padding-left: 30px; + } +} + +@media screen and (min-width: 1218px) { + .archive-header, + .comments-area, + .image-navigation, + .page-header, + .page-content, + .post-navigation, + .site-content .entry-header, + .site-content .entry-content, + .site-content .entry-summary, + .site-content footer.entry-meta { + margin-right: 54px; + } + + .full-width .archive-header, + .full-width .comments-area, + .full-width .image-navigation, + .full-width .page-header, + .full-width .page-content, + .full-width .post-navigation, + .full-width .site-content .entry-header, + .full-width .site-content .entry-content, + .full-width .site-content .entry-summary, + .full-width .site-content footer.entry-meta { + margin-right: auto; + } +} + +@media screen and (min-width: 1260px) { + .site-content blockquote.alignleft, + .site-content blockquote.alignright { + width: -webkit-calc(50% + 18px); + width: calc(50% + 18px); + } + + .site-content blockquote.alignleft { + margin-left: -18%; + } + + .site-content blockquote.alignright { + margin-right: -18%; + } +} + + +/** + * 12.0 Print + * ----------------------------------------------------------------------------- + */ + +@media print { + body { + background: none !important; /* Brute force since user agents all print differently. */ + color: #2b2b2b; + font-size: 12pt; + } + + .site, + .site-header, + .hentry, + .site-content .entry-header, + .site-content .entry-content, + .site-content .entry-summary, + .site-content .entry-meta, + .page-content, + .archive-header, + .page-header, + .contributor-info, + .comments-area, + .attachment .entry-attachment .attachment { + max-width: 100%; + } + + #site-header img, + .search-toggle, + .site-navigation, + .site-content nav, + .edit-link, + .page-links, + .widget-area, + .more-link, + .post-format-archive-link, + .comment-respond, + .comment-list .reply, + .comment-reply-login, + #secondary, + .site-footer, + .slider-control-paging, + .slider-direction-nav { + display: none; + } + + .site-title a, + .entry-meta, + .entry-meta a, + .featured-content .hentry, + .featured-content a { + color: #2b2b2b; + } + + .entry-content a, + .entry-summary a, + .page-content a, + .comment-content a { + text-decoration: none; + } + + .site-header, + .post-thumbnail, + a.post-thumbnail:hover, + .site-content .entry-header, + .site-footer, + .featured-content, + .featured-content .entry-header { + background: transparent; + } + + .header-main { + padding: 48px 10px; + } + + .site-title { + float: none; + font-size: 19pt; + } + + .content-area { + padding-top: 0; + } + + .list-view .site-content .hentry { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + margin-bottom: 48px; + padding-bottom: 24px; + } + + .post-thumbnail img { + margin: 0 10px 24px; + } + + .site-content .has-post-thumbnail .entry-header { + padding-top: 0; + } + + .site-content footer.entry-meta { + margin: 24px auto; + } + + .entry-meta .tag-links a { + color: #fff; + } + + .singular .site-content .hentry.has-post-thumbnail { + margin-top: 0; + } + + .gallery-columns-1.gallery-size-medium, + .gallery-columns-1.gallery-size-thumbnail, + .gallery-columns-2.gallery-size-thumbnail, + .gallery-columns-3.gallery-size-thumbnail { + display: block; + } + + .archive-title, + .page-title { + margin: 0 10px 48px; + } + + .featured-content .hentry { + margin-bottom: 48px; + } + + .featured-content .post-thumbnail, + .slider .featured-content .post-thumbnail { + padding-top: 0; + } + + .featured-content .post-thumbnail img { + position: relative; + } + + .featured-content .entry-header { + padding: 0 10px 24px; + } + + .featured-content .entry-meta { + font-size: 9pt; + margin-bottom: 11px; + } + + .featured-content .cat-links { + font-weight: 900; + } + + .featured-content .entry-title { + font-size: 25pt; + line-height: 36px; + } +} diff --git a/wp-content/themes/twentyfourteen/tag.php b/wp-content/themes/twentyfourteen/tag.php new file mode 100644 index 0000000000..208455de84 --- /dev/null +++ b/wp-content/themes/twentyfourteen/tag.php @@ -0,0 +1,60 @@ + + +
      +
      + + + +
      +

      + + %s
      ', $term_description ); + endif; + ?> + + + + +
      + + + +
      +
      + + + +
      +

      + +

      +
      + + +
      +
      + + + +
      +
      + +
      +

      +
      +

      + +
      +
      + +
      +
      + + + \ No newline at end of file diff --git a/wp-content/themes/twentyten/archive.php b/wp-content/themes/twentyten/archive.php new file mode 100644 index 0000000000..138b088ee8 --- /dev/null +++ b/wp-content/themes/twentyten/archive.php @@ -0,0 +1,64 @@ + + +
      +
      + + + +

      + + %s', 'twentyten' ), get_the_date() ); ?> + + %s', 'twentyten' ), get_the_date( _x( 'F Y', 'monthly archives date format', 'twentyten' ) ) ); ?> + + %s', 'twentyten' ), get_the_date( _x( 'Y', 'yearly archives date format', 'twentyten' ) ) ); ?> + + + +

      + + + +
      +
      + + + diff --git a/wp-content/themes/twentyten/attachment.php b/wp-content/themes/twentyten/attachment.php new file mode 100644 index 0000000000..45c3378246 --- /dev/null +++ b/wp-content/themes/twentyten/attachment.php @@ -0,0 +1,27 @@ + + +
      +
      + + + +
      +
      + + diff --git a/wp-content/themes/twentyten/author.php b/wp-content/themes/twentyten/author.php new file mode 100644 index 0000000000..2b221b57f2 --- /dev/null +++ b/wp-content/themes/twentyten/author.php @@ -0,0 +1,72 @@ + + +
      +
      + + + +

      ' . get_the_author() . '' ); ?>

      + + +
      +
      + +
      +
      +

      + +
      +
      + + + +
      +
      + + + diff --git a/wp-content/themes/twentyten/category.php b/wp-content/themes/twentyten/category.php new file mode 100644 index 0000000000..50ffbf3ec6 --- /dev/null +++ b/wp-content/themes/twentyten/category.php @@ -0,0 +1,35 @@ + + +
      +
      + +

      ' . single_cat_title( '', false ) . '' ); + ?>

      + ' . $category_description . '
      '; + + /* + * Run the loop for the category page to output the posts. + * If you want to overload this in a child theme then include a file + * called loop-category.php and that will be used instead. + */ + get_template_part( 'loop', 'category' ); + ?> + +
      + + + + diff --git a/wp-content/themes/twentyten/comments.php b/wp-content/themes/twentyten/comments.php new file mode 100644 index 0000000000..6825a510ba --- /dev/null +++ b/wp-content/themes/twentyten/comments.php @@ -0,0 +1,80 @@ + + +
      + +

      +
      + + + + + +

      ' . get_the_title() . '' ); + ?>

      + + 1 && get_option( 'page_comments' ) ) : // Are there comments to navigate through? ?> + + + +
        + 'twentyten_comment' ) ); + ?> +
      + + 1 && get_option( 'page_comments' ) ) : // Are there comments to navigate through? ?> + + + + +

      + + + + + + + diff --git a/wp-content/themes/twentyten/editor-style-rtl.css b/wp-content/themes/twentyten/editor-style-rtl.css new file mode 100644 index 0000000000..5868d3c18f --- /dev/null +++ b/wp-content/themes/twentyten/editor-style-rtl.css @@ -0,0 +1,29 @@ +/* +Theme Name: Twenty Ten +*/ +/* +Used to style the TinyMCE editor. +*/ +html .mceContentBody{ + direction: rtl; + unicode-bidi: embed; + float: right; + width: 640px; +} +* { + font-family: Arial, Tahoma, sans-serif; +} +/* Text elements */ +ul, ol { + margin: 0 -18px 18px 0; +} +dd { + margin-right: 0; +} +blockquote { + font-style: normal; +} +table { + text-align: right; + margin: 0 0 24px -1px; +} diff --git a/wp-content/themes/twentyten/editor-style.css b/wp-content/themes/twentyten/editor-style.css new file mode 100644 index 0000000000..c397b116c2 --- /dev/null +++ b/wp-content/themes/twentyten/editor-style.css @@ -0,0 +1,297 @@ +/* +Theme Name: Twenty Ten +Description: Used to style the TinyMCE editor. +*/ +html .mceContentBody { + max-width: 640px; +} +* { + color: #444; + font-family: Georgia, "Bitstream Charter", serif; + line-height: 1.5; +} +p, +dl, +td, +th, +ul, +ol, +blockquote { + font-size: 16px; +} +tr th, +thead th, +label, +tr th, +thead th { + font-family: "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif; +} +pre { + font-family: "Courier 10 Pitch", Courier, monospace; +} +code, code var { + font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; +} +body, input, textarea { + font-size: 12px; + line-height: 18px; +} +hr { + background-color: #e7e7e7; + border: 0; + clear: both; + height: 1px; + margin-bottom: 18px; +} +/* Text elements */ +p { + margin-bottom: 18px; +} + +ul, +ol { + margin: 0 0 18px 1.5em; + padding: 0; +} + +ul { + list-style: square; +} +ol { + list-style: decimal; +} +ol ol { + list-style: upper-alpha; +} +ol ol ol { + list-style: lower-roman; +} +ol ol ol ol { + list-style: lower-alpha; +} +ul ul, +ol ol, +ul ol, +ol ul { + margin-bottom: 0; +} +dl { + margin: 0 0 24px 0; +} +dt { + font-weight: bold; +} +dd { + margin-bottom: 18px; +} +strong { + color: #000; + font-weight: bold; +} +cite, +em, +i { + border: none; + font-style: italic; +} +big { + font-size: 131.25%; +} +ins { + background: #ffc; + border: none; + color: #333; +} +del { + text-decoration: line-through; + color: #555; +} +blockquote { + font-style: italic; + padding: 0 3em; +} +blockquote cite, +blockquote em, +blockquote i { + font-style: normal; +} +pre { + background: #f7f7f7; + color: #222; + line-height: 18px; + margin-bottom: 18px; + padding: 1.5em; +} +abbr, +acronym { + border-bottom: 1px dotted #666; + cursor: help; +} +ins { + text-decoration: none; +} +sup, +sub { + font-size: 10px; + height: 0; + line-height: 1; + position: relative; + vertical-align: baseline; +} +sup { + bottom: 1ex; +} +sub { + top: .5ex; +} +a:link { + color: #06c; +} +a:visited { + color: #743399; +} +a:active, +a:hover { + color: #ff4b33; +} +p, +ul, +ol, +dd, +pre, +hr { + margin-bottom: 24px; +} +ul ul, +ol ol, +ul ol, +ol ul { + margin-bottom: 0; +} +pre, +kbd, +tt, +var { + font-size: 15px; + line-height: 21px; +} +code { + font-size: 13px; +} +strong, +b, +dt, +th { + color: #000; +} +h1, +h2, +h3, +h4, +h5, +h6 { + color: #000; + font-weight: normal; + line-height: 1.5em; + margin: 0 0 20px 0; +} +h1 { + font-size: 2.4em; +} +h2 { + font-size: 1.8em; +} +h3 { + font-size: 1.4em; +} +h4 { + font-size: 1.2em; +} +h5 { + font-size: 1em; +} +h6 { + font-size: 0.9em; +} +table { + border: 1px solid #e7e7e7 !important; + border-collapse: collapse; + border-spacing: 0; + margin: 0 -1px 24px 0; + text-align: left; + width: 100%; +} +tr th, +thead th { + border: none !important; + color: #888; + font-size: 12px; + font-weight: bold; + line-height: 18px; + padding: 9px 24px; +} +tr td { + border: none !important; + border-top: 1px solid #e7e7e7 !important; + padding: 6px 24px; +} +img { + margin: 0; +} +img.size-auto, +img.size-large, +img.size-full, +img.size-medium { + max-width: 100%; + height: auto; +} +.alignleft, +img.alignleft { + display: inline; + float: left; + margin-right: 24px; + margin-top: 4px; +} +.alignright, +img.alignright { + display: inline; + float: right; + margin-left: 24px; + margin-top: 4px; +} +.aligncenter, +img.aligncenter { + clear: both; + display: block; + margin-left: auto; + margin-right: auto; +} +img.alignleft, +img.alignright, +img.aligncenter { + margin-bottom: 12px; +} +.wp-caption { + background: #f1f1f1; + border: none; + -khtml-border-radius: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + color: #888; + font-size: 12px; + line-height: 18px; + margin-bottom: 20px; + max-width: 632px !important; /* prevent too-wide images from breaking layout */ + padding: 4px; + text-align: center; +} +.wp-caption img { + margin: 5px; +} +.wp-caption p.wp-caption-text { + margin: 0 0 4px; +} +.wp-smiley { + margin: 0; +} diff --git a/wp-content/themes/twentyten/footer.php b/wp-content/themes/twentyten/footer.php new file mode 100644 index 0000000000..5d2018ad17 --- /dev/null +++ b/wp-content/themes/twentyten/footer.php @@ -0,0 +1,58 @@ + + + + + + + + + * tag of your theme, or you will break many plugins, which + * generally use this hook to reference JavaScript files. + */ + + wp_footer(); +?> + + diff --git a/wp-content/themes/twentyten/functions.php b/wp-content/themes/twentyten/functions.php new file mode 100644 index 0000000000..847d54035d --- /dev/null +++ b/wp-content/themes/twentyten/functions.php @@ -0,0 +1,595 @@ + + * add_action( 'after_setup_theme', 'my_child_theme_setup' ); + * function my_child_theme_setup() { + * // We are providing our own filter for excerpt_length (or using the unfiltered value) + * remove_filter( 'excerpt_length', 'twentyten_excerpt_length' ); + * ... + * } + * + * + * For more information on hooks, actions, and filters, see https://codex.wordpress.org/Plugin_API. + * + * @package WordPress + * @subpackage Twenty_Ten + * @since Twenty Ten 1.0 + */ + +/* + * Set the content width based on the theme's design and stylesheet. + * + * Used to set the width of images and content. Should be equal to the width the theme + * is designed for, generally via the style.css stylesheet. + */ +if ( ! isset( $content_width ) ) + $content_width = 640; + +/* Tell WordPress to run twentyten_setup() when the 'after_setup_theme' hook is run. */ +add_action( 'after_setup_theme', 'twentyten_setup' ); + +if ( ! function_exists( 'twentyten_setup' ) ): +/** + * Set up theme defaults and registers support for various WordPress features. + * + * Note that this function is hooked into the after_setup_theme hook, which runs + * before the init hook. The init hook is too late for some features, such as indicating + * support post thumbnails. + * + * To override twentyten_setup() in a child theme, add your own twentyten_setup to your child theme's + * functions.php file. + * + * @uses add_theme_support() To add support for post thumbnails, custom headers and backgrounds, and automatic feed links. + * @uses register_nav_menus() To add support for navigation menus. + * @uses add_editor_style() To style the visual editor. + * @uses load_theme_textdomain() For translation/localization support. + * @uses register_default_headers() To register the default custom header images provided with the theme. + * @uses set_post_thumbnail_size() To set a custom post thumbnail size. + * + * @since Twenty Ten 1.0 + */ +function twentyten_setup() { + + // This theme styles the visual editor with editor-style.css to match the theme style. + add_editor_style(); + + // Post Format support. You can also use the legacy "gallery" or "asides" (note the plural) categories. + add_theme_support( 'post-formats', array( 'aside', 'gallery' ) ); + + // This theme uses post thumbnails + add_theme_support( 'post-thumbnails' ); + + // Add default posts and comments RSS feed links to head + add_theme_support( 'automatic-feed-links' ); + + /* + * Make theme available for translation. + * Translations can be filed in the /languages/ directory + */ + load_theme_textdomain( 'twentyten', get_template_directory() . '/languages' ); + + // This theme uses wp_nav_menu() in one location. + register_nav_menus( array( + 'primary' => __( 'Primary Navigation', 'twentyten' ), + ) ); + + // This theme allows users to set a custom background. + add_theme_support( 'custom-background', array( + // Let WordPress know what our default background color is. + 'default-color' => 'f1f1f1', + ) ); + + // The custom header business starts here. + + $custom_header_support = array( + /* + * The default image to use. + * The %s is a placeholder for the theme template directory URI. + */ + 'default-image' => '%s/images/headers/path.jpg', + // The height and width of our custom header. + /** + * Filter the Twenty Ten default header image width. + * + * @since Twenty Ten 1.0 + * + * @param int The default header image width in pixels. Default 940. + */ + 'width' => apply_filters( 'twentyten_header_image_width', 940 ), + /** + * Filter the Twenty Ten defaul header image height. + * + * @since Twenty Ten 1.0 + * + * @param int The default header image height in pixels. Default 198. + */ + 'height' => apply_filters( 'twentyten_header_image_height', 198 ), + // Support flexible heights. + 'flex-height' => true, + // Don't support text inside the header image. + 'header-text' => false, + // Callback for styling the header preview in the admin. + 'admin-head-callback' => 'twentyten_admin_header_style', + ); + + add_theme_support( 'custom-header', $custom_header_support ); + + if ( ! function_exists( 'get_custom_header' ) ) { + // This is all for compatibility with versions of WordPress prior to 3.4. + define( 'HEADER_TEXTCOLOR', '' ); + define( 'NO_HEADER_TEXT', true ); + define( 'HEADER_IMAGE', $custom_header_support['default-image'] ); + define( 'HEADER_IMAGE_WIDTH', $custom_header_support['width'] ); + define( 'HEADER_IMAGE_HEIGHT', $custom_header_support['height'] ); + add_custom_image_header( '', $custom_header_support['admin-head-callback'] ); + add_custom_background(); + } + + /* + * We'll be using post thumbnails for custom header images on posts and pages. + * We want them to be 940 pixels wide by 198 pixels tall. + * Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php. + */ + set_post_thumbnail_size( $custom_header_support['width'], $custom_header_support['height'], true ); + + // ... and thus ends the custom header business. + + // Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI. + register_default_headers( array( + 'berries' => array( + 'url' => '%s/images/headers/berries.jpg', + 'thumbnail_url' => '%s/images/headers/berries-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Berries', 'twentyten' ) + ), + 'cherryblossom' => array( + 'url' => '%s/images/headers/cherryblossoms.jpg', + 'thumbnail_url' => '%s/images/headers/cherryblossoms-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Cherry Blossoms', 'twentyten' ) + ), + 'concave' => array( + 'url' => '%s/images/headers/concave.jpg', + 'thumbnail_url' => '%s/images/headers/concave-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Concave', 'twentyten' ) + ), + 'fern' => array( + 'url' => '%s/images/headers/fern.jpg', + 'thumbnail_url' => '%s/images/headers/fern-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Fern', 'twentyten' ) + ), + 'forestfloor' => array( + 'url' => '%s/images/headers/forestfloor.jpg', + 'thumbnail_url' => '%s/images/headers/forestfloor-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Forest Floor', 'twentyten' ) + ), + 'inkwell' => array( + 'url' => '%s/images/headers/inkwell.jpg', + 'thumbnail_url' => '%s/images/headers/inkwell-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Inkwell', 'twentyten' ) + ), + 'path' => array( + 'url' => '%s/images/headers/path.jpg', + 'thumbnail_url' => '%s/images/headers/path-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Path', 'twentyten' ) + ), + 'sunset' => array( + 'url' => '%s/images/headers/sunset.jpg', + 'thumbnail_url' => '%s/images/headers/sunset-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Sunset', 'twentyten' ) + ) + ) ); +} +endif; + +if ( ! function_exists( 'twentyten_admin_header_style' ) ) : +/** + * Style the header image displayed on the Appearance > Header admin panel. + * + * Referenced via add_custom_image_header() in twentyten_setup(). + * + * @since Twenty Ten 1.0 + */ +function twentyten_admin_header_style() { +?> + +' . __( 'Continue reading ', 'twentyten' ) . ''; +} +endif; + +/** + * Replace "[...]" with an ellipsis and twentyten_continue_reading_link(). + * + * "[...]" is appended to automatically generated excerpts. + * + * To override this in a child theme, remove the filter and add your own + * function tied to the excerpt_more filter hook. + * + * @since Twenty Ten 1.0 + * + * @param string $more The Read More text. + * @return string An ellipsis. + */ +function twentyten_auto_excerpt_more( $more ) { + if ( ! is_admin() ) { + return ' …' . twentyten_continue_reading_link(); + } + return $more; +} +add_filter( 'excerpt_more', 'twentyten_auto_excerpt_more' ); + +/** + * Add a pretty "Continue Reading" link to custom post excerpts. + * + * To override this link in a child theme, remove the filter and add your own + * function tied to the get_the_excerpt filter hook. + * + * @since Twenty Ten 1.0 + * + * @param string $output The "Coninue Reading" link. + * @return string Excerpt with a pretty "Continue Reading" link. + */ +function twentyten_custom_excerpt_more( $output ) { + if ( has_excerpt() && ! is_attachment() && ! is_admin() ) { + $output .= twentyten_continue_reading_link(); + } + return $output; +} +add_filter( 'get_the_excerpt', 'twentyten_custom_excerpt_more' ); + +/** + * Remove inline styles printed when the gallery shortcode is used. + * + * Galleries are styled by the theme in Twenty Ten's style.css. This is just + * a simple filter call that tells WordPress to not use the default styles. + * + * @since Twenty Ten 1.2 + */ +add_filter( 'use_default_gallery_style', '__return_false' ); + +/** + * Deprecated way to remove inline styles printed when the gallery shortcode is used. + * + * This function is no longer needed or used. Use the use_default_gallery_style + * filter instead, as seen above. + * + * @since Twenty Ten 1.0 + * @deprecated Deprecated in Twenty Ten 1.2 for WordPress 3.1 + * + * @return string The gallery style filter, with the styles themselves removed. + */ +function twentyten_remove_gallery_css( $css ) { + return preg_replace( "##s", '', $css ); +} +// Backwards compatibility with WordPress 3.0. +if ( version_compare( $GLOBALS['wp_version'], '3.1', '<' ) ) + add_filter( 'gallery_style', 'twentyten_remove_gallery_css' ); + +if ( ! function_exists( 'twentyten_comment' ) ) : +/** + * Template for comments and pingbacks. + * + * To override this walker in a child theme without modifying the comments template + * simply create your own twentyten_comment(), and that function will be used instead. + * + * Used as a callback by wp_list_comments() for displaying the comments. + * + * @since Twenty Ten 1.0 + * + * @param object $comment The comment object. + * @param array $args An array of arguments. @see get_comment_reply_link() + * @param int $depth The depth of the comment. + */ +function twentyten_comment( $comment, $args, $depth ) { + $GLOBALS['comment'] = $comment; + switch ( $comment->comment_type ) : + case '' : + ?> +
    1. id="li-comment-"> +
      +
      + + says:', 'twentyten' ), sprintf( '%s', get_comment_author_link() ) ); ?> +
      + comment_approved == '0' ) : ?> + +
      + + + + +
      + +
      + $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> +
      +
      + + +
    2. +

      + __( 'Primary Widget Area', 'twentyten' ), + 'id' => 'primary-widget-area', + 'description' => __( 'Add widgets here to appear in your sidebar.', 'twentyten' ), + 'before_widget' => '
    3. ', + 'after_widget' => '
    4. ', + 'before_title' => '

      ', + 'after_title' => '

      ', + ) ); + + // Area 2, located below the Primary Widget Area in the sidebar. Empty by default. + register_sidebar( array( + 'name' => __( 'Secondary Widget Area', 'twentyten' ), + 'id' => 'secondary-widget-area', + 'description' => __( 'An optional secondary widget area, displays below the primary widget area in your sidebar.', 'twentyten' ), + 'before_widget' => '
    5. ', + 'after_widget' => '
    6. ', + 'before_title' => '

      ', + 'after_title' => '

      ', + ) ); + + // Area 3, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'First Footer Widget Area', 'twentyten' ), + 'id' => 'first-footer-widget-area', + 'description' => __( 'An optional widget area for your site footer.', 'twentyten' ), + 'before_widget' => '
    7. ', + 'after_widget' => '
    8. ', + 'before_title' => '

      ', + 'after_title' => '

      ', + ) ); + + // Area 4, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'Second Footer Widget Area', 'twentyten' ), + 'id' => 'second-footer-widget-area', + 'description' => __( 'An optional widget area for your site footer.', 'twentyten' ), + 'before_widget' => '
    9. ', + 'after_widget' => '
    10. ', + 'before_title' => '

      ', + 'after_title' => '

      ', + ) ); + + // Area 5, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'Third Footer Widget Area', 'twentyten' ), + 'id' => 'third-footer-widget-area', + 'description' => __( 'An optional widget area for your site footer.', 'twentyten' ), + 'before_widget' => '
    11. ', + 'after_widget' => '
    12. ', + 'before_title' => '

      ', + 'after_title' => '

      ', + ) ); + + // Area 6, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'Fourth Footer Widget Area', 'twentyten' ), + 'id' => 'fourth-footer-widget-area', + 'description' => __( 'An optional widget area for your site footer.', 'twentyten' ), + 'before_widget' => '
    13. ', + 'after_widget' => '
    14. ', + 'before_title' => '

      ', + 'after_title' => '

      ', + ) ); +} +/** Register sidebars by running twentyten_widgets_init() on the widgets_init hook. */ +add_action( 'widgets_init', 'twentyten_widgets_init' ); + +/** + * Remove the default styles that are packaged with the Recent Comments widget. + * + * To override this in a child theme, remove the filter and optionally add your own + * function tied to the widgets_init action hook. + * + * This function uses a filter (show_recent_comments_widget_style) new in WordPress 3.1 + * to remove the default style. Using Twenty Ten 1.2 in WordPress 3.0 will show the styles, + * but they won't have any effect on the widget in default Twenty Ten styling. + * + * @since Twenty Ten 1.0 + */ +function twentyten_remove_recent_comments_style() { + add_filter( 'show_recent_comments_widget_style', '__return_false' ); +} +add_action( 'widgets_init', 'twentyten_remove_recent_comments_style' ); + +if ( ! function_exists( 'twentyten_posted_on' ) ) : +/** + * Print HTML with meta information for the current post-date/time and author. + * + * @since Twenty Ten 1.0 + */ +function twentyten_posted_on() { + printf( __( 'Posted on %2$s by %3$s', 'twentyten' ), + 'meta-prep meta-prep-author', + sprintf( '', + get_permalink(), + esc_attr( get_the_time() ), + get_the_date() + ), + sprintf( '%3$s', + get_author_posts_url( get_the_author_meta( 'ID' ) ), + esc_attr( sprintf( __( 'View all posts by %s', 'twentyten' ), get_the_author() ) ), + get_the_author() + ) + ); +} +endif; + +if ( ! function_exists( 'twentyten_posted_in' ) ) : +/** + * Print HTML with meta information for the current post (category, tags and permalink). + * + * @since Twenty Ten 1.0 + */ +function twentyten_posted_in() { + // Retrieves tag list of current post, separated by commas. + $tag_list = get_the_tag_list( '', ', ' ); + if ( $tag_list ) { + $posted_in = __( 'This entry was posted in %1$s and tagged %2$s. Bookmark the permalink.', 'twentyten' ); + } elseif ( is_object_in_taxonomy( get_post_type(), 'category' ) ) { + $posted_in = __( 'This entry was posted in %1$s. Bookmark the permalink.', 'twentyten' ); + } else { + $posted_in = __( 'Bookmark the permalink.', 'twentyten' ); + } + // Prints the string, replacing the placeholders. + printf( + $posted_in, + get_the_category_list( ', ' ), + $tag_list, + get_permalink(), + the_title_attribute( 'echo=0' ) + ); +} +endif; + +/** + * Retrieve the IDs for images in a gallery. + * + * @uses get_post_galleries() First, if available. Falls back to shortcode parsing, + * then as last option uses a get_posts() call. + * + * @since Twenty Ten 1.6. + * + * @return array List of image IDs from the post gallery. + */ +function twentyten_get_gallery_images() { + $images = array(); + + if ( function_exists( 'get_post_galleries' ) ) { + $galleries = get_post_galleries( get_the_ID(), false ); + if ( isset( $galleries[0]['ids'] ) ) + $images = explode( ',', $galleries[0]['ids'] ); + } else { + $pattern = get_shortcode_regex(); + preg_match( "/$pattern/s", get_the_content(), $match ); + $atts = shortcode_parse_atts( $match[3] ); + if ( isset( $atts['ids'] ) ) + $images = explode( ',', $atts['ids'] ); + } + + if ( ! $images ) { + $images = get_posts( array( + 'fields' => 'ids', + 'numberposts' => 999, + 'order' => 'ASC', + 'orderby' => 'menu_order', + 'post_mime_type' => 'image', + 'post_parent' => get_the_ID(), + 'post_type' => 'attachment', + ) ); + } + + return $images; +} diff --git a/wp-content/themes/twentyten/header.php b/wp-content/themes/twentyten/header.php new file mode 100644 index 0000000000..1ff063b8f0 --- /dev/null +++ b/wp-content/themes/twentyten/header.php @@ -0,0 +1,112 @@ + section and everything up till
      . + * + * @package WordPress + * @subpackage Twenty_Ten + * @since Twenty Ten 1.0 + */ +?> +> + + +<?php + /* + * Print the <title> tag based on what is being viewed. + */ + global $page, $paged; + + wp_title( '|', true, 'right' ); + + // Add the blog name. + bloginfo( 'name' ); + + // Add the blog description for the home/front page. + $site_description = get_bloginfo( 'description', 'display' ); + if ( $site_description && ( is_home() || is_front_page() ) ) + echo " | $site_description"; + + // Add a page number if necessary: + if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) + echo esc_html( ' | ' . sprintf( __( 'Page %s', 'twentyten' ), max( $paged, $page ) ) ); + + ?> + + + + + * tag of your theme, or you will break many plugins, which + * generally use this hook to add elements to such + * as styles, scripts, and meta tags. + */ + wp_head(); +?> + + +> +
      + + +
      diff --git a/wp-content/themes/twentyten/images/headers/berries-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/berries-thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9588d31b70c20f7129696f47aac714fa1c9f54cc GIT binary patch literal 5626 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 aCKy5eJ|-rLJw7Kcos{~gaYxei{Qm%DbL?XP literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/headers/berries.jpg b/wp-content/themes/twentyten/images/headers/berries.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b221abc4f640d52df837a5eec6f782436acfbc75 GIT binary patch literal 60505 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 D;b@>I literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/headers/cherryblossoms-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/cherryblossoms-thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c74744a8620086df891b3491139ed98356f50b52 GIT binary patch literal 6418 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 Wmx8y>Gnlw|0H) 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 K=zM4!fB)GE+s-Ng literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/headers/concave-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/concave-thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed24a365cd20297f0bcc9e2a1e0bc6db581da591 GIT binary patch literal 5692 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/headers/concave.jpg b/wp-content/themes/twentyten/images/headers/concave.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0f29e4c5505807fa29d1af6af64ea7dbbb4a027a GIT binary patch literal 38292 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

      Gp+SQer=$!a7v*?@7R!2%cpK)B!yEmG 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 NPYv9x{OW%3e*kl);L`vA literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/headers/fern.jpg b/wp-content/themes/twentyten/images/headers/fern.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bbefc6516f82b1947610b46d1e84c394f9f0fe23 GIT binary patch literal 24856 zcmZsiWl&sEx279+Xx!Z!YusIfOE>QB!5xCTTX5G7?h+E5;1HYu!QC|wNGA8YbEjsi z=H37Hk6m@ns(se8*1OK%)xX;Spt8a{1ppj80AT%Z0sj5~$O3>E7#NrsKuk;^F%A|E zF*yMcNI*_a{9mG`A}0GMVk# z!XeUz$anP#8(Z#kNNZ`haBmdeRO9*#o&ENBKk2%(K1*`2Aeq?Mk{*@Lh0doV@*2$^#0 zc+ujgckKDPuYH5*hFez})?NIMQVdZK@qXyRHhdMM;u-xv(DclL*<F`JT<_Va_uk z7Csz;`wCK-SiPToA4}X=I^U1Z{>m$8 zol*)zjcl#MdijE|t(2pqjz`5}+&7fmvZrkqO}Y@hU>q~PB$7$PKV^PPP*57W3m-pT zexOmIvO^n0x>xsXibgh7{FG53LxnboJ?3gK81V!$a{a9bmfVt&ou+HmgXGUhR zqT1%%kB_(kS#EVZWL1O{?5GCKrTZ#C$iqbKni^v5>%9Bc`Or&a(7E`WP|L4T9Md<1 z9d8GxfK(qHcRFoD#0x|_alx4O&mq~M`&5d2%D&=+jaFM{eNhvF?l(`_FbdOJOe1CVBQd^ZcoE{xtVK%pn zt>6Mub4P;1YIUrRAPjkKyGghxNP(MdhC9i7wCGf$DwxB!Zk~Z&)JGvje zZW5lv!fWlKyeGZ-()NZZ9S2MiUC|DDfVS5|v@=Y$ZlraDPb~eBLvPsw{;o^LJ*u=Ww>3BEIN10f`vi!>3Qlm|v?pIVsLF-!NF{ zGNRUR+S=%nRl7U*ZNo$$R!~CG`rMu3l30Ex^8jOO7#g2MtuuAXB4&zaa`%02Ki!!F zJ!+{5f#4T&x*uepW2X;UEbt$Hisg$9pE(-d-Q2Z@luOoT4Eb2=Iu^-eeH8dXDhYl+ zL2!I}-15zCHKCHEMLqJnpy)aI#?Y^;vZlg2dysK3HD9qT+U7@ooc2G|obDlM(p+i| zPEz;$x;xXdf@Y*@ch?MUDD7DOrG;0e*@}JXO5~K`lEsq5tY7jTOm2HbSh8HwqZ*__ zHt$}Ye7vAyI;vILTfb*&B4rm>P6!@}g=i`fYJn#;j;FOPLVTOZX^){4alP#$Y>ZR@-uO|YS?Y=!@PR+rTNjBv4y$|mrjvG zb{yYCzzwBVzH#1nD71Zdy5cT^1P{hKv{YrIpZb&ym)Ih>V7|s9J`E}&GakZi#2DTT zVb=@HqE)9vD2rc6VJV_9S7qNu!PuLZ&F^}?*}bHn7sYXK&fim#N?7qDmC0Vl@=Vhw zEvG}m%F?C0lqS50t3>tH83@IMTN|W79AU{X?v=_;3~u+eFvf;REc@{!xvy={e$!0F zx?Aodbva*h1s+W;#!nhvHc&y&%VMAQ^U}h9m)5VMx55!VPu)VVaI4;v%~W+4

      qF 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 J{m$N>|Jf*<_6Yz0 literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/headers/forestfloor-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/forestfloor-thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2c9eb7e01f85ee9da79674d6ddb44d5e42bb2ad1 GIT binary patch literal 6646 zcma)AbyQUA*PdZu=ooN_p&RK|ngQu<7@9#!dT8~MLw8AvfOK~&9TEaVgS03qAt<2o zaqsk)M(9n#nGY1XfPXPXWmpj0{FEHRgzWm3L`zHt+h=l_H|KkZ3+5HCOsj@&GZuS8& zEW_vGcPXXW*ghW~j8?gp>Ol}pn)l4gxqta$qCjAJj_6CL%_)OPwg3n=X;j^?zd<~a z^aM^%^WGF@KtvK(GwkD%j#g@DLgWD22dlKkD8m}9qSX^J5RaT`9~@yw%C^SRtaCgU zUK9AzFFmW1yT?ZZ1pNK0{|`Q_dw>9(f8c@sh9^zpWVj3+^x3_&WKe1b2i_Qs<$eDe z^ps87hzv+G)j-G5{795Cp=;0^mSFY$d25fQA?JCB zW1LiFBWPYiC~Q(aw?O&FM549Pw~q>zFP=K?jE@M^Ok>L}KYIOo1FbhAR9bJTYu-bK zFlUleV!x(sLM^0e%&E*|O%XToTNN>w8vS{G`#~(`p{-BEn+C%r-s>z_znMdMLsX+3 z1eWJluJKY?z0dX1H7n-CD7EQFNON|i?`o6?x(r7$aib1p<(sWcUawu3#Yq}y_+3%C zjVInOMP5a3LC_{4x9z$9*a5m5A!Vm*yxcy+YO~zjk_iFUD8p zs>wDqsa-y-t~m-Z!)~2W%==u@Br5MGbW8(lurRh8oQgk$CQ%Qi?*b>IU~L|1*(#@T2z`AwmH`xd$INB_BU@~iCX>jH8fbGqkN zU(bjH1aloKQmLmqmA;E{>2y?QErxR#gS(AaTUwJ`Yx7^}8@a5!aG5rx|L`PmT$5`> zGfN_IwnTf1m}p(2mCcr|o5hWmpTdflvCV8D)E?0uXohf1a9h0tNX~>GAJQJcTy+k& znG+lMT>Z2X!pPbADEMc*gK5v{%O7{R6#=hnKMWAgaH|ziRE7CuM0I@L5`NZOG>5u zhJj086S#^|o%pS+A_7Nk2EA&=BU;nWomgAn6JkAY7S?jW>6-Pz?$UTLTJs{j6sdY( zkTf6GXsG-(zr`*rzJRm$Y;mC1%^v!+HZ6o2Li?^fDoC405iE*q5MR=tvTYE#h*qe1$76IBTieuX_>UQV(~PZS9$pR z=s^=YoDhtmdl@@+W->M8H(ykdVEVzql@UqOWYHAahrN39ty_3rV-oQYVy{fO%7PI>IX`Fu+89l(fd$BLU> zYHf@;CEnbC)_4|kP3WX>$&Xx>{CTNrb|U^~r=rmxp4^$b%*PaOVxzHEXq~ktZjGp~ z+tDsLdCVJcr30iz>q#jD<1N6op6j0Bt=Z|PM=pnD29vwi&z{LT4iXTMDrUtr`%_N|SMFbe!zXRT!o+7fO0 zFOp}Iu3ci!bR6yg6yiemr4J^AFd}au-m?pV;qIMbcK|7im#5LY0_>PBv_p}uA#g*g zrA*V>PU2%OtF7XERBTj1CVswlcc`-$H8I6}^?z6o+n z^Oh*wL$zdOG{J;Yhse_!t5Ti=@m0(z3Q`Moz>iBJ!1V9XwK)nMuwpd*%pYfYjA!C* z_~tR~h6-yRq~)lrl@z&e0Ubbg^VAGu^*}bbc*`gv^SxfPOVKnCoVlcyA&5Y1Uca~X zk*|--JRjOqi#Qf|(QBYNEb>{GkZENauM>%U<1YAmv13|X(h^ItCm;WK<54)0Fhb(Z z9-Y_sXA!q%O7V7fV{hRCZaLbSc`VoLQ%+wJ%|S6*F=_3|U%x9qB%yq7&q7a$tyCXH zo}%W|B3`*Ak-9mqhlBxy3rNCm+Jj3K%HLJ^n{>`~v{Rnv!RazxL7vLxsyR2cQMb=( z`}+_Zo+#pP1kUcs_|nDZ=>oK${LoHS*M^s(Ze^WYve?QqK5APXwJ^l6GW6;8FiBDR zmpNJfi1u5_4KAf(+R&5s2AY-e8~>iSfA%f4C~n?{a`}d?iFR$iv3U`r)tI^@8-1a2 zlFp`SVMoS+ocmQw%psPo8HTAdhT!2b;oSk6J;uvw4`qu#1bp^9jY#I}bZ*WcuIl`L zqcgfJZ3r)L9|eDG3+UVgvZYlA$b&fBvvm(+mfqODZ|h7waqAVw&lYKo$#@i_U9z=S zp5rdFDq9ud{Ne~_6Fmp^soM-A@PR!ml9y_2PkXuxpBGh>q?KFMKuO^s*%m( zHXGruQv9z@?4@KCSa(J+ZJ7I{XC=E=)mT^{!2SAH%igy*f2aIE`QFgCb@m?(D@W#D zQ^@T`&-U!GC68eq$cgsQG**49>#bACB-tCyWCf?IG+ddpIUN43@$vG=V;uKi+r$qF zo1GZipUBE|VNHXHNU?3g$TXI2kiGtozGH$818k*gaKn=SI&~mHy77Hprc%W28bt`7 zw!9GX@8#Y#atg3-aT38ZD^^-KxQyvLK2+#d|GF4XXy)X<9i*LxVt(c@nAqBCq#-HwZQ9qa5AbhkaFNX7vjYF zX)wfPG?a&j%EOGOB{FEzT(4^=u+NGUy~uD@1GzSQLqAC(NEw@_TW92OM8HPCy)el` zvx{Ww6Pb^F6=-0O?;P3@&uHa&h26-@*Xe*-XgnLBI^EePml;J7(u&>;J%T~r zHeR?`h~#w-6VtHPF<`!B!V}1bJ;gzzt!t~pOfLpaGln7yFae|Sc8M@WE&E{I zSlxqSzsnexa$S`q`aDraA$iUS^SW0OCE#>hJCax3^m`poS4sU-)mpD>4| zM@R*sqQsB;Jk{UqM>tgQjm|3WejyP_<<+tXd(L3I)uZa0sWV^=SoGhS(#?cTJqwtv{gN4s+!spnE8f&)G_c-%^PmswW>Lh&L1A>6UA)0+c2M&+Jb3 z9hxSZ6(ysVeSq)0p<0ZT(l|vNbgS{S7mU45BS)8nj@j_m(x~ndS#ds}wcW$&hd}wq z6i?Z8R4F73#iLd0-7i99wr1N{02)H?ZamZ4X(4o@?MFqMM!Qienpjp3nRBFwcRuyT z)s6ual;At`dZoiz#000wf=+vM$7EudE3a+@3k=(7xdE}Uc3!eh(#L>NCL2u7j2s!L zS?feD!l)^hqkL(TM@qVVlZ>;{RTbYThz|dp%Tnj|3)-QHmNF`+?>$+P5b0ANyR2^A zRCJI+=^lEOC3Ml{WKZRpZ}95k{mHk}Jq!o#7l}LyW=c`u+tiYPFPr=FV6E@{i z1i=FVkxQn65w)FxI|A-yc+p?w^s0+23Ol%#our};saA^0i~Yq_B>Y9%W=WYZ(XWX7 zT0MKMZ!>2{ErE+S)DKU&U=l~6AJaSoY~c!0gs5tFaVaXH>8Oc0a%^0U78&F?=d28q z_2|t=qxebHJ%qXG*|iUJ-EJMMD6ug#gssfXDI%1DZ|5CryeDe)myK-5x%5$1LM zr8`JQ^fZZ;i1JAbXbu0Gx@wYLo_E|b?skYXYuE18(GD)R%W(f&h1-7QN)r4C_&Fh| zklMt3OEHmI7Nj;|h7vwX(=1HRZ2<`(=bbC+VDVtt{NEAFmp8CeV&+mOPDS;il=h zAilL)yC->3$Un*s1O@{^IR904AaZ8xzlk1)f<@S?knBNdO2cX2%+?uHL_e(YAJ)eL z0_6ZG#mN0IEWg$`^JlpQV=B6br3k1F|NdJ@ICpE&B81Ur(&l+he5qMr!thr>G@C6P zBvlq-nc5N->Mvc2s&W>QJO(8d`neWrl-bh9GLnpTQI0}&0v=)J^p1(7jn$*2E4gt9(39WS z=O1UB53G7mYzf?`skPj-jl5UmR5Q-!jvA%8JERHx(G}l+J(bd70V-F#U2@-sQjt$< zA6iM6L}P_L`|k zX+-GdI*HHLRKpj;>dNU)8`;G99v_DHeWHwQs8W3#7sQ!6=E3PW^GIK+w^!n$d=-Ym zZ`8O85NH0L-ANE)!vZNIH{#j|A>8BS(Y{?Gm=k)NtSFO>MWHTRd#(-qa?wh%z9An@+@lk)2eo$Cn6tIl|)7* zI(P>d>%JlD5;|^Nh$ilzpM6DicC}qOQ=#`cV&%&n;LDG&5>@>oei~%GY1 z=K1~pfYIkeO-vN1_Sg8n31xp#%&;G)dgIY4y0lL%w`zYZf?{RYMIxA3)k+KfsToFd z9VO7}uH^NV?`C*HuHa;q7}IMHAS$O5-uB? zOLsl~{s`;Z{b-b!^M}2dO<=C;?_}&RVJ(FcZ;xyVY-N-EzU~uxVq)@>>-5S7g>GjI zs_CS$xs#ZvX|$@+q)Gvn%o4rsIf5Y+JYDpk&+^lZ3MEooU|3oc;vEJU@})|+j9_JB z8WSXfdximWl3juANuZ<&zf@7)iL1{oWS+GMCaAGn_^D8;%8zOcI{v<$TLtCV`}60! z;h{wBsU)sNgl}DZ==YC}n1ye&kCk;_%TdkXERqVld1FZXYviSP1^q9zp2?pP8dQPf zbEB-+xPw9m6t%$61qlBJ#FiC6 zybkmR2f=rMoTphsVf;8h(Qf|R!ZYRV7va)R3QA!E zU6Ia}77GIkzb4>{;06*3dTF8A3uf|?w6L1SRM-t78G>ULN^_|Gs+hW<4aqPc#4U&^ z$7P!;tgW>PqD6tAXUampy72ZZt*i(r))rO$&YsXpgr;Bap9^7UJ8Ujp9!6HDvE!yQ zq1{520MCUlX~aWfpn(@&Qi`@Bd_olXl1lREgzWU&j`xOHDpv`b;5iTBmCq}_{IKX~ zCyN&@O6zCB=v$h(a6bpCH+H)O0?Ev7I&E1c-CmLfwYc5TQwIV6WG?OeQ9E3YznJd; zM@GZA6PWm4N+U_RB~ z{xgfth|B?{gJOF0UZiZ;l)hSNn4kdiIuz?EON0V2zaP6vENghLxb#i2xf|*sY|?8# z-h#S(SeFH9&>k0`NaPE8F4uiBv**Is+b$LeS>mIAKSvWsD!9!Vjxtgh>{ZFK;@9tn zzrMazfJQtm?v@t_@X9ibF&Qj(C^mYoC`Jt{l`U#z8FZchen!?6nBSdu2Y}SitWVT1 z*c`~8(N;9bKN%@MK_&uL{Jwi4x#V=${iyn~Db#X<6?zEryS6zLBr(BZE2z NHf*jhNz3k*{|B{p-ADic literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/headers/forestfloor.jpg b/wp-content/themes/twentyten/images/headers/forestfloor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9cf3e60b91a10bbb0867d71484ca33c5f1b45482 GIT binary patch literal 64595 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


      !-sqQ$XHr1xii(%709Ba61{NfTj>o zmb-jnrAG_G=JjAGNw)wn_i#!MX@~PlQoKU&Y3<5kFfwBZfgQN(vb9euh#6kOW4b5J zL%}goEesV5W=r;759wsZnJ8M&{bC-o+@Bb~p700cNUq&+y zbxP-^DhU)Sv$rj5VoJ$?Ikz)a;hwmQ=tH=e}@W&DlKr*&R1*}s7b4v04VvFqsVB|EOayprL1 z08u?nvZ4KLV{A|qA2|lvn%X$?6YC8A>PY#H6~325ug-Z+CLcCDBq-b-bI3czJ4^g$ zPA!371_3an^@6tGZKsnq`BQ5(=R2P2q5BgMdkq7L(~XgV;oH22XicXec=eU9S%5NF zf!Y@|2tZFdc@vDeWYY zNqaJMLNCt5!;tijCR}HOQX0%pjBIz?lUa;8w_CwzRHkpn0ZK}^x|oh0jS+T^0!Cfspxyob(!>oJMJI*=zQ}XAwBxK7CNXmI{ ztYjQEE8EsB-Y)bz$Y~;sNu~`%>k`7j>>$K^ez7XFyuhM}_GXUe3sX>=NGYt>nn2TS z2OGzYbej=J(hwuY6DEjrgkM0$^SprEj0S<{0UI994t(YERy z6ivm7Ti19F_dtCYk-!G7X{G_zkdE`OIT(4X)6~V4n;t+{^kdo5*XqI z^x=0#f!OWB*A3p_*_E`}->)w5avm)RJ*)09YPOk)tcX_dv%Y zMID;DUgN=p#E&fgv0frX@kDnH#lRkb`h6x%2&1T8FN5B4Qe$F0cFj|0RId&~-Q2y5 zOF|@h3<`%i;5X&q-}+#-Vbd>nvlQx6s62EtSa&SZWJA-#uQ+Gej9Y6?etX7JVM5Qd z`^EDd{{RI!_`++Qe8b)^h*BD|5N5DJNUh`!MrMFa7@CT6gY!aRF^^*@h7M5YesDi| z?T|n%*^iTq(~rMqrvCue3O}zZ%%d+xVV7Sn5l(&XTy$e++eSHvp{`=1MtP^)1=9uYmaBnNPE^z zyN8ze%h*PU6GG8`e7RRl@6MTg-~~>SYiTcxca1fqSZ|tfgWDG6Tnn}JlVkx4^S>Ed z+#)zAd%MF>W5}Jw`Nd3ekW+%VkV%uz#$Gc+PzPojQK+E&h9VZ#t3BeJv{=6I2OPLa zcHDlla}5?bpb?m~=Nfjobb4Sn%%V;^9voqUFJ-}EJT9uK0Pkin5EeWc3jiTMc@R
      b4D3L{MuNT!4jCe!R1p6F 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 BSvddz literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/headers/inkwell-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/inkwell-thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3693f0a001a8896b47ad5b13a9325ac1af0d9e7b GIT binary patch literal 4039 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 A%K!iX literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/headers/inkwell.jpg b/wp-content/themes/twentyten/images/headers/inkwell.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8bd914712276c864fa088a389ee65c5772b8c8e7 GIT binary patch literal 39133 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%0D7AQx`^t7E9;d(JbvhUXMf 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/headers/sunset-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/sunset-thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34e0730c54d7b15e97b922f2cdfabce8d53edae2 GIT binary patch literal 2194 zcma)-cTm&W7RP@fjTTG@J>iLjqLifxh9F%cH6T(}1OY)nkO-j$mLmFSVgON!G^qiC zq9EwTNL!GyNO!@gfT3%Er6?+BUfg-(yg%Rf%$<8?&OM)V&zZS%dDFZ(0BK9KAp#%) z0PyD!0)@b!P?!*mzeEIKFhLPfVPO$rVNs;$KSGL%9Y7us6GfvXB+zIq z27|#K{HY%h5F8Fih$3W=NEtavl%(9x;Q#CJIsud*pbad6K`1}~1p=c$ydD4pfB*q7 z2n75T7!UwKpl}#JXoTeZU;zjiCIA!p=K#MiFa!lXB(7tA3a#i1laLI*QbD;1$LXHW zeW-WT!t#W(OGj37`j1pME^AOSvD9DT}J;*j}i zU!B|vsG`NYhktMK*nlXQe@7G;1(*Wc#(wM@7NuKzt;fTTU8CS1$flZiP9sfHsWN}t zoeLaWo*Zvd(yXoA^_XgBkN!4>J)iDlt9VfCu{0?SASX_!8Qdu50SU0{oB^h{aBZbUbCbr9uA zinFQ_Y=vJGPN{oRr}~SvI!@W#P|Z$>;3^&}mNUo$4&OjLXc+TARk);Q5fys6>}WET z`Td2yZocebOC=0GD`x;Qj8h_*x1$T{tGOE1ajem+&nLOHB>2hTa;xZui=tiWcrCMZ6_<>nZXr5v~p-0SOx z87a5@R`vN^ck5bKqbF%Os{+HgYJ$1ZbL)f~F?Gr+Cwy9jCbH4WW-UUmki?Wg`DObq zIiV7}p=0L& zp>1D7RXe@YFFf(lO)7B*SGcVtQ*>wxN!*iJ{=M|r1N33#^ZyF+f9f2r{HrZPl3XCG zx`FecTvymxFQ^KLn8~9|+=~2Nepz$Hj^sN&7lY1!6nVSsYrIefw2#k9&OJk&07mstF^sV=|7p}O;$1%b_DadyC=Iq_@ zYN%cHy3Tf~PDNs+n}5i&@vo%*F|I`muxm4gu8izq9M+0*WU=NHxhhN&$Mw9*iVE`_ zhwvQdt3SRgo(Z`GXL?%?LL#rk*X+W1|#VUNq7VbY-*w^yD(|9-nQ*G%(rkeX9xcLV$a zxK8(hb#FAKN6d5ESX55PZa5~% z}pjefTYy|3+g6KU2AeGqvA1 z~4@iIhYv7~OVD-0%rs;Kdk?PV|zCPPwIdL^R z18Fdsw0P{+Q>#t=^*oNllvDqX3buwFn9&s0)Z>0|D&uPrt7g=_E^%I4-}M8vym7{P zB``Cw&9dPL50KnVQ=jW=Naz)7D1Wc_5xMxAET=pyv>}TJIFuI^4}O;JHK`%dm*72n zFBWAv-ls>DN#ZNkKIV%v0G`#z=r-s(^7P7u4o3MgEo(CL-yhwS^n4wy$&h<7&!aK( zm`(v{Ns0|QKEUUI#oCiJv`>^a*xwBj4#TP@-2z;mR8zo|zH`)MsgTTImQ|Z!4}w_1 z47im4PJRd>$?!!@slp4WS^hl^7L`}qm-7{yTjDWC8Vz1eQb`HbjObKt*SH4ic05y@e8lT^OHWc(r-3u~;c%D{@y&~j z4OhLvfTfbvWNT3994s+Rz)T2G0{V^bLa*L_V>TYBI>kb0hyq20&_7C&#k&0h^0hLq z%5GAg-6b#KTZXoh$u1=y@2IQUkJ*Q#27@H$jTQVP-nw;SPm-Oq`5zDc5G}3{5B!Ca5I3~xnggc1SN{R<(7De5 literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/headers/sunset.jpg b/wp-content/themes/twentyten/images/headers/sunset.jpg new file mode 100644 index 0000000000000000000000000000000000000000..98cb24544c8b4c1d2d285c91d6b79941b2a94528 GIT binary patch literal 22115 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 KKSBQhOaIwC?M;CI literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/images/wordpress.png b/wp-content/themes/twentyten/images/wordpress.png new file mode 100644 index 0000000000000000000000000000000000000000..ac9d227805c225da997c56571ea7a7e6bc55f842 GIT binary patch literal 794 zcmXw0YfO@16vpM8xwN*@nXTn)X}X!#XwEJx4QIGwYR+11t&44q)FoNAvKgXWY>)~f z46s>F=LG>#VN;P{DigJ-7$Rs0{V)^bqK%9AbsX#2_nr4S=X>ApoacFIxw!1`u$V9u z3KfpMj>(7h(B2!m58~+6$9BqEUrxYcUq^Z918d1YmV$K!E094Iz7H@n?#AWo-~&1Sn?E}P8;>H7M*$K$E2 ztgNf6+u7NHzCd6n6fG7DY_Qwyfw;A`6_^Url9Cbvfj}e@NhDHDO%0h$rcfwQr_pF| z`~#Irr_&h>MtyyKLqkJjVkW&GMx)VWGA%DJgBz;=%PNQhf7aI4Ha0fE0f*i0a5%sdFeISb z>-GA4KCr^?_wV|50SG(@QWVjFfct6X`8c>MR7hA!z6FhaIs*|c%&dBQf)`P=Ko_ndq6dFaKd=VjQqiISh< zlplH0`RFrMaZSe~NUsg0nj*cC&7lNc)6|-zH{CB2rfKQi0Y$~6=Ju=&S254A<`_xx + +
      +
      + + +
      +
      + + + diff --git a/wp-content/themes/twentyten/languages/twentyten.pot b/wp-content/themes/twentyten/languages/twentyten.pot new file mode 100644 index 0000000000..297243f72a --- /dev/null +++ b/wp-content/themes/twentyten/languages/twentyten.pot @@ -0,0 +1,409 @@ +# Copyright (C) 2015 the WordPress team +# This file is distributed under the GNU General Public License v2 or later. +msgid "" +msgstr "" +"Project-Id-Version: Twenty Ten 2.0\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/theme/twentyten\n" +"POT-Creation-Date: 2015-07-27 19:47:38+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" + +#: 404.php:16 loop.php:33 +msgid "Not Found" +msgstr "" + +#: 404.php:18 +msgid "" +"Apologies, but the page you requested could not be found. Perhaps searching " +"will help." +msgstr "" + +#: archive.php:34 +msgid "Daily Archives: %s" +msgstr "" + +#: archive.php:36 +msgid "Monthly Archives: %s" +msgstr "" + +#: archive.php:36 +msgctxt "monthly archives date format" +msgid "F Y" +msgstr "" + +#: archive.php:38 +msgid "Yearly Archives: %s" +msgstr "" + +#: archive.php:38 +msgctxt "yearly archives date format" +msgid "Y" +msgstr "" + +#: archive.php:40 +msgid "Blog Archives" +msgstr "" + +#: author.php:28 +msgid "Author Archives: %s" +msgstr "" + +#: author.php:47 loop-single.php:46 +msgid "About %s" +msgstr "" + +#: category.php:16 +msgid "Category Archives: %s" +msgstr "" + +#: comments.php:18 +msgid "" +"This post is password protected. Enter the password to view any comments." +msgstr "" + +#: comments.php:36 +msgid "One Response to %2$s" +msgid_plural "%1$s Responses to %2$s" +msgstr[0] "" +msgstr[1] "" + +#: comments.php:42 comments.php:62 +msgid " Older Comments" +msgstr "" + +#: comments.php:43 comments.php:63 +msgid "Newer Comments " +msgstr "" + +#: comments.php:73 +msgid "Comments are closed." +msgstr "" + +#. #-#-#-#-# twentyten.pot (Twenty Ten 2.0) #-#-#-#-# +#. Author URI of the plugin/theme +#: footer.php:40 +msgid "https://wordpress.org/" +msgstr "" + +#: footer.php:40 +msgid "Semantic Personal Publishing Platform" +msgstr "" + +#: footer.php:40 +msgid "Proudly powered by %s." +msgstr "" + +#: functions.php:95 +msgid "Primary Navigation" +msgstr "" + +#. translators: header image description +#: functions.php:165 +msgid "Berries" +msgstr "" + +#. translators: header image description +#: functions.php:171 +msgid "Cherry Blossoms" +msgstr "" + +#. translators: header image description +#: functions.php:177 +msgid "Concave" +msgstr "" + +#. translators: header image description +#: functions.php:183 +msgid "Fern" +msgstr "" + +#. translators: header image description +#: functions.php:189 +msgid "Forest Floor" +msgstr "" + +#. translators: header image description +#: functions.php:195 +msgid "Inkwell" +msgstr "" + +#. translators: header image description +#: functions.php:201 +msgid "Path" +msgstr "" + +#. translators: header image description +#: functions.php:207 +msgid "Sunset" +msgstr "" + +#: functions.php:280 loop-attachment.php:119 loop.php:116 loop.php:144 +msgid "Continue reading " +msgstr "" + +#: functions.php:376 +msgid "%s says:" +msgstr "" + +#: functions.php:379 +msgid "Your comment is awaiting moderation." +msgstr "" + +#. translators: 1: date, 2: time +#: functions.php:386 +msgid "%1$s at %2$s" +msgstr "" + +#: functions.php:386 functions.php:403 +msgid "(Edit)" +msgstr "" + +#: functions.php:403 +msgid "Pingback:" +msgstr "" + +#: functions.php:423 +msgid "Primary Widget Area" +msgstr "" + +#: functions.php:425 +msgid "Add widgets here to appear in your sidebar." +msgstr "" + +#: functions.php:434 +msgid "Secondary Widget Area" +msgstr "" + +#: functions.php:436 +msgid "" +"An optional secondary widget area, displays below the primary widget area in " +"your sidebar." +msgstr "" + +#: functions.php:445 +msgid "First Footer Widget Area" +msgstr "" + +#: functions.php:447 functions.php:458 functions.php:469 functions.php:480 +msgid "An optional widget area for your site footer." +msgstr "" + +#: functions.php:456 +msgid "Second Footer Widget Area" +msgstr "" + +#: functions.php:467 +msgid "Third Footer Widget Area" +msgstr "" + +#: functions.php:478 +msgid "Fourth Footer Widget Area" +msgstr "" + +#: functions.php:514 +msgid "" +"Posted on %2$s by %3$s" +msgstr "" + +#: functions.php:523 loop-attachment.php:36 +msgid "View all posts by %s" +msgstr "" + +#: functions.php:540 +msgid "" +"This entry was posted in %1$s and tagged %2$s. Bookmark the
      permalink." +msgstr "" + +#: functions.php:542 +msgid "" +"This entry was posted in %1$s. Bookmark the permalink." +msgstr "" + +#: functions.php:544 +msgid "" +"Bookmark the permalink." +msgstr "" + +#: header.php:33 +msgid "Page %s" +msgstr "" + +#: header.php:105 +msgid "Skip to content" +msgstr "" + +#: loop-attachment.php:21 +msgid "Return to %s" +msgstr "" + +#. translators: %s - title of parent post +#: loop-attachment.php:23 +msgid " %s" +msgstr "" + +#: loop-attachment.php:32 +msgid "By %2$s" +msgstr "" + +#: loop-attachment.php:43 +msgid "Published %2$s" +msgstr "" + +#: loop-attachment.php:53 +msgid "Full size is %s pixels" +msgstr "" + +#: loop-attachment.php:56 +msgid "Link to full-size image" +msgstr "" + +#: loop-attachment.php:63 loop-attachment.php:126 loop-page.php:30 +#: loop-single.php:59 loop.php:101 loop.php:124 loop.php:166 +msgid "Edit" +msgstr "" + +#: loop-attachment.php:120 loop-page.php:29 loop-single.php:34 loop.php:145 +msgid "Pages:" +msgstr "" + +#: loop-single.php:21 loop-single.php:64 +msgctxt "Previous post link" +msgid "←" +msgstr "" + +#: loop-single.php:22 loop-single.php:65 +msgctxt "Next post link" +msgid "→" +msgstr "" + +#: loop-single.php:50 +msgid "View all posts by %s " +msgstr "" + +#: loop.php:25 loop.php:179 +msgid " Older posts" +msgstr "" + +#: loop.php:26 loop.php:180 +msgid "Newer posts " +msgstr "" + +#: loop.php:35 +msgid "" +"Apologies, but no results were found for the requested archive. Perhaps " +"searching will help find a related post." +msgstr "" + +#: loop.php:62 loop.php:96 +msgctxt "gallery category slug" +msgid "gallery" +msgstr "" + +#: loop.php:83 +msgid "This gallery contains %2$s photo." +msgid_plural "This gallery contains %2$s photos." +msgstr[0] "" +msgstr[1] "" + +#: loop.php:84 +msgid "Permalink to %s" +msgstr "" + +#: loop.php:94 +msgid "View Galleries" +msgstr "" + +#: loop.php:94 loop.php:97 +msgid "More Galleries" +msgstr "" + +#: loop.php:97 +msgid "View posts in the Gallery category" +msgstr "" + +#: loop.php:100 loop.php:123 loop.php:165 +msgid "Leave a comment" +msgstr "" + +#: loop.php:100 loop.php:123 loop.php:165 +msgid "1 Comment" +msgstr "" + +#: loop.php:100 loop.php:123 loop.php:165 +msgid "% Comments" +msgstr "" + +#: loop.php:107 +msgctxt "asides category slug" +msgid "asides" +msgstr "" + +#: loop.php:152 +msgid "Posted in %2$s" +msgstr "" + +#: loop.php:161 +msgid "Tagged %2$s" +msgstr "" + +#: search.php:16 +msgid "Search Results for: %s" +msgstr "" + +#: search.php:27 +msgid "Nothing Found" +msgstr "" + +#: search.php:29 +msgid "" +"Sorry, but nothing matched your search criteria. Please try again with some " +"different keywords." +msgstr "" + +#: sidebar.php:28 +msgid "Archives" +msgstr "" + +#: sidebar.php:35 +msgid "Meta" +msgstr "" + +#: tag.php:16 +msgid "Tag Archives: %s" +msgstr "" + +#. Theme Name of the plugin/theme +msgid "Twenty Ten" +msgstr "" + +#. Theme URI of the plugin/theme +msgid "https://wordpress.org/themes/twentyten/" +msgstr "" + +#. Description of the plugin/theme +msgid "" +"The 2010 theme for WordPress is stylish, customizable, simple, and readable " +"-- make it yours with a custom menu, header image, and background. Twenty " +"Ten supports six widgetized areas (two in the sidebar, four in the footer) " +"and featured images (thumbnails for gallery posts and custom header images " +"for posts and pages). It includes stylesheets for print and the admin Visual " +"Editor, special styles for posts in the \"Asides\" and \"Gallery\" " +"categories, and has an optional one-column page template that removes the " +"sidebar." +msgstr "" + +#. Author of the plugin/theme +msgid "the WordPress team" +msgstr "" + +#. Template Name of the plugin/theme +msgid "One column, no sidebar" +msgstr "" diff --git a/wp-content/themes/twentyten/license.txt b/wp-content/themes/twentyten/license.txt new file mode 100644 index 0000000000..5fbe4a70aa --- /dev/null +++ b/wp-content/themes/twentyten/license.txt @@ -0,0 +1,281 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/wp-content/themes/twentyten/loop-attachment.php b/wp-content/themes/twentyten/loop-attachment.php new file mode 100644 index 0000000000..a2dfae6e24 --- /dev/null +++ b/wp-content/themes/twentyten/loop-attachment.php @@ -0,0 +1,132 @@ + + + + + post_parent ) ) : ?> +

      ← %s', 'twentyten' ), get_the_title( $post->post_parent ) ); + ?>

      + + +
      > +

      + + + +
      +
      + $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ) ); + foreach ( $attachments as $k => $attachment ) { + if ( $attachment->ID == $post->ID ) + break; + } + + // If there is more than 1 image attachment in a gallery + if ( count( $attachments ) > 1 ) { + $k++; + if ( isset( $attachments[ $k ] ) ) + // get the URL of the next image attachment + $next_attachment_url = get_attachment_link( $attachments[ $k ]->ID ); + else + // or get the URL of the first image attachment + $next_attachment_url = get_attachment_link( $attachments[0]->ID ); + } else { + // or, if there's only 1 image attachment, get the URL of the image + $next_attachment_url = wp_get_attachment_url(); + } +?> +

      ID, array( $attachment_width, $attachment_height ) ); // filterable image width with, essentially, no limit for image height. + ?>

      + + + + + +
      +
      post_excerpt ) ) the_excerpt(); ?>
      + +→', 'twentyten' ) ); ?> + '' ) ); ?> + +
      + +
      + + ', '' ); ?> +
      +
      + + + + diff --git a/wp-content/themes/twentyten/loop-page.php b/wp-content/themes/twentyten/loop-page.php new file mode 100644 index 0000000000..989881f74a --- /dev/null +++ b/wp-content/themes/twentyten/loop-page.php @@ -0,0 +1,36 @@ + + + + +
      > + +

      + +

      + + +
      + + '' ) ); ?> + ', '' ); ?> +
      +
      + + + + diff --git a/wp-content/themes/twentyten/loop-single.php b/wp-content/themes/twentyten/loop-single.php new file mode 100644 index 0000000000..68dd08f6f8 --- /dev/null +++ b/wp-content/themes/twentyten/loop-single.php @@ -0,0 +1,70 @@ + + + + + + +
      > +

      + + + +
      + + '' ) ); ?> +
      + + +
      +
      + +
      + +
      + + +
      + + ', '' ); ?> +
      +
      + + + + + + diff --git a/wp-content/themes/twentyten/loop.php b/wp-content/themes/twentyten/loop.php new file mode 100644 index 0000000000..9f3088544f --- /dev/null +++ b/wp-content/themes/twentyten/loop.php @@ -0,0 +1,182 @@ +get_template_part( 'loop', 'index' ); + * + * @package WordPress + * @subpackage Twenty_Ten + * @since Twenty Ten 1.0 + */ +?> + + +max_num_pages > 1 ) : ?> + + + + + +
      +

      +
      +

      + +
      +
      + + + + + + + + ID ) ) || in_category( _x( 'gallery', 'gallery category slug', 'twentyten' ) ) ) : ?> +
      > +

      + + + +
      + + + + + +

      %2$s photo.', 'This gallery contains %2$s photos.', $total_images, 'twentyten' ), + 'href="' . esc_url( get_permalink() ) . '" title="' . esc_attr( sprintf( __( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ) ) . '" rel="bookmark"', + number_format_i18n( $total_images ) + ); ?>

      + + + +
      + +
      + ID ) ) : ?> + + | + term_id ) ) : ?> + + | + + + | ', '' ); ?> +
      +
      + + + + ID ) ) || in_category( _x( 'asides', 'asides category slug', 'twentyten' ) ) ) : ?> +
      > + + +
      + +
      + +
      + →', 'twentyten' ) ); ?> +
      + + +
      + + | + + | ', '' ); ?> +
      +
      + + + + +
      > +

      + + + + +
      + +
      + +
      + →', 'twentyten' ) ); ?> + '' ) ); ?> +
      + + +
      + + + Posted in %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-cat-links', get_the_category_list( ', ' ) ); ?> + + | + + + + Tagged %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-tag-links', $tags_list ); ?> + + | + + + | ', '' ); ?> +
      +
      + + + + + + + + +max_num_pages > 1 ) : ?> + + diff --git a/wp-content/themes/twentyten/onecolumn-page.php b/wp-content/themes/twentyten/onecolumn-page.php new file mode 100644 index 0000000000..457e04bbda --- /dev/null +++ b/wp-content/themes/twentyten/onecolumn-page.php @@ -0,0 +1,32 @@ + + +
      +
      + + + +
      +
      + + diff --git a/wp-content/themes/twentyten/page.php b/wp-content/themes/twentyten/page.php new file mode 100644 index 0000000000..70029db042 --- /dev/null +++ b/wp-content/themes/twentyten/page.php @@ -0,0 +1,33 @@ + + +
      +
      + + + +
      +
      + + + diff --git a/wp-content/themes/twentyten/readme.txt b/wp-content/themes/twentyten/readme.txt new file mode 100644 index 0000000000..70aba17f6e --- /dev/null +++ b/wp-content/themes/twentyten/readme.txt @@ -0,0 +1,93 @@ +=== Twenty Ten === +Contributors: the WordPress team +Requires at least: WordPress 3.0 +Tested up to: WordPress 4.3-trunk +Stable tag: 2.0 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html +Tags: black, blue, white, two-columns, fixed-layout, custom-header, custom-background, threaded-comments, sticky-post, translation-ready, microformats, rtl-language-support, editor-style, custom-menu, flexible-header, featured-images, featured-image-header + +== Description == +The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the "Asides" and "Gallery" categories, and has an optional one-column page template that removes the sidebar. + +For more information about Twenty Ten theme please go to https://codex.wordpress.org/Twenty_Ten. + +== Installation == + +1. In your admin panel, go to Appearance -> Themes and click the 'Add New' button. +2. Type in Twenty Ten in the search form and press the 'Enter' key in your keyboard. +3. Click on the 'Activate' button to use your new theme right away. +4. Go to https://codex.wordpress.org/Twenty_Ten for a guide to customize this theme. +5. Navigate to Appearance > Customize in your admin panel. + +== Copyright == + +Twenty Ten WordPress Theme, Copyright 2010-2015 WordPress.org & Automattic.com +Twenty Ten is Distributed under the terms of the GNU GPL + +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 +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +== Changelog == + += 2.0 = +* Released: August 18, 2015 + +https://codex.wordpress.org/Twenty_Ten_Theme_Changelog#Version_2.0 + += 1.9 = +* Released: April 23, 2015 + +https://codex.wordpress.org/Twenty_Ten_Theme_Changelog#Version_1.9 + += 1.8 = +* Released: December 18, 2014 + +https://codex.wordpress.org/Twenty_Ten_Theme_Changelog#Version_1.8 + += 1.7 = +* Released: September 4, 2014 + +https://codex.wordpress.org/Twenty_Ten_Theme_Changelog#Version_1.7 + += 1.6 = +* Released: August 1, 2013 + +https://codex.wordpress.org/Twenty_Ten_Theme_Changelog#Version_1.6 + += 1.5 = +* Released: December 11, 2012 + +https://codex.wordpress.org/Twenty_Ten_Theme_Changelog#Version_1.5 + += 1.4 = +* Released: June 13, 2012 + +https://codex.wordpress.org/Twenty_Ten_Theme_Changelog#Version_1.4 + += 1.3 = +* Released: December 12, 2011 + +https://codex.wordpress.org/Twenty_Ten_Theme_Changelog#Version_1.3 + += 1.2 = +* Released: February 23, 2011 + +https://codex.wordpress.org/Twenty_Ten_Theme_Changelog#Version_1.2 + += 1.1 = +* Released: July 29, 2010 + +https://codex.wordpress.org/Twenty_Ten_Theme_Changelog#Version_1.1 + += 1.0 = +* Released: June 17, 2010 + +Initial release. diff --git a/wp-content/themes/twentyten/rtl.css b/wp-content/themes/twentyten/rtl.css new file mode 100644 index 0000000000..f6fd51e846 --- /dev/null +++ b/wp-content/themes/twentyten/rtl.css @@ -0,0 +1,278 @@ +/* +Theme Name: Twenty Ten +*/ + + +/* +RTL Basics +*/ + + +body { + direction:rtl; + unicode-bidi:embed; +} + + +/* +LAYOUT: Two-Column (Right) +DESCRIPTION: Two-column fixed layout with one sidebar right of content +*/ + +#container { + float: right; + margin: 0 0 0 -240px; +} +#content { + margin: 0 20px 36px 280px; +} +#primary, +#secondary { + float: left; +} +#secondary { + clear: left; +} + + +/* =Fonts +-------------------------------------------------------------- */ +body, +input, +textarea, +.page-title span, +.pingback a.url, +h3#comments-title, +h3#reply-title, +#access .menu, +#access div.menu ul, +#cancel-comment-reply-link, +.form-allowed-tags, +#site-info, +#site-title, +#wp-calendar, +.comment-meta, +.comment-body tr th, +.comment-body thead th, +.entry-content label, +.entry-content tr th, +.entry-content thead th, +.entry-meta, +.entry-title, +.entry-utility, +#respond label, +.navigation, +.page-title, +.pingback p, +.reply, +.widget-title, +input[type="submit"] { + font-family: Arial, Tahoma, sans-serif; +} + +/* =Structure +-------------------------------------------------------------- */ + +/* The main theme structure */ +#footer-widget-area .widget-area { + float: right; + margin-left: 20px; + margin-right: 0; +} +#footer-widget-area #fourth { + margin-left: 0; +} +#site-info { + float: right; +} +#site-generator { + float: left; +} + + +/* =Global Elements +-------------------------------------------------------------- */ + +/* Text elements */ +ul, ol { + margin: 0 1.5em 18px 0; +} +blockquote { + font-style: normal; +} + + +/* =Header +-------------------------------------------------------------- */ + +#site-title { + float: right; +} +#site-description { + clear: left; + float: left; + font-style: normal; +} +#branding img { + float: right; +} + +/* =Menu +-------------------------------------------------------------- */ + +#access { + float:right; +} + +#access .menu-header, +div.menu { + margin-right: 12px; + margin-left: 0; +} + +#access .menu-header li, +div.menu li{ + float:right; +} + +#access ul ul { + left:auto; + right:0; + float:right; +} +#access ul ul ul { + left:auto; + right:100%; +} + +/* =Content +-------------------------------------------------------------- */ + +#content table { + text-align: right; + margin: 0 0 24px -1px; +} +.page-title span { + font-style:normal; +} +.entry-title, +.entry-meta { + clear: right; + float: right; + margin-left: 68px; + margin-right: 0; +} + +.entry-content input.file, +.entry-content input.button { + margin-left: 24px; + margin-right:0; +} +.entry-content blockquote.left { + float: right; + margin-right: 0; + margin-left: 24px; + text-align: left; +} +.entry-content blockquote.right { + float: left; + margin-right: 24px; + margin-left: 0; + text-align: right; +} +#entry-author-info #author-avatar { + float: right; + margin: 0 0 0 -104px; +} +#entry-author-info #author-description { + float: right; + margin: 0 104px 0 0; +} + +/* Gallery listing +-------------------------------------------------------------- */ + +.category-gallery .gallery-thumb { + float: right; + margin-left:20px; + margin-right:0; +} + + +/* Images +-------------------------------------------------------------- */ + +#content .gallery .gallery-caption { + margin-right: 0; +} + +#content .gallery .gallery-item { + float: right; +} + +/* =Navigation +-------------------------------------------------------------- */ +.nav-previous { + float: right; +} +.nav-next { + float: left; + text-align:left; +} + +/* =Comments +-------------------------------------------------------------- */ + +.commentlist li.comment { + padding: 0 56px 0 0; +} +.commentlist .avatar { + right: 0; + left: auto; +} +.comment-author .says, #comments .pingback .url { + font-style: normal; +} + +/* Comments form */ +.children #respond { + margin: 0 0 0 48px; +} + +/* =Widget Areas +-------------------------------------------------------------- */ + +.widget-area ul { + margin-right: 0; +} +.widget-area ul ul { + margin-right: 1.3em; + margin-left: 0; +} +#wp-calendar caption { + text-align: right; +} +#wp-calendar tfoot #next { + text-align: left; +} + +/* Main sidebars */ +#main .widget-area ul { + margin-right: 0; + padding: 0 0 0 20px; +} +#main .widget-area ul ul { + margin-right: 1.3em; + margin-left: 0; +} + +/* =Footer +-------------------------------------------------------------- */ +#site-generator { + font-style:normal; +} +#site-generator a { + background-position: right center; + padding-right: 20px; + padding-left: 0; +} \ No newline at end of file diff --git a/wp-content/themes/twentyten/screenshot.png b/wp-content/themes/twentyten/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..fac2b97f433aa3f8a979335bf2ede025c5d01ef2 GIT binary patch literal 419383 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 z

      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
      _mNC2T!_vAAJqG4mp!oaYCtgFMN- z9WXL?ZXXo|1VrDseYaX1P`>>AKlqWcnldocqzQ*M3py7sg;)av4i0C0tOsP+;n+bZ zx>02zehD~5VT9mVnpiiVoMK}1e7_+UTV&WrpS}FQ|BJt~+xFg!SC_jW7Na@09&^b? z$exB+mgvQX_;BN9_bIZlN2@#qZg+dVZQC|4l0|h;ted{u-a1;j?R9>b-8?88<3D`x z_|s=y(>CDZbXa?UT^R8M_7A7GmuJm&@i_Aqf~ofo4$?etN0pWp3B(LdFx`B7cFuLz zt+7D0msJ_Val-m~n{-Ki-Sr!rivaV}A{pVaGf-l#I8)rMW2Bk0h<3467H4S|JZ^R^ zr)>ZDSSi!Cou>?R;;LtY%@stVWJbL)_)Houf;E=H7AdQEKWwl>q3p?VgZKF3k zH$Vt+nx-ZUjWq_k)VZO0x{?&e%Dl*_fS*e#K|$gbt*|@)ZDu$ zi6a`au+&`f>S86q%q^r$5Xx3eU`pY!RSM0HenyR@U>Bxj0$+;^B%}^Liy>8Xj_)nO z7c=(P*R<(W-Hp3?*YwIFVR3*4G#E)dllcC7w^vK4RkIteFg76c&2p>fx*CXl!XiwK z%-EObFS|kONx(f}yc7o^j*|pH@o3C%f`^DrGwPQw&nJj$9D2s-(a}L7xzVr`)lE$> zDXT@6sl}+ zX0pJ+>2X&SbWtTE0NW_c-L7*DV;oj3I1WGoEErWvU0z+4nV2V=dbd+Uzqed~@GoE~ z)5U7+x_wB>Fv9BAm3jC zA*Iqx5g6=QUP4OQ;22Fg0qcB-nJls6EGF&GS{aA%pL!rb(&_|DKkts8RS7P(%+9I( z2;K_fVo|96!uz-W@?ZIjU;D;aMJC#zJ~)_8;1#HYy@QlRCV;_q;e!vq^GAQ+qlVh6 zVS9D{+3~?D#&rcaysFR-R>&lgY00VZA!S~;5shc6uQ|i2Z(}(<5196<3lBMs+v&kJ%mYYO%Q3mmnIb`tC5Wb`T{9_ zL>6DY@&4JXSKs+pe(%ucdCGU&t9rLpqlT{1!8DCpUkv;E_g=kt_P_pL{U4W$yoVa= zKFiX!?V{j>bpt%(Mg=!gHJpC(@c%|&)PwnNRL0n7iy)G)B+090?9N`Chl*Oj>X5}G zj#7c3IRtkOw~i{-xkn45`I?8YzpK0$hu0s)j5N~~SpTJ8`TD>A-}w&<23ja7v%~%B zkAL^?Tr``4JEC@7ec7AwAg>q^uD1g7?(&7I>qSPa+MREjgOf?4w;FBJ+wF0=tn$n^ zjZu2nY?abSCnwt4DQF{DOS}`50431(7QTWYQd;d5<*FQdu!}-?Fm_3qO~0bNt%rs| zbpb4nl)(Z7aow?^lg55|6j8Z(L^j@2L0`Ohyu1GF&;II{lZ08bGuj-TEbIExSbVTw ztxk^GtJ4oY_{ood_|xC`)n7W=-)nYjJ@&@B)oS^LFTJmgIXgXTy0%wZrp4r-3Iw-( zb9phHQ7@-oU+t9ufpZQpJPL3D1t>h7and<_nEIGaQC7upy?yxT(Ppy~LI8bMEsgb* z%GLg1nio7tF(aQ%MS*SYap+ZFE{jLc9aJ6@}TTdi=R%At0zWasuSg}7Bh=F8j zRy6q-y#OQKd_EvP+PopTlnFI%B`0@pAFmd9p2=m!uTL+7^UErqHf*TW)ut$y#`$TA zy|_Fr%QVZXwsEj!fY=LWsSp$88E6Zjf-g8wJApI>p|%6Z&De)04_vqTsQCh9MXK8xy;K8%s`@Qe~{eSPDaXiy%ZFYUdlXAJhg0K7W#_{5-Uww1i4Z|=( zZtMt|+>0bB(`0Xd!GObE8$I@2BOuS*UR_>Qi)o`@!FRV5wSw+vVC_dxOhCR^r(Rxf z)nEnZ@zup?nxg@${>o^*w_2u!WU(P@ySw(F7h#{C zfcw5n5?IS9#qD~h)Cd8gNpZZF(K)Eb(~zbxr%NzF_f0d7wVY=EY7x>5lL%7{(?1Fa zfwIDTS1l@v@cG57(T>|~&pA!9B&V|4+xL`CM-ijV@$nI0glz*#Tqs5j-3ViQv)zrO zSyWYCmT(3lRth;lN*eV1D6P~uu2w5bVk*|$%I(n{OKjbo9YU zn{`q!V-(^rQN&~%*vXPa&RwR2_?zWzt@QzTHhfpt!!S(qqToDB;gmzqE`cSNiG1^Z zzu71?bbUYRD;7oh?B(;#dgoo}$MNx#XHTBIc=q(Uv+ntmGlbA|QXR27e|d_~9AysB zSxlzGpkXCpmZ`EhAyG#m6muL2B@)uGp#L(b0%^-*G1}<$!Kzr4C4$V&LGXN0Rn9?e z1|d|(q+2c$?@+rPGtMmYTuP7zHNEN@)$KU8DW@`%5ZQxbx&f4Gj8#=7LQDa6AkBv! zb0b)S3H|&?>wznFhC+rEn>|Ss+p%|7SG#uWylsmV$`@}Q9ivc`<%_Fp7@Xm(01@kO z&@rY%0c7gi&2`j2w>Z#0#U9#oTYS{66QJ85E#w^$emo=zkS4nD4{XvF2>Qsi4x6MEc}iINYux}PymG2Q4eY< zA16>66F(A4{_<~p```L+{(Gs{fqEvYuG?aDy(+S{ZKdemJiaH@+&_SyC z)y@n?PG^x^SEU_)|F8bZkAM3^DS+_Y?KWNCqX4c?Ow%ib*ka)+mqBe6c@Jp^{h`t4E`TG!c@EVpXn|`(W$7+^nswZk#M6zV5H;wh4q<8|Hoj z04d?88U{zG_JLoA`nuV_7af^1H9U`#@BxM^0?4jFG{N}Z@}SHs)Lu8u4rO*v7I;uM zm&N`4BfRSm(o(GUOjl3d3+?d!!3l*E9n#%4p(x*5=%(QT8vgf^40}gX)^uCBSMF8G zs5PSW^5Wv=n>R!$cB<1}C1pk!X;uHlFMkmsm*v?o4%wn)NjkP&-*;5dqFPLIYCU>w ztssGO9)&}WIG9tWYX(|bi2cfh#5>dTR9tT_F3#6~&)@S+njmF0=CI#nrL0@ks-9dt zmz=%*?)`Sx?d>f+0*hFlC4L;I^zy^w8Hq4jI1$5QB=jk7(*G)tA)kkXCHrj z@2&gm_0^N-&oO8DqH2bA|9Jo4#=&;GK}c&m*lx`Bip6v~UhTj0{uiH~ZIuVH5sdzU zL1k{N;ESQ?8e~r{mQ+|1Mg1niig=M#w~h{*=2c(sD0Ub?aD|7jV_U26JIBsb)B8U56(`vfAakghu&vmrGl^? zCR`BFc@x9Y2~4FRqj5%$IDjT`Xa-06?cga#qRjfPwYViLa7wj}DUU%CLLgzB31`vJ zL;C^r_IO`pdqcnb!$0`p?c<{_ys>}#CfM$e_K%X3V@_H#B7rR?Di}!Wwzh40Jo*w# z8cS9;Yl*9rWacLad>8t%Z?D!xxP)>pT1G`KzZ-Uba2dQ$wfx zuIGq(56Z8hX}KQhTz~BYATENVOvp(@d~~>|igtUk+irN0B0?ru$OSKwh>$HZHAFP4b7J}NjK|280 zi71Wmlg9~-$K9CB23`pruo*ke0o9!O1{_m(Kzq6rops_Fb)YXM)z& zT&%Bl{kZD}m_hJ}DMWu8(_@E-kZo(9JT`gC%8W=MblY`$H*`8lvZJG$!K3Mom?SNX zhO|fuol!=VQ9jVN*)fWsQ&Au(V*wHNSExDY^$ME%*QdPhu-X}fJGK@0{fyBn`CoU~mc zr3B-9>QNX+fP_UNRNK~9=gtR6Rq6UNXNxKul!Y&YQl(8SpOn<;ggSxEGGjQGEVi-x z05ZtnwRO>y7*mQOa^cZy^A6u^x(A;^{;bu?OZ{dfeIwT{4)7Po+Tl?_-m=IZP+sLI%WQ6*KHkX(Seud_7h zWk%8@7d$Of#<6!%YZrsvBD@aRm!$;FRqG_?$q!xA?a1D(8_WH}GjDX$T%Ns(LMA*_ zFtiZTX;eErfAZ||{QT(n$OUkmF&0Bx^MnSsf3Qkp+1StLKuNr(P6>*VEcyHX%Afz% zH@*(?U6DS1{^Dmp`}F%i{AnOPMv@8_dwBo!rihlVIr)#kKhYqJ=TvhR!_4C+chN3| zDe@w={sPc|=2mHw((LUw-jc;qoxf043D8hF!Gu#9DQmrPAmDYG%oe;z9Y8(%`EoC- zT)nfsr3^^*vF!*HjLAGNW3FNA0^&U9Ok!C`t+63E%ke}@oSvq6zE~`AwM2yVr#qLC zy)pmt(L2{yTlH%E|v#bB{|L~u#WRgh{ z3|Ne;w{_bp4S-@}jK-`VjFdS89lBH7bu=&duJ7`yfWxR&CfnsqtvA-8 z?s8+>;r9M<&Xe|f%cQ0VZ+BOp{^TRmj0;%?_1q7ZqyWQ4vABb@HVz<;i_Flh)(##n zg6Y^WXFE-fgBo&W7eYC#VWcgmu0Etp850*!_ZmmelTOj9?q6iY!Uey6LQ^=bOtw!O9-_pFrj}(i!5RaKguoC^B2JV~+izDxJFQ>L$yI zcI&txB9YF5(9L>R7CBGSZnPlv;~LPZbc14)Fs#)P?w*AP(J_i}OggRGK1*`!yc+#yKg*Lgcb!-jU8a;*<03NYm`CH*ddt2r`t5 z&Gn|PiI7EE*3%tu1^OgPMOp26$F^H&TV0h4J8FhULeyuEfAmlN)1TbGy?^)Qu*woa z0El_}t$TOw-$n%W8uq$sxxe5tBZ%hQDBX4SFgQ*u_*$w0c|ZL%*r8ju?~Q{o!oAd8*|AsN;Z!DBBHPv@WRjHT*+IFGNy3zB6=-KL z0(wVj)O7`rpEZ2+EI&qzDfy0jHgDslargyg+Zz5nZ+1a%PPr>-FDp# zfUp_|5o}pJj&jap|1x#nu^8=X0b2qr3_^fG*-ODz5lhvv(s>?}HweIQf(b-0FL^A; zPSZSd&URxjL{geZxk5R7N=s+OWiwq5<`)#>?qOC_XA1VRj)UV4u$ zg>ewvHKx(p*k<&a#dJ7K6P6=Ho6FV*q&g#MnQ)d#o8PK1LS3U7fiN9|97;$kvph`_ zPB1)iaJU-m@ce9Zbhv-})(thL`7)JIQK4~IjZNo_O=WU&e0Y4cy0|=>PKhsHJ$Hy2 zi_)w_qJVCOfEPq5~|+atBLANTsBd8Ec$#l+oDi?ONS$N0f}vY!_m8 zV(tiwIzI+50=!dKI=LSEaR4_P=saT~ZEU@YLmy?)e+h6hu;Q}q+OF%F;6;%v zmKD5gjMQ}>Su8S+3Ix!EEfPBRBMusHUJk&d^%(j=RA-HyQ!@zzY%)R@pSS5zHY&Z| zv_*cfsFtY!GJLZe=U_sx0R~kc~FvFf=KoOAzV#jzJcMr!| zR4B#7!I%J#@7=w5>*Ux2`iqYC784k`x14lGuP&}24Wr7+u>(=H9>%7wxfE8baTpdw zfiYT?83|Uaj^LlufpV3IeXH5k)!w4``+nh5arw7 z+{k<(K^TXm8QZQ6Eab@oL+E1STbRMdPN6a6Ng@nII4c(?$Z08I`2jLLuaL0_SBWsj z(bdt7UX70)UmzndU+i8z{uC-BHn8#v&XEt+LO$cJSA#`YYn_eNsKb+=zW5*fxBq7h zjYc;VC`;cNzwJkZlirFf&ymY1%buV2sW1-te(1rIlt`tuk9kQW(j*0E4o-M8LUPf; zn>TLUI!QC>kS&)BLeSC4&C}D1@BHo`H=FCbZ{Gg1fBxV2?z?Xgil$^7DdkUp`qN3& zfBV**uYL8~!=V4`|F!?tCm(+F5C22|;D6+w_z&DT-iJ)kVAR;1o}MoElk2NpKRi$J ze*YNTurZ?|0f2Xd3^eOQwIB!W0H%S%n*hHEFMCW6!zf1R&is320ipA}dJ16@$>UE>dnCGcpZyh*{L<9o|SdZg(4GahVpMeemGL zi|1}|{dL#xc7wk12(R{UpgvHIq-S=kk^tL-hA%cm>k^qOWwD0#_QjXld;i|y!I4bl9M`HN14tQAez4lbQ1RCya_?zO z=iBb;Pai%q#@@Yq_wwTG_x|v=CnWOE-u`td>CKxb-}vTNCif3Q_|6^B0rf*u9qs3m z0cfO#^=?bYhETri^rqRxbPDdGkSRo?Otd}u5Je`ly9>p(U_wE-##xd{$yjo{zmEgh z!YmZo@llTei4>)fR%8d47mvrTPm@e(7S&rMLap($5gJt$#2I9bl`?tjo!if!SW3uV zc{I&ezx_MkJ3ZfGanSBMOF*9w71A)TQ3-LB~eN2n020BfzXQ(W-a?{G--Q~)BTh6zp^yr4lN)s;(u zX?#j`{QSui#05#@F!W&@t7w@^14>>dc+Qnj@I?`$4@sC&>O7aK~Pd8JYh^}*ACvAphnZxIzX>9esXb2!bMYe$OiC3 zm^v@=t3eIGC)SYaf}t*5a*l9ve!dNUOeATx+i5$b9GzV~heE>YkYmYt61?4BH81OP zMxk?l8rqrMh5-HJfuJN$(k!?rne7I(t#@x#E91;=*Km<0GSgs$@XSLp#zgcp3IZt$ z3cDpB;}*8)VN`9`M3XX9PMOh;qw?0yxt>Owwr!)4LbZJx6Hj@b7GVB`Mr=rrbKU|3 zIF6Z2n{|T&=7f#i$S9!zfa<|n<=x@oF-_9W=(H-+A|J=PA8R3LlG2K$DUpTbj9Nf{ zoo0}Em};V;|Ikn-jfD|c2UPc(M09iOI8!&Q^ctw*5Te*sK#btXs!|U>E6-}23apf zh9UUa_3P^-t1wEK%qFvr-qqJnPSNQuK`umx3TUV;Y6sQ!!)6>`t+(BIpRv`@?tcF_ zf6%@9@4tNhXe!zsht>s6D33$12|$sNz;SI*podzaRaGM2ueVzV;j1!$T+=d{x@^@O zFEU6iYMKqDxOa+sML4c*Rm(CHlBH0Al}(j6a*<5p!aw=$Pt;J~JUaNt{;_}P8(;tO z#FWMgDJwJPojp3d^SwX*;YWY?`-5x$-aq%P|JZ->KQMMvkIW@!a^>zQUYC?QuSc|m}bweZNZ)9ZBt((+j`Fq zPHrQUjvYCBx&EvF>fda)M&jHUE;)^h{OGK9@uda}i=8V$F%yD_toLZsk5jYlpI>E! z`sH4-zrQSt5(YiWmy4ynz3;7O&>{y-#JiUddd^;+o$uNngjiMOw0k^(9?xH@(Zw<< z4oo`I7L>x;Lu@1nQsYw_WRYkGm%Hg^!4_Vh8|;)Wrb53>v7m^s1Mw+Zgc+8 z_dodTXAgor(ol91vwlEVmUwdkTwOdD-X`WooLzV)3e|G*Z$7=$B*vZ+JE!z&HFb`(q(qt zfuI`@nw!TU4P~?_D$ZrocFw)&U>k?T798-a)2pUw$|9GHLU8~gb+A*FH^$^fl8oz% z(^qE(8vlihEiy%xyoy5*W7LcggOg-g*NwZj4}ge}Wg<&K;VW(~Fv47Lk3cD796+;a zwU-x_ZnbKm;;p@Y#qEexE|?$)XEIq-)yww0TW?3DWS;L&`i1=?*#`$;Pem9@Sbn_9 zI8K!v1*gkJ1_QR!98>~fY%J&L`Nihr&C|29Yv)@K<}pr^#oTTyDBX^|6B*%%Qv)gS z1P=c!OFa%OW!{O=D5B`Ams^(bq&UD*Yl{+^PzKPpQS@?Mr|=nQZQXcwM!2XJ3-E+( z6x!?{gv>+A5BQ(zP1816mZzY!^FiwzATAb+g-A*RA*%2OQDVRxXOkpZ7I~Q_1S+|vA^{tRxqtKZ?&$9TND{RWm8N|>+0zvHQB>_z@b((PPsNQye z;W(6BsUK zmSt%wgt2NEJBNe~45A_Lg}UDDb~R@l$CC2`TDv5Kd@+dX3A0#4R5+=AeGZHJ0)WQ3pbbj=?@ zumD5_#ak-)$d74jVs|2rO~%+#0#szDk<1h7hpW?J7-h1^MHO~~>s8aNA3l0II&5un zd08Lcxw8$YzyEvRxq9{ry5nNJis^N?X~t10OdF@RA#4mH0>Xq|Uhgh`|2w1VU^Err zJyR|U`HK=l{U~aN%}529;>v6T&(0-?Z9tf81!YN*;55NiCB5IAt%=4W<;OP;zVwyf z$V$c%a{rAxdwbRK{@%&{K`vw_Q_IoMKK-=5*nINi4~|#qU;OoN-+ucY1X0JtL%wXk zYd6DXc=^c(+^W4wt}?23uUI_usg6c(gFayJ4f7E@P-l*|HFvgsyE; z5vnpD)L4}H;_w!-;rjF{D~{Kv_0N9vF(g033h3cSRF_(7XLWLXQ{dlFR7l_;5FOvv zQADFW2f1KE{BuzN8(RjT`TXQ~%APyX*itxw0zF3Mp0(cQ3Rx zA|cj}-OzaNiekCF+;(>K(45Qm4j0NOLdpHN?sdwiY4Yy-?^4dLHrHBPZX-YMBU=(D zrilL$90$qI@6zDoP2Q{e{Hl}17m&1l-7+MfpPrvxUmo7L9Uag%N$GZb=?MGPU;owZ zWc`9pUUPbSo)?QUFP}bmmZs_1>8pC%BxwSFnT6$)AlY}}>b!aI@SNu_cO90rBtdvk zbdC-waN)#m(h&8lB*4lQA!K3+NvizboA-4;tvRo@?P<9}Ovq?NQC;gOhInU;@b-EA z@y8zyWB=uEeEsm~AS?8gkoVCiljPxvw(NRsM`+DRJj|4ES)>EfQRyoJn)Be04{_+W zV8=FQoGd~8ZdWB~+wMjUiR)_U5{kyA>#kcy^UG`VgFpDb?%)IhfG<47Bhfb21N(rv zpF%;-<`36xeBecTiF1Zjl z2*i!inXJZ^{O~(J`xD)rtn#mX@tybHdt-IGx^eF)FJ#@+KG+oI8EXA#eCqbpL`v8TX{M-?%Hp8gR8zQ}W3 zE9aaLe5dq?$+E1B0pE`4+ugRQn@$A#((QcY}fj+qYG@ z-0kYN>yK{STCNVb%oz0RB+kdO7Iq z6U@acW`5hOfM;AAjS-6We~qnAmkqT#2QZtSK6vU zH@o&?S6f4zrDMQ;)Xrj_7HL@+4fYF!QJEy#jNS*%nL&Z@BrQshaIeFlhHh6g9Ja-n zB?;#g0uV=#kP1mV9e@;Ksi&?T2fb0BJUQE4og<@`X}-R=_Rds!f-;(?Vznw%@J&Aq zLw~TU@~pU8Z-%b1F?VJhhY-+mv9Lp5!$6E;W2I*lBn|Kql28?p!4A}!RYg%|BC!@& zeH5UV5p)+)W@(BLE*7cC1bE0+d6pMow}Ke1Axn}X5k8SEX^mF7*bC5)Ko`peXk?WE zd^X~OeOEW@T1OW%!4hNWxdSlXY9WO;XoN03P%*Gz=Qj4aReUaU)YhjsbAf1wm#bw_ zEz>kxZ?@KZ9Xvzc$6X8%%@7+Q3@Dy2&Mp}WfY*XP6tXR${))^%B?+*v!v`cL21E~P z7>(XE+pkskjt&-*nkq|f9o=vmznG>7A4 zhA2M0x+<39=*wSRh6-IY}Pxqe%X`6*)h_HLS(51-eHIiJQU!1ZS?lu zqIi+HG1v#yWSsuhMGwQ>`?>_j$|HVJALwmiwj0^~dDY0w& zVOO`?ZPOV?G|Db1J69vI)HrkT(~lv*E?6}Vkalc*k`_Ub8X;Vj%2`ol>poVpdY4s< zOIDBDBu^RVNmfajMeHs6^5T7E#E(9Fwb@=tW`6ze`PQ%gnQv7GdpKapqNSK)Uag!J z|MdU#pZ)G1{E?*DFMabj{*(Xd|7e!6rmuMdKp-PtQfigPXiQo5_T9UORrQ&*cW>QX zrir?EI)(dinNW_F2a6Ra!HQ-WDWi#(tHr8VOk~;3GOebVm`INTM1OgHjZm}Rs3|-} zie$BafU7d>&hxzBF>Q`XI&99HriK1oxJZboKd5J{hq#70N9XTyaMO5RoBNMHSHI%f z3Wq=U=DW}Raq&$>dB#sp4*G8Q)1Q8S9CmNM_5S`Io50kceem(1Abpo0yFR}#dfYo$ zSY^&$p1peUeDXmDqd1|^UlL2kUc5McHJQ*sObe~e>x=cexrV;~*2)CGe07?oaAeRJKjNsncW3Xd+b82tdrWTMKianDcYg18@{BJkKK5(QeT2j3 zsEAmK6OHP@p_tAdulT(JG#R5Vrzft5F}uFl!^`s(r< zOwa^Exp}+Y_DyZAOOoQ@gQtJvumAN?tHq-D;KN66-n-?TYSqiC+JF1)_a8lf-di#N zVMi(E81V=XP~$!iO@kjOj&~3m=NuFPESF0G>UMnV&aH#6qKOEMHwyBKE}lN`x-QT2 z?PlBd?d0Y7!Z*HH?d@G$Tz~rU!|iU<4I`D)%Jsz$KRng?IYMbX^35YPgFdl9{c8^- z3h{!UB9bQ34$YGXPaZvdbo-d^w!3vbICRl>&CP?OB25E9Tr5ssJ^1iv56h%tII)WP zz`#o7jmMrwavBrF5oUq({rJI0pIxrMk>}}P)u%t5gbY6bBLyH;#A9yesCk+CIQ~;g zyU`&6f+b?il1qm9s0>sU#M)e-K0Qv0LvI&Py7uXJKmFT3`gCuJzwyntzW((u-8h~k zX*Ux|M?KhXV3uT1qL+B@+qO~D|E@NKz>Kn3EImf&*PFg?S5?U^cB*EaF3Ux=Sd^GQ zwJ()cLq8C#FrvnrVNlMaEH76@kxLohGTe=d$TV9lo4SD{Y-V_oW>hB#iNYGhM(v`K zEhy_CM7l`l6|XEZNSlGxkbr$;P_RJ>U~;EU_PVW&jkCT+oB$6eDd7Qn3v$l(%L)hA zbi-hLGpNg5z3o&W!dg^!ipF|oV^upi)5X#}0zMVSq#aS)_MCC=7|dH(YKXZ+tp@6u z4SGM&Gz0CycGH*#^Rp(E{&$4CnXoA2k;o(j~bJ0jm+>v4sF8%$lL^M?g$v znn+0qwB5pag|WFr+`_@YMd%2__JWwvMnNYGtoG0tZdup$7|*s0QI@MDW8JX9fk`f6 z9X5ibOAUep04=>D!o?C{CsK@&N>a%=4q-HAuugF<;N*iso~B$d?}5w(qI6L4ROu1N z-8gnz1qwc>V1>x1vd9+8(o@ucWYh@Bi=xZ#U-JncZM)l zuJ((vq?9#vH}ufPn94K=G8#7y8im-QXrY*$QJ9}PwSgywG8dD>^P*%d^nFaV%u>#= zlrU2cBM|!58ir|ERYg$&d4jOgs^DU1TL*$iNCq@r3y7#QTB+aykGGU^L%rF^EbRvv z0RoW0PwpBGGvmViP@yL07}r zqv>C5D>mXI1>P;G%oq$pFaBF!6SoO8gq$)1+*#F@C=ARijUFQlF+2G z6DZ|!tCUyZ{_E^W7|HUSc%(6P6pc6yl0gAUdnGaZ`~OXU`HSzonWeHH+q$p!kM`es z_suC1#X1C@&){#as%;nkYyXY^@!$TNzjbt2{$u~9zx-GJ{=cF^1Fl$YGC08#gGATk zzjJ%_U0b`pzjt%FNXXc&UAJ|ePcq3<;g#F1uk>iAE(wX#lnLzpGA)C#fub8XZ*_hD z^7J|3guz-fG~K|c5DBe{1wynas{kWS=HrPf_6VY3=yyA%l{MOW$o=0;(IusQQn_os>FKyZ7AG*4KJ7LMKP&}|(1`69wM zhq=O==bRn;rfZu?NXf-so@LhCmoHv?@WBVa_$%Ld_r13u&za!u=BjzNIl6HhU^U9D z)!nX!R*&hasv9_7NR?&fx4!v{Uw;36)oYGWm6w2ID8FAVZynw^ULM>#x%KY7H$i6r zwUE5N-aLEwP|&c-v!Pk{Z8NEkm@KM;n-e0kZ9MEENzi|(HpJ%1kx@(7nqrJ9n8SSpuyRJ1j zun8P``TU&A^1b)J#t7Q(hKYq=Z`$SF$*ucu5)p3RJ+78F=ue;i>}M}+Or3Pv>p6Q5 zy?!)4?<1YVKz-9T>*-T8Y2U6fPPapiDA{pwd3D{l9b_GF!PO{)C{L#1s(nN0gXd2# zC+@Spx_|$TsdEwVkC6QIXD|Fbs>a7J)}2x0+3TnxG*d$HUYIlN9E_Etvb$})N>h+X z5J1R8DjKbfMOAswTJ*DrkFM%2(3P?tg5X$2VeO^>Hc$v^izREAV=1!LC!f6f*Z}i&zTNXTSP(n#n0FE<=XBq%0#k$7_%~GNdT@uQNO0WyV|S?^j?FJ z5o1)8)9jRsB-I*8nJA?|zsLY(%rnS3P+qtFpvJ*EsD091t+1DnCQrw9r^c2t8lxYb zkC>m*)^B%4X_)~W>@Aq3FfyuzIX)hQl-}AYU)D-asA={Djj?4feq&k5#wL zr7tDlo;L=z?48w!NhVTKE{b{!WL*eAyHFAV8cKcKD}y(4S|`FJmaakBI%guwxE<=D zt?TV3Nt3*4DH8~jnC^~*@Jd~B!OOB*kYZ1z)oPCf;*B5ccJ~aN3O}C%CD1XvgrJK7 z{o&vF-u8M6*j_+QufOxbr~PIqSmm9>!2<3xBS3QqC4rxQZnTP9I6)+yCuY^;Jjcv- z9266QLDCjyO89+@D$btuo-5B1;XRNkk{6tdISh)>paY>`j94^!EPw|JtL4FDPnp__ zX-=1ilWF9jN+C9ul~W3u>3tR@9>L94R&Iwi02wD8^0O2GVNM?9Of;SCaU<#|u1c ze8036w5ZCmVgjn85Og$craqDz z2M0N4ezUe1nnz%MR6xQMReC(xQx+$me)z;YBzPq4HX9ffn@;JTP)-H*gi#I!v)Y)` z^Q*J7OTs`h2c&C8hHx)vj2`T#Kl$K~fBO&LdFzdF z*V9C(PG`KB-nBsoM)ILwfB*YG+w4@5?#1FU1&EvvlvCp7`fMKUgkc`w;O@itV6k^& znKLr#ofCXG&7jD0L`KY|!?H}I4oP6aQ@5wxEJO9%UKk3zm@)ZigIV+?H1l*Je zuGgn;M8JS41!{J?DR}6cU%6f6nX^N;*(OE7sesfwDJS>);mHxS1?DM)MO#R*OA`6@ zuY8q#EgA+WTkYL={PgO@ix<{9V4mk=#O!ele11-6{|lax+~^I$5vf$eXn~KCO$~j9 zP=7}0b+cteH=6$FM-P7UJKt{u0r&!|&iW81QyFMXBXJP}w`ew226=Y5ee|S$|NR?H z`*L-7{Ab^M-?@}hx!vxj{q^z^U{;Lzgt*Hz4LAV8+SmQi>mCOfu?*pSS!V5^fOnw8 z0UTuE8;}$lAzAg_*WS3XNHHjCoHF>?i*u)jDubqK-iH&pO+&JHAWv)Q&o?;OBUIkYS?L4xk;pt}hh zee+~h*Nu>z1B3>m_VzDd%kpm!>9G;wf z{Yzh?T#ke3d%NB?ubxfmhZ{2(Z(M;gNYc|t@CC3j0aJl_mLtjst#|Ffc_)(;K|EU9 z_BCS^5s1TtS|Y}?EJ29EaOGXAbjpa#QeZ|UXpHsfX<(!B2q#$yRqMf$t~Yp`fbbM( z97N-6N6O`%HIVfa>zBxY^q@4Fw*eQ+U$o+c@kAO72R#Cb*QmD!d@`}00z5jyIC~@r zMw@LDoExBjoDv4_GIq$C5q1sA0K{@;9MpE(vILIaI0_Ls=MkZF*7PBoJLZOs;5{H6 za02!*0h71@$b~iLaykpvJ1)`mL!``mWX%wuYdk>) z7Rx}hJlo%^ilS)iX6l=z7?Q5K?PiMJ#Kv?(Cm0EsOU~bU3${-L7xXo1^ zFi*=$YXA;2o(fPE25Ux-ZLR#KuPG;e)5k(M6tUG%rYW+JxK!62=ORf9kLajWd}Vx5 z<}yo)s+vO74Yp5TKDCOcBI%mG-PNf~j*gBnhLN}JTA-+6yq^>Tu+(^v9{PbXn&%J> zKZnvcZ9`Fz0-L^*jH9Ap3@c zXFL(y=7|V|IB3_5#5JBJasp#X2zdX;fq9$H^904D?fP*XP#g@SyaG9IXR8e%uuCa; zL$B$4=ycv0SOgG@{$T%k&h=b!JGb1%j_3rFVbIrC%`z1OH#_9L(p@uvF^Eghxl_E} z*5klJh&A+-+Blk0(BQWuEU!??M)Si@uB>2`PSjF&74z1v)0TJv)nY!0w{@Qb2ax8wiiU-;Lvzxg{MhRbxl z>IqX!3?K+rB<9P^*#tAv{HLQN{Pgvd0vBO4co(r}z}2C?6TuAvx`aP9e@8E_r(UNv z-7&*D@}Kw*{5${5Z~PKT zz^a$a!XUk^*SqyLo5qd3TOYi2<46DcU;pIQd5SGjE$UvOp#e8QyFrEzL1E`$3GOa^ zw;6Oz(?GaSb0%c;IS+Hr*$QNZ9;E0!;Vdc3JlR|3rmge18b}C?q*QwnEU}8DX|<@b zG{uB``sqg#?VCfgjGP{L=f`fhWt5e9&M;1s#HLuO-i%680!{qR4E1(Yy2vNfQKhX4 z4A>e0JWEKDY;=8|Chhv#I%vlmVEHR_bm>>&W#GFMNp=g9sA&w6A?%cjf**HRj5)Y^Z z#bQh&hB{KD&(B{u=szS+pFNh@jtczF7v9d(bTp$4Zn?jgSJj}#Pai(~&Y%2=(dsY$ z+Ak#gOQ*K4UYu$j1h2N+>ATr7#_Fzq`D%j$xnrTEu4`1Y?Vmq=v5L*b+CxUrCr@70 zyWTkQ{qO(udfjtbSs0>UhuLCKCpxgT<5^2Nr$@~8u;53hTQ5@9u8pa1SsoHhb^Ft9 zr{24Nu*~ZjGwGJGUXOAb#?-?c7S$H+( z7Nog}#=|1}dbmbme)u8*9>qt_xGbNJXt&I`Arwg|N2Qa46DG?a{Pfe``Tak7_VOC@ zWuU3H#0anK7$0>JALCep5kGZY&Vw_4(wF}Ezwm4K-?$ynKp7qSAX(ZCOJnb71KKh~ zSye5Bly%#7L(}&SXz~K>Mm>$}&Y`@jb^uunqf(J8qr))$tiyEVl-#`a#=H0K;^4QN zja5CI!A4UgNwwV1BqK0!fVtI##`VKuZ@~%fo7%;IqIz>qp&&WMfyg8~+*^#}xNW)t zb|$c+3c(SEIgfERj0nbys5y>Z#~MS}(4@!Mf8*X=5FxCuuQpdkX$lH%n-rXF0Xf-i=tr4^uYyqIhF2}-*p3wTu`(khG9%3_}anZMgxzx zbC|QpqPL849%YamLxLCr$)f|r%von**ovfFD@8&`ganY)CLWT>%0=YCQtZ2~F|Vqq3+Rm_mWk)w=V< zviQ1EMYYnDV!&(DyvT~>BFQAt%IN`&r&S?R#>_}575n@9-nyZ#Njx5nn{Aq9B^SeP z~`M3y91X2&AxyC-FNGHT7h51JPZs+4x`H= zTP~JO(dTUEYotaw8rG}8&awvo#8!|X2CKsT@~ucjmA(5%~bgPr$~AUjfO=|GIp3{va!2t)EYEz<_iV>JZ>w32z` zW`Jfs#J9cP)qO6gQz}cd38+F4GN_C{+n|6J2 z>x9dqM8^-WUj6>x_!q7|-QHf^{Ec7y(!s3*)tn+~`f)w#5s#YNmh_76rM|hy1ui6k zxv$?LuMn}SZy4Yy+Kza!SX@nT<@4t^Z{0k+cX-{0ZM|)}?!C8eO&87zb$MCr?b~Jy zgs*PARRnT&b$xbzHAR~pRkFx36hJ;AAb!lqGHbO`o9(FKNPX+>TkpL0j!gLV*%jwZ zGD>-xW(6i}y}NE(sM8o4HMV`iNRcN)-*&rAmh+-2^`N_YljJF;blY{J+n8~fG;=tk z@4owPzFa!h5}N9$dgXmkw7?irp+tBJ%nZoJub=_nNUyC7+sIwykc*fhV#z`j3C|{ihe7oZMQCdYBmG zFTVecVt+vsT<(`N6~fC!xk{J0XP~m33N2)oZg<;z_wELSx4mw=9=I{*hnOc3YsFyZ z3c|^I5*z;!tDu==(;W~OujH*-oIhspx?IuPXVmb4CCd~$CQ!1 z!&|rRuF@a+LG_FkO!7f1x9Xa(*TDuH1s>p zCCs5_1Q`Sd30|J2#%a6VkSyU*U%xrOe)!R6UEOfHXUBMQ5BRlDjzn!(tR48fMU<4n zX9bBTPZ<@Q=X-lMxHYn@VwDen{PgrU|HdDF^s`fknI0W4xbn^tn1(6l@XEi|D|sB( zbdNEIGgkJKpMLQ5pT7B*{_;25Zfxp}v0jgGK&q-Gf(#lszNBfO%#5lQJd{PkXd#M1 zBf8zy^>zonZMv8%b+atVQ`vUSZgbuBZQl=q3?F~?;nl^30T->+<3NIcmFG9Fud-Bv z|A>Mjq^ye3sK+m!2?{8bOoX-mYJJspeUfFvFr-o@Ql_ztIYY$6Kp{%esKIuEQNpoV z=7P%{5#X?<$T4Tp^3L69f4zY6!&gAsi-Zwo1MJO|At9_%tmW-RuB=T zyo|FvPD>7CdM?IfVZw~H+PDN$%Cp0Rm9|6IwbsBdGm7#`1W(coEEg?|JcAHnQHp9W z1w*iP{mvj@4at;c`OZ7NBh-Rg17mTXE*8aVk#Rwr zwzdWouTC41cxaBK6s3qPOM3rfKJ;k5lMLj!SY}G%9o2g`R;eW z(+}-(b!coz5G~T;^x5+ykZ*qN>rX!UtnbFWEDKp$i~DhGhSure6>Nu;6Q$j*?hUdK z{ljsVMbWHvg2{B5B@7AR`Rs)2Ljt@I+@c&8m|+FSrG79SMr69F9QX)@6jJp)vMyVt zebeo(cRZ0WLwnFyY72Yrwr+QIQxydhK%HAX!qgsxXHy*aYH#%$fA%*%{^*mdt2JS) z?FUB#Sku(nTG&h&rXm%Lvu4{{r$G!E!{>%kIR`=!&Sg~z&Or%lDV(9>ePX$U|7ML& zh#SX%qE83YC05#F|rEazX`snyfun{U^-Wlj(<8%mH75r+FCtS8$MOkC# zO)lw-_hykC@D{BBeq0)tzPs8|VZFCOtxpW7P zHnFG02AEw50&!2@chlw-^dN}UDdX_OK%ha}bV-tyWjb|nQXC}5MvnorqFf!Flmryg zBA404^H*@pazC$4IoS0avTz*i3s@OFI36&DE>NPc4+pW{0%fC*4UNLFUrDiM#_yUn`q8v*T= z*bd4L8ZvxYU>vfTIOPaihOF`08fYfC+}5!}KO7t!xDMLvv3HD;)0fXS_0~Ff50dqzqx$dmNB=9Yi+Qvp1j!YblahcN$JOKnkoVHVeE@v{KDilKHr?@Q)lME^5N4L zFV0?At@Bl0tqMlS)$VF^My83y7N_*xZ+y}E`qNiW$|^g!d*U8pn%<2J!9*2Uqn zSnXpj4{jgbef#F#VJR|J6xHpwZ-Sov`RV>)d30-E^YL`|%3!!*BVHc4DdgjRgX1#v zdSIrX-+@pv!9s^EEt0ir^|)mMw~bofTHRgj*~BFK?5ls~%he4z;l#IZoZP%~%!qHg zE#nBnPrZ>+jGDiC^|HIP(1FtIva~umx_f-*wh!TIck$}kE6VuZ(J_=S3UESO8xxG? zu%7usz@(5F*{8%KM=1wcZPTVJayG>sYjtw-2AqtQnA8PIjYr4FAY2}mAXE~j#u57f zFowg;b>oou!|(j$PyYD(48iB=MuTuVbAXt^-(xi_j4YlV;vEt9bc(ct-_-T`@&Y`g zQ)Xo50)E*};TIo2eDa+iee}tL=ZvNSX9%Tcz`?+yO`*je2FNg10BZxHu7o0Er++fZ zokG9=`@i?zyQ^RL_S{*7cwuWz}BM` z;1^bdM`lqLi>iXbac>cBRTx9Q=C*U)5WIiKjJj)Euo&-Z4sM!Yq2LXCDuS^`7Z*KL zw8UmPICoHE93ZRWoG~b;4gt@w+SI(aNWe$J1-pOmo=CFi&z}*}FZY&UDDD-;K^en* zlCZSD^dFx--)x{(F-@cg6SJZWgblm8!JOW@d3(9HhkLU-J*!_mbL}>0-Rp6E)%2rI zlfqls?4qt#hp}nvvqv=W9&i^6g)3>nlDr*8;Q#wxH+^1|3FoUScL+*HwfF5fw*5HN zT_O{$G(e;zSY-7KP9r~^dFuWB}~BFNAPI0gA7-~UW0}dkqCYh2(94ICL!i~TUiV71u?E`)<(V7J^{x` zquVH2wK2}J6p*u^D2pZg4&;xZw*dhpqjSPG5Z}mxh=@63F@}K#K@>m&oMRXR4je}) zE4sVlxe|NiqG`r@1D+W|Jm>kS8m)USvTBiugmZ>;uk9F)_Kp~Ywwmd(+Au^@ndC`= zJ(>C&H|Lja6RU5HxjsJ=R2(e#>Rr3Ox?%`__R&YHWu@EhaJBmOw|?PwzyHI&?{A&l zcFKJ6$%849W*7zx-?eDFq3cJQihxAhj*#b?3I*a)cnU`|GDfrw#+Z7u<%~M5Ib$ai z#h#}^QV2QjhL{fl-;-00a$e+6mP+8j+1G6i=p*qVYT(;$n1zFAP$0jDo((wAIv;W{ zfbJ=!FQGO9+)<1n0#u}%niLkxy&wPNgX`<-gQG)8sE0GBKp1kOx={@+CJiVjdA!vT(!!WJ<_9xt1C{ji%*;68gt=7?j#1ibOz73R z#?F)p?pk>1^CE?+$>4ucCG#6dD;)If|sG&(VLwT8n4#`NdZl;b@_RY19! zf8+k`Tla1r-8`z&GRqccUH5>+9nitIgRNEofFGVHg-mhutPytWde+$`(Sbjk$O4_ViS?*Jqp~SppD&IE=hp z%D3Np|DAW=HeHJyzJ7T%?t1PCv);Eu*ld_n*RM8JS`1BtE?=$Qes3y2$n&Bdkg-%G z+0n@jZ^wF9Z|iNZ`{M5 zN~Re@amJZ7&9eZR5tpZFO@1z|?K zypI7jF_LmLP09T6oz=~IM+8@2`SKSi#gCpo+MC3zd7gly2;Y5kAvsUE(0W+c8^XeJ zQ5k1mJ$t#^)f0wYEf<0_0-wPZUsc2ngV~1Znol3dSjutobBE7iYZM*BTEP)4No&z;gli28BG1CDH%CQUA z*OO-8s$3oX_=BJP(RY5*)tXZ2tcwW?#v+ChiXJ!j8k&s4uc%LnhejA~z-3~L{*xbm zu-l$Jd+@UtpFPfHv1!_8ug)z?y;zlbxsONB2N+Oy>9P&vj zkq<(YPad89*5CTWuf2bN3b7ybU`mKBw;`JL5V>B{b8M=zoa}KFu^BXGR4bG56U%b)vMW~KZ~jC2%a-A2MBWe?j%86?RJe;YOz>Nx6shTmp7`hu7|M? zTDu8|21-yvWFCkkI+Nx3cB`hic)|!cz>qJZkgBZ8=dU17yY1U(V0!LDn2t{%&!vEa z2TL&$H~`5A&J!5nG$j=NG$w-@t@EEgI7^Ehc|!>vw7z(`J+Et#71rZCTV&w5C(T2$7~t2o|YB62tLm zB9p%BMkqNHlmNAzQ(kYc_V)G|<;`Y$u)qKA+wWlF9zOhV3RdO`1mn1n3K+%&ROT3v z=*7sMEJ-qtk%Ce~7%74tgG_i#lr+u|1Q$dAf~DGgjs`*YlecDuu4lj~&Y*@kw>y!t{Sy02|$91aTgtUtENm<`5S$rzFgpsrg}o$QZ~pVo|Rj zxmv;l#WKM#!zL-SF2yj_Xy-uA8ZlIJt=BQW3(yd)^xkrD^W>Ib?DFigYdTJOCMjOh z-KLw!3>2^)tv3Ks@hnw?z8o)i+g-EUTwGoZOti|ij~{t!5BH{Cy?su_tBW%qF$3r$ z>N*=jS;D6jg7y6fGwT*l%g2;MM=65f@}ZXi&%()I%bNg&OcLPr6l-hyaR2~KvVdGa zLXQq~KMI~_rSk*)mozcsxTyyZb6bW207J0%#uDK?&z(b{q)cfn4jqDXc#M3tF@v^s z+dX;qwD0<&%%MenFr0hvzyrETbZoYTBUu#906ICJhqdn^#bG4S9}bE1&N=w+C=7ap zIYw(#<7lZMAkdFk6J??8$27?yddceZt9mnO)|x>%L?FEdS*s%Z!7&0DPf9UI0(k^r zY1{OI2tTvi0Yz*J8iruTn7xOedxA{>X3CL}2m*XFPbg$Lu~?Fiy>(ja`8QLp#(th4XAk_WSet%CnG44AE;+Sk%+gvRzVcBxBv`#hs4yLvgAx3DjzkkG*DMhB=)jpvph|OhfJ9l<^ zWyX;iBplM)E%ugEJYHVPYGK zphyIKa`Egb0y9uT8J}W4Cfq2PVRGD@UYv?V!p6uXWS=RMElw88rHidtplNnqjXhym zQ5Jy&HeGxY=RIwjrtR9u`t{9jmvFGZsAeEcSme1BL`p=_ly~^_>65R#eUD+BFQ>sK zCB#!fU=Sp9x2`|<=_lTU;<)RzNOEOHI#=I>+37s@D@K)aJT%P{Kbe=25Ygg@U(S=5 zo89@&!OuN>WDy{XLZ%Fun6&G$3BJgH#L4rLU^aP;bIBc4RI%NrHs;~v4N6j6WGP@L z-M}$Pl5AEwO=;m0i{|ule?NKu_PwU9`*FkRLRwUxT_pykjzTZ9?NzdR`uO>$51t<% z-c0h9cV<$0OH`pW%Vhi~6MNn}_qS(1vy-rEfry{QD(nZ+5M`r03y@21=!ZHDDu)pSP))AeT5 ziVA*E6vg#=y={y$)z$fM`uxXS$ZApDx^c%7NO0b5`pdI=Y&?@Z_yjgVBBE^E%?51v z5cCBQtBV5WOd4aGZEKVUy1?pfS7S+$9!9IPG;!X{ckq|Skf;#sEkl9r1yTDteUVd&a!x1IjkrD;kq z2I*Mv>*?TfalYH_5|(;PCQjg5chA-jhGB5daw*GI1tPYQf@BLjYa#r)=Ad9!=HVM~l; z-&$`JmPsbCpkn{P>IW6V0Y%66pQNM;E+-Z%Eq{3$Ivhu0N2Gy zDoF(YpsSIxxUxaY6PnF_A<|A3e!w5K4ns^5@XHb10b?>}L`RSzW(2|jJX(#2<4}OZ z;HwTUGFP*;0vqgtj?YP~56$Hwo;Ao^(BQF~Rr_-xK7ws0eiV=z21pT#2We|eR9L!Z z+alP`JwznZ0OO8D6pjQQC~t3)3VFdDeJq+HWm;j6enseejj=wp? zDi4R8du`Q-8<~gyo)uMI2uSCm#5(O_k8PYy7+5H*a3E9#nJ{5d&JjF`H(Hct#@!LL zCIGR<+G3Vu84aV=LtJ7(*9=)&i0DxTXDMZF91sCmH^S>f3}7+Dg`pd@L*eJO%bO#V zT15JBPvAEXm(*-dpFhoI%KcE0^0-J7XN3056IcllTsU4NDj{Cy2hG7W^Bp(;iUGH= zgSC;w?%&wz7c)ZU^JN5(;LLb(bMNHN4gGv)!?0POlQqiogh}vMDANjBZR^VoDC@~o z-oLkhyuG+Y8BJy0ZZBUvf5ij2ckk_8v-$MXpZ$1Jfn0Z4E-o%lpFMkY_l;u?y}Pt- zcE&X|z87Ya`bIwv5yca1xkCM@hu!(B^J%nV#)Bkr9QCMtFfs-6P&4SmliN>U zJo~5r5C7bh`15PO`fUsVB3bM&LOhs5?n5vM&cWhve);U#^S0|J69B09+O1Zdv%~UW z|LKz_tApEGqo(Z^%hkHEj0p^h1u{Z%;q|dS8n6V40l zsMomNwYpP<6z8v=Cn>bYJ$d--?7W%k^uypbFU}!2*|FQVZgX0`{OslSta;<+ZP)2> z*Ck1E`uO>ihtCPbkrap|v4GqSgDZ>G)U*BQWqW%5N&-Cu<#Hh^Y-SVlJXMBZC>Ar^ z5nl-(<0R}?zHt9P^zZ$*_Vvc97CF`LE~f~8rQ5UT4~Jn$Bx{?RB6K-{qHBHcjW@pe z3%@YE@-bPJaC!dSKm6W9QbBAHH0#TS^j&Wv_LNXE6ag%99WswJA>sqP?oE z*G8)%tt@7FvbU{=fBs+m>2MmC$7-@}dCf94-jBqm)L841o&7yu9qMSwe^;%8W%; zW>``K$(`_6F;Pl4YSRu7k7A61ZJ4n|lI<0xQf3@23n&$->2T?{-fdeJ zONrA|1nq_J90%Ptv)vVWFBsFnt!fxn1B??K!}%jvfD^!;5J$P!hytbpQOmqGA=0Fl zK&TCvZM4zTkA7$=^!W%%2;4A`;X>lCcfJO}41z@%M=2!r(MLu(`{Z~;0|1r6NLJCF%+cCohBESBZ1TgO>eVyNXr%Vkv*i(%}v8UW`FoZ)0t zW2<^XP*&!IF=!tI^FO3o(ufRL=ZWWukVCJ|^(7U|fi9c%ZO<4hR!baEZ2T{|;4TUW zIU}6lM98wLC?UhpdB%($+OA1tf(T&Z+Qr)acn<{1wGRrsr9H)9Rs#S|z`JAv8U~#t zncz~5P>sqNR6aTfgA<~DHeGo_a-IZ~8m(a|0#mO42j!B^2c&)&*k34JZ zt)iIocn|@Oh(o*@kpYpoInK2$*!eioM*lGl(Rt|Lm=zn09i>>N{P5_IBBlB!uJF+` zE?{BQU5^1^P7tQbIBm2K5epXrr&KcbsvltZ{dq+w;a;(Jl2MqpyLkCx|0FwHRs!>3 zyA3HnSX3z!!B|1^0PplHb^U(@28H?kn+M9ze-XzFTd)U!^`AI`e25>0z@P~O(V6(8 zL7C=ydvQM;Rb@gYl`;jVs#QtKJmUtbUT>OiZS3H|O-v!agC*0X;=Do}XT@TBxmLy= z-?@uc```cUfy@%yw+P$)!xh|}PIWy*uO9B-bclAUmryi`fuqd|QOaNYi@))cAN;`5 zkSr3O2cdxj9<&ijWM6pb=}a6=QWQRyoBNaHZmW~aPjo<>8^eD z@Cnkv=yB+V&E+&(Y>sc=CJ;_RcDwF_Pd_+apRJoM)Fcv~=hYB~DGB_}$=&7N{&u}J zkSyD+o9p_s(+3Y8WLZHFnLy3$=JIGtYdqN7Y}U(aK@h%u`_@15kNl(m!oT{vFE5`U z!hFOfgPR>t?oTW8;g>;L5}{-G?+zmZLj~xM=KE|8tb`wAx+vkE5cqSvsxs@{+4%*+ zig2o3m|Dm;+qx`QAAj`e559M^OsE?5MDHKw+4=Q0BtdsT+8-@%F7xGHnO(kkb@B4z z=B+p1zWZL^JhaNzyY^^59fzjt+h_JgaB>{RvM8QCf3@9hJqFR?1W3O+yUz0E>FMR4 z{NTqo4;MNL;@*1a3nHt&`h_ng>A~Ort?zmRS{CPgG~UH0)WI1tt|hZBd)8^szI7+C zSzo=hLkIe#G&y^9@#7!70tlAS!3R6KDqBv&``d3VOn|kuAJx^vr)5=QOt#x*b#T)4 zFQ-(|x8Hd?P12%Bjb88VrHm!Rpq)2@v8=4pq@#ppdFmXBPfLhW?paEJ-Rr!0KOd|G zWJlA!1HAa=TklSLmUDv-eqzAKp`S3_#lh-uanl-5f-CL10i9h9FV2T)hWOn-{NG-0 zyKc0d;>}=>p;&*RPz! z8DJHuvElUmdjB9ldv#55>RfQ(!@x$X?QX4f7Yx@HW2+Hl7r1g+jarR;%Tl=;dPUuj zKYVz3_I#O`FMsj<`)}NfGf3=t8r&3f&v^n(zy1spR+S}X$e4cbV4oi3U0V-*UsOew z+ceE?-MHNk>ecC~R=Ujg5VK$m$3s?fd(?rUft9_4Lf&)aN6v@eobJC3c zh=A-$_G8Sg&uN+opv6b62{5JSb-!GqVs&F`pawX`+Po-)l+N0&hgiuN%w+;=;gr&k z%r^TuN5f|QYLiHLQ1IoOx8A>ZBBYr7YE@N@L%+T}ABRp2{pQ6BLOAYvx9hs=9YXAI z@6do~QafrnX2<1{I^TCNMg+!HueWu>jH?9TRwyo~qlURFVSMa+P@%>`>q+^83sV)9 z6zo@j^%tAId;I*F_Zqxh?e%Jvl@(i55CPrP!^P#Z5Ja9XNf01V;d_*VY46tIN0ixm~lnwfj{&d0b208X7T3=sjJpE6Dn zO(GahI8eEifh7Sh6#Os@pgNDH4HJFfI7IDV)T_iUP9KA>bqJ$_9BtxboB$yayD%8V z;H!CkgC@?I5s%hSMnFjtyYnr;ch1HX}1>u%>`h(mircr`U%T(0aUGl zFCwzYJ{4(I6fx>R8D}Zy+9;gxYPHI<%#4s~V!Yj6ZoJh8NBehf9^+dl##tdC#u7#% zN?yKrHBs>1TOKj;>un3A-(8OhI7?j&822s;WFZ{D5E8*UjHpb#(sQ=44~RjAImGVZ zIsJhm8xQzWWK0yp&=JbAMD~5>oDm?vC1sg&nE-Hr>Cw@i8GF@1?5gu*K~fYED`gBJ zE|D;!$H^nbV7_o3K-j1p26PHmv?v%0ueDDE&&{qVo=D7SE?!;j1hmp-3FHBR-IT(6 z4{1{n1q3X|JlaG&CSI>W78lp+`P0t0j2)D6-f$j7A{eK!l!Sve#ybil3Z#Kr=ix74 zGzxZNmj!4&P1AP60NeA=Y4sxVU2p>lC`);@lFO9`*+$5!vNn7`EF_uMB+eY*^Ze6N zoM-}>p~e_eAFueI<|gGiwIxQzVdSHxA))|tS0jjGnS*An4u}c9Tj{|@rdoezGTB0*+}FurbfBuoCWf7idu)aqaTKm9+7MC6io z+bc}$rf%EOB{VYupT2mtEYqWdCFS($@+_gDy}meq{^G5}_lfa5@I|_u%H0Lx)pDO? zWmD^mSDWwr;UAoxUVr($`$@{C9Pe@5WZ#-qB84f?qg}iC@Z;wb zeSh=D?L^AREV*Y-o=^A(fm0@*>Oq^Qm%zQ&U<4jr=!b!md5)ZO7C!gI5%PH{;h)Ab zhI#mRQ9C>j7Oy#`c-)^K94TbiLGs|q@yY4=vzM>Vv;5%e-}u&tA3a;|>U($Jtm|fM zO(FQ%tFvw0S;XIc?`UjIvo?|>dT^KRHACX;**QVgx4-gDMprfrFV>s2*>=PAFtmi8 zak{+m<#&>+!=Jr)ap&$)+c&$q{?eDf`44>cTlatZ(eC=fxV~;}#?X83-R`@~r!Stq z{iSam-8%W+4}KT|6g+C@h{C&WVU&eez+*%~#{hFRf?tIOY8xApRkx{O7)rq?K``A5;t<8Jc!?J)M&_=aN^hXI{hSSRUu^e(~+I_4?D#o{xQK*G)=^ z>vN|Xo0UH~y?9vnX~v}x5E#?;*4n7A6RI1vaR&$c%OYpS7MIfuJ(PK>$Ki6lrHt$^ z%bRy@57X7IS+Kd}lqXdJ4J%#Stm|vSCh-2J>K1fUse+d9~?8Kvh*(Z?u}G!yR^E zudEh}BXYq@3gO~H_dQDg)-h%$T>i4biq#nB5Aw~r`paqyUbepaLm zKx@gkkH;PZQJ0!THQlHN>jrHH1DR_UP&(qZ#G@W#^bFG;Xw5_>0wKv|DpSY;+1gc?j<10{lxDRQdWZZ9u4pg+&}gjOVJQY-fks_m1&zk)+6wkF67%?gRx^^or-DJ3j9Eano0*myc@7-}K^SOm^d%4}dZk^Eq<@&R>&LP!Nf)074w2d0G#m=REd zVmzuIrVfM|yuZF{2OOctJkK#=b=Ns-F{O}LMmd^ij#*L{`7^I$jj&M3Z6J0T5J2rsWV47yL-Bw^=BS<@lj*kt1 z#A^pF#MTN<)Huo{$rlA)c`L>6$p=@bt9xm%dEP&e}_ZrFDldQaQ|@c-dFmwr@Q*PtTOLi zCLlTN^x3P4eg481zxdWCFMsQ={ZW29pW2q|&8vXCkYYtiqsOu=zkK+OPaa%N0^U*- zg!9MGU+q`fm%sMyjEd{a9pfx1ihQ+rH2Zf?mT<`;M31OdgF~Z z>V9n7=4YS0_?P~*-#uOXfN~tS!`BTgghnaJT%9_@k+DHFLRJ7$&5kI-8KyXb3{l)} z<8cnOO7J6K!3h+zf^&G#qh=oORm-8?V&OAR8Oh)9<*$7a#Ukb+NeRJU`udj}m^S#{-agb?^aBbw z&C;%^G4*f1ad%3y_g+_3VqJvwxb(jDepnq)=iA^^KmoX{7D0&-2*LYix7pP@=Ye+v ze1?IO)I)yXYe5d|jwFz{JdNX+G0+12^v9ok_~Qp(eD_2IIeEgaFRwoN>4VeiYVYuR zy=|Q*PhOlpKfT~d?p$iEAG8SqbW3ZP&xpsux`1bhXWn$@4EvbtgX0y8kVx$KgC{jf zQXe$M86)^le)RFplcQh$+C7Qds>(8B)cR^=N77sFhfE{~MHZ@Tbljml&|_uq2Zx6S zaheQ+s?{bDyQ6(4`fI*>{Z9a*-ONuP(2~ZmxMB!6mq_sZoAn~%F+yC)yGi}re%!Z zKDqU^FMS0E^x(74#DT$|0sON^TNIu7rMq!7WnGhd|XUMgMITNZ2LD;7iDAXu1+Rvpp5iE?i2V((2 zlS0<@V1sksWd_3?B-z+Nzz*F zpu|}S;F0ZUl+8f>#;mbzTN6a0BEln*oo|}cmlw_ki9OA7YC8)R{4STp@vU2Bp6<3+ zMteP4?7~#6OF4gaei1NA%S2GVe{e8=Z%8XoI065n+zzb{hzl|Kr8wlfX=nT}I?RKx zo@kh&DHD79P}8Li=(3bDLU4n~`PI7bv!Y1LEJ>t@uQ-SpbCH*fj8;L7K8H6)kAp*4 zGHQ)(M&*oJEz0d?0I@($zdfFhgfItQ`$P&hg<(Y}HIiIhU#+{YB~)67Nnm-AhCmFY z+W-Tc z^*e9B{crp?{^j5M&EJDUU^0w`(jv!5Sqi#LJM;uuDPV#6oxl0pf9qfWEx}ou<~YeE zGVAMgR#dB_8`&_tnD(tqmWy21jnbCq%h4h?y8UvIP)^|RK@av1DU(wG&}O%$pb9C@ zUcDN6Bq*dL?oKy*t5uRNt+z5s1g1_KM&;_{aNBmJ$Zp+yt5{W?8PB)tDH5EZ&IMI2 zGrO~iD4AFejk|yEotw9Az5UhqS&Fwe19s`+l^lS(W561 zzW&}{PO_rhtG={&@6p4LU%h&)962~VUR~*aG$BAUp9JAChMk+vxMVQiLRe0WWTfz% zMM1iT>>(kUBZx$qIfD!*7pNY`5lpYvF(KyB)4H)r`7%qU(5y-K$v8bZw9WNt7&Zw) zpZ)k}zxqqR-0%FyPaYrdAGB8^jmN!vNBhUCWgsX?lF8@D1U`QA_JcySF8{$I^;eEy!FyBU@F2u@c_12A}H*ek;cUR64 z3Pm+Tnx@BlD<7~LTA9*mdF>2AIxSho8P}UDWE4W6XrcgeTBUjlS~O5nMFA5{nIIS| zRohlECW~^ZdW!;g7Gi_IsuDQJ&!Vvd$N(IzGBM{M_Oy{<9CDGreA)c|?|ldc!0pSv zZ|hBabx}Wi(KPL6OmLcIkl-lFT_2vGZFj95EvX^IE#iD?gid)Vy@cZjJYfVupbtaZ zTMV5Ar3+pUS|qaD?ws`qYl>YwOgPF|z0?2lzw*0(^1JlSTgzYjJ!t&l?}$%00w zEo?0qLkbAR%9HJcPv6+5ls+F{A!20?S&~%ZgEHIC#jr5oJas{GmI3Lej}DF~Wp!Os z%A&*x3_Z?ytz)G%LCy5v*4r|vw6T|yK(MI?2!pgQhQ0uu7i4fUO6u#&xSL2g#bOG* z-7@hmbX`9VN^lO2=0X}Pe)ixDX4bKR3P(nDU_(8gc9&=8r&E1ZlB5)(H$kvS=%rPT zcxsJHgoKtz<0DB0DLGPd%5afGCpF4Nl1*Fkt4B{BCnABBL0mR%2i32$S zP=x2JB}beb|n(yU9a^xYPe(Z{NO^znuVk-6J^kI zL_ItyF~0^`Lu`y|5rV@UNr*K@N*V7Zmm~>|=jMoN#?vM7Fv4n25d5g}0&+ix4l|NP ztXho#A#=x)TuP5Q1X2#bwrkXP8e@S3@2p(+e)7A#@z&eZ8E@Ct7-^ZxwrxNAnq3%<6yUePIlHb&6Iik(NBLy3CWg~mbABu1eA+Z!1(Sdg*%z5 z(K)=?_N3RVNfmK&z^v+fxow+QXFXwTxp%-hPg8+C8b>R@?X4L`WswmU1$+ptvcfuu zE(Z-Oj_p>?Anym@78C?Xa~k|S$N0MK#IDY>0^wOU7?f7QW5`OYcgBZ^4jLw<);e0V zS(=neDFZ$AuxcfVEb;_A!-?fUL!)T&a?sNrJ)MS`rfG%-!tn1L?K$U%(VU;|RM$ck7-unzIh~tw zB6^Cz&hP!a6m}?B;aY(^m-qKc`U+~ zv!DV8_+}u_ig!E3kVsO@1th?M-F?&n0iGW?0alC?EZBq}2@E0-z#jTxx2gMH!N41S zPP@G4vLfPwiwaUqP?cw*Tv&s)+bc-y9!5q=i6W;Kfk^+lKr_U}eU{usASgt z233`u+&IEXxzCA(G%|yXy}WwCN!~T%tMwFFehN9O6fc)6gb7ryE>`E4yCh$Y(AVy!I$_Pt7FZo7_Ai34fDFDX{l;??C9q)$jFiGTLw**J_TIC>-t z;o*;e%uCKQ`t;e;MV?PN5f~wvCB$kJ8}_m!+dJHs5<1=_=hJSvsn_M=pzg=ZXHSP# zpG?-GMYSliH}BmWcI)8W<>jm0ZXH9fpjzAaL(cfH-n7@7+jnlPj`pk{9JEkakheJY zYW?i9$Ik;}Sg>8!AObQDYrqEzLTVTU#2nIKBV9h{)y(09vsdLcArNLSxT6@JsfbXb zU=f(r9K2E2XPaBcQ##O{ZM~klZKgVw`*&{lt$FhB(SEhcvnoxB%j?bdYW>T<@QVjW z2Y>wi?-v!MCczPoIhst>Cdaqmy@`-fdida@Kfb=+P!!&L=dIL6{#%{O$@W(&>@lSqwa`QgstCwe|I2LjRKf`iS zq6oi0@VtR}5MRx{=IA^lL_;YJ*2eU$2C1UEzPccoLLJcv8(YSqt@YMC@)%mLlNVs`pAB8}ZZ0M}+pxvjdM`JQK+p42q(Zx88NO#+S zT;!%H%YCNFIRgwD-vx{3(*VqQjMVZQQOtQp$qiMi|5zvc(v&~ z;hrKJPYW!?sgSVQV5vYO-dg85c6|@yR8_5Hf)&gOUYVY-z$GLh2k))6vFlDcgLd_Z zZ5Y9L{G&1@3HN(dTIT%5js4@BM;@cmdID@MTgp->@Z23|Dd7+um@lfX@6$ZPgl+4_ zI;1UZ_Cj*UJ+nL28lrWU=dl*l2`mr_Rf<{kfi7i{-aRa`YE##5ymjn+0KyUEQII=5 z9SE(3ICrH~RLcY|cq%h!mmXEqcIi-@pIvw#IzQ^|dDnFlcii_q!e{~!^RfW3CIiSR zUmjAK$2tsnuG16%NuVZKaXq>ErvQgdI~OZaCNK`rux53VBzR`%Wj1KL*;+MRrfJ4v zMuY(*Prm02wu9>dh89W-(8;w0mfxDKJuuhHR2))`VR6u5cXu>y$G~mrD7B2fi zdu?GO)G_7B!x6+0Ya*Kf>cysRjT(besT6J;2?~d+>iA?|Su?bo;IvF3{V@^Arta5G zy<3k53v=hz{e|Q0pr{KemxYv5^k9`klS-OqoQYtesu7azI~DVSJ$9DD|A7L=JMi2% zuOQzU20u6ssbHlLaqLju!v>3)kJ38qqtqP~O$flQG{%`>5@-aDa15;+jB>Fhno`gq z#D6CQh731Do!Z2S6OesK0RzvMQXXQ?pfe_B-{@%jfO8c5AB}EWLZZ{tIITcv80J5b zB`NpbG|kSczB(%5)h2dtxfqp_iO37l51TZB6S&5H=xyH*YSZ<7C=*_#44KyHrp#!W z=Qz-I*A8umWL6a=Ar$m1P{}Hwjp@cIFY3+^r48TfAMy1#~|bQhul9BxV*EJ$*_ z@enr~hd>HnB*dTuhJ~6g=rEQ<_lu>%Z}9 zjuwCGul}o7S7&8aBw4W?H!heY;U1FM6vk*0N3x>KSNoG&XnTEea*%gTt%vgZ^n6ge zN%}tY<8C`lMTU%s@BQ)b-qzDBkDv9*3CWFBO!B@{hetOzZ1?=tOD6d3n>Qw* zx7H)_qz&G;4Nk>~%_q-4op$H9-h1=j6x?{2X@fzk64E_eym9Y#v)f*uy;?uj-K&Gi zNL%HFZSl(~hiP+V5xRYJZ+UdIzqh0qH{I~F4?q6vfAhDJG?_l(+1abR_uifai@*Oz zKVENlX}ULP7SE&%N7;~z&Au^Pmc{I&7+MvJVgM-7xW67_+^<2wr)fe7-qnrm{9>_4 zl2mDBo4&ULTIGZ}FAVI7&TlTy^e|+QWzTY+h{D5YF&SUJ zc-eIWLO`kOSa0S)a4-)DmLNA5Fvf!{(Z*vI3rUmYa<@}d-228?PcL7t^?Dn|x^FMK ztLCD)cmIud-#PJ~{pjgunhmR|j`ZdsmZ5JNAd$=JV701>;%NUsQvQ=4{rKYS9DB6c zY`yol?%vjzy?FI1k-!aE3(9fiDIDM(U}mwATVTmB_qDZ8u3CmQ@k&rDNhmUwrh-cb zRoYo9U<%{!-M?k^Fui#>lMg?81kK1XUAkJWV*Vx29aSoWHd7INA~=Gg31{^X?=jRV zWi8kO(kvzMZSt<{hPK;oDZpKTj|mT3%W|>0u}CLvAw;5zgTC+Tz6XN?%zId7X|WL2 z_`@4Z(7b6ANGN=A^5%hL(vQ9>mLY)DY*avO2_YF1vC)wzr5Lnb=iYlbvu^g~v%GFv zqs=fl;~-b02d^tp78_><5Jap+Qc^4j6GB?3PKQ=yNopbP<4L8_%f0h3>b!0dLdL7xUJwU}GVu66|IA`YqPRQQ_ zGxuDFGe@Dr?hx+|$|zifyzWJfc`b8&dYZ^Iuo0RuVoEjG7aX#%^J5o@M1rMYJksdC zqSRVD3`6wcI196<;+)O{Wt96kn7S;WmC%KqBtp{24l_*6;Zf!x-4G_}k3ap;=s`$f z9g!*Lj0DdXi>ztJ`g&NU*e)pa6Sdcs@UoDCM;NSxKU z;VHC!y1*DvQ_&~dAQZ_)glF^@D!*~yVD`6t(*dq#LpK_wRJB-UX$te|*oSd+1Zg`a z3Fw*`ovrrZwDAZ?1B_yD9(FV5Z>;Bpd1qrrx|vA;`1+LrNk3yCx;21sW{E^mmq00< zlPL(M9z{Nz!jWYhrb}DT;eLc)^|5aO5zuW06X(__{enP%sDD5j~y!D0sK z2G(+(06(L>iPd)A*j#24l(pHlUEKx;pA-Mw#s+c8ghT`t)naw;eyJ+!)i89MX7}*r z^{#8nqOjVvsz)4q@>)y^AH)MIB9T{&s|0)y0ngDILSy3OyoLnoou8{iQFN~12;Nu^ znr>)8J36^jF+FsB*Qrj6u0?d-2`s6*>ubpNIw-hc?0oX1onDm(OPu5N)dhsbGSs$P zqsF3Gd2A5|hz|Tcn@cq`qt-X>+#glAx<1FqO@G>$VIreFO6X$$@c8Dh{OYf7&t6_n z*LqEv6;gN$ZuH%D+YddQyJ&H++Dl}D0OAk=tHhIcF|TUwrqE{+PP293E7A)ieRV@#N9db~hZ|Op`3_+F=x^5X_H*Ro&B< zj}H%*Z{EMF?ND!O5d%Eh%WJo7q(fI{FSeVbyEhL=7`E2{u9%nrTSjRq_K8OI)T|#@n%L9zLx{ zb-KPOCR;t%Gj70?qd4^4xfiC+Xw) z+SXSmhs$bNQ5>>GL9mR<0McxC90ns|#NP8Tsz!Yeb0<`=x zo(Wkj3gXQ9tBbVS$GNyT-*|_Z?uNV5qWJ#Lu}5?0Te$PBYUd_;}Zn@ z7o>dW_N_bn2iQYHPrchbfAQq*y}NI`{g$!raPjNTi{M}tzP|2S^WKfSGU4avFAIxV#XkP*0j0P%_Qs84W&L`$?v?7=?r@Sl9vpHZ zhCy9ktqC^4sq?PIgh>XiAycspjB$AmUgJ1l2mvd4S9hb*oQdgU40t=s!PTzEZNn%% zD)%8Q7~%bca#Y|O=!afulW@ValH_zU&& z`%!6xDUeehwX(6!5_ujlbfPUKZ|dF#h>=4KAMPCy%3FwCSgQcV9RqMOfo9nl$Y>Cx z_SxxY8Dnl;Um2~cvhv7gWoZfTVPG3j^zsvdIfbzsg)j$(Cuy4J8MNp@fS-YVF^*XA z-|&+eP4N(#6>Cvr-J+B^3ifopz1q~A1tI9k@m^U<IF5)l&3A@2Z4G!?hlpv*`w=xjV z5$-k(_TjR-u-cYIdT??w*d_oVW=s!OB1n-zW>ImrmvzIi-L{m4bWv&LhCzY&7g@u6 z=h}KVY)km4N19mQ}BxV+Mmp7%VnA-IoNQ@vG1IQsFPgCDRweTWY-VZ?KbLA z@i6GVZBxL)k#%NNmi21017mg6_66cxRVE3SDrjq60;ef)@7{f59dP2qh$+dlEYEYT zRSaV64ZyxkO7Pg1Da05JMunK-Bw@s-I4fYyB-FZ?#pD$1E0l1Gz$8VOvdTu_$*Mp& zLb25-%;9txK-t-jZ{Qwd;6p=H0?F>ZxFAp6-Y1Uc$8UB z6{w$cwc`;fj0V_$h)_bpj$_j`I9Nf6NN@omtDw@bCI|#yZ{M|JKTQ1I<0mh=c9>~E z@BPoIhLREhusBchjG>^s8^^w=%CR0l{N&Tqvoj`F!BLBROq=oXnGSPNvX4oIahr@8 zfHPe|FpIasT=pHia-y2SIrznB&5yeYBk>&Rv`d$ZvriuW&Tsv#|XPm05n{_TBxXTOPXy&p$mnI(*~KN!K*anWK}#=a*18z&RWBSS`!E z%rF`!9#*Cj1m#|gsxfX90_G+Q^``ZN-|S^KfA4Qy)omjrZ`vKEqU-8%IdRn0ix)3< z+va!v;CKG@-~NH?^hsI#;UE0bwz+!i%Ws$aMcp>5MP-be^p-Lyi*oVwvyVRh=tC*+ zd+)yU(CxsQo*C_`^T>!N*6F1ac2Dm|i@8QB>uAI5D<= z@chy7;mJ4NeeeAF^|V{8*SoP-RbHl)@2)QUEXi4V1x$v()AaoE<%>7pdQYe1dES;N4vS+98SsS)9iM5{PM+%Coea< zzJB@Q^l~%(mo=v3Ti^WVm%sSMci#Dewe0L__~_$*Zr$}ltQ_2UbILIUS(YKl^CfcYo!VzP>!Hw!3R-O zAc_z(%0z1$qkAdqr&G0(gbp;`41V+)3)7BgsvnQ`lWMslc-Zbm7041PY?fT*&1~k&AEq%C85fyYH&iVmWo-Tib#X9iiR^ zkrtltq@1A8d-IMFD}Ys$9*WVTZfu-YSw@;(Z=10yMNVbg8>2he@;P_*+H1oJoz%&@ zP`ACxvIN0k@!J2lSS$p|V zY?>rRnw!xjGAWk(V?T6}hK_P6+}4-lIO1gKJQ^ePNT97nWJv~GkO4G}AR;9giaCZR z6)V7ai!sbtC?+5$Tv!7L$=pZ~hc|4-F?gS(DPyVWkdARC<2a)Ank5H$%6IkFnek*b zWft5#J6)d~-zxU^k(8aagNn*9fJ^BPB)D~#H7sR1z-&z+sRw$Uy$@U@QAGlL1$@6T z!Dp^@g1$=0fv1kPSjZ?4j8M2lJQ(oUnTbEwR+31L1L$dEPcN|Bv89U(9dvI;s56ER zbqCWf+)K_vHryO%OhMBK1K*0WWcC+QM(0*Gqj%0bAq0GE3>?hW1DY-3 z5#j)193-<6(rP18FNa*78y`9gz4Ef45v*E;kYsR(!%&jX0jD>BWS>L zMD#o*%?UOjy$H~dH4J7txD_cE*yjnAoLVUML<8Nf%a^0u(UkD$YhO&~slC;!wS)K`Nk^}305L(BBe~-{?B?Ne z#wO#)2**q+FeULVRv^y6E?WA%kkVQmBWa^KFG@0@KGMtHZ2dM6yveMUj2_ z>1R|{+5TatNFS)&JE4S3KR?Qk&=^|Xx7!h3ax0p;fBER5y=uA+>L7`A03O2?1NaTl zK*$9EpQQxIF(waTLS`h=dmrT+(YF)f0T+{DK`atxakE`6^WXRje`cA>4?q0Lwz+1^ zPxw=*{_W63VtGjOh zXn*qUzWLT0H*Owltsv?p_)(8}zQ;tSFq~7s4(4qH$75_z1X@9oOEKlt#x~oK2tLgw z9D>mrr8;e!ao9Gsl*wYXCl={$yM6ZXtg12r`?t%B0v1@pMy;Br?MIbod6EO0q@9`G z=Ju*%mZvf;Cuslp=BMBJ$qzqxJk{jLq}(X4JXn9>rL#uh;qNfrQRkx&9)p9v1 z*p{+Xm?{s)M}%{apsJfwlYeZ>P6_E5`?AZ0T9|i+Wd@WRe>p|64yCeZR zv~DjcBT^Xl;zJ;3U1Y*RcEkFOxt#xBE$h?97n7z3lJ#>qG-k`9D^Y|pSggw z+g)Ba&GzKzu&S!<*amF|wd*wT#-?*5-Jm-+3I^T5B?sjI=Mkx3 z8ATeHuy_wg><1Jr1mKZDX=35F_6SFRy11_UqEZ>CdzIwr*~L{?f6r5PcyJ8WuTmsH z06=L?P(Go;bjpEM2vP^AV=*yc(9Uuu;G{olcyuTUF>DO37%Lc^+cru^NTjg?BLV); zgGRu@kOvrD3PoffU5=tgSQvbeM2|5Fmr$7H;ln7TB#|6R=QU?;_A>x;fpEpeA(O}5 zW>!H46yV!{E2dZK*Di6Tb)@E@^#mA97Aq-Zu?etf@TrZle75L%*y&ml$C;|C7^9CK zJ;%gCDlmhAibgGCd?Mkm=D`!=CBqIVbZSPoU=`m>HoF>HJ2=$s5QHWl=c-(Bn8@8q zCKS`d{k_|_Z%>`?zxwrW{MldojX(H<-~ZSD#^1bi^X6Ok@3p(_>8lGI!ks&JuIuJ{ zvvW{*V~qjA==}UDs}mpJTWi8*TVwB*c>=A|QPQZi@_w_U5XcE;_tTjx-;X~R6uBbJL1?0QKoc$7>E%7HwTklXt7 z=`$(Bq)<}EHKD;dA_6Sgqf+r)rl?l4;4mT*2>J_PZV$kFgUmEmB@se7hq62mW0{Te z3djxYIzj>Fw3f{CE0=MRAIE^B`X9h2IybmQ_Xe0gV+??Wyfh8~iM1@vOTna8zT?#E z5Jg?i!u;nMkxgYXnWL@0+i|zhj_Stz!)#81?95t6pB7I7tGIXQ_iH-SnaLs zsOEUkEXj#P&tAOz!B0N<>7!R5KXQmTCootM{i`l~>q56aKm_v@${8i@(`fHTY? zJ4#12u8+N&Gxr)xSK(Io76ySN$yGmi?|zYYPrqo(P{u7(zC_~>` zqh&(sx^LRujoWWz%l((9FE6hy@88%D-1n*_EL5ukQStQo>36>K$8Wy*7JonK4D_fD z{cwDA_~-xJpKH3yv`iffJj%WLu1V9BCUOVu-Zg9>5^(ss?VN5`QwUj}638h!I=TDy z!HxQ(&rV;Se)#six0zgAZHD2+=95o@*xJ`E)2~x1gIg}MH{QE>|K8Ev_xCQZ&L~B1ym`NE>nR4P$O{A= zu;$G-?+7UXb`bgHdgJV^r_Vln@c4uKZ`^$My}M_xUOamAkP@;gsu#~*8n{%ps(#^( zH?FUDCpYhY<6FN(h`fFKUX~Tx^^`|+X|#sioon#d-@ku%Z@(Ewvsf%|oE*J*{|+ap z-keiDcJ(HcVsvioI`5gYV8M>P)jo!S!4>Aj{g@(wqdGgU$~$k|lk#3!Ktt}y@^%Pz z0C5t&m_Xs}m5=&{UEe+W_|yAuym|MIyuNPwvCEQdwSOr1cz$^!|_bltpew4^b>e!w&2lgPiMC`j1V(1H?R9hh}3w)X+Dv( z|M!34H^24muW{;nwJxiyS|*rFo^X!nBd85qWo}jaziHB!CwB>y&IgT#`?PH0oB&_?DWD}xEZcDjSWa92_b-(p1wNO zS~;y)kXPHQm#>}*5VG+ip?7bcNWm!Qo88U_d*}9zso4b~fT@f&eb?(zTVY2tl0-ll zg0p40;1VR83fwj}O;QYKICCCP2x4|OZJP!YJdUI0WYp?<(+=Y(^-zQYV>ApSL>!NGcOj_ z2TR~#3EHFHnr48aj|ITA&31QwaXt*ALpT%k-mTj=Zr-2)_icA|v7Tymh;jkj(F}dv z(I8gkQI?cig|2bKXpxk08>L_dAyg|1PCACOG~o# z>?vd{o;Sc{LXcxp+DQ2@n0s)mR4SO@#kN++Z7|YBBJH4G^yk1Oi6mdGs)IdIY^AL0BtFlN-NRuejGC_1` z2S(7UD!}2fYaZ@CkV$fwFJ3-+a`E)#GR+rRo+sJMm#_L^%oY_G;H;BrzN>4cwX?p= zvT;!B%{Iv-<~R||su6`8c|3L_L2iIhN1!sYB#D0ekV=usxB!Cax6?`|0;ISQv&9&Y z@L2+}?QQFVg_v?kH4gF3jXUzTF)>*l26vBVtJC$S6Pz2RuGZHRE45fuP18(ATQ#W5 zi|Y^pPk8h!>vy}knT-L>4Kis)NSbA!Y#1GEk9m^AyMssNqqvU4s1Q36Wx_+4?;H*q zSCHx3?QXynM-c_cSG1yG9yREkBo)WGINb@xK{;X!6#sxkf}^MqVaOuD06FGhFx3!Q z?l8!cs57rOIKgO|WhiRE#?cyZZ~+$%Ry_DFptm!6Jn7sy7lBMN6Hb6j$Sg$7pF!Ak zMv>4UmFJvcPl*)_NkIVoHD)Gk^{C;Fm5K3CcnjVUM=bEVKc_Blhy&c;Yfn$#x__Ve z@a);sRyBKvhws1pPP%vUlLxOh?b>M9wH=di-k3|x;l*{+WnroCK6Y=wHNWKu6Kml~ zpV=G&^COyLCqOtuv9g+ADvS*nPaS31VllkvoFl2oXQR*gW^@1Tw+foB_IDHbH*Ddy zzkU18tYx;uUAJnw+mj?)B>6C^MCL;DlZm)%`#bk<+`M`7@Mw>qYZaQe7Iy6#5X8;p-TSu}tLpj77w2bZgn2B215Tvd ztS??(^+AN&HxHb(+s)P6GG5^_ZrRkf;n zyx!Gy+rItom)?Bi%Rm0nckS5T*t>gs|Bm$HYwz8^+|-|b^pxeRm)G?N&tANH|K3%t zA3wh|s3ReJZ%jpKtoXY69J$Ee)at#ztcW{btD*{_}U z`>SI=Sb#umD0p(?_U&R>+Fz#j;S zMOrqF%NP+3V!%kT!8$amkrDuACk*Luf7$oDu4{^X!6_b;k%`=HcbGvKst_bEiuLCD z_|8pPq(tz8lcUEE9y^0qiyQ0q)!n@};6?T%FZ1=~wT^z|S1+G`|9d}q^8B(~om@An zX+bkaS&~rZBPc0x0(ndU2u@^efK?CD=?ww{735^lm`da+B%d<*Fa754J-)d52mZdl zkSz}De*4vT-YctQBIw(pedq1{e(Zb*;A(N)rRaF^fc50~mH1;8wSa!C5aw7(2v*({Z)WN6AN;|Ixt+2-c zt=S}%*W0acb+@a5eNWPH7@?-5*%HahDzVl~Z6eb*xY}Q^K%aclsIHfU^RF47b_+10p(T2@nL0^7hiUmhJBV`%KFA=VcZ zq>ya7xFjxsVb+h-F>e6E>G6o*nPG9qL}{9G7Bh^PqZY^~28K7wS=?YFMT%330+e(| zUI0)~=rh{NyJ;{xNjwD)aLB%K;!aB$A>XY}*5IK{=lI8*OaeG@UX< zmZxbxm;ph`qb{;!=yg+f69gKNp>Rc4dyEkA0qsqmkUZ_XzH3{fZFDQ^7zTMsDP&HG zI8#RHNJz2-h9&DF>?pN1)uQa$-unP>num8Yf#?Qs&tS=n#S?(Ks~dRz1Dcb77?T(U z(+|P*G3_eGE-K@k16th@twtt5wLhp{1OaLdkA#HxJqC&Rxp5mn&?Jd`rmw0TR(m+} z7e1QVBNh-ag1MPd22Jr1;AE7OXaKMv>W4Ukz5RuQ@z}(M8(_nGH3-2VL=&R@WWf_E zSn#MUbA$*;qPuY%x;al^9Njo7m{u7HfC@XMG{mqHCL(A$M+Xs1UTZO9em;#Vg&1E2 zH3hJTA_6^_Tv9=-B(MizAYl_GeQw~`M)-78fOvgORG5kVpHr9jFmz+n3XG?AT9G6S z;YC^8I6BI!gWDtd?eBj0lTXhnmI#Bx43@t6g>Z9EaGXx?93~XzsQQ^kkKi?niH9I> zh&8}A%xJO&Z$FO^g?9Z^?iaM4@^v9VHBEr}Nz!V61<7P2dHdaWk57K|{L@z#JoYiXt;Eq-k+-e1ypK0R*Pp zI5}>VdVcxLLnH?SF%ZKbTrB zReRmrK9MM2P7uJ}^w1^3@eEH9i9@d`<%rO})6brtJ$dlJBYSjma&~rQN&4BN)5nh< zfQ_b8!QdPFx1T-w#I*kS#=#U})41;N;ONI6eRk2FhJfFB?_G?%3L#mpQoQ)=(~r&7 zWm4^p6pa+R!W!o-hYqzqhHS+I>!`bm9BS-J0rndaP_r0oa9od2^n*m(aZCk42!4?0 zrHo;g9LO7cbu}p%KU*H~a+%01BUn~@v>PsqiX5FRpTBsyt^IToI6Wt6BBt-oXtP{a z@4xpxqhDyZ8`x7RT^$@ac865U8 z?Ky7L@vQ?FLE@>u+;%_s$%lE7zJ343ZvE;9fApQd@aKO0%kRG@5b2+;F%6kyLj#Uy zQj}G^yn&;G8v8|&4qe}@uXUP~d5REC6I@kAY~D8eWtJDE2a}<{{nqX6ZYQwbFYlk8 zof_RO(S}N8tJ9Z7UKl;TSYK3C zA&@*jeSUd$MKJ06zS%ZMQ>50iiuvv8)le$m``^Qoy>kY)WWNC(O$I^N4JlJDm5F`gIV`$s90p4&?8bsMqlqT&Cs@E zoiNyS$5?PfnT+!^yq_S&0Un$vt+fH5RLV3sU!ZY86z_W z7Uuc@=Q)d7xU!5vYCzD8u?~B&$RMQJsjQGzjRulH1}Q~ZWXg0l7=c1wNM%%#w}GIBx(n z-NAE^G1J9L7jRZ7M-UabwWF`QL}v&=J2=EvjZicIqDd)ubj=GXU;%=97|0dJ6u4|- zAf|`l&nwlV9wSMMUE7W02v{b;tFj`<#iJ3iu#S1g1)3F{lods;4F`=fCNxmMVjSSB za{)KRGil(;LH+F%2OOM16q$EX2L!U*xi2L;yGIusiZWx2?3_-b$3Bx8n2FjJ#c!al zH8A?$P{B@AYwwRK^quJP&BQTj1m)2r?rFNeLBk~9S(vs z$6|VX9B>Hn5v0c^{X?9&Gyr&&>~3Pn_J9vZ_i_snvwrU#u2~6N33iAO6mEf>Ubs)}8E|-}=_QyZL7Ga@QyrcS+K9 z!$(tkt*8M07BK$il@t;SAu`7$&AYx0kVvJ6ZY?Bb6m8bmW3LF7FJGSi_V4~-(8JN; zt)fgk@lT$-yjV95$uEELOAj7CfBNXb_x|X+c4#hMy})La-VbB9yV}{uPp{gJrukRC z^!~5@#=(z&{NuCjg@4lDzH_s`7ztxWXH~--K!{|fGW7nwF&a$X{2SNR; zb7g=bxOldL2O@?AV-^)05PcouBjCcH)-uLv6q=x^1D%2&^MV~5<%y(2Z>0dXMD-n` z^vhp*>-~4%1Q%B#oz(*JrGd)A@yWuTEUO%e#EsB}M<70(Kw(_ps$uZsm>|5^+Y8p# z+l}#t#ZrGnwC#u8t`FXdL=uWXrsiSLZQI>2jEkah*7v<_di>q*d9n@#`8r%%oT-NV&Ou6@0jV^T=3x0Dz^0pnOo!Qw`CKgMuR183w#il{=R)h@cJO=qt1QcU2>R}}n|f4g7)CQ{9CPogY&jbA*^}q>u5J4< z$#P@d#l`jc?oa;c2OozJ?oGW?BI688z99reb;=CebW>J~anRd(H>c%!j9*@z>R^rz zkJBWH_2R7W`m+}=f_KN$!#0hrRb><-HamZEwQHaB{UBvxdkc!eU>8Mokgu-R8`q2{ z)m~XF&abYJlw2mt=-Q~@3}FF zi^HR1N=F>?8fSaf%sI>-$KevL5V=kb>3|?a`O_X??_8Qn5(}eP45{6eMN<1xvYO*s;DaZnx~-Dq3oi7(`yL(i@roO|Mzt9>DOr)%$B zH+C=TtXjPQ^lh*0h?KCf+K6}1CyR<0OP1p7vfL%iRKphSM zE}{s_#;-ONJkL|Bh?E6qp>ON+>#b~<+%#O!c4!#ms})T-HNo!cT0oMd==zRx$|XQP zDK9`_0&%W`re1QvF~?C-i69zX*L6ck6b&+%<|)OnL=+hn%*AmE;?lt^DM_0DWgDF<$SC+7uJHwg~cexx$Tt@FJO`Y=d}QpKx)7B2$Ct` z@`5l9zC`AuV74DR(1x-~a2{(sJLuj3D|pbKTQ!0Y@4orY@zKfmzxTbSZh3T2X%O4g zoU@`RIp+#%=XBQ_1)u^Ls^*|g?*SI3d14KCzA1%SHU{iNEu=ORnVP7RJ@ z3xT(Wb1bt2wp(Xe9E`LD6JSIuF{L1cLqx)i1J!jfz5}ddOx?5-+&jAI;sze}pWiO; z&DFZutmUF|!+bx7q?L3CQdmIxc zVr&h}?NJ{VF{5}Pgg?Jr6k+Uy%2yM=9v`rz;4saGS#jd>R}uVr>xzo4}bj8-XizI*cJ&Q*eh5{|IDBNjf4GL z|MUOFKjqB$;^o8b`qHWK-klq)NCbBnT!a0e`Ln-768YKlm(^bKYrp!HpZw(e7^$qH z-~Qq^mGg+D(=_pWfBe(+UppTibhmm3e3mk1b`M8ge_YHM_9#YY#KYfQc#mJV+><%u z$-Vv)C<4diwFE!vrS9Fm{r`59|~y`ezGX$KkK z2F^K9=thqBZ(UtahmOsgZ|!fl>bHOAcT~Uo(%W~EM0SHItHUQxPXD#P{+qjYT<+aY zvZeM|VXmQlmQJ@Q>qb3lWck6ZTLa=3n_atgWQ-$(S8@6F0Mdh@A+{7ppJx2xJrW50 zsa40rXb`Bd7Q}O@B)#sRpQ(a#?)U%Td(VIL)AMF?Etubq54#}0`t>i~dHZIWl|~O1 zr&HpUA9tA13AgV@3$vFCjNk!2U0{y%+pZg$^NWjJS05bi-MD$u_I;M6SkID#u>~lUHfBtO zTr5R(>u%k&Wmz2@9JOsSi~w5IiZ4ZlzErq@lZ9=7%2fUDGP1K6-MNK^vq9 zfI$L}i3#3rA1I~c0Rd4!v#2)4Acr}A^lEFY9ok-sB<4(jpzq;XT|K^(sbmCm3bh|f2mzdZhO}bVMV_z;PrZU778wfwbUNA3+4|dqCFO4#sa_wDJmM!j_v(OWp zNgtzYB*ewIjLERwy&^me#-A|8XMz#v6yTY$@XxX|kiOEynnfLS9OhfbJ+jGx2lqQh7V zj1Z?pauUH-!;u#XtE<5|piBqJN$_3Qee%)AnECtn?oI}qB4wlNRjY{Sp&iY-sW2-k zEeSbVEUH_p5T?E0ihwWNv_pe=QOExBB2NrL^{5DmaR=6EWCy38oSk8GvD?+2QShgy zvY3+>EsW`cQ53zBAyyRxOhasyob>m3p0#ZaFf?+h3{9^s)N|@25tQPo0=`&gmo?>Z z-h;Bo;9)l9v*el+z_2y+F#=TX0J%-mf=~hvtOY@;WE@swJ3y2cfVj*K7PC2jMU7)C z05yO>k~B->?oO|FwX>l}Qp%WjLx?f;E*cActn$^?n$8<=HH9oMXe6~+jF6nQa3HU8 zh6(PXdNToI9o$DsYYcX-1&6;hHPba3h8c-{2GGkFH!onl88n}@Z98f;U7*+oG96|4 zg2&4`OF2oQ7~OCt(k!>mwoL7XL8jt2y*pTBtAb*)V3bj?1&q1QsK#NIVnVnWKwnQ`ez?JSS+Rtn}gGf-FmAq&Yh#5e){Z3 zhabKB_PyZJwst26nYZKB%XQbr6_M+)g&?=-?>e4RBleb42qP!q>Eq9wGt1Q;z-LOI zzc?N0hPm$`e2 z&8JnV9No0;`Lj>kT~k&mv}^R5U?#vi2UgG!WhwCD11^U{jGT>`I@r$_!Q}6LyU^=l zA0E_r0t*J3jc-k&hy5d^uRs!7Q~+_pwBA8;nhQcC&ZwbRoHJ$Atmjt-oYp8}*lbh; z8e=o->@YSU-DA>%=g!;UdNYue?iCfLxa(_5V2aABG|MwL+RYWzAP|8;8iBMB*>VXf zP$3YOEqqNcuTlsGLf#kzym##N@=h=?WO^S9qHuJ$5_qeu zj|r-n=hgmhx3kV=G+{JBBFpoVK!rxb;zZ-R-Z6`V3L<5arVI_< z`g+qEGeYmK5UOdQO0XR_my;TK9SDIH_{Ocn{S{I}k!5L~)!S{`ccCbUw!1JdLO@rP zy^_zeyo695A!wdYyWbo4Qp%)pxNXNg&1F({gV}7`(}{6EdtouMk{#@wEUJ!i zFOH7?e3Z9d*IPn)RaJ}C(r9NjU{$+a&1s+j@KShp zkcXE`!@5=14N%O80)^wS5R3to$K&K*fKc2z;;_+!47A{B2&l7No-Gzo0;J>MWhOts z&<)l&3U3Fj!*CNW5P=Kq4K8NPL9rEwPSor5MUqLUp^AV+6x(RK-42Y&EYFqoozg{F zNdoIeo~6(y7l4j34)P=Vz8}W{7B*5m?>8F;S*5w_7V-y8rPhY$| zxluXmy1vQMY<+c^@7;XsjW-e@yg`{vER+(%#69;M%)`h$XwRGYpAIP`5IaBND3&O| z1sbs!ayDZ%42W;StP4}7csWsNH}b3NS2D@cBHwN6>EG|X|8BZCUiaURLA!(}Y*Z6h z>DqSWDUl0?9gH!AhGkVIRlZnMZ@vBI(+?l)YDmn=vb5ep2p?l$iiF-RZy4p1rJZ7t z=f&yiM}PRcf4n*CzWvqrzx?HI=<(&V=MPp(H!7#p6qN9C1G^R8)ykoqAc4{HqYqxa zdUoCn+ud$`_s*SMBu=XvH*VfZR=avwpEoqX;t(v{&rXNMBE4~RW4FB$@$Y^0^x2)G z!~f=g^}noe^YrC|a#_Cf?%P5#?MzjcO}(ZBUF%B%cX8V^b(YA3y<5eiND=CHudpjD zN}hcB^5x@?mkAazc!MB5bgIbHUXLM$j>N|g88kne7_?0R%?LXv<7R#v`FZY)Zx=#w z4vj$^V370fYKU zOGcx*zD{#qWO=8y&f~ILTIg?eRgrQAlO99@8Y7Y%IlHL`V7ZG72d_s3#o0=?%>eYe zOey7czy8sWe!5|~h+_S zWaUA1UGD(q!QsW(OPLnSqh;6nTaVT)t5v$c3Jci|SF58VF3rXCwf^kWKm5T5LWsR(HO>CW znJFGWOIcMF)A&7(z4hZ{D8V*dygExH@JCE=gz?$)3x*iR#8QtfJ6IiTFX~rM&nZuM zvfv4ArU`M~xnP8}KB85~yD197fL4|69~{!)yP@6g)_vFIdF}&P{@b?EN+VE5!TOts zq)0a@LsPmW^`4KdH(fgzCevKzZMS{2f)R&7)09{4Pl6mJiK_E7T$O5bk zILopm$&%DVakDhWvV=^ztVNmtY{Er=CW0mcJkUGb3aVEHX|lL1EXAEucz-8ecI1WSdBudZ+ZD)F_0sX+LcXcDL${j*sSt5uL4_t02&ooHf&qAkq~&37d6DHX$%QAUXA$xN zD=jS1G2@{s00AN}WD7`ai3dv-n+!>`mq+B!dFx_Fu8Q4fHfr=hvmJuPAxg0W5TtWt zTma({JPk8^C=;H_1SV4$f5GMg!$E-9@cp9NTU4`9GXw;sWI8B=j0>?<1sMqJj7TRA zqeMdTm>w!*l<#+47ZFhJ<`*qq;GMSysKoffS?{zpkVcQN27+FDr&A#f|KJv56hdB6$f0>PXPjScu2=`ywzj^7rM`{LrD#qJhU$H zn{q5v8fKH%tR4D6`5>#$e)hrd{_&q2-@5g+KXU?GA`nKxjKoE$Fq~5TYtiI9z(jg+ zCQS*79((8A=Q-zbV41UMqVAi3tChGIX#*cch{o!@4WSeKlkhO|Mu`DV{*40e)Q8%Rd+pY zx4{#=-O@p}T|*fy%Y{s{uJ6HcIfBb46>{SJ8TQk@UCP4g;nu-nuk7;Rq^?zxCARK7 zr;~AenV`P8KDl%Adc7Hxdingasq3x5v|NmCoEq?c{nvh>soS)aci+4ntnR(uzkMhi||4#czK3F2>^MhFl#iFsA)DPP1lFW;afj1o^(LAAR=8)%h94_|vmj zpM8`~Cet_GxQi)y{$kS7jDP(7PqtTW%9ExW5kz!JJl9R&S-m>H)^VW1^K@uUgz_Lt zBbHLZL20f}h&ekBL0=1sCu3}E#saozbGFk%NYYBMkf&Uke%RH0@5jzj>Vj{REa8GR z>m5Rb1*?gRD$}eo_ESpSNr9Q}Tp5*3_L~knS=%OA+td zaZ1s{l&$vmhuD%*7G>ny$f#7?POs99ahzU+jj@hX#RIWvIGAcP|cEmXo z?Kl{~*L=IvAAS04d2o2={+rOZqDDB}rp3{l?_OMNny&xSx4(v+pK9DK;)IB-$liSa zKJfN>1cxjM{n&3dn@QTWsFvQ_$zXVOebzVqZriS}wq?1eUD_#_+m_{tx?yl2oF-$d zuIo0*3nApB-#tCO7)FID;Yfr4L?9rmjsjz4JTW1aiM8NN0JTCi$85(<7kIVImerJZ zxp(vC%Jkijzx)05#Z?+?N&+f?em#HkD3L7B(ssLTnq8KqUDq;}?kx`>55^l(Dj8H6|#!%h??WKz$R&!~skYvOl$pG4M)-8+j`1q}|D0bUT!bq9W7J{15 zsLb^K28XM>m@uA9W@VN&fwY6Ihwk#aZ3dWQ1O(xbGB2b^##(pnfIOb;bW_UxD77`p zbdAR2qS{ZGxY{<|ptEA>g4aN$cnFM?kg!Pz8MO2%mtPr5uERK8y{yT;{%X( zi8wsm(?%sy48t&;z^4HH$dF5G4GBnvkt#UsV~2BA6rXSqM(V2G;`MRSfKvu1#JqyU3b z7>#fGf#81Tsu8+kuVcvp3?rOk_*6Vn6JWzfAa&+}FdB260N5h%70=~+Mn_UL__+oT zE+1xP8+biq9t=ScAp)EQTolfgBvvWF7UV%SDca zg4YZLD9X#6CTX4?W|bQC)y1XdsIk2!&dVSKE0ZK~0Z{g?_a?l1`?#K9gK`QRzP~85 zsow%)baZ%>r&(7I%4xhVv518v38%st<>0Mw6a^tUMSh;oDZw&!AsX-E z7986-rI1PNMeN$eA}5?71YzP`H!_iIn;`~lk-AqPY;}77psE&C1Z#bao97|&QzELu zifn-q?uMpq8}Dr_Y?RQpXyEez(oAW!DEIb`o=wL;YlNit@4wS4^YGE5rdGO#w+fDG zgofByBBXE*PIU9Azg#Tg^Y;y;pk}0NDwCqIjw<0BN#N?9%X4t0OuwL z(`r=~P2IqxM!C_l9|lHcS*3m792_pkK?^~$LbhXrIkBVbyU}5g%~(4M4un3if1swA zE9C}C1V}lkfYLem2+m_%QWp&No)`y)aSsRmNVUV6iOs`HJWa)*6lH)m*au{Ej(H1-rao@G4*k4pC{tPKQH& z@)(S1wcj;;nyqra|M5ppe)n(w?V)K;CVw7!Lnycvk1iQp&8MFa5x>gB742oD5n#`$|+d;8tnhYvsd8Dlg^ z)?3taarFMXzxs>cI$Tx64d42eUl_gr=?5PYLJ#g%{m|EK?U(Z2$ro&JB4zi!^=3P^ zfAY!irpO+Zl^@CptAF#>Z8fU%hmVsqdH(D<3a;y#ci(vD{yT3^*wU+uYtBWsxM7^n z@v5=y*~L%KFO{*No^%jlZAm6NqkQyR&MBcJ9@$~ce~msO_-DQXvoJq8h?sRIqL{>y z5O){PNHpLhG+rxb>FVUf^*fJoTIDQR6{}GMhJ{4Vcmlv)XX#|fupXsZnPe469eB>M zOBRV!hO#1GtY-aYQIhEmO+qgu6-jExfx&FcAXg6>dxb;p3-c-=L1r@1HxkDA?e zm1pn-qQv?1>C^Lv53Ud@7|X)gQv_n@7;HY{k#S^>-+t_PAn+Gc4)Wf>*Sj&0;^5$x zvFp^4g67Sj2ht>Y{?5t4)%m5QSP$xW#fxG!jJoMAOP2E-$e6`aa?Y=>b(sGA6j^+= z?FMzSkX3PfeYx)H>l-%~w{IPav(UC(({|IWxmZkAu_J=RqeoASuMSRbX{|r~q(44F zMNy@BadEkR@Yz$aT~gi+nn2wW9c4%Fm zu51XKX4HWUqwX$uL5~BchV+yX%lMSM!zEqU+W`;7aegyBnIxx!9nvyCIN2u%b^#>3 zWHL`PsO+zsv`B8=If21z7`MBfwl;7K+&p0-%lD@ZdzU#N%>;xQE~+9gcWV$De(n7) zF3M%3iRq$Rq*Cs7JEIK_$S5rcTU9F`{Fxi3yiv;h^A|6?g%j~rDJ`(;(4bAwaCKcz zN<^b@%!!YGWOAZKwNLoThQ2qrKKBE-1WgG5P@ zh?z%qrH^__8sY*Hu}jdq1Ea+VYych{8YrUOFwzAi=XyyzGgiUJREek|)}ymB#-3XP z0T%)#h{|3?C%A=y$y)DXCtpkl0dEq75xzEU$QYmt|3uBDnLmGo)&NJHq1-5LagZa1 zUbAOWT&c1PDwMv;C`-IZXL{WhETim=mZDC`Y z7gX@Gi&sUK9~_@tUQH%}wS+y4H9d@g)cb^lIFu_G=>xV(Lnet+l;9#y`hI|jALn`y z%YeZp#bod{Ey$hs?^BXu#Oit^oMcHAO^S|_M5A!sZjiOeK`&sLEwmZxy7kZ*(F&17j*}HIq!Yp zeH8HKdMlFzj`1V(HiMKk#@MA_GYs&i^-{*X*`HUJH|T-|U6i;Bw5nc4rFVB#dRitTqk^9a~Ywr=mU?_j6*TDf=9#6 zoFWvDh=H)!?dM}oF9YRpnh@xH(Z==NFwJC;r)41g41PBR6Xb2X@pgFQjXR-lmG+<* z2_((St~Xhl9UtxsA-8qs12zgIlw$*luF1&Z=WYlL>%AP&? zP}l>bn~Tfc+4c2XU-;_XFTClzKfZTdWy~v_CV1ijzxJgY)nc*RHFw{*krwZceY@CS z5=LT}mVW;7i6CiL?>>3zV=dkfQM87s%Gg29wZLy0dt$5?knhgR& zK922ab0`=h5z+*pkIva(lEa%OUcNm4@cTdd)-S$`S!kMJ>blWJ?=H{$=*n_YmL*-5 z1xFrf&V?Ivo)!pWNYM2yprA$*OzPeC<@4w8PTjkUe5jk6Gf$F?vzRo&sY9si`!vrG z$d;AEAup4g)o~)~X4?ru^ZhA&X5~FOeYyLS@BZYk|E)iM^7xdC%Gp^W8k4Bd>#`>H zx<`@#^@-w9c)llNRJ+m$!e?#YY%a@+1*cPrZ|oI>#BqmaR?qH{I9OB$cFKG zIsvP7vRs{Hg>Aw2u4ExF!P;7$urf<|0&2oRsa?}(<1ncNfxy4A$jVg2N)=q}?OW@n zn$5Rlc6Gf=K{*RmZ%{P>K+#~e>6#9$R{gRw+GMdJdGFpEX_gzU`nJ(y-;HBlmDOsm zX=`OnSypNs+FkeVJMTJepFVza@BZCDQ69P?uNI5tcDEhOE|aYW*4bz|C6rSKSEP%q zpOb<~?7;~U$BV9R!dR4BW8wkW2W%7tOaT=GHN3S^rf%Th2(ExB{IR*3J`Q?dqZt4% z@G*78!w(D}&bdO+$EJ)2WXDDM3Z&a0$idDN9Adn7h>H6#lPll}>HCdg-4bH)JS$+Pav=` zY5I|g9HG!$?dq<+cy+0Pp0*4~5s9qZTa-B$DPwtBLhFb1$ndil7nhfiH+OOIYCC=Q zEwI&rwvg6TEVHVD(0)jdN0-wn=V}v!6pWTO%d)Apq0C`POgKG1eT94)6WYx<4sF*N zYry9L8L3I0SKhnLX6?N#%4An};@sZL4yK}T?*h!df>ery_!enKV+2)7NZ74+XBX!f zU+=G0NtU_*J`#e((6%Pp?3b$}@FIJSKvzAWunq`k#ey<94C-e;`xs$VmX$H~CqMp) zb#Aq+(lQxr0wJkjpATu8p}DWnT1si2mtZm1a6XZM0<$ztrewfz=+Cb%hM~{%tjbGD zAe{h+_)amA-o1M#fJdsOffPvs_kq!6o~4P19wwb;8Kq(v`Ye%crxHQ;%T=exZh-P_ zDH*&uRPbnZ0?|jAbYs&cvhUS6+L-VPNPXP=UXO}!a~cclj^}eg&FEutm3KDEHYwsl z@EE601EXNI89-1*F+@?WuN!NE*02Hhqwyo$_6Bn%;ps@I@Hhabr9;#lQw*><^6+&3 zoDP&-*L2+$;k|8ro~+5@a6bts%ixv2fA_{$zWmyXfY%z2;%M@Da{WB7 z1o$}4j&Y8RpcGuNendqJ2(2viuFmQWktAu6%iy{l7+IRSFH=MUT@?#r!>cDxWf~^v z>+#bk7Z)!a>et(gi?sk6MWSK1kqPkb+uf$fis`onA};G5CxETF9_+K&nEGntUC*&R zSR8ko@#CL7pdX(NfbW~JAz%K+H-Gl&Wxc-4C7yz^IcKk~E~_dx+DJrh-MRC@rw?Dg zdUbes_^ZG2i~DFI7+*w z8OI?lMUo`rh=-YZYIR_Vo zc;Q(piswiMhvH5be-(UpP1k?+*~j1f+8f?>spM_H193kQquzz2XBZ+@MN!H;w<6s% zyD2#H%{T8(UMRxIXq8~{OJDp-Q#Wn969W9mm#42FC781NM~9&Gyf~$loUC%c$bh5o zb~<5GyngZ4eVNm<^`!`5nI!1o5%-*ty4my8uaEK9k`t&)0SwA=p z$Gi}YL!&_=WA|_09r|H1#Z+avFJYjGpb;_7mnG1}=a-kBpo1I7gyErW^D?_t-PvAm znz}jMKT4B=Vs_`?20%3z&#N*^%LJ5k#=2gqUA?Fl$H%ufyUp3z#pO66jSlw1#l`uO z%N3RTNy@O;KEJ#?d$p?@hzhdy_RU)dj@4a%i)a3Fv(;NSwi8hF^5I8g?1fAB_T7l5 zyBf5rZ6{@_hJLfDlQhlqYId$@ZR@^9prZ;h$vybY5Do0=da}b`_oWJiymsVmzF>OY@ z9R_8TfUrm!2xXjUXX8NR?4T?NBcP-wSXX3I*Yg3P40@caiu1H?pzLH><~YV30Jmwu zV;Y;x2>CqT!GUqjBJJk3kLZ1l97entP>S$#%A%q-ojX})${YV(9%~p}K?96}vSaXb zPYU{ctp`Q*Y==W}l#DCSJjwD%JHn{Pq-2D^0PX^cE(eUjw98^p5ssZXj4;o!bsnZi zOy^sR&N5!yLxen0$MIsi)5dACnd$HIGGBlitN?t z*^}o}eMXBg6(a4xj^RxpaLO9Sy531fK@O}vrciBACiLcwgL`-GzIgFm#6o|B(B1p@ zoH6V5ZWy5OJ_H|CfLicmxy+S{R-`C4*lp`^Fp{ESr-L^qNBbEM>v|{nT)Zw!EI@PG zk$|!^>4x!gbD0jpS{SGn3&<41+HoKgi86sR1|j^)oL}u?XA+x3={p7J`L+hrcRX70 zEKOqo)^gf{C$nCj=Smx}QDacMQP3%7kSV4#lnyvoH#LrZiJ+?M2IM_MG?l|({2=2;*4b}ae;b2n>|EydIUs(5n_yL4_Q~x+!;l=EHczc+W=b! zP~XbCs1?Ib1*I`O4aRm&4+rn0z?=pHpxbE1Bu}T?si+Fw5B<>f}k+yp7VN z87BYfOOL|syZ7$hIg%VNBt72CvI1hpaFX_6vSNIiRd}`97c5+!U7kI;N|_*_8hLPi zwPlR`+Hd@Z^%MH|1Mlt0jl;6aCC?c~$2V@>*fTF*oi$gxyjYgi@)v*gSEljwgO5J@ z-uJ%$WPSOiMSfA61@6E2#d}|@-fz1}>vlIQtH)2Dk4g!-WDXk}W~vGn)F@x|ajKjz z81&;0_+S}I+5u&Y88YHkuO2*ls&;L{M4oXJ?A_Zp(lq0c zFOv05(`=i{LafbLx9wHuW1bZBV^UD7Xdu39RmwyjA&mOn<*3IjFHR0u!>FcBT~v#q z?dr{TZ@EYaQ*{?cyO%BVMFotNwNuc{qsNbiQC)B9r?0LaJ-K}RVr`ws%fn3x z>zi+O+q@_jDW8t^{Wx&W%Cgui%fqyA&H-c+FpQR3MMI6JSO?cT1n+}Pcv<9WMv8no zlrM*|+gzR5ac7lTU$3ooQ?KLU?E?z&#dtKfOu%`2bo3S?Y`w0VZUE_2nogwH%a>>B zI8T$JEQ?iDWNG4!ZJR9wtTmk($ADaIq5NUD+iZ86rfIV@f4;qZa{lu6-MdAWOXg4Z z79@o0>*>FCF(W!m>aJTyd&_Ea_#8;V#&Ixupc(Zvtk+k=Fzy#A1hm=XrpjT2Zo4$k zv#f}ajJb2?Bu&}0bqW#g-Z`R}Ox25%C%{9*ofSz^R*Sa18#pEzpCXN33|s6?Dnxd4 zJQh`+w~?0>&@Ba%f+h9i(&*f64W#+YwGK(^?Kd4 zy%4;BBd!XP3|ih2e;!0}`;$E6LONKTK9lE}5`$jjd2^h7*m=q;PWV_pr z4oKC(2T!7E#6bTzA#BiL=vzhuNMnPafa+AF8K=v#qLep~6x0XI38Kw7csysgf*S*r zl!;)1!PI32ZAU~QEg?jbS1|63S*^;+8Wm#xmmr~Odnh3Gb3jX~9Tf4+sJ)AgJ1`eA z8eU&8=*^ZJMsOsHW5P~661Z4q$T^#*w>jYl$nMVzjROpb5hDa*oXp2q#$LmRR_hR> z=SiF>al{$se4qK>A(r4sVE*Kcnu4evzQKf1YJC{d=)7Zu#u#htr0~F)&mo;)0)+jZ z%=^r&qMGab(KwDs3Wnws5gZ#HXNHW;);u5G;h@H}4!pn^j*|l7Y2ei;@`aG1?%HkJ zZ#S1_Y>Pq?A}8}xk_ZyNmr-jys!6G0-E`r8)G({ZnPxP4w{3dWl#62T;4sZAglG#B zB^XJ-&=Ff(?5HJ6GD*uKpR^N6l2FdBPG6ipdouG!S(a<E!}Bk^pZ(>(^k?<3Rm1j;TYGK2>FQP^mjR`oP?FxhanE7A?Y0wD zZ;b86p@D>L0}b!S^$Kbr5pvKv0|yV%_Ryp4oDq_roE$Ay`^bkerdk$79#Cl7rs>-x z%iy^)+8OZaZ+A7N0Gm7Nx0|goI-V8^rFGx-sv8ujwR?hDSyeOCWJdSm*{g9-)YGw7 zP18^?yTdI(;}(`kF)6m4wUV;D+T&7c=b}Oul4Rg>XyYP~iAS9fuj5}T@aO~;%IW^^2_~yzo$uh2V zJqB_;-4561le*~e_)gz6vD(s`q4)C<@b&fo?o;}^UEWc_2N#al{DHUbb$4xu!5n?> z2{`tdR-BR~M8g6hp=eoUTTrZ{B(1;OOS#C!YvLo<2V3*bPm1 z^WObt=YRSqKY6v@J$$luL0ZqMeE-&sHx||Mhd=(oZg)K)?O*xI*Q>q#YPo#$?CGeQ zx8Hf=JKy`Br0y^O`Cs|)XSuT7Pd@sw*6MO|wK_f+k^R9>e|Y!JH-7og{9;z*U;X;m zHrJOZs48Iz_j+t)L2we3vd6dfibdtUY3fa&cGERKdi3h@{MtF!bbV2jwI)d_#=*S% z?%OwRoXCWwsiYKNOjg5f{bb71YntV9KP`&M*&x#N-7mg#bZ-jCEN|VpJ4G%Z?3MR! zmSfi_i*Fvi_k*8)^696K(zLQs+D;gXScHpb?m&o$8BPJk3&$%KRmH?}LS|eU-b(_6 zRj@Jp-_41^k-HKSGzgxI!4c1X|M$Q5@A`-T%Hge(x;b~wPq+zZI^q8GRr7em@|X4@)^%2{FuNOGv>4a z&3NPMw(ZyB(}!n|9-PWF=gEFmC1u4a^Dd}e2YuO$XUh86*c-KXpX25KA9v&DruM)_ zL$9xWKQNvgdA&wBp^O)c%p+<&EsM%JFPmLoZ;2lE4wgzoFilxiw{G3e^30fN9J~y{ zFBTP>V~&rHrgElqaS;4Lq?5#Y zvw?YKmzTr-^f_bHj(PC%@pZqg%EhqVrI?J$I1eWaH5ebzqR1y>`0@ThmU24|!Rj<& z2S?M%Xqgr{?#3Vd^bZE5rju35h~tQ)V5C0WOBQ=K%CemPzF^&=D5$sHW&>#{#+>)V z)Qoy^<0v2^k_?Z!hsrzu*75!u`+KmLkLvn-y}Q01`7TW|tIaMz@cYThYSYwt$`2MN zl#3$EjB%%D=b&npNmdlzduW($77L!pWp=2no+v*?=_en5e0_1X zD65_*F4)bxcb#|e=Rv*Vc1_*ufeW!ZJQ8^i6+6RlwF8%)fQCa!37>=k-O#=H?tQ4g z16YOxC$F!DN1vTJMAAhy7^g>N1LjaZEDB7NwUp76!4V*?h)~Nm3<_DtMOsw_4L%;9 z?W0GZF)sRHq@05tD)!K)rGaZZH;Uy2y*gqFU{CEujRgJ5VXEASyJ3BG!55 z@Y!UMOKsHD_Et9y6utCal9iOwr%#_cA9$3dGC^VtD2b&|aN;mg14=<>(o@EQhqA}u zxEcNWViR2bg*U&f%KWi@G>%#(Ip@`2gLB{)v0ih@vO?~&Wz%%QQ>~q`0LB`vWtw;t zrj{vdu+^4w8VGK?emY-KN*Bv=b#T~qH9`SYo}39G_f`kNqx18NzS9!gCR6Kx@Alqz zEtqH1G;!X6g2h4a)Bw3raGS;O5b%4AgT^tknqoee@Wp^kMB!9JCFgC|PYyInNm-PH za)^r_m2*}|akbfCgr-bf3g8G%lSFGb)E(!%%(A*}`cV~C4ypgqG1EYvyo$Ca$>zkv z>57f?kPZt)0`vZeLI9H6SlAjR6L7S#J{W_vB|e7P#bRI_kd(>jhGu9$1MNo83}7^j zR{6nODCG) z=KJ^GIGpIY6u3y6ER&O)Q*hfM6mX}|iA;FdwpXt%p0(}f=F$ElqkZ2{$u}3xU_6o8 ztMiwuy(&%FXorv_`*+{W52yK~P@~;$w~sH@!8u5;JH2u|nG~5%PG3yd#pRVq(&_lS zSMD9396JY{Ym&IVW%kW)e1U`YLS?j^pa>bfwr-j4k6Qiy@BHEO$1ek3C}p)K5UMfD z36O_V_MeXL@e1%G?hs&sjJd3o&YGiWtcvhMoJg@FQ~(piC%>X(x&%z({;MtcBURFP7bi_ zy#}meG_emT#%%%v7-0RKlU8Pjj$r19KZ9{VOfy6?oIH$ z*1a~%!$ad8zzIPIJ6Nmp9GVT2B-5PwV3jx5s`Jh$?)vLyv$;-X@#ejE@-&+~CB~V$ z-hoTW?CjuUKZ;f{L@`gZ0iBi)ek*q(wYDpzw>4o38hsgn?|o; zxb!kjcuKorXK2W>{Lb-8jpOF}<>|A}rk^sAF821M;PAQ)y-4NF+qVb|7P@Vres|jK zw%g{}%d;e3bYLUc4x{Z%d~7$(gSx|?J;JcNhg4vJLgDG%qmy^udwa25xEi=bqCiJJ z;p#5W0tw5M38YQCq1toIzjXgy6nwqgsbMIJYT8k6Omc`Mn-Yzja@))6zTVxqvA5t^ zA~S>RKv`?9%(jt5HeoF`*gJP`O|$W8A-K#bzaeBgd5K=0y*SvPSn<8Hi!+A9H1^Ix zi_f1w`}o0wSEuclzH;Z6-g$F^_?6Wlw}OIeGG)eo_3K|5AW%kUNm>;J3Ur#h7=vDn zt{aSVSzb(Xvm{IVzSmk$lbK|~2hg!8rK6Jt4`cD}TW{rgxvcgsubQV%uC|vi<6OcV z!mZUw4nTGA816FRQ)rM%v^H9g!6S&54s0->psR#H6tut$1vT^_M3u51M=*HC3Sfs_ z2KAp1^$ihs%=riv_B{!<0`K;qht_nfUa}N9ESY2+zj5!L^$ODX2palrK*Cv^$O3t6 zOu!tzR?5H*g5%IeB8Sd^C7(}^@Nz;l>!_nw+q;OL%_tsa7|@wWDg{qwj1e*=De)A~ zaAV9DvygrguQ?l1YbXU#RzYWX)Tw2xMwFMy2}@L(X6Okg$uPqfr5jVK}1! z5=4SxbS|g$sl=S-6q7uYtdLS-YZ9dfo-(cV&?`wm%3!I)2~9}GGHy-GX{RuoL|Nx> z#1>_iD&VpctL@V#PoQ7N`vT6vz<*N`IFXCAs>*V?T(rCO^~HstG-D)LEePjdzx8$H z!bhJzj5mRg^&bX+nfOg}A)KA3NfB8WM+i?+USn)e{@M+REuS^+iI;L z)T8ZTKygn<#b&trajQW0F0S=(=;px1(0!zrz-;4IDav2XgmSMdeml5;7s0L4H$zj4|O zkw>LPnhMJL5r#iT5uunRxo2=7D>&DILa0-x<|frQ?%$@IzM7iYKvL^$=qZE@0@4$o zHUjx6qnT$U!l(zSF@z}moCceRFpLl$mZj->dxbev^l9ZEJa}}MEI5S(T?%Sc4x*k& zg3Qdti~~9E=OHG-D|+Z`K3K)BND@AXUS6 zfBc=R?sA&*HscPsW_+?4)`n?bki$ER`}DT=?(H|3vdimhi|}gy2&#rQmsOD!`Qlr@@CA}&b=^Df z6OjRtFzTV}Cjg0HJlL_B{t4>%_Q{Pm-spz01p05{6b|8ZHFoExr@G&cb>$gq+a^nr z(9}~?PqjMqz5VOI_1FIP-}r6nr9s?zi1Id({;+ZJk4sO~v%=^OSBRH)ey-x5fqgL6 z$3mRBr8Rb_0a5`4H}IQi44iialqJb#xBVCXAAkKH{YU=6uYB!Y`0_Q3qK`j$2vHVH zl0X(&QRP)|;nl?zq10L5#@dc(RFtVqi@bXJ^pP5dX}C#6mGUf%%JksuG}_A~Yua72 z>t3E+fB5ky+jXsVtl)vBIXW8rY65AuwZ}rF%SM64m*th<5S4BtbrMkt79y24A8O*) zPeVYFGnt8gkU&EcH6goA_c#B>@BZw^>EHiXe&siQpsu~s7-$5mIu!m4DE zjsu9jF0VJ|XP**^tEv)$8>{jHz;Y`1TT_yNA!~pK*GVeUTrx?B#zr|raak27Hw(^X z+jUQ#Jb!um${yTIq>NkddRNzN({^1~ltn*+Ix14h_QuJL#d0-a)wk~0DHmosf{)r% zi#$o;SOFn@Vca$AZsLt~i&s-VW-|`1ACy8d1%v9qs17!0y&heC);@1PO#u4>Lh13@4-OAk6YMwz zH7BWf{_rwM2Z}&s}^2M`G*#H3%kY++SgH&&X!1%@4sK$W9)z$Us z`PnzV`NhAmH(8PHR@Gvn=Ap_S903>-?fP!7Dtw-zVE6Y9Bo|%VFN#Da&=(g=HHsYa ztI=+=h7t!#_l}R>IXT|d?bQXe0IhEBE%OXl=*|6Gb<>WQ^>AK4{po`TA3f`Pj5J0P z<$0DD1xBRlhEXd>U1hQ;Kz61mAIDL*3UU_$?X=!?SN%9hN{W>0;C9<)0b0fYjdn=s zI98=O+Dmd2P?S5SeLD=JLIxZeQx0mDrq7tiHu?#CtcvD zXER6J4Y8<0v>9FU@ZY>m;3LS3~4T_Dx4q_hs(?RAZ@1+jZ~?kPOi!4zeK7r8d*almaRRJh_D2pms0OzhRFL8iSOlM=@5yh!Y ze&L(n+H~E6$B(UJY8=6=Dp=QcF_0c~#RRc5%Q=TgZDSPUL@U=5g#&enYe#lFJ1wEz z?kW=`fx`@Ps98)J@Z~|05|N8rcW(et78N_weKj?N<>me&D;y$`(08#y&@hmb)4Y^2 zq2tK>j8uehadmlkaG0b*8H2mtS*%95msk6Hg46T!vzReOtc8Jo!b+fxT}T)-7fZZi zZP#N#t+s6sz(K+#mlFDrx(*|nCOP1QWJJUh#wi9&5Srjer3@&4EkNYnMGQnMkBlqI zk_57AM@Ecf!dm#xF~n3W*X9-UL1<_5JRADfLseBiZA02xxZ%fUv6xf`ivZPnBf$tz zYf58AM~f)cQNGI)5d!L!vNI%`>$U@*qG60AcW%9r$zoK5 z5f(kO*7~US#(17rAl?(?+wrH~lX!VZdqzH97%md6gHh=>2lkQ}HRUjjMu<&vu@64^ zG-cw(?R)FGDOUT_hVkPce|B{1#;^UEzd(~8Jb&`+XFvT}mhiGls|vR78^;Hm^(CRK zSN3;*`)|tC>L2_E|Gf8M{p#uF^f_bn6?V3uYKby25;D47zv=3_f!muRZa5;i*ZR)eZvseb2f^U@dwlb*aW>0K z5Nlgo6$Kb*%hDm*9>62RXhLzx8P7#wy>iZU&@wkz1Dn!fb+q0<9D-Hj>B}boP^o@d zR%xCNyA97%({;d8Sle8;x+OpO(I5Q_|LSi&`RpRF1u$A3+F^jO0*ME8ukAQ!4*z7J z0D%jhfzJczXLc#3G-B^!?Inn`48{>cHe-n1H#~F4n0Z2!p+EZI`paK__N{M!(_`BA zYozTMbE}(XfaG?An{7X~LvP*X_0{yxYPnw)#gvmb^gWzFLTKvd-FMz&9KU$>+zefo zh?tx|Y_?4x{QPpGHQChNtMj$iezR)=f+n#M76qgY+ID_W1L9}|*Cb2Q6k<)|luIt9J&v{1kEKLPSB+J}*Q@3pi(thT=>zjUBx*f>)34_^{ zBx$0RUKZsS-+k}$Y)e7UBpKm|a0!AnvTHl*L5#)|Df4vfp-kdx3mQs2j)>s8@0+$u zQi(W?0&`rX#n*0pjWgcW1G4Zw^?lzpJ7;Zhz{po+e(TO{A^26hQ$v%a=_=>y`bFP% zH&)r5lP|8D@uwerdUkH|av@~~{(hwNNA=GI_7V6AR^tQiRi9tDS_?PS_vUtaMzbtGEEmkzIgd+ zY`eR+?@~k)Po@p#-r~j?-{v+w$oHq3E~C{e^`h&0HMnUq@S9PL$P8|5YWV2zX$DU9qyNm1@INV=% zW?>AAJPZnKmWpOc$~o3nWhwGraxjo%$UHaBq|zgciM=qjb0$fdK^Deir~T;DJcUCR z>~X#-GDdk**SisvtvwgXZrune^P;MoCRq3K#cAL7 zL)%J$t0L>WwkYy@_wG%%?QSgujPiBYa4L<3mPoKC z;MZx2P18Yhw@f@D&tEo1HB%*UmgoK0IIE!#?BM3aAWfVYbJ#1~!N!CwF;3gPYL8Me zDj2ZxBwH;Z=MDv1Eal$bvM3hMC->Q_=NKxisgDHlw%+l9Hhs6<)r(SRNe-2Q7dlN7 zV2*WY+O{l{))k>iIHwq+r)`xC1AbE0LP{9bB1+&Ij2!7e^wta7`W7OvYT2cBz zu~>|#o??R z3KkIaZ9Sn^t5n38q$H;tOlDMakrqweQKmW131+)pixC!-muXt0Jk8k8DMA^$6NF5i z3*%_k^+0IyrT4$tHl26U8SE|0fLWf_v1E|Ur_g|GOtpo$h?rL!D;7vV@aq9#xMJWo z{N^~#%>SOBd=jtN*k{CE=>z`wvxobu>aF+QU-xa-^xyjSFQ!sHdGTyY3;zp$?$>|x zgCD(o_-NGn&wTCMZ@hK$8H;1nI6Z@b$w% zKic1ns`A2lh;t~)1rCvzftpV^0B@&my5_kkMVbT7AJ<=)@y6yV!e$}pwiL`!R&Otu z*9%!1j5S6yV_nxB9_%HF4A$3m{Su7m8ZDu5=jQQSpML!K|N77U^-mw~6oP6PBB*oG zVuR!42$^wo&haJz#UT^_ze!qSOems2twqeDujYCSb*qy9=qEom#@@c=uCI4p2LVv$uPz9t zU;NTnF0Ps%|MW9T*w8oUr%x8E3G}-6>S8@bTTda_KJY+f)9Y@~eP^?xMAq!O8Ux5E z4HpJ_6BSDnP<&!bxZ%W8Vi<$qK7wf6*j}G-oCWxVb3P-MK41#qiXXKetV>hrIr3aS zT955-efLK{`RJ|NhpR&F@0DpP^P*TCu0)a{8#uQH^Z*Y zP|{6MK)cC`|*q-M7;$9nDyl z|JB6>3T(pmun$vC`%8ayeSS>>n*OfE>JVz`(}U}aeseiqoS*s-vLtQW;d+w&u7|c8 zo#m75{rJYoZtS|#3kzbX0zpk2{`Aw2pHKA$*Vj_YUPDew*MlyMCFyFll#-2IQ`gO+ zECk%xI+r{x3ydj$OT3PK^7Y#3q;B|OVU4sceaP=X?5q;vqGq%0*F4i3BoBq^5rd&s&e zBnaq;wjY)C0YgAUmTEP$!vOCI=!xaGi3euP)zx`>nt5_x}A;_RvQk{zTc1CUV!gT3v0L zb`ho{{aHUW1cy9Lrjvgn)2l16>0m1Mi-HpBghSaB##beopu{f94BxrsZ5VneH_7q> zQ!FtV~Nt8pCLwiyQMo#(rC`k5*+n^h#Z8*K*<0 z6l(V2+bIeh5XVF^!o4a?&bFUgAbnM`O-Ij>^tw> z90?KTfBs)y@4#YZG@0|teN2`h^JEkM7ylRtbw1CP2vJP~dIu_Yb@Srzb`{3aR6m^TE)%)+=J6xochW(Rr|G2t&@0*KC8r8xPGuZtx zcdUJR`kV?{?p2O8Bid}$#l;z9&fK|s^Y)#ax9;D9W4BhhN7LgJFk0`nGT{ILVDi@9 z9ZGqu{8Gx;M6fJ{nC`is&^n~8PM|@!!^jm`L6IN&VSodl$WrKR3V_Rd+kof<_L~3) zEpO4d+r_NUfQ?CI%8O!==Y&L{kRp;5N5?DM4@Ox^I3ski*dvq;yI!U#m)Ys#i@)_- z-+TCU2kZ|^nOuy41m=jPIK=2S_UW+WU*|ggUG3@!E^IOUA_hS6b+0Hasq;V? za3s4N{C5lQ3JR$6WG^pYUhn?qZ~fujyGLL7>KmKdf&CD>!6uKgJm+h{bVizGcWHeCYX*{hMPtZ8D!FvgA5$1eIOc^ZNu!>?V=D8yZl`-MPjd%c!6>B|#@>0X9U5HNJKX=qH-3Q= zw!S>OcjM;y_4Sh%ryc67anGJSVOhd?(y4Lk_JmwL&SzbXV7X-x3>$@glIU zAKI&i5mF^t&XZj?A{Em!weRZo;_S>?mu8t1;o{=?`T5H!hoFOMF{s8NR4(>b6kZr^ zhQ5RN7)MrIH{*+|ZSQEYIHt^3K`^$-8==y0=z1(eFUX=T*y_-ijA=IzwIb;1WTy3s{w^L~olaSqmEHP0#OCS&i zT(%&JV062!wHouH=!TIqnv^+qxF4WqD&l;gr!4XUx=)jwNx5rwbzM&tj$C4G`e6MW zY)yTF68MBd$h<;H>LZ42bnHNf0!6aYRx=XOQ0HL(e7wly6)Pm>qSxRP2@;f=9ui7ZN0rd zJUqU6eDw0=%f27eEX~vOt+(Dx;7JL2@ujA%&#qnt>9IKKns&3~j0^#W@@eDTrMNJhZctAr6E%Doi7r5TlzY ziw-Xnr&%Ari_29FCP~w!3lY%4(4< z7Z#cxEV9}=#DXQxf}SvdRii43lE`2i;*r+@(!W4vlpGwEc2w(&^8j;CLRm&xKtw_D z6pIh!pao;Qi{01^d6s8sl@&=+R7j+zRsX`j^f&&czxjKeBSa*g<`&aFlFklBsW?lb z*k$1<46XBp;Bue8FEjc5IwBOoMP@l=Tz)O_aiFw-EzlX&^8}t^*(uE(#hm=`r!T(u zCqMksm)~HNW_hZd9=je<3cx+0DNmjE%LA7use^3?P}9NKJNNHRFxY3GJ}3`XUs^5@ z#$}OZdqv+54&?FZ=KVWwW`*()n!~sVgkD{5CZd^9mI@(7sz!TydT9pFId>??gjuWV zrWuBG7~L?qwjGpGgcD9V1dv1s!#WRoFrxr>2O9uQ66pd0h(riLa~alNn}LSjr)k-` zB4}a>^wc*hals(hc%C?Gb`~T7Rhjk3Dg(iL<>8?)rtABiaoxj5WmWEW{mYjVcCeW| z(%bC@W1OT=@i*xXiz*+6Mo5vbD#V0!wrks6(-`ZT#bN{;WK46pfG~5{4Xy4iu`G;Z z24X38wY%18B!rAzzk79Rt(KCn%1WBBU0-%}pJzFBZrnl=p~onV&zEyhe;$Ir+}78W zSS~aMT`<8uVT5I{6*v*Y;O$O$${|2;OuXHVqrgmH=esshX76x00m(|)M^$11+1BmZ z)z!4>XN%lI8giDvLJwn13NcCPvMiUYg^cTW-vb+Hf@lYRdT}{n_h1f<@NqzRGqkGj z$}DY-Mi7IHjB=-&D*^?5EKOb=9vsj(!9Z~?CB32+rJbYK^#BfoPItBDjClq4mQwyo zt-%fEL(}XqrK`n~2NuFJ32H+`xFWc(*X!^8k?{U7&sPTrOt8E6ZXVygb$YcvyS{>G9_L~{ zjPZcYfej1NrDNR;!$gV{CL(7>&|>Wf@{6jN>LOv1acZ}2men3*(Ei$PJIbu{P)T|7 z<{`qg>6-JaOJ&EHhRBstP(GQan_bPPi%IXnKO0SuR6!>)Xr{@G)&qA0!RFROC_w-R zq>BimXWm1_Bjt!9EHH{B`0GN&xY9?#fE@>oa2FBE847sa$QXaWgIeM=ookM@R`3{m zui^2Dy%ZES1Qt8=BnRdhqF5ZfOnH`4%4TfRdpw)9y)!U0Y8#245D(!5{>34{iX{lm zp}7IaF*q(XbB>XZy@HYchEGQVrqR+4_7Ol{8Gh}^5so`>>0(M}i+ccwH1_Bd#0<2G z4>F1BAsiUXup{FzJ<~%=bze9Fb>VjCH9(}j+16^e+fJRUls3VOy@QqD0{kbs$JiBR zdVaAc9NmBO?$Eol^KF_zJgv4(DzlhgVxfyFpe)ItDRJl^8>DGI{p90`D+p5Z_a_Nx7Zo7-Kt*5+QqDV2dRQ$a zt(I9m1$BIYdlkXttfFVk#@u`B>utTO>)BdF2!nS@Vt`It6`W6Hma{aG zoCGusLt87#@M5u~j442h>$qzDC&<(`mBlpd96sPad)9NVV7t?q!riM^RqP ziT1G;XV%b!*O|t%e{as34HP;=UI$hFspUBSFD7fe)@=i+DR`nye{l2o&;5mOPs*sy zZg1bem8OO5ZBU2?{rKsR`p{16Z?#uA>}3kQA=m3G%Ph?jhe?(dS-BuM%M*&0sj=PR zetF|4t%|ke`J`eX_^39ZdYHPzZqL}2W5TYUEiKlxj~`^P|aCrP7-lu0*2 zF`NltrGYAQi(;%qq`cARSMVraf7dU^d-&5)^P0vd8f=j+}nRHK{CG zuTsKWt$y^APp8w^jawDND5y}dswfwNBtsPQ4K<{i596@E+-JG)E*#xFK$Ivq>>Vw8 z+p5vuxpTWLD?Mr`QE>Y7?CiSU_G7~ni5WAhP11DAH$2`uLb0cJkuRLX88>6AV7!!E zB%hwXDU}vbaHyj54u34jE@aOilnz*=~227wZsE3bsTnI3OPx1i}G&!MMbj z1B?Xg6@T#T@^G2`(zkylP35kw+jc9NWelsfMtI7Mymz?2^2n;KYnq+uNt#cGlbaZk zy53r6l4^A?TlElyY!IusVCAw-yhQ|}eS^Zq z0oWw3E-yRP3xQu;JhfJr`NAr_+ioP|Z@>Lc^cP`x}d4G^?Gz}-86%?m<5A$#C&j4K+{Oa1if|Rewt;wP2G18(@ilL0IYG)Rta;98SA0zE)Fh1TZRLI$~6>eDU6!S z`sKC@R>c_w0H(d=^f>NAWt7F9vc7L0KR!(od9b=M-F1B0(9YM@VsZQE7Iu8I*%fIe zNp3Q;+t$w>pLgxpw#HG6vs8ko6`V%a=;gr?;~3yPPHgal?=>V#H)hwIpPBM{nU$5N zBv3Y5n`V%T&P5Wl@J!Rx1mi4$itQ`|z3v#bWXDbP|!CYUs#zLU095%}i-G>;^(fh;U?@q;m~7 zCG>Mn2(C!~#tcd>*xcn9<~(MHokQJ#v1c?UUd~j^oPtgQ;UrSz3|MY$ZQRensTw0+ z=g&WrQ6bK4e@cAgsAhV7iiO6VNS6Q(X+wCe-jqBZ7MvnLLkCDRXB=UOu%QUaTp$1) z@c=^NAy)asl7^Tf6vfaEQzlc+IE^T*rijHvF>LKTbDIy|Uc?PMm zTDje((RS#^CQ0RuJBQAaDXRe5`9kv9r_VtEy;x9AC){zg+98w_%M!i~rj*v+Gnr9m zrkt|iEC)gHBF}RQWk)cUpPrsg!3fbB41*Cuco;|SC_H~v*0$}0|D;JexWQPnS1q;E zXVsfE=&MTtjZ$K3dpdub{yJq82r3L1*^Iq@BwWQK;Sgba~6H# zl2SmXgC!I@K&HkbDFCeT4&3M#isBMcc+A(=&7f64;N!{jr7@6{6hqgmJk6yLUDE-d z?(D46`{=VzjW#2o;G|rXb2_Eb>Z*g~|N zI?szV%O8FEDW=oLcWbd1UOJj1Tdv(bjkM@4TVfay3-kc+_N>%g1X#?e)}<@#<`Id3t{Nj3wyJci;QgH-5=eItH1R zxhO=HE|GzNm&3zbSz3&}qomlY7@?yOgwmAQ!Uvqm%Gv=rD=^gk5f3yFfyP2a(?X_M z-F5KwyKw&UMJlDy7CNrV3Ome`#9E}<4ikHM`uyR8hf`3?7r*kQG~vV8@kBsTA*XQC zNgzD0ZO2?DkwbEMxo{4RN_E@oB!y!yxEzK~n*sSCo#0w@n;v^w(xqvQC*k(}dra^_ z>sPN%*V|@^htIB_J-S%;feMy*PkQ4W<&g}w6y{=>-RA`Jd8?TD?bo{b+4~&+bfU+f z|A1Ixz&Bx6ATeQQ23F>p2^7;b01QwV5_GNa$_!1dkW{UkuFzEf`gAl@t7caYENYi9{bpnRw-YF^Y1%Y%Ce&9o!@_#Tu{449^)9F(VV)GcT(xe3IB9m$E5C)UB($HYZmIjDZ! z)Q!>sKqQ6*R3}Q4%RA2YUr1 z{;HwgkP!H&&%w9Oq!5S=jEOJbKYai0-lNA4M`w;sZZILP3i0X`-ZD>pwOoNG?~&FC z^-11quZ2JF)z(0Wl`$&92nI$J4H+?lx&-(sH1^}gy1ChdUOzaL7pXP&#rb+16r$O| zYA+|~?8&3YqnTQ-igKBFw>v$XK5+fmTyG}#!?Idsw{G;>cW^@x$&0;(u!+gDj4`B5 zKLssW519o4p`xsu0v5Q1AyiLwUaU~#s9?TUaP)Jg-Q2$N> z_7GPonGg&iYC+;@gNt@KL?H{t>bU*UR6>BjU_oCPza<-Hbr0YdPCG+2iQgam@EA50 zCJBqpj}Ez*D>CP9S^~#@_`*Ppt<9_$CkVcJ-aB(1$eAm?8c+OaC>BO8d3=Fau#}E^OY}-zE>lHw#0W&U9uo0zBB)o{U$kJtz zLKQ{E0IWA!CQ03I`d+1smsu`FW=F^e>J;3@CiIArL=fJQ<)R7>Lfky^ZQI({9e6ZL z770u0w)K{-mWKx1ew(iECs?2IpiDipFPBdu2^Pt#za=I-ZqpmeGWD!lo|dvCn;&QE^wBco8) zTrtY-fAL*Mv+sQRP^N6q7`n70RXuC+=1f@2oVK@<<1d9C`C5h5}K?2JYXCrOHk9qS81 zY<04?J)H*Fv*Y6%T{qNyFWXwkWI-YDchg)Vt*V2AUpPJ*wJDbiB83G2PdJRmz9Wo* zV$YdLhM$yWdvP)JBa*Q~P$d1R7#G_4wufw*!FUOI+Esmew%#?%<=#|Jr;LK)Wj(5{ zfm#=eciZ;5ZXZ5=A(M1890#5W*(=KsoZ4v2G+X(#iCkJ z2C}(nmj@4{(g_!fqRP?*#SB@%U95$@AXpu&%~H7#lCo@XdT5#KAbJoLBFUxcl<|l( zAmu@eeGZL2U2hc`hEY()t#9f!#Y$TkX41Dz=jU3JH5IFqlD5tl?LhKsq^vh7Qi8t+_`nnIY^!=(@bkU z`REDe(C4KL>a@aa7|rOy^@~?R@S_P4VJroMB)h)47`0tt9%iwXHe)w}VN*&f>B&(= zuGc(;xPhr=t-gkbyKPmij4~c_Ih7gu9tJp(2nj*lMUZ(`oa`TS&HyRWu%AzVOK+_! z7xi`vIUCMCdwj|WK86~erA(zlc4|h=i*hf`uD83*i*pKNqPu){+H1qOoL*_nC1_^| z>W4u}nkEb5t+&pEAQuIJ`6v+0uw=)XjbjdZLGh^RqB{l>^`Sq82Mh?Dvr&5;HQk6Zu;W0?O5ns%=P3aQkQ)Fa z3B$}q+9aZ<@IMk0isAc0&_2!JZ(vAR1~yvTn1mFkTR72Z2jLR} zB-Sjtj!eu;M~Q&UK}KQ$tG5Q^n1BpPKpF{1Gb5WHqhR6(h%ziF<-KZMpv7KE(-i(H zt6Mb^<5>WecGM&gD5?%<&aJo3sMsL{?hWg=&5qJ>y=|X9KX;zoz5fm-$&)8f>sQ` z;KgC}x*Y{5pi-I1R17LQWSZ8wG0os+lPQIPX~myDe!AUktE#+x;}Ch$Ll9nRoV_|d zw_PU$zj?6NCSuYt4SnMbLW3?Zd~h;d5XZou1c62L}K;!xQ&&I#3FZ5BJ#K{?u4@o012& zZ!fHOuP)AdJLuq*8I>N5PY_Ok295j!nWvM8I)+G-#*qe7L}HS3Jo(0jVeWaIX*I8- z{yP3y7egcFqavk24b9_EKgkzvd9$PjPo-+T9`4?}cXI1C;q1EEEc4|-bzro?$O)ce z;z3jkq3CpMnxSnOg{*wW39_JJM9P^+-6257;pAtA2)cxj2#7Ep)sCe!*m2ah-EF$M zSsff>CaS$Gcn2jP*lXQz&hEbZruRr9+Np6V6TVy`rz<9!ZQXVqW7PCr%6TeNq--}_ z3BpN2y3N*_O;(gLO@sBh5S|ema9S?nYUYE)i<1?>!Vo4GP-=&eSuXbLwplIYt&=xC z{p7*rd4qxkSDJxWI-%5BB$zP4cpnFM0s}*|YR-xyI!6sh2*F}B`|SN(Tl$*P#=%lQ zzkwlG6n$1Mq84$+oG%|!jg57%*;)={)gS-i$A8aX*&N*1e|h=@LA{orS~1Ifu{>B9 zm54-wIu(cg!$q%-0OKw8=P+IpoK^!=<7Zqhgk?(P&_Ra~-fh-uq~3)dQwQ34=3L;s zxOq}7%EPv6n_6+fZ6t#b3b$|F3E1~tYpm`!FUzu^kS9mWGRf0Qfzk%ILoyu>vO+A% zq|f~R;&2>>I5E@9E8#sIjMsx1J#_-h)w0!wVjd73NB6fO01Gbm7t>3CKWeEeh4)$;3kiWRp}FJsN9@EZ0rDKD*lK zacp{-7d%Y{@737vUOb+#GK%S0;E-p}?2APdg3S+;la>{}pTeQEIrI4(XC8g1R zJB;hDYg?Tp+3nl+x~}scVu#DT@Nv+gNUC<+Ue*MWs4WX-1iMw+w1^TP+~cQHJmmhp z`?=l?_2qWdjwX3hRtdpPy-P~8#}1{GD18q@S(C?{?JI||BBu(A+BOq{)^u{HQv?_t4aREnA z2v-7kRi3A6G}h}m8X`#&mL!}~9|5vud8Cbk-gAJ~Ql~<-ccgn`9Id-xMvy@eRxwVd zTqH_W2xvM5IgDkN@-$J-M(~yHnm!_5if|7WhhTBy6Oy8+uqulM@Q;9_WRuIUXC>IA1#!O^11E?+)`9ELO< zJWF|bV}EgdcGmPz{?Rsd0r1PhSbutTk!Fi5E4x_VXOvA6VT^(S4CV_H(;p>+cpWr9 z+EKO0P)uSY9DW)QjYKw{?KlVyk@1Q;OQjtq(bXN1m4LjCfG4=588F<&+6WO4;%Tt4 zn<8%LF_zhbI1g}73b-L~;&93^4t9E2NaFhijW;^L?}ud=#Ik}i3=9%W5=tp#WyV2) zU^w8VQXr5-V;s{KgEp==7!=Y>z}hr_lZeo&LKw!k$ZdzYc~xm|;2M$lVy;7tEI39m z=Gx#ngxF@0cY}sW*p#TW-hx>KQbeIjduUsuG@wx+q;*I4^1am|rMRuzYki4*7}Ssm z24NB|4E;bbGCFGWjHTB!k;%c{q1`HN0cCvg@^sq_hbK4ce%N)_+rDuj6!{`alK`F9 zh*D6~LO4T`#7Npq>ock^IKH8*s*VcWnK#UkOBJw;D360+E zWe6MqF+v={i(I76x?;5_lVlvngT(@zaDgN;p;t5|ku;Z~E4(mRLZ~BvAi|v*1nN?nX6m zfEI;wj)IO?&dH`YreqsCF%@SRTxjrs$U?ZzbmKM=tjH6L;ozI5tXFC@kPok7)mxPm zhl?dffFhew=S4oM&U#CryvN3^mKZn-a(M5pOAyFj@-o5H7gZME4i8XMj|DIII4XcQ z5j=FvR@CHb=j97ptw zMUDf`o*F2cy}e4L3U2G5-hcDWJSj5Rbx2hed&?5cq1}!Kn?S1_Kv3QQoSfzfV?icJ zYp9&Vp4wr^i-g41BSI)-wKzjin6l_zJbQ)-dFzcgmu0otZXn;T%o8Nqq03pmx7arZ zjFV-tSY%6QHFglHBDjm>P1am@N#d{1>-FWu6tf2$v!jds{arT&V%CByM$LA8I>ypP z2}lkL!C;qy-bG50Wgwn+$#i0a<`rYgY!8LeY%cl!L6Ji)G!LwlB?h5ie*R+f?8#}Z zR1g`4dl3eAA_0fA#u(%coLr%D(FX8lb6B@y4*{p~C7)f-XkKumOXqV#PE^9rYO5Hy z^;#4gV!X&)hWk498V-<52fWI&4?cYI!S_D?H~%Al3FnRSeRg#rq#qX&e>{jdGqdJ+x8xfz_SpYtE*LcQVAY~@YH;#uza#<@@x3oc|)<~R2D^P*ss#$al*TvVWWGw_5>ia<50wezu6NH3PlEJ^Erz>Csg zrbn$AGhXlD`~VCfoMAK?{eY1QJ~X{Di1KPRD6I@^k5#pBWNhkPmZB=pT!=uNhp(8# z4h_tG-#Z;^+&BsXMoKX+BUzSY>3#?ScB@XgC>p+8Z}yi5R=FnPPXYQl+2P3@!NrSL zr=5XBgx(E82c9M}Nq~|rFcAHe7%(}SD2$-wE%}*1=NX(vv zUp4_IEvqep?KY;i#Ya97>8y%pl+UlaA2%5Fff8*+=UK>EN;u<_F$YNAC z#5l$T&{*v)(@exZYZ5I?m=L&g94H&h<)SRBw&|TUsxw8gc<25tW7WqGF2=5jDe;a7 zoMf5qhpT!s`u=dWCm0JB2muUDjIs8W2(aNJCpsXgM8fkjDXLYLmvys!_~2Pt6wVPn zw5u{JCzfe-oFvIGU8C~IF0xAHnhTJQ#2tp*x}6?6cYO`PYtC34>wn5D=P>tUpxt4^ zBhiP&JEffVP_>~v#T=reqWBo_<MbU3z2Y< zFcANO*_^-)%&ZSrn{Aq;+nCX6l_bmZ@x|r!?%D>!c%q!Ab7a%(@22E+uebBDnic(N zXZO5L{arh!ktoslJW0ws_%E_ zLU0?{X0tLlD1aP_}#9t*5~O`3fLGn!;UdJ1;4%Z)>~z=n52`=+C{bKhH(^K*SAxA zB1OPDU7lZj@Pi*oE^+Wvs%=ux=clJ$+qN4B!hmX|X}bfWWw+g0=N5ZQObCe8DQTPC zxb0V~1IYZ{?)Huj(dgFK^^G^)(GEZQ%B69r9Eeo2R+fy&75}QtwgIY%uj% zCI{GL;E6Bu0-JJg{H3qF&4mCYOR~I#Bk6Lv z#02f?nlcKe4Quw61=`qQbdnelXg~ZWyTWSxk3!*2YwD zwZDHb5kQ>L$*~DK0wM>)Jf}`1^{&18^g*5^u$oFKFcu`VS9Y~1(>n){!>yrIs|*lA z6Gr2eI!JPD$8K9&Vf=Fah9QKh4IqqT%{V_lYK zE6=j;|#n|gf`kF7REIm}Zb7m;gjCi63HEOUoLoQ6ptHTvx zQfo^fRXdeg>Vt20Yt8^#Fy0az8&3~=bpZJs&qYJz>CEmFjydb zatC=eA~_=68+Eu?{Kl{T+5{~9@Bf+q>Q7@q=AkP6#=#7xYQ*UEs>ZWucokoHy^ zLoL=CQXFD0w`{>8+G?=;U>Foa0NZWbQH1kySyq)cUO`^$05#{%^hO~J&rzCW5MMa7 zk6)bSf~9GRyGWPA%Fw|O0t&?V$EJf9_Xq(QM zZc)l*l?7lRfZevnAV>tv90Zt;bFFrWS6pgm)hi^!0;~cbQtcd$YH19QeEjC4KW`WY z=U`t`6lf0g+8@K_svH-+)EMv1F;x+g5PzuJo zm^%5Vt^EY5fMB2|1~!+00-6~IRtn}j5g^|_%w1wWC=|Nw^zXp3sBkA*bT()uj|H&r^>a z7&0Mso9-PfkJw}(tH$2z(X4k@g2@oj&~-!COD=|f>|*8<#CU-#1sdJ~ekK^C2p%RL z#u#LKStDXJZ-93S#JiftBvFf+cJw{~G)Pd9aHrbGpMC(Wk#2M9EW=Rmss<-Swa6$* zymhZG&k~t1G^_2AGnP^AaY)LNF%sV!69^fV`}DzMO2LrsJ?T0lcY_^=VY8cTd3jpU z*u1TRgTj0b1wcwU!J&4r*DlG@greZLSytS-adWX)LCw`@D8fDD3bBL59_6Iz8jTgD zD}q_m4%!S^Dq&gPToVE?B+PLzMH@go7&Fjw2udogU2g}*==>B2A@=t74aBZxWl;oY zaw@WH=`9e?h|q|Gfw(yk3g$*-WFZLgQ#Xf=s^LJeYbiph(xCEZoXv&4F~>h}P)som zdm>NLyeM8{Gu9#vGV8I2j4+bqnUEp^;Uvp47pHargR}=11h|fVPID+1d)cr4`ZtUv zyWK8NQ^KJVUi)$X_;892Y5E;uNs<;0m`e+Ck=bDbv1ITXMK~+MM)C2U3zccqfcyC$ z=Sh^^(8zquBTJOo!r5_D26P5(+xOivlWR^}>A|!Hv9)Sf6k*n)1AU(Tg zz1c?pI+HL$ndx>!gc(Paf#`v4y-Org4)KJIWhyb?C-6zG#QnKHC?$;b=&PW1h>BjNr&xbn}{6pR88O_6(N23@r&>O z@WaV#zrD6ay0>nOQ}K9YKsq0>N6UjJ-m?fVy6AcOJbok005X1U*mhy|Ld7e-Ij~a` z0=sFH;~+*@w2KBCrHXdWww$G~8gZHtAQPAhCNKF%4^RIO|Lngo*7Yy{(idTr+^Jk7 zV=(R2x@mUGjL4dH7$&tDV=1KV^h({wFVd8ABI0ox>ilI2y=aoR z!@vZj=|X>I-8REmt=xO%zS0n4uv(JMw&tvoLhLPhQ5LI1-*pYd_}fem&KXl=oEOR1 z4x75!x*ZUI#w3C*s_M~;%Qx?=ZXIx~$9TYkCfKPnBQ4UaDaG-6>rto{BuSELwG3Re z)Z9I|d$4!VZfiV-VK+`2jFh}@hQ)sM{+&D5oBGM~XBTJZjFMmc_AfYNKmO=L%6VBX zDE4hzZ?}!rVH_L@)Y^bz6`O?&i!MMTII%SC1E0e0DBotqLK)ljW0qp7*7oX>5LOly z7A%m^k2=7qj%H<%mP@5{nj}dovJ7@EAKbcL8>3R0g7&iBKu45u`>Vyf@4P(?^v3zU z1ykmB*Y{VKk71+N%c3Zc-Z+$u2dfEzg5T+)Sk_HzL1Ch-kL8{mSkBvb?j~H0z49SI zCSo{psGnl?AWmOM*xR71aA$N^m2`?99|u^ejdgFmc{FO5aLDZJ+aA2>V_lEpGjAQXC33MxJ+iyjDP4K!*ZpiSYwVAxeW zVQjg#=Zs%(>QTAa+yS$Q5CW1S0){V@F^92+jzXma$jFrgF#2Y>S{)Vn8;4VD`vi+t zvRvj9PIK7rCvGg8X18lQVY&<_tGoBPOkcfvjyNxti<`G^+&Vd+5ERvp1F+pF1qd7w zA$T$?1n}q2a6$mlnS&(f2HiN@A%v7i(Iyg0Wn$p>pSJwZ{$@l17$_NMl5?*e!5~{4 zjbV&(I7%@RlQ=lz385)e*B}aJn4o@h*v8K9;lDi$e1AQz7sH6EMgsOD!<{gAE8V&K0ZNw^0opDhj@$znfV=?=@r3cSS z(10<_tJZ)(0@UkCf))1O&fh*`bgr;6kX#gHLDuT1wj|)#34ogGS$PfyI%C~rNL5C` zYepdpWw+g64j|K@TOqPZBgP@H336?;ZacLLfepGpI6COMvF$8j{P^T>b+BTB*|}a+1bXZkrD!XQ1C@6yRH`?NX0G=!8}iRDmkVwcNmLZB${Yc8(57zHE|${3QO)W zwK3dNB(xh~n4yv5Pk6eh3W|M_BscamsCl7c)2gn+QnIWN3QBPdlNgXaI%C2d$5zX} z-jsPN1s~MFsfbe%bYgaGLq&3Ml=odfDmc}ezU}z<^4a;T7nd?ivaEnoF})FqoKhWL z*mEjngwGp7f*@ddJU+NVDOo$RTI^FwUc7t`hHhz!tSXN3rtg4bV=US3;OI-~X44o8 zeaORT(FhwHWYea($EfeO) zRwZxh$yUF)`|cOodc53TIBOHckb!iY4p2mmf*Sj_fU2=%(tZ_rg&?sFM|DM3ueNoKYqAnH>+gqdqR0$}==!X;gP|K7Ls^@}FxAdq?+jUo0XO!V# ztETJelgDth9etJwt5t9)O>=^{)!tatkE6lVSl8LlyU4V%lof}^P^#&J$cnvNx8JyR z#He}n>Ep7RwCP8?wi||_Siq9!yq(H<5r!aQqs`u4QB}}xAS4_2Dg=`Ohs}@PEA!MD z!zfu*i&zd|R=19)fp~Ipo}Q%un`3(82GGjm07Kr*ll>bvkGg)So3S4jBiJY$$mO{N zENZ)3pFW1orC2=p^wW(EA}69?d&@ZO4Sl&NP#`Hq;D0jOwoPB}rhm$ES;=Hs=0%cr z+fHedcrp$EdNC_DlN|MWM_ArA1MZd2RG&+j#G9-M%9z>tDXwYrzAAM3UE>vmjkFCVwNsgdv9uY95F>JLBu^vUVj)}ZrEt37Gk zdb!N^Ca?z}*~D9uNb!aD-dQeJA%w1JltE1o3^b5>2#w7zaFp8NiY^=IgHIYXc420&5tl0!XF^9Af;*Axf7DY1vRs-^Mt~n8q>mk z^vfd!?5OfFW{6T+cRlu=at`nxQ!F8k-d&!Z4da*=EXl;2z;OF$ar^EG!Vq1_c-oK6 zZrfa)Pp6MIPs(jmCrNg5|G21%K@V-GF!k0WCiuz8lHh&p@N}Z4V0jiGVDcdLgkc^$ zRdM(j#}L8wyhy!w15|bzN{LJ)hRmRW0I8ZFA5^cjHU=j5I1*9VT$Rxakx#%pjHbas zoC=uFx1B`Zn}p+(B}K84GOODb1%?sT8b+$VYpJ9LaOV*+(PCr)v`?4N!4>gk&`-2Y zOT0~Rs3Cv{rU70vAFhaRRZF! z$k29Nz_%6+`C)%=@8pC*fguZFzpyq8-PjLfypbh}NpLw74q+ejZBrp8{b-TN2)!UR zbV`k|WPxfFcKo*OcUS8qNvAPjx!f1bZB$$D+5n^<1E^T{h@v#jhG9gAB}uLo*pZ;4 z3pC_8LILL1b~gfYKL@SyO|t=2D;TFxoJga;jM0FBA{d52CK8^}h}DCk$GS8DW(l4R z^mA&;shf6PH&RsRu!Wv?eLETmO?Yv&`|QDkq9{!u3QTaqzjpsZT^t12LsEnwA!1`V z{9OYjnu&}^g%b<{6)4?xk(p)e^<)#@0D=*?u})uJJ^bv^SH67LgHs#L}%c`#1EZ&-Z-sw|Ig z9D8irVRzlMA3S(?z1~dnPHVyY{rqf$@#A;ies@X;>$*NKiX>kJsLB9Bim`NP4H3C= zbld35vz;dmW89i}CJxEZK6+sWg*`fd(Q(GEueML0pVgh#o-X!oaV)5mfm}n^1(4gI zL5}$p23$2ZfSnTzhXHvKkq6@9TVP{Y+-%K>+Sb=}hQ~8}JWuhCpxMD0Q^6w0@wpN! zRu06Xi-Iy_EJp}%UkCkYR-1~auLk#j{?~rH*7ooJdwwIQsp-_PQ`i1#D#9t#0`1{p zRMXIWbul%ZPRI3q1{;eJ@?KGvMVbz6GvRO{Qg203#{L?vaK{P0{nlGkVZU|Z$8dJ%NBY65qrKxBM@K1FjD(j@&xcM0CzSP< zXqy)>&$Uf=&?&)obpT%Gn#~;w8)brn}#+& zcAL|eC4zeRAO6m7TWfB={bqK!FB3V1aT=q)`K@nag!)Z4)g&U1rg+FOl7sw6$V54H z@#0m-<Oc4EzxGSt`qsbxdw;Oou3aFhB&uB-J?^&9)1Kygd$(_BPo6y)Eb!_0 z-1Jjk6{lo5?RrIpAU72HT~LVG-U%$7TI>15sI`gDx`XxP|8-&bIW)cixS~cKb9LgW zJ~pts*cKZvW&m-tsg#fq>71A@&Ts?=35Izw293MeAQRXA;B7qJ(teD3M)<1`2~axJ zjtPaXdI7pu>R_E`LUM3vV%3Fq}Y=fPz*&YXQ0j{4$_OdWER@v>pas zhy!Jjra%GDvm^A{N7OFFtdaPOAh?`oDQBZ};_r$*mJ&y#Hjb%;a49jvaS_I`8w|eG z_}d*Nu@J}@A3$zMB0b}k103Hc1jObxlc2raTa{?2hq2A_91&D5N@HEo8%h#EQ|s`> z<%E!2w?pf!CIZ6&(uSfu;AJ*;eZ8r3fmcU+l+aZLQ=P^^W+{=}1gFN%`H@i&W;z2T zY$}r?&#iS}^#)eZVF;n=Jb33N7X>i(N+m*4$rCBZu4^E##|ciHRZ_|c{Wz*BUu12& zz5mATn^P~VbInjsk3XZLZPhsh_Y$LQnhR^jfPySIM!+})fL>W5gms!yT2yJ8Li&SM zBSj=u&x|>PtmTRjpoz6AibZT{2jCBS<_6WP3n^sq9(Fy1&n_-Fhx<-SIE_2+Bs6z( zZH*fGYFQ$TtQ}5{_k3_|-3f-WJh3sYXdH&4a!UEU?Y(XL+FHF>6nh7IN)1_>s1XWO zA@Dd6X`WIpC6k-Yrf)h+dm9lWmQ-KXJ-p50Z0->$eri*?3LP!8x z1cPKy9J--ZTIIz=LoBAHo-+##Bxk4zBM2SFe+Di$BzKMlZz9t3YpV9*%OiY4#*sp2RtGpB5@xZKa~ zzx~!_xBLG0zLW6u=KXi;!Gp3S48iv|Wm!W~SmT^alQNZ}ZQCilV}D#xic<)NWi+67 z-hBJ*H{QeqO&TvLMIvRH7t{Y*qndGde6p`c9gqS^97lT4b$vax<4@x?#hzf_kNu>i znL;90`%}u`IfLj{dGpqtM~|L9fA;dDk3T)RdF!y8+60!~>-FYLD@`zWRt-aIts;~x z_xA_wrh7V(fVnd!u1?p_o?kDE;@<5$yX(#4N3ZI-bvP6G^8TH->(M?xy=+I_S?@VD z&gW_79O&O|u(0S8p}b9HR4bc!x{mQ2bA!>W)rc>0e6QyER22D)I33P#g`Z%8e&A8H+Fk{sfGqc z{nSFH$9Gp>eeb;~W9ad-=OXy3s{AlE=a)Q7$EGRr91AftO_n8g9Gh-KJ%$c+tv6Q} zQ{~Rxx86M7zgH}m*SoEPI<7J}yKc4zWl1pQ8IsT*F=7J#j73onn!!;!5&h;WW%|yW zH|o00i+85dzj(aXP1}M}Hl5(=3#A6mQe#|RR{hWei)X@T4Xy|purD@T2jrJyA z^fKiWCtQ0o~7NUb>%_Al8k1H#WGDHg6izzd1%IqdfmR--9Elk zW_!nbH|=og10P0*c}lZv(~X_=vdB&FYHR~zu)dFjMF{dLq7#_{k`Q1XgE|8vQW@bc zIGS;&`VDz(4A9!-MWwVFhMo}7L)i>3%K}@Q$b<{gb(cV`Vp8NeioO1W(w%mM<&R%( zst+IR9o@KUZEL9~^t{njX6x%_*NoNCz17jJV!4;+r9@@|!>t-e;|~ufhJT-6GRfCH z;4uK}rg`NYaUQOD9*hs^OgKjr9^;w(jgK}AB2kGE+h$_BVN9_E>~B7QS`1VKrr>8V z-i^J+!3j#7w=t>KMK}O~Z5$(@S7E4wizDxhHfHo8#-<{tAtT6Y4YnrQc^f5_B(}Fg z|0yRN5U3zPPAbz}!pjBUS1+NBi zF{n_2pUwazB-5p^X~L2c5k3&pO9}ccAIIUiFfs~_vTzoS-ynWHkHRq1sWYw9Ll zEah@x?C6mfEMTv?U55jL9&%-?GGA1y>$PXxgDHD&X%WQJ>@DsR1B$7mO(1?(!SnA>9haRCR{439MHIB`$cGi`Z+^&Z# z5ir?voFtMRtSE+Zov_*U!?>5`CnqPTuTGhefXmcP7a_VyI&xh@je;IWLBQK@;j@*- zD42VPVYH?wa~{S07`Afm?YQlB)+i@?42U?zh+E^uvVz>SVRU*d5>WLxMhI-F$eW?v zU8nqDe_3#Jc;jFXo^&btQTYIos{>^FgH9EMV-_(&qIs9aI&Ze0RvIg4#?@hH25TVw zepyukg{IyPl(1Om2(zUqG6&-zIMW5ydW6FXgQV_QMTv5wsimnsL`G(9yhoMsh zZd?d%7{HA6^Epu7dE@Ou{_1w!+`4(3Wa)Z+F?HsSCJg)~&gNLiK= zTxMZ%6LUdhWOul{IM)i&p|KB4@Qc&u20UgWmjVc1Ju+x1py{g0lWcka4WrGo#}D#l zb^q=iYweUQI4NQfqD2XP#uulTU;oNigh-&Eg+ljKy}N98XVK3Mw)8AZLU7S&lHR&| zM`XG4p{N$;r zSHY8MTMZhf`Mk^q)epwTcZ6XAihX3woW$be<(&WAQ;$M?J6=~<#GxL)rp06GC1Qkr z{(imI_`?xRVM{6Gv6I-k?v3@7x*&|BSuS7hw*Qac{Lag>&0F_w+o2IFEP3T@q(+9qi{xa=2XLyZ7p*wrvCXiepb1h?AP#Fu7&1$0r8|WuCnI&Koyw z96fyUBu@pgMnRYAb=$Y^z41oI`I0V*ycqh?dF@)AgD5i}ji#f^sZhq`gst*i?5$Ff zY+k;Qk}oN`dhqGRtMdsRWXOW@^x|B4cW~#9lfwAU+19Etm*Q)0-FoNNe%o|RNGiBi z;P6;27UOn1)ZOvX>a92KWYwzEX18m&l)&Xj^p4=kC5ApZrAIsZ>G^$rj@p^RWBC%oM%qk z&8{`0l5pqIt{*I@S4}Sbf2;$bwsrme^^Xq1`xYyR!1J82Lg&rD6bpc-i$O%EU=fg}C;()c)pqq>T z%oM7Gx5E=cv#gLZjq-fBL?)PLS)L(^`>_v#jn39hof@;MR%KZ_=Z1dRU#!wJg-7V% zP>%}PVRwD@lLybUvwAmrO;gO|Wuu+nTJ34Jmo9JcY=yzDJM8DFX~b6d!C@fAhLKRF zHH3fy8BG$87&y!oV3Xh~juwshfQKYWW`q*YS8OW;JQZl%ARujp#PCRmXEo(qsO=(a zNSFtYGe{^X3dTSxT=cTc&Lxasssn__nU@()cdi|W1|y4+KRR4?N?l!^QNdOdRL}5oQK~@%e|WUNoal~4 zUK#J(w$CMBZ#TvS4Bsp@(bK>|c$6@~Tr{l=YG8yo?Ul0N38I;le0_C|^>F9jO;gBE ze)_Z1vu6(#qqM*U#5w%=E!+-^Tyuv6@M-zB`P za@{xA-R_;Y-}~bG@Ba9QKRUZOKisRN6zX6(YF*bolw2@5K)PlhG;C-P2gCw_A)SHP z0_sSSQPxRNdn*O;4K(IG8|Q;zkb46W{njH~EK+OWFk&E87ZRNyZz>QWg&K*IFzZ<7 z<`W;|MDT<-ucO?O(4SL;(rdlHSlAIwdDD53?wUG~0A;=D0$SXf1{iA_B$F8MX3u~t zh_wlEOqsj9=cd(Y=m_%_ZQsPiSlB4bi&Llf;q`YoFM$-!vy>R?KK<;$RMm5Mcds)o zftpM_^uq*>vR;&{V!A={G*e^WsqHXo&WKE~wlxR6!kFbUFVJrD>T11VG`+gm4PDEl z-stdP6{3^hIs--?&Uf2Q+cbHe9ac+`i1pdOe)b;(N2?oyO6iy_CtoD!I|7yA0)VI=-F|pk?U8^?R z-AI{6#9&7Q=}nO3vJi6ADrZs@-bGD1O>+V;hE>78xIWFY)N(vwio-A@Nn$|=j}G>r z=-ep1oBT_vF4L;4GCg#IvvBh&EvWNW8QmvB8r}8nwk&fl*xqt)LUWzLAARuYr=LFA zKfHB(gI{0mp1eH2t{WXmDM&5 zgkTw()hSUvM6)a-fTU^{A9J8&2s{^{ade)cli;w*TuptmI^IKyfu(8<@+DG#sbXx_;F@|@BPzH#V!6Yy;izW%O5xIoKUyLAYbC+HM#Q7rQ5cttCF2+pp$R6l z9u}$V>sNKtN)G34M3TJ76UpOppu4u7wylJV=`-t5dFN7@T%TXPc>WA}FQi;nRkLnF zAd?6z64pYErrUL==qybq59X_>NENDh1A>$v7X-h&bMMVBzx%C64<3K#2S4xuzdAjY zS^kALzOXo6{P2fAP}1$1Hcj)de(js;NPqU|$@f40(Vg4(zx}me_@h7kqn8h!bCO-2 zpFey0Fwe8Rte(Ai)^wwVr`k-a!*aFQwCfvp?r_2q1U`&E`zznxZfmUCl7(k4UMS-Av1Y2%Uc~h(#|4? zI|kMrb8v@xSfZ0OgCOA13nqyO8$0yMkDX7mQ!1*jfBUQV-nc~>`SDMF`q%#IU%kBO zrZLev%~&XlbaQ>ST2*DW>KfN}y>k}`(cNwby5>}F*VEMX;bKu(H9UIoNtSZS-J&QcpVBj*-9sm2kN*6x{-u<& zTqahVMV_z<^?FeC*mYggbkkX0kG37^{ez>Bhi=ygX;-}L`*zo@br>iAidN9+(QkVV z?a)wKH{C@;#88FE4ER)0QkIf|ujumP3V>We1LrY$6n1ikZk-|^pXOD}NE%%Dc>*n#Z3um;YVJWI+ zXI|B7!ICL?$2+~-4SCL$CfZR4;AXS-e4iH@BH|u7V|)8XS5EkZ|sY+Q$q0GVnL(e zM%b8ZLnR?J$v|{(K*y9Axa_Qs>L8>VPmq#-M3I#} z>I7)8!scp|B_L`@1T;2Ho}ej5453h@$)tJl0(f{45e0ts>XlXlB_Q%^V|961 zlt+ug=^kj-L}U=}=iEuy zLL$@1b;nGx7zgOn__HW#!35j5enXY0pt(#KB_OMaVnyd{Ox1x*X(q5oJ%-8H&DAn7 z8)YyfWbPz!D$YmjFS_aS1=USR5M(Ge3-QW6qET? znlU^|$lSaUJp2lBe*XQOgC2)R{4$K1Iq0asK$Hik0(^TKT%c)L>q)xWKl94UHl&Pqk`2D;2s7x{D|Yg?I=LF4mT`dgw97u z6NJSgTcuf&@S~%Zw`#i?r4Y+SwOka|s;5sMU%WWI|K=MxVdJ2h^?Fb}rgW9%)Q1Y< zgL&VNN&#aFQrdVbHyX+X0Cr4r0M1PSr(oCnAP9{SJOKd5egGXloIV)v-m}=(7(kR^ zq-Lb=8pvlvh=a|7gWi_9c_UML7;Uc<^ob#qI}0a)8IZ;le43+C^==nIYd1+~&L#!_ z`BiWMxB{#g!Li^*1h|2rWoXo66eUY8U}rQ&XG~Pf{W-oAA?mDenwDag#Dziwh6N86 z$aV!x#n#x@;fXN%>O4<{ki!t*AOU(=3)S#mcn719hs&XWBkE27nT#P;Kc537rvCY- z-{+#ddG|I7?9tO{I(mBJ_Wk4ivq|95}qcg|kD`sH8x z#mU;)w&Ms14s^4D3~C5ZNzGq$rT6aMz4L?be^2Z7-ktY%^_mb=WCueJG1m_sJb3Zy%sc<} zuYTpN`)@S$Zq&nvKYLW~uFFgg!9INO+$g+j>+|z-uzz8goc9h7(j=RTb1;}Xy0dd= z^9whV;0HLh3(~dqcC)>_9^U_ARiuX>JpS1YVrnniIuzskgS8p7L2%b6Z?2UUTZ@u|0#$?il52Kk%Q^$U+ zcMTBkoHb1s>!EYx<~jjvL9?F}hd0g84_58Qc62mwbbi$^+7wy7To$dfY{{@nKmF*j z)(_I8NPv(u;3&7=#r;?ifed1jHK1>A7mLa%jjT@@;FS{d_4PT&^mzYJq=$~*W*kFe zwhz&3S&JBEd2#vT^5R0u#0OBUH$z9POw-kuzIZE_APQ~UmLh7Ld-UiTf-KGS(W6&g zKMupVt6Pl8V(<9i&a!D0@ilfa;#knJ?X3@cdsPCBAfO*e6NZuS7WPwZ3^s;^kfgc8 zp>12h7^H;e9?(*b^{!SUKyj4NJk20?zweAOMNx3L^A#}&lz(Y1qULx=#v;p%bGz;4 zRo7vlz$ya6&OnJ<6lveqYUpISSRNgxseJzI5iu%I58Yr!ef-e}>*a!T3I}NtC=)JN z%3!)>V!GLm_V$jTIQ8@ObZ#m@^S?kC?E(F1qDVSkkbdVSwbVO5*Azy)0Bm*m=`ZM*2+b21Tmo~0s5n6Tc!(0R5MKCR66|9xh>wjwC;(0G zX2THxw9dwBmU9fTVk8PHqh=?#c!6|s9w;%w5r1+FkjcL*TPVJQpsfVp*COQN@aAH+ zIrtsnuZq#00B;8xoKo}t`r1kN&Fz1I&zf2-#A8(IS79-LxLO7qRf$5 z=;w2wRH}XS=tqQ=X>RjHb-14~aks4Y@{B3f*w|7hWPp>K9s>cS3dh%iM$NaM2kk!% z4~iF=Nr>q3k8|XFhDKp7OpScGCx{WqHXnOML0`odi%MkJ<5Bl5B|Oi|zODxlMM+`p z*!G4?>$L*gnkZyGj$=1!ThP2%>>u3J%5FBh=TAO6Iy}s?Vi45Nt<-MU^j$kmL%ZG_-CA9C=K5+n=UldR=N-9o^WIm! z@k>f>=-hw=!%BPuJp{)SW+@IVFi5mlLVAW7Qx0{trI=?8y|Vl;`Pc@8)Jbq-h%*zrLPc_9wzVBShc4aa&t^_Of+ucX@f8 z=Q$yy-@yVz{h}W_AQXs85=dY9_~Xal|G~pMci))suvM8qnkwljZ)&~TFD@>f_I0+{ zTx{%*fAHBj_UC6kxLg^X2-IdlPp=-TQD0tPDy56E*!A6~uU<@ReX(AT&WvN1B=YF! zkYRMZ+9!nWb`7F0wN^FMRD4E(XA0Q7)_K0Tb?-*G zD28!7I9z_=3ttf|`}pGrm)GqFpFO!gy$FcxWtos{uc}HZ?%%zE$nldW59(%H*~}!&MSK*)H!~m6XCNn9zpYbRYdEmc*oG_O42KZz``W;032JyA**i&v z%;a1{Vj+c5cjMsIsFMW#Pz=`wjY{2nNPh; z^H~%G>K$(l%;Jz*r*)5w=TLHPX|PbEnMvDjyB^ivbX6{(CE7yhtt|5_@j&KOmuK7U zwqrcKbLY)!QS{@wA6p2JOcJeKwzp3RU$5gGCB(_i+l-*e@E1ZT%8~=TJ#x&7a$$|_ zhp}!NsAouIRaKM#Ckwk|K?4kSW*h*16@odXiX{2syKlVz##^q}KOV=&kwoa*U9I&& zr_3<6b@SCPyk|W5@S_(mpFQT(2TiIk9Nap(_x#DD>u2YIP-OgWy(<=rxK9IEx4+o; z9$D{SzI-u^-SLg%-L}`wc1k9n0vU#39Gga2ONq~`#I%-qh$690qbTKKL;5HKKyqhhH<1|u2*Wu7>h zm)Jv3@%hVBju{Gbt7kU$-O#p#3d~eYY$z>g(y$4n50;KTU=zF>dap(Z6tvJl2M%yx z!y%{E1I|2ZD#3mPH%2C-`hT`_!GT99J@mbU@*d2ET}%lvzBELx4fgdP092fD?ft2J~p-CFJe2iP|G{vpm& zQg5=DvTJpaY1wr>w0ZV!WFuf3&Q*(r(qZ%Ll<`Ds-?qxRP}eoW(T2u&KjBP|9$Iat zvP7%R{rh*TqI~k?$%~gS_io=mxOsbes;A%o@ZrNld8cXG!#npJMC~71CSI;=FJ;vBJSL|Wvp$Qoe(EebKS#FKK|M-zw^aAZ#P#vo+g*un+jTMx7X|E zGO?75svrOIpZ(bWY~D>su-LJ72szX|(UX{nq1WuYUV?{(#B+ z@_NFyYRXyUr{VQCu=MlDl7(o+0qu4`o>Df?ku7_d8&~zW#HD~yjYH-Jw4xEZFW@!!8B*5FDa$VMTxw5 z`uJ6rCJ2RPwPGR}$EVxfw#*NuT-L2Wzvv%7zOZK0Y9u)HeV78_+mU_x@N9jxy|~hZ z;I_Z$`{DHb6h*AG$nByml}Xo6H`Dwu3|*4IcK7C6_w&4HTXK5V1-}j!>aEYt`ptIh zJ$f%axZZ`!&2Bq>Vw_53GJOqCU+xmd79}^&cl5HAd%2Qikkk^E-#AVV_mk$}op;|3 z2z~t7N80><>K~ktQ|>rW6&Dku8yxSyJrtRy1JUisNIw`;zt8H2EdH^yI5F?jQ1;-_6D-q*FHc{* zc;-|Lnzlf+rBV{it~!ls7yBuN0VxRP95uFs1&DHR(5nHBrtvM4QOpOub2j*pINx*% z6CezmzD^R&g=}~2FzW5j3{7)>R__`;S*ofM?=O~FnzaY;RA0W_9UUC%fL8f&UKU9v zjkl;wwC*|Fo96k8$0?`N6#nSR$4UC7i>p`H>+=y3=$BW>FeU zoMlm{aSRw|Y1(zrL?8g)OA^Mdb&Qj~AFusY@Ie7G2N0%lmP&yc6-AmBg;L{-i|wx2 zsF=sh+7Sr@n99(qz;4`olV{7LlUr7G6HUHY0NUL&yAZrmofJt?R#K+Ud7~X;tZlp5 zMu$*{XdC#NBLfT{-~iWrrjHT7WG)0i9zoWl(F86UqG%WfyV#?Hy#R>}MD>9-MkIo= zS?l8azDEdZ&1q!lanLZ|VG8N$P723^v(5RIG3+7g2gYuh3Sj#zWg#If;lw924wTSF z02E&w8Y!NGCPrtJg&o&8HNr9ycNPqAqp2eg&lv@As?&%>O%%d2(S@V2$48`-%=#(F zLU7Z$HUaXeE`d+mj891LT_IjyOP~vii*x}wu*9
      w%WC={@3rdsK?b6fSuWu`!wH%C8Yt|Jw1!F^cW`h(h;2KF#Sk)qWm;mm-<)4x zgCHb@D+v(Qlr>G~&5#rY=%}$NGik@};b$N1E;i2|zo_eBNMsiRVS}>Q!Fm?(tBYM% z@9NFf*fpzV@yV1l(!0GX(M{d7=H{&v9N5+QjYa0WUXE(8#-5zq!5B@kdgC~tK*19T_>voKyI3t{!kfM}F>*4Z`)dFA2K8t( zCc(sLuX?mzLsG0mxLj0eRVk~Z6%Z2$LV(aVuzonoVniK@1s~loFpA1z2^PtIv=Gk* z91DgC8DSgA0x0xrGxx~8E|(>s-=na^2ojeKX_Xvz zZ=A6I;XnCb`qDSw&}!!ig2IMiII^HYKmsuaBrd=$ST&8dCP`BlZ0xnJ#E|cW!#YNjfSMmf-jN@>6`m*bwPx<8d*6n+5qTqMUWix_%pxHH)kT>6a zbGO-y;~)fw0~X~dgztXuJ8#^-{|jIL=9FvGjiU?LLz&y&M1&gWDNCjk>ih4#`@x4l z5t0{00aXDm?AE(oy<1d!Jjs;{TxQ)ke){mC_5OMqxVBqLA+`VNYO9Q$zMAa@`XNE? zDKlqqbhu(dpj(Gg_+jB@hn}`MYQzAg;=*l=hYt87^5r&*ZpxzMiCR8;sGq*-d}VJMX_oz)}jHiN}u~Pwgxf(3F7#Yy)-% znF_*e0M<@Tl-7G+ct4Ypa_$4Un!p1T`k@QnO2M|kklN{UB7~>VO_`(w(P=7d`*E>Y zF)EC6ckY1GqS@960lZf&mlpX~=dWU^iPL~gq(<3h*AhZqVCm{$Dr&mCc;($F8BmUU ziwp<%=KVXz2dlQNmFgyWz`gr7cDr+}hv{!$9`37AP0>F|mfgSm1`grr%U8R0gz>Ja zPdD}Ri_Pizrfsy*q-(4)P<9OKpz|?)1maurJhQ=aaAziRTEt3^pj=(^5% zCm2fe8M?3s`}-74k(RHfhpub;-LAfId^-d@#dvX<4W7O_zXp?jK(9_OlnH5CbfbdI z^JN9dLCjq2hoLhXMgtdywjX-{#vrno;H)f!5LH>;ym2#4<@D@aoL!Du4dWO&Spm-p zDCy{Q83R6yZs@WkE%PD+2hymORu;s#xlE^MCkJ8AR>0QItao7iBdp%+@&x{tU0qKw zb+K6FP}bkJ^@gG-7Lw`h+jr7j>~;`_pQbr1S;IITP6+2Wj&Dxc&Xm&F{9;BmdPL?r ziHM&;Amv_~4#DW~Ck^yCUSog=!m`>MGdicV)3I8bVMZZNC=$ok!kmXGP7=;I ze9cj~mI=n9Ym?Fla>5)ES14o6FhF<`9BeVD>4+CN4wQsY6A!$>&q2`|VThqdamj)& zo>4VtlxyR>pM~H7=E!;ObmVox5Ve4b#3l$ZNtiJvz4N>48p_^07+#A- z>4|@J_9_G<(;@`4i*Y|0t|Nr?dh9h=1u#bAI6$6iGX2N`Ko8IWx~;cu z+r>k_NQ*p6Qlrh#_r@p^%{nx0uHXV0L);<_N%A2$)x+zYLg1(f+A>aN;28SzK?n%- zX52xe(XAWDRjgwO#C2+z${Kv|lfuV3c**uwd+|jzWm!P#LRk{RPS4L#j1ut#_sVRV zrdMOR*qb6S+ph1n+f;&@LIJx4qFG=BI!Mxmw%8;uiwwSA)gliddYOZycxb!3x9?C! zcCZ0%l-8V+yey#;68k9^qAE+J;0{vO0e?1oH4F?L42O8aqSu!j3v!M;D{?NmhEq&W z6Br69Tm&*ZH55z6^qGir>p?J{XQfw20Z27n5U6cqO;G|6KBE#Ftq37-?Cd+(7h-RV zf``si!cr#mXyWZiqyT0lc;D@M1}~HO@BR<|*>8UP*U|qs*X&8f82|q@Lb+rn6&fEad#p>K4GYTnsVe57vdPGX$6t=9rdJA1&2Ux=&`4pdx1sLG4<3AAZ2PUReQ}xO=TFZNrAyG4 zaGvDXn`UZux_j?7W2mlojPWT0QZV6+rx5mlj&Gh!_8O16qm!GH#x6~h#R5jaVH_cb zl#*gu-MD=V6OJ&cH1W?DXOOUcnjLY&U|_<+40EEcJM34VpHmw(a^BCq?<@?ftuV zZzqzCV=I#E!_S_5{OKb?<-NOaef04|W7~kzwo?!e;=z?NYgWBe+GxsHo+cjSxkrEY zdq!}1#*~38cfrK14~p5mRv_nbhzJ7`YXgTn$O;i0!dZedG+gYq-dZWewm+}(^lRVv z!nc0$TgK>myPM|1SFcVd5KhpPVzl1rB*~|hrs<{utal_EY~yIQUT>!VRHTV+$De-q z*}>5f7s6tCx!vHr0&1JFd$-;k`fjQM4*}hN`@P#ZOe6JPwTy`>0=Y0k-wZ&I)2zjk ztW{?R$4Aqg)|j?j6oN}&s4?BE^2zZtW5GHlOYJkBz4=f;gx zh$1U;DchRsVS>T0rjOOowRTr!C2^(_a+ziN`l|0n+z+%L&@d*>fy|X z<*4;&LsZby+4yAc)ritW?5IAzU zURgy$7Qs$~P}zgF0$Pd$Ne87ek#)PyS@cWa{G}T=Z-4mVM~|O81OE}|)?k;?M)z8W z*t-DmjTG=V8b>&ld6woGC1JOlo~`RunNRck7v6i@SoiqJlt{mcyK}nUZg=Y)M0LVu z09IK@_@gn#IUp(pymY}Ho$S4N|E;rE&nGo78TexFAP~H5HW|+dWxY1GhEP=iATcTv zQ6+m}RR-_dX4iN9_Tu^C?fW;5_6B9(F&tV><;n34k1%9metrdSlSC56V~q^7+6r)p zia=;|!+IMN&and}Qlz;FLoC*n!K6iE9yj#a(D|A*f~gC^z(+Bl#Thl~xr&DTX+1?C zB>JrbcAa+3s1nvElI0Mw3Ms3C5s?&3aAQS+gM}*R287o@bTSHALJp7v1bnywrIMwL zdZ~f##sTQ<#B-h$QtnkHRIoUW5d$BgBi4b3Z0x;K#yj{2=`h#l*x5)J_n~>c3Jl<` z_%UX1Z1x6x8&LEK-+pXv(BSJ2@T}$OjOfM?OA_%<6nSwP)o;PYR3d@_!W>!+{vQh= z?s^u_%zwF8Nl#8Nb>w(SVG*Pu9JRg!?j4htlZ>IM-%14G32$^^(dEwaq!7Q(>ObkM5p zJEtKS5$cXa;DpYA8Ps6`8(zs}y2`2~Enc0y)b&orkxRm8|Vu3mPuTc1){W7BL*T8)pgr<9VTI(iN}6~zL_3UIg7F)oLkf+O2Qik z`{ig=4?#js8|}w_X#2qhOt~zUd>E~dHNb7BJO<+v^2m0h(k?>O{*%uhMlhmSEDk=8 zSp|v;;_{|<(;M3t=n%+DEisiwbMEg#mSBR&E@9PPapNI znKXjCP7R==65d$|nIZV^Zdv@(mem+!9<#w>6B(YlgLuv9LQ%p;=Ac6oJM=gKRXjCD z7}pQ&g9i`4`jtB$J)9yzKDpXmCMjMmvx8!_z1kULrt-u6gTtG*?zV0B;NgR&YmZL$ z;e?Hc2uond?vL==sLTd1A)038Zuj8Hljpzit#2)=MccN}1h)Vcg^;4}6wJY(^n}B9 zBEezTwN2YJWm!!>)?GUZTnMI%y?1e-R{Qm4V~oKHQHH19MM!qw0J(R=IDur=n{9iI z5q|dcIY9_Qm)f>3t5nK-Q87wSudZ+3y)&hMU#~Blu7$^P&}C5_p4_CESYxxY$cpmg zk3Ux9SeE6gDjz(4($?GMqN?%&NmB11cj3m(J50z=9(=ajUend0tGAOFTs6D5@7}6b zd((@=2${Iowo{AZU>x-tJ8w9b(gIFnC_^&kMU};am!llBh#ACl!RI|_n0VvC8VExB zpaD^{#%NCIZ1y4XOwR%Z~qyUqIXXP>26PLT*`$kVJ^ESj#}>~_J230Iy#$0;mZ zE4AD1Zrr%>^{;;IvxgHj~+h;!(-jPy1FVC zi>xXLRJ4%@yhEBnmSn&{C*^cac;qzSIOB)WP1xsPET__LYc&oS2iO3*o=cYHsZ8Yl z!NH&vBBZRAoG0US8CN&kuHWS;^R8U(6-QtBQkf+~-CJv>Z+}@8X_j42pzHc#Rh5&S z2s5G`B)s%}e|@>72+|V3gUy6Ct|%5XFJE3>KYRLYXuC=E!9{U-warG*{B?bAwdG8v z3E+_0ZcW6kWg;W`tA-Kw492OHEP6J8T9|vTX0t4c(g-RdxaCpb_Q=D@1a1=Vp)bHg z45G4qfFT~ojvp)#d;l+>2kIyh$pEGqXRLR@qzLzoJ9I9Oi5>*Tx}2M|1a zqhUtq$Lr0Gf+rK-ymc#wTuIoEx4XLUdh+?DwT9eynIMdT@Bpdc*uXQqB?wnlg#f9g zBkYZOw}Ut#3repM%G`?rQ-D~OiwYVFf{iE$vN0nZ;s4ju1dnK%O#h1sKXwiQ;|ai1 zu;*G>T}goZS*sCtYZA*n=Kcr@tun^>anygBb3W&AFv=-|2bo4D97nL3&i-ictur>Z zc?R!Cr9S7CoYmGvJcbL1bsGn#k?uQG6T;!SCqPTf_-{^xgoCj)FuW3D86{i*Ru>R# z{P1@;ZIq=Wu|sT60U57AWaAxtp-G;BwHK-dGa)kuWDbpVHn@F_(auqjH41>i0S$MM ziU5F3R1S`cPM3>j(GZKp{H*5(Km$_-^DB%0hREZ1MF7>#rPu)H#SwL$GckMwCdSxF z26;?v+tl?&4`cAIEVGlFH$V#j`IxO8?DaS_Z5I=}lT2jRp-tPu`Lt;~+&AFdx;gb{ z93A$3Hw?WR6%_HOi4f2M9rN7GbzSFKnWYOT^7BH~aEfD5!wT?QKTMZas;Ei_rz10q zmrBr$B*WMncnL5hrllD)i8mcQNqN~0YO23e>Qq~0ot04D4pp3e-zO3V8ffY8(mIGv zgjpzJzg3neNiuXD<%~l}Bg*q4&872hyWWz3Q<((knyvxM3*&7MVOZVJCB|TkM3zcM z%OdB7_t4dZCJ~(~Mo_r|UdLUCMHVO?keH7*UX4Pa0w)sS(`MUPs|n+?^ujo|+3hGm z-7?Q}DS_Q$3^N8wFr#$a57TLIG+~I4;mN^1#crYpl^Ss=eB9Cm<7t+3eMc-LmP>#t z%{aT(JLNP0CZisTDqB_sPnqgQ>bX^68(p5gQ8@`o26i%;fHDFyAJRpZC$mZ<=Cy%3 z8It&*EFNOb!ALFzl)gbtIW&wc%SEuUzy9ad^tWN*Lq{=_1ko?T4&9o~n$C?;1LV-h+yx4S9fe405Zph5K2i>Fg& zP@b0oFL1IMn$zzC}w#|Lqx4Sl_XVBBp@VWc!wz7&M~;CtT@ zjILHtYPTw?yjl#ySYMx~41MFP@AZS@B7gkkWmDId+SOu-LNbm?EcGIDFkG5Zgkd-J zaM740iX);C!x3zNWj9g-j6%yj^0U1P{-r^i2?4fd@QDypBgiksej|^86LV z)QKc`5Mw~DoQDBkWSJh!i}Qg?>y8QV7v*pEPw7lxsqSon!Tom8fJJGRaF z{xU5S{`Q-9j}G^pYR6_+GT#~?ye!>-=eZQb=<$Dln~XIX}n+ihzm_+oV+B_D>~Vd&L`oS6jJ ze2>Dx(Zp?nZyoH3%F?SkE3)8*v$L1Tt?oi2b~iPNm031Q4$Bbs{VimfZ)d0H+KgOS zK(2^dE;A{zIVoUesPj4=M4(K9gHjD^Y;T0SxJI z|D*!sIv8qZ09cAxG6+}4LDgM1YRJta(W@L)3SN01;k`Ja!e4?>gzOyhbGL+}Fvp{q za<+QfE8qX8vUK1#m4(Eux}Q2{*Pd8dUGX(kZ`6kD(~ zcs!fZBuH}w#_+}f%89sycsPKHEzHzN1L_b*S!c-?NH1wC(l-*2~D z3`a*%Evsn^?fMo_;AnW?HuYO?zIn8_diLZo3a-c#?KGovv9AN>!Z}bw#wJZ4Am0kS zGX}_AghzN-hGDV4UzAzska0GVyvh?r(bx|jQh}1J0C4vjf&%T~{wjF9*=)7e%hg1x zS1|b{3Ct5F?ADto-atBD2!$k(X(slM^8G#dK6ks#(0B9PX#+~L41OC%(}8nZLcj3- zdz8{SBRi3DN)+OpSvzVV93c22ijHI^q{E?6(dysB_#POy+9<6zm(cf9Ey^5M25?}X zFJhJUKqOas11_Fz&X$|9jv2KmD`+@=rdz(7xK=yQzXO1|_m=`zC}rw8_j>4G5uB)ety#0ecpw9hNll8#ZF->rp^ZW1JJ6NU{=VueE zyF4h7?bd7m#+z?`>liF(^_kBM+d+}<5GrMl`BV7t9kB^QI4i6{GI>5Wm zp1yihR=Z)7H)I&W&Y}z3ZK-iqr@H-uqt~Ms;?+8I4_E zUcLRsN!z)0u*H|(UM`F4b&WCWx}I}Xl%+=i_+jU>B8h2runojFE3Q2j3L{uZl=6cf z7{Mv*f`sFkIb>f?j}X+`?5?V1@rC!k`r`RC|35!C+zY`FWIEA)`s&7BX2)@N<*S4Jn^R21{>ow4gYVot zG1?YIKKYkH)UW!@)g>h);nWzNXW8_d1!Ge|Lf_R=;MKC6RBo&NvM41(YA@%D>80PB zu)W>I%SUa~jgZ(vbwBYt>x7FmkqEe(9SR}Mga?tKQKRD!V#u#I*Lt*)6B^gB~!NTVn$!99)LThM>R+n-{yf?x8M-0CPO{!RSR^SmUm* zFZ#jgV9VvIU+)Zr%Px|<7##-HF9F&;lkzU#t4fG7oNNSXmZc>=xpfc%nS$99nH--? zgI%)OLH9I@uHz8s(5tQ;z&UQgO|Ol+yqNlI8`c3zf)TBjtGC{KLo5BshaYd-My4eb zEcQaXIKGfTHHI4gH2T0inhm(YIUK{T38b?ukB=E9CYG#h+78<69d<@*1;VMOu7?hc z_7h$3Pc}5j6kRy6;4mf>_@8 za=8#9so^=?VnV?a6FVfCWzL(K$_I*!0aD0dKoA7Gvd9xg%rN>Gr3NGn!HEzas+*;l zzwue+=V2(cRx4z(3<5IMI5JLl+qF?cxvVF3$I0=LOv)Jdg$SWg@+riGb8og+L#NAB zg7{caz`VhImb7XZjP{s1klMz=8*M_Mkzs~malSaG94^WzjnYPg09d95lyh#D!jk}C z4`=ZDK%oHwkGbRtDRM$kXU9=>R-5=XdLMzkSXWa5lN_v@;TDXI0n8vO7kw-t*Npi@ zFwTO2`eevjiXyYn^rN)_g9wm1IKz6NIw*;BCUvkm0H2ir6vX3nNL|1&8VM_HwKef2 zr7?#R!+ekkY7!o!Ej$p^@DGhCY14(n9BDEA01S-A;c@=0^tISj&*XRv>y4B;!7&X3 zdJ$QymZl8mk`mlCVjOF28-%S$_kEz#AUNUN+E`JfS)QjZheB|x%eZu7@2ywQP9G6u zFpNG@skW`HHA<$UEX$%GQZfe_>h<1U_Qu;^eEM<%8MbPet}Zw$1)zR?4+>K$Sehl) zsJdQTue>vNZk-6p^w`6hUt|-05o6VpaZpJ@r!GQ_+2wlO^#kWD%Th*Z)JPi^vFka! z4`d3GIYvzIr)Q^Q+c=~5R}jE$`w^tH4p(I^8NI%^+ODq$sILYgI0uvglumh;%0vY0 zfcS?BNq@Mv$Wvk5&@>%}O+&|sbt)N!zNf`L7`>8IYbXDo+@0HM9XAw)CC$M@+1tG^ z)L`&Up{0G+K0=|rFMXx<&Lzb6-cGk?lJEN$33-Odi9Kw~(vsFensq!60uO$mRL}W) z_8nAUd4{vFJ*bCIDgg1?+bwTk_jvc16aukMMlT|Ypf;rRST`asdBfzUcfKVU=)~O+ z`XU1;CGa%4?XU1X^%2bgb;gnDhR#Om?R`CM6hZ?p5DC!>T#DYVB%85#7|wNPY+pFA zj(7_1jBs<&%JGtNk`_)!;=_DqMd2pn^$1~~vu`nO*94$fpu-Ue`E67J+yOIun?X5$ z|Mkb8zyF3;xV(M6k~#06f8Xif*p@c7HWnB-B2`}&CXoqK1U7-+6(#(2>PdfeZzeW= z=Fx9{N;`a%yVK&G-DV2_zWw~u!!N)7$PI>5ji5P19yPV~Mc5UQ;I9vL@P`Lc1BE53 zdw|*X7RCr-Eh={)P$7m;W_byA#sDn$fgTU6CsbuVu-5XZ=%NAGuzbFnC$P{Fqk-Jz_pi@u}O(H&M!8ae|VK zvK_~F+k($7b78m9Cc})hp#?!*>FmuI^DL`2iD2)@GE@#=lQW*d@vP;w9+_3@$YVF>{8gW2@J9&&3qA1Ne_2c>3?OLuf7h+VmOcb5I5hqRFPbW9xww zFqj2=x<$jtmEdvxQj>$mdZAiwz)bBphkwYWGv$wY9WwJlvH*VI>IoginQcs&_b5Bv zn2E-Oov^nwrjQSjk4%cXi1PqU zsARRu#R<8HX_c{98nDxs9V>LP1n|O#82hl}@rjp$T_logo&NtlJz;RrCORn`Qv0;z zf!|9h1n}|QmE;l`_CF739q_GNb+qUlr`%t2>MPTnC8XI7$qz`@yfgw3U`ZA+*8vKe|-!aC5AK$MAddRZkEP>edL7=%Gen909ESr-L{-RKLRNJJQY zoo7=kxIF*+<=Wibp4BpeB@E+e9>l43Vq`EIct%1%JmH|wHl!lGfW`o=qa&IWMfpRo zLlXa(=lD zyBbA{{N(7!U7i#3+GDP;mB~HnBQ#Bp0mhxdf5~UA>XRR~QDnjI@`rY8_B66vQ+?J~ zzMVpwPJ0?pwDElOv^1m&cSzF-Q9 zO+6uB4&@$d#51dO{QYFmpt!=pTZ}Ut-1GqqiC>9iY~m;O?Y*aMD~#j#69OT3?vSM6 z8W40`8$zL&TWCngjS!#X#CB{ap-G_aRsq}8YD~SU(xknI{jtB>7r6yCDP23Ht|XPZ z-{%z^SIF3!00000ynXkMGuE1*Y-{Z|lpWN3 z00000P=6=hDs2P+0001hpacK_000Cf00000ASeL<0000%2><{90Dzzb000001SJ3f z001B;0RR9106_@=0002+bp)j|z`uR=h%cH=RA(95($3!eQ0{SA>B|Y+S!L{Cc8K0* zvW^5ZjEhlo*p9R&R*YON0cQdUgNj@ao+-&7=> zP2S&#iIT)bF?&fAC6*0`x0bguN;d3tTj?+DUjIGWP&TIB7SBvNn_8N1(TCdIGwb`3 zB#D<8msn!^t{}uyvEk+nfWu+6)6H>D#SYS;sV-_h``AKS6gTF5bZKaEA#=FzbJ~Kt z$+)m!qZTonoLz3ag+7OOBa+@+9HIt&Q+Kkm{-9bZ7YjRc{q0oevbnk(o%8``|E;8$ zoxRmdO=2Bf*-deY*JqOPoW#~|_n7EYnMbAtF7AEoD(e$siM88()W9>hnMrO1JkDT@ zM}uBp;G4u@a(2LEGP}E-){biqI~rn=#4k7Uu)dLEPU4%PNxGKv>e+rh002SRJ70VH z%L`-Ie05&yaQgW5#jlSBx~=r3v`xfVx$>aQqKouC+oVt~8G1pHWmzkhY7d`0Hlp5|*Kqa2-7tFif>&f!H>&I{8+^r4P{&>pKD8LCpJ z77Q(yiX`{NQX$mipqpnGQpazemAY&lbR&j?nj&w{`l$KVqlr?rTFfT~scv{~wNNvb zyB#~ZBRRd>ORZt<-_$Q2%hN9U?*`|&qNhR=^f&L)-r1AWvMz=^@eiXcjd8JJsn;G)=*-+{cPRke>z_ON09Y;5t0B7O>FI-^+K~WS*64vue z6vJ^0BS>=-h6-1fUIIrDU;z@O&_@wC3jPaRyF~_i**9tVPT_-m{zX$72io$J$)C-i zKmVf{U*CKU!UqiL?F;~d;y6JNLU!iR2t=*mIF6XFFriaO-I}JgQ&@`7gqph{1Ts%| z4~69I|1~F0pxlf5Cxk$AXMebM?`hx^H+WzViwKxGk}wvwE?bz)8e72Hh(K#Ts1TsN zAO@bLS%&3-6`k;aZ>TC=v*@E)bLJ+Wy{Si<_AX!Y;p~M!>^_c=2+blR%!4i10Wb~ZGe`mwx?U3BY;A=gL~IVAF+sdOGym2TO(|3(ipP@vU>ZEmqPVb&HD{>MBq^v$K2*5_E9CLtZX++8I&wB+0h0);s(%R!Mp z8Q5AKI|X4UMH!xFS%!n4m9AkCzV7(ZIUmiPKX1{u8=iu&aTDW}GEC~`;pXOons55n zNh~=)1e#cm2MA}54DmO9K&(;zC@W|$G=i|`%UgRE%%3-R&g@TD{rD0K9zMLE4JAZI zTf?>GBP`RR8HBB3;1a2`Tq>-xnK1#L};h{ z5zPXgrHzE^#Pzwa8tQ9mG)?Nvqy_F0@XhhtrB8ASE9z?N>VN+4>>s;)1-^2rES473YG9u^Yi3Jdn1{9SDC8{g9vyoHb{&w++oAt`|e z`7f(!7I$@Xny~DLw6v6+J9qEdwr*^cy<7i<$=kPV`2NTALtDo6nf&GYZF~3ZNlV}R zk5Mr=ba-#++8;M=+?AS=wtxSYr4wQYj$QfrD1}Tua@p=_Bf|d(#dF4%rWy-3uRSTN zY$9bguCbFh?%12Md*_~%l=aJ}DJj&}xzEbYyAPzL?B2FDdC%@;Q+uK^)jNy6+nbuQ zH#IG3^%5^fn|3O}@hr#SI46-vrBaCqfkILYO*hunRGW*^!t*RsT`82HuAzyCNQ+MI z7TwFv1_cP|8ZpuX(>67mcmy%;eRwnA-{Ao#NNO^+XwB$!I*mr7Z!rMg9NNYe*5L3zTV?kCnfLNA5UhR;RVHE&L7t-TfSybT3Y)4{olpZT+(GZZZVCML<+o zfQKX_(9*GP7Io%&PMl4?UU6h|Auz-o35*M#Y zO-uz7K*$1nfB>#G@9DWy=O2_l@BhKF1Q&^&XV_<(HgDRVyrfqMg#bjXTDD=+$I}Kj ztF;Vg#6*tMmaIz=NZpsTa)z&h?9^l2nxtJjcI@1DApP6P!<n#t zNmW6)1}9jN-1mc}>jjIYrtRDE)wIrbh{Q8t+4nos_Uslsmi)ugU=J}R>N@|cA5wR3 z+`MJS%*1Y{rY4#bMUI=7)M|hgQzLDlQD=aDeHU)qxnuLztvfe-*2PKU*?aOAGe$?c z7!5{_F}A3>^;-1;`7Z(R-`)kRocAUE7n=sg=Z|e3Gxo3h zJ~^L={`$MkeeH4Z*C9N8{JZ(p-oKJ@_+lln@$DWf27kbFEQ?D#g5tV`hYuPybzr!! zQLSm=Mhy#vS!dGIj%Dj9mxNJ?97ecw>Lf=sS2G?&y*I>5RDJf?u`BnhVrPBWJ1B_6 z36+!V+Nqz9UApg-FwPs%UpaSI)1u3}aw)H@4z$AYK%(%8iU^PCA3u3!VyL^QuA*_& z=)P>l{assk-70GIis>CEbN%4+_r0jvQ-=?oeN;)vR4SRwfBeT2qaE{qJNeVe>$GF+ z@)`YMyUrvpfK@cNWhLw>SKH;>eln zMXm`m-tXPj*3M30XH%GY{LHndPLVN+n%rZDjy%yj^bC(0HK5PC#EUGCu`O~4Ruf>C+0_}^g%GhSggXhckxy8Mjfw4=Edbo_`>&b|Ye zy*JE8SNQY6L-#8*N|#OwTj{t(b9#6nS-%`Rot0NBICf4Cn7bPNwHh;5Y=C6Drsn>KSmb#C^-1IHigrA~6GOe_+K99-m@YZp$Q$jEh% zjE#>7Voa!uhpOmC#__Wc6rKHCC7PoL4&5u)MY#D65_@~fbXjLkUA$K4*)QJP&#}Glb6Kfp?6he!-k&{h>5>nJ`p}my z-Hdy8O1~iat#c<%X5OblC%iu}V)WQv&an32uH*|>ixir{g%<<^Jbr148$M3u;KcHPl%UzC4jnjg&8SLPGJS}Ly+T6CC6MPW z?m75^3z%yugFopC~oiEZ(vB{)888#4WJDKg^chMK~UU% z!lEfXJqoi<{&eE1UfE;$hl8hmJ++IRy_Ip|%+-fBLA_d@6_wO#wGE|LFF&f*gAO|A zpo723h7#eSv99#yjjStK*KXe|e5GaqM~A*Y&YP>)vt-1|jT=9myZX0hpy%kJ5*w=W z!No;iu335L%uB|UHh0OUq_u~#D*+i26+FNLG3rUD$S6;fhLv{>@#~=ie;KTci+@yS zDPt2ddUPPfZ2WwKqdm#DHk2HTN#X`hoW0LALHv=GDWKsmIP-$-Z34NEPb*-!gNX zwc5Olqjw*bwS}TtMCBDaZ~nsB?|nF+Gk)dFfqlns=HI_pTGMFj>D|Ru3G{k{JTAZy z`TfS(!)MMP+x7Fq;s#QL4hr?u>seCi;_0jaoWVXYrW4jKGawN1tfr>)X<>d|eqmvG zGt2#Fw-FL;{?!*1mEH;C-Q9afDb%^e4=YS0jv#H*{ii6vsCi!Uq@bYSac*u&rCQHp zC}5#|Y^aCW#ISZwu8vBAX+eD>0!cAmTb7&t)5+sEa%v4NS5pt3y>R+kekH)%y*xr4 z#abG*^Xlxt8yI_MPuDK)2%^s1op$=dxr3Qc#Zpb~!)rGmQ~^+T^mxYY3%@fm_n6o) z3Efa|>rSc00R9UgAp*4z4j)NBbMkyuOG{b7m7}N6Ub%g{ff4a^$^G1?)y=e%U$C1} zY|t6p6T%%aUG~BCzg)=JckI;DIujJdg}BRDj+Q&RIIAdH2Ytc=Nb-$hHa?v~B7G5q zXw;}NjwGh^@C^=igv~}CSl}5WYOnN&_JmJ&?>l(m(l1F#Sw;vU4=@q+EPF@#vC~KQ zUuwi9HVPHQaJoEu*Z!lYe#%m_`p35~o;i2sMsA^w#kvfRRWL>#wej?D6(KAu^&TEX z2%gQ!JaFQ|g*%T6TM!ZU{PyV^l}J-b=Fb<(Uu&%4wVJ$~hb7IZ%saqOE<#N#2O&n8 zsxO~OKb>*@-jgyTPB{(?r>dWv-k*Fvmw`c=`T><1zOVdN3Pon26%7uh+v zyGl*XsBfsWtfoSTyYz?+meAGr9{&Eax)HPsj^_x4bC&>LKTl6LCkGMxvY;l=$H^H2 zgGA}#<}9Y0flrwK>++J~=ViQ|b6^)Y%%IUyVO`vv)TLQF51&4NBIV?nhfpj5%(MHs zMO7Nc(J$EDUSed-w-JG|&+eW|KYsrFk@VlPiyTA!F%il09R0_A!XpSrhe;F>k*b=@x1QJjn`e0dAc71D^)wn7!p_Ch)gECDO8;ohl|mh1 z-#w zhX6RrvW!ln0RoKhkVh@Au{?%|0nqAzp3!R*a`3{Slp-__8HfSUeDm?+hNc#A9c8Cx zU;Xu0N+?x@M)wofJu4%fV-le5hhdCRrUoX5{-PsXE01q*`v0klf#%(Z;=hQVXU%aZt>Kkx5_PV6mIS6g3ZvX&L z6p2I5h+sfQA}E50z*`^$%2yR;Zrpnn5;(%NJTI>VpzG+UkVspTDf8;B+(Kn9XUp&4 z%~+E|03!Uu@jRocEqhX?!8jJ@bTS>_+PR;^>84w!cOJd31p=x;!NJr2<43L#LSia7 zlxMeaOs@~78;noy=ibcg88aF1LTo`1mNnLcKLf`pL-EOtKb{Az`1T8+P@YF10{Lcj zeevsRv{H-V6!xltQi|z zvm!y(MiIg>Jc2<$;RFH=0D&*_@0>Y)Psb^G_8sIVF=+B`@4s2jgZ98%cf|&yMI2iU z5t6|y#>N0cJB0WK`v6yl?KHNXG&URCMq}Hy@uvO0zy0TYKD&2j=gvL%;F)L6 zq)v_7(a$PvK1qyrv*6`*<-3aW zdG1G0{z2$Vhx>)A)5+k9c~ETD8ZzeUk@x0N=#UTCm?y>yirzcc#&Zskug10^?7La& znHl}eDa6GaxdqHnfjqHcW?psVou_CBCo=K|x}(p}&*G2Vp|?v91pK!5Q2{1JVBl(C zwX{>In6bjP2b;bC7s9g6tLhwyJuG84G8DZESSDOX5MN>+_v^^meDECwz)!(?7aO!_ zd}Kbea%hVV7xoKD&PN9z!sR!IwNd|C$OuEiwOqZCY*cNoyW-HKfd{^M=k zYProzTqmA~iD`8Op$$ZkaP!z=ghr=>((7GoQHD5Sm7$}Eq`1?awN)e_lnPc{6gFZ9 zh)O}#QrskFmAjj(>K2{7kdkl?8vvOC2kbANe**NRH{w$gU4=%tB!+hr{PI<(qA8v^BWAu%lTdLfL8nb=PQ>|3?KlJVPz7iM z2WZ8LB)H4X#Z2eNCXsLu9KlywzR%rZx+68@V?;)`Q{4f96Z#~OcairuznK}Ki#wj$ zl49kJ3?;3-)$2r#zA-^&9T2kE_}hY;zo0`-?toKPRZV_(faTmsdD#q&l^>x3P0;}O z$IiozU%8I@Fow{)h`hkRnK{O!m!5Xtjp0O_g$8#bM*4ohf)fG3A#5bA5QZ7)WB+(p z)|y6FuDL4)kM8D6Oed&M_er|TYE1EW9OT!Kc%Culoj>2SpvNH}jojR1v4iw-?whNO%(K#{de^xND~_BU=UD&Y6V(1D7EcBj^k?p_>U>TQWCmHh{{ff7 z=5xf&-kY1k?X{-3GOTLxR8=R zT_o~5``k|>bNTGr*M^f;*lVv#)oRot^ohBHprE62nnb~GR1`CxxXZTx9{AhMeW|(NdG7RL0z4V&o(LU8bado+!Qa)E1xIC>8pc^i3mc-;_<#{k}b@S#ztbVd@b2A&^rJ}GFIdHxo@kx1)aK`-{na#0pc*6V4Mgit6r&K(_QVCC#`xAMg!#;xH+iuLuv^P+m;QMO?cM(B`EJkYzRR z2`?b1os671-`{OFl3Kw<0i3#JoD?0 z3T=eyq;rw$M^?936uwqFUtJ1_4}9!2!+`e7sl2y!Vhap(apYia7#jk-0<69A((!f#7#_$LA>TvbFcwz%MR zQs< z68)7DL zV^jtEu?+3#m6dMMmYJ{x1EOm{lvs7)s<<4@D`m&#`uBh)C?hOE`Y2Nw=p{1i-!8Pi z(7u@O+l~7xZdK)bU;jXk(J|R60;APB(ktnPON{C@z@X+{=J9kp_S=7sb};1xuq(xFss{_Y?>&oSD*>O~fZ2GwEQ(uF^5=Hen+Wd9m6xGh*#XS0ZBs4ds z%9_$rEI2BYn6jcCZ00s;=1Ryi4!T(Mhu` zNdT1G1J2M5knMUs)T_23tLgP9KhT^R%$!m`lGe|Bh8&ZI!-UUK4v(j=7fg>zh@2x?5fr`>PMD=zQYKTu9073JAz zGjzJg2P8{@EIb%$GTzWtp(2k+XEV)-O&pSF!AH&Ph&{=N!)A06<*x%dHj9=tTs7c_^Y~queu*fPsBN?kFIO{-?JO~#z6`*R z@{b1eEG|wX`RP6m@>)eJfv7;A0rUt{bb)P;L(UV3RN9ULP_V!`?D8}HWoIvmk$Z6^ zK?+PFC7f2_2uCfRl7{{YBZUjZ!rMHMjbqZ?VC;T&8o6=To?_lwF@{6_3#a|41#H#9w8j zAJJh<%;}tKO5#xnNp%v4VW(>L;;`{&Ujg4QFR0tk zQonV1c@p(wAqeR_=09z5f^P)P4q8w@#Q$S^_rn^n~&<7s=N$pHxOK9GLB ze6I#l*@P-p!lG<#HMSf6^~q_DJcpYf#$1z+r#m2PS~7GR(_)1T!#WK_1*HuzuNahG zLMG!cECcXWHUs_Jz>t0UQn}J)6Zh3Gc?YtQqQQ4ikA-0CQqcd zE-;MqYxvB$E2MWiw5G+TeS14Rx1wiIF*!h=Nz0Je-MFY=O&)m|{efKl3m4jXdoGhv zha*H4vB&4`Y$lk3rane6_+=&fp|LmcWqr-c*`-$kuzC&okMZ)C?jj%$`i}$iKM72D z^X7-c2LL4FjBfOAD8s_~4KNu2fa@nuwt#C->IiB8!19wb155w_prrtSzbu;nNq^*j z-2(n!{;&K0$-h*a|26xc{M-ER<^PkPJe+?dod1{q8`b~h|C({22Nmm7sg}(F0IBkn zsMwKWnB>5OGiUCoozHK8q6(N{q-Y%eTGWh+pFP3R$#Z2+*xa9kafKaU;5=Ter!J+9 z7Y4Hs0woUHC1Ua2FJyp%qNQP!KK=fRs7KV(+!D#_+~7iAfP^r9sL0SI=|(5BFXz^@ zzK?B)TW+_47YC<)ncR)zn^&HbYo9q)U8=Da)YGccEukB?8I0-Y%EYtVs+gO7qjEbZv!qyX4nOm{#ggR3{Hr~;~}Qmj;g zf%?5$vM5zV&6;&GDNNR9NON<2J!Zm8v|H6yMx8jau&^*VSde0`aB{NBes2WR5Sx-J zESECO{i&l#@*;&YYDKlyGKJHrT+GnOZllc>MAA5m#D;hrlh*9o_8vWQePQ_&8Z4K z#G`RL;^}&_XHM?W!+%1KBqRU5Uj)qDx1q z&o{d$8ql3_un80@d|5y^=QU?oXp?iqLnO@~$ovG;8g>=V=h*0|p^oeoZHzb<+cZ_b zqj9lTm9_siy{P{dFQ>LPA1g*sCBS#HeSQMd&=sVermW}(8m*7HUmzFHBCq&wMhIry znB+mX9Pcbtcxyd(f~7|yaOSCIQLdHfKhLYFrDPFWtaBy1nJC^zLX5L9SrVNIb;5`r z*Y%!dIJ zn%Y$rg0sdJ^7n3wlX0|vp^C;HJn2RY0++DqHXflpCelC7QsTM!Q|>vnxZ8->jBQ7) z50B4TJ*w`kmF_c)BuhZx}SL?ABUQ$asxzINEL|q!jLSrY%L#!qr5x!eEfEcg03igcSK4V)22V{Nny853J#^mL zkH<5Hd!=I0UU}{Xm)9K{F{rr6>Y0b?*TKJ#gl?&9{@qk@GMc>->fS@5Q0`*)qTOZ! zJ(y@ZG`_~XzQdxMR>8@oD6dYkQ9kIOfziytiE}<#kR&B=g*ex~dFyYkGz=uWn?lE9 zX&-r{C}Y08^zEFv9i)pDJdV$=IJO*Rz`!Xbf+oWV^PK#DQ|L}*hg+mr@{K&cTMr2S z%cub8*K^|>$S9^)!?oIsA`&cY4<-0VTikY0BoNw;Fi@*Rz9AHFeiJg3+kafDIi0>n zpLpA)NhfEl9#NA^X;QZ|IvW1}uX}NFoLJt~-JOhtL`X!$?fv~b4ZoKd^pa)6?5y&q zttgN}`+qBwt0P4_DkdsQMovD^-_MDQAT*@Q)8b%N`)P_k%_58ZyVJkX3R#mOIsoo? zvfO5PczG@6N{#E5L=*x$(R&#`&3xJ1bmaI4*S~jeLgMOd|R!c=HUvjUn9m|~UMhGi77hU)lBpr;^2O-Qdnb@8yFa^1x>N*7e^2PslKU< z0{8HK&J=h4c|(PAd{F=)>c{_6oz!S!oQ0Egptr~}gg^zA@^iSvsQLM*m$2QKyy$8* z$v$c+1Qb$X!lcmchZQr$NCy+;m7^5Cf5+%<4h{j){h^QgQ#Y3d#&fyx?FH_1#X+xA zC-0zq;x`Fvc(!`t45N_qDn=gn-N}Z{><|*lKnJt?YzTYM{n<=?FT1APC~mKv8s!9M zz1Qfm6HX&;IL&^I#?Mcn8E2#FVe`GcW2tGw9~h4G3e!g%Nq01ZD8^-aeSg@zG^7qF z=p#&g8pyBdg}guE%(=K=I556HU-zCWey~0;L}Vpra6G8CWY1h_9(SwZ$Lmnj1B((A z_-FI)Y&3uM!HqO`c$kl&(KM0Lt-Cc}bd5xM#)9vbq|vH;GY{v-dhQ?5?97Z4Sx?Bc zr{dmQt}oNr*<#PL7%kk5%x-I7jsJ4^d^K5r3{E7ETeusT59hl%3l|G;-+qV%HVr})2eykpd@9;?pEu2+vlq89EySNKtgCe>Ga{bz1NV@tI` zsmO35#rRP;P#E{iLlvHG-AE$&_hoE?i4CVKmF=yHy4LS5+U05)+=gdAh448LB$;e# z)I=mr)M7wh%bYYEY(M5RU-)p=H7NqVLHEEFnE+!U)+cV-NKujuIR@qsyCcN%zyK90 zCtPAF##j+rfDoZo8=!O2>;0dG*1kJ-9*D2l6=gI=(5G)(Jx(~PKI}H@7JtxgaXI>} zS2_(|=#rdRO}@j03))W%SYwF5Fy_5m)gb97h6xIgDga$|P|3Dww^HK%WQ?QrJJld` zJJmq*q0Y9{5|MA_Z(*z!^y=k>FR4pUZp|ux{9bnVEpnbFJpC&+`{48O9AOsjb{ zvlfh=)DJhhXg}jpp;l`&yj?H8LrXk>*-fCADYqlr8w7`Y|C|ykjo8P4t39yhp>kg@ z!t5&>aC4!(-16hy^rG|az8DFGTu!~kTh6mkG*2Hu#9EfG!{7Scx|HqBs6U2dBb#;o z$DhoCf%JfpnwOaM1|#1N)yU{E2Rh4GX|2TUcjF1t|-_ zo-fIj<@Kgsu|F?b>|-Z+9p%-=5!faB(zLqNep*LZAe<-l-GZHV!*X+9IHQ71Pljr&l3Q$2lp{;bFEhpR2cKQ~Jg1%bYdto9R9xAQ! z&8LnyI0t+{2X{4kiN$mA5T`^GFmO15a^mLA>=2I!Xm35;{T*9%?7P}jeKhX!ZU{li zeS5+-e(Xjf@7tvW+@7Td=yA&X(KEH7b&&%gNK+w(I9p9lL$+Guw%AWFCRy2V*=)wQ z7xI1&Q?TD+vM^DNf<*sOHLo)sM2}X|jm&n0T*bW-H zE;6s;J6`lnHN5pIhGLG-iXuE(Kj9Nws+Ho4rs$5v)!uL=h=A~5m3~I~4A0w&Kj$n* zM;rI`E);UuD??t-vppYU>WRDMfnB2GnCDuYi#C1WE@^N_PfPpS9{d-)wkFUVu@ztK z5NQEzPbR1MG=QAii(518bre!{KYl`Vi=L}M|LvaJT@NUqtgl}EUu~~MKz?x@ZTSpz z?nuQ$mpZz?<&_XTnCoB>QMNRh+%`o!;6-JoFSN|$FZe!mu2y@!HR)L00pT8bthfzk43ftP)D;AB-s-e3(-Y;Khyd@%6?RMc=l)5c+<7}?D02u zu?2VRTL$&4|6&+OsX$f8?QRiC$q`IhVFcVvF+hNl$8k$`!Ujf>JO}tlg7&F( zWiuWxIICa3Ct+FbLBgM~7h~Y>|AHoK4OrP?7ZpDkQ;#))ghWC*O6%0<^g{%Mv?Abg zReMCk13=3bBE07io3B@y^*@i%X*8M0=D!%ls_V#Tw_TD8o*2*}SSw+J)cZ|621;lN zt&FmrhJd)KR028(;IL#zvHBD5vs&Zseix!A7qFa=n1tzb*ENw?*eSP)CS%(-G*{FCiN4h=eI|!lq zUjBpW1(d+|()q(blmc$XR-x?~VipX9nS0kb~+K+6DJW^~#*A1%~HXN7?!Gwr?c!o-TgWZVX@`<6zw1SskEME%^rm3B26k6RR$4Xr>5iZren z03u+gmBxQI*y}=zt~6HJ&y2`}3SbNred2rmVYFrvdCYQlz5f$b_y8miW9(5b9B3Ph z^^;I2AufDerp5mG@Xum87O0;O-@hp_%P~?PYW2Pw$Wq!=JQ_tJd2uwGY1ceB*Ixd8 zHv6)pGv2NY$lbfY-@8JWXD;3iFwea=oAHryOke;&r<$64!<=q*D6+;|Zom7pnywBC zn6+YWcWd(7a?F6@2xWixqyztYplG#ZvVToFH7aJ`oVl-W2O)gF&DCFfMkJU$X@3d^ z_}*Cm@lj^((=-C5uVoeYn+PC>E5QNCKD`uqUfR+7O5`lXoc}_D+uTPwopCZkNdoRg zx8e?mi9o+{3KIU3364IU0R@D8D;jV<<9w|rI)jSvh|vZB@PfP<^PTcqoK}bc66?&~ zk2wlEgYX2bM|#8@-_6t}Hc*(=itOb?B>A}9T!W)f*wI>dZuqhPKZYYN7qUMs=v`5S z09;n^7prjQ2@|UXpSlmrznr}Xf&k*|KDvG_5=ZrJlEa3n&X$Fm?Iu0OAhsB$eN(!Mg89v#;k~ZmJr<8!Gwe^^se4#@~ zy((sU<^OUpaY!|K?2TeF?$(L{c6m5Zvlrg+^5ofuws`Edu6eUpEl+2wv-cAD(Ubv_ zacZ)ZpimC*_u=@bH-`iJfgIq96+0`zviEu*5qs3Zn1XSrwn`#D;ltKFwsU)lD9hQ( z{g=rpJ6V6<pb!zo#D^iROhColHELSDF`1qwg{tqe4l~+(u zDCxofb8<&J+H(UW-3BHeJm)9sW7T^AML~38V0a+)E1r`lL=^0@L_Uw#G7u!%{2>Zp zWIVr+ovSF7vyCKo_f|ZT5H4O|qwGjBw~hx74mLzdnO5ASfa$*e4v@f78~xB>>&-=y%QF z3j_)H%N-tgJ0aDUdg2cX_PFcR5#cuQR{zPERV0Sm*7)EGrdkeQ4~r3r(rIXRHDi( z9mXEfuE8J}3Lt|H`TzYw`JBN1)0eV#oG5**3PUFTpNkVw(y`VFUCr<};C^Kdv7{NB zoS+AiLFmL7O^%N=j9zktQ!!KxL4N4^lU3!&2Ttdi{fG5XpPXFTARhATZTh}f@;^IW zEIV!c;kaFP()+yBB5FFP;wM`NPsdN#q_45HjQR?Kc{rZ4SoOLAs`=Y^P9jw@J?<_x z8a=8M`13!r+Sli!3+JQy!&n&*jGL?iU1zhE8k=lBZTH)cA1|zw@L~TC0>v0e%C>n? zs9z&iDG#iqCE9Pj&JU9WWe!#Qr4z#-1ZN(Ix<(MU;8)wCBR^)6Ho-zDK(gmbWJWaqH;GpSq&6$ClkSG1S-uYBD$O#)oX8IW>zmTB>(%Y8<@PkmA#;0FZ=| zP>o|5jAw;;V>DH>4Qo;Ad@jc=Cn`DrKW)cPL};VW;6XB3t)5rU6{ZFVQ4vvNqfPhO z7jmGKoRZ??(T7@{vK2{I&kXBGy#etFZfBcN0eLv{C37uaomeMP7|?(|=eMD2BJK3K z3Z+KPY&)n*6F}EdBJ*d!!RWG%ftR*WGH=q=Hs>)vjz3eYka@obNyi&Q2{u@Ao5AMs zGF_6H#%?}cJDE{&K+6Q6G*?CRVJR10)2L4uM||44lqrJ~P5unC3~y_#R>&Qz7OZ!J zv0$5qVZ_-AmPX*PTW$9cEldzBkI9TG*Ie}W5HX0k5ueTFIIG`B#&Nzt z!s$Lblz-nb*PFux@#STGxd-cH+wf-g7`RoR(J3QKlSzf(Nk9+U4V#PR%alP^*_J8s>I6U9HHWo{MN0)s=ahtet^qST(eX@-|)Ynry(!r8!ojh`_G9 z76L)GuhL!r7+$dIx^YRA5Z1SHZ4+z3=Hd`LtJZ#9T*)VbVP|I{Hx1(x z{NrN~^8Nl5KW#&o8ol=eLkMnE@Al(Dy-XiS)n6VXb#q$|?bhOu8Pt8*3D<1WqfdDG zt;s0M9lqCKH;u?(wlc10KdAm3mW;BxsSk%w9dyKdHwd4uf?%UgE=T>ce;_??wLIG%mgU==6Edh)9jb3wNT=Os zvep(2!&t~mFDo#RH6z9Is_(h}#09@2vn+T#>IHCYNsqjZ*My11A(B(Nm?R^fOf~7zi8bv+_C=| zgakvzTJ2$;3k5-Ynax~zoS+re{#Vdq)cr3xFy$I}zl}j7+yPzzjDf%bOuy5ZNV;QH z1PEXIJ52~e(Q(uwUd1qD?Vfw%cygcL=Z+e6=vB`iIHa*q<)uqrmhsRwuG4E@aGnvd zU;niHPO_O$zg`PQt6wZkIhzLi!ck(>SKah2CKimMo4$EE-@+C+hT%;A;=LlNISb{G zbguPko;{YYIoioh1ag=08AM}|k?e_G_X=fq$@}=^alVbLzj;ibg&1Oef{{`BSdecm zq(@vvSYrm3K8{C^StqGsvg3eP?^4ob{Q+WDh0=VY~G7ewQd~EePs``JBBx zNf=m16XTlF1k8e%Htv=rmyhU!A%zF3nw0;MZTg!!C3gguH<)DC$AE0t0 zvRoXFv*IuKPf_Z%c6X-_#9p(+YzcQ%QF4;sD8YxC-P@ahf{EAOk0mD%{hoV=*ELl> zo|gu)0=7So6ItN|xf1>Ta{aEGky35d^pdK?cqG|ump%z zkY=oR=-so2d#gF`L`m8(@}TQT%5EQ_-Iz{fy^j}qVVu=w#5=mrJZHOWW%Y?s`Tg= ztIhgfDwZmIs_?;rpZAKgo3knmuyQ^P`@4yVf`pyyei7IToB6!K)T27a^cg<0E~@v8`CY12*rcx9h#|qIOopD@i5#>nSh>4iA(qyRf^V+)x;GA*{m9vFYJI z<7sT31xJG~1w=a@yIMTg?_Gx~Ui@vTqpCQ6xZ(V8Vo75$jETXD!A{uDG$cFT`kSKg zxY^E`-O>v!Nt zN_MLEgQ+}Rh}c?42ibh~Gu-9&WPb3csV5)EMe=&xK3NnTyznL*~fJ~Grr74#|4MI&fC?6EQGrLgAEPq^^KRc ztF+x8j5A#Z0RCyUW;Y_g(CYpYa&3wh9JJHYvprj&pyO%Nx2FvEDs_JQ+{L^i!Xb;x z>slmWw&Anw@#p=U(MJ_}rMafI)6wY@sP+_tYFAJJ;Lxa47w_=Wu6yge>A^L6)%n(ul8o$vTZtCVKQw35LM8{!M{2J3ynb&A zVTu_KkGB-5p$Wo(SLNcCQO%%gDB09WckJ<4^E5fCVjOGNIhCQ0j~olyj4#@~xyx2a zASIv8TG`G}4}@b;2QoGVnII`bA8gcqXGZzb%n9M2I{=MD>;cY-!&aTg#z1v*ejhP* zdJS=fE>n1Fw1#bwcF9~veDh?vJhod6KXspXoYwD6wVEph4jWlq1JEJ4Z{_KV~PlNl|?YfjR66~W!@RQDFK)-(il@dYBcCg_{IOIK$x3MkZ^6vJ% z+9VD~-d6*+rp%qIZm$TEj2o)OO)z`jpJ=z~QNrv!*~oOo%i3zUVQ;4hXX^cWiTS-C zb;Bwfrc($%bHH=O94@4-uSESbJ)^|~?=!#{VYQsA5mt)A5HN&hsXlnn6~X7jh6e)L zv!nBKYUf&i+EeUY4B&+iBb3h#bn3?(a+Ub@0QC4iyoHE>jI$+3acC~%n|s3sT@e}= zJ912@dyTBT-M>`aj@4seT%Vp8%L&2C2D;q=I?Aa2YPXN&30&HczpK8Z2ZSHVmX|M} zrPrP><0D^2g!^i$L$6HQL034bJ#bEYF47jNCf#BFz&x!V4 z{tD^dJr8)#3iW(BL28BCYtr-pJ$NwiI<rh-6f$A@8IFI1i&`e_W_|MBRswY7=i)saJ z4*`oxsr`KlF>WWP-^=F>9x#2?Gv#a*r1sC0X}%<-EQ$oL7Yj)s8AD`&=-V!ys$i8P zERhE+=a9iAl+3vw#&la92kC7Jfz~&(Tj!gmAk}X0c%Uc?ipkm;^NNCiGua$`kpaY{ z+!HPg#H}_tG}dXf@%<2ZP<`Vp+r&mjQYX*33@dfNOS6|6yCQYkDgKP|Q-NYBlby~) ze1o*a55l}Z7zgp!y`xK}T@EiH(b{40L=N!s*`cq@Q<-9ZOV@x02fF&@zjhRcav=Kf ze+08z^Rj^H#w3`aj|4pp)q*lG|HEp`a==BCTm@sGhh)QuVe-G-sbVj%WNp-%{qYwa zM9D|zbq9Btp7WwHWl(#)IcnXia-=-iGgp=#^j@~5lbI=Tn3?sWIbcZn3~bb6nddL2 z=(U_|R%$t=Rjit>rg}gJHgkdG9JS_krOUn2nNAo3yATa0^AZqofeE@kXS*=#Eg-ux+P1t#?;d6|$D7gT34bqALifdcc8 z5|}`iMmJgR;c>iRiVvoPft*Gx8qgk}x_{}xAsp6z=Du9LNpIrRiQh{4pl9WG@zde- z{ZEH|{AOz#)HMwTl>W6)Qsjsb!n~1s91-kqni!s~j(cpCCMV>3ydtSx*?E5q&XtGLZ-b+Vr0TWpaWa1%`RYP4MwO}x#mvy+{ZP?0~D zBXo=_>X8$J3<8tL>2q3YV;=4=*pBis@!ERM#g2R+?>ZW24QOb)duT)DDpfPZ%4r+! z1DG_qtPcuNGCla~An)tg-6l2RwcXK%f zyYJuTPn>^uyNMcH&SX{-I18Bxt1l*3yHK%cX0}>qHGVA-m;D+XW7Us7pf_6^q2b+h zJb0$S3%LM)neY(P&B z$pjNvF1p0|1bfgDF9sigiJtZI?|ee@%)-4Y$)irTdLQEv-O7DQkdK>NT_Ni-^j@-> z`$<_Vl*OTfDg-pi7z`s$ZgXPwixZ~g6kR0?q>O$zJ%@OUn?;2nI*9c!b0OKbu2k3w z$Ed>Px0f%PquQ-$IOp^Yw;=S@HMxBx#R^2-{&DNN7bi(LmNQsNXK6qCcgE&!W=kJ)|zRM1*du)he@Ck_R+_i?JU zp0Ew-1E0?pDDF;OOFV5X^zThQY!FnY0_I8}|FN~enEEe9`}cxp4`BbjP(eBmu2jBHIJY^@#roA5hmMi+^ z`msZIpd`{ft6uwg1cK;=&*RbWl6VSlMyrc@s5qhjNAP?Q)nguW+g=|X*a3t`Vm$#b zOSz=WXjoanF0OOWk+tKkQC>D*E zF(GPiKFey59_z#ri}$#GKyW`#d~$=vcbclH*6F1rFowK+!`o2a>O%YlLEGJ^5OMF{ zQ@mprgeLh#$o`;0zd=aHy%US(QHfnA%cF1Tc!U~@ttEc=uZ}KT! zQhm2QC3Y<%AT9f$OGqtxW7TCapB*T1TEMLWALxo~UH)r&cK&tRKlU3h6ra|IF8S za_F6|Ff_u8tq$$hxalu6%JfBZjGvyIpSy}O%(71C=t-H{^wt~GW3y}cwz?QHvbW*@ z@zrxj!C85RS_6D?^jIF6$T=Or07;VIrN7eFTxaUtdN|e3LP_VP{Gvb-46)l!pTT<* z{Jpg*-x!UXloIWNYi$F6T{YR;;JqAclpQZZda?!v7XCj*_8Tv>f$(vI)u9cS(`FZ5 zp+;-r9FKAiLd23nSO{6Lg+Ej6%PU70!-6b@1yB^g>5w6YbjCb-2Ek}uhjgEDs+bYN^r)|F9YsS;o-o}G@>)$vub7(x(8&0#} zyx0}xbS7EEUcTb`PVeZ^uA4c+Cr=%_CU$3mmg@5M*ixTf#XEKHRi~?5y!BDz0@Vr| zAb=Wl0LMD@;G_1Hs(&PjoHP-$>fxh7S=!y?YZ=yy=;`N93t#Q^!$k4*B+P(QE6tAN z6>PB9whxrgVxvH%YR;tJ^p+#3(4VzOSw1&Z008iRi;`mEkhDIQI6(=)}~*i zomAHcC1nx>F-Xb_l#6dni2v}bnj%@uu+b%hn)W7V1k3n^qxmd(bHzCSa-3eb9x_N**Eag)$s+mUx9QtGjh~bvL>)9C5I>dH zKel!-MFf*mld@2=foMqa85yy08K_A3D9I_AiTGY#AB9ddNtXPVS~*l|)d*D&t}o4Tly=kg$RlD85$sl5A5Jh^xlXg|P9;;gk@LW?OP@LH1WGcB(F z1F%3(zkA7wJ+A{YSr+{nK`6PLGSm3}dAlW>%#QTgxp?~QnKQPW`oIJDd$yrT9dmlu zy7}{0-g+I38AN>*!${D@U)Z~D{(|LKpZJRAS`hrNq7a2BL}5Y+83rbWK3O<+#M1TK zuU$X2V)?=qOSj*-b8*M&$)l$q&Be&?-rYOT;tC1@ArcMg=a&yzzT;q`0kHpf-6TYS z&y5a`$e z1<61nV!4w`QCZTnJLew9dPGEmmIn}i zQ*uoUS;?`X(Mcvu0D%8RIg1#-X~xVos}AQ-kcOY%6+y}Eyu6*F@87<8D_j8ZUz5^j zq(nrg^Ixzk#3EKYxfQX^eQ@{2tMF_D;dhsW0O(w_xE;*AeDX$MtcLv;B?*+<+q=rL zUthZrm6V65|JDen5uF!uV(a8Fi%z9#c$$J%_f|T36fb7ybNBY0=h5G%i?WRBr^m*} zr>OyrewPUnLvl<^Lb`?kWaH?<7~@YLycLsSVjzHDOB-;y%&^eN46Omu-#K?j3=%T} z_sw7WE=6gFasmTlFaglQc1lcie7Xh$BvaXX+8RDw-R~coj?mWyA0f2D#=`*w-8k?e zC>bG8h(Z*i5dX^~loW#6ln9@&+_EjYb?f?rA^1a3hD*mTo!d1ik{TFZ`sY!7o0qb) zV-Wd$ilA`qy5QLINh3 zE~=ubZyQbYuGyk>z49^F?g}ndJ9n(_q(rHH=a#J95~8ML6#9A-ge*lO-aNkGYiu`h!McsxS50ljLITWe3(2Q#!ook`FU>9e)}v_2L&lZnImPc4K1Hu2K0h+qI1B*eu>>j?z`EZ9@a?22?9+~>#o zC5V8n)v(DV(LjX!zO$w%C$SjvA0&9B+(5AGc=%hSApcNFd)FP5}pE2@cJJP)ZFN?}1m>&clf5zK0AS=q@}1Aw zK!k`qPo(k|(_thS{EWI8(uV>nfcYMY zAQlLM`G2tJ1WJPHbVdZoXS`Y&C@2>OK&LkdpA?_3wEPzHpF;@+{HK743%Jk6=hhe# zc>y6nAo*Nl`N$_rAq|8q&;YvhI1jez^FTW0HTf>$mW=JF`AaKMa>M$mN z6jUWKnM~G?pB|Z?h?Wsq@{igem=KXz)B=fR!GJn5BRySD706o%0f>efDREgk4pKmn z0*tp)03<>L0Om;nrCECtF~3hJC^p8rgvi8P4$%4SQxw6X$s|BXeNrv_k`ot%R88t* zj3!JVWicoOkQ0G}M{#=_8Exa@<>v5_Z36qGSv@O&lw-f2xZ zpUF>#7I_{c%K9|FcK~MUA_fwDP>4eOF92Flm{9)TftWZ@t!a; zQS=-+ZO{+(U5y4o;1f>nU)`g1v$j1)UHXuMSn}w={2~4NO_{qjildZN&Yisr2lVgL zuXD?`{U_WE=T$PwGS!9?d@j!zKXUl!X&cwA95=F0=e9quIrUTvD2AbUb@YKnef#(R zwNJ0^V^Mr1A2CB)p)|noi83eT)lC3o`Ju!Z{gw}x z!p7JGi^dJ;J#@*&o4kw?Q~bA0?K@~d&n`bV9X4Y{3{S~uXx$TowMhrpO!>82*8x4+ zbZkBRWrY8(HS3?o=^}hC&6zUy=+RAcCQTSTeDsNzS+)v_0_s<1R`l=rYtJ5Chc7;w zpdl}fN3U+}yY(7;{7DpGsQj-B8O;aX+C64)@4h`cb?Vf0+r!Av z`-dlv9y)x?+#Q>j^zYHGd$*oPpGIO@vQ&EblVzj3_U+xd?~svaeG<%cSQ@4T-Cr`c zN1yJU`j41;FEs4h?qy>K4<0*VU#5(b6YaapJBIe{-lI$VKEs#2Pc&G?#P}b_v;@DK zyZiR;IkcbI;B61ycy#CdzFp@7^!l*%vu7=vIdQ@4$#Z6nU$*0}(V%^HV$JX&gO+SM zo2Zr;u=WlzN({cadvyP9{d#pCI%%D6vVo>xe&3->`LJv8xbEFLc4*ga)uAUk07Xss zu6bjI3?H><{fLh*v*7 zylQy&4n4ZG88&NkST3gW|4Oq7kB?8DIDW>&$=eUzP|GNF!0oeF-U7f!Jv}*P=#UBX zw)liZ+&{XqZ?CSucIYr>&i+IbF@@fmKYiTPDN|Q$yeP=Xn~Qs9j2=9F^_kF@R~HWJ zGO&NIw$19zKX6S0DH=)XlN@Rvo!>IPce`0@b|2k5>ZjHnH(w5CQO>!w;|KNX+^0vU zMThR@Qb=aZxVnDQkUm{{cWKwH_n@ay$qx=J9@4$@xOEq^jfj;|n#4D&W{l|4rDKmy zLmwn(naKkH7#YZkd^&g3zA6|ivE;* zV`KLH{VPXy?$oX052NRAj#G=o5VL#Lnun3<*nq3E$4|ZZDoQ{U%~INgkZsGC`X=ha zAD>(`f9BEWX*5OAv=|%lV8*z?o!Yh>x#W1NfM|1JsC{~P>3}}J_U+kq;^M<`I>J!U zqI{70{^EuWr+}mO)y1V#=I#v1GE!J`cmJ|}9Xbu@)qdF2m2cy9>X^s#CyyUBcH-)l zt7c9a)amEu3wB*i;|s3AfHX}aU!IuK|Ca&1yLak0`q+aY0?7L-n>L?*px4EnTswZ* zi6=RFvoURrBXs5kgSvO^)PCEQ_a=&BX)*fU zm3jSo^zG5UXYYPj-Y2m#3IUVPm94#g{k32JJ|m~hU$bz^sw1~^d5X^n+%bD-&z_xo z^c=kVimwTo0SZxwzd4{bHTc>4NS+iXl>cWCF|c!RD^|o63!oqb9(ok&rP^ zqFUpIm2BSMzY?T%9XEINnD*r^teLg&$Q!{Bzi#HJgMMWf?Y(ex>kQSC)f4A!NirJm zE?sjwxz*82msd~f!Q^B+R%zVj=Z3a2x@OC+zjo|c(Ty<)1V|G}MVho~nEU2sN>;WE zf;-DsUkaUD28O7{4UgpuVYlkXsDvy$N zdkyT{{HGpm8o36ABxL9a1l;{C(-v=kG;G=ab#vO?*tzrMg(zSnhX63N!d_-axR^|N z(VyB69NN8Zw9nJ9NK~l;>sh@z$>mUyn)NGqAb`OaK`b+*090z(>8DyH8C!?uU50jR z)zC!_1j`@^QO6xyKg~z1wfp?dDfReA5AJ$2?bh5QW5b;BN7E~BymV{NqP};xEn0jk zxmoLW70bBsg6EGN`gCgQe(U6h8_7<)uU|X3W{fjyG>G`O#g;f`>6qECv_D_CcByA2 z-P%ou1Cw}`L6%#tpg!u}&dpbA_uX{u`kB79ZDTV?o#xGp+30+p+)TDWq zCr#e}Fj2^SIbrHDeXGUSZ`>MMkDWbn>HQF+m~egaxP_UOC!asHvx@L&*48`4nzUr1 zLlP3BAp~&`_AZ#dve}sRXHTqm3AnIp<7o{IDDV%UD3JDK;f^!yXYRjv;b7N>p4r)k zN-f&{T(5*m>D8uN|Gr~}Rk8!mu3opP;A!t@U%q%5&M(WOPV*A3lx5x)$tcn9%BHys zZnc?w=;qZ!6=QEKpSd{&ppV%mFr8aC_|gaZ@U`p9dX~SjaN)zCG=*#V1}$nQzP^9| z;#34jhLGjw&P`rNZ;I;*8f^_n-)vCBN*>2?;3$He< zSbt^wj`Igs4Np0_>Cn;V${MYIE{9*ec%gSL=LqTQ6`9P`)T(uhT${Ts#%s#uOBW|~ zX+$&{&SF)9u|V55XjoUq2oElujxsta5Nizg-?M7ku81Nl&)+({X5`BQt5=^3kGXMl z^WNOy>#m(WxT3s5(6e4mfBD&o&hm@Q79r3kzF#=3w?AKg_xY>4R*ZJHkzpOCDWDH~ zylC1?w$X?yH*ZX8D{fx3_(e?W(f#XEJbylQ{p#vTohVMteVTkg5JulwJ89qjAJ$#H zw0)ZK$>xLi-t!9YR$V((^{{mPCvJ@b0k|NU|m&z`j(y zR;_9nG)$Rl?fdlj!A*(pY#P7xRABFor>6xM>640jO;|m5 zXp2_|mQ3DoS)i#;W9=Z}_5NX#wkw;jxOn5*k~WS!tH&h1VW+`r^sf&e8k!ZI2Lu!SB$DZD*Q~+j?x1fq~hn->%6^TIbKFIy`D01Fe!|I^L( zn2;|%Cjej!-AeUbIqs*rjoLP@SD(w&m;~TnrdG=??FEwwV8AHt^d|o^hxR>;+f zOH;x|E>(dLV9u12r7vE(Y)KnXp|l4DNU187OtG(mp1vsMgkN4f^Dr>OEh!@I@hjT1 zP6JO@nS0rqHELF@QqD;f(|zBZJa{P_)|fDLatS5GzfH9{x9dBo>!5~VuV2UK%BaM| z>^wC<(8>xevq7?yyO$4MxD`}q;M~Dg?TJn4&Na(=y0;k6sbz%<)q0Jc`xF1#$N$mY zGiOZMY8O-ZnX_jTva$2~7v@bD_fPKE$s9(EXeuM5OttzA%9koqu6~^|3?&Hz94a>H zHf(WK2mQ*0c<_ekIBusduHFY=TS}i&FO1E(e+bPS$FQx9-}%xf?Wbl6h%b)TTard^fX{XKw8M)90UHH+@3d)4){g zxGy1quJ!BWp6xp11icJNPE|M?O(vcIRH0(6YBJcgcdx;{8Z>LywX#fRh)os@33qN> z%dI`RPrF9;GI@o1jf(+6l!1H*B5*5Gd&JTS~_4D8vwOnDu zt4Fy2B!%Y|Z#|@Kqw)s3^u+fU4&8j>)uR89F3oKSu*4G)c;H&9UiBg#MVbtqF=OSS z-K$#HL4H?nmU2b!uARC4A;mQ#A@%;FSbNABKioKX^l`Le=#)v79Vw@h_3M{P+Pe!{?ggAVR^Rk$?1NPX^sd+JiUG5 z%xz=IPLswAaQL)9mJs4x@#j$kel3e)UxXxcHZEA?A!5r{s_f+~vv(<1vqt4&E_R4u zf-zv&Qq}8uy4u@&l&(^%a%ndfiw3n&VZ`t;J)2hhrCT2lL}^WscY1B+p?A{?UQGwg?pNME_tn8y89;8?iUc74`0#G~VwDCAZ2(2kY{0O} ziEXB2)w*78PWB!ptJbbk+DnEpr^_?888&fP zuOAxx)V)(N8bcZa?$(V*;c4z-;@flQt|khOVUdZ^2?qMNMbf-ZZTzv{n34T|YVcFH zt|jFV(G=kC+`R3RT6;wImX0#2O2e+he&p^wz807xZ{N3@gNIkQ>6?D3U9)Aw>YhL~ zVDW?wP3pGj+Sw&FD?KqsNO^oSI8j-Nd3N#aqo72kd+hs2zf2RL5X2ZW_C;IQtyS8k zcDJ@2s+TLsF?eea^eH_j0g9QT3%WX9Kgfl&$~E(0G#o{=QR%g(w6O1i;vNIV%|i5CEhwq5Kbm zuoRCaK@=1tvls)50xxg?LXiVb)jJRF|4ZoQjXk;!+_?X~8Ulg|1Ro(1fzX19<1hda zI#h2{#>5k?&RoBghm8_R83<*gboSO8v|7jBlP7j-MRv~_*l)tZtA1%fnuX^G!2s}r z@VkUf6gd$?^K(4_-6xIj*HL+R$TUl zb!61MlqPc=sNZjxePZH+i;wPI4R9*$UbVWN$%HMZPNILMMvM)d5kg5ILBxc7+R$R_ z*`!H}%-g%>ty{hB&;!pJKh<;wS`+4gZC+AhWLQK*Y;L0|)B1L=P5>tem=KeRH*+Ct z(q;0fAH2^k8Q!;N|0{m)O!;%Lm_V6*h3Z92KF3eqeG!|I#>?ddB4Sk?kLAVc_8C1| znRshN?;ca^LBW}_qW#xSYgoxq zt)>wvZbt#$rgYCKJN8WP;Gr}bIU*4Uz{aUmm1^MhnNyEm`DiI;iU8`%5suknKg}3D z2>G2E(YfoQ9XpeZ1_%Jh5kjzN0=$VJ*V^qGR@1yV@xVVQ^4(L<&fQ!9;6Kf1b2^
      x0UTI(Mz^{{Ga_y8%&obgLRlAa^ZWqD1{Gr{4%-{YhCKmyMVE%RrUK9lkv5^BsOP4L- zq0|Ys>Xc;3Ng~tgj+yZ5uMHct=stUHQ@`_z`}FO%w>aMC( zUcn1MTH8Xfq)MVs%1YKaQ#q-z!69L(M)%ochc~NLy?wu_9g1l;jqN#X^rRPwu>ipQ zmBaQ$D-~h!9rI}0hZv2Hv#wzjcxhE1umo3rxIzF3XW~Q=A~W-nq9n!2Xwg!Fr{xZo zmCj;T7N^cd#?0u5@X*M3&*tOD59r~^0^XWU10rx70fHzR0RYCN&_o;7u39mf)HMLd zQk586m)OK?0rQZ-9A}a=#VO3ajR+abZ_x68Y&6-(sS?f#sTN`Fy=l3PUiv%cd6Qt) zs*rDUXd%J#0z`tuHny&-w4pJ=lB67F0fZC)+0mLT&Iu>QhWiJG3bs|3P8n9Sh|El_ zz{{l4T#HD)&50}qNUD{bm1wA4+CeEJ(mT1*rF^aQ3~gR65HJCRh@2isqH!1yL2u*$ zF#k(4h*h!bq$FZAi0Y)UkkHU%eT{Alhj(aU2Z=yF@-9LF(1MZU1OOP;soKw_b$UUN zJ6Eb$CF0WIYY$#VCFN2y5_#ZQzI`)S-GPO3%!i{rinsZpaeX%gGUE~$k<+C|1%(7h zYaQDUU)H^0X&L~E{#!1mEJPu&h!sw56{=J%E9&*U7?+d{Xn+|Oq{XLYt1as{A*Dj#?Uh{<#vODh|I@TZ%YSg=gimHeRQ}a0 z5)cbho?pzW-E;lkV+VGvbV|OrYWKxt9iS-)5ydJ1Lc}1#R((6Vxu>t4v+7M&%|VUr zj3NM5f208`m&tAAM%Q{{=FVBPaKXaaQ-^eH#u!Y*;>yq%ziIlMLsxSK44*uq$1mUpo*mKSD1vNb! zi39e(b_&6hR0wNn7&m7Oc+FMU|I z8AasPwZ*unz(xMj=%&R z{hL!!P;x06SrThe#DXEU($75?&7He=(fm16$91TQuHTMzsX6=b(G$C7cMUwUbN2xs z09Xi+LQXRja`1Fd&eVp4>lhkPj9i2WKn6jDtG$yf#kS+{*$WrUTe5J@gkjxmBOZRp zL*14gI(F*J!1{{)TQ)w5G$>ePP3CW}n6!5H%?e!xEnYIMUS)S7e*}vl>Qium0ze36 zXY&99seb;R5DP5|LK%%{J6l>#Q>8o1pKo^f`3q)G?cA^`(eW5qib`oJF+ql**Z3rI0MHcBrX^rQUa=z1#In+crdWwM1+o)jD9o`kOMM9h@;VMj<{AM-0mvJY zMP6&KV5HKtoS|ea`h3?I1+%hwf&qm-E$XN9y$D*Y?@&Z(%VZT9I&c1xMGF=!m@~L* zGkZ}Z5SULx0`*%hDCxk##nFv<8>iM92?B!2q)CWyb+xf~1PI6=G|Opq%mPkosfr1< zadiSL?NoQj;sx`UE}T1m=H#Yjy+s2d0RFZO3a|_%k-*rL9Uo(BuS|Y)Vd1#x>E>XW zwRpmSMn;o>2(a<+FtRo-9`2>8H5s$+>exoH$xlsr}4_3l}a~Fl*-I(d8U$ zu)yb~r)zjnm{a~8Q3!%Xo)>sQ{5OqG7ABMk0$o~qlF^`xxbq>wAmu?2Q9@c&jM1RU z%;fB~0vroU~)trG~_&r^g)rEvaM`{4b z47|Sky`o61ZmoZ5RJ?l0gU27F>VY;h?Dp{kRer45xVqELQ}Z|8iK}Iv8EV(gQ%0F& z2nmGaxW~8dMJ1)FbB!MtheLpYQDYE|ya^k*$Cs9`xgJ`j-jCfnb@Y}qCI$NRT_6PA z*lykk<5;gz|FHv$6!l`14919px&FcL--o26YYZk$UanRf7aj?{8dohh7)8Lt-I~F;#VD-t%k(fm^ZPQ?2Pd+xy*|B8PdiExs2)gk3 zgZj-{wmeV`GBUW-w8Tuk<+~H0jFhy;_nyY5=9mnEW&0*Xn9I>-MJFXZ zd-nA4{U`g^uDtjvu~_xGHGiyqV(H2gkE3$*ITyChn7j5g4;1#aoJsufCO9TNE%C*f zHM{p+FV?8p@X>u-++0}&3qDE?^obEEqK#+8x(-_Zd-txTWaeaK_WK+qqw-7Ug8fB!wK!QrYkPVzUv!eoro)NUl+{cFVRMTCz66`td8@rkHY5eHV-w zaO^>3gPt8Yee#~g+hPnT^TWY;V^#(v=I8~$3q}J08EI*H(W7adsyY7G54=rpICF#vN|tqHmJFf=VIM{gi(u~wa{ zd23Um%XIDILWlr>XfTKZr_0QN_TF_Gbf#}@TeI^*LY^4%`qGfmGvBL`oVFab$Y;eQ zam7p3uI0_2x&F{EjaRF61OSm3bw)vN(is5&CS4vca4DIhZOQtzekM1!9l!B3$6yS9 zbtgq{$cs)^17NigG3hhnVl+-ws#h-`@o=wCYHDU=OrDf^bG#`bDlXB;0gUM4%+H)u3Z3LWr^Sk9A}K=;9M|7@M+9Dth`ozH%wd$Qv{|%VJ-pbA`Tb%Z8^w zk5WHWvIWMxgp&v7od}>BwdmBjQ6n2UCDIV&`;(~7<@NE2$vHe0Fz_fB!a) z4ao3)7@U)3jE;*n(zWZ=ZS4JO@$zjiW3`#_zRRbLIq)d#>F&8_A4Jw^`E$R4T@P#p`qi9R~oHm6~ic<|HQq*BT8gHBCP`Z|(V)*?R8L`K=@7u8-vzxg`}N z5VA5mr@X|l0H3g=EWy4`uOC&B!Dk=G5e3XSb?j&ixNmPhPdeHfJ^|4G52>q zQrp!VSl<;`F9jk*-lS)@gyh(h*CJ#z2)uqIJTkmXzh+86ID@(K%S=tr#RZR(5D87w zZy!DP3yV+BFo~kszmt+P;?*2LP_NZ!HHjZmfV^e1Dy5j~GZ&o<&E}JQuTL8@@p`aP z$v~^g1c5i|Q&KbIbB%yTdaYKkNqV0EWIr`;QpNt^xySw@0SN(j4qVhWuh*ioBZv

      pU2=5hUo?#2CfPde}{N^jJj+%$9gwlg^pF{nV7 zs|g5BsP%l6#`Wkl-xE8p@ti4Ja^KWgogu>i_5J5Qw~rm% zwB>X}24A#U_v)PH^2Q0b!ql80ZSAz7n{N1}hMgPOZ|KG?m+}V-3Q>qc6kfgfML?Mh zg0w^fugz4S>q;j9y)Jw2hXF6Rz679am<5F^HkNUX-++lvu9HmEG;>zPT2lO zX;2e);>5*AWN@civbaBvCInQxbd(B@ksJ?;) zGZwAZF5EP>+bx6zJGbsDXHF{RX{zpRfAiqnj+d1>LDhWPlpYQ2c%l3c&d#@9?H)1V zY3JdyC$%Y|H$lwh-B`OQRN=0FeE!TmuNsw0T|K$D%bkq|QC54xgaJQ#88{ID3Q&xr zt4s3b<3oDgpg4m|{h67iF23;#trBur% znUB{_o@c**Wu2n-1OS<{yMhhcFunVJ3NmuH;j0b-l89pJ`LXyW1WnW3}FA z*TxGyo3v_rfBmYd{axK_x9QpJ+LcRt4>=Uq=G_iW2h{V`v$ihYI^It6cwL z<=8G86-H=NW8#!PMOZ*8*O$YPwXG;=nHK&}m5xcyA7 z78suFT3fUH)IQ_pWG3x8yMFkML#&K#J#5J@B^W&~N(qRnM5i`o_dVa$q3hk6)k`(~ zDeK&tsS4E^@x-ba2QU7{`YqT6urhJ{^Dj*umb?jEP31uN%K&^RWp%p0On>y1Tn*5^t}X=eBZ9pJ_`o7Hv2?Z`3^* z!unB9NeL)_1^_O;;y(YHePUTC?7dA1R5DRuTn*8HO)KtaQXO`HG9vQ-n*rW##jWzrg*(#Ro{NNyJBvzLxmsQ{V(GZ_}aED z#h6xiubeT_rk6+8Znj-KX6`}_H{s0oInVdW<<8!{CM>Dz1`L+DV^IXI#VWLH<9OxD zhLBr#XYN?`>%6V%<%^e(?Y3PZW@x;pZC+5*h04o8DwXi)*482K4`QR%uG#p-Q@S#O zXr0N%(s=NMwOMe()-j!qDYRL9ixE4=|6DHY@%|-y@44Fv2WCvOTf5|!xNwd}`&Cr+*@%{RTSSpd+1`7 zMH4nHH_V)TY{|HDkhd*UfAqxOC2RoC=U;X}D;4T1J7>N;%5VbyVfeDC?aH%pKa{Wg z`uM^Tk35|#HSFYi_3FwE`(%Uay0OZ{ z)D&&fYjVeW%A~mD40UOf+;V~u_*TUQLoctN~Vy@ z03edcQVobG1c<1~$t9FbWoJV}B8oU)N+gvtlNPlZ>CnM7C-}}{=!?#9jmxA-aO$8@o2xeRwoXn8idM29==l7JyEQA0Eib7wH>k2zF&KYTFXr^Q zd3su*va?lMBa(uE)2j2dqSD@0sbuk|DNjNOqG?XA))_^mt(^=JGk=IxvJ@m%RbnFf zO93`bnmoOT6iQo#3`(>i6bw2eCM*JKE$`@NdvEoiSCtkl?^K=>u(gQ-Mv;CD8m*Dz zXd8PKOZ|Rt6w#@3MOtZQTQurSg0xn^dg5k&u}`D`l4t>KPL_!<4)%7)>ZaBLpQh{$ zX1NT+&d!dZuwJ95Xq*3XjRG`R*5nX4nwWH9jzgL1QV&MxxD zdpF(4X}Wds4<@5%2|U2_+PplI+{Vl}D+NXYxBnP}pVSDU#T2<36QIm&QwUm^wmiX% zqoXYah=@PcvP3IIBa<#qtu?9a9ThBXu`+>3f@shhI6;K0t&KvG3P5bsnw=0ZwstB@ zWak?WK$F%i4m3~GvcRa(n#}IO(ntzmokp|-S3x_QY3sB)49(9OiwU5W7_m-{6KeoU zHT3E{4inaFO&UtP{r-A=oz@^TJDiM>x*g1Gva_{3a&&Pp3j!HvjCnJCz?@R!_D=5V zk(ER2?Gy+W><%pYLS}aJveia~qm!Ld2C--@fh_T5WvAdBPSwo1EAI>qM&2CXgjLw6l#Jv;STGr|OeJ;S z|Dh{_ZDbVq=O{!W37*E%%Tkc=q`KnMT{td@fnoK66(Fh^@`zMs& z9|gZV^Pd20NPB#0`@&VXf1b2t^uU(RDyG0!(r4ekpHV7ED!+&Q9AB>WHN53h{Nus} zL8;_9D+Ukor%HL#S@_=5XVHZtwj2?O?pd(Id?ph^ixV`lL79Y^$4`fi%? zs|$k#Og^Wd@9~8R<=+m431$AR1_%g(2*BSsp`>Qdo(;YUEX)4cBV|PlEPVm^PXkg2 zX2-m}a_^0*gr^}pnJHSOjHd(o+}`Bxb{l6v z{Gagzr9rmzxS+Tk)zInFs=G_W)!=^$($d+u#Q2mvs^Ns$ok}V6{I_Vc5QJDg1{u?W zu3Wu~y^2C@qRFLfg%WNwAmpFcBL7_idHppyl06`)Cf)``frE=eK%Va8j1kPtz{;C~Yq0fA)-rV!sFG8r0v>}~M>u-klXm-{t=Y`F^FI_nNZQT*c<$-*h` zzby)x<`$$yXohWU6%B5(Tg3M`7IC<-6|I8OXtoFX$tjPaL) zst}N75QTu{s%Xq(V!8GcViA+?XKv0Uk}r89A?DUC2c8Oq`wmlskYOdd5CEPRh5y9n z2g{A~03jgo1OrIZ06`$~gcC9RrmhzuM6gK6f4lR1Ibf{{p``-iNALQpfDplN?Z_MexHWcrIK4k1LTRGR5vjQ=7Xg+jseyeNu)k&aw0Hxn_Ff)IXJ zmj3fv$|q$s8ox_!Y9{rUv{ZOg4#gnrQf@P_NO%GN+c}^J#{-&%mh<8MBiSV2HSzIT zMiVDMwn(WGD)jkx0zx<^B|TTC(R0A7R4ID~{$=llW&pv&L75DSA_4zBKr|(%0R;e$ zfk*%r{xj@Bz$L{b8+o&i1Q+kJuJ$xSK(EI#IV2+a9_BWP$hK(dB65PsZ-$115CKDI z%8gCPG3X79ebJJhDvbY{D54=QGL;hqPJkXoOFOEdh{?ZKnM9M3oTW7yjhvHb5v8EX zQtJ!`gUY>BF=xe}W(Gnjm*ho2F$n(mB|Q)lkxz?BQX7pXz!oW5!d`(slMw=-%S=hj z)ABrV@+j`^zz8DwtNoaW0Va^9$e;YiMF?k`dC_SNJoG5y#bu^yj0T>zD_+z~$sqji z(r+QYS26)D_-~{0U&YdQCk6gL0Qzs=7D)6_zAvs{z4!3pll!-Bz6{I!H(%F^7)0lV z>{>Rw`8+pS528PZr!FsxfGp~ibDU#QDM0&Lp(n`6SZC^-nMD z7&mJ8+|8%MvP2n;{xSc{2)?~y+=%Hbwm*yJf@Y z{uDKeWkLAUpN^!l5?FOYTF-MH*M;Ig+AE=gZ>lCnTT!c-s7kCs+E|OP6SCW>WrAE$Y7lw zLqPtDxkY)=U&qdA?v$6Frk0)*G>V{2jC`LEpFnw596xWk1FzK@On>*=i$# zK%e4!_3G_-Euazn?>H}<0NTD||53f0xkbchVDSsdE*8aN^}CE4+eQ0zcpKoo@7l${*z7oMUs;y?LjD4I;DW`|*;ekrO+&q7L%z9UDqtfGoZ%pn97 zUZ4GUKp_fIIOR=5lR(#OH+p(1M8dj?`v zG6X54U;rjklN69(G+C#rAk88cNo0w{41qLcAmDkzV<@*aClYfjG8v*Ez#_m9$PmC1 z1x%UiLO`tSk$+g+CPNIQY!vP_YgW7*OGE3^0zwIbxkXWK<5;|ehg`0Q77F<+Sz(kY zLzYD}0vJoJvk>qCF$oxgj}$E$kbns=a>TiK^ONr$imZbQ0GXI@c>jh5(;GD?ZD-;! zU*KqSiZ!z@ae^(a5P)PdhyV~o04YhmM0!pr7Rn&NziA90$ygSRNjk@Jn#xIdyL|eE zDf{ZxE$OHiKA)hn zp=bc0g*_7oXa-PF`YVBw_lxF-#*Zqe8M7!B@vT09C^-wjCqI!2TinT7m|`dyMcKHz zm8nparDLsnt~X@+$u35fol?NWY9I?ei7_KDTIpL2!dY|(proshWeP5Zgp7lWr-!YA z6{U-s6@U@|;5lqAqw=gg>vV!1GqwtbDO%c9DaQ=UP=KN+(MT?YENzV)3@BtKOC)CoGzE~w)kO$pwDg((Y&9pM zSO(Bg5+7JR0b8_09eop z1p+|=krpFDhGHx#uG41p{ip$~(v}9ml=5oZ{`<2V{!)nrI+K~eZ?4V@fD=S3yNnE4 z!%(n1{8AX^TZ%AW3MI<27{dw^heb@R>XjitK0Xvh{E=@vXAc(-X9ghze`~_ZfYk$O zrM*Y-Qa1E^V%8S`N;xHp(z3-bM7Kq&EGzl8<<50LNh+uPADmxyh^^YVS#d|e*%s+F z|9ra{*hZz&8%2tt>lqo4zZYy;!GFb{ll!Ke6lZzv* z`E*CTr5~oOT_1-9Oel-169Pmc^~2EeoKQ$c0r<)J^F^kuX0?izujl+QgpjtdfiWNm z&=%K45>1IX1uc#z0?wkAPw_56uvmm)D4P1{HZ=O^Jpa1~eNqU1Jm`)5MLI|_fcPDj zAWI%a#J{ui1mF0v@k^qM=1Yq!$hT|Wh??> zf%j?x5KAFL&Wl^OPM!Gh&L~Ly+%JyEP-^g-YuD~Pe;Z+d zzn_^ylw6Loqx`R5Jb&)$(~#&aU}cPNUqvXI4865QP#jCJ{tmLrw_n*Cs%`(#Hqogz?#`r!xd;0vPYj+>` zB^gYb&=2n;gp9Lb3Gef`ciA)99q%+DqbDKQT&UOIdJ+MBR6fGEP{ z1iUiqH!Lk%6Xo;z>eai?15+p##{0cGfBD7>{{Y57Ilm;HNWsIf6x1X?zIx%*sY@?| zQ)oHTWW@#s#VPG^a?*!)AHs7@0)+7M!D3ThYOIDgum&D56ewD^b8{z|-lU6*2zvJH zeN=q5K#U=8-oAe8=O3ITBFM5N!T=<^AH6IfO0t{ zo1e?h>S)gzlXvik-AS!i2wVu7cSj<9d4u% z1-a;e_r77Vsi_$T(ejlGDZuCWzr1|aq>4>2y1kDmbZORjiZeIl^Q*z3Xlkoc4 zt3a~@Wv9J*bpP6&$012NnuZ_!BsKKT)vH&oUV9su!qT*vNM3S`?}rbs-$fb$PLBTMm6S6S?82>gFXU)8< zkjqe3Y`~2xS1;dq7!sdr7BJr>4B2t7%%%*v1l$!Wo_p1ykfAu=i~IVoFiuMG=${oXGo zE+Wv^H#j9V!)OxCG`Y-#E0->vyKwE=jc2hbc>qB(5a83}BHq1v_trmJYvPlG{a(EG z`QR6vsRM`rF`wH4oI?a@A=l^Wy|d@9+c3ON~TxymYQxyCQ`%iUdIx%r6 znYkDu_*bvo6mv7Pb({dcl_3a-QJ0&NY(<(;Ab)L-sVO5RAucW{SI1N6+j%nS@=_9$ zQc_Y0%&lPco-=5jS$B&w{X36Y1qkkE``f{FDeQ@XMwR=zdyuG_&`Lx+5-sEZ0 z?i^S(e)N#pOV=E}aB<6mvD0VF+OTHHu`@@uEt@`S$f8$aSu}&J3y+Xs40~~I{^S9( zci+?TIQ-Fx`J)GpnY4KCiR-tHZyY{$%I-t2ung$}o^P44{NnwWPp=)AJbL2GgzT3` zRt@Vo{KkhkC}!P0wQ1I)3bmIK=y?R{xPDA!x z2vS&@gOJ2LJ+gk)kvIPDudW+6YR$0}oz~~Z-pT!kZQOr1Ta$hJ`i&g5KIFxXn>X)- zBpVnSSv#MskO!-lEIfGe(Sy?)=1drMCpe8@?SnI0hmIaOeb%Z2ht3>aJ9)z7sp~eb z+jZj1zI8Jv3>$jgF99(~pBc4c*@8Xi?!13;dj7&Wn;*rf3UkKd>3T?fyaSkoSaJU=skbl>fl-WZ`6`1tI?QG?g) zxW=<6?bfN~^S3^K_x9}0CDZ1ui&g7BT-`Qj{P0N=W?s2-;n>EdlX?%o_&!QtkT&|s zhGnx(-G2T2^6n)wC)^E8<8?{rcP<<|YUrGm>yBMIyJ69ZI3X7CC*N)CO!c*OLb zhp#<(eDm1BD>O~fG;7R?J-2bn_+f)@M(7wJ`@!M$+xOl0;QMON%>MH(2jR@v<8v47 zKmW+@)s^W(2VD-xkRvYO&i2L2*FAjo?!xxD%hzs<$RTtAi76UqWxYDE|LXM6w=kP%H`H@BR*b>sNP1ye^1IrcIZ(8!b>y=vLQ-REw< ze{#mG+l>#RO_^bb*UcC`a@c}(TTWa!xoTqnxyv?0XplkMknbS_5KE8d`)DZ*cKMTrYiTe4u zEn~)x-+ICy@p*49?4CPe;EGf4Me@&jZyfUc;=*Aw&)>LnY2T7@i#ESW=H(VmL5R5A z$m3h)4;eIe&&fwd2y??9ubwk$%h7We_pKWC>&Oc)BGTggZasL$>9wzKp1JXT0-#a`-#k1! zd&!zR&tG0Sw0z9Uz3)=>sUI%PpE7jvlu2t>Pw3cj@WC5Vrlg>~vxjdxe&OBg$GetK zT5~RvCvip_IgI&zbRWI;2GfR@N0v_;(trBY1)CT4=r?-8 zj?>p)ghvZzjoiC(=g#ZM;71$gjTpQ1Ky)s}nBsPBTzvA*Yu_iQrVk%{>QNA65rl}Q zNN&`NO^Zhj7{4t#&6E-H;^3M|V`r~=8Ne4F7eHox%1{7zwyHN>FIg17VNzm%`igft-W)H_L?|;-j3x%2M-yr<@}@L zI~ENdJYdPjomXyL**16h_~qLl#F%X5@bUGdbCzv<`0B;EJ&Q)KJ?x)_wXsi^&7LrJ z?6?^V7mxb+m$}2zdJ@AT%u4 z-^VW`(nKg&m{9(EffNjWcwozp193yvZ(F@)^U4VwV$RRmefh0z%}xVT*Dh5&FyRE&xzd24U1Vx$T8RLsu0#8madFEN z9NP4oc4*g{8j6s6Z=xIYo40k_rUteV4{klogTR_qPz=gT^j$w@MUG3`_4~JO*t&Y) zFJ+~qiUPs+&McdArNQup+cvJ^RxYG5z4eQ?T;SLk6~EImi0##?PA6v$#D=MEu#!89?FiWB+A+YAbK;oH=>Iq}j7( z-OMaoqoi~5cHJA)aLy4mgtF~Cd|d0Qb^t;Z0Qb+Gf16Zg=9<+f4({&Pv<$H?-g`hN z8z&?$*=W$r{U?sBspS(ywDe1B*F9I)Ke}h__G7zC(Lt+^-4osF4j$e`$mNMk z&GEC>>|H$x#69|u%!!%dN0tq_r!F~T)9y_hw$C5ahUW#&Xmqa7V${H{jt&4LC}>ii z-MMd9tu#NimIJgy7@cs8iYIL#A&% zesX7h=k#^c)&?f!KHfe1N+2`;@a_#ePV{igI#hZ_e`^EXqxeH9~uIr8*pW40hv*VXT;`J1bB<6XH+{^Xu)4qr| zgszo)&Dywa?D1zCC~9daU=n zZCej+pUuC!cj?A)-`+;8}vJNqhF19E)UZ`!SFvtZ|%^@mpu zH@)0?{Jy^tAOs=9B3;CTtqT?_f10*?^9J*~E4Xyv;F*M$-G|jITT)9Le(W)4%FrIQ zT=nPnE#B$lFm<^(;x^A7+vLvjMQ85C=fuB#>Zk29WBKM|r{)g&MUj(@zceYRPky$1 z^^W8cgAQz2x%Kd#rVg)wNyEzMUFZ5oMKn44OP_X#3`^2lZ@U->Bw93L4`c zpMDzNdHl+in~trVKBAZdBVftlcp|U0CWz{F9n!mXwJa^c82__mpUaCn zvg?LZhs7H=92!{L;rzi%$y!|br=DGZbk7l)%I$`)+HrV5UHs(C4VRz#Za#5x#82+G z4_`~n6^yx|Tc@s0bZoVK*Shh|OGn(=`8d#L)ja`&KV_o$K&Z z_nvjC$&I!}+K*q@w_E=fKXn}ZYjZ`Ou~fYtE7xw_yl$4^{I;D(&PRkk+O>R*SNFx+ z%}QB0IrsR^qgNtowHxqbaTj31^*i>RHg`n*s@@a?nEbDePGWs#ct9}gT%q|7Eozss zi470T6Cr|so{mu+85{zf%Kz|ls~VmtAtah31b*xJEJT+T6cnDz5k!6Cs&a&YNvF%x z!ZNiQHf+?WQNvnJa*7c0ElNTlCp{)QQ>@zL=bu`&DCeOv@ECsMDtBn-TB26N`t=*s zbyqQrW3dvha`BtEqG*zq5R=9^)Nb6eS)+1!iBX9fOe0vhhVtL~Iz}5}Z~26?^?UqS z(pHZ_*_zFNYPjd_yTHs}8x*fr-S#e5`F7+UF(yFa;No7) zt-Ncsn#EKMQ1u_s{zSmpXYaGdR`)7f;^eAvz0cKZ)}zbN+TK8kygZ941wo17$*|$&yH^RtTehoTK>)zUy-Jr3l@`4A4a)+hEn_Ma1>g6L z(NEobcPiz^LanQpGZk%lMYVNup=nyCvUPN_<%N$EUKo>-EoWRQlaTxV;+*T30yAXI zRV)F($;q{h9Run%s#nHIE>`n$a4+4iPveq~z*yd+R7nj10&j>42$AaztA-7xFqIRT zq09j|(=G{xu}%{iCY~&YXSyAv6PQncK$0 z-pMIR5CH*lxwCgs$G6!S15muKlimCCLwm)Pt=+O;w?Sp>feg9H+lXJP3SO{Ytoo120An@go37#&XzA5HWCc^Kx-6(Xw6VvQDh2T2+;k3&X;^)R-Wj z^q(iUtKtcGfw+|~O-QP>zbsz8y3*E;hytr{@Gj@F>-6m2L3LYn=sK!*ZB?eRO5OOg zEBk%8U9VHeUR|m>M?F0AA(PkK+B)Ppz@lC!GMXHH!7l-fk*$qqg<>`U*mUU7;p(%M z_g}>Hu2!Q&)k^ri04(4s)}{I{rKBQter?zC&9W!485!{bAqs={nqh+xM!8Yxip;=d zj&*T$ck!(7OZzrO?SZmZ4VldcnG9q{n_t$s4(r<%w*#U`xtA>=-buEsb(EK_;laMh zl`H^l+*CF;GA)3BkvSHtRM9C^*ZhY%PI6GvMd|A1+@VKJ2L=@JE~(TeaJ&gXJuEmPWXvj!flRG&nlnN~*|E%{W0JfR9wrn4D z*p#<_B!L~0~^m=yf0&&L_tXNe-LW|swZm)zX6!jq_IYCT^=t=Axj~U z92IHQG?;`@KybFrtQ?qf_x8TQ&cw zOs!gaS7-ToTEW^V9h{sTofrlHPd6_)Q40jfT*_7y4Lc`ydQ!D|i*|k5)+$L07+c3< zS%)HyuJ#slLrP}n>O#Rh2>YMgHld1uM(Bpwy$gpND=oUGEJ^1@ab`{?<PZr4TyfOq>*D=PM~<$N~fIQMPW z-WveD$h7bB%aM0y&8sS!wkhl6>0Po+?FLOd*021t%*i&#=-C((7o?Z zyDp^ozk9DHCQbN-HG^&;k<*$utv)ft04h}WQrHIDwQJwHRNEFBo>BoU{BNCeL#=|Zy+*GN`;Zku6fPyJmhprTe2W1IXV9rlSd0&U8*Sk1+)GuoqcQn5g#(6F z%2kd+R(MJlsL-Iis|_Q3i;M(g+SbutnUY|h@>ZBq7@3Q+4G{mf{)zrZhi_T`1&C50 z-TPOsB2x7-Cpi!>!2rn>w4JMwmuxEVn23U2E$t0avJ}P)D=*P|-0W#nr_Wx$|MIKT zzf^MLG#Z`|&S(Mvh?co+!K5)r#38LvLGsyp4^9vS2obcr!wXmxq_0gN@PM+h1pw;u z)E+hauiUYzK@siy8~c{bUwGna1_Oy85bNS`VqFeqp(=_d4r87djMx&vh{A$a&jCRY z8I>(8XcCM$oyKG<2Q;!eF~?&75W&2O(-C_GvgUOZk~w+uJQf51KWU2qiU0)z2(eVe zgi=9BNq^==jEyFf-UL`1J2?xn#dk#lDz%!nb;(GTG3w00=?T zAQVLrKI3xJk2j9lLgXUN?J|n2a1xh|%IFCf@v!AP6vl znApl_ix|Y*n2_(BJZC+2Sm0T=9^=-|9r9yp#LL~Q=PX!wN-WuI-u7eN8`?%bJHKwx ztj%ZN^M+ilooBP|W9KYbFmdMcb7wEk?pR815FU@C0B4 zFl*8aBH#f~F;F2#7+{WPoxEz9bvu3Xw59vboVmTZk`kCqoIr?C&sk;pIG2neA+`#} z(iXvjAm$&v#+l5;0i>+G9wCH+5E3BrQhb?AMr&YTLPVq1vhRrFkevSPTrI&|8UxX! zHWJC%DO!erL|x=fNQyRuB{7>wCEM{V{B5SZtYxd;TJL8C*^pp`^( zuGpYWr`GOJ&nX$R;Fiu0u#WD4l5v~>h=4H>jRw65C>?AW0C<7NP?Wk0$pMg4DQ8Te zNQlW~-|W|6(`L<|I%mc4XLn|gY6Sr>NqMiJ)eykQRdSjT>*f{szjRAFq?PVPirU+t z#LzeIBGO&URZaVG_9b4Een$0U)-|!mfT>A zU%g8-A{7mC<3htfgjcUr+|dpo5kp8Rf%nJ4iOU-3i z1qP6!Xvy^n1qoqjRt5l~8Bq`sOVg4ogHMprh@v21WtJ`!5R=G50OSlv3y%gsRiz|3 zxOLa10I!w1uRglE(=#FZ$(>MMMggqRa6AQoQJbR^DGD=C%8FRag%yZJKw<$CM6q%f z&@xsOFr)ze(JF+{jC+Y1)w81`0t3|mC~2bCau^#4ZC9yGMVt5UB9rr22#7Aj@6nr* z#fld9vV8SHPDDT{SJ~QR1;j;YBH}XJ^bZ z)*g8B>b)!5M$(D5BU5rHnH&;=D9U02Gj}8;Gy~Fr`YlEc*H^E|q>4@3JiSSIXNK^E zVq{Q~1z>`tKmn{}%P1mJElAM}0tC=Y* z7(-q>eDWs90DfCMO#@xPyZeW(MGye&RLTlX8kM4HrIU??8!9X|Tgt~cbxNiYvWzWA znm21-wo|)(=N_KhJR$Gi%Qx>5p`3*P@Bmu2V4H%&gAyF7SE}8#K5NSMk7A0Js#UFG zIXCXrOJAMQTt?~(8Oa@hTyg;j&DytBI6CLP^Yu&C0U3h?t(G7}7^w_xSp%uCvB~=I z@WlEfRfjEl_~QBMffdpNFJC@$WYux?#Fa;1KDqLPjp@NfKf6-Z%BIF8C+oaQm9AN( zoDCoS^i?!NQ@>k0C?ym?hCrO(tF%;Ijq1f{MotL;nf1&_+(1G!Y8_?SLmi!%mJ3{* zR5mUyC`+Bd%Zpbw>$bFe?AsR!1~aP+CV*xoJ{1(Q$O7ygZEWq+UcC*<;eoknL8r$Q z4O!Z1Z~>?df|NIEbQ(dRAVniUQ36KjrZhXHM?TtTtl$#9q}) z+tYGI(c(oQ$Okcruw3mHKeu(*Idd*<{6i%-I|2aBN*NboSjq7S&eie}QF#;vv;h~7 z-nj49dC~MfE!~|Mxr2kdyWFF6d5S0D5$clVE7Yt~*3l66);~tiTi?xqjjgR*nURuh z@+eiRMwN1QVve6r00(Sn1R+F>9AFX1>^xmvioSc|pQQ(^6!M9QT8Cn#i}-9>@gmjP zykh#<&4Y~{%$t<_jGvNbiegwA5(-f?a4A-q=(!g!Ld^Q30Z7Y8*P^0c4swKmXfo+6 zW?*niP`m*uU7eK*l}+aFqFY5fmUIS!Bq`0x)jc034F)fLQyg~ zh`PJ;OgP_W{JI`3s>+by;_c~ZOF>FT@fgyQpCBoIC0P7~hBP8Pq~tRD5>+axV?*CO zPZWWI0x5xypQX4~%u9`a9by8&h5;c@AB#L)qml=}6cR9^6)Kq}x3n;6=_x3QEiT>X zU69ADZ=s zKu`z2e(n>T>{+ov^^#8CG^_}Sz~`iAaB|N&P22v|s3OS-Pt}t@J#`KduUAL-g$hWf zNsi0W>eG{x^9&;R^AIsm+7)Zmyipl1mm(Evm9$Z&BxQZ`K(1)woQf8yT%}T}3U$ia z!}PRV2)|k36rYoto@Xjj%!NUad^;6wd{VsNUh&7De);9cdU7s1A|}TYXx|@&2b)6% zago7~4_|&6pPhX3^vO%tZk|7LX!hcD_d%KA^Lp1P@p}E{gZCcZTDSF}FW0W$PxWB3 z|GBeQ(&8eooVy>EqJtPT>NBaFhjQJB5!=t*JhpY|`n?y^Gve;vx*41pefReDkobfL zcWy*P#lOCH^?h{Qt6Qhu`1-zodd(*;3rmR?WS}wJ|L%)`@Ze`RFWrmc0HajF_s=iw zIdJ3N?c*z!KdxTq*PhKPFvg&LyBBUcee2nWC}8hh>4#Es+SbvAzjFA%p_8Xh9y^=M zCA_&G|W#>TzAfB8;$Qt+GmFMUEoU*3D>7a#QU-0g?2BZD43d>>)7oFpQM z(7jZH!9zcz+Wn9#qT_@jp*Xz)`WA4F&JI~*FcyQmA(}87sb?odC z?|=R7+k~Vyrw(1^OVsT-Vd97DS9kBdaO38w?Hi8%)UIvspBw_;oPQo3_2JRwi#L4> z9w|vtRCf03`QzqYynELtFy5(Tbx(U))QfBWDY;?(FW*F@0hx=9-tg$?=B@irKk`eH zF_g8QeG$j>wD23pFYMZ|Kh!@t=)u)Hfk`1RZUtqi1Kzw0PDl@W_#!Mm{^`Y&4(O)R#Gv`ZCLg|jd+)MYdoI2bD8|9TvzQQY@x<26`>w~N1}-1m zXXfI0zPUh7qx=X&$pM#k%wBou>YaOc_paQcFIT-^&xQo3yo-3mJU)B)$cf#1cblo`*_Lf6{l|9c@>=IT(Nwa8g9hI0|dkGoIH8!&Z#}?FWr6DZAzaiWvg@_ zTpwp&95ZI^#T!@G%$tAiRkSWU`qs_6p$TEvZ`_WEkA3v;c|v^Bl|#qll~uZppBR4T z@S3IDFJ3&pf9GL!a`e5Mx56UA?_9YU8x#NH&b16k-aI_QRb!4_?IuynX4DU?P-3ofUp&)BfvsFCSWY@4r@cw1^ zbXiL1!l4rnUBA6=`RqNHUS=l;UcdJ!G{*nRtw%8lQTHCaPKu2^xBp^J@gKSl9rSX? z#`PNxpFg?x*r7Apq>yV@ZzbgN_O4!BYQT7EmP!Q0!$aA(i1^H;X6*b@{G7xU)!egCM3mu?0|#J_rQCoC@V(X;oN zNr^rW??tKQZc4kjmv=9pK7Dxq@vOYq>wEURj!c7}mce6z$Xv@dsaZ~jinnc2*+yno zUCxJR52JH(-adR7nWdL0U0{6Fg*_{FoO>RdCwGJ>@ZN>vCl6k|aW^~J_te(osV+bE zt6w?l&~Ltk`?{%+a+=SH6r)4)MGD zEG+87ldBhRd{7I3aV_7mV}CEdll%4`y>{)&o?W}NKlN(cvaUTHw`u-@y(jNJdf_M7 zdY3F&TxJ8p5)vt2->RrZ7Dj3~AcWB?UF?@XdNN`y6+dJ3H-2gxU1J>Kc zQJH*a=dPV6Pdy5Y|M1|MPgKB*bC*A)sWTp|AG7+vwTG|YWFe0_waeQp0mcLn%mKPW zh4LPzCkOWLIl6b(;k|eA5`&*SH}C23d-TL7G3oWi)7Sk2%o%lbcF@ZQ@8glu6=tM8 zyMFZap{;Kt!eU-rJ9GMJ(EGbL?>vbM{NUr4kR0*!O+->cV#w2{5y|m^Z$1QPC;HyH z7bJJBHGFX8clQp=UUcx%#r+HC?@3fu88fazgzx^1rykt9v3J?gsPc_Q|58%td;8oA z^RW@HA6|YCt`~u1bV^}k`f&B~f%CWS9N)G2g5k%Xy9{dH@`vV~J6~Hed)fNKr%&!* zy==|@{BR(o zfS8>a^vXBdgrs*(J#UgLW#Ah?EQeaFY(>3+6EMUkgCIhR0^bUX23cuYdgA1)RQ`oi zhathzO>1%)t5C=&MkS|2N#79sO+n3`JsW%zSe8Wy{n@t-0so1iZ_7Ka?%m7B(FWVb zEgQ>?nK9APi77cwUgeuLZ_={EuZ_xj$N0Z|9T34OD~(?`rA1|@^q>cC(;RA5Dy`1W zwJlPVChq`+sz1pCLPJN2Eq;D-|G%lE=+*R1TMlCyU5tkg6|?`rO>(Wr3b zlR_1h+q$DXMUhISyqpn)4AH)R{wxK%x2WNoZFH$u*(vDBjTnucJ(cYr5a<0vp9wR1 zx>JajIoNS|i7_ETVX2jSj+oG)5>hz3*tiS13318U6SB$$bZAyj9p&@NH#kje-(&og0d2}AeR%LDft0UNUn%CeR&CL|Uj2%;>JKlU z2Zp71H5@p0{LoT#_Pu*Av0aGtWi;>nkUlRmTS?ZS;NXMx!DO(A;CFf zwF!%7RI~?-($2}7)u}bPX{1u4x~1$`kE#tC)~R8O2qpkRAc_KI?_I4%xx^1If`Y>| zvQon*&udm(#u3)r&B+a_W1$)nqk8Q;5}JI;=| zaQ%_M+Jfx(@c7(%zfKv|<3~G4Tq^%q!I{=(#DoTga%DTto!Zl08+h$`N|SmO6^z`@ z21duFdY7!^t}+47#vPm2FHr=Y30cOv4Lk#% zzX^)VtJ8VXls?Ur6tVHB+^~vkUQUwvXqz0N%7n!;-POML{k5$cl*3TzYGVqH$*EAG zq8)2g7HiSDMGY4xJ~lKkDaTZ~MZ4<7+;~EHm#J8(N)?rX%SwyLVN14d*S=aACNB%v zt1^**QBX42fxied)@Ts-q*FFQ}+SgL$kcSNiXOazGBY>~2hz4}$F zIm&@9E7||e2d4%t9kAe4u4>6rr93!2ptW&1RJ9*l*K)DfXUE0ol6r0W|4ER!ZM~J95T3EEUZtkDD@cwB4Uf($(`dxhQH@{SzGYCB zXk5l7D^;k}sJcuf#j4e+R9+eK_Qi*waJEE?N#n-U^PqF}f{h!95BB#DPcHXk|G~X~ zkYh7hNC7c1%EvcZ*`m6KQRY;(bfp#@8!C+nub#dMNz&A8H+E{@7Pd6bQ|D^sb`?sX zS5Mxgn4Ei#nb)VGmqB1ERH;|l?ziY3H*rW2ZR|sz2#1pOy;*Il=-!}u5ki2YtF6qL z)n;T1oQ;EnCNLhiY*bQjP*f;i%+b|7H!k2qaAc7hT}E_o?aUCtx-c3*dk-(xQI!!F zoojUbsZZM?_BPJ$9!y?rf`%G+3^BQCm9?PbMQQLsq0r*-}a(Q$S;SCaK-Lltyh=uW{8%4O^9vYct|Q zBcrpM44XNwb>(8!TX~A#XT-!L=IOQ3LBY_jScNhk=$|NwrfH1v7wI5I=2@b2sgk8i zmv%{xP4ukRpuCGh#Q2}lA%vJoK?uKa{jaExjfzUm(&i+DrgE~1mCD+(6aasYB?*X@ zF(^GMCO$n&of#dYW-62~>!6^>pVg9;7A?d_hUZYurAm0P@QZ~$C-o)Qkrah67iAun zRBO@`B2z^Bisg#hvWSp>O6uP*vM!3!nw4*82Ge1Y+dzpJLK- z;u>VY7oay`BtvolOaibTwyZUXl$=t2qAy@`84*Ij$S64kf@KR5Hdo|<%_oYYWsufd zgIIphr<1*PCeg}(QV#Rw6irzNXZCpKF?rXl_P_$OL}s~U3Q7hfSXpbEUVn0Qg3C=~*{04Q3buQ7Puc;6xLl zY%M%-0LUy=Od@3?2Pj{GQY-m@N;#q|Y@m;S#d0~avV znzCVjv$)no6f#H^3?)k`g+=Wg0WAF3|F8;4OkzmS=ug=hEKrzOIsAgpNP<9$QZSZQ@}D3|vJ|oSGXzFX zl1nKARDN?NER&)1S7%0yJ3s2k>GqW@d|KqS9?)w;7l?O*NPX5Tia@TQ7|Yr9MnU{u zm#NvvDDZEA!C?5u6bC}c8@1^vsRq%yTp!Y`eTkCpU)&B&2vH~$9LIfe=RQP8s%N$+pZ%3tQ;pfk@1Sv#xxf$_^={%$zT)m6B*?wH~^(VDtAth#|ry7v0 zo0A<43NrL%QYMpSdHt8S)^q7;N$FWS$jF@Byu4ggf`Gw4ftl35A)z#LYcv}F_Y%rK z2DE@!@UP1usTd~YuQbJfxVCTg+U*IlN?rPn7}DcM7ZoLnxL^tE+TY(lu<-U*U}YX- z^2O&C{L6D{zg}*sJou*sC21_;eEF&M@or+WcI{RuIL1pzw7vSjkHGdc%ELUhw5M5k(PEB>&2FAw@w^ z#QE)fS+`#+3nt``-QoKN?;j}pJGt5CzEm(UKYjWdmLNpdT7RI*{E+)2{eC%MEtNm> zAcT;W=%0=5&n5awZ_n?`{#>__ug*VZmd{(V$R$br#fCJAulH|WckFstl^=VLnKs6J zs}>MN@@E1Q=I>nopGYXJGSdw6+uSR`94~xRsw8DNG$ol6A}9)ih`%j+D|ml0O~iaU ze=ecSrvRyXp0WLKHi#& zG5lL)lZ7ZmAutAZUR68ys)~?hqc5DWeyg}*7CLQ;hZWg!Yth(Z*i5QX>-kjZ3! zJ->kvvMl@8=^%v6bpComNm;H$qbLeO_#b8I`)etmlw`Q?fxoCCP?%5_q7a2BL?H@M zi0`u9grX?xVU2%1d&3rd7doOSLJ0q(EPa11<&%;O_dS3R`d&F@VL}NJf|9TN4*^;n z1Y1t-`>t;=Ur*qqbG9w`i*#t3ww{3fT~aseF7N*+OW$8h1xbCE z)WuAyaD?*v077EanOKz!U;_TefE100D5WQeLh9t0=ww5Q3T5q;6d`|=Fww+6eE2d` zCpr|X^-GHigcHfPYa5E3F8Jkx$n@+yqf?`nEh-eX7r*H!U|ydY7Ln{wqGB-zN+gJ) zAQnGQpap$aa73bQ@rorJ>Hn&&^9YIQapB2&McFb%RkX!sfQa9TMVh6uV?tiM^~=#{ z9V)eKSGNS=@?ydxMW>P_yqwVY=ztJKApi=Twh1Yy`|$W_NOG3KzG#bfEu4uVDkNN| zEK;tBBL%<8Um#5hS&8r7zDvr{U`6Q;?HkC!-zcku5NqB%c^s3HgBjcEP1@Bc!kPs9 zCusmgj4>hMdYhuv@7x;@PMfDT@*;qgis5e`Ufs1(w+CUVkfHuMX#h;IuP?7(zUAuOcozM2 z|0lYPn7gNTu3C92B2LfH0De;V9JzO}cd%J1JwIYN>)N8al zlki85Q3wbLuT!fHCIS3MP>4blqA;OE42ZsY=*r`ZSDvOTSnAtzfA}YFUWb3}@A-{d z04W4>1NUrMb1ys>K_FndRJBIk2KO%MYWLTNT?xj>uI$KF8-6Gv2X+klC(J?kRgw^b zA#K;H@1*g=dfC!ER3Qie`SUMdgb=&p4ZC;k(7dV_20$Nmf7iO@0qHu3P{A^`#p-wK z(&>ll-hxQTzf$kN_bVF{k#VThuxtOW%{=Ypm=^-BZrpj~f|fxP{G7`_?~{Z#VaGD{ zmM)uIv7{4&kca`}T)c7DfvszmQ6YlK7ghy)y|V#G$r;U!qgz+5y`~We{OveSRomh7 zrgkX@p+d5$U9l!V|Jv`D8VdTOec>Omj(H3niw~HwX=uapas@V!Jydjd2?DJRO<)#~aZeGZ0JxT$ANIqVF zqWUC+k;6Pdw(Q4Sq!9$@)79A6dfBfW6}(9n6KT#-N#$RVjZFe!EmuMpyt~$VOE`eP z-Ri4g09Bv>uoNJc>w{5&=X#SU07~`gB3fP`JPniz)63^~Y}(9Fu|Ncap+<@V*83Z*mjV+) ze!Dr^`Vb?er1P)d{+t>k`=|#QP0^TOB9*j}OL>%FDGx0-M~m2c1-1l{m_;TEIiw5T zwGBXt+FiHR?rOb3SP4>I-+xqZ)I1v&8aTjX011Ey7Ol}?bBzuF0F7BRIaN@N{AGDWlA~LIqgLzYzIzpA-pz`33^{4rZ}}D4AHt2^dfSix{|+ ztTSo#p^wgk3*JdB=~Jr~XceQPJ~Am%NC_>Hio|SCh>$||N%;imOn^oDQpDD-i1&Zl28Od zMvmm5z|GX;bM-1^1^q+>mUv`;R|T?`2(>oKeAFs|43vGc3nu_eL!Xxc43vK?LnLi} zx_#RU>xJ*u@MS;o$*L6ix0!lN(*>9j$fwKnE%A=PNAE)H$JU`+<%zQ;y%`CRD{$=l zdztbU_7I3PrRQ-$YC1`=QWZv?f3LK~r3)xWCHr_mImz!mIMG^y%J(sgbY>+mmJ9U3 zr%S^>n%hX^3dmZm!x0$^nNPA1hEk#5-H^^>DLRzYr>oTsB9eVxM!tFSlHWp5i0=RhX_}!dD=&Cn zAm2s32Ff#Ani zH?Lkgch$Z-k8Up>F{0my+52w~Oj0+p559;4{b3n^z`5-+g8k4xcy>a zz}pp5CJY%fbN{_?E+=B$f++)sjoNZC0DnGgMJ&ll=Cw0h2lehhVcCfojR+BvDJXr? z+ZD4$_v$ln>gwb19L$bugA z*syxt#vKPQoIAK>+^DrTuAbenVe_hW8*hi^Bm_L(viF`Ag3J3iY}|S{OieKeA{OO^ z+*`kP!>Tpwt_5j~aqsqRT{?f+o?CaX&lxpx;FuYQ9)toJ#n4n%(1USfMhqN0bilw# zXYL1tzq-3^)9OX5PGtcu@c!B53+FH1bUrbc*TlVCy?F7)U5B2%dAWY+v_Zqi9DEq5 z%M9KyXGEX=6ZT*C=PfdR)L0WTlVc)0Qf)$zq$G7+bFFz@XpG0ySHy$wrczC z6^j zDBqD43M%&Pohjo-_a8K3_J;FGM#_@&6KjXdQo(8P_qj_upC`_P#uPp==DH*@jH8-WI*Ik#i|(iLkqAADf2WUiw4QGIe6M?F40 zZOqUCLq;s!cPm$*;P00-&@kunzLmZE^cgT=#SPySNKq_<0D6c=|5?be;m7-_^r&W}7FgZ$CJ@ zXY#0F6K3oVS977)k6Ju?yHAn<(TJ8)SQD{*`Ly1B`VAgF@A|uBIZF{pspKT;(TOQz zh7BG%e95-k3K;_|VC5j-*8br`2lweSbkWwUxgurhVIa+-oVa)U*RS5XZ`X?LSJHBg zA-7H}UcF=2u9eF-?Owff(XJc*d0DXsHt+h7#l-mEUbb@GouE|2ppcsoH5+Y(V!JaAL>3Gk^&K;by0_QZe6#0>Dec~*AA`f-FLv;Z5LDY zfTkoL$O^r^aAIGx=7ucT<(n?3Xff>NwPmwsZa#kF-Lq@cCXE?2dCtYR8Md2lpMh z@YLgYT8^^bU0=0wli5ukKf1GK>frtZ=U($mSI4|wFm!0Yk@Jr~N|b^4eVeyz-m-nu z)@?6iNp8U7{ae>BU$W(XSoWvc255Hg@Q267jTqc_@YoG!Ug{W1rJy1no|rIl@W6qC zM=jcV;`-||yZ5H(Q0U#m8#Zsf5s)Qk5Gcf721GREjL`vaA3c2ZHZal%ApEAatwwc{ ze?X*(VjzSRGQ|Y>mRl~;r_L>h&+*!ND-V87VyT5SI=Mi zgsKe!f~YW|{O&+<1n%#D`a|oULxy+G2u*l-=>v}-g(y?<>tR!uMR~WMIdzaJ;B=ok z2U0~RR}^<}&-Rt;cW1d)EyE^V*gWl8NRE=>@15Q_a_7^ky{8UsU*W`-MGG#(nj#-B z8__S-zWV6V-Lq~UUAy2wCZdX#@{A04eRluG4Xd7bHmGBl{b=RxBQIh(rDdL-5U6r? zljo*CI(`W+9DcR5A;{R`(0?AowDDE7_Ct8Wq$64x!8b0FMl z;Ka$*ZDL1HS$sd)wtNvsiimbD9^RfMN|kh1M}9cB=WtZEPUYgo>V3EGxEv6g<65?| zw-|ll;^k+dTF;{1Nr}-%wl0{l;FNuZ>du-MTjvZNJa;!JSI0{qbZYbTdog;7g1=K2 z$bS3e^xZ_)`qgaTU0%EOnm=M-X2^pD{pX}9TTPoWz;yS>g7MpV?_zvj%-Q`LR?j~x z6scN58FT2!u9I(al`{0<#NxSg=G)imI(*QtMIAt%fdC#bwr)-!?!f*%2lsEg{_5@d zL-*3MQ%=qrd-xU{F?U8IRr2cI6CXwByh^C9967M}#F66{9zVab{Yf&g1@R}(U-OGM z*t>dpdN?vbba3`AUd%&ISq6?pz&e$3r{hkZzxqB}=jc@w#D(5Gx^DHpH&uRVU5rUs zI(ou^^8rYVTD)q5ecc|DM*S+w@_qgx%BfV5gd5jxU%9U#vZ5v26Qf`3I`}Y6BiK5* zGI^nUHmzQ^;{sKpj$^Lhu6aYp&sxJ)Y~&$^Z=SsDd1yLh5d3U=AYPmp3Ugcs*K{t!AIXdrx@~Tx8_T8MVd7yZ0W8Of@>Wy7QSYx9+$a8LM?KSIJcq zaO(W^5Ahs>)Z16hS^d=5W%Se^OPl7KUsIlI%M^FzS;(oelUET}TZ$Kd-)&+MsvJvt zGOr(9y!tYpLL}(P!QS&uDH;zO)urT}(>o5n(-bT2-s$T52|p-d$+g+JK6cJZv+F{a9uz24o}J*LNiLl1Qg znv{uqvS;P7=Nx2h6hh>qJ?oduxgMseT&38DyZgrV?7#O`PW@)(lb-EgcJzsnKy8B0 zvOc{ZC#i9RatA>p@?o^}u(1D$t^%+DGLQ=`YjnfvcI9|2m zi19;Pr#)FUa`A!aT*y)oV`%5>Wvy_8uO&Y#|}eAydQvHB(8z3o#^JP8mf81Hko|L_f|4sEB;np7(F z_M%ZkpQRBGH@o!M*V~uRUVGlJOwFpgH)rLV6+S`kV zufNOI0b5t+-1o=#?OLhV4GnQmmXGT@dBL4hP3p37H&*UB;hzc|Jl!=PP95C6 ze(%X^?zI~UDKA$|=sSMq)nbk6DiZIk-hJ37!?}`&;l$wsH*Uwfdeg4Oyy9Lzc$Lg~ zxYbn&*7D?XR^f<>f+S zlhV<}+q;C5oFdUJM}2aze^`_evVTkxLLlf<;-lU@f1i?-BSIJqx@dH56?)?1JqZt z1rZRl)02Wfyb6j>(Fp)iG|(r#|KOiZlujxT{@y1%CJQkX{3_Xm%#`@R4=+O#()A*e zl1p8}TmK-V+`(DJhrIWVOVLmi^)*}p!lxxh2l%`SOUW|fkK+;uLA^RN;FW)-PEWws z>YZR?YFvcB@0*CUT!BcM!=gSuI$ldyrBcZvhzTH&6eg748IXoB^XcVCk1`Glxo5pP zbcAoz?T}m`XTi(EE7CJz>oyHMi&kx3z8HV{LWIWVr{3L)*c5Bpd+Lmr%Ro3 z?v(4W6%&UH88Ku~FJ*9GTwDf$z%tSmyuo};HsuUE=7CN_&0b+2z8eQi^` zMZ1PYJS(+q?i3k%F3{lB`Nt-uMY_|Z;Uh-(A3kYpiHzi!@DyMOJbdv^TE%e_`?jv% z=$8(^v~=P10xcrewN;Oor%Zs*oD!yFQCA9)vFxm$;Ft{x4V*K(jA+-eyMJ+bZOYC!!K=r@m3H41B|iU zwN%@Fy-Uj#M$FSn_YR$YDB@Cl*yN#Ix^$U7eO~XXsfVsT3=50NO3TPm8(qsc9zA14 z$6CegJSz6=Q_I$d5(Vg9rqPd8D>)zx5m7poY16fhvu%YAgC>vf*K7QkZc18gJb1Zz zRB&YfcHUG(Qnn6*&p-&WY1(=4z;0F35_61tz&hIIq&SY8Jo?8Lzx>?1sf_20SXH-a z>jssbY@I4~=-s7p)naxGOW8O#Zqc}E&3aX9mQGGh;VJO?$jaaQDYp16*7e)=l!)O7p~WD)v97i@2ZV{EED+r?VXTP zje55%?#UKy(79vRADUH@{eE{k!2+RWwOjXUQog+9NDG{o9-YM5)oA!*vrher*(r)v zY}B}JnQHZ0)~Qp0$9e$hnoT>k|DimBkjh_BYxzJKfn)W$^_n-TQoluM!UaC}<*1Kx zAq10O9X}8xHXS;zRlSCdE0lE58`U|1+c!ONE7@&a@5a^Zb)4R-rapAjgf9%|{ zWfiZcJ%)`LKWOCC&Si+)zVzr-qX&(f)~0r;s9UcxI8?D|$De<$?%t@&(6N&Sj+)lJ z0wq%xAGK=CpfS_hHz*f>=S_}U>vw10MNO&p1E>B}qgux?GwYGGhlkIEM!vbUe`V1= z0|pKHrAf1PeTQ~189B%*LDGZ6cbD9NkE(Ar&4WH7tX0=+AW)J6bqSo(t!uBCyqk|6GjZg= zQRBw;P-mrN>8VnU+f*%DjA2B9kyUQqs&3s%yg&fP_9Ywi9@y5dMCCq{SN88SVq}|g zbT;X|X!4MuV+IWDWPJWEIwsS$Xr11JJJ=R4-(&LH0eyy#Y+s4a61y)nml-v1=&$^X zw_(w`COsw(tZ8EcS!&5uHMvxiA-(%lc4aXkh=C+C;Pln&eB+k&tCcESrBU6=$&cRL zi%B)*=@N3ZVyT85rp%t+)Wf+>`;MM2_N8mJYTL0xjS{w;fI%VtA|Mj<>Wo~mc-b1& zt5&O9&E1d_lf%P5lTt#=sWY>*jI9b%fB=Mq-1sa_k(za?R;p6DLYch8l#DzRg%J1y zAi`-fGS$dNi6}%Yhf3(Pva<3783m|6!w&>}PDYjy(=?RonWXiWjwq2EE=$zEWA(l#^jrt&B#W zDnLX`y6B*QJh_TSfP8%hFB-Ema|I~>L<(X)Pm9j z8@#-EgG0~GofK>-UR$hq@VnrbK1tPo^v=!}L__wmB{NQ93@A|jmx@Z72pmCjnVYLC z0|8bk5W`Z47&()XXAu%fvU!PEh5KAi=IRHRzXJ4sty^I~{85stuxE(@>mMc7p*XvXoyg7QA z!}!s`b$%x)0*G77`o&y{PA?ECU_}5Rk(`^LPf^N3${s=Mt|1X)%LfT^Ib>McPNkp# zpcuK6t(~i<8wCJkXK$7c{o|XDnFR+YI|c&a=pk3dAjlhZnQ<{fE^5h0LBpD&(k>|A_{&i zgA@?av{EL+7}&XcmakKN&+Qn!L+@UV8}2?nujO{JN#C*KhxL>LK* zzf>w$7bgmuRZxmisO()FApma0y#SuZ9y~g6_3g8OY=@FGpnj(Z02xGmnupCyC-!!gE0zLA5m1;x6eU`+Qn}+ZU5tOLaP-*ixFd_{$^+t?BE>|h#6oG_7 zNX9CyYl{^G(Q<;UvwN&uu285HlFQKMGIE8jk_Nz}0Em_mBJioSB|XnP;#pYy~1u zY>L%v*{sFWjmO@PZteK`inj5D`nHnblqEzhYOy#5f!6+^WV69@<*(kISal{iFg(dn zO3q->sL?aIDepGUng#>{WJPK>aN$h=$Sf7CN~S1RH+LBgAuB_21%MC}J}Xn^UaVR% zdtl%I<5{k}Tpp8>hXKSGs~jAi>}&u5=B@#KOdcpFgct;n#h)!#bmUK4sAz_@wUt8v zC{r8PLcKu$g4gbWc zic9snULuDr!2~qPaoRjhcJ|d(^Bw_A1g2X3DkVJ1)~VC5#O1Xk4=;7=GHUYBe)hze zM2OS@7A~FqejpGbO5_bXEhi{-I-U^0XabP_dIFeIdDf`onUx;l7pegWidu~zN^2Mh zfC{-x!4h7;08)QMM}$iEYPHt z;;ksr;gw#M8+uYIC9O_POvyCamvLf|NQAGD4XVmjuW8E5@_iS`TS(cJsQE)Fph=DR z5E!10oQpd-AQ6jSp(a4tRH#{7o1Ww!7;RmqN>MmDA}Ci@v}RSDmiyJ`JP?8y`^vTJ z=Eg?_MyE@pAP_WpYOOB9|DC8)Q})H`)U9eSL*Mgst-^#7(umeaoO+ehY~;>%MZ&k0E^n}yn3TXZyMJc zd;}l->gJqr^Kxqr+OpOmL6DC{!?+a5o8ccxdM^`2pI(nSvo#N zZ~10Ih?QYzCO|=}Jpcrj98Sc*TvCwPbeMg7R1H8ZvZ!@}XiS4vQkDT-45gf$LQu}; z^GV6%EJXo;L4L4Umf1j=wTxv3&8*%}C%^L)%jU%-R-dqF?GMlH-nf6~+PZ~#+Knrw zF;f0bEDB>~(wClzq9`jh0MN&j#*z=x$ig9F%s*1zSdi4(0lFbSY+^~N23 z^|*RrSFBFgdr1!qJCFb*V`!R!AGxO(82~aCMcp|(X2$LkKaW_tYU|TIV^5@+5CkHp z{mdt`wMJ3E5STRp{BP`?IRBV;_o-{Q9JoEH?E`Gdf#FBhemV$%rf4KR6Z8Ve(*r<5 zKr56KMO(Wt5sN%v8HRLDQ0peN=@+ghj?T z=N2#6c(cKXb=wXNnBQ?=PBCve0VePftenX+3Q=+T)}Bh%&cROP<0u)c7WgE!HAsnI zfY@MTtN6H@pR%TAAN?NY?-ND{T8v8}8I7belK)tfy8JQ}LI^S{xyC3O3;?MBLI`UB z!4M%H;v5Y$5vdfVP$~fh5e*o`iZqpz$5GbiL?q-vh%kg!=CB@9Ejzb9fA{f$tviZm z>4xvAZsdSjV-~%ATs%PtWTcJ;P*8ZXcfpKZZ@Nrdxb?u`*~13$ya)j>sB=o!AA4Z! zNV(P91U}2eV}gF$!7q6ll`jax(hv~Qm?we^0a$#PkX#6jv{eZRe0mYEj^9`gJQmFq zF_OzD09lz_$x6ag$YLougy7R!$Nc_{eDnm%BU&m${-KQJg9QWtrz&l_6+80m@SK?9 z)qZZ*wYU=KjRaVV(K1F5^~F2PIytW4r_P52zwqxneqo~@UfsI$;K_l7SsG^7ywVhu zIzWjp0t-*>{0<<5Ryq_Z>f{scYsj)OsMR81Fu+##{S#C$AOg-GJs=QcVg{fnL^B8w z^7WTj6G8ml?|@(;e#^z>`GhQMzHKNzB{IYe;8D3u33nt2!dH{Rl5F|YCKQ6A$;io+ z4z^l-o>nb5IYWTS*QtpR(W)khkUBj)B-&V|WnEM3dk!lJAz!U^i4-PcK3BBTseA=x z@$#ja+}LN&{S(rQ*%osFKq#E@{!T!Y4GrF1JsGHWZP>J?lS*M@qo`WHRmb*Tch6pa z8E&ZEs!>MThl4v_XaNAms5Mh3-HXUk%0VtC8h8!>z#^$r&P+48dle~Px7e+dC$4_T z1OP<8y|j4Y>Ning{^4E|M~tmzn|R_u3=atYXjq0|o>&I|Xa!}|3pAn;C>T&IL*<3U zq$vPEhSWzV-&QDDxmsD8OV7YOhlxzVLJoscRjS&!8IG<$6s`sU7%psIyzSHzfsqLq zzkKGWF^NdZtymHBfMF>BWC}-jF*!3W0|4;s>?57ps51$Y8W>s>r7{cv3YOMubOwzi zF-tHOaZa8nW6&qwkW$8Fri*}x$T~nT?fW*`+PhS!^OOGWrNhUc>H#q3#jTt@^=1;V zv5|?QAf=pA>$J4v(qNJmuV2>5`}L8nZxVR`grvBj94*foB;6=k(V|;y`9>rjbz6F5 z=U&>mHcTUh#HAez)}4DrY*bhz1ktP|69N=eQqaT+I*kDUAR0x0GlHU%O&sP#@+n7y zDh6_bXe|RUi%?EbRF(<>J~i^mxuE*>8rf%En?HAhqF(!1Yc`JT^Fu;fu1*9*FzUGE zh!jB7k$xe5I<;WpAp$@~i8)4&69uV7ogRxAV?+VK84Lz>nn=rN!EkHM)EO&w+z-o> ze_BsT1WY*;Yx+Zb@^nXtSF2j3yr3nEkCLjQOZe8b~!-$0= zJhV|S?!ChnajP|{la}UNz$Yi)3r&SIB_*?f^Ly`?m{V=;xLyu9zUQ8&QH(XerVu2e z2ow|mBE-5}9@8uW)tc9ij(B_NcrcAXX7~q9RwhD-0H9RZxtQY8Gjagn9-Vn&mNQSs zc~`9LQHnji^}vTzsRw>=V&m%V=S;ws6(LBAOUO2eBL8teEdeqaO<|)^$j}IuD4}3( zww7T)c6zLTV2Yb_$%^HwxYG&G9*1zW6b^`0zVQjq(u17Xmls|p3OG~C0}23bHo=^L zd1KIvJ2{nmjU4$ih`1Y;lS^SpL#coS42o3$K^7l->Db;l6HrkZ+m=s$p)T`FNnOB; z+tH%=3Al6aN>Z9fn?}U|MnY~nPh=D_GbzU+z=&W=D$6qnYk1a1QW&3`E?^lA0ZYp< zwv>U=bAdskxr~ED*_uD=pS^nWI1(X9Tjt7UPHfl>O>aSa1R-Ks$TqDvc|?zIWx+-8ce3 zR?L&xljlbnKW%hClIb-VYxPEp94v!KR)$HXaH!g_>iZy{7tuh@fW+sQBC?X}w60}& zsl?e@6QQNdQjUN@FB&9=Q@SW1n-!K}0_y1CcXtB`LOhV7jL%Aul2?l=38V=T1eS#W zA{jF2c$$$I;WASR`KWGyXo3ZSkwE~EoHFSInwI)NR_@t$V*9XrkG06Q$q&Uu9)C14 z4{VE9t5Bq(|DpBgKcoQw!k%ATuzBB|GkZ2{zE!bxuT>lN3}|YXmz7{LNh$ElXZ|@l zQ8e=3;W(s15G)ef&ZBI#awQ!d94l7xVrfRDq`v(QD*~Y86BL9LML{EnwHg6Y@IQSX zJ{KF}|0W>bxm@iA)yq4un8)B7fM}Qz9Uc^$=T^FQvldNCyVGf@X$Ap(gC`;iB!z_K z>a>yXUxY`e=Oo95L?(0OTS!4d1k898D`7_=TMutnPaB=lBoY7%*HC`1I|(U1@9vT5 zV^*Dw^S`%j%>0+}I&9QFII-$N04>BlTt2GTd)My6IyJnqVbai{!+QKWJDROp0{hLJ zyD>RE^u*3hXYbzMuyuD(M9QVjGY|ooiZh>mQL8P za6rFdTR^E22_d)FuRmbkbM?+@7{3WZH$(c<*SR8+mP#f z77rOdvhSeDPxK8JE*e%W{o(u-nDB3P zE^R+@{?550M`8r+k>y)n2KgOWzCSI~Z_l>fHy%G+wdHVZOx%g}b56X=Q^^p3h$hK9 zrp>(3C6FyrRUYDC`58`Wpf*a^p9XLvGx+ZL?2{p9kDg&(o7&Wrjh(+;k-4=}dxrh^!^yJ{!{sTu%9CY$6->-MKQYzq5xtViL^y-n_$1T~K zP82TS;fiT1?ms&}Yt^CLG@tF;_S|`Xd(HME@i8&SHZ3}S>H4P{=NGGy@L6_@l<>If+r^=$9V?N@_id~feww|3+1_2-@k zCOqCVbK^6at)r)1!pj>wH?3JTYv#0BbLOo-8U$FEdNnIMgrAu{tp9}d7qy7@y?#%`?`ga>2z?H62w$jLDv&%D&hYuV-cEW(=SM)t*tZM4P-`c<6(4C0zoBJ=`fA{#< zf@=|(p>OV;ICAgN#pAag_~fPDS-SYjofAv;-w27kcjWxt*H2F`yb_ug?)&iAzS~c( zoxXPGttRcxg5|eL|1@;|;Hrh$L%;4cObF1~7GUgX2m&!w@FL%v;G<|5F;X?o9k^ibk`FP_PmizPc=7SsgIn&t zO?r27)#@uzKTlZqYemJ{Vco`z88vF|g{IwS&1hHr_3iDe4&7BpT%EuEIm+icr z9sY9d%1!Um`y@BCjLTz}F4 zLbk0tRjZ%NSFYc>6a!4+M-34Xn`E8?CeCc_7P5Nkp#B5;&)$5(v0VKc zRqS5eTsySy$YFyAJr|GqNxHGle1gR4%b{}iuO8oD2m&c2Xp$oR@{oPa zTGc7FMnv{D5R-4Gh>_CKmI4V;Nt|HHN{i%1_u0IdmzI#0thG@x6e6T>4dr(MA=2DU*+zr5R2igTh+Yqi+R-8bWt$IO zU3-K|jtn}jWATa}RaP|Z6p@;#W|Z!gYE-p{S;Ho-7&n75VaCDHwxai}<~<<5g52H4 z(XH90V<#e_;Y{_LKo4D>`t+ zp@w0xCgf16l@lcVyHPJ1iUR9_Y+QOQJ6tm;EHh6>nfH}ct6?wZ(9?GQ zGDj(xTX*+x8Mo-Csg#L>&h9cNub&njyB--8V={mA^ppvCIa=u9X*+a$=`rRqI?l$m z2oSJ9P_4(FX5rk=Vjz-G$zt`Vt@h7d3GD17XDe`Ix8PE5?yi$62M5BL zf1`?2ZoPb4QyV$di*`0Fs?vV$>2kew29vE<+0veN+sZUf%E+qr8Z1%914;cwQtTpxi5s-*}>RWISe_OO$XP zk)tLMIor}+jr$zFTsI~z#R%lZN>(mi+TLiwwFWKP(PVI*hIjTXso=4sZUL8S-hY1G zK{Uj)jKY9wT)(r71{{wsZ5WqQeDu+s!@OCdGv=IIF!br=i}C&DHR?S1XoYr(xh6;N zQl7Sx(lgWwM|)%vDm7?@ARx%Dcrm-Zm0PE3c()Q2+*w^*Lb}YcI3rlUfCwhaA4kk9 z(WF~qS`JjWRH#AhlR)F=y-dll9g+glwr$hotOx+ zBAxrs>^y)X0I;^s@+$6o8x3b54;(yLC;R!!*8~KFWatF@!BZ+#EN71duZnF}ZEJ2T z2Ri8BWiL)zQcY%N11dZf#IeP&orjvHWa=E-piFOHDi5!8erP2N);Nt z_VftI5RrBFv>m;6{}>f*;A}h{_$jNKQ3O*8rIRf?eC4S@h$RB!;bA{~)!q^2GA4zG z9g6`_=VrM$l=`K0Y4LaaX$a3@$Ertyo;lbUW0fPkKs*ngiaY zDwQwkVG!_;Ra<{dO4S3oYtfRXzkb$UAqatT8z)ys-{3dbV*)sisa&_b3=sUyd&VIa zMS1y3C11V^dw4g32UMBL<(%b25XhgpofN_X(|QyI_-`Ndq9~G?n#~EOv`D}7aNfkT zrOH>XP}U7|U&|A;kRq0=9bC&-EuQ!8{fkFPQil+Zu zKFSHi$YTiq+_l#7oPi1&Q(GY%;4j~KA1c*ZZ-V%v8vTo}UKSr_i2N7_Bh$u6x@=FR42{iLYSs3Pd zf@o;1DDYUc=qi6X7lD#of*?@?R^kHrco^&_9ZFBJxr~Sy%Zg14=Yk+9*7O-j-?;3onvVt|+eN3&U+4M@x&Ai?6Lzyc%%k;O(>Qk`|*nJFh~LHo|pRi*qLC+*qR6>(CTPeulmB$uQF^ofWl0*baew8dMbG)Yp$?*yl%$}nFi z7Cl2^p@S^^TcSH(d<-FNHK-_2qiKtKU?39kM`a{S<+o^g1b8bm@OLVLR)-gUb9e%* zj{1eAeNtTp3YFY1KIeI?$EZ!it80zomyXs$2z-Rdi^R;TrO&~@s%p`C!veA> zpNNuxfB#c^ELTYUTVOC42q9l)f)L(hFq#BLu8_+ZK*&G)?p7!i9LIezS0Mz8BB5#O z<55B!XEgB?E0?pMEuxg@$mMcD5JXY@XLKl<$`3Xy3YZ|8M*qlbT z6x(zdRI;cY;6%PKn=Ayudck$_{N=r}1&`82LA{a59)(*6JEF7HARjAgct6{w#( z|0XUcV#?O7Y!x>M{*PUb5RMa((xH4+2kS((P~g(@LKJp=ti4BRCm`^J*<>LKQHbx9 zP!@KqoC*A&p-{bIp?W_D7J2U9)|AMJpb&-lQ@&A%LKLD92o$0ag(yTJ3Q>qc6rvD? zBb0?GL?H@Mh(i2tLoS#9^>vmAA(>3}J?KdI>vW*y{B)Y8A%x$brT?gw@<~aC`%XJb z3lqx!gEP-52!A^}1|kTF`QzVI76c)*9xQ^t?vya_AC?tD3L%I-9=U=jg#Hr$kfJ3D z`6u0c2FuYo`De|1ro3;oJN$THkHwLonK;J4a`~NwH&Mj@KKoM$p#n$MSe=m_-EP+u8o3eo~4ijPYOBwpGK} zdhk{uzAKDIRo%*-r}QQ!^Q zJhdh}D@(02Km`9?sucBFb#8X9+5URLa%v<(3~RaX3>4zK^cGmJ*5sJGi|jm35Db#v z=9&Fg_`gipiNNRPm=OCP zN;#x_)|hqo@alOpCoWuhB|R(l?3VcxC(b-~=e59~f0cOvh~US| z^=Ur+){)h-rcYnD@jyEH9R-#}>IDCd(?(AmJ7W5(%V}zypJ-7GN_%}_`CK1wU%TrL(kvxozZh{qjT4 zG(7nlzolrz<;EV~v}o$23F}Y4)bUUv_YK)3;QvKGi5L`n|G?&ro8PDN41#~b5GeNT z<$1HFE?Bzqs&BS}LI1)PWikr>Rdatk3Q>qc6eg5J5QuZh^7TqFk#ApQY6Kc^5zqFo z+j#VKcpgI`@|V91ur@Q`U0_O{5uz_BhoTTLWnMq9X8MG2v!<*#d*i(ZP@FdD^3Jt$ z$B&sZbM?&^VE_wBAwfY=Y2*+3W+L*~&Z}&zx}M>I?}Fpih=RnZ4*lRCo1y*E_Xfng z=FyRP2Tz|*H3EtDe`u3CkU7+B)XXL==EcJZQRZH|Zgmp%bqow{-LP;Zi?1SyQw(Y$Z>grXhUImAQch8cu^e&|;)v4+cc=cISs)_mcXp&$7 z$ja1cSlw0a|Lm2l31zqlW26bXd?M`k6gja!|Xr40d>L!+}1 z`kn8goUqHsH!L~yRLg^}VL%eV!M$0Ns=5@v=Yh#0M)2FLkB$GlpM(?zgKqEGyJvG? z8m7^=i!KV-tz4bPWvLf0-^XY16#A!g@7lyDAO9E=K=6B-yAXvaL}5bt72OE30758= z#KFC6+cwQgdN@K%1WHlA@1`qf)^%;*uIKP)g{>1yP=fR;DERpkek%?D#X_9&YTvSP zk3th6`-Ki)6tLX2WbeM6U4`g)`|91gv~+~P-n0718N;0wT)Aey^zBlQ6*W%}Pv3Lu z3P(d4ekMf$HV`BjC|rvC(%~m>PbURKAqv2pkP~ahUVRk=S%_dkNc>T9$KGq6>|8d# zvK=u9IG=e7*)QnovnT&*nhh2}fuf)D3@sPmGs=qfe*U#(6*m`1$s8N})V5I-cZ6i{ zA2|3d6*UNouHzP-xO2FE5nCc!_y>T{w$LObFFHiQyrh7$&(h0x?LT4W ziuDWodOI+f5UW{v0aWR^bnB5jeQUdjgjk*xWFCIWc_a{lIMf)lcmLt_BO9^yMO(LN zS-zM9z`)+4OuMeV8&yzd#B@S&0hudUb2%?coG5HVU9} zvwml_*VkvKlr>NL<$B5KRY{l_~w8}9m~Rh78DSErb`6BDC?K; zxvTxF(91VgL7=aS(|kyRVZ*DFvv(XhXQUyG;AcfekuFoKahs;)6fzm4nXI^6mP3rm zXVLPHED-`|rDOe{ey&!bh@7?-`mE9)1~LQ$3&`eo{bWG_ArN`eXym?Kdrq`1!+!DX zQTVy6R($UBSRgJXDt2hw*w#j&WT;Pn{Y^vGN|1&L&$g{!vn~xtCi?=*Uvlm*o4XLd zsp=ms_SfjZ0{H&?{JRN33%)<8d_eI1xhhO3zdI<3BBC)TDSKjtaoA(!IYJelA4xf5=@CPDH^?rGw5`Box#Wffb}}9UZ>GZpMhmh z1~O{1lams%vb7jeMC9}aZBCA;HAAEQ$2&rZ8Hg=jwML1OUMfe|BAyNmAdr?9DOa~r zscPj*mGX49G3YcJ4WE;3)T`BclaQZI8O?uCYfPL#%xq}XTCLt-;6xD^^+wUs5EglZ zUXz<6sx?|O2_t9HYczVj!DNy?nTZ(;Cdab%Yg8)D5{wC?X~Y|HQ&SStveY7m2m*?x zL|&JXl9G~|$zg&hWQNG;GE)=N(=xNv2BY}pF#*w}xA0>U1WuiunVplzV<|v5qfV{X z8jTzQz+l#hS$ldTA()qZ2U~AHHyZRjMgS12MiJ&U8R@CXX=;NB!h)GDG26k;yG*?X zm2Fsx5XrKb(`Th6C#2@;jGxDl$Qjf|lZ}mwqaCd`VVXupz0^8yex9e%sx`pAWR1EF zT$QxQo6MRuv(KA_&&|n5%`%rl2wI)TtkmqZr1Xp&gISAaN6=~vz^+#9x|O_DJOBox zNhDHH5ts$xY5B*M(@3gl%*sg5%*r;?{XDTS(?wX5lb)26rqOf2^72Ac$f(IpPE1To z&*ns6W|#;jz0{yi5JkN@E6YrZ;~_#;`UrD*nW^#VIk_4Wfo1@n=aAC5PP6)6P72JM zG+M1euQ%5)F?nw*>_`I3?23_9AaLe1JW?Y?*gG#2za z$vy_HmJ< zF&<;iVCK-2lfmiDW;et9n@%V7a|TUjW@etoUPDj*dh&YB~{=_KJmhY z@_PbOG%{pH99uMb+=yYLhjbgYU}tz9pbKyx^YrMn;eGm!oAWG+vyoHA^pG=~rVbc3 zYSNS$%a+fYIC)=KlIHE1b;G*%n!oN6l<99DUNd@d&#?{;jHM@&bQl??LB}4i6|=R<*CiPPiC01AM9VW=IEK@dp6G)H)zDD z=_{Ad>RjjN8FLn|S~z+@mu{Cratv4JZ?buHhrh>4A%gbri84J zW6MSkA2W99gdyXn&R95W+4(a^H!Yt%sPC^EuSd)O`F&ctWZz?JrjHprdRX6{qo?kU z%rY@F%uk$XQST#n+OddbD>xe~%&E7+sR!-~sOVcq6wmp1sdDFt--P^SuHg02hrio=JtV_JG zbK#hg<0cImFm>*_@C+lD;j?P$&@m&2Z8~^h^^%F*erYm((e5;ZDeUpF-KQQRHtE`t z6)V=9dUgNEp&{hinYkl|Pnj@uK=)4jZUrJL_tCLU6GrqHHUGR; zn{#W|(s4sNk6X4sUPG}!`|#Y>2}1@>8$WW=m@%{F&0VwW+MNT-hIH+y$R*Pwnl?N(@b(j^7Oly1#GifbI)cAJ3xUv(sCqkLW#m+=dhg@&f}Rfcfl) z2iHv=JaGJ|-u*|aC|&5iWfO)C>o;`!uC42)_wUfEhJBudt9@uBdy*Q4g;Afo!R41I?IAiq4p|fVM z_RBQp#5`U)e&~oX^B#q!rbInoI=1JOX%o$VoxWm!g4#$kR&7ICF3*jAzkTN5U)zs; zm6Vqk^>ESTfj#@ryz3Y9`o`fs7e8opA)DsSKYrraxig0*ju|v$_|#3CmW}AwrEkA} z2cJd?6h-u@HxI6!G;avxhn({JQO`*)+nfpd`Q56wF92}&@EkfuRaV(8Py<|mKd`o|eW_?1jS z%*99eJTl|)6W_384nqVbK66vzecpXY=jcB%YAzaMLf$@l_~6l_CqdEa0)a?0#fH9n z^x)ycM^6Kz(s=xxQ_8}G5-Dl&{Pea3nU6?e*wS7$-Sx$}_0<>(BJ&QM@7o!EI+?lYuYIVany z^*fH7G`4Z|nm={?Nf-P+G+paeu})g%NKUGsbHth(vUB$)AFp- z=I080Sfp>9(RJ+Fy~A31-rc${L`T(X(Y8);Q$%hWCosPZ99GZSq|s^s0$-j320#;V zeD>z!73Q73cKvWQ)02Z2uV)H?LJ$yQ;;G8bTGuV+qD>0tFc8&Ad#8>)8RRnW@U4qy zS2Qi}jxo-sOE7k=+_qomALMfTy4}YP>CnE{z;5=socOp%olWTm)g4@GHf&X=EN6(z z)(akG>osdyM;G!sz*paT%F?AXI%j^ke*Au%jK)`YuGoJ;J%7)|-HS%*uHV7#6t6Cn5^q{nZMEZlWEV)dm9XSYmHU*3B5x(`nyWX+6e?%mmSGgn+_Gk*Jp z6HE2)uOB%0HY@(gypgkYbq5@~dTGy^NzrE)En0tBELpEZBQMSv^C38)#iUKkCby5d zeCGa(2ttYXHq2UiEV9?y3m4Ar?%k>q63hUuC2IcEqP`I2r!{J5r^-D#HA;$%dHEr( zLEpveru~}vc-xvi*BXvoy<*z0$v2N&yXS`~@@U)Keb4#bH!fYjyTvx{$ijU$MfZB$ zI@O5`2zn8i*>=o|)#ExOKizXPRA07!yY@fVH0m9iwjDZbV5^#q+x}P)MdYRGji7mt zK|hq1>+>>9NLIV?Pu0tL`8;|M1!}KcxAy0vx%-w*f2J+7VDs)ym4pi$cgFG%ePMYl zVlqCgUp6bW+K>y^ZcJ`zfBxvk4|>=3-CNSUAtojZ*t>P?-@mF04vN=^80h2gPFj1} zsn^b{R}WONNqUg#)}`A|&D(b@s!i6a)f{r^Hn1bq>r+y-Gy=K)w-?S_Te922t5+_s z7+z%eh9%d+IVEEm6h|(<^c(nNWmjjfx+AAgZ{NIv|AEEpF2t|AaOv8egXK)u=WRKa ztOqm&KYJx4l&o^&woOWlk$L818@B8-w2>FlY1A?r_@6(r>$oss$CWFW545T5B?$P_ zx0_AV?tMLTA|o^MJS%$3i`H%8luj3E*}kf5*X$|2RFj+6uiQ8|%>UwwZTI3R#ImeD z$mg9+-F_?AE-6k&ojm*qIhE?zvqv!pn3!QeG)eZkG-Kj&yQb4_Tsv7AhOA$Hy;PHS zjY|oU>NF#VTJ;;=$P?={d87dE6b;hD?@pU|q-3uhSFc^DK?2t8G3Tb_)1W?asQP2u z>TFU^s+L(#|vIugxC%3uV+5Z`!$I zb(dUiq8=0Y`RF93-O6y0xZ8LZt5Diq<5IuN58g3z#*Pbh9d_u##dBLG z;s>iHtT>XS#|$m$m^X1w=Jk{nO2Vu}jsqT5T6Ab#Ej%zTJC~`~wtLT36>V)w_8T*? zW0xMie*LMWf{Txia&0i==#f1gN*I@onQ-BKT3*13IXf@ZS#kOL)%|61ZXUXNHwU=4 z?LQ#j+^y@EWeNHJ`)nd4>e7S!{DXqyF=LsrfI_6-JGHD>iSlEc$qk-Z@bm=dGI{6D-))`^f1L^G!JF#nh=?@F~B)F^F8jtGfJ z0SpcQm=I$~@qZVRQM_ushBZoQFaB zLQ}40!}?W@>C1(@J#e@a=1^Q=jgd%@pR5>U5eLyTb>fvCEhy;wy=|TnXVnsxe!vMH=l&?|48;ckfAjUGXQYDJm%4JS&B}a3C% zFIl0Y4OOR3+Xc&)E?U2{XVbckTK^>SqD%?GZeEN@6NU`?NsfhLHGUbrz zf}sjrsfby*OSK9f4hl>Ik`(^r=tHhkmp%Rw{-s?jb)7bA)+|%tvt#G(axM&l z7Og=`hn*dN|K1JRFQZyDDgqeKQG*9|{lV$!om;PRY7FT3qb&f=C7X@z>gD(0_N!!2 zqkVfvH@DVfm;YF)c*7hizIxfZja$^Oii|uK4Kb%~M-yH=yK&vd z%@<;F>Cng&gUFPvR?E|=Y}a8^TU9L9v|Vcl7iTPpay##;#fsXfoW09blswbLyKI$; z(sU9AtlX(?z49zW0UpR*%T_Gr=~1)$l%c;=u2i%64|UyZv>ZI5SEW)F+x$@4*4D&x zU)W88c`P_o7&K|+l%L)2UOMqK3CdVT^0MDFsph{`IRDKJoGlzZ)CYufO;bd*3JzZHy#Peq9S6_)LI}F{@mq(jdQUw zl`2TSje)|(y>7j-6oOJN{i+yWX?!6x0Y3$Sn?uNVO3&`w5{5K`&zf zNV^&8J*a;tnfm?Zms*e)w|V`#O=o=4HQ2mm1VTZl=6~otVnBy_73;KWU0lX62m|0; zyhcSYZ-_-~GJd#wJh4pcF5Q{{z;x=+V{rGn&Mw7DRVs&h4q%|P^{87{Vu||Q8gAg= zQGd~aHBHOwP98p;n2m*`B;9W>Vi;34b=$VF^C;eJ;*8oQiv9RwgHk1pS|cY{I$HZl zBLIL_x*CmFcP!q1^o&chVS~Chl@ZjaLr1w>@uhhO!f~W%t*+hMwBX*I3r^#5GSV`{ z3WJCLkaXv4N-7vUwvAi_4rQBk=-u}1m6zc$dPGy!3>*NaZp+FZ-g2JDG^Hx-UBZhN zFhWi?W^>yxv`gtqCA{679bL+|F7M{z`AhE~D!LY_)N9E2AIP)kKJQ4`PRka~s)qtk zAHNbWIxAQN2q;ptjMd!bN*DETwnzV;=aY~Cig9%HEK$A)5kvwJFlD4@u#G*6i;U7! zZWT)uv7x`_?sWnv+RoXdbcJF>6o}LTQ;zOl#flcO!D=0Lt69CgJxfIL6@(CF>*!j# zatVknQ|B16Hnfa|JkMc3v$T>z7!de}WC%cVrM*{)at;XKk0(-Th|IfuF)xoICCV0K zH2Pelh#>q!!H5XtrOH+3z8zSOAv5=Ag#;$yY%B8*BJiR;}WSoxY0ApXi zLbWp9?(XI%a$d&^1VC7rP<~HPP;STQeUG2H@>tCQk)j|g`|Qh~Ga5032!XtmbcPtK zm9{qu07whcIMHGbEbt~{{_ru!V@x0fqA@EcP2=w1;Ns%o;_6>HQjV56qC; zIZ(8m1^}4(G#O+xO(B2I+L_7U;+RUwVAPL?oPC$ zouzf4Hwd2>7Ky-d=F&!!2>>7hEKmfCT#gRdd77h{((AOCNFglg91DaYCbixOfJv_t zC9@F%=w8DIS1uPjd&KBT6BehI_^Dm%>Ieg~=Kt^*LY6|QX?Hdpeg^Cv?Ccy+{>Tjk zX3Lp0SssouiUNf89y)(ozfNT{Q(_F|y_8CpSe(|bR8_TBkj%#O7-L?aYXX2`Sh>o9 z29QsSO}1sBmn&t_iNVN;_@giIyivp-o8pXm6ChaNffh`$;G=u%dM-Hb*bfS;PIz3AI%a0$uj^DGZT|2LGI~fZ|^Kuxwh*)ZO`m} z-gbZ&$QQmFMBZRBFj6o`k#6yAtmi@P4#QTg>8JKNI(O2jrTZ?2B;~R+0u~4&aIey_ zZSl+(FK<4-c$leDuY5^YZAxsqgUZ3p#nIJG;aq;k+?8{Gts-C%Kn3JQ9srZcz)|@O z7L1nRp_tUX=PGR%y$~Z74wU`$;00fK8pb3+Ge?;p-=lpS^JQ^N1)6fr--- z@R1He6kWi&5MZ5%+IDJF#3gCh`KNFFp2aw}ZDI>@j5NXCjx59$r&rM`cTp4pF37XV z$cv)Ii~vX-GJqeSn=m0#dMk)h;>jTqW243(8VRuXboHuM)MUVvOpzNCb$<83RFh1W zZ-Rp67BTq$9E4CRmonu_dN|tvENNFTTN#V-q0w5SK0eGZAST^}(O0Bh1j!vsmo4S# zW(Tn~FOrmOG-L*cCfb)Q=cWXlNWOv}3}p@_%arnVcYp*-zZ2HUR-sMsfA;K!Ur?gb z##SY#Fd=_T2(VtoOO`0=t*{azM5a;!U0hgPN?LMqOoB%GmKHGliV1iduZmSF7looe z%4=)=2I(XoiD6OGs+rOOoc zbYlq?|AgI$Q^{(TD!B3bY`=H!vuSrPCtK&@l`T(l0^YyRMsD8U_kF1_p+ppd+JuYS zrymPp+w>hVbwclAHp*fZOCif-HvsVC0ohRM{um0_7b^-G`IBc63}wmiXzI5vk%$DE zfCR>}fR=`|($l?&eH>S%ap%DU2aX)tzg^4fP@@BsC0Vqb9!F8oq|1tpiPLiAcQGjn z5aPtxM1vqw2vH0Gn(*WlV54-CeOjaiDMSPCyIL4f0H$OZcmYs|0wRJ4QJ*eT%HLEj zwN6{ag8-UAELT`qyI_DQ3uiP1C=3vc2~E&K0w@F$lQOdmn6Xt7x27Y83?4Of;NTwZ zN;=bb*X?s}+IQ!fOQ&~F#D2$bKJvpfOpb|4%r^awHwY;tLl9ar0YDLGT^0ujqzO#V zG3fMwrV$V*B5@6%g>7P8No)m$SO8w^Si1kvt=a=8O&Bw^;hr z&P>aTi!}j>f9t+uL<9J{vJ8!&oTWeh`iX$RiM#-4$U;CdG!3m!iG`C-O;|rOw1EdM z^_sWoHe$;5<4c-VvNZ}8!5~yv$XY6XbR_Gc08o;{bb9lKLuYe_j2qRvQ#*H4hCtEq z<6J3VWpYPX_h&D|5|T|U12}__9v6cg%h`X3%1BXL6Svf0KR0(fHxB>^Eiq|1FdA7{ zA_&Vp%9Q7LQ&?~w0F>oSX^0?VPyyyGp8<;`y;9N>A_>UQ5*>?87yvNqQmQOQtf@r5 zfdfX57(B3Fk0L58a)Kr8L&#E*vS@-~XiGjsc)+lbMiOyAi6~EF%2flYoIptmV5AyS zo6?V^CI(i2GlL)oKm=((0aJQxRC0#y)AB4RV_^KlGaIKbW@@z`IblNojx_|4FqT@F zSO(vbWrq|bfTkbFt)}i2Q3p-5I{+LP*ud$%O+N+ z{zJE+gQYnArCDX5&H)9zmq_6zwcu8w94({s+`A7MINBTr1A3KlVML?J>K4f2NBJ%b z2%s>^&NXRtfQA4H6hMp$sn48xndi{&;OT4Uw@%EwdGX}&50LuU7#4}bv1o_k-IMR_ z8oxHIexoKuY=O$Hq<1Fg;?ZE>fB~b24eZ_hXBB6V6lF1azAHlO_8F-uq+ltUW}IBS z!Xr}N`(;rS5HZLI4~fqc82~eLO=>es$YK<0HLF{&2tmR3@`|w)r+_l zDO+*h4lO00B5P@t?K zGd_nXOB8nzxsUX}iVpvYABYg25t*86TdG!*h7D?0E1sE>l$>FpDfD$m1eytP;-@qA z6dn~S7PpV|fBViqM30mTM(Wkb*JQZ>irUn-4<3c4aph~*E$Sr41QVlPv~DCNe{Nef zpPTsl{-dZIRJnE?PdgbFM8Tps4E~%qLI8}JanJ8Oj5jE&)v4~HWC$jvtoRpqAI9nA z<|nQy^AlV+<^BBt0g<*D>omkxh79+QYzfK9jC}bvHBX(Hnx)l+`}l^a^}5WI90Lw*ID8>0DKjTNbls|ruaw1V)u}*XAf(I`75gDmIAxXNNoNR+$mmQy&W5R&Y6v}+?@Sd6bm<*jJH!V|Z%*sm1 zkhXI|lQt*PKOiqRCpOYhwN0C1WnB)*h%-6dG*kV zr?KYa5l{Ps_{<_6t;-1ksS5lB3h406v`mdI!q+b-&tS@mi;Rv?XQm|>IHOu)Vr2IAg8J^wtM`&|R!Urk zj)w?hfw0acYc=ZP?sshap`$^ui4V@Ln6lwQ<)-a_t`>Ou)}83Iyyy>?cb?ZauG_AT zohjt?o80Wo#OOq$(UcGyln@`1njE90O7&@1BtH1urZXQhGa}C(ewLUR=<_}}$6(6I zNzc{m)6&wlCbRg_ak;snVc}YnDLyhHHzy}CHpXByrNjouga@XlMrRX`ZXG<5g7;6^ zaxX3;Gqq)|oPs;$pM2LL(#fCS!V1x>l|I@G8*EzMay+F~k4K^G9#|V|0+R zaq~zF3wiwPefWnPt4_a3&k6MT5UfBRmo zj!DVTrujZzJ?NK?lXnEA8kmo#!vMWr&0&MW-X=Hl#lDRfOnEsGkr^CztW;D5qHjO; zi+FzV+>KMO4Y}q4y<7o^d79*;fGa!JZri?Q`t(`rUqw|zo09on=mDWspA zu;NNYYUbmE^QJC89F?Avk(Qa2?^daP!!q`cY;gzbw>2JEKy;ZJEo&(v9BS6AT)hMkfkTnn zJ%8aYpIpE0f?s@c+`d_ZSDyFRNjt3LqhtNeQEkdgNy|`YL_G`4GUzoanR$7U0se6s zT<(Y771Lgy+`sNYXnMqpqmvgdN#q!N7mpbK56|BC2fRAB`uvBiEWZx{Sz3+SY(#BR za=O}J%*oLZ8@UXIJlOX#GBm;WLu7I;fcY=ZhLE?fG-`E1bgI#4hzR%1$Ouo2Ptq9m z)_yWHG)1jTy0CQ8?NCkW>NU$(tLo_Hq>>rKKKN+Vc}WRrI4Atr+L1jv4tX4s0)D$W z2OCAEL$B60&`4Dr(8?3&1W>zuw_+8F?AdoUNu3+=^7_4tS331+Ua>fpmXKo9=rR(L zjRK*N9D(HPH(rE8}Ilkx4Jqd}5&n19D3`xKLFep)z7JKQ^ z#rw)$Z5q`>`eY!ZZ58O%*%J?Le#lNtlzLN0QJ>5mk!*Ib0&ffcT@e?SeB%{O5D}wBtK;2^dU$wwdAWPauwHKvzrkb>LX$QR*cNNv zqD8aD^-6mvG5NX+#UMgL=G)hPxk|4_Et;2cvxQio7{<(qi9mz}qu!uYvNDFkYmtjwpXZ zh=@8t`RkN9Gskt#cywgO_+cZ)Ob#@a-mq{&Wp`-g2_?5F-K?XFkbGj@%tJTd8b!)- z-UZ<(mo~rr)Xpto_mWu$UgI8JTcDh{`{%c5gf$@aC2 zu0HX3bmXwHVgq%+`6Cye<^dS}Wbfr5QWWOgyL2kav(?H4(<>Ft+dF^Mgw^*;4w?Sz zFE#tknccTlsTYS4$~e$(myGGtfAnIZdf!3a8`!&4EaT~to1VcJ z*vOgi;^4UtrlK~&gG-05T{?2}b-GirqPO=ff0Zq7+^qGGs@%m5vzA>*Y~8k*vy6Xo zecy?b=O4vsit~H@lbtd8E`5Uh){5q;aS*L^Z#vXhg@nhf74xzWVoqm#M zgcO1d3*%p0dGI#ct!l{!d-f%=p8XbX=~hN_a^<)QGY{k9#f!QrFYe#|INYFMDTpX_ z%>8u-?v<$E6mf3b>3gBRmkxi>+PXL!PHtTnWJEaj$-&D{6wW1*9v!~%+V|1rTgp1M zL#|zU=j(rd_ieB0o++UZuRe;&AOzXFI(n3FvbUp5iC6b8Ie28t(jDiJs|y|fVEwwI z7tUSeJ?kYuK794XlLOl?%IX%6dvN6J(}Z7ow65S0Ja5XJ*U6qE#oa=s?Ea=#=VnhBf9e4mHDylSY7M6>Tk8^YY0~&n)7Di^QU zgzxoz>y{mj(=+92wi?%1`E39Ese66uHEmd?sPoG+>$aab^*GE}-y!C}se7-VoV*@{ zi=nKG7tUNbwdGM1aB)?h-?}2nrF_)}W!3%>np_Sd%Q8C=l&=4C^Db@Po!+ou#r6`N zht?n&$B!I-m4cf0=~uoyy?^2C;}4^&ck5JM488y0ZAw%Ol*x(|btziZ0YDJ__QdR2 z+tYzfgVv*~iE-O!jkpl+-nmVEFZ;kl8_u9g?Itf-U0)u!d-23+%MZwYoII_2DZNp& zE|5a3ymXU}?kM~0#@Rd1Jgm@n?exJd)vxwXA3kvPGdO16Wbks+Ie+4+LXR(RKY8}z zgYeuEl?*4>?v6Au)$0E=vMzOd>zuhqLz}m3Qp6tJx_nMv?x%7ZpXCz=3>vYJv>!UZ ze=UPa1fL-Cz^Pc-hCS!Esb9T_4d8f@vGeY^VBf%c%-#L-CyXBdSlMyW(2AFLu8L%9 zlBlP*@7*}NVpllhtrX*L?mvF`^a-C#ssbChW!FQGIvrMTnOh|N-TIj$7H)XkW77Is zo~laqe;QF6-rPKU{_)5ke`@08D0_Np)#kJJ;&m=1xt9m-hL`_w=r4}k`8A`~-_x{e z-M%b(vt!laOv`3xilwqYoH_P5(Zk8%?bSV(Zd|%~?}JV0>Tgc2J$>z%wV!-+=G5CH zWrflXmo`o9HK^acXs2o8$2&$|-*Y3##o5L0@=iaoNR`Sppe9RWF#Ud+EU~ZJp>v&v zox3*1JjQ|uyc@1qw6JF0{V4+nOkRA#we7kEBYHSxyxwv)ptP5L^$*Ez*Qo=tzKo=+kpVm75Ft^W$U^9RUMOkkZl7P8Jgq z5f>L578RkB+dJ6Mn2ru#Za_#(TugX;g5Jf!l|_FnBcxDTcu1ZB6>+!CO-YE3P0|>6 zgwUrw@*?>&!;`6@!CK6Exu~*|;-g}c4V;)77NQjyFK1PDviV7p-Y7x@{$7B2d3oP< z8-z-wqG=lZ8E^tI@)*KD(~#xLW@$~KKq=*r03dQ0$q@Z17v@F4P@e{nIV=z)lL5{E zY!u+$&Y2T;8;{)DP|c0vM1X)`!JR{AtZHq-g}PC?JYOfGe=}gkmVjV-5qA zQu1F00PC__t1N<9KO$ghheaUn4%dLV2KSx~G}8b)M<4>CNX)Rd zBBMW2HX0?$3<7$sp0-sg&_^Yhc+86gT9)Z4SO6`Sd*r+wFlaRW%hm&98UhK~OZzu}S8C?I#r<3Xz!uJlmHAIZC`)rD0bm3G z$McX@%Am*t3;`lQ5JghJ`l6W)4CP8Ba8l<|+@LOMKHGg9R}3C-Do^6-0|yCRsfa~{WR^Jn>~JweL;*;V%bPI8A|wbVKr@m^ z7*ojNITnjsq=2715YQB5S#+pSG0?)8wG4yIf8{w$*(j0ZsQ=I@$z%u;DI|Zp-=6|l z6gWaF7{Kv_mO}A>PAQ88!RBsf`)et5oqbRqbi9n=TT?k|c$q!_!^*`??O%^3!PB810VGtmqxuBf+)T0V~+`H2Y zx4!H(ecn%1Jw^U^s+P$S<}i=RC)G>+hFYzMa-~uR%oH)C%pX22R~I=E$z{-B;3=As zF;eri6r@BTkU@kOAtM7a0G_NHw(v={3s)vE28&Jz;RI|Z&S1fapIQ$Q3B7#7Zn-rVMm91P>CSoAw1O>)Al&V_97Gd&*96&CY3xXhu;y)_H zph=C2*OjSSUP%C#mlPZxt2S_uwJlz{TyYN@k;kL}9hppqu{2Tsk4Jn9CS7b;v`yJ6 zUJ6Jkk`@yZoseY`Y1g8q%9rt`1fKi>OAyf@B{V28TVrXH2m)KOT)ARJoO5G?L*mm- z9B?dB!n{dQF2xr4ms)~|B8kBPNqKtlBPm6>D&;&}YzQW%yzJPxG}rQ#Tv;Mm4D=Z( zlgU)ja1i160RL1SCrb3OAlg>0QAVE-k*qd;dZMaWt%9qA0{`B@&7}SfhY6XvH5!c& z!vD2|vcSo$1QTNMF{$-`U7AKfo8-HB*}}uO)FYQI8rrj&?WYBa7?Xc24?hW2@R9ZR zf8C6fq3p6uLNY}Fy_^nOmy$87J6IL(jBu4}S^wn|t zrEvRPBj4!T`HK1eM)-Zk{nuO9~D$AgUl@35GOJl+M!uZt*Wj-Am@sF^M4o+vNVo*^ZfpU`^muG-Hy_0 zwMFZ6Zr`+ug2GZ?RETfA6Ff6HNiW)#EafPTNPUZC5SJTy?aKAg=yb=T#c)<0<65D8 z&-UIbg#W{f&pRZ3Szbu(l>pQUYIaA+XOP?o{-+;eWLP`Hmo}|D7 zx>$`iaZuL;<*X7o#Y^8%6SsmceqDvi*lo%2VsKdLyH>bFyQI2u%NZpDeU4kvVyk zaswhK3gq9hOx^_93Qc>LYl;{ea2!X=kXYDPe-98s{@WP(FO=+$NEM4kUgZ9Nk(EfxWD!!?JE|;sjLt|b&kOOF)G7+1D1g5Lkr%ZBWECnW zg=86%u`ojadvZ#V6aSr^HB=~7(Arl^C*T+6lZ7ZmVM6&|29m#trVxeuA3-7hEAJo{ z3oTO!P#B>9&H*|?$lsJsA*sTIvJizRL?H@Mh(de^P!{~f{02g3CV~+9E_5J-f02%r z6NX_VQs1AY|D=`*kdjcCP!^&Pg(yTJ3Q>sviiGmJ448edJjqPwyJUe@e!dqeiOzqA zmhwq`uWa&bMJr4wzx|XA314}(#qX*iilQk1ArN>h{@eEzB1BpEAzytI55O3IH=TT0 zLtk#9pvEW!5CWn=1OWpC(VuP?QZ%A0acVgW;ydB{A3yXLRrytFfe=x&S|lQYQWzp&{=^Fy{0|^Ml>WDX5VE?)zZa0ArIwN9 zEY<(dw^#o4&BBBbrBeA_c6lol3ZCahQT*$>#mz*lyS%?YOaDGjx+pAb;Jy{SDAv-BHJ~`W9uZZ}c zX)!M;Dj`#?GjOg&%a$(c2smSQo?z>wr0`cZizvt?g~z6=b2*}{P`#=h^_7`Cq$u?1 z+&o~}Wd#xS+ZDB!~otC8TL|8ijXda~%HNGX@9%5%f7ak{?R{8$cAL%gKQ%J3005 z3?@W)Lvn0fMxIv7GZibBcTma+!QlT_e6M5zTJYaS=liqt-$V-he*pCN>7@aL6fJ6B z9GlX-*R;#;GgU10m30{gCWqYY-=zKa6Zb_KqAbK{ilm1=*t&em^vMf-<1!%g?=v`} zpeF70s9!oQ-*ieZLp1z@RLVxCKf7^$pVmX)r|J+wpPwHqDL!`7(R8@+f1mS(Ld|lv%{ZlUovje#0~eKrzt4-Ztu8}LwjBgH!>9b%7$nb2R}Ks zc;?iN8xQADfcmO5hoVd=k8htpd+yxDOP4NRy`Ny9lqBQDovUZhoV#%D+@lvSpFcd& zvtbAG&A>#4{bSRiS4^BdY1Q>dse&$I=eqf`=gd3&D4wR#w|MV=6Ce<7Ea^0S z^0e0(mQebi0AeU1_STHCJ^L-Y%0mSIeGNm3aKZPFE}b!A`pnbunLN!vP>4blqA;QS zwvJ59j=FyQ!26gCKm%yGn}(to8vZHHp=FLu#!xIIKmx&>NLTuK@Uj^Lim@7lk-$Hn z6#{kWxf91eBhEjoeU{<0-vNXckgP5}bG z%oE1ARLj2e=1um<$<#wB-4GF^X<9`i0=^QW$;AFJXu;Hu#Y{Sp0^qBp2Y{9E)F5qUhywpoK*1y`y{ax= zG__6{l}5_}2)}Zu7HCuNpE>v>AkLEXeNPZT2*oNGih;l5T;xP$v3gTCtZO6(dJL#9 zTZvUDh|i@%8`i9Toz5e5{PkV4`~KAT(A{uM|Bg>Airx*n&RaUSgf=JF$a|J*wsFZY z2L%xXsr^4SZ=M}+@6_ol*&>2}Z4?50H$VbJjF6mW0}?k8P}0v{8$S9-_kbrxDwHh5!J8P5>%7g#h3z7u_NNL}0l<`Qrs~NCqTG4>?e# zR{P5V?F9k=CyE46mP@fA0Hw;7a&UGaq6iUC$|)%Qo$vrED2X615`zHbGROiTSh`UL zNYI-^zyc*sK7De3=Ndhm$&iu9oIoIydPRjyQY%jYfS<~9gk~ioKw?JZMc`7r!SR>( zI09jT1B9(ynZaQoLl))<&>2M|kPlk0vDbV6Im`=~mQhLstl&g|S;r0&_WUvyn4vL> z1uk=v(s332sU!hBCqPC@87WBw3}|Fkf`P}7w&}a(US}TA02_G1$SK7qIwk>|c=C}f zq#YdGixnfHMa@5q+gE=ipdmK$1ksd=0q~Q~q2=ac1OY9Hj4?t=8bFB};Q?jqVE1ty zCHZ*!F!f0sBPWUQ`RT{Nq0`i@IP=$yFLEo_tzSfewY+2F_JdL%owcd4Y(l4M0Mx$~ zGMI>xC(sr<3K$p#pkytMVfn1czg8Pdtxz@Kbrv>&r8)-yjdEX{-NotG)wQp6neg)52Q)leC__R%fGTwF+OXpizQi!dsd&%MeV*nwd6)K9Rkwt@~ zpl&VNh72XQ#-kWB~lFUBJlDN1x#^Vv*eHOB{x*rT?@rz*r-?>@Pcx{sL*h8ASk* zLI&vqS}nL5x(JUOO2Af)@q`mGWpQlyv6BQ!R+b)i_sAW#S@)miG!ji8S6vXA zDN@AV*-7{5@=hq1A*)41OF&rz#}e!kOp+30alTiM2bXQtt+@gq69BA5G@Sv<6o~oc zTI9=u{Jj7vnx-r(p9Mk0gjh0v+VVg&KOx^t#{wu(qs)}PewzWZ5CVhocOH2emI5dW zA|#ii6rX21)~s8<$k4nxZxA8qm9`go<2Nv=C*Hm;)lEEx9{9{{?01{L*+&U zUBCa@B!b9SSFhfF7?#1aGz1V5F5~I-tJfYp4UWn1e{y5{);*{02Z}TddwOl-mYpZ> z`l)$}AvsTP-ne<^(d)O-Jc8)c^0ka;--~C?-+vvH6c>8p$idx5&c2S;+ORO*|Lv`t zH*Q^fm7)__8KqARKCx^4+6_DQ9Xa|gJ}d6S(+lUXKYIQ)HCJS4n18lAqo62L*7=hM z*KXKy=-P{ykDlCr5Sy1A{@~utb5~wub9{Ql`-|rC zo+&C=_@ywyCLT2H{EJC#x_|nyNFhW)Xz;u0xc)3EB`xsz!@G~4 znp=Mxln&LgcWytvb?fS*;8d34UfjOCZvCe1hpq&tn^+oU#ra=6d*R;8fW-Ll)5j0( zK786Ql?U4RbBA_p-F^B)teQe7G4REii#MM<4>3?M@X3QKH*Q_N^mxc}1gOoAwg6mm+RevcK5-(cexP8_`JA!?fUtvFEWgPkx^Kic=`CQ)$6wGIC$!2Kqf*TIRyHo zyEkv&zIi7gHtqfW^BcDAzVIxZ0~8Q6?;hN|aP8h}-w2%uWO5k&_U7h|n>KFUz5n{# zWG!SU@UK^>V*-r4l%|?^Ee}AEQpJmvcGYF)Vgh9}|K|3oRjbx*J9;BVOBh=60Ze}L zs(f9T-H*?SIB{U-s&(5>KMuxnDl@|G_O&bLZoCMM4n4nb|CZgSANr;$6jYectA{=r zBF6VGUb*w|eGZ`PWMa_0GaJ{f+jj7LXr@W2pcq;RdVFs4h7Fsy?>>F|VH$^6IVI!O z&(9rNw|>iss}JAYzjo!`o5Yy#8@KP>zWyYYM`__7u3x!w_R^F191~(FxeNwByS;AB znvL5}e~8n`8Oo|ghEIQZ`|h24Pww2i^C8h_NRE7R_x6=5w{Bm%bm8`+XV2azrKG;R zfA{)>m-lYmk5zMdi6J*{m^r=Y7nf@*GrhWWaNU~qyHDOqHX<98X(n~+`i=LYiSNyW z&sSeWh6Fvl|M=$R`$1vhH&5=p@ZcRMqttOh`*!c#uyx;sr=cdA`nX63LJEq>5k42r zoV))vEGZ`N@WK82PFxDh1wv-n@qIgY?7I-0YNQZkSqgGF*Up|;w_)p^GY^uCNRGHz zzqePfT)q78LynFMfA-+q)tk2-yhziVB3?hcb?fHMyKjU2-<~)C&p{vs{N}6hETGGLdim0wH(@#+ zAy}~6v5E`iG8FOV;rcae)^9ofCPE`)D9YRft$%p+#LCqh_nv#2oTm?Xe9b3DLvoWJ zU%GtnLsa0i$5(INx%(^(&?cY953gOhdeiLl&@71P_w>f9HS0I;*njx=?MxGZ;BN** z!@RWk;J~2p*i;S!3Q-g>CdY&Y1_j5Z%)p(Z0SBq%66I@u%;ih>{SZxl_5 zv9Vb?@hb@-hSFuHga!qLMI{(GOw$w)bV>0skr9z$q2Y-sSr}3fe${w5F{xw1gM)&@ z($z*p(-v8|)VT0~z~I=FT#RV+)kEvpkP~I*DI`2g%TcV%l$#b6DIqF4Iwm$QHCrnH z1iy|Hugwe(2@DR4$~A~c>dPr&$c+gL4h#;@P@Bw8zIq;uHmTFYf&zlWW7Hf*6q26g zriBHWDaC3yGjUXyP=4nH$R>SWNLZBGkeeJ65gHVplA3V)_^PR^_6DZ{1=2p*H-Fyr z35%C3dm9>j<-qFcW445)8)P&Hy}xJXvd!TJCi&@+RkJ7gr)P&hKRvdCH^(C$7Hr ze{gW+f~m7+&e(VRt?%PgD<=#*@gzu~P*T9{W#cCAIr+fIeC#w4LZUAD%F(q`#}A*o z>CoF?-;=AStX#J#%7_q`bb0&A*%McUsyQw#^5E2EHv$bRCS%{S`L_d7_`Ia6hn7uW zeJDIblraccz{n_F?7LmldhWmZjw2-C=8owLH#`ni%c;DZ8&@uxxjxQ7AeVOi%*K&Z zw+AHX1Wo+8)nk`#+!`%FnEZ0bvK{`(801ABSv&t!fZ9U#^JHHXwGZ~qUp#;A+jJl^ zrCixPbNT*zdVpV^Sg~aJ(ubi*CQkEY?}mBfmxW~;5zcvZZTHAY>t6)sun549L;$6W zJH2hrl4DQwqVDdF>8rQyjx!+^!7pA4XIJs(2KKpWA-DYVfPw+hSB{e!t;;&A09L=b zvUkRiX?OhN)tRANrcGJCep6sBZMI#~i``4s9*#^(zp;MY)Obm3)`j+TlOL-llqc`hyi?F{K2Wy4xSH^sZ7^5EMGSNv_S@w10PNrx8z=k z0c85FUAg$o+t`@M$V`noGbu7SFgz(W=JuhbE4S{8=MfUJ?jBsebneDj4pF*<3!B$m zdXy?xk|(?8uDcz^Qs|@B5g+;D^ny84X3m{|=0(7pt9zDB9&s%o8Bi!a%r-B>+y!`25- zMZG_@WA5mUQF+1_yGw?Gc~P&|kD7J+T`J<^_f46z^U!O;>aHBwI&12<=@WOp@%OuR zbm@eZ``)GT`s~Ee=rj|T7V^PAIw6H&giA*@&f9%e3t-5@gCiDgeV&OkE*@C1;))J3 zF|RMLU9&R*L%Akm=lYo|jyw~Q82I4$w6TkxhGarycynRXvQ=vX^B|3MFVAmTG-Z)r znt_45&z057HXq0a^3*rSRxh0SB3_S>MU6Df2)?^y{;ZWNPUHckpiNIsZCbnkVr*jE zrFG+%uHPDCq*Gp>UNw94mJ6@-00A!f+Rk}f4&COVX3y3YYtO#IwDA1=#=$F(hi35^ zewP-{pRsuUlr@_d4jZ=om0#?K^J^E*oVs|a;Q zr>+G97FjijC?w>@oZGX~?92{%;(s~CG%(QO%;(TBkIt+ z!N+dA#z=j3_0ko~&S+=^awAXfS}<_4aY7820mNAY{sse;R+V}K0dN`?>Pg@<^*0|ws?Jvo_us@h-5<6+Et5p-VCA{ z?D+7d(0yy~gmZj@TGbY^sRZxtU0|-F?VRnq~E1%%>Jf21nd<7kSYLwqQpTzWx_{hLl z{*h{)60@TH{6mw|Q<9UDGjg?9qWcwxcJR4D{_lcgQZiCv-@f>em|>79NPLLDPhd<= zc1qye=i%`ggrUEN6fkA_`@Ii~Ps>P*dh^0BEyn}}O;SQaLSj-R+Kh}W+Ivot&uvOoCwg~q36Cdc@^4amqdeN7?=A>=fP?>~HqNzF`& z4tet`I8QH_^5V@;;?lE{qk><(3D+2;B)%}A{9Yh}fSrp~8#=U0DJRGJKlK_pX>`Yq zJqPw_Co>R}z{!i&A2Otk!pWve+YyuIZ&)$8Gl+T+nyS`jhisj_*HpCQ>V*^g)Gwd* z?pmnHqhp@|)ok++qT~QvTEF?uBYN_>4HL$WTR6RYId8^b5^O!Hbn4xX(Fi8OIhU+C zcyLF#%2wbxqI7K6r*G}*j`kH>^qRC_<%$(eU1MK8d#@^8Yt+!bPWCoUyNww!ctFh} zauY8CLXg6}U7x|Vxje?sqvxcloAzz0rqq1Ma2+yk`p&KEo0s9=1&8R6L)*T?>pB@} ziokqfF;%=;tKMCI5_sp@KlWX`c+JY`y)q+ThGv7Zb=!ApTGfTsGl=9Q2VS`qTe3m_ zG2<6*Up%(Bqg}aX-TU|ag*IY7KT$&zE9BlewPoEq+Y!^3&z(AP{NSI2Qx|Pqxo})bL$3Ib zrZI9JWt)v1-qY5RMKmqs#N5C2qISEXi>FT++0rw|2pYET-lAds&Ru^f;f@Fo+{!fR z(Yd9{XaWT{KOsPKSx+B7kk#und)Azpqg#i4coMGx%$K7G19{PI-5N$EhTOQDL;>}o z8yQVIR#LIhsYs2kT{@LkWQ!bAxBcM3ZA#}EMTMg+Wnaui06%se(z$*SzZWkB$Dikn zpEP%1^~`ry!!nHCm44{m;}?;0tlpy6!bL0Rjc%0@^}(+0;JHh;EF9iU<9{nW(^RoZ zmtWgd*8)9n0`=SW@7Jz|jRLV0;Bw-8{X>h^=`?xzf{h#IRuOfAl|>P|RsLzn$evDw zF$yN+SgPO9Up8)3H@$y=X)f$c%m$mI2%MAGP4XzG*#vRB3a>uX_o^0)O+s%7wE> z4xPOR)f_x~Kr24<(#A_~>W^D9bNu8LlUiqg*n9m$5(e-e>N1p=d-LR`+s0CpS1g_} zd-aee`irOb<&|pGyJZ76qfobFj~Q#$E}c6B_&t02KDkcIE(1GNu~U^DFk$+DUaj%_ zGy6B~ui1az{Ap7c&l)4Udj81+-)BCrLeh$K8##X6#?2GDHC52y@sYg;_eAxayJF_# z$Cot%r5u0F6=OQ0e=hl`ePGJHVC;_fVsh&tJK%hJnEjmNE+F=6$FX}K{k zk3I~i5k)ZOkZb3WQ`?lLMNHgWClMijGmaje{7>Wr;R#(9%||a>v3*9Ls;Td8Cujk$OMUS;xJcc;GbYU)`?E6S@y&P> zTd`UDW_4=-9mgY7y&;oCkz4-T!ro7QUN+F8?PHFo0O+zGGW zeOS8&@{v`|5i2YweQopxd#OV6Oc9U(z{*}FA5SG8zOukglO!0j~cgN%aJL4 zT3gm9{EYx165>PSh*y+PXuW-z`i&abuUZb?P;!U#YYgE%KQB5h0qn@to${1MItN4iz8l~Q*H9t^WvmPUilvnb8N&i#XYZs0 zM1Yd7|Y7MFHO&QD-T%Dcm8SBv|cDBy$G=vl|LuO+`)0PwY08qGjE9~rxR&7|? zT_w|&s8+X>599~{tWt%f6qQw}dTQ`~O=RPIk}faoMeEr=f$pw<%#V;V*5% z0IsDj~@M$YyQ=1tdeaq&A=&3N$OIdAJFv%E|zY*db3 zWg670W-mAUPi(fQsMkp>3dU@?6O)ym5f!Gd(Y;P(;uK6o;8Ln83-(WF-?~_tCcQ@wXi(XK<4vFOObGdcTR`YtvU0Q14O?`c zP_lFxFBh55zQ?(kf4Fbd>-{3;btXHxD1M>)hBU?Hq$fnjX|gkyjOd97(P!n^xQc26 z@N`z#FskZ}Dmcq!xsD#Tya-I36weF=0c%!-k_BP02}Cr#+&8!TQHVvO-iGjbxkZ|k zD*E``(2l-d)qfg2Vn8)Ec}YM}PT6Kn%e$BWP&l|1^HPdD4*)Q$k%AP07yxAJV55-J z2#e`){=QnH$DK_*pKrlH)MFc&_)$uNMWAr+H{{o=^Ddpan^MI4iNQwJxm^P#WsZxI z2&Q5lu&z}Hwrvu${n*{$f%T2Sak-V}{pb?4H5>x{m8C=PAv3=k#ts`b>BPp}Nv=>; zY22tusme8*LRJRZ5^|-oc=dV>%QvlN!~oYRUoSEC+0h9X&c4w*)>Rf*EKLBS&1L0I z#Va+aUCvekN>#0C|0=Xr{fagWs8*-E^KCzDG%CI8t~hr)ESBNwq<36U`*MRE7#cZ$ll>? zT9vEcx>v70rEMrouw_>bhzW^faPF~bJT*`A)=_Yojw zn-s1lW8~|HstUCm)^WiEk6N_88}_iHSu^(pL79?~Gk`<39>r`)ti^Ja+>v2u1`tMB zx@=?jz1v2$ZCSSN&pmthEoaY~Dg3Rjm4!vC)hc4=rer}5FAab|)~P{@rZfxULqii% zOs?gf7$lNEq$2{)N;TbWomDcV6GamTX&M2X=N}m7SfM(T6~$oyzlI+HyH~94q;Rs8 zp=>OgOpv8bTBE4R2!E9wgOR*M`O0Oy9K=6bMu|n9btzN7G2`Z-6!k{lB*^7TQ*N4o zgygWdk$$4w&b>mF5-j=S11B*S6z&xpILlq^6nt)uz!4eCLJFx=N?xB66PxW^rfxAO zImhwjE7WaMv`Panm4ixV%oH$B6b#Kedpg6|*x&#?rOg61MeJ>;uQ0;SSME*Llg6G#;%l;05q0MW8O7$HEczX~FxkahSSV{0%N z36Mj}dlrIH37+G%S$O~em1o%o#Q?`+jr9u*Ld^3LISLR0pj1ctFG5m1Ebvl0h_WWK z60ENp5(5wjdR_pGC{U2H{y`ATGzk!abzyG)VmNFD0-_*rmI#A{2qNJKV5Pj3P!ef? zMZv=SXN&2GC}I%_W9W2T$L8Yo7dnAGU1o>{gOa z5Tpv`YGwd};BTb!A@HK40842}4u~Lv#KN}J90qz>#W~A1+`oGI?DZGB7R?CkF@5RG zU(lzmBo?)NO!&l)T$xypDjiyOU3Xx|+_+mrPz;#5u(|^wA;hwfWL4Iyoj6k9rTBIt2;{;6%53o%djOStK2+z;`WV0OJ2R~yZzue7hc34 z1(!bXoP}S@!g(nTwYaO~yp~{-7wNElYnii0PTqfWZSDyFNo!a3X<33oAAOdh5CKpU z7URzjD@8O_xpAwe6_g^8{7?{pAeb0immc$W|5}RVnJ9&vg0u{01wkt{OSMl*AiOTu zvtG}o^GA6=0}mJ(OR+47kh)ePm?Tq~cq3xr)GwP&z(0+Y1tY>3UX}uMc|~Q3RyaEi)N+n1ak&G?e^oqrIR|9 z$W`-lg&bhOeM-$m6LD$St&QV(zY80;R`hf#-m<2rv<1x!C;^BB)auy1$b}b2_8ric zPFA&?=mkKKNHBI8wq#pV4;crLjHUrai@F$*0F#Nw1kemC@grJ#7tSOSg+hg*?p<8C z?wGM!_k}YTx-6OyF97NvyABa?oa6x_1kwY+qEuFf5X~@*DKqrIvZAc`J68`V8e)S(eEk!PRZ-5};tV}gC&M>&_NUc`|OqgeNnCCeAJ ziw}Mm9v*4$P{&OU1x)@mAxi1!W=r(BsUaWUWXe42lqkZcrx8KVt14G1jUxPlA|h3` z)yvYDBY(sbZRQCPO?pC*?>n_!i8@8xX+aP%&WaD!Fm??~I7^xM*Cp_*jfVc90;SbIpy&ox4DuL9?1DUFP6L%Hwd+%MEAO}F3m8;cgILlsFijpY>jmgLZ z0FpyuO-4cZxWbk~0*7enn~0IKgwsO?F#teOFbJZbe*&Tb%73qwUa#dqB#5SH%lQ=m zLea!C5J+DXknqxWVKW;FK%_Dfo%}u%K$bzAh#6LDRzV{yLLyr1MALu}xsvj~wRh6$ z*B!^MGH;&fQO3#luAdPArA*4Jm`_KvVF4(dJ&KpD=5zg)Z&)@30pas>0Dk%_&y(yd zJpsU&nwqFLB1mY7J3#=DvU3K(ht?cE7tmqSvYU6W4XTG@qx^ILd|K!UWGv#e7%{Y@ zc|nAL(2Np5^{a$XW0fC!4xK(}+Ps>sbdHwDq_zZsl;u9@T;P2n+WH$CSf9WFxKMZ0#tJbb< zFXe!eSFm!K`4eI##nB2?-A+U0Z;$SIqAp$MCvO(0(>@$I8P%-igsE++#)QOXv-#dSddOi zS4Sm_0GNWpGYlp@k<;1lZ|_>X&8@?@GncNe8&Ojo_bS))kwbuhQpR$`;&BpJG8zGs z2`Oj*X$8e|5Xo$0;Ld{a_tT2cU$^Vw*-bTVLL=i-7(fYn2mz7x7z72X+ts|zUzkKq6vUBiuwT*s!_Uh|IhGoo-MA4G+l?-Kl zgg|R==bc&&3)5nZSvLEShnTlgmQicFIMAnLSP zSr}2olFc$%YEwvb4gfeJDkWR1;Su9mrdCZuwD0qGIY{a4X0HpsedLNS^V?cdj401e zqkaj0c8Id3sQM_O|m=jQhh)%TzH7$|%c-L(|FuqGskpK^G4}#*~zl~#^ z?Y*3pLHEwze;2{1Y$O?=qz58m$N-ubAi)f)lF@(#x_j5}1;ka^v}jZr6&DbcO3UTU zCzm6ZIR=)YOd?=d2mz!;45TN(q9Tk5CsR?WVb4!oGz=d;yHEXM0Uu&H0aG&TzBtGj zb2!Oi_3?p;fTD;+Km?J+I{*!_L=MO;ZyFS9NH1ERFt$St( z0iH$O45kPlpJbJ*qn8u&?&_ImAqnw8uZf~!&ry@6u9)1qzN=PEAg%N+VV98T9~xvw!Ggshlz_2}-vOwlZURBUE)8le$@1Ykj@<#G)G5KVHLT0@KsG-O=Z zGUG;O`6c^L+&;fnLG*7!)BbL&)*#^3;eIdQMdy{OTfa*ABFLDNlAJ}WJes#@+o+0H za$G`Yp6M%uLQv2}1-*U~mQ}Pyof=h2)45S$Nx3x64Ude@(&#eNle2Xq`WiZ-AuiYEs6{N(B_|Rw1e6UmL2DPiW$bo)!h4%acRO@C_B`llaDI~rpX()9v@@T)AB5bF2*b(pev zwffb{sAw#6EnlT{5o30mz%X`BPBwCyq6#Vz(dBxN1Xa14zE?@Hv34eBG&(RlQ?;c!!@Fw#0rK890g}pj| z;6*}?d4u7dSCN=T2to>pal!WwUbqt({ABluTS39Ej-I`5etS7`;OvVRFYiBk5tki% z{?H|pk_o=IV#M4n2lnsx%TfK%uW@d~vjeAZ#f3lLv-@;ZrirEy!5GWk+H@V!8oXXJ zZ{o^LTh_1H882fPAi>V7v{DnhdH%eOo7O(~5Jc(U9^G=}*|Tf=k6wun_PKQKxz>Tb zw13&$1>1M+I1rj=TeEIM8v?Lph|!cAcWT>#w~?{;&!2q!_}2a-C!-@GuAkhOBs!LM z^9VYczb};HQcK7B7?;jpMcQZQl*m6?lH{w%}Y? zv}^@7_R;oLi&m`Ldi+UHbi~~~`>*FYs2*M1GH1%V-TU^xi^o+PHgzOGv<$5p(*pMG zKN%4pc;?`-SFhh3KfEtAJm%i1{m=Y@ZXDnGG${D~nVpZq(=b91AvxAOyM6Vwue1r= z?15EUjvP=ye{%KUsVjG_TQYUiC12;V<-1Rxhl6j;8Z&AAwk?ZS?}*XTDw&E^nJymQ zv~c#4b8q7uOH_8r4Lr1d?z$~o_uPCJpZsS3rag%i8}RDn%&|*$@85s-U3&S3Kf2Py zYDB1sIkacLPfWzk(}!;Q1V6lb(I+VG{*m1m-^BahIehNc>(FP{Z@-P?lsTJbk6XTT z-}VC+1&>;_D!V>8yW{f9*x;9EFFf&o_u$;D5d)7t4;G*q5?vWX{O(=fwf|;(V)F6z zE6-f>7a3$tkKAhY9M!Dk`-5Y~E!ets?d)Yo?i<9E%e(iy2upZ&<;0WsZ_i%48yywr zbM?r*NO|jS6I#n&uADn+$@=XpmdrWlmkrZ`Zd|(+otJXu@TKs?nCr)`B`f2=FDBWZq<@?n~rC&V4i-V-|+ZL|hzGch#C-E5}hc~T_ zg5^igY7+8z+vtf)&8*K`eKdoTg97Ie5QvJ`YF*o%EmryG+OEKaNqXS@y@xNxhkUql z?rJg*p#bXk=m!`m&Z*RS7kKHk>u-K`_1p9Javq7Y&r zAL)1F@YP3=es^}AdlVY_;^2v!iJ>3Pp1Jw)Nxy!6`hl+0=0v@{e*3Pu`?~)wG(Pdeu>+@~^pu=r z-Z*>UabVb+%li-AjWQ;_*gJRVihcVIU%t;4tM@}qPsZVJzVzl>d03S=x9Hf+VtJxiv}x#pXp zk}K?O+(q9xb{@}U%8Z!RD#dsI$T5qy?btA9 z+5QA*SGDcP!BxZ?TP93jvt#xA`KRB+E0uBwrMv#stu4!@EZlQnEg;Vlr4wIWTQX<; zrXBlZauc)sFYY;bJ1gnkk$JIiE*_uQjpD4Qu zwHr66?IeTd_T@@BhWc!^2@p<`lS?xcLqkB|ACls8;(Yw$-D)&!Sf`pDLj+79fPx_{ zOJF^Vx?n;4`h#bTnNc5tQj64U+Q__!lNQaSC`3dE5f%vb+icC(Y+ur*hWUnPmu~z+ zgKFjENW=u{(jqbhRr8;Is#mcnR&y{O6aMmv>$Sb|7Hd`}K9-o&L7oS&a$b|l#8mJ>47pv28?T;vn zvo)Bo#g~cEgp1buY0mzmcOSgU<*;YPx<&l_c+2FTedVrGXVI@CV~MJ4-zjZ6bbc3> z;=~(GrCW}e*Md_jIh(Rw=P&b$h|Nh%7piud)TL8Xn#Vi=5E6kG6vgUJ-PYWYL!0y_ zhpHWClx;7!QAWIabn``ayXmXi)hur0xQKVx4xc?$p-HEqwSJi}lY1TQtmLjb(*p~l!;_{8p-h~i_)8G|bTR(por8H{kS|i6T`Z2Fa5e53J z>k&Du@F?AP*>00vHG4oTTmjA`IF@cac|!+27XwZd1##41)}FnKrVH@&`{V9@H# z7ODU1jwQ_Nh)l}0&Z6b@!@?6Od#ot^FN1gh6)fvo?#Io` zWw_g)iP#dQO}9awIRgBNt(Nuc=aKdyrdHRP zjU7at(qs}`OaHKZ%g=c_M}yhP8}^+(-76z4ol(d{#-;nR)8?)}J$dw=<+)F8Ba*+go?Mkc5sEwp0EIqAvRW%88q4Lw*vz*cpL_GM=+SX!mdqqvj|qq6eE<-HmdNnCl>W*ZdvLPW8i_UlF+hh9cL}#E(d3+?W%O0+31Jx=oF53sxWYcU5$ji+|)$DVce8a zO}!P8Ab+Eqh)GUVT(-bC#00+&H5x^gSM_q~Nm#R_RmL*cR`v!>RA+!YkT;vdn1Vp3QP zC(^mG!B4{U9JZ@cy@IX1GCT0YgWNQt&J%5m6?3(RQdaSI0?fJvc>fX;+vmh*Cn<%jxI9w5McDkFm5KI@HGE=SN((s}~9MKoxBD3vLAwz-8MUyxw{ zemj`gAX=HQ9;0oAi2&IrQH2708U-MyKR&dc8BQpae+qQ|`RbMye><33m-(V=!+G`Q zY+E|GlGX?ma)}>QP)v!R&zt5gO&B?m$G`0#x3N&nXTXZbhZpqQ7`y-Gk)J(*8L56J zTa7zEans@9wN>ILt65uw7S-ijQ_lk#1K{tUn*_knfRZforR7Wz$z%{>iLsAz(v*_P zuS+-{6DY|}n<-dyYpp_mY9+rpi|qL)A%8*JCJyruDJ-g?tPWG4e7=fIX0?mtqlzfX zhWX9P)F+_?OEO1UKa0S?ix%FIQV#Rgs5Xd{(6%UCax>9#8ne|= zF)@<@a#ku&70{u%9zy~6i9=o>ru=V8MA?2aqG%yvWdK_W%dDRX5FlVb6+oZ7J-;M} z0gHernq~i#I1=dyNw&bMU9Cm=Rv^nU^7+u4fJz1+$k*Y=&mtyL7+UC9mB8_m32dx& zE&eZ~KUqh>JV7>$Rcec)Ldw?iE3iD#7(}@x(ydRRg(b_CK9tPbA{Voue}DYT@_9p= ziyUEDXtfu~cK}{$;^Xo708keFf8NDg%z+5dT6zGArIhHi$?+H?MqlFm)AZt0F+zKNGatqzh<5~a|4PXHZ z#Qe}Ca?ldg1%l$Uibiu8LfOax`hDL^K1Gw>Sa4YHqXzPu$o4S33&H(lkGn`0_oaLx<%4$Bz`2{TbRl$1}3?|F*^=y7TepIp)IMBlX zCsMSGQXq@>TKaZCAtepOg8iPg>CXlE(}2)yJ_`I>U@#a8ykkR1xa{maj<>9o1O(Gc zR~Hu<)~01-nKi)L*txFvbNW;B&I`OdR)-4yAB*c2u#H5^NePXu{b8ChH5o}Vh~b91ytlbO8a0vOpkI664kVtrnER+hnpmG(}~jt-1PvVX~v z#FI8BM{nYIK_C{M?46wKY~-R*oud`(og5iZK&pSGB}q-1>@2;R5HApmx*c7dY;EL* zoXo6T4UeJ9(b?JF1_4aS=cG&~6Djx<5{+39LHtCDadvZ7DkyDsMplj%BZZrnyAAt= z?LB5v|AuS9&DzuDJcC{>gUUVtQ;o3xwLrRvM5>ojz2e08p5wU4)kn3eC?z* zc7zBdpVA)+lW*ofRI60s+g->?{2R3WtycJUR=;eH&&%Y?^sQF>7B{fA_?_MM8#w=* zsO7;QJwX)WH8Cf*Z98!BHgc-bf8xx3KUZU*NPv~tH?aQwRQq*-V*T))qCk55J*}B9 z9i*tdz}W*P2GY)Teri{Sig|hWnz8Jlg)>GLwWmZ(KBH2QnLpk9ACby0@CTIsHVLJ5 zFpq-2F@gnAwC+wN7S&?QD&{{(l|H8fARuNsgydfnjL63mocc zdX+L>lpvDt+z2#erG$lrWoS%{+{UwL+0rH47)1VC$LkAG7#4`rX86B;qee<-(lg#w z>QyYpQs4jWpb!v1-k2R39FmZsret!LqGie!FQ#G%#(#fZ|EChlZ^h@S(zoLC?Csm} zc|!SJS^Cdw>GOp08}PSEC}~iL|7{S=IFxSjb6NQDH;e_5eE&v>!pW;&&6M)}q?H2xcBqE{^Ab*jXIUhgmWI8f3O#Nd-A zAk84r#PI~uG!4n0(@y>l2134U-+awm?|jD}&xEm*C4fjqm3;W`9=eOui*3 z5Jk}th|+WXojJ2mCWHv$|E-b{O(F1w`1*c*k`%p`PrU_-y40ul@4ku7)~1D=-M?-9`kn7$QzPEp-nDhh z&izN;#_1Fc`fnM;5lvywFYnv2ar4e|5h+@lp}tT?Fh;+=_3%xgmLLiOib0uSPY-Nb zvTW6smw~a=pRqVaQ^uU+`)Bs--MN0p-aFZP@gF=80xarsv$JwFd3kz(%zzLA&Zy1G z$kynznw-pRwVr_gJ4j42H1!4Fv^Jn(2E|{(?|Q8|U-j&iz=8@Qp|LB1#%j zLhy?k%Zqw@`oQ+>JNMmv8L!I z@x`5cZY5`%Xc~SKQ^u=HT2GiW*EbU=Sfa^JPtM2|$mbg6HF0~^EIs)uAuZ_P!*?NC z0?;RgunY{pvUb{#HYZ=FAc+1%+bq%tpPn#o$oOqfWOAU1e|=%!-jKL#Mh>FiU)y)` zYG5*NNlX6ofR=A%25@0dF78=>Jt5u9*cZO|1zpOKDQ%{#+7_dSGMX}GeAu#Zwog({ z$demSeL@8U5d0HIu22laV$F-IC-)zHo@c@k!q1F?Fz0{s;G$X6mM&g;;zbmo5W@g< z@`s%(7cE#YXTkE-mtM#IA4WPM+U)GKY%M|XcYFasla-O4r4a%A%X&u&MssZ4{9(UN z49qe8aSRdyDMpSs|N9qq?YoY+{Z7o5xH2!gO6OX;DvF8lG*x9r}t@9>zm4edbw z>>K0-;N76di0P}^RCXZ*|Lb;P0kTBEvf|ChjGs29eN}sps^ce)Zd~3`Fj7_Px1T${ zql{ry4E6o}=9}seLNH`&{M2X0m;q&+1VW)N2q|JDcWgCk<@i2biYS19K+NLX-s$wZO1%v)-FhL}TdHdHbS+L}kN6UV*mv3A!Yg}dE zyKw%@jhCWX_RI8%faxNQhmV~xrDr`Vzl-^oBbo?(4XdCKg($@TziTKdhLTa11w9y; zcuZUF+QtN!IO#J@EHi$eE)=F2N-hu`6fX+fh&HyVolPD4-lSAv( z&%|~_9>ULI1+2;^z)!uKLcRo zf%$n#U;-n0iU5=-Tft3`l%|qf?Q8KIhGHpzKH69MAWB3&>0FK&3uOcd6#mIdCV+}o zYdU$7E-o_QUii~33wM^=HOkuOaam#WcvQ4PsUH6|dJTijmKuJx8`OQ;rbB-TREqDD+Hh(*>5wK1fTochf= zB1Cc-L;zrm_cE6FD%+&T=J$b?e#wL}A^Cd(Aj$ji zEU>{4GYdd~PykS7X@W>S65%*t(g?OrB-5fxPOaxfBD3Ubteld%2tn%5Cw^w=uEav?iFk~S=EWl@(=v@Sol1g!K>&tbh*r?9hOX+T?aOAyNM z%z2SOsoVL~<5_!;{~bU?QI-n{@u%AeAw`=XSf2cuYb=nZ8nF<{_Z);M2(kDTWC~FT z^xqsNEX4;sJU(sGyrpxet~>rvV>I5|wrJ+8xf^y}%rWY(Z=BqxONSo42JX2VNaU14 zMuKkb9onaRx6Yk=jGVdi%=4og*F|QDA-4~$Ua{intygC^%^f~`{FZYswU)Jj5Q;Hx zjx3wnt$myBD-J*4Ax!bTv3Tm_v2)hFiqOW~Ju!dotm!jmUG-Hn09aQ-Lm~#vr1zI54({2tQ`b>*_Qo1Wvfu61 zGscgYxa7ozbBhKK=+wE--0k-aQV)V?+W7L~o*vzM^z7Ml_0ij$gDr(9ZNjT1QztE4 zuuLZ0|!jlxMAbsmHQvwyu5Smib)g3ZMzx8epC&~*VAtr%Zom-Y*P1M zyZqXF=-wNCgr!h{@h}GH-<;Vrq?h^6-KMWQmklVC6Mbgu^6>*F?mcl~*Ua7nMoxN} zjBHus)8i`!_2}HAd*6-cU#2F89bGwX(7-wOLedOLFPF}kGI{Ev(+^@5GAf_8*&^vd zw`LCS)umJCVbiw;Wbu^6A29xy5L3kP;K+s^9olzp*LU6F$0p1_Jg{Qi#HkB6oKDfC zo!-5A--9%bE^x)X)rYPJAsU3<-ZP|kw{Bf~PG5H+k47PPPcEG?apaVh=PsR^_G_0m zU59Qy_kl1Jg(yUFFYjC3xy!FTd-gc|#E;l25%?mA2>`u8s6TMh*lrE8e2y*LexE?| zBR$7KPGb{-n34%|L>{P=lmuHJjTcj45o9Xd~3b2c?I z?(m8!KmYRc*d<4kb%6S~{+N;pi5GTknKNU;ye;>2xhZGXEt)uCh>z6(V&B+dVylLUQ4Tp}do;`2!oP`%&q~-eGTeWb` zv`OO*K1pE>Dc5(e9y@Ttu0v<{FB&>z=#X8f&McZSbMmaU2X<{9F}Pp1UIPw4icl#i z-|I&f&YC=O^v1wEQBLEKoBPJ}XxH`E9^JZkKj)uDAygn|Gdw-JqkFgR=AhVk<^k_$ zMUmyLIi{t>5UQ_d_WemFIhP@yz)%rY^m5{o=Bb zU4Hp_@c!Gusi9A2_x!be=OJrP_+VLq04~s2%Ini}rp=r(d*QWUL7x78=kmqlhEG3z z{l>28{ad&0G=JlnY=L4ZWO?hLQiATUpF4BuiY4>Rrq^oUp4~QS%8Vsj4@c+d{IBop z*Q-aT&OIkBJDDs{Dr5AXwaeyC9J}-MjRQ*ubQ-k8^o+5E9Xv{Fm?UD$C{j=-K&;N96x5`l`uw5L2caj zB~v=K@6_YhZi5FeiRYz$QXBVb&iEmnI&~R1ZJl{d^R~SKxpA+zFP<`V*s_2uU8>*p zxs%3?o4)RGP?i+VrsPwrr*!Gqv3u{aM;?Y@TC(Q<1RwyWX#dx@@7#Iv+AmwjQxpY6 zO~||Fx9{A2=@Y6I0EOV!EfM46g5KP{d*|^>pLDf}wm2;$Vp^=9Z$uVFQ=kxkV-zNo z1dC8sxLDvH*aTjAh5ihep@! zx3pIS`@37G%scejrDR1{dD7W4FB4PsCF-@P<&bmlnNMW80Tvi9^)6GvKJV?r-~bH= zYW>(;nexHUCqN^DvQ?@WblQ8z)~?v`x@n(&wH@Mi&Kf*+< zn=v4zASqApUrTXn-oI0|*vETz-42zrB>K^z*`szA|9S5IJxlCfpIk6`r>tsiTT1`p z+R+0$-c;z^`^R#ov!@STc&}En`1XdeOST;UdE~Nn%cs>Y?VwSMK)@>3(iObLi)YVV zy>TrpLm%`wIR4%F!85nY+AltKaJ^T?-Tu?}CYfBT)-L(->czA7?!FF4P7lA8?pRhC z|L~db>kMpLu|_pV7bS17saC&f^>WUlVBI}Tm#WdIX2oK(Oj)~Wi)uCN*01Og5d7i% z!7VS6bYU-j)k4t<_8PyJS0b|Xj$UQGyp%7m96h+@j;eOMPR-q4+&Z%NQL3EE+Pr$+ zy0;D!R&VW9kKc3VPPRkY>a`oysbu@X=WRf|=8Nt~01beC@1i+dP8w%y*xI`ewR!W7 zJAnqJjI#Q$k_B(C?i@Y(T-`oP)=Y2v_Uf+9SE7_|#mhKwF#%T(?>?VFv_auX5pl6M zw#}TjC%V(rO;fuTKeB!G?KGPbauRU!PFk*BCImqp1Ao&M5!9}LCB@&L4F#_ zwO-=}#Z_`hQI+bL#k6~Ia^?Jm4}TfGX7iHa=||QrU3RfZ^G2rhxaZeT96uV{V)&ps z_R-r99)A&IQqqQFvwQ8l@Qz@Bp{hP<%olnmnOt;)Q1a`&TnruT?(%{}wh&7HRVN<{Uh zbzwr->xYlj0A%?+STp59(XJbg?3(ArWvAvC2>4_#R=lxh#PVI|+l^bjZt3KzCG50$ zJP?3e`G)0OGH*WePg7F}=5C!i>(DLvqU~EdmeZ`-xa(=8;8w1Ri{{ncTc=K4eO#ma z$Qth1`{oRoF!xUV{(~C0Bp*C-@KK0CA*23rZr!0&gDT#-J5PP%GW4uhrIJ*f@9QfE z_a3xsF`!+2$IEMW-+dlQ7zhCo1>jz~qAS!~-Mc%-(N$${Tef0xQ^X6=qoLu!nt2O$ zwwb(o>7)+9yVvbM_=vYFUax}9%a<=M9ozLj%^3XTgP^KV62`rGeJf5!m#k2pans9Iqt40WFTTy{AQ8~MKJKBU@xsjNfO*@roP}}9! z?dO3JdFG<8Hm=@#-EP|Y{WAx(QpZGV1VF*h{gMKPR1J?o=}N_vJSLxxNdQI7os=kawX8x?<(ZJ5agr{X(;h#F(2F9`gQ`Z@f;ew=8}tL?Qmp zYbZs5sESk>+`DI8uhhWQ9DzViol?BXq{g<9J~!^vs8T|o9AQ*=m5vUKc=#qqVQUhi zeBQlE6FvG*o!_aHL+OS;db&Dzl&#&cS)+=@9c%y6twFQ;9A^RmV1Y9^m2A*&-Y+#P z4qC9HW#yti`wyf!l&n|3krNaI3agyF8vNLRrhm80o)G9>vPQ!uwRw@lB5*5SvwiED z((5k|6wal))-GR^I1HaZ{?`s2J9h0VQ z_HWf~(1^+&&gmI?pwE1A=VENhvfgf{m^gjO$|y4WdWg}bef_FMu#)1_Zu zuauPZHb(^LPY_)YWT|*?gtCKQ^!h)oXX$eR|jOExU(w>DYZh56cW2^sd&biMKoJ zUA;xKAL`ewBo{?2W%q2U8g(1ht|(X8*KgIba+wl!n*UtY&7)Mi*=rZ=*uQ;7+jb3q z?%LbCgqJAtl-#~)-TLJL-EqRuA^m>oGH`Htqb@Bx762hTGlTK2XjWC-7C$&pY_-~T zyggm(wC+^Z!I6Umf-eFCz?Ljox#`d@?vw!RiYgQ0C0QVx3L z;%?$%eS$bdH|*HGWcebEM^2o$@W7U(b85p6XAd1}HKgay^-H)qJC^o#rx}+PU4E!q z)lT3UVG=xO?}NOb}%zJ zhbmQ3{XXD!s-k$8TE$&y?+F_xc5dCNbLURB;Srgc`rP0PN8cMNbzji6rhAF1%^Q_1 zqktT?od5Y{K!|xYFE2KI>7=4m!uhRBeG+L~2bp!e*WRnjkIm{=bSHwnyVB84tJg!B zvQfjPbt&>gkG@0t|I&5X*rK*hRXa|Z+5P7}0|!+o@0FXU`_vQ>M5;`~mKB}dXgL;W zs!Y9x|Z^1-k`2ce`!#^taHttoqM-z z*r4Ccl|LB*Uf({P=2-EUdc_?Sn8iRZ=BDW4VglZW=Q@m@IjuoSXY27Lh(*Tmn@1l- zxwcu@r%9=zH3b_ewpMZ&|iu-_{8&eyHEES3gH*d(4X} zk1DmR*S4d0p2m*edcosyoTHT}`y zBoIK}Xk?35t6R3Hm%F1oWi*-uY|`mCqHt2tuyFNhA^s=UP!f&@#cTiA;)mMX4qYDH zqUi1O{@pjtHU%8!fFk0>-P4gTFeb%%bgfa-PU%shUFRQ-8oWRo*MInh2&l?C( zSf^$YO8^ZJ#-fFSy-Fcd%77U%C4lJj%@l+Hibird1VEIloGDt3ph>GyrzC?s@&3i5 zj3@xQYUhsSi_3tBFk}F-ENLUW03f6oHYX;+q*4Faq8uTB00E0aft?&2qA7v}n<5pO z7Qsi3GDcnYgOf*|iXxPIv>jE~MM)EaDFq=$-Uw|Pw5Tr#B#iK%)~)kEYKk)x#RL^# znF!LiipU9)FqjC05Q;`fVOytZGXjAzg9rIQ1jzuxmXf^Gc|%EIHuY=O2zdJX*bye{ z{W(~qLP>W@!~hF|B-%g8Cn3QA&<(qF!w+xm-TN{!;DuJ9k{;)ai>cxbf9hqp^y13F zsF=t^UhtwQY^@3?OpFxk+N6nV?CYo;ZL!L>&I|y>ew==&p~==(rVixDM}tdj{I2JO zfHUgzk`kcS_Q{o_udo29G95Y>D{TvSD|Lhni4mcU=#u{C=+OX9ASJ7`_^D|X1Vxb| z`J{+sA)|nSE;B=)ooy2RubfVWB8IN5ey!2S8Gu9@LrU@-V&wrLL@{aM!7>UoZ(Q2Q z134oA5d&0U%@hKkt&SoD&=i6g*jMbhV*0yLv#+dK$Z&#tEtSMdky;(vX54;$U`uLt zQcAX|DlI((5L0p~5Ue@7ilS^BY^Bc(3mE#d?Y)>_TT6dISzh(>Z^6bG3p|ukj{>J) zTSw%0QGiG!#IpQUB(@)w3PkJS%pc7SCEG$Q8&eQOLrgJ1Fp~v9q4I9fp>$v( zueYQomL-qKyGqk(^BQhAxTN)QS(^c4#tv?TEUPdP0-4d_yk7fri?SBg2v`uUO8cnT zk8CQM_UZ;7-QB+DVWjVCgTfs^$(KY(BM2#E6-tn-Ydxut7ibnzj6?}SilTwY7tlN* z66H^MK9mBU%nJ~Tm~a4?6%_$_L)43lhu&fg*{VMeZdSELAyuI6|{JPw!&iH9ldRGwvplBLcSMueLQ3?iuVCjWAUulpA*%84| z0p04B2E@pTB4atu2xGG-MhKv#QGpQYUy-tH+J2?%t+Vt6Ptbu3wi)6&pOq1%&gwQJwSC$c2+z76%p>Ic@L* z-^Lw=*ZJX>rw<-qJGE^Cwmq`05ehg1LBL^= zCoIdb5CD~}0z!xw+R`h*PluorC}Jard0wihG?#=l&3w#J5%}~T4k3UPL=*skf&f7% zV`xHtfAlpaRe>K119JhIWe^Kssh<{Yn^@$N{8LTloDOb(Kd`EF(q-%V}d!2jdR7h+qahdNK(i&5uAr1_{c8Li9}*Zfh1upc{~9G zDHIG%Az)1%te|NH1))VHmhVjfrM3v+c?@Yvfn*kiQC4lhkCFjk<=CUk3si+LSPR~gSuiA0?RKLi1yN?-dyN?*F zfW&lT)r93&Ge)jjHK(oX_yGe&fqZgPON;p*DTyy+dC0Q#=R3|tLXd)`0HEY@IRhka ztc^p8V&qatK`8#_<_H44UP|F;C|RE;G$WM)N*je#Rc4`&tWil@{15|~WL1J>EX_!t z5Y}fTAyAF}#2}4zG0~aw%1aOK4t((R`Kd!&=Ox&l-P4D$Xi;HjgBdy~JV##F695LW zECvkq(F_z#nO#XGX8Nw1J|xts&7uW!91}_nn*Gq(%>_xmErXwY8^V9Ii1eAF1a&TN z@1)>N;_uH~M{-uGNmH!kkc_1;Ae6*0fCY4@7pb3mwLA6T_148}O3`l9ClvvJe|&i5 z?Crjtm#kViarn-@Z4xlDG|V9D@?auGsFcbgD~B`y#PS9yw`xgcBL@hvDj5Gf>c?Nl zHvF;evxg6^oZP%gV0WzP%a}w-HAG7NIY_gN0!YcOt%SIy6-opt2q~4l zEzc+#4Bb4f5eqEH$}s?5B>xMO-jabJ0V*etqCCh=NzSu#fEJ?>V)0<~l`>koYC@C_ zuEmOitn{>;oMK8R1#h`g2T-68h4|k%Hi(#bP_|{eT2-9iUyJTCys3ymv5M78*YY~L zV*S0)JOP-l?_Ioj=hf86d&?Fbq${)-J7r;?AG`&9mdF!Cp%;(e#HFhZIx`{8l$U8V zVPsisjxsYNUcM&)fV7vl1EU?9w=Kp18(SAIK0GEq(In(v-g$%PxLl0^0HDnh4B0vk zF_2ET;>>P^#MvfO!(+n(w z^3T7ZfF>zP#G;hkP$qqzC}{I?S%)Ik>$Wvs+q>=1{ag%EBVSG!J>gj%kjZI5G@aYke0lB$)b)E?Tzz{>a-k7H|0y8jG`{y51;(Rx+ zyp;ifA^pwt;UgbMWiu+4XWPPS;&8}uRzq!ftf1c6x7P@?BC(hC59i12W=I>(r$ z=QYVMZ=AUOE(ywk42zs7W+Z1=a|R%!BxdIU0Ax_G%EeX4z$&3v4HCAZXsa?(Fr^kbG@=RH|1OOp7i&JMCj8Mq}5d)8sWy{qodTHnG zhrXE<(B9fKW&KWnXe*;o>brn=ok{=h?)fBxU`)&7EIJ{WFg8wA8g>MCPj26RHB$gN zNq$pDk9m+zke*Yg8F&CxUiCXw)jYerj7N$5!sV>2Cxe=-IhZQ+c^~7oY|} z9T}DqW5`geO^|3(uB`6Wf5!G#ky<5-fOX?M0P&G=k5503OUfY#5X!d0*ag4-SV<={ zw+b*e2ETk!v_^yOZEJ>Hz7P@=uh(-l0F(@IoG4g^YFL0x9G@ANKrC-@P~?+SbcnL5 z*piMwr=kuJruZakaQus>FK-8kM9_1gM;swlC|2E z0>B^uj0J*F!rL=5*X|H1{xo#_qK>7Csf~t@V~`whuF9uQQ-BGFKLou1rZzdzzhLUm~eW4C`-f{ z3>*<9v7T(4HF@gP%{QVHpE4~-L6-0uogpVP7XYA3OBRd^KesRN%lG z!eh4hk8P^Brusj0>Nv6#BUK6xNf2bUhjyx$=6C0euLdF!O95oe7KN;wJb)w$hyjMI zbdl!_M#(*$?44Y6fl-O+dQHOR-FFBk1`IL-FD_nuOjZ4danqLeXy(r8v-td$A*5)P zO>TNZbYz;AbFJT|WKQO}P4j&uw>9ovJZ{}pUjVtRB*EG#v4B8=c>^zL027MJ^bL*8 z;Yh&kGm!?KPt^jTzj|Qa#@lht+Vq|~eS9f`jI8nL`Q1~74Z7r?L=duy%W+i0p%XgQ zaJsvD$(5j7I|XGcBab#OJM}oa?TBeDico-JDY?z7SAHpKAYLkU9=aacvPYlAD<;|7Dg{T6>UG+1caNRD_DByvR@A#V2q~-6iC82_Zv#^d z+T>S{Ze;0rO=^xygZAZ3#;aRqzewT%5RR^%Vs73D{{H7%LWoG-2cLI|CRvG!)$3L( z!y5Cn9H1yl6d{Goev9>bf)M#bIuy|P`@W0SprYlg*QrrnCFpW<^aK{Jn=Hit-Z_*a z7UU(`H+1%D-J_Aa!X#k2XzlScmzCsw7LD%pYscOP?})#2Y31dlND4nau1AmVzjnJC z=h=T~Zw2jA#m<|&IWS@Ln574rGl zbXIpI07WX-YuLi=^u~$3dQ1(}@=%xh_QsY~>vrxw|4b*mTQ*@yxRI?`t6>Xe(3Z*F zddxi~D&(59fIXYm-hFWA)X7VktntvIjn92w?O%C}=R&scIDF&Y)g@cc=cXkc-!Sit zuhvF}07Tdjxo+a308aDb^tL^RE-YQW@p*Jg_|^5(cD!%eYx1liRiEyf(f8Nxqoyr$ zZQi$1+T&f@52VP+iDjFf`@P$|3bd2a9a8$Rrm)$P6H~)(@0_w||DJVAe6pzr zdlu|Dvv1C}hqB!8BfHi-$2ET{T`BC)wC;U|zsT^a?;5pv(zr9vqM!@`Ojt*+y7fEQ zzCJOwTjyn$(rT4q-=0{#WZ~+~`?kG{F}**!c-Zo5dVw%r)yK?URY?`ObbQ}#Jq8|$ z_v+NAs-t`58f7ZJ**AC4z#&gF-RhN2zOsAep=$w{MF?OMW@@z^Hg9|*pTqO}ck3~D z%xqQt&Lxtr&R=mXPZ7U;*4*c@r1$a-&5Iv({~3J?~KV#d39;`hVzg2@7wt*G%xVX@>Lf?J{|8T@>tQd zb4#4}Y<#a?%XVB5-QBqlCw8BHq!k&DO4U=t9?c)rY0l0I*&Ib9L@*&TxALA9y`pX} zpVEKm`g=0B%0G6j`tleSzVQy}p ze(Y&jfeVg^L1bF>>f}|ldAHU@^(M>%+xqp)>nEQK@6lt~q0oA5sy;cre*6B-<7RG% zNKf}aykOSyvnClb1YKLWZhvxW&Xuim9;d_Vjha`l$?RSOo$K^!b-n{x&l6k*c?dpwV&aWTZv)j2arcP<~ ziwo;^oC&E|!S%(S>79G@>@s$pbN7M6+m_A_{_x?+t+-qx{B06i6y+txEZsS_k#gPG zKK%y|9yFl$+-q@tR_>iJupwn40_*W(gBnE=E>0QLbH>4Up2h3~AD%t9Yu)s@YhJ}B zN8j4AVE20`TmIJesa?&h>4z;V-EwHV$}Y7#kC@rN*8MHhdv@zNY2jhDMZE+7m&z@w zIyqckK4S3rc`>L|?c(8k7SFvM?lfoJtl}BBW)ADwrG1-g3AP=BNMh}Ri4$*Hl7qrI(4jxqVybP!D$(^7(iqw;i`)TES5 z6C;zeAD3wr-mqARuLjJ^%lo!_JXIK)<(uyf2APMtFzKl zGdU=8bN6y|l=C{R-ekzj%2IRK#j~iJgDt?A*XL$t<#14LXK%+6qftPJ2(;4tSsRt0 zE#{$2Nlp`K8}A~;9c>UVNW2*}*{P{nK6({dSS63oQ}fK+x4G?$y4k}gszH+L7J&&pO4 zM|U?{1x<+MMO`ptq^9H*(d-PVu^&TpcB& z1rxS$bWkW5Q%+`9R<>R=H{;>utTL#xG)6!H5y=z`;Y}8w=S8frb+lJ8oL-xrlBVYb zvx|AVIhhrer#Atq6{xh48Pqz&B95o*>}{2Dm}izMJ)5<2cea-k!DQko2Pa#TI$Oih zPOgqDB$D`m81)*po|mx{&v7zaCmR`Ui4ie3OHC_mR7zIl^y$gTS{}N1ddjgrGfOLT za#aY@pgZA3a}m*?7a_m|Qmh=lARla`!nf;MjMb|S|UfEk$*@;akP zA;Oy*b8@g%Dp2D6edFic>bh)Mv`otLXN5GRi! z?oKK!;sWmYSp1ptAl(egI73SevyPIi_W(<;v*-ga`zq{+$1GuXShDj4ds+~j?p?HBn3(tU(D_Nq=Gxsi9 z0oi(bdDzGxKosV68Odozk)_3usl8Sd8?k!(xOzGhHsocbq~}0$@9b(rIIYfLwzz|> zik5`U$l__%*}aI14J&@XlNBKZHZltQTVOC4ewW`tWXgnUVL zzIq?YK@4QJ6|2-N=ByAzT=2VFp-^xfhcPZlN63kP>l0?MEK_zXQK@P9`Fm~&CZxdcu)x}6OIiUTDEO#g zAt?$!>W4@G1*%(jGm_8f5(4te=W7;YoL}V2W%554Z1wX-07B@q!ucg6ISM`i5Pe3u z0JVZz_)-}O)^%WCu9*M3rPVJf)AFko@OPY8sQ#g{^FKow3nFjt95eE8qdANFwXd!M zeCYjCo3}jwb@`5gKYJNDLJDg1GeIy02z{p0g8GCO{DbyEK@LB2oBa9~u|A`0)!XO9 z3tHsMl3N~F2!2UT`I`Q6>CZ*}l6fT$v^=#G_>99Z`LgBLg8Bgj0{CS&Ey(g`v_5x$ z-+Qcte=Psm^WXFgz?aoS02FdxoZK{L^^1Y4*7s>&RfZ7xcn0j3wNy|IU*_`jDxV8$ z`Izr2|00$lq7BzKjJp(8cERRZMJQ1$pyWSnrJy_I*TNWo#&SN5FUSbL>~#g0FVJRw zXZ4S*e$l(E1}Ye0prGl#93udLFZErYdriJGFfybKeY}3z^s~=N+Yv(>l=CQ2t5wY+ zDjpM5Fk}mwqhOPt_i0G_pJ<8=zB;BD}9fTsu{@1tcIv$rJD9z{ijGOjLWe(yuD;aqJ3g0pcA!1@*qVedNwG=ioPN$*lYzP+rYa9cMy!{VdeiFEE ze)%Z`F&RXMl65C8tP3mZ!Vm){z@}*1ep9AX;Q=X4H76Q_r;sO?ophEo5f%+8w2z(hIBT;TH2)|>e{vBw*uj8i>g(yT} zLP-FWavTIL`9*#{K{Pp;$w{g4F|lb`MhL$uL7`~~!9S!)5DI#AdU|G3LQ;Hc7Wx0O ze}WKbGtyI%QlewxvvdNDAR|M7K$=GX8I#i#0+3~qpwCTCOo@w0NX^z0^eL->K(Eb9 zNlb}}NyyRj;HxbLDM~4)Y%M>mB~|)Y;uV5$St%Kb35oG3S-hlVibViW=>PNraS|5xXh2>l($upz^U$&sNi zpSg|WOK9PBP9)5pukc=e(cMi;)Jbv-gZOH;f{R2xhi?s1? zH!PkuWy<6mp_u@oZxQTcUu0>LLH?(f%wMqJWs1mB@SD_xP;S_Pb<@YMznRB<#md4$ z6rvD?2_=PqHZ}C|)sr70(>}dC6B7qZ)@n7jccZN2n3PQ2A9f~?g1j!{_03~1e1Z)a z6zr3+fMxC#yAJJR8xtFysHNfmQZk8z%$TPSUZiTdfB8K`ut3T+>d>o&hhK11ok%YZWOp~l^ zwLZ@i&kFTAH*wKKeaO>^@Q*1%nj&FOj`i*``1tKGj|$~<0f(oJ9I|rb;XDdb|G^1m zn&g--*uM27F~@-Z>qbinpqzi`(!07WJ~BERAwVJHyGQr$Tz{bkkRkf;_s?Di#&O`k za}FF*6v#;qzJ2R)e6}9Z=nLcImft#e{X%h!0N`2_WDz5P`#vWomS4TuhVXm#H;D0RQ~k3DG16JbL^-%Os`v zh=S2?uiU$LD^&w2_-zJ;NSE~H@s-mLLO6l^|D8_~pC{36w#U9n|IKudFGh6U8y})A zP^u7xC`>3h9(dO8v+-KUqTY>_0E+}zR@PC@E}jjW*Ku;RQ_&PD*w4@uV;MU!gJGqa zO$4FH6C3ZEvrmWZm^I9sAtuqfW=Q&>5u%m$k{Xie z)A^|Yw6xAj&m|yjdF4s%hD35ngiA!y7*#1T^AAKd{waQM{OXB z322L+B_TiQ{I@&mESkv|92=w8&s%lkT!al(@Ge1Ul|mv(=Nk)Pj!-3kS-t!EolSil z99$|^u3W^{ERvi7z$!1sL~iR^uYLn>4_62vO#v%o@SlE}q1@=Z<0ozf#oEl@G_TLE zT}RGY*P&QuO1h4s0L6T?7j4m-#f-=*tc9Q7o7+;x^6(4FENEPaJ{id3LRJ&Qf|@~4 zPSde|w`Pvn<`=G4F%bQxmjZ5sBnno8TC)w>!mX7KLX=c8|4Bh#vbOcP-&&ogpxanO z##*tUPeK4?#VgjVR^FYWSO@@*J!kAZcVGIGEo?ftXs_TG49V&K0Rc+RIL`Nr?V z%K8JpizXq+f0FOg3WiDuxHD_a)(@dN6%DO*=#M`Cd*WZ#k_3c45u~kNZ;{Bt#z*P$ zhiMBkU^SMdy0tJW&=*1USuB4BY%+lob=%Dx`m@}WT)bi1U%PehJAC}i(Oo=9x>^HS z2pHx|t$#@nM1N8pg+A{|EKl;UHFfqXRi{QNl~REU+K&0y1i*x~ajIOtytADxOVbQ% zjX0_7XWdc0O(FHW&Qr$H8NpXp?b;j10VRuw2!5V<>DbXTKbJ%Xfqc&Vmw-M6f|Ve` z0C+c@zy12N-9wxd5MyhX{!uyv;YUmTgNFkM^Zi8P7W^+DGeL9fN!EeaYG8#)v-M`q zgD9<<2WE)8n5`9Z3?czQ;4voo}S@QrU^c(MrtfVuS46a!_eWRZx8nS?Gg z-uJC}QYkPbHeF*Rq98!(^R|sSsWCB0scD(oyv)eJfS}+gH76nn2!Jw{GG!o;!#(sKEKHhTyWVpx=u67%-u%MX5$c_zqEQo6(ErTV{l{q{p>YFb8WVnRxW z7EzR0xP*w{*Dv3MM5G7^@w%MkIu5 zY~n?0i<~AqC6|{gRlss%FvC)i&xr{1ef!?myv#Hy(l0Pht<6eJh>J6?ZR7<$D={uQ zHZCbO!z5Vd86lSx>i_!1o6x9Kk)kM3o0yaaIis4-h>1(e)tW5Br4V2~H$5pTG9fch zlb0GF>>n5rlgL2|@!F)sR6xsYWfHpr$74ieE-x}N{N0DZq%1unr!WA#2ne7licgLT z{oos%n3hMVfA;ktzB_dw+s>uc@F5lKl_JJ68~4^jN3d9})#N3{#Kb40=H+E4Mn=cR z=OC7%02dn`;`81&G&+@o*3_Ib<|YNadu^VDjEIiPLd?E z(*L>K@DJ}^z441r%E(MLFGI|QG({sWF)ZNKi?^XMX(9y;>Ws9sOvIQnbK+wYGmMyg zT(73iNluE3iA~W9*rd*gjfzP~Ow|}gC~D(l<5Cinay8oY_=t#vOl?kjLPBz4LaJ7) zjtdF!4+ziF84-k1DnpT!n8^3C07$ZdTQWKMslT%VsQZuwb&?hG(B}nb7 z(dRx1M4l6{g((2Cl9No7+(u6EoGCrY+_urA&6bwkW$XXhNEd7cq~;0)Ac+GZAu`P8-G|_)WFtT{#Ch4Nv5`?}*&3rd zJvbmRG%DT*5z%Lc1^5St#%hHxPa6;d5F>YXbWqAznq^cfIYk)Hia)k$|1-#ok55UC zPsqTKBBO*2vFjBIr%S?`mPRhv0%E?TL4hu6oSW33uq}OC5nmsrxD>W(8NU0PG zQM546sUrj5zkTx|AT&BDm!}~7hhC7Vvr-ey9Zo`;IxjOOEH*hQJuNjIL)KO%@jz2Z zmzDVD)te7Kfx*EsIunv@9J2ret$Pv*t3j074d#)VT21FW>t521iCETRO$R z7jT||NJ*nXEbtzNfJ}^y&y5#=8A(3rcPLbhMKlX?({rY-530X7sQ#khL$7o1-HMrW zGE--<`PrkP8(tehAqw&TNkWNe#H*7pZ<{fw(=S^uzvU>37S&g_ubn+{_ST)7XV2N3 zmZ2^ zY~8ni>#RZD$IgG1LgX|>$mg4QGJLNr7}0Okh|ycNtlPSBYX7d?R&2YcCrBnoDKYO? z&7Zn<%a+Z{CXQdT_f5KJ%b0?mpPD;q%7#swwyjciUIaT(N$~mc`TN&R^=6sDTvv!dxxF2|gE=&Y87&$Ig{g zN3Y&-B+Epy_xkGY@R!2__140Lj&I( zI&n8kpL+AuzC-(tMQO~`ptbi&dUJW>!l`SwZeBQP^u#GUBQx|A4L_}ylI6v{-??b` z;GR7%1m?))$e0m*V8N_83zzNMzHarxY4hjLz7m?5@a)vAalHpkJCvo-f4H)L!Gu1e z=57v7M=F-Pb#~YM1@rgrUOQvj_;t5KG@0RNcO8xrb*Zn8t=)0tb!ZA?kQo#<`Cr*K zrpK?7rcB$tW!17dBl~n2a{7Ke#iiXpv3~S`u5%B)6o`~HDpk3!AD>>idec{=Kn3;_w*sE1jk<<-Nv8y4U0gyT%`n zpzG~>w^&09f*|omc(u`Gv-!Ss(ys7f%saes&}B9mzHG+G zf|BFB9)BYDmVDqA`8N7oH_wN>9&7SA99L)H1(?CwVspJLz$+9PFE(4x92_JykDNDTD3?e z5U?6u2Tt|Q%#cntJzoDNVN(DaE;n8fqmF8*qRI` ziTTUoSFf z(aZ_+TpWy!%5AqUu&loq=$8@iDrWt1#TLQ=?%VTk1b8Z3|d|M92(EN z-z?Qbm5VkRvUogSRuQ|}81tBXhd11m7KH*~`MEmnfssQ=!w9%6W)44PFi4A@qvJo$ zKuW*1!_m!@xl;Kp7XhhYrpuKEYzWV2LRRbX*%^pVHhck}m76oh_U?OHFAluU$MvJJ zn3lP>I4q7w4<6-jCvHf!It`xVoA}nl4;PKQc7e*F0%y>sbm3pWjc1Yzf?#4YyKHXq zO9kb!+YV=kAW%Wv+SW4x$#{wt^S#KIGuQL=4l8eOMy>?rqCPIF>&6l4!eOw_y z<-gEJW`*1);vfKoJ$1ON6CK3R{!n%LM`RxDJ-X^1eyCO-MRL6MrY7!FSqK0*k2i?H z)r0;2ruV+c3ecbmZ)vuw?DHCHLv1!;!93i|F8^M*og!}e?)HD`!NYK^F@X<5rGoRc z60o(mGfO7bQqNRBrK-UA(VKI*zN>>Gk8|cGO|wivb0W}Wy<8rQ)4ng88TM%S*I)A4J}SVuj!EOFpqikv2yeyPj{wV2H!hN4Z`1qSg_T_kq|9t(UR z!xWy-Os&WL@p>gIYvmc9R#AXG9QiXB(UOdP%x&X-q4=@fX(Uc}op*n-qpK!zgef>|FIVe(Y2590f+(dr(nLq^$7U8*^!5mPq(qW+N*-t}Gnmig`D^Al zI}X)vJUtX?WOKP5Yt~u4B8^qI^+@Kl=E!uemXTXSX84>1kor{~{z&>ogeK?HX+2h2 zC0N((eZRbtA?S6P*SIRFXLMa0Q2TR7t?22zV&E*r37spj0T#^_QOC_jH8)Obf@;R| zKJ-Edm%CJ-*O7RnLhh;{=%2^3sSblh5CEQHwbni9rHbQnv-2U5ZUP9mP_mgJ=5)%E| zOZD8l(+E;t<^lqNeg{dH+?w!4R+Pk%SXWVaQE-9~;SqWT>ljr!e@ z!P){aa-0Q@&)A@0tKW6i#+Kl>)r`ZSB067p<=1SHS^}O==bzU1_6JD}Bx_{HOEICy zR251By&f@*;=^vtkCJEoC>)ts<*Rqd4c#7q4OguS1Qt(Ypsa&vZq z8l8=fe}cdTI^OqLgDj-cBP;;AolJ!SIjtaR&wl%B34WBSHHXRUy1u;ZkH9}y z04Rlvcdvo9Ga(h46wK|UWZ$x#n+A~O$ zS@&cA;n;d|KKhfCv4RaT_IPUicAJ=*CxJdq{BWZ;xSIa`9zj}0!LeU=v5Zemb^0;g zptW&3BdnBv49se~I#xr~TW@3k(=b%IAqm5-yeSA$69yd{5Xjw}&c;q!AJK1kGKH2i z0S>fXzY3b^QJnEo*{!yk^g~E8s67A$>%nbZivsjp)=Qs0BkD01r-gbzO7nr*&qB}dR!j&yC>KUagR1#sF9xzsd-?!p8b#9q68MFbzJVR zgEu|=-G56bb#IwAi{n)wjhA*~%J2mm{1!AhoPo^?l6w!URn|uY-8ESr_wxY*m=c`7 z9)Wr8tXy4=;|4klkSN%zER#HKXY(zaj1aHyy0Vx1E4J_N2|3zqXUlcwQH~Pvl31f9 z-TZ!smOZ`J-wC-p>{jbIa9W;`th;0I^xo2H5oJ72=YAxYfV3tb#u@)o);@UZB^=6Z z*yH?>@6VT0V4Dw@|BxOjJiJwO>RN6UivlY-c#?!i<}Q0AAAdS%S`*QY_BgxRN6Oxj zh9Tt&G*@Vm1N)Y0&b0&_HWbcexv+-yN9$`$vg(KeFmpC8GBFd##VtML7wwX&W$AJ8 ziFpW`?RI(EsWu(xU3Bt=z)JN^VNyh%=r+sYMq?kGZFau>Z$~hWBNNCBovU_=My;U^ z3K=o=b~{#y4G{WXs3&s@)~U!%t8dSA+sL@?0$>pZn?MH~t zG@_p^{-MYSy?|(p#*N^X5~;queaasR>bw*=1>A;47bAIt*p7flw-14pyb z6)L6ny;(&Aa5pQ+LSDQ&m^grtNFypYMthx%os%jz2kz~m2=uv$wW2!l$`;++P@2;N zv87nuS1j!9;&3bEm#9ThW- zgx(e$&%G1{5%cY%Q9AsODT<$7iDjGiQGCB|?#Qixup%khBAhg_}0hDepT z0W`SJ2rZnYUDF;5^+UDl@~o(&9z>Gm#72lPBlO5*TD4M-HdjG)di_GPD#A#W=m41h z#UgKM81w6y=4A`z#d7VM{vC+J%a}Zvgp^ zCi!zV@OUg@u;Oi~cs?N^^@8*+T;sI{y|fuwjfr%w2BjPcr|(-Qnv1_J?h@Z3a7yrz z0rk|Dd*|0S8}|`Wt^(yt_99Ir)k?`!#5fc^ofs17TzU9&r65$oPK81)UQ#yc^|Fn# z1{A!1wh5}! z&1`*gQ51r4VE+2r&_)Vad}6vAqt43sW{X+aO_8LcLEA5zj@??*Q}$*z#znhnf0ii) z#LPun{U10nc*X|a6R}-;YiXVCh94E23DHFe;eA7}iCy>EJnJgJp00OD|9c(ce`dCx zX~scQeN$-g&n8wfxkQGB0Vbv;k}ta)bWqf=saj??(GlE5jdg zn;S~1Ulv2N^wc;+hx@0uKk@{9wl`g+imY5Il$|%bv4cES_ryg$Gbs>>NEp%_7%lIf z{}#eEE%sn!$zQDrRn#+{5T7j0bfu?tMRDuC*7R_g{|w5aY`f^%3(8KB0yO8uxP>g^ z@{Y(G^n}^5mFs-Wj_$srLEMQD@P8Y#;4}1e!36kMi;cYdNch&lDkL6_GjD`gJa+p!XhtUTVY({KJdd-^IEHZ)eS-RL&c;(W=Ti3ga< z>}15uNANiW@GO5nL5;=ltH3@6(+4^28xsNpAm^`^|LTpYe>U933tR+V zN)En)$fN>Yy5qi+dI7oq20YHy`g8~X=A=4ALHikNca55Rl{#USGRC~srhv9K7_sK0 zvZ}DG9J$)^#a)=;bu4Jmm`YLD&T}bT6XwNi@(Fu^C^u@@*Nqq8=l2$w<&|;1HzX`3 z*M~!D(btrl+eg=1f6YNyZf^9nke&>Fo7>?5MxB^k{k3t>4HG-yVE||JNULdbljas3 z0|P|vDu}Dt5#sQg{<%T=y}b`7j{Jg4PinHRs)u~9R1}%Z#2W$e(m!Znw5HLjL}^O5 zoU>S+=mp1{4qt#cqUW8{c~pb(??fiWrhy1Nqfkd$O~QTnv+EU1uzghMzrM_ZJU1j@ ziVAk|23-jme?K_~9FPE*u}Hj~+=7757DAbD@&pIWJMkfD;fM&i$L>WVi;w`~UP;v_ zngr{gmWS2a{;i*KnSKuDS#b?8>e1S;+=ww@I|D|+ihha=&ZY*BkFI#6)xL}?rbI|v zY}x*XGe2D%dhp0)fR%oa+0tckL;@zP9fRK@DL?9W9^@-6_Sj?vi-18kLb{fS43Bq%EJ16c`KUaHt;Bq z3-xM1n(j@}J7!XUoQe#9b8aa>PoB3%N!kPm1eS@RXm3h|6Q#Gn7yJMa0iX)ktvTO1 zsAzw*8h=?n4vl-J-)`Rd8~zC<&tRguHk-Ty7{_eFx(_zU=)hK6Yaw=10iM^0ipC6C zz{ZE;tsXkM2%WY4ZHNHhX7X9VV46%{-dA{GQG$aFMFd`vRF^%FiTklIQ=ucrfgCSyJQv3*d%&N|E@nOE( zdtToT#X$^DoTzQd1ErnsJ3PK+R9hwGopuSMn(-p#s5RS=W6u22t_mw#{O-{qnUt(y z_4ADf7Ctl^Pckj>0R)c^WWOoD1Hg<#ZaNR@pr)!{XNpPpK;7H#Hw;lh0-9oP)hMtK z!HKnNZ~!S$S*RGowF#7(Y^P!XD(zJa;v%A8O)0pJj*nm34`wwuOLaI7;z9lP^URFO z1e2beZGu?8K_{(gVQ$dlU@7n-+L}nOH%%F(7C#rfzXa}&DsVHJ#U<>I9L0wW2*5yw z7qI;l3S>UmI8mEvMa*2PIyJdlEdLpiExqsT>PY2*u{UcuXeiB71WWdgF3*!pWALN1 z?l8IQDR2Gj`ZI^ZR)SGyR(zXl+&TzFN0*a!cjhq*W$3KcYPQ%+%BGnrJk}JKZoTQP ze@gENsoKl4PdjYqj>5V8JDG#OfMN_}ZE;!Rh`%@qFoP)=gWNEQ_-hh47?rNcAIm!Y zVzB(QI$gbhglL^A>k&j}H-XJXU_5iK6MVo-N*cIm2q^}Q=K6@7QSR-RqD*m%1V>)` zD!N1fcDKY`%HP594+z;AF8^^p?^Uoxb*mfp$c~ zP7mW`rTxO6g6ME3)rR*iv?a5x;;NK2^1>JYQoXx7ocS5XQ0mulp;#(VnTFDhI3AiX z>eK}%*Uc2WBqyh>E8g^vF^A{kXIXiJ#B6Zv<edMSib;28LeioXn{W{@)@0IXmV6#%!in*Nl| z^WNWg!wD;`HyQ@7A*fQKvP%j+9F0&^!9=nU5g75WqWu7DTH_Non?2n=@jH&bW*g0# z?y+(=S9$}wzk&?hqLBTKUkSwh;9%h-5z;?d596{8S&W2G)Mg^lxnsxk&p7Ni3tC=i z%T-++Bck-xn$Fc8M$ z3|Ruj`X_}RnmCY`h4Hwb1+hA;h$(R ze9UwC{xy+5ewA9k9M(EbeE75@fio+*mv&#nq}?m0Gjd+H=^tL zTYcvCVi>5|;4;woJ!Jzs)rCQcjuf63({{R2t%^gCgQ0+ptQZ$A0524lY5r=YG8~fM zJVFsAs*tQ~zYuLmlOh?Lx?o!j91PJCw%{R=QW_g_+L4CybK$gPiC@+&m-Bq75TQRC zuCY(B0q&p9J)uTm()KNZGY}$4!X^ZBl&r9D}&u;9O0`N`LPKC)4?HR zuX}<~vBiBFo7QTspWoBW25FnlqJhvlVH5O|^ukIUeA%r<{TTSqCBzYzh;;OrG#sQ9a z@x}TbOZ}6%|5;>YN5&~AvVixK6e~nUHKow%+EV?={PQz9qc9ym1uf(9+Nb|-6$BNv+>h&pACP%ed` zU9^0y4pdR5UPts|=1QOj0(RVu8t2iW5KwH#%Y3<19zwh}U zaFABdqF~@Or>aWQZZ^l~C4m3<<%)3R!Qoh>n}Tr&agpC|rKdvZCFPjJplvccZq%ek zZ}53hjrK^r^d+yFr z#?8$JZ3!SHrd7{)_UB8kanS4dysmUDd8H{V|K@4euj07yo7iYIy&DPx*_XL}KDDcr zg~0$8Fi7a60^QEHJ5eLN-*ddN2zKtyC6ZU06#JALKHn(lc%K;h-GJ}XI<>Ed#XVUo zZD$iHXAq74E>02Q1?DH6J$@l&Pj%X!*MH75kTewYyr($B)as+Jcg|zU=SE@(_?wsJ z$-}^Jr3Ol4bl9V{xV%ng*6c40R{MTWHEN8BjnQ}zpDqXNwb=gN)|RfCJj+37{mVC7`^0iY7C>9UN|0*S%3-S=_C+Rq4pvM*_xS zzulB?Rn?HTH`zXyj@S9<>*w(p?`&MFYBLlWuCH02l|>V9TABb8P}K!w$=J2O+opfm z+*RI`5xfX?ciR75kNG9BYjJg+yXUocS`pQ@W#-7`SDU1?tSs{PgfxwSztj8S6upJw z=HderjvHH;a8t~rxYzfdh=v`Lc(h6-Z?h*UBNyYEfr^y%;~`2Cj{48%)u#DL4D7A8 zeCF0TZ*jc3c%84|aL z^b#Z8hBqmdkIMkE`|1w1k4p@TWL~U>vYge`ZGBm&qVm$q$xU$3*YVP>SMENQn_hm_9%B+~f>` zyTcX(31x4gpGFee?{ja8vvWc3?|ZW(`Zjs<$7$4Wq;sHp8^0J?)ts!){Y8LO_T&1W zT3)}22yv)cwWr#0xnrV_BA(at^J;=*@0D{zfMPBrmfVRO1LMZ;AwgNu3Jb}&&XS&} zMS|tAm(Q3FTG#a(A2+X=VDdV-A?W*-J}=9GiHo+)*Y0&LzSvo*1q24#qb;&(zDw9q>VFIAX)T7%i+^rzgs~u-0O`&c;FW#v1|pK(hjEL zdB-Ce6Fv3ILefZvrDXu2NWGks_fhFU*_P>PL{CwZ7f1*$zaOwr^yW(NNk;-Po17wQ ztYBr~ED}pGxwXW&7H%)En)Y`he zk<^uT)!XB3s3@hN{K|V*0H8*3bG=+|XD1?;KRh-%QtMV_h7lh0dy1M`eW-NyN{0vJ z{|cM6KTM;k0Xz~gz#OJkl>ioWQhnRoZ|}6w738b%+N;-(S%`QT-ePfFEDcG6w%>9Nq9Oj`IPxP^O_ zaCG8~xZzOrV|bb?)dsY3FTOs9#?!7m-tx*OaevM(G&y&$oLcm001XDo9KM-CJ6Fz~ zmYr5ljNzJ^O27!-$vW0)_F1w6o6{{!PdWwN&QHiogEON9J+luNd}k(l#qqFIZehO2 zG_Q_gP4S5se*}UVpXv6R8EYwkQX^?~Tdx(Fikf`oj>|nw0u7y!F_~&rnz~c*(??4m zN&H<8mzo{kmbTq>!0{vdBDNUlN$iKBE-7Ye?&0$#%y^m zEkT@y-FC5`{e6Si2qv#bn)=Mt9*`U}aeQ~l-#|TV@#Dg()n2DAw94mlEltsT69x=d zO*d4t$zue%B$?xKDkHPHf2nTHnZspmUIVLq#pcy%5P=xB!(eDK4MYX z6oP!`dDIK#*=02{1<67CfG{%nP!=(i;Bqeo5rD@@RhZ59!syv243G8a4WP^&0f9E43zb=HM`EqVr=g<_T;S8 zAR(VVdKky--KpqP(B7=cjAHX2FcX&)7l%HnY$?C0GzrJXT5U%U!9Go|=L~>*&8*?k zcp8liU-W2)U%GttM0Y4sE?np@GMn7>@J$1DOFjK|VLovRNXI?JlP_TmrcjUG?apXD7$J*b;7$G3#Mpa_-|s~o(ON-|si_&e9FZCuNy)a+04CbhA)f z)U!O(6~iRBeAxh3Bwt8o*b0)pTqHS=$ey`kT?p>2-|KlJQO;~~5}bz}4Z5oR zqiZm=Z-<@k7_26g?hE#7wZHhg*7MiW82LT0Ep$qrk}FWhX@u=|-^y){c5jorIIp_D zPuTKVtdws~qLbW|uNGoWbb6ir3!=1VuheGMP^dc?gIwpmr}|SH9du31S0)EyCTE)@ z|4ogFQUJz!=9#IeVm!ukh~RcNcy7~){3=iHv`>5B8I zYQq-XFQfTZGOKWqjcVoF<0-9X_2vW>qA+jKD0PBEu1rd*-{*79L)3Lw&y8Qn_6p3c3(J2%^=JCp8Hr;PrPc~2Dz+$&9m{NB)mLd4?GA0FfevIWKn_6`S3(Z9 z?^qFdpL&Z*Pc-v8y0o%&g#$^0!fym-^sCBx{LZ{LW4UQon`zEOnVOhI@ z=pYVycQB5;<@G$pHmdEUjd#oZlEHebe5YL~hs@Yldh>5VXqteNdW?gSz$9N#3Svd1 zWM;?0FX@IA7LDH9^(}D3S9R9PWSNS8&je0XX6Yr{y*GSc=`?8~ z)ei+vRDgc9eo-9NLuAhe`UV}&eO)`yW3S!h*F*1p+El-TzhK(_K(&PR*-%4#DK+pU zS*VHUlJmifsPreXXP3DA+1-ZsT>V?`^o^|`^^=k^{qm-Hn zuE}KHUDuT_ojKKe;V)b8*0d5K!xhVQqB%Pt@C^80txV-z=ZU|%gVt9jnnWX*s8aGT8 z-v{STnwM?Wzi$9qv`jcLhj@%vK#0sQq)$FrVw#l5Qp;=eemG^n8+?X4(b3N6kGdZX z_X1l9h!)U`-5oBLd#`G6sx2t2W}p#+(nJa@AtAE&z2si;G)Urf6lc=~im%*pv({^) zX1ky|LQ%j=f;=x$H^~&I*l_xOfs&hfKR@lkz_Z`( zce(r6Q0cF4cU^c}EO#r30;N97ahOh=ZpGGq)UwnFzaP;AqJbYSh$&w3E6f_=;^O{o zDmh~-Hz*<_Z@KY<6;r|vc&Zb8L`AN_RE^Pgv->%d!5Wc|{B^xBYMH3d=ZQyo2vp5dTq|dtLglY(0D;j4#Ag201GD{{*nNeV8Ob;!H3|_;gV3bz9@H_^{9)b5M{@ ziZvWusE+fRB!N1`5#yTTX6v^IBZm7pJ;=x_4nPqly)BV|53q<77qVw^=sTLs&3K*%%r;UceXzKOIy}17seR4Z`vY#`)}DwCM&W-y{3Y^o#k1Uv zoM%@^`c-E8{-)CT4h=^&sBu!sl=5ycZSv_jWN!j`u>Q+G0{{0YD%<~m*7SdZ zTZ&|463Cq+No~+c&CP#Z<9NU(xKxn6vLb5`A zkmy1B5z&Z|5pO?ytZ~+DbfV@?ec)c&`}-d|C88=f4*3;f6Nz~1OL%)%N)sXb*6lyO zLHI81BZ3RCGcf2V61~GmqOw!pzO^}or19a|2v6YKfVGJQ>MF*kQKdu^a3Bc zipWrc1dTOgu>3xT10bN?6JJcpm&Om7gd-1O$Z5|&kHHE39twHgG~)6+z2y$)Klix3 z4kW>V&ol3UV#&VE2D_cvNy*J2Y*V&(LEvMImL%moE{B(8Jq}H}UlcKs>3}2WBjeS4 z{aVnqvy@7oO2HUe_aHyD&n@BR}77LtsJ{Av4SA8XA4lpJ(1R3fG#B z7X_|RSi^ulIdBR<;QxDDKGRTTK--=pXF_Ul}IjH8vxlh zyuaUt>%dee%kM+5;O>nEj-WlBei; z)VEf_hzW6IjQI;UjF&1{5^maOex4rRkCQ>Z*urUp2T>6V+`7n=N>#c;aAsmZk;Zo; zWaEAw&^PDR{OT-3*`Vma{ue$nt(SsY2)wMDd2ZaKG~Lq^5D0s)XnO7|Q91#2xeC$n@IC%uKLCL)x_3 z|6u!9k>lVbK{C+X2*~4Tk|E_(13`Y~h*Va}06F0?e@HrZFjW?RI(ds2O^UB&ws>E3 zX8&7oMJ|v8FbgE5fyiO1cBAEnhtir6e|rQ6Kmu+dgW>3tXfHH{Aie=2VC0lIFqq}} zFo<49D`6ppnc&m>W^!V5|DoSgAYc~@^&^nRc?8oFI|#geaE_z$pcNSp15^+GV(=)ev>!x|E&LAvCY$W5|ukfZy_)&9>E3Xng5{s~Iz z0`gd+(~_n*0xN-ld}de*p*C!;l1U+HeNsjM01k`|BAMl)CaWxK33pa0bmBc7`{yXi z-57~>(C9yEZaOJlmOLdoDZFt(?g&`GLju3iE|b6VWA+vCppm3SgNSg*F}=PFkx4!s z`Sn2pME=?+nAwmcf+>Y8T_^iEgIZ&~n2sjRG9EMl{dqw<8u?hgWT4jv9{{il0#L77 z312gwivxC=&}uc-Xn4}^iH2Fb#Rd(U%tkQmOyXQ|E*@yWV9fJ z6XrAp{MF98>q$;#3jgAQdNkI2dFR!D2y&Jqwxn32_SOWwG8?6`13p$Fq>pV>k3ym-ZT2d1op6(li z(sQ60wdNZ~Av4|nh7ZZd9IiVSxg6B@)9r$Rx5ullv%G?MrPAp5jk80=Y(C@7+lLW- zGFCKj5Gnn!%V%dfqiF=F*Zt1*?PQlBSHSIhx>qGm6gi4Se?6VsV|TD(e2PD|L{mm# zU^H!sLJ@@Rv-wkq59Yw!HihSd64jis)Afkg{x$V9H3T0PN5JcS>%jm(BSM~8k^Y29 zrO#uwUg@R%49xy3?K`5Fv)*?H0;r~A?>U)V)ynfK^u+uNWNVDx7m;8XhxKrJ-7m29 zsx5WYeGd!kYP(wYIagPOrZj^gTyMI1K7qdy9Z653;w^+|pwQnAPyceWmdfY# z7>;OdEhlqw*5dPZUrndrs!c6tlS9F5f5Z|IQIb z5e2hg40^k}+H5UuVCs_(LfYszTTDe>xCJ`q^LV~>qC2HlcRsVIk(d2=&n4tw9)p+DaKX@Jmq z()Y~5x@dCU?Cz*~R45d3>wk|=#^ZHl@6LgLKVNa%oe#mh63kw0vzlxO(~=0J8vJ2A zeJ889Il|Rxvd-7{H26|>m1nTk=(2UN)(ibjklW7@_-6n{fp2Fb_U5)$E7d2gR>1G& z_ekc27m|LD>&x__52iu4M~CUk>ZmMeMT(n!whzJ5X6%exey0vr%7ZJYVQ%Mqw^UrD{I8QMPH`9A zQqx(+FtJ;)wOP7e)^c60 z{h(7nW+?>N)naSA7WM~AR5#2ADBIUZ8$+o!0=7>jD+S4;`~k?lr<-BSVtuDad~RtxYExZ(3? zL;*fr4}YevtD0i1+Xee@JkcvTmQ0)S+vsbt=FK2HdiHyHUe0Fw&EOs#1XC%WUb9_U zqtP8j3K|lS&>JNcff_bEnTvP1FwBjyPK(WBb=_F|n}pzIo8jMlX4xk*B8tn;oyn@B zo~hvPkE)|RPPmwM2r_e;c>aa}t&a8LF$}I)PHb+1^7x(Ah=-&nKF5lcLN0WE^FM_> z_Ky5|8Mqo#HClWwi@SH-(ZTB*%x-dDaMp_ZGtSEodRa@150gn9YsYp50?k$@(R+2u z{JLnLnCeJ5O*;+<=CYKGS={F1L&>XxZFGNOZ1Gm!&d;dI8^>bW+Z9bO=xP2`i z8daoMB*Z}TLdY%^5;?@2I(0{K5)+Tz z6(-%XI)({@Lj ziwJWE7wz|Lo9Ex>&n3Em3O~)Ld?D^IH~Kz&JDd4#=9Ks6pr{NW`#sXQp6n)GxasA zPiMwH9p=K|BaJoU7s$ysm4Mq??Rf!a9x0MRo%i44FK&)m2MK7k;+dLn|v) zc3(-L!VE?x)8vU#Hkt-=i<3hj(r-PTZP{<<%G(BSp0W%?-S>IaXi$6aQ@=(6%d3?`o zj4?@IH9*~NMcR~vl1_Sk-WVb2UPctNvxq(`_$Ei+%!|`g^N8?hn=hsv_hrIUF z$x>Mitav2&aQ6OkvuYbli)U+#@rw7H? zNbaiAgX6s45Z_G`Vhd@v{JFN?RQ^d=26H^BCX#lZjdRxP)Z8I6h0pgF|#+S}GaZ z+)g+hol7Fc-4opC)Y>GUIAW(OWX8crVO*(Bs3;5nhf(@(SNXiPo=gfpJS<^m4FUUS z84I)Wi9x+ef%_j7c==D^$k!aEc(TF6(Ug=bG+~O)<9=~-Muw|BTgh>d?EsgWio4L_ z8@Lda1a+I6YR1=*cD3!3ukC3von9Yvn)}NVbd0A$mtKhyqL+@01g#!5Y>iBzCFq^Q zYfB|zj}v3q{+3%I2T%jieg-d0@E&fQI&8JSfyy0fNjcN zIA|J7OYZFT3b8$Pe7wD;#@YFw1;zOtO#Ogq1o0+7VxV-sDPjo-*CS{ZA)Xv9tR9I* zo3zH2%%HQF8e%s@Lv^7WnObEyK=foJ9+l=2Qb?2%I2sN7fu3q+YlEM|AGu_)*sBOE z<#1F#IEMv8hT8twZFa(9@itg1uO0nu)}6iP2om{1f|U*t84Ms2S(;!fvf1l=mpXMG zKz)JJc6v&ASE=2AMIQ+%g$(B0Y@EzudSgVu5~;k*)86HoR;4N-EUbgXs9l<$FD6S| zw&J(EiA25XsEU+4Bb8KkApXPMW3Aq9BUD~9cjxk?^q;yctvz+fM5!3F8^+AHlAtj2 z2FC-Lf5?q@w}n{PrZXi?5LG|9dDq4~0OO06@1m?>(b3WA;c}@J`gN5>u@L>G?kOw> zKjk`y`&p~yDw-W0>69vbt9(EF92*PjhvJcE9D|XAs6q>{GYhFk>lckZVTD+@lL5uR z*hjYUQII`L-F~iW4Y-h_iaeH*d&$5Ch|ML(X|{@wPfky*EHmXW3&gquba0l>Eeh;g zeGytCYSjbp!U*|^{$N<6Bj6R%%v3MNttWlxWiIA4oJnM;3v!|KFRwLygCc?yp(?Wo z1&=SW7-LG@{Y+CV|F0ACUws8aZ2=1Dwp_&6evRG$h^Q`%gv~T(2fPjS$p$TU!GfE; zA`->%Z0q|YNCIGI6RYXum8L}|MAAZokx`HVTnhJeb1qlCEqZGlOcc7AJQlU~odf{7 zACZOF0DrkDB1n{&7VS>cr3#&;Nvqj>_t6XaIg0bqLP7FY&0^JqH>B!RJSU%>b*Ef$ znfV%1pab}}Y0BCZuh->z1E{87?`*P@g2;5h?)$pF|LjXmJ$nS6^}VGMDpCm%i7Q2m z8yXE?ao*0dfiFs;jSG)wBn1l5VZ(v@7hwN$T;*+64+LnN3~JJlkbeg-BR~|hV90A* zX|w){rh`M?7muI`vB1!tRftTuMN2K|zY1VR7JpxpA6K@N0*kk%V=;euwKVojc~mFV zXR)0t;KZVW8-{FDemgugh1FCA-c;^%Ax&U!b|pgabvR$A-YLfP|4oGwvjQ_jF|HyY zdS!E^C=q6p*ZL=gn04bdTz_C-v7a9QBNT z65xXtq8ULN0Zt4leL~av{ec*j2n#;lUstZ0B7o1IA}SR&)Zd>mM=jVRx?!-6tf?4A zDH(@2v79c1=)L`A?QcS{GQ5h=E2BRe6g@>CAwIa0x?6lhb3TyvbFXgP&HiGho0!no zd}bbnake2)T&VDw8INf2w7R>pN1|rEyHK*~+ zYqP%q*kl@SS6ZF4MEdag)WG;$OGq+C78>%gViaaXFmi}aU6fH9bpI0KI(Z%*<9FP3 z!$1EJ%a&rChlEc&C?XpikXc(gZ~#KrsDeEbtNB^D_rLe57m5|)=y{)Nu(jfV-+pHG z+m9g^(zFoh(w%G$aYp1K`q7JkwMt!JD0KL8GV&>6B-4#PayJ=`ESQIx)d*lN7|(V? zU@EYcpI;JYFu(@GzUt~pgc1N?wba4jf~AxJiL*lS@x`gEfWY;oHeeKbk8E12Fv})Md&=#a?i8*- z+NqEr5VBaQMg&a$17O6Zkv2CYg+vwP~ZQD8d{=N6Pt(q4#Sz`{o4{9)(TJE?pY#Sp(Dx=Q_`8u>; zd42IWqxWdHG1rNlOENWt>c zvNt~2JUt#Nki5_WFh9t5{p;XYwtw?}cta8yE|)d2AQr6o-YlymAeU%&Y+pD+92n8x5@Lx-7usyw zYIl^4PxI5r=-|h`dL+3WV8kdnA=FR2U}OOr0AzZ*-L!_1$&_W)P&oPjy^*FUk`lzZ zzxbOy4<=HOt7U9k4^tKm=F0}Ni`Y;hr_^ffZeA~LV8W_pt(WbnLXDBZMYrvSNYJh~v)jqBcj|n6`77c5hU#~2=g%NQ-wNd}hsGjjYiT_3$fq8NKCS0=!;r{S zKG)ahq@%p{;>a2PRc`(3ih+pa$*6*Ir?1jrg~{cX_E%nhF5~Ikha*B>-nLHG(P*wfJ#i=gH#0>8!fxr z%LN3etCQ~>MFEF?4g@!qih~mAbxz~w^PsVM=kt$Fbjv5Pp%?tk?xW9k z)%K@LB*duJ2G56;p($A#-5Xlk$I;8erFX-3f^4l;o1>Qqp-8d;KVVVNre@Pi4VUK% zpXDK44tRh5HPjnBei!P~=jKg)OoL1rF4SREW`o}3y}N%=yg-xHZ?H0|nhi`I@8^<6m}L5*h%d|5PlChw(JQX5jXdj}RNT~?5Xcx? zjjC4d0zJJ48tnH{tUR%^@E&(YqqUDVyFI*iPB&WCQ~AmYWYyFsW8+x!J!<7kIF;BJ_5<7)|-KM?$RZ!Yy`vpp;)=d)2IX}z6;r%%=CEiMB{)`?q;esqrHvJKCiLa$sxSlpU;k9ve=Al1dTq52Q~Lv#j|X$ zkLM}L@$toM)kCO5bk)V8!B*!a#Q=Tn*DB6cO2w@7Opvh!^ZDB&lqObU9q;4|x(9MW zhGo^0rAkK^dIkfir`ZM9oKTs`k?~oTk`Ix3!t@nAc}mU;$+b^jbKgeZL1aTjRA`|v z^1UV7l08g}a;ES`jTp0yzZK*rE77Ost?K4DUE_b7CU8_9dql0KJx`*UK|KD9GSS0x)W#B6w<)U2@v;a>Bnw$wv36U9e{Ig`8#edIKt+8^|&=pT!P|io-WNS+raf zETTg~nme{Kb)h0WR(}cUi=`pnad1NRlQB<{mBV9knW?!62anE77Mi~yTll+F2427WWKwQy3On;f&j&j(md@G6oLh*M*+LG z3SYBG89g5x-EQ~0c=tGv%AqQY0cs{&8JsK)gzT3+aE(8_Ru`!z8^!O-S#}aTB>ed`0J8 z#oI_6tu~n)69IRgQAin`XMQifp}U+WBmH9)&)wjN8~alC%xvnVzyD$cT4zqk(vj3Q z^svZqwA79EG)zxF`#yKDp{bNNWHDf(RxPnyI6I*HuEuRR7&a148E#Z@cwIV39};YABF^LW3t3V#osE=#W4d z?bP}O$$zrOQVT=ZKy!}83rjgFFv0VypfUPE%VEHxfrG}l$9WC1T9+C#hQBBb8^yjl znKX_B`X8j)Te*W4QshejCghkUEh2zK!aW*=U_E+3pvc${<0Hiy`sP28@G}tfN^vc{ ze&Ri^#hy= zLB=F<{DVw`lZWGF$#W}>Z_gzCD)7|t!6N#J1cSy&TJA-eq5e{}itan^ibn{?CV>+n zu}f$A%G6%no;pk_{E~Ozh41;PE?VjgCnY}fE-~UW|APS(l_3Ds4?{io8$A<5C21m0 zUzfV@F5fV3P!eg2;+>6H8VMC38HsQEP||En}jG z>S7xeDN=_ovczdu7uxmZuN#2`_?r%wS)BR<4GvAf_oqA{dBTVpt1$G}63Qq8m_~ls zyHMPeq}r($s`XfcfX!}<{)F`>o4I8g1547^4w9J{lnU~{5zHs8^5?T23mw`i%!)T# zm7VT?ny`4hK`pUEAxl;~1WDw{m0Rxf4Yh3A>T$8Q1*$!Nb;(!;MxxmXntot4;c7v<9k-6eY+_1V(NS{n-+GLrzfP%3Nd5XrM$ z$)>aAMj4pZqtnKpguN4{G58%W9pRwB&D8QmeZW37&%zM3X!Xo-BzY(nE{`V{m~`8` zavu~y2L;{(pX$~|T%n%~T~>%xEpt+5=ilLOx^KZ}@Xu%>lXv?#U$@)J2AG#o@=s`R zKY<_8pJa-&Ap*HK-f9CtcNbiqy1KQamHj8x9p6n&*i95f>j(~PcISsd>x>W=%l&@P zTh(KAp)M7ZfUs{UvMYX<#as4)Bh+H)v5=wQXQA053#T!GG4~_3T%VN51o>BD2%1U4 zcL~rIc&za7z=Y$;pgZZ$Xzh+SrQ*RxJsXeYY(T-~!awCsO}0|`%2S3;@+==L(_aS; z1O%EZ4?pkvATNCJ-H!(~5drjkkMniE1UO0*3rse2_LjQC4UfjNmYe0H z(xZG%zNx)-Jrmjq&ARL`UdI>ee^RnpFn;3zr`nQFSY0NUYgrz*xE~B*RJC<}*Fo-^ zgjlDtb(nXqnv8l6GPna%VE`~5ZU$~shyslk3l*EPeV>FpPaqfzNdkypnT}&hddFhm zN`EQCp;c&WE$6Y=lCcuZP!!p%6Rce7Gj!P(;?;m`@&#e&p8cSq1|ol9LMc04Aya!9 zy$?4%bs$+S+1oR8H+|zjy4|Oa(uT$}J-N2#4o9B2o;KZmbqneqwu6^kb?AEQ!n-SU zJ{}5h!}qOeQpPjb^;by~4!i1i1ihQ_-!Ef5DPch2c)z}y2^_K9p@QBJz`em`wtf4& zq_!bSGi2}Gbf=-fc!vIbA-uok&;}3@iLxs`4SW=@Z4fhZXq8%{KuTks_9gzX^?41# z|H#p*J!Fd6P5ij(US}dY1A3BOB2D>@%II{sh5P=RZA#IhKb*?BbbX()wQ1+MD@<}c zc%ARm?Ib#w8jZa;Pk8 zVL8|IgJAvS3>BBnx<=JJA{r(d@8oZ1^TixT^{*7~+Ywmr&00m%rdDy84<{YpYaT%q z$p9koY|Q5`0~wlSh-*V|Az-Wt?dlv4Vg1o8If zO+AFNaMB~kV2r|~F$#j`>oHSjtU2w&<}nCGH%1xG!odf$YvL-(D%(4pw~LK!d+($}bO|G)Q6N3(nT? zG@1|pa6jM+gD~qMr@oB#Hj#wIgae$%X--^Gr+x~iH?R0Bl-}YnAH;y|?-67$jxVXF z#kcM7e(hlT63#n(+=c*B=d&j0`tr%U*&j=>_d0s2Lx=>dWPsn@1V21S;kb%HEY#|7 zyBXhnf_ikUE2coBqD#f3I!9idOyq~V!5!wX!^Q z>!ydZY_^>*N6&OTh(9vlpDVd0Q(3O{)PBcSLj(MJhs4yBEl6>1UxUGNI+48}B3yOf z_J019p*UKv0O_%5TqE9Zz#(vpdEXZ7Ew8=J%K5kndfJoCl;KX>0{7tqU&;Fc9Y6#P zYUq!_6_v(gT1ErVo4=6ag0j`>Ub2WKS|>yB-0hSe`}uNuR;PH!O)`YYpz7)Hl2&-& zT=0r8y!O^>8K!r$j?K@!j(&X%wYEukF2iw1wq@oL1OL!!wZ|C41O+&>W=9lq`^vU~ zuetbXU89*Bv2|bk)xsJ8iR7eDi|J33hW>#6ZpR>EBOW~NSQE*fsNFsit(D+(R6p2Z zIF|Fm`ftp4CY}-!1VB`jTUB}bzA`#Z<~#DXRy13mk^Mz7aLV?SrT%YwNhlWodwqU) zsb<1}DMMPk0Dvb-z`AWkP8tuN(?vV4gxCC#(3s==lDtmdHEh6 zX^KSNr%P{6O80#s%z6k2`$`mfL{PosHZgskJZcIZoAJ5FVbGBZgJ#2J2ffMo^bkes z`ft9j&&uXz@03g*nx)~_AjC*Jh+JHfPA=1f3MyQgB=*1kUpG^P=iFK8p5?F+T3(%5 zJ=MWPJc<7;LZMJdv4P0LA3iAHcz;n%MNP4(l-t?fXH*fbnypq-l$32;5bz%6b3XYs zWc`!IYOlTKC3j+a_B z)zsGOdYfKs1;5l1eBHIW%ysRKjR2-)d7ln>Y#GD=v|c7J+F%MWllq25Q+VwI*8`sc z4L{P8$K7_aq_1Qk1#pFYmNWmGwc#r{6!4e-JB82zg4))6;2`m@7AXmIarb zKG+veu*=5*p7Ji8cEo5t%k}n`U)P+{tX_#Ndm_6!UR3=}z=C{U-HhCfQAG)x%gR57 z0FE`AzYE=6#pF`fs*5H30!p1H;iHGgkq0`Jc}*)yDy9l&*3Jlnv!j<53*8eOF#q>E z^*8KWOx_S49yIA}@olKAn0*{;9<9KZkH*?9I50GN zrt&Q3i#f!O7qb$ydj}*tU7WlX=S^;hK)hvI4%oG&Q{I%pHYB`*%eWF>ujrT<=y#OoU7Suu zr)$i+{@l7pvGWGsQi0<=YE7n@lRnS%5ycHVLr;q23Jqi+Zcl)3)c;%Lf-9KSP*HaV zZqQj~R!#of=Kkd*WB~vt=?hEO6nIU|jMa5dsuuN!r6}Y2Mb(NiRzLoLSnmSqlRP)q zcsx!)@zqv&v&7ou|94NL)J97K^3}g%V$9p4DpA zAWBrMXY0#VGo5PP>0`E~*DjA?miWWqzd;4QV^WnG8wZTiC{qRt3IKOSkSJK|GQp+DKUdF9rh@DPulkpL2C+oO8fwkO~W z^l&(IEawwUshoGFTTKw-FyR@rJQ-^3)$5xna%Btbm=voB_dP|~31~Jn1p^f+O1lP~ z%P=NV;1R1GPl6k+Rs3(+&J$BsymDnLDXaMG9Cjx_axO9TVml3VvM@xIj;>tYR2FdW zb!`GuLCNeY1w$CTC12^p4~K%n!jg91NKn99SmdH4N3ru*R*a4rZQWc!@Nk*b{es&5 zUJOreMNZep#&7+LvL3rhtd#EnO^<)`1)uhVcC*_@#GlWKX@NUs!>=718eTc0z^C}q zF54hQ5QmqsyLZSDK|+5p@&vNigt8xLLvwvt+j?s$^XR-Rdg|bgC;4?0>rMjv1(F<2 zT3<2Z1@pLNCbU0v6m}SM*y_>5me%ghbH5!^Uy1)rQ{W?~Pwup|3`L8c|5nAuf!KQD zZb_UGu=gh|9$%)Kh3UL~wg#g*t6h>ln)dhg7quwuCBl59)U>HGoJa`2Z2kQ2#1nOO z{Z^^1UxEKV`+)&Esl|H7lnk;#tczL7%iz`pkGat_txIuQCi#CIkdQBVbp3i@1+Snk z4HQ21t~RpT3J-g6+h6l4CPxR%}z40(BTE2SL_(qj<8 zzHk$_20SaMu2DPdF9^rHd$_5X%BaKwoDzD}cZTR=eq zIVes7+(U>9p)zw1p$I@Dj>2>>sVHRv(e>sfv6%A~#4PRD(A77jeT!C$xiqV=wE|gHo?I^ z`x6&vMdIxJilP)p910m}$K~O;tz)DDsN5~~eG|x;rsy25t`Ny+0g+}SZZVS?Y-czt z@}CAwKqH%QR}2UnH=6T=pV~%fcDclQZeTzFV0aK)T5eJp8A5$^Mi?fFGSFz7FczAb z_HL(KWDyDDv#p%DF$t>Wty*_U8!#&{ew_-Aht9G2Mvg~plEHh)MzZZ>XMR;u(kC_hxut!^F)&kFTK#mjv@A^-R9VRF4(KNw4?)@pUwACBAJnrn8wke)44 zF&E%kUHSW6^6H}7b>krawvm2W=dm|p<@{&)Aj!@{%t4`s5bBc; zuX01Vi%QJ>Uigkb33w3Pw$@I6c;;f_q+?zqk8+Z)#;)%=;Q13*V0j}|)3%~XFK*I_ zNYT4WAw$ioZiezpWsMLusZsozk3wJo7Mabl0}3FBbBc1@>%+PD3ml~8CfP=3OP@D; z&RR)hH-X0)5D4!q#CrRf(l#;^ixqQy`6w2WzPYT6os!40N_0nZ2TjNO=tiZ|b|vHCw&K^elDAzt=`MnHhegAs`4Q>Ygf#AoLt2x| zXvE^=68_(39UDe{SbtM2VzyYeS{AYwds@MzM7!e6bZb+phj4s{5uF|Yxzfh92C+^* zv(#)_V=KpP_C^#pzl{H95R9j@!F_X2(!=p~>RsXgG7gZ0nt80A3)Pd!k>nF(pkq~t zz>44BjuKIqw<}K#Mc$?|O2GSrp+ziq@N+UMY8&=L&&pQfTt7218KY%qqjHM*$ z=EhG*JR&x8$!U+YHgSr;C?qxZ5pMPT*AKS@I)dx<7;u3uPl053_i9wS*BwXRMs z?w^hhAhG!s46yKanRo>y)z2|mG?W#gtiAoEEkl?b0}w5_u;D;x+#QWe>PcmT$8reo zL&vcJK(5*?40qMID4b5cX-0eoeWGXWKipY}?_OAjX}`tiSf9D9@S2t(ph5n#U*8c0 zq4!B(f!(IPi+l%|v@&lx_X(7ZzAGE-yM>_w;KJ8D#*G?u7;u5tDQ)}G|FejNa#NBa zKd4a1DcH!8S9Lwu?gs$S&<-OR|Jl~iyS}o!Bw0+q!XYAwMS;NXWkfO%Pya1&F-3S0 z5P0ZaPb|UULQ2>V_K4)~_I{y8317N0luVGUQX>OjZndnS0x;j1K*0BtbTR{2gJ~#* z=onV;X8{#j3`G*i8Tj}xs^EZbr~K`b9AnD$HE38EYGX%{KR8S^u55~YLI(m~AMw(D zi6zCZ6{N4#NX#UXw67;>Ew1C(I3IQD43BKxQ z<)^F~ETY$M=_{KLL~ocaZ8RH1P8KIbb28l>N)ys4m1Z{T<<8yXvuBk@pojJl~FS_nX8bZOP)aA{B( zX7D8)9Snr<-&qVw@a+Ed*xKxbiY{I_1BcDmwb?^u3ZQ<|5I2ts)<*_}7QGCP&i3|- zhl@iCXLNmyG!dhIWdkiz_Yyb^FbmM|#4NLg_UfEFs}z8XCUsGH0_zE<7bEA%UT zby=Lyl>Xwv5Dnc)Eig}-9|fV_oRP>q|D-L5_J{5uEd}v%&6S$0S~GVVDY>okS$y`B&-3x2 zVy&RGQQIZ`v+^}Ewz0iH#1i~V?7yA)QYj@SWNa z?3WK*D5z$Cj=_`IMp*gjqDv?DiWCtY2EUiif{K)BRtpO)eDCc9{YJ8BJN0LSB#)z-66DTHv9C{&tq4uD-d-4PmR7ARK#26q@s~cH^&ktyI3z5e5XTh!txWXzZTidW`18kO z*4@YX{mYEgmz@j2IJ7WQ{yl<{ZgqEchpi}K`YYj^k1=3 zMjI=H^o8_*>zEU7?(t?;XO}%BQh)#!Av{qKHsGpRGVphhx~c3&39#MMIZ2BND4LDzqkT};F$|oSu38ITqcol54Rcq4)PNy`>Uzp?vtxO+o7*RY9R9* z=}2XTW@fZf{5k4yK!_crWZ3^s3zX3EVf(inQreg1^!LVx{}Ma=6!9QKPQ`x z{nh$YigF^io?jjrp4LmJhYw_sZs8(p0Yr3-Gz=7ESv>Y;rt3#MO;-%ctLkkG#$p@J z*eer@=H)t>T=X9O$1pTHK9f187Al&^)eJ3mc4uud%@>?XWvm(VNk`Gy5`4ZtF6X+h z_|wap^kD6kxlFs(uWyp++Uv%+LGsgWvjkkZUZzuYjnNkqpYT>2e8!5Ris>=eC{<`t z_`Je^!p}sC{}PA2#}m!Jt4rV!Z*SlT+3jCR_kO+_5w3KdL`>~A`8u}CNQcGN?Z0ME zSh}9CdfyJmHH-`M31%Ifcz#1;Y8{WlNPp6A(9RpmW!PH`4L07~=pH7zOdG(aYtZ9w z5Hy?LW$%qVY)t9NpY-IJs_$vJ`kFCoY`RW9W7`?n(PiTjZ3q)XisCRy$Ty zHTp{K^O1~@2y1e^#}3oi1TPR*$^9Sd%m(5%|$$R)JKG6+>u5miJ3{)WIrX|j2?8e6Qk zNu)F{db=&H=a@_A+NiG{Bw{_t+G=&bIGk8x9_7hZ&hXqh{^z~rRew;B1@j9+or*_5 z7x(MHKVKZbPeCB_@{#6O*cSfEoAEm4TGQo3`MiX>T8gW_>-v!p*bzqmSy=y4#0_xV-x0NWl=zyveurYkoFrJfh9o?aOKwPfT*TTeyjtN-v|JcAU?3 z`9>+GqHK0cMFC}8XxSL==SGwRJkfCwQDEnlK2k<$LDxE;(eS)`%w#sN#F~=ri8gDj z@M6>Z{cN&5O->GvMahl8$u0fvH-p~~*RzMn|8 zZ)Rszfti{2hPp#T){#=}8=&`es#63!?-P^Snu`R_mkK(sC(n&JUae0`S)-$MN~U73 z&6>c*a5Rs_IGeuGO4KT%?$0!0|v3rP^*TIBSCcQRuv|y9oYJzVg=o7zhid8`3`5m!_pS^s7?k&OCqQ>^i=%%JW2_c3Bm`Y90) zAgog*3FTKiXZNmj@!F~EyQ_qg|vfpRKy zbb60>OuAfgqKdP*q47C?c#40Nks$Tkj|k?#cD#0{WRbP8ft`(gX`QB7Vk0Oy9?lfy z;&UcuGRvZJT#`G*r=6%!;)wOD)Kqw-Dw2k*3MB7yQwJ;r5$+a^p5lkn>K_aS&vk9z zx7(=9@Jvh9`paOMbRPXcT`6}mJu@5tJisruK2_rk$4NzIO~I}mrhhV>LvA+SyRk=x zbe|JZiR~bgm%CTjh{dUSeu<6h-}693AG((P<4dB#8tIs7)FZPNXLd!cOVawJB~!aV zlM{$VSDNC?tcK6U^F#13#MES@U7J01t&TBcIrZJ#-E=ONt>!`Hc^fiIb|wc~{-=w_ zui|UM>K=ng5DY&*Vjv@A?x}@A1l#e5a(SP&^9n>^*&$DHJad-#cp4YCnz~cHurZ2~ z*td#&B0>(ErIp#yMuxJsiSg$P+{*)#V@ee6uG7Qp%dJaarK9Q9B9C;A0K1qFwa}jlp3@=}x0M1-*)y+PBWo ztad`2SEb(e-=U%*#NqaAw|XrG6RK;{(7e+s{BDhP3^r4HtI+e)nK@U>HKmKfrP(Ww zkeHf8ZP^Yb9QKQm6~hi23JNq=jkYseSH0#N7D8i&WP2y0h`qX+`qCsPkzl{&-yf- zm+gSV{1D#LTE(Nw<#adbLrz;pNZ-}=07)7OATF}@{6rjPc*Cc-hZq_N_(lJLbGzHybZGep&bL_h_7{D7CSIJRCr z)#P@+-Z!sZ^*mWIeq52lY)g}Jh$wI4zQpIs*kii9fk^11uF9TbsGPH~bhyh97igpG zos0M03ztOUWu2ZY^zFYElo#6l=Q5LfFhw7SHD;4ciEsIgDGm%Yv*JX}DWuWMBH@ee zl)Rg~T)mgkxhy!o`bXi+0@u47*w7>yL@Ocwbce3Gkg5%(;2FKRi_t z50<-no$~C6TOc^9d*Om>(DlHM{8R8`O|=0Ja@l61qxrnLaQh)eRHPa4M95-)Z@psGzh<3gDeV1sZ~Ef(`IM2_J`p2`iSxd#C=i(T;qA@UY`Wq6nV5OA2nZz_nk`e9dV63m~o-x`R@!oe-na<(S z6I)X9b5O!v+B8HcoG}3SH6N-MN!S7LVNetmdb>cq_S>UfYurg`vp~xb<2N=om&t6& zh!OrxH2uDuYbCnS7Ev*By|g5aS@I|Dt>lz%p2JBEX@X`D{S&+e$8Vr*h;yaS&Q?9R>-7~Boa3m5wx5p^Yd|}gF(ZY zkiWArS&Y7kiy#}T^abd=nb-R8`}_nAU5#x`6PCvfwKEC5pjw&xn>)mRwAEo167%YH zR>Ho?TDbT)+%F@T#j-f``qevqf)S<(ka(GG z`}t^dix}DyH-u?ZMIcLPYt1i6H*UCa8x8I<#pxr9h*QyOW38et6*AV{!L%XcP zP?mNsV6xhuzxlK76IGlC9dM0s^BI9jtLz9J5XqBVMy{xlg#ax`TtpsuPslN1>)gQ0 zRy+nNC>ABdPok#`-L_)h92P4<>)~%M>j5E&1oXu2h}BfKRkW!SGE$C8)9(8Bygn3w9IG^M zv?qDDA7|H%O-@Vr9Us9XR##MwPPM9QD4RBsrsr`Xf|+vE79ggZsDazrhIz`uK%z~A zQvNd;6bwL!YFv=UH|Y+o^{Hyu2sbt;d$P?G>4N@9n4U zlN3#ypoa!B2~N|{jKS4a9kDxO)u@T<>-6}=PvZf24+|AU=lq&iIQ`5+-HGCv>7)Ps z>k$(Nsf_*!gv}J&9+;k8R8!rmPymm?M%#`A0fte5f0+}j!2@{OM?sK)d$i8Tn$j4! zdQk8R%UmE}7%TVq(#mWIWgvYaP_5zMu%I{~07}@geO9DzhJ)Uf)hCcaFDOD3-ZNzU z*YSx&_wqnFlxOa&rn$K}c4H;CC==R2i4?7HP4h>r*s?s49DM936}%hI5SN2AKn;V> z?U8Wp!cFkJp>>X=qOwqxK69i+wWyXzFb@ibx(AOz0^Oh#%>aNMw*E^J#%0)JKop*x z16|4TJaV0m@kjr>&)eyPL2-@URJMx&ybrX(bdgO(i3K+ITTqHhwY$whfw1BxAK8#x zwBx{J6|ahm8db1MV6uO7B+DBdjz%Qw-Z?EQxZjT|18igVHE`%StcOL);R9Abzxoxo z?PD~Qxn-tyya~`!G?1PZcSPb)H%U8`Qrz;g(={!xU`TiO70zgJ(4%8qS$UwI-hd#` zN^qamXt6A8=1-C_2ZL^hn%r!!A>iMXAW+oADg`dzc+oe)Zr@~H!s%J+@*o+ zAqV*R69EKgL;{ShoexbWU8?+jr~^l;rg7*N>4z0{m;pV1gEpBuJ`cPRwk&#vnP4dZ zoH~p*Y6a|DGz*DMik5?I5>#?NnsB^gwK};mXEi+tikTocxTH^VpzvZSX$cAQVtKI< zu@C@VS%x;M?hf%j`=WMpF259KAq z2|mRGf3Hf)=-b9-A|r}JS|7#r>u09bHJ#h1$sh5zgUuF?W++ms-K^?ZijOv4+v~05 zZGyxAS(S~2S)ep0xUQ7(ZZ9KTV%ve}G})Orrz1DZRrIoL8fY*5%%&Sz`?w3ikGt!2 zi!f6iHBO)4NTYgvog%?+v$jK&+?%l85Q(WwNy=NLa)zU;$y-**;7CT+nFv(xeElS= z=Ci%VvI1ONA$6-%X@&Ll)w!!?eNV1$cuCiw_s}kTXO6Zm2Ga|2YMIryH@As3Bor_Z z>S4dBi?Oc4WN9^D=J6mMB88)a-spB->0u51@W0-%#+XMVJ5WfG+E&NLYBBp74|VC_ za@x)dQ&f?FWsYzf*cuBaN{#>}bQS2{KjaU}(VjF=ok>sp6uQY7y5;OoO_?ZjhvR41 z6T6|sD&5b^`!!{|0f+PweUpd@dCksh`xQXkvxo?qb6~?h8F_YBRlQ-@RcsoK>d&6^ zh+^AQVsuWs)b?6tvSv@WVZk&k&cXYiL=)2$jpdr=V7Uba%0RVJH2p{j#CCXsqoJmv ztj=W{e}`b24i~C&@#8C86xumuqoZTwW6H^jvYI!~c7@|lr5nELO&P9$e^8#4SnF2| zmuJ;`x#N9dAy)H-W7#^joPz(tu_ecag|_v#{`%{HPGv|J(JRYadaUSdNJa zjz2EdMm`f&VwOMq$iDX;j}#QX*7mAhvHMJPy0$R}INg{Mhyx&cxPH$GJMW4p%LQCu)kfo$bB#%}vuwm9B4^0%fq z6B8i#Cj{XEIULC$BRZg+^14i`GkeAz4t(9USGT5qdv zi*UHR%VDNl)NrtuU0>`grf*6G8ojsoKtT0fO)qS(3%jlRgt9FxUN z_;@L}X}*Rjl*^_(^Zq5SjKg$j=aLToMl@M{tlUCtekoVzZ0N@AbJWru48W^D z!D1^q8gPsz=K_Q>*<}VGUl`DLd*}@<+RExAAYus^8kAJtUB*2>tho@F3;Cm(L?U1x z7gO^#T1%}zc#u*ML4%LqfnHXk*>z$Q7!c=k{T33rjB1E?K@I3EhYEe?Tkieqow2u< zP@e&XgpYr|cSgppE8zZD(lVHx#Q~Sq{P z;9_h%!+p=$s$<|Gegg5|uRaVBQ1)NMlL3aiK+`#XgQ_yrUv2A z(1t+qLK0z6 z?Wr0ihtJ~^9t;{y@cMzx!aM5>6`c$GZbv}mWRpkE(Pr^1^}VsoB4EK?RgkI zkRIKc`S$LuwF!T$)k@itK?9~4uLts3^g#e}iki!O?C#rOHJp=wrov&9WEm934n1tO zo1yL2?@gev3c=4hEnS-Kwa3>4+4AE`5I6p1-E>KD!9_UqSL|}Oy=OzU**G@TWMCZT;(q0^-htnzI^ZtAvn()y8#|5w$cpn~E|Wi0R!TISe`q_H>ua z-=Gv^hAN!ZnS|f1f}tu4W_U?99n~0AVZVvjXE~T>(?_}DF?Ri=vEtFtNjIA$|J8Ec zy%>30f2)b*L1AO~|M9%Svu@)zmZ$$a)?^&Uc*kymPjJB@clnSKvm8&GI7>C(=6?Uk zIQjLEB(TqAmU`1ZNRXWg3n^)${2QHfxy@>*?_$KsUsVbDP7#EY{pLsBv{kqBT=b;V zq9TI|J~jJRvjlAGO8#n-!`h^d4#z4xf9h|O+=^1(`q12wI}Rb@6si(BzCQ?Xq6!k2 zB9_e;D8`Rdu4+U1{yZv+WOF}^21)R$X$h_Jy%v*HE4DV1eyas?6rH0`iL!OZVG;+A zlOmm|AXFYel>TVkY<$R5qW(s!R7T&xBiaz`kR?x{*T~g-xHXtE9{_wLcVdTa@bH33 zq)cGp7Oe{c;z!WV+TS>uSz48b4?w{DB3LU3R&sO0IN;*eAfZmBjlf1&rK68jtUf(l zndN`TA*ICuk+?5gINCT3!T3=_fvhs63-Zym zX{5HxEhWCHeF49V00(mYp`3^vJJ}c7?ou$g&QDPWn{lfu(b4o02jKx2OcT&`o{+n6 z0|t3$nr>elIBAsVcPmcm4K9l#b=u>oGHCutchETVWLnlwr#r9NQd~dfSV=A7g*PGi z*_CiGHal6eC4azypNdzMQSWL%)IPrE)eg=p>2(m4Gu2w^y3Qrz{QXU(((Gji(A%VD zY&D)s=GH;cIL+X!b)o`$4R!^%ODebT9p5&$Eiv>U5F{D!Uh=MyYOXi6n=`t){q6wu#Q{D$yVh$_#IGCKSN z)yHTc08;$tYbLul19KCkyf9Fz7NR&)X`IB=yXAUR%;&0Fo7Qsez~V3o^UK*U3jbZTJgurxl?XXpWC>72Z{4^U8?>ABQ?~N! zpufBwH+f^$ZH&gW>uW8dd(~)>wFFy||-(767a zMdy=(q7Qv$QfUKOjrliFNFHIy!mjKWCA{iFh@p?HxD**liFl{QGg4VkqVXyVSS)Ho z%`hdZFz8*3rTZ^Tqi?dZK;+Fg9K3D?{*cp+iyIQ;+Cw-H)XkC4>E&phyJ`h*QV{vNHSpzg)W|`bhL*s-0h>Oit9&(1{70|g{S$`gBmg#U@ zm%H0bD`Ugg#%a6WY5(H%+06=7!IJ%XrNyP2+p`eKJpll|9&kYbEXAWt7y)3Y8KA_8 zV~#NY+Ee%lqxZu6;e=QtrE*M%<*MwJ(Ix-yuv1c;Hr zUAzALbUU2?C4^>b!f!_qdNP6{!L^sp$cg&b*7UCtdIbEP@a+Ux@g^FC{<;5#jukxP zZ=zd_V4`i7;we1-drReoQDRWYQNgWp0WP8Sb6*S{E=JpG{eKXnCI-2zYSdky%eqaU zi7(z>D`RaUfuKU~nqy&FI{ZC-mXQ~$7uMl9>9FY3=Ns)D&par^;3gpX!Ix!GepmAU z(4=fxRrZ4*K%qH(-+QZ49H48j`1rbfT@}m8CoKgAop#@mWH@&y z-*@sHW%;Mo#&%wiKW2P(xchJ$%)45Tye-}FKy!MB!iI8Wy}?Hk7<}fL*O$?okUmUq z1ycE(udR-v4~s+g`kCT7ieE}QCp@#$us(m4speMe-)P=_Yd7YD{w|)=yJQ?x zQa<2B9ET|Gr%e%t?#jL9g;WKfqK8v&(n7~_YDw>0_XD<6>8AE7aHlndDkzrE$=+pf zhH}O8ynVVY{<}G3R~(`T!5i_lbKy1o|JwS_peDPZZA6eFMLn_nC9{p0hK%*Y36V z%$c*xmunNBhMRaVu^srI2js7&3|nF!m=R8Yuh*mtWtOO5-MLiA$xjA=qT!s8cY2@p zRBp(Ty>-69EgmQ)gng(6*dCzB!Tb)YH6^|yuD-EqgV*`@Miy?aT=uNUV>_mn)5}Q} z{DDNkj;c}Q#vKQ{JcW;jKj^@WERIO}A@SQDG;w~3KcAi+zI)1L8zN}@>dp(UTeczA zS^L-5fG3pU!=_ZoRr|>Ez0WNrPfdv*O3>O?eGAc3c{c#c zta|w1+4~FYtSm+XrnM_kL$wmDX|s%i#$WEHnZ2KQ;#?i_^6}~X z>8_G|+2PFc`O$8hv(v~w5*ZmYs`M!;M5IM3`jV8yHs;+y#RaBTq&FA~%~#Fk)ac?G zEX%o07T8Hi0VH*wZ!ty+#*&kG@xSI-5$~UY1=qmH4C{QyQ4`$%1cl{&s9&2u8`+y4 zxmuHxTZSV%L6*&xf`XycU=tH!BBD+q7!l!7(GOGjGrsyv^52vodd1~dmg1~AEv=sY&J>q? zG>B3>!}VZv(8jf#ivFK1Ic{Gcj_diV>_VBHM=rF!v-3{xnM&=(jVh;SVjCrO`@Hv$ zZ{GT=@K^iiE%}pt?9njjx#|UgjQz)O)~B_#R3Smj648qGGZ22)^m-=xbgp%-ioUz$ z4Xu)mRLIlu@V3=dA6>DH@VN=E*@6LzB=%`^F}*=!(^h448NZUgL>1Q;hKntQu!b*d zv7{!n?zfR=bPpcgAR@9`{P(Rl;WEc3p_gt|ZR(-#NFk}6aElGuQLoB=eNG1c4_~ra z9V)j`G198OIv~mHklzz_r(wOo?4K^8@asRaq748-An@&ma5f8{MNve z*Zo=oRx$|uNHDa+94U1Hzd+>tfL_ipm+T4rHH#g;ji{Qz7t#1`O@4J-{brMKd&cb2 zTQ})?#Xjap+>#!~|c4Bx~L{i^+G?Y~XK%wiI@zywcwD4R1 z@)4|~Az*pCZp?TS$k!?^VF`dgv{*({ECeG4?-R6@=;g2`^)jjn2n!cIk-dT_`X&2Z z3Dqk>T^uVcyEVqxnVI89q_?3B0CezrrD39RkMzmL6(2L$fN!p@uB;fvr;gGx5?`hZ z+|l?7>h7AoD!$*dP9s`3qbTe#URZBLN$uo-96A2UfwFF|Xcvw^CPd}sIrBOkRSVBjvA#U%kr2$PKa}<>i z)se^X57NIH?INNYZ+-ZrpunIr=bG%=B6_8TKetw$%D_U75mXR(@W4i+kwy!sxXP{| z;KDq)y;JV1S(*jK!gF$M^{&b44o-sIhXMJQ&e&WQFF1glT%dzv;NkK9W~2h>Xrx0G-yc{@ny%lM=A0+PeYLH~eX_K3is65*JHGOWoqxKUZfa>-*T5*3dvLfW7F;1_ zPIq@?;1}AI7j!>QLj7HPh-TyBGcUx60KGqKGr-9|C2@2jbV0~=2Rh`FI4qVU z-GzlwZ_@+0y>yRB!3L?G#Ttf1k!2gld1U{AjV)OTQw*EoEG|5LUi-sqc}k>Q&}j&V=&Fwy0W@3q>Ephh)9pLycqJCW>3B zQ%PC?)l-MOMj%b8NAU&82X7vZ=g4ox&UoJ3c0>Z5i@kN`&jbOk4=nk4(~MQy2fN+{ zAd0{JTJrlO%*GBM*fW;Y#f9$p>TFg8wpPoRFl6gbrrjjCnURsP+8mg^nv#-|uNpmu zX6VU-S^V}}c%PYW!2bAD!nv4IVZH*tYKkwQbH~FM=dI^EP(%G)71}1%6BIwl8#5vtANf2XaTH>KHpyxK990xGQPebP;_y%nBB03K$^3_K zWb>unC%-v#$1>Xl*rO}KD8xg!Q#>V)X$VtjM{-mn)P-+=Wus~5Fy27V6rJv#_`)Zx zWXoyUg?n~coK#o8p>=#TE%l)9Lz6#fKVCoWy|%3b@S}9>+bAJh7p!UxzH~y?tn{{CZN%Vj^gsY(Bda@5iW-TTW(p?4L%-@QTG^9hVPwR z4(zVl#lbN4C#kqVmTKgs|&%q+-3dHe`@GT z55}`py((L}ATM^b8zSog)-DMz@b6eZ)M)~D(tk3L?PKQlDyRpj!%8Qr)aWxykYbs+ z@op#JF}#!3gr?SUUGKQcvqTATNOvQkFpeM@`OY*z>{ z1yc-h8t|xr01%iyO_xbHV0V`ie>T=IEZn=)5}lSb*t~A&{JEac1W5ap!rwyS*-)Nx z9$qfv<<)ODq*qkQFN4u22&`e0&=JhSXX1OiB&IR@v)Zz$bQii?Dpo zELI+{n&eHs|A>q*B_euC@#p=f2G8!m`VLuX`4z*sg58sY2J9vU2%Q zx4)&@D?7LS*^!9gvIs^_|F)AD*!t^*mMq%&W9=giuzb#=Y3E=}_}Ob^^?Bh@c8lf$ zPbW131NiGI8*a7jboX3f3XZ?tctcN68c>1@9L&eq?!CJgc~`&>9s9#q-7&zwNV)_W zQxI&W8cd_jdLpnHS7C{nc$C~Nz+~X%7|K;T>Yq^TJgpmDkhRI1(EiVVRi09>R55C% zV4p#wBt0i5c+k%6fT)*82DX5e1;h95h0hf&!Qqg}QcyDBcLw`wZova5qy=xuqF*k& zqY!%>?x<4>&gO3Z3FQB~pUS)tkUl0-cn~F%+Wm+!TcniHDnw0rKvC2--i38p7Q7Sa zsQW{zqm-robI=9;)84y|5d2(*Xnno5aZ4N2s%0$n8}2Ze=C{3u-Fid1Tey{ylfi6H zL<%B*YxCl2(6%DaBYbt}erUNV+7_p&JM}vg(!zienq&Xe^yPAxJvrTSo}G5LWn;0~ zinEd}$aZHFr*(Oox7|yvH<2T7)bV7?t(e0`AD7QNVzT~I!NW*RpWhJoy&HtGIj|c_ zb55!gl4s{t3p)!q`9M4VQZenAW4qD8X8cH@O((Cs1CNkO<&ZP3+E|R*wZ-|(ugs&e zkIHfDUk^?KZq_oH=~@^|!TIdPJr)0RRr~P2Z*Q;v%#d*GiLZA<8_wTDVu%ll-B<^0 z_a@;i)Qa2=rV*{nZRzu95C377RvdF;wC&3ZsVVi`f6-AE4FVSn3OO=uEZ^h}MdZe% zAJ7Sfi~21l-R2M)cY1osAf*jpxC#-jH4;0Jjr8dVT9e*W~1<@lm$hA+qa~ zs)YVPQ3IHw42^?O4|C)`d+wi2Xv28fh*ed(Z}t}dt&(48zG4q+DfVD|r6wcAJ{3qf zpb^a#Ra&?m?Q@BcXMs-9^W~dwSDf?JsE~Y;yI3Vudy6w7tQuWQ%M}65J z(YP%cjN;AyoMmAlDU#CQ-mv-CjrN}t=(uY;sRwJpo-fzBZ?>8#xi^KygBJua!&E^2 z|M>9SGFg-7E+uKicL3MZQ15#_sht)Xi%|k{3}mb^vT;4z0zFg=dnc!l09|Rgnv@)_ zNgYFN#RCN!5U{0UKV8`6z{&Q&-0VpeHrC^W7q{Equ#s<=YKG2;AvCKm&{j-zy{iawc(L3E$(e}L_a2AkQ~grULy3HN0ZFMnB}<&F}5F8uMyAd5!~x3rAj#jaVvhN8ySB5r?fbaz zOlyDc#|asm(g_lPt7~S0ICa zP3q5n+{ja`|9&sy$qT0HXGsr*WMEg>MR!g3sJv)I9!top-|2P}6?&3){^qXWc~fX6 z;H^v4{YnnSjPn~bxj`02M!PN01wGOG*^c^$+i;M+#B9N6hOJnN*BCV~e5JyFiq@wL z%d#|evw}GEX-O+^D}%uu;6u1GUq~?dvT`pMKu^!%Zp+C9t_@?Tfb5^(YjQ{`u literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentyten/search.php b/wp-content/themes/twentyten/search.php new file mode 100644 index 0000000000..a3fa97bd67 --- /dev/null +++ b/wp-content/themes/twentyten/search.php @@ -0,0 +1,38 @@ + + +

      +
      + + +

      ' . get_search_query() . '' ); ?>

      + + +
      +

      +
      +

      + +
      +
      + +
      +
      + + + diff --git a/wp-content/themes/twentyten/sidebar-footer.php b/wp-content/themes/twentyten/sidebar-footer.php new file mode 100644 index 0000000000..c055ad1cd8 --- /dev/null +++ b/wp-content/themes/twentyten/sidebar-footer.php @@ -0,0 +1,61 @@ + + + + + diff --git a/wp-content/themes/twentyten/sidebar.php b/wp-content/themes/twentyten/sidebar.php new file mode 100644 index 0000000000..75ec6a12b3 --- /dev/null +++ b/wp-content/themes/twentyten/sidebar.php @@ -0,0 +1,57 @@ + + + + + + + + + diff --git a/wp-content/themes/twentyten/single.php b/wp-content/themes/twentyten/single.php new file mode 100644 index 0000000000..4e64ec7794 --- /dev/null +++ b/wp-content/themes/twentyten/single.php @@ -0,0 +1,28 @@ + + +
      +
      + + + +
      +
      + + + diff --git a/wp-content/themes/twentyten/style.css b/wp-content/themes/twentyten/style.css new file mode 100644 index 0000000000..ad3c82987e --- /dev/null +++ b/wp-content/themes/twentyten/style.css @@ -0,0 +1,1389 @@ +/* +Theme Name: Twenty Ten +Theme URI: https://wordpress.org/themes/twentyten/ +Description: The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the "Asides" and "Gallery" categories, and has an optional one-column page template that removes the sidebar. +Author: the WordPress team +Author URI: https://wordpress.org/ +Version: 2.0 +License: GNU General Public License v2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html +Tags: black, blue, white, two-columns, fixed-layout, custom-header, custom-background, threaded-comments, sticky-post, translation-ready, microformats, rtl-language-support, editor-style, custom-menu, flexible-header, featured-images, featured-image-header +Text Domain: twentyten +*/ + + +/* =Reset default browser CSS. Based on work by Eric Meyer. +-------------------------------------------------------------- */ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + background: transparent; + border: 0; + margin: 0; + padding: 0; + vertical-align: baseline; +} +body { + line-height: 1; +} +h1, h2, h3, h4, h5, h6 { + clear: both; + font-weight: normal; +} +ol, ul { + list-style: none; +} +blockquote { + quotes: none; +} +blockquote:before, blockquote:after { + content: ''; + content: none; +} +del { + text-decoration: line-through; +} +/* tables still need 'cellspacing="0"' in the markup */ +table { + border-collapse: collapse; + border-spacing: 0; +} +a img { + border: none; +} + +/* =Layout +-------------------------------------------------------------- */ + +/* +LAYOUT: Two columns +DESCRIPTION: Two-column fixed layout with one sidebar right of content +*/ + +#container { + float: left; + margin: 0 -240px 0 0; + width: 100%; +} +#content { + margin: 0 280px 0 20px; +} +#primary, +#secondary { + float: right; + overflow: hidden; + width: 220px; +} +#secondary { + clear: right; +} +#footer { + clear: both; + width: 100%; +} + +/* +LAYOUT: One column, no sidebar +DESCRIPTION: One centered column with no sidebar +*/ + +.one-column #content { + margin: 0 auto; + width: 640px; +} + +/* +LAYOUT: Full width, no sidebar +DESCRIPTION: Full width content with no sidebar; used for attachment pages +*/ + +.single-attachment #content { + margin: 0 auto; + width: 900px; +} + + +/* =Fonts +-------------------------------------------------------------- */ +body, +input, +textarea, +.page-title span, +.pingback a.url { + font-family: Georgia, "Bitstream Charter", serif; +} +h3#comments-title, +h3#reply-title, +#access .menu, +#access div.menu ul, +#cancel-comment-reply-link, +.form-allowed-tags, +#site-info, +#site-title, +#wp-calendar, +.comment-meta, +.comment-body tr th, +.comment-body thead th, +.entry-content label, +.entry-content tr th, +.entry-content thead th, +.entry-meta, +.entry-title, +.entry-utility, +#respond label, +.navigation, +.page-title, +.pingback p, +.reply, +.widget-title, +.wp-caption-text { + font-family: "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif; +} +input[type="submit"] { + font-family: "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif; +} +pre { + font-family: "Courier 10 Pitch", Courier, monospace; +} +code { + font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; +} + + +/* =Structure +-------------------------------------------------------------- */ + +/* The main theme structure */ +#access .menu-header, +div.menu, +#colophon, +#branding, +#main, +#wrapper { + margin: 0 auto; + width: 940px; +} +#wrapper { + background: #fff; + margin-top: 20px; + padding: 0 20px; +} + +/* Structure the footer area */ +#footer-widget-area { + overflow: hidden; +} +#footer-widget-area .widget-area { + float: left; + margin-right: 20px; + width: 220px; +} +#footer-widget-area #fourth { + margin-right: 0; +} +#site-info { + float: left; + font-size: 14px; + font-weight: bold; + width: 700px; +} +#site-generator { + float: right; + width: 220px; +} + + +/* =Global Elements +-------------------------------------------------------------- */ + +/* Main global 'theme' and typographic styles */ +body { + background: #f1f1f1; +} +body, +input, +textarea { + color: #666; + font-size: 12px; + line-height: 18px; +} +hr { + background-color: #e7e7e7; + border: 0; + clear: both; + height: 1px; + margin-bottom: 18px; +} + +/* Text elements */ +p { + margin-bottom: 18px; +} +ul { + list-style: square; + margin: 0 0 18px 1.5em; +} +ol { + list-style: decimal; + margin: 0 0 18px 1.5em; +} +ol ol { + list-style: upper-alpha; +} +ol ol ol { + list-style: lower-roman; +} +ol ol ol ol { + list-style: lower-alpha; +} +ul ul, +ol ol, +ul ol, +ol ul { + margin-bottom: 0; +} +dl { + margin: 0 0 24px 0; +} +dt { + font-weight: bold; +} +dd { + margin-bottom: 18px; +} +strong { + font-weight: bold; +} +cite, +em, +i { + font-style: italic; +} +big { + font-size: 131.25%; +} +ins { + background: #ffc; + text-decoration: none; +} +blockquote { + font-style: italic; + padding: 0 3em; +} +blockquote cite, +blockquote em, +blockquote i { + font-style: normal; +} +pre { + background: #f7f7f7; + color: #222; + line-height: 18px; + margin-bottom: 18px; + overflow: auto; + padding: 1.5em; +} +abbr, +acronym { + border-bottom: 1px dotted #666; + cursor: help; +} +sup, +sub { + height: 0; + line-height: 1; + position: relative; + vertical-align: baseline; +} +sup { + bottom: 1ex; +} +sub { + top: .5ex; +} +small { + font-size: smaller; +} +input[type="text"], +input[type="password"], +input[type="email"], +input[type="url"], +input[type="number"], +textarea { + background: #f9f9f9; + border: 1px solid #ccc; + box-shadow: inset 1px 1px 1px rgba(0,0,0,0.1); + -moz-box-shadow: inset 1px 1px 1px rgba(0,0,0,0.1); + -webkit-box-shadow: inset 1px 1px 1px rgba(0,0,0,0.1); + padding: 2px; +} +a:link { + color: #0066cc; +} +a:visited { + color: #743399; +} +a:active, +a:hover { + color: #ff4b33; +} + +/* Text meant only for screen readers */ +.screen-reader-text { + clip: rect(1px, 1px, 1px, 1px); + overflow: hidden; + position: absolute !important; + height: 1px; + width: 1px; +} + + +/* =Header +-------------------------------------------------------------- */ + +#header { + padding: 30px 0 0 0; +} +#site-title { + float: left; + font-size: 30px; + line-height: 36px; + margin: 0 0 18px 0; + width: 700px; +} +#site-title a { + color: #000; + font-weight: bold; + text-decoration: none; +} +#site-description { + clear: right; + float: right; + font-style: italic; + margin: 15px 0 18px 0; + width: 220px; +} + +/* This is the custom header image */ +#branding img { + border-top: 4px solid #000; + border-bottom: 1px solid #000; + display: block; + float: left; +} + + +/* =Menu +-------------------------------------------------------------- */ + +#access { + background: #000; + display: block; + float: left; + margin: 0 auto; + width: 940px; +} +#access .menu-header, +div.menu { + font-size: 13px; + margin-left: 12px; + width: 928px; +} +#access .menu-header ul, +div.menu ul { + list-style: none; + margin: 0; +} +#access .menu-header li, +div.menu li { + float: left; + position: relative; +} +#access a { + color: #aaa; + display: block; + line-height: 38px; + padding: 0 10px; + text-decoration: none; +} +#access ul ul { + box-shadow: 0px 3px 3px rgba(0,0,0,0.2); + -moz-box-shadow: 0px 3px 3px rgba(0,0,0,0.2); + -webkit-box-shadow: 0px 3px 3px rgba(0,0,0,0.2); + display: none; + position: absolute; + top: 38px; + left: 0; + float: left; + width: 180px; + z-index: 99999; +} +#access ul ul li { + min-width: 180px; +} +#access ul ul ul { + left: 100%; + top: 0; +} +#access ul ul a { + background: #333; + line-height: 1em; + padding: 10px; + width: 160px; + height: auto; +} +#access li:hover > a, +#access ul ul :hover > a { + background: #333; + color: #fff; +} +#access ul li:hover > ul { + display: block; +} +#access ul li.current_page_item > a, +#access ul li.current_page_ancestor > a, +#access ul li.current-menu-ancestor > a, +#access ul li.current-menu-item > a, +#access ul li.current-menu-parent > a { + color: #fff; +} +* html #access ul li.current_page_item a, +* html #access ul li.current_page_ancestor a, +* html #access ul li.current-menu-ancestor a, +* html #access ul li.current-menu-item a, +* html #access ul li.current-menu-parent a, +* html #access ul li a:hover { + color: #fff; +} + + +/* =Content +-------------------------------------------------------------- */ + +#main { + clear: both; + overflow: hidden; + padding: 40px 0 0 0; +} +#content { + margin-bottom: 36px; +} +#content, +#content input, +#content textarea { + color: #333; + font-size: 16px; + line-height: 24px; +} +#content p, +#content ul, +#content ol, +#content dd, +#content pre, +#content hr { + margin-bottom: 24px; +} +#content ul ul, +#content ol ol, +#content ul ol, +#content ol ul { + margin-bottom: 0; +} +#content pre, +#content kbd, +#content tt, +#content var { + font-size: 15px; + line-height: 21px; +} +#content code { + font-size: 13px; +} +#content dt, +#content th { + color: #000; +} +#content h1, +#content h2, +#content h3, +#content h4, +#content h5, +#content h6 { + color: #000; + line-height: 1.5em; + margin: 0 0 20px 0; +} +#content table { + border: 1px solid #e7e7e7; + margin: 0 -1px 24px 0; + text-align: left; + width: 100%; +} +#content tr th, +#content thead th { + color: #777; + font-size: 12px; + font-weight: bold; + line-height: 18px; + padding: 9px 24px; +} +#content tr td { + border-top: 1px solid #e7e7e7; + padding: 6px 24px; +} +#content tr.odd td { + background: #f2f7fc; +} +.hentry { + margin: 0 0 48px 0; +} +.home .sticky { + background: #f2f7fc; + border-top: 4px solid #000; + margin-left: -20px; + margin-right: -20px; + padding: 18px 20px; +} +.single .hentry { + margin: 0 0 36px 0; +} +.page-title { + color: #000; + font-size: 14px; + font-weight: bold; + margin: 0 0 36px 0; +} +.page-title span { + color: #333; + font-size: 16px; + font-style: italic; + font-weight: normal; +} +.page-title a:link, +.page-title a:visited { + color: #777; + text-decoration: none; +} +.page-title a:active, +.page-title a:hover { + color: #ff4b33; +} +#content .entry-title { + color: #000; + font-size: 21px; + font-weight: bold; + line-height: 1.3em; + margin-bottom: 0; +} +.entry-title a:link, +.entry-title a:visited { + color: #000; + text-decoration: none; +} +.entry-title a:active, +.entry-title a:hover { + color: #ff4b33; +} +.entry-meta { + color: #777; + font-size: 12px; +} +.entry-meta abbr, +.entry-utility abbr { + border: none; +} +.entry-meta abbr:hover, +.entry-utility abbr:hover { + border-bottom: 1px dotted #666; +} +.entry-content, +.entry-summary { + clear: both; + padding: 12px 0 0 0; +} +.entry-content .more-link { + white-space: nowrap; +} +#content .entry-summary p:last-child { + margin-bottom: 12px; +} +.entry-content fieldset { + border: 1px solid #e7e7e7; + margin: 0 0 24px 0; + padding: 24px; +} +.entry-content fieldset legend { + background: #fff; + color: #000; + font-weight: bold; + padding: 0 24px; +} +.entry-content input { + margin: 0 0 24px 0; +} +.entry-content input.file, +.entry-content input.button { + margin-right: 24px; +} +.entry-content label { + color: #777; + font-size: 12px; +} +.entry-content select { + margin: 0 0 24px 0; +} +.entry-content sup, +.entry-content sub { + font-size: 10px; +} +.entry-content blockquote.left { + float: left; + margin-left: 0; + margin-right: 24px; + text-align: right; + width: 33%; +} +.entry-content blockquote.right { + float: right; + margin-left: 24px; + margin-right: 0; + text-align: left; + width: 33%; +} +.page-link { + clear: both; + color: #000; + font-weight: bold; + line-height: 48px; + word-spacing: 0.5em; +} +.page-link a:link, +.page-link a:visited { + background: #f1f1f1; + color: #333; + font-weight: normal; + padding: 0.5em 0.75em; + text-decoration: none; +} +.home .sticky .page-link a { + background: #d9e8f7; +} +.page-link a:active, +.page-link a:hover { + color: #ff4b33; +} +body.page .edit-link { + clear: both; + display: block; +} +#entry-author-info { + background: #f2f7fc; + border-top: 4px solid #000; + clear: both; + font-size: 14px; + line-height: 20px; + margin: 24px 0; + overflow: hidden; + padding: 18px 20px; +} +#entry-author-info #author-avatar { + background: #fff; + border: 1px solid #e7e7e7; + float: left; + height: 60px; + margin: 0 -104px 0 0; + padding: 11px; +} +#entry-author-info #author-description { + float: left; + margin: 0 0 0 104px; +} +#entry-author-info h2 { + color: #000; + font-size: 100%; + font-weight: bold; + margin-bottom: 0; +} +.entry-utility { + clear: both; + color: #777; + font-size: 12px; + line-height: 18px; +} +.entry-meta a, +.entry-utility a { + color: #777; +} +.entry-meta a:hover, +.entry-utility a:hover { + color: #ff4b33; +} +#content .video-player { + padding: 0; +} +.format-standard .wp-video, +.format-standard .wp-audio-shortcode, +.format-audio .wp-audio-shortcode, +.format-standard .video-player { + margin-bottom: 24px; +} + +/* =Asides +-------------------------------------------------------------- */ + +.home #content .format-aside p, +.home #content .category-asides p { + font-size: 14px; + line-height: 20px; + margin-bottom: 10px; + margin-top: 0; +} +.home .hentry.format-aside, +.home .hentry.category-asides { + padding: 0; +} +.home #content .format-aside .entry-content, +.home #content .category-asides .entry-content { + padding-top: 0; +} + + +/* =Gallery listing +-------------------------------------------------------------- */ + +.format-gallery .size-thumbnail img, +.category-gallery .size-thumbnail img { + border: 10px solid #f1f1f1; + margin-bottom: 0; +} +.format-gallery .gallery-thumb, +.category-gallery .gallery-thumb { + float: left; + margin-right: 20px; + margin-top: -4px; +} +.home #content .format-gallery .entry-utility, +.home #content .category-gallery .entry-utility { + padding-top: 4px; +} + + +/* =Attachment pages +-------------------------------------------------------------- */ + +.attachment .entry-content .entry-caption { + font-size: 140%; + margin-top: 24px; +} +.attachment .entry-content .nav-previous a:before { + content: '\2190\00a0'; +} +.attachment .entry-content .nav-next a:after { + content: '\00a0\2192'; +} + + +/* =Images +-------------------------------------------------------------- */ + +/* +Resize images to fit the main content area. +- Applies only to images uploaded via WordPress by targeting size-* classes. +- Other images will be left alone. Use "size-auto" class to apply to other images. +*/ +img.size-auto, +img.size-full, +img.size-large, +img.size-medium, +.attachment img, +.widget-container img { + max-width: 100%; /* When images are too wide for containing element, force them to fit. */ + height: auto; /* Override height to match resized width for correct aspect ratio. */ +} +.alignleft, +img.alignleft { + display: inline; + float: left; + margin-right: 24px; + margin-top: 4px; +} +.alignright, +img.alignright { + display: inline; + float: right; + margin-left: 24px; + margin-top: 4px; +} +.aligncenter, +img.aligncenter { + clear: both; + display: block; + margin-left: auto; + margin-right: auto; +} +img.alignleft, +img.alignright, +img.aligncenter { + margin-bottom: 12px; +} +.wp-caption { + background: #f1f1f1; + line-height: 18px; + margin-bottom: 20px; + max-width: 632px !important; /* prevent too-wide images from breaking layout */ + padding: 4px; + text-align: center; +} +.wp-caption img { + margin: 5px 5px 0; + max-width: 622px; /* caption width - 10px */ +} +.wp-caption p.wp-caption-text { + color: #777; + font-size: 12px; + margin: 5px; +} +.wp-smiley { + margin: 0; +} +.gallery { + margin: 0 auto 18px; +} +.gallery .gallery-item { + float: left; + margin-top: 0; + text-align: center; + width: 33%; +} +.gallery-columns-2 .gallery-item { + width: 50%; +} +.gallery-columns-4 .gallery-item { + width: 25%; +} +.gallery img { + border: 2px solid #cfcfcf; +} +.gallery-columns-2 .attachment-medium { + max-width: 92%; + height: auto; +} +.gallery-columns-4 .attachment-thumbnail { + max-width: 84%; + height: auto; +} +.gallery .gallery-caption { + color: #777; + font-size: 12px; + margin: 0 0 12px; +} +.gallery dl { + margin: 0; +} +.gallery img { + border: 10px solid #f1f1f1; +} +.gallery br+br { + display: none; +} +#content .attachment img {/* single attachment images should be centered */ + display: block; + margin: 0 auto; +} + + +/* =Navigation +-------------------------------------------------------------- */ + +.navigation { + color: #777; + font-size: 12px; + line-height: 18px; + overflow: hidden; +} +.navigation a:link, +.navigation a:visited { + color: #777; + text-decoration: none; +} +.navigation a:active, +.navigation a:hover { + color: #ff4b33; +} +.nav-previous { + float: left; + width: 50%; +} +.nav-next { + float: right; + text-align: right; + width: 50%; +} +#nav-above { + margin: 0 0 18px 0; +} +#nav-above { + display: none; +} +.paged #nav-above, +.single #nav-above { + display: block; +} +#nav-below { + margin: -18px 0 0 0; +} + + +/* =Comments +-------------------------------------------------------------- */ +#comments { + clear: both; +} +#comments .navigation { + padding: 0 0 18px 0; +} +h3#comments-title, +h3#reply-title { + color: #000; + font-size: 20px; + font-weight: bold; + margin-bottom: 0; +} +h3#comments-title { + padding: 24px 0; +} +.commentlist { + list-style: none; + margin: 0; +} +.commentlist li.comment { + border-bottom: 1px solid #e7e7e7; + line-height: 24px; + margin: 0 0 24px 0; + padding: 0 0 0 56px; + position: relative; +} +.commentlist li:last-child { + border-bottom: none; + margin-bottom: 0; +} +#comments .comment-body ul, +#comments .comment-body ol { + margin-bottom: 18px; +} +#comments .comment-body p:last-child { + margin-bottom: 6px; +} +#comments .comment-body blockquote p:last-child { + margin-bottom: 24px; +} +.commentlist ol { + list-style: decimal; +} +.commentlist .avatar { + position: absolute; + top: 4px; + left: 0; +} +.comment-author { +} +.comment-author cite { + color: #000; + font-style: normal; + font-weight: bold; +} +.comment-author .says { + font-style: italic; +} +.comment-meta { + font-size: 12px; + margin: 0 0 18px 0; +} +.comment-meta a:link, +.comment-meta a:visited { + color: #777; + text-decoration: none; +} +.comment-meta a:active, +.comment-meta a:hover { + color: #ff4b33; +} +.commentlist .even { +} +.commentlist .bypostauthor { +} +.reply { + font-size: 12px; + padding: 0 0 24px 0; +} +.reply a, +a.comment-edit-link { + color: #777; +} +.reply a:hover, +a.comment-edit-link:hover { + color: #ff4b33; +} +.commentlist .children { + list-style: none; + margin: 0; +} +.commentlist .children li { + border: none; + margin: 0; +} +.nopassword, +.nocomments { + display: none; +} +#comments .pingback { + border-bottom: 1px solid #e7e7e7; + margin-bottom: 18px; + padding-bottom: 18px; +} +.commentlist li.comment+li.pingback { + margin-top: -6px; +} +#comments .pingback p { + color: #777; + display: block; + font-size: 12px; + line-height: 18px; + margin: 0; +} +#comments .pingback .url { + font-size: 13px; + font-style: italic; +} + +/* Comments form */ +input[type="submit"] { + color: #333; +} +#respond { + border-top: 1px solid #e7e7e7; + margin: 24px 0; + overflow: hidden; + position: relative; +} +#respond p { + margin: 0; +} +#respond .comment-notes { + margin-bottom: 1em; +} +.form-allowed-tags { + line-height: 1em; +} +.children #respond { + margin: 0 48px 0 0; +} +h3#reply-title { + margin: 18px 0; +} +#comments-list #respond { + margin: 0 0 18px 0; +} +#comments-list ul #respond { + margin: 0; +} +#cancel-comment-reply-link { + font-size: 12px; + font-weight: normal; + line-height: 18px; +} +#respond .required { + color: #ff4b33; + font-weight: bold; +} +#respond label { + color: #777; + font-size: 12px; +} +#respond input { + margin: 0 0 9px; + width: 98%; +} +#respond textarea { + width: 98%; +} +#respond .form-allowed-tags { + color: #777; + font-size: 12px; + line-height: 18px; +} +#respond .form-allowed-tags code { + font-size: 11px; +} +#respond .form-submit { + margin: 12px 0; +} +#respond .form-submit input { + font-size: 14px; + width: auto; +} + + +/* =Widget Areas +-------------------------------------------------------------- */ + +.widget-area ul { + list-style: none; + margin-left: 0; +} +.widget-area ul ul { + list-style: square; + margin-left: 1.3em; +} +.widget-area select { + max-width: 100%; +} +.widget_search #s {/* This keeps the search inputs in line */ + width: 60%; +} +.widget_search label { + display: none; +} +.widget-container { + word-wrap: break-word; + -webkit-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; + margin: 0 0 18px 0; +} +.widget-container .wp-caption img { + margin: auto; +} +.widget-title { + color: #222; + font-weight: bold; +} +.widget-area a:link, +.widget-area a:visited { + text-decoration: none; +} +.widget-area a:active, +.widget-area a:hover { + text-decoration: underline; +} +.widget-area .entry-meta { + font-size: 11px; +} +#wp_tag_cloud div { + line-height: 1.6em; +} +#wp-calendar { + width: 100%; +} +#wp-calendar caption { + color: #222; + font-size: 14px; + font-weight: bold; + padding-bottom: 4px; + text-align: left; +} +#wp-calendar thead { + font-size: 11px; +} +#wp-calendar thead th { +} +#wp-calendar tbody { + color: #aaa; +} +#wp-calendar tbody td { + background: #f5f5f5; + border: 1px solid #fff; + padding: 3px 0 2px; + text-align: center; +} +#wp-calendar tbody .pad { + background: none; +} +#wp-calendar tfoot #next { + text-align: right; +} +.widget_rss a.rsswidget { + color: #000; +} +.widget_rss a.rsswidget:hover { + color: #ff4b33; +} +.widget_rss .widget-title img { + width: 11px; + height: 11px; +} + +/* Main sidebars */ +#main .widget-area ul { + margin-left: 0; + padding: 0 20px 0 0; +} +#main .widget-area ul ul { + border: none; + margin-left: 1.3em; + padding: 0; +} +#primary { +} +#secondary { +} + +/* Footer widget areas */ +#footer-widget-area { +} + + +/* =Footer +-------------------------------------------------------------- */ + +#footer { + margin-bottom: 20px; +} +#colophon { + border-top: 4px solid #000; + margin-top: -4px; + overflow: hidden; + padding: 18px 0; +} +#site-info { + font-weight: bold; +} +#site-info a { + color: #000; + text-decoration: none; +} +#site-generator { + font-style: italic; + position: relative; +} +#site-generator a { + background: url(images/wordpress.png) center left no-repeat; + color: #666; + display: inline-block; + line-height: 16px; + padding-left: 20px; + text-decoration: none; +} +#site-generator a:hover { + text-decoration: underline; +} +img#wpstats { + display: block; + margin: 0 auto 10px; +} + + +/* =Mobile Safari ( iPad, iPhone and iPod Touch ) +-------------------------------------------------------------- */ + +pre { + -webkit-text-size-adjust: 140%; +} +code { + -webkit-text-size-adjust: 160%; +} +#access, +.entry-meta, +.entry-utility, +.navigation, +.widget-area { + -webkit-text-size-adjust: 120%; +} +#site-description { + -webkit-text-size-adjust: none; +} + + +/* =Print Style +-------------------------------------------------------------- */ + +@media print { + body { + background: none !important; + } + #wrapper { + clear: both !important; + display: block !important; + float: none !important; + position: relative !important; + } + #header { + border-bottom: 2pt solid #000; + padding-bottom: 18pt; + } + #colophon { + border-top: 2pt solid #000; + } + #site-title, + #site-description { + float: none; + line-height: 1.4em; + margin: 0; + padding: 0; + } + #site-title { + font-size: 13pt; + } + .entry-content { + font-size: 14pt; + line-height: 1.6em; + } + .entry-title { + font-size: 21pt; + } + #access, + #branding img, + #respond, + .comment-edit-link, + .edit-link, + .navigation, + .page-link, + .widget-area { + display: none !important; + } + #container, + #header, + #footer { + margin: 0; + width: 100%; + } + #content, + .one-column #content { + margin: 24pt 0 0; + width: 100%; + } + .wp-caption p { + font-size: 11pt; + } + #site-info, + #site-generator { + float: none; + width: auto; + } + #colophon { + width: auto; + } + img#wpstats { + display: none; + } + #site-generator a { + margin: 0; + padding: 0; + } + #entry-author-info { + border: 1px solid #e7e7e7; + } + #main { + display: inline; + } + .home .sticky { + border: none; + } +} diff --git a/wp-content/themes/twentyten/tag.php b/wp-content/themes/twentyten/tag.php new file mode 100644 index 0000000000..01ae6cd36c --- /dev/null +++ b/wp-content/themes/twentyten/tag.php @@ -0,0 +1,31 @@ + + +
      +
      + +

      ' . single_tag_title( '', false ) . '' ); + ?>

      + + +
      +
      + + + diff --git a/wp-content/themes/twentythirteen/404.php b/wp-content/themes/twentythirteen/404.php new file mode 100644 index 0000000000..eebc34b706 --- /dev/null +++ b/wp-content/themes/twentythirteen/404.php @@ -0,0 +1,31 @@ + + +
      +
      + + + +
      +
      +

      +

      + + +
      +
      + +
      +
      + + \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/archive.php b/wp-content/themes/twentythirteen/archive.php new file mode 100644 index 0000000000..445db7e641 --- /dev/null +++ b/wp-content/themes/twentythirteen/archive.php @@ -0,0 +1,55 @@ + + +
      +
      + + +
      +

      +
      + + + + + + + + + + + + +
      +
      + + + diff --git a/wp-content/themes/twentythirteen/author-bio.php b/wp-content/themes/twentythirteen/author-bio.php new file mode 100644 index 0000000000..ae2f522b3b --- /dev/null +++ b/wp-content/themes/twentythirteen/author-bio.php @@ -0,0 +1,34 @@ + + +
      \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/author.php b/wp-content/themes/twentythirteen/author.php new file mode 100644 index 0000000000..c7b5d87ada --- /dev/null +++ b/wp-content/themes/twentythirteen/author.php @@ -0,0 +1,62 @@ + + +
      +
      + + + + + +
      +

      ' . get_the_author() . '' ); ?>

      +
      + + + + + + + + + + + + + + + + + + +
      +
      + + + diff --git a/wp-content/themes/twentythirteen/category.php b/wp-content/themes/twentythirteen/category.php new file mode 100644 index 0000000000..f82e0abccb --- /dev/null +++ b/wp-content/themes/twentythirteen/category.php @@ -0,0 +1,41 @@ + + +
      +
      + + +
      +

      + + +
      + +
      + + + + + + + + + + + + +
      +
      + + + diff --git a/wp-content/themes/twentythirteen/comments.php b/wp-content/themes/twentythirteen/comments.php new file mode 100644 index 0000000000..3d1aff46bd --- /dev/null +++ b/wp-content/themes/twentythirteen/comments.php @@ -0,0 +1,59 @@ + + +
      + + +

      + ' . get_the_title() . '' ); + ?> +

      + +
        + 'ol', + 'short_ping' => true, + 'avatar_size' => 74, + ) ); + ?> +
      + + 1 && get_option( 'page_comments' ) ) : + ?> + + + + +

      + + + + + + +
      \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/content-aside.php b/wp-content/themes/twentythirteen/content-aside.php new file mode 100644 index 0000000000..fbc01e618d --- /dev/null +++ b/wp-content/themes/twentythirteen/content-aside.php @@ -0,0 +1,38 @@ + + +
      > +
      + →', 'twentythirteen' ), + the_title( '', '', false ) + ) ); + + wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); + ?> +
      + +
      + + + ', '' ); ?> + + + + + + + + ', '' ); ?> + +
      +
      diff --git a/wp-content/themes/twentythirteen/content-audio.php b/wp-content/themes/twentythirteen/content-audio.php new file mode 100644 index 0000000000..73a0d692b5 --- /dev/null +++ b/wp-content/themes/twentythirteen/content-audio.php @@ -0,0 +1,44 @@ + + +
      > +
      + +

      + +

      + +

      + +
      + +
      +
      + →', 'twentythirteen' ), + the_title( '', '', false ) + ) ); + + wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); + ?> +
      +
      + +
      + + ', '' ); ?> + + + + +
      +
      diff --git a/wp-content/themes/twentythirteen/content-chat.php b/wp-content/themes/twentythirteen/content-chat.php new file mode 100644 index 0000000000..6a40b89326 --- /dev/null +++ b/wp-content/themes/twentythirteen/content-chat.php @@ -0,0 +1,38 @@ + + +
      > +
      + +

      + +

      + +

      + +
      + +
      + →', 'twentythirteen' ), + the_title( '', '', false ) + ) ); + + wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); + ?> +
      + +
      + + ', '' ); ?> +
      +
      diff --git a/wp-content/themes/twentythirteen/content-gallery.php b/wp-content/themes/twentythirteen/content-gallery.php new file mode 100644 index 0000000000..a43647f73e --- /dev/null +++ b/wp-content/themes/twentythirteen/content-gallery.php @@ -0,0 +1,52 @@ + + +
      > +
      + +

      + +

      + +

      + +
      + +
      + + →', 'twentythirteen' ), + the_title( '', '', false ) + ) ); + + wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); + ?> + + + +
      + +
      + + + + + ' . __( 'Leave a comment', 'twentythirteen' ) . '', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?> + + + ', '' ); ?> + + + + +
      +
      diff --git a/wp-content/themes/twentythirteen/content-image.php b/wp-content/themes/twentythirteen/content-image.php new file mode 100644 index 0000000000..01e2f34793 --- /dev/null +++ b/wp-content/themes/twentythirteen/content-image.php @@ -0,0 +1,48 @@ + + +
      > +
      + +

      + +

      + +

      + +
      + +
      + →', 'twentythirteen' ), + the_title( '', '', false ) + ) ); + + wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); + ?> +
      + +
      + + + + + ' . __( 'Leave a comment', 'twentythirteen' ) . '', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?> + + + ', '' ); ?> + + + + +
      +
      diff --git a/wp-content/themes/twentythirteen/content-link.php b/wp-content/themes/twentythirteen/content-link.php new file mode 100644 index 0000000000..cc02d8240b --- /dev/null +++ b/wp-content/themes/twentythirteen/content-link.php @@ -0,0 +1,43 @@ + + +
      > +
      +

      + +

      + + +
      + +
      + →', 'twentythirteen' ), + the_title( '', '', false ) + ) ); + + wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); + ?> +
      + + +
      + + + + +
      + +
      diff --git a/wp-content/themes/twentythirteen/content-none.php b/wp-content/themes/twentythirteen/content-none.php new file mode 100644 index 0000000000..d9549e1a89 --- /dev/null +++ b/wp-content/themes/twentythirteen/content-none.php @@ -0,0 +1,31 @@ + + + + +
      + + +

      Get started here.', 'twentythirteen' ), admin_url( 'post-new.php' ) ); ?>

      + + + +

      + + + + +

      + + + +
      diff --git a/wp-content/themes/twentythirteen/content-quote.php b/wp-content/themes/twentythirteen/content-quote.php new file mode 100644 index 0000000000..ac4de67293 --- /dev/null +++ b/wp-content/themes/twentythirteen/content-quote.php @@ -0,0 +1,34 @@ + + +
      > +
      + →', 'twentythirteen' ), + the_title( '', '', false ) + ) ); + + wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); + ?> +
      + +
      + + + + + ' . __( 'Leave a comment', 'twentythirteen' ) . '', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?> + + + ', '' ); ?> +
      +
      diff --git a/wp-content/themes/twentythirteen/content-status.php b/wp-content/themes/twentythirteen/content-status.php new file mode 100644 index 0000000000..e0e51f30ea --- /dev/null +++ b/wp-content/themes/twentythirteen/content-status.php @@ -0,0 +1,32 @@ + + +
      > +
      + →', 'twentythirteen' ), + the_title( '', '', false ) + ) ); + + wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); + ?> +
      + +
      + + ', '' ); ?> + + + + +
      +
      diff --git a/wp-content/themes/twentythirteen/content-video.php b/wp-content/themes/twentythirteen/content-video.php new file mode 100644 index 0000000000..8118a080fc --- /dev/null +++ b/wp-content/themes/twentythirteen/content-video.php @@ -0,0 +1,48 @@ + + +
      > +
      + +

      + +

      + +

      + +
      + +
      + →', 'twentythirteen' ), + the_title( '', '', false ) + ) ); + + wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); + ?> +
      + +
      + + + + + ' . __( 'Leave a comment', 'twentythirteen' ) . '', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?> + + + ', '' ); ?> + + + + +
      +
      diff --git a/wp-content/themes/twentythirteen/content.php b/wp-content/themes/twentythirteen/content.php new file mode 100644 index 0000000000..98b6c31955 --- /dev/null +++ b/wp-content/themes/twentythirteen/content.php @@ -0,0 +1,64 @@ + + +
      > +
      + +
      + +
      + + + +

      + +

      + +

      + + + +
      + + +
      + +
      + +
      + →', 'twentythirteen' ), + the_title( '', '', false ) + ) ); + + wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); + ?> +
      + + +
      + + + + + + + +
      +
      diff --git a/wp-content/themes/twentythirteen/css/editor-style.css b/wp-content/themes/twentythirteen/css/editor-style.css new file mode 100644 index 0000000000..568418992b --- /dev/null +++ b/wp-content/themes/twentythirteen/css/editor-style.css @@ -0,0 +1,771 @@ +/* +Theme Name: Twenty Thirteen +Description: Used to style the TinyMCE editor. +*/ + + +/** + * Table of Contents: + * + * 1.0 - Body + * 2.0 - Headings + * 3.0 - Text Elements + * 4.0 - Links + * 5.0 - Alignment + * 6.0 - Tables + * 7.0 - Images + * 8.0 - Galleries + * 9.0 - Audio/Video + * 10.0 - Post Formats + * 11.0 - RTL + * ---------------------------------------------------------------------------- + */ + + +/** + * 1.0 Body + * ---------------------------------------------------------------------------- + */ + +html .mceContentBody { + font-size: 100%; + max-width: 604px; +} + +body { + color: #141412; + font-family: "Source Sans Pro", Helvetica, sans-serif; + line-height: 1.5; + text-rendering: optimizeLegibility; + vertical-align: baseline; +} + + +/** + * 2.0 Headings + * ---------------------------------------------------------------------------- + */ + +h1, +h2, +h3, +h4, +h5, +h6 { + clear: both; + font-family: Bitter, Georgia, serif; + line-height: 1.3; +} + +h1 { + font-size: 48px; + margin: 33px 0; +} + +h2 { + font-size: 30px; + margin: 25px 0; +} + +h3 { + font-size: 22px; + margin: 22px 0; +} + +h4 { + font-size: 20px; + margin: 25px 0; +} + +h5 { + font-size: 18px; + margin: 30px 0; +} + +h6 { + font-size: 16px; + margin: 36px 0; +} + +hr { + background: url(../images/dotted-line.png) repeat center top; + background-size: 4px 4px; + border: 0; + height: 1px; + margin: 0 0 24px; +} + + +/** + * 3.0 Text Elements + * ---------------------------------------------------------------------------- + */ + +p { + margin: 0 0 24px; +} + +ol, +ul { + margin: 16px 0; + padding: 0 0 0 40px; +} + +ul { + list-style-type: square; +} + +ol { + list-style: decimal outside; +} + +li > ul, +li > ol { + margin: 0; +} + +dl { + margin: 0 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin: 0 0 20px; +} + +strong { + font-weight: bold; +} + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 14px; +} + +pre { + background: #f5f5f5; + color: #666; + font-family: monospace; + font-size: 14px; + margin: 20px 0; + overflow: auto; + padding: 20px; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +blockquote, +q { + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ""; + content: none; +} + +blockquote { + font-size: 24px; + font-style: italic; + font-weight: 300; + margin: 24px 40px; +} + +blockquote blockquote { + margin-right: 0; +} + +blockquote cite, +blockquote small { + font-size: 14px; + font-weight: normal; + text-transform: uppercase; +} + +cite { + border-bottom: 0; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +address { + font-style: italic; + margin: 0 0 24px; +} + +del { + color: #333; +} + +ins { + background: #fff9c0; + border: none; + color: #333; + text-decoration: none; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + + +/** + * 4.0 Links + * ---------------------------------------------------------------------------- + */ + +a { + color: #ca3c08; + text-decoration: none; +} + +a:visited { + color: #ac0404; +} + +a:focus { + outline: thin dotted; +} + +a:active, +a:hover { + color: #ea9629; + outline: 0; +} + +a:hover { + text-decoration: underline; +} + + +/** + * 5.0 Alignment + * ---------------------------------------------------------------------------- + */ + +.alignleft { + float: left; + margin: 5px 20px 5px 0; +} + +.alignright { + float: right; + margin: 5px 0 5px 20px; +} + +.aligncenter { + display: block; + margin: 5px auto; +} + +img.alignnone { + margin: 5px 0; +} + + +/** + * 6.0 Tables + * ---------------------------------------------------------------------------- + */ + +table { + border-bottom: 1px solid #ededed; + border-collapse: collapse; + border-spacing: 0; + font-size: 14px; + line-height: 2; + margin: 0 0 20px; + width: 100%; +} + +caption, +th, +td { + font-weight: normal; + text-align: left; +} + +caption { + font-size: 16px; + margin: 20px 0; +} + +th { + font-weight: bold; + text-transform: uppercase; +} + +td { + border-top: 1px solid #ededed; + padding: 6px 10px 6px 0; +} + + +/** + * 7.0 Images + * ---------------------------------------------------------------------------- + */ + +img { + height: auto; + max-width: 100%; + vertical-align: middle; +} + +.wp-caption { + background: transparent; + border: none; + margin: 0; + padding: 0; + text-align: left; +} + +.html5-captions .wp-caption { + padding: 0; +} + +.wp-caption.alignleft { + margin: 5px 10px 5px 0; +} + +.html5-captions .wp-caption.alignleft { + margin-right: 20px; +} + +.wp-caption.alignright { + margin: 5px 0 5px 10px; +} + +.wp-caption.alignright img, +.wp-caption.alignright .wp-caption-dd { + padding-left: 10px; +} + +.html5-captions .wp-caption.alignright { + margin-left: 20px; +} + +.html5-captions .wp-caption.alignright img, +.html5-captions .wp-caption.alignright .wp-caption-dd { + padding: 0; +} + +.wp-caption-dt { + margin: 0; +} + +.wp-caption .wp-caption-text, +.wp-caption-dd { + color: #220e10; + font-size: 18px; + font-style: italic; + font-weight: 300; + line-height: 1.5; + margin-bottom: 24px; + padding: 0; +} + +.mceTemp + ul, +.mceTemp + ol { + list-style-position: inside; +} + + +/** + * 8.0 Galleries + * ---------------------------------------------------------------------------- + */ + +.gallery .gallery-item { + float: left; + margin: 0 4px 4px 0; + overflow: hidden; + padding: 0; + position: relative; +} + +.gallery-columns-1 .gallery-item { + max-width: 100%; + width: auto; +} + +.gallery-columns-2 .gallery-item { + max-width: 48%; + max-width: -webkit-calc(50% - 14px); + max-width: calc(50% - 14px); + width: auto; +} + +.gallery-columns-3 .gallery-item { + max-width: 32%; + max-width: -webkit-calc(33.3% - 11px); + max-width: calc(33.3% - 11px); + width: auto; +} + +.gallery-columns-4 .gallery-item { + max-width: 23%; + max-width: -webkit-calc(25% - 9px); + max-width: calc(25% - 9px); + width: auto; +} + +.gallery-columns-5 .gallery-item { + max-width: 19%; + max-width: -webkit-calc(20% - 8px); + max-width: calc(20% - 8px); + width: auto; +} + +.gallery-columns-6 .gallery-item { + max-width: 15%; + max-width: -webkit-calc(16.7% - 7px); + max-width: calc(16.7% - 7px); + width: auto; +} + +.gallery-columns-7 .gallery-item { + max-width: 13%; + max-width: -webkit-calc(14.28% - 7px); + max-width: calc(14.28% - 7px); + width: auto; +} + +.gallery-columns-8 .gallery-item { + max-width: 11%; + max-width: -webkit-calc(12.5% - 6px); + max-width: calc(12.5% - 6px); + width: auto; +} + +.gallery-columns-9 .gallery-item { + max-width: 9%; + max-width: -webkit-calc(11.1% - 6px); + max-width: calc(11.1% - 6px); + width: auto; +} + +.gallery-columns-1 .gallery-item:nth-of-type(1n), +.gallery-columns-2 .gallery-item:nth-of-type(2n), +.gallery-columns-3 .gallery-item:nth-of-type(3n), +.gallery-columns-4 .gallery-item:nth-of-type(4n), +.gallery-columns-5 .gallery-item:nth-of-type(5n), +.gallery-columns-6 .gallery-item:nth-of-type(6n), +.gallery-columns-7 .gallery-item:nth-of-type(7n), +.gallery-columns-8 .gallery-item:nth-of-type(8n), +.gallery-columns-9 .gallery-item:nth-of-type(9n) { + margin-right: 0; +} + +.gallery-columns-1 .gallery-item:nth-of-type(1n), +.gallery-columns-2 .gallery-item:nth-of-type(2n - 1), +.gallery-columns-3 .gallery-item:nth-of-type(3n - 2), +.gallery-columns-4 .gallery-item:nth-of-type(4n - 3), +.gallery-columns-5 .gallery-item:nth-of-type(5n - 4), +.gallery-columns-6 .gallery-item:nth-of-type(6n - 5), +.gallery-columns-7 .gallery-item:nth-of-type(7n - 6), +.gallery-columns-8 .gallery-item:nth-of-type(8n - 7), +.gallery-columns-9 .gallery-item:nth-of-type(9n - 8) { + margin-left: 12px; /* Compensate for the default negative margin on .gallery, which can't be changed. */ +} + +.gallery .gallery-caption { + background-color: rgba(0, 0, 0, 0.7); + box-sizing: border-box; + color: #fff; + font-size: 14px; + line-height: 1.3; + margin: 0; + max-height: 50%; + opacity: 0; + padding: 2px 8px; + position: absolute; + bottom: 0; + left: 0; + text-align: left; + -webkit-transition: opacity 400ms ease; + transition: opacity 400ms ease; + width: 100%; +} + +.gallery .gallery-caption:before { + box-shadow: 0 -10px 15px #000 inset; + content: ""; + height: 100%; + min-height: 49px; + position: absolute; + left: 0; + top: 0; + width: 100%; +} + +.gallery-item:hover .gallery-caption { + opacity: 1; +} + +.gallery-columns-7 .gallery-caption, +.gallery-columns-8 .gallery-caption, +.gallery-columns-9 .gallery-caption { + display: none; +} + + +/** + * 9.0 Audio/Video + * ---------------------------------------------------------------------------- + */ +.mejs-mediaelement, +.mejs-container .mejs-controls { + background: #220e10; +} + +.mejs-controls .mejs-time-rail .mejs-time-loaded, +.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { + background: #fff; +} + +.mejs-controls .mejs-time-rail .mejs-time-current { + background: #ea9629; +} + +.mejs-controls .mejs-time-rail .mejs-time-total, +.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total { + background: #595959; +} + +.mejs-controls .mejs-time-rail span, +.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total, +.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { + border-radius: 0; +} + + +/** + * 10.0 Post Formats + * ---------------------------------------------------------------------------- + */ + +/* Aside */ +.post-format-aside { + background-color: #f7f5e7; +} + +.post-format-aside blockquote { + font-size: 100%; + font-weight: normal; +} + +.post-format-aside cite { + font-size: 100%; + text-transform: none; +} + +.post-format-aside cite:before { + content: "\2014"; + margin-right: 5px; +} + +/* Audio */ +.post-format-audio { + background-color: #db572f; +} + +.post-format-audio a { + color: #fbfaf3; +} + +.post-format-audio:before { + background: url(../images/dotted-line.png) repeat-y 85px 0; + background-size: 4px 4px; + content: "\f109"; + display: block; + float: left; + font-family: Genericons; + font-size: 64px; + -webkit-font-smoothing: antialiased; + height: 100%; + line-height: 1; + width: 120px; +} + +/* Chat */ +.post-format-chat { + background-color: #eadaa6; +} + +.post-format-chat a { + color: #722d19; +} + +/* Gallery */ +.post-format-gallery { + background-color: #fbca3c; +} + +.post-format-gallery a { + color: #722d19; +} + +/* Image: same as Standard/Defaults */ + +/* Link */ +.post-format-link { + background-color: #f7f5e7; +} + +/* Quote */ +.post-format-quote { + background-color: #210d10; + color: #f7f5e7; +} + +.post-format-quote a { + color: #e63f2a; +} + +.post-format-quote blockquote { + font-size: 28px; + font-style: italic; + font-weight: 300; + margin: 0; + padding-left: 75px; + position: relative; +} + +.post-format-quote blockquote:before { + content: '\201C'; + font-size: 140px; + font-weight: 400; + line-height: .8; + padding-right: 25px; + position: absolute; + left: -15px; + top: -3px; +} + +.post-format-quote blockquote small, +.post-format-quote blockquote cite { + display: block; + font-size: 16px; +} + +.format-quote .entry-content cite a { + border-bottom: 1px dotted #fff; + color: #fff; +} + +.format-quote .entry-content cite a:hover { + text-decoration: none; +} + + +/* Status */ +.post-format-status { + background-color: #722d19; + color: #f7f5e7; + font-style: italic; + font-weight: 300; + padding: 0; + padding-left: 35px; +} + +.post-format-status.mceContentBody { + font-size: 24px; +} + +.post-format-status:before { + background: url(../images/dotted-line.png) repeat-y left bottom; + background-size: 4px 4px; + content: ""; + display: block; + float: left; + height: 100%; + position: relative; + left: -30px; + width: 1px; +} + +.post-format-status > p:first-child:before { + background-color: rgba(0, 0, 0, 0.65); + content: ""; + height: 3px; + width: 13px; + margin-top: 13px; + position: absolute; + left: 9px; +} + +.post-format-status a { + color: #eadaa6; +} + +/* Video */ +.post-format-video { + background-color: #db572f; +} + +.post-format-video a { + color: #fbfaf3; +} + + +/** + * 11.0 RTL + * ---------------------------------------------------------------------------- + */ + +html .mceContentBody.rtl { + direction: rtl; + unicode-bidi: embed; +} + +.rtl ol, +.rtl ul { + padding: 0 40px 0 0; +} + +.rtl .wp-caption, +.rtl tr th { + text-align: right; +} + +.rtl td { + padding: 6px 0 6px 10px; + text-align: right; +} + +.rtl blockquote blockquote { + margin-left: 0; + margin-right: 24px; +} + +.rtl.post-format-audio:before, +.rtl.post-format-status:before, +.rtl.post-format-status > p:first-child:before { + background: none; + content: none; +} diff --git a/wp-content/themes/twentythirteen/css/ie.css b/wp-content/themes/twentythirteen/css/ie.css new file mode 100644 index 0000000000..da48acd3ca --- /dev/null +++ b/wp-content/themes/twentythirteen/css/ie.css @@ -0,0 +1,288 @@ +/* +Styles for older IE versions (previous to IE9). +*/ + + + +.genericon:before:hover, +.menu-toggle:after:hover, +.date a:before:hover, +.entry-meta .author a:before:hover, +.format-audio .entry-content:before:hover, +.comments-link a:before:hover, +.tags-links a:first-child:before:hover, +.categories-links a:first-child:before:hover, +.edit-link > a:before:hover, +.attachment-meta:before:hover, +.attachment-meta a:before:hover, +.comment-awaiting-moderation:before:hover, +.comment-reply-link:before:hover, +.comment-reply-title small a:before:hover, +.bypostauthor > .comment-body .fn:before:hover { + text-decoration: none; +} + +.nav-menu .sub-menu ul, +.nav-menu .children ul { + left: 100%; +} + +.site-header .home-link { + max-width: 1040px; +} + +.site-header .search-form [type="search"], +.site-header .search-form [type="text"] { + padding-top: 6px; +} + +img.alignright { + margin-right: 0; +} + +img.alignleft { + margin-left: 0; +} + +.site-main .sidebar-inner { + width: 1040px; +} + +.site-main .widget-area { + margin-right: 60px; +} + +.format-image .entry-content .size-full { + margin: 0; + max-width: 604px; +} + +.gallery-columns-1 .gallery-item, +.gallery-columns-2 .gallery-item, +.gallery-columns-3 .gallery-item { + max-width: none; +} + +.gallery img { + width: auto; +} + +.gallery-caption { + background: #000; + filter: alpha(opacity=0); +} + +.gallery-item:hover .gallery-caption { + filter: alpha(opacity=70); +} + +.comment { + clear: both; +} + +.comment-meta, +.comment-content, +.comment-list .reply { + width: 480px; +} + +.depth-2 .comment-meta, +.depth-2 .comment-content, +.comment-list .depth-2 .reply { + width: 460px; +} + +.depth-3 .comment-meta, +.depth-3 .comment-content, +.comment-list .depth-3 .reply { + width: 440px; +} + +.depth-4 .comment-meta, +.depth-4 .comment-content, +.comment-list .depth-4 .reply { + width: 420px; +} + +.depth-5 .comment-meta, +.depth-5 .comment-content, +.comment-list .depth-5 .reply { + width: 400px; +} + +.comment-meta { + margin-bottom: 0; +} + +.widget { + background: #f7f5e7; +} + +.site-footer .widget { + background: none; +} + +/* Internet Explorer 8 */ +.ie8 .site { + border: 0; +} + +.ie8 img.size-full, +.ie8 img.size-large { + height: auto; + width: auto; +} + +.ie8 .sidebar .entry-header, +.ie8 .sidebar .entry-content, +.ie8 .sidebar .entry-summary, +.ie8 .sidebar .entry-meta { + max-width: 724px; +} + +.ie8 .author-info { + margin-left: 0; +} + +.ie8 .paging-navigation .nav-previous .meta-nav { + padding: 5px 0 8px; + width: 40px; +} + +.ie8 .paging-navigation .nav-next { + line-height: 1; +} + +.ie8 .format-status .entry-content:before, +.ie8 .format-status .entry-meta:before { + content: none; +} + +.ie8 .site-main .widget-area { + margin-right: 0; +} + +/* Internet Explorer 7 */ +.ie7 audio, +.ie7 canvas, +.ie7 video { + display: inline; + zoom: 1; +} + +.ie7 legend { + margin-left: -7px; +} + +.ie7 button, +.ie7 input, +.ie7 select, +.ie7 textarea { + vertical-align: middle; +} + +.ie7 button, +.ie7 input[type="button"], +.ie7 input[type="reset"], +.ie7 input[type="submit"] { + overflow: visible; +} + +.ie7 input[type="checkbox"], +.ie7 input[type="radio"] { + height: 13px; + width: 13px; +} + +.ie7 .screen-reader-text { + clip: rect(1px 1px 1px 1px); +} + +.ie7 .site-header { + position: relative; + z-index: 1; +} + +.ie7 .main-navigation { + max-width: 930px; + padding-right: 150px; +} + +.ie7 .nav-menu li a, +.ie7 .nav-menu li { + display: block; + float: left; +} + +.ie7 .nav-menu ul { + top: 40px; +} + +.ie7 .nav-menu .sub-menu, +.ie7 .nav-menu .children { + display: none; + overflow: visible; +} + +.ie7 ul.nav-menu li:hover > ul, +.ie7 .nav-menu ul li:hover > ul { + display: block; +} + +.ie7 .site-header .search-form [type="search"], +.ie7 .site-header .search-form [type="text"] { + background-color: #fff; + border: 2px solid #c3c0ab; + cursor: text; + height: 28px; + outline: 0; + width: 150px; +} + +.ie7 .entry-header, +.ie7 .entry-content, +.ie7 .entry-summary, +.ie7 .entry-meta { + width: 604px; +} + +.ie7 .format-status .entry-content, +.ie7 .format-status .entry-meta { + padding-left: 60px; +} + +.ie7 .sidebar .format-status .entry-content, +.ie7 .sidebar .format-status .entry-meta { + padding-left: 60px; +} + +.ie7 .sidebar .post-navigation .nav-links, +.ie7 .sidebar .paging-navigation .nav-links { + width: 604px; +} + +.ie7 .paging-navigation .meta-nav { + padding: 0 0 10px; + vertical-align: middle; + width: 40px; +} + +.ie7 .comments-title, +.ie7 .comment-list, +.ie7 .comment-reply-title, +.ie7 .comment-respond .comment-form { + width: 604px; +} + +.ie7 .site-footer .widget-area { + max-width: none; + left: auto; +} + +/* RTL for Internet Explorer 7 & 8 */ +.rtl .format-audio .entry-content:before, +.rtl .comment-reply-link:before, +.rtl .comment-reply-login:before { + -ms-filter: "FlipH"; + filter: FlipH; +} diff --git a/wp-content/themes/twentythirteen/footer.php b/wp-content/themes/twentythirteen/footer.php new file mode 100644 index 0000000000..6dc4f94b3b --- /dev/null +++ b/wp-content/themes/twentythirteen/footer.php @@ -0,0 +1,26 @@ + + +

      +
      + + +
      + + +
      +
      +
      + + + + \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/functions.php b/wp-content/themes/twentythirteen/functions.php new file mode 100644 index 0000000000..e87761f223 --- /dev/null +++ b/wp-content/themes/twentythirteen/functions.php @@ -0,0 +1,552 @@ + for posts and comments. + add_theme_support( 'automatic-feed-links' ); + + /* + * Switches default core markup for search form, comment form, + * and comments to output valid HTML5. + */ + add_theme_support( 'html5', array( + 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' + ) ); + + /* + * This theme supports all available post formats by default. + * See https://codex.wordpress.org/Post_Formats + */ + add_theme_support( 'post-formats', array( + 'aside', 'audio', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video' + ) ); + + // This theme uses wp_nav_menu() in one location. + register_nav_menu( 'primary', __( 'Navigation Menu', 'twentythirteen' ) ); + + /* + * This theme uses a custom image size for featured images, displayed on + * "standard" posts and pages. + */ + add_theme_support( 'post-thumbnails' ); + set_post_thumbnail_size( 604, 270, true ); + + // This theme uses its own gallery styles. + add_filter( 'use_default_gallery_style', '__return_false' ); +} +add_action( 'after_setup_theme', 'twentythirteen_setup' ); + +/** + * Return the Google font stylesheet URL, if available. + * + * The use of Source Sans Pro and Bitter by default is localized. For languages + * that use characters not supported by the font, the font can be disabled. + * + * @since Twenty Thirteen 1.0 + * + * @return string Font stylesheet or empty string if disabled. + */ +function twentythirteen_fonts_url() { + $fonts_url = ''; + + /* Translators: If there are characters in your language that are not + * supported by Source Sans Pro, translate this to 'off'. Do not translate + * into your own language. + */ + $source_sans_pro = _x( 'on', 'Source Sans Pro font: on or off', 'twentythirteen' ); + + /* Translators: If there are characters in your language that are not + * supported by Bitter, translate this to 'off'. Do not translate into your + * own language. + */ + $bitter = _x( 'on', 'Bitter font: on or off', 'twentythirteen' ); + + if ( 'off' !== $source_sans_pro || 'off' !== $bitter ) { + $font_families = array(); + + if ( 'off' !== $source_sans_pro ) + $font_families[] = 'Source Sans Pro:300,400,700,300italic,400italic,700italic'; + + if ( 'off' !== $bitter ) + $font_families[] = 'Bitter:400,700'; + + $query_args = array( + 'family' => urlencode( implode( '|', $font_families ) ), + 'subset' => urlencode( 'latin,latin-ext' ), + ); + $fonts_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' ); + } + + return $fonts_url; +} + +/** + * Enqueue scripts and styles for the front end. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_scripts_styles() { + /* + * Adds JavaScript to pages with the comment form to support + * sites with threaded comments (when in use). + */ + if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) + wp_enqueue_script( 'comment-reply' ); + + // Adds Masonry to handle vertical alignment of footer widgets. + if ( is_active_sidebar( 'sidebar-1' ) ) + wp_enqueue_script( 'jquery-masonry' ); + + // Loads JavaScript file with functionality specific to Twenty Thirteen. + wp_enqueue_script( 'twentythirteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20150330', true ); + + // Add Source Sans Pro and Bitter fonts, used in the main stylesheet. + wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null ); + + // Add Genericons font, used in the main stylesheet. + wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.03' ); + + // Loads our main stylesheet. + wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '2013-07-18' ); + + // Loads the Internet Explorer specific stylesheet. + wp_enqueue_style( 'twentythirteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentythirteen-style' ), '2013-07-18' ); + wp_style_add_data( 'twentythirteen-ie', 'conditional', 'lt IE 9' ); +} +add_action( 'wp_enqueue_scripts', 'twentythirteen_scripts_styles' ); + +/** + * Filter the page title. + * + * Creates a nicely formatted and more specific title element text for output + * in head of document, based on current view. + * + * @since Twenty Thirteen 1.0 + * + * @param string $title Default title text for current view. + * @param string $sep Optional separator. + * @return string The filtered title. + */ +function twentythirteen_wp_title( $title, $sep ) { + global $paged, $page; + + if ( is_feed() ) + return $title; + + // Add the site name. + $title .= get_bloginfo( 'name', 'display' ); + + // Add the site description for the home/front page. + $site_description = get_bloginfo( 'description', 'display' ); + if ( $site_description && ( is_home() || is_front_page() ) ) + $title = "$title $sep $site_description"; + + // Add a page number if necessary. + if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) + $title = "$title $sep " . sprintf( __( 'Page %s', 'twentythirteen' ), max( $paged, $page ) ); + + return $title; +} +add_filter( 'wp_title', 'twentythirteen_wp_title', 10, 2 ); + +/** + * Register two widget areas. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_widgets_init() { + register_sidebar( array( + 'name' => __( 'Main Widget Area', 'twentythirteen' ), + 'id' => 'sidebar-1', + 'description' => __( 'Appears in the footer section of the site.', 'twentythirteen' ), + 'before_widget' => '', + 'before_title' => '

      ', + 'after_title' => '

      ', + ) ); + + register_sidebar( array( + 'name' => __( 'Secondary Widget Area', 'twentythirteen' ), + 'id' => 'sidebar-2', + 'description' => __( 'Appears on posts and pages in the sidebar.', 'twentythirteen' ), + 'before_widget' => '', + 'before_title' => '

      ', + 'after_title' => '

      ', + ) ); +} +add_action( 'widgets_init', 'twentythirteen_widgets_init' ); + +if ( ! function_exists( 'twentythirteen_paging_nav' ) ) : +/** + * Display navigation to next/previous set of posts when applicable. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_paging_nav() { + global $wp_query; + + // Don't print empty markup if there's only one page. + if ( $wp_query->max_num_pages < 2 ) + return; + ?> + + post_parent ) : get_adjacent_post( false, '', true ); + $next = get_adjacent_post( false, '', false ); + + if ( ! $next && ! $previous ) + return; + ?> + + ' . esc_html__( 'Sticky', 'twentythirteen' ) . ''; + + if ( ! has_post_format( 'link' ) && 'post' == get_post_type() ) + twentythirteen_entry_date(); + + // Translators: used between list items, there is a space after the comma. + $categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) ); + if ( $categories_list ) { + echo '' . $categories_list . ''; + } + + // Translators: used between list items, there is a space after the comma. + $tag_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) ); + if ( $tag_list ) { + echo '' . $tag_list . ''; + } + + // Post author + if ( 'post' == get_post_type() ) { + printf( '', + esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), + esc_attr( sprintf( __( 'View all posts by %s', 'twentythirteen' ), get_the_author() ) ), + get_the_author() + ); + } +} +endif; + +if ( ! function_exists( 'twentythirteen_entry_date' ) ) : +/** + * Print HTML with date information for current post. + * + * Create your own twentythirteen_entry_date() to override in a child theme. + * + * @since Twenty Thirteen 1.0 + * + * @param boolean $echo (optional) Whether to echo the date. Default true. + * @return string The HTML-formatted post date. + */ +function twentythirteen_entry_date( $echo = true ) { + if ( has_post_format( array( 'chat', 'status' ) ) ) + $format_prefix = _x( '%1$s on %2$s', '1: post format name. 2: date', 'twentythirteen' ); + else + $format_prefix = '%2$s'; + + $date = sprintf( '', + esc_url( get_permalink() ), + esc_attr( sprintf( __( 'Permalink to %s', 'twentythirteen' ), the_title_attribute( 'echo=0' ) ) ), + esc_attr( get_the_date( 'c' ) ), + esc_html( sprintf( $format_prefix, get_post_format_string( get_post_format() ), get_the_date() ) ) + ); + + if ( $echo ) + echo $date; + + return $date; +} +endif; + +if ( ! function_exists( 'twentythirteen_the_attached_image' ) ) : +/** + * Print the attached image with a link to the next attached image. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_the_attached_image() { + /** + * Filter the image attachment size to use. + * + * @since Twenty thirteen 1.0 + * + * @param array $size { + * @type int The attachment height in pixels. + * @type int The attachment width in pixels. + * } + */ + $attachment_size = apply_filters( 'twentythirteen_attachment_size', array( 724, 724 ) ); + $next_attachment_url = wp_get_attachment_url(); + $post = get_post(); + + /* + * Grab the IDs of all the image attachments in a gallery so we can get the URL + * of the next adjacent image in a gallery, or the first image (if we're + * looking at the last image in a gallery), or, in a gallery of one, just the + * link to that image file. + */ + $attachment_ids = get_posts( array( + 'post_parent' => $post->post_parent, + 'fields' => 'ids', + 'numberposts' => -1, + 'post_status' => 'inherit', + 'post_type' => 'attachment', + 'post_mime_type' => 'image', + 'order' => 'ASC', + 'orderby' => 'menu_order ID', + ) ); + + // If there is more than 1 attachment in a gallery... + if ( count( $attachment_ids ) > 1 ) { + foreach ( $attachment_ids as $attachment_id ) { + if ( $attachment_id == $post->ID ) { + $next_id = current( $attachment_ids ); + break; + } + } + + // get the URL of the next image attachment... + if ( $next_id ) + $next_attachment_url = get_attachment_link( $next_id ); + + // or get the URL of the first image attachment. + else + $next_attachment_url = get_attachment_link( reset( $attachment_ids ) ); + } + + printf( '%3$s', + esc_url( $next_attachment_url ), + the_title_attribute( array( 'echo' => false ) ), + wp_get_attachment_image( $post->ID, $attachment_size ) + ); +} +endif; + +/** + * Return the post URL. + * + * @uses get_url_in_content() to get the URL in the post meta (if it exists) or + * the first link found in the post content. + * + * Falls back to the post permalink if no URL is found in the post. + * + * @since Twenty Thirteen 1.0 + * + * @return string The Link format URL. + */ +function twentythirteen_get_link_url() { + $content = get_the_content(); + $has_url = get_url_in_content( $content ); + + return ( $has_url ) ? $has_url : apply_filters( 'the_permalink', get_permalink() ); +} + +if ( ! function_exists( 'twentythirteen_excerpt_more' ) && ! is_admin() ) : +/** + * Replaces "[...]" (appended to automatically generated excerpts) with ... + * and a Continue reading link. + * + * @since Twenty Thirteen 1.4 + * + * @param string $more Default Read More excerpt link. + * @return string Filtered Read More excerpt link. + */ +function twentythirteen_excerpt_more( $more ) { + $link = sprintf( '%2$s', + esc_url( get_permalink( get_the_ID() ) ), + /* translators: %s: Name of current post */ + sprintf( __( 'Continue reading %s ', 'twentythirteen' ), '' . get_the_title( get_the_ID() ) . '' ) + ); + return ' … ' . $link; +} +add_filter( 'excerpt_more', 'twentythirteen_excerpt_more' ); +endif; + +/** + * Extend the default WordPress body classes. + * + * Adds body classes to denote: + * 1. Single or multiple authors. + * 2. Active widgets in the sidebar to change the layout and spacing. + * 3. When avatars are disabled in discussion settings. + * + * @since Twenty Thirteen 1.0 + * + * @param array $classes A list of existing body class values. + * @return array The filtered body class list. + */ +function twentythirteen_body_class( $classes ) { + if ( ! is_multi_author() ) + $classes[] = 'single-author'; + + if ( is_active_sidebar( 'sidebar-2' ) && ! is_attachment() && ! is_404() ) + $classes[] = 'sidebar'; + + if ( ! get_option( 'show_avatars' ) ) + $classes[] = 'no-avatars'; + + return $classes; +} +add_filter( 'body_class', 'twentythirteen_body_class' ); + +/** + * Adjust content_width value for video post formats and attachment templates. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_content_width() { + global $content_width; + + if ( is_attachment() ) + $content_width = 724; + elseif ( has_post_format( 'audio' ) ) + $content_width = 484; +} +add_action( 'template_redirect', 'twentythirteen_content_width' ); + +/** + * Add postMessage support for site title and description for the Customizer. + * + * @since Twenty Thirteen 1.0 + * + * @param WP_Customize_Manager $wp_customize Customizer object. + */ +function twentythirteen_customize_register( $wp_customize ) { + $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; + $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; + $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; +} +add_action( 'customize_register', 'twentythirteen_customize_register' ); + +/** + * Enqueue Javascript postMessage handlers for the Customizer. + * + * Binds JavaScript handlers to make the Customizer preview + * reload changes asynchronously. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_customize_preview_js() { + wp_enqueue_script( 'twentythirteen-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20141120', true ); +} +add_action( 'customize_preview_init', 'twentythirteen_customize_preview_js' ); diff --git a/wp-content/themes/twentythirteen/genericons/COPYING.txt b/wp-content/themes/twentythirteen/genericons/COPYING.txt new file mode 100644 index 0000000000..aece214b7c --- /dev/null +++ b/wp-content/themes/twentythirteen/genericons/COPYING.txt @@ -0,0 +1,9 @@ +Genericons is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. + +The fonts are distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. + +This license does not convey any intellectual property rights to third party trademarks that may be included in the icon font; such marks remain subject to all rights and guidelines of use of their owner. \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/genericons/Genericons-Regular.otf b/wp-content/themes/twentythirteen/genericons/Genericons-Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..5cd41e8b81c9fa490d0ed695536226c0dbe69ac6 GIT binary patch literal 18212 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 + Copyright (C) + + 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 + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/wp-content/themes/twentythirteen/genericons/README.txt b/wp-content/themes/twentythirteen/genericons/README.txt new file mode 100644 index 0000000000..7a0a92e5fd --- /dev/null +++ b/wp-content/themes/twentythirteen/genericons/README.txt @@ -0,0 +1,123 @@ + ___ ____ __ _ ____ ____ __ ___ __ __ _ ____ + / __)( __)( ( \( __)( _ \( )/ __)/ \ ( ( \/ ___) +( (_ \ ) _) / / ) _) ) / )(( (__( O )/ /\___ \ + \___/(____)\_)__)(____)(__\_)(__)\___)\__/ \_)__)(____/ + + +Genericons are vector icons embedded in a webfont designed to be clean and simple keeping with a generic aesthetic. + +Use genericons for instant HiDPI, to change icon colors on the fly, or even with CSS effects such as drop-shadows or gradients! + + +_ _ ____ ____ ____ ____ +| | [__ |__| | __ |___ +|__| ___] | | |__] |___ + + +To use it, place the font folder in your stylesheet directory and paste this in your CSS file: + +/* =Genericons, thanks to FontSquirrel.com for conversion! +-------------------------------------------------------------- */ +@font-face { + font-family: 'Genericons'; + src: url('font/genericons-regular-webfont.eot'); + src: url('font/genericons-regular-webfont.eot?#iefix') format('embedded-opentype'), + url('font/genericons-regular-webfont.woff') format('woff'), + url('font/genericons-regular-webfont.ttf') format('truetype'), + url('font/genericons-regular-webfont.svg#genericonsregular') format('svg'); + font-weight: normal; + font-style: normal; + +} + +Note: the above only works if you don't use a CDN. If you do, or don't know what that is, you should use the syntax that's embedded in genericons.css. + +From then on, you can create an icon like this: + +.my-icon:before { + content: '\f101'; + display: inline-block; + -webkit-font-smoothing: antialiased; + font: normal 16px/1 'Genericons'; + vertical-align: top; +} + +This will output a comment icon before every element with the class "my-icon". The "content: '\f101';" part of this CSS is easily copied from the helper tool at http://genericons.com/ + +You can also use the bundled example.css if you'd rather insert the icons using HTML tags. + + +_ _ ____ ___ ____ ____ +|\ | | | | |___ [__ +| \| |__| | |___ ___] + + +Photoshop mockups: + +Genericons-Regular.otf found in the root directory of this zip has not been web-font-ified. So you can drop it in your system fonts folder and use the font in Photoshop if you like. + +For those of you using Genericons in your Photoshop mockup, remember to delete the old version of the font from Font Book, and grab the new one from the zip file. This also affects using it in your webdesigns: if you have an old version of the font installed locally, that's the font that'll be used in your website as well, so if you're missing icons, check for old versions of the font on your system. + +Pixel grid: + +Note that Genericons has been designed for a 16x16 pixel grid. That means it'll look sharp at font-size: 16px exactly. It'll also be crisp at multiples thereof, such as 32px or 64px. It'll also look reasonably crisp at in-between font sizes such as 24px or 48px, but not quite as crisp as 16 or 32. Please don't set the font-size to 17px, though, that'll just look terrible. + +Also note the CSS property "-webkit-font-smoothing: antialiased". That makes the icons look great in WebKit browsers. Please see http://noscope.com/2012/font-smoothing for more info. + +Updates: + +We don't often update icons, but do very carefully when we get good feedback suggesting improvements. Please be mindful if you upgrade, and check that the updated icons behave as you intended. + + + +____ _ _ ____ _ _ ____ ____ _ ____ ____ +| |__| |__| |\ | | __ |___ | | | | __ +|___ | | | | | \| |__] |___ |___ |__| |__] + +V3.0.3: +Bunch of updates mostly. +- Two new icons, Dropbox and Fullscreen. +- Updates to all icons containing an exclamation mark. +- Updates to Image and Quote. +- Nicer "Share" icon. +- Bigger default Linkedin icon. + +V3.0.2: +A slew of new stuff and updates. +- Social icons: Skype, Digg, Reddit, Stumbleupon, Pocket. +- New generic icons: heart, lock and print. +- New editing icons: code, bold, italic, image +- New interaction icons: subscribe, unsubscribe, subscribed, reply all, reply, flag. +- The hyperlink icon has been updated to be clearer, chunkier. +- The "home" icon has been updated for style, size and clarity. +- The email icon has been updated for style and clarity, and to fit with the new subscribe icons. +- The document icon has been updated for style. +- The "pin" icon has been updated for style and clarity. +- The Twitter icon has been scaled down to fit with the other social icons. + +V3.0.1: +Mostly maintenance. +- Fixed an issue with the example page that showed an old "top" icon instead of the actual NEW "refresh" icon. +- Added inverse Google+ and Path. +- Replaced tabs with spaces in the helper CSS. +- Changed the Genericons.com copy/paste tool to serve span's instead of div's for casual icon insertion. It's being converted to "inline-block" anyway. + +V3.0: +Mainly maintenance and a few new icons. +- Fast forward, rewind, PollDaddy, Notice, Info, Help, Portfolio +- Updated the feed icon. It's a bit smaller now for consistency, the previous one was rather big. +- So, the previous version numbering, 2.09, wasn't very PHP version compare friendly. So from now on it'll be 3.0, 3.1 etc. Props Ipstenu. +- Genericons.com now has a mini release blog. +- The CSS has prettier formatting, props Konstantin Obenland. + +V2.09: +Updated Facebook icon to new version. Updated Instagram logo to use new one-color version. Updated Google+ icon to use same radius as Instagram and Facebook. Added a bunch of new icons, cog, unapprove, cart, media player buttons, tablet, send to tablet. + +V2.06: +Included Base64 encoded version. This is necessary for Genericons to work with CDNs in Firefox. Firefox blocks fonts linked from a different domain. A CDN (typically s.example.com) usually puts the font on a subdomain, and is hence blocked in Firefox. + +V2.05: +Added a bunch of new icons, including upload to cloud, download to cloud, many more. + +V2: +Initial public release \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.eot b/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..46574695ece5d4a4d2eb5dd29c1b09995d93e214 GIT binary patch literal 14935 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.svg b/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.svg new file mode 100644 index 0000000000..ef236c1020 --- /dev/null +++ b/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.svg @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.ttf b/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b6f125e7eec0da4df8acaf85c86fc993115a4723 GIT binary patch literal 27348 zcmdtLd7Kp0xi@}J^*(D?cTe~1(|Zrh(lgyX(=#kX1Hu3Uhztxfg368z`=+>;Mk1nO zu1V0S5j2S!%{A3MpeC3&H!+DOwuT$z8kbx#HyV?8Ut>t(!W6&nbE<~L?cVqEdH?$L z&|OuhPMtdEInVw)=fF5)OvaCyIj2uwFlVs-po=kHjneAw^QKK_|B5?|ci`H8es4T+ z=i*Cu;kqB!OIK`Iw)wkjkFCJy@|; zU%FxY&V~PyxeC|2@xFrfn^r7So*(=pW6QpVYiYx>otyc?(iFy)--Y`AjmtKyn(`kP z+i{KlNiT2Sv~BzE&EelOw(2W*XTj#Jt2V3eH+UEuychMGFJHBM^^wf{7jgYOuC4eI zblCF~A3zynFZ})X8};M$KNfdNa8*tvOu{v1*Wn9j;R-{x{f&QxS(w?9G*fHe(2vsd zEFrFO>$5)#dlt=QnaIh%o2;v~)c_M?^{6R&Vm#p&S0-H1x7xV(JzP<(YV-l)V}AUh zH<6Qnb-eF*zvBJK-|QzGCn`>iInjAy=81t5Yfo(dyXn*^QG>nD-gmz5{~J5OPB>5a zPqduKoS1iF>50vMXQxiRVk+-#;xh5NJ|Ojcd#OYGz)4K+Oy^spdv{G!P10 z+5dV~exM5V`bVnX9jFQgR7*p@I{mT%absWr?O7U&mt5GSS{t)Lz8i1%?_RQ`N@Zxq z)|d^8qRi;e?GedsW9G#`IdHs78%Q=e4u|11~fCYC*Tbj!_S{5Zo3%2u$ENz{^-ri8#vM=N5X){Qm zFP|-OB@#K0kM4V%j)rUnZ(uF0ye&}nSzig=89`@HF-aLw%xpxFlvB8tn4<8rzM65) zBx2+?{9z1kHifALakVtBy3s-O(}TerLyy&BXI4gkZ24>%Z^+8UvTMlfC@_V6oh<7v z#TB>O7_M4cnbQ^an_W)H><=@KH_@Jo2043yFXIpJWiPy-?bj~W_VdKPqx<$9HO0>^ zeBlM@UMk&3Fg7!VD>lWd25dS#+h~D%$m=J(C;EHyR!Cz&Q7&lR;5n02BR>Qm7?FOOI9ryOO+pEv2s@t zm6gd^$0@^xXI+aRh8N zbVtJx2S{_A>c7BraqFZ4I-(*g{utyJmvL#v0~R0^-J??lcvH+$jH@N0E9jRcKjg45 zOiDqXaLJL+mICqxOm+d{S&IWlQzv1t0Xv&)k(<%lao%NnGCw}>2w9)cvwhIw6_J$oPvH7?dZ|LeIR=M1V96Q9o3F< zwr}vPQzjA21Y9aulI>$e>X?&;xLOMgO^N>5^Eo@C7u(I~mfe}HM7Nsrx#mhLY;Hwi zvol+a!m@m>xQq&m(M7e)nT??^kk7>eR2U1R-)(?yr5$)(P~O>@Ep7(>7W!%$fWO&T z8H#Jib^@;(3W;LnaI2tEE~nblW!5s8=(9~u#oB5)E`Y~$2PlnmTN~Yp2C0^>3^T+A z`!bskY|iuz3T$SC*Qbl5VXiFOAGx!0p{C5+ym=m17Ixkl*}qIvfY_3S(_xopRN2M>V4kvOC(x(@lvx2ZN(K_5 z$Dsh1L%}Fd2WU`wSp(4az)~|?df>oPEu&?Wr3XyJSss3wN)#1KLvM z<%hX~>P88)PVh*b4lL-QpG`NoJg1J@j}gBtb!NSon(90>jD~C}=3}V90_@4|gvf_|pxG9=vTl;L7n$ z*-5Kj!`3l%Rb0I|uZ|@S!qrO!Hn!*0c4xKu?4@pVadN_n^ksYYT$Wzm6)z|l z*RnRpQyDDgrearJxP9XMW*!V{ztXNSvtRS8 z(f9+}e`~vrXxWiJud&rtn4h`ehVhQN8H0~)y?;w-{ftXmxny>=Mgo!)h_uR9NxI{j zZTq)AHaNp?k6&0^!aLID;!st&WGk$6VQh6B0h7J5qOQUVUX<8rF85p4NM1|}1HzNN zgSjbXRRZ(Jv2HexZD+Y+#v0UUp14O{UhUB5>jEL)oFEHl_I%9OlmxNY`IxfvK@XW? zOHr}eTU{5fZ)zJqL(Ers6y*gD<{sNMDKll>Y?`Jz`JkOw*Nmt04p%M^KMxb#(pt_j zVSdb)6Ko!$+vIWi+F3dpE8?-VH=LGYR>r-7L|QUgncM5`GN+^AP|(V2C11PQC&fx6 zcP+;=u5|d@G*kRueBIyvw)U>JOIwNWyW#EYui@W&+nLec(zg85{}X;<&uv3L(f-Qi zm-&oChXddLowoZQtAA-dFz1%FW3JVn_<>*H^Sm`N>mz*jm6c!ae*B*cO2#d&x%c^U z?JuUpr`!KF-Yd;~NPBT-p103wQTh_)U-8ap=9T|gs2%?J?%{d7k>5B=J7QV;p!T3N z&fhg9eC-|1kBlM8hz|Ar2q(2P| z^(GTIOazKH^R`slYxWU-ClkK*v=s=j@8B!*F8LM(d_=j z9=_+zf|u_)uwGd^_VNv@XKv(OJ05>i`|Y>27x@v(H>KM**@`QFd84Jllz8CcRSO>Z zRbi~@uK(CxIqAmk;-*dWY<~NdAN=W8cP*m6G3ZD(g~ix;Oa+SsvkXGKB~&@C`je_R zuU6`)QxCoK7%8JrLmf`&m8uVVUNSod$m4@Hr&f|oc7yw$;ihuH9hgY`)t8Qjf+bQ7 z56Ms-f>CAPpoI8`w;HBAXq~(E;yd~qHEpDEa3ARibo*ocO26Rd;i3s? z{(eFF;vMJxMLRjtNeUh$K2t1jqwf`LuHdI-LW;W+Ik-9?+?Wp%4_bvC>Kr6H#sU5> zC8+CiBIhfoI=(VTL#|xt#^nsM5KN3T3-mJ8B_$KyI&K1n)<^*p33EyLU265C8`6W7 zm9~GIo#Zo1w4Z6irssH^OLO;Z%ven(?XAqTk{7ijC!a9Qgv;bKd`qEsEP&>*n(bw3 zaa>)LSL@>0ND4YxRX#hW8Cv{&9nfpeqR|PU(eo4P%6x9ZO6u-}9t>%vGrJV!Alyp< z`w2w24kBE)cj3TAf@td&5ixVSgL&M+boY{rmaZgPt&$IV8)oznBUb0Tvh^)QwJxWt z9aQTD)mlNdQKDLIbte<;lX$z=YO~t7+XQag?gP$JSuGTGD(sTlQp9T=gt$JUWHTqU zj>b&9-32ZU47MqI-{Z6SdOrKTy?fu&4r*W14!)QAD6d^NeOD^7J`^l-mv|amc~re- zp{La2*>!$&T`1&q^HOI+D-T^z4$Yz5Be^Y3YmvonGR+-Vuu*&Go)@)y`T3i-@43M& zeZX&e;*}MaiKbbfcnjVqNq^C~&JXXOw9F6%yo`6Oa}|j zno4kPYwjSqJ5_#yI|HHc_$4&oM42=>Bqq5pXblBTG;Pp(YIr~n$$_!}Q6{vuPyk{U z;?<7(X>poN2ZB~p7xzJ)T6{FCpkQ~j-G`RER-lG*O}@6qUs+e{n(2PxPMx%2q>$C9 zkanwCEEnBw3YCW4HL`4Po_+Ab-UBy{+<)C4rggreESTl)3s0!2vDx^@!G*ggm)(BV z6+iNpDOX+d9Dj@d;X2dA&cK974L4gS6GuRUM$;$38>+pxKekS)EUK2PJmqBtsp;cy zdt%EIEqj-L^sR+!Ij<-lU(p(Dt*D7O?W@e~_y5*x{=>Hp44cir#{7{^1_5e)3Rb-n zym^Muv@r*!IP{oNO!7o=v8h==ntQzC zITXld4%XoY-vESD=`Nm3kdBP=W(myDVrvW3a;F3>ZPf+Rg4KLwZ|@p6pQSwxwQOdg zr*G1@*#SPYbIr~3!&8#+fWNFzdxGO*m1izrKC@@(vX8!F`p=UAX-s=nV*0pc(?e&3fb?HKPRaK~3zOC{N?QQM9FFFTLtD$?Q*)@U#K@$!%fbFyp+fn`gW3t+wRNb(@ zoN6V;50wF?AuM313owFf0fInY4d~d~0E5JtZPeLNC(yLEMu-44AZN>c08Y@Qwsoov za<-+NK;*~mY<-(<3ZE?^plyFHxCF3--~g;niwu$poLw-PPwkcFO_@61$!)NLzrpQx z=d|Q5Zhz?J#04Eer}n|wLS&zL=eYCFA2(sn+>f6yRh)dAA8vBjcMNI${1@MUyu2}5 zu^GtlC={xB(4{7`@39>8E117=bxfWhWCcK`2!OQZ)i!6g8Y73C3_7z-I4jI&r{d6F z`NOWl_hzxOhJq5c0#F==3+6*LIy~g^MBNQJ{E~wzWCfXavV$&9MP;;^KK!h6HB-s6 z)ombTU*|+3>F$uUWXE?%md;@r4k;CN{@Db{RnS(Oy%+Cw?Cpi`->Id56*N3FZ#Nz z=7IX#R`>QtCYJcFSheE^E3`j-aLc>j?C*8iY)*$QTG9rI?l%D)$zLd z3)`a~h&Ve5*fhj@7XUWuboq%Ai@UC4vU46?j(26flL&xb%s|$;05F{iE5uR2+?A0r z$?=n@R!i#{%Y!u8P%ze>hGMFNPtY!GEw9hp4w_E4M`M7p&=m;GfPR_;Bd`{%7U~10 z!gsFWq1y&uy?s{AjOxAf9vInk@q_=|d)xcpy|Qy~jjP5iIZYNz$$8z%@RsL}&)awL z{1xuP*4pl=^S3$ejxFwTE41Oq&apG#4%?;u_XA_Mui=$#Jx}mS&u%^Xt>tsBe{g7E z&u_-sOWcl(!|j#lUb!rH(*>_S_O*Y0eaF1!`z{+hWzk(*8ZL0VwMg%>Jv;eHOoPM@ zNK0)?EeF6DOA$p8yioW_N_1xte0k)dab_KWeetMs$mR6<+nrIr**G3J!TV2~&>og< zHBQXm(;hxyoQosgC4__RI+!p4*2c)kSq^th9Nrc3!;!a*Wy@g(t5))@<(S1uG*IFi zDz2{a>xl1bPbR9kE1BTT?TUm=xCBy@aEqFV2CT}0D?Cds_{#ckj_{3qS&>uwi+0P6 z(=xlA_RU*5W=`;=T8|8<*I8DqU!WZy`I~l}{|EmmH}S>xBCWUPt|h995@N1ep4B)mRkdQ*u;zjb7! z6Fm6KOtIEOpAEv2QyuXC0urIPT78VXmEHv63;>Cf{9nbuQl5lzL?Resy*({s)G@+E z2p9--QqiEKz5Mga${R1a=$eg-`*(i%=GhY(Wtl&s^_`NNT4v5#XMSMhmMf-A-s-RO zdOCPzf4HKl`ELF^ui!tsW#FQTnb0}1Bg7imcy@!39gq^WaW$4#E8=P}sm6tS$_%Hq z6GY3^2?kKe%=80Mbi#$DKm)0AlBY~f3e$5UC^q89h=QH!7U!D~_)X~N96>Tjg(fzoi(Ge&N4uufX+Jqm4~^FD zX#+chZo#2jXv_njeif_3jK%=JX4vLjjSKLQ|IkU!c(qoje)af0ElyehmkK!FhP>s~ zgzRcqK4`U&K8N!r*HADrwh^boR!OCKd&0-bgJt7{20S{6$J|_wn0yi0>5I<3j?)fx*6`BCq^8#ihXYY+3()4b#Er+ISZ>3i?JcO=OB z?|E9Pe)?|SKl1d(*UrJAHnxa8#U2zmKelhkWpFpoQ8I7mIOtb)0hS_>?fJpNizFDn5bp8StScS2gRBkSVW^xs=Y#v z5b@%YZo@MW=TQI_KdHOeC-ZX z3DOf>_kN4lE)NGU)n42GP3@%(8&-1Je)oor|2cl5w`cmR=P&e>B@;`Q%!{V%ax%4` zcYJ4&wV|#)-aMmNDshx~r_JtmH%DFF4GoI}v#e6zt|{lOswt1WxoK+$+yZ~P{!34q ztc&_?*}AiL@lSbK!MX*jwG$h*Py8H{?saYVtN(m{_YFIa+&k!L`N@Mvr`m?9S6=>1 zZJ_s}#c$4<E6gBXPJd}G?;2<)zk*e4Z+#-V`;mi zqVBv^lh?&v&JDNDTDPX5VcU)?uDI3be&y!9+qR7jRR?+5Po;HFcg^vP?^?T#A9E+Tu^v0M1{Otr+-)p=Ekt2ZUp>+|ZaL{7P$Og?1~d=b|xbb9@lU?^ViRIenh z92#dVu5L`KW5HT)jjQov>e~F!`D^0{k+3|4FV4@aYn|B)=!D!dPBooZ({Y?+x1-3P zA6ntxuE)6i&g>o(-H=dk&Z{>jayRdxx7~abUcBdKI^Cnd?7R(CpvyY83=iqL>;i|IoaBxLz;rcB<2cvx`h0ssqE>8Pn}*w{vKE_cV7ywtJdgo#7nno-y6s zp!PY37WMU`w6EW;E^-d_FB)(+uqUQX@1D`OsDD6cz@!9!szj*5nYAFvHp@mLYoDB3 zvieFQT>p0PM!7OZk|DbXp$T;iNLyKrQU;BVxWV;u&g&CY9=j67mGQOPQ4I0nsfA~! z3-)ibInJA<6tp<SVWCjLIOe~ea``14iM}n$)cR=?o6>bP zQ%c)5-ywzug^TRpkv*|-D541Y%aBx6qed58=Kt~W}COcU(++U z+Zn&0Wo)UVP_~&&;pX(%M6!0vZ3oN;H)cX(JC|(Rp4u|rUE}J!aLdM#kCfAPIpIBL zUxsg_19*QS+11_TgyZUBV(-}$unP!Um&m2kgmS4ka6RqJLKT3gB)bI6Jq4df?)-&) zH0NnK8|;S84t`7%WvVsR@mdQ&ZXqrym*_5koYhLuf&y|2_$T;lvo#iKA#RBIq(=}Y zxW2G^>hy;m%HDt1RZA)>it0C9v?^WSuzu6dO_wg3EW5Z=DEsRtMN%6VOmn*e=S}T! z@{Y+bT(#CGg(l5kyrehdaZmZ}-p=}}3X@z_?rQ{GjMZn+HEN=wpq15n~H+LrdWNkTdJrnD(2Uy1v&XUv(1Yk9L;4F_4YYCh@gsPwG>2FUxC}8x)tj{Ri({Aac`kKR9ws2 zshXWMc90q9iu~DzVQTZ*gn1ML>4c-OkkT;xN%#rvl_EP3acBN;A5YSKy@qi+6r?GI z^(t=AFNlv+9^+BEf7_Ri@4D^sX+4kfjyHF?ll)7^Z@g;#`LiF@o_%wdJeA+to?3MI z6Z^JonlL^XnmBIZoQ;(66OiG!Ub3vQ!CzZe5pN3yE6T@p&hOiF%ldVlo$1t)ORl{L zeyBj#B7NHxEfdTAE zi>H4Yc*0Ab!XT_+t_-(sT!w^&qDog_V7k+8=Lgz)TB2V3>uJl7wyb3)Z|}ZvEQjrL z@%}G+)eG*PzwkgL+S4{>N^u}2eo%F=r@n=9_v|ds_u7)SZLF1zV>8)&wvw$! zRO=dk8KcepNg}U6?Sq5l@Di&aHn{f zJ#MoX6_;038lsPX;#$bP2~BWO#8cpaJ@Syr(jjPTo+~%DcM-A0)$-7!?g8P-A9M|k zS$wewpiY%D4rf_)?S{?Uc3e%w7=MJ``<=hsRH)yB)4WFr3(q zE9k-`=PcFWw8&aQT5sydE#9&E!g^7=f2s!oxvN3Ra7k$RC%2h{GtMJEKWI)UrF4NO0?ee)~;QDxGB+I zHP9BX?&%75zHsdE!NEi8*5miXB~zv>nQ~V{ZD~hGX>CJkU*9{T#B?RSqG{yE6X(>m z)Q765hs~wTj5p%7NH041v5w5TLr@D3Vh|stz0`<+^7U zaXCF~2ahCWc#O?w$%M3NSiM$ZcpT>Mp++>+v4ZNEx+L2Us%4m7N?v) zciZ0QOc$*ECSBN`)BfvO(*;Lf2*l$7{`T%4J-vHfQ_GTIb8}Fu+w+s3@Ba6e=A(4) zwsN~L_u$h+qI_*TC4zLEF1BN3e!+Tn6`LZ7H`H0bC<4ysUI4V`u`fPS)mAkt8=*;50O$X0}qc2iVlsSZbQ3DkmP<`6|! z19UAC7S9Qxx?nXxgu+V@Ea4POrc|6wKjIeH^OhfN+VmssW9?1t;~&Y3?|JD@FWs|P zKk)A;eC&m$>?bOry5u-h3zZT4d_`NV9a{|kfmjh{1pEVFXSHHh;D$r&o^nLtOf96` zqO4m$@XWL`gV9Rt_9NAvh8OsgWBt^yIxsrY7b@QS5-A31s<}i>4rd!JAF55mEZ5kSBs+Kr#}ugsLJzQ7 zfNa&#SpAr>0{PmIE33wJ`uZa1Bm?6mxQ}W~9vgTzyiIBM7Xt~Rh?~3tlcZRiDl4mP z>mU1kcu9VrByq`70I*ftP@iX65oSOU`YFL})Z-aPWHk-H@gz1C8T`aGfIZdmY`6uP z50s483XJi`bM>hSNt7TnaZKAp(%l;4*^UfKn)2Ds$+-SB(9b&y=!nN z9i8MZ&(=5MJeJRnr38zZQwYUW2hNlEZ2LGmIXVV_-2vWN3N-eeMO#*7Jkd`4@K5R4@IMgq`E_q!RVn#ga0s=SH&38BMK934Eujkh5a2Pv0uLsjdX7GVO!jC5Z&C8e#$t>wqtK}ii3LQFYMQANii+H6CJQNCNGj}0YpFqH#klEm$ zoB01xH2E7(?s(~*$mw+GADDX#uDRpMZ)nI@{y&=*-y@l{y_7NyIg9?D&H*s`9zb@E z(R*|ogl>#M&k8?h43rB_V>m=(s1+XiPmH2ghV!hjg2q?pQXMp`9Iy01;ex>Uf>D_$ zFaL{2c9W$1PlF@G_|*8uu%WZY7ZJQHl*rWzE?!#?9FJten*#Ee;PAnF5zRCA{qlXJdm5x%Q*Wi6CD@&683r#)`} z6VN~-!bkPL0NpvhEHfym(ax+#k*7{MmJNg@g>lsdok7IFge)ZfMC%=3me-6%s!7(t zN<@Z0HiGfW?%&xki;OH?@FKi`c)d5D>f}DvOWcwlv%}J|(vPgMZ zNUEwuQVC)>WK-EBCz7n4R=;a>eZ)trcp;J#3s>@wHR~$v?}%vqedV9|);T|W`I*^# zhj!b2Z>;}WkJ*TB?H6j3nemU-Y}>Y4vuKtzTcJ~aq}?{Rw|5TT&bQq^f9}Y;dMNC; zG^$oH1ndo1kUm=lSR`3SSmdAAA#nM@1^@|Kvb)K^&(i8fJs zuWEMXtS+~p1{x=fOPd%N_my%Vk5SSfVp>sm8Wv(Zu`dEcDCkC*iwsXrH@0hyC6#o82L9LGe5U}&zJI%fA1%RcebkrS-aLOUJ@+a- zH`2TRc!}27KJvuv%{2bM-lXj&nDFKNXnW)Sj@0 zKRlyo!{P@yf$ZFCh3cRU*aV8m*DVCQgc&f}h+@i|9LA3+qnsQTKPQKwwHQDF_)HrEakEa5~L8hJfAIy;1tM7+HW(g$+Y&}A-wD!dThTTYuVI&9PDsPJzHie~( zG~ToSgr_J9)twYLp}vu#+0({JJ7Xuosl=zJZA2763lqB7DOO3^8tG|@GQy7#X6Lg}$P#Zo;h(`%`O-rTTrP>_&#goHWpOZO>7AYv8 z-y12Wdxnjupj|rx=7b_9j2HwAUJr|_faupmh8%fv(N&C-dW`Yu2@LohrjC+HH-Z;2 ze2jcL$WohF6M!=;MaH&(kU>NjZ7QFj?_#%#>KK=3-HJgDzpT9IXQ0e)8F~3NOSf2)#P5 zHj^K6tcd(!Jr{D+Ecslig({U6ks}yxqWWWMqwWG~tS2{pMbIK-O?4eeHr6OydUAmH zE_~>4xy6Y2mPv+7PApv_c8j$nqqd^L+k5!LpWN_He`MBRbo<@=k6$`_FtX)dCKtsx;1KWw_{czqk)?aTDE|(I1QyL8??#V$3XfO_xzr%i(rU0R zOJ$T~k4MfH)#2!a#HkPtFT0#A6zgeJBQG)X*IM9{$A*q$73^93HrX=ahlXR2v8EpcsXObA*8BxTNJ)#%z9e#%u#KKCL z7xPU^&xkww1QqIQG-z<9%#ooiy6Kx;ys2238y?1g3IavWl3cUA!64d*vG{mMTB^LkhsnG!`;}pdEgd1+ zz@#FUO=mV%Xm}fdfck1eLExv|K(ww3ypi}LzIOHjo}@2W2&0vyXMTw{8uo+C!muAk zoqJf6Sdh;Zh-GdCkY}m|1-fwZ=hbi`SMDdZv%DI&TnXX+6Ke!bhz=tmR}G2mn3O9W z3&=4F>biV#G%Rts4wT!Ll47#gOc|3lA7?w){a#Z3IAh*#A3CVL_OMBDztnvJ&UyG@ z+%dCzxNqI>N0dKy|KL(pd$&RRsP-72HgZ^^dOuu)CFc#?R`-(j!^8Jz@2vYh!IYM2 zTA5h^tl)zaB3L-J%<-&6Fc1M6#f)kM3i{}Bh$eyHi`+Xr1z(Ph#5X7Y3FH?kR@4G< zX~*e?A_0;?W(XjYa#A7Z8l z6HC~t;+&BW`j9!T4)!j;%68=2}5XkkkcdVZ)bSCbh=Pe&gJmP1SGu; z^h3SSEs0Uj$X#N#;Xmq#tCdN$lhXYtiw?PU6GikY6IaJ3)ya7^DpuyiMej?J=sKI1}%KIc$rnN@;KyJ^&<0OFD4yf`v!jPsL?LOC(1OGl^n_EyRseCpI?ibM4@3tR2bqLm zF*ztAY64&3Wa>ii0Zm}BJTm=Bypwm)Sdk@yU2s6?A+JCXDTFrL;ay+8IDUBR{^LHM zu}(>X%d{r6>+sT5R~_HqHAP>9PCQMvu0^;_WY*jote@Mt<&`DQw%j|oTNco z@CVd_2N<|bB2s4=7#1m5qr75NmYZ~c@2Hm-ZQwP(vAk>fSFq?xgI|$8sB40>>=bL; zNy`tA$r3|#sFvSd#NXB2i})f;DPPp5xixnm$C@(9&3|K6L|f3s(>#EuVkmrfk@j8U zPkhlL)3B&ZkI}oO4CD_*Odx-V18_7r4EZxMY=$D75oe+vX48_PdeFTc;z22c3R(u? zfXv7+p3*W59|0JXVp5m{zjzKMm}Y3BW-+_1GN*f3pw7(-1)D#o9%!Bzw5U1CpA`$W zX@!PMxzS|r+OV`CyH51-{FeUhM`bNb;P zrPXXXIRFPKt=P|b!dNUuJ3{2jB5hP=kLSwkJE+V7C2>qAl@-Nv)s4cFioA}RCi0|m z70iPj%bE4PB20)a7L-t3tY(Mxm-CcY)0I1)^H$c1Gm*5L3+pT+l+Q)UdzzpK31W)5 zRL2CmO6GIz+ zNC>H6$vZ7_#4iv5;VLHV020ttPAi!9aYV09jyhO`4JG<#1uaL}ml$;hkzHuUqzpw# z<0-I1V+5?=B?OG#l@w>%VPR^a?+i!!2|SW(wS(}0ud{wC1&Ax7LL5EAL0#p z1y+f?F<}{QI+kT91EH&&F4bb%XF-U7HV1EmRgc8BKv~FGH->Cu$^eOmM?FwLcw*VG zHEF2el4k~Qgz3xx0Pdp(?GYhJ<1`rdkD5WkzrjQtfnr(}ls{GgZ(EWK#4=zr7&+pC zdhE_xNO7f{#YzCMAXuKWk{y)6UM;xc%(`&DB0svSGvHxlu}8s&Npy+jMdC<8MtlAB zQ|xu^bumZc$E>`q-QT4BjTblZOZXacS0I-~89fp{0cpW@iLUD~TMJk&N~>4kJgyL` z6-gW6Q9WDQV1@$6FcD%F!U4$ILf9!RTZ@&}ImF<}WzGFI zPs4ZP07ph{5Xb@o4;BfC17;(bV39~}E5gP%ql-0km&2Lh9J#T512L}8{vyIx3J!KkuMAU2wWG<+nGbh+FJMW15JkrQ{)JxL7P5sdOEZ%gU?k$oI~&2@u+$8WsrG(;g>k zJHkzta@tTsEyeB{1;tLc4;Qdg(v-;*OIzC0rnC<_TiS<=q==95;A}oy#A2?KX6LC{UIUkQ;Viji`1RxSqF@73^Q=r+6V zu!81EkUwLy6O|Ix)4PZ~NoD*P&5%!w6ilHj>KPs2WyA)+)eQd^5-oI{OSEA|eX{te z57e5-Co`b|TAv1UKs;pVs2opVWe`=v5cK!z3hPiVsC7IcQ4uXOzukGb(U?bxX3 zeJ1Cx=(X_U3H~Kv0L1_F#%Z4?;3t_TVviECdnX%vll;Hax=4(SQr~DIm#$q=U&$*k zCW$mZ(lU!5TELTmE{Qpw(Li%m#sOI%KYF8L2c~G)g&2@t6 zK2zfYly!|uaB_hBTqSc<<5F~mi=-rt@)Xlk*z}Q0`j{~dhRTKb0t5kx0X>6FKw(tt zI+us|Sc~8x@O#4<1 zf09L*-WK$968$`fHPu?I=D8{DbdN#02!e*{Jm;Q*sG z6%-XW3NaN$_NBRWY;#LeAVdw8FY99&`5nq#L%~r$+NZ}U zE&1}wXjNr-dE0qamCwtrX}yuif`wl_SS04-lS4NhJ=pD(v5!DiaBNfKv=M z+_(!iO`d!vWI@Pf#4NzB-0<}xN(7ZdCpzGopT8jjL~novoLd)60)L7bq=&pcuvGqr z=GUJ~)TGO>_b zoF};n=XiG?U(g3#x9nJhGHhIemH!!+7IY0votOaWOQ$cW&!_n*wo|I4fN#4i8ZLzw z$NYhFv$R{41pqBTPey)qdK7pH&4B#CA|gx~FxaC8>5wd2iGWJhOm5Lo1ZO6Rh`xgJhzMh1 z*3V^8u!FG>O6bA?g6K(fRb*=#DR&g9k*y|&xP&Z;DCA%;?dq>P;8FhRxt z;=#0i{vgQ5^Tpj)KBM1tjC}#{$io)6|7kVWsK?umAXv_1#oPi4ItiPgCL~yyjI6;B?Rq5A8elpw=xzIEJ+%@cZbqg0 zAL$P;GLAyS+c#^rFeKrcGxU&R@+X2{laIY5PCGfWtOV6lEHwe%ob?_GE`RbB=Qb;J z6zCGLTTHOHQ;c*Xx3Nnqf@6fzz(_+RuD=|X6Qg+K&|A*BrCYUQ& z#DXoJN(6UTLY>L3_1)7q_4I6-PPnO`b+7MAc9Qn+5k_qiQ9Vi)9XWkADz9L_VS5-v ze0qdMrRPV(iDwnEKsY6^>zJ{}B$QYvtfUtrmIK8+Yer_lA$vh#sml#f02>;~aJmZ~ zU50rHce(dkKu-E7*oZU#ef2&lQR-vI^m166t$BB-iWYL;wZt z!z}Q#8Y3Y$1k(?euvjku-K!0GNe}ZzqUe*15^~`gJBls7h{zRS6fg&s1hJdi6w=Vh zPbV>p0{&JEXx6ZW!XhRIP@MJ#0j(20q05+Il)_vnfwKpogx9N*qT_IRQ<|X#xQ%3V zmMz1EA6VCbtrT&IU0Zc`Hn5LuIkCzq6hWd9?Gn&t9H|R~`#O79W82B$VG7|63$BFj zo1tngni0GA;$4R+1Wc+HhzxX~_qmWD45JnUXe1saM`p>iMuZz{@}mX1Lo( z&j!s|@dqRz&l&PBU^nU6;AB34?4g-pCsAzeYD5r`Z4KWbAOmloMb0{qna8p+C?#t{ zoLQ$8xD#UBB#nCc6zKbknSoai8(KA$z-^Qn9$Cu${B$}4vk-f?DWFvgBae3(bbolw zg;$1bIg&LPoLly#5rUNiHeU?CvO68~rDZOnw#waa-F-JHtaso27GI5#;)v_J??wqp zX1X-f?YHhe`4;8eXiR^?tcZFHB1ZW4huLSv0g?#GnTF}_WCruc7@#=}I|UpQ`Ztw| z+bBmn=8VYO!ad||iE=wTnK2C`hLACGx^NF1&5T0&et=g~nz_XRC|ahDq6P86b9Q#>W%^~0wk-FcpmWC^cm~ zL}mEWeBk#{+&Cbvu-}OO1Xk!l;rqxdKSKUBud_$89k?}=XGE;~SN80F%wct6VY{^GbAuN5EteWDd=k^WE% z(5FvS{57*X*zfp-`~ZK9|CcmQI%*1=ZZOZY1TC8_FIcg*+xFk~<@SF#as@jJ9xJpL zwihZz)kP1K_)G6~X5{JeQ|=b`Q=VGSg`O{aa-P@9=9MXBA9?rrmiX@Qy;r`pLaNwZ zX|1fUoK<u@T(KKxW}$NQ@r}lRG?|-RO@2TC zpaMjGgw$yI5TGUK%{XAs0sT|Jt_3!7GcwTF@9@>nv8V=D`niN$l=qEu6B~yn^>Q;( zt;QMW7PgaLY@AzBe#|&`KtcYDrg$x$UsL{J;u&eml-qVP*6R{BFk8Xsh+8vmJk%v3fL) zzstp6Gj_1u$acV|NN-$&^7VLvp52HZt-?2s(#thEppj8~RBs#Btgb?9JH&Xl!d`5K72AU2cu2Dz?1M5FXP@<4(V23lpy+3_1V&KLT15ZbFqdt3 zFa5TnB!P0|K>^Ff=hO=*`K*tELeK)o>J}vWS-2JH|90-+1xT1K;>8HUmvSeJQ5UwH z_3$$8MF6@SdmvTvDqhWNkak_i{XD>fJjBC1!lTg6>-iWymN!7LX~MoMao)mPd4eZ- z3URV_guFXoxQ*lE`2=k7+QldF44=%W@TvSfK8;W3-PlrUCh|{vur=l!K9`@*=OJTp zKJVoV_(H7QSj7AJ0Jzv@bd<;+QbnOSI_iC0g|M5-oari59)RM2p^DqD5~n(W1APXwlnCv>5HR z>itW!8tt_j?X?>1wHocU8tt_j?X?>1wHocU8to;F_7X;W38TG)(O$x6FQK=WG{%!O z#*;M0lQhPYG{%!O#*;M0lQhPYG{%!M+DRGhq>Oe_Mms5^os`i|%4jELw39mBjy{f* z0hg2kmy`jQlmVBN0hg2kmy`jQlmVBN0hg2kmy`jQlmVBN0hg2kmy`jQlmVAiLWgrI zp~E?q(BYg)82wA?a84z4IH#}`8{r#r7L20~=TuUMb1G@Hmo(Z-8to;G_EJWBDWkoV z(O$}EFJ-isGTKWS?WK(NQbv0zqrEnxy*8u0Hlw{ZqrEnxy*8u0Hlw{ZqrEnxy*8u0 zcB8#^qrG;cy>_F$cB8#^qrG;cy>_F$cB8#^qrJ4zUfO6cZM2s*+Dq&0wHbKTX5dwu zfmdxU*j@TberlJ>Z(}{GeO`Z-^SuMv>GXfxs80L`IiC4AQ3h)8AJQ!8A5c9F#24qk Jcw`b|{~sIWCISEe literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.woff b/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..da8be383d82820c6f279d9a2245b3e4303790907 GIT binary patch literal 17224 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�k{_P|1Ev!tIOu)ySyKQ{3k7)MKUDw84%8ig$ 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/genericons/genericons.css b/wp-content/themes/twentythirteen/genericons/genericons.css new file mode 100644 index 0000000000..b10b86fcf8 --- /dev/null +++ b/wp-content/themes/twentythirteen/genericons/genericons.css @@ -0,0 +1,197 @@ +/** + + Genericons Helper CSS + +*/ + + +/** + * The font was graciously generated by Font Squirrel (http://www.fontsquirrel.com). We love those guys. + */ + +@font-face { + font-family: 'Genericons'; + src: url('font/genericons-regular-webfont.eot'); +} + +@font-face { + font-family: 'Genericons'; + src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff'), + url('font/genericons-regular-webfont.ttf') format('truetype'), + url('font/genericons-regular-webfont.svg#genericonsregular') format('svg'); + font-weight: normal; + font-style: normal; +} + + +/** + * All Genericons + */ + +.genericon { + display: inline-block; + width: 16px; + height: 16px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; + line-height: 1; + font-family: 'Genericons'; + text-decoration: inherit; + font-weight: normal; + font-style: normal; + vertical-align: top; +} + +/** + * IE7 and IE6 hacks + */ + +.genericon { + *overflow: auto; + *zoom: 1; + *display: inline; +} + +/** + * Individual icons + */ + +/* Post formats */ +.genericon-standard:before { content: '\f100'; } +.genericon-aside:before { content: '\f101'; } +.genericon-image:before { content: '\f102'; } +.genericon-gallery:before { content: '\f103'; } +.genericon-video:before { content: '\f104'; } +.genericon-status:before { content: '\f105'; } +.genericon-quote:before { content: '\f106'; } +.genericon-link:before { content: '\f107'; } +.genericon-chat:before { content: '\f108'; } +.genericon-audio:before { content: '\f109'; } + +/* Social icons */ +.genericon-github:before { content: '\f200'; } +.genericon-dribbble:before { content: '\f201'; } +.genericon-twitter:before { content: '\f202'; } +.genericon-facebook:before { content: '\f203'; } +.genericon-facebook-alt:before { content: '\f204'; } +.genericon-wordpress:before { content: '\f205'; } +.genericon-googleplus:before { content: '\f206'; } +.genericon-linkedin:before { content: '\f207'; } +.genericon-linkedin-alt:before { content: '\f208'; } +.genericon-pinterest:before { content: '\f209'; } +.genericon-pinterest-alt:before { content: '\f210'; } +.genericon-flickr:before { content: '\f211'; } +.genericon-vimeo:before { content: '\f212'; } +.genericon-youtube:before { content: '\f213'; } +.genericon-tumblr:before { content: '\f214'; } +.genericon-instagram:before { content: '\f215'; } +.genericon-codepen:before { content: '\f216'; } +.genericon-polldaddy:before { content: '\f217'; } +.genericon-googleplus-alt:before { content: '\f218'; } +.genericon-path:before { content: '\f219'; } +.genericon-skype:before { content: '\f220'; } +.genericon-digg:before { content: '\f221'; } +.genericon-reddit:before { content: '\f222'; } +.genericon-stumbleupon:before { content: '\f223'; } +.genericon-pocket:before { content: '\f224'; } +.genericon-dropbox:before { content: '\f225'; } + +/* Meta icons */ +.genericon-comment:before { content: '\f300'; } +.genericon-category:before { content: '\f301'; } +.genericon-tag:before { content: '\f302'; } +.genericon-time:before { content: '\f303'; } +.genericon-user:before { content: '\f304'; } +.genericon-day:before { content: '\f305'; } +.genericon-week:before { content: '\f306'; } +.genericon-month:before { content: '\f307'; } +.genericon-pinned:before { content: '\f308'; } + +/* Other icons */ +.genericon-search:before { content: '\f400'; } +.genericon-unzoom:before { content: '\f401'; } +.genericon-zoom:before { content: '\f402'; } +.genericon-show:before { content: '\f403'; } +.genericon-hide:before { content: '\f404'; } +.genericon-close:before { content: '\f405'; } +.genericon-close-alt:before { content: '\f406'; } +.genericon-trash:before { content: '\f407'; } +.genericon-star:before { content: '\f408'; } +.genericon-home:before { content: '\f409'; } +.genericon-mail:before { content: '\f410'; } +.genericon-edit:before { content: '\f411'; } +.genericon-reply:before { content: '\f412'; } +.genericon-feed:before { content: '\f413'; } +.genericon-warning:before { content: '\f414'; } +.genericon-share:before { content: '\f415'; } +.genericon-attachment:before { content: '\f416'; } +.genericon-location:before { content: '\f417'; } +.genericon-checkmark:before { content: '\f418'; } +.genericon-menu:before { content: '\f419'; } +.genericon-refresh:before { content: '\f420'; } +.genericon-minimize:before { content: '\f421'; } +.genericon-maximize:before { content: '\f422'; } +.genericon-404:before { content: '\f423'; } +.genericon-spam:before { content: '\f424'; } +.genericon-summary:before { content: '\f425'; } +.genericon-cloud:before { content: '\f426'; } +.genericon-key:before { content: '\f427'; } +.genericon-dot:before { content: '\f428'; } +.genericon-next:before { content: '\f429'; } +.genericon-previous:before { content: '\f430'; } +.genericon-expand:before { content: '\f431'; } +.genericon-collapse:before { content: '\f432'; } +.genericon-dropdown:before { content: '\f433'; } +.genericon-dropdown-left:before { content: '\f434'; } +.genericon-top:before { content: '\f435'; } +.genericon-draggable:before { content: '\f436'; } +.genericon-phone:before { content: '\f437'; } +.genericon-send-to-phone:before { content: '\f438'; } +.genericon-plugin:before { content: '\f439'; } +.genericon-cloud-download:before { content: '\f440'; } +.genericon-cloud-upload:before { content: '\f441'; } +.genericon-external:before { content: '\f442'; } +.genericon-document:before { content: '\f443'; } +.genericon-book:before { content: '\f444'; } +.genericon-cog:before { content: '\f445'; } +.genericon-unapprove:before { content: '\f446'; } +.genericon-cart:before { content: '\f447'; } +.genericon-pause:before { content: '\f448'; } +.genericon-stop:before { content: '\f449'; } +.genericon-skip-back:before { content: '\f450'; } +.genericon-skip-ahead:before { content: '\f451'; } +.genericon-play:before { content: '\f452'; } +.genericon-tablet:before { content: '\f453'; } +.genericon-send-to-tablet:before { content: '\f454'; } +.genericon-info:before { content: '\f455'; } +.genericon-notice:before { content: '\f456'; } +.genericon-help:before { content: '\f457'; } +.genericon-fastforward:before { content: '\f458'; } +.genericon-rewind:before { content: '\f459'; } +.genericon-portfolio:before { content: '\f460'; } +.genericon-heart:before { content: '\f461'; } +.genericon-code:before { content: '\f462'; } +.genericon-subscribe:before { content: '\f463'; } +.genericon-unsubscribe:before { content: '\f464'; } +.genericon-subscribed:before { content: '\f465'; } +.genericon-reply-alt:before { content: '\f466'; } +.genericon-reply-single:before { content: '\f467'; } +.genericon-flag:before { content: '\f468'; } +.genericon-print:before { content: '\f469'; } +.genericon-lock:before { content: '\f470'; } +.genericon-bold:before { content: '\f471'; } +.genericon-italic:before { content: '\f472'; } +.genericon-picture:before { content: '\f473'; } +.genericon-fullscreen:before { content: '\f474'; } + +/* Generic shapes */ +.genericon-uparrow:before { content: '\f500'; } +.genericon-rightarrow:before { content: '\f501'; } +.genericon-downarrow:before { content: '\f502'; } +.genericon-leftarrow:before { content: '\f503'; } + + + + + diff --git a/wp-content/themes/twentythirteen/header.php b/wp-content/themes/twentythirteen/header.php new file mode 100644 index 0000000000..094f74cc9f --- /dev/null +++ b/wp-content/themes/twentythirteen/header.php @@ -0,0 +1,51 @@ + section and everything up till

      + * + * @package WordPress + * @subpackage Twenty_Thirteen + * @since Twenty Thirteen 1.0 + */ +?> + + + +> + + + + + <?php wp_title( '|', true, 'right' ); ?> + + + + + + +> +
      + + +
      diff --git a/wp-content/themes/twentythirteen/image.php b/wp-content/themes/twentythirteen/image.php new file mode 100644 index 0000000000..9f5f29b471 --- /dev/null +++ b/wp-content/themes/twentythirteen/image.php @@ -0,0 +1,82 @@ + + +
      +
      +
      > +
      +

      + + +
      + +
      + + +
      +
      + + + +
      + +
      + +
      +
      + + post_content ) ) : ?> +
      + + '' ) ); ?> +
      + + +
      +
      + + + +
      +
      + + diff --git a/wp-content/themes/twentythirteen/images/dotted-line-2x.png b/wp-content/themes/twentythirteen/images/dotted-line-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..07f6c93f29ab47b71b6d203a3e5a37ab49642256 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqvYsxEArj%q2?+@iY={2;|DS%K iO_D?FfU4mV5e5daJzJl?Z~Y2V$l&Sf=d#Wzp$Py_6&QX1 literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/images/dotted-line-light-2x.png b/wp-content/themes/twentythirteen/images/dotted-line-light-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..059d4ec05171be7a9bab5140ee59814561aea8fc GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqGM+AuArj%q2?+@s*dG4>|KB*_ iFb|99gGmxWTntTjwpdDa?wtly$KdJe=d#Wzp$Pyq8W(T? literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/images/dotted-line-light.png b/wp-content/themes/twentythirteen/images/dotted-line-light.png new file mode 100644 index 0000000000000000000000000000000000000000..b7f82cdbfd223a587bdc7bc5e724dd798a7aa911 GIT binary patch literal 80 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png b/wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..82777a04cb88ca0439a5ade06381c163fcaa9dad GIT binary patch literal 1847 zcmYLKdsq`!7DtL*p6ddFQm9LXWThs40vWrCpYl)y!T<$?gzz?r84`;PaaF8hA{3)Y zQE)6%utG_+DTI(fKo%5{f;fx~2_~Y5#Rrp>iN!0W>f;91M2& z0m0(O4@TdXt_BBJfO1B|SDS%4e!9B^ARmGKE3G##ft~^|xEGYH1Ya!!=o;|m6_C=v z*&NW34O-%729AL7@4(qqux$xw2nXjS;2Q?$5rFbQ@boq)rGbi7peqF!{sA&wXD*ck zJRh7{54QV(hhspW1-eqf4l3x(?P-t!-r^Sn<$$OFZ3!JG_qW&V1Gp62QNDfoE7(Wd z6J2e!v6&B|H-shc%Iv$wj_V6`{xB!&a_vz6xv81;F0B>zYga0w+wOMu{_XX|H*Zd# zm^vA6op>s^kwv865JzX+^qE@H+41P{zBO65M!yi{XZ?IDQBa5%!um%o3d=NlG}6Q| z3$?rj^loK)Su!@R&8(#F;aZ_?-d$hffQDw~;!9YCaK2Xnnd+u;Ui3r@3-Kt0mEJwM zU_8fbzf&Yc7ci|#pbmW>*DC5;qIiy0m?K?F)+!od(V?WXJ zKhw>rzmGp76}qV`6j_0$tB1S%a0UEJ-nys0_+FoZnjUe(q!pbCWEIrjTMTQaF%v_| zyRfZZVOd)vvO?ah>+vDad$ghMwBwVGcn+3rWvrJspEz!xyUhOL6(q=T^9DLZrFL1o@Sl`nN?iZEhCqYFYGP7WPt3jkmPY#ZBCtiiH3iF=5Xc-pi z$7pq4KgcJ`vXSN=TSwMcRYu}!PH1qX6LH|xPL0G|tSC`l5ziwe3w6EcQruDdTs5X? z9ZqKd1|?mFBCe@dCqp^%e~)jjq&G1<&_be0OgtI(#OvzW8p%~IGlUpG5?Lw+3BH)h z!w>N<7)huL#9KxSL1iFm+Pt1yw39M9L-QiDiath^G`G!s=x zPlbpi?SJ7$k)~MLD<;TGVOr}`9*no_{6ptmp=E!TiL9Lg%%b}*BvI!1dOQ^bSc~%A}Qr5DT+bP?V#5@zBl87IH(TtV_+uh?B&FI ztG6xD`%IE9h@o#f<$y-i@QWi0Iz@rx`1WqujyU08)&;crGzse|Obhz$4m8JkKj&gU@S=jR8X+bt$wNTC zCIOzNv96(uSOA*-|AccyDYZS;Kw9>=2@fT}IuUZE9ZAIPh%_lx(}yi3dy`W2cd;)V z7*dM4Dl#7!8O&1-^s`EiEi71F;=mEZx<|uZR^WH+6nnYR4oyg+DPNuQso-P0bY03B z2ij4ky-9*oMq;&PLh~U=N-->yl6uhh>-JMD)2jL8+Z6iyf?c1urB}rNc9;AKZK5~E KZBU12%l-rXtfLVC literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/images/headers/diamond.png b/wp-content/themes/twentythirteen/images/headers/diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..a14de6146938dd619f0dbdd8657ab2427f134b55 GIT binary patch literal 14266 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/images/headers/star-thumbnail.png b/wp-content/themes/twentythirteen/images/headers/star-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..693bb7618bbe65c106536ab376168a09f6efdd39 GIT binary patch literal 4039 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/images/headers/star.png b/wp-content/themes/twentythirteen/images/headers/star.png new file mode 100644 index 0000000000000000000000000000000000000000..24ca62686d5ebdbfd7bae2c0cc8e3afe4f7e2074 GIT binary patch literal 22620 zcmYgY2{=^W`=2p`nTWxJNQP`fQ6yU!Yjz=&n0AGtvR#yAQZ!P?l4OlGY1%~G)RZYL zB!wc=G*Yt7jJ1gV=Z?Pr=lAqH-*0j6Iq&(rpLaR$d(J(**<;hvB}z+BDAZDCCwp%c zN-`ORLchUbz)wgDPm56~3~IC67KiB2&=)kTp_>ll&mE>-+D)`=c@}8?akt{{$%22X3#} zH|OWZX8I2c9#eX+=G;%AZ1oE`yd@wz)R%F@{(_D1z`^A;ZT0tQE|bsB9$06*Kfivv zZ^Dr+ep6lh_r_$rI_y6NyNq8moTxMJJEz^7Y8ZF3d8%RC{?nCL5BWB^7*`zL)_B6= zWc_n?#=5R=S03zjOy6kq#z%hSguz&m#S!ZMFiWe6j-Zj}TjLH=>(2NJdJC!hOw+BZ`jz-4wN^Au$yqeB9*QU9}85_K4&mV8LpSa`5Icsoqd(Z(} z_b&Q+!F9i>=Qg~KWBf{w>CbV$hO?t4x?b^P<|N14^SU;J|~yGq9{nDUxD z61RJOIj29~>^S+Pz?Z@7Bgk&|sEcxLx_2Zfz!(s#n(Gwk+_=`b_( zLr|*U^76vW)X(X@#F2X2kqoWTOX~+}1Aj)Wf-8?r3%)QJiNiGYpC?xTjMbR@+4`J$ zc7oeDJ@M^XL(0_Hr@<1Py6hc8r`G%^)ErJFkKQ)@QNQ!|%rLK1Q&6QfSgAj9&t~+3 z;qV##pO5zcC{Q2HQ6I@%F?`j0G{@lQ>2hYnU7mRt8)}t>%`EQT% zFY0x-XHBu7i7tr!{>)Izsj&hb-p7;A?(P}6W&fiq%|dWwEehqU;B0TR1)`387CqbN zLU8;#l4NoyHAC{5+pgf}FCucc9<6+n*>|h3$!Gj`jG(&VZD!dGuK?))>z}`txqTOz z>2WkhjY_i(7J9aQ|LN@Bw=zEC(ctWMiyX7FDsho(_Id2g&fUJ(jN`cZQ)$SW!TU=R zHESL|IsE#77^gZmWwdyo$4~(8t6$}lpV@9BE_E+4*g5BiiNQ-Hvut!(_`QSvhL>C= z&+JBtvCR~;vo6dZAzWW8w~}({rwNo)R*-Aaax(=jyU}@{X-d=|x_M-Z$IeNS!@UzL ziYZWPw9@t4M>J#_-ya%Zc(ToV%nKQIIygXrj&X8$mJpfp!ch;^pZ#N73FU$3(2()x zKBv=#dz0!vMDS6}%axz|-Y6-On9uIZ|M6Kt3A{uJICPnqEWkvZzH0G$g@gy`52bsj z=Q!&1buFIs3XOp-qp+RHXLekT<~(4bHMGrBU_%#legB$?Lb(=AS9RkUQE|f6hNUY> zgW3br_e2y)`rdFQq`kn)=8CReBMbh{_}J={ZOlYBlc!%)tzt=trOQ-8&VpGp1v2%r z3WZicG_Yd!rsB~#Z@UM=15K49kz%C&^M^o$1zPko7RUWun_1}jOC2FO$~ z+~4-MhCr+f76|x%E)@|O@0O65jh`QMBn_^heA|GXvzx)E&fCxxB(utnU+AKhN4Vy5 zRg@2*Hcl=9lk@3+%U_tC)FvQ9F;Ur9p(DRad6U=88 zBwg{ND?~io-&FG>(?uWxahEv>ayZLMDcsJ%4N!8~z7-u?$qP@j~lrupk6|4tuT z>Of{+_X1M6(r0e0Q9s!QhP(PvwaQ6AL+@_2Vr8_>?NUq>M4t7AQx+d9z%n+nlojrm zQa-9yLQGU)z*R^<-WdDk?L!xVk|hee%3u?{0LxI3N%tN4bT(~^O=Q*eAK{ho1clcDa z?Y~FTcC}ftED9wysw!)u?q^^Pv`VC2s%{{F@%KCwsJRVX6Q&w#j6YpKfU*57y7{B|uD172ojRgUBaT*458JZWB5|VSRUC2u9Xg!B=ia&JrcJ4q{85FZ#eu2>R}AK zP%p1bL(a<}izhArB%|4bqye#-Cot(dleP-gbmxv6U13Ip*{jV`CQFgJyY#ADw|&Fd z9}6pcf=`Vdq+=r{wX=Gp*I=5>5q(_qhF4H#tDsfDb{Y3?1*=cXwU~$>zR0a{=8Nrq z%fqA(epJoR;);SH9vqkb+#7%5hov`stsv4|*fw2>RJrsyVuUNrvPytw>w z55c%dF_8gmoxO@#6i8PP8uQDNFXDu3;0}x5y&PK~x-)rXA#x6?pE)pW>gg;vihAfb z<;owIQhDsL8e!SU+;Nl)Ku8ur2jJ)dtRKi&{A}#6-pMG+a zhx&B(L4!#o2YsaK~YI%ivSndSm z{W&Eyf7yB+<<)ss0Vilj^m)zz)|MU{zL18EAcgBmk=~V3l(M)>u~JbO`%>V4hV@ym z(e}hUz%&+dV|T$F0uf6|xwkWEPH{<`g~7cR?&i0Ra?o5vK|mRz1BSa3QkoJ&)+_=Y zsquiwJD^kHF6gofTTTKYq5sr%$*dB2giZ}E2#TV3_Im`EI-^bBS5QR0{zlv1wkA3W zw32x?V(Ie;&As6Vd9P1@6>XTq0_Azb-;q_8S3zNqYsoz6Ebg*FM|trU_qa5DCw>mM zwkFV9#+NojD?*<3AVp48{Rg4ChhPIoC7yJ6XJqohKS#EoRu~kL%|YfJS|j#6N0ap$ zUupa_N&|YfHh(^w4=^ONpWJqQdnn*YKXY1UW5Rt+C@tLQ;l?C6csMWTGUB`0|7 z$*crZ;=3k0#(eiWiab|kcGr246+>d_Rsh20;|TM0D&kT~&KW5Hm&HAld3pkCxZLrO zx;Wu&Rf9E!?#~%(8Ap9GbrEnU)~L+mzcE%&@;PBN|Kq5KQN?KPHx+Yj!bDOqkjyOQ zgW3T(kOy43Ea%>+6@Q^;CF!yE6#(eCR8SJ?osJVfG>far>Rm45L!W6|8=r6#CD;zE zs}d6Zk|Ig?v1t8ME-Kb?@DQd&yHEmXL-63cu@SW_Er(n4tX)eeQWmGynv$r7Jg#)k zG-Y+whj9Ta$KU1Q{{wpw0oHAp5`~u{05zE2Hl?JhFEYW3S?$}*S56H_JWX60TS>;3 zKJ(?-ujBpV(WEh8#T2^2z3fg96#X~$%2q-(x>J8#`QIPO!j~w|PxOCvU=SHHURBUz zMJ>(?y|g2jgih|N`aJKBf%WTJ^p~KxpN~$M6IA9-BqbY6-afr- zQmMtWv6G-N_OC>qYEv4h;ag?x84Ejvz)n{=igK?D5MrAi<5`u8ZIJ6jSHY^ zLfv}B5(UUiM@0&Y_Ov?lXOmEI14k}uXK4{gtPBhbbq6SyIgAj?o`}|lB25qjsf4!Q zqimvehw*N$a5fV9tMsj<)8Z{-7{seFGzWhEKF_JS@7HYz#vYgITYbOZL>Auk)LGCb zyMhEpz8;!9*vA!}{d5&FOHQX@4S4NwX-&Vd9n0m$@Tpi{_Ie+9sgvN;X_1t9^xf=G z`b-J3t^mL3udcM%`PGP?%~Eh6{+%WAw4F5|2Rg4^8TgZBNxveC^83D_j!q+LtKe%e zw|{cs9~HSXCsj=3eNN|i1Ap(Zo=lwB*BP@MIWGLa;`+o67EE#{?fGZfl8k%VL z;@kTxrAQ%Hpd#dHsX)oBR!?Vs$)Z)ZC4$Ylbe3Rh#B_DmjCfZTFwS&c*4&Pmu^+~_ zhBEu1fri|thq{AKa{T&Yjc$E5?WKsC7}_pB(0p>c$%4ef)@9+3GYsl4Lgy`3hMm8# zF3PFH$*4S7N!Hb+)0XI!q2-;~JWjc;(H&e8SrWTQcdz0-!u!JikJ)kFgz)rQNc$ob{yqA86_nB7zE>9+^sH+zuU!p#UkMdwadF&loU7hGzy zQ)Ly7il-~k{c+Uyo+JW%8qDp|tYVI3%%Tc^i1b;rUN2+?lpsU?Fg#fXbaj%Gd4{W^ z;lg)0|ISA!s06dxit=g=j`}xtkN|t@8PW!I+r4w!BfB&qt-TzcT_aO38BL+pgMt7{lhUM^dLgp#XhpD# zaPhnv7sAa8I_yI@_8{Q228~-){uXGI!Vm2$Pm%(V2B78Ohf+)lmISMDhwl-ql*1`2 zEm^~7>^H;fd#B7P<}yC8wTG+PX84O8e`Vi=mCW8-$5RqD-{XK1>dX&>Y;3Za)CYM# zkzpijBj~vJ1$}f6nr3pzB5Eb&;-1zIcmyx@{IlLKgJbP;Mg;f{Ai@^F*n&<~QpZYc zgbvX_n)LQuW@d;CB6!iF8mc>Y<(E?GDW1T3{Z=8^0RLJq!kjB@IKP@T_Z_E7`5^B^ z{jj=QP3RROeABjF0hTAEdAdcE(yS_JKpxB3PgkJ%ucSzYih)hF`64KxQ`e4!0k!a| zuT}wYss?8eccV8Y?quLXpQ#IZxrFsvw1JI!iP02}UA@V{QLxY~+OUg06TStLT5ost z&^e5KPYS2A0(uN5+HXu=@j+4`G9P>eaDm9H%OlFMdeb<^ZO>Re zaxK5%YoF#8!I?uQNGOt+)ZVcCol1j|3ZRw)5dUhVG~xh&@ascqbz=)HfPV;EA5u)* z1hzu9Rs#vKj0Kboz@^&)*jx1j%6N<&;utE`h^4(A~Oq70g#Ag0r>-T4Z_jM<{}dW@>>sIrj@t6$%K;|KbU+M} zD|FcmfB2>S`XBK!^pVgDQcDEjlicGDzeR#VhpdyGj0%G{!yA*=S0Jwro0wfYlRLgp zmN+vwtKWR>uR=oX8+HF>X}bc$KgZC2KDf|fcw4Ya@wVG?Wu~KY^)d`oeP_RaeY39o zQ=;Fh!my30#rRiG4Z|a2y*2iK+I8eM?wZr;{5ATH4huIO#`+2$CbY%zCXSuFzHlin zscs!p`5P(@l48#N9c=U4emu7`PkO_Lx$fOd5d+QX0YPTS2R?f^a4H69C?+|z653Yw zzH$4Z+Tu=MsSR7;9qZG;a%yvR*k)K>RgZfXH@Y|@ma+J`a9-*0hMBn{Oq|Mk)e)8Mi*EUowru;MD zK0=`Y5oEZbHQtw@;@w#AVwkv-DUh$=Rzz**qnpmGofwC|Hqts&`9WbOWW^f(hA@?# zEZ#Eck7LX4NeN$i&k=8(Oc8Yam{C?GB^*IarJENVU=gLg9GPQ-HKh#NarS(M=&VQA zP4C1MDb{O|pl}e;syzkftq3i%)gI= z*{e!3IYxlH2sHmh@Op1LH|V)LnBmqATOwol;QH(;pyp>QNtfT@B_{bc`~XobV?E+^ zzDcRj>h?zi1Vd#kqT~l-F)F04{;LEyX;ZANEbJ!=!eq54Kj8H@GFxGF`xKd~jrdG{ z54ytvNC5=Ytwd}VM>VF`rE+|)LXTn@nZI1$Hdhgn3h$kb)sF)JELeHyUE z2cC8Uvo{~hn#0lji@C)KkE22nGDrNve8YqPlAsz{nm>}pF1rj_A|=}49mdh|LcXhz zY?O-a_@{u+f29TiX@HY7*hinaAlhKgvY269G%Xeyb9g(ZxyL${vvehvVVnw>?@KK+ zxeCoxAekz7jTa|^_LD_G8Aahg{F~J_PN;xK4^yZ7Ah5XDMg*9tzcHLGLd_N*kjhe( zD~H}be+m#>2HY$|hpFc%(1(zE_PllHX!~iE*{3JZ%AdQKH)W?v>XHV@8)z08&K-0wu zj43Q|paggyRy=(QD^#{0o~h>qR6+NGo05gdi?XT}7J=M5DY1xT;8`Sh=lEWRN^STz zeBj6kvN!yX&anu506-kjvEC+R90EK`WYm>GVVJG)V^1C4`fC7uvJn@tt?bKdKSnYb zEKeO8h#3?ofI>B+4ipd(2UCL(`K`x`+5d1+L{@5xm@%8i%}ZA?mzccq_$j&q>?tT| zoLUzgbstz+-EUFD%pCB3C!ozTW0osOz{1@4j!?3_yI`dj2r>NN;XEV>Tp|MtL)9a_ zq2NCfQ99I%8#YtVUD1E~>&VTcwMdl;xHsXrAWxp##{_2>wD?F+mvAHRZ1A!G$ZVWILTd?Q_|Lcz_`@xi9?tpGW!bUi67D|}# z`P?tm^5Pdx{F1ZhC1`c8HhAm*_iS*;Nc%Z8NHlhEN(j-)c~+asJ;ysIk0?rC-XJgk zzUuaUqMx-b)?n+_&{ZD~>{(_^SdCSF{IsI;(aGB?rl8DpiU=779P$GGqWab`?@l z82nDAc55SPSk1fOjXVD>%LOD#I@BpFV;#_aH*lDh25VB?_%51=lH0y(_<-ja$LZZmk@Vev`t<}kA-V*`47Jp-A*cn8r zo`QxwG_GdBaK?i@q8N>(r@5mm*4K(M6Y9=94^Tm#T*C|-11=Lt-y8h`>;sRtPC1-B zh0eJdnX&-%TAcZOI~sAB7dV}WZN`Tt>S>5b(7Qblq;#p2980hbwBav8ap?Gk^Q#f7 zo949_V_9J!=MVU>j?yu3jsUL`XC|ytiWM#*faVXnc+6o&kSO3&_hw`)Ltt@g;Lo|- z<*T4=Bm)u@jpTBmvZDQ|48qe3LbVkE`4RQVB0$_I*;sub`6ko^_EBJ+<}a-fbNioh z{3yWAZorgoq1=a>lou8_QpFpN*4Xf+R)Ud=J>9t?^RYr5&VlWwRQ4ibOTco&G{@S> zKE{+Tu+IZZG$uh0?fjkieiXs$9BHIYyktZ%SWwKSY~xdvc^j(g~5droIFDu zb&tfijaXiK>>wKnBXdNCvY`&Or}Yq)sRvez#F!Z#a2PsNWL62Je1XW1r+0(wl*qD^ zCLpij*pFW$c9T2Xx$(m_4wF9+|(CncR$F-gyQ{{$g{b3@xWKNeR*CdZNOS} z)gZl9i5RW!o@k6lhz<6}=4w)E@ARb6vrD^`52+Fz* z6cfZf_FRP!wOb<#_&MjM zDVu7cYhAX=Bp&Pqr?rMwh#to>wgA5&xSg;qo(dckSPvLQzrBiTL8P0cag04c zaS72hK!{u3kpBvWzmlIsD$ z(DY)aaDDVNP~y~=Viba>0g_H6di;g|d5P&7rl>iQAx5i-iNTjKX3DmZSm?b@xISX*?yI&8H`6T;KF>%14jAGTN_5`DQ>FXvR3 zpOoQvVCps|eFKt_s6k)0z7%(=E=Dt5`{yX7g*d<8S6|Y~AWb=VTs!NK(P438(Wx^Z zno^fjws?>bOGr3SJSf@>HX@Fav~Cmsh0#!C!8oeHu1vUL`Tb7;3$03b)?i`l4~q*9 zs~N;JhmVP`f{OZ2H}or0{6wTko0b)_u;Ule8YAetooi2YR+9&xv>ej@4BURTJ~Ep2 zG4v5-S*vzDt#0EIx<8ur8pZ8Z)&}$U8q>mXjn?0gAnvM~2AmMOqLAy3fH^Auhhpu5 zVZBxbB|Bc+dV1_inn}zQ3d?wfPem46{0GxqW0d^I8pnQFhK+b22Qq*-9NQFt#w*Y6 z%m0JM(hI0HS_-Oz?~78T2)~IDjd6ik=CBVxtquDWC0oipWXu0^GC5iNVbJu0zs8xE41;7BGrkgtKm8ye=0ZR@8dl^~+{Nv2k+S4mY;TW2~E#h%L zEtDH2V;Agp7{2IA;k1HM#j%Sz!Yr*g-0Y`BdIU_2u&_kDY5*3HA@JKugdY(GC|313 z&ZF*if4G1nMCLXPzzgW%RhAm@|A<#_pJ9M<#{SBTK9DoQjE0-)0F_vcZh=| zLhrgo?D>t9W0~({;Kv^=iVCh(td)`uu&Yju!LPaEkntM3%*oKn#@Xh8y{%1q#Z7m@ zCbLxUR7n%!jf$@NmCq8t@ULwuywyKQG2wjC6Cm@TfA^&EAsLJP9oNC{OO zOj2VuQr9zIgHCP%y15lQZhRdZQ5|Vc+xxSPe33%WETklhYDDiWOH!Q?pw<~>u4_+0 z+gAe)+tU2mcB;<(n47ESZSJm3$t`vxjs9N$43OKF)(yoapYbr+jY7-9!lh_H13vJ? z_4Vx*w8~E<_jIP(U2j=N)!T}?;ttR+a+W^YNO^N}5+$Mm8GC}m2+sUho+Jftv*fLq zAb+vfvXLU$jg)aNr+h*h2cNshF-}}V%8zIQrIv_VqkN@ePVJ@8HgNO>ymu8!+WVPO z7r0-9OrB^jr2N7cV;Kyv3wNX`V1htfvBmC%-3v;Ahd|erAJDKRZgAhmsH@8>3|5{QXki@GJ2DluO_kiEnb+!sj$J7IXYdz$%Yqewys!2~3h-X%_+NxQRPdToknD*js#3**E;^}HX`{AOp_c}|{jdvx4jAW7MY z?~*VGR#2NTSS+=2*FF*pD1oM+t~A*Bvi%2U?=kavG4siNy5L+AICzCge}>ts>qzt8 ziwcnlw4vAC)MRC(dC%;D5Zf?exp0FE|Of&s*MK8M-srq7hn zfCOMQIh^Rx@}$5G?P=JhQNOVUE91TH2w6~ojToFq?{3QCuqX=dplJr0;Hce&hx53_ zt^=qJ)%wZ|BI6W374!hXIihX-e?@kOM#~~6G$f<62pgj$qYClgY8tQxa_OSdmMh&z zKFd@|Oyyt>3co*EX;6|>z*-u$QD_a`WHx3c(lpfKl^1|kY#{~o>p8|U@&pyYcAUZO zWMsiw1TjJ(kq6&S(JuuZ`RzLSqWXk~iw9n|(z7{JeAGJM(`c*{pIZ+494HwV0rmAU zaQYyke6!+*3tScez?D{)pNDB)tqZz6^AYN880|E2u#=a*th16Of#zdr=LjBmLbRj(l%5BNjk4fiDWLt0)F%zjWhpgtBnCE26M`U zb>*8ZEC977+@oHX^0VGUffkSji2t9r$-uWhnJg)TrmTZbaz|ANb0AAWHgRD$U!ch8+)?QSQDM+p zP0(-u5p&(zqECvwB?KGM8N?-1gE})K(>w^U7gyx?v7jE*x@a=Hm3559QPDUetkirJ znJ=4djO}4=Z#e-f6UEmTH-ZwYKxC;|wt+I@VwRLb;Xmj=b_UBq_wLnHumxnI;lTGe zB|-OZ+zm=0Ol39w_L-WO%B1OWCmu*HKnN2RVI~AVtnh}VUy`8evzFQyxt+H<#z0d3 z5L7RMYDL6b#!of?)ff@X)h~gW_kldG=~iItX1FPKFx#L#PQ+|WSn?oM4HWG`u8QSd zylw&ZYyS;C9GcF}Lkj4j1us<0k%rw(39z>a)085dC$L;6T4i8uAEd{F$n0Aj^Gklo zDyUk+2cF%bqVpA>3gnYu&K0ez1&tFBC~ZMeg#^W3)9YaqSjwfGzQ{FT6?NP9BvAxi z()5}0RV!$mTEFk8JEDl%-d+Wpo3u8O6wdL@L7yy_elB-i1?H-i0NZ0^x8?r|wQhLT zl|^aMB2481?jz%Baj?xA1+^ZKsDQ%Ugvjou6t2o40-(e_FnLiW6q_HLGIp``40p8a zqpIfSe++Ttqqa4X{(vp>j6eg~ONrsIJk5d7TyCE{kkn}T)j4}_xM#plFkJ>IGcZhx zyCf)cN|gl8V@+h(*&`XvY66aZ<82Q!!B!U8S_iSbV9Hj6erU0Dz&H{lE@z`8p@K<$ z9zdR~Jc{g8kmgG5YjE0%?*9fX6l@tQ#M6UDC6IQ=)$<4)wgG4jbp88@JgS)jXoH9O z@A^+!P0_u4kT_Sx{Zs(;A7u9Jxq2e3A}!`?xt23C3j~m;fmE$y6R_f6=(}udU&ao3 zpQW@|b)kX*WOK!{=N7(5u}@#a^7hu3LABNE|AE`xqDp$;g$Rv^0JeD82rS)X8_-vG zY|<|u*b`7_K%)1FAN^4C;8T8Gvz}`quRBytN?pc`a%l z!~;jaP#Akql-Mzu`QPeVec*SX9F44@C-14sY$lou)KH-RTNd6YNzgmP9T4d=Zpq-( z#P4$3A_-PG8k!N)*M(x~aYO)aji)LhRi`PbVr^iXKVfZVn8b3D-qi{(_`bg>(8Fth zYhU?;gR$?4jAOLAP(LYFHKVV1Gi)cunqzs3+3@uX3@Ib~z&SgG!4pE=%LCne4bU9~ zue5<#ISV;wvU4+B3KHnUDNTP5k}=Jxi^MZY>>WHDfQ<;Gn=p`K)@Wy|&;XH=he>9h znXvlNzXLRj5$;!yg(q`cPk_Gi@hiiP)_-{I=PLogYEVeedCsADkSTY-h(j$vbYne0 zrwGpGa+V_H-s)B=j=H3C zA6ehA00M!h*`dj~;IJL2(ZVFLB-#2nPK;vV+nldnIIa zsLF_bZ3XhHYCqtRvFSE^s!sL69TZ&*Via14KLj=r(e2#o1wX)1$J#S&dH81HKZ%Pb zP}}}SuOJ%CIbe@1-_HgqWn&QH3!QkxTj!$gkS`~W9jcn|HQCI7|KMo#5-9roPN-;1x$aPoTCimdHU+xp7w1V>ZAk&FhqB{1lp zI-pQ#fWgvYC5gP34PP9!wV1snT}$XQFKrF&1hQBL$Q6?E_buND9=<2_Z{)eC?#v#u zKJl!?$U+&|yB8Tb6zP78EgESpT_Nkn85cpvv5mBu=H~jLQ7=iMBhZV^Q>DyCyCFoL zJK?Z7t;Q=1UB^Skhvv4-k1ZbflCz)08y=s`1QfP*}xO8ae}f ztYU!g2L(dJ!yVGET#h`?nnYX%@6pDTy_^1lXh?b0Y9s~l>q>%fO9TF_7_d*d6dV-tzvwzIQfv{$8^CMm{R<|s5>Iv~-z-Vvs*wK+ zt+D#IMU83xbX&fM^0nhnKA;3L;3$R;doWrJ+9VAco!hQ2CFrn!@1ubr;=UTk7JP^< zFMh8MRm~h-1!*c18DDfw=n6Q%4;*qXBZ5MJ-F@I@RN=v@_7nQ`w|YbyJ~&?lFHg;n zH`?t7z6|s$eEcK{A+7Sj&KeE=OL8oRi9HNJ)2rTEz+4_Rt2Fp+hE;1SRY6_FU99E7 zD@CF~Yh(%=91thKf`qn^^_RiZ89;{}5;4=_z$fwkp5j!^q>(@x)bV|}9a7;-$oVgo zlk=$hag`R|n6K^yUqoUYC~+8rD(3+ke!gT@3R0O!TlBUdvT&kiZ8JD|-@TE;Esuz4 z+#r|Sf2mB37=WgvS86zf#4Dq&4rcyq!VdU#~Jbc~TdYNDF03EWJ$7L>mc`Z|ULTX-(g#;{v!ZN7Jwa$S6_g3h|bO-F45k-pG zb^Af9ZcyNiSqGSw*OQPb&(w>~fk9Z9^4>_Fk=J3rDWN284Ou&T6zs=p?EnwhYKX3o zsIl@0eY6{>D)S9E^>@4u9KU2$D-wA>^u%bKpnb_B9}Tns=h;+s#EvAeH2-_c*Uv+Jaj0{*3A>QHWjyPmJC*2SO$;WDC{YY*q?EOT3LyDs?Mka`VH zP5n(p{WXbfrO$!&M02AV505c3qnVjG`6Q_yW&}}I*yGkR2fO*LYrWUEN7>we=_0>$Mh5tb4&D;5{(NWop+G%U2?ZIx8eFo@BPqB z&VY2ES*Kk3MxnEGeTK&)bY&bsT9^jKQb&y`borhggj?#-sMAGxBuLX*I7d;=U%MTt z+}2bio)uSOBU(@)dEmAVZH5k#Y9JqjM)H){+uVY-ZwQPw2eOVaPBV{ zLk;>__ccfkmdxUxeQ6zK)!uLAOM;d)nrCT%?sGL-mbhkemks=Cz`Mt4Vzj!{!~ukx z2Aw1Hy0pLTzwLftKn{l9eTh4OIllEPMupy;IDEq9xkM_a#e0`@{LS1AU#|aMEd&24 zZ`9EN{sRa8AW>O$Pz1|Z$#UI)!)DGjxy8i)V}^cShcVA$!!3LMkV$APNcNY2%u59u zVE{O{t9P;cBccjSV+l4QQ7j!$A&*=0yUlnM@of5_gt}IT-TV3x0UL1w-O+SNhnl4^W zCwaKSunbyLEKJZq9u=C3xUx?q=(k)nDec#GTsy;llP;+J@N2W5j2d zLq=hiIK%-nrd1m}1AI<%IwL0QTY-%%#(zDeM_q?JYE%LJoEWO?0ST;c74+IFWJ;iq zr!u91)hgs!{O4OwNH|s8+Exjk_tcSrXGfI}C}SheiaG7fK;8TzI#GjS%+N zM-9MMa(V<9d4cq##1f?ASYWks#fKoU&lqoYl7Wv@_XwHvYC$@v;Ggpe3R$m6dO7=5 ziWm`l$cC?rY|k!&0O;RDU%^!NfnP1YafutW;sm!A2{g9+SD@j=28T%zk1tB|-v#`_ z&}P^w=*tk2tF`SrDq?nH0!hz~mDP=H5_1|?>O!1?3OIiRT7I1rWJmle_Th)?aizCr zXJMMv(6RXv(G*WX#nrg05Fq``q1W1=djtqQESPys3Sx z14d-;gE~0@^-N!8%T$Ox_qy)`E=5?7N9iF4oGrO(9EheG(r$Tlo zr*;_00PDe8%*^@@=e)#e$rj3+uQoZ7CtK|690{DK7k5%aO0a$qC`{Iom+VRzn?_fF zM#qbjt>OLy!FV2(@`B6`8~^G0675YOvo9r*nA-)&1&foS@wIZW%O-0C zfdCKwUAuF{A~H2*@ZttHYf9GSCSy^wFDNDRoaof=pQ3 zzk};^5nDdHOT`Ytl$dyM<7G+~?%*MJOYz_^*C*uaT6vo2Y_rwqhCtJjZDnC|t8a@o z-2HQ@ckbD|#NJF|gh$Pmo@A5ZOC0z6hm$M6n13!m&pA#5M`l&b9b3z!vW961$vP_Y z;!ZJX;cGzI*~EJU+zt~cIq_*kUK5O`T9M+v$s2&16P@uXJMWQG2P9I#N!qW^r$kqh zKsV;9OJLb~Ze}jH4jWcySDF_?ny+cXvs0zhwVdfQvhuB#lxZh^@S4NPD`bqVLG4zz zIM0pd-!0*qFAu19x#fid&SEk%QGJy1w_TyctjLI2bf6!l2Clbs|3%g}57f<=Q*a7A z+xGLk&GpnOIMINnIIJg>7F5MHMghj{7 zO6#t5%(*l-Q;L&7i9+jEi5WDZ>b+u$SU&c6R@Fa*_ReRtYD1sOH)R(XfE%_o=R4FZ zsa4Saqgs#|<&_#zK(7H;C0EIOK+BGa1pT}w?zGMCg*D}s5VKeO-M=j+Yjqz1RMZ7z zR%3w)v*>Vg?jF}zP;xtdRCOG+{DeZwl>?`uQa-=He0!`CZ=wG#+K1n51S|X=jhN!8hyskf|ReT!dm4AqhXzBfs^Ke#4wLi_| zWr~os?4(Z*Pju_Ftv%aMBPl8FUDo{WXZU3MGuz7wA=l;cF3ZAPuBBpY%OG#>EZaK) z@%+2=oepQHB2~-p5R_62q*%}5Kkg0Mm}&;eU0f+CFA{$zt%PW)BfYME@A)`Go&|4a zV#gl{YAUxdP1&d)XAGciGCEqGQ)|`=uH9wre1|ZBwHi--gr?Pqen|iDXT^h)5#a25 zVhXtEwW?9CuxN5MQ%|b&ZbH)F-|}A4*D5hapSoqXGYq{`s6fuJXJ zj%BqJfW!^ZOz2MXb_H#arKv&4m9kOGnxc(6ZW$mom>Ik zr=Kk-(S%rEn^u5(QqheaMLlIPYCan6E;b?Zmoi69ebGOP2r^QOqS;Dj-&u8u@;xDRJT>?-3eUFxXbi@#TlM3ylnvcq z7EW9Z6fmng$W83R1K?9Q(tVl(4KEc+EM`;m1DJK{ zUe!VIA$e&+r3Pf-DF6;qkawW9sLIU@`k9dw+PAyju`b<5Sf|j=^g77TXWkU znf+k@omeB4G{)PF$}Zt#X13K^ugRB)SE`#UbjjB2+maX?YU%b(11ixRncRVA4^TFv znU?u@c0S>=G{KEjlU|QGyF0Qx5L~v-+0ZydK9VISji*)_vH<32mE3Epl%}E|bHJVk4gWJk3R8@$8SR z0(8Y+aC6*2`y~)tE(M zm>p%Sn8OQx1`6x9+?U&$bvSu#5k;%gjdV~yORNTs{S#cYi`M<4DS4;JHYTd$nV(KK zh)SMP9~eLtiAkcS_=^Q{p(StlIPk>-Lk( z%eNSSo1??6#-1wo#0VPD+k@bk!WHQCGK=N-8SzqZc)nd(kEXa)>pZBFT;%La0yBm< zHWwci+ijT}rXq*)tzLdv3e4$mmfSp(mQQB??vF9_^%GCedtot2%<|wrRl0{|aFF*- zr_T*Zw(QmM{bA@0ZvpA2i})UJE%~p=@%v*7*AE2HOoE;3tuItU>ryV^ux5mf+&s>d znF^`hnwf#dlBuv=#Qrnp6vr*Lw7NMIId7>e|M`s^DWJa8Y!ALjCXu(f18cw##eyU> zySF@$u{LG%{anF^rzpemt_#?RzEQt->zUOWtS}b%7K9Hy)|`N~x&4yN9KHvvjNA7_ zVlwICFz{(f_ni1wz=uyTa&Y_=C}Ub`b&DB=udMc4qVk<2)`6nNn%iZX9nrKiCK)9Q zI|;7*1YZdVS*y>?z%ohz0y&5D5a0)}z=OO~9qF?P3-nb?JK{x%$}9J;af&7=bYp`9 z&6?E}?Qw51IqDs*zJc{wO2I!jDVAdzWK5PkC7&f$9o{*pTf{7{UMmrcUaqEAbn#^U z5rx%$&>lS5=+S<5O^4~XWy@^awI3*cBp9CGWtFE(E+efw_Y%t34G_vH;;vT(%~>ioDZ&GJBb&nl~IX)}9ocl#Fa&7O=cX^-&@(0(|Y@ zaOZWy0uB(M!T7NqZ?A;14)Q$}m$Qym@st*{h%79v&U&pfd+6#Lu4w!UJiFk&EWGFa1a7~--e0hoqfNLFEZ~MiDv^Tw|`otD0JPr&udL>!~yJC zoZ{EazS~kxf}!5XA;9hUl%`L|u62cG*6cfnXd7q^Ny6B%oZxIteuQ$&%l=Qj&Zrp){Vw=|25)>DA2e1$>V=@(`~ z9!Y}zfMCdCIvR~tCVgy;l!d|F{V&?A>S6E8U)6UCvxcZ8d!$LbH760>Gc3!Q5@I;1 z39zHyLS}nP3cpaTIGRGrP8qWsbS<$Y9mTE)b zvk{t&*T6SC)`a1y?<5-kuZU|8hjQ!U?>qAjGfkS&Oejq=F{N^iE=rDEL^{D?Dg(KkMAtd@ZE^5N%DNt}k8m#!JO`;Q{^*1O>LXUw zYiT2Tl7g9xJdNnG4t{3Ky3zh0v4k6k^1X(8U3BZ$Z5|D7+I>2+)xLan)UJ&PPI1kn zF(ON>FEcP z8OPq_mG;pM`-SpEwMb=VUvqG$e>FTe4*KY`tSUYidDPlX*WC#DK1k&urNbPU8bAG} zTzu0DGxH9~DLKpf-nMpQ`Z7UpMgH4y1@R+m3~f3U*Ky5}Q4vrjl!PTn4qQH)l+`lM zr15(qR~1+DnMSWdX&q!>z;#3MIM1W&5tdpDxP#b&4`sZ#|SZHVia(A;KpdgRb z6DNmv4Jt);3ClfYRc*N~)!g#->cE1xgZRSUWSA_|EXrie{&(MWTv;kymyM9%I%Aqh z4A?pz9)0q}6uEbD8O-5&QrVc_+mNp#fYT2||>U9heSQcEZ&~ z*$K0pwOmcr;j2t5(=DXs;*I6ww;UUPEyH4zP?K3qsDiA7Q0^#;%IrDDf;D); z^LomQ@M(Wg%Ic3m-byW-d8j4Vtl8=6RZ=!Ft0sy?6|Y9gjO!9^6<(bpPpc~7qT2Mf|wo1 zKs>=|ct#*##zotgP22avwV1vyLs2C9w&X$+uHay`zYv+yYK9I6ZFkjY@7Qn(Dj-s!iFd@#s__H*?^W!6}yb_m~sgEcyRs~um-&NDP z1py#2vjL3d*vXtathA-!p}!||W#}QcKvN_}r?0TJG-lViBV^Md$|TTsHBHwYy36GF z;*+(u%hITHfk5(ux`mm58uaW@t6*Mc%j1kzUX-&(=cqmiEmF50TcZwzq84d{AG?R^ zsP-b?2&$U}H676%gLgTcc}Uj%T$QmoMxjIuOB#nHh5B^A_tB4WSwC@cKM0B`|Bazg z^Z_EK7L(BC{e+$(tF)=UV5N0yP>0WGL%KRQ=za}jv$Ive^6+jHiJ*s83n-M76RHMi zbN*7d& zrMs|@(gVw9!PUO%@_B+J)dR*CkE3SFxZE?;VQi_eM&uwIwv19-E;4wv6NPrwOogH< z&=VP(8My}l@$F+RfKOlVuYB@w=(z7L8xRW!ry+%K<146S& za9L#Tr`HTM=52M#umn#EQ0HPpne{M}MHS@aD8k@uw{POL;fFzWl3q6a(MR#@_e=D7 zTX7iDX{S0GAf-fu8+0LWPY%^LD5t?~#V z-HFl`mL8zq+RYMMx&l`}r8*7n&aXBQ;xmUA_z8}?N&>-NO^eJr(nSGk!~cW(kj01f z1vW9j3pIO#_w9S>0qou1x8N(|k=XK#s~UjZ86jI%8qCE60w-I`pJ104x2zL~qhe{; zGyqwWt3p^Rve90zi)FGip)YzkruVhgYAEi-D0%YSuUJS0S;sGN z9RZ6#5f8@$YRYZyr+OK1mK>m_SAr)ke8VrI$AdYU=I&8p7^9MuF(fa0O8Df#W+($H zP$>5a9KyFRH-;k$<)&;i=;D{OA=>m-E;%Q71svIbE@EGIXVw96fE-N_WQ}g*bDa;a gmkw~mSUhg4IdLZXuSge|8jSgR`z`#h*9PVP0I(|o#Q*>R literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/images/search-icon-2x.png b/wp-content/themes/twentythirteen/images/search-icon-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..02b63b8027efb48e1edd1344fa8b81690df30950 GIT binary patch literal 829 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sZv%WnTt!5L{{R0EBu4^z=RETk z(Bpn3L4Lsu42;aIZ0y`T0)j%qBBJsNipnYmM#iRQR@OGQc0Rs-(J_e?l~ofa&Rei> z(c&drw(i)uYwy1O2M!)Oa`e=t%U7;mzj5>K>o@N{fBo_6&tI?n6H-7EH+s4_hE&9z zy_O%o$U%bjgP|7Bnb^Z7!H4Zg=rf-+%e=oXy>bjhT;^-<{rPFL7*U zw@PtJAA5UXRNK=X>yjmXTNfxSm>u`Q{$BSyro6WbV!J0XEXh0I87{wC1u|*f}AJY@@p31IL^*3~;!Onlq?-dIf=I)=XzVV6L!WW4F z3-8-2Yb*~55!k@E=2Oe$)B72g6)rg3{@du`vMuZvI~auzbZ{6kBy4(csQIgYhXZ3B zzki~G@H#`~LuV3qoNRDskTrb4U?7pexT4chwBaZNdxILA6hk}Xe1;Um35+{<3K&x+ zA8ccke;FLLxP6_v{TC+P*Uq0deUrSvWFX!w*iC5zFXS%ybVomurZrE2`Sm^hJl!3m|t zRhRyRPc8L5=N2l-8FFkdL;CDamgVo37k&s+ndrc9$)aZAoB8h({z@LKPxX~4-yHYl zcFBJOCPtYsg$Y^$9>N?QtV}DJ{54}`{$78`-khI5eZmjvisZk*WWnI+>gTe~DWM4f D1|tld literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/images/search-icon.png b/wp-content/themes/twentythirteen/images/search-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..11d8dc8e508ef47cca63ace49a5a4c377d5f3b6b GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaARRs8ixQd7f{r~?TNYWV{ny_XA z&<*M(L4Lsu42=8&5|Z)?28LGFHeTL!^$m?PX3kx)a>MRD2kzdx|KQ2XSFiv4JrQK) z2h_67)5S5Q;#TR!NTDVJ0oRLs3JcCG%9x?VR{Q(@LRAyPh=O|m)K?R3bS|3|qow+J zh6UStrtnHL7uk}TKkKUM7IoJ>_?F=`iz};ST_abo^PJ$tQ3}T-CTU*rkl>n<61pg1 zf=8~0qNE6)*^dAo{vX*AXToOkN=CK)`TwDN=elj{t@rs^^Y6LH6xXh1pxn5j?S}L8 zm*pK&Gg=z&q`rB-dq(QlK<8>(A>Ts@#}94L+@koIYvWzJ8iv<(f|ImAGuHuqz~JfX K=d#Wzp$P!)KZd3N literal 0 HcmV?d00001 diff --git a/wp-content/themes/twentythirteen/inc/back-compat.php b/wp-content/themes/twentythirteen/inc/back-compat.php new file mode 100644 index 0000000000..993ef1c6a7 --- /dev/null +++ b/wp-content/themes/twentythirteen/inc/back-compat.php @@ -0,0 +1,63 @@ +

      %s

      ', $message ); +} + +/** + * Prevent the Customizer from being loaded on WordPress versions prior to 3.6. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_customize() { + wp_die( sprintf( __( 'Twenty Thirteen requires at least WordPress version 3.6. You are running version %s. Please upgrade and try again.', 'twentythirteen' ), $GLOBALS['wp_version'] ), '', array( + 'back_link' => true, + ) ); +} +add_action( 'load-customize.php', 'twentythirteen_customize' ); + +/** + * Prevent the Theme Preview from being loaded on WordPress versions prior to 3.4. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_preview() { + if ( isset( $_GET['preview'] ) ) { + wp_die( sprintf( __( 'Twenty Thirteen requires at least WordPress version 3.6. You are running version %s. Please upgrade and try again.', 'twentythirteen' ), $GLOBALS['wp_version'] ) ); + } +} +add_action( 'template_redirect', 'twentythirteen_preview' ); diff --git a/wp-content/themes/twentythirteen/inc/custom-header.php b/wp-content/themes/twentythirteen/inc/custom-header.php new file mode 100644 index 0000000000..6a9a6adc5e --- /dev/null +++ b/wp-content/themes/twentythirteen/inc/custom-header.php @@ -0,0 +1,230 @@ + '220e10', + 'default-image' => '%s/images/headers/circle.png', + + // Set height and width, with a maximum value for the width. + 'height' => 230, + 'width' => 1600, + + // Callbacks for styling the header and the admin preview. + 'wp-head-callback' => 'twentythirteen_header_style', + 'admin-head-callback' => 'twentythirteen_admin_header_style', + 'admin-preview-callback' => 'twentythirteen_admin_header_image', + ); + + add_theme_support( 'custom-header', $args ); + + /* + * Default custom headers packaged with the theme. + * %s is a placeholder for the theme template directory URI. + */ + register_default_headers( array( + 'circle' => array( + 'url' => '%s/images/headers/circle.png', + 'thumbnail_url' => '%s/images/headers/circle-thumbnail.png', + 'description' => _x( 'Circle', 'header image description', 'twentythirteen' ) + ), + 'diamond' => array( + 'url' => '%s/images/headers/diamond.png', + 'thumbnail_url' => '%s/images/headers/diamond-thumbnail.png', + 'description' => _x( 'Diamond', 'header image description', 'twentythirteen' ) + ), + 'star' => array( + 'url' => '%s/images/headers/star.png', + 'thumbnail_url' => '%s/images/headers/star-thumbnail.png', + 'description' => _x( 'Star', 'header image description', 'twentythirteen' ) + ), + ) ); +} +add_action( 'after_setup_theme', 'twentythirteen_custom_header_setup', 11 ); + +/** + * Load our special font CSS files. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_custom_header_fonts() { + // Add Source Sans Pro and Bitter fonts. + wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null ); + + // Add Genericons font. + wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.03' ); +} +add_action( 'admin_print_styles-appearance_page_custom-header', 'twentythirteen_custom_header_fonts' ); + +/** + * Style the header text displayed on the blog. + * + * get_header_textcolor() options: Hide text (returns 'blank'), or any hex value. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_header_style() { + $header_image = get_header_image(); + $text_color = get_header_textcolor(); + + // If no custom options for text are set, let's bail. + if ( empty( $header_image ) && $text_color == get_theme_support( 'custom-header', 'default-text-color' ) ) + return; + + // If we get this far, we have custom styles. + ?> + + Header admin panel. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_admin_header_style() { + $header_image = get_header_image(); +?> + + Header admin panel. + * + * This callback overrides the default markup displayed there. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_admin_header_image() { + $style = 'color: #' . get_header_textcolor() . ';'; + if ( ! display_header_text() ) { + $style = 'display: none;'; + } + ?> +
      + +
      + + +
      +
      + + + + + + + + + + + + + +
      +
      + + + diff --git a/wp-content/themes/twentythirteen/js/functions.js b/wp-content/themes/twentythirteen/js/functions.js new file mode 100644 index 0000000000..fa8160d53a --- /dev/null +++ b/wp-content/themes/twentythirteen/js/functions.js @@ -0,0 +1,132 @@ +/** + * Functionality specific to Twenty Thirteen. + * + * Provides helper functions to enhance the theme experience. + */ + +( function( $ ) { + var body = $( 'body' ), + _window = $( window ), + nav, button, menu; + + nav = $( '#site-navigation' ); + button = nav.find( '.menu-toggle' ); + menu = nav.find( '.nav-menu' ); + + /** + * Adds a top margin to the footer if the sidebar widget area is higher + * than the rest of the page, to help the footer always visually clear + * the sidebar. + */ + $( function() { + if ( body.is( '.sidebar' ) ) { + var sidebar = $( '#secondary .widget-area' ), + secondary = ( 0 === sidebar.length ) ? -40 : sidebar.height(), + margin = $( '#tertiary .widget-area' ).height() - $( '#content' ).height() - secondary; + + if ( margin > 0 && _window.innerWidth() > 999 ) { + $( '#colophon' ).css( 'margin-top', margin + 'px' ); + } + } + } ); + + /** + * Enables menu toggle for small screens. + */ + ( function() { + if ( ! nav || ! button ) { + return; + } + + // Hide button if menu is missing or empty. + if ( ! menu || ! menu.children().length ) { + button.hide(); + return; + } + + button.on( 'click.twentythirteen', function() { + nav.toggleClass( 'toggled-on' ); + if ( nav.hasClass( 'toggled-on' ) ) { + $( this ).attr( 'aria-expanded', 'true' ); + menu.attr( 'aria-expanded', 'true' ); + } else { + $( this ).attr( 'aria-expanded', 'false' ); + menu.attr( 'aria-expanded', 'false' ); + } + } ); + + // Fix sub-menus for touch devices. + if ( 'ontouchstart' in window ) { + menu.find( '.menu-item-has-children > a, .page_item_has_children > a' ).on( 'touchstart.twentythirteen', function( e ) { + var el = $( this ).parent( 'li' ); + + if ( ! el.hasClass( 'focus' ) ) { + e.preventDefault(); + el.toggleClass( 'focus' ); + el.siblings( '.focus' ).removeClass( 'focus' ); + } + } ); + } + + // Better focus for hidden submenu items for accessibility. + menu.find( 'a' ).on( 'focus.twentythirteen blur.twentythirteen', function() { + $( this ).parents( '.menu-item, .page_item' ).toggleClass( 'focus' ); + } ); + } )(); + + /** + * @summary Add or remove ARIA attributes. + * Uses jQuery's width() function to determine the size of the window and add + * the default ARIA attributes for the menu toggle if it's visible. + * @since Twenty Thirteen 1.5 + */ + function onResizeARIA() { + if ( 643 > _window.width() ) { + button.attr( 'aria-expanded', 'false' ); + menu.attr( 'aria-expanded', 'false' ); + button.attr( 'aria-controls', 'primary-menu' ); + } else { + button.removeAttr( 'aria-expanded' ); + menu.removeAttr( 'aria-expanded' ); + button.removeAttr( 'aria-controls' ); + } + } + + _window + .on( 'load.twentythirteen', onResizeARIA ) + .on( 'resize.twentythirteen', function() { + onResizeARIA(); + } ); + + /** + * Makes "skip to content" link work correctly in IE9 and Chrome for better + * accessibility. + * + * @link http://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/ + */ + _window.on( 'hashchange.twentythirteen', function() { + var element = document.getElementById( location.hash.substring( 1 ) ); + + if ( element ) { + if ( ! /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) { + element.tabIndex = -1; + } + + element.focus(); + } + } ); + + /** + * Arranges footer widgets vertically. + */ + if ( $.isFunction( $.fn.masonry ) ) { + var columnWidth = body.is( '.sidebar' ) ? 228 : 245; + + $( '#secondary .widget-area' ).masonry( { + itemSelector: '.widget', + columnWidth: columnWidth, + gutterWidth: 20, + isRTL: body.is( '.rtl' ) + } ); + } +} )( jQuery ); \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/js/html5.js b/wp-content/themes/twentythirteen/js/html5.js new file mode 100644 index 0000000000..6168aacd5e --- /dev/null +++ b/wp-content/themes/twentythirteen/js/html5.js @@ -0,0 +1,8 @@ +/* + HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); +a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; +c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| +"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); +if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d\n" +"Language-Team: LANGUAGE \n" + +#: 404.php:16 +msgid "Not Found" +msgstr "" + +#: 404.php:21 +msgid "This is somewhat embarrassing, isn’t it?" +msgstr "" + +#: 404.php:22 +msgid "It looks like nothing was found at this location. Maybe try a search?" +msgstr "" + +#: archive.php:29 +msgid "Daily Archives: %s" +msgstr "" + +#: archive.php:31 +msgid "Monthly Archives: %s" +msgstr "" + +#: archive.php:31 +msgctxt "monthly archives date format" +msgid "F Y" +msgstr "" + +#: archive.php:33 +msgid "Yearly Archives: %s" +msgstr "" + +#: archive.php:33 +msgctxt "yearly archives date format" +msgid "Y" +msgstr "" + +#: archive.php:35 +msgid "Archives" +msgstr "" + +#: author-bio.php:26 +msgid "About %s" +msgstr "" + +#: author-bio.php:30 +msgid "View all posts by %s " +msgstr "" + +#: author.php:31 +msgid "All posts by %s" +msgstr "" + +#: category.php:19 +msgid "Category Archives: %s" +msgstr "" + +#: comments.php:25 +msgctxt "comments title" +msgid "One thought on “%2$s”" +msgid_plural "%1$s thoughts on “%2$s”" +msgstr[0] "" +msgstr[1] "" + +#: comments.php:45 +msgid "Comment navigation" +msgstr "" + +#: comments.php:46 +msgid "← Older Comments" +msgstr "" + +#: comments.php:47 +msgid "Newer Comments →" +msgstr "" + +#: comments.php:52 +msgid "Comments are closed." +msgstr "" + +#. translators: %s: Name of current post +#: content-aside.php:16 content-audio.php:27 content-chat.php:26 +#: content-gallery.php:27 content-image.php:26 content-link.php:27 +#: content-quote.php:16 content-status.php:16 content-video.php:26 +#: content.php:44 functions.php:478 +msgid "Continue reading %s " +msgstr "" + +#: content-aside.php:20 content-audio.php:31 content-chat.php:30 +#: content-gallery.php:31 content-image.php:30 content-link.php:31 +#: content-quote.php:20 content-status.php:20 content-video.php:30 +#: content.php:48 image.php:70 page.php:35 +msgid "Pages:" +msgstr "" + +#: content-aside.php:27 content-aside.php:35 content-audio.php:38 +#: content-chat.php:36 content-gallery.php:46 content-image.php:42 +#: content-link.php:19 content-quote.php:32 content-status.php:26 +#: content-video.php:42 content.php:31 image.php:44 page.php:39 +msgid "Edit" +msgstr "" + +#: content-gallery.php:43 content-image.php:39 content-quote.php:29 +#: content-video.php:39 content.php:56 +msgid "Leave a comment" +msgstr "" + +#: content-gallery.php:43 content-image.php:39 content-quote.php:29 +#: content-video.php:39 content.php:56 +msgid "One comment so far" +msgstr "" + +#: content-gallery.php:43 content-image.php:39 content-quote.php:29 +#: content-video.php:39 content.php:56 +msgid "View all % comments" +msgstr "" + +#: content-none.php:12 +msgid "Nothing Found" +msgstr "" + +#: content-none.php:18 +msgid "" +"Ready to publish your first post? Get started here." +msgstr "" + +#: content-none.php:22 +msgid "" +"Sorry, but nothing matched your search terms. Please try again with " +"different keywords." +msgstr "" + +#: content-none.php:27 +msgid "" +"It seems we can’t find what you’re looking for. Perhaps " +"searching can help." +msgstr "" + +#. #-#-#-#-# twentythirteen.pot (Twenty Thirteen 1.6) #-#-#-#-# +#. Author URI of the plugin/theme +#: footer.php:19 +msgid "https://wordpress.org/" +msgstr "" + +#: footer.php:19 +msgid "Semantic Personal Publishing Platform" +msgstr "" + +#: footer.php:19 +msgid "Proudly powered by %s" +msgstr "" + +#: functions.php:97 +msgid "Navigation Menu" +msgstr "" + +#. Translators: If there are characters in your language that are not supported +#. by Source Sans Pro, translate this to 'off'. Do not translate into your own +#. language. +#: functions.php:128 +msgctxt "Source Sans Pro font: on or off" +msgid "on" +msgstr "" + +#. Translators: If there are characters in your language that are not supported +#. by Bitter, translate this to 'off'. Do not translate into your own language. +#: functions.php:134 +msgctxt "Bitter font: on or off" +msgid "on" +msgstr "" + +#: functions.php:218 +msgid "Page %s" +msgstr "" + +#: functions.php:231 +msgid "Main Widget Area" +msgstr "" + +#: functions.php:233 +msgid "Appears in the footer section of the site." +msgstr "" + +#: functions.php:241 +msgid "Secondary Widget Area" +msgstr "" + +#: functions.php:243 +msgid "Appears on posts and pages in the sidebar." +msgstr "" + +#: functions.php:266 +msgid "Posts navigation" +msgstr "" + +#: functions.php:270 +msgid " Older posts" +msgstr "" + +#: functions.php:274 +msgid "Newer posts " +msgstr "" + +#: functions.php:300 +msgid "Post navigation" +msgstr "" + +#: functions.php:303 +msgctxt "Previous post link" +msgid " %title" +msgstr "" + +#: functions.php:304 +msgctxt "Next post link" +msgid "%title " +msgstr "" + +#: functions.php:322 +msgid "Sticky" +msgstr "" + +#. Translators: used between list items, there is a space after the comma. +#: functions.php:328 functions.php:334 +msgid ", " +msgstr "" + +#: functions.php:343 +msgid "View all posts by %s" +msgstr "" + +#: functions.php:363 +msgctxt "1: post format name. 2: date" +msgid "%1$s on %2$s" +msgstr "" + +#: functions.php:369 +msgid "Permalink to %s" +msgstr "" + +#: header.php:43 +msgid "Menu" +msgstr "" + +#: header.php:44 +msgid "Skip to content" +msgstr "" + +#: image.php:22 +msgid "" +"Published on in %5$s" +msgstr "" + +#: image.php:38 +msgid "Link to full-size image" +msgstr "" + +#: image.php:39 +msgid "Full resolution" +msgstr "" + +#: image.php:51 +msgid " Previous" +msgstr "" + +#: image.php:52 +msgid "Next " +msgstr "" + +#: inc/back-compat.php:37 inc/back-compat.php:47 inc/back-compat.php:60 +msgid "" +"Twenty Thirteen requires at least WordPress version 3.6. You are running " +"version %s. Please upgrade and try again." +msgstr "" + +#: inc/custom-header.php:49 +msgctxt "header image description" +msgid "Circle" +msgstr "" + +#: inc/custom-header.php:54 +msgctxt "header image description" +msgid "Diamond" +msgstr "" + +#: inc/custom-header.php:59 +msgctxt "header image description" +msgid "Star" +msgstr "" + +#: search.php:18 +msgid "Search Results for: %s" +msgstr "" + +#: tag.php:21 +msgid "Tag Archives: %s" +msgstr "" + +#: taxonomy-post_format.php:23 +msgid "%s Archives" +msgstr "" + +#. Theme Name of the plugin/theme +msgid "Twenty Thirteen" +msgstr "" + +#. Theme URI of the plugin/theme +msgid "https://wordpress.org/themes/twentythirteen/" +msgstr "" + +#. Description of the plugin/theme +msgid "" +"The 2013 theme for WordPress takes us back to the blog, featuring a full " +"range of post formats, each displayed beautifully in their own unique way. " +"Design details abound, starting with a vibrant color scheme and matching " +"header images, beautiful typography and icons, and a flexible layout that " +"looks great on any device, big or small." +msgstr "" + +#. Author of the plugin/theme +msgid "the WordPress team" +msgstr "" diff --git a/wp-content/themes/twentythirteen/page.php b/wp-content/themes/twentythirteen/page.php new file mode 100644 index 0000000000..5545367722 --- /dev/null +++ b/wp-content/themes/twentythirteen/page.php @@ -0,0 +1,50 @@ + + +
      +
      + + + + +
      > +
      + +
      + +
      + + +

      +
      + +
      + + '', 'link_before' => '', 'link_after' => '' ) ); ?> +
      + +
      + ', '' ); ?> +
      +
      + + + + +
      +
      + + + \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/readme.txt b/wp-content/themes/twentythirteen/readme.txt new file mode 100644 index 0000000000..807443d7a1 --- /dev/null +++ b/wp-content/themes/twentythirteen/readme.txt @@ -0,0 +1,83 @@ +=== Twenty Thirteen === +Contributors: the WordPress team +Requires at least: WordPress 3.6 +Tested up to: WordPress 4.3-trunk +Stable tag: 1.6 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html +Tags: black, brown, orange, tan, white, yellow, light, one-column, two-columns, right-sidebar, fluid-layout, responsive-layout, custom-header, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, translation-ready, accessibility-ready + +== Description == +The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small. + +For more information about Twenty Thirteen please go to https://codex.wordpress.org/Twenty_Thirteen. + +== Installation == + +1. In your admin panel, go to Appearance -> Themes and click the 'Add New' button. +2. Type in Twenty Thirteen in the search form and press the 'Enter' key in your keyboard. +3. Click on the 'Activate' button to use your new theme right away. +4. Go to https://codex.wordpress.org/Twenty_Thirteen for a guide to customize this theme. +5. Navigate to Appearance > Customize in your admin panel. + +== Copyright == + +Twenty Thirteen WordPress Theme, Copyright 2013-2015 WordPress.org & Automattic.com +Twenty Thirteen is Distributed under the terms of the GNU GPL + +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 +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +Twenty Thirteen Theme bundles the following third-party resources: + +HTML5 Shiv v3.7.0, Copyright 2014 Alexander Farkas +Licenses: MIT/GPL2 +Source: https://github.com/aFarkas/html5shiv + +Genericons icon font, Copyright 2013-2015 Automattic.com +License: GNU GPL, Version 2 (or later) +Source: http://www.genericons.com + +== Changelog == + += 1.6 = +* Released: August 18, 2015 + +https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.6 + += 1.5 = +* Released: April 23, 2015 + +https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.5 + += 1.4 = +* Released: December 18, 2014 + +https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.4 + += 1.3 = +* Released: September 4, 2014 + +https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.3 + += 1.2 = +* Released: May 8, 2014 + +https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.2 + += 1.1 = +* Released: October 24, 2013 + +https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.1 + += 1.0 = +* Released: August 1, 2013 + +Initial release. diff --git a/wp-content/themes/twentythirteen/rtl.css b/wp-content/themes/twentythirteen/rtl.css new file mode 100644 index 0000000000..447d385c2b --- /dev/null +++ b/wp-content/themes/twentythirteen/rtl.css @@ -0,0 +1,766 @@ +/* +Theme Name: Twenty Thirteen +Description: Adds support for languages written in a Right To Left (RTL) direction. +It's easy, just a matter of overwriting all the horizontal positioning attributes +of your CSS stylesheet in a separate stylesheet file named rtl.css. + +See https://codex.wordpress.org/Right_to_Left_Language_Support +*/ + +/** + * Table of Contents: + * + * 1.0 - Reset + * 4.0 - Header + * 4.1 - Site Header + * 4.2 - Navigation + * 5.0 - Content + * 5.2 - Entry Meta + * 5.4 - Galleries + * 5.5 - Post Formats + * 5.6 - Attachments + * 5.7 - Post/Paging Navigation + * 5.8 - Author Bio + * 5.9 - Archives + * 5.10 - Search Results/No posts + * 5.12 - Comments + * 6.0 - Sidebar + * 6.1 - Widgets + * 7.0 - Footer + * 8.0 - Media Queries + * 9.0 - Print + * ---------------------------------------------------------------------------- + */ + + +/** + * 1.0 Reset + * ---------------------------------------------------------------------------- + */ + +body { + direction: rtl; + unicode-bidi: embed; +} + +a { + display: inline-block; +} + +blockquote blockquote { + margin-left: 0; + margin-right: 24px; +} + +menu, +ol, +ul { + padding: 0 40px 0 0; +} + +caption, +th, +td { + text-align: right; +} + +td { + padding-left: 10px; + padding-right: 0; +} + +.assistive-text:focus { + left: auto; + right: 5px; +} + + +/** + * 4.0 Header + * ---------------------------------------------------------------------------- + */ + +/** + * 4.1 Site Header + * ---------------------------------------------------------------------------- + */ + +.site-header > a:first-child { + display: inherit; +} + +.site-description { + font-style: normal; +} + + +/** + * 4.2 Navigation + * ---------------------------------------------------------------------------- + */ + +/* Navbar */ +ul.nav-menu, +div.nav-menu > ul { + margin: 0 -20px 0 0; + padding: 0 0 0 40px; +} + +.nav-menu .sub-menu, +.nav-menu .children { + float: right; + left: auto; + right: -2px; +} + +.nav-menu .sub-menu ul, +.nav-menu .children ul { + border-left: 2px solid #f7f5e7; + border-right: 0; + left: auto; + right: 100%; +} + +.main-navigation .search-form { + left: 0; + right: auto; +} + +.site-header .search-field { + background-position: 98% center; + padding: 0 34px 0 0; +} + +.nav-menu .current_page_item > a, +.nav-menu .current_page_ancestor > a, +.nav-menu .current-menu-item > a, +.nav-menu .current-menu-ancestor > a { + font-style: normal; +} + +.menu-toggle { + padding-left: 0; + padding-right: 20px; +} + + +/** + * 5.0 Content + * ---------------------------------------------------------------------------- + */ + +.sidebar .entry-header, +.sidebar .entry-content, +.sidebar .entry-summary, +.sidebar .entry-meta { + padding-left: 376px; + padding-right: 60px; +} + + +/** + * 5.2 Entry Meta + * ---------------------------------------------------------------------------- + */ + +.entry-meta > span { + margin-left: 20px; + margin-right: auto; +} + +.entry-meta > span:last-child { + margin-left: 0; + margin-right: auto; +} + +.featured-post:before { + margin-left: 2px; + margin-right: auto; +} + +.entry-meta .date a:before { + margin-left: 2px; +} + +.comments-link a:before { + margin-left: 2px; + margin-right: auto; +} + +.tags-links a:first-child:before { + margin-left: 2px; +} + +.edit-link a:before { + margin-left: 2px; +} + +.page-links .page-links-title { + margin-left: 20px; + margin-right: auto; +} + +/** + * 5.4 Galleries + * ---------------------------------------------------------------------------- + */ + +.gallery { + margin-left: auto; + margin-right: -4px; +} + +.gallery-item { + float: right; + margin: 0 0 4px 4px; +} + +.gallery-item a { + display: inline; +} + + +/** + * 5.5 Post Formats + * ---------------------------------------------------------------------------- + */ + +.entry-content a { + display: inline; +} + +.format-aside cite:before { + content: normal; + margin-right: auto; +} + +.format-aside cite:after { + content: "\2014"; + margin-left: 5px; +} + +.format-audio .entry-content:before { + float: right; + -webkit-transform: scaleX(-1); + -moz-transform: scaleX(-1); + -ms-transform: scaleX(-1); + -o-transform: scaleX(-1); + transform: scaleX(-1); +} + +.format-audio .audio-content { + background-position: right top; + float: left; + padding-left: 0; + padding-right: 35px; +} + +.format-chat .entry-meta .date a:before { + margin-left: 4px; + margin-right: auto; +} + +.format-image .wp-caption-text { + text-align: right; +} + +.format-link .entry-title { + margin-left: 20px; + margin-right: auto; +} + +.format-status .entry-content, +.format-status .entry-meta { + padding-left: 0; + padding-right: 35px; +} + +.sidebar .format-status .entry-content, +.sidebar .format-status .entry-meta { + padding-left: 376px; + padding-right: 95px; +} + +.format-status .entry-content:before, +.format-status .entry-meta:before { + left: auto; + right: 10px; +} + +.sidebar .format-status .entry-content:before, +.sidebar .format-status .entry-meta:before { + left: auto; + right: 70px; +} + +.format-status .entry-content p:first-child:before { + left: auto; + right: 4px; +} + +.sidebar .format-status .entry-content p:first-child:before { + left: auto; + right: 64px; +} + +.format-quote blockquote { + padding-left: 0; + padding-right: 75px; +} + +.format-quote blockquote:before { + content: '\201D'; + padding-left: 25px; + padding-right: 0; + left: auto; + right: -15px; +} + + +/** + * 5.6 Attachments + * ---------------------------------------------------------------------------- + */ + +.attachment .entry-title { + float: right; +} + +.attachment .entry-title:before { + margin-left: 10px; + margin-right: auto; +} + +.attachment .entry-meta { + float: left; +} + +.image-navigation .nav-previous { + left: auto; + right: 0; +} + +.image-navigation .nav-next { + left: 0; + right: auto; +} + +.attachment .entry-caption { + text-align: right; +} + + +/** + * 5.7 Post/Paging Navigation + * ---------------------------------------------------------------------------- + */ + +.navigation .nav-previous { + float: right; +} + +.navigation .nav-next { + float: left; +} + +.sidebar .paging-navigation .nav-links, +.sidebar .post-navigation .nav-links { + padding-left: 376px; + padding-right: 60px; +} + +.paging-navigation .nav-previous .meta-nav { + margin-left: 10px; + margin-right: auto; +} + +.paging-navigation .nav-next .meta-nav { + margin-left: auto; + margin-right: 10px; +} + +.post-navigation a[rel="next"] { + float: left; + text-align: left; +} + + +/** + * 5.8 Author Bio + * ---------------------------------------------------------------------------- + */ + +.author-info { + text-align: right; /* gallery & video post formats */ +} + +.author.sidebar .author-info { + padding-left: 376px; + padding-right: 60px; +} + +.author-avatar .avatar { + float: right; + margin: 0 0 30px 30px; +} + +.author-link { + margin-left: auto; + margin-right: 2px; +} + + +/** + * 5.9 Archives + * ---------------------------------------------------------------------------- + */ + +.sidebar .archive-meta { + padding-left: 316px; + padding-right: 0; +} + + +/** + * 5.10 Search Results/No posts + * ---------------------------------------------------------------------------- + */ + +.sidebar .page-content { + padding-left: 376px; + padding-right: 60px; +} + +/** + * 5.12 Comments + * ---------------------------------------------------------------------------- + */ + +.sidebar .comments-title, +.sidebar .comment-list, +.sidebar .comment-reply-title, +.sidebar .comment-navigation, +.sidebar .comment-respond .comment-form { + padding-left: 376px; + padding-right: 60px; +} + +.comment-list .children { + margin-left: auto; + margin-right: 20px; +} + +.comment-author { + float: right; + margin-left: 50px; + margin-right: auto; +} + +.comment-list .edit-link { + margin-left: auto; + margin-right: 20px; +} + +.comment-metadata, +.comment-content, +.comment-list .reply, +.comment-awaiting-moderation { + float: left; +} + +.comment-awaiting-moderation:before { + margin-left: 5px; + margin-right: auto; +} + +.comment-reply-link:before, +.comment-reply-login:before { + margin-left: 3px; + margin-right: auto; + -webkit-transform: scaleX(-1); + -moz-transform: scaleX(-1); + -ms-transform: scaleX(-1); + -o-transform: scaleX(-1); + transform: scaleX(-1); +} + +.comment-reply-title small a { + float: left; +} + +.comment-form [for="author"], +.comment-form [for="email"], +.comment-form [for="url"], +.comment-form [for="comment"] { + float: right; +} + +.form-allowed-tags code { + margin-left: auto; + margin-right: 3px; +} + +.sidebar .no-comments { + padding-left: 376px; + padding-right: 60px; +} + + +/** + * 6.0 Sidebar + * ---------------------------------------------------------------------------- + */ + +.site-main .widget-area { + float: left; +} + +.widget-area a { + max-width: 100%; +} + + +/** + * 6.1 Widgets + * ---------------------------------------------------------------------------- + */ + +.widget .widget-title { + font-style: normal; +} + +.widget li > ul, +.widget li > ol { + margin-left: auto; + margin-right: 20px; +} + +/** + * 7.0 Footer + * ---------------------------------------------------------------------------- + */ + +.site-footer .widget-area, +.sidebar .site-footer { + text-align: right; +} +.sidebar .site-footer .widget-area { + left: auto; + right: -158px; +} + +.site-footer .widget { + float: right; + margin-left: 20px; + margin-right: auto; +} + +.sidebar .site-footer .widget:nth-of-type(4), +.sidebar .site-footer .widget:nth-of-type(3) { + margin-left: 0; + margin-right: auto; +} + + +/** + * 8.0 Media Queries + * ---------------------------------------------------------------------------- + */ + +@media (max-width: 1069px) { + ul.nav-menu, + div.nav-menu > ul { + margin-left: auto; + margin-right: 0; + } + + .error404 .page-header, + .sidebar .format-image .entry-content img.size-full, + .sidebar .format-image .wp-caption:first-child .wp-caption-text { + margin-right: auto; + } + + .main-navigation .search-form { + left: 20px; + right: auto; + } + + .site-main .widget-area { + margin-left: 60px; + margin-right: auto; + } +} + +@media (max-width: 999px) { + .sidebar .entry-header, + .sidebar .entry-content, + .sidebar .entry-summary, + .sidebar .entry-meta, + .sidebar .comment-list, + .sidebar .comment-reply-title, + .sidebar .comment-navigation, + .sidebar .comment-respond .comment-form, + .sidebar .featured-gallery, + .sidebar .post-navigation .nav-links, + .author.sidebar .author-info, + .sidebar .format-image .entry-content { + max-width: 604px; + padding-left: 0; + padding-right: 0; + } + + .site-main .widget-area { + float: none; + margin-left: auto; + } + + .attachment .entry-meta { + float: right; + text-align: right; + } + + .sidebar .format-status .entry-content, + .sidebar .format-status .entry-meta { + padding-left: 0; + padding-right: 35px; + } + + .sidebar .format-status .entry-content:before, + .sidebar .format-status .entry-meta:before { + left: auto; + right: 10px; + } + + .sidebar .format-status .entry-content p:first-child:before { + left: auto; + right: 4px; + } + + .sidebar .site-footer .widget-area { + left: auto; + right: 0; + } + + .sidebar .paging-navigation .nav-links { + padding: 0 60px; + } +} + +@media (max-width: 767px) { + .format-image .entry-content img:first-of-type, + .format-image .wp-caption:first-child .wp-caption-text { + margin-right: auto; + } +} + +@media (max-width: 643px) { + .sidebar .entry-header, + .sidebar .entry-content, + .sidebar .entry-summary, + .sidebar .entry-meta, + .sidebar .comment-list, + .sidebar .comment-navigation, + .sidebar .featured-gallery, + .sidebar .post-navigation .nav-links, + .sidebar .format-image .entry-content { + padding-left: 20px; + padding-right: 20px; + } + + #content .format-status .entry-content, + #content .format-status .entry-met { + padding-left: 0; + padding-right: 35px; + } + + .menu-toggle:after { + padding-left: 0; + padding-right: 8px; + } + + .toggled-on .nav-menu, + .toggled-on .nav-menu > ul { + margin-left: auto; + margin-right: 0; + } + + .toggled-on .nav-menu li > ul { + margin-left: auto; + margin-right: 20px; + right: auto; + } + + #content .featured-gallery { + padding-left: 0; + padding-right: 24px; + } + + .gallery-columns-1 .gallery-item { + margin-left: 0; + margin-right: auto; + } + + .comment-author { + margin-left: 30px; + margin-right: auto; + } + + .format-audio .audio-content { + background: none; + float: none; + padding-left: 0; + padding-right: 0; + } + + .gallery-columns-3 .gallery-item:nth-of-type(3n) { + margin-left: 4px; + margin-right: auto; + } +} + +@media (max-width: 359px) { + .gallery { + margin-left: auto; + margin-right: 0; + } + + .gallery .gallery-item:nth-of-type(even) { + margin-left: 0; + margin-right: auto; + } + + .gallery .gallery-item, + .gallery.gallery-columns-3 .gallery-item:nth-of-type(even), + .gallery-columns-3 .gallery-item:nth-of-type(3n), + .gallery-columns-5 .gallery-item:nth-of-type(5n), + .gallery-columns-7 .gallery-item:nth-of-type(7n), + .gallery-columns-9 .gallery-item:nth-of-type(9n) { + margin-left: 4px; + margin-right: auto; + } + + .comment-author .avatar { + margin-left: 5px; + margin-right: auto; + } +} + + +/** + * 9.0 Print + * ---------------------------------------------------------------------------- + */ + +@media print { + .entry-content img.alignleft, + .entry-content .wp-caption.alignleft { + margin-left: auto; + margin-right: 0; + } + + .entry-content img.alignright, + .entry-content .wp-caption.alignright { + margin-left: 0; + margin-right: auto; + } +} \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/screenshot.png b/wp-content/themes/twentythirteen/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..e53088b2e93a8545fd94524f94adaaec0fcbd1c3 GIT binary patch literal 77773 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 + +
      +
      + + + + + + + + + + + + + + + + +
      +
      + + + \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/sidebar-main.php b/wp-content/themes/twentythirteen/sidebar-main.php new file mode 100644 index 0000000000..3c700addda --- /dev/null +++ b/wp-content/themes/twentythirteen/sidebar-main.php @@ -0,0 +1,18 @@ + + + \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/sidebar.php b/wp-content/themes/twentythirteen/sidebar.php new file mode 100644 index 0000000000..cb5cf98e9b --- /dev/null +++ b/wp-content/themes/twentythirteen/sidebar.php @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/single.php b/wp-content/themes/twentythirteen/single.php new file mode 100644 index 0000000000..1694a0dcf2 --- /dev/null +++ b/wp-content/themes/twentythirteen/single.php @@ -0,0 +1,28 @@ + + +
      +
      + + + + + + + + + + +
      +
      + + + \ No newline at end of file diff --git a/wp-content/themes/twentythirteen/style.css b/wp-content/themes/twentythirteen/style.css new file mode 100644 index 0000000000..d547283d40 --- /dev/null +++ b/wp-content/themes/twentythirteen/style.css @@ -0,0 +1,3227 @@ +/* +Theme Name: Twenty Thirteen +Theme URI: https://wordpress.org/themes/twentythirteen/ +Author: the WordPress team +Author URI: https://wordpress.org/ +Description: The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small. +Version: 1.6 +License: GNU General Public License v2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html +Tags: black, brown, orange, tan, white, yellow, light, one-column, two-columns, right-sidebar, fluid-layout, responsive-layout, custom-header, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, translation-ready, accessibility-ready +Text Domain: twentythirteen + +This theme, like WordPress, is licensed under the GPL. +Use it to make something cool, have fun, and share what you've learned with others. +*/ + + +/** + * Table of Contents: + * + * 1.0 - Reset + * 2.0 - Repeatable Patterns + * 3.0 - Basic Structure + * 4.0 - Header + * 4.1 - Site Header + * 4.2 - Navigation + * 5.0 - Content + * 5.1 - Entry Header + * 5.2 - Entry Meta + * 5.3 - Entry Content + * 5.4 - Galleries + * 5.5 - Post Formats + * 5.6 - Attachments + * 5.7 - Post/Paging Navigation + * 5.8 - Author Bio + * 5.9 - Archives + * 5.10 - Search Results/No posts + * 5.11 - 404 + * 5.12 - Comments + * 5.13 - Multisite + * 6.0 - Sidebar + * 6.1 - Widgets + * 7.0 - Footer + * 8.0 - Media Queries + * 9.0 - Print + * ---------------------------------------------------------------------------- + */ + + +/** + * 1.0 Reset + * + * Modified from Normalize.css to provide cross-browser consistency and a smart + * default styling of HTML elements. + * + * @see http://git.io/normalize + * ---------------------------------------------------------------------------- + */ + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden] { + display: none; +} + +html { + font-size: 100%; + overflow-y: scroll; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +html, +button, +input, +select, +textarea { + font-family: "Source Sans Pro", Helvetica, sans-serif; +} + +body { + color: #141412; + line-height: 1.5; + margin: 0; +} + +a { + color: #ca3c08; + text-decoration: none; +} + +a:visited { + color: #ac0404; +} + +a:focus { + outline: thin dotted; +} + +a:active, +a:hover { + color: #ea9629; + outline: 0; +} + +a:hover { + text-decoration: underline; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + clear: both; + font-family: Bitter, Georgia, serif; + line-height: 1.3; +} + +h1 { + font-size: 48px; + margin: 33px 0; +} + +h2 { + font-size: 30px; + margin: 25px 0; +} + +h3 { + font-size: 22px; + margin: 22px 0; +} + +h4 { + font-size: 20px; + margin: 25px 0; +} + +h5 { + font-size: 18px; + margin: 30px 0; +} + +h6 { + font-size: 16px; + margin: 36px 0; +} + +address { + font-style: italic; + margin: 0 0 24px; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +mark { + background: #ff0; + color: #000; +} + +p { + margin: 0 0 24px; +} + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 14px; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre { + background: #f5f5f5; + color: #666; + font-family: monospace; + font-size: 14px; + margin: 20px 0; + overflow: auto; + padding: 20px; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +blockquote, +q { + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ""; + content: none; +} + +blockquote { + font-size: 18px; + font-style: italic; + font-weight: 300; + margin: 24px 40px; +} + +blockquote blockquote { + margin-right: 0; +} + +blockquote cite, +blockquote small { + font-size: 14px; + font-weight: normal; + text-transform: uppercase; +} + +blockquote em, +blockquote i { + font-style: normal; + font-weight: 300; +} + +blockquote strong, +blockquote b { + font-weight: 400; +} + +small { + font-size: smaller; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +dl { + margin: 0 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin: 0 0 20px; +} + +menu, +ol, +ul { + margin: 16px 0; + padding: 0 0 0 40px; +} + +ul { + list-style-type: square; +} + +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} + +li > ul, +li > ol { + margin: 0; +} + +img { + -ms-interpolation-mode: bicubic; + border: 0; + vertical-align: middle; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 0; +} + +form { + margin: 0; +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +legend { + border: 0; + padding: 0; + white-space: normal; +} + +button, +input, +select, +textarea { + font-size: 100%; + margin: 0; + max-width: 100%; + vertical-align: baseline; +} + +button, +input { + line-height: normal; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} + +button[disabled], +input[disabled] { + cursor: default; +} + +input[type="checkbox"], +input[type="radio"] { + padding: 0; +} + +input[type="search"] { + -webkit-appearance: textfield; + padding-right: 2px; /* Don't cut off the webkit search cancel button */ + width: 270px; +} + +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +table { + border-bottom: 1px solid #ededed; + border-collapse: collapse; + border-spacing: 0; + font-size: 14px; + line-height: 2; + margin: 0 0 20px; + width: 100%; +} + +caption, +th, +td { + font-weight: normal; + text-align: left; +} + +caption { + font-size: 16px; + margin: 20px 0; +} + +th { + font-weight: bold; + text-transform: uppercase; +} + +td { + border-top: 1px solid #ededed; + padding: 6px 10px 6px 0; +} + +del { + color: #333; +} + +ins { + background: #fff9c0; + text-decoration: none; +} + +hr { + background: url(images/dotted-line.png) repeat center top; + background-size: 4px 4px; + border: 0; + height: 1px; + margin: 0 0 24px; +} + + +/** + * 2.0 Repeatable Patterns + * ---------------------------------------------------------------------------- + */ + +.genericon:before, +.menu-toggle:after, +.featured-post:before, +.date a:before, +.entry-meta .author a:before, +.format-audio .entry-content:before, +.comments-link a:before, +.tags-links a:first-child:before, +.categories-links a:first-child:before, +.edit-link a:before, +.attachment .entry-title:before, +.attachment-meta:before, +.attachment-meta a:before, +.comment-awaiting-moderation:before, +.comment-reply-link:before, +.comment-reply-login:before, +.comment-reply-title small a:before, +.bypostauthor > .comment-body .fn:before, +.error404 .page-title:before { + -webkit-font-smoothing: antialiased; + display: inline-block; + font: normal 16px/1 Genericons; + vertical-align: text-bottom; +} + +/* Clearing floats */ +.clear:after, +.attachment .entry-header:after, +.site-footer .widget-area:after, +.entry-content:after, +.page-content:after, +.navigation:after, +.nav-links:after, +.gallery:after, +.comment-form-author:after, +.comment-form-email:after, +.comment-form-url:after, +.comment-body:after { + clear: both; +} + +.clear:before, +.clear:after, +.attachment .entry-header:before, +.attachment .entry-header:after, +.site-footer .widget-area:before, +.site-footer .widget-area:after, +.entry-content:before, +.entry-content:after, +.page-content:before, +.page-content:after, +.navigation:before, +.navigation:after, +.nav-links:before, +.nav-links:after, +.gallery:before, +.gallery:after, +.comment-form-author:before, +.comment-form-author:after, +.comment-form-email:before, +.comment-form-email:after, +.comment-form-url:before, +.comment-form-url:after, +.comment-body:before, +.comment-body:after { + content: ""; + display: table; +} + +/* Assistive text */ +.screen-reader-text { + clip: rect(1px, 1px, 1px, 1px); + overflow: hidden; + position: absolute !important; + height: 1px; + width: 1px; +} + +.screen-reader-text:focus { + background-color: #f1f1f1; + border-radius: 3px; + box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); + clip: auto !important; + color: #21759b; + display: block; + font-size: 14px; + font-weight: bold; + height: auto; + line-height: normal; + padding: 15px 23px 14px; + position: absolute; + left: 5px; + top: 5px; + text-decoration: none; + width: auto; + z-index: 100000; /* Above WP toolbar */ +} + +/* Form fields, general styles first. */ +button, +input, +textarea { + border: 2px solid #d4d0ba; + font-family: inherit; + padding: 5px; +} + +input, +textarea { + color: #141412; +} + +input:focus, +textarea:focus { + border: 2px solid #c3c0ab; + outline: 0; +} + +/* Buttons */ +button, +input[type="submit"], +input[type="button"], +input[type="reset"] { + background: #e05d22; /* Old browsers */ + background: -webkit-linear-gradient(top, #e05d22 0%, #d94412 100%); /* Chrome 10+, Safari 5.1+ */ + background: linear-gradient(to bottom, #e05d22 0%, #d94412 100%); /* W3C */ + border: none; + border-bottom: 3px solid #b93207; + border-radius: 2px; + color: #fff; + display: inline-block; + padding: 11px 24px 10px; + text-decoration: none; +} + +button:hover, +button:focus, +input[type="submit"]:hover, +input[type="button"]:hover, +input[type="reset"]:hover, +input[type="submit"]:focus, +input[type="button"]:focus, +input[type="reset"]:focus { + background: #ed6a31; /* Old browsers */ + background: -webkit-linear-gradient(top, #ed6a31 0%, #e55627 100%); /* Chrome 10+, Safari 5.1+ */ + background: linear-gradient(to bottom, #ed6a31 0%, #e55627 100%); /* W3C */ + outline: none; +} + +button:active, +input[type="submit"]:active, +input[type="button"]:active, +input[type="reset"]:active { + background: #d94412; /* Old browsers */ + background: -webkit-linear-gradient(top, #d94412 0%, #e05d22 100%); /* Chrome 10+, Safari 5.1+ */ + background: linear-gradient(to bottom, #d94412 0%, #e05d22 100%); /* W3C */ + border: none; + border-top: 3px solid #b93207; + padding: 10px 24px 11px; +} + +.post-password-required input[type="submit"] { + padding: 7px 24px 4px; + vertical-align: bottom; +} + +.post-password-required input[type="submit"]:active { + padding: 5px 24px 6px; +} + +/* Placeholder text color -- selectors need to be separate to work. */ +::-webkit-input-placeholder { + color: #7d7b6d; +} + +:-moz-placeholder { + color: #7d7b6d; +} + +::-moz-placeholder { + color: #7d7b6d; +} + +:-ms-input-placeholder { + color: #7d7b6d; +} + +/* + * Responsive images + * + * Fluid images for posts, comments, and widgets + */ +.entry-content img, +.entry-summary img, +.comment-content img, +.widget img, +.wp-caption { + max-width: 100%; +} + +/* Make sure images with WordPress-added height and width attributes are scaled correctly. */ +.entry-content img, +.entry-summary img, +.comment-content img[height], +img[class*="align"], +img[class*="wp-image-"], +img[class*="attachment-"] { + height: auto; +} + +img.size-full, +img.size-large, +img.wp-post-image { + height: auto; + max-width: 100%; +} + +/* Make sure videos and embeds fit their containers. */ +embed, +iframe, +object, +video { + max-width: 100%; +} + +/* Override the Twitter embed fixed width. */ +.entry-content .twitter-tweet-rendered { + max-width: 100% !important; +} + +/* Images */ +.alignleft { + float: left; +} + +.alignright { + float: right; +} + +.aligncenter { + display: block; + margin-left: auto; + margin-right: auto; +} + +figure.wp-caption.alignleft, +img.alignleft { + margin: 5px 20px 5px 0; +} + +.wp-caption.alignleft { + margin: 5px 10px 5px 0; +} + +figure.wp-caption.alignright, +img.alignright { + margin: 5px 0 5px 20px; +} + +.wp-caption.alignright { + margin: 5px 0 5px 10px; +} + +img.aligncenter { + margin: 5px auto; +} + +img.alignnone { + margin: 5px 0; +} + +.wp-caption .wp-caption-text, +.entry-caption, +.gallery-caption { + color: #220e10; + font-size: 18px; + font-style: italic; + font-weight: 300; + margin: 0 0 24px; +} + +div.wp-caption.alignright img[class*="wp-image-"] { + float: right; +} + +div.wp-caption.alignright .wp-caption-text { + padding-left: 10px; +} + +img.wp-smiley, +.rsswidget img { + border: 0; + border-radius: 0; + box-shadow: none; + margin-bottom: 0; + margin-top: 0; + padding: 0; +} + +.wp-caption.alignleft + ul, +.wp-caption.alignleft + ol { + list-style-position: inside; +} + + +/** + * 3.0 Basic Structure + * ---------------------------------------------------------------------------- + */ + +.site { + background-color: #fff; + border-left: 1px solid #f2f2f2; + border-right: 1px solid #f2f2f2; + margin: 0 auto; + max-width: 1600px; + width: 100%; +} + +.site-main { + position: relative; +} + +.site-main .sidebar-container { + height: 0; + position: absolute; + top: 40px; + width: 100%; + z-index: 1; +} + +.site-main .sidebar-inner { + margin: 0 auto; + max-width: 1040px; +} + + +/** + * 4.0 Header + * ---------------------------------------------------------------------------- + */ + +/** + * 4.1 Site Header + * ---------------------------------------------------------------------------- + */ + +.site-header { + position: relative; +} + +.site-header .home-link { + color: #141412; + display: block; + margin: 0 auto; + max-width: 1080px; + min-height: 230px; + padding: 0 20px; + text-decoration: none; + width: 100%; +} + +.site-header .site-title:hover { + text-decoration: underline; +} + +.site-title { + font-size: 60px; + font-weight: bold; + line-height: 1; + margin: 0; + padding: 58px 0 10px; +} + +.site-description { + font: 300 italic 24px "Source Sans Pro", Helvetica, sans-serif; + margin: 0; +} + + +/** + * 4.2 Navigation + * ---------------------------------------------------------------------------- + */ + +.main-navigation { + clear: both; + margin: 0 auto; + max-width: 1080px; + min-height: 45px; + position: relative; +} + +ul.nav-menu, +div.nav-menu > ul { + margin: 0; + padding: 0 40px 0 0; +} + +.nav-menu li { + display: inline-block; + position: relative; +} + +.nav-menu li a { + color: #141412; + display: block; + font-size: 15px; + line-height: 1; + padding: 15px 20px; + text-decoration: none; +} + +.nav-menu li:hover > a, +.nav-menu li a:hover, +.nav-menu li:focus > a, +.nav-menu li a:focus { + background-color: #220e10; + color: #fff; +} + +.nav-menu .sub-menu, +.nav-menu .children { + background-color: #220e10; + border: 2px solid #f7f5e7; + border-top: 0; + padding: 0; + position: absolute; + left: -2px; + z-index: 99999; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); +} + +.nav-menu .sub-menu ul, +.nav-menu .children ul { + border-left: 0; + left: 100%; + top: 0; +} + +ul.nav-menu ul a, +.nav-menu ul ul a { + color: #fff; + margin: 0; + width: 200px; +} + +ul.nav-menu ul a:hover, +.nav-menu ul ul a:hover, +ul.nav-menu ul a:focus, +.nav-menu ul ul a:focus { + background-color: #db572f; +} + +ul.nav-menu li:hover > ul, +.nav-menu ul li:hover > ul, +ul.nav-menu .focus > ul, +.nav-menu .focus > ul { + clip: inherit; + overflow: inherit; + height: inherit; + width: inherit; +} + +.nav-menu .current_page_item > a, +.nav-menu .current_page_ancestor > a, +.nav-menu .current-menu-item > a, +.nav-menu .current-menu-ancestor > a { + color: #bc360a; + font-style: italic; +} + +.menu-toggle { + display: none; +} + +/* Navbar */ +.navbar { + background-color: #f7f5e7; + margin: 0 auto; + max-width: 1600px; + width: 100%; +} + +.site-header .search-form { + position: absolute; + right: 20px; + top: 1px; +} + +.site-header .search-field { + background-color: transparent; + background-image: url(images/search-icon.png); + background-position: 5px center; + background-repeat: no-repeat; + background-size: 24px 24px; + border: none; + cursor: pointer; + height: 37px; + margin: 3px 0; + padding: 0 0 0 34px; + position: relative; + -webkit-transition: width 400ms ease, background 400ms ease; + transition: width 400ms ease, background 400ms ease; + width: 1px; +} + +.site-header .search-field:focus { + background-color: #fff; + border: 2px solid #c3c0ab; + cursor: text; + outline: 0; + width: 230px; +} + + +/** + * 5.0 Content + * ---------------------------------------------------------------------------- + */ + +.hentry { + padding: 40px 0; +} + +.entry-header, +.entry-content, +.entry-summary, +.entry-meta { + margin: 0 auto; + max-width: 604px; + width: 100%; +} + +.sidebar .entry-header, +.sidebar .entry-content, +.sidebar .entry-summary, +.sidebar .entry-meta { + max-width: 1040px; + padding: 0 376px 0 60px; +} + + +/** + * 5.1 Entry Header + * ---------------------------------------------------------------------------- + */ + +.sidebar .entry-header .entry-meta { + padding: 0; +} + +.entry-thumbnail img { + display: block; + margin: 0 auto 10px; +} + +.entry-header { + margin-bottom: 30px; +} + +.entry-title { + font-weight: normal; + margin: 0 0 5px; +} + +.entry-title a { + color: #141412; +} + +.entry-title a:hover { + color: #ea9629; +} + + +/** + * 5.2 Entry Meta + * ---------------------------------------------------------------------------- + */ + +.entry-meta { + clear: both; + font-size: 14px; +} + +.entry-meta a { + color: #bc360a; +} + +.entry-meta a:hover { + color: #bc360a; +} + +.entry-meta > span { + margin-right: 20px; +} + +.entry-meta > span:last-child { + margin-right: 0; +} + +.featured-post:before { + content: "\f308"; + margin-right: 2px; +} + +.entry-meta .date a:before { + content: "\f303"; +} + +.comments-link a:before { + content: "\f300"; + margin-right: 2px; + position: relative; + top: -1px; +} + +.entry-meta .author a:before { + content: "\f304"; + position: relative; + top: -1px; +} + +.categories-links a:first-child:before { + content: "\f301"; +} + +.tags-links a:first-child:before { + content: "\f302"; + position: relative; + top: -1px; +} + +.edit-link a:before { + content: "\f411"; + position: relative; + top: -1px; +} + +.single-author .entry-meta .author, +.sticky.format-standard .entry-meta .date, +.sticky.format-audio .entry-meta .date, +.sticky.format-chat .entry-meta .date, +.sticky.format-image .entry-meta .date, +.sticky.format-gallery .entry-meta .date { + display: none; +} + + +/** + * 5.3 Entry Content + * ---------------------------------------------------------------------------- + */ + +.entry-content { + -webkit-hyphens: auto; + -moz-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; + word-wrap: break-word; +} + +.entry-content a, +.comment-content a { + color: #bc360a; +} + +.entry-content a:hover, +.comment-content a:hover { + color: #ea9629; +} + +.entry-content .more-link { + white-space: nowrap; +} + +.entry-content blockquote { + font-size: 24px; +} + +.entry-content blockquote cite, +.entry-content blockquote small { + font-size: 16px; +} + +.entry-content img.alignleft, +.entry-content .wp-caption.alignleft { + margin-left: -60px; +} + +.entry-content img.alignright, +.entry-content .wp-caption.alignright { + margin-right: -60px; +} + +footer.entry-meta { + margin-top: 24px; +} + +.format-standard footer.entry-meta { + margin-top: 0; +} + +/* Page links */ +.page-links { + clear: both; + font-size: 16px; + font-style: italic; + font-weight: normal; + line-height: 2.2; + margin: 20px 0; + text-transform: uppercase; +} + +.page-links a, +.page-links > span { + background: #fff; + border: 1px solid #fff; + padding: 5px 10px; + text-decoration: none; +} + +.format-status .entry-content .page-links a, +.format-gallery .entry-content .page-links a, +.format-chat .entry-content .page-links a, +.format-quote .entry-content .page-links a, +.page-links a { + background: #e63f2a; + border: 1px solid #e63f2a; + color: #fff; +} + +.format-gallery .entry-content .page-links a:hover, +.format-audio .entry-content .page-links a:hover, +.format-status .entry-content .page-links a:hover, +.format-video .entry-content .page-links a:hover, +.format-chat .entry-content .page-links a:hover, +.format-quote .entry-content .page-links a:hover, +.page-links a:hover { + background: #fff; + color: #e63f2a; +} + +.format-status .entry-content .page-links > span, +.format-quote .entry-content .page-links > span { + background: none; +} + +.page-links .page-links-title { + background: transparent; + border: none; + margin-right: 20px; + padding: 0; +} + +/* Mediaelements */ +.hentry .mejs-mediaelement, +.hentry .mejs-container .mejs-controls { + background: #220e10; +} + +.hentry .mejs-controls .mejs-time-rail .mejs-time-loaded, +.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { + background: #fff; +} + +.hentry .mejs-controls .mejs-time-rail .mejs-time-current { + background: #ea9629; +} + +.hentry .mejs-controls .mejs-time-rail .mejs-time-total, +.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total { + background: #595959; +} + +.hentry .mejs-controls .mejs-time-rail span, +.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total, +.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { + border-radius: 0; +} + + +/** + * 5.4 Galleries + * ---------------------------------------------------------------------------- + */ + +.gallery { + margin-bottom: 20px; + margin-left: -4px; +} + +.gallery-item { + float: left; + margin: 0 4px 4px 0; + overflow: hidden; + position: relative; +} + +.gallery-columns-1.gallery-size-medium, +.gallery-columns-1.gallery-size-thumbnail, +.gallery-columns-2.gallery-size-thumbnail, +.gallery-columns-3.gallery-size-thumbnail { + display: table; + margin: 0 auto 20px; +} + +.gallery-columns-1 .gallery-item, +.gallery-columns-2 .gallery-item, +.gallery-columns-3 .gallery-item { + text-align: center; +} + +.gallery-columns-4 .gallery-item { + max-width: 23%; + max-width: -webkit-calc(25% - 4px); + max-width: calc(25% - 4px); +} + +.gallery-columns-5 .gallery-item { + max-width: 19%; + max-width: -webkit-calc(20% - 4px); + max-width: calc(20% - 4px); +} + +.gallery-columns-6 .gallery-item { + max-width: 15%; + max-width: -webkit-calc(16.7% - 4px); + max-width: calc(16.7% - 4px); +} + +.gallery-columns-7 .gallery-item { + max-width: 13%; + max-width: -webkit-calc(14.28% - 4px); + max-width: calc(14.28% - 4px); +} + +.gallery-columns-8 .gallery-item { + max-width: 11%; + max-width: -webkit-calc(12.5% - 4px); + max-width: calc(12.5% - 4px); +} + +.gallery-columns-9 .gallery-item { + max-width: 9%; + max-width: -webkit-calc(11.1% - 4px); + max-width: calc(11.1% - 4px); +} + +.gallery-columns-1 .gallery-item:nth-of-type(1n), +.gallery-columns-2 .gallery-item:nth-of-type(2n), +.gallery-columns-3 .gallery-item:nth-of-type(3n), +.gallery-columns-4 .gallery-item:nth-of-type(4n), +.gallery-columns-5 .gallery-item:nth-of-type(5n), +.gallery-columns-6 .gallery-item:nth-of-type(6n), +.gallery-columns-7 .gallery-item:nth-of-type(7n), +.gallery-columns-8 .gallery-item:nth-of-type(8n), +.gallery-columns-9 .gallery-item:nth-of-type(9n) { + margin-right: 0; +} + +.gallery-columns-1.gallery-size-medium figure.gallery-item:nth-of-type(1n+1), +.gallery-columns-1.gallery-size-thumbnail figure.gallery-item:nth-of-type(1n+1), +.gallery-columns-2.gallery-size-thumbnail figure.gallery-item:nth-of-type(2n+1), +.gallery-columns-3.gallery-size-thumbnail figure.gallery-item:nth-of-type(3n+1) { + clear: left; +} + +.gallery-caption { + background-color: rgba(0, 0, 0, 0.7); + box-sizing: border-box; + color: #fff; + font-size: 14px; + line-height: 1.3; + margin: 0; + max-height: 50%; + opacity: 0; + padding: 2px 8px; + position: absolute; + bottom: 0; + left: 0; + text-align: left; + -webkit-transition: opacity 400ms ease; + transition: opacity 400ms ease; + width: 100%; +} + +.gallery-caption:before { + box-shadow: 0 -10px 15px #000 inset; + content: ""; + height: 100%; + min-height: 49px; + position: absolute; + left: 0; + top: 0; + width: 100%; +} + +.gallery-item:hover .gallery-caption { + opacity: 1; +} + +.gallery-columns-7 .gallery-caption, +.gallery-columns-8 .gallery-caption, +.gallery-columns-9 .gallery-caption { + display: none; +} + + +/** + * 5.5 Post Formats + * ---------------------------------------------------------------------------- + */ + +/* Aside */ +.format-aside { + background-color: #f7f5e7; +} + +.blog .format-aside:first-of-type, +.single .format-aside:first-of-type, +.format-aside + .format-aside, +.format-aside + .format-link, +.format-link + .format-aside { + box-shadow: inset 0 2px 2px rgba(173, 165, 105, 0.2); +} + +.format-aside .entry-meta { + margin-top: 0; +} + +.format-aside blockquote { + font-size: 100%; + font-weight: normal; +} + +.format-aside cite { + font-size: 100%; + text-transform: none; +} + +.format-aside cite:before { + content: "\2014"; + margin-right: 5px; +} + +/* Audio */ +.format-audio { + background-color: #db572f; +} + +.format-audio .entry-title { + font-size: 28px; + font-weight: bold; +} + +.format-audio .entry-content:before { + content: "\f109"; + float: left; + font-size: 64px; + position: relative; + top: 4px; +} + +.format-audio .entry-content a, +.format-audio .entry-meta a, +.format-audio .entry-content a:hover, +.format-audio .entry-meta a:hover { + color: #fbfaf3; +} + +.format-audio .audio-content { + background: url(images/dotted-line.png) repeat-y left top; + background-size: 4px 4px; + float: right; + padding-left: 35px; + width: 80%; + width: -webkit-calc(100% - 85px); + width: calc(100% - 85px); +} + +.format-audio .wp-audio-shortcode { + height: 30px !important; /* Override mediaelement.js style */ + margin: 20px 0; + max-width: 400px !important; /* Override mediaelement.js style */ +} + +.format-audio audio { + max-width: 100% !important; /* Avoid player width overflow. */ +} + +/* Chat */ +.format-chat { + background-color: #eadaa6; +} + +.format-chat .entry-title { + font-size: 28px; + font-weight: bold; +} + +.format-chat .entry-meta a, +.format-chat .entry-content a { + color: #722d19; +} + +.format-chat .entry-meta .date a:before { + content: "\f108"; + margin-right: 2px; +} + +.format-chat .entry-meta .author { + display: none; +} + +.format-chat .chat { + margin: 0; +} + +.format-chat .chat .chat-timestamp { + color: #722d19; + float: right; + font-size: 12px; + font-weight: normal; + margin: 5px 10px 0; +} + +.format-chat .chat .fn { + font-style: normal; +} + +/* Gallery */ +.format-gallery { + background-color: #fbca3c; +} + +.format-gallery .entry-header { + margin-bottom: 15px; +} + +.format-gallery .entry-title { + font-size: 50px; + font-weight: 400; + margin: 0; +} + +.format-gallery .entry-meta a, +.format-gallery .entry-content a { + color: #722d19; +} + +/* Image */ +.format-image .entry-title { + font-size: 28px; + font-weight: bold; +} + +.format-image .categories-links, +.format-image .tags-links { + display: none; +} + +/* Link */ +.format-link { + background-color: #f7f5e7; +} + +.blog .format-link:first-of-type, +.single .format-link:first-of-type { + box-shadow: inset 0 2px 2px rgba(173, 165, 105, 0.2); +} + +.format-link .entry-header, +.format-link .entry-content p:last-child { + margin-bottom: 0; +} + +.format-link .entry-title { + color: #ca3c08; + display: inline; + font: 300 italic 20px "Source Sans Pro", Helvetica, sans-serif; + margin-right: 20px; +} + +.format-link .entry-title a { + color: #bc360a; +} + +.format-link div.entry-meta { + display: inline; +} + +/* Standard */ +.format-standard .wp-video, +.format-standard .wp-audio-shortcode, +.format-audio .wp-audio-shortcode, +.format-standard .video-player { + margin-bottom: 24px; +} + +/* Quote */ +.format-quote { + background-color: #210d10; +} + +.format-quote .entry-content, +.format-quote .entry-meta { + color: #f7f5e7; +} + +.format-quote .entry-content blockquote { + font-size: 28px; + margin: 0; +} + +.format-quote .entry-content a, +.format-quote .entry-meta a, +.format-quote .linked { + color: #e63f2a; +} + +.format-quote .entry-content cite a { + border-bottom: 1px dotted #fff; + color: #fff; +} + +.format-quote .entry-content cite a:hover { + text-decoration: none; +} + +.format-quote blockquote small, +.format-quote blockquote cite { + display: block; + font-size: 16px; +} + +.format-quote blockquote { + font-style: italic; + font-weight: 300; + padding-left: 75px; + position: relative; +} + +.format-quote blockquote:before { + content: '\201C'; + font-size: 140px; + font-weight: 400; + line-height: .8; + padding-right: 25px; + position: absolute; + left: -15px; + top: -3px; +} + +.format-quote .entry-meta .author { + display: none; +} + +/* Status */ +.format-status { + background-color: #722d19; + padding: 0; +} + +.format-status .entry-content, +.format-status .entry-meta { + padding-left: 35px; + position: relative; +} + +.format-status .entry-content a { + color: #eadaa6; +} + +.format-status .entry-meta a { + color: #f7f5e7; +} + +.sidebar .format-status .entry-content, +.sidebar .format-status .entry-meta { + padding-left: 95px; +} + +.format-status .entry-content:before, +.format-status .entry-meta:before { + background: url(images/dotted-line.png) repeat-y left bottom; + background-size: 4px 4px; + content: ""; + display: block; + height: 100%; + position: absolute; + left: 10px; + top: 0; + width: 1px; +} + +.sidebar .format-status .entry-content:before, +.sidebar .format-status .entry-meta:before { + left: 70px; +} + +.format-status .categories-links, +.format-status .tags-links { + display: none; +} + +/* Ensures the dots in the dot background are in lockstep. */ +.format-status .entry-meta:before { + background-position: left top; +} + +.format-status .entry-content { + color: #f7f5e7; + font-size: 24px; + font-style: italic; + font-weight: 300; + padding-bottom: 30px; + padding-top: 40px; + position: relative; +} + +.format-status .entry-content p:first-child:before { + background-color: rgba(0, 0, 0, 0.65); + content: ""; + height: 3px; + margin-top: 13px; + position: absolute; + left: 4px; + width: 13px; +} + +.sidebar .format-status .entry-content > p:first-child:before { + left: 64px; +} + +.format-status .entry-content p:last-child { + margin-bottom: 0; +} + +.format-status .entry-meta { + margin-top: 0; + padding-bottom: 40px; +} + +.format-status .entry-meta .date a:before { + content: "\f105"; +} + +/* Video */ +.format-video { + background-color: #db572f; +} + +.format-video .entry-content a, +.format-video .entry-meta a, +.format-video .entry-content a:hover, +.format-video .entry-meta a:hover { + color: #fbfaf3; +} + +.format-video .entry-title { + font-size: 50px; + font-weight: 400; +} + +.format-video .entry-meta { + color: #220e10; +} + + +/** + * 5.6 Attachments + * ---------------------------------------------------------------------------- + */ + +.attachment .hentry { + background-color: #e8e5ce; + margin: 0; + padding: 0; +} + +.attachment .entry-header { + margin-bottom: 0; + max-width: 1040px; + padding: 30px 0; +} + +.attachment .entry-title { + display: inline-block; + float: left; + font: 300 italic 30px "Source Sans Pro", Helvetica, sans-serif; + margin: 0; +} + +.attachment .entry-title:before { + content: "\f416"; + font-size: 32px; + margin-right: 10px; +} + +.attachment .entry-meta { + clear: none; + color: inherit; + float: right; + max-width: 604px; + padding: 9px 0 0; + text-align: right; +} + +.hentry.attachment:not(.image-attachment) .entry-meta { + max-width: 104px; +} + +.attachment footer.entry-meta { + display: none; +} + +.attachment-meta:before { + content: "\f307"; +} + +.full-size-link a:before { + content: "\f402"; +} + +.full-size-link:before { + content: none; +} + +.attachment .entry-meta a, +.attachment .entry-meta .edit-link:before, +.attachment .full-size-link:before { + color: #ca3c08; +} + +.attachment .entry-content { + background-color: #fff; + max-width: 100%; + padding: 40px 0; +} + +.image-navigation { + margin: 0 auto; + max-width: 1040px; + position: relative; +} + +.image-navigation a:hover { + text-decoration: none; +} + +.image-navigation .nav-previous, +.image-navigation .nav-next { + position: absolute; + top: 50px; +} + +.image-navigation .nav-previous { + left: 0; +} + +.image-navigation .nav-next { + right: 0; +} + +.image-navigation .meta-nav { + font-size: 32px; + font-weight: 300; + vertical-align: -4px; +} + +.attachment .entry-attachment, +.attachment .type-attachment p { + margin: 0 auto; + max-width: 724px; + text-align: center; +} + +.attachment .entry-attachment .attachment { + display: inline-block; +} + +.attachment .entry-caption { + text-align: left; +} + +.attachment .entry-description { + margin: 20px auto 0; + max-width: 604px; +} + +.attachment .entry-caption p:last-child, +.attachment .entry-description p:last-child { + margin: 0; +} + +.attachment .site-main .sidebar-container { + display: none; +} + +.attachment .entry-content .mejs-audio { + max-width: 400px; + margin: 0 auto; +} + +.attachment .entry-content .wp-video { + margin: 0 auto; +} + +.attachment .entry-content .mejs-container { + margin-bottom: 24px; +} + +/** + * 5.7 Post/Paging Navigation + * ---------------------------------------------------------------------------- + */ + +.navigation .nav-previous { + float: left; +} + +.navigation .nav-next { + float: right; +} + +.navigation a { + color: #bc360a; +} + +.navigation a:hover { + color: #ea9629; + text-decoration: none; +} + +.paging-navigation { + background-color: #e8e5ce; + padding: 40px 0; +} + +.paging-navigation .nav-links { + margin: 0 auto; + max-width: 604px; + width: 100%; +} + +.sidebar .paging-navigation .nav-links { + max-width: 1040px; + padding: 0 376px 0 60px; +} + +.paging-navigation .nav-next { + padding: 13px 0; +} + +.paging-navigation a { + font-size: 22px; + font-style: italic; + font-weight: 300; +} + +.paging-navigation .meta-nav { + background-color: #e63f2a; + border-radius: 50%; + color: #fff; + display: inline-block; + font-size: 26px; + padding: 3px 0 8px; + text-align: center; + width: 50px; +} + +.paging-navigation .nav-previous .meta-nav { + margin-right: 10px; + padding: 17px 0 23px; + width: 80px; +} + +.paging-navigation .nav-next .meta-nav { + margin-left: 10px; +} + +.paging-navigation a:hover .meta-nav { + background-color: #ea9629; + text-decoration: none; +} + +.post-navigation { + background-color: #fff; + color: #ca3c08; + font-size: 20px; + font-style: italic; + font-weight: 300; + padding: 20px 0; +} + +.post-navigation .nav-links { + margin: 0 auto; + max-width: 1040px; +} + +.sidebar .post-navigation .nav-links { + padding: 0 376px 0 60px; +} + +.post-navigation a[rel="next"] { + float: right; + text-align: right; +} + + +/** + * 5.8 Author Bio + * ---------------------------------------------------------------------------- + */ + +.author-info { + margin: 0 auto; + max-width: 604px; + padding: 30px 0 10px; + text-align: left; /* gallery & video post formats */ + width: 100%; +} + +.author.sidebar .author-info { + max-width: 1040px; + padding: 30px 376px 10px 60px; +} + +.single .author-info { + padding: 50px 0 0; +} + +.author-avatar .avatar { + float: left; + margin: 0 30px 30px 0; +} + +.single-format-status .author-description { + color: #f7f5e7; +} + +.author-description .author-title { + clear: none; + font: 300 italic 20px "Source Sans Pro", Helvetica, sans-serif; + margin: 0 0 8px; +} + +.author-link { + color: #ca3c08; + margin-left: 2px; +} + +.author.archive .author-link { + display: none; +} + + +/** + * 5.9 Archives + * ---------------------------------------------------------------------------- + */ + +.archive-header { + background-color: #e8e5ce; +} + +.archive-title, +.archive-meta { + font: 300 italic 30px "Source Sans Pro", Helvetica, sans-serif; + margin: 0 auto; + max-width: 1040px; + padding: 30px 0; + width: 100%; +} + +.archive-meta { + font-size: 16px; + font-style: normal; + font-weight: normal; + margin-top: -15px; + padding: 0 0 11px; +} + +.sidebar .archive-meta { + padding-right: 316px; +} + + +/** + * 5.10 Search Results/No posts + * ---------------------------------------------------------------------------- + */ + +.page-header { + background-color: #e8e5ce; +} + +.page-title { + font: 300 italic 30px "Source Sans Pro", Helvetica, sans-serif; + margin: 0 auto; + max-width: 1040px; + padding: 30px 0; + width: 100%; +} + +.page-content { + margin: 0 auto; + max-width: 604px; + padding: 40px 0; + width: 100%; +} + +.sidebar .page-content { + margin: 0 auto; + max-width: 1040px; + padding: 40px 376px 40px 60px; +} + + +/** + * 5.11 404 + * ---------------------------------------------------------------------------- + */ + +.error404 .page-header { + background-color: #fff; +} + +.error404 .page-title { + line-height: 0.6; + margin: 0; + padding: 300px; + position: relative; + text-align: center; + width: auto; +} + +.error404 .page-title:before { + color: #e8e5ce; + content: "\f423"; + font-size: 964px; + line-height: 0.6; + overflow: hidden; + position: absolute; + left: 7px; + top: 28px; +} + +.error404 .page-wrapper { + background-color: #e8e5ce; +} + +.error404 .page-header, +.error404 .page-content { + margin: 0 auto; + max-width: 1040px; + padding-bottom: 40px; + width: 100%; +} + + +/** + * 5.12 Comments + * ---------------------------------------------------------------------------- + */ + +.comments-title, +.comment-list, +.comment-reply-title, +.must-log-in, +.comment-respond .comment-form, +.comment-respond iframe { + display: block; + margin-left: auto; + margin-right: auto; + max-width: 604px; + width: 100%; +} + +.sidebar .comments-title, +.sidebar .comment-list, +.sidebar .must-log-in, +.sidebar .comment-reply-title, +.sidebar .comment-navigation, +.sidebar .comment-respond .comment-form { + max-width: 1040px; + padding-left: 60px; + padding-right: 376px; +} + +.comments-title { + font: 300 italic 28px "Source Sans Pro", Helvetica, sans-serif; +} + +.comment-list, +.comment-list .children { + list-style-type: none; + padding: 0; +} + +.comment-list .children { + margin-left: 20px; +} + +.comment-list > li:after, +.comment-list .children > li:before { + background: url(images/dotted-line.png) repeat left top; + background-size: 4px 4px; + content: ""; + display: block; + height: 1px; + width: 100%; +} + +.comment-list > li:last-child:after { + display: none; +} + +.comment-body { + padding: 24px 0; + position: relative; +} + +.comment-author { + float: left; + max-width: 74px; +} + +.comment-author .avatar { + display: block; + margin-bottom: 10px; +} + +.comment-author .fn { + word-wrap: break-word; +} + +.comment-author .fn, +.comment-author .url, +.comment-reply-link, +.comment-reply-login { + color: #bc360a; + font-size: 14px; + font-style: normal; + font-weight: normal; +} + +.says { + display: none; +} + +.no-avatars .comment-author { + margin: 0 0 5px; + max-width: 100%; + position: relative; +} + +.no-avatars .comment-metadata, +.no-avatars .comment-content, +.no-avatars .comment-list .reply { + width: 100%; +} + +.bypostauthor > .comment-body .fn:before { + content: "\f408"; + vertical-align: text-top; +} + +.comment-list .edit-link { + margin-left: 20px; +} + +.comment-metadata, +.comment-awaiting-moderation, +.comment-content, +.comment-list .reply { + float: right; + width: 79%; + width: -webkit-calc(100% - 124px); + width: calc(100% - 124px); + word-wrap: break-word; +} + +.comment-meta, +.comment-meta a { + color: #a2a2a2; + font-size: 13px; +} + +.comment-meta a:hover { + color: #ea9629; +} + +.comment-metadata { + margin-bottom: 20px; +} + +.ping-meta { + color: #a2a2a2; + font-size: 13px; + line-height: 2; +} + +.comment-awaiting-moderation { + color: #a2a2a2; +} + +.comment-awaiting-moderation:before { + content: "\f414"; + margin-right: 5px; + position: relative; + top: -2px; +} + +.comment-reply-link:before, +.comment-reply-login:before { + content: "\f412"; + margin-right: 3px; +} + +/* Comment form */ +.comment-respond { + background-color: #f7f5e7; + padding: 30px 0; +} + +.comment .comment-respond { + margin-bottom: 20px; + padding: 20px; +} + +.comment-reply-title { + font: 300 italic 28px "Source Sans Pro", Helvetica, sans-serif; +} + +.comment-reply-title small a { + color: #131310; + display: inline-block; + float: right; + height: 16px; + overflow: hidden; + width: 16px; +} + +.comment-reply-title small a:hover { + color: #ed331c; + text-decoration: none; +} + +.comment-reply-title small a:before { + content: "\f406"; + vertical-align: top; +} + +.sidebar .comment-list .comment-reply-title, +.sidebar .comment-list .comment-respond .comment-form { + padding: 0; +} + +.comment-form .comment-notes { + margin-bottom: 15px; +} + +.comment-form .comment-form-author, +.comment-form .comment-form-email, +.comment-form .comment-form-url { + margin-bottom: 8px; +} + +.comment-form [for="author"], +.comment-form [for="email"], +.comment-form [for="url"], +.comment-form [for="comment"] { + float: left; + padding: 5px 0; + width: 120px; +} + +.comment-form .required { + color: #ed331c; +} + +.comment-form input[type="text"], +.comment-form input[type="email"], +.comment-form input[type="url"] { + max-width: 270px; + width: 60%; +} + +.comment-form textarea { + width: 100%; +} + +.form-allowed-tags, +.form-allowed-tags code { + color: #686758; + font-size: 12px; +} + +.form-allowed-tags code { + font-size: 10px; + margin-left: 3px; +} + +.comment-list .pingback, +.comment-list .trackback { + padding-top: 24px; +} + +.comment-navigation { + font-size: 20px; + font-style: italic; + font-weight: 300; + margin: 0 auto; + max-width: 604px; + padding: 20px 0 30px; + width: 100%; +} + +.no-comments { + background-color: #f7f5e7; + font-size: 20px; + font-style: italic; + font-weight: 300; + margin: 0; + padding: 40px 0; + text-align: center; +} + +.sidebar .no-comments { + padding-left: 60px; + padding-right: 376px; +} + + +/** + * 5.13 Multisite + * ---------------------------------------------------------------------------- + */ + +.site-main .mu_register { + margin: 0 auto; + max-width: 604px; + width: 100%; +} + +.mu_alert { + margin-top: 25px; +} + +.site-main .mu_register input[type="submit"], +.site-main .mu_register #blog_title, +.site-main .mu_register #user_email, +.site-main .mu_register #blogname, +.site-main .mu_register #user_name { + font-size: inherit; + width: 270px; +} + +.site-main .mu_register input[type="submit"] { + width: auto; +} + + +/** + * 6.0 Sidebar + * ---------------------------------------------------------------------------- + */ + +.site-main .widget-area { + float: right; + width: 300px; +} + + +/** + * 6.1 Widgets + * ---------------------------------------------------------------------------- + */ + +.widget { + background-color: rgba(247, 245, 231, 0.7); + font-size: 14px; + -webkit-hyphens: auto; + -moz-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; + margin: 0 0 24px; + padding: 20px; + word-wrap: break-word; +} + +.widget .widget-title { + font: 300 italic 20px "Source Sans Pro", Helvetica, sans-serif; + margin: 0 0 10px; +} + +.widget ul, +.widget ol { + list-style-type: none; + margin: 0; + padding: 0; +} + +.widget li { + padding: 5px 0; +} + +.widget .children li:last-child { + padding-bottom: 0; +} + +.widget li > ul, +.widget li > ol { + margin-left: 20px; +} + +.widget a { + color: #bc360a; +} + +.widget a:hover { + color: #ea9629; +} + +/* Search widget */ +.search-form .search-submit { + display: none; +} + +/* RSS Widget */ +.widget_rss .rss-date { + display: block; +} + +.widget_rss .rss-date, +.widget_rss li > cite { + color: #a2a2a2; +} + +/* Calendar Widget */ +.widget_calendar table, +.widget_calendar td { + border: 0; + border-collapse: separate; + border-spacing: 1px; +} + +.widget_calendar caption { + font-size: 14px; + margin: 0; +} + +.widget_calendar th, +.widget_calendar td { + padding: 0; + text-align: center; +} + +.widget_calendar a { + display: block; +} + +.widget_calendar a:hover { + background-color: rgba(0, 0, 0, 0.15); +} + +.widget_calendar tbody td { + background-color: rgba(255, 255, 255, 0.5); +} + +.site-footer .widget_calendar tbody td { + background-color: rgba(255, 255, 255, 0.05); +} + +.widget_calendar tbody .pad, .site-footer .widget_calendar tbody .pad { + background-color: transparent; +} + + +/** + * 7.0 Footer + * ---------------------------------------------------------------------------- + */ + +.site-footer { + background-color: #e8e5ce; + color: #686758; + font-size: 14px; + text-align: center; +} + +.site-footer .widget-area, +.sidebar .site-footer { + text-align: left; +} + +.site-footer a { + color: #686758; +} + +.site-footer .sidebar-container { + background-color: #220e10; + padding: 20px 0; +} + +.site-footer .widget-area { + margin: 0 auto; + max-width: 1040px; + width: 100%; +} + +.sidebar .site-footer .widget-area { + max-width: 724px; + position: relative; + left: -158px; +} + +.site-footer .widget { + background: transparent; + color: #fff; + float: left; + margin-right: 20px; + width: 245px; +} + +.sidebar .site-footer .widget { + width: 228px; +} + +.sidebar .site-footer .widget:nth-of-type(4), +.sidebar .site-footer .widget:nth-of-type(3) { + margin-right: 0; +} + +.site-footer .widget a { + color: #e6402a; +} + +.site-footer .widget-title, +.site-footer .widget-title a, +.site-footer .wp-caption-text { + color: #fff; +} + +.site-info { + margin: 0 auto; + max-width: 1040px; + padding: 30px 0; + width: 100%; +} + +#wpstats { + display: block; + margin: -10px auto 0; +} + + +/** + * 8.0 Media Queries + * ---------------------------------------------------------------------------- + */ + +/* Does the same thing as , + * but in the future W3C standard way. -ms- prefix is required for IE10+ to + * render responsive styling in Windows 8 "snapped" views; IE10+ does not honor + * the meta tag. See https://core.trac.wordpress.org/ticket/25888. + */ +@-ms-viewport { + width: device-width; +} +@viewport { + width: device-width; +} + +@media (max-width: 1599px) { + .site { + border: 0; + } +} + +@media (max-width: 1069px) { + .sidebar img.alignleft, + .sidebar .wp-caption.alignleft { + margin-left: 0; + } + + .sidebar img.alignright, + .sidebar .wp-caption.alignright { + margin-right: 0; + } + + .error404 .page-header { + margin-left: auto; + max-width: 604px; + width: 100%; + } + + .archive-header, + .search .page-header, + .archive .page-header, + .blog .page-header, + .error404 .page-content, + .search .page-content, + .archive .page-content, + .attachment .entry-header, + .attachment .entry-content, + .post-navigation .nav-links, + .sidebar .site-info, + .site-footer .widget-area { + padding-left: 20px; + padding-right: 20px; + } + + .error404 .page-title { + font-size: 24px; + padding: 180px; + } + + .error404 .page-title:before { + font-size: 554px; + } + + .attachment .image-navigation { + max-width: 724px; + } + + .image-navigation .nav-previous, + .image-navigation .nav-next { + position: static; + } + + .site-main .widget-area { + margin-right: 60px; + } +} + +@media (max-width: 999px) { + .sidebar .entry-header, + .sidebar .entry-content, + .sidebar .entry-summary, + .sidebar .entry-meta, + .sidebar .comment-list, + .sidebar .comment-reply-title, + .sidebar .comment-navigation, + .sidebar .comment-respond .comment-form, + .sidebar .featured-gallery, + .sidebar .post-navigation .nav-links, + .author.sidebar .author-info { + max-width: 604px; + padding-left: 0; + padding-right: 0; + } + + .sidebar .site-info, + .search.sidebar .page-content, + .blog.sidebar .page-content, + .attachment .entry-header, + .sidebar .comments-title { + max-width: 604px; + } + + .sidebar .archive-meta, + .attachment .entry-header, + .search.sidebar .page-content, + .blog.sidebar .page-content, + .sidebar .site-info, + .sidebar .comments-title, + .sidebar .no-comments { + padding-left: 0; + padding-right: 0; + } + + .attachment .entry-meta { + float: left; + text-align: left; + width: 100%; + } + + .attachment .entry-content { + max-width: 100%; + padding: 40px 0; + } + + .format-status .entry-content { + padding-top: 40px; + } + + .format-status .entry-meta { + padding-bottom: 40px; + } + + .sidebar .format-status .entry-content, + .sidebar .format-status .entry-meta { + padding-left: 35px; + } + + .sidebar .format-status .entry-content:before, + .sidebar .format-status .entry-meta:before { + left: 10px; + } + + .sidebar .format-status .entry-content p:first-child:before { + left: 4px; + } + + .sidebar .paging-navigation .nav-links { + padding: 0 60px; + } + + .site-main .sidebar-container { + height: auto; + margin: 0 auto; + max-width: 604px; + position: relative; + top: 20px; + } + + .site-main .widget-area { + float: none; + margin: 0; + width: 100%; + } + + .sidebar .site-footer .widget-area { + max-width: 100%; + left: 0; + } +} + +/* Collapse oversized image and pulled images after iPad breakpoint. */ +@media (max-width: 767px) { + .site-header .home-link { + min-height: 0; + } + .site-title { + font-size: 36px; + padding: 8px 0 10px; + } + .entry-content img.alignleft, + .entry-content .wp-caption.alignleft { + margin-left: 0; + } + + .entry-content img.alignright, + .entry-content .wp-caption.alignright { + margin-right: 0; + } + + .attachment .image-navigation, + .attachment .entry-attachment .attachment { + max-width: 604px; + padding: 0; + width: 100%; + } + + .gallery-caption { + display: none; + } +} + +@media (max-width: 643px) { + .site-title { + font-size: 30px; + } + + #content .entry-header, + #content .entry-content, + #content .entry-summary, + #content footer.entry-meta, + #content .featured-gallery, + .search.sidebar .page-content, + .blog.sidebar .page-content, + .sidebar .post-navigation .nav-links, + .paging-navigation .nav-links, + #content .author-info, + .comments-area .comments-title, + .comments-area .comment-list, + .comments-area .comment-navigation, + .comment-respond, + .sidebar .site-info, + .sidebar .paging-navigation .nav-links { + padding-left: 20px; + padding-right: 20px; + } + + #content .format-status .entry-content, + #content .format-status .entry-met { + padding-left: 35px; + } + + /* Small menu */ + .menu-toggle { + cursor: pointer; + display: inline-block; + font: bold 16px/1.3 "Source Sans Pro", Helvetica, sans-serif; + margin: 0; + } + + .menu-toggle, + .menu-toggle:hover, + .menu-toggle:focus, + .menu-toggle:active { + background: none; + border: none; + color: #141412; + padding: 12px 0 12px 20px; + } + + .menu-toggle:focus { + outline: thin dotted; + } + + .menu-toggle:after { + content: "\f502"; + font-size: 12px; + padding-left: 8px; + vertical-align: -4px; + } + + .toggled-on .menu-toggle:after { + content: "\f500"; + vertical-align: 2px; + } + + .toggled-on .nav-menu, + .toggled-on .nav-menu > ul { + display: block; + margin-left: 0; + padding: 0; + width: 100%; + } + + .toggled-on li, + .toggled-on .children { + display: block; + } + + .toggled-on .nav-menu li > ul { + background-color: transparent; + display: block; + float: none; + margin-left: 20px; + position: relative; + left: auto; + top: auto; + } + + .toggled-on .nav-menu li > ul a { + color: #141412; + width: auto; + } + + .toggled-on .nav-menu li:hover > a, + .toggled-on .nav-menu .children a { + background-color: transparent; + color: #141412; + } + + .toggled-on .nav-menu > li a:hover, + .toggled-on .nav-menu > ul a:hover { + background-color: #db572f; + color: #fff; + } + + .toggled-on .nav-menu > li a:focus, + .toggled-on .nav-menu > ul a:focus { + background-color: #220e10; + color: #fff; + } + + ul.nav-menu, + div.nav-menu > ul { + display: none; + } + + #content .featured-gallery { + padding-left: 24px; + } + + .gallery-columns-1 .gallery-item { + margin-right: 0; + width: 100%; + } + + .entry-title, + .format-chat .entry-title, + .format-image .entry-title, + .format-gallery .entry-title, + .format-video .entry-title { + font-size: 22px; + font-weight: bold; + } + + .format-quote blockquote, + .format-status .entry-content { + font-size: 18px; + } + + .format-quote blockquote small, + .format-quote blockquote cite { + font-size: 13px; + } + + .error404 .page-title { + padding: 40px 0 0; + } + + .error404 .page-title:before { + content: normal; + } + + .comment-author { + margin-right: 30px; + } + + .comment-author .avatar { + height: auto; + max-width: 100%; + } + + .comment-metadata, + .comment-content, + .comment-list .reply { + width: 70%; + width: -webkit-calc(100% - 104px); + width: calc(100% - 104px); + } + + .comment-form input[type="text"], + .comment-form input[type="email"], + .comment-form input[type="url"] { + width: -webkit-calc(100% - 120px); + width: calc(100% - 120px); + } + + .comment-form textarea { + height: 80px; /* Smaller field for mobile. */ + } + + /* Audio */ + .format-audio .entry-content:before { + display: none; + } + + .format-audio .audio-content { + background-image: none; + float: none; + padding-left: 0; + width: auto; + } +} + +/* Mobile devices */ +@media (max-width: 359px) { + .site-title { + font-weight: normal; + } + .site-description { + clip: rect(1px, 1px, 1px, 1px); + position: absolute; + } + .gallery { + margin-left: 0; + } + + .gallery .gallery-item, + .gallery-columns-2.gallery-size-thumbnail .gallery-item { + max-width: none; + width: 49%; + width: -webkit-calc(50% - 4px); + width: calc(50% - 4px); + } + + .gallery-columns-1.gallery-size-medium, + .gallery-columns-1.gallery-size-thumbnail, + .gallery-columns-2.gallery-size-thumbnail, + .gallery-columns-3.gallery-size-thumbnail { + display: block; + } + + .gallery-columns-1 .gallery-item, + .gallery-columns-1.gallery-size-medium .gallery-item, + .gallery-columns-1.gallery-size-thumbnail .gallery-item { + text-align: center; + width: 98%; + width: -webkit-calc(100% - 4px); + width: calc(100% - 4px); + } + + .gallery-columns-3 .gallery-item:nth-of-type(3n), + .gallery-columns-5 .gallery-item:nth-of-type(5n), + .gallery-columns-7 .gallery-item:nth-of-type(7n), + .gallery-columns-9 .gallery-item:nth-of-type(9n) { + margin-right: 4px; + } + + .gallery br { + display: none; + } + + .gallery .gallery-item:nth-of-type(even) { + margin-right: 0; + } + + /* Comments */ + .comment-author { + margin: 0 0 5px; + max-width: 100%; + } + + .comment-author .avatar { + display: inline; + margin: 0 5px 0 0; + max-width: 20px; + } + + .comment-metadata, + .comment-content, + .comment-list .reply { + width: 100%; + } +} + + +/** + * 9.0 Print + * ---------------------------------------------------------------------------- + */ + +/* Retina-specific styles. */ +@media print, + (-o-min-device-pixel-ratio: 5/4), + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + .site-header .search-field { + background-image: url(images/search-icon-2x.png); + } + + .format-audio .audio-content, + .format-status .entry-content:before, + .format-status .entry-meta:before, + .comment-list > li:after, + .comment-list .children > li:before { + background-image: url(images/dotted-line-2x.png); + } +} + +@media print { + body { + background: none !important; + color: #000; + font-size: 10pt; + } + + footer a[rel="bookmark"]:link:after, + footer a[rel="bookmark"]:visited:after { + content: " [" attr(href) "] "; /* Show URLs */ + } + + .site { + max-width: 98%; + } + + .site-header { + background-image: none !important; + } + + .site-header .home-link { + max-width: none; + min-height: 0; + } + + .site-title { + color: #000; + font-size: 21pt; + } + + .site-description { + font-size: 10pt; + } + + .author-avatar, + .site-footer, + .comment-respond, + .comments-area .comment-edit-link, + .comments-area .reply, + .comments-link, + .entry-meta .edit-link, + .page-links, + .site-content nav, + .widget-area, + .main-navigation, + .navbar, + .more-link { + display: none; + } + + .entry-header, + .entry-content, + .entry-summary, + .entry-meta { + margin: 0; + width: 100%; + } + + .page-title, + .entry-title { + font-size: 21pt; + } + + .entry-meta, + .entry-meta a { + color: #444; + font-size: 10pt; + } + + .entry-content img.alignleft, + .entry-content .wp-caption.alignleft { + margin-left: 0; + } + + .entry-content img.alignright, + .entry-content .wp-caption.alignright { + margin-right: 0; + } + + .format-image .entry-content .size-full { + margin: 0; + } + + /* Remove colors from post formats */ + .hentry { + background-color: #fff; + } + + /* Comments */ + .comments-area > li.comment { + background: none; + position: relative; + width: auto; + } + + .comment-metadata { + float: none; + } + + .comment-author .fn, + .comment-reply-link, + .comment-reply-login { + color: #333; + } +} diff --git a/wp-content/themes/twentythirteen/tag.php b/wp-content/themes/twentythirteen/tag.php new file mode 100644 index 0000000000..f00180d3bb --- /dev/null +++ b/wp-content/themes/twentythirteen/tag.php @@ -0,0 +1,43 @@ + + +
      +
      + + +
      +

      + + +
      + +
      + + + + + + + + + + + + +
      +
      + + + diff --git a/wp-content/themes/twentythirteen/taxonomy-post_format.php b/wp-content/themes/twentythirteen/taxonomy-post_format.php new file mode 100644 index 0000000000..3cf2970ee1 --- /dev/null +++ b/wp-content/themes/twentythirteen/taxonomy-post_format.php @@ -0,0 +1,41 @@ + + +
      +
      + + +
      +

      ' . esc_html( get_post_format_string( get_post_format() ) ) . '' ); ?>

      +
      + + + + + + + + + + + + +
      +
      + + + diff --git a/wp-content/themes/twentytwelve/404.php b/wp-content/themes/twentytwelve/404.php new file mode 100644 index 0000000000..db3ef811b2 --- /dev/null +++ b/wp-content/themes/twentytwelve/404.php @@ -0,0 +1,29 @@ + + +
      +
      + +
      +
      +

      +
      + +
      +

      + +
      +
      + +
      +
      + + \ No newline at end of file diff --git a/wp-content/themes/twentytwelve/archive.php b/wp-content/themes/twentytwelve/archive.php new file mode 100644 index 0000000000..f71ecf90ed --- /dev/null +++ b/wp-content/themes/twentytwelve/archive.php @@ -0,0 +1,63 @@ + + +
      +
      + + +
      +

      ' . get_the_date() . '' ); + elseif ( is_month() ) : + printf( __( 'Monthly Archives: %s', 'twentytwelve' ), '' . get_the_date( _x( 'F Y', 'monthly archives date format', 'twentytwelve' ) ) . '' ); + elseif ( is_year() ) : + printf( __( 'Yearly Archives: %s', 'twentytwelve' ), '' . get_the_date( _x( 'Y', 'yearly archives date format', 'twentytwelve' ) ) . '' ); + else : + _e( 'Archives', 'twentytwelve' ); + endif; + ?>

      +
      + + + + + + + +
      +
      + + + diff --git a/wp-content/themes/twentytwelve/author.php b/wp-content/themes/twentytwelve/author.php new file mode 100644 index 0000000000..9a55c34199 --- /dev/null +++ b/wp-content/themes/twentytwelve/author.php @@ -0,0 +1,84 @@ + + +
      +
      + + + + + +
      +

      ' . get_the_author() . '' ); ?>

      +
      + + + + + + +
      +
      + +
      +
      +

      +

      +
      +
      + + + + + + + + + + + + + +
      +
      + + + diff --git a/wp-content/themes/twentytwelve/category.php b/wp-content/themes/twentytwelve/category.php new file mode 100644 index 0000000000..02f1326056 --- /dev/null +++ b/wp-content/themes/twentytwelve/category.php @@ -0,0 +1,51 @@ + + +
      +
      + + +
      +

      ' . single_cat_title( '', false ) . '' ); ?>

      + + +
      + +
      + + + + + + + +
      +
      + + + diff --git a/wp-content/themes/twentytwelve/comments.php b/wp-content/themes/twentytwelve/comments.php new file mode 100644 index 0000000000..d6a733efe4 --- /dev/null +++ b/wp-content/themes/twentytwelve/comments.php @@ -0,0 +1,60 @@ + + +
      + + + + +

      + ' . get_the_title() . '' ); + ?> +

      + +
        + 'twentytwelve_comment', 'style' => 'ol' ) ); ?> +
      + + 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> + + + + +

      + + + + + + +
      \ No newline at end of file diff --git a/wp-content/themes/twentytwelve/content-aside.php b/wp-content/themes/twentytwelve/content-aside.php new file mode 100644 index 0000000000..4a84ae76d0 --- /dev/null +++ b/wp-content/themes/twentytwelve/content-aside.php @@ -0,0 +1,28 @@ + + +
      > +
      +

      +
      + →', 'twentytwelve' ) ); ?> +
      +
      + +
      + + + + + ', '' ); ?> +
      +
      diff --git a/wp-content/themes/twentytwelve/content-image.php b/wp-content/themes/twentytwelve/content-image.php new file mode 100644 index 0000000000..a683b83cfc --- /dev/null +++ b/wp-content/themes/twentytwelve/content-image.php @@ -0,0 +1,28 @@ + + +
      > +
      + →', 'twentytwelve' ) ); ?> +
      + +
      + +

      +

      +
      + + + + ', '' ); ?> +
      +
      diff --git a/wp-content/themes/twentytwelve/content-link.php b/wp-content/themes/twentytwelve/content-link.php new file mode 100644 index 0000000000..31e4ec958a --- /dev/null +++ b/wp-content/themes/twentytwelve/content-link.php @@ -0,0 +1,26 @@ + + +
      > +
      +
      + →', 'twentytwelve' ) ); ?> +
      + +
      + + + + + ', '' ); ?> +
      +
      diff --git a/wp-content/themes/twentytwelve/content-none.php b/wp-content/themes/twentytwelve/content-none.php new file mode 100644 index 0000000000..b7757821c6 --- /dev/null +++ b/wp-content/themes/twentytwelve/content-none.php @@ -0,0 +1,20 @@ + + +
      +
      +

      +
      + +
      +

      + +
      +
      diff --git a/wp-content/themes/twentytwelve/content-page.php b/wp-content/themes/twentytwelve/content-page.php new file mode 100644 index 0000000000..0abcbf7911 --- /dev/null +++ b/wp-content/themes/twentytwelve/content-page.php @@ -0,0 +1,26 @@ + + +
      > +
      + + + +

      +
      + +
      + + '' ) ); ?> +
      +
      + ', '' ); ?> +
      +
      diff --git a/wp-content/themes/twentytwelve/content-quote.php b/wp-content/themes/twentytwelve/content-quote.php new file mode 100644 index 0000000000..0a98a96de3 --- /dev/null +++ b/wp-content/themes/twentytwelve/content-quote.php @@ -0,0 +1,25 @@ + + +
      > +
      + →', 'twentytwelve' ) ); ?> +
      + +
      + + + + + ', '' ); ?> +
      +
      diff --git a/wp-content/themes/twentytwelve/content-status.php b/wp-content/themes/twentytwelve/content-status.php new file mode 100644 index 0000000000..55b72db67d --- /dev/null +++ b/wp-content/themes/twentytwelve/content-status.php @@ -0,0 +1,42 @@ + + +
      > +
      +
      +

      +

      +
      + +
      + +
      + →', 'twentytwelve' ) ); ?> +
      + +
      + + + + ', '' ); ?> +
      +
      diff --git a/wp-content/themes/twentytwelve/content.php b/wp-content/themes/twentytwelve/content.php new file mode 100644 index 0000000000..56493ed0bd --- /dev/null +++ b/wp-content/themes/twentytwelve/content.php @@ -0,0 +1,73 @@ + + +
      > + +
      + +
      + +
      + + + +

      + +

      + +

      + + + + +
      + + +
      + +
      + +
      + →', 'twentytwelve' ) ); ?> + '' ) ); ?> +
      + + + +
      diff --git a/wp-content/themes/twentytwelve/css/ie.css b/wp-content/themes/twentytwelve/css/ie.css new file mode 100644 index 0000000000..706f5103ed --- /dev/null +++ b/wp-content/themes/twentytwelve/css/ie.css @@ -0,0 +1,273 @@ +/* +Styles for older IE versions (previous to IE9). +*/ + +body { + background-color: #e6e6e6; +} +body.custom-background-empty { + background-color: #fff; +} +body.custom-background-empty .site, +body.custom-background-white .site { + box-shadow: none; + margin-bottom: 0; + margin-top: 0; + padding: 0; +} +.assistive-text, +.site .screen-reader-text { + clip: rect(1px 1px 1px 1px); +} +.full-width .site-content { + float: none; + width: 100%; +} +img.size-full, +img.size-large, +img.header-image, +img.wp-post-image, +img[class*="align"], +img[class*="wp-image-"], +img[class*="attachment-"] { + width: auto; /* Prevent stretching of full-size and large-size images with height and width attributes in IE8 */ +} +.author-avatar { + float: left; + margin-top: 8px; + margin-top: 0.571428571rem; +} +.author-description { + float: right; + width: 80%; +} +.site { + box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3); + margin: 48px auto; + max-width: 960px; + overflow: hidden; + padding: 0 40px; +} +.site-content { + float: left; + width: 65.104166667%; +} +body.template-front-page .site-content, +body.attachment .site-content, +body.full-width .site-content { + width: 100%; +} +.widget-area { + float: right; + width: 26.041666667%; +} +.site-header h1, +.site-header h2 { + text-align: left; +} +.site-header h1 { + font-size: 26px; + line-height: 1.846153846; +} +.main-navigation ul.nav-menu, +.main-navigation div.nav-menu > ul { + border-bottom: 1px solid #ededed; + border-top: 1px solid #ededed; + display: inline-block !important; + text-align: left; + width: 100%; +} +.main-navigation ul { + margin: 0; + text-indent: 0; +} +.main-navigation li a, +.main-navigation li { + display: inline-block; + text-decoration: none; +} +.ie7 .main-navigation li a, +.ie7 .main-navigation li { + display: inline; +} +.main-navigation li a { + border-bottom: 0; + color: #6a6a6a; + line-height: 3.692307692; + text-transform: uppercase; +} +.main-navigation li a:hover { + color: #000; +} +.main-navigation li { + margin: 0 40px 0 0; + position: relative; +} +.main-navigation li ul { + margin: 0; + padding: 0; + position: absolute; + top: 100%; + z-index: 1; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); +} +.ie7 .main-navigation li ul { + clip: inherit; + display: none; + left: 0; + overflow: visible; +} +.main-navigation li ul ul, +.ie7 .main-navigation li ul ul { + top: 0; + left: 100%; +} +.main-navigation ul li:hover > ul, +.main-navigation ul li:focus > ul, +.main-navigation .focus > ul { + border-left: 0; + clip: inherit; + overflow: inherit; + height: inherit; + width: inherit; +} +.ie7 .main-navigation ul li:hover > ul, +.ie7 .main-navigation ul li:focus > ul { + display: block; +} +.main-navigation li ul li a { + background: #efefef; + border-bottom: 1px solid #ededed; + display: block; + font-size: 11px; + line-height: 2.181818182; + padding: 8px 10px; + width: 180px; +} +.main-navigation li ul li a:hover { + background: #e3e3e3; + color: #444; +} +.main-navigation .current-menu-item > a, +.main-navigation .current-menu-ancestor > a, +.main-navigation .current_page_item > a, +.main-navigation .current_page_ancestor > a { + color: #636363; + font-weight: bold; +} +.main-navigation .menu-toggle { + display: none; +} +.entry-header .entry-title { + font-size: 22px; +} +#respond form input[type="text"] { + width: 46.333333333%; +} +#respond form textarea.blog-textarea { + width: 79.666666667%; +} +.template-front-page .site-content, +.template-front-page article { + overflow: hidden; +} +.template-front-page.has-post-thumbnail article { + float: left; + width: 47.916666667%; +} +.entry-page-image { + float: right; + margin-bottom: 0; + width: 47.916666667%; +} +/* IE Front Page Template Widget fix */ +.template-front-page .widget-area { + clear: both; +} +.template-front-page .widget { + width: 100% !important; + border: none; +} +.template-front-page .widget-area .widget, +.template-front-page .first.front-widgets, +.template-front-page.two-sidebars .widget-area .front-widgets { + float: left; + margin-bottom: 24px; + width: 51.875%; +} +.template-front-page .second.front-widgets, +.template-front-page .widget-area .widget:nth-child(odd) { + clear: right; +} +.template-front-page .first.front-widgets, +.template-front-page .second.front-widgets, +.template-front-page.two-sidebars .widget-area .front-widgets + .front-widgets { + float: right; + margin: 0 0 24px; + width: 39.0625%; +} +.template-front-page.two-sidebars .widget, +.template-front-page.two-sidebars .widget:nth-child(even) { + float: none; + width: auto; +} +/* add input font for ul { + text-align: right; +} +.rtl .main-navigation ul li ul li, +.rtl .main-navigation ul li ul li ul li { + margin-left: 40px; + margin-right: auto; +} +.rtl .main-navigation li ul ul { + position: absolute; + bottom: 0; + right: 100%; + z-index: 1; +} +.ie7 .rtl .main-navigation li ul ul { + position: absolute; + bottom: 0; + right: 100%; + z-index: 1; +} +.ie7 .rtl .main-navigation ul li { + z-index: 99; +} +.ie7 .rtl .main-navigation li ul { + position: absolute; + bottom: 100%; + right: 0; + z-index: 1; +} +.ie7 .rtl .main-navigation li { + margin-right: auto; + margin-left: 40px; +} +.ie7 .rtl .main-navigation li ul ul ul { + position: relative; + z-index: 1; +} \ No newline at end of file diff --git a/wp-content/themes/twentytwelve/editor-style-rtl.css b/wp-content/themes/twentytwelve/editor-style-rtl.css new file mode 100644 index 0000000000..5fd832c6ff --- /dev/null +++ b/wp-content/themes/twentytwelve/editor-style-rtl.css @@ -0,0 +1,28 @@ +/* +Theme Name: Twenty Twelve +Description: Used to style the TinyMCE editor for RTL languages. +See also rtl.css file. +*/ + +html .mceContentBody { + direction: rtl; + unicode-bidi: embed; +} +li { + margin: 0 24px 0 0; + margin: 0 1.714285714rem 0 0; +} +dl { + margin: 0 24px; + margin: 0 1.714285714rem; +} +tr th { + text-align: right; +} +td { + padding: 6px 0 6px 10px; + text-align: right; +} +.wp-caption { + text-align: right; +} \ No newline at end of file diff --git a/wp-content/themes/twentytwelve/editor-style.css b/wp-content/themes/twentytwelve/editor-style.css new file mode 100644 index 0000000000..24e9b24f63 --- /dev/null +++ b/wp-content/themes/twentytwelve/editor-style.css @@ -0,0 +1,342 @@ +/* +Theme Name: Twenty Twelve +Description: Used to style the TinyMCE editor. +*/ + +html { + font-size: 87.5%; +} +html .mceContentBody { + max-width: 625px; +} +body { + color: #444; + font-family: "Open Sans", Helvetica, Arial, sans-serif; + font-size: 14px; + font-size: 1rem; + line-height: 1; + text-rendering: optimizeLegibility; + vertical-align: baseline; +} + + +/* =Headings +-------------------------------------------------------------- */ + +h1, +h2, +h3, +h4, +h5, +h6 { + clear: both; + line-height: 1.846153846; + margin: 24px 0; + margin: 1.714285714rem 0; +} +h1 { + font-size: 21px; + font-size: 1.5rem; + line-height: 1.5; +} +h2 { + font-size: 18px; + font-size: 1.285714286rem; + line-height: 1.6; +} +h3 { + font-size: 16px; + font-size: 1.142857143rem; +} +h4 { + font-size: 14px; + font-size: 1rem; +} +h5 { + font-size: 13px; + font-size: 0.928571429rem; +} +h6 { + font-size: 12px; + font-size: 0.857142857rem; +} +hr { + background-color: #ccc; + border: 0; + height: 1px; + margin: 24px; + margin-bottom: 1.714285714rem; +} + + +/* =Text elements +-------------------------------------------------------------- */ + +p { + line-height: 1.714285714; + margin: 0 0 24px; + margin: 0 0 1.714285714rem; +} +ul, +ol { + margin: 0 0 24px; + margin: 0 0 1.714285714rem; + line-height: 1.714285714; + padding: 0; +} +ul { + list-style: disc outside; +} +ol { + list-style: decimal outside; +} +ul ul, +ol ol, +ul ol, +ol ul { + margin-bottom: 0; +} +li { + margin: 0 0 0 24px; + margin: 0 0 0 1.714285714rem; +} +dl { + margin: 0 24px; + margin: 0 1.714285714rem; +} +dt { + font-weight: bold; + margin-bottom: 24px; + margin-bottom: 1.714285714rem; +} +dd { + line-height: 1.714285714; + margin: 0 0 24px; + margin: 0 0 1.714285714rem; +} +strong { + font-weight: bold; +} +cite, +em, +i { + font-style: italic; +} +cite { + border: none; +} +big { + font-size: 128.571429%; +} +.mceContentBody blockquote { + font-style: italic !important; + font-weight: normal; + margin: 0; + padding: 24px; + padding: 1.714285714rem; +} +pre { + border: 1px solid #ededed; + color: #666; + font-family: Consolas, Monaco, Lucida Console, monospace; + font-size: 12px; + font-size: 0.857142857rem; + line-height: 1.714285714; + margin: 24px 0; + margin: 1.714285714rem 0; + overflow: auto; + padding: 24px; + padding: 1.714285714rem; +} +code, +kbd, +samp, +var { + font-family: Consolas, Monaco, Lucida Console, monospace; + font-size: 12px; + font-size: 0.857142857rem; + line-height: 2; +} +abbr, +acronym, +dfn { + border-bottom: 1px dotted #666; + cursor: help; +} +address { + display: block; + line-height: 1.714285714; + margin: 0 0 24px; + margin: 0 0 1.714285714rem; +} +del { + color: #333; +} +ins { + background: #fff9c0; + border: none; + color: #333; + text-decoration: none; +} +sup, +sub { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +input[type="text"] { + border: 1px solid #ccc; + border-radius: 3px; + font-family: inherit; + padding: 6px; + padding: 0.428571429rem; +} +textarea { + border: 1px solid #d5d2ca; + border-radius: 3px; + font-family: inherit; + font-size: 12px; + font-size: 0.857142857rem; + line-height: 1.714285714; + padding: 10px; + padding: 0.714285714rem; + width: 96%; +} + + +/* =Links +-------------------------------------------------------------- */ + +a, +a em, +a strong { + color: #21759b; + outline: none; +} +a:focus, +a:active, +a:hover { + color: #0f3647; +} + + +/* =Alignment +-------------------------------------------------------------- */ + +.alignleft { + display: inline; + float: left; + margin: 12px 24px 12px 0; + margin: 0.857142857rem 1.714285714rem 0.857142857rem 0; +} +.alignright { + display: inline; + float: right; + margin: 12px 0 12px 24px; + margin: 0.857142857rem 0 0.857142857rem 1.714285714rem; +} +.aligncenter { + clear: both; + display: block; + margin-top: 12px; + margin-top: 0.857142857rem; + margin-bottom: 12px; + margin-bottom: 0.857142857rem; +} + + +/* =Tables +-------------------------------------------------------------- */ + +table { + border-bottom: 1px solid #ededed; + border-collapse: collapse; + border-spacing: 0; + color: #757575; + font-size: 12px; + font-size: 0.857142857rem; + line-height: 2; + margin: 0 0 24px; + margin: 0 0 1.714285714rem; + width: 100%; +} +tr th { + color: #636363; + font-size: 11px; + font-size: 0.785714286rem; + font-weight: bold; + line-height: 2.181818182; + text-align: left; + text-transform: uppercase; +} +td { + border-top: 1px solid #ededed !important; + color: #757575; + font-size: inherit; + font-weight: normal; + padding: 6px 10px 6px 0; + text-align: left; +} + + +/* =Images +-------------------------------------------------------------- */ + +img, +.editor-attachment { + border: 0; + border-radius: 3px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + max-width: 100%; +} +img.size-full { + width: auto/9; /* Prevent stretching of full-size images in IE8 */ +} +img[class*="wp-image-"] { + height: auto; + max-width: 100%; +} +img[class*="align"], +img[class*="wp-image-"], +img[class*="attachment-"] { + height: auto; /* Make sure images with WordPress-added height and width attributes are scaled correctly */ +} +img.mce-wp-nextpage { + border-radius: 0; + box-shadow: none; +} +img.wp-smiley { + border: 0; + border-radius: 0; + box-shadow: none; + margin-bottom: 0; + margin-top: 0; + padding: 0; +} +.wp-caption { + background: transparent; + border: none; + margin: 0; + padding: 4px; + text-align: left; +} +.wp-caption-dt { + margin: 0; +} +.wp-caption .wp-caption-text, +.wp-caption-dd { + color: #757575; + font-style: italic; + font-size: 12px; + font-size: 0.857142857rem; + line-height: 2; + margin: 0 0 24px; + margin: 0 0 1.71429rem; +} diff --git a/wp-content/themes/twentytwelve/footer.php b/wp-content/themes/twentytwelve/footer.php new file mode 100644 index 0000000000..fe31e596d9 --- /dev/null +++ b/wp-content/themes/twentytwelve/footer.php @@ -0,0 +1,23 @@ + +
      +
      +
      + + +
      +
      +
      + + + + \ No newline at end of file diff --git a/wp-content/themes/twentytwelve/functions.php b/wp-content/themes/twentytwelve/functions.php new file mode 100644 index 0000000000..8d5facf0f7 --- /dev/null +++ b/wp-content/themes/twentytwelve/functions.php @@ -0,0 +1,496 @@ + for posts and comments. + add_theme_support( 'automatic-feed-links' ); + + // This theme supports a variety of post formats. + add_theme_support( 'post-formats', array( 'aside', 'image', 'link', 'quote', 'status' ) ); + + // This theme uses wp_nav_menu() in one location. + register_nav_menu( 'primary', __( 'Primary Menu', 'twentytwelve' ) ); + + /* + * This theme supports custom background color and image, + * and here we also set up the default background color. + */ + add_theme_support( 'custom-background', array( + 'default-color' => 'e6e6e6', + ) ); + + // This theme uses a custom image size for featured images, displayed on "standard" posts. + add_theme_support( 'post-thumbnails' ); + set_post_thumbnail_size( 624, 9999 ); // Unlimited height, soft crop +} +add_action( 'after_setup_theme', 'twentytwelve_setup' ); + +/** + * Add support for a custom header image. + */ +require( get_template_directory() . '/inc/custom-header.php' ); + +/** + * Return the Google font stylesheet URL if available. + * + * The use of Open Sans by default is localized. For languages that use + * characters not supported by the font, the font can be disabled. + * + * @since Twenty Twelve 1.2 + * + * @return string Font stylesheet or empty string if disabled. + */ +function twentytwelve_get_font_url() { + $font_url = ''; + + /* translators: If there are characters in your language that are not supported + * by Open Sans, translate this to 'off'. Do not translate into your own language. + */ + if ( 'off' !== _x( 'on', 'Open Sans font: on or off', 'twentytwelve' ) ) { + $subsets = 'latin,latin-ext'; + + /* translators: To add an additional Open Sans character subset specific to your language, + * translate this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language. + */ + $subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)', 'twentytwelve' ); + + if ( 'cyrillic' == $subset ) + $subsets .= ',cyrillic,cyrillic-ext'; + elseif ( 'greek' == $subset ) + $subsets .= ',greek,greek-ext'; + elseif ( 'vietnamese' == $subset ) + $subsets .= ',vietnamese'; + + $query_args = array( + 'family' => 'Open+Sans:400italic,700italic,400,700', + 'subset' => $subsets, + ); + $font_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' ); + } + + return $font_url; +} + +/** + * Enqueue scripts and styles for front-end. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_scripts_styles() { + global $wp_styles; + + /* + * Adds JavaScript to pages with the comment form to support + * sites with threaded comments (when in use). + */ + if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) + wp_enqueue_script( 'comment-reply' ); + + // Adds JavaScript for handling the navigation menu hide-and-show behavior. + wp_enqueue_script( 'twentytwelve-navigation', get_template_directory_uri() . '/js/navigation.js', array( 'jquery' ), '20140711', true ); + + $font_url = twentytwelve_get_font_url(); + if ( ! empty( $font_url ) ) + wp_enqueue_style( 'twentytwelve-fonts', esc_url_raw( $font_url ), array(), null ); + + // Loads our main stylesheet. + wp_enqueue_style( 'twentytwelve-style', get_stylesheet_uri() ); + + // Loads the Internet Explorer specific stylesheet. + wp_enqueue_style( 'twentytwelve-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentytwelve-style' ), '20121010' ); + $wp_styles->add_data( 'twentytwelve-ie', 'conditional', 'lt IE 9' ); +} +add_action( 'wp_enqueue_scripts', 'twentytwelve_scripts_styles' ); + +/** + * Filter TinyMCE CSS path to include Google Fonts. + * + * Adds additional stylesheets to the TinyMCE editor if needed. + * + * @uses twentytwelve_get_font_url() To get the Google Font stylesheet URL. + * + * @since Twenty Twelve 1.2 + * + * @param string $mce_css CSS path to load in TinyMCE. + * @return string Filtered CSS path. + */ +function twentytwelve_mce_css( $mce_css ) { + $font_url = twentytwelve_get_font_url(); + + if ( empty( $font_url ) ) + return $mce_css; + + if ( ! empty( $mce_css ) ) + $mce_css .= ','; + + $mce_css .= esc_url_raw( str_replace( ',', '%2C', $font_url ) ); + + return $mce_css; +} +add_filter( 'mce_css', 'twentytwelve_mce_css' ); + +/** + * Filter the page title. + * + * Creates a nicely formatted and more specific title element text + * for output in head of document, based on current view. + * + * @since Twenty Twelve 1.0 + * + * @param string $title Default title text for current view. + * @param string $sep Optional separator. + * @return string Filtered title. + */ +function twentytwelve_wp_title( $title, $sep ) { + global $paged, $page; + + if ( is_feed() ) + return $title; + + // Add the site name. + $title .= get_bloginfo( 'name', 'display' ); + + // Add the site description for the home/front page. + $site_description = get_bloginfo( 'description', 'display' ); + if ( $site_description && ( is_home() || is_front_page() ) ) + $title = "$title $sep $site_description"; + + // Add a page number if necessary. + if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) + $title = "$title $sep " . sprintf( __( 'Page %s', 'twentytwelve' ), max( $paged, $page ) ); + + return $title; +} +add_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 ); + +/** + * Filter the page menu arguments. + * + * Makes our wp_nav_menu() fallback -- wp_page_menu() -- show a home link. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_page_menu_args( $args ) { + if ( ! isset( $args['show_home'] ) ) + $args['show_home'] = true; + return $args; +} +add_filter( 'wp_page_menu_args', 'twentytwelve_page_menu_args' ); + +/** + * Register sidebars. + * + * Registers our main widget area and the front page widget areas. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_widgets_init() { + register_sidebar( array( + 'name' => __( 'Main Sidebar', 'twentytwelve' ), + 'id' => 'sidebar-1', + 'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ), + 'before_widget' => '', + 'before_title' => '

      ', + 'after_title' => '

      ', + ) ); + + register_sidebar( array( + 'name' => __( 'First Front Page Widget Area', 'twentytwelve' ), + 'id' => 'sidebar-2', + 'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ), + 'before_widget' => '', + 'before_title' => '

      ', + 'after_title' => '

      ', + ) ); + + register_sidebar( array( + 'name' => __( 'Second Front Page Widget Area', 'twentytwelve' ), + 'id' => 'sidebar-3', + 'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ), + 'before_widget' => '', + 'before_title' => '

      ', + 'after_title' => '

      ', + ) ); +} +add_action( 'widgets_init', 'twentytwelve_widgets_init' ); + +if ( ! function_exists( 'twentytwelve_content_nav' ) ) : +/** + * Displays navigation to next/previous pages when applicable. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_content_nav( $html_id ) { + global $wp_query; + + if ( $wp_query->max_num_pages > 1 ) : ?> + + comment_type ) : + case 'pingback' : + case 'trackback' : + // Display trackbacks differently than normal comments. + ?> +
    15. id="comment-"> +

      ', '' ); ?>

      + +
    16. id="li-comment-"> +
      +
      + %1$s %2$s', + get_comment_author_link(), + // If current post author is also comment author, make it known visually. + ( $comment->user_id === $post->post_author ) ? '' . __( 'Post author', 'twentytwelve' ) . '' : '' + ); + printf( '', + esc_url( get_comment_link( $comment->comment_ID ) ), + get_comment_time( 'c' ), + /* translators: 1: date, 2: time */ + sprintf( __( '%1$s at %2$s', 'twentytwelve' ), get_comment_date(), get_comment_time() ) + ); + ?> +
      + + comment_approved ) : ?> +

      + + +
      + + ', '

      ' ); ?> +
      + +
      + __( 'Reply', 'twentytwelve' ), 'after' => ' ', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> +
      +
      + ', + esc_url( get_permalink() ), + esc_attr( get_the_time() ), + esc_attr( get_the_date( 'c' ) ), + esc_html( get_the_date() ) + ); + + $author = sprintf( '', + esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), + esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ), + get_the_author() + ); + + // Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's name. + if ( $tag_list ) { + $utility_text = __( 'This entry was posted in %1$s and tagged %2$s on %3$s by %4$s.', 'twentytwelve' ); + } elseif ( $categories_list ) { + $utility_text = __( 'This entry was posted in %1$s on %3$s by %4$s.', 'twentytwelve' ); + } else { + $utility_text = __( 'This entry was posted on %3$s by %4$s.', 'twentytwelve' ); + } + + printf( + $utility_text, + $categories_list, + $tag_list, + $date, + $author + ); +} +endif; + +/** + * Extend the default WordPress body classes. + * + * Extends the default WordPress body class to denote: + * 1. Using a full-width layout, when no active widgets in the sidebar + * or full-width template. + * 2. Front Page template: thumbnail in use and number of sidebars for + * widget areas. + * 3. White or empty background color to change the layout and spacing. + * 4. Custom fonts enabled. + * 5. Single or multiple authors. + * + * @since Twenty Twelve 1.0 + * + * @param array $classes Existing class values. + * @return array Filtered class values. + */ +function twentytwelve_body_class( $classes ) { + $background_color = get_background_color(); + $background_image = get_background_image(); + + if ( ! is_active_sidebar( 'sidebar-1' ) || is_page_template( 'page-templates/full-width.php' ) ) + $classes[] = 'full-width'; + + if ( is_page_template( 'page-templates/front-page.php' ) ) { + $classes[] = 'template-front-page'; + if ( has_post_thumbnail() ) + $classes[] = 'has-post-thumbnail'; + if ( is_active_sidebar( 'sidebar-2' ) && is_active_sidebar( 'sidebar-3' ) ) + $classes[] = 'two-sidebars'; + } + + if ( empty( $background_image ) ) { + if ( empty( $background_color ) ) + $classes[] = 'custom-background-empty'; + elseif ( in_array( $background_color, array( 'fff', 'ffffff' ) ) ) + $classes[] = 'custom-background-white'; + } + + // Enable custom font class only if the font CSS is queued to load. + if ( wp_style_is( 'twentytwelve-fonts', 'queue' ) ) + $classes[] = 'custom-font-enabled'; + + if ( ! is_multi_author() ) + $classes[] = 'single-author'; + + return $classes; +} +add_filter( 'body_class', 'twentytwelve_body_class' ); + +/** + * Adjust content width in certain contexts. + * + * Adjusts content_width value for full-width and single image attachment + * templates, and when there are no active widgets in the sidebar. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_content_width() { + if ( is_page_template( 'page-templates/full-width.php' ) || is_attachment() || ! is_active_sidebar( 'sidebar-1' ) ) { + global $content_width; + $content_width = 960; + } +} +add_action( 'template_redirect', 'twentytwelve_content_width' ); + +/** + * Register postMessage support. + * + * Add postMessage support for site title and description for the Customizer. + * + * @since Twenty Twelve 1.0 + * + * @param WP_Customize_Manager $wp_customize Customizer object. + */ +function twentytwelve_customize_register( $wp_customize ) { + $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; + $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; + $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; +} +add_action( 'customize_register', 'twentytwelve_customize_register' ); + +/** + * Enqueue Javascript postMessage handlers for the Customizer. + * + * Binds JS handlers to make the Customizer preview reload changes asynchronously. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_customize_preview_js() { + wp_enqueue_script( 'twentytwelve-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20141120', true ); +} +add_action( 'customize_preview_init', 'twentytwelve_customize_preview_js' ); diff --git a/wp-content/themes/twentytwelve/header.php b/wp-content/themes/twentytwelve/header.php new file mode 100644 index 0000000000..c3b99d6f3d --- /dev/null +++ b/wp-content/themes/twentytwelve/header.php @@ -0,0 +1,53 @@ + section and everything up till
      + * + * @package WordPress + * @subpackage Twenty_Twelve + * @since Twenty Twelve 1.0 + */ +?> + + + +> + + + + +<?php wp_title( '|', true, 'right' ); ?> + + + + + + + +> +
      + + +
      \ No newline at end of file diff --git a/wp-content/themes/twentytwelve/image.php b/wp-content/themes/twentytwelve/image.php new file mode 100644 index 0000000000..976e017d50 --- /dev/null +++ b/wp-content/themes/twentytwelve/image.php @@ -0,0 +1,116 @@ + + +
      +
      + + + +
      > +
      +

      + +
      + Published at %4$s × %5$s in %8$s.', 'twentytwelve' ), + esc_attr( get_the_date( 'c' ) ), + esc_html( get_the_date() ), + esc_url( wp_get_attachment_url() ), + $metadata['width'], + $metadata['height'], + esc_url( get_permalink( $post->post_parent ) ), + esc_attr( strip_tags( get_the_title( $post->post_parent ) ) ), + get_the_title( $post->post_parent ) + ); + ?> + ', '' ); ?> +
      + + +
      + +
      + +
      +
      + $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ) ); +foreach ( $attachments as $k => $attachment ) : + if ( $attachment->ID == $post->ID ) + break; +endforeach; + +// If there is more than 1 attachment in a gallery +if ( count( $attachments ) > 1 ) : + $k++; + if ( isset( $attachments[ $k ] ) ) : + // get the URL of the next image attachment + $next_attachment_url = get_attachment_link( $attachments[ $k ]->ID ); + else : + // or get the URL of the first image attachment + $next_attachment_url = get_attachment_link( $attachments[0]->ID ); + endif; +else : + // or, if there's only 1 image, get the URL of the image + $next_attachment_url = wp_get_attachment_url(); +endif; +?> + ID, $attachment_size ); + ?> + + post_excerpt ) ) : ?> +
      + +
      + +
      + +
      + +
      + + '' ) ); ?> +
      + +
      + +
      + + + + + +
      +
      + + diff --git a/wp-content/themes/twentytwelve/inc/custom-header.php b/wp-content/themes/twentytwelve/inc/custom-header.php new file mode 100644 index 0000000000..2a886bd409 --- /dev/null +++ b/wp-content/themes/twentytwelve/inc/custom-header.php @@ -0,0 +1,163 @@ + '515151', + 'default-image' => '', + + // Set height and width, with a maximum value for the width. + 'height' => 250, + 'width' => 960, + 'max-width' => 2000, + + // Support flexible height and width. + 'flex-height' => true, + 'flex-width' => true, + + // Random image rotation off by default. + 'random-default' => false, + + // Callbacks for styling the header and the admin preview. + 'wp-head-callback' => 'twentytwelve_header_style', + 'admin-head-callback' => 'twentytwelve_admin_header_style', + 'admin-preview-callback' => 'twentytwelve_admin_header_image', + ); + + add_theme_support( 'custom-header', $args ); +} +add_action( 'after_setup_theme', 'twentytwelve_custom_header_setup' ); + +/** + * Load our special font CSS file. + * + * @since Twenty Twelve 1.2 + */ +function twentytwelve_custom_header_fonts() { + $font_url = twentytwelve_get_font_url(); + if ( ! empty( $font_url ) ) + wp_enqueue_style( 'twentytwelve-fonts', esc_url_raw( $font_url ), array(), null ); +} +add_action( 'admin_print_styles-appearance_page_custom-header', 'twentytwelve_custom_header_fonts' ); + +/** + * Style the header text displayed on the blog. + * + * get_header_textcolor() options: 515151 is default, hide text (returns 'blank'), or any hex value. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_header_style() { + $text_color = get_header_textcolor(); + + // If no custom options for text are set, let's bail + if ( $text_color == get_theme_support( 'custom-header', 'default-text-color' ) ) + return; + + // If we get this far, we have custom styles. + ?> + + Header admin panel. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_admin_header_style() { +?> + + Header admin panel. + * + * This callback overrides the default markup displayed there. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_admin_header_image() { + $style = 'color: #' . get_header_textcolor() . ';'; + if ( ! display_header_text() ) { + $style = 'display: none;'; + } + ?> +
      +

      +

      + + + +
      + + +
      +
      + + + + + + + + + + + +
      + + +
      +

      +
      + +
      +

      Get started here.', 'twentytwelve' ), admin_url( 'post-new.php' ) ); ?>

      +
      + + +
      +

      +
      + +
      +

      + +
      + + +
      + + + +
      +
      + + + diff --git a/wp-content/themes/twentytwelve/js/html5.js b/wp-content/themes/twentytwelve/js/html5.js new file mode 100644 index 0000000000..6168aacd5e --- /dev/null +++ b/wp-content/themes/twentytwelve/js/html5.js @@ -0,0 +1,8 @@ +/* + HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); +a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; +c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| +"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); +if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d
      \n"; + else + $output .= "
    17. \n"; + } + + /** + * Output a pingback comment. + * + * @access protected + * @since 3.6.0 + * + * @see wp_list_comments() + * + * @param object $comment The comment object. + * @param int $depth Depth of comment. + * @param array $args An array of arguments. + */ + protected function ping( $comment, $depth, $args ) { + $tag = ( 'div' == $args['style'] ) ? 'div' : 'li'; +?> + < id="comment-" > +
      + ', '' ); ?> +
      + + < has_children ? 'parent' : '' ); ?> id="comment-"> + +
      + +
      + + %s says:' ), get_comment_author_link() ); ?> +
      + comment_approved ) : ?> + +
      + + + + + $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> + + $add_below, + 'depth' => $depth, + 'max_depth' => $args['max_depth'], + 'before' => '
      ', + 'after' => '
      ' + ) ) ); + ?> + + +
      + + + < id="comment-" has_children ? 'parent' : '' ); ?>> +
      +
      +
      + + says:' ), sprintf( '%s', get_comment_author_link() ) ); ?> +
      + + + + comment_approved ) : ?> +

      + +
      + +
      + +
      + + 'div-comment', + 'depth' => $depth, + 'max_depth' => $args['max_depth'], + 'before' => '
      ', + 'after' => '
      ' + ) ) ); + ?> +
      +comments + * + * @global WP_Query $wp_query + * @global int $comment_alt + * @global int $comment_depth + * @global int $comment_thread_alt + * @global bool $overridden_cpage + * @global bool $in_comment_loop + * + * @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. 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 string $reverse_top_level Ordering of the listed comments. Default null. Accepts 'desc', 'asc'. + * @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 array $comments Optional. Array of 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; + + $in_comment_loop = true; + + $comment_alt = $comment_thread_alt = 0; + $comment_depth = 1; + + $defaults = array( + 'walker' => null, + 'max_depth' => '', + 'style' => 'ul', + 'callback' => null, + 'end-callback' => null, + 'type' => 'all', + 'page' => '', + 'per_page' => '', + 'avatar_size' => 32, + 'reverse_top_level' => null, + 'reverse_children' => '', + 'format' => current_theme_supports( 'html5', 'comment-list' ) ? 'html5' : 'xhtml', + 'short_ping' => false, + 'echo' => true, + ); + + $r = wp_parse_args( $args, $defaults ); + + /** + * Filter the arguments used in retrieving the comment list. + * + * @since 4.0.0 + * + * @see wp_list_comments() + * + * @param array $r An array of arguments for displaying comments. + */ + $r = apply_filters( 'wp_list_comments_args', $r ); + + // Figure out what comments we'll be looping through ($_comments) + if ( null !== $comments ) { + $comments = (array) $comments; + if ( empty($comments) ) + return; + if ( 'all' != $r['type'] ) { + $comments_by_type = separate_comments($comments); + if ( empty($comments_by_type[$r['type']]) ) + return; + $_comments = $comments_by_type[$r['type']]; + } else { + $_comments = $comments; + } + } else { + if ( empty($wp_query->comments) ) + return; + if ( 'all' != $r['type'] ) { + if ( empty($wp_query->comments_by_type) ) + $wp_query->comments_by_type = separate_comments($wp_query->comments); + if ( empty($wp_query->comments_by_type[$r['type']]) ) + return; + $_comments = $wp_query->comments_by_type[$r['type']]; + } else { + $_comments = $wp_query->comments; + } + } + + if ( '' === $r['per_page'] && get_option('page_comments') ) + $r['per_page'] = get_query_var('comments_per_page'); + + if ( empty($r['per_page']) ) { + $r['per_page'] = 0; + $r['page'] = 0; + } + + if ( '' === $r['max_depth'] ) { + if ( get_option('thread_comments') ) + $r['max_depth'] = get_option('thread_comments_depth'); + else + $r['max_depth'] = -1; + } + + if ( '' === $r['page'] ) { + if ( empty($overridden_cpage) ) { + $r['page'] = get_query_var('cpage'); + } else { + $threaded = ( -1 != $r['max_depth'] ); + $r['page'] = ( 'newest' == get_option('default_comments_page') ) ? get_comment_pages_count($_comments, $r['per_page'], $threaded) : 1; + set_query_var( 'cpage', $r['page'] ); + } + } + // Validation check + $r['page'] = intval($r['page']); + if ( 0 == $r['page'] && 0 != $r['per_page'] ) + $r['page'] = 1; + + if ( null === $r['reverse_top_level'] ) + $r['reverse_top_level'] = ( 'desc' == get_option('comment_order') ); + + if ( empty( $r['walker'] ) ) { + $walker = new Walker_Comment; + } else { + $walker = $r['walker']; + } + + $output = $walker->paged_walk( $_comments, $r['max_depth'], $r['page'], $r['per_page'], $r ); + $wp_query->max_num_comment_pages = $walker->max_pages; + + $in_comment_loop = false; + + if ( $r['echo'] ) { + echo $output; + } else { + return $output; + } +} + +/** + * Output a complete commenting form for use within a template. + * + * Most strings and form fields may be controlled through the $args array passed + * into the function, while you may also choose to use the 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 form 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 'submit_button' and 'submit_fields' arguments. + * + * @param array $args { + * Optional. Default arguments and form fields to override. + * + * @type array $fields { + * Default comment fields, filterable by default via the 'comment_form_default_fields' hook. + * + * @type string $author Comment author field HTML. + * @type string $email Comment author email field HTML. + * @type string $url Comment author URL field HTML. + * } + * @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 HTML element for a 'logged in as [user]' message. + * @type string $comment_notes_before HTML element for a message displayed before the comment form. + * Default 'Your email address will not be published.'. + * @type string $comment_notes_after HTML element for a message displayed after the comment form. + * @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_submit The comment submit element class attribute. Default 'submit'. + * @type string $name_submit The comment submit element name attribute. Default 'submit'. + * @type string $title_reply The translatable 'reply' button label. Default 'Leave a Reply'. + * @type string $title_reply_to The translatable 'reply-to' button label. Default 'Leave a Reply to %s', + * where %s is the author of the comment being replied to. + * @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: ''. + * @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_id Post ID or WP_Post object to generate the form for. Default current post. + */ +function comment_form( $args = array(), $post_id = null ) { + if ( null === $post_id ) + $post_id = get_the_ID(); + + $commenter = wp_get_current_commenter(); + $user = wp_get_current_user(); + $user_identity = $user->exists() ? $user->display_name : ''; + + $args = wp_parse_args( $args ); + if ( ! isset( $args['format'] ) ) + $args['format'] = current_theme_supports( 'html5', 'comment-form' ) ? 'html5' : 'xhtml'; + + $req = get_option( 'require_name_email' ); + $aria_req = ( $req ? " aria-required='true'" : '' ); + $html_req = ( $req ? " required='required'" : '' ); + $html5 = 'html5' === $args['format']; + $fields = array( + 'author' => '

      ' . ' ' . + '

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

      ' . + '

      ', + ); + + $required_text = sprintf( ' ' . __('Required fields are marked %s'), '*' ); + + /** + * Filter the default comment form fields. + * + * @since 3.0.0 + * + * @param array $fields The default comment fields. + */ + $fields = apply_filters( 'comment_form_default_fields', $fields ); + $defaults = array( + 'fields' => $fields, + '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( __( 'Logged in as %2$s. Log out?' ), get_edit_user_link(), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '

      ', + 'comment_notes_before' => '

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

      ', + 'comment_notes_after' => '', + 'id_form' => 'commentform', + 'id_submit' => 'submit', + 'class_submit' => 'submit', + 'name_submit' => 'submit', + 'title_reply' => __( 'Leave a Reply' ), + 'title_reply_to' => __( 'Leave a Reply to %s' ), + 'cancel_reply_link' => __( 'Cancel reply' ), + 'label_submit' => __( 'Post Comment' ), + 'submit_button' => '', + 'submit_field' => '

      %1$s %2$s

      ', + 'format' => 'xhtml', + ); + + /** + * Filter the comment form default arguments. + * + * Use 'comment_form_default_fields' to filter the comment fields. + * + * @since 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 args contain all required default values. + $args = array_merge( $defaults, $args ); + + if ( comments_open( $post_id ) ) : ?> + +
      +

      + + + + +
      > + + + + + + + $field ) { + /** + * Filter 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 + * + * @param string $field The HTML-formatted output of the comment form field. + */ + echo apply_filters( "comment_form_field_{$name}", $field ) . "\n"; + } + /** + * Fires after the comment fields in the comment form. + * + * @since 3.0.0 + */ + do_action( 'comment_form_after_fields' ); + ?> + + + + + tag. + * + * @since 1.5.0 + * + * @param int $post_id The post ID. + */ + do_action( 'comment_form', $post_id ); + ?> +
      + +
      + ]*href/i', $comment, $out ); + + /** + * Filter the maximum number of links allowed in a comment. + * + * @since 3.0.0 + * + * @param int $num_links The number of links allowed. + * @param string $url Comment author's URL. Included in allowed links total. + */ + $num_links = apply_filters( 'comment_max_links_url', $num_links, $url ); + + /* + * If the number of links in the comment exceeds the allowed amount, + * fail the check by returning false. + */ + if ( $num_links >= $max_links ) + return false; + } + + $mod_keys = trim(get_option('moderation_keys')); + + // If moderation 'keys' (keywords) are set, process them. + if ( !empty($mod_keys) ) { + $words = explode("\n", $mod_keys ); + + foreach ( (array) $words as $word) { + $word = trim($word); + + // Skip empty lines. + if ( empty($word) ) + continue; + + /* + * Do some escaping magic so that '#' (number of) characters in the spam + * words don't break things: + */ + $word = preg_quote($word, '#'); + + /* + * Check the comment fields for moderation keywords. If any are found, + * fail the check for the given field by returning false. + */ + $pattern = "#$word#i"; + if ( preg_match($pattern, $author) ) return false; + if ( preg_match($pattern, $email) ) return false; + if ( preg_match($pattern, $url) ) return false; + if ( preg_match($pattern, $comment) ) return false; + if ( preg_match($pattern, $user_ip) ) return false; + if ( preg_match($pattern, $user_agent) ) return false; + } + } + + /* + * Check if the option to approve comments by previously-approved authors is enabled. + * + * If it is enabled, check whether the comment author has a previously-approved comment, + * as well as whether there are any moderation keywords (if set) present in the author + * email address. If both checks pass, return true. Otherwise, return false. + */ + if ( 1 == get_option('comment_whitelist')) { + if ( 'trackback' != $comment_type && 'pingback' != $comment_type && $author != '' && $email != '' ) { + // expected_slashed ($author, $email) + $ok_to_comment = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$author' AND comment_author_email = '$email' and comment_approved = '1' LIMIT 1"); + if ( ( 1 == $ok_to_comment ) && + ( empty($mod_keys) || false === strpos( $email, $mod_keys) ) ) + return true; + else + return false; + } else { + return false; + } + } + return true; +} + +/** + * Retrieve the approved comments for post $post_id. + * + * @since 2.0.0 + * @since 4.1.0 Refactored to leverage {@see WP_Comment_Query} over a direct query. + * + * @param int $post_id The ID of the post. + * @param array $args Optional. See {@see WP_Comment_Query::query()} 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( + 'status' => 1, + 'post_id' => $post_id, + 'order' => 'ASC', + ); + $r = wp_parse_args( $args, $defaults ); + + $query = new WP_Comment_Query; + return $query->query( $r ); +} + +/** + * Retrieves comment data given a comment ID or comment object. + * + * If an object is passed then the comment data will be cached and then returned + * 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 + * + * @global wpdb $wpdb WordPress database abstraction object. + * @global object $comment + * + * @param object|string|int $comment Comment to retrieve. + * @param string $output Optional. OBJECT or ARRAY_A or ARRAY_N constants. + * @return object|array|null Depends on $output value. + */ +function get_comment(&$comment, $output = OBJECT) { + global $wpdb; + + if ( empty($comment) ) { + if ( isset($GLOBALS['comment']) ) + $_comment = & $GLOBALS['comment']; + else + $_comment = null; + } elseif ( is_object($comment) ) { + wp_cache_add($comment->comment_ID, $comment, 'comment'); + $_comment = $comment; + } else { + if ( isset($GLOBALS['comment']) && ($GLOBALS['comment']->comment_ID == $comment) ) { + $_comment = & $GLOBALS['comment']; + } elseif ( ! $_comment = wp_cache_get($comment, 'comment') ) { + $_comment = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_ID = %d LIMIT 1", $comment)); + if ( ! $_comment ) + return null; + wp_cache_add($_comment->comment_ID, $_comment, 'comment'); + } + } + + /** + * Fires after a comment is retrieved. + * + * @since 2.3.0 + * + * @param mixed $_comment Comment data. + */ + $_comment = apply_filters( 'get_comment', $_comment ); + + if ( $output == OBJECT ) { + return $_comment; + } elseif ( $output == ARRAY_A ) { + $__comment = get_object_vars($_comment); + return $__comment; + } elseif ( $output == ARRAY_N ) { + $__comment = array_values(get_object_vars($_comment)); + return $__comment; + } else { + return $_comment; + } +} + +/** + * 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 + * + * @param string|array $args Optional. Array or string of arguments. See {@see WP_Comment_Query::parse_query()} + * 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; + return $query->query( $args ); +} + +/** + * WordPress Comment Query class. + * + * See WP_Comment_Query::__construct() for accepted arguments. + * + * @since 3.1.0 + */ +class WP_Comment_Query { + /** + * SQL for database query. + * + * @since 4.0.1 + * @access public + * @var string + */ + public $request; + + /** + * Metadata query container + * + * @since 3.5.0 + * @access public + * @var object WP_Meta_Query + */ + public $meta_query = false; + + /** + * Date query container + * + * @since 3.7.0 + * @access public + * @var object WP_Date_Query + */ + public $date_query = false; + + /** + * Query vars set by the user. + * + * @since 3.1.0 + * @access public + * @var array + */ + public $query_vars; + + /** + * Default values for query vars. + * + * @since 4.2.0 + * @access public + * @var array + */ + public $query_var_defaults; + + /** + * List of comments located by the query. + * + * @since 4.0.0 + * @access public + * @var array + */ + public $comments; + + /** + * Make private/protected methods readable for backwards compatibility. + * + * @since 4.0.0 + * @access public + * + * @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 call_user_func_array( array( $this, $name ), $arguments ); + } + return false; + } + + /** + * Constructor. + * + * Sets up the comment query, based on the query vars passed. + * + * @since 4.2.0 + * @access public + * + * @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 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 null (no limit). + * @type int $offset Number of comments to offset the query. Used to build LIMIT clause. + * Default 0. + * @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', + * '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 $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 Comment author ID to limit results by. Default empty. + * @type string $post_status Post status to retrieve affiliated comments for. Default empty. + * @type string $post_type Post type to retrieve affiliated comments for. 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 any + * custom 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. + * } + */ + public function __construct( $query = '' ) { + $this->query_var_defaults = array( + 'author_email' => '', + 'author__in' => '', + 'author__not_in' => '', + 'include_unapproved' => '', + 'fields' => '', + 'ID' => '', + 'comment__in' => '', + 'comment__not_in' => '', + 'karma' => '', + 'number' => '', + 'offset' => '', + 'orderby' => '', + 'order' => 'DESC', + 'parent' => '', + 'post_author__in' => '', + 'post_author__not_in' => '', + 'post_ID' => '', + 'post_id' => 0, + 'post__in' => '', + 'post__not_in' => '', + 'post_author' => '', + 'post_name' => '', + 'post_parent' => '', + 'post_status' => '', + 'post_type' => '', + 'status' => 'all', + 'type' => '', + 'type__in' => '', + 'type__not_in' => '', + 'user_id' => '', + 'search' => '', + 'count' => false, + 'meta_key' => '', + 'meta_value' => '', + 'meta_query' => '', + 'date_query' => null, // See WP_Date_Query + ); + + if ( ! empty( $query ) ) { + $this->query( $query ); + } + } + + /** + * Parse arguments passed to the comment query with default query parameters. + * + * @since 4.2.0 Extracted from WP_Comment_Query::query(). + * + * @access public + * + * @param string|array $query WP_Comment_Query arguments. See WP_Comment_Query::__construct() + */ + public function parse_query( $query = '' ) { + if ( empty( $query ) ) { + $query = $this->query_vars; + } + + $this->query_vars = wp_parse_args( $query, $this->query_var_defaults ); + do_action_ref_array( 'parse_comment_query', array( &$this ) ); + } + + /** + * Sets up the WordPress query for retrieving comments. + * + * @since 3.1.0 + * @since 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(). + * @access public + * + * @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. + */ + public function query( $query ) { + $this->query_vars = wp_parse_args( $query ); + return $this->get_comments(); + } + + /** + * Get a list of comments matching the query vars. + * + * @since 4.2.0 + * @access public + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @return int|array The list of comments. + */ + public function get_comments() { + global $wpdb; + + $groupby = ''; + + $this->parse_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 + * + * @param WP_Comment_Query &$this Current instance of WP_Comment_Query, passed by reference. + */ + do_action_ref_array( 'pre_get_comments', array( &$this ) ); + + // Reparse query vars, in case they were modified in a 'pre_get_comments' callback. + $this->meta_query->parse_query_vars( $this->query_vars ); + if ( ! empty( $this->meta_query->queries ) ) { + $meta_query_clauses = $this->meta_query->get_sql( 'comment', $wpdb->comments, 'comment_ID', $this ); + } + + // $args can include anything. Only use the args defined in the query_var_defaults to compute the key. + $key = md5( serialize( wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) ) ) ); + $last_changed = wp_cache_get( 'last_changed', 'comment' ); + if ( ! $last_changed ) { + $last_changed = microtime(); + wp_cache_set( 'last_changed', $last_changed, 'comment' ); + } + $cache_key = "get_comments:$key:$last_changed"; + + if ( $cache = wp_cache_get( $cache_key, 'comment' ) ) { + $this->comments = $cache; + return $this->comments; + } + + $where = array(); + + // Assemble clauses related to 'comment_approved'. + $approved_clauses = array(); + + // 'status' accepts an array or a comma-separated string. + $status_clauses = array(); + $statuses = $this->query_vars['status']; + if ( ! is_array( $statuses ) ) { + $statuses = preg_split( '/[\s,]+/', $statuses ); + } + + // 'any' overrides other statuses. + if ( ! in_array( 'any', $statuses ) ) { + foreach ( $statuses as $status ) { + switch ( $status ) { + case 'hold' : + $status_clauses[] = "comment_approved = '0'"; + break; + + case 'approve' : + $status_clauses[] = "comment_approved = '1'"; + break; + + case 'all' : + case '' : + $status_clauses[] = "( comment_approved = '0' OR comment_approved = '1' )"; + break; + + default : + $status_clauses[] = $wpdb->prepare( "comment_approved = %s", $status ); + break; + } + } + + if ( ! empty( $status_clauses ) ) { + $approved_clauses[] = '( ' . implode( ' OR ', $status_clauses ) . ' )'; + } + } + + // User IDs or emails whose unapproved comments are included, regardless of $status. + if ( ! empty( $this->query_vars['include_unapproved'] ) ) { + $include_unapproved = $this->query_vars['include_unapproved']; + + // 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. + if ( is_numeric( $unapproved_identifier ) ) { + $approved_clauses[] = $wpdb->prepare( "( user_id = %d AND comment_approved = '0' )", $unapproved_identifier ); + + // Otherwise we match against email addresses. + } else { + $approved_clauses[] = $wpdb->prepare( "( comment_author_email = %s AND comment_approved = '0' )", $unapproved_identifier ); + } + } + } + + // Collapse comment_approved clauses into a single OR-separated clause. + if ( ! empty( $approved_clauses ) ) { + if ( 1 === count( $approved_clauses ) ) { + $where[] = $approved_clauses[0]; + } else { + $where[] = '( ' . implode( ' OR ', $approved_clauses ) . ' )'; + } + } + + $order = ( 'ASC' == strtoupper( $this->query_vars['order'] ) ) ? 'ASC' : 'DESC'; + + // Disable ORDER BY with 'none', an empty array, or boolean false. + if ( in_array( $this->query_vars['orderby'], array( 'none', array(), false ), true ) ) { + $orderby = ''; + } elseif ( ! empty( $this->query_vars['orderby'] ) ) { + $ordersby = is_array( $this->query_vars['orderby'] ) ? + $this->query_vars['orderby'] : + preg_split( '/[,\s]/', $this->query_vars['orderby'] ); + + $orderby_array = array(); + $found_orderby_comment_ID = false; + foreach ( $ordersby as $_key => $_value ) { + if ( ! $_value ) { + continue; + } + + if ( is_int( $_key ) ) { + $_orderby = $_value; + $_order = $order; + } else { + $_orderby = $_key; + $_order = $_value; + } + + if ( ! $found_orderby_comment_ID && 'comment_ID' === $_orderby ) { + $found_orderby_comment_ID = true; + } + + $parsed = $this->parse_orderby( $_orderby ); + + if ( ! $parsed ) { + continue; + } + + $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order ); + } + + // If no valid clauses were found, order by comment_date_gmt. + if ( empty( $orderby_array ) ) { + $orderby_array[] = "$wpdb->comments.comment_date_gmt $order"; + } + + // To ensure determinate sorting, always include a comment_ID clause. + if ( ! $found_orderby_comment_ID ) { + $comment_ID_order = ''; + + // Inherit order from comment_date or comment_date_gmt, if available. + foreach ( $orderby_array as $orderby_clause ) { + if ( preg_match( '/comment_date(?:_gmt)*\ (ASC|DESC)/', $orderby_clause, $match ) ) { + $comment_ID_order = $match[1]; + break; + } + } + + // If no date-related order is available, use the date from the first available clause. + if ( ! $comment_ID_order ) { + foreach ( $orderby_array as $orderby_clause ) { + if ( false !== strpos( 'ASC', $orderby_clause ) ) { + $comment_ID_order = 'ASC'; + } else { + $comment_ID_order = 'DESC'; + } + + break; + } + } + + // Default to DESC. + if ( ! $comment_ID_order ) { + $comment_ID_order = 'DESC'; + } + + $orderby_array[] = "$wpdb->comments.comment_ID $comment_ID_order"; + } + + $orderby = implode( ', ', $orderby_array ); + } else { + $orderby = "$wpdb->comments.comment_date_gmt $order"; + } + + $number = absint( $this->query_vars['number'] ); + $offset = absint( $this->query_vars['offset'] ); + + if ( ! empty( $number ) ) { + if ( $offset ) { + $limits = 'LIMIT ' . $offset . ',' . $number; + } else { + $limits = 'LIMIT ' . $number; + } + } else { + $limits = ''; + } + + if ( $this->query_vars['count'] ) { + $fields = 'COUNT(*)'; + } else { + switch ( strtolower( $this->query_vars['fields'] ) ) { + case 'ids': + $fields = "$wpdb->comments.comment_ID"; + break; + default: + $fields = "*"; + break; + } + } + + $join = ''; + + $post_id = absint( $this->query_vars['post_id'] ); + if ( ! empty( $post_id ) ) { + $where[] = $wpdb->prepare( 'comment_post_ID = %d', $post_id ); + } + + // Parse comment IDs for an IN clause. + if ( ! empty( $this->query_vars['comment__in'] ) ) { + $where[] = "$wpdb->comments.comment_ID IN ( " . implode( ',', wp_parse_id_list( $this->query_vars['comment__in'] ) ) . ' )'; + } + + // Parse comment IDs for a NOT IN clause. + if ( ! empty( $this->query_vars['comment__not_in'] ) ) { + $where[] = "$wpdb->comments.comment_ID NOT IN ( " . implode( ',', wp_parse_id_list( $this->query_vars['comment__not_in'] ) ) . ' )'; + } + + // Parse comment post IDs for an IN clause. + if ( ! empty( $this->query_vars['post__in'] ) ) { + $where[] = 'comment_post_ID IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post__in'] ) ) . ' )'; + } + + // Parse comment post IDs for a NOT IN clause. + if ( ! empty( $this->query_vars['post__not_in'] ) ) { + $where[] = 'comment_post_ID NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post__not_in'] ) ) . ' )'; + } + + if ( '' !== $this->query_vars['author_email'] ) { + $where[] = $wpdb->prepare( 'comment_author_email = %s', $this->query_vars['author_email'] ); + } + + if ( '' !== $this->query_vars['karma'] ) { + $where[] = $wpdb->prepare( 'comment_karma = %d', $this->query_vars['karma'] ); + } + + // Filtering by comment_type: 'type', 'type__in', 'type__not_in'. + $raw_types = array( + 'IN' => array_merge( (array) $this->query_vars['type'], (array) $this->query_vars['type__in'] ), + 'NOT IN' => (array) $this->query_vars['type__not_in'], + ); + + $comment_types = array(); + foreach ( $raw_types as $operator => $_raw_types ) { + $_raw_types = array_unique( $_raw_types ); + + foreach ( $_raw_types as $type ) { + switch ( $type ) { + // An empty translates to 'all', for backward compatibility + case '': + case 'all' : + break; + + case 'comment': + case 'comments': + $comment_types[ $operator ][] = "''"; + break; + + case 'pings': + $comment_types[ $operator ][] = "'pingback'"; + $comment_types[ $operator ][] = "'trackback'"; + break; + + default: + $comment_types[ $operator ][] = $wpdb->prepare( '%s', $type ); + break; + } + } + + if ( ! empty( $comment_types[ $operator ] ) ) { + $types_sql = implode( ', ', $comment_types[ $operator ] ); + $where[] = "comment_type $operator ($types_sql)"; + } + } + + if ( '' !== $this->query_vars['parent'] ) { + $where[] = $wpdb->prepare( 'comment_parent = %d', $this->query_vars['parent'] ); + } + + if ( is_array( $this->query_vars['user_id'] ) ) { + $where[] = 'user_id IN (' . implode( ',', array_map( 'absint', $this->query_vars['user_id'] ) ) . ')'; + } elseif ( '' !== $this->query_vars['user_id'] ) { + $where[] = $wpdb->prepare( 'user_id = %d', $this->query_vars['user_id'] ); + } + + if ( '' !== $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' ) + ); + + // Strip leading 'AND'. + $where[] = preg_replace( '/^\s*AND\s*/', '', $search_sql ); + } + + // If any post-related query vars are passed, join the posts table. + $join_posts_table = false; + $plucked = wp_array_slice_assoc( $this->query_vars, array( 'post_author', 'post_name', 'post_parent', 'post_status', 'post_type' ) ); + $post_fields = array_filter( $plucked ); + + if ( ! empty( $post_fields ) ) { + $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' ); + $where[] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value ); + } + } + + // Comment author IDs for an IN clause. + if ( ! empty( $this->query_vars['author__in'] ) ) { + $where[] = 'user_id IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['author__in'] ) ) . ' )'; + } + + // Comment author IDs for a NOT IN clause. + if ( ! empty( $this->query_vars['author__not_in'] ) ) { + $where[] = 'user_id NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['author__not_in'] ) ) . ' )'; + } + + // Post author IDs for an IN clause. + if ( ! empty( $this->query_vars['post_author__in'] ) ) { + $join_posts_table = true; + $where[] = 'post_author IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post_author__in'] ) ) . ' )'; + } + + // Post author IDs for a NOT IN clause. + if ( ! empty( $this->query_vars['post_author__not_in'] ) ) { + $join_posts_table = true; + $where[] = 'post_author NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post_author__not_in'] ) ) . ' )'; + } + + if ( $join_posts_table ) { + $join = "JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->comments.comment_post_ID"; + } + + if ( ! empty( $meta_query_clauses ) ) { + $join .= $meta_query_clauses['join']; + + // Strip leading 'AND'. + $where[] = preg_replace( '/^\s*AND\s*/', '', $meta_query_clauses['where'] ); + + if ( ! $this->query_vars['count'] ) { + $groupby = "{$wpdb->comments}.comment_ID"; + } + } + + $date_query = $this->query_vars['date_query']; + if ( ! empty( $date_query ) && is_array( $date_query ) ) { + $date_query_object = new WP_Date_Query( $date_query, 'comment_date' ); + $where[] = preg_replace( '/^\s*AND\s*/', '', $date_query_object->get_sql() ); + } + + $where = implode( ' AND ', $where ); + + $pieces = array( 'fields', 'join', 'where', 'orderby', 'limits', 'groupby' ); + /** + * Filter the comment query clauses. + * + * @since 3.1.0 + * + * @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 ) ); + + $fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : ''; + $join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : ''; + $where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where' ] : ''; + $orderby = isset( $clauses[ 'orderby' ] ) ? $clauses[ 'orderby' ] : ''; + $limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : ''; + $groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : ''; + + if ( $where ) { + $where = 'WHERE ' . $where; + } + + if ( $groupby ) { + $groupby = 'GROUP BY ' . $groupby; + } + + if ( $orderby ) { + $orderby = "ORDER BY $orderby"; + } + + $this->request = "SELECT $fields FROM $wpdb->comments $join $where $groupby $orderby $limits"; + + if ( $this->query_vars['count'] ) { + return $wpdb->get_var( $this->request ); + } + + if ( 'ids' == $this->query_vars['fields'] ) { + $this->comments = $wpdb->get_col( $this->request ); + return array_map( 'intval', $this->comments ); + } + + $results = $wpdb->get_results( $this->request ); + /** + * Filter the comment query results. + * + * @since 3.1.0 + * + * @param array $results 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( $results, &$this ) ); + + wp_cache_add( $cache_key, $comments, 'comment' ); + if ( '*' === $fields ) { + update_comment_cache( $comments ); + } + + $this->comments = $comments; + return $this->comments; + } + + /** + * Used internally to generate an SQL string for searching across multiple columns + * + * @since 3.1.0 + * @access protected + * + * @global wpdb $wpdb + * + * @param string $string + * @param array $cols + * @return string + */ + protected function get_search_sql( $string, $cols ) { + global $wpdb; + + $like = '%' . $wpdb->esc_like( $string ) . '%'; + + $searches = array(); + foreach ( $cols as $col ) { + $searches[] = $wpdb->prepare( "$col LIKE %s", $like ); + } + + return ' AND (' . implode(' OR ', $searches) . ')'; + } + + /** + * Parse and sanitize 'orderby' keys passed to the comment query. + * + * @since 4.2.0 + * @access protected + * + * @global wpdb $wpdb WordPress 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. + */ + protected function parse_orderby( $orderby ) { + global $wpdb; + + $allowed_keys = array( + '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', + ); + + if ( ! empty( $this->query_vars['meta_key'] ) ) { + $allowed_keys[] = $this->query_vars['meta_key']; + $allowed_keys[] = 'meta_value'; + $allowed_keys[] = 'meta_value_num'; + } + + $meta_query_clauses = $this->meta_query->get_clauses(); + if ( $meta_query_clauses ) { + $allowed_keys = array_merge( $allowed_keys, array_keys( $meta_query_clauses ) ); + } + + $parsed = false; + if ( $orderby == $this->query_vars['meta_key'] || $orderby == 'meta_value' ) { + $parsed = "$wpdb->commentmeta.meta_value"; + } elseif ( $orderby == 'meta_value_num' ) { + $parsed = "$wpdb->commentmeta.meta_value+0"; + } elseif ( in_array( $orderby, $allowed_keys ) ) { + + if ( isset( $meta_query_clauses[ $orderby ] ) ) { + $meta_clause = $meta_query_clauses[ $orderby ]; + $parsed = sprintf( "CAST(%s.meta_value AS %s)", esc_sql( $meta_clause['alias'] ), esc_sql( $meta_clause['cast'] ) ); + } else { + $parsed = "$wpdb->comments.$orderby"; + } + } + + return $parsed; + } + + /** + * Parse an 'order' query variable and cast it to ASC or DESC as necessary. + * + * @since 4.2.0 + * @access protected + * + * @param string $order The 'order' query variable. + * @return string The sanitized 'order' query variable. + */ + protected function parse_order( $order ) { + if ( ! is_string( $order ) || empty( $order ) ) { + return 'DESC'; + } + + if ( 'ASC' === strtoupper( $order ) ) { + return 'ASC'; + } else { + return 'DESC'; + } + } +} + +/** + * Retrieve all of the WordPress supported comment statuses. + * + * Comments have a limited set of valid status values, this provides the comment + * status values and descriptions. + * + * @since 2.7.0 + * + * @return array List of comment statuses. + */ +function get_comment_statuses() { + $status = array( + 'hold' => __('Unapproved'), + /* translators: comment status */ + 'approve' => _x('Approved', 'adjective'), + /* translators: comment status */ + 'spam' => _x('Spam', 'adjective'), + ); + + return $status; +} + +/** + * Gets the default comment status for a post type. + * + * @since 4.3.0 + * + * @param string $post_type Optional. Post type. Default 'post'. + * @param string $comment_type Optional. Comment type. Default 'comment'. + * @return string Expected return value is 'open' or 'closed'. + */ +function get_default_comment_status( $post_type = 'post', $comment_type = 'comment' ) { + switch ( $comment_type ) { + case 'pingback' : + case 'trackback' : + $supports = 'trackbacks'; + $option = 'ping'; + break; + default : + $supports = 'comments'; + $option = 'comment'; + } + + // Set the status. + if ( 'page' === $post_type ) { + $status = 'closed'; + } elseif ( post_type_supports( $post_type, $supports ) ) { + $status = get_option( "default_{$option}_status" ); + } else { + $status = 'closed'; + } + + /** + * Filter the default comment status for the given post type. + * + * @since 4.3.0 + * + * @param string $status Default status for the given post type, + * either 'open' or 'closed'. + * @param string $post_type Post type. Default is `post`. + * @param string $comment_type Type of comment. Default is `comment`. + */ + return apply_filters( 'get_default_comment_status' , $status, $post_type, $comment_type ); +} + +/** + * The date the last comment was modified. + * + * @since 1.5.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * @staticvar array $cache_lastcommentmodified + * + * @param string $timezone Which timezone to use in reference to 'gmt', 'blog', + * or 'server' locations. + * @return string Last comment modified date. + */ +function get_lastcommentmodified($timezone = 'server') { + global $wpdb; + static $cache_lastcommentmodified = array(); + + if ( isset($cache_lastcommentmodified[$timezone]) ) + return $cache_lastcommentmodified[$timezone]; + + $add_seconds_server = date('Z'); + + switch ( strtolower($timezone)) { + case 'gmt': + $lastcommentmodified = $wpdb->get_var("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1"); + break; + case 'blog': + $lastcommentmodified = $wpdb->get_var("SELECT comment_date FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1"); + break; + case 'server': + $lastcommentmodified = $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; + } + + $cache_lastcommentmodified[$timezone] = $lastcommentmodified; + + return $lastcommentmodified; +} + +/** + * The amount of comments in a post or total comments. + * + * A lot like {@link wp_count_comments()}, in that they both return comment + * stats (albeit with different types). The {@link wp_count_comments()} actual + * caches, but this function does not. + * + * @since 2.0.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param int $post_id Optional. Comment amount in post if > 0, else total comments blog wide. + * @return array The amount of spam, approved, awaiting moderation, and total comments. + */ +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, + "spam" => 0, + "total_comments" => 0 + ); + + foreach ( $totals as $row ) { + switch ( $row['comment_approved'] ) { + 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']; + break; + case 0: + $comment_count['awaiting_moderation'] = $row['total']; + $comment_count['total_comments'] += $row['total']; + break; + default: + break; + } + } + + return $comment_count; +} + +// +// Comment meta functions +// + +/** + * Add meta data field to a comment. + * + * @since 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. + * @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); +} + +/** + * 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 + * @link https://codex.wordpress.org/Function_Reference/delete_comment_meta + * + * @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); +} + +/** + * Retrieve comment meta field for a comment. + * + * @since 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. + * @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); +} + +/** + * Update comment meta field based on comment ID. + * + * 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 2.9.0 + * @link https://codex.wordpress.org/Function_Reference/update_comment_meta + * + * @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 update_comment_meta($comment_id, $meta_key, $meta_value, $prev_value = '') { + return update_metadata('comment', $comment_id, $meta_key, $meta_value, $prev_value); +} + +/** + * Sets the cookies used to store an unauthenticated commentator's identity. Typically used + * to recall previous comments by this commentator that are still held in moderation. + * + * @param object $comment Comment object. + * @param object $user Comment author's object. + * + * @since 3.4.0 + */ +function wp_set_comment_cookies($comment, $user) { + if ( $user->exists() ) + return; + + /** + * Filter the lifetime of the comment cookie in seconds. + * + * @since 2.8.0 + * + * @param int $seconds Comment cookie lifetime. Default 30000000. + */ + $comment_cookie_lifetime = apply_filters( 'comment_cookie_lifetime', 30000000 ); + $secure = ( 'https' === parse_url( home_url(), PHP_URL_SCHEME ) ); + setcookie( 'comment_author_' . COOKIEHASH, $comment->comment_author, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure ); + setcookie( 'comment_author_email_' . COOKIEHASH, $comment->comment_author_email, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure ); + setcookie( 'comment_author_url_' . COOKIEHASH, esc_url($comment->comment_author_url), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure ); +} + +/** + * Sanitizes the cookies sent to the user already. + * + * 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 + */ +function sanitize_comment_cookies() { + if ( isset( $_COOKIE['comment_author_' . COOKIEHASH] ) ) { + /** + * Filter the comment author's name cookie before it is set. + * + * When this filter hook is evaluated in wp_filter_comment(), + * the comment author's name string is passed. + * + * @since 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); + $_COOKIE['comment_author_' . COOKIEHASH] = $comment_author; + } + + if ( isset( $_COOKIE['comment_author_email_' . COOKIEHASH] ) ) { + /** + * Filter the comment author's email cookie before it is set. + * + * When this filter hook is evaluated in wp_filter_comment(), + * the comment author's email string is passed. + * + * @since 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); + $_COOKIE['comment_author_email_'.COOKIEHASH] = $comment_author_email; + } + + if ( isset( $_COOKIE['comment_author_url_' . COOKIEHASH] ) ) { + /** + * Filter the comment author's URL cookie before it is set. + * + * When this filter hook is evaluated in wp_filter_comment(), + * the comment author's URL string is passed. + * + * @since 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); + $_COOKIE['comment_author_url_'.COOKIEHASH] = $comment_author_url; + } +} + +/** + * Validates whether this comment is allowed to be made. + * + * @since 2.0.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param array $commentdata Contains information on the comment + * @return int|string Signifies the approval status (0|1|'spam') + */ +function wp_allow_comment( $commentdata ) { + global $wpdb; + + // 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 ", + wp_unslash( $commentdata['comment_post_ID'] ), + wp_unslash( $commentdata['comment_parent'] ), + wp_unslash( $commentdata['comment_author'] ) + ); + if ( $commentdata['comment_author_email'] ) { + $dupe .= $wpdb->prepare( + "OR comment_author_email = %s ", + wp_unslash( $commentdata['comment_author_email'] ) + ); + } + $dupe .= $wpdb->prepare( + ") AND comment_content = %s LIMIT 1", + wp_unslash( $commentdata['comment_content'] ) + ); + if ( $wpdb->get_var( $dupe ) ) { + /** + * Fires immediately after a duplicate comment is detected. + * + * @since 3.0.0 + * + * @param array $commentdata Comment data. + */ + do_action( 'comment_duplicate_trigger', $commentdata ); + if ( defined( 'DOING_AJAX' ) ) { + die( __('Duplicate comment detected; it looks as though you’ve already said that!') ); + } + wp_die( __( 'Duplicate comment detected; it looks as though you’ve already said that!' ), 409 ); + } + + /** + * Fires immediately before a comment is marked approved. + * + * Allows checking for comment flooding. + * + * @since 2.3.0 + * + * @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. + */ + do_action( + 'check_comment_flood', + $commentdata['comment_author_IP'], + $commentdata['comment_author_email'], + $commentdata['comment_date_gmt'] + ); + + if ( ! empty( $commentdata['user_id'] ) ) { + $user = get_userdata( $commentdata['user_id'] ); + $post_author = $wpdb->get_var( $wpdb->prepare( + "SELECT post_author FROM $wpdb->posts WHERE ID = %d LIMIT 1", + $commentdata['comment_post_ID'] + ) ); + } + + if ( isset( $user ) && ( $commentdata['user_id'] == $post_author || $user->has_cap( 'moderate_comments' ) ) ) { + // The author and the admins get respect. + $approved = 1; + } else { + // Everyone else's comments will be checked. + if ( check_comment( + $commentdata['comment_author'], + $commentdata['comment_author_email'], + $commentdata['comment_author_url'], + $commentdata['comment_content'], + $commentdata['comment_author_IP'], + $commentdata['comment_agent'], + $commentdata['comment_type'] + ) ) { + $approved = 1; + } else { + $approved = 0; + } + + if ( wp_blacklist_check( + $commentdata['comment_author'], + $commentdata['comment_author_email'], + $commentdata['comment_author_url'], + $commentdata['comment_content'], + $commentdata['comment_author_IP'], + $commentdata['comment_agent'] + ) ) { + $approved = 'spam'; + } + } + + /** + * Filter a comment's approval status before it is set. + * + * @since 2.1.0 + * + * @param bool|string $approved The approval status. Accepts 1, 0, or 'spam'. + * @param array $commentdata Comment data. + */ + $approved = apply_filters( 'pre_comment_approved', $approved, $commentdata ); + return $approved; +} + +/** + * Check whether comment flooding is occurring. + * + * Won't run, if current user can manage options, so to not block + * administrators. + * + * @since 2.3.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param string $ip Comment IP. + * @param string $email Comment author email address. + * @param string $date MySQL time string. + */ +function check_comment_flood_db( $ip, $email, $date ) { + global $wpdb; + if ( current_user_can( 'manage_options' ) ) + return; // don't throttle admins + $hour_ago = gmdate( 'Y-m-d H:i:s', time() - HOUR_IN_SECONDS ); + if ( $lasttime = $wpdb->get_var( $wpdb->prepare( "SELECT `comment_date_gmt` FROM `$wpdb->comments` WHERE `comment_date_gmt` >= %s AND ( `comment_author_IP` = %s OR `comment_author_email` = %s ) ORDER BY `comment_date_gmt` DESC LIMIT 1", $hour_ago, $ip, $email ) ) ) { + $time_lastcomment = mysql2date('U', $lasttime, false); + $time_newcomment = mysql2date('U', $date, false); + /** + * Filter the comment flood status. + * + * @since 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 + * + * @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 ( defined('DOING_AJAX') ) + die( __('You are posting comments too quickly. Slow down.') ); + + wp_die( __( 'You are posting comments too quickly. Slow down.' ), 429 ); + } + } +} + +/** + * Separates an array of comments into an array keyed by comment_type. + * + * @since 2.7.0 + * + * @param array $comments Array of comments + * @return array Array of comments keyed by comment_type. + */ +function separate_comments(&$comments) { + $comments_by_type = array('comment' => array(), 'trackback' => array(), 'pingback' => array(), 'pings' => array()); + $count = count($comments); + for ( $i = 0; $i < $count; $i++ ) { + $type = $comments[$i]->comment_type; + if ( empty($type) ) + $type = 'comment'; + $comments_by_type[$type][] = &$comments[$i]; + if ( 'trackback' == $type || 'pingback' == $type ) + $comments_by_type['pings'][] = &$comments[$i]; + } + + return $comments_by_type; +} + +/** + * Calculate the total number of comment pages. + * + * @since 2.7.0 + * + * @uses Walker_Comment + * + * @global WP_Query $wp_query + * + * @param array $comments Optional array of 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 ) { + global $wp_query; + + if ( null === $comments && null === $per_page && null === $threaded && !empty($wp_query->max_num_comment_pages) ) + return $wp_query->max_num_comment_pages; + + if ( ( ! $comments || ! is_array( $comments ) ) && ! empty( $wp_query->comments ) ) + $comments = $wp_query->comments; + + if ( empty($comments) ) + return 0; + + if ( ! get_option( 'page_comments' ) ) + return 1; + + if ( !isset($per_page) ) + $per_page = (int) get_query_var('comments_per_page'); + if ( 0 === $per_page ) + $per_page = (int) get_option('comments_per_page'); + if ( 0 === $per_page ) + return 1; + + if ( !isset($threaded) ) + $threaded = get_option('thread_comments'); + + if ( $threaded ) { + $walker = new Walker_Comment; + $count = ceil( $walker->get_number_of_root_elements( $comments ) / $per_page ); + } else { + $count = ceil( count( $comments ) / $per_page ); + } + + return $count; +} + +/** + * Calculate what page number a comment will appear on for comment paging. + * + * @since 2.7.0 + * + * @global wpdb $wpdb + * + * @param int $comment_ID Comment ID. + * @param array $args Optional args. + * @return int|null Comment page number or null on error. + */ +function get_page_of_comment( $comment_ID, $args = array() ) { + global $wpdb; + + if ( !$comment = get_comment( $comment_ID ) ) + return; + + $defaults = array( 'type' => 'all', 'page' => '', 'per_page' => '', 'max_depth' => '' ); + $args = wp_parse_args( $args, $defaults ); + + if ( '' === $args['per_page'] && get_option('page_comments') ) + $args['per_page'] = get_query_var('comments_per_page'); + if ( empty($args['per_page']) ) { + $args['per_page'] = 0; + $args['page'] = 0; + } + if ( $args['per_page'] < 1 ) + return 1; + + if ( '' === $args['max_depth'] ) { + if ( get_option('thread_comments') ) + $args['max_depth'] = get_option('thread_comments_depth'); + else + $args['max_depth'] = -1; + } + + // 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 ); + + $allowedtypes = array( + 'comment' => '', + 'pingback' => 'pingback', + 'trackback' => 'trackback', + ); + + $comtypewhere = ( 'all' != $args['type'] && isset($allowedtypes[$args['type']]) ) ? " AND comment_type = '" . $allowedtypes[$args['type']] . "'" : ''; + + // Count comments older than this one + $oldercoms = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = 0 AND comment_approved = '1' AND comment_date_gmt < '%s'" . $comtypewhere, $comment->comment_post_ID, $comment->comment_date_gmt ) ); + + // No older comments? Then it's page #1. + if ( 0 == $oldercoms ) + return 1; + + // Divide comments older than this one by comments per page to get this comment's page number + return ceil( ( $oldercoms + 1 ) / $args['per_page'] ); +} + +/** + * Does comment contain blacklisted characters or words. + * + * @since 1.5.0 + * + * @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 IP address + * @param string $user_agent The author's browser user agent + * @return bool True if comment contains blacklisted content, false if comment does not + */ +function wp_blacklist_check($author, $email, $url, $comment, $user_ip, $user_agent) { + /** + * Fires before the comment is tested for blacklisted characters or words. + * + * @since 1.5.0 + * + * @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( 'wp_blacklist_check', $author, $email, $url, $comment, $user_ip, $user_agent ); + + $mod_keys = trim( get_option('blacklist_keys') ); + if ( '' == $mod_keys ) + return false; // If moderation keys are empty + $words = explode("\n", $mod_keys ); + + foreach ( (array) $words as $word ) { + $word = trim($word); + + // Skip empty lines + if ( empty($word) ) { continue; } + + // Do some escaping magic so that '#' chars in the + // spam words don't break things: + $word = preg_quote($word, '#'); + + $pattern = "#$word#i"; + if ( + preg_match($pattern, $author) + || preg_match($pattern, $email) + || preg_match($pattern, $url) + || preg_match($pattern, $comment) + || preg_match($pattern, $user_ip) + || preg_match($pattern, $user_agent) + ) + return true; + } + return false; +} + +/** + * Retrieve total comments for blog or single post. + * + * The properties of the returned object contain the 'moderated', 'approved', + * and spam comments for either the entire blog or single post. Those properties + * contain the amount of comments that match the status. The 'total_comments' + * property contains the integer of total comments. + * + * The comment stats are cached and then retrieved, if they already exist in the + * cache. + * + * @since 2.5.0 + * + * @global wpdb $wpdb + * + * @param int $post_id Optional. Post ID. + * @return object|array Comment stats. + */ +function wp_count_comments( $post_id = 0 ) { + global $wpdb; + + $post_id = (int) $post_id; + + /** + * Filter the comments count for a given post. + * + * @since 2.7.0 + * + * @param array $count An empty array. + * @param int $post_id The post ID. + */ + $stats = apply_filters( 'wp_count_comments', array(), $post_id ); + if ( !empty($stats) ) + return $stats; + + $count = wp_cache_get("comments-{$post_id}", 'counts'); + + if ( false !== $count ) + return $count; + + $where = ''; + if ( $post_id > 0 ) + $where = $wpdb->prepare( "WHERE comment_post_ID = %d", $post_id ); + + $count = $wpdb->get_results( "SELECT comment_approved, COUNT( * ) AS num_comments FROM {$wpdb->comments} {$where} GROUP BY comment_approved", ARRAY_A ); + + $total = 0; + $approved = array('0' => 'moderated', '1' => 'approved', 'spam' => 'spam', 'trash' => 'trash', 'post-trashed' => 'post-trashed'); + foreach ( (array) $count as $row ) { + // Don't count post-trashed toward totals + if ( 'post-trashed' != $row['comment_approved'] && 'trash' != $row['comment_approved'] ) + $total += $row['num_comments']; + if ( isset( $approved[$row['comment_approved']] ) ) + $stats[$approved[$row['comment_approved']]] = $row['num_comments']; + } + + $stats['total_comments'] = $total; + foreach ( $approved as $key ) { + if ( empty($stats[$key]) ) + $stats[$key] = 0; + } + + $stats = (object) $stats; + wp_cache_set("comments-{$post_id}", $stats, 'counts'); + + return $stats; +} + +/** + * 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 post comment count will be updated if the comment was approved and has a + * post ID available. + * + * @since 2.0.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param int $comment_id Comment ID + * @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; + if (!$comment = get_comment($comment_id)) + return false; + + if ( !$force_delete && EMPTY_TRASH_DAYS && !in_array( wp_get_comment_status($comment_id), array( 'trash', 'spam' ) ) ) + return wp_trash_comment($comment_id); + + /** + * Fires immediately before a comment is deleted from the database. + * + * @since 1.2.0 + * + * @param int $comment_id The comment ID. + */ + do_action( 'delete_comment', $comment_id ); + + // Move children up a level. + $children = $wpdb->get_col( $wpdb->prepare("SELECT comment_ID FROM $wpdb->comments WHERE comment_parent = %d", $comment_id) ); + if ( !empty($children) ) { + $wpdb->update($wpdb->comments, array('comment_parent' => $comment->comment_parent), array('comment_parent' => $comment_id)); + clean_comment_cache($children); + } + + // Delete metadata + $meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->commentmeta WHERE comment_id = %d", $comment_id ) ); + foreach ( $meta_ids as $mid ) + delete_metadata_by_mid( 'comment', $mid ); + + if ( ! $wpdb->delete( $wpdb->comments, array( 'comment_ID' => $comment_id ) ) ) + return false; + + /** + * Fires immediately after a comment is deleted from the database. + * + * @since 2.9.0 + * + * @param int $comment_id The comment ID. + */ + do_action( 'deleted_comment', $comment_id ); + + $post_id = $comment->comment_post_ID; + if ( $post_id && $comment->comment_approved == 1 ) + wp_update_comment_count($post_id); + + clean_comment_cache($comment_id); + + /** This action is documented in wp-includes/comment.php */ + do_action( 'wp_set_comment_status', $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. + * + * @since 2.9.0 + * + * @param int $comment_id Comment ID. + * @return bool True on success, false on failure. + */ +function wp_trash_comment($comment_id) { + if ( !EMPTY_TRASH_DAYS ) + return wp_delete_comment($comment_id, true); + + if ( !$comment = get_comment($comment_id) ) + return false; + + /** + * Fires immediately before a comment is sent to the Trash. + * + * @since 2.9.0 + * + * @param int $comment_id The comment ID. + */ + do_action( 'trash_comment', $comment_id ); + + if ( wp_set_comment_status($comment_id, 'trash') ) { + add_comment_meta($comment_id, '_wp_trash_meta_status', $comment->comment_approved); + add_comment_meta($comment_id, '_wp_trash_meta_time', time() ); + + /** + * Fires immediately after a comment is sent to Trash. + * + * @since 2.9.0 + * + * @param int $comment_id The comment ID. + */ + do_action( 'trashed_comment', $comment_id ); + return true; + } + + return false; +} + +/** + * Removes a comment from the Trash + * + * @since 2.9.0 + * + * @param int $comment_id Comment ID. + * @return bool True on success, false on failure. + */ +function wp_untrash_comment($comment_id) { + if ( ! (int)$comment_id ) + return false; + + /** + * Fires immediately before a comment is restored from the Trash. + * + * @since 2.9.0 + * + * @param int $comment_id The comment ID. + */ + do_action( 'untrash_comment', $comment_id ); + + $status = (string) get_comment_meta($comment_id, '_wp_trash_meta_status', true); + if ( empty($status) ) + $status = '0'; + + if ( wp_set_comment_status($comment_id, $status) ) { + delete_comment_meta($comment_id, '_wp_trash_meta_time'); + delete_comment_meta($comment_id, '_wp_trash_meta_status'); + /** + * Fires immediately after a comment is restored from the Trash. + * + * @since 2.9.0 + * + * @param int $comment_id The comment ID. + */ + do_action( 'untrashed_comment', $comment_id ); + return true; + } + + return false; +} + +/** + * Marks a comment as Spam + * + * @since 2.9.0 + * + * @param int $comment_id Comment ID. + * @return bool True on success, false on failure. + */ +function wp_spam_comment($comment_id) { + if ( !$comment = get_comment($comment_id) ) + return false; + + /** + * Fires immediately before a comment is marked as Spam. + * + * @since 2.9.0 + * + * @param int $comment_id The comment ID. + */ + do_action( 'spam_comment', $comment_id ); + + if ( wp_set_comment_status($comment_id, 'spam') ) { + add_comment_meta($comment_id, '_wp_trash_meta_status', $comment->comment_approved); + /** + * Fires immediately after a comment is marked as Spam. + * + * @since 2.9.0 + * + * @param int $comment_id The comment ID. + */ + do_action( 'spammed_comment', $comment_id ); + return true; + } + + return false; +} + +/** + * Removes a comment from the Spam + * + * @since 2.9.0 + * + * @param int $comment_id Comment ID. + * @return bool True on success, false on failure. + */ +function wp_unspam_comment($comment_id) { + if ( ! (int)$comment_id ) + return false; + + /** + * Fires immediately before a comment is unmarked as Spam. + * + * @since 2.9.0 + * + * @param int $comment_id The comment ID. + */ + do_action( 'unspam_comment', $comment_id ); + + $status = (string) get_comment_meta($comment_id, '_wp_trash_meta_status', true); + if ( empty($status) ) + $status = '0'; + + if ( wp_set_comment_status($comment_id, $status) ) { + delete_comment_meta($comment_id, '_wp_trash_meta_status'); + /** + * Fires immediately after a comment is unmarked as Spam. + * + * @since 2.9.0 + * + * @param int $comment_id The comment ID. + */ + do_action( 'unspammed_comment', $comment_id ); + return true; + } + + return false; +} + +/** + * The status of a comment by ID. + * + * @since 1.0.0 + * + * @param int $comment_id Comment ID + * @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); + if ( !$comment ) + return false; + + $approved = $comment->comment_approved; + + if ( $approved == null ) + return false; + elseif ( $approved == '1' ) + return 'approved'; + elseif ( $approved == '0' ) + return 'unapproved'; + elseif ( $approved == 'spam' ) + return 'spam'; + elseif ( $approved == 'trash' ) + return 'trash'; + else + return false; +} + +/** + * 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 + * 'transition_comment_status' with new status, old status, and comment data. The + * next action called is 'comment_OLDSTATUS_to_NEWSTATUS' the NEWSTATUS is the + * $new_status parameter and the OLDSTATUS is $old_status parameter; it has the + * comment data. + * + * The final action will run whether or not the comment statuses are the same. The + * action is named 'comment_NEWSTATUS_COMMENTTYPE', NEWSTATUS is from the $new_status + * parameter and COMMENTTYPE is comment_type comment data. + * + * @since 2.7.0 + * + * @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. + * This is not a complete list of comment status, it's only the ones + * that need to be renamed + */ + $comment_statuses = array( + 0 => 'unapproved', + 'hold' => 'unapproved', // wp_set_comment_status() uses "hold" + 1 => 'approved', + 'approve' => 'approved', // wp_set_comment_status() uses "approve" + ); + if ( isset($comment_statuses[$new_status]) ) $new_status = $comment_statuses[$new_status]; + if ( isset($comment_statuses[$old_status]) ) $old_status = $comment_statuses[$old_status]; + + // Call the hooks + if ( $new_status != $old_status ) { + /** + * Fires when the comment status is in transition. + * + * @since 2.7.0 + * + * @param int|string $new_status The new comment status. + * @param int|string $old_status The old comment status. + * @param object $comment The comment data. + */ + do_action( 'transition_comment_status', $new_status, $old_status, $comment ); + /** + * Fires when the comment status is in transition from one specific status to another. + * + * The dynamic portions of the hook name, `$old_status`, and `$new_status`, + * refer to the old and new comment statuses, respectively. + * + * @since 2.7.0 + * + * @param object $comment Comment object. + */ + do_action( "comment_{$old_status}_to_{$new_status}", $comment ); + } + /** + * Fires when the status of a specific comment type is in transition. + * + * 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 an empty string (standard comment), 'pingback', + * or 'trackback'. + * + * @since 2.7.0 + * + * @param int $comment_ID The comment ID. + * @param obj $comment Comment object. + */ + do_action( "comment_{$new_status}_{$comment->comment_type}", $comment->comment_ID, $comment ); +} + +/** + * 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 Comment author, email, url respectively. + */ +function wp_get_current_commenter() { + // Cookies should already be sanitized. + + $comment_author = ''; + if ( isset($_COOKIE['comment_author_'.COOKIEHASH]) ) + $comment_author = $_COOKIE['comment_author_'.COOKIEHASH]; + + $comment_author_email = ''; + if ( isset($_COOKIE['comment_author_email_'.COOKIEHASH]) ) + $comment_author_email = $_COOKIE['comment_author_email_'.COOKIEHASH]; + + $comment_author_url = ''; + if ( isset($_COOKIE['comment_author_url_'.COOKIEHASH]) ) + $comment_author_url = $_COOKIE['comment_author_url_'.COOKIEHASH]; + + /** + * Filter the current commenter's name, email, and URL. + * + * @since 3.1.0 + * + * @param string $comment_author Comment author's name. + * @param string $comment_author_email Comment author's email. + * @param string $comment_author_url Comment author's URL. + */ + return apply_filters( 'wp_get_current_commenter', compact('comment_author', 'comment_author_email', 'comment_author_url') ); +} + +/** + * Inserts a comment into the database. + * + * @since 2.0.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param array $commentdata { + * Array of arguments for inserting a new comment. + * + * @type string $comment_agent The HTTP user agent of the `$comment_author` when + * the comment was submitted. Default empty. + * @type int|string $comment_approved Whether the comment has been approved. Default 1. + * @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_IP The IP address of the `$comment_author`. Default empty. + * @type string $comment_author_url The URL address of the `$comment_author`. Default empty. + * @type string $comment_content The content of the comment. Default empty. + * @type string $comment_date The date the comment was submitted. To set the date + * manually, `$comment_date_gmt` must also be specified. + * 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 site's GMT timezone. + * @type int $comment_karma The karma of the comment. Default 0. + * @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 empty. + * @type string $comment_type Comment type. Default empty. + * @type int $user_id ID of the user who submitted the comment. Default 0. + * } + * @return int|false The new comment's ID on success, false on failure. + */ +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_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'] ) ? '' : $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 = ! 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 = 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; + } + + $id = (int) $wpdb->insert_id; + + if ( $comment_approved == 1 ) { + wp_update_comment_count( $comment_post_ID ); + } + $comment = get_comment( $id ); + + /** + * Fires immediately after a comment is inserted into the database. + * + * @since 2.8.0 + * + * @param int $id The comment ID. + * @param obj $comment Comment object. + */ + do_action( 'wp_insert_comment', $id, $comment ); + + wp_cache_set( 'last_changed', microtime(), 'comment' ); + + return $id; +} + +/** + * Filters and sanitizes comment data. + * + * Sets the comment data 'filtered' field to true when finished. This can be + * checked as to whether the comment should be filtered and to keep from + * filtering the same comment more than once. + * + * @since 2.0.0 + * + * @param array $commentdata Contains information on the comment. + * @return array Parsed comment information. + */ +function wp_filter_comment($commentdata) { + if ( isset( $commentdata['user_ID'] ) ) { + /** + * Filter 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. + * + * @since 1.5.0 + * + * @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'] ) ) { + /** This filter is documented in wp-includes/comment.php */ + $commentdata['user_id'] = apply_filters( 'pre_user_id', $commentdata['user_id'] ); + } + + /** + * Filter the comment author's browser user agent before it is set. + * + * @since 1.5.0 + * + * @param int $comment_agent The comment author's browser user agent. + */ + $commentdata['comment_agent'] = apply_filters( 'pre_comment_user_agent', ( isset( $commentdata['comment_agent'] ) ? $commentdata['comment_agent'] : '' ) ); + /** This filter is documented in wp-includes/comment.php */ + $commentdata['comment_author'] = apply_filters( 'pre_comment_author_name', $commentdata['comment_author'] ); + /** + * Filter the comment content before it is set. + * + * @since 1.5.0 + * + * @param int $comment_content The comment content. + */ + $commentdata['comment_content'] = apply_filters( 'pre_comment_content', $commentdata['comment_content'] ); + /** + * Filter the comment author's IP before it is set. + * + * @since 1.5.0 + * + * @param int $comment_author_ip The comment author's IP. + */ + $commentdata['comment_author_IP'] = apply_filters( 'pre_comment_user_ip', $commentdata['comment_author_IP'] ); + /** This filter is documented in wp-includes/comment.php */ + $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; + return $commentdata; +} + +/** + * Whether a comment should be blocked because of comment flood. + * + * @since 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. + * @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 + return $block; + if ( ($time_newcomment - $time_lastcomment) < 15 ) + return true; + return false; +} + +/** + * Adds a new comment to the database. + * + * Filters new comment to ensure that the fields are sanitized and valid before + * inserting comment into database. Calls 'comment_post' action with comment ID + * and whether comment is approved by WordPress. Also has '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 + * that it is properly set, such as in wp-config.php, for your environment. + * See {@link https://core.trac.wordpress.org/ticket/9235} + * + * @since 1.5.0 + * @since 4.3.0 'comment_agent' and 'comment_author_IP' can be set via `$commentdata`. + * + * @see wp_insert_comment() + * + * @global wpdb $wpdb + * + * @param array $commentdata Contains information on the comment. See wp_insert_comment() + * for information on accepted arguments. + * @return int|false The ID of the comment on success, false on failure. + */ +function wp_new_comment( $commentdata ) { + global $wpdb; + + if ( isset( $commentdata['user_ID'] ) ) { + $commentdata['user_id'] = $commentdata['user_ID'] = (int) $commentdata['user_ID']; + } + + $prefiltered_user_id = ( isset( $commentdata['user_id'] ) ) ? (int) $commentdata['user_id'] : 0; + + /** + * Filter a comment's data before it is sanitized and inserted into the database. + * + * @since 1.5.0 + * + * @param array $commentdata Comment data. + */ + $commentdata = apply_filters( 'preprocess_comment', $commentdata ); + + $commentdata['comment_post_ID'] = (int) $commentdata['comment_post_ID']; + if ( isset( $commentdata['user_ID'] ) && $prefiltered_user_id !== (int) $commentdata['user_ID'] ) { + $commentdata['user_id'] = $commentdata['user_ID'] = (int) $commentdata['user_ID']; + } elseif ( isset( $commentdata['user_id'] ) ) { + $commentdata['user_id'] = (int) $commentdata['user_id']; + } + + $commentdata['comment_parent'] = isset($commentdata['comment_parent']) ? absint($commentdata['comment_parent']) : 0; + $parent_status = ( 0 < $commentdata['comment_parent'] ) ? wp_get_comment_status($commentdata['comment_parent']) : ''; + $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'] ) ) { + $commentdata['comment_date'] = current_time('mysql'); + } + + if ( empty( $commentdata['comment_date_gmt'] ) ) { + $commentdata['comment_date_gmt'] = current_time( 'mysql', 1 ); + } + + $commentdata = wp_filter_comment($commentdata); + + $commentdata['comment_approved'] = wp_allow_comment($commentdata); + + $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 ) { + if ( isset( $commentdata[ $field ] ) ) { + $commentdata[ $field ] = $wpdb->strip_invalid_text_for_column( $wpdb->comments, $field, $commentdata[ $field ] ); + } + } + + $commentdata = wp_filter_comment( $commentdata ); + + $commentdata['comment_approved'] = wp_allow_comment( $commentdata ); + + $comment_ID = wp_insert_comment( $commentdata ); + if ( ! $comment_ID ) { + return false; + } + } + + /** + * Fires immediately after a comment is inserted into the database. + * + * @since 1.2.0 + * + * @param int $comment_ID The comment ID. + * @param int $comment_approved 1 (true) if the comment is approved, 0 (false) if not. + */ + do_action( 'comment_post', $comment_ID, $commentdata['comment_approved'] ); + + if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching + if ( '0' == $commentdata['comment_approved'] ) { + wp_notify_moderator( $comment_ID ); + } + + // wp_notify_postauthor() checks if notifying the author of their own comment. + // By default, it won't, but filters can override this. + if ( get_option( 'comments_notify' ) && $commentdata['comment_approved'] ) { + wp_notify_postauthor( $comment_ID ); + } + } + + return $comment_ID; +} + +/** + * Sets the status of a comment. + * + * The 'wp_set_comment_status' action is called after the comment is handled. + * If the comment status is not in the list, then false is returned. + * + * @since 1.0.0 + * + * global wpdb $wpdb + * + * @param int $comment_id Comment ID. + * @param string $comment_status New comment status, either 'hold', 'approve', 'spam', or 'trash'. + * @param bool $wp_error Whether to return a WP_Error object if there is a failure. Default is false. + * @return bool|WP_Error True on success, false or WP_Error on failure. + */ +function wp_set_comment_status($comment_id, $comment_status, $wp_error = false) { + global $wpdb; + + switch ( $comment_status ) { + case 'hold': + case '0': + $status = '0'; + break; + case 'approve': + case '1': + $status = '1'; + if ( get_option('comments_notify') ) { + wp_notify_postauthor( $comment_id ); + } + break; + case 'spam': + $status = 'spam'; + break; + case 'trash': + $status = 'trash'; + break; + default: + return false; + } + + $comment_old = clone get_comment($comment_id); + + if ( !$wpdb->update( $wpdb->comments, array('comment_approved' => $status), array('comment_ID' => $comment_id) ) ) { + if ( $wp_error ) + return new WP_Error('db_update_error', __('Could not update comment status'), $wpdb->last_error); + else + return false; + } + + clean_comment_cache($comment_id); + + $comment = get_comment($comment_id); + + /** + * Fires immediately before transitioning a comment's status from one to another + * in the database. + * + * @since 1.5.0 + * + * @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_id, $comment_status ); + + wp_transition_comment_status($comment_status, $comment_old->comment_approved, $comment); + + wp_update_comment_count($comment->comment_post_ID); + + return true; +} + +/** + * Updates an existing comment in the database. + * + * Filters the comment and makes sure certain fields are valid before updating. + * + * @since 2.0.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param array $commentarr Contains information on the comment. + * @return int Comment was updated if value is 1, or was not updated if value is 0. + */ +function wp_update_comment($commentarr) { + global $wpdb; + + // First, get all of the original fields + $comment = get_comment($commentarr['comment_ID'], ARRAY_A); + if ( empty( $comment ) ) { + return 0; + } + + // Make sure that the comment post ID is valid (if specified). + if ( isset( $commentarr['comment_post_ID'] ) && ! get_post( $commentarr['comment_post_ID'] ) ) { + return 0; + } + + // Escape data pulled from DB. + $comment = wp_slash($comment); + + $old_status = $comment['comment_approved']; + + // Merge old and new fields with new fields overwriting old ones. + $commentarr = array_merge($comment, $commentarr); + + $commentarr = wp_filter_comment( $commentarr ); + + // Now extract the merged array. + $data = wp_unslash( $commentarr ); + + /** + * Filter the comment content before it is updated in the database. + * + * @since 1.5.0 + * + * @param string $comment_content The comment data. + */ + $data['comment_content'] = apply_filters( 'comment_save_pre', $data['comment_content'] ); + + $data['comment_date_gmt'] = get_gmt_from_date( $data['comment_date'] ); + + if ( ! isset( $data['comment_approved'] ) ) { + $data['comment_approved'] = 1; + } elseif ( 'hold' == $data['comment_approved'] ) { + $data['comment_approved'] = 0; + } elseif ( 'approve' == $data['comment_approved'] ) { + $data['comment_approved'] = 1; + } + + $comment_ID = $data['comment_ID']; + $comment_post_ID = $data['comment_post_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' ); + $data = wp_array_slice_assoc( $data, $keys ); + $rval = $wpdb->update( $wpdb->comments, $data, compact( 'comment_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 + * + * @param int $comment_ID The comment ID. + */ + do_action( 'edit_comment', $comment_ID ); + $comment = get_comment($comment_ID); + wp_transition_comment_status($comment->comment_approved, $old_status, $comment); + return $rval; +} + +/** + * 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 + * @staticvar bool $_defer + * + * @param bool $defer + * @return bool + */ +function wp_defer_comment_counting($defer=null) { + static $_defer = false; + + if ( is_bool($defer) ) { + $_defer = $defer; + // flush any deferred counts + if ( !$defer ) + wp_update_comment_count( null, true ); + } + + return $_defer; +} + +/** + * Updates the comment count for post(s). + * + * When $do_deferred is false (is by default) and the comments have been set to + * be deferred, the post_id will be added to a queue, which will be updated at a + * later date and only updated once per post ID. + * + * If the comments have not be set up to be deferred, then the post will be + * 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 + * @see wp_update_comment_count_now() For what could cause a false return value + * + * @staticvar array $_deferred + * + * @param int $post_id Post ID + * @param bool $do_deferred Whether to process previously deferred post comment counts + * @return bool|void True on success, false on failure + */ +function wp_update_comment_count($post_id, $do_deferred=false) { + static $_deferred = array(); + + if ( $do_deferred ) { + $_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 */ + } + } + + if ( wp_defer_comment_counting() ) { + $_deferred[] = $post_id; + return true; + } + elseif ( $post_id ) { + return wp_update_comment_count_now($post_id); + } + +} + +/** + * Updates the comment count for the post. + * + * @since 2.5.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param int $post_id Post ID + * @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; + if ( !$post = get_post($post_id) ) + return false; + + $old = (int) $post->comment_count; + $new = (int) $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1'", $post_id) ); + $wpdb->update( $wpdb->posts, array('comment_count' => $new), array('ID' => $post_id) ); + + clean_post_cache( $post ); + + /** + * Fires immediately after a post's comment count is updated in the database. + * + * @since 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_id, $post ); + + return true; +} + +// +// Ping and trackback functions. +// + +/** + * 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. + * + * @since 1.5.0 + * + * @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' ); + + $pingback_str_dquote = 'rel="pingback"'; + $pingback_str_squote = 'rel=\'pingback\''; + + /** @todo Should use Filter Extension or custom preg_match instead. */ + $parsed_url = parse_url($url); + + if ( ! isset( $parsed_url['host'] ) ) // Not an URL. This should never happen. + return false; + + //Do not search for a pingback server on our own uploads + $uploads_dir = wp_upload_dir(); + if ( 0 === strpos($url, $uploads_dir['baseurl']) ) + return false; + + $response = wp_safe_remote_head( $url, array( 'timeout' => 2, 'httpversion' => '1.0' ) ); + + if ( is_wp_error( $response ) ) + return false; + + 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' )) ) + 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) + $response = wp_safe_remote_get( $url, array( 'timeout' => 2, 'httpversion' => '1.0' ) ); + + if ( is_wp_error( $response ) ) + return false; + + $contents = wp_remote_retrieve_body( $response ); + + $pingback_link_offset_dquote = strpos($contents, $pingback_str_dquote); + $pingback_link_offset_squote = strpos($contents, $pingback_str_squote); + if ( $pingback_link_offset_dquote || $pingback_link_offset_squote ) { + $quote = ($pingback_link_offset_dquote) ? '"' : '\''; + $pingback_link_offset = ($quote=='"') ? $pingback_link_offset_dquote : $pingback_link_offset_squote; + $pingback_href_pos = @strpos($contents, 'href=', $pingback_link_offset); + $pingback_href_start = $pingback_href_pos+6; + $pingback_href_end = @strpos($contents, $quote, $pingback_href_start); + $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 + if ( $pingback_server_url_len > 0 ) { // We got it! + return $pingback_server_url; + } + } + + return false; +} + +/** + * Perform all pingbacks, enclosures, trackbacks, and send to pingback services. + * + * @since 2.1.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + */ +function do_all_pings() { + global $wpdb; + + // Do pingbacks + while ($ping = $wpdb->get_row("SELECT ID, post_content, meta_id FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) { + delete_metadata_by_mid( 'post', $ping->meta_id ); + pingback( $ping->post_content, $ping->ID ); + } + + // Do Enclosures + while ($enclosure = $wpdb->get_row("SELECT ID, post_content, meta_id FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) { + delete_metadata_by_mid( 'post', $enclosure->meta_id ); + do_enclose( $enclosure->post_content, $enclosure->ID ); + } + + // Do Trackbacks + $trackbacks = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE to_ping <> '' AND post_status = 'publish'"); + if ( is_array($trackbacks) ) + foreach ( $trackbacks as $trackback ) + do_trackbacks($trackback); + + //Do Update Services/Generic Pings + generic_ping(); +} + +/** + * Perform trackbacks. + * + * @since 1.5.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param int $post_id Post ID to do trackbacks on. + */ +function do_trackbacks($post_id) { + global $wpdb; + + $post = get_post( $post_id ); + $to_ping = get_to_ping($post_id); + $pinged = get_pung($post_id); + if ( empty($to_ping) ) { + $wpdb->update($wpdb->posts, array('to_ping' => ''), array('ID' => $post_id) ); + return; + } + + if ( empty($post->post_excerpt) ) { + /** This filter is documented in wp-includes/post-template.php */ + $excerpt = apply_filters( 'the_content', $post->post_content, $post->ID ); + } else { + /** This filter is documented in wp-includes/post-template.php */ + $excerpt = apply_filters( 'the_excerpt', $post->post_excerpt ); + } + + $excerpt = str_replace(']]>', ']]>', $excerpt); + $excerpt = wp_html_excerpt($excerpt, 252, '…'); + + /** This filter is documented in wp-includes/post-template.php */ + $post_title = apply_filters( 'the_title', $post->post_title, $post->ID ); + $post_title = strip_tags($post_title); + + if ( $to_ping ) { + foreach ( (array) $to_ping as $tb_ping ) { + $tb_ping = trim($tb_ping); + if ( !in_array($tb_ping, $pinged) ) { + trackback($tb_ping, $post_title, $excerpt, $post_id); + $pinged[] = $tb_ping; + } else { + $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s, '')) WHERE ID = %d", $tb_ping, $post_id) ); + } + } + } +} + +/** + * Sends pings to all of the ping site services. + * + * @since 1.2.0 + * + * @param int $post_id Post ID. + * @return int Same as Post ID from parameter + */ +function generic_ping( $post_id = 0 ) { + $services = get_option('ping_sites'); + + $services = explode("\n", $services); + foreach ( (array) $services as $service ) { + $service = trim($service); + if ( '' != $service ) + weblog_ping($service); + } + + return $post_id; +} + +/** + * Pings back the links found in a post. + * + * @since 0.71 + * + * @global string $wp_version + * + * @param string $content Post content to check for links. + * @param int $post_ID Post ID. + */ +function pingback($content, $post_ID) { + global $wp_version; + 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) + $post_links = array(); + + $pung = get_pung($post_ID); + + // Step 1 + // Parsing the post, external links (if any) are stored in the $post_links array + $post_links_temp = wp_extract_urls( $content ); + + // Step 2. + // Walking thru the links array + // first we get rid of links pointing to sites, not to specific files + // Example: + // http://dummy-weblog.org + // http://dummy-weblog.org/ + // http://dummy-weblog.org/post.php + // We don't wanna ping first and second types, even if they have a valid + + foreach ( (array) $post_links_temp as $link_test ) : + if ( !in_array($link_test, $pung) && (url_to_postid($link_test) != $post_ID) // If we haven't pung it already and it isn't a link to itself + && !is_local_attachment($link_test) ) : // Also, let's never ping local attachments. + if ( $test = @parse_url($link_test) ) { + if ( isset($test['query']) ) + $post_links[] = $link_test; + elseif ( isset( $test['path'] ) && ( $test['path'] != '/' ) && ( $test['path'] != '' ) ) + $post_links[] = $link_test; + } + endif; + endforeach; + + $post_links = array_unique( $post_links ); + /** + * Fires just before pinging back links found in a post. + * + * @since 2.0.0 + * + * @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 ) ); + + foreach ( (array) $post_links as $pagelinkedto ) { + $pingback_server_url = discover_pingback_server_uri( $pagelinkedto ); + + if ( $pingback_server_url ) { + @ set_time_limit( 60 ); + // Now, the RPC call + $pagelinkedfrom = get_permalink($post_ID); + + // 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; + /** + * Filter the user agent sent when pinging-back a URL. + * + * @since 2.9.0 + * + * @param string $concat_useragent The user agent concatenated with ' -- WordPress/' + * and the 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/' . $wp_version, $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 + add_ping( $post_ID, $pagelinkedto ); + } + } +} + +/** + * Check whether blog is public before returning sites. + * + * @since 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. + */ +function privacy_ping_filter($sites) { + if ( '0' != get_option('blog_public') ) + return $sites; + else + return ''; +} + +/** + * Send a Trackback. + * + * Updates database when sending trackback to prevent duplicates. + * + * @since 0.71 + * + * @global wpdb $wpdb WordPress 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. + * @return int|false|void Database query from update. + */ +function trackback($trackback_url, $title, $excerpt, $ID) { + global $wpdb; + + if ( empty($trackback_url) ) + return; + + $options = array(); + $options['timeout'] = 4; + $options['body'] = array( + 'title' => $title, + 'url' => get_permalink($ID), + 'blog_name' => get_option('blogname'), + 'excerpt' => $excerpt + ); + + $response = wp_safe_remote_post( $trackback_url, $options ); + + if ( is_wp_error( $response ) ) + return; + + $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET pinged = CONCAT(pinged, '\n', %s) WHERE ID = %d", $trackback_url, $ID) ); + return $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s, '')) WHERE ID = %d", $trackback_url, $ID) ); +} + +/** + * Send a pingback. + * + * @since 1.2.0 + * + * @global string $wp_version + * + * @param string $server Host of blog to connect to. + * @param string $path Path to send the ping. + */ +function weblog_ping($server = '', $path = '') { + global $wp_version; + include_once(ABSPATH . WPINC . '/class-IXR.php'); + include_once(ABSPATH . WPINC . '/class-wp-http-ixr-client.php'); + + // 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/'.$wp_version; + + // 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 + $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 + * @see wp_http_validate_url() + * + * @param string $source_uri + * @return string + */ +function pingback_ping_source_uri( $source_uri ) { + return (string) wp_http_validate_url( $source_uri ); +} + +/** + * Default filter attached to xmlrpc_pingback_error. + * + * Returns a generic pingback error code unless the error code is 48, + * which reports that the pingback is already registered. + * + * @since 3.5.1 + * @link http://www.hixie.ch/specs/pingback/pingback#TOC3 + * + * @param IXR_Error $ixr_error + * @return IXR_Error + */ +function xmlrpc_pingback_error( $ixr_error ) { + if ( $ixr_error->code === 48 ) + return $ixr_error; + return new IXR_Error( 0, '' ); +} + +// +// Cache +// + +/** + * Removes comment ID from the comment cache. + * + * @since 2.3.0 + * + * @param int|array $ids Comment ID or array of comment IDs to remove from cache + */ +function clean_comment_cache($ids) { + foreach ( (array) $ids as $id ) + wp_cache_delete($id, 'comment'); + + wp_cache_set( 'last_changed', microtime(), 'comment' ); +} + +/** + * Updates the comment cache of given comments. + * + * Will add the comments in $comments to the cache. If comment ID already exists + * 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 + * + * @param array $comments Array of comment row objects + */ +function update_comment_cache($comments) { + foreach ( (array) $comments as $comment ) + wp_cache_add($comment->comment_ID, $comment, 'comment'); +} + +// +// Internal +// + +/** + * Close comments on old posts on the fly, without any extra DB queries. Hooked to the_posts. + * + * @access private + * @since 2.7.0 + * + * @param WP_Post $posts Post data object. + * @param WP_Query $query Query object. + * @return array + */ +function _close_comments_for_old_posts( $posts, $query ) { + if ( empty( $posts ) || ! $query->is_singular() || ! get_option( 'close_comments_for_old_posts' ) ) + return $posts; + + /** + * Filter the list of post types to automatically close comments for. + * + * @since 3.2.0 + * + * @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 ) ) + return $posts; + + $days_old = (int) get_option( 'close_comments_days_old' ); + if ( ! $days_old ) + return $posts; + + if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) ) { + $posts[0]->comment_status = 'closed'; + $posts[0]->ping_status = 'closed'; + } + + return $posts; +} + +/** + * Close comments on an old post. Hooked to comments_open and pings_open. + * + * @access private + * @since 2.7.0 + * + * @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 ) { + if ( ! $open ) + return $open; + + if ( !get_option('close_comments_for_old_posts') ) + return $open; + + $days_old = (int) get_option('close_comments_days_old'); + if ( !$days_old ) + return $open; + + $post = get_post($post_id); + + /** This filter is documented in wp-includes/comment.php */ + $post_types = apply_filters( 'close_comments_for_post_types', array( 'post' ) ); + if ( ! in_array( $post->post_type, $post_types ) ) + return $open; + + if ( time() - strtotime( $post->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) ) + return false; + + return $open; +} diff --git a/wp-includes/compat.php b/wp-includes/compat.php new file mode 100644 index 0000000000..553faeb1d8 --- /dev/null +++ b/wp-includes/compat.php @@ -0,0 +1,262 @@ + 1 && $str = array_pop( $pieces ) ); // If there's anything left over, repeat the loop. + + return join( '', array_slice( $chars, $start, $length ) ); +} + +if ( ! function_exists( 'mb_strlen' ) ) : + function mb_strlen( $str, $encoding = null ) { + return _mb_strlen( $str, $encoding ); + } +endif; + +/* + * 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. + */ +function _mb_strlen( $str, $encoding = null ) { + if ( null === $encoding ) { + $encoding = get_option( 'blog_charset' ); + } + + // The solution below works only for UTF-8, + // so in case of a different charset just use built-in strlen() + if ( ! in_array( $encoding, array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) ) { + return strlen( $str ); + } + + if ( _wp_can_use_pcre_u() ) { + // Use the regex unicode support to separate the UTF-8 characters into an array + preg_match_all( '/./us', $str, $match ); + return count( $match[0] ); + } + + $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} + | \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3 + | [\xF1-\xF3][\x80-\xBF]{3} + | \xF4[\x80-\x8F][\x80-\xBF]{2} + )/x'; + + $count = 1; // Start at 1 instead of 0 since the first thing we do is decrement + do { + // We had some string left over from the last round, but we counted it in that last round. + $count--; + + // Split by UTF-8 character, limit to 1000 characters (last array element will contain the rest of the string) + $pieces = preg_split( $regex, $str, 1000 ); + + // Increment + $count += count( $pieces ); + } while ( $str = array_pop( $pieces ) ); // If there's anything left over, repeat the loop. + + // Fencepost: preg_split() always returns one extra item in the array + return --$count; +} + +if ( !function_exists('hash_hmac') ): +function hash_hmac($algo, $data, $key, $raw_output = false) { + return _hash_hmac($algo, $data, $key, $raw_output); +} +endif; + +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' ) ) : +/** + * Compare two strings in constant time. + * + * This function was added in PHP 5.6. + * It can leak the length of a string. + * + * @since 3.9.2 + * + * @param string $a Expected string. + * @param string $b Actual string. + * @return bool Whether strings are equal. + */ +function hash_equals( $a, $b ) { + $a_length = strlen( $a ); + if ( $a_length !== strlen( $b ) ) { + return false; + } + $result = 0; + + // Do not attempt to "optimize" this. + for ( $i = 0; $i < $a_length; $i++ ) { + $result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] ); + } + + return $result === 0; +} +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 ); +} diff --git a/wp-includes/cron.php b/wp-includes/cron.php new file mode 100644 index 0000000000..8b88c1220b --- /dev/null +++ b/wp-includes/cron.php @@ -0,0 +1,469 @@ + $hook, 'timestamp' => $timestamp, 'schedule' => false, 'args' => $args ); + /** + * Filter a single event before it is scheduled. + * + * @since 3.1.0 + * + * @param object $event An object containing an event's data. + */ + $event = apply_filters( 'schedule_event', $event ); + + // A plugin disallowed this event + if ( ! $event ) + return false; + + $key = md5(serialize($event->args)); + + $crons[$event->timestamp][$event->hook][$key] = array( 'schedule' => $event->schedule, 'args' => $event->args ); + uksort( $crons, "strnatcasecmp" ); + _set_cron_array( $crons ); +} + +/** + * Schedule a periodic event. + * + * Schedules a hook which will be executed by the WordPress actions core on a + * specific interval, specified by you. The action will trigger when someone + * visits your WordPress site, if the scheduled time has passed. + * + * Valid values for the recurrence are hourly, daily and twicedaily. These can + * be extended using the cron_schedules filter in wp_get_schedules(). + * + * Use wp_next_scheduled() to prevent duplicates + * + * @since 2.1.0 + * + * @param int $timestamp Timestamp for when to run the event. + * @param string $recurrence How often the event should recur. + * @param string $hook Action hook to execute when cron is run. + * @param array $args Optional. Arguments to pass to the hook's callback function. + * @return false|void False when does not schedule event. + */ +function wp_schedule_event( $timestamp, $recurrence, $hook, $args = array()) { + $crons = _get_cron_array(); + $schedules = wp_get_schedules(); + + if ( !isset( $schedules[$recurrence] ) ) + return false; + + $event = (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $recurrence, 'args' => $args, 'interval' => $schedules[$recurrence]['interval'] ); + /** This filter is documented in wp-includes/cron.php */ + $event = apply_filters( 'schedule_event', $event ); + + // A plugin disallowed this event + if ( ! $event ) + return false; + + $key = md5(serialize($event->args)); + + $crons[$event->timestamp][$event->hook][$key] = array( 'schedule' => $event->schedule, 'args' => $event->args, 'interval' => $event->interval ); + uksort( $crons, "strnatcasecmp" ); + _set_cron_array( $crons ); +} + +/** + * Reschedule a recurring event. + * + * @since 2.1.0 + * + * @param int $timestamp Timestamp for when to run the event. + * @param string $recurrence How often the event should recur. + * @param string $hook Action hook to execute when cron is run. + * @param array $args Optional. Arguments to pass to the hook's callback function. + * @return false|void False when does not schedule event. + */ +function wp_reschedule_event( $timestamp, $recurrence, $hook, $args = array() ) { + $crons = _get_cron_array(); + $schedules = wp_get_schedules(); + $key = md5( serialize( $args ) ); + $interval = 0; + + // 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 ) { + $interval = $crons[ $timestamp ][ $hook ][ $key ]['interval']; + } + // Now we assume something is wrong and fail to schedule + if ( 0 == $interval ) { + return false; + } + + $now = time(); + + if ( $timestamp >= $now ) { + $timestamp = $now + $interval; + } else { + $timestamp = $now + ( $interval - ( ( $now - $timestamp ) % $interval ) ); + } + + wp_schedule_event( $timestamp, $recurrence, $hook, $args ); +} + +/** + * Unschedule a previously scheduled cron job. + * + * The $timestamp and $hook parameters are required, so that the event can be + * identified. + * + * @since 2.1.0 + * + * @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. + * 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. + */ +function wp_unschedule_event( $timestamp, $hook, $args = array() ) { + $crons = _get_cron_array(); + $key = md5(serialize($args)); + unset( $crons[$timestamp][$hook][$key] ); + if ( empty($crons[$timestamp][$hook]) ) + unset( $crons[$timestamp][$hook] ); + if ( empty($crons[$timestamp]) ) + unset( $crons[$timestamp] ); + _set_cron_array( $crons ); +} + +/** + * Unschedule all cron jobs attached to a specific hook. + * + * @since 2.1.0 + * + * @param string $hook Action hook, the execution of which will be unscheduled. + * @param array $args Optional. Arguments that were to be pass to the hook's callback function. + */ +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', __('This argument has changed to an array to match the behavior of the other cron functions.') ); + $args = array_slice( func_get_args(), 1 ); + } + + // 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; + + $key = md5( serialize( $args ) ); + foreach ( $crons as $timestamp => $cron ) { + if ( isset( $cron[ $hook ][ $key ] ) ) { + wp_unschedule_event( $timestamp, $hook, $args ); + } + } +} + +/** + * Retrieve the next timestamp for a cron event. + * + * @since 2.1.0 + * + * @param string $hook Action hook to execute when cron 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_next_scheduled( $hook, $args = array() ) { + $crons = _get_cron_array(); + $key = md5(serialize($args)); + if ( empty($crons) ) + return false; + foreach ( $crons as $timestamp => $cron ) { + if ( isset( $cron[$hook][$key] ) ) + return $timestamp; + } + return false; +} + +/** + * Send request to run cron through HTTP request that doesn't halt page loading. + * + * @since 2.1.0 + */ +function spawn_cron( $gmt_time = 0 ) { + if ( ! $gmt_time ) + $gmt_time = microtime( true ); + + if ( defined('DOING_CRON') || isset($_GET['doing_wp_cron']) ) + return; + + /* + * Get the cron lock, which is a unix timestamp of when the last cron was spawned + * and has not finished running. + * + * Multiple processes on multiple web servers can run this code concurrently, + * this lock attempts to make spawning as atomic as possible. + */ + $lock = get_transient('doing_cron'); + + if ( $lock > $gmt_time + 10 * MINUTE_IN_SECONDS ) + $lock = 0; + + // 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; + + //sanity check + $crons = _get_cron_array(); + if ( !is_array($crons) ) + return; + + $keys = array_keys( $crons ); + if ( isset($keys[0]) && $keys[0] > $gmt_time ) + return; + + if ( defined( 'ALTERNATE_WP_CRON' ) && ALTERNATE_WP_CRON ) { + if ( ! empty( $_POST ) || defined( 'DOING_AJAX' ) || defined( 'XMLRPC_REQUEST' ) ) { + return; + } + + $doing_wp_cron = sprintf( '%.22F', $gmt_time ); + set_transient( 'doing_cron', $doing_wp_cron ); + + ob_start(); + wp_redirect( add_query_arg( 'doing_wp_cron', $doing_wp_cron, wp_unslash( $_SERVER['REQUEST_URI'] ) ) ); + echo ' '; + + // flush any buffers and send the headers + while ( @ob_end_flush() ); + flush(); + + WP_DEBUG ? include_once( ABSPATH . 'wp-cron.php' ) : @include_once( ABSPATH . 'wp-cron.php' ); + return; + } + + // Set the cron lock with the current unix timestamp, when the cron is being spawned. + $doing_wp_cron = sprintf( '%.22F', $gmt_time ); + set_transient( 'doing_cron', $doing_wp_cron ); + + /** + * Filter the cron request arguments. + * + * @since 3.5.0 + * + * @param array $cron_request_array { + * An array of cron request URL arguments. + * + * @type string $url The cron request URL. + * @type int $key The 22 digit GMT microtime. + * @type array $args { + * An array of cron request arguments. + * + * @type int $timeout The request timeout in seconds. Default .01 seconds. + * @type bool $blocking Whether to set blocking for the request. Default false. + * @type bool $sslverify Whether SSL should be verified for the request. Default false. + * } + * } + */ + $cron_request = apply_filters( 'cron_request', array( + 'url' => add_query_arg( 'doing_wp_cron', $doing_wp_cron, site_url( 'wp-cron.php' ) ), + 'key' => $doing_wp_cron, + 'args' => array( + 'timeout' => 0.01, + 'blocking' => false, + /** This filter is documented in wp-includes/class-http.php */ + 'sslverify' => apply_filters( 'https_local_ssl_verify', false ) + ) + ) ); + + wp_remote_post( $cron_request['url'], $cron_request['args'] ); +} + +/** + * Run scheduled callbacks or spawn cron for all scheduled events. + * + * @since 2.1.0 + */ +function wp_cron() { + // 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; + + if ( false === $crons = _get_cron_array() ) + return; + + $gmt_time = microtime( true ); + $keys = array_keys( $crons ); + if ( isset($keys[0]) && $keys[0] > $gmt_time ) + return; + + $schedules = wp_get_schedules(); + foreach ( $crons as $timestamp => $cronhooks ) { + if ( $timestamp > $gmt_time ) break; + foreach ( (array) $cronhooks as $hook => $args ) { + if ( isset($schedules[$hook]['callback']) && !call_user_func( $schedules[$hook]['callback'] ) ) + continue; + spawn_cron( $gmt_time ); + break 2; + } + } +} + +/** + * Retrieve supported and filtered Cron recurrences. + * + * The supported recurrences are 'hourly' and 'daily'. A plugin may add more by + * hooking into the '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 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 'weekly' key, the 'display' would + * be `__( 'Once Weekly' )`. + * + * 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['weekly'] = array( + * 'interval' => 604800, + * 'display' => __( 'Once Weekly' ) + * ); + * + * + * @since 2.1.0 + * + * @return array + */ +function wp_get_schedules() { + $schedules = array( + 'hourly' => array( 'interval' => HOUR_IN_SECONDS, 'display' => __( 'Once Hourly' ) ), + 'twicedaily' => array( 'interval' => 12 * HOUR_IN_SECONDS, 'display' => __( 'Twice Daily' ) ), + 'daily' => array( 'interval' => DAY_IN_SECONDS, 'display' => __( 'Once Daily' ) ), + ); + /** + * Filter the non-default cron schedules. + * + * @since 2.1.0 + * + * @param array $new_schedules An array of non-default cron schedules. Default empty. + */ + return array_merge( apply_filters( 'cron_schedules', array() ), $schedules ); +} + +/** + * Retrieve Cron schedule for hook with arguments. + * + * @since 2.1.0 + * + * @param string $hook Action hook to execute when cron is run. + * @param array $args Optional. Arguments to pass to the hook's callback function. + * @return string|false False, if no schedule. Schedule on success. + */ +function wp_get_schedule($hook, $args = array()) { + $crons = _get_cron_array(); + $key = md5(serialize($args)); + if ( empty($crons) ) + return false; + foreach ( $crons as $timestamp => $cron ) { + if ( isset( $cron[$hook][$key] ) ) + return $cron[$hook][$key]['schedule']; + } + return false; +} + +// +// Private functions +// + +/** + * Retrieve cron info array option. + * + * @since 2.1.0 + * @access private + * + * @return false|array CRON info array. + */ +function _get_cron_array() { + $cron = get_option('cron'); + if ( ! is_array($cron) ) + return false; + + if ( !isset($cron['version']) ) + $cron = _upgrade_cron_array($cron); + + unset($cron['version']); + + return $cron; +} + +/** + * Updates the CRON option with the new CRON array. + * + * @since 2.1.0 + * @access private + * + * @param array $cron Cron info array from {@link _get_cron_array()}. + */ +function _set_cron_array($cron) { + $cron['version'] = 2; + update_option( 'cron', $cron ); +} + +/** + * Upgrade a Cron info array. + * + * This function upgrades the Cron info array to version 2. + * + * @since 2.1.0 + * @access private + * + * @param array $cron Cron info array from {@link _get_cron_array()}. + * @return array An upgraded Cron info array. + */ +function _upgrade_cron_array($cron) { + if ( isset($cron['version']) && 2 == $cron['version']) + return $cron; + + $new_cron = array(); + + foreach ( (array) $cron as $timestamp => $hooks) { + foreach ( (array) $hooks as $hook => $args ) { + $key = md5(serialize($args['args'])); + $new_cron[$timestamp][$hook][$key] = $args; + } + } + + $new_cron['version'] = 2; + update_option( 'cron', $new_cron ); + return $new_cron; +} diff --git a/wp-includes/css/admin-bar-rtl.css b/wp-includes/css/admin-bar-rtl.css new file mode 100644 index 0000000000..fff45052a6 --- /dev/null +++ b/wp-includes/css/admin-bar-rtl.css @@ -0,0 +1,1148 @@ +#wpadminbar * { + height: auto; + width: auto; + margin: 0; + padding: 0; + position: static; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + font: normal 13px/32px "Open Sans", sans-serif; + -webkit-border-radius: 0; + border-radius: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-transition: none; + transition: none; + -webkit-font-smoothing: subpixel-antialiased; /* Prevent Safari from switching to standard antialiasing on hover */ + -moz-osx-font-smoothing: auto; /* Prevent Firefox from inheriting from themes that use other values */ +} + +.rtl #wpadminbar * { + font-family: Tahoma, sans-serif; +} + +html:lang(he-il) .rtl #wpadminbar * { + font-family: Arial, sans-serif; +} + +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + 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, +#wpadminbar ul li:after { + content: normal; +} + +#wpadminbar a, +#wpadminbar a:hover, +#wpadminbar a img, +#wpadminbar a img:hover { + outline: none; + border: none; + text-decoration: none; + background: none; +} + +#wpadminbar a:focus, +#wpadminbar a:active, +#wpadminbar input[type="text"], +#wpadminbar input[type="password"], +#wpadminbar input[type="number"], +#wpadminbar input[type="search"], +#wpadminbar input[type="email"], +#wpadminbar input[type="url"], +#wpadminbar select, +#wpadminbar textarea, +#wpadminbar div { + -webkit-box-shadow: none; + box-shadow: none; + outline: none; +} + +#wpadminbar { + direction: rtl; + color: #ccc; + font: normal 13px/32px "Open Sans", sans-serif; + height: 32px; + position: fixed; + top: 0; + right: 0; + width: 100%; + min-width: 600px; /* match the min-width of the body in wp-admin.css */ + z-index: 99999; + background: #23282d; +} + +#wpadminbar .ab-sub-wrapper, +#wpadminbar ul, +#wpadminbar ul li { + background: none; + 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: none; +} + +#wpadminbar .quicklinks .ab-top-secondary > li { + float: left; +} + +#wpadminbar .quicklinks a, +#wpadminbar .quicklinks .ab-empty-item, +#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; + -webkit-box-shadow: 0 3px 5px rgba(0,0,0,0.2); + 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%; +} + +#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: bold; +} + +#wpadminbar .quicklinks .menupop ul li .ab-item, +#wpadminbar .quicklinks .menupop ul li a strong, +#wpadminbar .quicklinks .menupop.hover ul li .ab-item, +#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item, +#wpadminbar .shortlink-input { + line-height: 26px; + height: 26px; + white-space: nowrap; + min-width: 140px; +} + +#wpadminbar .shortlink-input { + width: 200px; +} + +#wpadminbar.nojs li:hover > .ab-sub-wrapper, +#wpadminbar li.hover > .ab-sub-wrapper { + display: block; +} + +#wpadminbar .menupop li:hover > .ab-sub-wrapper, +#wpadminbar .menupop li.hover > .ab-sub-wrapper { + margin-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:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#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: #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: #00b9eb; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-root-default .ab-icon, +#wpadminbar .ab-icon, +#wpadminbar .ab-item:before { + 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 .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar #adminbarsearch:before { + color: #a0a5aa; + color: rgba(240,245,250,0.6); +} + +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar #adminbarsearch:before { + position: relative; + -webkit-transition: all .1s ease-in-out; + 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,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: #b4b9be; + color: rgba(240,245,250,0.7); +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + 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 .menupop .menupop > .ab-item:before, +#wpadminbar .ab-top-secondary .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: '\f139'; + 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: 5px; + right: 3px; + content: '\f141'; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary { + display: block; + position: relative; + left: auto; + margin: 0; + -webkit-box-shadow: none; + 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 > a:hover, +#wpadminbar .quicklinks .menupop .ab-sub-secondary > li .ab-item:focus a { + color: #00b9eb; +} + +#wpadminbar .quicklinks a span#ab-updates { + background: #eee; + color: #32373c; + display: inline; + padding: 2px 5px; + font-size: 10px; + font-weight: bold; + -webkit-border-radius: 10px; + border-radius: 10px; +} + +#wpadminbar .quicklinks a:hover span#ab-updates { + background: #fff; + color: #000; +} + +#wpadminbar .ab-top-secondary { + float: left; +} + +#wpadminbar ul li:last-child, +#wpadminbar ul li:last-child .ab-item { + -webkit-box-shadow: none; + box-shadow: none; +} + +/** + * My Account + */ +#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: none; +} + +#wp-admin-bar-user-info .avatar { + position: absolute; + right: -72px; + top: 4px; + width: 64px; + height: 64px; +} + +#wpadminbar #wp-admin-bar-user-info a { + background: none; + height: auto; +} + +#wpadminbar #wp-admin-bar-user-info span { + background: none; + padding: 0; + height: 18px; +} + +#wpadminbar #wp-admin-bar-user-info .display-name, +#wpadminbar #wp-admin-bar-user-info .username { + display: block; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #999; + font-size: 11px; +} + +#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 > a img { + width: auto; +} + +/** + * WP 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 { + padding: 0 7px; +} + +#wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before { + content: '\f120'; + top: 2px; +} + +/* + * My Sites & Site Title + */ +#wpadminbar .quicklinks li .blavatar { + float: right; + font: normal 16px/1 'dashicons' !important; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #eee; +} + +#wpadminbar .quicklinks li a:hover .blavatar { + color: #00b9eb; +} + +#wpadminbar .quicklinks li .blavatar:before { + content: '\f120'; + height: 16px; + width: 16px; + display: inline-block; + margin: 6px -2px 0 8px; +} + +#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: '\f112'; + 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"; +} + + + +/** + * Comments + */ +#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; +} + +/** + * New Content + */ +#wpadminbar #wp-admin-bar-new-content .ab-icon:before { + content: '\f132'; + top: 4px; +} + +/** + * Updates + */ +#wpadminbar #wp-admin-bar-updates .ab-icon:before { + content: '\f463'; + top: 2px; +} + +/** + * Search + */ +#wpadminbar.ie8 #wp-admin-bar-search { + display: block; + min-width: 32px; +} +#wpadminbar #wp-admin-bar-search .ab-item { + padding: 0; + background: transparent; +} + +#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 { + position: relative; + z-index: 30; + font: 13px/24px "Open Sans", sans-serif; + 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: none; + cursor: pointer; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition-duration: 400ms; + transition-duration: 400ms; + -webkit-transition-property: width, background; + transition-property: width, background; + -webkit-transition-timing-function: ease; + 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, 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-input::-webkit-input-placeholder { + color: #999; +} +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #999; +} +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #999; +} +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #999; +} + +#wpadminbar #adminbarsearch .adminbar-button { + display: none; +} + +/** + * Customize support classes + */ +.no-customize-support .hide-if-no-customize, +.customize-support .hide-if-customize, +.no-customize-support #wpadminbar .hide-if-no-customize, +.no-customize-support.wp-core-ui .hide-if-no-customize, +.no-customize-support .wp-core-ui .hide-if-no-customize, +.customize-support #wpadminbar .hide-if-customize, +.customize-support.wp-core-ui .hide-if-customize, +.customize-support .wp-core-ui .hide-if-customize { + display: none; +} + +/* Skip link */ +#wpadminbar .screen-reader-text, +#wpadminbar .screen-reader-text span { + position: absolute; + right: -1000em; + top: -1000em; + height: 1px; + width: 1px; + overflow: hidden; +} + +#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: bold; + padding: 15px 23px 14px; + background: #f1f1f1; + color: #21759b; + z-index: 100000; + line-height: normal; + text-decoration: none; + -webkit-box-shadow: 0 0 2px 2px rgba(0,0,0,.6); + box-shadow: 0 0 2px 2px rgba(0,0,0,.6); +} + +/** + * 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: 300px; + + /* These rules break dropdown tappability on Chrome/Android. + -webkit-transform: translate3d(0, 0, 0); + -webkit-backface-visibility: hidden; + -webkit-transition: 0; + transform: translate3d(0, 0, 0); + backface-visibility: hidden; + transition: 0; + */ + } + + #wpadminbar * { + font: normal 14px/32px "Open Sans", sans-serif; + } + + #wpadminbar .quicklinks > ul > li > a, + #wpadminbar .quicklinks .ab-empty-item { + 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-site-name a.ab-item, + #wpadminbar #wp-admin-bar-my-sites a.ab-item, + #wpadminbar #wp-admin-bar-my-account 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: 6px 15px 12px; + } + + #wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper a:empty { + 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 { + font: 28px/1 'dashicons' !important; + top: -3px; + } + + #wpadminbar .ab-icon, + #wpadminbar .ab-item:before { + padding: 0; + } + + /* 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-customize > .ab-item, + #wpadminbar #wp-admin-bar-edit > .ab-item, + #wpadminbar #wp-admin-bar-my-account > .ab-item { + text-indent: 100%; + white-space: nowrap; + overflow: hidden; + width: 52px; + padding: 0; + color: #999; + position: relative; + } + + #wpadminbar > #wp-toolbar > #wp-admin-bar-root-default .ab-icon, + #wpadminbar .ab-icon, + #wpadminbar .ab-item:before { + padding: 0; + margin-left: 0; + } + + #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-customize > .ab-item:before, + #wpadminbar #wp-admin-bar-my-account > .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; + } + + /* Search */ + #wpadminbar #wp-admin-bar-search { + display: none; + } + + /* New Content */ + #wpadminbar #wp-admin-bar-new-content .ab-icon:before { + top: 0; + line-height: 53px; + height: 46px !important; + text-align: center; + width: 52px; + display: block; + } + + /* Updates */ + #wpadminbar #wp-admin-bar-updates { + text-align: center; + } + + #wpadminbar #wp-admin-bar-updates .ab-icon:before { + top: 3px; + } + + /* Comments */ + #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; + } + + /* My Account */ + #wpadminbar #wp-admin-bar-my-account > a { + position: relative; + white-space: nowrap; + text-indent: 150%; /* More than 100% indention is needed since this element has padding */ + width: 28px; + padding: 0 10px; + overflow: hidden; /* Prevent link text from forcing horizontal scrolling on mobile */ + } + + #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: 0.8 !important; + margin-bottom: -2px; + } + + /* Show only default top level items */ + #wp-toolbar > ul > li { + display: none; + } + + #wpadminbar li#wp-admin-bar-menu-toggle, + #wpadminbar li#wp-admin-bar-wp-logo, + #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-customize, + #wpadminbar li#wp-admin-bar-new-content, + #wpadminbar li#wp-admin-bar-edit, + #wpadminbar li#wp-admin-bar-comments, + #wpadminbar li#wp-admin-bar-my-account { + display: block; + } + + /* Allow dropdown list items to appear normally */ + #wpadminbar li:hover ul li, + #wpadminbar li.hover ul li, + #wpadminbar li:hover ul li:hover ul li { + display: list-item; + } + + /* Override default min-width so dropdown lists aren't stretched + to 100% viewport width at responsive sizes. */ + #wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper { + min-width: -webkit-fit-content; + min-width: -moz-fit-content; + min-width: fit-content; + } + + #wpadminbar ul#wp-admin-bar-root-default > li { + margin-left: 0; + } + + /* Experimental fix for touch toolbar dropdown positioning */ + #wpadminbar .ab-top-menu, + #wpadminbar .ab-top-secondary, + #wpadminbar #wp-admin-bar-wp-logo, + #wpadminbar #wp-admin-bar-my-sites, + #wpadminbar #wp-admin-bar-site-name, + #wpadminbar #wp-admin-bar-updates, + #wpadminbar #wp-admin-bar-comments, + #wpadminbar #wp-admin-bar-new-content, + #wpadminbar #wp-admin-bar-edit, + #wpadminbar #wp-admin-bar-my-account { + 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; + } + + /* Realign arrows on taller responsive submenus */ + + #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before { + top: 10px; + right: 0; + } +} + +/* Smartphone */ +@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-wp-logo, + #wpadminbar li#wp-admin-bar-updates { + display: none; + } + + /* Make submenus full-width at this size */ + + #wpadminbar .ab-top-menu > .menupop li > .ab-sub-wrapper { + position: static; + -webkit-box-shadow: none; + box-shadow: none; + } +} + +/* Very narrow screens */ +@media screen and (max-width: 400px) { + #wpadminbar li#wp-admin-bar-comments { + display: none; + } +} diff --git a/wp-includes/css/admin-bar-rtl.min.css b/wp-includes/css/admin-bar-rtl.min.css new file mode 100644 index 0000000000..a521ad6c12 --- /dev/null +++ b/wp-includes/css/admin-bar-rtl.min.css @@ -0,0 +1 @@ +#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font:400 13px/32px "Open Sans",sans-serif;-webkit-border-radius:0;border-radius:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transition:none;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 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=text],#wpadminbar input[type=password],#wpadminbar input[type=number],#wpadminbar input[type=search],#wpadminbar input[type=email],#wpadminbar input[type=url],#wpadminbar select,#wpadminbar textarea{-webkit-box-shadow:none;box-shadow:none;outline:0}#wpadminbar{direction:rtl;color:#ccc;font:400 13px/32px "Open Sans",sans-serif;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;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2);background:#32373c;display:none;position:absolute;float:none}#wpadminbar .selected .shortlink-input,#wpadminbar li.hover>.ab-sub-wrapper,#wpadminbar.nojs li:hover>.ab-sub-wrapper{display:block}#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 .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:700}#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 .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:400 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);position:relative;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#wpadminbar .ab-label{display:inline-block;height:32px}#wpadminbar .ab-submenu .ab-item,#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 .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: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:400 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:'\f139';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:5px;right:3px;content:'\f141'}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;left:auto;margin:0;-webkit-box-shadow:none;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:700;-webkit-border-radius:10px;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{-webkit-box-shadow:none;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:#999;font-size:11px}#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>a img{width:auto}#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{content:'\f120';top:2px}#wpadminbar .quicklinks li .blavatar{float:right;font:400 16px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#eee}#wpadminbar .quicklinks li a:hover .blavatar{color:#00b9eb}#wpadminbar .quicklinks li .blavatar:before{content:'\f120';height:16px;width:16px;display:inline-block;margin:6px -2px 0 8px}#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:'\f112';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:400 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{position:relative;z-index:30;font:13px/24px "Open Sans",sans-serif;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;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:400ms;transition-duration:400ms;-webkit-transition-property:width,background;transition-property:width,background;-webkit-transition-timing-function:ease;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:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBR‌​AA7) 100% 0}#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-input::-webkit-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-button,.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{position:absolute;right:-1000em;top:-1000em;height:1px;width:1px;overflow:hidden}#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:700;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;z-index:100000;line-height:normal;text-decoration:none;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);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){#wpadminbar .ab-label,#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar ul#wp-admin-bar-root-default>li,.network-admin #wpadminbar ul#wp-admin-bar-top-secondary>li#wp-admin-bar-my-account{margin-left:0}html #wpadminbar{height:46px;min-width:300px}#wpadminbar *{font:400 14px/32px "Open Sans",sans-serif}#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;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 .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar #wp-admin-bar-comments .ab-icon,#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin:0}#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:6px 15px 12px}#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{font:28px/1 dashicons!important;top:-3px}#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:#999;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:400 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 #wp-admin-bar-search,#wpadminbar .quicklinks li .blavatar:before{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:before{display:block;font-size:34px;height:46px;line-height:47px;top:0}#wp-toolbar>ul>li,#wpadminbar #wp-admin-bar-user-actions.ab-submenu img.avatar{display:none}#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-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}#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:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}#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}#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:static;-webkit-box-shadow:none;box-shadow:none}#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}}@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 new file mode 100644 index 0000000000..ff4bbbfed7 --- /dev/null +++ b/wp-includes/css/admin-bar.css @@ -0,0 +1,1148 @@ +#wpadminbar * { + height: auto; + width: auto; + margin: 0; + padding: 0; + position: static; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + font: normal 13px/32px "Open Sans", sans-serif; + -webkit-border-radius: 0; + border-radius: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-transition: none; + transition: none; + -webkit-font-smoothing: subpixel-antialiased; /* Prevent Safari from switching to standard antialiasing on hover */ + -moz-osx-font-smoothing: auto; /* Prevent Firefox from inheriting from themes that use other values */ +} + +.rtl #wpadminbar * { + font-family: Tahoma, sans-serif; +} + +html:lang(he-il) .rtl #wpadminbar * { + font-family: Arial, sans-serif; +} + +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + 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, +#wpadminbar ul li:after { + content: normal; +} + +#wpadminbar a, +#wpadminbar a:hover, +#wpadminbar a img, +#wpadminbar a img:hover { + outline: none; + border: none; + text-decoration: none; + background: none; +} + +#wpadminbar a:focus, +#wpadminbar a:active, +#wpadminbar input[type="text"], +#wpadminbar input[type="password"], +#wpadminbar input[type="number"], +#wpadminbar input[type="search"], +#wpadminbar input[type="email"], +#wpadminbar input[type="url"], +#wpadminbar select, +#wpadminbar textarea, +#wpadminbar div { + -webkit-box-shadow: none; + box-shadow: none; + outline: none; +} + +#wpadminbar { + direction: ltr; + color: #ccc; + font: normal 13px/32px "Open Sans", sans-serif; + height: 32px; + position: fixed; + top: 0; + left: 0; + width: 100%; + min-width: 600px; /* match the min-width of the body in wp-admin.css */ + z-index: 99999; + background: #23282d; +} + +#wpadminbar .ab-sub-wrapper, +#wpadminbar ul, +#wpadminbar ul li { + background: none; + 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: none; +} + +#wpadminbar .quicklinks .ab-top-secondary > li { + float: right; +} + +#wpadminbar .quicklinks a, +#wpadminbar .quicklinks .ab-empty-item, +#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; + -webkit-box-shadow: 0 3px 5px rgba(0,0,0,0.2); + 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%; +} + +#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: bold; +} + +#wpadminbar .quicklinks .menupop ul li .ab-item, +#wpadminbar .quicklinks .menupop ul li a strong, +#wpadminbar .quicklinks .menupop.hover ul li .ab-item, +#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item, +#wpadminbar .shortlink-input { + line-height: 26px; + height: 26px; + white-space: nowrap; + min-width: 140px; +} + +#wpadminbar .shortlink-input { + width: 200px; +} + +#wpadminbar.nojs li:hover > .ab-sub-wrapper, +#wpadminbar li.hover > .ab-sub-wrapper { + display: block; +} + +#wpadminbar .menupop li:hover > .ab-sub-wrapper, +#wpadminbar .menupop li.hover > .ab-sub-wrapper { + margin-left: 100%; + margin-top: -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:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#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: #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: #00b9eb; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-root-default .ab-icon, +#wpadminbar .ab-icon, +#wpadminbar .ab-item:before { + 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 .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar #adminbarsearch:before { + color: #a0a5aa; + color: rgba(240,245,250,0.6); +} + +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar #adminbarsearch:before { + position: relative; + -webkit-transition: all .1s ease-in-out; + 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,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: #b4b9be; + color: rgba(240,245,250,0.7); +} + +#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 .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.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + 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 .menupop .menupop > .ab-item:before, +#wpadminbar .ab-top-secondary .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: 5px; + left: 3px; + content: '\f141'; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary { + display: block; + position: relative; + right: auto; + margin: 0; + -webkit-box-shadow: none; + 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 > a:hover, +#wpadminbar .quicklinks .menupop .ab-sub-secondary > li .ab-item:focus a { + color: #00b9eb; +} + +#wpadminbar .quicklinks a span#ab-updates { + background: #eee; + color: #32373c; + display: inline; + padding: 2px 5px; + font-size: 10px; + font-weight: bold; + -webkit-border-radius: 10px; + border-radius: 10px; +} + +#wpadminbar .quicklinks a:hover span#ab-updates { + background: #fff; + color: #000; +} + +#wpadminbar .ab-top-secondary { + float: right; +} + +#wpadminbar ul li:last-child, +#wpadminbar ul li:last-child .ab-item { + -webkit-box-shadow: none; + box-shadow: none; +} + +/** + * My Account + */ +#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: none; +} + +#wp-admin-bar-user-info .avatar { + position: absolute; + left: -72px; + top: 4px; + width: 64px; + height: 64px; +} + +#wpadminbar #wp-admin-bar-user-info a { + background: none; + height: auto; +} + +#wpadminbar #wp-admin-bar-user-info span { + background: none; + padding: 0; + height: 18px; +} + +#wpadminbar #wp-admin-bar-user-info .display-name, +#wpadminbar #wp-admin-bar-user-info .username { + display: block; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #999; + font-size: 11px; +} + +#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 > a img { + width: auto; +} + +/** + * WP 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 { + padding: 0 7px; +} + +#wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before { + content: '\f120'; + top: 2px; +} + +/* + * My Sites & Site Title + */ +#wpadminbar .quicklinks li .blavatar { + float: left; + font: normal 16px/1 'dashicons' !important; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #eee; +} + +#wpadminbar .quicklinks li a:hover .blavatar { + color: #00b9eb; +} + +#wpadminbar .quicklinks li .blavatar:before { + content: '\f120'; + height: 16px; + width: 16px; + display: inline-block; + margin: 6px 8px 0 -2px; +} + +#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: '\f112'; + 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"; +} + + + +/** + * Comments + */ +#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; +} + +/** + * New Content + */ +#wpadminbar #wp-admin-bar-new-content .ab-icon:before { + content: '\f132'; + top: 4px; +} + +/** + * Updates + */ +#wpadminbar #wp-admin-bar-updates .ab-icon:before { + content: '\f463'; + top: 2px; +} + +/** + * Search + */ +#wpadminbar.ie8 #wp-admin-bar-search { + display: block; + min-width: 32px; +} +#wpadminbar #wp-admin-bar-search .ab-item { + padding: 0; + background: transparent; +} + +#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 { + position: relative; + z-index: 30; + font: 13px/24px "Open Sans", sans-serif; + 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: none; + cursor: pointer; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition-duration: 400ms; + transition-duration: 400ms; + -webkit-transition-property: width, background; + transition-property: width, background; + -webkit-transition-timing-function: ease; + 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, 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-input::-webkit-input-placeholder { + color: #999; +} +#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder { + color: #999; +} +#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder { + color: #999; +} +#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder { + color: #999; +} + +#wpadminbar #adminbarsearch .adminbar-button { + display: none; +} + +/** + * Customize support classes + */ +.no-customize-support .hide-if-no-customize, +.customize-support .hide-if-customize, +.no-customize-support #wpadminbar .hide-if-no-customize, +.no-customize-support.wp-core-ui .hide-if-no-customize, +.no-customize-support .wp-core-ui .hide-if-no-customize, +.customize-support #wpadminbar .hide-if-customize, +.customize-support.wp-core-ui .hide-if-customize, +.customize-support .wp-core-ui .hide-if-customize { + display: none; +} + +/* Skip link */ +#wpadminbar .screen-reader-text, +#wpadminbar .screen-reader-text span { + position: absolute; + left: -1000em; + top: -1000em; + height: 1px; + width: 1px; + overflow: hidden; +} + +#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: bold; + padding: 15px 23px 14px; + background: #f1f1f1; + color: #21759b; + z-index: 100000; + line-height: normal; + text-decoration: none; + -webkit-box-shadow: 0 0 2px 2px rgba(0,0,0,.6); + box-shadow: 0 0 2px 2px rgba(0,0,0,.6); +} + +/** + * 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: 300px; + + /* These rules break dropdown tappability on Chrome/Android. + -webkit-transform: translate3d(0, 0, 0); + -webkit-backface-visibility: hidden; + -webkit-transition: 0; + transform: translate3d(0, 0, 0); + backface-visibility: hidden; + transition: 0; + */ + } + + #wpadminbar * { + font: normal 14px/32px "Open Sans", sans-serif; + } + + #wpadminbar .quicklinks > ul > li > a, + #wpadminbar .quicklinks .ab-empty-item { + 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-site-name a.ab-item, + #wpadminbar #wp-admin-bar-my-sites a.ab-item, + #wpadminbar #wp-admin-bar-my-account 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: 6px 15px 12px; + } + + #wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper a:empty { + 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 { + font: 28px/1 'dashicons' !important; + top: -3px; + } + + #wpadminbar .ab-icon, + #wpadminbar .ab-item:before { + padding: 0; + } + + /* 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-customize > .ab-item, + #wpadminbar #wp-admin-bar-edit > .ab-item, + #wpadminbar #wp-admin-bar-my-account > .ab-item { + text-indent: 100%; + white-space: nowrap; + overflow: hidden; + width: 52px; + padding: 0; + color: #999; + position: relative; + } + + #wpadminbar > #wp-toolbar > #wp-admin-bar-root-default .ab-icon, + #wpadminbar .ab-icon, + #wpadminbar .ab-item:before { + padding: 0; + margin-right: 0; + } + + #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-customize > .ab-item:before, + #wpadminbar #wp-admin-bar-my-account > .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; + } + + /* Search */ + #wpadminbar #wp-admin-bar-search { + display: none; + } + + /* New Content */ + #wpadminbar #wp-admin-bar-new-content .ab-icon:before { + top: 0; + line-height: 53px; + height: 46px !important; + text-align: center; + width: 52px; + display: block; + } + + /* Updates */ + #wpadminbar #wp-admin-bar-updates { + text-align: center; + } + + #wpadminbar #wp-admin-bar-updates .ab-icon:before { + top: 3px; + } + + /* Comments */ + #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; + } + + /* My Account */ + #wpadminbar #wp-admin-bar-my-account > a { + position: relative; + white-space: nowrap; + text-indent: 150%; /* More than 100% indention is needed since this element has padding */ + width: 28px; + padding: 0 10px; + overflow: hidden; /* Prevent link text from forcing horizontal scrolling on mobile */ + } + + #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: 0.8 !important; + margin-bottom: -2px; + } + + /* Show only default top level items */ + #wp-toolbar > ul > li { + display: none; + } + + #wpadminbar li#wp-admin-bar-menu-toggle, + #wpadminbar li#wp-admin-bar-wp-logo, + #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-customize, + #wpadminbar li#wp-admin-bar-new-content, + #wpadminbar li#wp-admin-bar-edit, + #wpadminbar li#wp-admin-bar-comments, + #wpadminbar li#wp-admin-bar-my-account { + display: block; + } + + /* Allow dropdown list items to appear normally */ + #wpadminbar li:hover ul li, + #wpadminbar li.hover ul li, + #wpadminbar li:hover ul li:hover ul li { + display: list-item; + } + + /* Override default min-width so dropdown lists aren't stretched + to 100% viewport width at responsive sizes. */ + #wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper { + min-width: -webkit-fit-content; + min-width: -moz-fit-content; + min-width: fit-content; + } + + #wpadminbar ul#wp-admin-bar-root-default > li { + margin-right: 0; + } + + /* Experimental fix for touch toolbar dropdown positioning */ + #wpadminbar .ab-top-menu, + #wpadminbar .ab-top-secondary, + #wpadminbar #wp-admin-bar-wp-logo, + #wpadminbar #wp-admin-bar-my-sites, + #wpadminbar #wp-admin-bar-site-name, + #wpadminbar #wp-admin-bar-updates, + #wpadminbar #wp-admin-bar-comments, + #wpadminbar #wp-admin-bar-new-content, + #wpadminbar #wp-admin-bar-edit, + #wpadminbar #wp-admin-bar-my-account { + 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; + } + + /* Realign arrows on taller responsive submenus */ + + #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before { + top: 10px; + left: 0; + } +} + +/* Smartphone */ +@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-wp-logo, + #wpadminbar li#wp-admin-bar-updates { + display: none; + } + + /* Make submenus full-width at this size */ + + #wpadminbar .ab-top-menu > .menupop li > .ab-sub-wrapper { + position: static; + -webkit-box-shadow: none; + box-shadow: none; + } +} + +/* Very narrow screens */ +@media screen and (max-width: 400px) { + #wpadminbar li#wp-admin-bar-comments { + display: none; + } +} diff --git a/wp-includes/css/admin-bar.min.css b/wp-includes/css/admin-bar.min.css new file mode 100644 index 0000000000..a6de96a021 --- /dev/null +++ b/wp-includes/css/admin-bar.min.css @@ -0,0 +1 @@ +#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font:400 13px/32px "Open Sans",sans-serif;-webkit-border-radius:0;border-radius:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transition:none;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 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=text],#wpadminbar input[type=password],#wpadminbar input[type=number],#wpadminbar input[type=search],#wpadminbar input[type=email],#wpadminbar input[type=url],#wpadminbar select,#wpadminbar textarea{-webkit-box-shadow:none;box-shadow:none;outline:0}#wpadminbar{direction:ltr;color:#ccc;font:400 13px/32px "Open Sans",sans-serif;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;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2);background:#32373c;display:none;position:absolute;float:none}#wpadminbar .selected .shortlink-input,#wpadminbar li.hover>.ab-sub-wrapper,#wpadminbar.nojs li:hover>.ab-sub-wrapper{display:block}#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 .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:700}#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 .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:400 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);position:relative;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#wpadminbar .ab-label{display:inline-block;height:32px}#wpadminbar .ab-submenu .ab-item,#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 .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: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:400 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:5px;left:3px;content:'\f141'}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;right:auto;margin:0;-webkit-box-shadow:none;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:700;-webkit-border-radius:10px;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{-webkit-box-shadow:none;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:#999;font-size:11px}#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>a img{width:auto}#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{content:'\f120';top:2px}#wpadminbar .quicklinks li .blavatar{float:left;font:400 16px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#eee}#wpadminbar .quicklinks li a:hover .blavatar{color:#00b9eb}#wpadminbar .quicklinks li .blavatar:before{content:'\f120';height:16px;width:16px;display:inline-block;margin:6px 8px 0 -2px}#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:'\f112';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:400 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{position:relative;z-index:30;font:13px/24px "Open Sans",sans-serif;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;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:400ms;transition-duration:400ms;-webkit-transition-property:width,background;transition-property:width,background;-webkit-transition-timing-function:ease;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: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-input::-webkit-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-button,.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{position:absolute;left:-1000em;top:-1000em;height:1px;width:1px;overflow:hidden}#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:700;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;z-index:100000;line-height:normal;text-decoration:none;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);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){#wpadminbar .ab-label,#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar ul#wp-admin-bar-root-default>li,.network-admin #wpadminbar ul#wp-admin-bar-top-secondary>li#wp-admin-bar-my-account{margin-right:0}html #wpadminbar{height:46px;min-width:300px}#wpadminbar *{font:400 14px/32px "Open Sans",sans-serif}#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;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 .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar #wp-admin-bar-comments .ab-icon,#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin:0}#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:6px 15px 12px}#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{font:28px/1 dashicons!important;top:-3px}#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:#999;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:400 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 #wp-admin-bar-search,#wpadminbar .quicklinks li .blavatar:before{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:before{display:block;font-size:34px;height:46px;line-height:47px;top:0}#wp-toolbar>ul>li,#wpadminbar #wp-admin-bar-user-actions.ab-submenu img.avatar{display:none}#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-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}#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:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}#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}#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:static;-webkit-box-shadow:none;box-shadow:none}#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}}@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 new file mode 100644 index 0000000000..18dd46e531 --- /dev/null +++ b/wp-includes/css/buttons-rtl.css @@ -0,0 +1,372 @@ +/* ---------------------------------------------------------------------------- + +NOTE: If you edit this file, you should make sure that the CSS rules for +buttons in the following files are updated. + +* jquery-ui-dialog.css +* editor.css + +WordPress-style Buttons +======================= +Create a button by adding the `.button` class to an element. For backwards +compatibility, we support several other classes (such as `.button-secondary`), +but these will *not* work with the stackable classes described below. + +Button Styles +------------- +To display a primary button style, add the `.button-primary` class to a button. + +Button Sizes +------------ +Adjust a button's size by adding the `.button-large` or `.button-small` class. + +Button States +------------- +Lock the state of a button by adding the name of the pseudoclass as +an actual class (e.g. `.hover` for `:hover`). + + +TABLE OF CONTENTS: +------------------ + 1.0 - Button Layouts + 2.0 - Default Button Style + 3.0 - Primary Button Style + 4.0 - Button Groups + 5.0 - Responsive Button Styles + +---------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------------- + 1.0 - Button Layouts +---------------------------------------------------------------------------- */ + +.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; + -webkit-border-radius: 3px; + border-radius: 3px; + white-space: nowrap; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +/* Remove the dotted border on :focus and the extra padding in Firefox */ +.wp-core-ui button::-moz-focus-inner, +.wp-core-ui input[type="reset"]::-moz-focus-inner, +.wp-core-ui input[type="button"]::-moz-focus-inner, +.wp-core-ui input[type="submit"]::-moz-focus-inner { + border-width: 0; + border-style: none; + padding: 0; +} + +.wp-core-ui .button.button-large, +.wp-core-ui .button-group.button-large .button { + height: 30px; + line-height: 28px; + padding: 0 12px 2px; +} + +.wp-core-ui .button.button-small, +.wp-core-ui .button-group.button-small .button { + 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; + height: 46px; + line-height: 44px; + padding: 0 36px; +} + +.wp-core-ui .button:active, +.wp-core-ui .button:focus { + outline: none; +} + +.ie8 .wp-core-ui .button-link:focus { + outline: #5b9dd9 solid 1px; +} + +.wp-core-ui .button.hidden { + display: none; +} + +/* Style Reset buttons as simple text links */ + +.wp-core-ui input[type="reset"], +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active, +.wp-core-ui input[type="reset"]:focus { + background: none; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + padding: 0 2px 1px; + width: auto; +} + +/* ---------------------------------------------------------------------------- + 2.0 - Default Button Style +---------------------------------------------------------------------------- */ + +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #555; + border-color: #cccccc; + background: #f7f7f7; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + vertical-align: top; +} + +.wp-core-ui p .button { + vertical-align: baseline; +} + +.wp-core-ui .button-link { + border: 0; + background: none; + outline: none; + cursor: pointer; +} + +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.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, +.wp-core-ui .button-link:focus { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.wp-core-ui .button.active, +.wp-core-ui .button.active:hover, +.wp-core-ui .button:active, +.wp-core-ui .button-secondary:active { + background: #eee; + border-color: #999; + color: #32373c; + -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); +} + +.wp-core-ui .button.active:focus { + -webkit-box-shadow: + inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.wp-core-ui .button[disabled], +.wp-core-ui .button:disabled, +.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 { + color: #a0a5aa !important; + border-color: #ddd !important; + background: #f7f7f7 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: 0 1px 0 #fff !important; + cursor: default; +} + +/* ---------------------------------------------------------------------------- + 3.0 - Primary Button Style +---------------------------------------------------------------------------- */ + +.wp-core-ui .button-primary { + background: #00a0d2; + border-color: #0073aa; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5 ), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + color: #fff; + text-decoration: none; +} + +.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: #0091cd; + border-color: #0073aa; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ); + color: #fff; +} + +.wp-core-ui .button-primary.focus, +.wp-core-ui .button-primary:focus { + border-color: #0e3950; + -webkit-box-shadow: + inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.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: #0073aa; + border-color: #005082; + color: rgba( 255, 255, 255, 0.95 ); + -webkit-box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); + 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: #94cde7 !important; + background: #298cba !important; + border-color: #1b607f !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: 0 -1px 0 rgba( 0, 0, 0, 0.1 ) !important; + cursor: default; +} + +/* ---------------------------------------------------------------------------- + 4.0 - Button Groups +---------------------------------------------------------------------------- */ + +.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; + -webkit-border-radius: 0; + 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 { + -webkit-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.wp-core-ui .button-group > .button:last-child { + -webkit-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.wp-core-ui .button-group > .button:focus { + position: relative; + z-index: 1; +} + +/* ---------------------------------------------------------------------------- + 5.0 - Responsive Button Styles +---------------------------------------------------------------------------- */ + +@media screen and ( max-width: 782px ) { + + .wp-core-ui .button, + .wp-core-ui .button.button-large, + .wp-core-ui .button.button-small, + input#publish, + input#save-post, + a.preview { + 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; + } + + /* Publish Metabox Options */ + .wp-core-ui .save-post-status.button { + position: relative; + margin: 0 10px 0 14px; /* 14px right margin to match all other buttons */ + } + + /* Reset responsive styles in Press This, Customizer */ + + .wp-core-ui.wp-customizer .button { + padding: 0 10px 1px; + font-size: 13px; + line-height: 26px; + height: 28px; + margin: 0; + vertical-align: inherit; + } + + /* Reset responsive styles on Log in button on iframed login form */ + + .interim-login .button.button-large { + height: 30px; + line-height: 28px; + padding: 0 12px 2px; + } + +} diff --git a/wp-includes/css/buttons-rtl.min.css b/wp-includes/css/buttons-rtl.min.css new file mode 100644 index 0000000000..4b41b81087 --- /dev/null +++ b/wp-includes/css/buttons-rtl.min.css @@ -0,0 +1 @@ +.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;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui button::-moz-focus-inner,.wp-core-ui input[type=reset]::-moz-focus-inner,.wp-core-ui input[type=button]::-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}.ie8 .wp-core-ui .button-link:focus{outline:#5b9dd9 solid 1px}.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;-webkit-box-shadow: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;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.wp-core-ui p .button{vertical-align:baseline}.wp-core-ui .button-link{border:0;background:0 0;outline:0;cursor:pointer}.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-link:focus,.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.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;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.wp-core-ui .button.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.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;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default}.wp-core-ui .button-primary{background:#00a0d2;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration: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:#0091cd;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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:#005082;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);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:#94cde7!important;background:#298cba!important;border-color:#1b607f!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!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;-webkit-border-radius:0;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{-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.wp-core-ui .button-group>.button:last-child{-webkit-border-radius:3px 0 0 3px;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}.interim-login .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}} \ No newline at end of file diff --git a/wp-includes/css/buttons.css b/wp-includes/css/buttons.css new file mode 100644 index 0000000000..b34f91a502 --- /dev/null +++ b/wp-includes/css/buttons.css @@ -0,0 +1,372 @@ +/* ---------------------------------------------------------------------------- + +NOTE: If you edit this file, you should make sure that the CSS rules for +buttons in the following files are updated. + +* jquery-ui-dialog.css +* editor.css + +WordPress-style Buttons +======================= +Create a button by adding the `.button` class to an element. For backwards +compatibility, we support several other classes (such as `.button-secondary`), +but these will *not* work with the stackable classes described below. + +Button Styles +------------- +To display a primary button style, add the `.button-primary` class to a button. + +Button Sizes +------------ +Adjust a button's size by adding the `.button-large` or `.button-small` class. + +Button States +------------- +Lock the state of a button by adding the name of the pseudoclass as +an actual class (e.g. `.hover` for `:hover`). + + +TABLE OF CONTENTS: +------------------ + 1.0 - Button Layouts + 2.0 - Default Button Style + 3.0 - Primary Button Style + 4.0 - Button Groups + 5.0 - Responsive Button Styles + +---------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------------- + 1.0 - Button Layouts +---------------------------------------------------------------------------- */ + +.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; + -webkit-border-radius: 3px; + border-radius: 3px; + white-space: nowrap; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +/* Remove the dotted border on :focus and the extra padding in Firefox */ +.wp-core-ui button::-moz-focus-inner, +.wp-core-ui input[type="reset"]::-moz-focus-inner, +.wp-core-ui input[type="button"]::-moz-focus-inner, +.wp-core-ui input[type="submit"]::-moz-focus-inner { + border-width: 0; + border-style: none; + padding: 0; +} + +.wp-core-ui .button.button-large, +.wp-core-ui .button-group.button-large .button { + height: 30px; + line-height: 28px; + padding: 0 12px 2px; +} + +.wp-core-ui .button.button-small, +.wp-core-ui .button-group.button-small .button { + 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; + height: 46px; + line-height: 44px; + padding: 0 36px; +} + +.wp-core-ui .button:active, +.wp-core-ui .button:focus { + outline: none; +} + +.ie8 .wp-core-ui .button-link:focus { + outline: #5b9dd9 solid 1px; +} + +.wp-core-ui .button.hidden { + display: none; +} + +/* Style Reset buttons as simple text links */ + +.wp-core-ui input[type="reset"], +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active, +.wp-core-ui input[type="reset"]:focus { + background: none; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + padding: 0 2px 1px; + width: auto; +} + +/* ---------------------------------------------------------------------------- + 2.0 - Default Button Style +---------------------------------------------------------------------------- */ + +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #555; + border-color: #cccccc; + background: #f7f7f7; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + vertical-align: top; +} + +.wp-core-ui p .button { + vertical-align: baseline; +} + +.wp-core-ui .button-link { + border: 0; + background: none; + outline: none; + cursor: pointer; +} + +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.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, +.wp-core-ui .button-link:focus { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.wp-core-ui .button.active, +.wp-core-ui .button.active:hover, +.wp-core-ui .button:active, +.wp-core-ui .button-secondary:active { + background: #eee; + border-color: #999; + color: #32373c; + -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); +} + +.wp-core-ui .button.active:focus { + -webkit-box-shadow: + inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.wp-core-ui .button[disabled], +.wp-core-ui .button:disabled, +.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 { + color: #a0a5aa !important; + border-color: #ddd !important; + background: #f7f7f7 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: 0 1px 0 #fff !important; + cursor: default; +} + +/* ---------------------------------------------------------------------------- + 3.0 - Primary Button Style +---------------------------------------------------------------------------- */ + +.wp-core-ui .button-primary { + background: #00a0d2; + border-color: #0073aa; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5 ), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + color: #fff; + text-decoration: none; +} + +.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: #0091cd; + border-color: #0073aa; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ); + color: #fff; +} + +.wp-core-ui .button-primary.focus, +.wp-core-ui .button-primary:focus { + border-color: #0e3950; + -webkit-box-shadow: + inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.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: #0073aa; + border-color: #005082; + color: rgba( 255, 255, 255, 0.95 ); + -webkit-box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); + 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: #94cde7 !important; + background: #298cba !important; + border-color: #1b607f !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: 0 -1px 0 rgba( 0, 0, 0, 0.1 ) !important; + cursor: default; +} + +/* ---------------------------------------------------------------------------- + 4.0 - Button Groups +---------------------------------------------------------------------------- */ + +.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; + -webkit-border-radius: 0; + 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 { + -webkit-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.wp-core-ui .button-group > .button:last-child { + -webkit-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.wp-core-ui .button-group > .button:focus { + position: relative; + z-index: 1; +} + +/* ---------------------------------------------------------------------------- + 5.0 - Responsive Button Styles +---------------------------------------------------------------------------- */ + +@media screen and ( max-width: 782px ) { + + .wp-core-ui .button, + .wp-core-ui .button.button-large, + .wp-core-ui .button.button-small, + input#publish, + input#save-post, + a.preview { + 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; + } + + /* Publish Metabox Options */ + .wp-core-ui .save-post-status.button { + position: relative; + margin: 0 14px 0 10px; /* 14px right margin to match all other buttons */ + } + + /* Reset responsive styles in Press This, Customizer */ + + .wp-core-ui.wp-customizer .button { + padding: 0 10px 1px; + font-size: 13px; + line-height: 26px; + height: 28px; + margin: 0; + vertical-align: inherit; + } + + /* Reset responsive styles on Log in button on iframed login form */ + + .interim-login .button.button-large { + height: 30px; + line-height: 28px; + padding: 0 12px 2px; + } + +} diff --git a/wp-includes/css/buttons.min.css b/wp-includes/css/buttons.min.css new file mode 100644 index 0000000000..9af9882d73 --- /dev/null +++ b/wp-includes/css/buttons.min.css @@ -0,0 +1 @@ +.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;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui button::-moz-focus-inner,.wp-core-ui input[type=reset]::-moz-focus-inner,.wp-core-ui input[type=button]::-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}.ie8 .wp-core-ui .button-link:focus{outline:#5b9dd9 solid 1px}.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;-webkit-box-shadow: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;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.wp-core-ui p .button{vertical-align:baseline}.wp-core-ui .button-link{border:0;background:0 0;outline:0;cursor:pointer}.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-link:focus,.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.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;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.wp-core-ui .button.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.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;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default}.wp-core-ui .button-primary{background:#00a0d2;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration: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:#0091cd;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.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:#005082;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);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:#94cde7!important;background:#298cba!important;border-color:#1b607f!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!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;-webkit-border-radius:0;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{-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.wp-core-ui .button-group>.button:last-child{-webkit-border-radius:0 3px 3px 0;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}.interim-login .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}} \ No newline at end of file diff --git a/wp-includes/css/customize-preview.css b/wp-includes/css/customize-preview.css new file mode 100644 index 0000000000..bc4a6fe903 --- /dev/null +++ b/wp-includes/css/customize-preview.css @@ -0,0 +1,6 @@ +.customize-partial-refreshing { + opacity: 0.25; + -webkit-transition: opacity 0.25s; + transition: opacity 0.25s; + cursor: progress; +} diff --git a/wp-includes/css/customize-preview.min.css b/wp-includes/css/customize-preview.min.css new file mode 100644 index 0000000000..dadf3f5216 --- /dev/null +++ b/wp-includes/css/customize-preview.min.css @@ -0,0 +1 @@ +.customize-partial-refreshing{opacity:.25;-webkit-transition:opacity .25s;transition:opacity .25s;cursor:progress} \ No newline at end of file diff --git a/wp-includes/css/dashicons.css b/wp-includes/css/dashicons.css new file mode 100644 index 0000000000..33cf28781f --- /dev/null +++ b/wp-includes/css/dashicons.css @@ -0,0 +1,1015 @@ +@font-face { + font-family: "dashicons"; + src: url(../fonts/dashicons.eot); +} + +@font-face { + font-family: "dashicons"; + src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff'), + url(../fonts/dashicons.ttf) format("truetype"), + url(../fonts/dashicons.svg#dashicons) format("svg"); + font-weight: normal; + font-style: normal; +} + +.dashicons, +.dashicons-before:before { + display: inline-block; + width: 20px; + height: 20px; + font-size: 20px; + line-height: 1; + font-family: "dashicons"; + text-decoration: inherit; + font-weight: normal; + font-style: normal; + vertical-align: top; + text-align: center; + -webkit-transition: color .1s ease-in 0; + transition: color .1s ease-in 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Admin Menu Icons */ + +.dashicons-menu:before { + content: "\f333"; +} + +.dashicons-admin-site:before { + content: "\f319"; +} + +.dashicons-dashboard:before { + content: "\f226"; +} + +.dashicons-admin-media:before { + content: "\f104"; +} + +.dashicons-admin-page:before { + content: "\f105"; +} + +.dashicons-admin-comments:before { + content: "\f101"; +} + +.dashicons-admin-appearance:before { + content: "\f100"; +} + +.dashicons-admin-plugins:before { + content: "\f106"; +} + +.dashicons-admin-users:before { + content: "\f110"; +} + +.dashicons-admin-tools:before { + content: "\f107"; +} + +.dashicons-admin-settings:before { + content: "\f108"; +} + +.dashicons-admin-network:before { + content: "\f112"; +} + +.dashicons-admin-generic:before { + content: "\f111"; +} + +.dashicons-admin-home:before { + content: "\f102"; +} + +.dashicons-admin-collapse:before { + content: "\f148"; +} + +.dashicons-filter:before { + content: "\f536"; +} + +.dashicons-admin-customizer:before { + content: "\f540"; +} + +.dashicons-admin-multisite:before { + content: "\f541"; +} + + +/* Both Admin Menu and Post Formats */ + +.dashicons-admin-links:before, +.dashicons-format-links:before { + content: "\f103"; +} + +.dashicons-admin-post:before, +.dashicons-format-standard:before { + content: "\f109"; +} + + +/* Post Format Icons */ + +.dashicons-format-image:before { + content: "\f128"; +} + +.dashicons-format-gallery:before { + content: "\f161"; +} + +.dashicons-format-audio:before { + content: "\f127"; +} + +.dashicons-format-video:before { + content: "\f126"; +} + +.dashicons-format-chat:before { + content: "\f125"; +} + +.dashicons-format-status:before { + content: "\f130"; +} + +.dashicons-format-aside:before { + content: "\f123"; +} + +.dashicons-format-quote:before { + content: "\f122"; +} + + +/* Welcome Screen Icons */ + +.dashicons-welcome-write-blog:before, +.dashicons-welcome-edit-page:before { + content: "\f119"; +} + +.dashicons-welcome-add-page:before { + content: "\f133"; +} + +.dashicons-welcome-view-site:before { + content: "\f115"; +} + +.dashicons-welcome-widgets-menus:before { + content: "\f116"; +} + +.dashicons-welcome-comments:before { + content: "\f117"; +} + +.dashicons-welcome-learn-more:before { + content: "\f118"; +} + + +/* Image Editing Icons */ + +.dashicons-image-crop:before { + content: "\f165"; +} + +.dashicons-image-rotate:before { + content: "\f531"; +} + + +.dashicons-image-rotate-left:before { + content: "\f166"; +} + +.dashicons-image-rotate-right:before { + content: "\f167"; +} + +.dashicons-image-flip-vertical:before { + content: "\f168"; +} + +.dashicons-image-flip-horizontal:before { + content: "\f169"; +} + +.dashicons-image-filter:before { + content: "\f533"; +} + + +/* Both Image Editing and TinyMCE */ + +.dashicons-undo:before { + content: "\f171"; +} + +.dashicons-redo:before { + content: "\f172"; +} + +/* TinyMCE Icons */ + +.dashicons-editor-bold:before { + content: "\f200"; +} + +.dashicons-editor-italic:before { + content: "\f201"; +} + +.dashicons-editor-ul:before { + content: "\f203"; +} + +.dashicons-editor-ol:before { + content: "\f204"; +} + +.dashicons-editor-quote:before { + content: "\f205"; +} + +.dashicons-editor-alignleft:before { + content: "\f206"; +} + +.dashicons-editor-aligncenter:before { + content: "\f207"; +} + +.dashicons-editor-alignright:before { + content: "\f208"; +} + +.dashicons-editor-insertmore:before { + content: "\f209"; +} + +.dashicons-editor-spellcheck:before { + content: "\f210"; +} + +.dashicons-editor-distractionfree:before, +.dashicons-editor-expand:before { + content: "\f211"; +} + +.dashicons-editor-contract:before { + content: "\f506"; +} + +.dashicons-editor-kitchensink:before { + content: "\f212"; +} + +.dashicons-editor-underline:before { + content: "\f213"; +} + +.dashicons-editor-justify:before { + content: "\f214"; +} + +.dashicons-editor-textcolor:before { + content: "\f215"; +} + +.dashicons-editor-paste-word:before { + content: "\f216"; +} + +.dashicons-editor-paste-text:before { + content: "\f217"; +} + +.dashicons-editor-removeformatting:before { + content: "\f218"; +} + +.dashicons-editor-video:before { + content: "\f219"; +} + +.dashicons-editor-customchar:before { + content: "\f220"; +} + +.dashicons-editor-outdent:before { + content: "\f221"; +} + +.dashicons-editor-indent:before { + content: "\f222"; +} + +.dashicons-editor-help:before { + content: "\f223"; +} + +.dashicons-editor-strikethrough:before { + content: "\f224"; +} + +.dashicons-editor-unlink:before { + content: "\f225"; +} + +.dashicons-editor-rtl:before { + content: "\f320"; +} + +.dashicons-editor-break:before { + content: "\f474"; +} + +.dashicons-editor-code:before { + content: "\f475"; +} + +.dashicons-editor-paragraph:before { + content: "\f476"; +} + +.dashicons-editor-table:before { + content: "\f535"; +} + +/* Post Icons */ + +.dashicons-align-left:before { + content: "\f135"; +} + +.dashicons-align-right:before { + content: "\f136"; +} + +.dashicons-align-center:before { + content: "\f134"; +} + +.dashicons-align-none:before { + content: "\f138"; +} + +.dashicons-lock:before { + content: "\f160"; +} + +.dashicons-unlock:before { + content: "\f528"; +} + +.dashicons-calendar:before { + content: "\f145"; +} + +.dashicons-calendar-alt:before { + content: "\f508"; +} + +.dashicons-visibility:before { + content: "\f177"; +} + +.dashicons-hidden:before { + content: "\f530"; +} + +.dashicons-post-status:before { + content: "\f173"; +} + +.dashicons-edit:before { + content: "\f464"; +} + +.dashicons-post-trash:before, +.dashicons-trash:before { + content: "\f182"; +} + +.dashicons-sticky:before { + content: "\f537"; +} + + +/* Sorting */ + +.dashicons-external:before { + content: "\f504"; +} + +.dashicons-arrow-up:before { + content: "\f142"; +} + +.dashicons-arrow-down:before { + content: "\f140"; +} + +.dashicons-arrow-left:before { + content: "\f141"; +} + +.dashicons-arrow-right:before { + content: "\f139"; +} + +.dashicons-arrow-up-alt:before { + content: "\f342"; +} + +.dashicons-arrow-down-alt:before { + content: "\f346"; +} + +.dashicons-arrow-left-alt:before { + content: "\f340"; +} + +.dashicons-arrow-right-alt:before { + content: "\f344"; +} + +.dashicons-arrow-up-alt2:before { + content: "\f343"; +} + +.dashicons-arrow-down-alt2:before { + content: "\f347"; +} + +.dashicons-arrow-left-alt2:before { + content: "\f341"; +} + +.dashicons-arrow-right-alt2:before { + content: "\f345"; +} + +.dashicons-leftright:before { + content: "\f229"; +} + +.dashicons-sort:before { + content: "\f156"; +} + +.dashicons-randomize:before { + content: "\f503" +} + +.dashicons-list-view:before { + content: "\f163"; +} + +.dashicons-exerpt-view:before, /* Misspelled. Use .dashicons-excerpt-view instead. */ +.dashicons-excerpt-view:before { + content: "\f164"; +} + +.dashicons-grid-view:before { + content: "\f509"; +} + + +/* WPorg specific icons: Jobs, Profiles, WordCamps */ + +.dashicons-hammer:before { + content: "\f308"; +} + +.dashicons-art:before { + content: "\f309"; +} + +.dashicons-migrate:before { + content: "\f310"; +} + +.dashicons-performance:before { + content: "\f311"; +} + +.dashicons-universal-access:before { + content: "\f483"; +} + +.dashicons-universal-access-alt:before { + content: "\f507"; +} + +.dashicons-tickets:before { + content: "\f486"; +} + +.dashicons-nametag:before { + content: "\f484"; +} + +.dashicons-clipboard:before { + content: "\f481"; +} + +.dashicons-heart:before { + content: "\f487"; +} + +.dashicons-megaphone:before { + content: "\f488"; +} + +.dashicons-schedule:before { + content: "\f489"; +} + + +/* Internal/Products */ + +.dashicons-wordpress:before { + content: "\f120"; +} + +.dashicons-wordpress-alt:before { + content: "\f324"; +} + +.dashicons-pressthis:before { + content: "\f157"; +} + +.dashicons-update:before { + content: "\f463"; +} + +.dashicons-screenoptions:before { + content: "\f180"; +} + +.dashicons-cart:before { + content: "\f174"; +} + +.dashicons-feedback:before { + content: "\f175"; +} + +.dashicons-cloud:before { + content: "\f176"; +} + +.dashicons-translation:before { + content: "\f326"; +} + + +/* Taxonomies */ + +.dashicons-tag:before { + content: "\f323"; +} + +.dashicons-category:before { + content: "\f318"; +} + + +/* Widget icons */ + +.dashicons-archive:before { + content: "\f480"; +} + +.dashicons-tagcloud:before { + content: "\f479"; +} + +.dashicons-text:before { + content: "\f478"; +} + + +/* Media icons */ + +.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-playlist-audio:before { + content: "\f492" +} + +.dashicons-playlist-video:before { + content: "\f493" +} + +.dashicons-controls-play:before { + content: "\f522" +} + +.dashicons-controls-pause:before { + content: "\f523" +} + +.dashicons-controls-forward:before { + content: "\f519" +} + +.dashicons-controls-skipforward:before { + content: "\f517" +} + +.dashicons-controls-back:before { + content: "\f518" +} + +.dashicons-controls-skipback:before { + content: "\f516" +} + +.dashicons-controls-repeat:before { + content: "\f515" +} + +.dashicons-controls-volumeon:before { + content: "\f521" +} + +.dashicons-controls-volumeoff:before { + content: "\f520" +} + + +/* Alerts/Notifications/Flags */ + +.dashicons-yes:before { + content: "\f147"; +} + +.dashicons-no:before { + content: "\f158"; +} + +.dashicons-no-alt:before { + content: "\f335"; +} + +.dashicons-plus:before { + content: "\f132"; +} + +.dashicons-plus-alt:before { + content: "\f502" +} + +.dashicons-plus-alt2:before { + content: "\f543" +} + +.dashicons-minus:before { + content: "\f460"; +} + +.dashicons-dismiss:before { + content: "\f153"; +} + +.dashicons-marker:before { + content: "\f159"; +} + +.dashicons-star-filled:before { + content: "\f155"; +} + +.dashicons-star-half:before { + content: "\f459"; +} + +.dashicons-star-empty:before { + content: "\f154"; +} + +.dashicons-flag:before { + content: "\f227"; +} + +.dashicons-info:before { + content: "\f348"; +} + +.dashicons-warning:before { + content: "\f534"; +} + + +/* Social Icons */ + +.dashicons-share:before { + content: "\f237"; +} + +.dashicons-share1:before { + content: "\f237"; +} + +.dashicons-share-alt:before { + content: "\f240"; +} + +.dashicons-share-alt2:before { + content: "\f242"; +} + +.dashicons-twitter:before { + content: "\f301"; +} + +.dashicons-rss:before { + content: "\f303"; +} + +.dashicons-email:before { + content: "\f465"; +} + +.dashicons-email-alt:before { + content: "\f466"; +} + +.dashicons-facebook:before { + content: "\f304"; +} + +.dashicons-facebook-alt:before { + content: "\f305"; +} + +.dashicons-networking:before { + content: "\f325"; +} + +.dashicons-googleplus:before { + content: "\f462"; +} + + +/* Misc/CPT */ + +.dashicons-location:before { + content: "\f230"; +} + +.dashicons-location-alt:before { + content: "\f231"; +} + +.dashicons-camera:before { + content: "\f306"; +} + +.dashicons-images-alt:before { + content: "\f232"; +} + +.dashicons-images-alt2:before { + content: "\f233"; +} + +.dashicons-video-alt:before { + content: "\f234"; +} + +.dashicons-video-alt2:before { + content: "\f235"; +} + +.dashicons-video-alt3:before { + content: "\f236"; +} + +.dashicons-vault:before { + content: "\f178"; +} + +.dashicons-shield:before { + content: "\f332"; +} + +.dashicons-shield-alt:before { + content: "\f334"; +} + +.dashicons-sos:before { + content: "\f468"; +} + +.dashicons-search:before { + content: "\f179"; +} + +.dashicons-slides:before { + content: "\f181"; +} + +.dashicons-analytics:before { + content: "\f183"; +} + +.dashicons-chart-pie:before { + content: "\f184"; +} + +.dashicons-chart-bar:before { + content: "\f185"; +} + +.dashicons-chart-line:before { + content: "\f238"; +} + +.dashicons-chart-area:before { + content: "\f239"; +} + +.dashicons-groups:before { + content: "\f307"; +} + +.dashicons-businessman:before { + content: "\f338"; +} + +.dashicons-id:before { + content: "\f336"; +} + +.dashicons-id-alt:before { + content: "\f337"; +} + +.dashicons-products:before { + content: "\f312"; +} + +.dashicons-awards:before { + content: "\f313"; +} + +.dashicons-forms:before { + content: "\f314"; +} + +.dashicons-testimonial:before { + content: "\f473"; +} + +.dashicons-portfolio:before { + content: "\f322"; +} + +.dashicons-book:before { + content: "\f330"; +} + +.dashicons-book-alt:before { + content: "\f331"; +} + +.dashicons-download:before { + content: "\f316"; +} + +.dashicons-upload:before { + content: "\f317"; +} + +.dashicons-backup:before { + content: "\f321"; +} + +.dashicons-clock:before { + content: "\f469"; +} + +.dashicons-lightbulb:before { + content: "\f339"; +} + +.dashicons-microphone:before { + content: "\f482"; +} + +.dashicons-desktop:before { + content: "\f472"; +} + +.dashicons-tablet:before { + content: "\f471"; +} + +.dashicons-smartphone:before { + content: "\f470"; +} + +.dashicons-phone:before { + content: "\f525"; +} + +.dashicons-smiley:before { + content: "\f328"; +} + +.dashicons-index-card:before { + content: "\f510"; +} + +.dashicons-carrot:before { + content: "\f511"; +} + +.dashicons-building:before { + content: "\f512"; +} + +.dashicons-store:before { + content: "\f513"; +} + +.dashicons-album:before { + content: "\f514"; +} + +.dashicons-palmtree:before { + content: "\f527"; +} + +.dashicons-tickets-alt:before { + content: "\f524"; +} + +.dashicons-money:before { + content: "\f526"; +} + +.dashicons-thumbs-up:before { + content: "\f529"; +} + +.dashicons-thumbs-down:before { + content: "\f542"; +} + +.dashicons-layout:before { + content: "\f538"; +} \ No newline at end of file diff --git a/wp-includes/css/dashicons.min.css b/wp-includes/css/dashicons.min.css new file mode 100644 index 0000000000..2c8e0ebade --- /dev/null +++ b/wp-includes/css/dashicons.min.css @@ -0,0 +1 @@ +@font-face{font-family:dashicons;src:url(../fonts/dashicons.eot)}@font-face{font-family:dashicons;src:url(data:application/font-woff;charset=utf-8;base64,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) format('woff'),url(../fonts/dashicons.ttf) format("truetype"),url(../fonts/dashicons.svg#dashicons) format("svg");font-weight:400;font-style:normal}.dashicons,.dashicons-before:before{display:inline-block;width:20px;height:20px;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dashicons-menu:before{content:"\f333"}.dashicons-admin-site:before{content:"\f319"}.dashicons-dashboard:before{content:"\f226"}.dashicons-admin-media:before{content:"\f104"}.dashicons-admin-page:before{content:"\f105"}.dashicons-admin-comments:before{content:"\f101"}.dashicons-admin-appearance:before{content:"\f100"}.dashicons-admin-plugins:before{content:"\f106"}.dashicons-admin-users:before{content:"\f110"}.dashicons-admin-tools:before{content:"\f107"}.dashicons-admin-settings:before{content:"\f108"}.dashicons-admin-network:before{content:"\f112"}.dashicons-admin-generic:before{content:"\f111"}.dashicons-admin-home:before{content:"\f102"}.dashicons-admin-collapse:before{content:"\f148"}.dashicons-filter:before{content:"\f536"}.dashicons-admin-customizer:before{content:"\f540"}.dashicons-admin-multisite:before{content:"\f541"}.dashicons-admin-links:before,.dashicons-format-links:before{content:"\f103"}.dashicons-admin-post:before,.dashicons-format-standard:before{content:"\f109"}.dashicons-format-image:before{content:"\f128"}.dashicons-format-gallery:before{content:"\f161"}.dashicons-format-audio:before{content:"\f127"}.dashicons-format-video:before{content:"\f126"}.dashicons-format-chat:before{content:"\f125"}.dashicons-format-status:before{content:"\f130"}.dashicons-format-aside:before{content:"\f123"}.dashicons-format-quote:before{content:"\f122"}.dashicons-welcome-edit-page:before,.dashicons-welcome-write-blog:before{content:"\f119"}.dashicons-welcome-add-page:before{content:"\f133"}.dashicons-welcome-view-site:before{content:"\f115"}.dashicons-welcome-widgets-menus:before{content:"\f116"}.dashicons-welcome-comments:before{content:"\f117"}.dashicons-welcome-learn-more:before{content:"\f118"}.dashicons-image-crop:before{content:"\f165"}.dashicons-image-rotate:before{content:"\f531"}.dashicons-image-rotate-left:before{content:"\f166"}.dashicons-image-rotate-right:before{content:"\f167"}.dashicons-image-flip-vertical:before{content:"\f168"}.dashicons-image-flip-horizontal:before{content:"\f169"}.dashicons-image-filter:before{content:"\f533"}.dashicons-undo:before{content:"\f171"}.dashicons-redo:before{content:"\f172"}.dashicons-editor-bold:before{content:"\f200"}.dashicons-editor-italic:before{content:"\f201"}.dashicons-editor-ul:before{content:"\f203"}.dashicons-editor-ol:before{content:"\f204"}.dashicons-editor-quote:before{content:"\f205"}.dashicons-editor-alignleft:before{content:"\f206"}.dashicons-editor-aligncenter:before{content:"\f207"}.dashicons-editor-alignright:before{content:"\f208"}.dashicons-editor-insertmore:before{content:"\f209"}.dashicons-editor-spellcheck:before{content:"\f210"}.dashicons-editor-distractionfree:before,.dashicons-editor-expand:before{content:"\f211"}.dashicons-editor-contract:before{content:"\f506"}.dashicons-editor-kitchensink:before{content:"\f212"}.dashicons-editor-underline:before{content:"\f213"}.dashicons-editor-justify:before{content:"\f214"}.dashicons-editor-textcolor:before{content:"\f215"}.dashicons-editor-paste-word:before{content:"\f216"}.dashicons-editor-paste-text:before{content:"\f217"}.dashicons-editor-removeformatting:before{content:"\f218"}.dashicons-editor-video:before{content:"\f219"}.dashicons-editor-customchar:before{content:"\f220"}.dashicons-editor-outdent:before{content:"\f221"}.dashicons-editor-indent:before{content:"\f222"}.dashicons-editor-help:before{content:"\f223"}.dashicons-editor-strikethrough:before{content:"\f224"}.dashicons-editor-unlink:before{content:"\f225"}.dashicons-editor-rtl:before{content:"\f320"}.dashicons-editor-break:before{content:"\f474"}.dashicons-editor-code:before{content:"\f475"}.dashicons-editor-paragraph:before{content:"\f476"}.dashicons-editor-table:before{content:"\f535"}.dashicons-align-left:before{content:"\f135"}.dashicons-align-right:before{content:"\f136"}.dashicons-align-center:before{content:"\f134"}.dashicons-align-none:before{content:"\f138"}.dashicons-lock:before{content:"\f160"}.dashicons-unlock:before{content:"\f528"}.dashicons-calendar:before{content:"\f145"}.dashicons-calendar-alt:before{content:"\f508"}.dashicons-visibility:before{content:"\f177"}.dashicons-hidden:before{content:"\f530"}.dashicons-post-status:before{content:"\f173"}.dashicons-edit:before{content:"\f464"}.dashicons-post-trash:before,.dashicons-trash:before{content:"\f182"}.dashicons-sticky:before{content:"\f537"}.dashicons-external:before{content:"\f504"}.dashicons-arrow-up:before{content:"\f142"}.dashicons-arrow-down:before{content:"\f140"}.dashicons-arrow-left:before{content:"\f141"}.dashicons-arrow-right:before{content:"\f139"}.dashicons-arrow-up-alt:before{content:"\f342"}.dashicons-arrow-down-alt:before{content:"\f346"}.dashicons-arrow-left-alt:before{content:"\f340"}.dashicons-arrow-right-alt:before{content:"\f344"}.dashicons-arrow-up-alt2:before{content:"\f343"}.dashicons-arrow-down-alt2:before{content:"\f347"}.dashicons-arrow-left-alt2:before{content:"\f341"}.dashicons-arrow-right-alt2:before{content:"\f345"}.dashicons-leftright:before{content:"\f229"}.dashicons-sort:before{content:"\f156"}.dashicons-randomize:before{content:"\f503"}.dashicons-list-view:before{content:"\f163"}.dashicons-excerpt-view:before,.dashicons-exerpt-view:before{content:"\f164"}.dashicons-grid-view:before{content:"\f509"}.dashicons-hammer:before{content:"\f308"}.dashicons-art:before{content:"\f309"}.dashicons-migrate:before{content:"\f310"}.dashicons-performance:before{content:"\f311"}.dashicons-universal-access:before{content:"\f483"}.dashicons-universal-access-alt:before{content:"\f507"}.dashicons-tickets:before{content:"\f486"}.dashicons-nametag:before{content:"\f484"}.dashicons-clipboard:before{content:"\f481"}.dashicons-heart:before{content:"\f487"}.dashicons-megaphone:before{content:"\f488"}.dashicons-schedule:before{content:"\f489"}.dashicons-wordpress:before{content:"\f120"}.dashicons-wordpress-alt:before{content:"\f324"}.dashicons-pressthis:before{content:"\f157"}.dashicons-update:before{content:"\f463"}.dashicons-screenoptions:before{content:"\f180"}.dashicons-cart:before{content:"\f174"}.dashicons-feedback:before{content:"\f175"}.dashicons-cloud:before{content:"\f176"}.dashicons-translation:before{content:"\f326"}.dashicons-tag:before{content:"\f323"}.dashicons-category:before{content:"\f318"}.dashicons-archive:before{content:"\f480"}.dashicons-tagcloud:before{content:"\f479"}.dashicons-text:before{content:"\f478"}.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-playlist-audio:before{content:"\f492"}.dashicons-playlist-video:before{content:"\f493"}.dashicons-controls-play:before{content:"\f522"}.dashicons-controls-pause:before{content:"\f523"}.dashicons-controls-forward:before{content:"\f519"}.dashicons-controls-skipforward:before{content:"\f517"}.dashicons-controls-back:before{content:"\f518"}.dashicons-controls-skipback:before{content:"\f516"}.dashicons-controls-repeat:before{content:"\f515"}.dashicons-controls-volumeon:before{content:"\f521"}.dashicons-controls-volumeoff:before{content:"\f520"}.dashicons-yes:before{content:"\f147"}.dashicons-no:before{content:"\f158"}.dashicons-no-alt:before{content:"\f335"}.dashicons-plus:before{content:"\f132"}.dashicons-plus-alt:before{content:"\f502"}.dashicons-plus-alt2:before{content:"\f543"}.dashicons-minus:before{content:"\f460"}.dashicons-dismiss:before{content:"\f153"}.dashicons-marker:before{content:"\f159"}.dashicons-star-filled:before{content:"\f155"}.dashicons-star-half:before{content:"\f459"}.dashicons-star-empty:before{content:"\f154"}.dashicons-flag:before{content:"\f227"}.dashicons-info:before{content:"\f348"}.dashicons-warning:before{content:"\f534"}.dashicons-share1:before,.dashicons-share:before{content:"\f237"}.dashicons-share-alt:before{content:"\f240"}.dashicons-share-alt2:before{content:"\f242"}.dashicons-twitter:before{content:"\f301"}.dashicons-rss:before{content:"\f303"}.dashicons-email:before{content:"\f465"}.dashicons-email-alt:before{content:"\f466"}.dashicons-facebook:before{content:"\f304"}.dashicons-facebook-alt:before{content:"\f305"}.dashicons-networking:before{content:"\f325"}.dashicons-googleplus:before{content:"\f462"}.dashicons-location:before{content:"\f230"}.dashicons-location-alt:before{content:"\f231"}.dashicons-camera:before{content:"\f306"}.dashicons-images-alt:before{content:"\f232"}.dashicons-images-alt2:before{content:"\f233"}.dashicons-video-alt:before{content:"\f234"}.dashicons-video-alt2:before{content:"\f235"}.dashicons-video-alt3:before{content:"\f236"}.dashicons-vault:before{content:"\f178"}.dashicons-shield:before{content:"\f332"}.dashicons-shield-alt:before{content:"\f334"}.dashicons-sos:before{content:"\f468"}.dashicons-search:before{content:"\f179"}.dashicons-slides:before{content:"\f181"}.dashicons-analytics:before{content:"\f183"}.dashicons-chart-pie:before{content:"\f184"}.dashicons-chart-bar:before{content:"\f185"}.dashicons-chart-line:before{content:"\f238"}.dashicons-chart-area:before{content:"\f239"}.dashicons-groups:before{content:"\f307"}.dashicons-businessman:before{content:"\f338"}.dashicons-id:before{content:"\f336"}.dashicons-id-alt:before{content:"\f337"}.dashicons-products:before{content:"\f312"}.dashicons-awards:before{content:"\f313"}.dashicons-forms:before{content:"\f314"}.dashicons-testimonial:before{content:"\f473"}.dashicons-portfolio:before{content:"\f322"}.dashicons-book:before{content:"\f330"}.dashicons-book-alt:before{content:"\f331"}.dashicons-download:before{content:"\f316"}.dashicons-upload:before{content:"\f317"}.dashicons-backup:before{content:"\f321"}.dashicons-clock:before{content:"\f469"}.dashicons-lightbulb:before{content:"\f339"}.dashicons-microphone:before{content:"\f482"}.dashicons-desktop:before{content:"\f472"}.dashicons-tablet:before{content:"\f471"}.dashicons-smartphone:before{content:"\f470"}.dashicons-phone:before{content:"\f525"}.dashicons-smiley:before{content:"\f328"}.dashicons-index-card:before{content:"\f510"}.dashicons-carrot:before{content:"\f511"}.dashicons-building:before{content:"\f512"}.dashicons-store:before{content:"\f513"}.dashicons-album:before{content:"\f514"}.dashicons-palmtree:before{content:"\f527"}.dashicons-tickets-alt:before{content:"\f524"}.dashicons-money:before{content:"\f526"}.dashicons-thumbs-up:before{content:"\f529"}.dashicons-thumbs-down:before{content:"\f542"}.dashicons-layout:before{content:"\f538"} \ No newline at end of file diff --git a/wp-includes/css/editor-rtl.css b/wp-includes/css/editor-rtl.css new file mode 100644 index 0000000000..a961b7afd1 --- /dev/null +++ b/wp-includes/css/editor-rtl.css @@ -0,0 +1,1748 @@ +/*------------------------------------------------------------------------------ + TinyMCE and Quicklinks toolbars +------------------------------------------------------------------------------*/ + +/* TinyMCE widgets/containers */ + +.mce-container, +.mce-container *, +.mce-widget, +.mce-widget * { + color: inherit; + font-family: inherit; +} + +/* TinyMCE windows */ +#mce-modal-block, +#mce-modal-block.mce-fade { + opacity: 0.7; + filter: alpha(opacity=70); + -webkit-transition: none; + transition: none; +} + +.mce-window { + -webkit-border-radius: 0; + border-radius: 0; + -webkit-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; + -webkit-transition: none; + transition: none; +} + +.mce-window .mce-container-body.mce-abs-layout { + overflow: visible; +} + +.mce-window .mce-window-head { + background: #fcfcfc; + border-bottom: 1px solid #dfdfdf; + 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 { + color: transparent; + top: 0; + left: 0; + width: 36px; + height: 36px; + line-height: 36px; + text-align: center; +} + +.mce-window .mce-window-head .mce-close:before { + font: normal 20px/36px 'dashicons'; + text-align: center; + color: #666; + width: 36px; + height: 36px; + display: block; +} + +.mce-window .mce-window-head .mce-close:hover:before { + color: #00a0d2; +} + +.mce-window .mce-window-head .mce-dragh { + width: -webkit-calc( 100% - 36px ); + width: calc( 100% - 36px ); +} + +.mce-window .mce-foot { + border-top: 1px solid #dfdfdf; +} + +.mce-textbox, +.mce-checkbox i.mce-i-checkbox, +#wp-link .query-results { + border: 1px solid #ddd; + -webkit-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); + box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); + -webkit-transition: .05s all ease-in-out; + transition: .05s all ease-in-out; +} + +.mce-textbox:focus, +.mce-textbox.mce-focus, +.mce-checkbox:focus i.mce-i-checkbox, +#wp-link .query-results:focus { + border-color: #5b9dd9; + -webkit-box-shadow: 0 0 2px rgba(30,140,190,0.8); + box-shadow: 0 0 2px rgba(30,140,190,0.8); +} + +.mce-window .mce-wp-help { + height: 360px; + width: 460px; + overflow: auto; +} + +.mce-window .mce-wp-help * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: normal; +} + +.mce-window .wp-editor-help table { + width: 100%; + margin-bottom: 20px; +} + +.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: bold; + padding-bottom: 0; +} + +.mce-window .wp-editor-help kbd { + font-family: monospace; + padding: 2px 7px 3px; + font-weight: bold; + margin: 0; + background: #eaeaea; + background: rgba(0,0,0,0.08); +} + +.mce-window .wp-help-header td { + font-weight: bold; + padding: 0 5px; +} + +.mce-window .wp-help-th-center td:nth-child(odd), +.mce-window .wp-help-th-center th:nth-child(odd) { + text-align: center; +} + +/* TinyMCE menus */ +.mce-menu, +.mce-floatpanel.mce-popover { + border-color: rgba(0,0,0,0.15); + -webkit-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: 0 3px 5px rgba( 0, 0, 0, 0.2 ); + box-shadow: 0 3px 5px rgba( 0, 0, 0, 0.2 ); +} + +.mce-menu, +.mce-floatpanel.mce-popover.mce-bottom { + 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; +} + +.mce-menu-has-icons i.mce-ico { + line-height: 20px; +} + +/* TinyMCE panel */ +div.mce-panel { + border: 0; + background: #fff; +} + +.mce-panel.mce-menu { + border: 1px solid #ddd; +} + +div.mce-tab { + line-height: 13px; +} + +/* TinyMCE toolbars */ +div.mce-toolbar-grp { + border-bottom: 1px solid #dedede; + background: #f5f5f5; + padding: 0; + position: relative; +} + +div.mce-inline-toolbar-grp { + border: 1px solid #a0a5aa; + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.15 ); + box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.15 ); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-bottom: 8px; + position: absolute; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + max-width: 98%; + z-index: 100100; /* Same as the other TinyMCE "panels" */ +} + +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:before, +div.mce-inline-toolbar-grp:after { + 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:before, +div.mce-inline-toolbar-grp.mce-arrow-left:after { + 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:before, +div.mce-inline-toolbar-grp.mce-arrow-right:after { + 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-item, +.mce-path .mce-divider { + font-size: 12px; +} + +.mce-toolbar .mce-btn, +.qt-dfw { + border-color: transparent; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + text-shadow: none; + cursor: pointer; +} + +.mce-toolbar .mce-btn-group .mce-btn, +.qt-dfw { + border: 1px solid transparent; + margin: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; +} + +.mce-toolbar .mce-btn-group .mce-btn:hover, +.mce-toolbar .mce-btn-group .mce-btn:focus, +.qt-dfw:hover, +.qt-dfw:focus { + background: #fafafa; + border-color: #999; + color: #23282d; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + 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: #ebebeb; + border-color: #999; + -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.3 ); + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.3 ); +} + +.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover { + border-color: #555; +} + +.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover i.mce-ico { + color: #555; +} + +.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover, +.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus { + color: #a0a5aa; + background: none; + border-color: #ddd; + text-shadow: 0 1px 0 #fff; + -webkit-box-shadow: none; + box-shadow: none; +} + +.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; +} + +/* mce listbox */ +.mce-toolbar .mce-btn-group .mce-btn.mce-listbox { + -webkit-border-radius: 0; + border-radius: 0; + direction: rtl; + background: #fff; + border: 1px solid #ddd; + -webkit-box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .2); + box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .2); +} + +.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover { + border-color: #b4b9be; +} + +.mce-panel .mce-btn i.mce-caret { + border-top: 6px solid #777; + margin-right: 2px; + margin-left: 2px; +} + +.mce-listbox i.mce-caret { + left: 4px; +} + +.mce-panel .mce-btn:hover i.mce-caret { + border-top-color: #32373c; +} + +.mce-panel .mce-active i.mce-caret { + border-top: 0; + border-bottom: 6px solid #32373c; + 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: transparent; + outline: none; +} + +.mce-menu .mce-menu-item:hover, +.mce-menu .mce-menu-item.mce-selected, +.mce-menu .mce-menu-item:focus, +.mce-menu .mce-menu-item-normal.mce-active, +.mce-menu .mce-menu-item-preview.mce-active { + background: #0073aa; /* See color scheme. */ +} + +.mce-menu .mce-menu-item-preview.mce-active { + border-right: none; +} + +.mce-menu .mce-menu-item-preview.mce-active .mce-text { + color: #fff; +} + +.mce-menu .mce-menu-item.mce-disabled { + cursor: default; +} + +.mce-menu .mce-menu-item.mce-disabled:hover { + background: #ccc; +} + +/* Menubar */ +.mce-menubar { + border-color: #e5e5e5; + background: #fff; + border-width: 0px 0px 1px; +} + +.mce-menubar .mce-menubtn { + margin: 2px; +} + +.mce-menubar .mce-menubtn:hover, +.mce-menubar .mce-menubtn.mce-active, +.mce-menubar .mce-menubtn:focus { + border-color: transparent; + background: transparent; +} + +.mce-menubar .mce-menubtn:focus { + color: #124964; + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + 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 #ddd; + height: 0px; + margin: 5px 0; +} + +.mce-menubtn span { + margin-left: 0; + padding-right: 3px; +} + +.mce-menu-has-icons i.mce-ico:before { + margin-right: -2px; +} + +/* Buttons in modals */ +.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; + -webkit-border-radius: 3px; + border-radius: 3px; + white-space: nowrap; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); +} + +/* Remove the dotted border on :focus and the extra padding in Firefox */ +.mce-window .mce-btn::-moz-focus-inner { + border-width: 1px 0; + border-style: solid none; + border-color: transparent; + padding: 0; +} + +.mce-window .mce-btn:hover, +.mce-window .mce-btn:focus { + background: #fafafa; + border-color: #999; + color: #23282d; +} + +.mce-window .mce-btn:focus { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); +} + +.mce-window .mce-btn:active { + background: #eee; + border-color: #999; + color: #32373c; + -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); +} + +.mce-window .mce-btn.mce-disabled { + color: #a0a5aa; + border-color: #ddd; + background: #f7f7f7; + -webkit-box-shadow: none; + box-shadow: none; + text-shadow: 0 1px 0 #fff; + cursor: default; +} + +.mce-window .mce-btn.mce-primary { + background: #00a0d2; + border-color: #0073aa; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5 ), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + color: #fff; + text-decoration: none; +} + +.mce-window .mce-btn.mce-primary:hover, +.mce-window .mce-btn.mce-primary:focus { + background: #1e8cbe; + border-color: #0073aa; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ); + color: #fff; +} + +.mce-window .mce-btn.mce-primary:focus { + border-color: #0e3950; + -webkit-box-shadow: + inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); + box-shadow: + inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); +} + +.mce-window .mce-btn.mce-primary:active { + background: #1b7aa6; + border-color: #005684; + color: rgba( 255, 255, 255, 0.95 ); + -webkit-box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); + vertical-align: top; +} + +.mce-window .mce-btn.mce-primary.mce-disabled { + color: #94cde7; + background: #298cba; + border-color: #1b607f; + -webkit-box-shadow: none; + box-shadow: none; + text-shadow: 0 -1px 0 rgba( 0, 0, 0, 0.1 ); + cursor: default; +} + +.mce-menubtn.mce-fixed-width button { + overflow-x: hidden; + text-overflow: ellipsis; + width: 110px; +} + +/* Charmap modal */ +.mce-charmap { + margin: 3px; +} + +.mce-charmap td { + padding: 0; + border-color: #dfdfdf; + cursor: pointer; +} + +.mce-charmap td:hover { + background: #f3f3f3; +} + +.mce-charmap td div { + width: 18px; + height: 22px; + line-height: 22px; +} + +/* TinyMCE tooltips */ +.mce-tooltip { + margin-top: 2px; +} + +.mce-tooltip-inner { + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-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; +} + +.mce-btn-small .mce-ico { + font-family: 'tinymce-small', Arial; +} + +.mce-toolbar .mce-ico { + color: #777; + line-height: 20px; + width: 20px; + height: 20px; + text-align: center; + text-shadow: none; + margin: 0; + padding: 0; +} + +.qt-dfw { + color: #777; + 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:hover .mce-open, +.mce-toolbar .mce-btn:focus .mce-open, +.mce-toolbar .mce-btn.mce-active .mce-open { + border-right-color: #999; +} + +i.mce-i-bold, +i.mce-i-italic, +i.mce-i-bullist, +i.mce-i-numlist, +i.mce-i-blockquote, +i.mce-i-alignleft, +i.mce-i-aligncenter, +i.mce-i-alignright, +i.mce-i-link, +i.mce-i-unlink, +i.mce-i-wp_more, +i.mce-i-strikethrough, +i.mce-i-spellchecker, +i.mce-i-fullscreen, +i.mce-i-wp_fullscreen, +i.mce-i-dfw, +i.mce-i-wp_adv, +i.mce-i-underline, +i.mce-i-alignjustify, +i.mce-i-forecolor, +i.mce-i-backcolor, +i.mce-i-pastetext, +i.mce-i-pasteword, +i.mce-i-removeformat, +i.mce-i-charmap, +i.mce-i-outdent, +i.mce-i-indent, +i.mce-i-undo, +i.mce-i-redo, +i.mce-i-help, +i.mce-i-wp_help, +i.mce-i-wp-media-library, +i.mce-i-ltr, +i.mce-i-wp_page, +i.mce-i-hr, +i.mce-i-wp_code, +i.mce-i-dashicon, +.mce-close { + 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'; +} + +i.mce-i-fullscreen:before, +i.mce-i-wp_fullscreen:before, +i.mce-i-dfw:before, +.qt-dfw: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-forecolor:before, +i.mce-i-backcolor: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'; +} + +.mce-close:before { + content: '\f158'; +} + +i.mce-i-wp_code:before { + content: '\f475'; +} + +/* RTL button icons */ +.rtl i.mce-i-outdent:before { + content: '\f222'; +} + +.rtl i.mce-i-indent:before { + content: '\f221'; +} + +/* Editors */ +.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; +} + +.wp-editor-area { + font-family: Consolas, Monaco, monospace; + font-size: 13px; + padding: 10px; + margin: 1px 0 0; + line-height: 150%; + border: 0 none; + outline: none; + display: block; + resize: vertical; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; + -webkit-box-shadow: none; + box-shadow: none; +} + +.wp-editor-tabs { + float: left; +} + +.wp-switch-editor { + float: right; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + position: relative; + top: 1px; + background: #ebebeb; + color: #777; + cursor: pointer; + font: 13px/19px "Open Sans", sans-serif; + height: 20px; + margin: 5px 5px 0 0; + padding: 3px 8px 4px; + border: 1px solid #e5e5e5; +} + +.wp-switch-editor:focus { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + outline: none; + color: #23282d; +} + +.wp-switch-editor:active, +.html-active .switch-html:focus, +.tmce-active .switch-tmce:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +.wp-switch-editor:active { + background-color: #f5f5f5; + -webkit-box-shadow: none; + box-shadow: none; +} + +.js .tmce-active .wp-editor-area { + color: white; +} + +.tmce-active .quicktags-toolbar { + display: none; +} + +.tmce-active .switch-tmce, +.html-active .switch-html { + 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: #464646; + 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: none; +} + +.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 */ +.quicktags-toolbar { + padding: 3px; + position: relative; + border-bottom: 1px solid #dedede; + 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: bold; +} + +.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 { + 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 div.mce-toolbar-grp .mce-toolbar.mce-first, + .has-dfw .quicktags-toolbar { + padding-left: 40px; + } +} + +@media screen and ( min-width: 782px ) { + .wp-core-ui .quicktags-toolbar input.button.button-small { + /* .button-small is normaly 11px, but a bit too small for these buttons. */ + font-size: 12px; + height: 26px; + line-height: 24px; + } +} + +#wp_editbtns, +#wp_gallerybtns { + padding: 2px; + position: absolute; + display: none; + z-index: 100020; +} + +#wp_editimgbtn, +#wp_delimgbtn, +#wp_editgallery, +#wp_delgallery { + border-color: #999; + background-color: #eee; + margin: 2px; + padding: 2px; + border-width: 1px; + border-style: solid; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +#wp_editimgbtn:hover, +#wp_delimgbtn:hover, +#wp_editgallery:hover, +#wp_delgallery:hover { + border-color: #555; + background-color: #ccc; +} + +/*------------------------------------------------------------------------------ + wp-link +------------------------------------------------------------------------------*/ + +#wp-link-wrap { + display: none; + background-color: #fff; + -webkit-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; + margin-top: -125px; + position: fixed; + top: 50%; + right: 50%; + z-index: 100105; + -webkit-transition: height 0.2s, margin-top 0.2s; + transition: height 0.2s, margin-top 0.2s; +} + +#wp-link-backdrop { + display: none; + position: fixed; + top: 0; + right: 0; + left: 0; + bottom: 0; + min-height: 360px; + background: #000; + opacity: 0.7; + filter: alpha(opacity=70); + z-index: 100100; +} + +#wp-link { + position: relative; + height: 100%; +} + +#wp-link-wrap.search-panel-visible { + 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 #dfdfdf; + height: 36px; + font-size: 18px; + font-weight: 600; + line-height: 36px; + padding: 0 16px 0 36px; + top: 0; + left: 0; + right: 0; +} + +#wp-link-close { + color: #666; + padding: 0; + position: absolute; + top: 0; + left: 0; + width: 36px; + height: 36px; + text-align: center; + background: none; + 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:hover, +#wp-link-close:focus { + color: #00a0d2; +} + +#wp-link-close:focus { + outline: none; + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +#link-selector { + padding: 0 16px 50px; +} + +#wp-link-wrap.search-panel-visible #link-selector { + -webkit-overflow-scrolling: touch; + padding: 0 16px; + position: absolute; + top: 36px; + right: 0; + left: 0; + bottom: 44px; +} + +#wp-link ol, +#wp-link ul { + list-style: none; + margin: 0; + padding: 0; +} + +#wp-link-search-toggle:after { + display: inline-block; + font: normal 20px/1 'dashicons'; + vertical-align: top; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: '\f140'; +} + +.search-panel-visible #wp-link-search-toggle:after { + content: '\f142'; +} + +#wp-link input[type="text"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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-search-toggle { + cursor: pointer; +} + +#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; + background: #fff; + overflow: auto; + position: absolute; + right: 16px; + left: 16px; + bottom: 16px; + top: 172px; +} + +.has-text-field #wp-link .query-results { + top: 205px; +} + +#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: bold; +} + +#wp-link li:last-child { + border: none; +} + +#wp-link .item-title { + display: inline-block; + width: 80%; + width: -webkit-calc(100% - 68px); + 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 #search-results, +#wp-link #search-panel { + display: none; +} + +#wp-link-wrap.search-panel-visible #search-panel { + display: block; +} + +#wp-link .river-waiting { + display: none; + padding: 10px 0; +} + +#wp-link .submitbox { + padding: 8px 16px; + background: #fcfcfc; + border-top: 1px solid #dfdfdf; + 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; + margin-bottom: 0; +} + +@media screen and ( max-width: 782px ) { + #wp-link-wrap { + margin-top: -140px; + } + + #wp-link-wrap.search-panel-visible .query-results { + top: 195px; + } + + #wp-link-wrap.search-panel-visible.has-text-field .query-results { + top: 235px; + } + + #link-selector { + padding: 0 16px 60px; + } + + #wp-link-wrap.search-panel-visible #link-selector { + bottom: 52px; + } + + #wp-link-cancel { + line-height: 32px; + } +} + +@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 { + -webkit-transition: none; + transition: none; + } + + #wp-link-wrap.search-panel-visible { + height: auto; + margin-top: 0; + top: 10px; + bottom: 10px; + } + + .search-panel-visible #link-selector { + overflow: auto; + } + + .search-panel-visible #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: -webkit-calc(100% - 92px); + 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; + -webkit-transition-property: border, background, color; + transition-property: border, background, color; + -webkit-transition-duration: .05s; + transition-duration: .05s; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; + cursor: pointer; +} + +@media screen and ( max-width: 782px ) { + div.wp-link-preview { + margin: 8px 5px 8px 0; + max-width: 70%; + max-width: -webkit-calc(100% - 86px); + max-width: calc(100% - 86px); + } +} + +/* =Overlay Body +-------------------------------------------------------------- */ + +.mce-fullscreen { + z-index: 100010; +} + +/* =Localization +-------------------------------------------------------------- */ +.rtl .wp-switch-editor, +.rtl .quicktags-toolbar input { + font-family: Tahoma, sans-serif; +} + +/* rtl:ignore */ +.mce-rtl .mce-flow-layout .mce-flow-layout-item > div { + direction: rtl; +} + +/* rtl:ignore */ +.mce-rtl .mce-listbox i.mce-caret { + left: 6px; +} + +html:lang(he-il) .rtl .wp-switch-editor, +html:lang(he-il) .rtl .quicktags-toolbar input { + font-family: Arial, sans-serif; +} + +/* HiDPI */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + .wp-media-buttons .add_media span.wp-media-buttons-icon { + background: none; + } +} diff --git a/wp-includes/css/editor-rtl.min.css b/wp-includes/css/editor-rtl.min.css new file mode 100644 index 0000000000..012ab17860 --- /dev/null +++ b/wp-includes/css/editor-rtl.min.css @@ -0,0 +1 @@ +.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);-webkit-transition:none;transition:none}.mce-window{-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);-webkit-font-smoothing:subpixel-antialiased;-webkit-transition:none;transition:none}.mce-window .mce-container-body.mce-abs-layout{overflow:visible}.mce-window .mce-window-head{background:#fcfcfc;border-bottom:1px solid #dfdfdf;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{color:transparent;top:0;left:0;width:36px;height:36px;line-height:36px;text-align:center}.mce-window .mce-window-head .mce-close:before{font:400 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window .mce-window-head .mce-close:hover:before{color:#00a0d2}.mce-window .mce-window-head .mce-dragh{width:-webkit-calc(100% - 36px);width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #dfdfdf}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);-webkit-transition:.05s all ease-in-out;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;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);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 *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 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:700;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:700;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-header td{font-weight:700;padding:0 5px}.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);-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);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}.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 #dedede;background:#f5f5f5;padding:0;position:relative}div.mce-inline-toolbar-grp{border:1px solid #a0a5aa;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.15);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;-ms-user-select:none;user-select:none;max-width:98%;z-index:100100}.wp-editor-area,div.mce-inline-toolbar-grp{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}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}.mce-toolbar .mce-btn-group,div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before,div.mce-path{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}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;cursor:pointer}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;-webkit-border-radius: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:#999;color:#23282d;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);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:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3)}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#555}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover i.mce-ico{color:#555}.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;-webkit-box-shadow:none;box-shadow:none}.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}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox{-webkit-border-radius:0;border-radius:0;direction:rtl;background:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2)}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #777;margin-right:2px;margin-left:2px}.mce-listbox i.mce-caret{left:4px}.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#32373c}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #32373c;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}.mce-menu .mce-menu-item-preview.mce-active{border-right:none}.mce-menu .mce-menu-item-preview.mce-active .mce-text{color:#fff}.mce-menu .mce-menu-item.mce-disabled{cursor:default}.mce-menu .mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menubar{border-color:#e5e5e5;background:#fff;border-width:0 0 1px}.mce-menubar .mce-menubtn{margin:2px}.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;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);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-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;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08)}.mce-window .mce-btn::-moz-focus-inner{border-width:1px 0;border-style:solid none;border-color:transparent;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.mce-window .mce-btn.mce-disabled{color:#a0a5aa;border-color:#ddd;background:#f7f7f7;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default}.mce-window .mce-btn.mce-primary{background:#00a0d2;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#1e8cbe;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.mce-window .mce-btn.mce-primary:focus{border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn.mce-primary:active{background:#1b7aa6;border-color:#005684;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#94cde7;background:#298cba;border-color:#1b607f;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 -1px 0 rgba(0,0,0,.1);cursor:default}#wp-link li,#wp-link-close,#wp-link-search-toggle,.mce-charmap td{cursor:pointer}.mce-toolbar .mce-ico,.qt-dfw{text-align:center;text-shadow:none}.mce-menubtn.mce-fixed-width button{overflow-x:hidden;text-overflow:ellipsis;width:110px}.mce-charmap{margin:3px}.mce-charmap td{padding:0;border-color:#dfdfdf}.mce-charmap td:hover{background:#f3f3f3}.mce-charmap td div{width:18px;height:22px;line-height:22px}.mce-toolbar .mce-btn .mce-open,.qt-dfw{line-height:20px}.mce-tooltip{margin-top:2px}.mce-tooltip-inner{-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);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:#777;line-height:20px;width:20px;height:20px;margin:0;padding:0}.qt-dfw{color:#777;width:28px;height:26px}.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:#999}.mce-close,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-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:400 20px/1 dashicons;padding:0 0 0 2px;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:-2px}.qt-dfw{font:400 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'}.mce-close: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}.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;-webkit-box-shadow:none;box-shadow:none}.wp-editor-tabs{float:left}.wp-switch-editor{float:right;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;position:relative;top:1px;background:#ebebeb;color:#777;cursor:pointer;font:13px/19px "Open Sans",sans-serif;height:20px;margin:5px 5px 0 0;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);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{-webkit-box-shadow:none;box-shadow:none}.wp-switch-editor:active{background-color:#f5f5f5;-webkit-box-shadow:none;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:#464646;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-link-close:before,#wp-link-search-toggle:after{vertical-align:top;speak:none;-moz-osx-font-smoothing:grayscale}.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:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:'\f104'}.quicktags-toolbar{padding:3px;position:relative;border-bottom:1px solid #dedede;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:700}.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{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;-webkit-border-radius:3px;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;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);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;-webkit-transition:height .2s,margin-top .2s;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.search-panel-visible{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 #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 16px 0 36px;top:0;left:0;right:0}#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}#wp-link-close:before{font:400 20px/36px dashicons;-webkit-font-smoothing:antialiased;width:36px;height:36px;content:'\f158'}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#link-selector{padding:0 16px 50px}#wp-link-wrap.search-panel-visible #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:36px;right:0;left:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link-search-toggle:after{display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;content:'\f140'}.search-panel-visible #wp-link-search-toggle:after{content:'\f142'}#wp-link input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 solid #dfdfdf;margin:0;background:#fff;overflow:auto;position:absolute;right:16px;left:16px;bottom:16px;top:172px}.has-text-field #wp-link .query-results{top:205px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 10px 4px 6px;position:relative}#wp-link .query-notice,#wp-link li.unselectable{border-bottom:1px solid #dfdfdf}#wp-link .query-notice{padding:0;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:hover{background:#fff;cursor:auto;color:#32373c}#wp-link li.selected{background:#ddd;color:#32373c}#wp-link li.selected .item-title{font-weight:700}#wp-link li:last-child{border:none}#wp-link .item-title{display:inline-block;width:80%;width:-webkit-calc(100% - 68px);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 #search-panel,#wp-link #search-results{display:none}#wp-link-wrap.search-panel-visible #search-panel{display:block}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #dfdfdf;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;margin-bottom:0}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap.search-panel-visible .query-results{top:195px}#wp-link-wrap.search-panel-visible.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap.search-panel-visible #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}}@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{-webkit-transition:none;transition:none}#wp-link-wrap.search-panel-visible{height:auto;margin-top:0;top:10px;bottom:10px}.search-panel-visible #link-selector{overflow:auto}.search-panel-visible #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:-webkit-calc(100% - 92px);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;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;cursor:pointer}@media screen and (max-width:782px){div.wp-link-preview{margin:8px 5px 8px 0;max-width:70%;max-width:-webkit-calc(100% - 86px);max-width:calc(100% - 86px)}}.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 new file mode 100644 index 0000000000..b89e93907e --- /dev/null +++ b/wp-includes/css/editor.css @@ -0,0 +1,1748 @@ +/*------------------------------------------------------------------------------ + TinyMCE and Quicklinks toolbars +------------------------------------------------------------------------------*/ + +/* TinyMCE widgets/containers */ + +.mce-container, +.mce-container *, +.mce-widget, +.mce-widget * { + color: inherit; + font-family: inherit; +} + +/* TinyMCE windows */ +#mce-modal-block, +#mce-modal-block.mce-fade { + opacity: 0.7; + filter: alpha(opacity=70); + -webkit-transition: none; + transition: none; +} + +.mce-window { + -webkit-border-radius: 0; + border-radius: 0; + -webkit-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; + -webkit-transition: none; + transition: none; +} + +.mce-window .mce-container-body.mce-abs-layout { + overflow: visible; +} + +.mce-window .mce-window-head { + background: #fcfcfc; + border-bottom: 1px solid #dfdfdf; + 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 { + color: transparent; + top: 0; + right: 0; + width: 36px; + height: 36px; + line-height: 36px; + text-align: center; +} + +.mce-window .mce-window-head .mce-close:before { + font: normal 20px/36px 'dashicons'; + text-align: center; + color: #666; + width: 36px; + height: 36px; + display: block; +} + +.mce-window .mce-window-head .mce-close:hover:before { + color: #00a0d2; +} + +.mce-window .mce-window-head .mce-dragh { + width: -webkit-calc( 100% - 36px ); + width: calc( 100% - 36px ); +} + +.mce-window .mce-foot { + border-top: 1px solid #dfdfdf; +} + +.mce-textbox, +.mce-checkbox i.mce-i-checkbox, +#wp-link .query-results { + border: 1px solid #ddd; + -webkit-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); + box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); + -webkit-transition: .05s all ease-in-out; + transition: .05s all ease-in-out; +} + +.mce-textbox:focus, +.mce-textbox.mce-focus, +.mce-checkbox:focus i.mce-i-checkbox, +#wp-link .query-results:focus { + border-color: #5b9dd9; + -webkit-box-shadow: 0 0 2px rgba(30,140,190,0.8); + box-shadow: 0 0 2px rgba(30,140,190,0.8); +} + +.mce-window .mce-wp-help { + height: 360px; + width: 460px; + overflow: auto; +} + +.mce-window .mce-wp-help * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: normal; +} + +.mce-window .wp-editor-help table { + width: 100%; + margin-bottom: 20px; +} + +.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: bold; + padding-bottom: 0; +} + +.mce-window .wp-editor-help kbd { + font-family: monospace; + padding: 2px 7px 3px; + font-weight: bold; + margin: 0; + background: #eaeaea; + background: rgba(0,0,0,0.08); +} + +.mce-window .wp-help-header td { + font-weight: bold; + padding: 0 5px; +} + +.mce-window .wp-help-th-center td:nth-child(odd), +.mce-window .wp-help-th-center th:nth-child(odd) { + text-align: center; +} + +/* TinyMCE menus */ +.mce-menu, +.mce-floatpanel.mce-popover { + border-color: rgba(0,0,0,0.15); + -webkit-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: 0 3px 5px rgba( 0, 0, 0, 0.2 ); + box-shadow: 0 3px 5px rgba( 0, 0, 0, 0.2 ); +} + +.mce-menu, +.mce-floatpanel.mce-popover.mce-bottom { + 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; +} + +.mce-menu-has-icons i.mce-ico { + line-height: 20px; +} + +/* TinyMCE panel */ +div.mce-panel { + border: 0; + background: #fff; +} + +.mce-panel.mce-menu { + border: 1px solid #ddd; +} + +div.mce-tab { + line-height: 13px; +} + +/* TinyMCE toolbars */ +div.mce-toolbar-grp { + border-bottom: 1px solid #dedede; + background: #f5f5f5; + padding: 0; + position: relative; +} + +div.mce-inline-toolbar-grp { + border: 1px solid #a0a5aa; + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.15 ); + box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.15 ); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-bottom: 8px; + position: absolute; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + max-width: 98%; + z-index: 100100; /* Same as the other TinyMCE "panels" */ +} + +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:before, +div.mce-inline-toolbar-grp:after { + 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:before, +div.mce-inline-toolbar-grp.mce-arrow-left:after { + 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:before, +div.mce-inline-toolbar-grp.mce-arrow-right:after { + 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-item, +.mce-path .mce-divider { + font-size: 12px; +} + +.mce-toolbar .mce-btn, +.qt-dfw { + border-color: transparent; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + text-shadow: none; + cursor: pointer; +} + +.mce-toolbar .mce-btn-group .mce-btn, +.qt-dfw { + border: 1px solid transparent; + margin: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; +} + +.mce-toolbar .mce-btn-group .mce-btn:hover, +.mce-toolbar .mce-btn-group .mce-btn:focus, +.qt-dfw:hover, +.qt-dfw:focus { + background: #fafafa; + border-color: #999; + color: #23282d; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + 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: #ebebeb; + border-color: #999; + -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.3 ); + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.3 ); +} + +.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover { + border-color: #555; +} + +.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover i.mce-ico { + color: #555; +} + +.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover, +.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus { + color: #a0a5aa; + background: none; + border-color: #ddd; + text-shadow: 0 1px 0 #fff; + -webkit-box-shadow: none; + box-shadow: none; +} + +.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; +} + +/* mce listbox */ +.mce-toolbar .mce-btn-group .mce-btn.mce-listbox { + -webkit-border-radius: 0; + border-radius: 0; + direction: ltr; + background: #fff; + border: 1px solid #ddd; + -webkit-box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .2); + box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .2); +} + +.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover { + border-color: #b4b9be; +} + +.mce-panel .mce-btn i.mce-caret { + border-top: 6px solid #777; + margin-left: 2px; + margin-right: 2px; +} + +.mce-listbox i.mce-caret { + right: 4px; +} + +.mce-panel .mce-btn:hover i.mce-caret { + border-top-color: #32373c; +} + +.mce-panel .mce-active i.mce-caret { + border-top: 0; + border-bottom: 6px solid #32373c; + 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: transparent; + outline: none; +} + +.mce-menu .mce-menu-item:hover, +.mce-menu .mce-menu-item.mce-selected, +.mce-menu .mce-menu-item:focus, +.mce-menu .mce-menu-item-normal.mce-active, +.mce-menu .mce-menu-item-preview.mce-active { + background: #0073aa; /* See color scheme. */ +} + +.mce-menu .mce-menu-item-preview.mce-active { + border-left: none; +} + +.mce-menu .mce-menu-item-preview.mce-active .mce-text { + color: #fff; +} + +.mce-menu .mce-menu-item.mce-disabled { + cursor: default; +} + +.mce-menu .mce-menu-item.mce-disabled:hover { + background: #ccc; +} + +/* Menubar */ +.mce-menubar { + border-color: #e5e5e5; + background: #fff; + border-width: 0px 0px 1px; +} + +.mce-menubar .mce-menubtn { + margin: 2px; +} + +.mce-menubar .mce-menubtn:hover, +.mce-menubar .mce-menubtn.mce-active, +.mce-menubar .mce-menubtn:focus { + border-color: transparent; + background: transparent; +} + +.mce-menubar .mce-menubtn:focus { + color: #124964; + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + 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 #ddd; + height: 0px; + margin: 5px 0; +} + +.mce-menubtn span { + margin-right: 0; + padding-left: 3px; +} + +.mce-menu-has-icons i.mce-ico:before { + margin-left: -2px; +} + +/* Buttons in modals */ +.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; + -webkit-border-radius: 3px; + border-radius: 3px; + white-space: nowrap; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); +} + +/* Remove the dotted border on :focus and the extra padding in Firefox */ +.mce-window .mce-btn::-moz-focus-inner { + border-width: 1px 0; + border-style: solid none; + border-color: transparent; + padding: 0; +} + +.mce-window .mce-btn:hover, +.mce-window .mce-btn:focus { + background: #fafafa; + border-color: #999; + color: #23282d; +} + +.mce-window .mce-btn:focus { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); +} + +.mce-window .mce-btn:active { + background: #eee; + border-color: #999; + color: #32373c; + -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); +} + +.mce-window .mce-btn.mce-disabled { + color: #a0a5aa; + border-color: #ddd; + background: #f7f7f7; + -webkit-box-shadow: none; + box-shadow: none; + text-shadow: 0 1px 0 #fff; + cursor: default; +} + +.mce-window .mce-btn.mce-primary { + background: #00a0d2; + border-color: #0073aa; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5 ), 0 1px 0 rgba( 0, 0, 0, 0.15 ); + color: #fff; + text-decoration: none; +} + +.mce-window .mce-btn.mce-primary:hover, +.mce-window .mce-btn.mce-primary:focus { + background: #1e8cbe; + border-color: #0073aa; + -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ); + box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ); + color: #fff; +} + +.mce-window .mce-btn.mce-primary:focus { + border-color: #0e3950; + -webkit-box-shadow: + inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); + box-shadow: + inset 0 1px 0 rgba( 120, 200, 230, 0.6 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); +} + +.mce-window .mce-btn.mce-primary:active { + background: #1b7aa6; + border-color: #005684; + color: rgba( 255, 255, 255, 0.95 ); + -webkit-box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 ); + vertical-align: top; +} + +.mce-window .mce-btn.mce-primary.mce-disabled { + color: #94cde7; + background: #298cba; + border-color: #1b607f; + -webkit-box-shadow: none; + box-shadow: none; + text-shadow: 0 -1px 0 rgba( 0, 0, 0, 0.1 ); + cursor: default; +} + +.mce-menubtn.mce-fixed-width button { + overflow-x: hidden; + text-overflow: ellipsis; + width: 110px; +} + +/* Charmap modal */ +.mce-charmap { + margin: 3px; +} + +.mce-charmap td { + padding: 0; + border-color: #dfdfdf; + cursor: pointer; +} + +.mce-charmap td:hover { + background: #f3f3f3; +} + +.mce-charmap td div { + width: 18px; + height: 22px; + line-height: 22px; +} + +/* TinyMCE tooltips */ +.mce-tooltip { + margin-top: 2px; +} + +.mce-tooltip-inner { + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-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; +} + +.mce-btn-small .mce-ico { + font-family: 'tinymce-small', Arial; +} + +.mce-toolbar .mce-ico { + color: #777; + line-height: 20px; + width: 20px; + height: 20px; + text-align: center; + text-shadow: none; + margin: 0; + padding: 0; +} + +.qt-dfw { + color: #777; + 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:hover .mce-open, +.mce-toolbar .mce-btn:focus .mce-open, +.mce-toolbar .mce-btn.mce-active .mce-open { + border-left-color: #999; +} + +i.mce-i-bold, +i.mce-i-italic, +i.mce-i-bullist, +i.mce-i-numlist, +i.mce-i-blockquote, +i.mce-i-alignleft, +i.mce-i-aligncenter, +i.mce-i-alignright, +i.mce-i-link, +i.mce-i-unlink, +i.mce-i-wp_more, +i.mce-i-strikethrough, +i.mce-i-spellchecker, +i.mce-i-fullscreen, +i.mce-i-wp_fullscreen, +i.mce-i-dfw, +i.mce-i-wp_adv, +i.mce-i-underline, +i.mce-i-alignjustify, +i.mce-i-forecolor, +i.mce-i-backcolor, +i.mce-i-pastetext, +i.mce-i-pasteword, +i.mce-i-removeformat, +i.mce-i-charmap, +i.mce-i-outdent, +i.mce-i-indent, +i.mce-i-undo, +i.mce-i-redo, +i.mce-i-help, +i.mce-i-wp_help, +i.mce-i-wp-media-library, +i.mce-i-ltr, +i.mce-i-wp_page, +i.mce-i-hr, +i.mce-i-wp_code, +i.mce-i-dashicon, +.mce-close { + 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'; +} + +i.mce-i-fullscreen:before, +i.mce-i-wp_fullscreen:before, +i.mce-i-dfw:before, +.qt-dfw: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-forecolor:before, +i.mce-i-backcolor: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'; +} + +.mce-close:before { + content: '\f158'; +} + +i.mce-i-wp_code:before { + content: '\f475'; +} + +/* RTL button icons */ +.rtl i.mce-i-outdent:before { + content: '\f222'; +} + +.rtl i.mce-i-indent:before { + content: '\f221'; +} + +/* Editors */ +.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; +} + +.wp-editor-area { + font-family: Consolas, Monaco, monospace; + font-size: 13px; + padding: 10px; + margin: 1px 0 0; + line-height: 150%; + border: 0 none; + outline: none; + display: block; + resize: vertical; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; + -webkit-box-shadow: none; + box-shadow: none; +} + +.wp-editor-tabs { + float: right; +} + +.wp-switch-editor { + float: left; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + position: relative; + top: 1px; + background: #ebebeb; + color: #777; + cursor: pointer; + font: 13px/19px "Open Sans", sans-serif; + height: 20px; + margin: 5px 0 0 5px; + padding: 3px 8px 4px; + border: 1px solid #e5e5e5; +} + +.wp-switch-editor:focus { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + outline: none; + color: #23282d; +} + +.wp-switch-editor:active, +.html-active .switch-html:focus, +.tmce-active .switch-tmce:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +.wp-switch-editor:active { + background-color: #f5f5f5; + -webkit-box-shadow: none; + box-shadow: none; +} + +.js .tmce-active .wp-editor-area { + color: white; +} + +.tmce-active .quicktags-toolbar { + display: none; +} + +.tmce-active .switch-tmce, +.html-active .switch-html { + 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: #464646; + 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: none; +} + +.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 */ +.quicktags-toolbar { + padding: 3px; + position: relative; + border-bottom: 1px solid #dedede; + 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: bold; +} + +.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 { + 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 div.mce-toolbar-grp .mce-toolbar.mce-first, + .has-dfw .quicktags-toolbar { + padding-right: 40px; + } +} + +@media screen and ( min-width: 782px ) { + .wp-core-ui .quicktags-toolbar input.button.button-small { + /* .button-small is normaly 11px, but a bit too small for these buttons. */ + font-size: 12px; + height: 26px; + line-height: 24px; + } +} + +#wp_editbtns, +#wp_gallerybtns { + padding: 2px; + position: absolute; + display: none; + z-index: 100020; +} + +#wp_editimgbtn, +#wp_delimgbtn, +#wp_editgallery, +#wp_delgallery { + border-color: #999; + background-color: #eee; + margin: 2px; + padding: 2px; + border-width: 1px; + border-style: solid; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +#wp_editimgbtn:hover, +#wp_delimgbtn:hover, +#wp_editgallery:hover, +#wp_delgallery:hover { + border-color: #555; + background-color: #ccc; +} + +/*------------------------------------------------------------------------------ + wp-link +------------------------------------------------------------------------------*/ + +#wp-link-wrap { + display: none; + background-color: #fff; + -webkit-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; + margin-top: -125px; + position: fixed; + top: 50%; + left: 50%; + z-index: 100105; + -webkit-transition: height 0.2s, margin-top 0.2s; + transition: height 0.2s, margin-top 0.2s; +} + +#wp-link-backdrop { + display: none; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + min-height: 360px; + background: #000; + opacity: 0.7; + filter: alpha(opacity=70); + z-index: 100100; +} + +#wp-link { + position: relative; + height: 100%; +} + +#wp-link-wrap.search-panel-visible { + 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 #dfdfdf; + height: 36px; + font-size: 18px; + font-weight: 600; + line-height: 36px; + padding: 0 36px 0 16px; + top: 0; + right: 0; + left: 0; +} + +#wp-link-close { + color: #666; + padding: 0; + position: absolute; + top: 0; + right: 0; + width: 36px; + height: 36px; + text-align: center; + background: none; + 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:hover, +#wp-link-close:focus { + color: #00a0d2; +} + +#wp-link-close:focus { + outline: none; + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +#link-selector { + padding: 0 16px 50px; +} + +#wp-link-wrap.search-panel-visible #link-selector { + -webkit-overflow-scrolling: touch; + padding: 0 16px; + position: absolute; + top: 36px; + left: 0; + right: 0; + bottom: 44px; +} + +#wp-link ol, +#wp-link ul { + list-style: none; + margin: 0; + padding: 0; +} + +#wp-link-search-toggle:after { + display: inline-block; + font: normal 20px/1 'dashicons'; + vertical-align: top; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: '\f140'; +} + +.search-panel-visible #wp-link-search-toggle:after { + content: '\f142'; +} + +#wp-link input[type="text"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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-search-toggle { + cursor: pointer; +} + +#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; + background: #fff; + overflow: auto; + position: absolute; + left: 16px; + right: 16px; + bottom: 16px; + top: 172px; +} + +.has-text-field #wp-link .query-results { + top: 205px; +} + +#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: bold; +} + +#wp-link li:last-child { + border: none; +} + +#wp-link .item-title { + display: inline-block; + width: 80%; + width: -webkit-calc(100% - 68px); + 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 #search-results, +#wp-link #search-panel { + display: none; +} + +#wp-link-wrap.search-panel-visible #search-panel { + display: block; +} + +#wp-link .river-waiting { + display: none; + padding: 10px 0; +} + +#wp-link .submitbox { + padding: 8px 16px; + background: #fcfcfc; + border-top: 1px solid #dfdfdf; + 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; + margin-bottom: 0; +} + +@media screen and ( max-width: 782px ) { + #wp-link-wrap { + margin-top: -140px; + } + + #wp-link-wrap.search-panel-visible .query-results { + top: 195px; + } + + #wp-link-wrap.search-panel-visible.has-text-field .query-results { + top: 235px; + } + + #link-selector { + padding: 0 16px 60px; + } + + #wp-link-wrap.search-panel-visible #link-selector { + bottom: 52px; + } + + #wp-link-cancel { + line-height: 32px; + } +} + +@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 { + -webkit-transition: none; + transition: none; + } + + #wp-link-wrap.search-panel-visible { + height: auto; + margin-top: 0; + top: 10px; + bottom: 10px; + } + + .search-panel-visible #link-selector { + overflow: auto; + } + + .search-panel-visible #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: -webkit-calc(100% - 92px); + 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; + -webkit-transition-property: border, background, color; + transition-property: border, background, color; + -webkit-transition-duration: .05s; + transition-duration: .05s; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; + cursor: pointer; +} + +@media screen and ( max-width: 782px ) { + div.wp-link-preview { + margin: 8px 0 8px 5px; + max-width: 70%; + max-width: -webkit-calc(100% - 86px); + max-width: calc(100% - 86px); + } +} + +/* =Overlay Body +-------------------------------------------------------------- */ + +.mce-fullscreen { + z-index: 100010; +} + +/* =Localization +-------------------------------------------------------------- */ +.rtl .wp-switch-editor, +.rtl .quicktags-toolbar input { + font-family: Tahoma, sans-serif; +} + +/* rtl:ignore */ +.mce-rtl .mce-flow-layout .mce-flow-layout-item > div { + direction: rtl; +} + +/* rtl:ignore */ +.mce-rtl .mce-listbox i.mce-caret { + left: 6px; +} + +html:lang(he-il) .rtl .wp-switch-editor, +html:lang(he-il) .rtl .quicktags-toolbar input { + font-family: Arial, sans-serif; +} + +/* HiDPI */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + .wp-media-buttons .add_media span.wp-media-buttons-icon { + background: none; + } +} diff --git a/wp-includes/css/editor.min.css b/wp-includes/css/editor.min.css new file mode 100644 index 0000000000..7415d7754a --- /dev/null +++ b/wp-includes/css/editor.min.css @@ -0,0 +1 @@ +.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);-webkit-transition:none;transition:none}.mce-window{-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);-webkit-font-smoothing:subpixel-antialiased;-webkit-transition:none;transition:none}.mce-window .mce-container-body.mce-abs-layout{overflow:visible}.mce-window .mce-window-head{background:#fcfcfc;border-bottom:1px solid #dfdfdf;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{color:transparent;top:0;right:0;width:36px;height:36px;line-height:36px;text-align:center}.mce-window .mce-window-head .mce-close:before{font:400 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window .mce-window-head .mce-close:hover:before{color:#00a0d2}.mce-window .mce-window-head .mce-dragh{width:-webkit-calc(100% - 36px);width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #dfdfdf}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);-webkit-transition:.05s all ease-in-out;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;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);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 *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 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:700;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:700;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-header td{font-weight:700;padding:0 5px}.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);-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);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}.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 #dedede;background:#f5f5f5;padding:0;position:relative}div.mce-inline-toolbar-grp{border:1px solid #a0a5aa;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.15);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;-ms-user-select:none;user-select:none;max-width:98%;z-index:100100}.wp-editor-area,div.mce-inline-toolbar-grp{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}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}.mce-toolbar .mce-btn-group,div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before,div.mce-path{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}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;cursor:pointer}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;-webkit-border-radius: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:#999;color:#23282d;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);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:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3)}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#555}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover i.mce-ico{color:#555}.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;-webkit-box-shadow:none;box-shadow:none}.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}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox{-webkit-border-radius:0;border-radius:0;direction:ltr;background:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2)}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #777;margin-left:2px;margin-right:2px}.mce-listbox i.mce-caret{right:4px}.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#32373c}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #32373c;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}.mce-menu .mce-menu-item-preview.mce-active{border-left:none}.mce-menu .mce-menu-item-preview.mce-active .mce-text{color:#fff}.mce-menu .mce-menu-item.mce-disabled{cursor:default}.mce-menu .mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menubar{border-color:#e5e5e5;background:#fff;border-width:0 0 1px}.mce-menubar .mce-menubtn{margin:2px}.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;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);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-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;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08)}.mce-window .mce-btn::-moz-focus-inner{border-width:1px 0;border-style:solid none;border-color:transparent;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.mce-window .mce-btn.mce-disabled{color:#a0a5aa;border-color:#ddd;background:#f7f7f7;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default}.mce-window .mce-btn.mce-primary{background:#00a0d2;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#1e8cbe;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.mce-window .mce-btn.mce-primary:focus{border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn.mce-primary:active{background:#1b7aa6;border-color:#005684;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#94cde7;background:#298cba;border-color:#1b607f;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 -1px 0 rgba(0,0,0,.1);cursor:default}#wp-link li,#wp-link-close,#wp-link-search-toggle,.mce-charmap td{cursor:pointer}.mce-toolbar .mce-ico,.qt-dfw{text-align:center;text-shadow:none}.mce-menubtn.mce-fixed-width button{overflow-x:hidden;text-overflow:ellipsis;width:110px}.mce-charmap{margin:3px}.mce-charmap td{padding:0;border-color:#dfdfdf}.mce-charmap td:hover{background:#f3f3f3}.mce-charmap td div{width:18px;height:22px;line-height:22px}.mce-toolbar .mce-btn .mce-open,.qt-dfw{line-height:20px}.mce-tooltip{margin-top:2px}.mce-tooltip-inner{-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);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:#777;line-height:20px;width:20px;height:20px;margin:0;padding:0}.qt-dfw{color:#777;width:28px;height:26px}.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:#999}.mce-close,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-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:400 20px/1 dashicons;padding:0 2px 0 0;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-left:-2px}.qt-dfw{font:400 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'}.mce-close: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}.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;-webkit-box-shadow:none;box-shadow:none}.wp-editor-tabs{float:right}.wp-switch-editor{float:left;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;position:relative;top:1px;background:#ebebeb;color:#777;cursor:pointer;font:13px/19px "Open Sans",sans-serif;height:20px;margin:5px 0 0 5px;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);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{-webkit-box-shadow:none;box-shadow:none}.wp-switch-editor:active{background-color:#f5f5f5;-webkit-box-shadow:none;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:#464646;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-link-close:before,#wp-link-search-toggle:after{vertical-align:top;speak:none;-moz-osx-font-smoothing:grayscale}.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:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:'\f104'}.quicktags-toolbar{padding:3px;position:relative;border-bottom:1px solid #dedede;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:700}.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{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;-webkit-border-radius:3px;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;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);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;-webkit-transition:height .2s,margin-top .2s;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.search-panel-visible{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 #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 36px 0 16px;top:0;right:0;left:0}#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}#wp-link-close:before{font:400 20px/36px dashicons;-webkit-font-smoothing:antialiased;width:36px;height:36px;content:'\f158'}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#link-selector{padding:0 16px 50px}#wp-link-wrap.search-panel-visible #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:36px;left:0;right:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link-search-toggle:after{display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;content:'\f140'}.search-panel-visible #wp-link-search-toggle:after{content:'\f142'}#wp-link input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 solid #dfdfdf;margin:0;background:#fff;overflow:auto;position:absolute;left:16px;right:16px;bottom:16px;top:172px}.has-text-field #wp-link .query-results{top:205px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 6px 4px 10px;position:relative}#wp-link .query-notice,#wp-link li.unselectable{border-bottom:1px solid #dfdfdf}#wp-link .query-notice{padding:0;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:hover{background:#fff;cursor:auto;color:#32373c}#wp-link li.selected{background:#ddd;color:#32373c}#wp-link li.selected .item-title{font-weight:700}#wp-link li:last-child{border:none}#wp-link .item-title{display:inline-block;width:80%;width:-webkit-calc(100% - 68px);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 #search-panel,#wp-link #search-results{display:none}#wp-link-wrap.search-panel-visible #search-panel{display:block}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #dfdfdf;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;margin-bottom:0}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap.search-panel-visible .query-results{top:195px}#wp-link-wrap.search-panel-visible.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap.search-panel-visible #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}}@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{-webkit-transition:none;transition:none}#wp-link-wrap.search-panel-visible{height:auto;margin-top:0;top:10px;bottom:10px}.search-panel-visible #link-selector{overflow:auto}.search-panel-visible #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:-webkit-calc(100% - 92px);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;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;cursor:pointer}@media screen and (max-width:782px){div.wp-link-preview{margin:8px 0 8px 5px;max-width:70%;max-width:-webkit-calc(100% - 86px);max-width:calc(100% - 86px)}}.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 new file mode 100644 index 0000000000..2a6107029d --- /dev/null +++ b/wp-includes/css/jquery-ui-dialog-rtl.css @@ -0,0 +1,362 @@ +/*! + * jQuery UI CSS Framework 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/category/theming/ + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + right: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); /* support: IE8 */ +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + right: 0; + width: 100%; + height: 100%; +} + +/*! + * jQuery UI Resizable 1.11.4 + * http://jqueryui.com + * + * 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: 0.1px; + display: block; + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + right: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + right: 0; +} +/* rtl:ignore */ +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +/* rtl:ignore */ +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +/* rtl:ignore */ +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +/* rtl:ignore */ +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +/* rtl:ignore */ +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +/* rtl:ignore */ +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} + +/* WP buttons: see buttons.css. */ + +.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; + -webkit-border-radius: 3px; + border-radius: 3px; + white-space: nowrap; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #555; + border-color: #cccccc; + background: #f7f7f7; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + vertical-align: top; +} + +.ui-button:active, +.ui-button:focus { + outline: none; +} + +/* Remove the dotted border on :focus and the extra padding in Firefox */ +.ui-button::-moz-focus-inner { + border-width: 1px 0; + border-style: solid none; + border-color: transparent; + padding: 0; +} + +.ui-button:hover, +.ui-button:focus { + background: #fafafa; + border-color: #999; + color: #23282d; +} + +.ui-button:focus { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); +} + +.ui-button:active { + background: #eee; + border-color: #999; + color: #32373c; + -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); +} + +.ui-button[disabled], +.ui-button:disabled { + color: #a0a5aa !important; + border-color: #ddd !important; + background: #f7f7f7 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: 0 1px 0 #fff !important; + cursor: default; +} + +@media screen and ( max-width: 782px ) { + + .ui-button { + padding: 10px 14px; + line-height: 1; + font-size: 14px; + vertical-align: middle; + height: auto; + margin-bottom: 4px; + } + +} + +/* WP Theme */ + +.ui-dialog { + position: absolute; + top: 0; + right: 0; + z-index: 100102; + background-color: #fff; + -webkit-box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); + box-shadow: 0 3px 6px rgba( 0, 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: none; + border: none; + -webkit-box-shadow: 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: 0.7; + filter: alpha(opacity=70); + z-index: 100101; +} diff --git a/wp-includes/css/jquery-ui-dialog-rtl.min.css b/wp-includes/css/jquery-ui-dialog-rtl.min.css new file mode 100644 index 0000000000..bf7be0aea8 --- /dev/null +++ b/wp-includes/css/jquery-ui-dialog-rtl.min.css @@ -0,0 +1,17 @@ +/*! + * jQuery UI CSS Framework 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/category/theming/ + */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-button,.ui-helper-reset{text-decoration:none;margin:0}.ui-helper-zfix,.ui-widget-overlay{width:100%;height:100%}.ui-helper-reset{padding:0;border:0;outline:0;line-height:1.3;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{top:0;right:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}/*! + * jQuery UI Resizable 1.11.4 + * http://jqueryui.com + * + * 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;-ms-touch-action:none;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;font-size:13px;line-height:26px;height:28px;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.ui-button:active,.ui-button:focus{outline:0}.ui-button::-moz-focus-inner{border-width:1px 0;border-style:solid none;border-color:transparent;padding:0}.ui-button:focus,.ui-button:hover{background:#fafafa;border-color:#999;color:#23282d}.ui-button:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ui-button:active{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.ui-button:disabled,.ui-button[disabled]{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default}@media screen and (max-width:782px){.ui-button{padding:10px 14px;line-height:1;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;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);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;-webkit-box-shadow: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:400 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 new file mode 100644 index 0000000000..091cb7480c --- /dev/null +++ b/wp-includes/css/jquery-ui-dialog.css @@ -0,0 +1,362 @@ +/*! + * jQuery UI CSS Framework 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/category/theming/ + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); /* support: IE8 */ +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +/*! + * jQuery UI Resizable 1.11.4 + * http://jqueryui.com + * + * 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: 0.1px; + display: block; + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +/* rtl:ignore */ +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +/* rtl:ignore */ +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +/* rtl:ignore */ +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +/* rtl:ignore */ +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +/* rtl:ignore */ +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +/* rtl:ignore */ +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} + +/* WP buttons: see buttons.css. */ + +.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; + -webkit-border-radius: 3px; + border-radius: 3px; + white-space: nowrap; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #555; + border-color: #cccccc; + background: #f7f7f7; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + vertical-align: top; +} + +.ui-button:active, +.ui-button:focus { + outline: none; +} + +/* Remove the dotted border on :focus and the extra padding in Firefox */ +.ui-button::-moz-focus-inner { + border-width: 1px 0; + border-style: solid none; + border-color: transparent; + padding: 0; +} + +.ui-button:hover, +.ui-button:focus { + background: #fafafa; + border-color: #999; + color: #23282d; +} + +.ui-button:focus { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba( 30, 140, 190, 0.8 ); +} + +.ui-button:active { + background: #eee; + border-color: #999; + color: #32373c; + -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); +} + +.ui-button[disabled], +.ui-button:disabled { + color: #a0a5aa !important; + border-color: #ddd !important; + background: #f7f7f7 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: 0 1px 0 #fff !important; + cursor: default; +} + +@media screen and ( max-width: 782px ) { + + .ui-button { + padding: 10px 14px; + line-height: 1; + font-size: 14px; + vertical-align: middle; + height: auto; + margin-bottom: 4px; + } + +} + +/* WP Theme */ + +.ui-dialog { + position: absolute; + top: 0; + left: 0; + z-index: 100102; + background-color: #fff; + -webkit-box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); + box-shadow: 0 3px 6px rgba( 0, 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: none; + border: none; + -webkit-box-shadow: 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: 0.7; + filter: alpha(opacity=70); + z-index: 100101; +} diff --git a/wp-includes/css/jquery-ui-dialog.min.css b/wp-includes/css/jquery-ui-dialog.min.css new file mode 100644 index 0000000000..f60030dfcb --- /dev/null +++ b/wp-includes/css/jquery-ui-dialog.min.css @@ -0,0 +1,17 @@ +/*! + * jQuery UI CSS Framework 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/category/theming/ + */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-button,.ui-helper-reset{text-decoration:none;margin:0}.ui-helper-zfix,.ui-widget-overlay{width:100%;height:100%}.ui-helper-reset{padding:0;border:0;outline:0;line-height:1.3;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}/*! + * jQuery UI Resizable 1.11.4 + * http://jqueryui.com + * + * 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;-ms-touch-action:none;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;font-size:13px;line-height:26px;height:28px;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.ui-button:active,.ui-button:focus{outline:0}.ui-button::-moz-focus-inner{border-width:1px 0;border-style:solid none;border-color:transparent;padding:0}.ui-button:focus,.ui-button:hover{background:#fafafa;border-color:#999;color:#23282d}.ui-button:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ui-button:active{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.ui-button:disabled,.ui-button[disabled]{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default}@media screen and (max-width:782px){.ui-button{padding:10px 14px;line-height:1;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;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);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;-webkit-box-shadow: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:400 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 new file mode 100644 index 0000000000..abab3daedf --- /dev/null +++ b/wp-includes/css/media-views-rtl.css @@ -0,0 +1,2581 @@ +/** + * Base Styles + */ +.media-modal * { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.media-frame input, +.media-frame select, +.media-frame textarea { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.media-modal, +.media-frame { + font-family: "Open Sans", sans-serif; + font-size: 12px; + -webkit-overflow-scrolling: touch; +} + +.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: #21759b; +} + +.media-frame a:hover { + color: #d54e21; +} + +.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="text"], +.media-frame input[type="password"], +.media-frame input[type="number"], +.media-frame input[type="search"], +.media-frame input[type="email"], +.media-frame input[type="url"], +.media-frame textarea, +.media-frame select { + font-family: "Open Sans", sans-serif; + font-size: 12px; + border-width: 1px; + border-style: solid; + border-color: #dfdfdf; +} + +.media-frame input[type="text"]:focus, +.media-frame input[type="password"]:focus, +.media-frame input[type="number"]:focus, +.media-frame input[type="search"]:focus, +.media-frame input[type="email"]:focus, +.media-frame input[type="url"]:focus, +.media-frame textarea:focus, +.media-frame select:focus { + 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: #eee; +} + +.media-frame input[type="search"] { + -webkit-appearance: textfield; +} + +.media-frame :-moz-placeholder { + color: #a9a9a9; +} + +.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 { + -ms-touch-action: none; + touch-action: none; +} + +/** + * Modal + */ +.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: 0.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; + padding: 0; + z-index: 1000; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.media-modal-close:active { + -webkit-box-shadow: none; + box-shadow: none; +} + +.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; + color: #666; +} + +.media-modal-close:hover .media-modal-icon:before { + color: #00a0d2; +} + +.media-modal-close:active { + outline: 0; +} + +.media-modal-content { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + overflow: auto; + min-height: 300px; + -webkit-box-shadow: 0 5px 15px rgba(0,0,0,0.7); + box-shadow: 0 5px 15px rgba(0,0,0,0.7); + background: #fcfcfc; + -webkit-font-smoothing: subpixel-antialiased; +} + +/* higher specificity */ +.wp-core-ui .media-modal-icon { + background-image: url(../images/uploader-icons.png); + background-repeat: no-repeat; +} + +/** + * Toolbar + */ +.media-toolbar { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 100; + height: 60px; + padding: 0 16px; + border: 0 solid #dfdfdf; + overflow: hidden; +} + +.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; +} + +/** + * Sidebar + */ +.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%; +} + +.media-sidebar h3, +.image-details h3 { + position: relative; + font-weight: bold; + text-transform: uppercase; + font-size: 12px; + color: #666; + margin: 24px 0 8px; +} + +.media-sidebar .setting, +.attachment-details .setting { + display: block; + float: right; + width: 100%; + margin: 1px 0; +} + +.media-sidebar .setting label, +.attachment-details .setting label { + display: block; +} + +.media-sidebar .setting .link-to-custom, +.attachment-details .setting .link-to-custom { + margin: 3px 2px 0; +} + +.media-sidebar .setting span, +.attachment-details .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 select, +.attachment-details .setting select { + max-width: 65%; +} + +.media-sidebar .setting input[type="checkbox"], +.media-sidebar .field input[type="checkbox"], +.media-sidebar .setting input[type="radio"], +.media-sidebar .field input[type="radio"], +.attachment-details .setting input[type="checkbox"], +.attachment-details .field input[type="checkbox"], +.attachment-details .setting input[type="radio"], +.attachment-details .field input[type="radio"] { + float: none; + margin: 8px 3px 0; + padding: 0; +} + +.media-sidebar .setting span, +.attachment-details .setting span, +.compat-item label span { + float: right; + min-height: 22px; + padding-top: 8px; + line-height: 16px; + font-weight: normal; + color: #666; +} + +.compat-item label span { + text-align: left; +} + +.media-sidebar .setting input[type="text"], +.media-sidebar .setting input[type="password"], +.media-sidebar .setting input[type="email"], +.media-sidebar .setting input[type="number"], +.media-sidebar .setting input[type="search"], +.media-sidebar .setting input[type="tel"], +.media-sidebar .setting input[type="url"], +.media-sidebar .setting textarea, +.media-sidebar .setting .value, +.attachment-details .setting input[type="text"], +.attachment-details .setting input[type="password"], +.attachment-details .setting input[type="email"], +.attachment-details .setting input[type="number"], +.attachment-details .setting input[type="search"], +.attachment-details .setting input[type="tel"], +.attachment-details .setting input[type="url"], +.attachment-details .setting textarea, +.attachment-details .setting .value { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin: 1px; + width: 65%; + float: left; +} + +.media-sidebar .setting .value, +.attachment-details .setting .value { + margin: 0 1px; + text-align: right; +} + +.media-sidebar .setting textarea, +.attachment-details .setting textarea, +.compat-item .field textarea { + height: 62px; + resize: vertical; +} + +.media-sidebar select, +.attachment-details 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 .label, +.compat-item .field { + 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="text"], +.compat-item .field input[type="password"], +.compat-item .field input[type="email"], +.compat-item .field input[type="number"], +.compat-item .field input[type="search"], +.compat-item .field input[type="tel"], +.compat-item .field input[type="url"], +.compat-item .field textarea { + width: 100%; + margin: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; +} + +/** + * Menu + */ +.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; + -ms-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: #21759B; + background: rgba( 0, 0, 0, 0.04 ); +} + +.media-menu > a:active { + outline: none; +} + +.media-menu .active, +.media-menu .active:hover { + color: #23282d; + font-weight: bold; +} + +.media-menu .separator { + height: 0; + margin: 12px 20px; + padding: 0; + border-top: 1px solid #ddd; +} + +/** + * Menu + */ +.media-router { + position: relative; + padding: 0 6px; + margin: 0; + clear: both; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.media-router a { + -webkit-transition: none; + 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: none; +} + +.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; +} + +/** + * Frame + */ +.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; + border-bottom: 1px solid #ddd; +} + +.media-frame-toolbar { + position: absolute; + right: 200px; + left: 0; + bottom: 0; + height: 60px; + z-index: 100; +} + +.media-frame.hide-menu .media-frame-title, +.media-frame.hide-menu .media-frame-router, +.media-frame.hide-menu .media-frame-toolbar, +.media-frame.hide-menu .media-frame-content { + right: 0; +} + +.media-frame.hide-menu .media-frame-menu { + right: -200px; +} + +.media-frame.hide-toolbar .media-frame-content { + bottom: 0; +} + +.media-frame.hide-toolbar .media-frame-toolbar { + bottom: -61px; +} + +.media-frame.hide-router .media-frame-content { + top: 50px; +} + +.media-frame.hide-router .media-frame-router { + display: none; +} + +.media-frame.hide-router .media-frame-title { + border-bottom: 1px solid #dfdfdf; + -webkit-box-shadow: 0 4px 4px -4px rgba( 0, 0, 0, 0.1 ); + box-shadow: 0 4px 4px -4px rgba( 0, 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; +} + +/** + * Iframes + */ +.media-frame .media-iframe { + overflow: hidden; +} + +.media-frame .media-iframe, +.media-frame .media-iframe iframe { + height: 100%; + width: 100%; + border: 0; +} + +/** + * Attachment Browser Filters + */ +.media-frame select.attachment-filters { + margin-top: 11px; + margin-left: 2%; + max-width: 42%; + max-width: -webkit-calc(48% - 12px); + max-width: calc(48% - 12px); +} + +.media-frame select.attachment-filters:last-of-type { + margin-left: 0; +} + +/** + * Search + */ +.media-frame .search { + margin-top: 11px; + padding: 4px; + font-size: 13px; + color: #464646; + font-family: "Open Sans", sans-serif; + -webkit-appearance: none; +} + +.media-toolbar-primary .search { + max-width: 100%; +} + +/** + * Attachments + */ +.wp-core-ui .attachments { + margin: 0; + -webkit-overflow-scrolling: touch; +} + +/** + * Attachment + */ +.wp-core-ui .attachment { + position: relative; + float: right; + padding: 8px; + margin: 0; + color: #464646; + cursor: pointer; + list-style: none; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 25%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.wp-core-ui .attachment:focus, +.wp-core-ui .selected.attachment:focus, +.wp-core-ui .attachment.details:focus { + -webkit-box-shadow: + inset 0 0 2px 3px #fff, + inset 0 0 0 7px #5b9dd9; + box-shadow: + inset 0 0 2px 3px #fff, + inset 0 0 0 7px #5b9dd9; + outline: none; +} + +.wp-core-ui .selected.attachment { + -webkit-box-shadow: + inset 0 0 0 5px #fff, + inset 0 0 0 7px #ccc; + box-shadow: + inset 0 0 0 5px #fff, + inset 0 0 0 7px #ccc; +} + +.wp-core-ui .attachment.details { + -webkit-box-shadow: + inset 0 0 0 3px #fff, + inset 0 0 0 7px #1e8cbe; + box-shadow: + inset 0 0 0 3px #fff, + inset 0 0 0 7px #1e8cbe; +} + +.wp-core-ui .attachment-preview { + position: relative; + -webkit-box-shadow: + inset 0 0 15px rgba( 0, 0, 0, 0.1 ), + inset 0 0 0 1px rgba( 0, 0, 0, 0.05 ); + box-shadow: + 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; +} + +.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; + -webkit-transition: opacity .1s; + 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; + -webkit-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; +} + +.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%; + -webkit-transform: translate( -50%, 50% ); + -ms-transform: translate(-50%,50%); /* Fails with spaces?? Weird! */ + transform: translate( -50%, 50% ); +} + +.wp-core-ui .attachment .thumbnail .centered img { + -webkit-transform: translate( 50%, -50% ); + -ms-transform: translate(50%,-50%); + transform: translate( 50%, -50% ); +} + +.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon { + -webkit-transform: translate( 50%, -70% ); + -ms-transform: translate(50%,-70%); + 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: bold; + background: rgba( 255, 255, 255, 0.8 ); + -webkit-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 ); +} + +.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; + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 0 0 1px rgba( 0, 0, 0, 0.3 ); + box-shadow: 0 0 0 1px rgba( 0, 0, 0, 0.3 ); +} + +.wp-core-ui .attachment-close:hover, +.wp-core-ui .attachment-close:focus { + background-position: -36px 4px; +} + +.wp-core-ui .attachment .check { + display: none; + height: 24px; + width: 24px; + padding: 0; + position: absolute; + z-index: 10; + top: 0; + left: 0; + outline: none; + background: #eee; + -webkit-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 { + 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: #1e8cbe; + -webkit-box-shadow: + 0 0 0 1px #fff, + 0 0 0 2px #1e8cbe; + box-shadow: + 0 0 0 1px #fff, + 0 0 0 2px #1e8cbe; +} + +.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; + -webkit-border-radius: 0; + border-radius: 0; +} + +/** + * Attachments Browser + */ +.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: none; +} + +.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; + position: absolute; + left: 0; + text-align: center; + top: 0; + width: 50px; + z-index: 1; +} + +.uploader-inline .close:before { + font: normal 30px/50px 'dashicons' !important; + color: #777; + display: inline-block; + content: '\f335'; + font-weight: 300; +} + +.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: 0.5em; +} + +.attachments-browser .no-media { + padding: 2em 2em 0 0; +} + +/** + * Progress Bar + */ +.media-progress-bar { + position: relative; + height: 10px; + width: 70%; + margin: 10px auto; + -webkit-border-radius: 10px; + border-radius: 10px; + background: #dfdfdf; + background: rgba( 0, 0, 0, 0.1 ); +} + +.media-progress-bar div { + height: 10px; + min-width: 20px; + width: 0; + background: #1e8cbe; + -webkit-border-radius: 10px; + border-radius: 10px; + -webkit-transition: width 300ms; + transition: width 300ms; +} + +.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 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: #464646; +} + +.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: 0; + left: 0; +} + +.upload-errors .upload-error { + padding: 12px; + margin-bottom: 12px; + background: #fff; + border-right: 4px solid #dd3d36; + -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); +} + +.upload-errors .upload-error-filename { + font-weight: bold; +} + +.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, 0.9 ); + z-index: 250000; + display: none; + text-align: center; + opacity: 0; + -webkit-transition: opacity 250ms; + transition: opacity 250ms; +} + +.uploader-window-content { + position: absolute; + top: 10px; + right: 10px; + left: 10px; + bottom: 10px; + border: 1px dashed #fff; +} + +.uploader-window h3 { + margin: -0.5em 0 0; + position: absolute; + top: 50%; + right: 0; + left: 0; + -webkit-transform: translateY( -50% ); + -ms-transform: translateY(-50%); + transform: translateY( -50% ); + font-size: 40px; + color: #fff; + padding: 0; +} + +.uploader-window .media-progress-bar { + margin-top: 20px; + max-width: 300px; + background: transparent; + 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 h3 { + font-size: 20px; + line-height: 28px; + font-weight: 400; + margin: 0; +} + +.uploader-inline .has-upload-message .upload-instructions { + font-size: 14px; + color: #464646; + font-weight: normal; +} + +.uploader-inline .drop-instructions { + display: none; +} + +.supports-drag-drop .uploader-inline .drop-instructions { + display: block; +} + +.uploader-inline p { + font-size: 12px; + margin: 0.5em 0; +} + +.uploader-inline .media-progress-bar { + display: none; +} + +.uploading.uploader-inline .media-progress-bar { + display: block; +} + +.uploader-inline .browser { + display: inline-block !important; +} + +/** + * Selection + */ +.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.empty, +.media-selection.editing { + 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: bold; +} + +.media-selection .button-link { + float: right; + padding: 1px 8px; + margin: 1px -8px 1px 8px; + line-height: 16px; + border-left: 1px solid #dfdfdf; + color: #21759B; +} + +.media-selection .button-link:hover, +.media-selection .button-link:focus { + background: #21759B; + color: #fff; + border-color: transparent; +} + +.media-selection .button-link:last-child { + border-left: 0; + margin-left: 0; +} + +.selection-info .clear-selection { + color: red; +} + +.selection-info .clear-selection:hover, +.selection-info .clear-selection:focus { + background: red; + color: #fff; +} + +.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 { + -webkit-box-shadow: none; + box-shadow: none; + background: none; +} + +.wp-core-ui .media-selection .attachment:focus, +.wp-core-ui .media-selection .selected.attachment:focus, +.wp-core-ui .media-selection .attachment.details:focus { + -webkit-box-shadow: + 0 0 0 1px #fff, + 0 0 2px 3px #5b9dd9; + box-shadow: + 0 0 0 1px #fff, + 0 0 2px 3px #5b9dd9; +} + +.wp-core-ui .media-selection .selected.attachment { + -webkit-box-shadow: none; + box-shadow: none; +} + +.wp-core-ui .media-selection .attachment.details { + -webkit-box-shadow: + 0 0 0 1px #fff, + 0 0 0 3px #1e8cbe; + box-shadow: + 0 0 0 1px #fff, + 0 0 0 3px #1e8cbe; +} + +.media-selection:after { + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 25px; + background-image: -webkit-gradient(linear, left top, right top, from(rgba( 255, 255, 255, 1 )), to(rgba( 255, 255, 255, 0 ))); + background-image: -webkit-linear-gradient(left, rgba( 255, 255, 255, 1 ), 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 { + display: none; +} + +/** + * Spinner + */ +.media-frame .spinner { + background: url(../images/spinner.gif) no-repeat; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + float: left; + display: inline-block; + visibility: hidden; + opacity: 0.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 + */ +.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: bold; + color: #464646; + 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; + -webkit-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 { + margin-top: 35px; +} + +.attachment-info .thumbnail-image:after { + content: ''; + display: block; + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + -webkit-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; +} + +.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 .edit-attachment, +.attachment-info .delete-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:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:hover, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:hover, +.media-modal .untrash-attachment:focus { + color: red; +} + +/** + * Attachment Display Settings + */ +.attachment-display-settings { + width: 100%; + float: right; + overflow: hidden; +} + +.attachment-display-settings h4 { + margin: 1.4em 0 0.4em; +} + +.collection-settings { + overflow: hidden; +} + +.collection-settings .setting input[type="checkbox"] { + float: right; + margin-left: 8px; +} + +.collection-settings .setting span { + min-width: inherit; +} + +/** + * Image Editor + */ +.media-modal .imgedit-wrap { + position: static; +} + +.media-modal .imgedit-wait { + height: auto !important; + left: 0; + bottom: 0; + right: 0; +} + +.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: 0 16px 16px; + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 250px; + overflow: auto; +} + +.media-modal .imgedit-group { + background: none; + border: none; + border-bottom: 1px solid #ddd; + -webkit-box-shadow: none; + box-shadow: none; + margin: 0; + margin-bottom: 16px; + padding: 0; + padding-bottom: 16px; + position: relative; /* RTL fix, #WP29352 */ +} + +.media-modal .imgedit-group:last-of-type { + border: none; + margin: 0; + padding: 0; +} + +.media-modal .imgedit-group-top h3 { + text-transform: uppercase; + font-size: 12px; + color: #666; + margin: 0; + margin-top: 24px; +} + +.media-modal .imgedit-group-top h3 a { + text-decoration: none; + color: #666; +} + +.media-modal .imgedit-help-toggle { + margin-top: -2px; + cursor: pointer; + color: #666; +} + +.media-modal .imgedit-help-toggled span.dashicons:before { + content: '\f142'; +} + +.media-modal .imgedit-group img { + margin-top: 5px; +} + +.media-modal .imgedit-wrap div.updated { + margin: 0; + margin-bottom: 16px; +} + + +/** + * Embed from URL and Image Details + */ +.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; + -webkit-box-shadow: inset -2px 2px 4px -2px rgba( 0, 0, 0, 0.1 ); + box-shadow: inset -2px 2px 4px -2px rgba( 0, 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 { + /* avoid Firefox to give focus to the embed preview container parent */ + overflow: visible; +} + +.embed-preview img, +.embed-preview iframe, +.embed-preview embed, +.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; + -webkit-box-shadow: 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.image-details .media-modal { + right: 140px; + left: 140px; +} + +.image-details .media-frame-title, +.image-details .media-frame-content, +.image-details .media-frame-router { + right: 0; +} + +.image-details .embed-media-settings { + top: 0; + overflow: visible; + padding: 0; +} + +.image-details .embed-media-settings, +.image-details .embed-media-settings div { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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 h3 { + margin: 20px; + padding-top: 20px; + border-top: 1px solid #ddd; +} + +.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; +} + +.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: #999; + 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; + -webkit-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 { + width: 100%; + margin: 10px 0; + float: right; + display: block; + clear: both; +} + +.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 .embed-media-settings .setting input.link-to-custom, +.image-details .embed-media-settings .link-target, +.image-details .embed-media-settings .custom-size { + margin-right: 27%; + width: 70%; +} + +.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; +} + +/* 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; + -webkit-transform: translateY( -50% ); + -ms-transform: translateY(-50%); + transform: translateY( -50% ); + font-size: 3em; + line-height: 1.3; + font-weight: bold; + 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; +} + +/** + * IE7 Fixes + */ +.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 + */ +.rtl .media-modal, +.rtl .media-frame, +.rtl .media-frame .search, +.rtl .media-frame input[type="text"], +.rtl .media-frame input[type="password"], +.rtl .media-frame input[type="number"], +.rtl .media-frame input[type="search"], +.rtl .media-frame input[type="email"], +.rtl .media-frame input[type="url"], +.rtl .media-frame input[type="tel"], +.rtl .media-frame textarea, +.rtl .media-frame select { + font-family: Tahoma, sans-serif; +} + +:lang(he-il) .rtl .media-modal, +:lang(he-il) .rtl .media-frame, +:lang(he-il) .rtl .media-frame .search, +:lang(he-il) .rtl .media-frame input[type="text"], +:lang(he-il) .rtl .media-frame input[type="password"], +:lang(he-il) .rtl .media-frame input[type="number"], +:lang(he-il) .rtl .media-frame input[type="search"], +:lang(he-il) .rtl .media-frame input[type="email"], +:lang(he-il) .rtl .media-frame input[type="url"], +:lang(he-il) .rtl .media-frame textarea, +:lang(he-il) .rtl .media-frame select { + font-family: Arial, sans-serif; +} + +/** + * Responsive layout + */ +@media only screen and (max-width: 900px) { + + /* Drop-down menu */ + .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-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; + color: #21759b; + } + + .media-frame:not(.hide-menu) .media-frame-title .dashicons { + display: inline-block; + line-height: 50px; + } + + .media-frame:not(.hide-menu) .media-frame-title h1 { + line-height: 3; + font-size: 18px; + float: right; + cursor: pointer; + } + /* End drop-down menu */ + + .media-sidebar { + width: 230px; + } + + .attachments-browser .attachments, + .attachments-browser .uploader-inline, + .attachments-browser .media-toolbar { + left: 262px; + } + + .media-sidebar .setting, + .attachment-details .setting { + margin: 6px 0px; + } + + .media-sidebar .setting input, + .media-sidebar .setting textarea, + .media-sidebar .setting span, + .attachment-details .setting input, + .attachment-details .setting textarea, + .attachment-details .setting span, + .compat-item label span { + float: none; + } + + .media-sidebar .setting span, + .attachment-details .setting span, + .compat-item label span { + text-align: inherit; + min-height: 16px; + margin: 0; + padding: 8px 2px 0; + } + + .media-sidebar .setting .value, + .attachment-details .setting .value { + float: none; + width: auto; + } + + .media-sidebar .setting input[type="text"], + .media-sidebar .setting input[type="password"], + .media-sidebar .setting input[type="email"], + .media-sidebar .setting input[type="number"], + .media-sidebar .setting input[type="search"], + .media-sidebar .setting input[type="tel"], + .media-sidebar .setting input[type="url"], + .media-sidebar .setting textarea, + .media-sidebar .setting select, + .attachment-details .setting input[type="text"], + .attachment-details .setting input[type="password"], + .attachment-details .setting input[type="email"], + .attachment-details .setting input[type="number"], + .attachment-details .setting input[type="search"], + .attachment-details .setting input[type="tel"], + .attachment-details .setting input[type="url"], + .attachment-details .setting textarea, + .attachment-details .setting select { + float: none; + width: 98%; + max-width: none; + height: auto; + } + + .media-sidebar .setting select.columns, + .attachment-details .setting select.columns { + width: auto; + } + + .media-frame input, + .media-frame textarea, + .media-frame .search { + 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 .custom-size { + margin-right: 20px; + } + + .collection-settings .setting input[type="checkbox"] { + margin-top: 0; + } + + .media-selection { + min-width: 120px; + } + + .media-selection:after { + background: none; + } + + .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; + } + + /* Text inputs need to be 16px, or they force zooming on iOS */ + .media-frame input[type="text"], + .media-frame input[type="password"], + .media-frame input[type="number"], + .media-frame input[type="search"], + .media-frame input[type="email"], + .media-frame input[type="url"], + .media-frame textarea, + .media-frame select { + font-size: 16px; + } +} + +/* Responsive on portrait and landscape */ +@media only screen and (max-width: 640px), screen and (max-height: 400px) { + /* Full-bleed modal */ + .media-modal, + .image-details .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%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding-bottom: 0; + } + + .media-sidebar.visible { + bottom: 0; + } + + .attachments-browser .attachments, + .attachments-browser .uploader-inline, + .attachments-browser .media-toolbar { + 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 tabs on the top */ + .media-frame-content .media-toolbar .instructions { + display: none; + } +} + +/* Landscape specific header override */ +@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; + } + + /* 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; + } +} + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + .media-modal-icon { + background-image: url(../images/uploader-icons-2x.png); + -webkit-background-size: 134px 15px; + 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%; +} diff --git a/wp-includes/css/media-views-rtl.min.css b/wp-includes/css/media-views-rtl.min.css new file mode 100644 index 0000000000..1f5349f32c --- /dev/null +++ b/wp-includes/css/media-views-rtl.min.css @@ -0,0 +1,8 @@ +.media-modal *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.media-frame input,.media-frame select,.media-frame textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.media-frame,.media-modal{font-family:"Open Sans",sans-serif;font-size:12px;-webkit-overflow-scrolling:touch}.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:#21759b}.media-frame a:hover{color:#d54e21}.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=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-family:"Open Sans",sans-serif;font-size:12px;border-width:1px;border-style:solid;border-color:#dfdfdf}.media-frame input[type=text]:focus,.media-frame input[type=password]:focus,.media-frame input[type=number]:focus,.media-frame input[type=search]:focus,.media-frame input[type=email]: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 :-moz-placeholder{color:#a9a9a9}.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{-ms-touch-action:none;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;padding:0;z-index:1000;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.media-modal-close:active{-webkit-box-shadow:none;box-shadow:none;outline:0}.media-modal-close span.media-modal-icon{background-image:none}.media-modal-close .media-modal-icon:before{content:'\f158';font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#666}.media-modal-close:hover .media-modal-icon:before{color:#00a0d2}.media-modal-content{position:absolute;top:0;right:0;left:0;bottom:0;overflow:auto;min-height:300px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.7);box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fcfcfc;-webkit-font-smoothing:subpixel-antialiased}.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons.png);background-repeat:no-repeat}.media-menu,.media-sidebar{top:0;bottom:0;left:0;background:#f3f3f3}.media-toolbar{position:absolute;top:0;right:0;left:0;z-index:100;height:60px;padding:0 16px;border:0 solid #dfdfdf;overflow:hidden}.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;width:267px;padding:0 16px 24px;z-index:75;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 h3,.media-sidebar h3{position:relative;font-weight:700;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=radio],.attachment-details .field input[type=checkbox],.attachment-details .setting input[type=radio],.attachment-details .setting input[type=checkbox],.media-sidebar .field input[type=radio],.media-sidebar .field input[type=checkbox],.media-sidebar .setting input[type=radio],.media-sidebar .setting input[type=checkbox]{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}.media-menu>a,.media-router>a{text-decoration:none;line-height:18px;font-size:14px}.compat-item label span{text-align:left}.attachment-details .setting .value,.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting textarea,.media-sidebar .setting .value,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=url],.media-sidebar .setting textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px;width:65%;float:left}.attachment-details .setting .value,.media-sidebar .setting .value{margin:0 1px;text-align:right}.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=tel],.compat-item .field input[type=text],.compat-item .field input[type=password],.compat-item .field input[type=number],.compat-item .field input[type=search],.compat-item .field input[type=email],.compat-item .field input[type=url],.compat-item .field textarea{width:100%;margin:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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;right:0;margin:0;padding:10px 0;border-left-width:1px;border-left-style:solid;border-left-color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.media-menu>a{display:block;position:relative;padding:8px 20px;margin:0;color:#0073aa}.media-frame-title .dashicons,.media-frame.hide-router .media-frame-router,.media-router .active:after{display:none}.media-menu>a:hover{color:#21759B;background:rgba(0,0,0,.04)}.media-menu>a:active{outline:0}.media-menu .active,.media-menu .active:hover{color:#23282d;font-weight:700}.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;user-select:none}.media-router,.wp-core-ui .attachment{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.media-router a{-webkit-transition:none;transition:none}.media-router>a{position:relative;float:right;padding:8px 10px 9px;margin:0;height:18px}.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-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-content,.media-frame-router,.media-frame-title,.media-frame-toolbar{left:0;position:absolute;right:200px}.media-frame-title{top:0;height:50px;z-index:200}.media-frame-router{top:50px;height:36px;z-index:200}.media-frame-content{top:84px;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.media-frame-toolbar{bottom:0;height:60px;z-index:100}.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-menu .media-frame-menu{right:-200px}.media-frame.hide-toolbar .media-frame-content{bottom:0}.media-frame.hide-toolbar .media-frame-toolbar{bottom:-61px}.media-frame.hide-router .media-frame-content{top:50px}.media-frame.hide-router .media-frame-title{border-bottom:1px solid #dfdfdf;-webkit-box-shadow:0 4px 4px -4px rgba(0,0,0,.1);box-shadow:0 4px 4px -4px rgba(0,0,0,.1)}.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:-webkit-calc(48% - 12px);max-width:calc(48% - 12px)}.media-toolbar-primary .search,.wp-core-ui .attachment .portrait img{max-width:100%}.media-frame select.attachment-filters:last-of-type{margin-left:0}.media-frame .search{margin-top:11px;padding:4px;font-size:13px;color:#464646;font-family:"Open Sans",sans-serif;-webkit-appearance:none}.wp-core-ui .attachments{margin:0;-webkit-overflow-scrolling:touch}.wp-core-ui .attachment{position:relative;float:right;padding:8px;margin:0;color:#464646;cursor:pointer;list-style:none;text-align:center;user-select:none;width:25%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui .attachment.details:focus,.wp-core-ui .attachment:focus,.wp-core-ui .selected.attachment:focus{-webkit-box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;outline:0}.wp-core-ui .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc}.wp-core-ui .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #1e8cbe;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #1e8cbe}.wp-core-ui .attachment-preview{position:relative;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);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;-webkit-transition:opacity .1s;transition:opacity .1s}.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;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);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%;-webkit-transform:translate(-50%,50%);-ms-transform:translate(-50%,50%);transform:translate(-50%,50%)}.wp-core-ui .attachment .thumbnail .centered img{-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon{-webkit-transform:translate(50%,-70%);-ms-transform:translate(50%,-70%);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:700;background:rgba(255,255,255,.8);-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);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;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.3);box-shadow:0 0 0 1px rgba(0,0,0,.3)}.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;position:absolute;z-index:10;top:0;left:0;outline:0;background:#eee;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15);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:#1e8cbe;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #1e8cbe;box-shadow:0 0 0 1px #fff,0 0 0 2px #1e8cbe}.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;-webkit-border-radius:0;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;position:absolute;left:0;text-align:center;top:0;width:50px;z-index:1}.uploader-inline .close:before{font:400 30px/50px dashicons!important;color:#777;display:inline-block;content:'\f335';font-weight:300}.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;-webkit-border-radius:10px;border-radius:10px;background:#dfdfdf;background:rgba(0,0,0,.1)}.media-progress-bar div{height:10px;min-width:20px;width:0;background:#1e8cbe;-webkit-border-radius:10px;border-radius:10px;-webkit-transition:width 300ms;transition:width 300ms}.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 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:#464646}.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:0;left:0}.upload-errors .upload-error{padding:12px;margin-bottom:12px;background:#fff;border-right:4px solid #dd3d36;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.upload-errors .upload-error-filename{font-weight:700}.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;-webkit-transition:opacity 250ms;transition:opacity 250ms}.uploader-window-content{position:absolute;top:10px;right:10px;left:10px;bottom:10px;border:1px dashed #fff}.uploader-window h3{margin:-.5em 0 0;position:absolute;top:50%;right:0;left:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);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 h3{font-size:20px;line-height:28px;font-weight:400;margin:0}.uploader-inline .has-upload-message .upload-instructions{font-size:14px;color:#464646;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,.media-selection.one .edit-selection{display:none}.media-selection .count{display:block;padding-top:12px;font-size:14px;line-height:20px;font-weight:700}.media-selection .attachments,.media-selection .selection-view{display:inline-block;vertical-align:top}.media-selection .button-link{float:right;padding:1px 8px;margin:1px -8px 1px 8px;line-height:16px;border-left:1px solid #dfdfdf;color:#21759B}.media-selection .button-link:focus,.media-selection .button-link:hover{background:#21759B;color:#fff;border-color:transparent}.media-selection .button-link:last-child{border-left:0;margin-left:0}.selection-info .clear-selection{color:red}.selection-info .clear-selection:focus,.selection-info .clear-selection:hover{background:red;color:#fff}.media-selection .attachments{height:48px;margin:6px;padding:0;overflow:hidden}.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{-webkit-box-shadow:none;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{-webkit-box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9;box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9}.wp-core-ui .media-selection .selected.attachment{-webkit-box-shadow:none;box-shadow:none}.wp-core-ui .media-selection .attachment.details{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #1e8cbe;box-shadow:0 0 0 1px #fff,0 0 0 3px #1e8cbe}.media-selection:after{content:'';display:block;position:absolute;top:0;left:0;bottom:0;width:25px;background-image:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,1)),to(rgba(255,255,255,0)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,1),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{display:none}.media-frame .spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;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}.attachment-details.save-waiting .settings-save-status .spinner,.media-frame .embed-loading .embed-url .spinner,.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-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:700;color:#464646;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;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1);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;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);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:red}.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-wait{height:auto!important;left:0;bottom:0;right:0}.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:0 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;-webkit-box-shadow:none;box-shadow:none;margin:0 0 16px;padding:0 0 16px;position:relative}.media-modal .imgedit-group:last-of-type{border:none;margin:0;padding:0}.media-modal .imgedit-group-top h3{text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 0}.media-modal .imgedit-group-top h3 a{text-decoration:none;color:#666}.media-modal .imgedit-help-toggle{margin-top:-2px;cursor:pointer;color:#666}.media-modal .imgedit-help-toggled span.dashicons:before{content:'\f142'}.media-modal .imgedit-group img{margin-top:5px}.media-modal .imgedit-wrap div.updated{margin:0 0 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;-webkit-box-shadow:inset -2px 2px 4px -2px rgba(0,0,0,.1);box-shadow:inset -2px 2px 4px -2px rgba(0,0,0,.1)}.media-frame .embed-url .spinner{position:absolute;top:32px;left:26px}.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:#5b9dd9 solid 1px;-webkit-box-shadow:0 0 2px 1px rgba(30,140,190,.8);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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 h3{margin:20px;padding-top:20px;border-top:1px solid #ddd}.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}.image-details .advanced-toggle:after{font:400 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:#999;font-size:inherit}.image-details .custom-size input{width:5em}.image-details .custom-size .sep{float:right;margin:26px 6px 0}.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;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);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}.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 .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 .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;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;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:3em;line-height:1.3;font-weight:700;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=tel],.ie7 .media-sidebar .setting input[type=text],.ie7 .media-sidebar .setting input[type=password],.ie7 .media-sidebar .setting input[type=number],.ie7 .media-sidebar .setting input[type=search],.ie7 .media-sidebar .setting input[type=email],.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=tel],.rtl .media-frame input[type=text],.rtl .media-frame input[type=password],.rtl .media-frame input[type=number],.rtl .media-frame input[type=search],.rtl .media-frame input[type=email],.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=text],:lang(he-il) .rtl .media-frame input[type=password],:lang(he-il) .rtl .media-frame input[type=number],:lang(he-il) .rtl .media-frame input[type=search],:lang(he-il) .rtl .media-frame input[type=email],: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;color:#21759b}.media-frame:not(.hide-menu) .media-frame-title .dashicons{display:inline-block;line-height:50px}.media-frame:not(.hide-menu) .media-frame-title h1{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=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting select,.attachment-details .setting textarea,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.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 .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=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.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%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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){.media-modal-icon{background-image:url(../images/uploader-icons-2x.png);-webkit-background-size:134px 15px;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 new file mode 100644 index 0000000000..2d4aba7453 --- /dev/null +++ b/wp-includes/css/media-views.css @@ -0,0 +1,2581 @@ +/** + * Base Styles + */ +.media-modal * { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.media-frame input, +.media-frame select, +.media-frame textarea { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.media-modal, +.media-frame { + font-family: "Open Sans", sans-serif; + font-size: 12px; + -webkit-overflow-scrolling: touch; +} + +.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: #21759b; +} + +.media-frame a:hover { + color: #d54e21; +} + +.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="text"], +.media-frame input[type="password"], +.media-frame input[type="number"], +.media-frame input[type="search"], +.media-frame input[type="email"], +.media-frame input[type="url"], +.media-frame textarea, +.media-frame select { + font-family: "Open Sans", sans-serif; + font-size: 12px; + border-width: 1px; + border-style: solid; + border-color: #dfdfdf; +} + +.media-frame input[type="text"]:focus, +.media-frame input[type="password"]:focus, +.media-frame input[type="number"]:focus, +.media-frame input[type="search"]:focus, +.media-frame input[type="email"]:focus, +.media-frame input[type="url"]:focus, +.media-frame textarea:focus, +.media-frame select:focus { + 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: #eee; +} + +.media-frame input[type="search"] { + -webkit-appearance: textfield; +} + +.media-frame :-moz-placeholder { + color: #a9a9a9; +} + +.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 { + -ms-touch-action: none; + touch-action: none; +} + +/** + * Modal + */ +.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: 0.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; + padding: 0; + z-index: 1000; + -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.media-modal-close:active { + -webkit-box-shadow: none; + box-shadow: none; +} + +.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; + color: #666; +} + +.media-modal-close:hover .media-modal-icon:before { + color: #00a0d2; +} + +.media-modal-close:active { + outline: 0; +} + +.media-modal-content { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + overflow: auto; + min-height: 300px; + -webkit-box-shadow: 0 5px 15px rgba(0,0,0,0.7); + box-shadow: 0 5px 15px rgba(0,0,0,0.7); + background: #fcfcfc; + -webkit-font-smoothing: subpixel-antialiased; +} + +/* higher specificity */ +.wp-core-ui .media-modal-icon { + background-image: url(../images/uploader-icons.png); + background-repeat: no-repeat; +} + +/** + * Toolbar + */ +.media-toolbar { + position: absolute; + top: 0; + left: 0; + right: 0; + z-index: 100; + height: 60px; + padding: 0 16px; + border: 0 solid #dfdfdf; + overflow: hidden; +} + +.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; +} + +/** + * Sidebar + */ +.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%; +} + +.media-sidebar h3, +.image-details h3 { + position: relative; + font-weight: bold; + text-transform: uppercase; + font-size: 12px; + color: #666; + margin: 24px 0 8px; +} + +.media-sidebar .setting, +.attachment-details .setting { + display: block; + float: left; + width: 100%; + margin: 1px 0; +} + +.media-sidebar .setting label, +.attachment-details .setting label { + display: block; +} + +.media-sidebar .setting .link-to-custom, +.attachment-details .setting .link-to-custom { + margin: 3px 2px 0; +} + +.media-sidebar .setting span, +.attachment-details .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 select, +.attachment-details .setting select { + max-width: 65%; +} + +.media-sidebar .setting input[type="checkbox"], +.media-sidebar .field input[type="checkbox"], +.media-sidebar .setting input[type="radio"], +.media-sidebar .field input[type="radio"], +.attachment-details .setting input[type="checkbox"], +.attachment-details .field input[type="checkbox"], +.attachment-details .setting input[type="radio"], +.attachment-details .field input[type="radio"] { + float: none; + margin: 8px 3px 0; + padding: 0; +} + +.media-sidebar .setting span, +.attachment-details .setting span, +.compat-item label span { + float: left; + min-height: 22px; + padding-top: 8px; + line-height: 16px; + font-weight: normal; + color: #666; +} + +.compat-item label span { + text-align: right; +} + +.media-sidebar .setting input[type="text"], +.media-sidebar .setting input[type="password"], +.media-sidebar .setting input[type="email"], +.media-sidebar .setting input[type="number"], +.media-sidebar .setting input[type="search"], +.media-sidebar .setting input[type="tel"], +.media-sidebar .setting input[type="url"], +.media-sidebar .setting textarea, +.media-sidebar .setting .value, +.attachment-details .setting input[type="text"], +.attachment-details .setting input[type="password"], +.attachment-details .setting input[type="email"], +.attachment-details .setting input[type="number"], +.attachment-details .setting input[type="search"], +.attachment-details .setting input[type="tel"], +.attachment-details .setting input[type="url"], +.attachment-details .setting textarea, +.attachment-details .setting .value { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin: 1px; + width: 65%; + float: right; +} + +.media-sidebar .setting .value, +.attachment-details .setting .value { + margin: 0 1px; + text-align: left; +} + +.media-sidebar .setting textarea, +.attachment-details .setting textarea, +.compat-item .field textarea { + height: 62px; + resize: vertical; +} + +.media-sidebar select, +.attachment-details 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 .label, +.compat-item .field { + 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="text"], +.compat-item .field input[type="password"], +.compat-item .field input[type="email"], +.compat-item .field input[type="number"], +.compat-item .field input[type="search"], +.compat-item .field input[type="tel"], +.compat-item .field input[type="url"], +.compat-item .field textarea { + width: 100%; + margin: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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; +} + +/** + * Menu + */ +.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; + -ms-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: #21759B; + background: rgba( 0, 0, 0, 0.04 ); +} + +.media-menu > a:active { + outline: none; +} + +.media-menu .active, +.media-menu .active:hover { + color: #23282d; + font-weight: bold; +} + +.media-menu .separator { + height: 0; + margin: 12px 20px; + padding: 0; + border-top: 1px solid #ddd; +} + +/** + * Menu + */ +.media-router { + position: relative; + padding: 0 6px; + margin: 0; + clear: both; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.media-router a { + -webkit-transition: none; + 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: none; +} + +.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; +} + +/** + * Frame + */ +.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; + border-bottom: 1px solid #ddd; +} + +.media-frame-toolbar { + position: absolute; + left: 200px; + right: 0; + bottom: 0; + height: 60px; + z-index: 100; +} + +.media-frame.hide-menu .media-frame-title, +.media-frame.hide-menu .media-frame-router, +.media-frame.hide-menu .media-frame-toolbar, +.media-frame.hide-menu .media-frame-content { + left: 0; +} + +.media-frame.hide-menu .media-frame-menu { + left: -200px; +} + +.media-frame.hide-toolbar .media-frame-content { + bottom: 0; +} + +.media-frame.hide-toolbar .media-frame-toolbar { + bottom: -61px; +} + +.media-frame.hide-router .media-frame-content { + top: 50px; +} + +.media-frame.hide-router .media-frame-router { + display: none; +} + +.media-frame.hide-router .media-frame-title { + border-bottom: 1px solid #dfdfdf; + -webkit-box-shadow: 0 4px 4px -4px rgba( 0, 0, 0, 0.1 ); + box-shadow: 0 4px 4px -4px rgba( 0, 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; +} + +/** + * Iframes + */ +.media-frame .media-iframe { + overflow: hidden; +} + +.media-frame .media-iframe, +.media-frame .media-iframe iframe { + height: 100%; + width: 100%; + border: 0; +} + +/** + * Attachment Browser Filters + */ +.media-frame select.attachment-filters { + margin-top: 11px; + margin-right: 2%; + max-width: 42%; + max-width: -webkit-calc(48% - 12px); + max-width: calc(48% - 12px); +} + +.media-frame select.attachment-filters:last-of-type { + margin-right: 0; +} + +/** + * Search + */ +.media-frame .search { + margin-top: 11px; + padding: 4px; + font-size: 13px; + color: #464646; + font-family: "Open Sans", sans-serif; + -webkit-appearance: none; +} + +.media-toolbar-primary .search { + max-width: 100%; +} + +/** + * Attachments + */ +.wp-core-ui .attachments { + margin: 0; + -webkit-overflow-scrolling: touch; +} + +/** + * Attachment + */ +.wp-core-ui .attachment { + position: relative; + float: left; + padding: 8px; + margin: 0; + color: #464646; + cursor: pointer; + list-style: none; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 25%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.wp-core-ui .attachment:focus, +.wp-core-ui .selected.attachment:focus, +.wp-core-ui .attachment.details:focus { + -webkit-box-shadow: + inset 0 0 2px 3px #fff, + inset 0 0 0 7px #5b9dd9; + box-shadow: + inset 0 0 2px 3px #fff, + inset 0 0 0 7px #5b9dd9; + outline: none; +} + +.wp-core-ui .selected.attachment { + -webkit-box-shadow: + inset 0 0 0 5px #fff, + inset 0 0 0 7px #ccc; + box-shadow: + inset 0 0 0 5px #fff, + inset 0 0 0 7px #ccc; +} + +.wp-core-ui .attachment.details { + -webkit-box-shadow: + inset 0 0 0 3px #fff, + inset 0 0 0 7px #1e8cbe; + box-shadow: + inset 0 0 0 3px #fff, + inset 0 0 0 7px #1e8cbe; +} + +.wp-core-ui .attachment-preview { + position: relative; + -webkit-box-shadow: + inset 0 0 15px rgba( 0, 0, 0, 0.1 ), + inset 0 0 0 1px rgba( 0, 0, 0, 0.05 ); + box-shadow: + 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; +} + +.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; + -webkit-transition: opacity .1s; + 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; + -webkit-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; +} + +.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%; + -webkit-transform: translate( 50%, 50% ); + -ms-transform: translate(50%,50%); /* Fails with spaces?? Weird! */ + transform: translate( 50%, 50% ); +} + +.wp-core-ui .attachment .thumbnail .centered img { + -webkit-transform: translate( -50%, -50% ); + -ms-transform: translate(-50%,-50%); + transform: translate( -50%, -50% ); +} + +.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon { + -webkit-transform: translate( -50%, -70% ); + -ms-transform: translate(-50%,-70%); + 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: bold; + background: rgba( 255, 255, 255, 0.8 ); + -webkit-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 ); +} + +.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; + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 0 0 1px rgba( 0, 0, 0, 0.3 ); + box-shadow: 0 0 0 1px rgba( 0, 0, 0, 0.3 ); +} + +.wp-core-ui .attachment-close:hover, +.wp-core-ui .attachment-close:focus { + background-position: -36px 4px; +} + +.wp-core-ui .attachment .check { + display: none; + height: 24px; + width: 24px; + padding: 0; + position: absolute; + z-index: 10; + top: 0; + right: 0; + outline: none; + background: #eee; + -webkit-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 { + 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: #1e8cbe; + -webkit-box-shadow: + 0 0 0 1px #fff, + 0 0 0 2px #1e8cbe; + box-shadow: + 0 0 0 1px #fff, + 0 0 0 2px #1e8cbe; +} + +.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; + -webkit-border-radius: 0; + border-radius: 0; +} + +/** + * Attachments Browser + */ +.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: none; +} + +.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; + position: absolute; + right: 0; + text-align: center; + top: 0; + width: 50px; + z-index: 1; +} + +.uploader-inline .close:before { + font: normal 30px/50px 'dashicons' !important; + color: #777; + display: inline-block; + content: '\f335'; + font-weight: 300; +} + +.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: 0.5em; +} + +.attachments-browser .no-media { + padding: 2em 0 0 2em; +} + +/** + * Progress Bar + */ +.media-progress-bar { + position: relative; + height: 10px; + width: 70%; + margin: 10px auto; + -webkit-border-radius: 10px; + border-radius: 10px; + background: #dfdfdf; + background: rgba( 0, 0, 0, 0.1 ); +} + +.media-progress-bar div { + height: 10px; + min-width: 20px; + width: 0; + background: #1e8cbe; + -webkit-border-radius: 10px; + border-radius: 10px; + -webkit-transition: width 300ms; + transition: width 300ms; +} + +.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 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: #464646; +} + +.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: 0; + right: 0; +} + +.upload-errors .upload-error { + padding: 12px; + margin-bottom: 12px; + background: #fff; + border-left: 4px solid #dd3d36; + -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); +} + +.upload-errors .upload-error-filename { + font-weight: bold; +} + +.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, 0.9 ); + z-index: 250000; + display: none; + text-align: center; + opacity: 0; + -webkit-transition: opacity 250ms; + transition: opacity 250ms; +} + +.uploader-window-content { + position: absolute; + top: 10px; + left: 10px; + right: 10px; + bottom: 10px; + border: 1px dashed #fff; +} + +.uploader-window h3 { + margin: -0.5em 0 0; + position: absolute; + top: 50%; + left: 0; + right: 0; + -webkit-transform: translateY( -50% ); + -ms-transform: translateY(-50%); + transform: translateY( -50% ); + font-size: 40px; + color: #fff; + padding: 0; +} + +.uploader-window .media-progress-bar { + margin-top: 20px; + max-width: 300px; + background: transparent; + 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 h3 { + font-size: 20px; + line-height: 28px; + font-weight: 400; + margin: 0; +} + +.uploader-inline .has-upload-message .upload-instructions { + font-size: 14px; + color: #464646; + font-weight: normal; +} + +.uploader-inline .drop-instructions { + display: none; +} + +.supports-drag-drop .uploader-inline .drop-instructions { + display: block; +} + +.uploader-inline p { + font-size: 12px; + margin: 0.5em 0; +} + +.uploader-inline .media-progress-bar { + display: none; +} + +.uploading.uploader-inline .media-progress-bar { + display: block; +} + +.uploader-inline .browser { + display: inline-block !important; +} + +/** + * Selection + */ +.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.empty, +.media-selection.editing { + 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: bold; +} + +.media-selection .button-link { + float: left; + padding: 1px 8px; + margin: 1px 8px 1px -8px; + line-height: 16px; + border-right: 1px solid #dfdfdf; + color: #21759B; +} + +.media-selection .button-link:hover, +.media-selection .button-link:focus { + background: #21759B; + color: #fff; + border-color: transparent; +} + +.media-selection .button-link:last-child { + border-right: 0; + margin-right: 0; +} + +.selection-info .clear-selection { + color: red; +} + +.selection-info .clear-selection:hover, +.selection-info .clear-selection:focus { + background: red; + color: #fff; +} + +.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 { + -webkit-box-shadow: none; + box-shadow: none; + background: none; +} + +.wp-core-ui .media-selection .attachment:focus, +.wp-core-ui .media-selection .selected.attachment:focus, +.wp-core-ui .media-selection .attachment.details:focus { + -webkit-box-shadow: + 0 0 0 1px #fff, + 0 0 2px 3px #5b9dd9; + box-shadow: + 0 0 0 1px #fff, + 0 0 2px 3px #5b9dd9; +} + +.wp-core-ui .media-selection .selected.attachment { + -webkit-box-shadow: none; + box-shadow: none; +} + +.wp-core-ui .media-selection .attachment.details { + -webkit-box-shadow: + 0 0 0 1px #fff, + 0 0 0 3px #1e8cbe; + box-shadow: + 0 0 0 1px #fff, + 0 0 0 3px #1e8cbe; +} + +.media-selection:after { + content: ''; + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 25px; + background-image: -webkit-gradient(linear, right top, left top, from(rgba( 255, 255, 255, 1 )), to(rgba( 255, 255, 255, 0 ))); + background-image: -webkit-linear-gradient(right, rgba( 255, 255, 255, 1 ), 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 { + display: none; +} + +/** + * Spinner + */ +.media-frame .spinner { + background: url(../images/spinner.gif) no-repeat; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + float: right; + display: inline-block; + visibility: hidden; + opacity: 0.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 + */ +.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: bold; + color: #464646; + 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; + -webkit-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 { + margin-top: 35px; +} + +.attachment-info .thumbnail-image:after { + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + -webkit-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; +} + +.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 .edit-attachment, +.attachment-info .delete-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:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:hover, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:hover, +.media-modal .untrash-attachment:focus { + color: red; +} + +/** + * Attachment Display Settings + */ +.attachment-display-settings { + width: 100%; + float: left; + overflow: hidden; +} + +.attachment-display-settings h4 { + margin: 1.4em 0 0.4em; +} + +.collection-settings { + overflow: hidden; +} + +.collection-settings .setting input[type="checkbox"] { + float: left; + margin-right: 8px; +} + +.collection-settings .setting span { + min-width: inherit; +} + +/** + * Image Editor + */ +.media-modal .imgedit-wrap { + position: static; +} + +.media-modal .imgedit-wait { + height: auto !important; + right: 0; + bottom: 0; + left: 0; +} + +.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: 0 16px 16px; + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 250px; + overflow: auto; +} + +.media-modal .imgedit-group { + background: none; + border: none; + border-bottom: 1px solid #ddd; + -webkit-box-shadow: none; + box-shadow: none; + margin: 0; + margin-bottom: 16px; + padding: 0; + padding-bottom: 16px; + position: relative; /* RTL fix, #WP29352 */ +} + +.media-modal .imgedit-group:last-of-type { + border: none; + margin: 0; + padding: 0; +} + +.media-modal .imgedit-group-top h3 { + text-transform: uppercase; + font-size: 12px; + color: #666; + margin: 0; + margin-top: 24px; +} + +.media-modal .imgedit-group-top h3 a { + text-decoration: none; + color: #666; +} + +.media-modal .imgedit-help-toggle { + margin-top: -2px; + cursor: pointer; + color: #666; +} + +.media-modal .imgedit-help-toggled span.dashicons:before { + content: '\f142'; +} + +.media-modal .imgedit-group img { + margin-top: 5px; +} + +.media-modal .imgedit-wrap div.updated { + margin: 0; + margin-bottom: 16px; +} + + +/** + * Embed from URL and Image Details + */ +.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; + -webkit-box-shadow: inset 2px 2px 4px -2px rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 2px 2px 4px -2px rgba( 0, 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 { + /* avoid Firefox to give focus to the embed preview container parent */ + overflow: visible; +} + +.embed-preview img, +.embed-preview iframe, +.embed-preview embed, +.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; + -webkit-box-shadow: 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.image-details .media-modal { + left: 140px; + right: 140px; +} + +.image-details .media-frame-title, +.image-details .media-frame-content, +.image-details .media-frame-router { + left: 0; +} + +.image-details .embed-media-settings { + top: 0; + overflow: visible; + padding: 0; +} + +.image-details .embed-media-settings, +.image-details .embed-media-settings div { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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 h3 { + margin: 20px; + padding-top: 20px; + border-top: 1px solid #ddd; +} + +.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; +} + +.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: #999; + 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; + -webkit-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 { + width: 100%; + margin: 10px 0; + float: left; + display: block; + clear: both; +} + +.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 .embed-media-settings .setting input.link-to-custom, +.image-details .embed-media-settings .link-target, +.image-details .embed-media-settings .custom-size { + margin-left: 27%; + width: 70%; +} + +.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; +} + +/* 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; + -webkit-transform: translateY( -50% ); + -ms-transform: translateY(-50%); + transform: translateY( -50% ); + font-size: 3em; + line-height: 1.3; + font-weight: bold; + 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; +} + +/** + * IE7 Fixes + */ +.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 + */ +.rtl .media-modal, +.rtl .media-frame, +.rtl .media-frame .search, +.rtl .media-frame input[type="text"], +.rtl .media-frame input[type="password"], +.rtl .media-frame input[type="number"], +.rtl .media-frame input[type="search"], +.rtl .media-frame input[type="email"], +.rtl .media-frame input[type="url"], +.rtl .media-frame input[type="tel"], +.rtl .media-frame textarea, +.rtl .media-frame select { + font-family: Tahoma, sans-serif; +} + +:lang(he-il) .rtl .media-modal, +:lang(he-il) .rtl .media-frame, +:lang(he-il) .rtl .media-frame .search, +:lang(he-il) .rtl .media-frame input[type="text"], +:lang(he-il) .rtl .media-frame input[type="password"], +:lang(he-il) .rtl .media-frame input[type="number"], +:lang(he-il) .rtl .media-frame input[type="search"], +:lang(he-il) .rtl .media-frame input[type="email"], +:lang(he-il) .rtl .media-frame input[type="url"], +:lang(he-il) .rtl .media-frame textarea, +:lang(he-il) .rtl .media-frame select { + font-family: Arial, sans-serif; +} + +/** + * Responsive layout + */ +@media only screen and (max-width: 900px) { + + /* Drop-down menu */ + .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-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; + color: #21759b; + } + + .media-frame:not(.hide-menu) .media-frame-title .dashicons { + display: inline-block; + line-height: 50px; + } + + .media-frame:not(.hide-menu) .media-frame-title h1 { + line-height: 3; + font-size: 18px; + float: left; + cursor: pointer; + } + /* End drop-down menu */ + + .media-sidebar { + width: 230px; + } + + .attachments-browser .attachments, + .attachments-browser .uploader-inline, + .attachments-browser .media-toolbar { + right: 262px; + } + + .media-sidebar .setting, + .attachment-details .setting { + margin: 6px 0px; + } + + .media-sidebar .setting input, + .media-sidebar .setting textarea, + .media-sidebar .setting span, + .attachment-details .setting input, + .attachment-details .setting textarea, + .attachment-details .setting span, + .compat-item label span { + float: none; + } + + .media-sidebar .setting span, + .attachment-details .setting span, + .compat-item label span { + text-align: inherit; + min-height: 16px; + margin: 0; + padding: 8px 2px 0; + } + + .media-sidebar .setting .value, + .attachment-details .setting .value { + float: none; + width: auto; + } + + .media-sidebar .setting input[type="text"], + .media-sidebar .setting input[type="password"], + .media-sidebar .setting input[type="email"], + .media-sidebar .setting input[type="number"], + .media-sidebar .setting input[type="search"], + .media-sidebar .setting input[type="tel"], + .media-sidebar .setting input[type="url"], + .media-sidebar .setting textarea, + .media-sidebar .setting select, + .attachment-details .setting input[type="text"], + .attachment-details .setting input[type="password"], + .attachment-details .setting input[type="email"], + .attachment-details .setting input[type="number"], + .attachment-details .setting input[type="search"], + .attachment-details .setting input[type="tel"], + .attachment-details .setting input[type="url"], + .attachment-details .setting textarea, + .attachment-details .setting select { + float: none; + width: 98%; + max-width: none; + height: auto; + } + + .media-sidebar .setting select.columns, + .attachment-details .setting select.columns { + width: auto; + } + + .media-frame input, + .media-frame textarea, + .media-frame .search { + 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 .custom-size { + margin-left: 20px; + } + + .collection-settings .setting input[type="checkbox"] { + margin-top: 0; + } + + .media-selection { + min-width: 120px; + } + + .media-selection:after { + background: none; + } + + .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; + } + + /* Text inputs need to be 16px, or they force zooming on iOS */ + .media-frame input[type="text"], + .media-frame input[type="password"], + .media-frame input[type="number"], + .media-frame input[type="search"], + .media-frame input[type="email"], + .media-frame input[type="url"], + .media-frame textarea, + .media-frame select { + font-size: 16px; + } +} + +/* Responsive on portrait and landscape */ +@media only screen and (max-width: 640px), screen and (max-height: 400px) { + /* Full-bleed modal */ + .media-modal, + .image-details .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%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding-bottom: 0; + } + + .media-sidebar.visible { + bottom: 0; + } + + .attachments-browser .attachments, + .attachments-browser .uploader-inline, + .attachments-browser .media-toolbar { + 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 tabs on the top */ + .media-frame-content .media-toolbar .instructions { + display: none; + } +} + +/* Landscape specific header override */ +@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; + } + + /* 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; + } +} + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + .media-modal-icon { + background-image: url(../images/uploader-icons-2x.png); + -webkit-background-size: 134px 15px; + 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%; +} diff --git a/wp-includes/css/media-views.min.css b/wp-includes/css/media-views.min.css new file mode 100644 index 0000000000..b6d0b5f2f9 --- /dev/null +++ b/wp-includes/css/media-views.min.css @@ -0,0 +1,8 @@ +.media-modal *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.media-frame input,.media-frame select,.media-frame textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.media-frame,.media-modal{font-family:"Open Sans",sans-serif;font-size:12px;-webkit-overflow-scrolling:touch}.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:#21759b}.media-frame a:hover{color:#d54e21}.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=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-family:"Open Sans",sans-serif;font-size:12px;border-width:1px;border-style:solid;border-color:#dfdfdf}.media-frame input[type=text]:focus,.media-frame input[type=password]:focus,.media-frame input[type=number]:focus,.media-frame input[type=search]:focus,.media-frame input[type=email]: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 :-moz-placeholder{color:#a9a9a9}.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{-ms-touch-action:none;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;padding:0;z-index:1000;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.media-modal-close:active{-webkit-box-shadow:none;box-shadow:none;outline:0}.media-modal-close span.media-modal-icon{background-image:none}.media-modal-close .media-modal-icon:before{content:'\f158';font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#666}.media-modal-close:hover .media-modal-icon:before{color:#00a0d2}.media-modal-content{position:absolute;top:0;left:0;right:0;bottom:0;overflow:auto;min-height:300px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.7);box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fcfcfc;-webkit-font-smoothing:subpixel-antialiased}.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons.png);background-repeat:no-repeat}.media-menu,.media-sidebar{top:0;bottom:0;right:0;background:#f3f3f3}.media-toolbar{position:absolute;top:0;left:0;right:0;z-index:100;height:60px;padding:0 16px;border:0 solid #dfdfdf;overflow:hidden}.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;width:267px;padding:0 16px 24px;z-index:75;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 h3,.media-sidebar h3{position:relative;font-weight:700;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=radio],.attachment-details .field input[type=checkbox],.attachment-details .setting input[type=radio],.attachment-details .setting input[type=checkbox],.media-sidebar .field input[type=radio],.media-sidebar .field input[type=checkbox],.media-sidebar .setting input[type=radio],.media-sidebar .setting input[type=checkbox]{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}.media-menu>a,.media-router>a{text-decoration:none;line-height:18px;font-size:14px}.compat-item label span{text-align:right}.attachment-details .setting .value,.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting textarea,.media-sidebar .setting .value,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=url],.media-sidebar .setting textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px;width:65%;float:right}.attachment-details .setting .value,.media-sidebar .setting .value{margin:0 1px;text-align:left}.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=tel],.compat-item .field input[type=text],.compat-item .field input[type=password],.compat-item .field input[type=number],.compat-item .field input[type=search],.compat-item .field input[type=email],.compat-item .field input[type=url],.compat-item .field textarea{width:100%;margin:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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;left:0;margin:0;padding:10px 0;border-right-width:1px;border-right-style:solid;border-right-color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.media-menu>a{display:block;position:relative;padding:8px 20px;margin:0;color:#0073aa}.media-frame-title .dashicons,.media-frame.hide-router .media-frame-router,.media-router .active:after{display:none}.media-menu>a:hover{color:#21759B;background:rgba(0,0,0,.04)}.media-menu>a:active{outline:0}.media-menu .active,.media-menu .active:hover{color:#23282d;font-weight:700}.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;user-select:none}.media-router,.wp-core-ui .attachment{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.media-router a{-webkit-transition:none;transition:none}.media-router>a{position:relative;float:left;padding:8px 10px 9px;margin:0;height:18px}.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-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-content,.media-frame-router,.media-frame-title,.media-frame-toolbar{right:0;position:absolute;left:200px}.media-frame-title{top:0;height:50px;z-index:200}.media-frame-router{top:50px;height:36px;z-index:200}.media-frame-content{top:84px;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.media-frame-toolbar{bottom:0;height:60px;z-index:100}.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-menu .media-frame-menu{left:-200px}.media-frame.hide-toolbar .media-frame-content{bottom:0}.media-frame.hide-toolbar .media-frame-toolbar{bottom:-61px}.media-frame.hide-router .media-frame-content{top:50px}.media-frame.hide-router .media-frame-title{border-bottom:1px solid #dfdfdf;-webkit-box-shadow:0 4px 4px -4px rgba(0,0,0,.1);box-shadow:0 4px 4px -4px rgba(0,0,0,.1)}.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:-webkit-calc(48% - 12px);max-width:calc(48% - 12px)}.media-toolbar-primary .search,.wp-core-ui .attachment .portrait img{max-width:100%}.media-frame select.attachment-filters:last-of-type{margin-right:0}.media-frame .search{margin-top:11px;padding:4px;font-size:13px;color:#464646;font-family:"Open Sans",sans-serif;-webkit-appearance:none}.wp-core-ui .attachments{margin:0;-webkit-overflow-scrolling:touch}.wp-core-ui .attachment{position:relative;float:left;padding:8px;margin:0;color:#464646;cursor:pointer;list-style:none;text-align:center;user-select:none;width:25%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui .attachment.details:focus,.wp-core-ui .attachment:focus,.wp-core-ui .selected.attachment:focus{-webkit-box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;outline:0}.wp-core-ui .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc}.wp-core-ui .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #1e8cbe;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #1e8cbe}.wp-core-ui .attachment-preview{position:relative;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);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;-webkit-transition:opacity .1s;transition:opacity .1s}.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;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);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%;-webkit-transform:translate(50%,50%);-ms-transform:translate(50%,50%);transform:translate(50%,50%)}.wp-core-ui .attachment .thumbnail .centered img{-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon{-webkit-transform:translate(-50%,-70%);-ms-transform:translate(-50%,-70%);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:700;background:rgba(255,255,255,.8);-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);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;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.3);box-shadow:0 0 0 1px rgba(0,0,0,.3)}.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;position:absolute;z-index:10;top:0;right:0;outline:0;background:#eee;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15);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:#1e8cbe;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #1e8cbe;box-shadow:0 0 0 1px #fff,0 0 0 2px #1e8cbe}.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;-webkit-border-radius:0;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;position:absolute;right:0;text-align:center;top:0;width:50px;z-index:1}.uploader-inline .close:before{font:400 30px/50px dashicons!important;color:#777;display:inline-block;content:'\f335';font-weight:300}.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;-webkit-border-radius:10px;border-radius:10px;background:#dfdfdf;background:rgba(0,0,0,.1)}.media-progress-bar div{height:10px;min-width:20px;width:0;background:#1e8cbe;-webkit-border-radius:10px;border-radius:10px;-webkit-transition:width 300ms;transition:width 300ms}.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 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:#464646}.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:0;right:0}.upload-errors .upload-error{padding:12px;margin-bottom:12px;background:#fff;border-left:4px solid #dd3d36;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.upload-errors .upload-error-filename{font-weight:700}.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;-webkit-transition:opacity 250ms;transition:opacity 250ms}.uploader-window-content{position:absolute;top:10px;left:10px;right:10px;bottom:10px;border:1px dashed #fff}.uploader-window h3{margin:-.5em 0 0;position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);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 h3{font-size:20px;line-height:28px;font-weight:400;margin:0}.uploader-inline .has-upload-message .upload-instructions{font-size:14px;color:#464646;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,.media-selection.one .edit-selection{display:none}.media-selection .count{display:block;padding-top:12px;font-size:14px;line-height:20px;font-weight:700}.media-selection .attachments,.media-selection .selection-view{display:inline-block;vertical-align:top}.media-selection .button-link{float:left;padding:1px 8px;margin:1px 8px 1px -8px;line-height:16px;border-right:1px solid #dfdfdf;color:#21759B}.media-selection .button-link:focus,.media-selection .button-link:hover{background:#21759B;color:#fff;border-color:transparent}.media-selection .button-link:last-child{border-right:0;margin-right:0}.selection-info .clear-selection{color:red}.selection-info .clear-selection:focus,.selection-info .clear-selection:hover{background:red;color:#fff}.media-selection .attachments{height:48px;margin:6px;padding:0;overflow:hidden}.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{-webkit-box-shadow:none;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{-webkit-box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9;box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9}.wp-core-ui .media-selection .selected.attachment{-webkit-box-shadow:none;box-shadow:none}.wp-core-ui .media-selection .attachment.details{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #1e8cbe;box-shadow:0 0 0 1px #fff,0 0 0 3px #1e8cbe}.media-selection:after{content:'';display:block;position:absolute;top:0;right:0;bottom:0;width:25px;background-image:-webkit-gradient(linear,right top,left top,from(rgba(255,255,255,1)),to(rgba(255,255,255,0)));background-image:-webkit-linear-gradient(right,rgba(255,255,255,1),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{display:none}.media-frame .spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;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}.attachment-details.save-waiting .settings-save-status .spinner,.media-frame .embed-loading .embed-url .spinner,.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-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:700;color:#464646;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;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1);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;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);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:red}.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-wait{height:auto!important;right:0;bottom:0;left:0}.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:0 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;-webkit-box-shadow:none;box-shadow:none;margin:0 0 16px;padding:0 0 16px;position:relative}.media-modal .imgedit-group:last-of-type{border:none;margin:0;padding:0}.media-modal .imgedit-group-top h3{text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 0}.media-modal .imgedit-group-top h3 a{text-decoration:none;color:#666}.media-modal .imgedit-help-toggle{margin-top:-2px;cursor:pointer;color:#666}.media-modal .imgedit-help-toggled span.dashicons:before{content:'\f142'}.media-modal .imgedit-group img{margin-top:5px}.media-modal .imgedit-wrap div.updated{margin:0 0 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;-webkit-box-shadow:inset 2px 2px 4px -2px rgba(0,0,0,.1);box-shadow:inset 2px 2px 4px -2px rgba(0,0,0,.1)}.media-frame .embed-url .spinner{position:absolute;top:32px;right:26px}.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:#5b9dd9 solid 1px;-webkit-box-shadow:0 0 2px 1px rgba(30,140,190,.8);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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 h3{margin:20px;padding-top:20px;border-top:1px solid #ddd}.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}.image-details .advanced-toggle:after{font:400 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:#999;font-size:inherit}.image-details .custom-size input{width:5em}.image-details .custom-size .sep{float:left;margin:26px 6px 0}.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;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);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}.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 .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 .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;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;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:3em;line-height:1.3;font-weight:700;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=tel],.ie7 .media-sidebar .setting input[type=text],.ie7 .media-sidebar .setting input[type=password],.ie7 .media-sidebar .setting input[type=number],.ie7 .media-sidebar .setting input[type=search],.ie7 .media-sidebar .setting input[type=email],.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=tel],.rtl .media-frame input[type=text],.rtl .media-frame input[type=password],.rtl .media-frame input[type=number],.rtl .media-frame input[type=search],.rtl .media-frame input[type=email],.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=text],:lang(he-il) .rtl .media-frame input[type=password],:lang(he-il) .rtl .media-frame input[type=number],:lang(he-il) .rtl .media-frame input[type=search],:lang(he-il) .rtl .media-frame input[type=email],: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;color:#21759b}.media-frame:not(.hide-menu) .media-frame-title .dashicons{display:inline-block;line-height:50px}.media-frame:not(.hide-menu) .media-frame-title h1{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=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting select,.attachment-details .setting textarea,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.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 .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=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.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%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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){.media-modal-icon{background-image:url(../images/uploader-icons-2x.png);-webkit-background-size:134px 15px;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 new file mode 100644 index 0000000000..404cc32cc2 --- /dev/null +++ b/wp-includes/css/wp-auth-check-rtl.css @@ -0,0 +1,109 @@ +/*------------------------------------------------------------------------------ + Interim login dialog +------------------------------------------------------------------------------*/ + +#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: 0.7; + filter: alpha(opacity=70); + z-index: 1000010; /* needs to appear above .notification-dialog */ +} + +#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; /* needs to appear above #wp-auth-check-bg */ + -webkit-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 ) { + #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 { + background: url(../images/spinner-2x.gif) no-repeat center center; + -webkit-background-size: 16px 16px; + background-size: 16px 16px; + height: 100%; + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +#wp-auth-check-wrap #wp-auth-check-form iframe { + height: 98%; /* Scrollbar fix */ + width: 100%; +} + +#wp-auth-check-wrap .wp-auth-check-close { + position: absolute; + top: 8px; + left: 8px; + height: 22px; + width: 22px; + cursor: pointer; +} + +#wp-auth-check-wrap .wp-auth-check-close:before { + content: '\f158'; + display: block !important; + font: normal 20px/1 'dashicons'; + speak: none; + height: 22px; + margin: 2px 0; + text-align: center; + width: 22px; + color: #777; + -webkit-font-smoothing: antialiased !important; + -moz-osx-font-smoothing: grayscale; +} + +#wp-auth-check-wrap .wp-auth-check-close:hover:before { + color: #0073aa; +} + +#wp-auth-check-wrap .wp-auth-check-close:focus { + outline: 1px dotted #82878c; +} + +#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-fallback, +#wp-auth-check-wrap.fallback .wp-auth-check-close { + display: block; +} diff --git a/wp-includes/css/wp-auth-check-rtl.min.css b/wp-includes/css/wp-auth-check-rtl.min.css new file mode 100644 index 0000000000..b5c12324e2 --- /dev/null +++ b/wp-includes/css/wp-auth-check-rtl.min.css @@ -0,0 +1 @@ +#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;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);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{background:url(../images/spinner-2x.gif) center center no-repeat;-webkit-background-size:16px 16px;background-size:16px 16px;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}#wp-auth-check-wrap #wp-auth-check-form iframe{height:98%;width:100%}#wp-auth-check-wrap .wp-auth-check-close{position:absolute;top:8px;left:8px;height:22px;width:22px;cursor:pointer}#wp-auth-check-wrap .wp-auth-check-close:before{content:'\f158';display:block!important;font:400 20px/1 dashicons;speak:none;height:22px;margin:2px 0;text-align:center;width:22px;color:#777;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale}#wp-auth-check-wrap .wp-auth-check-close:hover:before{color:#0073aa}#wp-auth-check-wrap .wp-auth-check-close:focus{outline:#82878c dotted 1px}#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 new file mode 100644 index 0000000000..32bd8dd6a5 --- /dev/null +++ b/wp-includes/css/wp-auth-check.css @@ -0,0 +1,109 @@ +/*------------------------------------------------------------------------------ + Interim login dialog +------------------------------------------------------------------------------*/ + +#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: 0.7; + filter: alpha(opacity=70); + z-index: 1000010; /* needs to appear above .notification-dialog */ +} + +#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; /* needs to appear above #wp-auth-check-bg */ + -webkit-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 ) { + #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 { + background: url(../images/spinner-2x.gif) no-repeat center center; + -webkit-background-size: 16px 16px; + background-size: 16px 16px; + height: 100%; + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +#wp-auth-check-wrap #wp-auth-check-form iframe { + height: 98%; /* Scrollbar fix */ + width: 100%; +} + +#wp-auth-check-wrap .wp-auth-check-close { + position: absolute; + top: 8px; + right: 8px; + height: 22px; + width: 22px; + cursor: pointer; +} + +#wp-auth-check-wrap .wp-auth-check-close:before { + content: '\f158'; + display: block !important; + font: normal 20px/1 'dashicons'; + speak: none; + height: 22px; + margin: 2px 0; + text-align: center; + width: 22px; + color: #777; + -webkit-font-smoothing: antialiased !important; + -moz-osx-font-smoothing: grayscale; +} + +#wp-auth-check-wrap .wp-auth-check-close:hover:before { + color: #0073aa; +} + +#wp-auth-check-wrap .wp-auth-check-close:focus { + outline: 1px dotted #82878c; +} + +#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-fallback, +#wp-auth-check-wrap.fallback .wp-auth-check-close { + display: block; +} diff --git a/wp-includes/css/wp-auth-check.min.css b/wp-includes/css/wp-auth-check.min.css new file mode 100644 index 0000000000..7ab9be8ba1 --- /dev/null +++ b/wp-includes/css/wp-auth-check.min.css @@ -0,0 +1 @@ +#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;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);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{background:url(../images/spinner-2x.gif) center center no-repeat;-webkit-background-size:16px 16px;background-size:16px 16px;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}#wp-auth-check-wrap #wp-auth-check-form iframe{height:98%;width:100%}#wp-auth-check-wrap .wp-auth-check-close{position:absolute;top:8px;right:8px;height:22px;width:22px;cursor:pointer}#wp-auth-check-wrap .wp-auth-check-close:before{content:'\f158';display:block!important;font:400 20px/1 dashicons;speak:none;height:22px;margin:2px 0;text-align:center;width:22px;color:#777;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale}#wp-auth-check-wrap .wp-auth-check-close:hover:before{color:#0073aa}#wp-auth-check-wrap .wp-auth-check-close:focus{outline:#82878c dotted 1px}#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-pointer-rtl.css b/wp-includes/css/wp-pointer-rtl.css new file mode 100644 index 0000000000..52192c2e24 --- /dev/null +++ b/wp-includes/css/wp-pointer-rtl.css @@ -0,0 +1,212 @@ +.wp-pointer-content { + padding: 0 0 10px; + position: relative; + font-size: 13px; + background: #fff; + border: 1px solid #dfdfdf; + -webkit-box-shadow: 0 3px 6px rgba(0,0,0,0.075); + 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 #3592b6; + border-bottom: none; + line-height: 1.4em; + font-size: 14px; + color: #fff; + background: #00a0d2; +} + +.wp-pointer-content h3:before { + background: #fff; + -webkit-border-radius: 50%; + 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 p { + padding: 0 15px; +} + +.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: none; + color: #b4b9be; + 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; +} + +/* The arrow base class must take up no space, even with transparent borders. */ +.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; +} + +/* Make Room for the Arrow! */ +.wp-pointer-top, +.wp-pointer-undefined { + padding-top: 13px; +} + +.wp-pointer-bottom { + margin-top: -13px; + padding-bottom: 13px; +} + +/* rtl:ignore */ +.wp-pointer-left { + padding-left: 13px; +} +/* rtl:ignore */ +.wp-pointer-right { + margin-left: -13px; + padding-right: 13px; +} + +/* Base Size & Positioning */ +.wp-pointer-top .wp-pointer-arrow, +.wp-pointer-bottom .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; +} + +/* Arrow Sprite */ +.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: ' '; +} + +/* rtl:ignore */ +.wp-pointer-left .wp-pointer-arrow { + left: 0; + border-width: 13px 13px 13px 0; + border-right-color: #ccc; +} + +/* rtl:ignore */ +.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: ' '; +} + +/* rtl:ignore */ +.wp-pointer-right .wp-pointer-arrow { + right: 0; + border-width: 13px 0 13px 13px; + border-left-color: #ccc; +} + +/* rtl:ignore */ +.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: ' '; +} + +/* Disable pointers at responsive sizes */ +@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 new file mode 100644 index 0000000000..6f52d54dfa --- /dev/null +++ b/wp-includes/css/wp-pointer-rtl.min.css @@ -0,0 +1 @@ +.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border:1px solid #dfdfdf;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.075);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;-webkit-border-radius:50%;border-radius:50%;color:#00a0d2;content:'\f227';font:400 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 p{padding:0 15px}.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:#b4b9be;content:'\f153';display:block!important;font:400 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;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;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:' '}@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 new file mode 100644 index 0000000000..f7e461628d --- /dev/null +++ b/wp-includes/css/wp-pointer.css @@ -0,0 +1,212 @@ +.wp-pointer-content { + padding: 0 0 10px; + position: relative; + font-size: 13px; + background: #fff; + border: 1px solid #dfdfdf; + -webkit-box-shadow: 0 3px 6px rgba(0,0,0,0.075); + 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 #3592b6; + border-bottom: none; + line-height: 1.4em; + font-size: 14px; + color: #fff; + background: #00a0d2; +} + +.wp-pointer-content h3:before { + background: #fff; + -webkit-border-radius: 50%; + 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 p { + padding: 0 15px; +} + +.wp-pointer-buttons { + margin: 0; + padding: 5px 15px; + overflow: auto; +} + +.wp-pointer-buttons a { + float: right; + display: inline-block; + text-decoration: none; +} + +.wp-pointer-buttons a.close { + padding-left: 3px; + position: relative; +} + +.wp-pointer-buttons a.close:before { + background: none; + color: #b4b9be; + 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; +} + +/* The arrow base class must take up no space, even with transparent borders. */ +.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; +} + +/* Make Room for the Arrow! */ +.wp-pointer-top, +.wp-pointer-undefined { + padding-top: 13px; +} + +.wp-pointer-bottom { + margin-top: -13px; + padding-bottom: 13px; +} + +/* rtl:ignore */ +.wp-pointer-left { + padding-left: 13px; +} +/* rtl:ignore */ +.wp-pointer-right { + margin-left: -13px; + padding-right: 13px; +} + +/* Base Size & Positioning */ +.wp-pointer-top .wp-pointer-arrow, +.wp-pointer-bottom .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; +} + +/* Arrow Sprite */ +.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: ' '; +} + +/* rtl:ignore */ +.wp-pointer-left .wp-pointer-arrow { + left: 0; + border-width: 13px 13px 13px 0; + border-right-color: #ccc; +} + +/* rtl:ignore */ +.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: ' '; +} + +/* rtl:ignore */ +.wp-pointer-right .wp-pointer-arrow { + right: 0; + border-width: 13px 0 13px 13px; + border-left-color: #ccc; +} + +/* rtl:ignore */ +.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: ' '; +} + +/* Disable pointers at responsive sizes */ +@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 new file mode 100644 index 0000000000..d337dbb8f4 --- /dev/null +++ b/wp-includes/css/wp-pointer.min.css @@ -0,0 +1 @@ +.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border:1px solid #dfdfdf;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.075);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;-webkit-border-radius:50%;border-radius:50%;color:#00a0d2;content:'\f227';font:400 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 p{padding:0 15px}.wp-pointer-buttons{margin:0;padding:5px 15px;overflow:auto}.wp-pointer-buttons a{float:right;display:inline-block;text-decoration:none}.wp-pointer-buttons a.close{padding-left:3px;position:relative}.wp-pointer-buttons a.close:before{background:0 0;color:#b4b9be;content:'\f153';display:block!important;font:400 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;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;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:' '}@media screen and (max-width:782px){.wp-pointer{display:none}} \ No newline at end of file diff --git a/wp-includes/date.php b/wp-includes/date.php new file mode 100644 index 0000000000..2e903a2518 --- /dev/null +++ b/wp-includes/date.php @@ -0,0 +1,1013 @@ +', '>=', '<', '<=', + * '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 { + * Optional. An array of first-order clause parameters, or another fully-formed date query. + * + * @type string|array $before { + * Optional. Date to retrieve posts before. Accepts `strtotime()`-compatible string, + * or array of 'year', 'month', 'day' values. + * + * @type string $year The four-digit year. Default empty. Accepts any four-digit year. + * @type string $month Optional when passing array.The month of the year. + * Default (string:empty)|(array:1). Accepts numbers 1-12. + * @type string $day Optional when passing array.The day of the month. + * Default (string:empty)|(array:1). Accepts numbers 1-31. + * } + * @type string|array $after { + * Optional. Date to retrieve posts after. Accepts `strtotime()`-compatible string, + * or array of 'year', 'month', 'day' values. + * + * @type string $year The four-digit year. Accepts any four-digit year. Default empty. + * @type string $month Optional when passing array. The month of the year. Accepts numbers 1-12. + * Default (string:empty)|(array:12). + * @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. 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|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|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|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|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|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|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|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|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|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|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 array $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 ( 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] ) && ! 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 { + $date_query['column'] = esc_sql( $default_column ); + } + + $this->column = $this->validate_column( $this->column ); + + $this->compare = $this->get_compare( $date_query ); + + $this->queries = $this->sanitize_query( $date_query ); + } + + /** + * 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`. + * + * @since 4.1.0 + * @access public + * + * @param array $queries + * @param array $parent_query + * + * @return array Sanitized queries. + */ + public function sanitize_query( $queries, $parent_query = null ) { + $cleaned_query = array(); + + $defaults = array( + 'column' => 'post_date', + 'compare' => '=', + 'relation' => 'AND', + ); + + // Numeric keys should always have array values. + foreach ( $queries as $qkey => $qvalue ) { + if ( is_numeric( $qkey ) && ! is_array( $qvalue ) ) { + unset( $queries[ $qkey ] ); + } + } + + // Each query should have a value for each default key. Inherit from the parent when possible. + foreach ( $defaults as $dkey => $dvalue ) { + if ( isset( $queries[ $dkey ] ) ) { + continue; + } + + if ( isset( $parent_query[ $dkey ] ) ) { + $queries[ $dkey ] = $parent_query[ $dkey ]; + } else { + $queries[ $dkey ] = $dvalue; + } + } + + // Validate the dates passed in the query. + if ( $this->is_first_order_clause( $queries ) ) { + $this->validate_date_values( $queries ); + } + + 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. + $cleaned_query[ $key ] = $q; + } else { + // Any array without a time key is another query, so we recurse. + $cleaned_query[] = $this->sanitize_query( $q, $queries ); + } + } + + return $cleaned_query; + } + + /** + * 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. + * + * @param array $query Query clause. + * @return bool True if this is a first-order clause. + */ + protected function is_first_order_clause( $query ) { + $time_keys = array_intersect( $this->time_keys, array_keys( $query ) ); + return ! empty( $time_keys ); + } + + /** + * Determines and validates what comparison operator to use. + * + * @since 3.7.0 + * @access public + * + * @param array $query A date query or a date subquery. + * @return string The comparison operator. + */ + public function get_compare( $query ) { + if ( ! empty( $query['compare'] ) && in_array( $query['compare'], array( '=', '!=', '>', '>=', '<', '<=', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) + return strtoupper( $query['compare'] ); + + return $this->compare; + } + + /** + * Validates the given date_query values and triggers errors if something is not valid. + * + * Note that date queries with invalid date ranges are allowed to + * 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 + * @access public + * + * @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 ) ) { + return false; + } + + $valid = true; + + /* + * Validate 'before' and 'after' up front, then let the + * validation routine continue to be sure that all invalid + * values generate errors too. + */ + if ( array_key_exists( 'before', $date_query ) && is_array( $date_query['before'] ) ){ + $valid = $this->validate_date_values( $date_query['before'] ); + } + + if ( array_key_exists( 'after', $date_query ) && is_array( $date_query['after'] ) ){ + $valid = $this->validate_date_values( $date_query['after'] ); + } + + // Array containing all min-max checks. + $min_max_checks = array(); + + // Days per year. + if ( array_key_exists( 'year', $date_query ) ) { + /* + * If a year exists in the date query, we can use it to get the days. + * If multiple years are provided (as in a BETWEEN), use the first one. + */ + if ( is_array( $date_query['year'] ) ) { + $_year = reset( $date_query['year'] ); + } else { + $_year = $date_query['year']; + } + + $max_days_of_year = date( 'z', mktime( 0, 0, 0, 12, 31, $_year ) ) + 1; + } else { + // otherwise we use the max of 366 (leap-year) + $max_days_of_year = 366; + } + + $min_max_checks['dayofyear'] = array( + 'min' => 1, + 'max' => $max_days_of_year + ); + + // Days per week. + $min_max_checks['dayofweek'] = array( + 'min' => 1, + 'max' => 7 + ); + + // Days per week. + $min_max_checks['dayofweek_iso'] = array( + 'min' => 1, + 'max' => 7 + ); + + // Months per year. + $min_max_checks['month'] = array( + 'min' => 1, + 'max' => 12 + ); + + // Weeks per year. + if ( isset( $_year ) ) { + // If we have a specific year, use it to calculate number of weeks. + $date = new DateTime(); + $date->setISODate( $_year, 53 ); + $week_count = $date->format( "W" ) === "53" ? 53 : 52; + + } else { + // Otherwise set the week-count to a maximum of 53. + $week_count = 53; + } + + $min_max_checks['week'] = array( + 'min' => 1, + 'max' => $week_count + ); + + // Days per month. + $min_max_checks['day'] = array( + 'min' => 1, + 'max' => 31 + ); + + // Hours per day. + $min_max_checks['hour'] = array( + 'min' => 0, + 'max' => 23 + ); + + // Minutes per hour. + $min_max_checks['minute'] = array( + 'min' => 0, + 'max' => 59 + ); + + // Seconds per minute. + $min_max_checks['second'] = array( + 'min' => 0, + 'max' => 59 + ); + + // Concatenate and throw a notice for each invalid value. + foreach ( $min_max_checks as $key => $check ) { + if ( ! array_key_exists( $key, $date_query ) ) { + continue; + } + + // Throw a notice for each failing value. + foreach ( (array) $date_query[ $key ] as $_value ) { + $is_between = $_value >= $check['min'] && $_value <= $check['max']; + + 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 */ + __( 'Invalid value %1$s for %2$s. Expected value should be between %3$s and %4$s.' ), + '' . esc_html( $_value ) . '', + '' . esc_html( $key ) . '', + '' . esc_html( $check['min'] ) . '', + '' . esc_html( $check['max'] ) . '' + ); + + _doing_it_wrong( __CLASS__, $error, '4.1.0' ); + + $valid = false; + } + } + } + + // If we already have invalid date messages, don't bother running through checkdate(). + if ( ! $valid ) { + return $valid; + } + + $day_month_year_error_msg = ''; + + $day_exists = array_key_exists( 'day', $date_query ) && is_numeric( $date_query['day'] ); + $month_exists = array_key_exists( 'month', $date_query ) && is_numeric( $date_query['month'] ); + $year_exists = array_key_exists( 'year', $date_query ) && is_numeric( $date_query['year'] ); + + 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( + __( 'The following values do not describe a valid date: year %1$s, month %2$s, day %3$s.' ), + '' . esc_html( $date_query['year'] ) . '', + '' . esc_html( $date_query['month'] ) . '', + '' . esc_html( $date_query['day'] ) . '' + ); + + $valid = false; + } + + } elseif ( $day_exists && $month_exists ) { + /* + * 2. checking day, month combination + * 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( + __( 'The following values do not describe a valid date: month %1$s, day %2$s.' ), + '' . esc_html( $date_query['month'] ) . '', + '' . esc_html( $date_query['day'] ) . '' + ); + + $valid = false; + } + } + + if ( ! empty( $day_month_year_error_msg ) ) { + _doing_it_wrong( __CLASS__, $day_month_year_error_msg, '4.1.0' ); + } + + return $valid; + } + + /** + * Validates a column name parameter. + * + * 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 + * @access public + * + * @param string $column The user-supplied column name. + * @return string A validated column name value. + */ + public function validate_column( $column ) { + global $wpdb; + + $valid_columns = array( + 'post_date', 'post_date_gmt', 'post_modified', + 'post_modified_gmt', 'comment_date', 'comment_date_gmt', + 'user_registered', + ); + + // Attempt to detect a table prefix. + if ( false === strpos( $column, '.' ) ) { + /** + * Filter the list of valid date query columns. + * + * @since 3.7.0 + * @since 4.1.0 Added 'user_registered' to the default recognized columns. + * + * @param array $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' + */ + if ( ! in_array( $column, apply_filters( 'date_query_valid_columns', $valid_columns ) ) ) { + $column = 'post_date'; + } + + $known_columns = array( + $wpdb->posts => array( + 'post_date', + 'post_date_gmt', + 'post_modified', + 'post_modified_gmt', + ), + $wpdb->comments => array( + 'comment_date', + 'comment_date_gmt', + ), + $wpdb->users => array( + 'user_registered', + ), + ); + + // If it's a known column name, add the appropriate table prefix. + foreach ( $known_columns as $table_name => $table_columns ) { + if ( in_array( $column, $table_columns ) ) { + $column = $table_name . '.' . $column; + break; + } + } + + } + + // Remove unsafe characters. + return preg_replace( '/[^a-zA-Z0-9_$\.]/', '', $column ); + } + + /** + * Generate WHERE clause to be appended to a main query. + * + * @since 3.7.0 + * @access public + * + * @return string MySQL WHERE clause. + */ + public function get_sql() { + $sql = $this->get_sql_clauses(); + + $where = $sql['where']; + + /** + * Filter the date query WHERE clause. + * + * @since 3.7.0 + * + * @param string $where WHERE clause of the date query. + * @param WP_Date_Query $this The WP_Date_Query instance. + */ + return apply_filters( 'get_date_sql', $where, $this ); + } + + /** + * Generate SQL clauses to be appended to a main query. + * + * Called by the public {@see WP_Date_Query::get_sql()}, this method + * is abstracted out to maintain parity with the other Query classes. + * + * @since 4.1.0 + * @access protected + * + * @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. + * @type string $where SQL fragment to append to the main WHERE clause. + * } + */ + protected function get_sql_clauses() { + $sql = $this->get_sql_for_query( $this->queries ); + + if ( ! empty( $sql['where'] ) ) { + $sql['where'] = ' AND ' . $sql['where']; + } + + return $sql; + } + + /** + * 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 + * @access protected + * + * @param array $query Query to parse. + * @param int $depth Optional. Number of tree levels deep we currently are. + * Used to calculate indentation. Default 0. + * @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. + * @type string $where SQL fragment to append to the main WHERE clause. + * } + */ + protected function get_sql_for_query( $query, $depth = 0 ) { + $sql_chunks = array( + 'join' => array(), + 'where' => array(), + ); + + $sql = array( + 'join' => '', + 'where' => '', + ); + + $indent = ''; + for ( $i = 0; $i < $depth; $i++ ) { + $indent .= " "; + } + + foreach ( $query as $key => $clause ) { + if ( 'relation' === $key ) { + $relation = $query['relation']; + } elseif ( is_array( $clause ) ) { + + // This is a first-order clause. + if ( $this->is_first_order_clause( $clause ) ) { + $clause_sql = $this->get_sql_for_clause( $clause, $query ); + + $where_count = count( $clause_sql['where'] ); + if ( ! $where_count ) { + $sql_chunks['where'][] = ''; + } elseif ( 1 === $where_count ) { + $sql_chunks['where'][] = $clause_sql['where'][0]; + } else { + $sql_chunks['where'][] = '( ' . implode( ' AND ', $clause_sql['where'] ) . ' )'; + } + + $sql_chunks['join'] = array_merge( $sql_chunks['join'], $clause_sql['join'] ); + // This is a subquery, so we recurse. + } else { + $clause_sql = $this->get_sql_for_query( $clause, $depth + 1 ); + + $sql_chunks['where'][] = $clause_sql['where']; + $sql_chunks['join'][] = $clause_sql['join']; + } + } + } + + // Filter to remove empties. + $sql_chunks['join'] = array_filter( $sql_chunks['join'] ); + $sql_chunks['where'] = array_filter( $sql_chunks['where'] ); + + if ( empty( $relation ) ) { + $relation = 'AND'; + } + + // Filter duplicate JOIN clauses and combine into a single string. + if ( ! empty( $sql_chunks['join'] ) ) { + $sql['join'] = implode( ' ', array_unique( $sql_chunks['join'] ) ); + } + + // Generate a single WHERE clause with proper brackets and indentation. + if ( ! empty( $sql_chunks['where'] ) ) { + $sql['where'] = '( ' . "\n " . $indent . implode( ' ' . "\n " . $indent . $relation . ' ' . "\n " . $indent, $sql_chunks['where'] ) . "\n" . $indent . ')'; + } + + return $sql; + } + + /** + * Turns a single date clause into pieces for a WHERE clause. + * + * A wrapper for get_sql_for_clause(), included here for backward + * compatibility while retaining the naming convention across Query classes. + * + * @since 3.7.0 + * @access protected + * + * @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. + * @type string $where SQL fragment to append to the main WHERE clause. + * } + */ + protected function get_sql_for_subquery( $query ) { + return $this->get_sql_for_clause( $query, '' ); + } + + /** + * Turns a first-order date query into SQL for a WHERE clause. + * + * @since 4.1.0 + * @access protected + * + * @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. + * @type string $where SQL fragment to append to the main WHERE clause. + * } + */ + protected function get_sql_for_clause( $query, $parent_query ) { + global $wpdb; + + // The sub-parts of a $where part. + $where_parts = array(); + + $column = ( ! empty( $query['column'] ) ) ? esc_sql( $query['column'] ) : $this->column; + + $column = $this->validate_column( $column ); + + $compare = $this->get_compare( $query ); + + $inclusive = ! empty( $query['inclusive'] ); + + // Assign greater- and less-than values. + $lt = '<'; + $gt = '>'; + + if ( $inclusive ) { + $lt .= '='; + $gt .= '='; + } + + // Range queries. + if ( ! empty( $query['after'] ) ) + $where_parts[] = $wpdb->prepare( "$column $gt %s", $this->build_mysql_datetime( $query['after'], ! $inclusive ) ); + + if ( ! empty( $query['before'] ) ) + $where_parts[] = $wpdb->prepare( "$column $lt %s", $this->build_mysql_datetime( $query['before'], $inclusive ) ); + + // Specific value queries. + + if ( isset( $query['year'] ) && $value = $this->build_value( $compare, $query['year'] ) ) + $where_parts[] = "YEAR( $column ) $compare $value"; + + if ( isset( $query['month'] ) && $value = $this->build_value( $compare, $query['month'] ) ) { + $where_parts[] = "MONTH( $column ) $compare $value"; + } elseif ( isset( $query['monthnum'] ) && $value = $this->build_value( $compare, $query['monthnum'] ) ) { + $where_parts[] = "MONTH( $column ) $compare $value"; + } + if ( isset( $query['week'] ) && false !== ( $value = $this->build_value( $compare, $query['week'] ) ) ) { + $where_parts[] = _wp_mysql_week( $column ) . " $compare $value"; + } elseif ( isset( $query['w'] ) && false !== ( $value = $this->build_value( $compare, $query['w'] ) ) ) { + $where_parts[] = _wp_mysql_week( $column ) . " $compare $value"; + } + if ( isset( $query['dayofyear'] ) && $value = $this->build_value( $compare, $query['dayofyear'] ) ) + $where_parts[] = "DAYOFYEAR( $column ) $compare $value"; + + if ( isset( $query['day'] ) && $value = $this->build_value( $compare, $query['day'] ) ) + $where_parts[] = "DAYOFMONTH( $column ) $compare $value"; + + if ( isset( $query['dayofweek'] ) && $value = $this->build_value( $compare, $query['dayofweek'] ) ) + $where_parts[] = "DAYOFWEEK( $column ) $compare $value"; + + if ( isset( $query['dayofweek_iso'] ) && $value = $this->build_value( $compare, $query['dayofweek_iso'] ) ) + $where_parts[] = "WEEKDAY( $column ) + 1 $compare $value"; + + if ( isset( $query['hour'] ) || isset( $query['minute'] ) || isset( $query['second'] ) ) { + // Avoid notices. + foreach ( array( 'hour', 'minute', 'second' ) as $unit ) { + if ( ! isset( $query[ $unit ] ) ) { + $query[ $unit ] = null; + } + } + + if ( $time_query = $this->build_time_query( $column, $compare, $query['hour'], $query['minute'], $query['second'] ) ) { + $where_parts[] = $time_query; + } + } + + /* + * Return an array of 'join' and 'where' for compatibility + * with other query classes. + */ + return array( + 'where' => $where_parts, + 'join' => array(), + ); + } + + /** + * Builds and validates a value string based on the comparison operator. + * + * @since 3.7.0 + * @access public + * + * @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 ) { + if ( ! isset( $value ) ) + return false; + + switch ( $compare ) { + case 'IN': + case 'NOT IN': + $value = (array) $value; + + // Remove non-numeric values. + $value = array_filter( $value, 'is_numeric' ); + + if ( empty( $value ) ) { + return false; + } + + return '(' . implode( ',', array_map( 'intval', $value ) ) . ')'; + + case 'BETWEEN': + case 'NOT BETWEEN': + if ( ! is_array( $value ) || 2 != count( $value ) ) { + $value = array( $value, $value ); + } else { + $value = array_values( $value ); + } + + // If either value is non-numeric, bail. + foreach ( $value as $v ) { + if ( ! is_numeric( $v ) ) { + return false; + } + } + + $value = array_map( 'intval', $value ); + + return $value[0] . ' AND ' . $value[1]; + + default; + if ( ! is_numeric( $value ) ) { + return false; + } + + return (int) $value; + } + } + + /** + * Builds a MySQL format date/time based on some query parameters. + * + * 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 that will be run through strtotime(). + * + * @since 3.7.0 + * @access public + * + * @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 + */ + public function build_mysql_datetime( $datetime, $default_to_max = false ) { + $now = current_time( 'timestamp' ); + + if ( ! is_array( $datetime ) ) { + + /* + * Try to parse some common date formats, so we can detect + * the level of precision and support the 'inclusive' parameter. + */ + if ( preg_match( '/^(\d{4})$/', $datetime, $matches ) ) { + // Y + $datetime = array( + 'year' => intval( $matches[1] ), + ); + + } elseif ( preg_match( '/^(\d{4})\-(\d{2})$/', $datetime, $matches ) ) { + // Y-m + $datetime = array( + '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' => 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' => 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 ) ) { + // @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'] = gmdate( 'Y', $now ); + + if ( ! isset( $datetime['month'] ) ) + $datetime['month'] = ( $default_to_max ) ? 12 : 1; + + if ( ! isset( $datetime['day'] ) ) + $datetime['day'] = ( $default_to_max ) ? (int) date( 't', mktime( 0, 0, 0, $datetime['month'], 1, $datetime['year'] ) ) : 1; + + if ( ! isset( $datetime['hour'] ) ) + $datetime['hour'] = ( $default_to_max ) ? 23 : 0; + + if ( ! isset( $datetime['minute'] ) ) + $datetime['minute'] = ( $default_to_max ) ? 59 : 0; + + if ( ! isset( $datetime['second'] ) ) + $datetime['second'] = ( $default_to_max ) ? 59 : 0; + + return sprintf( '%04d-%02d-%02d %02d:%02d:%02d', $datetime['year'], $datetime['month'], $datetime['day'], $datetime['hour'], $datetime['minute'], $datetime['second'] ); + } + + /** + * Builds a query string for comparing time values (hour, minute, second). + * + * If just hour, minute, or second is set than a normal comparison will be done. + * 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 + * @access public + * + * @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 + if ( ! isset( $hour ) && ! isset( $minute ) && ! isset( $second ) ) + return false; + + // Complex combined queries aren't supported for multi-value queries + if ( in_array( $compare, array( 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) { + $return = array(); + + if ( isset( $hour ) && false !== ( $value = $this->build_value( $compare, $hour ) ) ) + $return[] = "HOUR( $column ) $compare $value"; + + if ( isset( $minute ) && false !== ( $value = $this->build_value( $compare, $minute ) ) ) + $return[] = "MINUTE( $column ) $compare $value"; + + if ( isset( $second ) && false !== ( $value = $this->build_value( $compare, $second ) ) ) + $return[] = "SECOND( $column ) $compare $value"; + + return implode( ' AND ', $return ); + } + + // Cases where just one unit is set + if ( isset( $hour ) && ! isset( $minute ) && ! isset( $second ) && false !== ( $value = $this->build_value( $compare, $hour ) ) ) { + return "HOUR( $column ) $compare $value"; + } elseif ( ! isset( $hour ) && isset( $minute ) && ! isset( $second ) && false !== ( $value = $this->build_value( $compare, $minute ) ) ) { + return "MINUTE( $column ) $compare $value"; + } elseif ( ! isset( $hour ) && ! isset( $minute ) && isset( $second ) && false !== ( $value = $this->build_value( $compare, $second ) ) ) { + return "SECOND( $column ) $compare $value"; + } + + // Single units were already handled. Since hour & second isn't allowed, minute must to be set. + if ( ! isset( $minute ) ) + return false; + + $format = $time = ''; + + // Hour + if ( $hour ) { + $format .= '%H.'; + $time .= sprintf( '%02d', $hour ) . '.'; + } else { + $format .= '0.'; + $time .= '0.'; + } + + // Minute + $format .= '%i'; + $time .= sprintf( '%02d', $minute ); + + if ( isset( $second ) ) { + $format .= '%s'; + $time .= sprintf( '%02d', $second ); + } + + return $wpdb->prepare( "DATE_FORMAT( $column, %s ) $compare %f", $format, $time ); + } +} diff --git a/wp-includes/default-constants.php b/wp-includes/default-constants.php new file mode 100644 index 0000000000..7325845966 --- /dev/null +++ b/wp-includes/default-constants.php @@ -0,0 +1,338 @@ + 'widget_pages', 'description' => __( 'A list of your site’s Pages.') ); + parent::__construct('pages', __('Pages'), $widget_ops); + } + + /** + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + + /** + * Filter the widget title. + * + * @since 2.6.0 + * + * @param string $title The widget title. Default 'Pages'. + * @param array $instance An array of the widget's settings. + * @param mixed $id_base The widget ID. + */ + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Pages' ) : $instance['title'], $instance, $this->id_base ); + + $sortby = empty( $instance['sortby'] ) ? 'menu_order' : $instance['sortby']; + $exclude = empty( $instance['exclude'] ) ? '' : $instance['exclude']; + + if ( $sortby == 'menu_order' ) + $sortby = 'menu_order, post_title'; + + /** + * Filter the arguments for the Pages widget. + * + * @since 2.8.0 + * + * @see wp_list_pages() + * + * @param array $args An array of arguments to retrieve the pages list. + */ + $out = wp_list_pages( apply_filters( 'widget_pages_args', array( + 'title_li' => '', + 'echo' => 0, + 'sort_column' => $sortby, + 'exclude' => $exclude + ) ) ); + + if ( ! empty( $out ) ) { + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } + ?> +
        + +
      + 'post_title', 'title' => '', 'exclude' => '') ); + $title = esc_attr( $instance['title'] ); + $exclude = esc_attr( $instance['exclude'] ); + ?> +

      +

      + + +

      +

      + +
      + +

      + __( "Your blogroll" ) ); + parent::__construct('links', __('Links'), $widget_ops); + } + + /** + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + $show_description = isset($instance['description']) ? $instance['description'] : false; + $show_name = isset($instance['name']) ? $instance['name'] : false; + $show_rating = isset($instance['rating']) ? $instance['rating'] : false; + $show_images = isset($instance['images']) ? $instance['images'] : true; + $category = isset($instance['category']) ? $instance['category'] : false; + $orderby = isset( $instance['orderby'] ) ? $instance['orderby'] : 'name'; + $order = $orderby == 'rating' ? 'DESC' : 'ASC'; + $limit = isset( $instance['limit'] ) ? $instance['limit'] : -1; + + $before_widget = preg_replace( '/id="[^"]*"/', 'id="%id"', $args['before_widget'] ); + + /** + * Filter the arguments for the Links widget. + * + * @since 2.6.0 + * + * @see wp_list_bookmarks() + * + * @param array $args An array of arguments to retrieve the links list. + */ + wp_list_bookmarks( apply_filters( 'widget_links_args', array( + 'title_before' => $args['before_title'], 'title_after' => $args['after_title'], + 'category_before' => $before_widget, 'category_after' => $args['after_widget'], + 'show_images' => $show_images, 'show_description' => $show_description, + 'show_name' => $show_name, 'show_rating' => $show_rating, + 'category' => $category, 'class' => 'linkcat widget', + 'orderby' => $orderby, 'order' => $order, + 'limit' => $limit, + ) ) ); + } + + /** + * @param array $new_instance + * @param array $old_instance + * @return array + */ + public function update( $new_instance, $old_instance ) { + $new_instance = (array) $new_instance; + $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0 ); + foreach ( $instance as $field => $val ) { + if ( isset($new_instance[$field]) ) + $instance[$field] = 1; + } + + $instance['orderby'] = 'name'; + if ( in_array( $new_instance['orderby'], array( 'name', 'rating', 'id', 'rand' ) ) ) + $instance['orderby'] = $new_instance['orderby']; + + $instance['category'] = intval( $new_instance['category'] ); + $instance['limit'] = ! empty( $new_instance['limit'] ) ? intval( $new_instance['limit'] ) : -1; + + return $instance; + } + + /** + * @param array $instance + */ + public function form( $instance ) { + + //Defaults + $instance = wp_parse_args( (array) $instance, array( 'images' => true, 'name' => true, 'description' => false, 'rating' => false, 'category' => false, 'orderby' => 'name', 'limit' => -1 ) ); + $link_cats = get_terms( 'link_category' ); + if ( ! $limit = intval( $instance['limit'] ) ) + $limit = -1; +?> +

      + + + + +

      +

      + id="get_field_id('images'); ?>" name="get_field_name('images'); ?>" /> +
      + id="get_field_id('name'); ?>" name="get_field_name('name'); ?>" /> +
      + id="get_field_id('description'); ?>" name="get_field_name('description'); ?>" /> +
      + id="get_field_id('rating'); ?>" name="get_field_name('rating'); ?>" /> + +

      +

      + + +

      + 'widget_search', 'description' => __( "A search form for your site.") ); + parent::__construct( 'search', _x( 'Search', 'Search widget' ), $widget_ops ); + } + + /** + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base ); + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } + + // Use current theme search form if it exists + get_search_form(); + + echo $args['after_widget']; + } + + /** + * @param array $instance + */ + public function form( $instance ) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '') ); + $title = $instance['title']; +?> +

      + '')); + $instance['title'] = strip_tags($new_instance['title']); + return $instance; + } + +} + +/** + * Archives widget class + * + * @since 2.8.0 + */ +class WP_Widget_Archives extends WP_Widget { + + public function __construct() { + $widget_ops = array('classname' => 'widget_archive', 'description' => __( 'A monthly archive of your site’s Posts.') ); + parent::__construct('archives', __('Archives'), $widget_ops); + } + + /** + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + $c = ! empty( $instance['count'] ) ? '1' : '0'; + $d = ! empty( $instance['dropdown'] ) ? '1' : '0'; + + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Archives' ) : $instance['title'], $instance, $this->id_base ); + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } + + if ( $d ) { + $dropdown_id = "{$this->id_base}-dropdown-{$this->number}"; +?> + + + +
        + 'monthly', + 'show_post_count' => $c + ) ) ); +?> +
      + '', 'count' => 0, 'dropdown' => '') ); + $instance['title'] = strip_tags($new_instance['title']); + $instance['count'] = $new_instance['count'] ? 1 : 0; + $instance['dropdown'] = $new_instance['dropdown'] ? 1 : 0; + + return $instance; + } + + /** + * @param array $instance + */ + public function form( $instance ) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'count' => 0, 'dropdown' => '') ); + $title = strip_tags($instance['title']); + $count = $instance['count'] ? 'checked="checked"' : ''; + $dropdown = $instance['dropdown'] ? 'checked="checked"' : ''; +?> +

      +

      + id="get_field_id('dropdown'); ?>" name="get_field_name('dropdown'); ?>" /> +
      + id="get_field_id('count'); ?>" name="get_field_name('count'); ?>" /> +

      + 'widget_meta', 'description' => __( "Login, RSS, & WordPress.org links.") ); + parent::__construct('meta', __('Meta'), $widget_ops); + } + + /** + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', empty($instance['title']) ? __( 'Meta' ) : $instance['title'], $instance, $this->id_base ); + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } +?> +
        + +
      • +
      • RSS'); ?>
      • +
      • RSS'); ?>
      • +%s', + esc_url( __( 'https://wordpress.org/' ) ), + esc_attr__( 'Powered by WordPress, state-of-the-art semantic personal publishing platform.' ), + _x( 'WordPress.org', 'meta widget link text' ) + ) ); + + wp_meta(); +?> +
      + '' ) ); + $title = strip_tags($instance['title']); +?> +

      + 'widget_calendar', 'description' => __( 'A calendar of your site’s Posts.') ); + parent::__construct('calendar', __('Calendar'), $widget_ops); + } + + /** + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base ); + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } + echo '
      '; + get_calendar(); + echo '
      '; + echo $args['after_widget']; + } + + /** + * @param array $new_instance + * @param array $old_instance + * @return array + */ + public function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + + return $instance; + } + + /** + * @param array $instance + */ + public function form( $instance ) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); + $title = strip_tags($instance['title']); +?> +

      +

      + 'widget_text', 'description' => __('Arbitrary text or HTML.')); + $control_ops = array('width' => 400, 'height' => 350); + parent::__construct('text', __('Text'), $widget_ops, $control_ops); + } + + /** + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base ); + + /** + * Filter the content of the Text widget. + * + * @since 2.3.0 + * + * @param string $widget_text The widget content. + * @param WP_Widget $instance WP_Widget instance. + */ + $text = apply_filters( 'widget_text', empty( $instance['text'] ) ? '' : $instance['text'], $instance ); + echo $args['before_widget']; + if ( ! empty( $title ) ) { + echo $args['before_title'] . $title . $args['after_title']; + } ?> +
      + '', 'text' => '' ) ); + $title = strip_tags($instance['title']); + $text = esc_textarea($instance['text']); +?> +

      +

      + +

      +

      + +

      /> 

      + 'widget_categories', 'description' => __( "A list or dropdown of categories." ) ); + parent::__construct('categories', __('Categories'), $widget_ops); + } + + /** + * @staticvar bool $first_dropdown + * + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + static $first_dropdown = true; + + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title'], $instance, $this->id_base ); + + $c = ! empty( $instance['count'] ) ? '1' : '0'; + $h = ! empty( $instance['hierarchical'] ) ? '1' : '0'; + $d = ! empty( $instance['dropdown'] ) ? '1' : '0'; + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } + + $cat_args = array( + 'orderby' => 'name', + 'show_count' => $c, + 'hierarchical' => $h + ); + + if ( $d ) { + $dropdown_id = ( $first_dropdown ) ? 'cat' : "{$this->id_base}-dropdown-{$this->number}"; + $first_dropdown = false; + + echo ''; + + $cat_args['show_option_none'] = __( 'Select Category' ); + $cat_args['id'] = $dropdown_id; + + /** + * Filter the arguments for the Categories widget drop-down. + * + * @since 2.8.0 + * + * @see wp_dropdown_categories() + * + * @param array $cat_args An array of Categories widget drop-down arguments. + */ + wp_dropdown_categories( apply_filters( 'widget_categories_dropdown_args', $cat_args ) ); +?> + + + + +
        + +
      + '') ); + $title = esc_attr( $instance['title'] ); + $count = isset($instance['count']) ? (bool) $instance['count'] :false; + $hierarchical = isset( $instance['hierarchical'] ) ? (bool) $instance['hierarchical'] : false; + $dropdown = isset( $instance['dropdown'] ) ? (bool) $instance['dropdown'] : false; +?> +

      +

      + +

      /> +
      + + /> +
      + + /> +

      + 'widget_recent_entries', 'description' => __( "Your site’s most recent Posts.") ); + parent::__construct('recent-posts', __('Recent Posts'), $widget_ops); + $this->alt_option_name = 'widget_recent_entries'; + + add_action( 'save_post', array($this, 'flush_widget_cache') ); + add_action( 'deleted_post', array($this, 'flush_widget_cache') ); + add_action( 'switch_theme', array($this, 'flush_widget_cache') ); + } + + /** + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + $cache = array(); + if ( ! $this->is_preview() ) { + $cache = wp_cache_get( 'widget_recent_posts', 'widget' ); + } + + if ( ! is_array( $cache ) ) { + $cache = array(); + } + + if ( ! isset( $args['widget_id'] ) ) { + $args['widget_id'] = $this->id; + } + + if ( isset( $cache[ $args['widget_id'] ] ) ) { + echo $cache[ $args['widget_id'] ]; + return; + } + + ob_start(); + + $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Posts' ); + + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); + + $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5; + if ( ! $number ) + $number = 5; + $show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false; + + /** + * Filter the arguments for the Recent Posts widget. + * + * @since 3.4.0 + * + * @see WP_Query::get_posts() + * + * @param array $args An array of arguments used to retrieve the recent posts. + */ + $r = new WP_Query( apply_filters( 'widget_posts_args', array( + 'posts_per_page' => $number, + 'no_found_rows' => true, + 'post_status' => 'publish', + 'ignore_sticky_posts' => true + ) ) ); + + if ($r->have_posts()) : +?> + + +
        + have_posts() ) : $r->the_post(); ?> +
      • + + + + +
      • + +
      + +is_preview() ) { + $cache[ $args['widget_id'] ] = ob_get_flush(); + wp_cache_set( 'widget_recent_posts', $cache, 'widget' ); + } else { + ob_end_flush(); + } + } + + /** + * @param array $new_instance + * @param array $old_instance + * @return array + */ + public function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + $instance['number'] = (int) $new_instance['number']; + $instance['show_date'] = isset( $new_instance['show_date'] ) ? (bool) $new_instance['show_date'] : false; + $this->flush_widget_cache(); + + $alloptions = wp_cache_get( 'alloptions', 'options' ); + if ( isset($alloptions['widget_recent_entries']) ) + delete_option('widget_recent_entries'); + + return $instance; + } + + /** + * @access public + */ + public function flush_widget_cache() { + wp_cache_delete('widget_recent_posts', 'widget'); + } + + /** + * @param array $instance + */ + public function form( $instance ) { + $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; + $number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5; + $show_date = isset( $instance['show_date'] ) ? (bool) $instance['show_date'] : false; +?> +

      +

      + +

      +

      + +

      id="get_field_id( 'show_date' ); ?>" name="get_field_name( 'show_date' ); ?>" /> +

      + 'widget_recent_comments', 'description' => __( 'Your site’s most recent comments.' ) ); + parent::__construct('recent-comments', __('Recent Comments'), $widget_ops); + $this->alt_option_name = 'widget_recent_comments'; + + if ( is_active_widget(false, false, $this->id_base) ) + add_action( 'wp_head', array($this, 'recent_comments_style') ); + + add_action( 'comment_post', array($this, 'flush_widget_cache') ); + add_action( 'edit_comment', array($this, 'flush_widget_cache') ); + add_action( 'transition_comment_status', array($this, 'flush_widget_cache') ); + } + + /** + * @access public + */ + public function recent_comments_style() { + /** + * Filter the Recent Comments default widget styles. + * + * @since 3.1.0 + * + * @param bool $active Whether the widget is active. Default true. + * @param string $id_base The widget ID. + */ + if ( ! current_theme_supports( 'widgets' ) // Temp hack #14876 + || ! apply_filters( 'show_recent_comments_widget_style', true, $this->id_base ) ) + return; + ?> + +is_preview() ) { + $cache = wp_cache_get('widget_recent_comments', 'widget'); + } + if ( ! is_array( $cache ) ) { + $cache = array(); + } + + if ( ! isset( $args['widget_id'] ) ) + $args['widget_id'] = $this->id; + + if ( isset( $cache[ $args['widget_id'] ] ) ) { + echo $cache[ $args['widget_id'] ]; + return; + } + + $output = ''; + + $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Comments' ); + + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); + + $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5; + if ( ! $number ) + $number = 5; + + /** + * Filter the arguments for the Recent Comments widget. + * + * @since 3.4.0 + * + * @see WP_Comment_Query::query() for information on accepted arguments. + * + * @param array $comment_args An array of arguments used to retrieve the recent comments. + */ + $comments = get_comments( apply_filters( 'widget_comments_args', array( + 'number' => $number, + 'status' => 'approve', + 'post_status' => 'publish' + ) ) ); + + $output .= $args['before_widget']; + if ( $title ) { + $output .= $args['before_title'] . $title . $args['after_title']; + } + + $output .= '
        '; + if ( is_array( $comments ) && $comments ) { + // Prime cache for associated posts. (Prime post term cache if we need it for permalinks.) + $post_ids = array_unique( wp_list_pluck( $comments, 'comment_post_ID' ) ); + _prime_post_caches( $post_ids, strpos( get_option( 'permalink_structure' ), '%category%' ), false ); + + foreach ( (array) $comments as $comment) { + $output .= '
      • '; + /* translators: comments widget: 1: comment author, 2: post link */ + $output .= sprintf( _x( '%1$s on %2$s', 'widgets' ), + '' . get_comment_author_link() . '', + '' . get_the_title( $comment->comment_post_ID ) . '' + ); + $output .= '
      • '; + } + } + $output .= '
      '; + $output .= $args['after_widget']; + + echo $output; + + if ( ! $this->is_preview() ) { + $cache[ $args['widget_id'] ] = $output; + wp_cache_set( 'widget_recent_comments', $cache, 'widget' ); + } + } + + /** + * @param array $new_instance + * @param array $old_instance + * @return array + */ + public function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + $instance['number'] = absint( $new_instance['number'] ); + $this->flush_widget_cache(); + + $alloptions = wp_cache_get( 'alloptions', 'options' ); + if ( isset($alloptions['widget_recent_comments']) ) + delete_option('widget_recent_comments'); + + return $instance; + } + + /** + * @param array $instance + */ + public function form( $instance ) { + $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; + $number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5; +?> +

      +

      + +

      +

      + __('Entries from any RSS or Atom feed.') ); + $control_ops = array( 'width' => 400, 'height' => 200 ); + parent::__construct( 'rss', __('RSS'), $widget_ops, $control_ops ); + } + + /** + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + if ( isset($instance['error']) && $instance['error'] ) + return; + + $url = ! empty( $instance['url'] ) ? $instance['url'] : ''; + while ( stristr($url, 'http') != $url ) + $url = substr($url, 1); + + if ( empty($url) ) + return; + + // self-url destruction sequence + if ( in_array( untrailingslashit( $url ), array( site_url(), home_url() ) ) ) + return; + + $rss = fetch_feed($url); + $title = $instance['title']; + $desc = ''; + $link = ''; + + if ( ! is_wp_error($rss) ) { + $desc = esc_attr(strip_tags(@html_entity_decode($rss->get_description(), ENT_QUOTES, get_option('blog_charset')))); + if ( empty($title) ) + $title = esc_html(strip_tags($rss->get_title())); + $link = esc_url(strip_tags($rss->get_permalink())); + while ( stristr($link, 'http') != $link ) + $link = substr($link, 1); + } + + if ( empty($title) ) + $title = empty($desc) ? __('Unknown Feed') : $desc; + + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); + + $url = esc_url(strip_tags($url)); + $icon = includes_url('images/rss.png'); + if ( $title ) + $title = "RSS $title"; + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } + wp_widget_rss_output( $rss, $instance ); + echo $args['after_widget']; + + if ( ! is_wp_error($rss) ) + $rss->__destruct(); + unset($rss); + } + + /** + * @param array $new_instance + * @param array $old_instance + * @return array + */ + public function update( $new_instance, $old_instance ) { + $testurl = ( isset( $new_instance['url'] ) && ( !isset( $old_instance['url'] ) || ( $new_instance['url'] != $old_instance['url'] ) ) ); + return wp_widget_rss_process( $new_instance, $testurl ); + } + + /** + * @param array $instance + */ + public function form( $instance ) { + if ( empty( $instance ) ) { + $instance = array( 'title' => '', 'url' => '', 'items' => 10, 'error' => false, 'show_summary' => 0, 'show_author' => 0, 'show_date' => 0 ); + } + $instance['number'] = $this->number; + + wp_widget_rss_form( $instance ); + } +} + +/** + * Display the RSS entries in a list. + * + * @since 2.5.0 + * + * @param string|array|object $rss RSS url. + * @param array $args Widget arguments. + */ +function wp_widget_rss_output( $rss, $args = array() ) { + if ( is_string( $rss ) ) { + $rss = fetch_feed($rss); + } elseif ( is_array($rss) && isset($rss['url']) ) { + $args = $rss; + $rss = fetch_feed($rss['url']); + } elseif ( !is_object($rss) ) { + return; + } + + if ( is_wp_error($rss) ) { + if ( is_admin() || current_user_can('manage_options') ) + echo '

      ' . sprintf( __('RSS Error: %s'), $rss->get_error_message() ) . '

      '; + return; + } + + $default_args = array( 'show_author' => 0, 'show_date' => 0, 'show_summary' => 0, 'items' => 0 ); + $args = wp_parse_args( $args, $default_args ); + + $items = (int) $args['items']; + if ( $items < 1 || 20 < $items ) + $items = 10; + $show_summary = (int) $args['show_summary']; + $show_author = (int) $args['show_author']; + $show_date = (int) $args['show_date']; + + if ( !$rss->get_item_quantity() ) { + echo '
      • ' . __( 'An error has occurred, which probably means the feed is down. Try again later.' ) . '
      '; + $rss->__destruct(); + unset($rss); + return; + } + + echo '
        '; + foreach ( $rss->get_items( 0, $items ) as $item ) { + $link = $item->get_link(); + while ( stristr( $link, 'http' ) != $link ) { + $link = substr( $link, 1 ); + } + $link = esc_url( strip_tags( $link ) ); + + $title = esc_html( trim( strip_tags( $item->get_title() ) ) ); + if ( empty( $title ) ) { + $title = __( 'Untitled' ); + } + + $desc = @html_entity_decode( $item->get_description(), ENT_QUOTES, get_option( 'blog_charset' ) ); + $desc = esc_attr( wp_trim_words( $desc, 55, ' […]' ) ); + + $summary = ''; + if ( $show_summary ) { + $summary = $desc; + + // Change existing [...] to […]. + if ( '[...]' == substr( $summary, -5 ) ) { + $summary = substr( $summary, 0, -5 ) . '[…]'; + } + + $summary = '
        ' . esc_html( $summary ) . '
        '; + } + + $date = ''; + if ( $show_date ) { + $date = $item->get_date( 'U' ); + + if ( $date ) { + $date = ' ' . date_i18n( get_option( 'date_format' ), $date ) . ''; + } + } + + $author = ''; + if ( $show_author ) { + $author = $item->get_author(); + if ( is_object($author) ) { + $author = $author->get_name(); + $author = ' ' . esc_html( strip_tags( $author ) ) . ''; + } + } + + if ( $link == '' ) { + echo "
      • $title{$date}{$summary}{$author}
      • "; + } elseif ( $show_summary ) { + echo "
      • $title{$date}{$summary}{$author}
      • "; + } else { + echo "
      • $title{$date}{$author}
      • "; + } + } + echo '
      '; + $rss->__destruct(); + unset($rss); +} + +/** + * Display RSS widget options form. + * + * The options for what fields are displayed for the RSS form are all booleans + * and are as follows: 'url', 'title', 'items', 'show_summary', 'show_author', + * 'show_date'. + * + * @since 2.5.0 + * + * @param array|string $args Values for input fields. + * @param array $inputs Override default display options. + */ +function wp_widget_rss_form( $args, $inputs = null ) { + $default_inputs = array( 'url' => true, 'title' => true, 'items' => true, 'show_summary' => true, 'show_author' => true, 'show_date' => true ); + $inputs = wp_parse_args( $inputs, $default_inputs ); + + $args['number'] = esc_attr( $args['number'] ); + $args['title'] = isset( $args['title'] ) ? esc_attr( $args['title'] ) : ''; + $args['url'] = isset( $args['url'] ) ? esc_url( $args['url'] ) : ''; + $args['items'] = isset( $args['items'] ) ? (int) $args['items'] : 0; + + if ( $args['items'] < 1 || 20 < $args['items'] ) { + $args['items'] = 10; + } + + $args['show_summary'] = isset( $args['show_summary'] ) ? (int) $args['show_summary'] : (int) $inputs['show_summary']; + $args['show_author'] = isset( $args['show_author'] ) ? (int) $args['show_author'] : (int) $inputs['show_author']; + $args['show_date'] = isset( $args['show_date'] ) ? (int) $args['show_date'] : (int) $inputs['show_date']; + + if ( ! empty( $args['error'] ) ) { + echo '

      ' . sprintf( __( 'RSS Error: %s' ), $args['error'] ) . '

      '; + } + + if ( $inputs['url'] ) : +?> +

      +

      + +

      +

      + +

      +

      + +

      /> +

      + +

      /> +

      + +

      /> +

      + + +get_error_message(); + } else { + $link = esc_url(strip_tags($rss->get_permalink())); + while ( stristr($link, 'http') != $link ) + $link = substr($link, 1); + + $rss->__destruct(); + unset($rss); + } + } + + return compact( 'title', 'url', 'link', 'items', 'error', 'show_summary', 'show_author', 'show_date' ); +} + +/** + * Tag cloud widget class + * + * @since 2.8.0 + */ +class WP_Widget_Tag_Cloud extends WP_Widget { + + public function __construct() { + $widget_ops = array( 'description' => __( "A cloud of your most used tags.") ); + parent::__construct('tag_cloud', __('Tag Cloud'), $widget_ops); + } + + /** + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + $current_taxonomy = $this->_get_current_taxonomy($instance); + if ( !empty($instance['title']) ) { + $title = $instance['title']; + } else { + if ( 'post_tag' == $current_taxonomy ) { + $title = __('Tags'); + } else { + $tax = get_taxonomy($current_taxonomy); + $title = $tax->labels->name; + } + } + + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } + echo '
      '; + + /** + * Filter the taxonomy used in the Tag Cloud widget. + * + * @since 2.8.0 + * @since 3.0.0 Added taxonomy drop-down. + * + * @see wp_tag_cloud() + * + * @param array $current_taxonomy The taxonomy to use in the tag cloud. Default 'tags'. + */ + wp_tag_cloud( apply_filters( 'widget_tag_cloud_args', array( + 'taxonomy' => $current_taxonomy + ) ) ); + + echo "
      \n"; + echo $args['after_widget']; + } + + /** + * @param array $new_instance + * @param array $old_instance + * @return array + */ + public function update( $new_instance, $old_instance ) { + $instance = array(); + $instance['title'] = strip_tags(stripslashes($new_instance['title'])); + $instance['taxonomy'] = stripslashes($new_instance['taxonomy']); + return $instance; + } + + /** + * @param array $instance + */ + public function form( $instance ) { + $current_taxonomy = $this->_get_current_taxonomy($instance); +?> +

      +

      +

      +

      __('Add a custom menu to your sidebar.') ); + parent::__construct( 'nav_menu', __('Custom Menu'), $widget_ops ); + } + + /** + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + // Get menu + $nav_menu = ! empty( $instance['nav_menu'] ) ? wp_get_nav_menu_object( $instance['nav_menu'] ) : false; + + if ( !$nav_menu ) + return; + + /** This filter is documented in wp-includes/default-widgets.php */ + $instance['title'] = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base ); + + echo $args['before_widget']; + + if ( !empty($instance['title']) ) + echo $args['before_title'] . $instance['title'] . $args['after_title']; + + $nav_menu_args = array( + 'fallback_cb' => '', + 'menu' => $nav_menu + ); + + /** + * Filter the arguments for the Custom Menu widget. + * + * @since 4.2.0 + * + * @param array $nav_menu_args { + * An array of arguments passed to wp_nav_menu() to retrieve a custom menu. + * + * @type callback|bool $fallback_cb Callback to fire if the menu doesn't exist. Default empty. + * @type mixed $menu Menu ID, slug, or name. + * } + * @param stdClass $nav_menu Nav menu object for the current menu. + * @param array $args Display arguments for the current widget. + */ + wp_nav_menu( apply_filters( 'widget_nav_menu_args', $nav_menu_args, $nav_menu, $args ) ); + + echo $args['after_widget']; + } + + /** + * @param array $new_instance + * @param array $old_instance + * @return array + */ + public function update( $new_instance, $old_instance ) { + $instance = array(); + if ( ! empty( $new_instance['title'] ) ) { + $instance['title'] = strip_tags( stripslashes($new_instance['title']) ); + } + if ( ! empty( $new_instance['nav_menu'] ) ) { + $instance['nav_menu'] = (int) $new_instance['nav_menu']; + } + return $instance; + } + + /** + * @param array $instance + */ + public function form( $instance ) { + $title = isset( $instance['title'] ) ? $instance['title'] : ''; + $nav_menu = isset( $instance['nav_menu'] ) ? $instance['nav_menu'] : ''; + + // Get menus + $menus = wp_get_nav_menus(); + + // If no menus exists, direct the user to go and create some. + ?> + + + $post->ID, + 'Author_ID' => $post->post_author, + 'Date' => $post->post_date, + 'Content' => $post->post_content, + 'Excerpt' => $post->post_excerpt, + 'Title' => $post->post_title, + 'Category' => $post->post_category, + 'post_status' => $post->post_status, + 'comment_status' => $post->comment_status, + 'ping_status' => $post->ping_status, + 'post_password' => $post->post_password, + 'to_ping' => $post->to_ping, + 'pinged' => $post->pinged, + 'post_type' => $post->post_type, + 'post_name' => $post->post_name + ); + + return $postdata; +} + +/** + * Sets up the WordPress Loop. + * + * @since 1.0.1 + * @deprecated 1.5.0 + * @deprecated Use The Loop - {@link https://codex.wordpress.org/The_Loop Use new WordPress Loop} + */ +function start_wp() { + global $wp_query; + + _deprecated_function( __FUNCTION__, '1.5', __('new WordPress Loop') ); + + // Since the old style loop is being used, advance the query iterator here. + $wp_query->next_post(); + + setup_postdata( get_post() ); +} + +/** + * Return or Print Category ID. + * + * @since 0.71 + * @deprecated 0.71 + * @deprecated use get_the_category() + * @see get_the_category() + * + * @param bool $echo + * @return null|int + */ +function the_category_ID($echo = true) { + _deprecated_function( __FUNCTION__, '0.71', 'get_the_category()' ); + + // Grab the first cat in the list. + $categories = get_the_category(); + $cat = $categories[0]->term_id; + + if ( $echo ) + echo $cat; + + return $cat; +} + +/** + * Print category with optional text before and after. + * + * @since 0.71 + * @deprecated 0.71 + * @deprecated use get_the_category_by_ID() + * @see get_the_category_by_ID() + * + * @param string $before + * @param string $after + */ +function the_category_head($before='', $after='') { + global $currentcat, $previouscat; + + _deprecated_function( __FUNCTION__, '0.71', 'get_the_category_by_ID()' ); + + // Grab the first cat in the list. + $categories = get_the_category(); + $currentcat = $categories[0]->category_id; + if ( $currentcat != $previouscat ) { + echo $before; + echo get_the_category_by_ID($currentcat); + echo $after; + $previouscat = $currentcat; + } +} + +/** + * Prints link to the previous post. + * + * @since 1.5.0 + * @deprecated 2.0.0 + * @deprecated Use previous_post_link() + * @see previous_post_link() + * + * @param string $format + * @param string $previous + * @param string $title + * @param string $in_same_cat + * @param int $limitprev + * @param string $excluded_categories + */ +function previous_post($format='%', $previous='previous post: ', $title='yes', $in_same_cat='no', $limitprev=1, $excluded_categories='') { + + _deprecated_function( __FUNCTION__, '2.0', 'previous_post_link()' ); + + if ( empty($in_same_cat) || 'no' == $in_same_cat ) + $in_same_cat = false; + else + $in_same_cat = true; + + $post = get_previous_post($in_same_cat, $excluded_categories); + + if ( !$post ) + return; + + $string = ''.$previous; + if ( 'yes' == $title ) + $string .= apply_filters('the_title', $post->post_title, $post->ID); + $string .= ''; + $format = str_replace('%', $string, $format); + echo $format; +} + +/** + * Prints link to the next post. + * + * @since 0.71 + * @deprecated 2.0.0 + * @deprecated Use next_post_link() + * @see next_post_link() + * + * @param string $format + * @param string $next + * @param string $title + * @param string $in_same_cat + * @param int $limitnext + * @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', 'next_post_link()' ); + + if ( empty($in_same_cat) || 'no' == $in_same_cat ) + $in_same_cat = false; + else + $in_same_cat = true; + + $post = get_next_post($in_same_cat, $excluded_categories); + + if ( !$post ) + return; + + $string = ''.$next; + if ( 'yes' == $title ) + $string .= apply_filters('the_title', $post->post_title, $post->ID); + $string .= ''; + $format = str_replace('%', $string, $format); + echo $format; +} + +/** + * Whether user can create a post. + * + * @since 1.5.0 + * @deprecated 2.0.0 + * @deprecated Use current_user_can() + * @see current_user_can() + * + * @param int $user_id + * @param int $blog_id Not Used + * @param int $category_id Not Used + * @return bool + */ +function user_can_create_post($user_id, $blog_id = 1, $category_id = 'None') { + _deprecated_function( __FUNCTION__, '2.0', 'current_user_can()' ); + + $author_data = get_userdata($user_id); + return ($author_data->user_level > 1); +} + +/** + * Whether user can create a post. + * + * @since 1.5.0 + * @deprecated 2.0.0 + * @deprecated Use current_user_can() + * @see current_user_can() + * + * @param int $user_id + * @param int $blog_id Not Used + * @param int $category_id Not Used + * @return bool + */ +function user_can_create_draft($user_id, $blog_id = 1, $category_id = 'None') { + _deprecated_function( __FUNCTION__, '2.0', 'current_user_can()' ); + + $author_data = get_userdata($user_id); + return ($author_data->user_level >= 1); +} + +/** + * Whether user can edit a post. + * + * @since 1.5.0 + * @deprecated 2.0.0 + * @deprecated Use current_user_can() + * @see current_user_can() + * + * @param int $user_id + * @param int $post_id + * @param int $blog_id Not Used + * @return bool + */ +function user_can_edit_post($user_id, $post_id, $blog_id = 1) { + _deprecated_function( __FUNCTION__, '2.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) ) { + return true; + } else { + return false; + } +} + +/** + * Whether user can delete a post. + * + * @since 1.5.0 + * @deprecated 2.0.0 + * @deprecated Use current_user_can() + * @see current_user_can() + * + * @param int $user_id + * @param int $post_id + * @param int $blog_id Not Used + * @return bool + */ +function user_can_delete_post($user_id, $post_id, $blog_id = 1) { + _deprecated_function( __FUNCTION__, '2.0', 'current_user_can()' ); + + // 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 + * @deprecated Use current_user_can() + * @see current_user_can() + * + * @param int $user_id + * @param int $blog_id Not Used + * @param int $category_id Not Used + * @return bool + */ +function user_can_set_post_date($user_id, $blog_id = 1, $category_id = 'None') { + _deprecated_function( __FUNCTION__, '2.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)); +} + +/** + * Whether user can delete a post. + * + * @since 1.5.0 + * @deprecated 2.0.0 + * @deprecated Use current_user_can() + * @see current_user_can() + * + * @param int $user_id + * @param int $post_id + * @param int $blog_id Not Used + * @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', '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)); +} + +/** + * Whether user can delete a post. + * + * @since 1.5.0 + * @deprecated 2.0.0 + * @deprecated Use current_user_can() + * @see current_user_can() + * + * @param int $user_id + * @param int $post_id + * @param int $blog_id Not Used + * @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', 'current_user_can()' ); + + // 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 + * @deprecated Use current_user_can() + * @see current_user_can() + * + * @param int $user_id + * @param int $post_id + * @param int $blog_id Not Used + * @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', 'current_user_can()' ); + + // 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 + * @deprecated Use current_user_can() + * @see current_user_can() + * + * @param int $user_id + * @param int $other_user + * @return bool + */ +function user_can_edit_user($user_id, $other_user) { + _deprecated_function( __FUNCTION__, '2.0', 'current_user_can()' ); + + $user = get_userdata($user_id); + $other = get_userdata($other_user); + if ( $user->user_level > $other->user_level || $user->user_level > 8 || $user->ID == $other->ID ) + return true; + else + return false; +} + +/** + * Gets the links associated with category $cat_name. + * + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated Use get_bookmarks() + * @see 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__, '2.1', 'get_bookmarks()' ); + + $cat_id = -1; + $cat = get_term_by('name', $cat_name, 'link_category'); + if ( $cat ) + $cat_id = $cat->term_id; + + get_links($cat_id, $before, $after, $between, $show_images, $orderby, $show_description, $show_rating, $limit, $show_updated); +} + +/** + * Gets the links associated with the named category. + * + * @since 1.0.1 + * @deprecated 2.1.0 + * @deprecated Use wp_list_bookmarks() + * @see wp_list_bookmarks() + * + * @param string $category The category to use. + * @param string $args + * @return string|null + */ +function wp_get_linksbyname($category, $args = '') { + _deprecated_function(__FUNCTION__, '2.1', 'wp_list_bookmarks()'); + + $defaults = array( + 'after' => '
      ', + 'before' => '', + 'categorize' => 0, + 'category_after' => '', + 'category_before' => '', + 'category_name' => $category, + 'show_description' => 1, + 'title_li' => '', + ); + + $r = wp_parse_args( $args, $defaults ); + + return wp_list_bookmarks($r); +} + +/** + * Gets an array of link objects associated with category $cat_name. + * + * $links = get_linkobjectsbyname( 'fred' ); + * foreach ( $links as $link ) { + * echo '
    18. ' . $link->link_name . '
    19. '; + * } + * + * @since 1.0.1 + * @deprecated 2.1.0 + * @deprecated Use get_bookmarks() + * @see get_bookmarks() + * + * @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', 'get_bookmarks()' ); + + $cat_id = -1; + $cat = get_term_by('name', $cat_name, 'link_category'); + if ( $cat ) + $cat_id = $cat->term_id; + + return get_linkobjects($cat_id, $orderby, $limit); +} + +/** + * Gets an array of link objects associated with category n. + * + * Usage: + * + * $links = get_linkobjects(1); + * if ($links) { + * foreach ($links as $link) { + * echo '
    20. '.$link->link_name.'
      '.$link->link_description.'
    21. '; + * } + * } + * + * Fields are: + * + * - link_id + * - link_url + * - link_name + * - link_image + * - link_target + * - link_category + * - link_description + * - link_visible + * - link_owner + * - link_rating + * - link_updated + * - link_rel + * - link_notes + * + * @since 1.0.1 + * @deprecated 2.1.0 + * @deprecated Use get_bookmarks() + * @see get_bookmarks() + * + * @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', 'get_bookmarks()' ); + + $links = get_bookmarks( array( 'category' => $category, 'orderby' => $orderby, 'limit' => $limit ) ) ; + + $links_array = array(); + foreach ($links as $link) + $links_array[] = $link; + + return $links_array; +} + +/** + * Gets the links associated with category 'cat_name' and display rating stars/chars. + * + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated Use get_bookmarks() + * @see get_bookmarks() + * + * @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', 'get_bookmarks()' ); + + get_linksbyname($cat_name, $before, $after, $between, $show_images, $orderby, $show_description, true, $limit, $show_updated); +} + +/** + * Gets the links associated with category n and display rating stars/chars. + * + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated Use get_bookmarks() + * @see 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__, '2.1', 'get_bookmarks()' ); + + get_links($category, $before, $after, $between, $show_images, $orderby, $show_description, true, $limit, $show_updated); +} + +/** + * Gets the auto_toggle setting. + * + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated No alternative function available + * + * @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' ); + return 0; +} + +/** + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated Use wp_list_categories() + * @see wp_list_categories() + * + * @param int $optionall + * @param string $all + * @param string $sort_column + * @param string $sort_order + * @param string $file + * @param bool $list + * @param int $optiondates + * @param int $optioncount + * @param int $hide_empty + * @param int $use_desc_for_title + * @param bool $children + * @param int $child_of + * @param int $categories + * @param int $recurse + * @param string $feed + * @param string $feed_image + * @param string $exclude + * @param bool $hierarchical + * @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', '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'); + return wp_list_cats($query); +} + +/** + * @since 1.2.0 + * @deprecated 2.1.0 + * @deprecated Use wp_list_categories() + * @see wp_list_categories() + * + * @param string|array $args + * @return false|null|string + */ +function wp_list_cats($args = '') { + _deprecated_function( __FUNCTION__, '2.1', 'wp_list_categories()' ); + + $r = wp_parse_args( $args ); + + // Map to new names. + if ( isset($r['optionall']) && isset($r['all'])) + $r['show_option_all'] = $r['all']; + if ( isset($r['sort_column']) ) + $r['orderby'] = $r['sort_column']; + if ( isset($r['sort_order']) ) + $r['order'] = $r['sort_order']; + if ( isset($r['optiondates']) ) + $r['show_last_update'] = $r['optiondates']; + if ( isset($r['optioncount']) ) + $r['show_count'] = $r['optioncount']; + if ( isset($r['list']) ) + $r['style'] = $r['list'] ? 'list' : 'break'; + $r['title_li'] = ''; + + return wp_list_categories($r); +} + +/** + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated Use wp_dropdown_categories() + * @see wp_dropdown_categories() + * + * @param int $optionall + * @param string $all + * @param string $orderby + * @param string $order + * @param int $show_last_update + * @param int $show_count + * @param int $hide_empty + * @param bool $optionnone + * @param int $selected + * @param int $exclude + * @return string + */ +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', 'wp_dropdown_categories()' ); + + $show_option_all = ''; + if ( $optionall ) + $show_option_all = $all; + + $show_option_none = ''; + if ( $optionnone ) + $show_option_none = __('None'); + + $vars = compact('show_option_all', 'show_option_none', 'orderby', 'order', + 'show_last_update', 'show_count', 'hide_empty', 'selected', 'exclude'); + $query = add_query_arg($vars, ''); + return wp_dropdown_categories($query); +} + +/** + * List authors. + * + * @since 1.2.0 + * @deprecated 2.1.0 + * @deprecated Use wp_list_authors() + * @see wp_list_authors() + * + * @param bool $optioncount + * @param bool $exclude_admin + * @param bool $show_fullname + * @param bool $hide_empty + * @param string $feed + * @param string $feed_image + * @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', 'wp_list_authors()' ); + + $args = compact('optioncount', 'exclude_admin', 'show_fullname', 'hide_empty', 'feed', 'feed_image'); + return wp_list_authors($args); +} + +/** + * @since 1.0.1 + * @deprecated 2.1.0 + * @deprecated Use wp_get_post_categories() + * @see wp_get_post_categories() + * + * @param int $blogid Not Used + * @param int $post_ID + * @return array + */ +function wp_get_post_cats($blogid = '1', $post_ID = 0) { + _deprecated_function( __FUNCTION__, '2.1', 'wp_get_post_categories()' ); + return wp_get_post_categories($post_ID); +} + +/** + * Sets the categories that the post id belongs to. + * + * @since 1.0.1 + * @deprecated 2.1.0 + * @deprecated Use wp_set_post_categories() + * @see wp_set_post_categories() + * + * @param int $blogid Not used + * @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', 'wp_set_post_categories()' ); + return wp_set_post_categories($post_ID, $post_categories); +} + +/** + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated Use wp_get_archives() + * @see wp_get_archives() + * + * @param string $type + * @param string $limit + * @param string $format + * @param string $before + * @param string $after + * @param bool $show_post_count + * @return string|null + */ +function get_archives($type='', $limit='', $format='html', $before = '', $after = '', $show_post_count = false) { + _deprecated_function( __FUNCTION__, '2.1', 'wp_get_archives()' ); + $args = compact('type', 'limit', 'format', 'before', 'after', 'show_post_count'); + return wp_get_archives($args); +} + +/** + * Returns or Prints link to the author's posts. + * + * @since 1.2.0 + * @deprecated 2.1.0 + * @deprecated Use get_author_posts_url() + * @see get_author_posts_url() + * + * @param bool $echo + * @param int $author_id + * @param string $author_nicename Optional. + * @return string|null + */ +function get_author_link($echo, $author_id, $author_nicename = '') { + _deprecated_function( __FUNCTION__, '2.1', 'get_author_posts_url()' ); + + $link = get_author_posts_url($author_id, $author_nicename); + + if ( $echo ) + echo $link; + return $link; +} + +/** + * Print list of pages based on arguments. + * + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated Use wp_link_pages() + * @see wp_link_pages() + * + * @param string $before + * @param string $after + * @param string $next_or_number + * @param string $nextpagelink + * @param string $previouspagelink + * @param string $pagelink + * @param string $more_file + * @return string + */ +function link_pages($before='
      ', $after='
      ', $next_or_number='number', $nextpagelink='next page', $previouspagelink='previous page', + $pagelink='%', $more_file='') { + _deprecated_function( __FUNCTION__, '2.1', 'wp_link_pages()' ); + + $args = compact('before', 'after', 'next_or_number', 'nextpagelink', 'previouspagelink', 'pagelink', 'more_file'); + return wp_link_pages($args); +} + +/** + * Get value based on option. + * + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated Use get_option() + * @see get_option() + * + * @param string $option + * @return string + */ +function get_settings($option) { + _deprecated_function( __FUNCTION__, '2.1', 'get_option()' ); + + return get_option($option); +} + +/** + * Print the permalink of the current post in the loop. + * + * @since 0.71 + * @deprecated 1.2.0 + * @deprecated Use the_permalink() + * @see the_permalink() + */ +function permalink_link() { + _deprecated_function( __FUNCTION__, '1.2', 'the_permalink()' ); + the_permalink(); +} + +/** + * Print the permalink to the RSS feed. + * + * @since 0.71 + * @deprecated 2.3.0 + * @deprecated Use the_permalink_rss() + * @see the_permalink_rss() + * + * @param string $deprecated + */ +function permalink_single_rss($deprecated = '') { + _deprecated_function( __FUNCTION__, '2.3', 'the_permalink_rss()' ); + the_permalink_rss(); +} + +/** + * Gets the links associated with category. + * + * @see get_links() for argument information that can be used in $args + * @since 1.0.1 + * @deprecated 2.1.0 + * @deprecated 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', 'wp_list_bookmarks()' ); + + if ( strpos( $args, '=' ) === false ) { + $cat_id = $args; + $args = add_query_arg( 'category', $cat_id, $args ); + } + + $defaults = array( + 'after' => '
      ', + 'before' => '', + 'between' => ' ', + 'categorize' => 0, + 'category' => '', + 'echo' => true, + 'limit' => -1, + 'orderby' => 'name', + 'show_description' => true, + 'show_images' => true, + 'show_rating' => false, + 'show_updated' => true, + 'title_li' => '', + ); + + $r = wp_parse_args( $args, $defaults ); + + return wp_list_bookmarks($r); +} + +/** + * Gets the links associated with category by id. + * + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated Use get_bookmarks() + * @see 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 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, $echo = true) { + _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); + + $order = 'ASC'; + if ( substr($orderby, 0, 1) == '_' ) { + $order = 'DESC'; + $orderby = substr($orderby, 1); + } + + 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)); + + if ( !$results ) + return; + + $output = ''; + + foreach ( (array) $results as $row ) { + if ( !isset($row->recently_updated) ) + $row->recently_updated = false; + $output .= $before; + if ( $show_updated && $row->recently_updated ) + $output .= get_option('links_recently_updated_prepend'); + $the_link = '#'; + if ( !empty($row->link_url) ) + $the_link = esc_url($row->link_url); + $rel = $row->link_rel; + if ( '' != $rel ) + $rel = ' rel="' . $rel . '"'; + + $desc = esc_attr(sanitize_bookmark_field('link_description', $row->link_description, $row->link_id, 'display')); + $name = esc_attr(sanitize_bookmark_field('link_name', $row->link_name, $row->link_id, 'display')); + $title = $desc; + + if ( $show_updated ) + if (substr($row->link_updated_f, 0, 2) != '00') + $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 . '"'; + + $alt = ' alt="' . $name . '"'; + + $target = $row->link_target; + if ( '' != $target ) + $target = ' target="' . $target . '"'; + + $output .= ''; + + 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 />"; + } else { + $output .= $name; + } + + $output .= ''; + + if ( $show_updated && $row->recently_updated ) + $output .= get_option('links_recently_updated_append'); + + if ( $show_description && '' != $desc ) + $output .= $between . $desc; + + if ($show_rating) { + $output .= $between . get_linkrating($row); + } + + $output .= "$after\n"; + } // end while + + if ( !$echo ) + return $output; + echo $output; +} + +/** + * Output entire list of links by category. + * + * 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 + * @deprecated 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', 'wp_list_bookmarks()' ); + + $order = strtolower($order); + + // Handle link category sorting + $direction = 'ASC'; + if ( '_' == substr($order,0,1) ) { + $direction = 'DESC'; + $order = substr($order,1); + } + + if ( !isset($direction) ) + $direction = ''; + + $cats = get_categories(array('type' => 'link', 'orderby' => $order, 'order' => $direction, 'hierarchical' => 0)); + + // Display each category + if ( $cats ) { + foreach ( (array) $cats as $cat ) { + // Handle each category. + + // Display the category name + echo '
    22. ' . apply_filters('link_category', $cat->name ) . "

      \n\t
        \n"; + // Call get_links() with all the appropriate params + get_links($cat->term_id, '
      • ', "
      • ", "\n", true, 'name', false); + + // Close the last category + echo "\n\t
      \n
    23. \n"; + } + } +} + +/** + * Show the link to the links popup and the number of links. + * + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated {@internal Use function instead is unknown}} + * + * @param string $text the text of the link + * @param int $width the width of the popup window + * @param int $height the height of the popup window + * @param string $file the page to open in the popup window + * @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' ); +} + +/** + * @since 1.0.1 + * @deprecated 2.1.0 + * @deprecated Use sanitize_bookmark_field() + * @see sanitize_bookmark_field() + * + * @param object $link + * @return mixed + */ +function get_linkrating($link) { + _deprecated_function( __FUNCTION__, '2.1', 'sanitize_bookmark_field()' ); + return sanitize_bookmark_field('link_rating', $link->link_rating, $link->link_id, 'display'); +} + +/** + * Gets the name of category by id. + * + * @since 0.71 + * @deprecated 2.1.0 + * @deprecated 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', 'get_category()' ); + + $id = (int) $id; + + if ( empty($id) ) + return ''; + + $cats = wp_get_link_cats($id); + + if ( empty($cats) || ! is_array($cats) ) + return ''; + + $cat_id = (int) $cats[0]; // Take the first cat. + + $cat = get_category($cat_id); + return $cat->name; +} + +/** + * Print RSS comment feed link. + * + * @since 1.0.1 + * @deprecated 2.5.0 + * @deprecated 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', '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 + * @deprecated Use get_category_feed_link() + * @see get_category_feed_link() + * + * @param bool $echo + * @param int $cat_ID + * @return string + */ +function get_category_rss_link($echo = false, $cat_ID = 1) { + _deprecated_function( __FUNCTION__, '2.5', 'get_category_feed_link()' ); + + $link = get_category_feed_link($cat_ID, 'rss2'); + + if ( $echo ) + echo $link; + return $link; +} + +/** + * Print/Return link to author RSS feed. + * + * @since 1.2.0 + * @deprecated 2.5.0 + * @deprecated Use get_author_feed_link() + * @see get_author_feed_link() + * + * @param bool $echo + * @param int $author_id + * @return string + */ +function get_author_rss_link($echo = false, $author_id = 1) { + _deprecated_function( __FUNCTION__, '2.5', 'get_author_feed_link()' ); + + $link = get_author_feed_link($author_id); + if ( $echo ) + echo $link; + return $link; +} + +/** + * Return link to the post RSS feed. + * + * @since 1.5.0 + * @deprecated 2.2.0 + * @deprecated Use get_post_comments_feed_link() + * @see get_post_comments_feed_link() + * + * @return string + */ +function comments_rss() { + _deprecated_function( __FUNCTION__, '2.2', '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 + * @deprecated Use wp_create_user() + * @see wp_create_user() + * + * @param string $username The user's username. + * @param string $password The user's password. + * @param string $email The user's email. + * @return int The new user's ID. + */ +function create_user($username, $password, $email) { + _deprecated_function( __FUNCTION__, '2.0', 'wp_create_user()' ); + return wp_create_user($username, $password, $email); +} + +/** + * Unused function. + * + * @deprecated 2.5.0 +*/ +function gzip_compression() { + _deprecated_function( __FUNCTION__, '2.5' ); + return false; +} + +/** + * Retrieve an array of comment data about comment $comment_ID. + * + * @since 0.71 + * @deprecated 2.7.0 + * @deprecated Use get_comment() + * @see get_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', 'get_comment()' ); + return get_comment($comment_ID, ARRAY_A); +} + +/** + * Retrieve the category name by the category ID. + * + * @since 0.71 + * @deprecated 2.8.0 + * @deprecated Use get_cat_name() + * @see get_cat_name() + * + * @param int $cat_ID Category ID + * @return string category name + */ +function get_catname( $cat_ID ) { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated 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. + * @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', 'get_term_children()' ); + if ( 0 == $id ) + return ''; + + $chain = ''; + /** TODO: consult hierarchy */ + $cat_ids = get_all_category_ids(); + foreach ( (array) $cat_ids as $cat_id ) { + if ( $cat_id == $id ) + continue; + + $category = get_category( $cat_id ); + if ( is_wp_error( $category ) ) + return $category; + if ( $category->parent == $id && !in_array( $category->term_id, $visited ) ) { + $visited[] = $category->term_id; + $chain .= $before.$category->term_id.$after; + $chain .= get_category_children( $category->term_id, $before, $after ); + } + } + return $chain; +} + +/** + * Retrieves all category IDs. + * + * @since 2.0.0 + * @deprecated 4.0.0 Use get_terms() instead. + * @see get_terms() + * @link https://codex.wordpress.org/Function_Reference/get_all_category_ids + * + * @return object List of all of the category IDs. + */ +function get_all_category_ids() { + _deprecated_function( __FUNCTION__, '4.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; +} + +/** + * Retrieve the description of the author of the current post. + * + * @since 1.5.0 + * @deprecated 2.8.0 + * @deprecated Use get_the_author_meta('description') + * @see get_the_author_meta() + * + * @return string The author's description. + */ +function get_the_author_description() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use the_author_meta('description') + * @see the_author_meta() + */ +function the_author_description() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use get_the_author_meta('login') + * @see get_the_author_meta() + * + * @return string The author's login name (username). + */ +function get_the_author_login() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use the_author_meta('login') + * @see the_author_meta() + */ +function the_author_login() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use get_the_author_meta('first_name') + * @see get_the_author_meta() + * + * @return string The author's first name. + */ +function get_the_author_firstname() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use the_author_meta('first_name') + * @see the_author_meta() + */ +function the_author_firstname() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use get_the_author_meta('last_name') + * @see get_the_author_meta() + * + * @return string The author's last name. + */ +function get_the_author_lastname() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use the_author_meta('last_name') + * @see the_author_meta() + */ +function the_author_lastname() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use get_the_author_meta('nickname') + * @see get_the_author_meta() + * + * @return string The author's nickname. + */ +function get_the_author_nickname() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use the_author_meta('nickname') + * @see the_author_meta() + */ +function the_author_nickname() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use get_the_author_meta('email') + * @see get_the_author_meta() + * + * @return string The author's username. + */ +function get_the_author_email() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use the_author_meta('email') + * @see the_author_meta() + */ +function the_author_email() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use get_the_author_meta('icq') + * @see get_the_author_meta() + * + * @return string The author's ICQ number. + */ +function get_the_author_icq() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use the_author_meta('icq') + * @see the_author_meta() + */ +function the_author_icq() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use get_the_author_meta('yim') + * @see get_the_author_meta() + * + * @return string The author's Yahoo! IM name. + */ +function get_the_author_yim() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use the_author_meta('yim') + * @see the_author_meta() + */ +function the_author_yim() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use get_the_author_meta('msn') + * @see get_the_author_meta() + * + * @return string The author's MSN address. + */ +function get_the_author_msn() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use the_author_meta('msn') + * @see the_author_meta() + */ +function the_author_msn() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use get_the_author_meta('aim') + * @see get_the_author_meta() + * + * @return string The author's AIM address. + */ +function get_the_author_aim() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @see the_author_meta() + * @deprecated 2.8.0 + * @deprecated Use the_author_meta('aim') + */ +function the_author_aim() { + _deprecated_function( __FUNCTION__, '2.8', 'the_author_meta(\'aim\')' ); + the_author_meta('aim'); +} + +/** + * Retrieve the specified author's preferred display name. + * + * @since 1.0.0 + * @deprecated 2.8.0 + * @deprecated Use get_the_author_meta('display_name') + * @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', '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 + * @deprecated Use get_the_author_meta('url') + * @see get_the_author_meta() + * + * @return string The URL to the author's page. + */ +function get_the_author_url() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use the_author_meta('url') + * @see the_author_meta() + */ +function the_author_url() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use get_the_author_meta('ID') + * @see get_the_author_meta() + * + * @return string|int The author's ID. + */ +function get_the_author_ID() { + _deprecated_function( __FUNCTION__, '2.8', '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 + * @deprecated Use the_author_meta('ID') + * @see the_author_meta() +*/ +function the_author_ID() { + _deprecated_function( __FUNCTION__, '2.8', '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. 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. + * + * 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 + * + * @deprecated 2.9.0 + * @deprecated 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. + * @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', 'the_content_feed' ); + $content = get_the_content($more_link_text, $stripteaser); + $content = apply_filters('the_content_rss', $content); + if ( $cut && !$encode_html ) + $encode_html = 2; + if ( 1== $encode_html ) { + $content = esc_html($content); + $cut = 0; + } elseif ( 0 == $encode_html ) { + $content = make_url_footnote($content); + } elseif ( 2 == $encode_html ) { + $content = strip_tags($content); + } + if ( $cut ) { + $blah = explode(' ', $content); + if ( count($blah) > $cut ) { + $k = $cut; + $use_dotdotdot = 1; + } else { + $k = count($blah); + $use_dotdotdot = 0; + } + + /** @todo Check performance, might be faster to use array slice instead. */ + for ( $i=0; $i<$k; $i++ ) + $excerpt .= $blah[$i].' '; + $excerpt .= ($use_dotdotdot) ? '...' : ''; + $content = $excerpt; + } + $content = str_replace(']]>', ']]>', $content); + echo $content; +} + +/** + * Strip HTML and put links at the bottom of stripped content. + * + * 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 + * + * @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', '' ); + preg_match_all( '/(.+?)<\/a>/', $content, $matches ); + $links_summary = "\n"; + for ( $i = 0, $c = count( $matches[0] ); $i < $c; $i++ ) { + $link_match = $matches[0][$i]; + $link_number = '['.($i+1).']'; + $link_url = $matches[2][$i]; + $link_text = $matches[4][$i]; + $content = str_replace( $link_match, $link_text . ' ' . $link_number, $content ); + $link_url = ( ( strtolower( substr( $link_url, 0, 7 ) ) != 'http://' ) && ( strtolower( substr( $link_url, 0, 8 ) ) != 'https://' ) ) ? get_option( 'home' ) . $link_url : $link_url; + $links_summary .= "\n" . $link_number . ' ' . $link_url; + } + $content = strip_tags( $content ); + $content .= $links_summary; + return $content; +} + +/** + * Retrieve translated string with vertical bar context + * + * Quite a few times, there will be collisions with similar translatable text + * found in more than two places but with different translated context. + * + * In order to use the separate contexts, the _c() function is used and the + * translatable string uses a pipe ('|') which has the context the string is in. + * + * When the translated string is returned, it is everything before the pipe, not + * 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 + * @deprecated 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 + */ +function _c( $text, $domain = 'default' ) { + _deprecated_function( __FUNCTION__, '2.9', '_x()' ); + return before_last_bar( translate( $text, $domain ) ); +} + +/** + * 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 + * @deprecated Use _x() + * @see _x() + * + * @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', '_x()' ); + return before_last_bar( translate( $text, $domain ) ); +} + +/** + * A version of _n(), which supports contexts. + * Strips everything from the translation after the last bar. + * + * @since 2.7.0 + * @deprecated 3.0.0 + * @deprecated Use _nx() + * @see _nx() + * @see _n() For parameters. + * @see _c() For parameters. _c() is deprecated. + * + */ +function _nc( $single, $plural, $number, $domain = 'default' ) { + _deprecated_function( __FUNCTION__, '2.9', '_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 + * @deprecated Use _n() + * @see _n() + */ +function __ngettext() { + _deprecated_function( __FUNCTION__, '2.8', '_n()' ); + $args = func_get_args(); + return call_user_func_array('_n', $args); +} + +/** + * Register plural strings in POT file, but don't translate them. + * + * @since 2.5.0 + * @deprecated 2.8.0 + * @deprecated Use _n_noop() + * @see _n_noop() + */ +function __ngettext_noop() { + _deprecated_function( __FUNCTION__, '2.8', '_n_noop()' ); + $args = func_get_args(); + return call_user_func_array('_n_noop', $args); + +} + +/** + * Retrieve all autoload options, or all options if no autoloaded ones exist. + * + * @since 1.0.0 + * @deprecated 3.0.0 + * @deprecated Use wp_load_alloptions()) + * @see wp_load_alloptions() + * + * @return array List of all options. + */ +function get_alloptions() { + _deprecated_function( __FUNCTION__, '3.0', 'wp_load_alloptions()' ); + return wp_load_alloptions(); +} + +/** + * Retrieve HTML content of attachment image with link. + * + * @since 2.0.0 + * @deprecated 2.5.0 + * @deprecated Use wp_get_attachment_link() + * @see wp_get_attachment_link() + * + * @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, 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', 'wp_get_attachment_link()' ); + $id = (int) $id; + $_post = get_post($id); + + if ( ('attachment' != $_post->post_type) || !$url = wp_get_attachment_url($_post->ID) ) + return __('Missing Attachment'); + + if ( $permalink ) + $url = get_attachment_link($_post->ID); + + $post_title = esc_attr($_post->post_title); + + $innerHTML = get_attachment_innerHTML($_post->ID, $fullsize, $max_dims); + return "$innerHTML"; +} + +/** + * Retrieve icon URL and Path. + * + * @since 2.1.0 + * @deprecated 2.5.0 + * @deprecated Use wp_get_attachment_image_src() + * @see wp_get_attachment_image_src() + * + * @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', 'wp_get_attachment_image_src()' ); + $id = (int) $id; + if ( !$post = get_post($id) ) + return 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 + + $src_file = basename($src); + } elseif ( wp_attachment_is_image( $post->ID ) ) { + // 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. + + $icon_dir = apply_filters( 'icon_dir', get_template_directory() . '/images' ); + $src_file = $icon_dir . '/' . basename($src); + } + + if ( !isset($src) || !$src ) + return false; + + return array($src, $src_file); +} + +/** + * Retrieve HTML content of icon attachment image element. + * + * @since 2.0.0 + * @deprecated 2.5.0 + * @deprecated Use wp_get_attachment_image() + * @see wp_get_attachment_image() + * + * @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 false|string HTML content. + */ +function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) { + _deprecated_function( __FUNCTION__, '2.5', 'wp_get_attachment_image()' ); + $id = (int) $id; + if ( !$post = get_post($id) ) + return false; + + if ( !$src = get_attachment_icon_src( $post->ID, $fullsize ) ) + return false; + + list($src, $src_file) = $src; + + // Do we need to constrain the image? + if ( ($max_dims = apply_filters('attachment_max_dims', $max_dims)) && file_exists($src_file) ) { + + $imagesize = getimagesize($src_file); + + if (($imagesize[0] > $max_dims[0]) || $imagesize[1] > $max_dims[1] ) { + $actual_aspect = $imagesize[0] / $imagesize[1]; + $desired_aspect = $max_dims[0] / $max_dims[1]; + + if ( $actual_aspect >= $desired_aspect ) { + $height = $actual_aspect * $max_dims[0]; + $constraint = "width='{$max_dims[0]}' "; + $post->iconsize = array($max_dims[0], $height); + } else { + $width = $max_dims[1] / $actual_aspect; + $constraint = "height='{$max_dims[1]}' "; + $post->iconsize = array($width, $max_dims[1]); + } + } else { + $post->iconsize = array($imagesize[0], $imagesize[1]); + $constraint = ''; + } + } else { + $constraint = ''; + } + + $post_title = esc_attr($post->post_title); + + $icon = "$post_title"; + + return apply_filters( 'attachment_icon', $icon, $post->ID ); +} + +/** + * Retrieve HTML content of image element. + * + * @since 2.0.0 + * @deprecated 2.5.0 + * @deprecated Use wp_get_attachment_image() + * @see wp_get_attachment_image() + * + * @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 false|string + */ +function get_attachment_innerHTML($id = 0, $fullsize = false, $max_dims = false) { + _deprecated_function( __FUNCTION__, '2.5', 'wp_get_attachment_image()' ); + $id = (int) $id; + if ( !$post = get_post($id) ) + return false; + + if ( $innerHTML = get_attachment_icon($post->ID, $fullsize, $max_dims)) + return $innerHTML; + + $innerHTML = esc_attr($post->post_title); + + return apply_filters('attachment_innerHTML', $innerHTML, $post->ID); +} + +/** + * Retrieve bookmark data based on ID. + * + * @since 2.0.0 + * @deprecated 2.1.0 + * @deprecated Use get_bookmark() + * @see get_bookmark() + * + * @param int $bookmark_id ID of link + * @param string $output OBJECT, ARRAY_N, or ARRAY_A + * @return object|array + */ +function get_link($bookmark_id, $output = OBJECT, $filter = 'raw') { + _deprecated_function( __FUNCTION__, '2.1', 'get_bookmark()' ); + return get_bookmark($bookmark_id, $output, $filter); +} + +/** + * Performs esc_url() for database or redirect usage. + * + * @since 2.3.1 + * @deprecated 2.8.0 + * @deprecated 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__, '2.8', '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 behaviour) ampersands are also replaced. The 'clean_url' filter + * is applied to the returned cleaned URL. + * + * @since 1.2.0 + * @deprecated 3.0.0 + * @deprecated Use esc_url() + * @see Alias for esc_url() + * + * @param string $url The URL to be cleaned. + * @param array $protocols Optional. An array of acceptable protocols. + * @param string $context Optional. How the URL will be used. Default is 'display'. + * @return string The cleaned $url after the 'clean_url' filter is applied. + */ +function clean_url( $url, $protocols = null, $context = 'display' ) { + if ( $context == 'db' ) + _deprecated_function( 'clean_url( $context = \'db\' )', '3.0', 'esc_url_raw()' ); + else + _deprecated_function( __FUNCTION__, '3.0', 'esc_url()' ); + return esc_url( $url, $protocols, $context ); +} + +/** + * Escape single quotes, specialchar double quotes, and fix line endings. + * + * The filter 'js_escape' is also applied by esc_js() + * + * @since 2.0.4 + * @deprecated 2.8.0 + * @deprecated 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', 'esc_js()' ); + return esc_js( $text ); +} + +/** + * Escaping for HTML blocks. + * + * @deprecated 2.8.0 + * @deprecated Use esc_html() + * @see esc_html() + */ +function wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) { + _deprecated_function( __FUNCTION__, '2.8', 'esc_html()' ); + if ( func_num_args() > 1 ) { // Maintain backwards compat for people passing additional args + $args = func_get_args(); + return call_user_func_array( '_wp_specialchars', $args ); + } else { + return esc_html( $string ); + } +} + +/** + * Escaping for HTML attributes. + * + * @since 2.0.6 + * @deprecated 2.8.0 + * @deprecated Use esc_attr() + * @see esc_attr() + * + * @param string $text + * @return string + */ +function attribute_escape( $text ) { + _deprecated_function( __FUNCTION__, '2.8', 'esc_attr()' ); + return esc_attr( $text ); +} + +/** + * Register widget for sidebar with backwards compatibility. + * + * Allows $name to be an array that accepts either three elements to grab the + * first element and the third for the name or just uses the first element of + * the array for the name. + * + * Passes to {@link wp_register_sidebar_widget()} after argument list and + * backwards compatibility is complete. + * + * @since 2.2.0 + * @deprecated 2.8.0 + * @deprecated Use wp_register_sidebar_widget() + * @see wp_register_sidebar_widget() + * + * @param string|int $name Widget ID. + * @param callback $output_callback Run when widget is called. + * @param string $classname Classname widget option. + * @param mixed $params ,... Widget parameters. + */ +function register_sidebar_widget($name, $output_callback, $classname = '') { + _deprecated_function( __FUNCTION__, '2.8', '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); + $options = array(); + if ( !empty($classname) && is_string($classname) ) + $options['classname'] = $classname; + $params = array_slice(func_get_args(), 2); + $args = array($id, $name, $output_callback, $options); + if ( !empty($params) ) + $args = array_merge($args, $params); + + call_user_func_array('wp_register_sidebar_widget', $args); +} + +/** + * Alias of {@link wp_unregister_sidebar_widget()}. + * + * @since 2.2.0 + * @deprecated 2.8.0 + * @deprecated 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', 'wp_unregister_sidebar_widget()' ); + return wp_unregister_sidebar_widget($id); +} + +/** + * Registers widget control callback for customizing options. + * + * Allows $name to be an array that accepts either three elements to grab the + * first element and the third for the name or just uses the first element of + * the array for the name. + * + * Passes to {@link wp_register_widget_control()} after the argument list has + * been compiled. + * + * @since 2.2.0 + * @deprecated 2.8.0 + * @deprecated Use wp_register_widget_control() + * @see wp_register_widget_control() + * + * @param int|string $name Sidebar ID. + * @param callback $control_callback Widget control callback to display and process form. + * @param int $width Widget width. + * @param int $height Widget height. + */ +function register_widget_control($name, $control_callback, $width = '', $height = '') { + _deprecated_function( __FUNCTION__, '2.8', '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); + $options = array(); + if ( !empty($width) ) + $options['width'] = $width; + if ( !empty($height) ) + $options['height'] = $height; + $params = array_slice(func_get_args(), 4); + $args = array($id, $name, $control_callback, $options); + if ( !empty($params) ) + $args = array_merge($args, $params); + + call_user_func_array('wp_register_widget_control', $args); +} + +/** + * Alias of {@link wp_unregister_widget_control()}. + * + * @since 2.2.0 + * @deprecated 2.8.0 + * @deprecated 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', 'wp_unregister_widget_control()' ); + return wp_unregister_widget_control($id); +} + +/** + * Remove user meta data. + * + * @since 2.0.0 + * @deprecated 3.0.0 + * @deprecated Use delete_user_meta() + * @see delete_user_meta() + * + * @param int $user_id User ID. + * @param string $meta_key Metadata key. + * @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', 'delete_user_meta()' ); + global $wpdb; + if ( !is_numeric( $user_id ) ) + return false; + $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key); + + if ( is_array($meta_value) || is_object($meta_value) ) + $meta_value = serialize($meta_value); + $meta_value = trim( $meta_value ); + + $cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) ); + + if ( $cur && $cur->umeta_id ) + do_action( 'delete_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value ); + + if ( ! empty($meta_value) ) + $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s AND meta_value = %s", $user_id, $meta_key, $meta_value) ); + else + $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) ); + + clean_user_cache( $user_id ); + wp_cache_delete( $user_id, 'user_meta' ); + + if ( $cur && $cur->umeta_id ) + do_action( 'deleted_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value ); + + return true; +} + +/** + * Retrieve user metadata. + * + * If $user_id is not a number, then the function will fail over with a 'false' + * boolean return value. Other returned values depend on whether there is only + * 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 + * @deprecated Use get_user_meta() + * @see get_user_meta() + * + * @param int $user_id User ID + * @param string $meta_key Optional. Metadata key. + * @return mixed + */ +function get_usermeta( $user_id, $meta_key = '' ) { + _deprecated_function( __FUNCTION__, '3.0', 'get_user_meta()' ); + global $wpdb; + $user_id = (int) $user_id; + + if ( !$user_id ) + return false; + + 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 + if ( false !== $user && isset($user->$meta_key) ) + $metas = array($user->$meta_key); + else + $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) ); + } else { + $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user_id) ); + } + + if ( empty($metas) ) { + if ( empty($meta_key) ) + return array(); + else + return ''; + } + + $metas = array_map('maybe_unserialize', $metas); + + if ( count($metas) == 1 ) + return $metas[0]; + else + return $metas; +} + +/** + * Update metadata of user. + * + * There is no need to serialize values, they will be serialized if it is + * needed. The metadata key can only be a string with underscores. All else will + * be removed. + * + * Will remove the metadata, if the meta value is empty. + * + * @since 2.0.0 + * @deprecated 3.0.0 + * @deprecated Use update_user_meta() + * @see update_user_meta() + * + * @param int $user_id User ID + * @param string $meta_key Metadata key. + * @param mixed $meta_value Metadata value. + * @return bool True on successful update, false on failure. + */ +function update_usermeta( $user_id, $meta_key, $meta_value ) { + _deprecated_function( __FUNCTION__, '3.0', 'update_user_meta()' ); + global $wpdb; + if ( !is_numeric( $user_id ) ) + return false; + $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key); + + /** @todo Might need fix because usermeta data is assumed to be already escaped */ + if ( is_string($meta_value) ) + $meta_value = stripslashes($meta_value); + $meta_value = maybe_serialize($meta_value); + + if (empty($meta_value)) { + return delete_usermeta($user_id, $meta_key); + } + + $cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) ); + + if ( $cur ) + do_action( 'update_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value ); + + if ( !$cur ) + $wpdb->insert($wpdb->usermeta, compact('user_id', 'meta_key', 'meta_value') ); + elseif ( $cur->meta_value != $meta_value ) + $wpdb->update($wpdb->usermeta, compact('meta_value'), compact('user_id', 'meta_key') ); + else + return false; + + clean_user_cache( $user_id ); + wp_cache_delete( $user_id, 'user_meta' ); + + if ( !$cur ) + do_action( 'added_usermeta', $wpdb->insert_id, $user_id, $meta_key, $meta_value ); + else + do_action( 'updated_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value ); + + return true; +} + +/** + * Get users for the blog. + * + * For setups that use the multi-blog feature. Can be used outside of the + * multi-blog feature. + * + * @since 2.2.0 + * @deprecated 3.1.0 + * + * @global wpdb $wpdb WordPress database abstraction object. + * @uses $blog_id The Blog id of the blog for those that use more than one blog + * + * @param int $id Blog ID. + * @return array List of users that are part of that Blog ID + */ +function get_users_of_blog( $id = '' ) { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb, $blog_id; + if ( empty($id) ) + $id = (int) $blog_id; + $blog_prefix = $wpdb->get_blog_prefix($id); + $users = $wpdb->get_results( "SELECT user_id, user_id AS ID, user_login, display_name, user_email, meta_value FROM $wpdb->users, $wpdb->usermeta WHERE {$wpdb->users}.ID = {$wpdb->usermeta}.user_id AND meta_key = '{$blog_prefix}capabilities' ORDER BY {$wpdb->usermeta}.user_id" ); + return $users; +} + +/** + * Enable/disable automatic general feed link outputting. + * + * @since 2.8.0 + * @deprecated 3.0.0 + * @deprecated Use add_theme_support( 'automatic-feed-links' ) + * + * @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', "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+ +} + +/** + * Retrieve user data based on field. + * + * @since 1.5.0 + * @deprecated 3.0.0 + * @deprecated Use get_the_author_meta() + * @see get_the_author_meta() + */ +function get_profile( $field, $user = false ) { + _deprecated_function( __FUNCTION__, '3.0', 'get_the_author_meta()' ); + if ( $user ) { + $user = get_user_by( 'login', $user ); + $user = $user->ID; + } + return get_the_author_meta( $field, $user ); +} + +/** + * Number of posts user has written. + * + * @since 0.71 + * @deprecated 3.0.0 + * @deprecated Use count_user_posts() + * @see count_user_posts() + */ +function get_usernumposts( $userid ) { + _deprecated_function( __FUNCTION__, '3.0', 'count_user_posts()' ); + return count_user_posts( $userid ); +} + +/** + * Callback used to change %uXXXX to &#YYY; syntax + * + * @since 2.8.0 + * @access private + * @deprecated 3.0.0 + * + * @param array $matches Single Match + * @return string An HTML entity + */ +function funky_javascript_callback($matches) { + return "&#".base_convert($matches[1],16,10).";"; +} + +/** + * Fixes JavaScript bugs in browsers. + * + * Converts unicode characters to HTML numbered entities. + * + * @since 1.5.0 + * @uses $is_macIE + * @uses $is_winIE + * @deprecated 3.0.0 + * + * @param string $text Text to be made safe. + * @return string Fixed text. + */ +function funky_javascript_fix($text) { + _deprecated_function( __FUNCTION__, '3.0' ); + // Fixes for browsers' JavaScript bugs. + global $is_macIE, $is_winIE; + + if ( $is_winIE || $is_macIE ) + $text = preg_replace_callback("/\%u([0-9A-F]{4,4})/", + "funky_javascript_callback", + $text); + + return $text; +} + +/** + * Checks that the taxonomy name exists. + * + * @since 2.3.0 + * @deprecated 3.0.0 + * @deprecated 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', 'taxonomy_exists()' ); + return taxonomy_exists( $taxonomy ); +} + +/** + * Check if Term exists. + * + * @since 2.3.0 + * @deprecated 3.0.0 + * @deprecated 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. + */ +function is_term( $term, $taxonomy = '', $parent = 0 ) { + _deprecated_function( __FUNCTION__, '3.0', 'term_exists()' ); + return term_exists( $term, $taxonomy, $parent ); +} + +/** + * Is the current admin page generated by a plugin? + * + * @since 1.5.0 + * @deprecated 3.1.0 + * @deprecated Use global $plugin_page and/or get_plugin_page_hookname() hooks. + * + * @global $plugin_page + * + * @return bool + */ +function is_plugin_page() { + _deprecated_function( __FUNCTION__, '3.1' ); + + global $plugin_page; + + if ( isset($plugin_page) ) + return true; + + return false; +} + +/** + * Update the categories cache. + * + * This function does not appear to be used anymore or does not appear to be + * 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 + * + * @return bool Always return True + */ +function update_category_cache() { + _deprecated_function( __FUNCTION__, '3.1' ); + + return true; +} + +/** + * Check for PHP timezone support + * + * @since 2.9.0 + * @deprecated 3.2.0 + * + * @return bool + */ +function wp_timezone_supported() { + _deprecated_function( __FUNCTION__, '3.2' ); + + return true; +} + +/** + * Display editor: TinyMCE, HTML, or both. + * + * @since 2.1.0 + * @deprecated 3.3.0 + * @deprecated Use wp_editor() + * @see wp_editor() + * + * @param string $content Textarea content. + * @param string $id Optional, default is 'content'. HTML ID attribute value. + * @param string $prev_id Optional, not used + * @param bool $media_buttons Optional, default is true. Whether to display media buttons. + * @param int $tab_index Optional, not used + */ +function the_editor($content, $id = 'content', $prev_id = 'title', $media_buttons = true, $tab_index = 2, $extended = true) { + _deprecated_function( __FUNCTION__, '3.3', 'wp_editor()' ); + + wp_editor( $content, $id, array( 'media_buttons' => $media_buttons ) ); +} + +/** + * Perform the query to get the $metavalues array(s) needed by _fill_user and _fill_many_users + * + * @since 3.0.0 + * @deprecated 3.3.0 + * + * @param array $ids User ID numbers list. + * @return array of arrays. The array is indexed by user_id, containing $metavalues object arrays. + */ +function get_user_metavalues($ids) { + _deprecated_function( __FUNCTION__, '3.3' ); + + $objects = array(); + + $ids = array_map('intval', $ids); + foreach ( $ids as $id ) + $objects[$id] = array(); + + $metas = update_meta_cache('user', $ids); + + foreach ( $metas as $id => $meta ) { + foreach ( $meta as $key => $metavalues ) { + foreach ( $metavalues as $value ) { + $objects[$id][] = (object)array( 'user_id' => $id, 'meta_key' => $key, 'meta_value' => $value); + } + } + } + + return $objects; +} + +/** + * Sanitize every user field. + * + * 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 + * + * @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' ); + + if ( is_object($user) ) { + if ( !isset($user->ID) ) + $user->ID = 0; + if ( ! ( $user instanceof WP_User ) ) { + $vars = get_object_vars($user); + foreach ( array_keys($vars) as $field ) { + if ( is_string($user->$field) || is_numeric($user->$field) ) + $user->$field = sanitize_user_field($field, $user->$field, $user->ID, $context); + } + } + $user->filter = $context; + } else { + if ( !isset($user['ID']) ) + $user['ID'] = 0; + foreach ( array_keys($user) as $field ) + $user[$field] = sanitize_user_field($field, $user[$field], $user['ID'], $context); + $user['filter'] = $context; + } + + return $user; +} + +/** + * Get boundary post relational link. + * + * Can either be start or end post relational link. + * + * @since 2.8.0 + * @deprecated 3.3.0 + * + * @param string $title Optional. Link title format. + * @param bool $in_same_cat Optional. Whether link should be in a same category. + * @param string $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' ); + + $posts = get_boundary_post($in_same_cat, $excluded_categories, $start); + // 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. + $post = $posts[0]; + + if ( empty($post->post_title) ) + $post->post_title = $start ? __('First Post') : __('Last Post'); + + $date = mysql2date(get_option('date_format'), $post->post_date); + + $title = str_replace('%title', $post->post_title, $title); + $title = str_replace('%date', $date, $title); + $title = apply_filters('the_title', $title, $post->ID); + + $link = $start ? "\n"; + + $boundary = $start ? 'start' : 'end'; + return apply_filters( "{$boundary}_post_rel_link", $link ); +} + +/** + * Display relational link for the first post. + * + * @since 2.8.0 + * @deprecated 3.3.0 + * + * @param string $title Optional. Link title format. + * @param bool $in_same_cat Optional. Whether link should be in a same category. + * @param string $excluded_categories Optional. Excluded categories IDs. + */ +function start_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') { + _deprecated_function( __FUNCTION__, '3.3' ); + + echo get_boundary_post_rel_link($title, $in_same_cat, $excluded_categories, true); +} + +/** + * Get site index relational link. + * + * @since 2.8.0 + * @deprecated 3.3.0 + * + * @return string + */ +function get_index_rel_link() { + _deprecated_function( __FUNCTION__, '3.3' ); + + $link = "\n"; + return apply_filters( "index_rel_link", $link ); +} + +/** + * Display relational link for the site index. + * + * @since 2.8.0 + * @deprecated 3.3.0 + */ +function index_rel_link() { + _deprecated_function( __FUNCTION__, '3.3' ); + + echo get_index_rel_link(); +} + +/** + * Get parent post relational link. + * + * @since 2.8.0 + * @deprecated 3.3.0 + * + * @param string $title Optional. Link title format. + * @return string + */ +function get_parent_post_rel_link($title = '%title') { + _deprecated_function( __FUNCTION__, '3.3' ); + + if ( ! empty( $GLOBALS['post'] ) && ! empty( $GLOBALS['post']->post_parent ) ) + $post = get_post($GLOBALS['post']->post_parent); + + if ( empty($post) ) + return; + + $date = mysql2date(get_option('date_format'), $post->post_date); + + $title = str_replace('%title', $post->post_title, $title); + $title = str_replace('%date', $date, $title); + $title = apply_filters('the_title', $title, $post->ID); + + $link = "\n"; + + return apply_filters( "parent_post_rel_link", $link ); +} + +/** + * Display relational link for parent item + * + * @since 2.8.0 + * @deprecated 3.3.0 + */ +function parent_post_rel_link($title = '%title') { + _deprecated_function( __FUNCTION__, '3.3' ); + + echo get_parent_post_rel_link($title); +} + +/** + * Add the "Dashboard"/"Visit Site" menu. + * + * @since 3.2.0 + * @deprecated 3.3.0 + */ +function wp_admin_bar_dashboard_view_site_menu( $wp_admin_bar ) { + _deprecated_function( __FUNCTION__, '3.3' ); + + $user_id = get_current_user_id(); + + if ( 0 != $user_id ) { + if ( is_admin() ) + $wp_admin_bar->add_menu( array( 'id' => 'view-site', 'title' => __( 'Visit Site' ), 'href' => home_url() ) ); + elseif ( is_multisite() ) + $wp_admin_bar->add_menu( array( 'id' => 'dashboard', 'title' => __( 'Dashboard' ), 'href' => get_dashboard_url( $user_id ) ) ); + else + $wp_admin_bar->add_menu( array( 'id' => 'dashboard', 'title' => __( 'Dashboard' ), 'href' => admin_url() ) ); + } +} + +/** + * Checks if the current user belong to a given blog. + * + * @since MU + * @deprecated 3.3.0 + * @deprecated Use is_user_member_of_blog() + * @see is_user_member_of_blog() + * + * @param int $blog_id Blog 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', 'is_user_member_of_blog()' ); + + return is_user_member_of_blog( get_current_user_id(), $blog_id ); +} + +/** + * Open the file handle for debugging. + * + * @since 0.71 + * @deprecated Use error_log() + * @link http://www.php.net/manual/en/function.error-log.php + * @deprecated 3.4.0 + */ +function debug_fopen( $filename, $mode ) { + _deprecated_function( __FUNCTION__, 'error_log()' ); + return false; +} + +/** + * Write contents to the file used for debugging. + * + * @since 0.71 + * @deprecated Use error_log() instead. + * @link http://www.php.net/manual/en/function.error-log.php + * @deprecated 3.4.0 + */ +function debug_fwrite( $fp, $string ) { + _deprecated_function( __FUNCTION__, 'error_log()' ); + if ( ! empty( $GLOBALS['debug'] ) ) + error_log( $string ); +} + +/** + * Close the debugging file handle. + * + * @since 0.71 + * @deprecated Use error_log() + * @link http://www.php.net/manual/en/function.error-log.php + * @deprecated 3.4.0 + */ +function debug_fclose( $fp ) { + _deprecated_function( __FUNCTION__, 'error_log()' ); +} + +/** + * Retrieve list of themes with theme data in theme directory. + * + * The theme is broken, if it doesn't have a parent theme and is missing either + * style.css and, or index.php. If the theme has a parent theme then it is + * broken, if it is missing style.css; index.php is optional. + * + * @since 1.5.0 + * @deprecated 3.4.0 + * @deprecated Use wp_get_themes() + * @see wp_get_themes() + * + * @return array Theme list with theme data. + */ +function get_themes() { + _deprecated_function( __FUNCTION__, '3.4', 'wp_get_themes()' ); + + global $wp_themes; + if ( isset( $wp_themes ) ) + return $wp_themes; + + $themes = wp_get_themes(); + $wp_themes = array(); + + foreach ( $themes as $theme ) { + $name = $theme->get('Name'); + if ( isset( $wp_themes[ $name ] ) ) + $wp_themes[ $name . '/' . $theme->get_stylesheet() ] = $theme; + else + $wp_themes[ $name ] = $theme; + } + + return $wp_themes; +} + +/** + * Retrieve theme data. + * + * @since 1.5.0 + * @deprecated 3.4.0 + * @deprecated Use wp_get_theme() + * @see wp_get_theme() + * + * @param string $theme Theme name. + * @return array|null Null, if theme name does not exist. Theme data, if exists. + */ +function get_theme( $theme ) { + _deprecated_function( __FUNCTION__, '3.4', 'wp_get_theme( $stylesheet )' ); + + $themes = get_themes(); + if ( is_array( $themes ) && array_key_exists( $theme, $themes ) ) + return $themes[ $theme ]; + return null; +} + +/** + * Retrieve current theme name. + * + * @since 1.5.0 + * @deprecated 3.4.0 + * @deprecated Use (string) wp_get_theme() + * @see wp_get_theme() + * + * @return string + */ +function get_current_theme() { + _deprecated_function( __FUNCTION__, '3.4', 'wp_get_theme()' ); + + if ( $theme = get_option( 'current_theme' ) ) + return $theme; + + return wp_get_theme()->get('Name'); +} + +/** + * Accepts matches array from preg_replace_callback in wpautop() or a string. + * + * Ensures that the contents of a `
      ...
      ` HTML block are not + * converted into paragraphs or line-breaks. + * + * @since 1.2.0 + * @deprecated 3.4.0 + * + * @param array|string $matches The array or string + * @return string The pre block without paragraph/line-break conversion. + */ +function clean_pre($matches) { + _deprecated_function( __FUNCTION__, '3.4' ); + + if ( is_array($matches) ) + $text = $matches[1] . $matches[2] . ""; + else + $text = $matches; + + $text = str_replace(array('
      ', '
      ', '
      '), array('', '', ''), $text); + $text = str_replace('

      ', "\n", $text); + $text = str_replace('

      ', '', $text); + + return $text; +} + + +/** + * Add callbacks for image header display. + * + * @since 2.1.0 + * @deprecated 3.4.0 + * @deprecated Use add_theme_support('custom-header', $args) + * @see add_theme_support() + * + * @param callback $wp_head_callback Call on 'wp_head' action. + * @param callback $admin_head_callback Call on custom header administration screen. + * @param callback $admin_preview_callback Output a custom header image div on the custom header administration screen. Optional. + */ +function add_custom_image_header( $wp_head_callback, $admin_head_callback, $admin_preview_callback = '' ) { + _deprecated_function( __FUNCTION__, '3.4', 'add_theme_support( \'custom-header\', $args )' ); + $args = array( + 'wp-head-callback' => $wp_head_callback, + 'admin-head-callback' => $admin_head_callback, + ); + if ( $admin_preview_callback ) + $args['admin-preview-callback'] = $admin_preview_callback; + return add_theme_support( 'custom-header', $args ); +} + +/** + * Remove image header support. + * + * @since 3.1.0 + * @deprecated 3.4.0 + * @deprecated Use remove_theme_support('custom-header') + * @see remove_theme_support() + * + * @return null|bool Whether support was removed. + */ +function remove_custom_image_header() { + _deprecated_function( __FUNCTION__, '3.4', 'remove_theme_support( \'custom-header\' )' ); + return remove_theme_support( 'custom-header' ); +} + +/** + * Add callbacks for background image display. + * + * @since 3.0.0 + * @deprecated 3.4.0 + * @deprecated Use add_theme_support('custom-background, $args) + * @see add_theme_support() + * + * @param callback $wp_head_callback Call on 'wp_head' action. + * @param callback $admin_head_callback Call on custom background administration screen. + * @param callback $admin_preview_callback Output a custom background image div on the custom background administration screen. Optional. + */ +function add_custom_background( $wp_head_callback = '', $admin_head_callback = '', $admin_preview_callback = '' ) { + _deprecated_function( __FUNCTION__, '3.4', 'add_theme_support( \'custom-background\', $args )' ); + $args = array(); + if ( $wp_head_callback ) + $args['wp-head-callback'] = $wp_head_callback; + if ( $admin_head_callback ) + $args['admin-head-callback'] = $admin_head_callback; + if ( $admin_preview_callback ) + $args['admin-preview-callback'] = $admin_preview_callback; + return add_theme_support( 'custom-background', $args ); +} + +/** + * Remove custom background support. + * + * @since 3.1.0 + * @see add_custom_background() + * + * @return null|bool Whether support was removed. + */ +function remove_custom_background() { + _deprecated_function( __FUNCTION__, '3.4', 'remove_theme_support( \'custom-background\' )' ); + return remove_theme_support( 'custom-background' ); +} + +/** + * Retrieve theme data from parsed theme file. + * + * @since 1.5.0 + * @deprecated 3.4.0 + * @deprecated Use wp_get_theme() + * @see wp_get_theme() + * + * @param string $theme_file Theme file path. + * @return array Theme data. + */ +function get_theme_data( $theme_file ) { + _deprecated_function( __FUNCTION__, '3.4', 'wp_get_theme()' ); + $theme = new WP_Theme( basename( dirname( $theme_file ) ), dirname( dirname( $theme_file ) ) ); + + $theme_data = array( + 'Name' => $theme->get('Name'), + 'URI' => $theme->display('ThemeURI', true, false), + 'Description' => $theme->display('Description', true, false), + 'Author' => $theme->display('Author', true, false), + 'AuthorURI' => $theme->display('AuthorURI', true, false), + 'Version' => $theme->get('Version'), + 'Template' => $theme->get('Template'), + 'Status' => $theme->get('Status'), + 'Tags' => $theme->get('Tags'), + 'Title' => $theme->get('Name'), + 'AuthorName' => $theme->get('Author'), + ); + + foreach ( apply_filters( 'extra_theme_headers', array() ) as $extra_header ) { + if ( ! isset( $theme_data[ $extra_header ] ) ) + $theme_data[ $extra_header ] = $theme->get( $extra_header ); + } + + return $theme_data; +} + +/** + * Alias of update_post_cache(). + * + * @see update_post_cache() Posts and pages are the same, alias is intentional + * + * @since 1.5.1 + * @deprecated 3.4.0 + * + * @param array $pages list of page objects + */ +function update_page_cache( &$pages ) { + _deprecated_function( __FUNCTION__, '3.4', 'update_post_cache()' ); + + update_post_cache( $pages ); +} + +/** + * Will clean the page in the cache. + * + * Clean (read: delete) page from cache that matches $id. Will also clean cache + * associated with 'all_page_ids' and 'get_pages'. + * + * @since 2.0.0 + * @deprecated 3.4.0 + * + * @param int $id Page ID to clean + */ +function clean_page_cache( $id ) { + _deprecated_function( __FUNCTION__, '3.4', 'clean_post_cache()' ); + + clean_post_cache( $id ); +} + +/** + * Retrieve nonce action "Are you sure" message. + * + * Deprecated in 3.4.1 and 3.5.0. Backported to 3.3.3. + * + * @since 2.0.4 + * @deprecated 3.4.1 + * @deprecated 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()' ); + 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 + * @deprecated 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', 'post_class()' ); + if ( is_sticky( $post_id ) ) + echo ' sticky'; +} + +/** + * Retrieve post ancestors. + * + * 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 + * @see get_post_ancestors() + */ +function _get_post_ancestors( &$post ) { + _deprecated_function( __FUNCTION__, '3.5' ); +} + +/** + * Load an image from a string, if PHP supports it. + * + * @since 2.1.0 + * @deprecated 3.5.0 + * @see wp_get_image_editor() + * + * @param string $file Filename of the image to load. + * @return resource The resulting image resource on success, Error string on failure. + */ +function wp_load_image( $file ) { + _deprecated_function( __FUNCTION__, '3.5', 'wp_get_image_editor()' ); + + if ( is_numeric( $file ) ) + $file = get_attached_file( $file ); + + if ( ! is_file( $file ) ) + return sprintf(__('File “%s” doesn’t exist?'), $file); + + if ( ! function_exists('imagecreatefromstring') ) + return __('The GD image library is not installed.'); + + // Set artificially high because GD uses uncompressed images in memory + @ini_set( 'memory_limit', apply_filters( 'image_memory_limit', WP_MAX_MEMORY_LIMIT ) ); + $image = imagecreatefromstring( file_get_contents( $file ) ); + + if ( !is_resource( $image ) ) + return sprintf(__('File “%s” is not an image.'), $file); + + return $image; +} + +/** + * Scale down an image to fit a particular size and save a new copy of the image. + * + * The PNG transparency will be preserved using the function, as well as the + * image type. If the file going in is PNG, then the resized image is going to + * 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 + * downgraded, not actual defects), but of your PHP version. + * + * @since 2.5.0 + * @deprecated 3.5.0 + * @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. + * @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', 'wp_get_image_editor()' ); + + $editor = wp_get_image_editor( $file ); + if ( is_wp_error( $editor ) ) + return $editor; + $editor->set_quality( $jpeg_quality ); + + $resized = $editor->resize( $max_w, $max_h, $crop ); + if ( is_wp_error( $resized ) ) + return $resized; + + $dest_file = $editor->generate_filename( $suffix, $dest_path ); + $saved = $editor->save( $dest_file ); + + if ( is_wp_error( $saved ) ) + return $saved; + + return $dest_file; +} + +/** + * Retrieve a single post, based on post ID. + * + * Has categories in 'post_category' property or key. Has tags in 'tags_input' + * property or key. + * + * @since 1.0.0 + * @deprecated 3.5.0 + * @see get_post() + * + * @param int $postid Post ID. + * @param string $mode How to return result, either OBJECT, ARRAY_N, or ARRAY_A. + * @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', 'get_post()' ); + return get_post( $postid, $mode ); +} + +/** + * Check that the user login name and password is correct. + * + * @since 0.71 + * @deprecated 3.5.0 + * @deprecated Use wp_authenticate() + * @see wp_authenticate() + * + * @param string $user_login User name. + * @param string $user_pass User password. + * @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', 'wp_authenticate()' ); + $user = wp_authenticate( $user_login, $user_pass ); + if ( is_wp_error( $user ) ) + return false; + + return true; +} + +/** + * Callback formerly fired on the save_post hook. No longer needed. + * + * @since 2.3.0 + * @deprecated 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 + * @see wp_image_editor_supports() + * + * @param string $mime_type + * @return bool + */ +function gd_edit_image_support($mime_type) { + _deprecated_function( __FUNCTION__, '3.5', 'wp_image_editor_supports()' ); + + if ( function_exists('imagetypes') ) { + switch( $mime_type ) { + case 'image/jpeg': + return (imagetypes() & IMG_JPG) != 0; + case 'image/png': + return (imagetypes() & IMG_PNG) != 0; + case 'image/gif': + return (imagetypes() & IMG_GIF) != 0; + } + } else { + switch( $mime_type ) { + case 'image/jpeg': + return function_exists('imagecreatefromjpeg'); + case 'image/png': + return function_exists('imagecreatefrompng'); + case 'image/gif': + return function_exists('imagecreatefromgif'); + } + } + return false; +} + +/** + * Converts an integer byte value to a shorthand byte value. + * + * @since 2.3.0 + * @deprecated 3.6.0 + * @deprecated Use 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', 'size_format()' ); + + $units = array( 0 => 'B', 1 => 'kB', 2 => 'MB', 3 => 'GB', 4 => 'TB' ); + $log = log( $bytes, 1024 ); + $power = (int) $log; + $size = pow( 1024, $log - $power ); + + if ( ! is_nan( $size ) && array_key_exists( $power, $units ) ) { + $unit = $units[ $power ]; + } else { + $size = $bytes; + $unit = $units[0]; + } + + return $size . $unit; +} + +/** + * Formerly used internally to tidy up the search terms. + * + * @access private + * @since 2.9.0 + * @deprecated 3.7.0 + */ +function _search_terms_tidy( $t ) { + _deprecated_function( __FUNCTION__, '3.7' ); + return trim( $t, "\"'\n\r " ); +} + +/** + * Determine if TinyMCE is available. + * + * Checks to see if the user has deleted the tinymce files to slim down + * their WordPress install. + * + * @since 2.1.0 + * @deprecated 3.9.0 + * + * @return bool Whether TinyMCE exists. + */ +function rich_edit_exists() { + global $wp_rich_edit_exists; + _deprecated_function( __FUNCTION__, '3.9' ); + + if ( ! isset( $wp_rich_edit_exists ) ) + $wp_rich_edit_exists = file_exists( ABSPATH . WPINC . '/js/tinymce/tinymce.js' ); + + return $wp_rich_edit_exists; +} + +/** + * Old callback for tag link tooltips. + * + * @since 2.7.0 + * @deprecated 3.9.0 + * @access private + */ +function default_topic_count_text( $count ) { + return $count; +} + +/** + * Formerly used to escape strings before inserting into the DB. + * + * Has not performed this function for many, many years. Use wpdb::prepare() instead. + * + * @since 0.71 + * @deprecated 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' ); + 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 + * @deprecated Use 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', '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 + * the URL using https as the scheme. + * + * @since 2.5.0 + * @deprecated 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' ); + + $response = wp_remote_get( set_url_scheme( $url, 'https' ) ); + + if ( !is_wp_error( $response ) ) { + $status = wp_remote_retrieve_response_code( $response ); + if ( 200 == $status || 401 == $status ) { + return true; + } + } + + return false; +} + +/** + * Start preview theme output buffer. + * + * Will only perform task if the user has permissions and template and preview + * query variables exist. + * + * @since 2.6.0 + * @deprecated 4.3.0 + */ +function preview_theme() { + _deprecated_function( __FUNCTION__, '4.3' ); +} + +/** + * Private function to modify the current template when previewing a theme + * + * @since 2.9.0 + * @deprecated 4.3.0 + * @access private + * + * @return string + */ +function _preview_theme_template_filter() { + _deprecated_function( __FUNCTION__, '4.3' ); + return ''; +} + +/** + * Private function to modify the current stylesheet when previewing a theme + * + * @since 2.9.0 + * @deprecated 4.3.0 + * @access private + * + * @return string + */ +function _preview_theme_stylesheet_filter() { + _deprecated_function( __FUNCTION__, '4.3' ); + return ''; +} + +/** + * Callback function for ob_start() to capture all links in the theme. + * + * @since 2.6.0 + * @deprecated 4.3.0 + * @access private + * + * @param string $content + * @return string + */ +function preview_theme_ob_filter( $content ) { + _deprecated_function( __FUNCTION__, '4.3' ); + return $content; +} + +/** + * Manipulates preview theme links in order to control and maintain location. + * + * Callback function for preg_replace_callback() to accept and filter matches. + * + * @since 2.6.0 + * @deprecated 4.3.0 + * @access private + * + * @param array $matches + * @return string + */ +function preview_theme_ob_filter_callback( $matches ) { + _deprecated_function( __FUNCTION__, '4.3' ); + return ''; +} + +/** + * Formats text for the rich text editor. + * + * The filter 'richedit_pre' is applied here. If $text is empty the filter will + * be applied to an empty string. + * + * @since 2.0.0 + * @deprecated 4.3.0 + * + * @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', 'format_for_editor()' ); + + if ( empty( $text ) ) { + /** + * Filter text returned for the rich text editor. + * + * This filter is first evaluated, and the value returned, if an empty string + * is passed to wp_richedit_pre(). If an empty string is passed, it results + * in a break tag and line feed. + * + * 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 + * + * @param string $output Text for the rich text editor. + */ + return apply_filters( 'richedit_pre', '' ); + } + + $output = convert_chars($text); + $output = wpautop($output); + $output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) ); + + /** This filter is documented in wp-includes/deprecated.php */ + return apply_filters( 'richedit_pre', $output ); +} + +/** + * Formats text for the HTML editor. + * + * Unless $output is empty it will pass through htmlspecialchars before the + * 'htmledit_pre' filter is applied. + * + * @since 2.5.0 + * @deprecated 4.3.0 + * + * @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', 'format_for_editor()' ); + + if ( !empty($output) ) + $output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) ); // convert only < > & + + /** + * Filter the text before it is formatted for the HTML editor. + * + * @since 2.5.0 + * @deprecated 4.3.0 + * + * @param string $output The HTML-formatted text. + */ + return apply_filters( 'htmledit_pre', $output ); +} + diff --git a/wp-includes/feed-atom-comments.php b/wp-includes/feed-atom-comments.php new file mode 100644 index 0000000000..785a0c247a --- /dev/null +++ b/wp-includes/feed-atom-comments.php @@ -0,0 +1,115 @@ +'; + +/** This action is documented in wp-includes/feed-rss2.php */ +do_action( 'rss_tag_pre', 'atom-comments' ); +?> + +> + <?php + if ( is_singular() ) + printf( ent2ncr( __( 'Comments on %s' ) ), get_the_title_rss() ); + elseif ( is_search() ) + printf( ent2ncr( __( 'Comments for %1$s searching on %2$s' ) ), get_bloginfo_rss( 'name' ), get_search_query() ); + else + printf( ent2ncr( __( 'Comments for %s' ) ), get_bloginfo_rss( 'name' ) . get_wp_title_rss() ); + ?> + + + + + + + + + + + + + + + + + + +comment_post_ID ); +?> + + <?php + if ( !is_singular() ) { + $title = get_the_title($comment_post->ID); + /** This filter is documented in wp-includes/feed.php */ + $title = apply_filters( 'the_title_rss', $title ); + printf(ent2ncr(__('Comment on %1$s by %2$s')), $title, get_comment_author_rss()); + } else { + printf(ent2ncr(__('By: %s')), get_comment_author_rss()); + } + ?> + + + + + ' . get_comment_author_url() . ''; ?> + + + + + + + + ]]> + + ]]> +comment_parent == 0 ) : // This comment is top level ?> + +comment_parent); + // The rel attribute below and the id tag above should be GUIDs, but WP doesn't create them for comments (unlike posts). Either way, it's more important that they both use the same system +?> + +comment_ID, $comment_post->ID ); +?> + + + diff --git a/wp-includes/feed-atom.php b/wp-includes/feed-atom.php new file mode 100644 index 0000000000..ae4cd7976c --- /dev/null +++ b/wp-includes/feed-atom.php @@ -0,0 +1,87 @@ +'; + +/** This action is documented in wp-includes/feed-rss2.php */ +do_action( 'rss_tag_pre', 'atom' ); +?> + + > + <?php bloginfo_rss('name'); wp_title_rss(); ?> + + + + + + + + + + + + + + + + + <![CDATA[<?php the_title_rss() ?>]]> + + + + + + ]]> + + ]]> + + + + + + + + diff --git a/wp-includes/feed-rdf.php b/wp-includes/feed-rdf.php new file mode 100644 index 0000000000..1e8327b0dc --- /dev/null +++ b/wp-includes/feed-rdf.php @@ -0,0 +1,85 @@ +'; + +/** This action is documented in wp-includes/feed-rss2.php */ +do_action( 'rss_tag_pre', 'rdf' ); +?> + +> +"> + <?php bloginfo_rss('name'); wp_title_rss(); ?> + + + + + + 2000-01-01T12:00+00:00 + + + + + + + + + + + + <?php the_title_rss() ?> + + post_date_gmt, false); ?> + ]]> + + + ]]> + + ]]> + ]]> + + + + + diff --git a/wp-includes/feed-rss.php b/wp-includes/feed-rss.php new file mode 100644 index 0000000000..a355a8af40 --- /dev/null +++ b/wp-includes/feed-rss.php @@ -0,0 +1,46 @@ +'; ?> + + + <?php bloginfo_rss('name'); wp_title_rss(); ?> + + + + http://backend.userland.com/rss092 + + + + + + + <?php the_title_rss() ?> + ]]> + + + + + + diff --git a/wp-includes/feed-rss2-comments.php b/wp-includes/feed-rss2-comments.php new file mode 100644 index 0000000000..c8e8d498ea --- /dev/null +++ b/wp-includes/feed-rss2-comments.php @@ -0,0 +1,101 @@ +'; + +/** This action is documented in wp-includes/feed-rss2.php */ +do_action( 'rss_tag_pre', 'rss2-comments' ); +?> + + + +> + + <?php + if ( is_singular() ) + printf( ent2ncr( __( 'Comments on: %s' ) ), get_the_title_rss() ); + elseif ( is_search() ) + printf( ent2ncr( __( 'Comments for %1$s searching on %2$s' ) ), get_bloginfo_rss( 'name' ), get_search_query() ); + else + printf( ent2ncr( __( 'Comments for %s' ) ), get_bloginfo_rss( 'name' ) . get_wp_title_rss() ); + ?> + + + + + + + comment_post_ID ); + ?> + + <?php + if ( !is_singular() ) { + $title = get_the_title($comment_post->ID); + /** This filter is documented in wp-includes/feed.php */ + $title = apply_filters( 'the_title_rss', $title ); + printf(ent2ncr(__('Comment on %1$s by %2$s')), $title, get_comment_author_rss()); + } else { + printf(ent2ncr(__('By: %s')), get_comment_author_rss()); + } + ?> + + ]]> + + + + + ]]> + + ]]> + ]]> +comment_ID The ID of the comment being displayed. + * @param int $comment_post->ID The ID of the post the comment is connected to. + */ + do_action( 'commentrss2_item', $comment->comment_ID, $comment_post->ID ); +?> + + + + diff --git a/wp-includes/feed-rss2.php b/wp-includes/feed-rss2.php new file mode 100644 index 0000000000..c82fc63c56 --- /dev/null +++ b/wp-includes/feed-rss2.php @@ -0,0 +1,117 @@ +'; + +/** + * Fires between the xml and rss tags in a feed. + * + * @since 4.0.0 + * + * @param string $context Type of feed. Possible values include 'rss2', 'rss2-comments', + * 'rdf', 'atom', and 'atom-comments'. + */ +do_action( 'rss_tag_pre', 'rss2' ); +?> + +> + + + <?php bloginfo_rss('name'); wp_title_rss(); ?> + + + + + + + + + + <?php the_title_rss() ?> + + + + ]]> + + + + + ]]> + + ]]> + + 0 ) : ?> + ]]> + + ]]> + + + + + + + + + + diff --git a/wp-includes/feed.php b/wp-includes/feed.php new file mode 100644 index 0000000000..f40f41a6ad --- /dev/null +++ b/wp-includes/feed.php @@ -0,0 +1,690 @@ +get_error_message(); + } + + if ( $title && $sep && ' ' !== substr( $title, 0, 1 ) ) { + $title = " $sep " . $title; + } + + /** + * Filter the blog title for use as the feed title. + * + * @since 2.2.0 + * + * @param string $title The current blog title. + * @param string $sep Separator used by wp_title(). + */ + $title = apply_filters( 'get_wp_title_rss', $title, $sep ); + return $title; +} + +/** + * Display the blog title for display of the feed title. + * + * @since 2.2.0 + * @see wp_title() $sep parameter usage. + * + * @param string $sep Optional. + */ +function wp_title_rss( $sep = '»' ) { + /** + * Filter the blog title for display of the feed title. + * + * @since 2.2.0 + * + * @see get_wp_title_rss() + * + * @param string $wp_title The current blog title. + * @param string $sep Separator used by wp_title(). + */ + echo apply_filters( 'wp_title_rss', get_wp_title_rss( $sep ), $sep ); +} + +/** + * Retrieve the current post title for the feed. + * + * @since 2.0.0 + * + * @return string Current post title. + */ +function get_the_title_rss() { + $title = get_the_title(); + /** + * Filter the post title for use in a feed. + * + * @since 1.2.0 + * + * @param string $title The current post title. + */ + $title = apply_filters( 'the_title_rss', $title ); + return $title; +} + +/** + * Display the post title in the feed. + * + * @since 0.71 + */ +function the_title_rss() { + echo get_the_title_rss(); +} + +/** + * Retrieve the post content for feeds. + * + * @since 2.9.0 + * @see get_the_content() + * + * @param string $feed_type The type of feed. rss2 | atom | rss | rdf + * @return string The filtered content. + */ +function get_the_content_feed($feed_type = null) { + if ( !$feed_type ) + $feed_type = get_default_feed(); + + /** This filter is documented in wp-includes/post-template.php */ + $content = apply_filters( 'the_content', get_the_content() ); + $content = str_replace(']]>', ']]>', $content); + /** + * Filter the post content for use in feeds. + * + * @since 2.9.0 + * + * @param string $content The current post content. + * @param string $feed_type Type of feed. Possible values include 'rss2', 'atom'. + * Default 'rss2'. + */ + return apply_filters( 'the_content_feed', $content, $feed_type ); +} + +/** + * Display the post content for feeds. + * + * @since 2.9.0 + * + * @param string $feed_type The type of feed. rss2 | atom | rss | rdf + */ +function the_content_feed($feed_type = null) { + echo get_the_content_feed($feed_type); +} + +/** + * Display the post excerpt for the feed. + * + * @since 0.71 + */ +function the_excerpt_rss() { + $output = get_the_excerpt(); + /** + * Filter the post excerpt for a feed. + * + * @since 1.2.0 + * + * @param string $output The current post excerpt. + */ + echo apply_filters( 'the_excerpt_rss', $output ); +} + +/** + * Display the permalink to the post for use in feeds. + * + * @since 2.3.0 + */ +function the_permalink_rss() { + /** + * Filter the permalink to the post for use in feeds. + * + * @since 2.3.0 + * + * @param string $post_permalink The current post permalink. + */ + echo esc_url( apply_filters( 'the_permalink_rss', get_permalink() ) ); +} + +/** + * Outputs the link to the comments for the current post in an xml safe way + * + * @since 3.0.0 + * @return none + */ +function comments_link_feed() { + /** + * Filter the comments permalink for the current post. + * + * @since 3.6.0 + * + * @param string $comment_permalink The current comment permalink with + * '#comments' appended. + */ + echo esc_url( apply_filters( 'comments_link_feed', get_comments_link() ) ); +} + +/** + * Display the feed GUID for the current comment. + * + * @since 2.5.0 + * + * @param int|object $comment_id Optional comment object or id. Defaults to global comment object. + */ +function comment_guid($comment_id = null) { + echo esc_url( get_comment_guid($comment_id) ); +} + +/** + * Retrieve the feed GUID for the current comment. + * + * @since 2.5.0 + * + * @param int|object $comment_id Optional comment object or id. Defaults to global comment object. + * @return false|string false on failure or guid for comment on success. + */ +function get_comment_guid($comment_id = null) { + $comment = get_comment($comment_id); + + if ( !is_object($comment) ) + return false; + + return get_the_guid($comment->comment_post_ID) . '#comment-' . $comment->comment_ID; +} + +/** + * Display the link to the comments. + * + * @since 1.5.0 + */ +function comment_link() { + /** + * Filter the current comment's permalink. + * + * @since 3.6.0 + * + * @see get_comment_link() + * + * @param string $comment_permalink The current comment permalink. + */ + echo esc_url( apply_filters( 'comment_link', get_comment_link() ) ); +} + +/** + * Retrieve the current comment author for use in the feeds. + * + * @since 2.0.0 + * + * @return string Comment Author + */ +function get_comment_author_rss() { + /** + * Filter the current comment author for use in a feed. + * + * @since 1.5.0 + * + * @see get_comment_author() + * + * @param string $comment_author The current comment author. + */ + return apply_filters( 'comment_author_rss', get_comment_author() ); +} + +/** + * Display the current comment author in the feed. + * + * @since 1.0.0 + */ +function comment_author_rss() { + echo get_comment_author_rss(); +} + +/** + * Display the current comment content for use in the feeds. + * + * @since 1.0.0 + */ +function comment_text_rss() { + $comment_text = get_comment_text(); + /** + * Filter the current comment content for use in a feed. + * + * @since 1.5.0 + * + * @param string $comment_text The content of the current comment. + */ + $comment_text = apply_filters( 'comment_text_rss', $comment_text ); + echo $comment_text; +} + +/** + * Retrieve all of the post categories, formatted for use in feeds. + * + * All of the categories for the current post in the feed loop, will be + * retrieved and have feed markup added, so that they can easily be added to the + * RSS2, Atom, or RSS1 and RSS0.91 RDF feeds. + * + * @since 2.1.0 + * + * @param string $type Optional, default is the type returned by get_default_feed(). + * @return string All of the post categories for displaying in the feed. + */ +function get_the_category_rss($type = null) { + if ( empty($type) ) + $type = get_default_feed(); + $categories = get_the_category(); + $tags = get_the_tags(); + $the_list = ''; + $cat_names = array(); + + $filter = 'rss'; + if ( 'atom' == $type ) + $filter = 'raw'; + + if ( !empty($categories) ) foreach ( (array) $categories as $category ) { + $cat_names[] = sanitize_term_field('name', $category->name, $category->term_id, 'category', $filter); + } + + if ( !empty($tags) ) foreach ( (array) $tags as $tag ) { + $cat_names[] = sanitize_term_field('name', $tag->name, $tag->term_id, 'post_tag', $filter); + } + + $cat_names = array_unique($cat_names); + + foreach ( $cat_names as $cat_name ) { + if ( 'rdf' == $type ) + $the_list .= "\t\t\n"; + elseif ( 'atom' == $type ) + $the_list .= sprintf( '', esc_attr( get_bloginfo_rss( 'url' ) ), esc_attr( $cat_name ) ); + else + $the_list .= "\t\t\n"; + } + + /** + * Filter all of the post categories for display in a feed. + * + * @since 1.2.0 + * + * @param string $the_list All of the RSS post categories. + * @param string $type Type of feed. Possible values include 'rss2', 'atom'. + * Default 'rss2'. + */ + return apply_filters( 'the_category_rss', $the_list, $type ); +} + +/** + * Display the post categories in the feed. + * + * @since 0.71 + * @see get_the_category_rss() For better explanation. + * + * @param string $type Optional, default is the type returned by get_default_feed(). + */ +function the_category_rss($type = null) { + echo get_the_category_rss($type); +} + +/** + * Display the HTML type based on the blog setting. + * + * The two possible values are either 'xhtml' or 'html'. + * + * @since 2.2.0 + */ +function html_type_rss() { + $type = get_bloginfo('html_type'); + if (strpos($type, 'xhtml') !== false) + $type = 'xhtml'; + else + $type = 'html'; + echo $type; +} + +/** + * Display the rss enclosure for the current post. + * + * Uses the global $post to check whether the post requires a password and if + * the user has the password for the post. If not then it will return before + * displaying. + * + * Also uses the function get_post_custom() to get the post's 'enclosure' + * metadata field and parses the value to display the enclosure(s). The + * enclosure(s) consist of enclosure HTML tag(s) with a URI and other + * attributes. + * + * @since 1.5.0 + */ +function rss_enclosure() { + if ( post_password_required() ) + return; + + foreach ( (array) get_post_custom() as $key => $val) { + if ($key == 'enclosure') { + foreach ( (array) $val as $enc ) { + $enclosure = explode("\n", $enc); + + // only get the first element, e.g. audio/mpeg from 'audio/mpeg mpga mp2 mp3' + $t = preg_split('/[ \t]/', trim($enclosure[2]) ); + $type = $t[0]; + + /** + * Filter the RSS enclosure HTML link tag for the current post. + * + * @since 2.2.0 + * + * @param string $html_link_tag The HTML link tag with a URI and other attributes. + */ + echo apply_filters( 'rss_enclosure', '' . "\n" ); + } + } + } +} + +/** + * Display the atom enclosure for the current post. + * + * Uses the global $post to check whether the post requires a password and if + * the user has the password for the post. If not then it will return before + * displaying. + * + * Also uses the function get_post_custom() to get the post's 'enclosure' + * metadata field and parses the value to display the enclosure(s). The + * enclosure(s) consist of link HTML tag(s) with a URI and other attributes. + * + * @since 2.2.0 + */ +function atom_enclosure() { + if ( post_password_required() ) + return; + + foreach ( (array) get_post_custom() as $key => $val ) { + if ($key == 'enclosure') { + foreach ( (array) $val as $enc ) { + $enclosure = explode("\n", $enc); + /** + * Filter the atom enclosure HTML link tag for the current post. + * + * @since 2.2.0 + * + * @param string $html_link_tag The HTML link tag with a URI and other attributes. + */ + echo apply_filters( 'atom_enclosure', '' . "\n" ); + } + } + } +} + +/** + * Determine the type of a string of data with the data formatted. + * + * Tell whether the type is text, html, or xhtml, per RFC 4287 section 3.1. + * + * In the case of WordPress, text is defined as containing no markup, + * xhtml is defined as "well formed", and html as tag soup (i.e., the rest). + * + * Container div tags are added to xhtml values, per section 3.1.1.3. + * + * @link http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.3.1 + * + * @since 2.5.0 + * + * @param string $data Input string + * @return array array(type, value) + */ +function prep_atom_text_construct($data) { + if (strpos($data, '<') === false && strpos($data, '&') === false) { + return array('text', $data); + } + + $parser = xml_parser_create(); + xml_parse($parser, '
      ' . $data . '
      ', true); + $code = xml_get_error_code($parser); + xml_parser_free($parser); + + if (!$code) { + if (strpos($data, '<') === false) { + return array('text', $data); + } else { + $data = "
      $data
      "; + return array('xhtml', $data); + } + } + + if (strpos($data, ']]>') === false) { + return array('html', ""); + } else { + return array('html', htmlspecialchars($data)); + } +} + +/** + * Displays Site Icon in atom feeds. + * + * @since 4.3.0 + * + * @see get_site_icon_url() + */ +function atom_site_icon() { + $url = get_site_icon_url( 32 ); + if ( $url ) { + echo "$url\n"; + } +} + +/** + * Displays Site Icon in RSS2. + * + * @since 4.3.0 + */ +function rss2_site_icon() { + $rss_title = get_wp_title_rss(); + if ( empty( $rss_title ) ) { + $rss_title = get_bloginfo_rss( 'name' ); + } + + $url = get_site_icon_url( 32 ); + if ( $url ) { + echo ' + + ' . convert_chars( $url ) . ' + ' . $rss_title . ' + ' . get_bloginfo_rss( 'url' ) . ' + 32 + 32 + ' . "\n"; + } +} + +/** + * Display the link for the currently displayed feed in a XSS safe way. + * + * Generate a correct link for the atom:self element. + * + * @since 2.5.0 + */ +function self_link() { + $host = @parse_url(home_url()); + /** + * Filter the current feed URL. + * + * @since 3.6.0 + * + * @see set_url_scheme() + * @see wp_unslash() + * + * @param string $feed_link The link for the feed with set URL scheme. + */ + echo esc_url( apply_filters( 'self_link', set_url_scheme( 'http://' . $host['host'] . wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) ); +} + +/** + * Return the content type for specified feed type. + * + * @since 2.8.0 + */ +function feed_content_type( $type = '' ) { + if ( empty($type) ) + $type = get_default_feed(); + + $types = array( + 'rss' => 'application/rss+xml', + 'rss2' => 'application/rss+xml', + 'rss-http' => 'text/xml', + 'atom' => 'application/atom+xml', + 'rdf' => 'application/rdf+xml' + ); + + $content_type = ( !empty($types[$type]) ) ? $types[$type] : 'application/octet-stream'; + + /** + * Filter the content type for a specific feed type. + * + * @since 2.8.0 + * + * @param string $content_type Content type indicating the type of data that a feed contains. + * @param string $type Type of feed. Possible values include 'rss2', 'atom'. + * Default 'rss2'. + */ + return apply_filters( 'feed_content_type', $content_type, $type ); +} + +/** + * Build SimplePie object based on RSS or Atom feed from URL. + * + * @since 2.8.0 + * + * @param mixed $url URL of feed to retrieve. If an array of URLs, the feeds are merged + * using SimplePie's multifeed feature. + * See also {@link ​http://simplepie.org/wiki/faq/typical_multifeed_gotchas} + * + * @return WP_Error|SimplePie WP_Error object on failure or SimplePie object on success + */ +function fetch_feed( $url ) { + require_once( ABSPATH . WPINC . '/class-feed.php' ); + + $feed = new SimplePie(); + + $feed->set_sanitize_class( 'WP_SimplePie_Sanitize_KSES' ); + // We must manually overwrite $feed->sanitize because SimplePie's + // constructor sets it before we have a chance to set the sanitization class + $feed->sanitize = new WP_SimplePie_Sanitize_KSES(); + + $feed->set_cache_class( 'WP_Feed_Cache' ); + $feed->set_file_class( 'WP_SimplePie_File' ); + + $feed->set_feed_url( $url ); + /** This filter is documented in wp-includes/class-feed.php */ + $feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url ) ); + /** + * Fires just before processing the SimplePie feed object. + * + * @since 3.0.0 + * + * @param object &$feed SimplePie feed object, passed by reference. + * @param mixed $url URL of feed to retrieve. If an array of URLs, the feeds are merged. + */ + do_action_ref_array( 'wp_feed_options', array( &$feed, $url ) ); + $feed->init(); + $feed->set_output_encoding( get_option( 'blog_charset' ) ); + $feed->handle_content_type(); + + if ( $feed->error() ) + return new WP_Error( 'simplepie-error', $feed->error() ); + + return $feed; +} diff --git a/wp-includes/fonts/dashicons.eot b/wp-includes/fonts/dashicons.eot new file mode 100644 index 0000000000000000000000000000000000000000..96f628853eae17e0b7b7e45328619266ae60e5cd GIT binary patch literal 42118 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 literal 0 HcmV?d00001 diff --git a/wp-includes/fonts/dashicons.svg b/wp-includes/fonts/dashicons.svg new file mode 100644 index 0000000000..6bc971eb33 --- /dev/null +++ b/wp-includes/fonts/dashicons.svg @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-includes/fonts/dashicons.ttf b/wp-includes/fonts/dashicons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c6651419a538ce9ddbd4090cf5e7e29c3e8cb92a GIT binary patch literal 41916 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 b2U=K7T0Vc>n57$5EW&(n%D(d3O{V_`1k!Ha literal 0 HcmV?d00001 diff --git a/wp-includes/fonts/dashicons.woff b/wp-includes/fonts/dashicons.woff new file mode 100644 index 0000000000000000000000000000000000000000..9e41bf04e668c6186dcb43f7419b9a6242521106 GIT binary patch literal 26044 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

      CDimKnoJ|3L~MnrQDf@H|s8sTbY}u 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 literal 0 HcmV?d00001 diff --git a/wp-includes/formatting.php b/wp-includes/formatting.php new file mode 100644 index 0000000000..fa9551a3e4 --- /dev/null +++ b/wp-includes/formatting.php @@ -0,0 +1,4607 @@ +', + $open_sq_flag = '', + $apos_flag = ''; + + // If there's nothing to do, just stop. + if ( empty( $text ) || false === $run_texturize ) { + return $text; + } + + // Set up static variables. Run once only. + if ( $reset || ! isset( $static_characters ) ) { + /** + * Filter whether to skip running wptexturize(). + * + * Passing false to the filter will effectively short-circuit wptexturize(). + * returning the original text passed to the function instead. + * + * The filter runs only once, the first time wptexturize() is called. + * + * @since 4.0.0 + * + * @see wptexturize() + * + * @param bool $run_texturize Whether to short-circuit wptexturize(). + */ + $run_texturize = apply_filters( 'run_wptexturize', $run_texturize ); + if ( false === $run_texturize ) { + return $text; + } + + /* translators: opening curly double quote */ + $opening_quote = _x( '“', 'opening curly double quote' ); + /* translators: closing curly double quote */ + $closing_quote = _x( '”', 'closing curly double quote' ); + + /* translators: apostrophe, for example in 'cause or can't */ + $apos = _x( '’', 'apostrophe' ); + + /* translators: prime, for example in 9' (nine feet) */ + $prime = _x( '′', 'prime' ); + /* translators: double prime, for example in 9" (nine inches) */ + $double_prime = _x( '″', 'double prime' ); + + /* translators: opening curly single quote */ + $opening_single_quote = _x( '‘', 'opening curly single quote' ); + /* translators: closing curly single quote */ + $closing_single_quote = _x( '’', 'closing curly single quote' ); + + /* translators: en dash */ + $en_dash = _x( '–', 'en dash' ); + /* translators: em dash */ + $em_dash = _x( '—', 'em dash' ); + + $default_no_texturize_tags = array('pre', 'code', 'kbd', 'style', 'script', 'tt'); + $default_no_texturize_shortcodes = array('code'); + + // if a plugin has provided an autocorrect array, use it + if ( isset($wp_cockneyreplace) ) { + $cockney = array_keys( $wp_cockneyreplace ); + $cockneyreplace = array_values( $wp_cockneyreplace ); + } else { + /* translators: This is a comma-separated list of words that defy the syntax of quotations in normal use, + * for example... 'We do not have enough words yet' ... is a typical quoted phrase. But when we write + * lines of code 'til we have enough of 'em, then we need to insert apostrophes instead of quotes. + */ + $cockney = explode( ',', _x( "'tain't,'twere,'twas,'tis,'twill,'til,'bout,'nuff,'round,'cause,'em", + 'Comma-separated list of words to texturize in your language' ) ); + + $cockneyreplace = explode( ',', _x( '’tain’t,’twere,’twas,’tis,’twill,’til,’bout,’nuff,’round,’cause,’em', + 'Comma-separated list of replacement words in your language' ) ); + } + + $static_characters = array_merge( array( '...', '``', '\'\'', ' (tm)' ), $cockney ); + $static_replacements = array_merge( array( '…', $opening_quote, $closing_quote, ' ™' ), $cockneyreplace ); + + + // Pattern-based replacements of characters. + // Sort the remaining patterns into several arrays for performance tuning. + $dynamic_characters = array( 'apos' => array(), 'quote' => array(), 'dash' => array() ); + $dynamic_replacements = array( 'apos' => array(), 'quote' => array(), 'dash' => array() ); + $dynamic = array(); + $spaces = wp_spaces_regexp(); + + // '99' and '99" are ambiguous among other patterns; assume it's an abbreviated year at the end of a quotation. + if ( "'" !== $apos || "'" !== $closing_single_quote ) { + $dynamic[ '/\'(\d\d)\'(?=\Z|[.,:;!?)}\-\]]|>|' . $spaces . ')/' ] = $apos_flag . '$1' . $closing_single_quote; + } + if ( "'" !== $apos || '"' !== $closing_quote ) { + $dynamic[ '/\'(\d\d)"(?=\Z|[.,:;!?)}\-\]]|>|' . $spaces . ')/' ] = $apos_flag . '$1' . $closing_quote; + } + + // '99 '99s '99's (apostrophe) But never '9 or '99% or '999 or '99.0. + if ( "'" !== $apos ) { + $dynamic[ '/\'(?=\d\d(?:\Z|(?![%\d]|[.,]\d)))/' ] = $apos_flag; + } + + // Quoted Numbers like '0.42' + if ( "'" !== $opening_single_quote && "'" !== $closing_single_quote ) { + $dynamic[ '/(?<=\A|' . $spaces . ')\'(\d[.,\d]*)\'/' ] = $open_sq_flag . '$1' . $closing_single_quote; + } + + // Single quote at start, or preceded by (, {, <, [, ", -, or spaces. + if ( "'" !== $opening_single_quote ) { + $dynamic[ '/(?<=\A|[([{"\-]|<|' . $spaces . ')\'/' ] = $open_sq_flag; + } + + // Apostrophe in a word. No spaces, double apostrophes, or other punctuation. + if ( "'" !== $apos ) { + $dynamic[ '/(? is found. + . '-(?!->)' // Dash not followed by end of comment. + . '[^\-]*+' // Consume non-dashes. + . ')*+' // Loop possessively. + . '(?:-->)?'; // End of comment. If not found, match all input. + + $shortcode_regex = + '\[' // Find start of shortcode. + . '[\/\[]?' // Shortcodes may begin with [/ or [[ + . $tagregexp // Only match registered shortcodes, because performance. + . '(?:' + . '[^\[\]<>]+' // Shortcodes do not contain other shortcodes. Quantifier critical. + . '|' + . '<[^\[\]>]*>' // HTML elements permitted. Prevents matching ] before >. + . ')*+' // Possessive critical. + . '\]' // Find end of shortcode. + . '\]?'; // Shortcodes may end with ]] + + $regex = + '/(' // Capture the entire match. + . '<' // Find start of element. + . '(?(?=!--)' // Is this a comment? + . $comment_regex // Find end of comment. + . '|' + . '[^>]*>' // Find end of element. + . ')' + . '|' + . $shortcode_regex // Find shortcodes. + . ')/s'; + + $textarr = preg_split( $regex, $text, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY ); + + foreach ( $textarr as &$curl ) { + // Only call _wptexturize_pushpop_element if $curl is a delimiter. + $first = $curl[0]; + if ( '<' === $first && ''; + $quote_pattern = "/$needle(?=\\Z|[.,:;!?)}\\-\\]]|>|" . $spaces . ")/"; + $prime_pattern = "/(?<=\\d)$needle/"; + $flag_after_digit = "/(?<=\\d)$flag/"; + $flag_no_digit = "/(? &$sentence ) { + if ( false === strpos( $sentence, $needle ) ) { + continue; + } elseif ( 0 !== $key && 0 === substr_count( $sentence, $close_quote ) ) { + $sentence = preg_replace( $quote_pattern, $flag, $sentence, -1, $count ); + if ( $count > 1 ) { + // This sentence appears to have multiple closing quotes. Attempt Vulcan logic. + $sentence = preg_replace( $flag_no_digit, $close_quote, $sentence, -1, $count2 ); + if ( 0 === $count2 ) { + // Try looking for a quote followed by a period. + $count2 = substr_count( $sentence, "$flag." ); + if ( $count2 > 0 ) { + // Assume the rightmost quote-period match is the end of quotation. + $pos = strrpos( $sentence, "$flag." ); + } else { + // When all else fails, make the rightmost candidate a closing quote. + // This is most likely to be problematic in the context of bug #18549. + $pos = strrpos( $sentence, $flag ); + } + $sentence = substr_replace( $sentence, $close_quote, $pos, strlen( $flag ) ); + } + // Use conventional replacement on any remaining primes and quotes. + $sentence = preg_replace( $prime_pattern, $prime, $sentence ); + $sentence = preg_replace( $flag_after_digit, $prime, $sentence ); + $sentence = str_replace( $flag, $close_quote, $sentence ); + } elseif ( 1 == $count ) { + // Found only one closing quote candidate, so give it priority over primes. + $sentence = str_replace( $flag, $close_quote, $sentence ); + $sentence = preg_replace( $prime_pattern, $prime, $sentence ); + } else { + // No closing quotes found. Just run primes pattern. + $sentence = preg_replace( $prime_pattern, $prime, $sentence ); + } + } else { + $sentence = preg_replace( $prime_pattern, $prime, $sentence ); + $sentence = preg_replace( $quote_pattern, $close_quote, $sentence ); + } + if ( '"' == $needle && false !== strpos( $sentence, '"' ) ) { + $sentence = str_replace( '"', $close_quote, $sentence ); + } + } + + return implode( $open_quote, $sentences ); +} + +/** + * Search for disabled element tags. Push element to stack on tag open and pop + * on tag close. + * + * Assumes first char of $text is tag opening and last char is tag closing. + * Assumes second char of $text is optionally '/' to indicate closing as in . + * + * @since 2.9.0 + * @access private + * + * @param string $text Text to check. Must be a tag like `` or `[shortcode]`. + * @param array $stack List of open tag elements. + * @param array $disabled_elements The tag names to match against. Spaces are not allowed in tag names. + */ +function _wptexturize_pushpop_element( $text, &$stack, $disabled_elements ) { + // Is it an opening tag or closing tag? + if ( '/' !== $text[1] ) { + $opening_tag = true; + $name_offset = 1; + } elseif ( 0 == count( $stack ) ) { + // Stack is empty. Just stop. + return; + } else { + $opening_tag = false; + $name_offset = 2; + } + + // Parse out the tag name. + $space = strpos( $text, ' ' ); + if ( false === $space ) { + $space = -1; + } else { + $space -= $name_offset; + } + $tag = substr( $text, $name_offset, $space ); + + // Handle disabled tags. + if ( in_array( $tag, $disabled_elements ) ) { + if ( $opening_tag ) { + /* + * This disables texturize until we find a closing tag of our type + * (e.g.
      ) even if there was invalid nesting before that
      +			 *
      +			 * Example: in the case 
      sadsadasd"baba"
      + * "baba" won't be texturize + */ + + array_push( $stack, $tag ); + } elseif ( end( $stack ) == $tag ) { + array_pop( $stack ); + } + } +} + +/** + * Replaces double line-breaks with paragraph elements. + * + * A group of regex replaces used to identify text formatted with newlines and + * replace double line-breaks with HTML paragraph tags. The remaining line-breaks + * after conversion become <
      > tags, unless $br is set to '0' or 'false'. + * + * @since 0.71 + * + * @param string $pee The text which has to be formatted. + * @param bool $br Optional. If set, this will convert all remaining line-breaks + * after paragraphing. Default true. + * @return string Text which has been converted into correct paragraph tags. + */ +function wpautop( $pee, $br = true ) { + $pre_tags = array(); + + if ( trim($pee) === '' ) + return ''; + + // Just to make things a little easier, pad the end. + $pee = $pee . "\n"; + + /* + * Pre tags shouldn't be touched by autop. + * Replace pre tags with placeholders and bring them back after autop. + */ + if ( strpos($pee, '', $pee ); + $last_pee = array_pop($pee_parts); + $pee = ''; + $i = 0; + + foreach ( $pee_parts as $pee_part ) { + $start = strpos($pee_part, ''; + + $pee .= substr( $pee_part, 0, $start ) . $name; + $i++; + } + + $pee .= $last_pee; + } + // Change multiple
      s into two line breaks, which will turn into paragraphs. + $pee = preg_replace('|\s*|', "\n\n", $pee); + + $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)'; + + // Add a single line break above block-level opening tags. + $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee); + + // Add a double line break below block-level closing tags. + $pee = preg_replace('!()!', "$1\n\n", $pee); + + // Standardize newline characters to "\n". + $pee = str_replace(array("\r\n", "\r"), "\n", $pee); + + // Find newlines in all elements and add placeholders. + $pee = wp_replace_in_html_tags( $pee, array( "\n" => " " ) ); + + // Collapse line breaks before and after ', $pee ); + } + + /* + * Collapse line breaks inside elements, before and elements + * so they don't get autop'd. + */ + if ( strpos( $pee, '' ) !== false ) { + $pee = preg_replace( '|(]*>)\s*|', '$1', $pee ); + $pee = preg_replace( '|\s*|', '', $pee ); + $pee = preg_replace( '%\s*(]*>)\s*%', '$1', $pee ); + } + + /* + * Collapse line breaks inside