From 342ca403d987b8bbfa1f9484c49c65b53a2927df Mon Sep 17 00:00:00 2001 From: Jonas Braathen Date: Sun, 18 Dec 2016 01:37:30 +0100 Subject: [PATCH] Bump WP to 4.7 --- wp/readme.html | 5 +- wp/wp-activate.php | 2 +- wp/wp-admin/about.php | 258 +- wp/wp-admin/admin-footer.php | 4 +- wp/wp-admin/admin-header.php | 35 +- wp/wp-admin/admin.php | 8 +- wp/wp-admin/comment.php | 8 +- wp/wp-admin/credits.php | 4 +- wp/wp-admin/css/about-rtl.css | 46 +- wp/wp-admin/css/about-rtl.min.css | 2 +- wp/wp-admin/css/about.css | 46 +- wp/wp-admin/css/about.min.css | 2 +- wp/wp-admin/css/admin-menu-rtl.css | 107 +- wp/wp-admin/css/admin-menu-rtl.min.css | 2 +- wp/wp-admin/css/admin-menu.css | 107 +- wp/wp-admin/css/admin-menu.min.css | 2 +- wp/wp-admin/css/color-picker-rtl.css | 10 + wp/wp-admin/css/color-picker-rtl.min.css | 2 +- wp/wp-admin/css/color-picker.css | 10 + wp/wp-admin/css/color-picker.min.css | 2 +- wp/wp-admin/css/colors/_admin.scss | 30 +- wp/wp-admin/css/colors/_mixins.scss | 2 +- wp/wp-admin/css/colors/blue/colors-rtl.css | 30 +- .../css/colors/blue/colors-rtl.min.css | 2 +- wp/wp-admin/css/colors/blue/colors.css | 30 +- wp/wp-admin/css/colors/blue/colors.min.css | 2 +- wp/wp-admin/css/colors/coffee/colors-rtl.css | 32 +- .../css/colors/coffee/colors-rtl.min.css | 2 +- wp/wp-admin/css/colors/coffee/colors.css | 32 +- wp/wp-admin/css/colors/coffee/colors.min.css | 2 +- .../css/colors/ectoplasm/colors-rtl.css | 32 +- .../css/colors/ectoplasm/colors-rtl.min.css | 2 +- wp/wp-admin/css/colors/ectoplasm/colors.css | 32 +- .../css/colors/ectoplasm/colors.min.css | 2 +- wp/wp-admin/css/colors/light/colors-rtl.css | 32 +- .../css/colors/light/colors-rtl.min.css | 2 +- wp/wp-admin/css/colors/light/colors.css | 32 +- wp/wp-admin/css/colors/light/colors.min.css | 2 +- .../css/colors/midnight/colors-rtl.css | 32 +- .../css/colors/midnight/colors-rtl.min.css | 2 +- wp/wp-admin/css/colors/midnight/colors.css | 32 +- .../css/colors/midnight/colors.min.css | 2 +- wp/wp-admin/css/colors/ocean/colors-rtl.css | 32 +- .../css/colors/ocean/colors-rtl.min.css | 2 +- wp/wp-admin/css/colors/ocean/colors.css | 32 +- wp/wp-admin/css/colors/ocean/colors.min.css | 2 +- wp/wp-admin/css/colors/sunrise/colors-rtl.css | 32 +- .../css/colors/sunrise/colors-rtl.min.css | 2 +- wp/wp-admin/css/colors/sunrise/colors.css | 32 +- wp/wp-admin/css/colors/sunrise/colors.min.css | 2 +- wp/wp-admin/css/common-rtl.css | 189 +- wp/wp-admin/css/common-rtl.min.css | 4 +- wp/wp-admin/css/common.css | 189 +- wp/wp-admin/css/common.min.css | 4 +- wp/wp-admin/css/customize-controls-rtl.css | 701 +- .../css/customize-controls-rtl.min.css | 2 +- wp/wp-admin/css/customize-controls.css | 701 +- wp/wp-admin/css/customize-controls.min.css | 2 +- wp/wp-admin/css/customize-nav-menus-rtl.css | 142 +- .../css/customize-nav-menus-rtl.min.css | 2 +- wp/wp-admin/css/customize-nav-menus.css | 142 +- wp/wp-admin/css/customize-nav-menus.min.css | 2 +- wp/wp-admin/css/customize-widgets-rtl.css | 4 +- wp/wp-admin/css/customize-widgets-rtl.min.css | 2 +- wp/wp-admin/css/customize-widgets.css | 4 +- wp/wp-admin/css/customize-widgets.min.css | 2 +- wp/wp-admin/css/edit-rtl.css | 87 +- wp/wp-admin/css/edit-rtl.min.css | 2 +- wp/wp-admin/css/edit.css | 83 +- wp/wp-admin/css/edit.min.css | 2 +- wp/wp-admin/css/forms-rtl.css | 30 +- wp/wp-admin/css/forms-rtl.min.css | 2 +- wp/wp-admin/css/forms.css | 30 +- wp/wp-admin/css/forms.min.css | 2 +- wp/wp-admin/css/ie-rtl.css | 15 +- wp/wp-admin/css/ie-rtl.min.css | 2 +- wp/wp-admin/css/ie.css | 15 +- wp/wp-admin/css/ie.min.css | 2 +- wp/wp-admin/css/install-rtl.css | 2 +- wp/wp-admin/css/install-rtl.min.css | 2 +- wp/wp-admin/css/install.css | 2 +- wp/wp-admin/css/install.min.css | 2 +- wp/wp-admin/css/list-tables-rtl.css | 7 +- wp/wp-admin/css/list-tables-rtl.min.css | 2 +- wp/wp-admin/css/list-tables.css | 7 +- wp/wp-admin/css/list-tables.min.css | 2 +- wp/wp-admin/css/login-rtl.css | 19 +- wp/wp-admin/css/login-rtl.min.css | 2 +- wp/wp-admin/css/login.css | 19 +- wp/wp-admin/css/login.min.css | 2 +- wp/wp-admin/css/media-rtl.css | 8 +- wp/wp-admin/css/media-rtl.min.css | 2 +- wp/wp-admin/css/media.css | 8 +- wp/wp-admin/css/media.min.css | 2 +- wp/wp-admin/css/nav-menus-rtl.css | 126 +- wp/wp-admin/css/nav-menus-rtl.min.css | 2 +- wp/wp-admin/css/nav-menus.css | 126 +- wp/wp-admin/css/nav-menus.min.css | 2 +- wp/wp-admin/css/press-this-rtl.css | 104 +- wp/wp-admin/css/press-this-rtl.min.css | 2 +- wp/wp-admin/css/press-this.css | 104 +- wp/wp-admin/css/press-this.min.css | 2 +- wp/wp-admin/css/themes-rtl.css | 166 +- wp/wp-admin/css/themes-rtl.min.css | 2 +- wp/wp-admin/css/themes.css | 166 +- wp/wp-admin/css/themes.min.css | 2 +- wp/wp-admin/custom-background.php | 202 +- wp/wp-admin/custom-header.php | 14 +- wp/wp-admin/customize.php | 45 +- wp/wp-admin/edit-comments.php | 24 +- wp/wp-admin/edit-form-advanced.php | 36 +- wp/wp-admin/edit-form-comment.php | 2 +- wp/wp-admin/edit-link-form.php | 6 +- wp/wp-admin/edit-tag-form.php | 11 +- wp/wp-admin/edit-tags.php | 118 +- wp/wp-admin/edit.php | 24 +- wp/wp-admin/export.php | 4 +- wp/wp-admin/freedoms.php | 8 +- wp/wp-admin/import.php | 4 +- wp/wp-admin/includes/admin.php | 1 + wp/wp-admin/includes/ajax-actions.php | 129 +- wp/wp-admin/includes/class-ftp-pure.php | 6 +- wp/wp-admin/includes/class-ftp-sockets.php | 6 +- wp/wp-admin/includes/class-ftp.php | 8 +- .../includes/class-plugin-installer-skin.php | 11 +- .../includes/class-plugin-upgrader.php | 20 +- wp/wp-admin/includes/class-theme-upgrader.php | 21 +- .../includes/class-walker-nav-menu-edit.php | 18 +- .../includes/class-wp-automatic-updater.php | 17 +- .../includes/class-wp-comments-list-table.php | 6 +- wp/wp-admin/includes/class-wp-importer.php | 8 +- .../includes/class-wp-links-list-table.php | 2 +- .../includes/class-wp-list-table-compat.php | 53 + wp/wp-admin/includes/class-wp-list-table.php | 7 +- .../includes/class-wp-media-list-table.php | 4 +- .../includes/class-wp-ms-sites-list-table.php | 2 +- .../class-wp-ms-themes-list-table.php | 7 +- .../includes/class-wp-ms-users-list-table.php | 2 +- .../class-wp-plugin-install-list-table.php | 20 +- .../includes/class-wp-plugins-list-table.php | 20 +- .../includes/class-wp-posts-list-table.php | 102 +- wp/wp-admin/includes/class-wp-press-this.php | 22 +- wp/wp-admin/includes/class-wp-site-icon.php | 5 - .../includes/class-wp-terms-list-table.php | 52 +- .../class-wp-theme-install-list-table.php | 41 +- .../includes/class-wp-themes-list-table.php | 5 +- .../includes/class-wp-upgrader-skins.php | 2 + wp/wp-admin/includes/class-wp-upgrader.php | 4 +- .../includes/class-wp-users-list-table.php | 2 +- wp/wp-admin/includes/credits.php | 8 +- wp/wp-admin/includes/dashboard.php | 21 +- wp/wp-admin/includes/export.php | 36 +- wp/wp-admin/includes/file.php | 7 +- wp/wp-admin/includes/image-edit.php | 52 +- wp/wp-admin/includes/image.php | 95 +- wp/wp-admin/includes/import.php | 4 +- wp/wp-admin/includes/list-table.php | 47 +- wp/wp-admin/includes/media.php | 56 +- wp/wp-admin/includes/meta-boxes.php | 90 +- wp/wp-admin/includes/misc.php | 2 +- wp/wp-admin/includes/ms.php | 29 +- wp/wp-admin/includes/nav-menu.php | 54 +- wp/wp-admin/includes/network.php | 14 +- wp/wp-admin/includes/plugin-install.php | 66 +- wp/wp-admin/includes/plugin.php | 65 +- wp/wp-admin/includes/post.php | 54 +- wp/wp-admin/includes/revision.php | 8 +- wp/wp-admin/includes/schema.php | 4 +- wp/wp-admin/includes/template.php | 66 +- wp/wp-admin/includes/theme-install.php | 6 +- wp/wp-admin/includes/theme.php | 47 +- wp/wp-admin/includes/translation-install.php | 27 +- wp/wp-admin/includes/update-core.php | 33 +- wp/wp-admin/includes/update.php | 10 +- wp/wp-admin/includes/upgrade.php | 21 +- wp/wp-admin/includes/user.php | 16 +- wp/wp-admin/includes/widgets.php | 4 +- wp/wp-admin/index.php | 5 +- wp/wp-admin/install.php | 28 +- wp/wp-admin/js/bookmarklet.min.js | 2 +- wp/wp-admin/js/color-picker.js | 34 +- wp/wp-admin/js/color-picker.min.js | 2 +- wp/wp-admin/js/common.js | 150 +- wp/wp-admin/js/common.min.js | 2 +- wp/wp-admin/js/custom-background.js | 16 +- wp/wp-admin/js/custom-background.min.js | 2 +- wp/wp-admin/js/customize-controls.js | 2364 ++- wp/wp-admin/js/customize-controls.min.js | 4 +- wp/wp-admin/js/customize-nav-menus.js | 485 +- wp/wp-admin/js/customize-nav-menus.min.js | 4 +- wp/wp-admin/js/customize-widgets.js | 73 +- wp/wp-admin/js/customize-widgets.min.js | 2 +- wp/wp-admin/js/editor-expand.js | 2 +- wp/wp-admin/js/editor.js | 2 +- wp/wp-admin/js/editor.min.js | 2 +- wp/wp-admin/js/inline-edit-post.js | 14 +- wp/wp-admin/js/inline-edit-post.min.js | 2 +- wp/wp-admin/js/inline-edit-tax.js | 130 +- wp/wp-admin/js/iris.min.js | 6 +- wp/wp-admin/js/media-gallery.js | 19 +- wp/wp-admin/js/nav-menu.js | 107 +- wp/wp-admin/js/nav-menu.min.js | 2 +- wp/wp-admin/js/post.js | 673 +- wp/wp-admin/js/post.min.js | 2 +- wp/wp-admin/js/postbox.js | 200 +- wp/wp-admin/js/tags-box.js | 155 +- wp/wp-admin/js/tags-box.min.js | 2 +- wp/wp-admin/js/tags-suggest.js | 183 + wp/wp-admin/js/tags-suggest.min.js | 1 + wp/wp-admin/js/theme.js | 46 +- wp/wp-admin/js/theme.min.js | 2 +- wp/wp-admin/js/updates.js | 162 +- wp/wp-admin/js/updates.min.js | 4 +- wp/wp-admin/js/user-profile.js | 10 +- wp/wp-admin/js/user-profile.min.js | 2 +- wp/wp-admin/js/widgets.js | 4 +- wp/wp-admin/js/widgets.min.js | 2 +- wp/wp-admin/js/word-count.js | 156 +- wp/wp-admin/link-manager.php | 16 +- wp/wp-admin/link-parse-opml.php | 5 + wp/wp-admin/media-new.php | 4 +- wp/wp-admin/media-upload.php | 4 +- wp/wp-admin/media.php | 4 +- wp/wp-admin/menu-header.php | 8 +- wp/wp-admin/menu.php | 2 +- wp/wp-admin/ms-delete-site.php | 22 +- wp/wp-admin/my-sites.php | 9 +- wp/wp-admin/nav-menus.php | 33 +- wp/wp-admin/network.php | 10 +- wp/wp-admin/network/about.php | 3 - wp/wp-admin/network/admin.php | 4 +- wp/wp-admin/network/credits.php | 3 - wp/wp-admin/network/edit.php | 3 - wp/wp-admin/network/freedoms.php | 3 - wp/wp-admin/network/index.php | 7 +- wp/wp-admin/network/menu.php | 2 +- wp/wp-admin/network/plugin-editor.php | 3 - wp/wp-admin/network/plugin-install.php | 3 - wp/wp-admin/network/plugins.php | 3 - wp/wp-admin/network/profile.php | 3 - wp/wp-admin/network/settings.php | 17 +- wp/wp-admin/network/setup.php | 3 - wp/wp-admin/network/site-info.php | 15 +- wp/wp-admin/network/site-new.php | 35 +- wp/wp-admin/network/site-settings.php | 10 +- wp/wp-admin/network/site-themes.php | 33 +- wp/wp-admin/network/site-users.php | 31 +- wp/wp-admin/network/sites.php | 25 +- wp/wp-admin/network/theme-editor.php | 3 - wp/wp-admin/network/theme-install.php | 3 - wp/wp-admin/network/themes.php | 27 +- wp/wp-admin/network/update-core.php | 3 - wp/wp-admin/network/update.php | 3 - wp/wp-admin/network/upgrade.php | 29 +- wp/wp-admin/network/user-edit.php | 3 - wp/wp-admin/network/user-new.php | 7 +- wp/wp-admin/network/users.php | 20 +- wp/wp-admin/options-discussion.php | 5 +- wp/wp-admin/options-general.php | 10 +- wp/wp-admin/options-media.php | 4 +- wp/wp-admin/options-permalink.php | 6 +- wp/wp-admin/options-reading.php | 4 +- wp/wp-admin/options-writing.php | 4 +- wp/wp-admin/options.php | 22 +- wp/wp-admin/plugin-editor.php | 70 +- wp/wp-admin/plugin-install.php | 15 +- wp/wp-admin/plugins.php | 26 +- wp/wp-admin/press-this.php | 11 +- wp/wp-admin/revision.php | 5 +- wp/wp-admin/setup-config.php | 5 +- wp/wp-admin/term.php | 4 +- wp/wp-admin/theme-editor.php | 16 +- wp/wp-admin/theme-install.php | 62 +- wp/wp-admin/themes.php | 46 +- wp/wp-admin/tools.php | 8 +- wp/wp-admin/update-core.php | 75 +- wp/wp-admin/upload.php | 11 +- wp/wp-admin/user-edit.php | 57 +- wp/wp-admin/user-new.php | 40 +- wp/wp-admin/users.php | 37 +- wp/wp-admin/widgets.php | 12 +- wp/wp-comments-post.php | 7 +- wp/wp-content/languages/admin-nb_NO.mo | Bin 341396 -> 343403 bytes wp/wp-content/languages/admin-nb_NO.po | 15951 ++++++++-------- .../languages/admin-network-nb_NO.mo | Bin 48344 -> 48048 bytes .../languages/admin-network-nb_NO.po | 686 +- .../languages/continents-cities-nb_NO.mo | Bin 20317 -> 20359 bytes .../languages/continents-cities-nb_NO.po | 3639 ++-- wp/wp-content/languages/nb_NO.mo | Bin 163008 -> 208550 bytes wp/wp-content/languages/nb_NO.po | 5832 ++++-- .../languages/plugins/akismet-nb_NO.mo | Bin 18116 -> 18152 bytes .../languages/plugins/akismet-nb_NO.po | 11 +- .../languages/themes/twentyfifteen-nb_NO.mo | Bin 5950 -> 5975 bytes .../languages/themes/twentyfifteen-nb_NO.po | 29 +- .../languages/themes/twentyseventeen-nb_NO.mo | Bin 0 -> 6887 bytes .../languages/themes/twentyseventeen-nb_NO.po | 328 + .../languages/themes/twentysixteen-nb_NO.mo | Bin 6383 -> 6408 bytes .../languages/themes/twentysixteen-nb_NO.po | 137 +- wp/wp-includes/IXR/class-IXR-base64.php | 32 + wp/wp-includes/IXR/class-IXR-client.php | 166 + .../IXR/class-IXR-clientmulticall.php | 44 + wp/wp-includes/IXR/class-IXR-date.php | 74 + wp/wp-includes/IXR/class-IXR-error.php | 53 + .../IXR/class-IXR-introspectionserver.php | 174 + wp/wp-includes/IXR/class-IXR-message.php | 234 + wp/wp-includes/IXR/class-IXR-request.php | 54 + wp/wp-includes/IXR/class-IXR-server.php | 225 + wp/wp-includes/IXR/class-IXR-value.php | 138 + wp/wp-includes/Requests/IRI.php | 5 +- wp/wp-includes/Requests/Transport/cURL.php | 7 +- .../Requests/Transport/fsockopen.php | 7 +- wp/wp-includes/admin-bar.php | 67 +- wp/wp-includes/atomlib.php | 5 + wp/wp-includes/author-template.php | 18 +- wp/wp-includes/bookmark.php | 7 +- wp/wp-includes/cache.php | 12 +- wp/wp-includes/capabilities.php | 158 +- wp/wp-includes/category-template.php | 56 +- wp/wp-includes/category.php | 19 +- wp/wp-includes/class-IXR.php | 1182 +- wp/wp-includes/class-feed.php | 285 +- wp/wp-includes/class-http.php | 17 +- wp/wp-includes/class-oembed.php | 125 +- wp/wp-includes/class-phpmailer.php | 2 +- wp/wp-includes/class-pop3.php | 2 +- wp/wp-includes/class-requests.php | 6 +- wp/wp-includes/class-walker-comment.php | 14 +- wp/wp-includes/class-walker-nav-menu.php | 114 +- wp/wp-includes/class-walker-page.php | 42 +- wp/wp-includes/class-wp-ajax-response.php | 2 +- wp/wp-includes/class-wp-comment-query.php | 31 +- wp/wp-includes/class-wp-comment.php | 5 +- wp/wp-includes/class-wp-customize-control.php | 68 +- wp/wp-includes/class-wp-customize-manager.php | 2450 ++- .../class-wp-customize-nav-menus.php | 504 +- wp/wp-includes/class-wp-customize-section.php | 29 +- wp/wp-includes/class-wp-customize-setting.php | 11 + wp/wp-includes/class-wp-customize-widgets.php | 24 +- wp/wp-includes/class-wp-dependency.php | 104 + wp/wp-includes/class-wp-editor.php | 148 +- wp/wp-includes/class-wp-embed.php | 1 - wp/wp-includes/class-wp-error.php | 14 - .../class-wp-feed-cache-transient.php | 141 + wp/wp-includes/class-wp-feed-cache.php | 33 + wp/wp-includes/class-wp-hook.php | 535 + .../class-wp-http-requests-hooks.php | 76 + .../class-wp-http-requests-response.php | 9 +- wp/wp-includes/class-wp-http-response.php | 4 +- .../class-wp-image-editor-imagick.php | 36 +- wp/wp-includes/class-wp-image-editor.php | 13 +- wp/wp-includes/class-wp-list-util.php | 267 + wp/wp-includes/class-wp-locale-switcher.php | 240 + wp/wp-includes/class-wp-locale.php | 11 +- wp/wp-includes/class-wp-matchesmapregex.php | 97 + wp/wp-includes/class-wp-network-query.php | 14 +- wp/wp-includes/class-wp-post-type.php | 2 +- wp/wp-includes/class-wp-post.php | 8 +- wp/wp-includes/class-wp-query.php | 4107 ++++ wp/wp-includes/class-wp-rewrite.php | 6 +- wp/wp-includes/class-wp-roles.php | 36 +- wp/wp-includes/class-wp-session-tokens.php | 317 + wp/wp-includes/class-wp-simplepie-file.php | 72 + .../class-wp-simplepie-sanitize-kses.php | 59 + wp/wp-includes/class-wp-site-query.php | 16 +- wp/wp-includes/class-wp-site.php | 15 +- wp/wp-includes/class-wp-taxonomy.php | 416 + wp/wp-includes/class-wp-term-query.php | 139 +- wp/wp-includes/class-wp-term.php | 6 +- .../class-wp-text-diff-renderer-inline.php | 33 + .../class-wp-text-diff-renderer-table.php | 509 + wp/wp-includes/class-wp-theme.php | 108 +- .../class-wp-user-meta-session-tokens.php | 139 + wp/wp-includes/class-wp-user-query.php | 80 +- wp/wp-includes/class-wp-user.php | 2 + wp/wp-includes/class-wp-widget.php | 22 +- wp/wp-includes/class-wp-xmlrpc-server.php | 135 +- wp/wp-includes/class-wp.php | 134 +- wp/wp-includes/class.wp-dependencies.php | 99 +- wp/wp-includes/comment-template.php | 336 +- wp/wp-includes/comment.php | 364 +- wp/wp-includes/compat.php | 2 +- wp/wp-includes/cron.php | 79 +- wp/wp-includes/css/admin-bar-rtl.css | 1 + wp/wp-includes/css/admin-bar-rtl.min.css | 2 +- wp/wp-includes/css/admin-bar.css | 1 + wp/wp-includes/css/admin-bar.min.css | 2 +- wp/wp-includes/css/customize-preview-rtl.css | 267 + .../css/customize-preview-rtl.min.css | 1 + wp/wp-includes/css/customize-preview.css | 255 + wp/wp-includes/css/customize-preview.min.css | 2 +- wp/wp-includes/css/editor-rtl.css | 27 +- wp/wp-includes/css/editor-rtl.min.css | 2 +- wp/wp-includes/css/editor.css | 27 +- wp/wp-includes/css/editor.min.css | 2 +- wp/wp-includes/css/wp-embed-template.css | 2 +- ...-wp-customize-background-image-control.php | 2 + ...-customize-background-position-control.php | 87 + .../class-wp-customize-color-control.php | 26 +- .../class-wp-customize-custom-css-setting.php | 373 + ...lass-wp-customize-header-image-control.php | 20 +- ...lass-wp-customize-header-image-setting.php | 9 + .../class-wp-customize-nav-menu-control.php | 4 +- ...ass-wp-customize-nav-menu-item-control.php | 9 +- ...ass-wp-customize-nav-menu-item-setting.php | 134 +- .../class-wp-customize-nav-menu-setting.php | 9 +- .../class-wp-customize-new-menu-section.php | 2 +- .../class-wp-customize-selective-refresh.php | 12 +- .../class-wp-customize-theme-control.php | 9 +- ...class-wp-widget-area-customize-control.php | 2 +- wp/wp-includes/date.php | 9 +- wp/wp-includes/default-constants.php | 4 +- wp/wp-includes/default-filters.php | 18 +- wp/wp-includes/deprecated.php | 142 +- wp/wp-includes/embed.php | 33 +- wp/wp-includes/feed-atom-comments.php | 17 +- wp/wp-includes/feed-atom.php | 5 +- wp/wp-includes/feed-rdf.php | 5 +- wp/wp-includes/feed-rss.php | 5 +- wp/wp-includes/feed-rss2-comments.php | 17 +- wp/wp-includes/feed-rss2.php | 5 +- wp/wp-includes/feed.php | 17 +- wp/wp-includes/formatting.php | 480 +- wp/wp-includes/functions.php | 446 +- wp/wp-includes/functions.wp-scripts.php | 14 +- wp/wp-includes/functions.wp-styles.php | 3 +- wp/wp-includes/general-template.php | 185 +- wp/wp-includes/http.php | 136 +- wp/wp-includes/js/autosave.js | 13 +- wp/wp-includes/js/autosave.min.js | 2 +- wp/wp-includes/js/customize-base.js | 87 +- wp/wp-includes/js/customize-base.min.js | 2 +- wp/wp-includes/js/customize-loader.js | 31 +- wp/wp-includes/js/customize-loader.min.js | 2 +- .../js/customize-preview-nav-menus.js | 59 +- .../js/customize-preview-nav-menus.min.js | 2 +- .../js/customize-preview-widgets.js | 12 +- .../js/customize-preview-widgets.min.js | 2 +- wp/wp-includes/js/customize-preview.js | 752 +- wp/wp-includes/js/customize-preview.min.js | 2 +- .../js/customize-selective-refresh.js | 178 +- .../js/customize-selective-refresh.min.js | 2 +- wp/wp-includes/js/heartbeat.js | 2 +- wp/wp-includes/js/mce-view.js | 233 +- wp/wp-includes/js/mce-view.min.js | 2 +- wp/wp-includes/js/media-editor.js | 32 +- wp/wp-includes/js/media-editor.min.js | 2 +- wp/wp-includes/js/media-models.js | 2 +- wp/wp-includes/js/media-views.js | 18 +- wp/wp-includes/js/media-views.min.js | 6 +- wp/wp-includes/js/swfupload/swfupload.js | 2 +- .../js/tinymce/plugins/charmap/plugin.js | 12 +- .../js/tinymce/plugins/charmap/plugin.min.js | 2 +- .../js/tinymce/plugins/fullscreen/plugin.js | 2 +- .../tinymce/plugins/fullscreen/plugin.min.js | 2 +- .../js/tinymce/plugins/lists/plugin.js | 276 +- .../js/tinymce/plugins/lists/plugin.min.js | 2 +- .../js/tinymce/plugins/paste/plugin.js | 11 +- .../js/tinymce/plugins/paste/plugin.min.js | 2 +- .../js/tinymce/plugins/wordpress/plugin.js | 129 +- .../tinymce/plugins/wordpress/plugin.min.js | 2 +- .../js/tinymce/plugins/wpeditimage/plugin.js | 99 +- .../tinymce/plugins/wpeditimage/plugin.min.js | 2 +- .../js/tinymce/plugins/wplink/plugin.js | 4 +- .../js/tinymce/plugins/wplink/plugin.min.js | 2 +- .../tinymce/plugins/wptextpattern/plugin.js | 138 +- .../plugins/wptextpattern/plugin.min.js | 2 +- .../js/tinymce/plugins/wpview/plugin.js | 10 +- .../js/tinymce/plugins/wpview/plugin.min.js | 2 +- .../js/tinymce/skins/wordpress/wp-content.css | 10 + .../js/tinymce/themes/inlite/theme.js | 229 +- .../js/tinymce/themes/inlite/theme.min.js | 2 +- wp/wp-includes/js/tinymce/tinymce.min.js | 27 +- wp/wp-includes/js/tinymce/wp-tinymce.js.gz | Bin 170397 -> 171848 bytes wp/wp-includes/js/twemoji.js | 2 +- wp/wp-includes/js/twemoji.min.js | 2 +- wp/wp-includes/js/utils.js | 2 +- wp/wp-includes/js/wp-ajax-response.js | 2 +- wp/wp-includes/js/wp-ajax-response.min.js | 2 +- wp/wp-includes/js/wp-api.js | 1337 ++ wp/wp-includes/js/wp-api.min.js | 1 + wp/wp-includes/js/wp-custom-header.js | 450 + wp/wp-includes/js/wp-custom-header.min.js | 1 + wp/wp-includes/js/wp-embed.js | 12 +- wp/wp-includes/js/wp-embed.min.js | 2 +- wp/wp-includes/js/wp-emoji-loader.js | 76 +- wp/wp-includes/js/wp-emoji-loader.min.js | 2 +- wp/wp-includes/js/wp-emoji-release.min.js | 2 +- wp/wp-includes/js/wp-lists.js | 981 +- wp/wp-includes/js/wp-lists.min.js | 2 +- wp/wp-includes/js/wplink.js | 82 +- wp/wp-includes/js/wplink.min.js | 2 +- wp/wp-includes/kses.php | 16 +- wp/wp-includes/l10n.php | 279 +- wp/wp-includes/link-template.php | 184 +- wp/wp-includes/load.php | 79 +- wp/wp-includes/locale.php | 17 +- wp/wp-includes/media-template.php | 68 +- wp/wp-includes/media.php | 149 +- wp/wp-includes/meta.php | 20 +- wp/wp-includes/ms-blogs.php | 111 +- wp/wp-includes/ms-default-constants.php | 12 +- wp/wp-includes/ms-deprecated.php | 13 +- wp/wp-includes/ms-files.php | 1 + wp/wp-includes/ms-functions.php | 149 +- wp/wp-includes/ms-load.php | 74 +- wp/wp-includes/nav-menu-template.php | 83 +- wp/wp-includes/nav-menu.php | 47 +- wp/wp-includes/option.php | 492 +- wp/wp-includes/pluggable.php | 75 +- wp/wp-includes/plugin.php | 177 +- wp/wp-includes/pomo/mo.php | 29 +- wp/wp-includes/pomo/translations.php | 2 +- wp/wp-includes/post-template.php | 333 +- wp/wp-includes/post.php | 480 +- wp/wp-includes/query.php | 4126 +--- wp/wp-includes/rest-api.php | 512 +- .../rest-api/class-wp-rest-request.php | 65 +- .../rest-api/class-wp-rest-server.php | 78 +- .../class-wp-rest-attachments-controller.php | 749 + .../class-wp-rest-comments-controller.php | 1609 ++ .../endpoints/class-wp-rest-controller.php | 603 + ...class-wp-rest-post-statuses-controller.php | 312 + .../class-wp-rest-post-types-controller.php | 276 + .../class-wp-rest-posts-controller.php | 2198 +++ .../class-wp-rest-revisions-controller.php | 509 + .../class-wp-rest-settings-controller.php | 319 + .../class-wp-rest-taxonomies-controller.php | 317 + .../class-wp-rest-terms-controller.php | 996 + .../class-wp-rest-users-controller.php | 1358 ++ .../class-wp-rest-comment-meta-fields.php | 42 + .../fields/class-wp-rest-meta-fields.php | 470 + .../fields/class-wp-rest-post-meta-fields.php | 65 + .../fields/class-wp-rest-term-meta-fields.php | 63 + .../fields/class-wp-rest-user-meta-fields.php | 42 + wp/wp-includes/revision.php | 5 +- wp/wp-includes/rss.php | 20 +- wp/wp-includes/script-loader.php | 54 +- wp/wp-includes/session.php | 437 +- wp/wp-includes/shortcodes.php | 56 +- wp/wp-includes/taxonomy.php | 490 +- wp/wp-includes/template-loader.php | 1 - wp/wp-includes/template.php | 277 +- wp/wp-includes/theme.php | 923 +- wp/wp-includes/update.php | 44 +- wp/wp-includes/user.php | 168 +- wp/wp-includes/version.php | 6 +- wp/wp-includes/widgets.php | 4 +- .../widgets/class-wp-nav-menu-widget.php | 2 +- .../widgets/class-wp-widget-tag-cloud.php | 2 +- wp/wp-includes/wp-db.php | 55 +- wp/wp-includes/wp-diff.php | 533 +- wp/wp-links-opml.php | 5 +- wp/wp-load.php | 2 - wp/wp-login.php | 35 +- wp/wp-mail.php | 3 +- wp/wp-settings.php | 54 +- wp/wp-signup.php | 14 +- wp/wp-trackback.php | 20 +- wp/xmlrpc.php | 2 +- 559 files changed, 56148 insertions(+), 27441 deletions(-) create mode 100644 wp/wp-admin/includes/class-wp-list-table-compat.php create mode 100644 wp/wp-admin/js/tags-suggest.js create mode 100644 wp/wp-admin/js/tags-suggest.min.js create mode 100644 wp/wp-content/languages/themes/twentyseventeen-nb_NO.mo create mode 100644 wp/wp-content/languages/themes/twentyseventeen-nb_NO.po create mode 100644 wp/wp-includes/IXR/class-IXR-base64.php create mode 100644 wp/wp-includes/IXR/class-IXR-client.php create mode 100644 wp/wp-includes/IXR/class-IXR-clientmulticall.php create mode 100644 wp/wp-includes/IXR/class-IXR-date.php create mode 100644 wp/wp-includes/IXR/class-IXR-error.php create mode 100644 wp/wp-includes/IXR/class-IXR-introspectionserver.php create mode 100644 wp/wp-includes/IXR/class-IXR-message.php create mode 100644 wp/wp-includes/IXR/class-IXR-request.php create mode 100644 wp/wp-includes/IXR/class-IXR-server.php create mode 100644 wp/wp-includes/IXR/class-IXR-value.php create mode 100644 wp/wp-includes/class-wp-dependency.php create mode 100644 wp/wp-includes/class-wp-feed-cache-transient.php create mode 100644 wp/wp-includes/class-wp-feed-cache.php create mode 100644 wp/wp-includes/class-wp-hook.php create mode 100644 wp/wp-includes/class-wp-http-requests-hooks.php create mode 100644 wp/wp-includes/class-wp-list-util.php create mode 100644 wp/wp-includes/class-wp-locale-switcher.php create mode 100644 wp/wp-includes/class-wp-matchesmapregex.php create mode 100644 wp/wp-includes/class-wp-query.php create mode 100644 wp/wp-includes/class-wp-session-tokens.php create mode 100644 wp/wp-includes/class-wp-simplepie-file.php create mode 100644 wp/wp-includes/class-wp-simplepie-sanitize-kses.php create mode 100644 wp/wp-includes/class-wp-taxonomy.php create mode 100644 wp/wp-includes/class-wp-text-diff-renderer-inline.php create mode 100644 wp/wp-includes/class-wp-text-diff-renderer-table.php create mode 100644 wp/wp-includes/class-wp-user-meta-session-tokens.php create mode 100644 wp/wp-includes/css/customize-preview-rtl.css create mode 100644 wp/wp-includes/css/customize-preview-rtl.min.css create mode 100644 wp/wp-includes/customize/class-wp-customize-background-position-control.php create mode 100644 wp/wp-includes/customize/class-wp-customize-custom-css-setting.php create mode 100644 wp/wp-includes/js/wp-api.js create mode 100644 wp/wp-includes/js/wp-api.min.js create mode 100644 wp/wp-includes/js/wp-custom-header.js create mode 100644 wp/wp-includes/js/wp-custom-header.min.js create mode 100644 wp/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php create mode 100644 wp/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php create mode 100644 wp/wp-includes/rest-api/endpoints/class-wp-rest-controller.php create mode 100644 wp/wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php create mode 100644 wp/wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php create mode 100644 wp/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php create mode 100644 wp/wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php create mode 100644 wp/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php create mode 100644 wp/wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php create mode 100644 wp/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php create mode 100644 wp/wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php create mode 100644 wp/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php create mode 100644 wp/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php create mode 100644 wp/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php create mode 100644 wp/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php create mode 100644 wp/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php diff --git a/wp/readme.html b/wp/readme.html index 63b2598d..11a4ca1d 100644 --- a/wp/readme.html +++ b/wp/readme.html @@ -9,7 +9,7 @@

WordPress -
Version 4.6.1 +
Version 4.7

Semantic Personal Publishing Platform

@@ -59,9 +59,10 @@

Recommendations

diff --git a/wp/wp-activate.php b/wp/wp-activate.php index 0f6181a5..b13279af 100644 --- a/wp/wp-activate.php +++ b/wp/wp-activate.php @@ -125,7 +125,7 @@ get_header( 'wp-activate' );

diff --git a/wp/wp-admin/about.php b/wp/wp-admin/about.php index 6e77b1b4..555903bc 100644 --- a/wp/wp-admin/about.php +++ b/wp/wp-admin/about.php @@ -18,38 +18,23 @@ if ( ! wp_is_mobile() ) { ) ); } -/** - * Replaces the height and width attributes with values for full size. - * - * wp_video_shortcode() limits the width to 640px. - * - * @since 4.6.0 - * @ignore - * - * @param $output Video shortcode HTML output. - * @return string Filtered HTML content to display video. - */ -function _wp_override_admin_video_width_limit( $output ) { - return str_replace( array( '640', '384' ), array( '1050', '630' ), $output ); -} - -$video_url = 'https://videopress.com/embed/GbdhpGF3?hd=true'; -$locale = str_replace( '_', '-', get_locale() ); -list( $locale ) = explode( '-', $locale ); -if ( 'en' !== $locale ) { - $video_url = add_query_arg( 'defaultLangCode', $locale, $video_url ); +$video_url = 'https://videopress.com/embed/AHz0Ca46?hd=true'; +$lang_code = str_replace( '_', '-', get_user_locale() ); +list( $lang_code ) = explode( '-', $lang_code ); +if ( 'en' !== $lang_code ) { + $video_url = add_query_arg( 'defaultLangCode', $lang_code, $video_url ); } $title = __( 'About' ); -list( $display_version ) = explode( '-', $wp_version ); +list( $display_version ) = explode( '-', get_bloginfo( 'version' ) ); include( ABSPATH . 'wp-admin/admin-header.php' ); ?>

-

+

-
-

-

Version %1$s addressed some security issues and fixed %2$s bug.', - 'Version %1$s addressed some security issues and fixed %2$s bugs.', 15 ), '4.6.1', number_format_i18n( 15 ) ); ?> - the release notes.' ), 'https://codex.wordpress.org/Version_4.6.1' ); ?> -

-
-
-
+
-
-

-

- 'https://s.w.org/images/core/4.6/streamlined-updates.mp4', - 'webm' => 'https://s.w.org/images/core/4.6/streamlined-updates.webm', - 'poster' => 'https://s.w.org/images/core/4.6/streamlined-updates-2000.png?v1', - 'loop' => true, - 'autoplay' => true, - 'width' => 1050, - 'height' => 630, - 'class' => 'wp-video-shortcode feature-video', - ) ); - remove_filter( 'wp_video_shortcode', '_wp_override_admin_video_width_limit' ); - } else { - echo ''; - } - ?> +
+

+

+ + + + + +


-
-

-

- +
+

+

-
-
-

- -

-

+

+

- -

-

+ 'https://s.w.org/images/core/4.7/starter-content-v1.mp4', + 'poster' => 'https://s.w.org/images/core/4.7/starter-content.jpg?v2', + 'loop' => true, + 'autoplay' => true, + 'width' => 1140, + 'height' => 624, + // 'class' => 'wp-video-shortcode feature-video', + ) ); + ?>
+
+
+

+ 'https://s.w.org/images/core/4.7/edit-shortcuts-v1.mp4', + 'poster' => 'https://s.w.org/images/core/4.7/edit-shortcuts.jpg?v2', + 'loop' => true, + 'autoplay' => true, + 'width' => 2520, + 'height' => 1454, + // 'class' => 'wp-video-shortcode feature-video', + ) ); + ?> +

+
+
+

+ 'https://s.w.org/images/core/4.7/header-video-v1.mp4', + 'poster' => 'https://s.w.org/images/core/4.7/header-video.jpg?v2', + 'loop' => true, + 'autoplay' => true, + 'width' => 2520, + 'height' => 1454, + // 'class' => 'wp-video-shortcode feature-video', + ) ); + ?> +

+
+
+ +
+
+

+ +

+
+
+

+ +

+
+
+ +
+ +
+
+

+ +

+
+
+

+ +

+
+
+ +
+ +
+

+

+ +

Check out the REST API reference.' ), + 'https://developer.wordpress.org/rest-api/reference/' + ); + ?>

+
+
-

+

-

+

+

+
+
+

Resource hints help browsers decide which resources to fetch and preprocess. WordPress 4.6 adds them automatically for your styles and scripts making your site even faster.' ), - 'https://make.wordpress.org/core/2016/07/06/resource-hints-in-4-6/' + /* translators: %s: https://make.wordpress.org/core/2016/09/09/new-functions-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/ */ + __( 'WordPress 4.7 includes new functions, hooks, and behavior for theme developers.' ), + 'https://make.wordpress.org/core/2016/09/09/new-functions-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/' ); ?>

-

-

-
-
-

WP_Term_Query', 'WP_Post_Type' ); - ?>

-

WP_Term_Query', - 'WP_Post_Type' - ); - ?>

+

+

-

+

WP_Hook

has been expanded to support types, descriptions, and REST API visibility.' ), - 'https://make.wordpress.org/core/2016/07/08/enhancing-register_meta-in-4-6/' + /* translators: %s: https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/ */ + __( 'The code that lies beneath actions and filters has been overhauled and modernized, fixing bugs along the way.' ), + 'https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/' ); ?>

-

-

WordPress.org’s community of translators.' ); ?>

+

+

has been enhanced to include type, description, and REST API visibility.' ), + 'register_setting()', + 'https://make.wordpress.org/core/2016/10/26/registering-your-settings-in-wordpress-4-7/' + ); + ?>

-

-

+

+

-
-
-

-

API for enforcing validation constraints. Likewise, customizer controls now support notifications, which are used to display validation errors instead of failing silently.' ); ?>

-
-
-

-

WP_Site_Query', - 'WP_Network_Query' - ); - ?>

-
-

diff --git a/wp/wp-admin/admin-footer.php b/wp/wp-admin/admin-footer.php index f32ce07e..111d4d23 100644 --- a/wp/wp-admin/admin-footer.php +++ b/wp/wp-admin/admin-footer.php @@ -83,7 +83,7 @@ do_action( 'admin_footer', '' ); * * @param string $hook_suffix The current admin page. */ -do_action( "admin_print_footer_scripts-$hook_suffix" ); +do_action( "admin_print_footer_scripts-{$hook_suffix}" ); /** * Prints any scripts and data queued for the footer. @@ -103,7 +103,7 @@ do_action( 'admin_print_footer_scripts' ); * @global string $hook_suffix * @param string $hook_suffix The current admin page. */ -do_action( "admin_footer-$hook_suffix" ); +do_action( "admin_footer-{$hook_suffix}" ); // get_site_option() won't exist when auto upgrading from <= 2.7 if ( function_exists('get_site_option') ) { diff --git a/wp/wp-admin/admin-header.php b/wp/wp-admin/admin-header.php index 17dc162b..d5ceeccd 100644 --- a/wp/wp-admin/admin-header.php +++ b/wp/wp-admin/admin-header.php @@ -18,12 +18,11 @@ if ( ! defined( 'WP_ADMIN' ) ) * @global WP_Screen $current_screen * @global WP_Locale $wp_locale * @global string $pagenow - * @global string $wp_version * @global string $update_title * @global int $total_update_count * @global string $parent_file */ -global $title, $hook_suffix, $current_screen, $wp_locale, $pagenow, $wp_version, +global $title, $hook_suffix, $current_screen, $wp_locale, $pagenow, $update_title, $total_update_count, $parent_file; // Catch plugins that include admin-header.php before admin.php completes. @@ -33,17 +32,23 @@ if ( empty( $current_screen ) ) get_admin_page_title(); $title = esc_html( strip_tags( $title ) ); -if ( is_network_admin() ) - $admin_title = sprintf( __( 'Network Admin: %s' ), esc_html( get_current_site()->site_name ) ); -elseif ( is_user_admin() ) - $admin_title = sprintf( __( 'User Dashboard: %s' ), esc_html( get_current_site()->site_name ) ); -else +if ( is_network_admin() ) { + /* translators: Network admin screen title. 1: Network name */ + $admin_title = sprintf( __( 'Network Admin: %s' ), esc_html( get_network()->site_name ) ); +} elseif ( is_user_admin() ) { + /* translators: User dashboard screen title. 1: Network name */ + $admin_title = sprintf( __( 'User Dashboard: %s' ), esc_html( get_network()->site_name ) ); +} else { $admin_title = get_bloginfo( 'name' ); +} -if ( $admin_title == $title ) +if ( $admin_title == $title ) { + /* translators: Admin screen title. 1: Admin screen name */ $admin_title = sprintf( __( '%1$s — WordPress' ), $title ); -else +} else { + /* translators: Admin screen title. 1: Admin screen name, 2: Network or site name */ $admin_title = sprintf( __( '%1$s ‹ %2$s — WordPress' ), $title, $admin_title ); +} /** * Filters the title tag content for an admin page. @@ -96,7 +101,7 @@ do_action( 'admin_enqueue_scripts', $hook_suffix ); * * @since 2.6.0 */ -do_action( "admin_print_styles-$hook_suffix" ); +do_action( "admin_print_styles-{$hook_suffix}" ); /** * Fires when styles are printed for all admin pages. @@ -110,7 +115,7 @@ do_action( 'admin_print_styles' ); * * @since 2.1.0 */ -do_action( "admin_print_scripts-$hook_suffix" ); +do_action( "admin_print_scripts-{$hook_suffix}" ); /** * Fires when scripts are printed for all admin pages. @@ -127,7 +132,7 @@ do_action( 'admin_print_scripts' ); * * @since 2.1.0 */ -do_action( "admin_head-$hook_suffix" ); +do_action( "admin_head-{$hook_suffix}" ); /** * Fires in head section for all admin pages. @@ -154,10 +159,10 @@ if ( $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 .= ' branch-' . str_replace( array( '.', ',' ), '-', floatval( get_bloginfo( 'version' ) ) ); +$admin_body_class .= ' version-' . str_replace( '.', '-', preg_replace( '/^([.0-9]+).*/', '$1', get_bloginfo( 'version' ) ) ); $admin_body_class .= ' admin-color-' . sanitize_html_class( get_user_option( 'admin_color' ), 'fresh' ); -$admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) ); +$admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_user_locale() ) ) ); if ( wp_is_mobile() ) $admin_body_class .= ' mobile'; diff --git a/wp/wp-admin/admin.php b/wp/wp-admin/admin.php index ad341c88..2dd315da 100644 --- a/wp/wp-admin/admin.php +++ b/wp/wp-admin/admin.php @@ -209,7 +209,7 @@ if ( isset($plugin_page) ) { * * @since 2.1.0 */ - do_action( 'load-' . $page_hook ); + do_action( "load-{$page_hook}" ); if (! isset($_GET['noheader'])) require_once(ABSPATH . 'wp-admin/admin-header.php'); @@ -239,7 +239,7 @@ if ( isset($plugin_page) ) { * * @since 1.5.0 */ - do_action( 'load-' . $plugin_page ); + do_action( "load-{$plugin_page}" ); if ( !isset($_GET['noheader'])) require_once(ABSPATH . 'wp-admin/admin-header.php'); @@ -278,7 +278,7 @@ if ( isset($plugin_page) ) { * * @since 3.5.0 */ - do_action( 'load-importer-' . $importer ); + do_action( "load-importer-{$importer}" ); $parent_file = 'tools.php'; $submenu_file = 'import.php'; @@ -326,7 +326,7 @@ if ( isset($plugin_page) ) { * * @since 2.1.0 */ - do_action( 'load-' . $pagenow ); + do_action( "load-{$pagenow}" ); /* * The following hooks are fired to ensure backward compatibility. diff --git a/wp/wp-admin/comment.php b/wp/wp-admin/comment.php index aa2e0543..c2eca11e 100644 --- a/wp/wp-admin/comment.php +++ b/wp/wp-admin/comment.php @@ -48,8 +48,8 @@ case 'editcomment' : get_current_screen()->set_help_sidebar( '

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

' . - '

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

' . - '

' . __( 'Support Forums' ) . '

' + '

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

' . + '

' . __( 'Support Forums' ) . '

' ); wp_enqueue_script('comment'); @@ -213,7 +213,7 @@ if ( $comment->comment_approved != '0' ) { // if not unapproved -

comment_ID}" ); ?>">

+

comment_ID}" ); ?>">

@@ -222,7 +222,7 @@ if ( $comment->comment_approved != '0' ) { // if not unapproved

- +

diff --git a/wp/wp-admin/credits.php b/wp/wp-admin/credits.php index 3f5afc9e..5938e951 100644 --- a/wp/wp-admin/credits.php +++ b/wp/wp-admin/credits.php @@ -12,7 +12,7 @@ require_once( dirname( __FILE__ ) . '/includes/credits.php' ); $title = __( 'Credits' ); -list( $display_version ) = explode( '-', $wp_version ); +list( $display_version ) = explode( '-', get_bloginfo( 'version' ) ); include( ABSPATH . 'wp-admin/admin-header.php' ); ?> @@ -20,7 +20,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );

-

+

diff --git a/wp/wp-admin/css/about-rtl.css b/wp/wp-admin/css/about-rtl.css index d9a3aa19..75bfc4b8 100644 --- a/wp/wp-admin/css/about-rtl.css +++ b/wp/wp-admin/css/about-rtl.css @@ -40,6 +40,7 @@ max-width: 100%; height: auto; vertical-align: middle; + border: 1px solid rgba(0, 0, 0, 0.1); } .about-wrap .jetpack-video-wrapper { @@ -93,7 +94,7 @@ } .about-wrap .feature-section p { - max-width: 38em; + max-width: 55em; margin-right: auto; margin-left: auto; } @@ -108,8 +109,8 @@ } .about-wrap h2 { - margin: 50px 0 1em; - font-size: 1.8em; + margin: 40px 0 .6em; + font-size: 2.7em; line-height: 1.3; font-weight: 300; text-align: center; @@ -117,7 +118,7 @@ .about-wrap h3 { margin: 1.25em 0 .6em; - font-size: 1.25em; + font-size: 1.4em; line-height: 1.5; } @@ -125,6 +126,12 @@ color: #23282d; } +.about-wrap .changelog h2 { + font-size: 1.4em; + font-weight: 600; + text-align: right; +} + .about-wrap .changelog h3 { margin: 1.33em 0; font-size: 1em; @@ -193,11 +200,6 @@ overflow: hidden; } -.about-wrap .under-the-hood:nth-of-type(2n), -.about-wrap .under-the-hood:nth-of-type(3n) { - margin-top: 3em; -} - .about-wrap .feature-video .mejs-controls { display: none !important; } @@ -227,19 +229,6 @@ /* 2.1 - Typography */ -.about-wrap .headline-feature h2 { - margin: 30px 0 30px; - font-size: 2.2em; - font-weight: 300; - line-height: 1.3; - text-align: center; -} - -.about-wrap .headline-feature h3 { - margin-top: 0; - text-align: right; -} - .about-wrap .feature-section.two-col h3 { margin-top: 0; } @@ -253,6 +242,11 @@ margin-top: 0.6em; } +.about-wrap .lead-description { + font-size: 1.5em; + text-align: center; +} + .about-wrap .two-col-text { -webkit-column-count: 2; -moz-column-count: 2; @@ -300,6 +294,10 @@ padding: 0 0 40px; } +.about-wrap .feature-section.no-heading { + padding-top: 35px; +} + .about-wrap .headline-feature { margin: 0 auto; max-width: 80%; @@ -309,6 +307,10 @@ overflow: hidden; } +.about-wrap .feature-section img { + margin-bottom: 1em; +} + .about-wrap .embed-container { text-align: center; } diff --git a/wp/wp-admin/css/about-rtl.min.css b/wp/wp-admin/css/about-rtl.min.css index 899570bb..18931613 100644 --- a/wp/wp-admin/css/about-rtl.min.css +++ b/wp/wp-admin/css/about-rtl.min.css @@ -1 +1 @@ -.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=20160308) center 25px no-repeat #0073aa;-webkit-background-size:80px 80px;background-size:80px 80px;color:#fff;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:140px;text-rendering:optimizeLegibility;-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=20160308)}.about-wrap .wp-badge{position:absolute;top:0;left:0}.about-wrap .nav-tab{padding-left:15px;padding-right:15px;font-size:18px}.about-wrap p{line-height:1.5;font-size:14px}.about-wrap .feature-section p{max-width:38em;margin-right:auto;margin-left:auto}.about-wrap h1{margin:.2em 0 0 200px;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.about-wrap h2{margin:50px 0 1em;font-size:1.8em;line-height:1.3;font-weight:300;text-align:center}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.25em;line-height:1.5}.about-wrap h4{color:#23282d}.about-wrap .changelog h3{margin:1.33em 0;font-size:1em;line-height:inherit;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:#555d66}.about-wrap [class$=col] .col{float:right;position:relative}.about-wrap .two-col .col{margin-left:4.799999999%;width:47.6%}.about-wrap .two-col img{margin-bottom:1.5em}.about-wrap .feature-section.two-col .col{display:inline-block;float:none;margin-top:1em;margin-left:4.799999999%;width:-webkit-calc(47.6% - 4px);width:calc(47.6% - 4px);vertical-align:top}.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 .under-the-hood{clear:both;overflow:hidden}.about-wrap .under-the-hood:nth-of-type(2n),.about-wrap .under-the-hood:nth-of-type(3n){margin-top:3em}.about-wrap .feature-video .mejs-controls{display:none!important}.about-wrap .feature-video .mejs-overlay-loading span{background:0 0}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #ddd}.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:30px 0;font-size:2.2em;font-weight:300;line-height:1.3;text-align:center}.about-wrap .headline-feature h3{margin-top:0;text-align:right}.about-wrap .embed-container,.about-wrap .featured-image{text-align:center}.about-wrap .feature-section.two-col h3{margin-top:0}.about-wrap .feature-section h4{margin:1.4em 0 .6em;font-size:1em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .two-col-text{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:40px;-moz-column-gap:40px;column-gap:40px}.about-wrap .two-col-text p:first-of-type{margin-top:0}.about-wrap .native-fonts p,.about-wrap .streamlined-updates p{margin-bottom:3em}.about-wrap .headline-feature.feature-video{position:relative;margin:40px 0;padding-bottom:56.25%;width:100%;max-width:100%;height:0;text-align:center}.about-wrap .feature-video embed{position:absolute;top:0;right:0;width:100%;height:100%}.about-wrap .feature-section{overflow:hidden;padding:0 0 40px}.about-wrap .headline-feature{margin:0 auto;max-width:80%}.about-wrap .changelog.feature-section .col,.about-wrap .feature-section .col{margin-top:40px}.about-wrap .feature-section .media-container{overflow:hidden}.about-wrap .embed-container iframe,.about-wrap .wp-embedded-content{max-width:100%}.about-wrap .changelog{margin-bottom:40px}.about-wrap .return-to-dashboard{margin:30px -5px 0 0;font-size:14px;font-weight:600}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h3.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit}.about-wrap .wp-people-group{padding:0 5px;margin:0 -5px 0 -15px}.about-wrap .compact{margin-bottom:0}.about-wrap .wp-person{display:inline-block;vertical-align:top;margin-left:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap .wp-person .gravatar{float:right;margin:0 0 10px 10px;padding:1px;width:60px;height:60px}.about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2em;text-decoration:none}.about-wrap .wp-person .title{display:block}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:600}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}@media screen and (max-width:782px){.about-wrap .two-col-text{-webkit-column-count:1;-moz-column-count:1;column-count:1}.about-wrap .three-col img{display:block;margin:0 auto}}@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 .three-col .col,.about-wrap .two-col .col{width:100%!important;float:none!important}.about-wrap .under-the-hood.one-col .col,.about-wrap .under-the-hood.three-col .col,.about-wrap .under-the-hood.two-col .col{margin-bottom:2em;padding-bottom:0}.about-wrap .under-the-hood:nth-of-type(2n),.about-wrap .under-the-hood:nth-of-type(3n){margin-top:0}.about-wrap .under-the-hood:nth-of-type(2n) h3,.about-wrap .under-the-hood:nth-of-type(3n) h3{margin-top:0}} \ No newline at end of file +.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;border:1px solid rgba(0,0,0,.1)}.about-wrap .jetpack-video-wrapper{margin-bottom:0}.wp-badge{background:url(../images/w-logo-white.png?ver=20160308) center 25px no-repeat #0073aa;-webkit-background-size:80px 80px;background-size:80px 80px;color:#fff;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:140px;text-rendering:optimizeLegibility;-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=20160308)}.about-wrap .wp-badge{position:absolute;top:0;left:0}.about-wrap .nav-tab{padding-left:15px;padding-right:15px;font-size:18px}.about-wrap p{line-height:1.5;font-size:14px}.about-wrap .feature-section p{max-width:55em;margin-right:auto;margin-left:auto}.about-wrap h1{margin:.2em 0 0 200px;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.about-wrap h4{color:#23282d}.about-wrap .changelog h2{font-size:1.4em;font-weight:600;text-align:right}.about-wrap .embed-container,.about-wrap .featured-image,.about-wrap .lead-description{text-align:center}.about-wrap .changelog h3{margin:1.33em 0;font-size:1em;line-height:inherit;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:#555d66}.about-wrap [class$=col] .col{float:right;position:relative}.about-wrap .two-col .col{margin-left:4.799999999%;width:47.6%}.about-wrap .two-col img{margin-bottom:1.5em}.about-wrap .feature-section.two-col .col{display:inline-block;float:none;margin-top:1em;margin-left:4.799999999%;width:-webkit-calc(47.6% - 4px);width:calc(47.6% - 4px);vertical-align:top}.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 .under-the-hood{clear:both;overflow:hidden}.about-wrap .feature-video .mejs-controls{display:none!important}.about-wrap .feature-video .mejs-overlay-loading span{background:0 0}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #ddd}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .feature-section.two-col h3{margin-top:0}.about-wrap .feature-section h4{margin:1.4em 0 .6em;font-size:1em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .lead-description{font-size:1.5em}.about-wrap .two-col-text{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:40px;-moz-column-gap:40px;column-gap:40px}.about-wrap .two-col-text p:first-of-type{margin-top:0}.about-wrap .native-fonts p,.about-wrap .streamlined-updates p{margin-bottom:3em}.about-wrap .headline-feature.feature-video{position:relative;margin:40px 0;padding-bottom:56.25%;width:100%;max-width:100%;height:0;text-align:center}.about-wrap .feature-video embed{position:absolute;top:0;right:0;width:100%;height:100%}.about-wrap .feature-section{overflow:hidden;padding:0 0 40px}.about-wrap .feature-section.no-heading{padding-top:35px}.about-wrap .headline-feature{margin:0 auto;max-width:80%}.about-wrap .changelog.feature-section .col,.about-wrap .feature-section .col{margin-top:40px}.about-wrap .feature-section .media-container{overflow:hidden}.about-wrap .feature-section img{margin-bottom:1em}.about-wrap .embed-container iframe,.about-wrap .wp-embedded-content{max-width:100%}.about-wrap .changelog{margin-bottom:40px}.about-wrap .return-to-dashboard{margin:30px -5px 0 0;font-size:14px;font-weight:600}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h3.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit}.about-wrap .wp-people-group{padding:0 5px;margin:0 -5px 0 -15px}.about-wrap .compact{margin-bottom:0}.about-wrap .wp-person{display:inline-block;vertical-align:top;margin-left:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap .wp-person .gravatar{float:right;margin:0 0 10px 10px;padding:1px;width:60px;height:60px}.about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2em;text-decoration:none}.about-wrap .wp-person .title{display:block}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:600}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}@media screen and (max-width:782px){.about-wrap .two-col-text{-webkit-column-count:1;-moz-column-count:1;column-count:1}.about-wrap .three-col img{display:block;margin:0 auto}}@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 .three-col .col,.about-wrap .two-col .col{width:100%!important;float:none!important}.about-wrap .under-the-hood.one-col .col,.about-wrap .under-the-hood.three-col .col,.about-wrap .under-the-hood.two-col .col{margin-bottom:2em;padding-bottom:0}.about-wrap .under-the-hood:nth-of-type(2n),.about-wrap .under-the-hood:nth-of-type(3n){margin-top:0}.about-wrap .under-the-hood:nth-of-type(2n) h3,.about-wrap .under-the-hood:nth-of-type(3n) h3{margin-top:0}} \ No newline at end of file diff --git a/wp/wp-admin/css/about.css b/wp/wp-admin/css/about.css index 8995e031..2dc72f53 100644 --- a/wp/wp-admin/css/about.css +++ b/wp/wp-admin/css/about.css @@ -40,6 +40,7 @@ max-width: 100%; height: auto; vertical-align: middle; + border: 1px solid rgba(0, 0, 0, 0.1); } .about-wrap .jetpack-video-wrapper { @@ -93,7 +94,7 @@ } .about-wrap .feature-section p { - max-width: 38em; + max-width: 55em; margin-left: auto; margin-right: auto; } @@ -108,8 +109,8 @@ } .about-wrap h2 { - margin: 50px 0 1em; - font-size: 1.8em; + margin: 40px 0 .6em; + font-size: 2.7em; line-height: 1.3; font-weight: 300; text-align: center; @@ -117,7 +118,7 @@ .about-wrap h3 { margin: 1.25em 0 .6em; - font-size: 1.25em; + font-size: 1.4em; line-height: 1.5; } @@ -125,6 +126,12 @@ color: #23282d; } +.about-wrap .changelog h2 { + font-size: 1.4em; + font-weight: 600; + text-align: left; +} + .about-wrap .changelog h3 { margin: 1.33em 0; font-size: 1em; @@ -193,11 +200,6 @@ overflow: hidden; } -.about-wrap .under-the-hood:nth-of-type(2n), -.about-wrap .under-the-hood:nth-of-type(3n) { - margin-top: 3em; -} - .about-wrap .feature-video .mejs-controls { display: none !important; } @@ -227,19 +229,6 @@ /* 2.1 - Typography */ -.about-wrap .headline-feature h2 { - margin: 30px 0 30px; - font-size: 2.2em; - font-weight: 300; - line-height: 1.3; - text-align: center; -} - -.about-wrap .headline-feature h3 { - margin-top: 0; - text-align: left; -} - .about-wrap .feature-section.two-col h3 { margin-top: 0; } @@ -253,6 +242,11 @@ margin-top: 0.6em; } +.about-wrap .lead-description { + font-size: 1.5em; + text-align: center; +} + .about-wrap .two-col-text { -webkit-column-count: 2; -moz-column-count: 2; @@ -300,6 +294,10 @@ padding: 0 0 40px; } +.about-wrap .feature-section.no-heading { + padding-top: 35px; +} + .about-wrap .headline-feature { margin: 0 auto; max-width: 80%; @@ -309,6 +307,10 @@ overflow: hidden; } +.about-wrap .feature-section img { + margin-bottom: 1em; +} + .about-wrap .embed-container { text-align: center; } diff --git a/wp/wp-admin/css/about.min.css b/wp/wp-admin/css/about.min.css index 7bcbe5fc..4488c0c0 100644 --- a/wp/wp-admin/css/about.min.css +++ b/wp/wp-admin/css/about.min.css @@ -1 +1 @@ -.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=20160308) center 25px no-repeat #0073aa;-webkit-background-size:80px 80px;background-size:80px 80px;color:#fff;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:140px;text-rendering:optimizeLegibility;-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=20160308)}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap .nav-tab{padding-right:15px;padding-left:15px;font-size:18px}.about-wrap p{line-height:1.5;font-size:14px}.about-wrap .feature-section p{max-width:38em;margin-left:auto;margin-right:auto}.about-wrap h1{margin:.2em 200px 0 0;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.about-wrap h2{margin:50px 0 1em;font-size:1.8em;line-height:1.3;font-weight:300;text-align:center}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.25em;line-height:1.5}.about-wrap h4{color:#23282d}.about-wrap .changelog h3{margin:1.33em 0;font-size:1em;line-height:inherit;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:#555d66}.about-wrap [class$=col] .col{float:left;position:relative}.about-wrap .two-col .col{margin-right:4.799999999%;width:47.6%}.about-wrap .two-col img{margin-bottom:1.5em}.about-wrap .feature-section.two-col .col{display:inline-block;float:none;margin-top:1em;margin-right:4.799999999%;width:-webkit-calc(47.6% - 4px);width:calc(47.6% - 4px);vertical-align:top}.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 .under-the-hood{clear:both;overflow:hidden}.about-wrap .under-the-hood:nth-of-type(2n),.about-wrap .under-the-hood:nth-of-type(3n){margin-top:3em}.about-wrap .feature-video .mejs-controls{display:none!important}.about-wrap .feature-video .mejs-overlay-loading span{background:0 0}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #ddd}.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:30px 0;font-size:2.2em;font-weight:300;line-height:1.3;text-align:center}.about-wrap .headline-feature h3{margin-top:0;text-align:left}.about-wrap .embed-container,.about-wrap .featured-image{text-align:center}.about-wrap .feature-section.two-col h3{margin-top:0}.about-wrap .feature-section h4{margin:1.4em 0 .6em;font-size:1em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .two-col-text{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:40px;-moz-column-gap:40px;column-gap:40px}.about-wrap .two-col-text p:first-of-type{margin-top:0}.about-wrap .native-fonts p,.about-wrap .streamlined-updates p{margin-bottom:3em}.about-wrap .headline-feature.feature-video{position:relative;margin:40px 0;padding-bottom:56.25%;width:100%;max-width:100%;height:0;text-align:center}.about-wrap .feature-video embed{position:absolute;top:0;left:0;width:100%;height:100%}.about-wrap .feature-section{overflow:hidden;padding:0 0 40px}.about-wrap .headline-feature{margin:0 auto;max-width:80%}.about-wrap .changelog.feature-section .col,.about-wrap .feature-section .col{margin-top:40px}.about-wrap .feature-section .media-container{overflow:hidden}.about-wrap .embed-container iframe,.about-wrap .wp-embedded-content{max-width:100%}.about-wrap .changelog{margin-bottom:40px}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:600}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h3.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit}.about-wrap .wp-people-group{padding:0 5px;margin:0 -15px 0 -5px}.about-wrap .compact{margin-bottom:0}.about-wrap .wp-person{display:inline-block;vertical-align:top;margin-right:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap .wp-person .gravatar{float:left;margin:0 10px 10px 0;padding:1px;width:60px;height:60px}.about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2em;text-decoration:none}.about-wrap .wp-person .title{display:block}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:600}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}@media screen and (max-width:782px){.about-wrap .two-col-text{-webkit-column-count:1;-moz-column-count:1;column-count:1}.about-wrap .three-col img{display:block;margin:0 auto}}@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 .three-col .col,.about-wrap .two-col .col{width:100%!important;float:none!important}.about-wrap .under-the-hood.one-col .col,.about-wrap .under-the-hood.three-col .col,.about-wrap .under-the-hood.two-col .col{margin-bottom:2em;padding-bottom:0}.about-wrap .under-the-hood:nth-of-type(2n),.about-wrap .under-the-hood:nth-of-type(3n){margin-top:0}.about-wrap .under-the-hood:nth-of-type(2n) h3,.about-wrap .under-the-hood:nth-of-type(3n) h3{margin-top:0}} \ No newline at end of file +.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;border:1px solid rgba(0,0,0,.1)}.about-wrap .jetpack-video-wrapper{margin-bottom:0}.wp-badge{background:url(../images/w-logo-white.png?ver=20160308) center 25px no-repeat #0073aa;-webkit-background-size:80px 80px;background-size:80px 80px;color:#fff;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:140px;text-rendering:optimizeLegibility;-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=20160308)}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap .nav-tab{padding-right:15px;padding-left:15px;font-size:18px}.about-wrap p{line-height:1.5;font-size:14px}.about-wrap .feature-section p{max-width:55em;margin-left:auto;margin-right:auto}.about-wrap h1{margin:.2em 200px 0 0;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.about-wrap h4{color:#23282d}.about-wrap .changelog h2{font-size:1.4em;font-weight:600;text-align:left}.about-wrap .embed-container,.about-wrap .featured-image,.about-wrap .lead-description{text-align:center}.about-wrap .changelog h3{margin:1.33em 0;font-size:1em;line-height:inherit;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:#555d66}.about-wrap [class$=col] .col{float:left;position:relative}.about-wrap .two-col .col{margin-right:4.799999999%;width:47.6%}.about-wrap .two-col img{margin-bottom:1.5em}.about-wrap .feature-section.two-col .col{display:inline-block;float:none;margin-top:1em;margin-right:4.799999999%;width:-webkit-calc(47.6% - 4px);width:calc(47.6% - 4px);vertical-align:top}.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 .under-the-hood{clear:both;overflow:hidden}.about-wrap .feature-video .mejs-controls{display:none!important}.about-wrap .feature-video .mejs-overlay-loading span{background:0 0}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #ddd}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .feature-section.two-col h3{margin-top:0}.about-wrap .feature-section h4{margin:1.4em 0 .6em;font-size:1em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .lead-description{font-size:1.5em}.about-wrap .two-col-text{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:40px;-moz-column-gap:40px;column-gap:40px}.about-wrap .two-col-text p:first-of-type{margin-top:0}.about-wrap .native-fonts p,.about-wrap .streamlined-updates p{margin-bottom:3em}.about-wrap .headline-feature.feature-video{position:relative;margin:40px 0;padding-bottom:56.25%;width:100%;max-width:100%;height:0;text-align:center}.about-wrap .feature-video embed{position:absolute;top:0;left:0;width:100%;height:100%}.about-wrap .feature-section{overflow:hidden;padding:0 0 40px}.about-wrap .feature-section.no-heading{padding-top:35px}.about-wrap .headline-feature{margin:0 auto;max-width:80%}.about-wrap .changelog.feature-section .col,.about-wrap .feature-section .col{margin-top:40px}.about-wrap .feature-section .media-container{overflow:hidden}.about-wrap .feature-section img{margin-bottom:1em}.about-wrap .embed-container iframe,.about-wrap .wp-embedded-content{max-width:100%}.about-wrap .changelog{margin-bottom:40px}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:600}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h3.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit}.about-wrap .wp-people-group{padding:0 5px;margin:0 -15px 0 -5px}.about-wrap .compact{margin-bottom:0}.about-wrap .wp-person{display:inline-block;vertical-align:top;margin-right:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap .wp-person .gravatar{float:left;margin:0 10px 10px 0;padding:1px;width:60px;height:60px}.about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2em;text-decoration:none}.about-wrap .wp-person .title{display:block}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:600}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}@media screen and (max-width:782px){.about-wrap .two-col-text{-webkit-column-count:1;-moz-column-count:1;column-count:1}.about-wrap .three-col img{display:block;margin:0 auto}}@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 .three-col .col,.about-wrap .two-col .col{width:100%!important;float:none!important}.about-wrap .under-the-hood.one-col .col,.about-wrap .under-the-hood.three-col .col,.about-wrap .under-the-hood.two-col .col{margin-bottom:2em;padding-bottom:0}.about-wrap .under-the-hood:nth-of-type(2n),.about-wrap .under-the-hood:nth-of-type(3n){margin-top:0}.about-wrap .under-the-hood:nth-of-type(2n) h3,.about-wrap .under-the-hood:nth-of-type(3n) h3{margin-top:0}} \ No newline at end of file diff --git a/wp/wp-admin/css/admin-menu-rtl.css b/wp/wp-admin/css/admin-menu-rtl.css index ac231f9c..09f9dd02 100644 --- a/wp/wp-admin/css/admin-menu-rtl.css +++ b/wp/wp-admin/css/admin-menu-rtl.css @@ -264,7 +264,7 @@ .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 { +.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu { top: 0; right: 36px; } @@ -547,79 +547,82 @@ ul#adminmenu > li.current > a.current:after { display: none; } -#collapse-menu { - font-size: 13px; +#collapse-button { + display: block; + width: 100%; + height: 34px; + margin: 0; + border: none; + padding: 0; + position: relative; + overflow: visible; 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; + background: none; + color: #aaa; + cursor: pointer; + outline: 0; } -#collapse-menu:hover, -#collapse-menu:hover #collapse-button div:after { +#collapse-button:hover, +#collapse-button:focus { color: #00b9eb; } -.folded #collapse-menu span { +#collapse-button .collapse-button-icon, +#collapse-button .collapse-button-label { + /* absolutely positioned to avoid 1px shift in IE when button is pressed */ + display: block; + position: absolute; + top: 0; + right: 0; + line-height: 34px; +} + +#collapse-button .collapse-button-icon { + width: 36px; + height: 34px; +} + +#collapse-button .collapse-button-label { + padding: 0 36px 0 0; +} + +.folded #collapse-button .collapse-button-label { display: none; } -#collapse-button, -#collapse-button 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 { +#collapse-button .collapse-button-icon:after { content: "\f148"; display: block; - line-height: 15px; - right: -3px; - top: -3px; - color: #a0a5aa; - color: rgba(240,245,250,0.6); + position: relative; + top: 7px; + text-align: center; 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 { +.folded #collapse-button .collapse-button-icon:after, +.rtl #collapse-button .collapse-button-icon:after { -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } -.rtl.folded #collapse-button div:after { +.rtl.folded #collapse-button .collapse-button-icon:after { -webkit-transform: none; -ms-transform: none; transform: none; } +#collapse-button .collapse-button-icon:after, +#collapse-button .collapse-button-label { + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; +} + /** * Toolbar menu toggle */ @@ -652,7 +655,7 @@ li#wp-admin-bar-menu-toggle { .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 { + .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu { top: 0px; right: 36px; } @@ -731,22 +734,18 @@ li#wp-admin-bar-menu-toggle { z-index: 10000; } - .auto-fold #collapse-menu span { + .auto-fold #collapse-menu .collapse-button-label { display: none; } - .auto-fold #collapse-button div { - background: none; - } - /* rtl:ignore */ - .auto-fold #collapse-button div:after { + .auto-fold #collapse-button .collapse-button-icon:after { -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } - .rtl.auto-fold #collapse-button div:after { + .rtl.auto-fold #collapse-button .collapse-button-icon:after { -webkit-transform: none; -ms-transform: none; transform: none; diff --git a/wp/wp-admin/css/admin-menu-rtl.min.css b/wp/wp-admin/css/admin-menu-rtl.min.css index 4a51af5b..0ec7756c 100644 --- a/wp/wp-admin/css/admin-menu-rtl.min.css +++ b/wp/wp-admin/css/admin-menu-rtl.min.css @@ -1 +1 @@ -#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{clear:right;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px;margin:-6px -8px 0 0;float:right}.icon16:before{color:#82878c;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:"\f541"}.icon16.icon-generic:before{content:"\f111"}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:right;z-index:9990}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;-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,.7)}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#00b9eb}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;right:160px;overflow:visible;word-wrap:break-word}#adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{padding:7px 0 8px;z-index:9999;background-color:#32373c;-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 #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: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: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 .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;right:-1px;left:0;top:0}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;right:4px;padding-left:10px;z-index:99999;border:none;-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}} \ No newline at end of file +#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{clear:right;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px;margin:-6px -8px 0 0;float:right}.icon16:before{color:#82878c;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:"\f541"}.icon16.icon-generic:before{content:"\f111"}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:right;z-index:9990}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;-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,.7)}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#00b9eb}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;right:160px;overflow:visible;word-wrap:break-word}#adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{padding:7px 0 8px;z-index:9999;background-color:#32373c;-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}#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 a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#00b9eb;color:#fff}#adminmenu li span.count-0{display:none}#collapse-button{display:block;width:100%;height:34px;margin:0;border:none;padding:0;position:relative;overflow:visible;line-height:34px;background:0 0;color:#aaa;cursor:pointer;outline:0}#collapse-button:focus,#collapse-button:hover{color:#00b9eb}#collapse-button .collapse-button-icon,#collapse-button .collapse-button-label{display:block;position:absolute;top:0;right:0;line-height:34px}#collapse-button .collapse-button-icon{width:36px;height:34px}#collapse-button .collapse-button-label{padding:0 36px 0 0}.folded #collapse-button .collapse-button-label{display:none}#collapse-button .collapse-button-icon:after{content:"\f148";display:block;position:relative;top:7px;text-align:center;font:400 20px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button .collapse-button-icon:after,.rtl #collapse-button .collapse-button-icon:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.folded #collapse-button .collapse-button-icon:after{-webkit-transform:none;-ms-transform:none;transform:none}#collapse-button .collapse-button-icon:after,#collapse-button .collapse-button-label{-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.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 #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:hover a.wp-has-current-submenu:after{display:none}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-menu .collapse-button-label{display:none}.auto-fold #collapse-button .collapse-button-icon:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.auto-fold #collapse-button .collapse-button-icon: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 .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;right:-1px;left:0;top:0}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;right:4px;padding-left:10px;z-index:99999;border:none;-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}} \ No newline at end of file diff --git a/wp/wp-admin/css/admin-menu.css b/wp/wp-admin/css/admin-menu.css index 2d556378..74b922ec 100644 --- a/wp/wp-admin/css/admin-menu.css +++ b/wp/wp-admin/css/admin-menu.css @@ -264,7 +264,7 @@ .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 { +.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu { top: 0; left: 36px; } @@ -547,79 +547,82 @@ ul#adminmenu > li.current > a.current:after { display: none; } -#collapse-menu { - font-size: 13px; +#collapse-button { + display: block; + width: 100%; + height: 34px; + margin: 0; + border: none; + padding: 0; + position: relative; + overflow: visible; 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; + background: none; + color: #aaa; + cursor: pointer; + outline: 0; } -#collapse-menu:hover, -#collapse-menu:hover #collapse-button div:after { +#collapse-button:hover, +#collapse-button:focus { color: #00b9eb; } -.folded #collapse-menu span { +#collapse-button .collapse-button-icon, +#collapse-button .collapse-button-label { + /* absolutely positioned to avoid 1px shift in IE when button is pressed */ + display: block; + position: absolute; + top: 0; + left: 0; + line-height: 34px; +} + +#collapse-button .collapse-button-icon { + width: 36px; + height: 34px; +} + +#collapse-button .collapse-button-label { + padding: 0 0 0 36px; +} + +.folded #collapse-button .collapse-button-label { display: none; } -#collapse-button, -#collapse-button 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 { +#collapse-button .collapse-button-icon:after { content: "\f148"; display: block; - line-height: 15px; - left: -3px; - top: -3px; - color: #a0a5aa; - color: rgba(240,245,250,0.6); + position: relative; + top: 7px; + text-align: center; 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 { +.folded #collapse-button .collapse-button-icon:after, +.rtl #collapse-button .collapse-button-icon:after { -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } -.rtl.folded #collapse-button div:after { +.rtl.folded #collapse-button .collapse-button-icon:after { -webkit-transform: none; -ms-transform: none; transform: none; } +#collapse-button .collapse-button-icon:after, +#collapse-button .collapse-button-label { + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; +} + /** * Toolbar menu toggle */ @@ -652,7 +655,7 @@ li#wp-admin-bar-menu-toggle { .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 { + .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu { top: 0px; left: 36px; } @@ -731,22 +734,18 @@ li#wp-admin-bar-menu-toggle { z-index: 10000; } - .auto-fold #collapse-menu span { + .auto-fold #collapse-menu .collapse-button-label { display: none; } - .auto-fold #collapse-button div { - background: none; - } - /* rtl:ignore */ - .auto-fold #collapse-button div:after { + .auto-fold #collapse-button .collapse-button-icon:after { -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } - .rtl.auto-fold #collapse-button div:after { + .rtl.auto-fold #collapse-button .collapse-button-icon:after { -webkit-transform: none; -ms-transform: none; transform: none; diff --git a/wp/wp-admin/css/admin-menu.min.css b/wp/wp-admin/css/admin-menu.min.css index 649eda8f..4db4daae 100644 --- a/wp/wp-admin/css/admin-menu.min.css +++ b/wp/wp-admin/css/admin-menu.min.css @@ -1 +1 @@ -#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{clear:left;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px;margin:-6px 0 0 -8px;float:left}.icon16:before{color:#82878c;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:"\f541"}.icon16.icon-generic:before{content:"\f111"}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:left;z-index:9990}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;-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,.7)}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#00b9eb}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;left:160px;overflow:visible;word-wrap:break-word}#adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{padding:7px 0 8px;z-index:9999;background-color:#32373c;-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 #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: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: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 .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;left:-1px;right:0;top:0}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;left:4px;padding-right:10px;z-index:99999;border:none;-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}} \ No newline at end of file +#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{clear:left;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px;margin:-6px 0 0 -8px;float:left}.icon16:before{color:#82878c;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:"\f541"}.icon16.icon-generic:before{content:"\f111"}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:left;z-index:9990}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;-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,.7)}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#00b9eb}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;left:160px;overflow:visible;word-wrap:break-word}#adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{padding:7px 0 8px;z-index:9999;background-color:#32373c;-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}#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 a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#00b9eb;color:#fff}#adminmenu li span.count-0{display:none}#collapse-button{display:block;width:100%;height:34px;margin:0;border:none;padding:0;position:relative;overflow:visible;line-height:34px;background:0 0;color:#aaa;cursor:pointer;outline:0}#collapse-button:focus,#collapse-button:hover{color:#00b9eb}#collapse-button .collapse-button-icon,#collapse-button .collapse-button-label{display:block;position:absolute;top:0;left:0;line-height:34px}#collapse-button .collapse-button-icon{width:36px;height:34px}#collapse-button .collapse-button-label{padding:0 0 0 36px}.folded #collapse-button .collapse-button-label{display:none}#collapse-button .collapse-button-icon:after{content:"\f148";display:block;position:relative;top:7px;text-align:center;font:400 20px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button .collapse-button-icon:after,.rtl #collapse-button .collapse-button-icon:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.folded #collapse-button .collapse-button-icon:after{-webkit-transform:none;-ms-transform:none;transform:none}#collapse-button .collapse-button-icon:after,#collapse-button .collapse-button-label{-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.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 #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:hover a.wp-has-current-submenu:after{display:none}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-menu .collapse-button-label{display:none}.auto-fold #collapse-button .collapse-button-icon:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.auto-fold #collapse-button .collapse-button-icon: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 .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;left:-1px;right:0;top:0}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;left:4px;padding-right:10px;z-index:99999;border:none;-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}} \ No newline at end of file diff --git a/wp/wp-admin/css/color-picker-rtl.css b/wp/wp-admin/css/color-picker-rtl.css index b502a0fd..b69714f4 100644 --- a/wp/wp-admin/css/color-picker-rtl.css +++ b/wp/wp-admin/css/color-picker-rtl.css @@ -124,3 +124,13 @@ border-color: #c00; color: #000; } + +.iris-picker .ui-square-handle:focus, +.iris-picker .iris-strip .ui-slider-handle: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); +} \ No newline at end of file diff --git a/wp/wp-admin/css/color-picker-rtl.min.css b/wp/wp-admin/css/color-picker-rtl.min.css index f14e2407..62d1055c 100644 --- a/wp/wp-admin/css/color-picker-rtl.min.css +++ b/wp/wp-admin/css/color-picker-rtl.min.css @@ -1 +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 #ccc;box-shadow:0 1px 0 #ccc;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}.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{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.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:#ddd;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;line-height:16px;margin:0}.wp-color-picker::-webkit-input-placeholder{color:#72777c}.wp-color-picker::-moz-placeholder{color:#72777c;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#72777c}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000} \ No newline at end of file +.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 #ccc;box-shadow:0 1px 0 #ccc;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}.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{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.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:#ddd;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;line-height:16px;margin:0}.wp-color-picker::-webkit-input-placeholder{color:#72777c}.wp-color-picker::-moz-placeholder{color:#72777c;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#72777c}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000}.iris-picker .iris-strip .ui-slider-handle:focus,.iris-picker .ui-square-handle:focus{-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)} \ No newline at end of file diff --git a/wp/wp-admin/css/color-picker.css b/wp/wp-admin/css/color-picker.css index 50edbdad..baa1d94c 100644 --- a/wp/wp-admin/css/color-picker.css +++ b/wp/wp-admin/css/color-picker.css @@ -124,3 +124,13 @@ border-color: #c00; color: #000; } + +.iris-picker .ui-square-handle:focus, +.iris-picker .iris-strip .ui-slider-handle: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); +} \ No newline at end of file diff --git a/wp/wp-admin/css/color-picker.min.css b/wp/wp-admin/css/color-picker.min.css index bfbcee14..2b96caf6 100644 --- a/wp/wp-admin/css/color-picker.min.css +++ b/wp/wp-admin/css/color-picker.min.css @@ -1 +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 #ccc;box-shadow:0 1px 0 #ccc;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}.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{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.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:#ddd;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;line-height:16px;margin:0}.wp-color-picker::-webkit-input-placeholder{color:#72777c}.wp-color-picker::-moz-placeholder{color:#72777c;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#72777c}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000} \ No newline at end of file +.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 #ccc;box-shadow:0 1px 0 #ccc;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}.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{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.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:#ddd;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;line-height:16px;margin:0}.wp-color-picker::-webkit-input-placeholder{color:#72777c}.wp-color-picker::-moz-placeholder{color:#72777c;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#72777c}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000}.iris-picker .iris-strip .ui-slider-handle:focus,.iris-picker .ui-square-handle:focus{-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)} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/_admin.scss b/wp/wp-admin/css/colors/_admin.scss index f03c211d..da53b008 100644 --- a/wp/wp-admin/css/colors/_admin.scss +++ b/wp/wp-admin/css/colors/_admin.scss @@ -3,7 +3,7 @@ @import 'mixins'; -html { +body { background: $body-background; } @@ -227,23 +227,15 @@ ul#adminmenu > li.current > a.current:after { /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: $menu-collapse-text; } -#collapse-menu:hover { - color: $menu-collapse-focus-text; +#collapse-button:hover, +#collapse-button:focus { + color: $menu-submenu-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 { @@ -324,6 +316,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -474,17 +467,6 @@ body.more-filters-opened .more-filters:focus:before { color: $menu-highlight-text; } -/* Customize */ - -#customize-theme-controls .widget-area-select .selected { - background-color: $menu-highlight-background; - color: $menu-highlight-text; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: $highlight-color; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { diff --git a/wp/wp-admin/css/colors/_mixins.scss b/wp/wp-admin/css/colors/_mixins.scss index c8213c18..b9dd2efe 100644 --- a/wp/wp-admin/css/colors/_mixins.scss +++ b/wp/wp-admin/css/colors/_mixins.scss @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -@mixin button( $button-color, $text-color: white ) { +@mixin button( $button-color, $text-color: #fff ) { background: $button-color; border-color: darken( $button-color, 10% ) darken( $button-color, 15% ) darken( $button-color, 15% ); color: $text-color; diff --git a/wp/wp-admin/css/colors/blue/colors-rtl.css b/wp/wp-admin/css/colors/blue/colors-rtl.css index dd214af2..0d757dff 100644 --- a/wp/wp-admin/css/colors/blue/colors-rtl.css +++ b/wp/wp-admin/css/colors/blue/colors-rtl.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #e1a948; border-color: #d39323 #bd831f #bd831f; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #bd831f; box-shadow: 0 1px 0 #bd831f; text-shadow: 0 -1px 1px #bd831f, -1px 0 1px #bd831f, 0 1px 1px #bd831f, 1px 0 1px #bd831f; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #e3af55; border-color: #bd831f; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #bd831f; box-shadow: 0 1px 0 #bd831f; } @@ -259,19 +259,12 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #e5f8ff; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #e5f8ff; -} - -#collapse-menu:hover #collapse-button div:after { +#collapse-button:hover, +#collapse-button:focus { color: #fff; } @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #096484; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #096484; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #e5f8ff; diff --git a/wp/wp-admin/css/colors/blue/colors-rtl.min.css b/wp/wp-admin/css/colors/blue/colors-rtl.min.css index 2bc550a8..715a331b 100644 --- a/wp/wp-admin/css/colors/blue/colors-rtl.min.css +++ b/wp/wp-admin/css/colors/blue/colors-rtl.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#096484}input[type=radio]:checked:before{background:#096484}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e1a948;border-color:#d39323 #bd831f #bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f;text-shadow:0 -1px 1px #bd831f,-1px 0 1px #bd831f,0 1px 1px #bd831f,1px 0 1px #bd831f}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;-webkit-box-shadow:inset 0 2px 0 #bd831f;box-shadow:inset 0 2px 0 #bd831f}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cdc7!important;background:#db9925!important;border-color:#bd831f!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #bd831f!important;box-shadow:0 2px 0 #bd831f!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #bd831f!important;box-shadow:inset 0 3px 0 #bd831f!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#52accc}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-menu{color:#e5f8ff}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#e5f8ff}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#096484}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#096484}input[type=radio]:checked:before{background:#096484}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e1a948;border-color:#d39323 #bd831f #bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f;text-shadow:0 -1px 1px #bd831f,-1px 0 1px #bd831f,0 1px 1px #bd831f,1px 0 1px #bd831f}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;-webkit-box-shadow:inset 0 2px 0 #bd831f;box-shadow:inset 0 2px 0 #bd831f}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cdc7!important;background:#db9925!important;border-color:#bd831f!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #bd831f!important;box-shadow:0 2px 0 #bd831f!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #bd831f!important;box-shadow:inset 0 3px 0 #bd831f!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#52accc}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-button{color:#e5f8ff}#collapse-button:focus,#collapse-button:hover{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/blue/colors.css b/wp/wp-admin/css/colors/blue/colors.css index 14835f8a..4f79db5f 100644 --- a/wp/wp-admin/css/colors/blue/colors.css +++ b/wp/wp-admin/css/colors/blue/colors.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #e1a948; border-color: #d39323 #bd831f #bd831f; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #bd831f; box-shadow: 0 1px 0 #bd831f; text-shadow: 0 -1px 1px #bd831f, 1px 0 1px #bd831f, 0 1px 1px #bd831f, -1px 0 1px #bd831f; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #e3af55; border-color: #bd831f; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #bd831f; box-shadow: 0 1px 0 #bd831f; } @@ -259,19 +259,12 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #e5f8ff; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #e5f8ff; -} - -#collapse-menu:hover #collapse-button div:after { +#collapse-button:hover, +#collapse-button:focus { color: #fff; } @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #096484; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #096484; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #e5f8ff; diff --git a/wp/wp-admin/css/colors/blue/colors.min.css b/wp/wp-admin/css/colors/blue/colors.min.css index 45d54dab..c3435bc4 100644 --- a/wp/wp-admin/css/colors/blue/colors.min.css +++ b/wp/wp-admin/css/colors/blue/colors.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#096484}input[type=radio]:checked:before{background:#096484}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e1a948;border-color:#d39323 #bd831f #bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f;text-shadow:0 -1px 1px #bd831f,1px 0 1px #bd831f,0 1px 1px #bd831f,-1px 0 1px #bd831f}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;-webkit-box-shadow:inset 0 2px 0 #bd831f;box-shadow:inset 0 2px 0 #bd831f}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cdc7!important;background:#db9925!important;border-color:#bd831f!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #bd831f!important;box-shadow:0 2px 0 #bd831f!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #bd831f!important;box-shadow:inset 0 3px 0 #bd831f!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#52accc}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-menu{color:#e5f8ff}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#e5f8ff}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#096484}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#096484}input[type=radio]:checked:before{background:#096484}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e1a948;border-color:#d39323 #bd831f #bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f;text-shadow:0 -1px 1px #bd831f,1px 0 1px #bd831f,0 1px 1px #bd831f,-1px 0 1px #bd831f}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;-webkit-box-shadow:inset 0 2px 0 #bd831f;box-shadow:inset 0 2px 0 #bd831f}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cdc7!important;background:#db9925!important;border-color:#bd831f!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #bd831f!important;box-shadow:0 2px 0 #bd831f!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #bd831f!important;box-shadow:inset 0 3px 0 #bd831f!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#52accc}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-button{color:#e5f8ff}#collapse-button:focus,#collapse-button:hover{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/coffee/colors-rtl.css b/wp/wp-admin/css/colors/coffee/colors-rtl.css index d82f7af8..7cfa4f16 100644 --- a/wp/wp-admin/css/colors/coffee/colors-rtl.css +++ b/wp/wp-admin/css/colors/coffee/colors-rtl.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #c7a589; border-color: #b78b66 #ae7d55 #ae7d55; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ae7d55; box-shadow: 0 1px 0 #ae7d55; text-shadow: 0 -1px 1px #ae7d55, -1px 0 1px #ae7d55, 0 1px 1px #ae7d55, 1px 0 1px #ae7d55; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #ccad93; border-color: #ae7d55; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ae7d55; box-shadow: 0 1px 0 #ae7d55; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #f3f2f1; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #f3f2f1; -} - -#collapse-menu:hover #collapse-button div:after { - color: #fff; +#collapse-button:hover, +#collapse-button:focus { + color: #c7a589; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #c7a589; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #c7a589; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f3f2f1; diff --git a/wp/wp-admin/css/colors/coffee/colors-rtl.min.css b/wp/wp-admin/css/colors/coffee/colors-rtl.min.css index 4530597f..2ef2bd09 100644 --- a/wp/wp-admin/css/colors/coffee/colors-rtl.min.css +++ b/wp/wp-admin/css/colors/coffee/colors-rtl.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#59524c}input[type=radio]:checked:before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#c7a589;border-color:#b78b66 #ae7d55 #ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55;text-shadow:0 -1px 1px #ae7d55,-1px 0 1px #ae7d55,0 1px 1px #ae7d55,1px 0 1px #ae7d55}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;-webkit-box-shadow:inset 0 2px 0 #ae7d55;box-shadow:inset 0 2px 0 #ae7d55}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1ccc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ae7d55!important;box-shadow:0 2px 0 #ae7d55!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ae7d55!important;box-shadow:inset 0 3px 0 #ae7d55!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-menu{color:#f3f2f1}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f3f2f1}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar #adminbarsearch:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#c7a589}div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f2f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#59524c}input[type=radio]:checked:before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#c7a589;border-color:#b78b66 #ae7d55 #ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55;text-shadow:0 -1px 1px #ae7d55,-1px 0 1px #ae7d55,0 1px 1px #ae7d55,1px 0 1px #ae7d55}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;-webkit-box-shadow:inset 0 2px 0 #ae7d55;box-shadow:inset 0 2px 0 #ae7d55}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1ccc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ae7d55!important;box-shadow:0 2px 0 #ae7d55!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ae7d55!important;box-shadow:inset 0 3px 0 #ae7d55!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-button{color:#f3f2f1}#collapse-button:focus,#collapse-button:hover{color:#c7a589}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar #adminbarsearch:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f2f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/coffee/colors.css b/wp/wp-admin/css/colors/coffee/colors.css index 7f3a63d8..7a1557b5 100644 --- a/wp/wp-admin/css/colors/coffee/colors.css +++ b/wp/wp-admin/css/colors/coffee/colors.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #c7a589; border-color: #b78b66 #ae7d55 #ae7d55; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ae7d55; box-shadow: 0 1px 0 #ae7d55; text-shadow: 0 -1px 1px #ae7d55, 1px 0 1px #ae7d55, 0 1px 1px #ae7d55, -1px 0 1px #ae7d55; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #ccad93; border-color: #ae7d55; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ae7d55; box-shadow: 0 1px 0 #ae7d55; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #f3f2f1; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #f3f2f1; -} - -#collapse-menu:hover #collapse-button div:after { - color: #fff; +#collapse-button:hover, +#collapse-button:focus { + color: #c7a589; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #c7a589; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #c7a589; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f3f2f1; diff --git a/wp/wp-admin/css/colors/coffee/colors.min.css b/wp/wp-admin/css/colors/coffee/colors.min.css index 9770f535..1a747fb1 100644 --- a/wp/wp-admin/css/colors/coffee/colors.min.css +++ b/wp/wp-admin/css/colors/coffee/colors.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#59524c}input[type=radio]:checked:before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#c7a589;border-color:#b78b66 #ae7d55 #ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55;text-shadow:0 -1px 1px #ae7d55,1px 0 1px #ae7d55,0 1px 1px #ae7d55,-1px 0 1px #ae7d55}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;-webkit-box-shadow:inset 0 2px 0 #ae7d55;box-shadow:inset 0 2px 0 #ae7d55}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1ccc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ae7d55!important;box-shadow:0 2px 0 #ae7d55!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ae7d55!important;box-shadow:inset 0 3px 0 #ae7d55!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-menu{color:#f3f2f1}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f3f2f1}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar #adminbarsearch:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#c7a589}div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f2f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#59524c}input[type=radio]:checked:before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#c7a589;border-color:#b78b66 #ae7d55 #ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55;text-shadow:0 -1px 1px #ae7d55,1px 0 1px #ae7d55,0 1px 1px #ae7d55,-1px 0 1px #ae7d55}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;-webkit-box-shadow:inset 0 2px 0 #ae7d55;box-shadow:inset 0 2px 0 #ae7d55}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1ccc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ae7d55!important;box-shadow:0 2px 0 #ae7d55!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ae7d55!important;box-shadow:inset 0 3px 0 #ae7d55!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-button{color:#f3f2f1}#collapse-button:focus,#collapse-button:hover{color:#c7a589}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar #adminbarsearch:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f2f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/ectoplasm/colors-rtl.css b/wp/wp-admin/css/colors/ectoplasm/colors-rtl.css index 17d5a423..6def77ab 100644 --- a/wp/wp-admin/css/colors/ectoplasm/colors-rtl.css +++ b/wp/wp-admin/css/colors/ectoplasm/colors-rtl.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #a3b745; border-color: #829237 #727f30 #727f30; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #727f30; box-shadow: 0 1px 0 #727f30; text-shadow: 0 -1px 1px #727f30, -1px 0 1px #727f30, 0 1px 1px #727f30, 1px 0 1px #727f30; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #a9bd4f; border-color: #727f30; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #727f30; box-shadow: 0 1px 0 #727f30; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #ece6f6; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #ece6f6; -} - -#collapse-menu:hover #collapse-button div:after { - color: #fff; +#collapse-button:hover, +#collapse-button:focus { + color: #a3b745; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #a3b745; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #a3b745; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #ece6f6; diff --git a/wp/wp-admin/css/colors/ectoplasm/colors-rtl.min.css b/wp/wp-admin/css/colors/ectoplasm/colors-rtl.min.css index 2ab769bd..10e741e5 100644 --- a/wp/wp-admin/css/colors/ectoplasm/colors-rtl.min.css +++ b/wp/wp-admin/css/colors/ectoplasm/colors-rtl.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#523f6d}input[type=radio]:checked:before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#a3b745;border-color:#829237 #727f30 #727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30;text-shadow:0 -1px 1px #727f30,-1px 0 1px #727f30,0 1px 1px #727f30,1px 0 1px #727f30}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;-webkit-box-shadow:inset 0 2px 0 #727f30;box-shadow:inset 0 2px 0 #727f30}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #727f30!important;box-shadow:0 2px 0 #727f30!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #727f30!important;box-shadow:inset 0 3px 0 #727f30!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#523f6d}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-menu{color:#ece6f6}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#ece6f6}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#a3b745}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#523f6d}input[type=radio]:checked:before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#a3b745;border-color:#829237 #727f30 #727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30;text-shadow:0 -1px 1px #727f30,-1px 0 1px #727f30,0 1px 1px #727f30,1px 0 1px #727f30}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;-webkit-box-shadow:inset 0 2px 0 #727f30;box-shadow:inset 0 2px 0 #727f30}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #727f30!important;box-shadow:0 2px 0 #727f30!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #727f30!important;box-shadow:inset 0 3px 0 #727f30!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#523f6d}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-button{color:#ece6f6}#collapse-button:focus,#collapse-button:hover{color:#a3b745}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/ectoplasm/colors.css b/wp/wp-admin/css/colors/ectoplasm/colors.css index 980a0c3b..b55ce975 100644 --- a/wp/wp-admin/css/colors/ectoplasm/colors.css +++ b/wp/wp-admin/css/colors/ectoplasm/colors.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #a3b745; border-color: #829237 #727f30 #727f30; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #727f30; box-shadow: 0 1px 0 #727f30; text-shadow: 0 -1px 1px #727f30, 1px 0 1px #727f30, 0 1px 1px #727f30, -1px 0 1px #727f30; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #a9bd4f; border-color: #727f30; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #727f30; box-shadow: 0 1px 0 #727f30; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #ece6f6; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #ece6f6; -} - -#collapse-menu:hover #collapse-button div:after { - color: #fff; +#collapse-button:hover, +#collapse-button:focus { + color: #a3b745; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #a3b745; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #a3b745; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #ece6f6; diff --git a/wp/wp-admin/css/colors/ectoplasm/colors.min.css b/wp/wp-admin/css/colors/ectoplasm/colors.min.css index afbf5d0a..e56354b4 100644 --- a/wp/wp-admin/css/colors/ectoplasm/colors.min.css +++ b/wp/wp-admin/css/colors/ectoplasm/colors.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#523f6d}input[type=radio]:checked:before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#a3b745;border-color:#829237 #727f30 #727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30;text-shadow:0 -1px 1px #727f30,1px 0 1px #727f30,0 1px 1px #727f30,-1px 0 1px #727f30}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;-webkit-box-shadow:inset 0 2px 0 #727f30;box-shadow:inset 0 2px 0 #727f30}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #727f30!important;box-shadow:0 2px 0 #727f30!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #727f30!important;box-shadow:inset 0 3px 0 #727f30!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#523f6d}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-menu{color:#ece6f6}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#ece6f6}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#a3b745}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#523f6d}input[type=radio]:checked:before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#a3b745;border-color:#829237 #727f30 #727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30;text-shadow:0 -1px 1px #727f30,1px 0 1px #727f30,0 1px 1px #727f30,-1px 0 1px #727f30}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;-webkit-box-shadow:inset 0 2px 0 #727f30;box-shadow:inset 0 2px 0 #727f30}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #727f30!important;box-shadow:0 2px 0 #727f30!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #727f30!important;box-shadow:inset 0 3px 0 #727f30!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#523f6d}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-button{color:#ece6f6}#collapse-button:focus,#collapse-button:hover{color:#a3b745}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/light/colors-rtl.css b/wp/wp-admin/css/colors/light/colors-rtl.css index 5822584f..25a88c0b 100644 --- a/wp/wp-admin/css/colors/light/colors-rtl.css +++ b/wp/wp-admin/css/colors/light/colors-rtl.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f5f5f5; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #04a4cc; border-color: #037c9a #036881 #036881; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #036881; box-shadow: 0 1px 0 #036881; text-shadow: 0 -1px 1px #036881, -1px 0 1px #036881, 0 1px 1px #036881, 1px 0 1px #036881; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #04b0db; border-color: #036881; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #036881; box-shadow: 0 1px 0 #036881; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #777; } -#collapse-menu:hover { - color: #333; -} - -#collapse-button div:after { - color: #999; -} - -#collapse-menu:hover #collapse-button div:after { - color: #555; +#collapse-button:hover, +#collapse-button:focus { + color: #04a4cc; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #888; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #04a4cc; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #999; diff --git a/wp/wp-admin/css/colors/light/colors-rtl.min.css b/wp/wp-admin/css/colors/light/colors-rtl.min.css index d0f66036..31e644cd 100644 --- a/wp/wp-admin/css/colors/light/colors-rtl.min.css +++ b/wp/wp-admin/css/colors/light/colors-rtl.min.css @@ -1 +1 @@ -html{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#04a4cc}input[type=radio]:checked:before{background:#04a4cc}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#04a4cc;border-color:#037c9a #036881 #036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881;text-shadow:0 -1px 1px #036881,-1px 0 1px #036881,0 1px 1px #036881,1px 0 1px #036881}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;-webkit-box-shadow:inset 0 2px 0 #036881;box-shadow:inset 0 2px 0 #036881}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #036881!important;box-shadow:0 2px 0 #036881!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #036881!important;box-shadow:inset 0 3px 0 #036881!important}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#333;background-color:#e5e5e5}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}.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-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-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 .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#04a4cc}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#04a4cc}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}#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 +body{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#04a4cc}input[type=radio]:checked:before{background:#04a4cc}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#04a4cc;border-color:#037c9a #036881 #036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881;text-shadow:0 -1px 1px #036881,-1px 0 1px #036881,0 1px 1px #036881,1px 0 1px #036881}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;-webkit-box-shadow:inset 0 2px 0 #036881;box-shadow:inset 0 2px 0 #036881}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #036881!important;box-shadow:0 2px 0 #036881!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #036881!important;box-shadow:inset 0 3px 0 #036881!important}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#333;background-color:#e5e5e5}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#fff}#adminmenu .wp-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-button{color:#777}#collapse-button:focus,#collapse-button:hover{color:#04a4cc}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#ccc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{-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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#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}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar .ab-top-menu>li:hover>.ab-item,#wpadminbar .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default li:hover span.ab-label,#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary li.hover span.ab-label{color:#333}.theme-filter.current,.theme-section.current{border-bottom-color:#04a4cc} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/light/colors.css b/wp/wp-admin/css/colors/light/colors.css index d1b05dde..c27ae3cb 100644 --- a/wp/wp-admin/css/colors/light/colors.css +++ b/wp/wp-admin/css/colors/light/colors.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f5f5f5; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #04a4cc; border-color: #037c9a #036881 #036881; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #036881; box-shadow: 0 1px 0 #036881; text-shadow: 0 -1px 1px #036881, 1px 0 1px #036881, 0 1px 1px #036881, -1px 0 1px #036881; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #04b0db; border-color: #036881; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #036881; box-shadow: 0 1px 0 #036881; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #777; } -#collapse-menu:hover { - color: #333; -} - -#collapse-button div:after { - color: #999; -} - -#collapse-menu:hover #collapse-button div:after { - color: #555; +#collapse-button:hover, +#collapse-button:focus { + color: #04a4cc; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #888; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #04a4cc; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #999; diff --git a/wp/wp-admin/css/colors/light/colors.min.css b/wp/wp-admin/css/colors/light/colors.min.css index 108d1a3a..75e1c735 100644 --- a/wp/wp-admin/css/colors/light/colors.min.css +++ b/wp/wp-admin/css/colors/light/colors.min.css @@ -1 +1 @@ -html{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#04a4cc}input[type=radio]:checked:before{background:#04a4cc}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#04a4cc;border-color:#037c9a #036881 #036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881;text-shadow:0 -1px 1px #036881,1px 0 1px #036881,0 1px 1px #036881,-1px 0 1px #036881}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;-webkit-box-shadow:inset 0 2px 0 #036881;box-shadow:inset 0 2px 0 #036881}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #036881!important;box-shadow:0 2px 0 #036881!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #036881!important;box-shadow:inset 0 3px 0 #036881!important}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#333;background-color:#e5e5e5}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}.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-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-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 .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#04a4cc}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}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:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#04a4cc}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}#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 +body{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#04a4cc}input[type=radio]:checked:before{background:#04a4cc}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#04a4cc;border-color:#037c9a #036881 #036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881;text-shadow:0 -1px 1px #036881,1px 0 1px #036881,0 1px 1px #036881,-1px 0 1px #036881}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;-webkit-box-shadow:inset 0 2px 0 #036881;box-shadow:inset 0 2px 0 #036881}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #036881!important;box-shadow:0 2px 0 #036881!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #036881!important;box-shadow:inset 0 3px 0 #036881!important}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#333;background-color:#e5e5e5}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#fff}#adminmenu .wp-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-button{color:#777}#collapse-button:focus,#collapse-button:hover{color:#04a4cc}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#ccc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{-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}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#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}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar .ab-top-menu>li:hover>.ab-item,#wpadminbar .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default li:hover span.ab-label,#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary li.hover span.ab-label{color:#333}.theme-filter.current,.theme-section.current{border-bottom-color:#04a4cc} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/midnight/colors-rtl.css b/wp/wp-admin/css/colors/midnight/colors-rtl.css index 2e4990f6..c72bee39 100644 --- a/wp/wp-admin/css/colors/midnight/colors-rtl.css +++ b/wp/wp-admin/css/colors/midnight/colors-rtl.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #e14d43; border-color: #d02c21 #ba281e #ba281e; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ba281e; box-shadow: 0 1px 0 #ba281e; text-shadow: 0 -1px 1px #ba281e, -1px 0 1px #ba281e, 0 1px 1px #ba281e, 1px 0 1px #ba281e; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #e35950; border-color: #ba281e; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ba281e; box-shadow: 0 1px 0 #ba281e; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #f1f2f3; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #f1f2f3; -} - -#collapse-menu:hover #collapse-button div:after { - color: #fff; +#collapse-button:hover, +#collapse-button:focus { + color: #e14d43; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #e14d43; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #e14d43; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f1f2f3; diff --git a/wp/wp-admin/css/colors/midnight/colors-rtl.min.css b/wp/wp-admin/css/colors/midnight/colors-rtl.min.css index fb381435..02463781 100644 --- a/wp/wp-admin/css/colors/midnight/colors-rtl.min.css +++ b/wp/wp-admin/css/colors/midnight/colors-rtl.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#e14d43}input[type=radio]:checked:before{background:#e14d43}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e14d43;border-color:#d02c21 #ba281e #ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e;text-shadow:0 -1px 1px #ba281e,-1px 0 1px #ba281e,0 1px 1px #ba281e,1px 0 1px #ba281e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;-webkit-box-shadow:inset 0 2px 0 #ba281e;box-shadow:inset 0 2px 0 #ba281e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1c8c7!important;background:#d92e23!important;border-color:#ba281e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ba281e!important;box-shadow:0 2px 0 #ba281e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ba281e!important;box-shadow:inset 0 3px 0 #ba281e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#363b3f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-menu{color:#f1f2f3}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f1f2f3}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar #adminbarsearch:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#e14d43}div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f1f2f3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#e14d43}input[type=radio]:checked:before{background:#e14d43}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e14d43;border-color:#d02c21 #ba281e #ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e;text-shadow:0 -1px 1px #ba281e,-1px 0 1px #ba281e,0 1px 1px #ba281e,1px 0 1px #ba281e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;-webkit-box-shadow:inset 0 2px 0 #ba281e;box-shadow:inset 0 2px 0 #ba281e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1c8c7!important;background:#d92e23!important;border-color:#ba281e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ba281e!important;box-shadow:0 2px 0 #ba281e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ba281e!important;box-shadow:inset 0 3px 0 #ba281e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#363b3f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-button{color:#f1f2f3}#collapse-button:focus,#collapse-button:hover{color:#e14d43}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar #adminbarsearch:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f1f2f3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/midnight/colors.css b/wp/wp-admin/css/colors/midnight/colors.css index a94d472d..8b0dd7cf 100644 --- a/wp/wp-admin/css/colors/midnight/colors.css +++ b/wp/wp-admin/css/colors/midnight/colors.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #e14d43; border-color: #d02c21 #ba281e #ba281e; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ba281e; box-shadow: 0 1px 0 #ba281e; text-shadow: 0 -1px 1px #ba281e, 1px 0 1px #ba281e, 0 1px 1px #ba281e, -1px 0 1px #ba281e; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #e35950; border-color: #ba281e; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ba281e; box-shadow: 0 1px 0 #ba281e; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #f1f2f3; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #f1f2f3; -} - -#collapse-menu:hover #collapse-button div:after { - color: #fff; +#collapse-button:hover, +#collapse-button:focus { + color: #e14d43; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #e14d43; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #e14d43; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f1f2f3; diff --git a/wp/wp-admin/css/colors/midnight/colors.min.css b/wp/wp-admin/css/colors/midnight/colors.min.css index ca119d2c..1aa82d3f 100644 --- a/wp/wp-admin/css/colors/midnight/colors.min.css +++ b/wp/wp-admin/css/colors/midnight/colors.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#e14d43}input[type=radio]:checked:before{background:#e14d43}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e14d43;border-color:#d02c21 #ba281e #ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e;text-shadow:0 -1px 1px #ba281e,1px 0 1px #ba281e,0 1px 1px #ba281e,-1px 0 1px #ba281e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;-webkit-box-shadow:inset 0 2px 0 #ba281e;box-shadow:inset 0 2px 0 #ba281e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1c8c7!important;background:#d92e23!important;border-color:#ba281e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ba281e!important;box-shadow:0 2px 0 #ba281e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ba281e!important;box-shadow:inset 0 3px 0 #ba281e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#363b3f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-menu{color:#f1f2f3}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f1f2f3}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar #adminbarsearch:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#e14d43}div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f1f2f3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#e14d43}input[type=radio]:checked:before{background:#e14d43}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e14d43;border-color:#d02c21 #ba281e #ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e;text-shadow:0 -1px 1px #ba281e,1px 0 1px #ba281e,0 1px 1px #ba281e,-1px 0 1px #ba281e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;-webkit-box-shadow:inset 0 2px 0 #ba281e;box-shadow:inset 0 2px 0 #ba281e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1c8c7!important;background:#d92e23!important;border-color:#ba281e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ba281e!important;box-shadow:0 2px 0 #ba281e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ba281e!important;box-shadow:inset 0 3px 0 #ba281e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#363b3f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-button{color:#f1f2f3}#collapse-button:focus,#collapse-button:hover{color:#e14d43}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar #adminbarsearch:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f1f2f3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/ocean/colors-rtl.css b/wp/wp-admin/css/colors/ocean/colors-rtl.css index 65c0ead4..e258d5a9 100644 --- a/wp/wp-admin/css/colors/ocean/colors-rtl.css +++ b/wp/wp-admin/css/colors/ocean/colors-rtl.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #9ebaa0; border-color: #80a583 #719a74 #719a74; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #719a74; box-shadow: 0 1px 0 #719a74; text-shadow: 0 -1px 1px #719a74, -1px 0 1px #719a74, 0 1px 1px #719a74, 1px 0 1px #719a74; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #a7c0a9; border-color: #719a74; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #719a74; box-shadow: 0 1px 0 #719a74; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #f2fcff; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #f2fcff; -} - -#collapse-menu:hover #collapse-button div:after { - color: #fff; +#collapse-button:hover, +#collapse-button:focus { + color: #9ebaa0; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #9ebaa0; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #9ebaa0; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f2fcff; diff --git a/wp/wp-admin/css/colors/ocean/colors-rtl.min.css b/wp/wp-admin/css/colors/ocean/colors-rtl.min.css index 52506fc8..6471e745 100644 --- a/wp/wp-admin/css/colors/ocean/colors-rtl.min.css +++ b/wp/wp-admin/css/colors/ocean/colors-rtl.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#738e96}input[type=radio]:checked:before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#80a583 #719a74 #719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74;text-shadow:0 -1px 1px #719a74,-1px 0 1px #719a74,0 1px 1px #719a74,1px 0 1px #719a74}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;-webkit-box-shadow:inset 0 2px 0 #719a74;box-shadow:inset 0 2px 0 #719a74}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7d1c8!important;background:#86a989!important;border-color:#719a74!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #719a74!important;box-shadow:0 2px 0 #719a74!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #719a74!important;box-shadow:inset 0 3px 0 #719a74!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-menu{color:#f2fcff}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f2fcff}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#9ebaa0}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#738e96}input[type=radio]:checked:before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#80a583 #719a74 #719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74;text-shadow:0 -1px 1px #719a74,-1px 0 1px #719a74,0 1px 1px #719a74,1px 0 1px #719a74}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;-webkit-box-shadow:inset 0 2px 0 #719a74;box-shadow:inset 0 2px 0 #719a74}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7d1c8!important;background:#86a989!important;border-color:#719a74!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #719a74!important;box-shadow:0 2px 0 #719a74!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #719a74!important;box-shadow:inset 0 3px 0 #719a74!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-button{color:#f2fcff}#collapse-button:focus,#collapse-button:hover{color:#9ebaa0}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/ocean/colors.css b/wp/wp-admin/css/colors/ocean/colors.css index c98d3bed..47109d71 100644 --- a/wp/wp-admin/css/colors/ocean/colors.css +++ b/wp/wp-admin/css/colors/ocean/colors.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #9ebaa0; border-color: #80a583 #719a74 #719a74; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #719a74; box-shadow: 0 1px 0 #719a74; text-shadow: 0 -1px 1px #719a74, 1px 0 1px #719a74, 0 1px 1px #719a74, -1px 0 1px #719a74; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #a7c0a9; border-color: #719a74; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #719a74; box-shadow: 0 1px 0 #719a74; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #f2fcff; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #f2fcff; -} - -#collapse-menu:hover #collapse-button div:after { - color: #fff; +#collapse-button:hover, +#collapse-button:focus { + color: #9ebaa0; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #9ebaa0; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #9ebaa0; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f2fcff; diff --git a/wp/wp-admin/css/colors/ocean/colors.min.css b/wp/wp-admin/css/colors/ocean/colors.min.css index 4aaf1a23..9dc06cac 100644 --- a/wp/wp-admin/css/colors/ocean/colors.min.css +++ b/wp/wp-admin/css/colors/ocean/colors.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#738e96}input[type=radio]:checked:before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#80a583 #719a74 #719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74;text-shadow:0 -1px 1px #719a74,1px 0 1px #719a74,0 1px 1px #719a74,-1px 0 1px #719a74}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;-webkit-box-shadow:inset 0 2px 0 #719a74;box-shadow:inset 0 2px 0 #719a74}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7d1c8!important;background:#86a989!important;border-color:#719a74!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #719a74!important;box-shadow:0 2px 0 #719a74!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #719a74!important;box-shadow:inset 0 3px 0 #719a74!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-menu{color:#f2fcff}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f2fcff}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#9ebaa0}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#738e96}input[type=radio]:checked:before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#80a583 #719a74 #719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74;text-shadow:0 -1px 1px #719a74,1px 0 1px #719a74,0 1px 1px #719a74,-1px 0 1px #719a74}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;-webkit-box-shadow:inset 0 2px 0 #719a74;box-shadow:inset 0 2px 0 #719a74}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7d1c8!important;background:#86a989!important;border-color:#719a74!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #719a74!important;box-shadow:0 2px 0 #719a74!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #719a74!important;box-shadow:inset 0 3px 0 #719a74!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-button{color:#f2fcff}#collapse-button:focus,#collapse-button:hover{color:#9ebaa0}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/sunrise/colors-rtl.css b/wp/wp-admin/css/colors/sunrise/colors-rtl.css index cd9e9eb4..2837315d 100644 --- a/wp/wp-admin/css/colors/sunrise/colors-rtl.css +++ b/wp/wp-admin/css/colors/sunrise/colors-rtl.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #dd823b; border-color: #c36922 #ad5d1e #ad5d1e; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ad5d1e; box-shadow: 0 1px 0 #ad5d1e; text-shadow: 0 -1px 1px #ad5d1e, -1px 0 1px #ad5d1e, 0 1px 1px #ad5d1e, 1px 0 1px #ad5d1e; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #df8a48; border-color: #ad5d1e; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ad5d1e; box-shadow: 0 1px 0 #ad5d1e; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #f3f1f1; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #f3f1f1; -} - -#collapse-menu:hover #collapse-button div:after { - color: #fff; +#collapse-button:hover, +#collapse-button:focus { + color: #f7e3d3; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #dd823b; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #dd823b; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f3f1f1; diff --git a/wp/wp-admin/css/colors/sunrise/colors-rtl.min.css b/wp/wp-admin/css/colors/sunrise/colors-rtl.min.css index aab12534..cd9ee18d 100644 --- a/wp/wp-admin/css/colors/sunrise/colors-rtl.min.css +++ b/wp/wp-admin/css/colors/sunrise/colors-rtl.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#dd823b}input[type=radio]:checked:before{background:#dd823b}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#dd823b;border-color:#c36922 #ad5d1e #ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e;text-shadow:0 -1px 1px #ad5d1e,-1px 0 1px #ad5d1e,0 1px 1px #ad5d1e,1px 0 1px #ad5d1e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;-webkit-box-shadow:inset 0 2px 0 #ad5d1e;box-shadow:inset 0 2px 0 #ad5d1e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cbc7!important;background:#cc6d23!important;border-color:#ad5d1e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ad5d1e!important;box-shadow:0 2px 0 #ad5d1e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ad5d1e!important;box-shadow:inset 0 3px 0 #ad5d1e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#cf4944}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-menu{color:#f3f1f1}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f3f1f1}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#dd823b}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#dd823b}input[type=radio]:checked:before{background:#dd823b}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#dd823b;border-color:#c36922 #ad5d1e #ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e;text-shadow:0 -1px 1px #ad5d1e,-1px 0 1px #ad5d1e,0 1px 1px #ad5d1e,1px 0 1px #ad5d1e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;-webkit-box-shadow:inset 0 2px 0 #ad5d1e;box-shadow:inset 0 2px 0 #ad5d1e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cbc7!important;background:#cc6d23!important;border-color:#ad5d1e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ad5d1e!important;box-shadow:0 2px 0 #ad5d1e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ad5d1e!important;box-shadow:inset 0 3px 0 #ad5d1e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#cf4944}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-button{color:#f3f1f1}#collapse-button:focus,#collapse-button:hover{color:#f7e3d3}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b} \ No newline at end of file diff --git a/wp/wp-admin/css/colors/sunrise/colors.css b/wp/wp-admin/css/colors/sunrise/colors.css index 88cde538..38676a06 100644 --- a/wp/wp-admin/css/colors/sunrise/colors.css +++ b/wp/wp-admin/css/colors/sunrise/colors.css @@ -2,7 +2,7 @@ * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -html { +body { background: #f1f1f1; } @@ -40,7 +40,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary { background: #dd823b; border-color: #c36922 #ad5d1e #ad5d1e; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ad5d1e; box-shadow: 0 1px 0 #ad5d1e; text-shadow: 0 -1px 1px #ad5d1e, 1px 0 1px #ad5d1e, 0 1px 1px #ad5d1e, -1px 0 1px #ad5d1e; @@ -49,7 +49,7 @@ input[type=radio]:checked:before { .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #df8a48; border-color: #ad5d1e; - color: white; + color: #fff; -webkit-box-shadow: 0 1px 0 #ad5d1e; box-shadow: 0 1px 0 #ad5d1e; } @@ -259,20 +259,13 @@ ul#adminmenu > li.current > a.current:after { } /* Admin Menu: collapse button */ -#collapse-menu { +#collapse-button { color: #f3f1f1; } -#collapse-menu:hover { - color: #fff; -} - -#collapse-button div:after { - color: #f3f1f1; -} - -#collapse-menu:hover #collapse-button div:after { - color: #fff; +#collapse-button:hover, +#collapse-button:focus { + color: #f7e3d3; } /* Admin Bar */ @@ -352,6 +345,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -488,16 +482,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Customize */ -#customize-theme-controls .widget-area-select .selected { - background-color: #dd823b; - color: #fff; -} - -#customize-footer-actions .devices button:focus { - border-bottom-color: #dd823b; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f3f1f1; diff --git a/wp/wp-admin/css/colors/sunrise/colors.min.css b/wp/wp-admin/css/colors/sunrise/colors.min.css index 6ff5461b..9c6ac755 100644 --- a/wp/wp-admin/css/colors/sunrise/colors.min.css +++ b/wp/wp-admin/css/colors/sunrise/colors.min.css @@ -1 +1 @@ -html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#dd823b}input[type=radio]:checked:before{background:#dd823b}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#dd823b;border-color:#c36922 #ad5d1e #ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e;text-shadow:0 -1px 1px #ad5d1e,1px 0 1px #ad5d1e,0 1px 1px #ad5d1e,-1px 0 1px #ad5d1e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;-webkit-box-shadow:inset 0 2px 0 #ad5d1e;box-shadow:inset 0 2px 0 #ad5d1e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cbc7!important;background:#cc6d23!important;border-color:#ad5d1e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ad5d1e!important;box-shadow:0 2px 0 #ad5d1e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ad5d1e!important;box-shadow:inset 0 3px 0 #ad5d1e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#cf4944}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-menu{color:#f3f1f1}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f3f1f1}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-footer-actions .devices button:focus{border-bottom-color:#dd823b}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#dd823b}input[type=radio]:checked:before{background:#dd823b}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#dd823b;border-color:#c36922 #ad5d1e #ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e;text-shadow:0 -1px 1px #ad5d1e,1px 0 1px #ad5d1e,0 1px 1px #ad5d1e,-1px 0 1px #ad5d1e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;-webkit-box-shadow:inset 0 2px 0 #ad5d1e;box-shadow:inset 0 2px 0 #ad5d1e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cbc7!important;background:#cc6d23!important;border-color:#ad5d1e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ad5d1e!important;box-shadow:0 2px 0 #ad5d1e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ad5d1e!important;box-shadow:inset 0 3px 0 #ad5d1e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#cf4944}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-button{color:#f3f1f1}#collapse-button:focus,#collapse-button:hover{color:#f7e3d3}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{-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-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b} \ No newline at end of file diff --git a/wp/wp-admin/css/common-rtl.css b/wp/wp-admin/css/common-rtl.css index e660523d..e7a5f54b 100644 --- a/wp/wp-admin/css/common-rtl.css +++ b/wp/wp-admin/css/common-rtl.css @@ -572,10 +572,20 @@ code { font-size: 23px; font-weight: 400; margin: 0; - padding: 9px 0 4px 15px; + padding: 9px 0 4px 0; line-height: 29px; } +.wrap h1.wp-heading-inline { + display: inline-block; + margin-left: 5px; +} + +.wp-header-end { + visibility: hidden; + margin: -2px 0 0; +} + .subtitle { margin: 0; padding-right: 25px; @@ -608,6 +618,10 @@ code { outline: 0; } +.wrap .wp-heading-inline + .page-title-action { + margin-right: 0; +} + .wrap .add-new-h2:hover, /* deprecated */ .wrap .page-title-action:hover { border-color: #008EC2; @@ -680,7 +694,7 @@ ul.striped > :nth-child(odd), } .wp-ui-highlight { - color: white; + color: #fff; background-color: #1e8cbe; } .wp-ui-text-highlight { @@ -759,7 +773,7 @@ img.emoji { /* @todo can we combine these into a class or use an existing dashicon one? */ .welcome-panel .welcome-panel-close:before, -.tagchecklist span a:before, +.tagchecklist .ntdelbutton .remove-tag-icon:before, #bulk-titles div a:before, .notice-dismiss:before { background: none; @@ -779,18 +793,41 @@ img.emoji { margin: 0; } -.tagchecklist span a:before, #bulk-titles div a:before { margin: 1px 0; } +.tagchecklist .ntdelbutton .remove-tag-icon:before { + margin-right: 2px; + -webkit-border-radius: 50%; + border-radius: 50%; + color: #0073aa; + /* vertically center the icon cross browsers */ + line-height: 1.28; +} + +.tagchecklist .ntdelbutton:focus { + outline: 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 { +.tagchecklist .ntdelbutton:hover .remove-tag-icon:before, +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before, +#bulk-titles div a:hover:before, +#bulk-titles div a:focus:before { color: #c00; } +.tagchecklist .ntdelbutton:focus .remove-tag-icon: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); +} + .key-labels label { line-height: 24px; } @@ -826,6 +863,8 @@ hr { border-bottom: 1px solid #fafafa; } +.widget-control-remove, +.widget-control-remove:focus, .row-actions span.delete a, .row-actions span.trash a, .row-actions span.spam a, @@ -842,7 +881,6 @@ hr { abbr.required, span.required, .file-error, -.widget-control-remove:hover, .row-actions .delete a:hover, .row-actions .trash a:hover, .row-actions .spam a:hover, @@ -854,10 +892,13 @@ span.required, #media-items a.delete-permanently:hover, #nav-menu-footer .menu-delete:hover { color: #f00; - text-decoration: none; border: none; } +.widget-control-remove:hover { + color: #f00; +} + /*------------------------------------------------------------------------------ 3.0 - Actions ------------------------------------------------------------------------------*/ @@ -870,10 +911,8 @@ span.required, } #delete-action { - line-height: 28px; - vertical-align: middle; - text-align: right; float: right; + line-height: 28px; } #publishing-action { @@ -1043,39 +1082,53 @@ th.action-links { display: inline-block; } -.wp-filter .drawer-toggle { - display: inline-block; - margin: 0 10px; - padding: 4px 6px; +.wp-filter .button.drawer-toggle { + margin: 10px 9px 0; + padding: 0 6px 0 10px; + border-color: transparent; + background-color: transparent; color: #666; - cursor: pointer; + vertical-align: baseline; + -webkit-box-shadow: none; + box-shadow: none; } .wp-filter .drawer-toggle:before { - display: inline-block; - vertical-align: top; content: "\f111"; margin: 0 0 0 5px; - width: 16px; - height: 16px; color: #72777c; - -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; + font: normal 16px/1 dashicons; + vertical-align: text-bottom; -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } -.wp-filter .drawer-toggle:hover, -.wp-filter .drawer-toggle:hover:before { +.wp-filter .button.drawer-toggle:hover, +.wp-filter .drawer-toggle:hover:before, +.wp-filter .button.drawer-toggle:focus, +.wp-filter .drawer-toggle:focus:before { + background-color: transparent; color: #00a0d2; } +.wp-filter .button.drawer-toggle:hover, +.wp-filter .button.drawer-toggle:focus:active { + border-color: transparent; +} + +.wp-filter .button.drawer-toggle:focus { + border-color: #5b9dd9; +} + +.wp-filter .button.drawer-toggle:active { + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transform: none; + -ms-transform: none; + transform: none; +} + .wp-filter .drawer-toggle.current:before { color: #fff; } @@ -1090,7 +1143,7 @@ th.action-links { width: 100%; } -.show-favorites-form .wp-filter .favorites-form { +.show-favorites-form .favorites-form { display: block; } @@ -1108,23 +1161,22 @@ th.action-links { 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 { +.show-filters .wp-filter .button.drawer-toggle { -webkit-border-radius: 2px; border-radius: 2px; - border: none; background: #72777c; color: #fff; } +.show-filters .wp-filter .drawer-toggle:hover, +.show-filters .wp-filter .drawer-toggle:focus { + background: rgb(46, 162, 204); +} + .show-filters .wp-filter .drawer-toggle:before { color: #fff; } @@ -1168,9 +1220,15 @@ th.action-links { } .filter-drawer .buttons { + clear: both; margin-bottom: 20px; } +.filter-drawer .filter-group + .buttons { + margin-bottom: 0; + padding-top: 20px; +} + .filter-drawer .buttons .button span { display: inline-block; opacity: 0.8; @@ -1183,6 +1241,21 @@ th.action-links { margin-right: 10px; } +.wp-filter .button-link.edit-filters { + color: #0073aa; + text-decoration: underline; + padding: 0 5px; + line-height: 28px; +} + +.wp-filter .button-link.edit-filters:hover { + color: #00a0d2; +} + +.wp-filter .button-link.edit-filters:focus { + color: #124964; +} + .filtered-by { display: none; margin: 0; @@ -1224,6 +1297,7 @@ th.action-links { padding: 20px; } +.show-filters .favorites-form, .show-filters .content-filterable, .show-filters.filters-applied.loading-content .content-filterable, .loading-content .content-filterable, @@ -2098,14 +2172,6 @@ html.wp-toolbar { font-style: italic; } -#wpfooter a { - text-decoration: none; -} - -#wpfooter a:hover { - text-decoration: underline; -} - /*------------------------------------------------------------------------------ 25.0 - Tabbed Admin Screen Interface (Experimental) ------------------------------------------------------------------------------*/ @@ -2160,7 +2226,7 @@ h3 .nav-tab, /* Back-compat for pre-4.4 */ h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */ .wrap h2.nav-tab-wrapper, /* higher specificity to override .wrap > h2:first-child */ -h3.nav-tab-wrapper { +.nav-tab-wrapper { border-bottom: 1px solid #ccc; margin: 0; padding-top: 9px; @@ -2823,6 +2889,11 @@ div.action-links { font-size: 13px; } +/* For non-js plugin installation screen ticket #36430. */ +.update-php .button.button-primary { + margin-left: 1em; +} + @media screen and ( max-width: 771px ) { #plugin-information-title.with-banner { height: 100px; @@ -2865,7 +2936,7 @@ div.action-links { #section-holder { position: static; margin: 0; - padding-bottom: 70px; /* reset from the two column height fix, plus accomodate footer */ + padding-bottom: 70px; /* reset from the two column height fix, plus accommodate footer */ } #plugin-information .fyi h3, @@ -3333,7 +3404,8 @@ img { display: none; } -.control-section .accordion-section-title { +.control-section .accordion-section-title, +.customize-pane-child .accordion-section-title { border-right: none; border-left: none; padding: 10px 14px 11px 10px; @@ -3341,7 +3413,8 @@ img { background: #fff; } -.control-section .accordion-section-title:after { +.control-section .accordion-section-title:after, +.customize-pane-child .accordion-section-title:after { top: 11px; } @@ -3535,9 +3608,7 @@ img { .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; } @@ -3597,6 +3668,10 @@ img { display: none !important; } + .wrap h1.wp-heading-inline { + margin-bottom: 0.5em; + } + .wrap .add-new-h2, /* deprecated */ .wrap .add-new-h2:active, /* deprecated */ .wrap .page-title-action, @@ -3722,6 +3797,12 @@ img { .filter-drawer .filter-group-feature label { line-height: 25px; } + + .wp-filter .button.drawer-toggle { + font-size: 13px; + line-height: 26px; + height: 28px; + } } /* Smartphone */ @@ -3747,7 +3828,7 @@ img { h1.nav-tab-wrapper, .wrap h2.nav-tab-wrapper, - h3.nav-tab-wrapper { + .nav-tab-wrapper { border-bottom: 0; } diff --git a/wp/wp-admin/css/common-rtl.min.css b/wp/wp-admin/css/common-rtl.min.css index 139b6b62..2fb455e1 100644 --- a/wp/wp-admin/css/common-rtl.min.css +++ b/wp/wp-admin/css/common-rtl.min.css @@ -1,8 +1,8 @@ -#docs-list,#plugin-information .section,#template textarea,.code,.ltr,code{direction:ltr}#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-right:20px}#wpcontent,#wpfooter{margin-right:160px}.folded #wpcontent,.folded #wpfooter{margin-right:36px}#wpbody-content{padding-bottom:65px;float:right;width:100%;overflow:visible!important}.inner-sidebar{float:left;clear:left;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-left:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:right;clear:right;width:100%;margin-left:-2000px}.has-right-sidebar #post-body-content{margin-left:300px;float:none;width:auto}#col-left{float:right;width:35%}#col-right{float:left;width:65%}#col-left .col-wrap{padding:0 0 0 6px}#col-right .col-wrap{padding:0 6px 0 0}.alignleft{float:right}.alignright{float:left}#publishing-action .spinner,#save-post,.subsubsub{float:right}.textleft{text-align:right}.textright{text-align:left}.clear{clear:both}.wp-clearfix:after{content:"";display:table;clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}#templateside,.misc-pub-filename,.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:#0073aa;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}.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}body{background:#f1f1f1;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#0073aa;-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}.wp-person a:focus .gravatar,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)}h1,h2,h3{color:#23282d}.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{font-size:13px;line-height:1.5;margin:1em 0}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{font-size:2em;margin:.67em 0}h2,h3{font-size:1.3em;margin:1em 0}.update-core-php h2{margin-top:2em}.update-messages h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-right:2em}ul.ul-disc{list-style:disc}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}.code,code{font-family:Consolas,Monaco,monospace;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:#555d66;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat 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}.updates-table td input,.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 8px 0 0;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.updates-table tbody td.check-column,.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 3px 0 0}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-right:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 2px 0 20px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 15px;line-height:29px}.subtitle{margin:0;padding-right:25px;color:#555d66;font-size:14px;font-weight:400;line-height:1}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-right:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:none;border:1px solid #ccc;-webkit-border-radius:2px;border-radius:2px;background:#f7f7f7;text-shadow:none;font-weight:600;font-size:13px;line-height:normal;color:#0073aa;cursor:pointer;outline:0}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{border-color:#008EC2;background:#00a0d2;color:#fff}.page-title-action:focus{color:#124964}.ac_match,.highlight,.subsubsub a.current{color:#000}.wrap .page-title-action: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)}.wrap h1.long-header{padding-left:0}.wp-dialog{background-color:#fff}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.sorthelper{background-color:#ccf3fa}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f9f9f9}.bar{background-color:#e8e8e8;border-left-color:#99d}.highlight{background-color:#e4f2fd}.wp-ui-primary{color:#fff;background-color:#32373c}.wp-ui-text-primary{color:#32373c}.wp-ui-highlight{color:#fff;background-color:#1e8cbe}.wp-ui-text-highlight{color:#1e8cbe}.wp-ui-notification{color:#fff;background-color:#d54e21}.wp-ui-text-notification{color:#d54e21}.wp-ui-text-icon{color:#82878c}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.filter-group,.wp-filter{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}#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;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;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,.nav-tab,.no-break,.star-rating{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,span.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}#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}.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%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;background:#fff;color:#555;font-size:13px}.filter-group,html.wp-toolbar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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:#72777c;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-right:5px;margin-left:20px}.filter-items{float:right}.filter-links,.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:#72777c;-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}.filter-drawer,.wp-filter .favorites-form{margin:0 -20px;padding:20px;border-top:1px solid #eee;background:#fafafa}.wp-filter .drawer-toggle:hover,.wp-filter .drawer-toggle:hover:before{color:#00a0d2}.wp-filter .drawer-toggle.current:before{color:#fff}.wp-filter .favorites-form{display:none;overflow:hidden;width:100%}.show-favorites-form .wp-filter .favorites-form{display:block}.filter-drawer{display:none}.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:#72777c;color:#fff}.filter-group,.filtered-by .tag{border:1px solid #e5e5e5;background:#fff}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;position:relative;float:right;margin:0 0 0 1%;padding:20px 10px 10px;width:24%;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{display:inline-block;margin:7px 0 7px 4px;line-height:16px}.filter-drawer .buttons{margin-bottom:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-right:10px}.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;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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}div[class=update-message]{padding:.5em 0 .5em 12px}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}.updated a{padding-bottom:2px}.notice-alt{-webkit-box-shadow:none;box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#23282d;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-left:38px;position:relative}.notice-dismiss{position:absolute;top:0;left:1px;border:none;margin:0;padding:9px;background:0 0;color:#b4b9be;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#c00}.notice-dismiss: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)}.ie8 .notice-dismiss:focus{outline:#5b9dd9 solid 1px}.notice-success,div.updated{border-right-color:#46b450}.notice-success.notice-alt{background-color:#ecf7ed}.notice-warning{border-right-color:#ffb900}.notice-warning.notice-alt{background-color:#fff8e5}.notice-error,div.error{border-right-color:#dc3232}.notice-error.notice-alt{background-color:#fbeaea}.notice-info{border-right-color:#00a0d2}.notice-info.notice-alt{background-color:#e5f5fa}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updated-message p:before,.updating-message p:before{display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updating-message p:before{color:#f56e28;content:"\f463"}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.updating-message p:before{-webkit-animation:rotation 2s infinite linear;animation:rotation 2s infinite linear}.button.updated-message:before,.installed p:before,.updated-message p:before{color:#79ba49;content:'\f147'}.update-message.notice-error p:before{color:#dc3232;content:"\f534"}.import-php .updating-message:before,.wrap .notice p:before{margin-left:6px;vertical-align:bottom}#update-nag,.update-nag{display:inline-block;line-height:19px;padding:11px 15px;font-size:14px;text-align:right;margin:25px 2px 0 20px;background-color:#fff;border-right:4px solid #ffba00;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#screen-meta,ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}.update-php .spinner{float:none;margin:-4px 0}#ajax-loading,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-right:2em}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before{margin:3px -2px 0 5px}.button-primary.updating-message:before{color:#fff}.button-primary.updated-message:before{color:#66c6e4}.button.updated-message,.notice .button-link{-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}.notice .button-link{color:#0073aa}.notice .button-link:active,.notice .button-link:hover{color:#00a0d2}@media aural{.button.installed:before,.button.installing:before,.update-message p:before,.wrap .notice p:before{speak:none}}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-right:0!important}#screen-meta .screen-reader-text{visibility:hidden}#screen-meta-links{margin:0 0 0 20px}#screen-meta{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:#72777c;line-height:1.7;padding:3px 16px 3px 6px}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#32373c}#screen-meta-links .show-settings:active{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}#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:#72777c}#templateside ul li a,#wpfooter a,.nav-tab{text-decoration:none}#screen-meta-links .screen-meta-active:after{content:"\f142"}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.hndle a,.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.ie8 #screen-options-wrap legend{color:inherit}.metabox-prefs label{display:inline-block;padding-left:15px;line-height:30px}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-left:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 0 0 5px}.metabox-prefs .columns-prefs label input{margin:-1px 0 0 2px}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-left:15px}.metabox-prefs .screen-options label{line-height:28px;padding-left:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;right:150px;left:170px;border:1px solid #e1e1e1;border-top:none;border-bottom:none;background:#f6fbfd}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;border-left-width:0;-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}.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}.widefat .column-comment ul{list-style:outside;margin-right:2em}.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;position:relative}.metabox-holder .postbox-container .empty-container:after{content:attr(data-emptystring);margin:auto;position:absolute;top:0;right:0;bottom:0;left:0;height:1em;width:200px;text-align:center;color:#ccc;font-size:18px;display:none}.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container,.metabox-holder.columns-1 .postbox-container .empty-container{border:0;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}.hndle a{font-size:11px}#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,.nav-tab,.plugins .name{font-weight:600}.postbox .handlediv{display:none;float:left;width:36px;height:36px;padding:0}.js .postbox .handlediv{display:block}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox .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 0 0 10px}#wpfooter{position:absolute;bottom:0;right:0;left:0;padding:10px 20px;color:#555d66}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}#wpfooter a:hover{text-decoration:underline}.nav-tab{float:right;border:1px solid #ccc;border-bottom:none;margin-right:.5em;padding:5px 10px;font-size:14px;line-height:24px;background:#e5e5e5;color:#555}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:16px}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#444}.nav-tab-active,.nav-tab:focus:active{-webkit-box-shadow:none;box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#444}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;margin:0;padding-top:9px;padding-bottom:0;line-height:inherit}.nav-tab-wrapper:not(.wp-clearfix):after{content:"";display:table;clear:both}.ie8 .nav-tab-wrapper{display:inline-block;width:100%;vertical-align:top}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;display:inline-block;visibility:hidden;float:left;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.loading-content .spinner,.spinner.is-active{visibility:visible}#template div{margin-left:190px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder h3{padding:10px 14px 11px 10px;line-height:21px}.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,.importer-action,.importer-desc,.importer-title{display:block}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #e5e5e5;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px}.importers{font-size:16px;width:auto}.importers td{padding-left:14px;line-height:1.5em}.importers .import-system{max-width:250px}.importers td.desc{max-width:500px}.post-categories,.post-categories li{display:inline}.importer-title{color:#000;font-size:14px;font-weight:400;margin-bottom:.2em}.importer-action{line-height:20px;color:#ddd;margin-bottom:1em}.not-installed-main-site .importer-action{color:#555}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{font-size:14px;line-height:1.4;font-weight:600;color:#222;margin:2px 9px 0 0}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.checkbox,.post-categories,.zerosize,fieldset{margin:0;padding:0}.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;margin:6px 0 0}#plugin-information{background:#fff;position:fixed;top:0;left:0;bottom:0;right:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 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:600;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,.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;min-height:36px;font-size:0;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;display:inline-block;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;-webkit-transition:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px -1px;background:#fff;border:1px solid #ddd;border-bottom-color:#fff;padding-top:8px;color:#32373c}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;left:0;right:0;min-height:100%;min-height:-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:-99939px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:left;position:relative;top:0;left:0;padding:16px 16px 99999px;margin-bottom:-99939px;width:217px;border-right:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#444}#plugin-information .fyi h3{font-weight:600;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-left:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .fyi-description{margin-top:0}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:right;margin-left:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#e5e5e5;float:right}#plugin-information .counter-bar{height:17px;background-color:#ffc733;float:right}#plugin-information .counter-count{margin-right:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-left:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-left:4px}#plugin-information-footer{padding:13px 16px;position:absolute;left:0;bottom:0;right:0;height:33px;border-top:1px solid #ddd;background:#f3f3f3}#plugin-information .section 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 #e5e5e5}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}@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.about-php #TB_window,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:#fcfcfc}.ie8 body.about-php #TB_window:before,.ie8 body.import-php #TB_window:before,.ie8 body.index-php #TB_window:before,.ie8 body.plugin-install-php #TB_window:before,.ie8 body.plugins-php #TB_window:before,.ie8 body.update-core-php #TB_window:before{content:" ";background:0 0}body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;background:url(../images/spinner.gif) center no-repeat #fcfcfc;-webkit-background-size:20px 20px;background-size:20px 20px;-webkit-transform:translateZ(0);transform:translateZ(0)}body.about-php #TB_ajaxWindowTitle,body.about-php .tb-close-icon,body.import-php #TB_ajaxWindowTitle,body.import-php .tb-close-icon,body.index-php #TB_ajaxWindowTitle,body.index-php .tb-close-icon,body.plugin-install-php #TB_ajaxWindowTitle,body.plugin-install-php .tb-close-icon,body.plugins-php #TB_ajaxWindowTitle,body.plugins-php .tb-close-icon,body.update-core-php #TB_ajaxWindowTitle,body.update-core-php .tb-close-icon{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}body.about-php #TB_title,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}.about-php #TB_closeWindowButton,.import-php #TB_closeWindowButton,.index-php #TB_closeWindowButton,.plugin-install-php #TB_closeWindowButton,.plugins-php #TB_closeWindowButton,.update-core-php #TB_closeWindowButton{right:auto;left:-30px;color:#eee}body.about-php #TB_closeWindowButton:focus,body.about-php #TB_closeWindowButton:hover,body.import-php #TB_closeWindowButton:focus,body.import-php #TB_closeWindowButton:hover,body.index-php #TB_closeWindowButton:focus,body.index-php #TB_closeWindowButton:hover,body.plugin-install-php #TB_closeWindowButton:focus,body.plugin-install-php #TB_closeWindowButton:hover,body.plugins-php #TB_closeWindowButton:focus,body.plugins-php #TB_closeWindowButton:hover,body.update-core-php #TB_closeWindowButton:focus,body.update-core-php #TB_closeWindowButton:hover{color:#00a0d2;outline:0;-webkit-box-shadow:none;box-shadow:none}body.about-php #TB_closeWindowButton:after,body.import-php #TB_closeWindowButton:after,body.index-php #TB_closeWindowButton:after,body.plugin-install-php #TB_closeWindowButton:after,body.plugins-php #TB_closeWindowButton:after,body.update-core-php #TB_closeWindowButton:after{content:"\f335";font:400 32px/29px dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:830px){body.about-php #TB_closeWindowButton,body.import-php #TB_closeWindowButton,body.index-php #TB_closeWindowButton,body.plugin-install-php #TB_closeWindowButton,body.plugins-php #TB_closeWindowButton,body.update-core-php #TB_closeWindowButton{left:0;top:-30px}}img{border:none}.bulk-action-notice .toggle-indicator:before,.js .meta-box-sortables .postbox .toggle-indicator:before,.js .sidebar-name .sidebar-name-arrow:before{content:"\f142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator:before,.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before,.js .widgets-holder-wrap.closed .sidebar-name-arrow:before{content:"\f140"}.js .sidebar-name .sidebar-name-arrow:before{padding:10px;right:0}.js #widgets-left .sidebar-name .sidebar-name-arrow{display:none}.accordion-section.open .accordion-section-content,.js #widgets-left .sidebar-name:hover .sidebar-name-arrow,.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow,.no-js .accordion-section .accordion-section-content{display:block}.js .postbox .handlediv .toggle-indicator:before{margin-top:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}#postcustomstuff p.submit,#templateside h2,.alignleft h2{margin:0}.rtl.js .postbox .handlediv .toggle-indicator:before{text-indent:1px}.bulk-action-notice .toggle-indicator:before{line-height:16px;vertical-align:top;color:#72777c}.js .postbox .handlediv:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.js .postbox .handlediv:focus .toggle-indicator: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)}#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}#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:600}.nonessential{color:#666;font-size:11px;font-style:italic;padding-right:12px}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:baseline;font-weight:600}.fileedit-sub{padding:10px 0 8px;line-height:180%}.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}.accordion-section-title:after,.handlediv,.item-edit,.sidebar-name-arrow{color:#72777c}.widget-action{color:#555d66}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:focus,.item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.widget-action:focus,.widget-top:hover .widget-action{color:#23282d}.widget-top a.widget-action:after{padding:1px 0 1px 2px;margin-top:10px;margin-left:10px;-webkit-border-radius:50%;border-radius:50%}.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)}.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"}/*! +.subsubsub a,.widefat a,.wp-filter a{text-decoration:none}#ajax-loading,#screen-meta .screen-reader-text,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading,.spinner,.wp-header-end{visibility:hidden}#docs-list,#plugin-information .section,#template textarea,.code,.ltr,code{direction:ltr}#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-right:20px}#wpcontent,#wpfooter{margin-right:160px}.folded #wpcontent,.folded #wpfooter{margin-right:36px}#wpbody-content{padding-bottom:65px;float:right;width:100%;overflow:visible!important}.inner-sidebar{float:left;clear:left;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-left:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:right;clear:right;width:100%;margin-left:-2000px}.has-right-sidebar #post-body-content{margin-left:300px;float:none;width:auto}#col-left{float:right;width:35%}#col-right{float:left;width:65%}#col-left .col-wrap{padding:0 0 0 6px}#col-right .col-wrap{padding:0 6px 0 0}.alignleft{float:right}.alignright{float:left}#publishing-action .spinner,#save-post,.subsubsub{float:right}.textleft{text-align:right}.textright{text-align:left}.clear{clear:both}.wp-clearfix:after{content:"";display:table;clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}h2,h3,p{margin:1em 0}#templateside,.misc-pub-filename,.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:#0073aa;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}.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}body{background:#f1f1f1;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#0073aa;-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}.wp-person a:focus .gravatar,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)}h1,h2,h3{color:#23282d}.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{font-size:13px;line-height:1.5}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}h2,h3{font-size:1.3em}.update-core-php h2{margin-top:2em}.update-messages h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-right:2em}ul.ul-disc{list-style:disc}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}.code,code{font-family:Consolas,Monaco,monospace;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}.subsubsub a .count,.subsubsub a.current .count{color:#555d66;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #e1e1e1}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #e1e1e1;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:right;line-height:1.3em;font-size:14px}.updates-table td input,.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 8px 0 0;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.updates-table tbody td.check-column,.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 3px 0 0}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-right:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 2px 0 20px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px;line-height:29px}.wrap h1.wp-heading-inline{display:inline-block;margin-left:5px}.wp-header-end{margin:-2px 0 0}.subtitle{margin:0;padding-right:25px;color:#555d66;font-size:14px;font-weight:400;line-height:1}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-right:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:none;border:1px solid #ccc;-webkit-border-radius:2px;border-radius:2px;background:#f7f7f7;text-shadow:none;font-weight:600;font-size:13px;line-height:normal;color:#0073aa;cursor:pointer;outline:0}.wrap .wp-heading-inline+.page-title-action{margin-right:0}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{border-color:#008EC2;background:#00a0d2;color:#fff}.page-title-action:focus{color:#124964}.ac_match,.highlight,.subsubsub a.current{color:#000}.wrap .page-title-action: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)}.wrap h1.long-header{padding-left:0}.wp-dialog{background-color:#fff}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.sorthelper{background-color:#ccf3fa}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f9f9f9}.bar{background-color:#e8e8e8;border-left-color:#99d}.highlight{background-color:#e4f2fd}.wp-ui-primary{color:#fff;background-color:#32373c}.wp-ui-text-primary{color:#32373c}.wp-ui-highlight{color:#fff;background-color:#1e8cbe}.wp-ui-text-highlight{color:#1e8cbe}.wp-ui-notification{color:#fff;background-color:#d54e21}.wp-ui-text-notification{color:#d54e21}.wp-ui-text-icon{color:#82878c}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;-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;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;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 .ntdelbutton .remove-tag-icon: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{margin:1px 0}.tagchecklist .ntdelbutton .remove-tag-icon:before{margin-right:2px;-webkit-border-radius:50%;border-radius:50%;color:#0073aa;line-height:1.28}.tagchecklist .ntdelbutton:focus{outline:0}#bulk-titles div a:focus:before,#bulk-titles div a:hover:before,.tagchecklist .ntdelbutton:focus .remove-tag-icon:before,.tagchecklist .ntdelbutton:hover .remove-tag-icon:before,.welcome-panel .welcome-panel-close:focus:before,.welcome-panel .welcome-panel-close:hover:before{color:#c00}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{-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)}.filter-group,.wp-filter{position:relative;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap}#namediv td.first,#plugin-information-title,.nav-tab,.no-break,.star-rating{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,.widget-control-remove,.widget-control-remove:focus{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,abbr.required,span.required{color:red;border:none}.widget-control-remove:hover{color:red}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #ddd;background:#f5f5f5}#delete-action{float:right;line-height:28px}#publishing-action{text-align:left;float:left;line-height:23px}#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}.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;background:#fff;color:#555;font-size:13px}.filter-group,html.wp-toolbar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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:#72777c;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-right:5px;margin-left:20px}.filter-links li>a,.wp-filter .search-form.search-plugins{display:inline-block}.filter-items{float:right}.filter-links,.filter-links li{display:inline-block;margin:0}.filter-links li>a{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 .button.drawer-toggle{margin:10px 9px 0;padding:0 6px 0 10px;border-color:transparent;background-color:transparent;color:#666;vertical-align:baseline;-webkit-box-shadow:none;box-shadow:none}.wp-filter .drawer-toggle:before{content:"\f111";margin:0 0 0 5px;color:#72777c;font:400 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-filter .button.drawer-toggle:focus,.wp-filter .button.drawer-toggle:hover,.wp-filter .drawer-toggle:focus:before,.wp-filter .drawer-toggle:hover:before{background-color:transparent;color:#00a0d2}.wp-filter .button.drawer-toggle:focus:active,.wp-filter .button.drawer-toggle:hover{border-color:transparent}.wp-filter .button.drawer-toggle:focus{border-color:#5b9dd9}.wp-filter .button.drawer-toggle:active{background:0 0;-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.filter-drawer,.wp-filter .favorites-form{margin:0 -20px;padding:20px;border-top:1px solid #eee;background:#fafafa}.wp-filter .drawer-toggle.current:before{color:#fff}.wp-filter .favorites-form{display:none;overflow:hidden;width:100%}.show-favorites-form .favorites-form{display:block}.filter-drawer{display:none}.show-filters .filter-drawer{display:block;overflow:hidden;width:100%}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .button.drawer-toggle{-webkit-border-radius:2px;border-radius:2px;background:#72777c;color:#fff}.filter-group,.filtered-by .tag{border:1px solid #e5e5e5;background:#fff}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2ea2cc}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;float:right;margin:0 0 0 1%;padding:20px 10px 10px;width:24%;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{display:inline-block;margin:7px 0 7px 4px;line-height:16px}.filter-drawer .buttons{clear:both;margin-bottom:20px}.filter-drawer .filter-group+.buttons{margin-bottom:0;padding-top:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-right:10px}.wp-filter .button-link.edit-filters{color:#0073aa;text-decoration:underline;padding:0 5px;line-height:28px}.wp-filter .button-link.edit-filters:hover{color:#00a0d2}.wp-filter .button-link.edit-filters:focus{color:#124964}.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;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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 .favorites-form,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #eee}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.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}div[class=update-message]{padding:.5em 0 .5em 12px}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}.updated a{padding-bottom:2px}.notice-alt{-webkit-box-shadow:none;box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#23282d;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-left:38px;position:relative}.notice-dismiss{position:absolute;top:0;left:1px;border:none;margin:0;padding:9px;background:0 0;color:#b4b9be;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#c00}.notice-dismiss: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)}.ie8 .notice-dismiss:focus{outline:#5b9dd9 solid 1px}.notice-success,div.updated{border-right-color:#46b450}.notice-success.notice-alt{background-color:#ecf7ed}.notice-warning{border-right-color:#ffb900}.notice-warning.notice-alt{background-color:#fff8e5}.notice-error,div.error{border-right-color:#dc3232}.notice-error.notice-alt{background-color:#fbeaea}.notice-info{border-right-color:#00a0d2}.notice-info.notice-alt{background-color:#e5f5fa}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updated-message p:before,.updating-message p:before{display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updating-message p:before{color:#f56e28;content:"\f463"}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.updating-message p:before{-webkit-animation:rotation 2s infinite linear;animation:rotation 2s infinite linear}.button.updated-message:before,.installed p:before,.updated-message p:before{color:#79ba49;content:'\f147'}.update-message.notice-error p:before{color:#dc3232;content:"\f534"}.import-php .updating-message:before,.wrap .notice p:before{margin-left:6px;vertical-align:bottom}#update-nag,.update-nag{display:inline-block;line-height:19px;padding:11px 15px;font-size:14px;text-align:right;margin:25px 2px 0 20px;background-color:#fff;border-right:4px solid #ffba00;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#screen-meta,ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}.update-php .spinner{float:none;margin:-4px 0}#ajax-response.alignleft{margin-right:2em}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before{margin:3px -2px 0 5px}.button-primary.updating-message:before{color:#fff}.button-primary.updated-message:before{color:#66c6e4}.button.updated-message,.notice .button-link{-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}.notice .button-link{color:#0073aa}.notice .button-link:active,.notice .button-link:hover{color:#00a0d2}@media aural{.button.installed:before,.button.installing:before,.update-message p:before,.wrap .notice p:before{speak:none}}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-right:0!important}#screen-meta-links{margin:0 0 0 20px}#screen-meta{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:#72777c;line-height:1.7;padding:3px 16px 3px 6px}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#32373c}#screen-meta-links .show-settings:active{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}#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:#72777c}#templateside ul li a,.nav-tab{text-decoration:none}#screen-meta-links .screen-meta-active:after{content:"\f142"}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.hndle a,.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.ie8 #screen-options-wrap legend{color:inherit}.metabox-prefs label{display:inline-block;padding-left:15px;line-height:30px}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-left:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 0 0 5px}.metabox-prefs .columns-prefs label input{margin:-1px 0 0 2px}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-left:15px}.metabox-prefs .screen-options label{line-height:28px;padding-left:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;right:150px;left:170px;border:1px solid #e1e1e1;border-top:none;border-bottom:none;background:#f6fbfd}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;border-left-width:0;-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}.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}.widefat .column-comment ul{list-style:outside;margin-right:2em}.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;position:relative}.metabox-holder .postbox-container .empty-container:after{content:attr(data-emptystring);margin:auto;position:absolute;top:0;right:0;bottom:0;left:0;height:1em;width:200px;text-align:center;color:#ccc;font-size:18px;display:none}.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container,.metabox-holder.columns-1 .postbox-container .empty-container{border:0;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}.hndle a{font-size:11px}#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,.nav-tab,.plugins .name{font-weight:600}.postbox .handlediv{display:none;float:left;width:36px;height:36px;padding:0}.js .postbox .handlediv{display:block}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox .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 0 0 10px}#wpfooter{position:absolute;bottom:0;right:0;left:0;padding:10px 20px;color:#555d66}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}.nav-tab{float:right;border:1px solid #ccc;border-bottom:none;margin-right:.5em;padding:5px 10px;font-size:14px;line-height:24px;background:#e5e5e5;color:#555}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:16px}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#444}.nav-tab-active,.nav-tab:focus:active{-webkit-box-shadow:none;box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#444}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:1px solid #ccc;margin:0;padding-top:9px;padding-bottom:0;line-height:inherit}.nav-tab-wrapper:not(.wp-clearfix):after{content:"";display:table;clear:both}.ie8 .nav-tab-wrapper{display:inline-block;width:100%;vertical-align:top}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;display:inline-block;float:left;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.loading-content .spinner,.spinner.is-active{visibility:visible}#template div{margin-left:190px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder h3{padding:10px 14px 11px 10px;line-height:21px}.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,.importer-action,.importer-desc,.importer-title{display:block}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #e5e5e5;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px}.importers{font-size:16px;width:auto}.importers td{padding-left:14px;line-height:1.5em}.importers .import-system{max-width:250px}.importers td.desc{max-width:500px}.post-categories,.post-categories li{display:inline}.importer-title{color:#000;font-size:14px;font-weight:400;margin-bottom:.2em}.importer-action{line-height:20px;color:#ddd;margin-bottom:1em}.not-installed-main-site .importer-action{color:#555}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{font-size:14px;line-height:1.4;font-weight:600;color:#222;margin:2px 9px 0 0}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.checkbox,.post-categories,.zerosize,fieldset{margin:0;padding:0}.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;margin:6px 0 0}#plugin-information{background:#fff;position:fixed;top:0;left:0;bottom:0;right:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 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:600;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,.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;min-height:36px;font-size:0;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;display:inline-block;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;-webkit-transition:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px -1px;background:#fff;border:1px solid #ddd;border-bottom-color:#fff;padding-top:8px;color:#32373c}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;left:0;right:0;min-height:100%;min-height:-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:-99939px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:left;position:relative;top:0;left:0;padding:16px 16px 99999px;margin-bottom:-99939px;width:217px;border-right:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#444}#plugin-information .fyi h3{font-weight:600;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-left:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .fyi-description{margin-top:0}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:right;margin-left:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#e5e5e5;float:right}#plugin-information .counter-bar{height:17px;background-color:#ffc733;float:right}#plugin-information .counter-count{margin-right:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-left:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-left:4px}#plugin-information-footer{padding:13px 16px;position:absolute;left:0;bottom:0;right:0;height:33px;border-top:1px solid #ddd;background:#f3f3f3}#plugin-information .section 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 #e5e5e5}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}.update-php .button.button-primary{margin-left:1em}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px;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.about-php #TB_window,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:#fcfcfc}.ie8 body.about-php #TB_window:before,.ie8 body.import-php #TB_window:before,.ie8 body.index-php #TB_window:before,.ie8 body.plugin-install-php #TB_window:before,.ie8 body.plugins-php #TB_window:before,.ie8 body.update-core-php #TB_window:before{content:" ";background:0 0}body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;background:url(../images/spinner.gif) center no-repeat #fcfcfc;-webkit-background-size:20px 20px;background-size:20px 20px;-webkit-transform:translateZ(0);transform:translateZ(0)}body.about-php #TB_ajaxWindowTitle,body.about-php .tb-close-icon,body.import-php #TB_ajaxWindowTitle,body.import-php .tb-close-icon,body.index-php #TB_ajaxWindowTitle,body.index-php .tb-close-icon,body.plugin-install-php #TB_ajaxWindowTitle,body.plugin-install-php .tb-close-icon,body.plugins-php #TB_ajaxWindowTitle,body.plugins-php .tb-close-icon,body.update-core-php #TB_ajaxWindowTitle,body.update-core-php .tb-close-icon{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}body.about-php #TB_title,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}.about-php #TB_closeWindowButton,.import-php #TB_closeWindowButton,.index-php #TB_closeWindowButton,.plugin-install-php #TB_closeWindowButton,.plugins-php #TB_closeWindowButton,.update-core-php #TB_closeWindowButton{right:auto;left:-30px;color:#eee}body.about-php #TB_closeWindowButton:focus,body.about-php #TB_closeWindowButton:hover,body.import-php #TB_closeWindowButton:focus,body.import-php #TB_closeWindowButton:hover,body.index-php #TB_closeWindowButton:focus,body.index-php #TB_closeWindowButton:hover,body.plugin-install-php #TB_closeWindowButton:focus,body.plugin-install-php #TB_closeWindowButton:hover,body.plugins-php #TB_closeWindowButton:focus,body.plugins-php #TB_closeWindowButton:hover,body.update-core-php #TB_closeWindowButton:focus,body.update-core-php #TB_closeWindowButton:hover{color:#00a0d2;outline:0;-webkit-box-shadow:none;box-shadow:none}body.about-php #TB_closeWindowButton:after,body.import-php #TB_closeWindowButton:after,body.index-php #TB_closeWindowButton:after,body.plugin-install-php #TB_closeWindowButton:after,body.plugins-php #TB_closeWindowButton:after,body.update-core-php #TB_closeWindowButton:after{content:"\f335";font:400 32px/29px dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:830px){body.about-php #TB_closeWindowButton,body.import-php #TB_closeWindowButton,body.index-php #TB_closeWindowButton,body.plugin-install-php #TB_closeWindowButton,body.plugins-php #TB_closeWindowButton,body.update-core-php #TB_closeWindowButton{left:0;top:-30px}}img{border:none}.bulk-action-notice .toggle-indicator:before,.js .meta-box-sortables .postbox .toggle-indicator:before,.js .sidebar-name .sidebar-name-arrow:before{content:"\f142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator:before,.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before,.js .widgets-holder-wrap.closed .sidebar-name-arrow:before{content:"\f140"}.js .sidebar-name .sidebar-name-arrow:before{padding:10px;right:0}.js #widgets-left .sidebar-name .sidebar-name-arrow{display:none}.accordion-section.open .accordion-section-content,.js #widgets-left .sidebar-name:hover .sidebar-name-arrow,.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow,.no-js .accordion-section .accordion-section-content{display:block}.js .postbox .handlediv .toggle-indicator:before{margin-top:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}#postcustomstuff p.submit,#templateside h2,.alignleft h2{margin:0}.rtl.js .postbox .handlediv .toggle-indicator:before{text-indent:1px}.bulk-action-notice .toggle-indicator:before{line-height:16px;vertical-align:top;color:#72777c}.js .postbox .handlediv:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.js .postbox .handlediv:focus .toggle-indicator: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)}#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}#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:600}.nonessential{color:#666;font-size:11px;font-style:italic;padding-right:12px}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:baseline;font-weight:600}.fileedit-sub{padding:10px 0 8px;line-height:180%}.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}.accordion-section-title:after,.handlediv,.item-edit,.sidebar-name-arrow{color:#72777c}.widget-action{color:#555d66}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:focus,.item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.widget-action:focus,.widget-top:hover .widget-action{color:#23282d}.widget-top a.widget-action:after{padding:1px 0 1px 2px;margin-top:10px;margin-left:10px;-webkit-border-radius:50%;border-radius:50%}.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)}.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 #ddd;margin:0}.accordion-section.open:hover{border-bottom-color:#ddd}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-right:1px solid #ddd;border-left:1px solid #ddd;-webkit-user-select:none;-moz-user-select:none;-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: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 #ddd}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;left:0;background:#ccc}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:right;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:right}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f9f9f9}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:right;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f9f9f9}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:right;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:right}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f9f9f9}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:right;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:right}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f9f9f9}}@media only screen and (min-width:1600px){.my-sites li{float:right;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:right}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f9f9f9}}.my-sites li a{text-decoration:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) 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){#col-left,#col-right,#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:rgba(0,0,0,0)!important}#wpcontent{position:relative;margin-right:0;padding-right:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-left:12px;margin-right:0}#col-left .col-wrap,#col-right .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 .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#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}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:25px}}@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}.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab{margin:10px 0 0 10px;border-bottom:1px solid #ccc}}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:right}} \ No newline at end of file + */.ui-draggable-handle,.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.accordion-section{border-bottom:1px solid #ddd;margin:0}.accordion-section.open:hover{border-bottom-color:#ddd}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-right:1px solid #ddd;border-left:1px solid #ddd;-webkit-user-select:none;-moz-user-select:none;-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:0}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a0a5aa transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section .accordion-section-title,.customize-pane-child .accordion-section-title{border-right:none;border-left:none;padding:10px 14px 11px 10px;line-height:21px;background:#fff}.control-section .accordion-section-title:after,.customize-pane-child .accordion-section-title:after{top: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 #ddd}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;left:0;background:#ccc}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:right;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:right}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f9f9f9}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:right;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f9f9f9}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:right;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:right}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f9f9f9}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:right;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:right}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f9f9f9}}@media only screen and (min-width:1600px){.my-sites li{float:right;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:right}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f9f9f9}}.my-sites li a{text-decoration:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) 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,.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){#col-left,#col-right,#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:rgba(0,0,0,0)!important}#wpcontent{position:relative;margin-right:0;padding-right:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-left:12px;margin-right:0}#col-left .col-wrap,#col-right .col-wrap{padding:0}#collapse-menu,#screen-meta,#screen-meta-links,.post-format-select{display:none!important}.wrap h1.wp-heading-inline{margin-bottom:.5em}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.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 .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#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}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:25px}.wp-filter .button.drawer-toggle{font-size:13px;line-height:26px;height:28px}}@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}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab{margin:10px 0 0 10px;border-bottom:1px solid #ccc}}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:right}} \ No newline at end of file diff --git a/wp/wp-admin/css/common.css b/wp/wp-admin/css/common.css index 42c4c7be..9b127c51 100644 --- a/wp/wp-admin/css/common.css +++ b/wp/wp-admin/css/common.css @@ -572,10 +572,20 @@ code { font-size: 23px; font-weight: 400; margin: 0; - padding: 9px 15px 4px 0; + padding: 9px 0 4px 0; line-height: 29px; } +.wrap h1.wp-heading-inline { + display: inline-block; + margin-right: 5px; +} + +.wp-header-end { + visibility: hidden; + margin: -2px 0 0; +} + .subtitle { margin: 0; padding-left: 25px; @@ -608,6 +618,10 @@ code { outline: 0; } +.wrap .wp-heading-inline + .page-title-action { + margin-left: 0; +} + .wrap .add-new-h2:hover, /* deprecated */ .wrap .page-title-action:hover { border-color: #008EC2; @@ -680,7 +694,7 @@ ul.striped > :nth-child(odd), } .wp-ui-highlight { - color: white; + color: #fff; background-color: #1e8cbe; } .wp-ui-text-highlight { @@ -759,7 +773,7 @@ img.emoji { /* @todo can we combine these into a class or use an existing dashicon one? */ .welcome-panel .welcome-panel-close:before, -.tagchecklist span a:before, +.tagchecklist .ntdelbutton .remove-tag-icon:before, #bulk-titles div a:before, .notice-dismiss:before { background: none; @@ -779,18 +793,41 @@ img.emoji { margin: 0; } -.tagchecklist span a:before, #bulk-titles div a:before { margin: 1px 0; } +.tagchecklist .ntdelbutton .remove-tag-icon:before { + margin-left: 2px; + -webkit-border-radius: 50%; + border-radius: 50%; + color: #0073aa; + /* vertically center the icon cross browsers */ + line-height: 1.28; +} + +.tagchecklist .ntdelbutton:focus { + outline: 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 { +.tagchecklist .ntdelbutton:hover .remove-tag-icon:before, +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before, +#bulk-titles div a:hover:before, +#bulk-titles div a:focus:before { color: #c00; } +.tagchecklist .ntdelbutton:focus .remove-tag-icon: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); +} + .key-labels label { line-height: 24px; } @@ -826,6 +863,8 @@ hr { border-bottom: 1px solid #fafafa; } +.widget-control-remove, +.widget-control-remove:focus, .row-actions span.delete a, .row-actions span.trash a, .row-actions span.spam a, @@ -842,7 +881,6 @@ hr { abbr.required, span.required, .file-error, -.widget-control-remove:hover, .row-actions .delete a:hover, .row-actions .trash a:hover, .row-actions .spam a:hover, @@ -854,10 +892,13 @@ span.required, #media-items a.delete-permanently:hover, #nav-menu-footer .menu-delete:hover { color: #f00; - text-decoration: none; border: none; } +.widget-control-remove:hover { + color: #f00; +} + /*------------------------------------------------------------------------------ 3.0 - Actions ------------------------------------------------------------------------------*/ @@ -870,10 +911,8 @@ span.required, } #delete-action { - line-height: 28px; - vertical-align: middle; - text-align: left; float: left; + line-height: 28px; } #publishing-action { @@ -1043,39 +1082,53 @@ th.action-links { display: inline-block; } -.wp-filter .drawer-toggle { - display: inline-block; - margin: 0 10px; - padding: 4px 6px; +.wp-filter .button.drawer-toggle { + margin: 10px 9px 0; + padding: 0 10px 0 6px; + border-color: transparent; + background-color: transparent; color: #666; - cursor: pointer; + vertical-align: baseline; + -webkit-box-shadow: none; + box-shadow: none; } .wp-filter .drawer-toggle:before { - display: inline-block; - vertical-align: top; content: "\f111"; margin: 0 5px 0 0; - width: 16px; - height: 16px; color: #72777c; - -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; + font: normal 16px/1 dashicons; + vertical-align: text-bottom; -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } -.wp-filter .drawer-toggle:hover, -.wp-filter .drawer-toggle:hover:before { +.wp-filter .button.drawer-toggle:hover, +.wp-filter .drawer-toggle:hover:before, +.wp-filter .button.drawer-toggle:focus, +.wp-filter .drawer-toggle:focus:before { + background-color: transparent; color: #00a0d2; } +.wp-filter .button.drawer-toggle:hover, +.wp-filter .button.drawer-toggle:focus:active { + border-color: transparent; +} + +.wp-filter .button.drawer-toggle:focus { + border-color: #5b9dd9; +} + +.wp-filter .button.drawer-toggle:active { + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transform: none; + -ms-transform: none; + transform: none; +} + .wp-filter .drawer-toggle.current:before { color: #fff; } @@ -1090,7 +1143,7 @@ th.action-links { width: 100%; } -.show-favorites-form .wp-filter .favorites-form { +.show-favorites-form .favorites-form { display: block; } @@ -1108,23 +1161,22 @@ th.action-links { 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 { +.show-filters .wp-filter .button.drawer-toggle { -webkit-border-radius: 2px; border-radius: 2px; - border: none; background: #72777c; color: #fff; } +.show-filters .wp-filter .drawer-toggle:hover, +.show-filters .wp-filter .drawer-toggle:focus { + background: rgb(46, 162, 204); +} + .show-filters .wp-filter .drawer-toggle:before { color: #fff; } @@ -1168,9 +1220,15 @@ th.action-links { } .filter-drawer .buttons { + clear: both; margin-bottom: 20px; } +.filter-drawer .filter-group + .buttons { + margin-bottom: 0; + padding-top: 20px; +} + .filter-drawer .buttons .button span { display: inline-block; opacity: 0.8; @@ -1183,6 +1241,21 @@ th.action-links { margin-left: 10px; } +.wp-filter .button-link.edit-filters { + color: #0073aa; + text-decoration: underline; + padding: 0 5px; + line-height: 28px; +} + +.wp-filter .button-link.edit-filters:hover { + color: #00a0d2; +} + +.wp-filter .button-link.edit-filters:focus { + color: #124964; +} + .filtered-by { display: none; margin: 0; @@ -1224,6 +1297,7 @@ th.action-links { padding: 20px; } +.show-filters .favorites-form, .show-filters .content-filterable, .show-filters.filters-applied.loading-content .content-filterable, .loading-content .content-filterable, @@ -2098,14 +2172,6 @@ html.wp-toolbar { font-style: italic; } -#wpfooter a { - text-decoration: none; -} - -#wpfooter a:hover { - text-decoration: underline; -} - /*------------------------------------------------------------------------------ 25.0 - Tabbed Admin Screen Interface (Experimental) ------------------------------------------------------------------------------*/ @@ -2160,7 +2226,7 @@ h3 .nav-tab, /* Back-compat for pre-4.4 */ h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */ .wrap h2.nav-tab-wrapper, /* higher specificity to override .wrap > h2:first-child */ -h3.nav-tab-wrapper { +.nav-tab-wrapper { border-bottom: 1px solid #ccc; margin: 0; padding-top: 9px; @@ -2823,6 +2889,11 @@ div.action-links { font-size: 13px; } +/* For non-js plugin installation screen ticket #36430. */ +.update-php .button.button-primary { + margin-right: 1em; +} + @media screen and ( max-width: 771px ) { #plugin-information-title.with-banner { height: 100px; @@ -2865,7 +2936,7 @@ div.action-links { #section-holder { position: static; margin: 0; - padding-bottom: 70px; /* reset from the two column height fix, plus accomodate footer */ + padding-bottom: 70px; /* reset from the two column height fix, plus accommodate footer */ } #plugin-information .fyi h3, @@ -3333,7 +3404,8 @@ img { display: none; } -.control-section .accordion-section-title { +.control-section .accordion-section-title, +.customize-pane-child .accordion-section-title { border-left: none; border-right: none; padding: 10px 10px 11px 14px; @@ -3341,7 +3413,8 @@ img { background: #fff; } -.control-section .accordion-section-title:after { +.control-section .accordion-section-title:after, +.customize-pane-child .accordion-section-title:after { top: 11px; } @@ -3535,9 +3608,7 @@ img { .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; } @@ -3597,6 +3668,10 @@ img { display: none !important; } + .wrap h1.wp-heading-inline { + margin-bottom: 0.5em; + } + .wrap .add-new-h2, /* deprecated */ .wrap .add-new-h2:active, /* deprecated */ .wrap .page-title-action, @@ -3722,6 +3797,12 @@ img { .filter-drawer .filter-group-feature label { line-height: 25px; } + + .wp-filter .button.drawer-toggle { + font-size: 13px; + line-height: 26px; + height: 28px; + } } /* Smartphone */ @@ -3747,7 +3828,7 @@ img { h1.nav-tab-wrapper, .wrap h2.nav-tab-wrapper, - h3.nav-tab-wrapper { + .nav-tab-wrapper { border-bottom: 0; } diff --git a/wp/wp-admin/css/common.min.css b/wp/wp-admin/css/common.min.css index ffa633b2..fa9b93ca 100644 --- a/wp/wp-admin/css/common.min.css +++ b/wp/wp-admin/css/common.min.css @@ -1,8 +1,8 @@ -#docs-list,#plugin-information .section,#template textarea,.code,.ltr,code{direction:ltr}#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-left:20px}#wpcontent,#wpfooter{margin-left:160px}.folded #wpcontent,.folded #wpfooter{margin-left:36px}#wpbody-content{padding-bottom:65px;float:left;width:100%;overflow:visible!important}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-2000px}.has-right-sidebar #post-body-content{margin-right:300px;float:none;width:auto}#col-left{float:left;width:35%}#col-right{float:right;width:65%}#col-left .col-wrap{padding:0 6px 0 0}#col-right .col-wrap{padding:0 0 0 6px}.alignleft{float:left}.alignright{float:right}#publishing-action .spinner,#save-post,.subsubsub{float:left}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.wp-clearfix:after{content:"";display:table;clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}#templateside,.misc-pub-filename,.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:#0073aa;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}.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}body{background:#f1f1f1;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#0073aa;-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}.wp-person a:focus .gravatar,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)}h1,h2,h3{color:#23282d}.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{font-size:13px;line-height:1.5;margin:1em 0}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{font-size:2em;margin:.67em 0}h2,h3{font-size:1.3em;margin:1em 0}.update-core-php h2{margin-top:2em}.update-messages h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc}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}.code,code{font-family:Consolas,Monaco,monospace;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:#555d66;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat 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}.updates-table td input,.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 0 0 8px;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.updates-table tbody td.check-column,.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 0 0 3px}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-left:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 20px 0 2px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 15px 4px 0;line-height:29px}.subtitle{margin:0;padding-left:25px;color:#555d66;font-size:14px;font-weight:400;line-height:1}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-left:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:none;border:1px solid #ccc;-webkit-border-radius:2px;border-radius:2px;background:#f7f7f7;text-shadow:none;font-weight:600;font-size:13px;line-height:normal;color:#0073aa;cursor:pointer;outline:0}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{border-color:#008EC2;background:#00a0d2;color:#fff}.page-title-action:focus{color:#124964}.ac_match,.highlight,.subsubsub a.current{color:#000}.wrap .page-title-action: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)}.wrap h1.long-header{padding-right:0}.wp-dialog{background-color:#fff}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.sorthelper{background-color:#ccf3fa}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f9f9f9}.bar{background-color:#e8e8e8;border-right-color:#99d}.highlight{background-color:#e4f2fd}.wp-ui-primary{color:#fff;background-color:#32373c}.wp-ui-text-primary{color:#32373c}.wp-ui-highlight{color:#fff;background-color:#1e8cbe}.wp-ui-text-highlight{color:#1e8cbe}.wp-ui-notification{color:#fff;background-color:#d54e21}.wp-ui-text-notification{color:#d54e21}.wp-ui-text-icon{color:#82878c}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.filter-group,.wp-filter{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}#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;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;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,.nav-tab,.no-break,.star-rating{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,span.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}#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}.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%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;background:#fff;color:#555;font-size:13px}.filter-group,html.wp-toolbar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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:#72777c;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-left:5px;margin-right:20px}.filter-items{float:left}.filter-links,.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:#72777c;-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}.filter-drawer,.wp-filter .favorites-form{margin:0 -20px;padding:20px;border-top:1px solid #eee;background:#fafafa}.wp-filter .drawer-toggle:hover,.wp-filter .drawer-toggle:hover:before{color:#00a0d2}.wp-filter .drawer-toggle.current:before{color:#fff}.wp-filter .favorites-form{display:none;overflow:hidden;width:100%}.show-favorites-form .wp-filter .favorites-form{display:block}.filter-drawer{display:none}.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:#72777c;color:#fff}.filter-group,.filtered-by .tag{border:1px solid #e5e5e5;background:#fff}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;position:relative;float:left;margin:0 1% 0 0;padding:20px 10px 10px;width:24%;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{display:inline-block;margin:7px 4px 7px 0;line-height:16px}.filter-drawer .buttons{margin-bottom:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-left:10px}.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;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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}div[class=update-message]{padding:.5em 12px .5em 0}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}.updated a{padding-bottom:2px}.notice-alt{-webkit-box-shadow:none;box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#23282d;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-right:38px;position:relative}.notice-dismiss{position:absolute;top:0;right:1px;border:none;margin:0;padding:9px;background:0 0;color:#b4b9be;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#c00}.notice-dismiss: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)}.ie8 .notice-dismiss:focus{outline:#5b9dd9 solid 1px}.notice-success,div.updated{border-left-color:#46b450}.notice-success.notice-alt{background-color:#ecf7ed}.notice-warning{border-left-color:#ffb900}.notice-warning.notice-alt{background-color:#fff8e5}.notice-error,div.error{border-left-color:#dc3232}.notice-error.notice-alt{background-color:#fbeaea}.notice-info{border-left-color:#00a0d2}.notice-info.notice-alt{background-color:#e5f5fa}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updated-message p:before,.updating-message p:before{display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updating-message p:before{color:#f56e28;content:"\f463"}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.updating-message p:before{-webkit-animation:rotation 2s infinite linear;animation:rotation 2s infinite linear}.button.updated-message:before,.installed p:before,.updated-message p:before{color:#79ba49;content:'\f147'}.update-message.notice-error p:before{color:#dc3232;content:"\f534"}.import-php .updating-message:before,.wrap .notice p:before{margin-right:6px;vertical-align:bottom}#update-nag,.update-nag{display:inline-block;line-height:19px;padding:11px 15px;font-size:14px;text-align:left;margin:25px 20px 0 2px;background-color:#fff;border-left:4px solid #ffba00;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#screen-meta,ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}.update-php .spinner{float:none;margin:-4px 0}#ajax-loading,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-left:2em}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before{margin:3px 5px 0 -2px}.button-primary.updating-message:before{color:#fff}.button-primary.updated-message:before{color:#66c6e4}.button.updated-message,.notice .button-link{-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}.notice .button-link{color:#0073aa}.notice .button-link:active,.notice .button-link:hover{color:#00a0d2}@media aural{.button.installed:before,.button.installing:before,.update-message p:before,.wrap .notice p:before{speak:none}}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-left:0!important}#screen-meta .screen-reader-text{visibility:hidden}#screen-meta-links{margin:0 20px 0 0}#screen-meta{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:#72777c;line-height:1.7;padding:3px 6px 3px 16px}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#32373c}#screen-meta-links .show-settings:active{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}#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:#72777c}#templateside ul li a,#wpfooter a,.nav-tab{text-decoration:none}#screen-meta-links .screen-meta-active:after{content:"\f142"}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.hndle a,.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.ie8 #screen-options-wrap legend{color:inherit}.metabox-prefs label{display:inline-block;padding-right:15px;line-height:30px}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-right:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 5px 0 0}.metabox-prefs .columns-prefs label input{margin:-1px 2px 0 0}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-right:15px}.metabox-prefs .screen-options label{line-height:28px;padding-right:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border:1px solid #e1e1e1;border-top:none;border-bottom:none;background:#f6fbfd}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;-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}.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}.widefat .column-comment ul{list-style:outside;margin-left:2em}.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;position:relative}.metabox-holder .postbox-container .empty-container:after{content:attr(data-emptystring);margin:auto;position:absolute;top:0;left:0;bottom:0;right:0;height:1em;width:200px;text-align:center;color:#ccc;font-size:18px;display:none}.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container,.metabox-holder.columns-1 .postbox-container .empty-container{border:0;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}.hndle a{font-size:11px}#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,.nav-tab,.plugins .name{font-weight:600}.postbox .handlediv{display:none;float:right;width:36px;height:36px;padding:0}.js .postbox .handlediv{display:block}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox .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 10px 0 0}#wpfooter{position:absolute;bottom:0;left:0;right:0;padding:10px 20px;color:#555d66}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}#wpfooter a:hover{text-decoration:underline}.nav-tab{float:left;border:1px solid #ccc;border-bottom:none;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;background:#e5e5e5;color:#555}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:16px}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#444}.nav-tab-active,.nav-tab:focus:active{-webkit-box-shadow:none;box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#444}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;margin:0;padding-top:9px;padding-bottom:0;line-height:inherit}.nav-tab-wrapper:not(.wp-clearfix):after{content:"";display:table;clear:both}.ie8 .nav-tab-wrapper{display:inline-block;width:100%;vertical-align:top}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;display:inline-block;visibility:hidden;float:right;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.loading-content .spinner,.spinner.is-active{visibility:visible}#template div{margin-right:190px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder h3{padding:10px 10px 11px 14px;line-height:21px}.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,.importer-action,.importer-desc,.importer-title{display:block}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #e5e5e5;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px}.importers{font-size:16px;width:auto}.importers td{padding-right:14px;line-height:1.5em}.importers .import-system{max-width:250px}.importers td.desc{max-width:500px}.post-categories,.post-categories li{display:inline}.importer-title{color:#000;font-size:14px;font-weight:400;margin-bottom:.2em}.importer-action{line-height:20px;color:#ddd;margin-bottom:1em}.not-installed-main-site .importer-action{color:#555}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{font-size:14px;line-height:1.4;font-weight:600;color:#222;margin:2px 0 0 9px}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.checkbox,.post-categories,.zerosize,fieldset{margin:0;padding:0}.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;margin:6px 0 0}#plugin-information{background:#fff;position:fixed;top:0;right:0;bottom:0;left:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 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:600;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,.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;min-height:36px;font-size:0;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;display:inline-block;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;-webkit-transition:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px -1px;background:#fff;border:1px solid #ddd;border-bottom-color:#fff;padding-top:8px;color:#32373c}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;right:0;left:0;min-height:100%;min-height:-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:-99939px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:right;position:relative;top:0;right:0;padding:16px 16px 99999px;margin-bottom:-99939px;width:217px;border-left:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#444}#plugin-information .fyi h3{font-weight:600;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .fyi-description{margin-top:0}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:left;margin-right:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#e5e5e5;float:left}#plugin-information .counter-bar{height:17px;background-color:#ffc733;float:left}#plugin-information .counter-count{margin-left:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-right:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-right:4px}#plugin-information-footer{padding:13px 16px;position:absolute;right:0;bottom:0;left:0;height:33px;border-top:1px solid #ddd;background:#f3f3f3}#plugin-information .section 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 #e5e5e5}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}@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.about-php #TB_window,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:#fcfcfc}.ie8 body.about-php #TB_window:before,.ie8 body.import-php #TB_window:before,.ie8 body.index-php #TB_window:before,.ie8 body.plugin-install-php #TB_window:before,.ie8 body.plugins-php #TB_window:before,.ie8 body.update-core-php #TB_window:before{content:" ";background:0 0}body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;background:url(../images/spinner.gif) center no-repeat #fcfcfc;-webkit-background-size:20px 20px;background-size:20px 20px;-webkit-transform:translateZ(0);transform:translateZ(0)}body.about-php #TB_ajaxWindowTitle,body.about-php .tb-close-icon,body.import-php #TB_ajaxWindowTitle,body.import-php .tb-close-icon,body.index-php #TB_ajaxWindowTitle,body.index-php .tb-close-icon,body.plugin-install-php #TB_ajaxWindowTitle,body.plugin-install-php .tb-close-icon,body.plugins-php #TB_ajaxWindowTitle,body.plugins-php .tb-close-icon,body.update-core-php #TB_ajaxWindowTitle,body.update-core-php .tb-close-icon{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}body.about-php #TB_title,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}.about-php #TB_closeWindowButton,.import-php #TB_closeWindowButton,.index-php #TB_closeWindowButton,.plugin-install-php #TB_closeWindowButton,.plugins-php #TB_closeWindowButton,.update-core-php #TB_closeWindowButton{left:auto;right:-30px;color:#eee}body.about-php #TB_closeWindowButton:focus,body.about-php #TB_closeWindowButton:hover,body.import-php #TB_closeWindowButton:focus,body.import-php #TB_closeWindowButton:hover,body.index-php #TB_closeWindowButton:focus,body.index-php #TB_closeWindowButton:hover,body.plugin-install-php #TB_closeWindowButton:focus,body.plugin-install-php #TB_closeWindowButton:hover,body.plugins-php #TB_closeWindowButton:focus,body.plugins-php #TB_closeWindowButton:hover,body.update-core-php #TB_closeWindowButton:focus,body.update-core-php #TB_closeWindowButton:hover{color:#00a0d2;outline:0;-webkit-box-shadow:none;box-shadow:none}body.about-php #TB_closeWindowButton:after,body.import-php #TB_closeWindowButton:after,body.index-php #TB_closeWindowButton:after,body.plugin-install-php #TB_closeWindowButton:after,body.plugins-php #TB_closeWindowButton:after,body.update-core-php #TB_closeWindowButton:after{content:"\f335";font:400 32px/29px dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:830px){body.about-php #TB_closeWindowButton,body.import-php #TB_closeWindowButton,body.index-php #TB_closeWindowButton,body.plugin-install-php #TB_closeWindowButton,body.plugins-php #TB_closeWindowButton,body.update-core-php #TB_closeWindowButton{right:0;top:-30px}}img{border:none}.bulk-action-notice .toggle-indicator:before,.js .meta-box-sortables .postbox .toggle-indicator:before,.js .sidebar-name .sidebar-name-arrow:before{content:"\f142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator:before,.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before,.js .widgets-holder-wrap.closed .sidebar-name-arrow:before{content:"\f140"}.js .sidebar-name .sidebar-name-arrow:before{padding:10px;left:0}.js #widgets-left .sidebar-name .sidebar-name-arrow{display:none}.accordion-section.open .accordion-section-content,.js #widgets-left .sidebar-name:hover .sidebar-name-arrow,.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow,.no-js .accordion-section .accordion-section-content{display:block}.js .postbox .handlediv .toggle-indicator:before{margin-top:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}#postcustomstuff p.submit,#templateside h2,.alignleft h2{margin:0}.rtl.js .postbox .handlediv .toggle-indicator:before{text-indent:1px}.bulk-action-notice .toggle-indicator:before{line-height:16px;vertical-align:top;color:#72777c}.js .postbox .handlediv:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.js .postbox .handlediv:focus .toggle-indicator: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)}#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}#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:600}.nonessential{color:#666;font-size:11px;font-style:italic;padding-left:12px}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:baseline;font-weight:600}.fileedit-sub{padding:10px 0 8px;line-height:180%}.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}.accordion-section-title:after,.handlediv,.item-edit,.sidebar-name-arrow{color:#72777c}.widget-action{color:#555d66}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:focus,.item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.widget-action:focus,.widget-top:hover .widget-action{color:#23282d}.widget-top a.widget-action:after{padding:1px 2px 1px 0;margin-top:10px;margin-right:10px;-webkit-border-radius:50%;border-radius:50%}.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)}.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"}/*! +.subsubsub a,.widefat a,.wp-filter a{text-decoration:none}#ajax-loading,#screen-meta .screen-reader-text,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading,.spinner,.wp-header-end{visibility:hidden}#docs-list,#plugin-information .section,#template textarea,.code,.ltr,code{direction:ltr}#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-left:20px}#wpcontent,#wpfooter{margin-left:160px}.folded #wpcontent,.folded #wpfooter{margin-left:36px}#wpbody-content{padding-bottom:65px;float:left;width:100%;overflow:visible!important}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-2000px}.has-right-sidebar #post-body-content{margin-right:300px;float:none;width:auto}#col-left{float:left;width:35%}#col-right{float:right;width:65%}#col-left .col-wrap{padding:0 6px 0 0}#col-right .col-wrap{padding:0 0 0 6px}.alignleft{float:left}.alignright{float:right}#publishing-action .spinner,#save-post,.subsubsub{float:left}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.wp-clearfix:after{content:"";display:table;clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}h2,h3,p{margin:1em 0}#templateside,.misc-pub-filename,.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:#0073aa;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}.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}body{background:#f1f1f1;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#0073aa;-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}.wp-person a:focus .gravatar,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)}h1,h2,h3{color:#23282d}.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{font-size:13px;line-height:1.5}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}h2,h3{font-size:1.3em}.update-core-php h2{margin-top:2em}.update-messages h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc}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}.code,code{font-family:Consolas,Monaco,monospace;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}.subsubsub a .count,.subsubsub a.current .count{color:#555d66;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #e1e1e1}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #e1e1e1;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:left;line-height:1.3em;font-size:14px}.updates-table td input,.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 0 0 8px;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.updates-table tbody td.check-column,.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 0 0 3px}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-left:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 20px 0 2px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px;line-height:29px}.wrap h1.wp-heading-inline{display:inline-block;margin-right:5px}.wp-header-end{margin:-2px 0 0}.subtitle{margin:0;padding-left:25px;color:#555d66;font-size:14px;font-weight:400;line-height:1}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-left:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:none;border:1px solid #ccc;-webkit-border-radius:2px;border-radius:2px;background:#f7f7f7;text-shadow:none;font-weight:600;font-size:13px;line-height:normal;color:#0073aa;cursor:pointer;outline:0}.wrap .wp-heading-inline+.page-title-action{margin-left:0}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{border-color:#008EC2;background:#00a0d2;color:#fff}.page-title-action:focus{color:#124964}.ac_match,.highlight,.subsubsub a.current{color:#000}.wrap .page-title-action: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)}.wrap h1.long-header{padding-right:0}.wp-dialog{background-color:#fff}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.sorthelper{background-color:#ccf3fa}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f9f9f9}.bar{background-color:#e8e8e8;border-right-color:#99d}.highlight{background-color:#e4f2fd}.wp-ui-primary{color:#fff;background-color:#32373c}.wp-ui-text-primary{color:#32373c}.wp-ui-highlight{color:#fff;background-color:#1e8cbe}.wp-ui-text-highlight{color:#1e8cbe}.wp-ui-notification{color:#fff;background-color:#d54e21}.wp-ui-text-notification{color:#d54e21}.wp-ui-text-icon{color:#82878c}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;-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;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;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 .ntdelbutton .remove-tag-icon: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{margin:1px 0}.tagchecklist .ntdelbutton .remove-tag-icon:before{margin-left:2px;-webkit-border-radius:50%;border-radius:50%;color:#0073aa;line-height:1.28}.tagchecklist .ntdelbutton:focus{outline:0}#bulk-titles div a:focus:before,#bulk-titles div a:hover:before,.tagchecklist .ntdelbutton:focus .remove-tag-icon:before,.tagchecklist .ntdelbutton:hover .remove-tag-icon:before,.welcome-panel .welcome-panel-close:focus:before,.welcome-panel .welcome-panel-close:hover:before{color:#c00}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{-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)}.filter-group,.wp-filter{position:relative;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap}#namediv td.first,#plugin-information-title,.nav-tab,.no-break,.star-rating{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,.widget-control-remove,.widget-control-remove:focus{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,abbr.required,span.required{color:red;border:none}.widget-control-remove:hover{color:red}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #ddd;background:#f5f5f5}#delete-action{float:left;line-height:28px}#publishing-action{text-align:right;float:right;line-height:23px}#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}.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;background:#fff;color:#555;font-size:13px}.filter-group,html.wp-toolbar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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:#72777c;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-left:5px;margin-right:20px}.filter-links li>a,.wp-filter .search-form.search-plugins{display:inline-block}.filter-items{float:left}.filter-links,.filter-links li{display:inline-block;margin:0}.filter-links li>a{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 .button.drawer-toggle{margin:10px 9px 0;padding:0 10px 0 6px;border-color:transparent;background-color:transparent;color:#666;vertical-align:baseline;-webkit-box-shadow:none;box-shadow:none}.wp-filter .drawer-toggle:before{content:"\f111";margin:0 5px 0 0;color:#72777c;font:400 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-filter .button.drawer-toggle:focus,.wp-filter .button.drawer-toggle:hover,.wp-filter .drawer-toggle:focus:before,.wp-filter .drawer-toggle:hover:before{background-color:transparent;color:#00a0d2}.wp-filter .button.drawer-toggle:focus:active,.wp-filter .button.drawer-toggle:hover{border-color:transparent}.wp-filter .button.drawer-toggle:focus{border-color:#5b9dd9}.wp-filter .button.drawer-toggle:active{background:0 0;-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.filter-drawer,.wp-filter .favorites-form{margin:0 -20px;padding:20px;border-top:1px solid #eee;background:#fafafa}.wp-filter .drawer-toggle.current:before{color:#fff}.wp-filter .favorites-form{display:none;overflow:hidden;width:100%}.show-favorites-form .favorites-form{display:block}.filter-drawer{display:none}.show-filters .filter-drawer{display:block;overflow:hidden;width:100%}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .button.drawer-toggle{-webkit-border-radius:2px;border-radius:2px;background:#72777c;color:#fff}.filter-group,.filtered-by .tag{border:1px solid #e5e5e5;background:#fff}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2ea2cc}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;float:left;margin:0 1% 0 0;padding:20px 10px 10px;width:24%;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{display:inline-block;margin:7px 4px 7px 0;line-height:16px}.filter-drawer .buttons{clear:both;margin-bottom:20px}.filter-drawer .filter-group+.buttons{margin-bottom:0;padding-top:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-left:10px}.wp-filter .button-link.edit-filters{color:#0073aa;text-decoration:underline;padding:0 5px;line-height:28px}.wp-filter .button-link.edit-filters:hover{color:#00a0d2}.wp-filter .button-link.edit-filters:focus{color:#124964}.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;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);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 .favorites-form,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #eee}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.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}div[class=update-message]{padding:.5em 12px .5em 0}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}.updated a{padding-bottom:2px}.notice-alt{-webkit-box-shadow:none;box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#23282d;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-right:38px;position:relative}.notice-dismiss{position:absolute;top:0;right:1px;border:none;margin:0;padding:9px;background:0 0;color:#b4b9be;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#c00}.notice-dismiss: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)}.ie8 .notice-dismiss:focus{outline:#5b9dd9 solid 1px}.notice-success,div.updated{border-left-color:#46b450}.notice-success.notice-alt{background-color:#ecf7ed}.notice-warning{border-left-color:#ffb900}.notice-warning.notice-alt{background-color:#fff8e5}.notice-error,div.error{border-left-color:#dc3232}.notice-error.notice-alt{background-color:#fbeaea}.notice-info{border-left-color:#00a0d2}.notice-info.notice-alt{background-color:#e5f5fa}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updated-message p:before,.updating-message p:before{display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updating-message p:before{color:#f56e28;content:"\f463"}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.updating-message p:before{-webkit-animation:rotation 2s infinite linear;animation:rotation 2s infinite linear}.button.updated-message:before,.installed p:before,.updated-message p:before{color:#79ba49;content:'\f147'}.update-message.notice-error p:before{color:#dc3232;content:"\f534"}.import-php .updating-message:before,.wrap .notice p:before{margin-right:6px;vertical-align:bottom}#update-nag,.update-nag{display:inline-block;line-height:19px;padding:11px 15px;font-size:14px;text-align:left;margin:25px 20px 0 2px;background-color:#fff;border-left:4px solid #ffba00;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#screen-meta,ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}.update-php .spinner{float:none;margin:-4px 0}#ajax-response.alignleft{margin-left:2em}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before{margin:3px 5px 0 -2px}.button-primary.updating-message:before{color:#fff}.button-primary.updated-message:before{color:#66c6e4}.button.updated-message,.notice .button-link{-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}.notice .button-link{color:#0073aa}.notice .button-link:active,.notice .button-link:hover{color:#00a0d2}@media aural{.button.installed:before,.button.installing:before,.update-message p:before,.wrap .notice p:before{speak:none}}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-left:0!important}#screen-meta-links{margin:0 20px 0 0}#screen-meta{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:#72777c;line-height:1.7;padding:3px 6px 3px 16px}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#32373c}#screen-meta-links .show-settings:active{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}#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:#72777c}#templateside ul li a,.nav-tab{text-decoration:none}#screen-meta-links .screen-meta-active:after{content:"\f142"}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.hndle a,.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.ie8 #screen-options-wrap legend{color:inherit}.metabox-prefs label{display:inline-block;padding-right:15px;line-height:30px}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-right:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 5px 0 0}.metabox-prefs .columns-prefs label input{margin:-1px 2px 0 0}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-right:15px}.metabox-prefs .screen-options label{line-height:28px;padding-right:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border:1px solid #e1e1e1;border-top:none;border-bottom:none;background:#f6fbfd}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;-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}.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}.widefat .column-comment ul{list-style:outside;margin-left:2em}.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;position:relative}.metabox-holder .postbox-container .empty-container:after{content:attr(data-emptystring);margin:auto;position:absolute;top:0;left:0;bottom:0;right:0;height:1em;width:200px;text-align:center;color:#ccc;font-size:18px;display:none}.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container,.metabox-holder.columns-1 .postbox-container .empty-container{border:0;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}.hndle a{font-size:11px}#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,.nav-tab,.plugins .name{font-weight:600}.postbox .handlediv{display:none;float:right;width:36px;height:36px;padding:0}.js .postbox .handlediv{display:block}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox .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 10px 0 0}#wpfooter{position:absolute;bottom:0;left:0;right:0;padding:10px 20px;color:#555d66}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}.nav-tab{float:left;border:1px solid #ccc;border-bottom:none;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;background:#e5e5e5;color:#555}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:16px}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#444}.nav-tab-active,.nav-tab:focus:active{-webkit-box-shadow:none;box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#444}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:1px solid #ccc;margin:0;padding-top:9px;padding-bottom:0;line-height:inherit}.nav-tab-wrapper:not(.wp-clearfix):after{content:"";display:table;clear:both}.ie8 .nav-tab-wrapper{display:inline-block;width:100%;vertical-align:top}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;display:inline-block;float:right;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.loading-content .spinner,.spinner.is-active{visibility:visible}#template div{margin-right:190px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder h3{padding:10px 10px 11px 14px;line-height:21px}.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,.importer-action,.importer-desc,.importer-title{display:block}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #e5e5e5;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px}.importers{font-size:16px;width:auto}.importers td{padding-right:14px;line-height:1.5em}.importers .import-system{max-width:250px}.importers td.desc{max-width:500px}.post-categories,.post-categories li{display:inline}.importer-title{color:#000;font-size:14px;font-weight:400;margin-bottom:.2em}.importer-action{line-height:20px;color:#ddd;margin-bottom:1em}.not-installed-main-site .importer-action{color:#555}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{font-size:14px;line-height:1.4;font-weight:600;color:#222;margin:2px 0 0 9px}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.checkbox,.post-categories,.zerosize,fieldset{margin:0;padding:0}.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;margin:6px 0 0}#plugin-information{background:#fff;position:fixed;top:0;right:0;bottom:0;left:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 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:600;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,.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;min-height:36px;font-size:0;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;display:inline-block;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;-webkit-transition:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px -1px;background:#fff;border:1px solid #ddd;border-bottom-color:#fff;padding-top:8px;color:#32373c}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;right:0;left:0;min-height:100%;min-height:-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:-99939px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:right;position:relative;top:0;right:0;padding:16px 16px 99999px;margin-bottom:-99939px;width:217px;border-left:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#444}#plugin-information .fyi h3{font-weight:600;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .fyi-description{margin-top:0}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:left;margin-right:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#e5e5e5;float:left}#plugin-information .counter-bar{height:17px;background-color:#ffc733;float:left}#plugin-information .counter-count{margin-left:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-right:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-right:4px}#plugin-information-footer{padding:13px 16px;position:absolute;right:0;bottom:0;left:0;height:33px;border-top:1px solid #ddd;background:#f3f3f3}#plugin-information .section 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 #e5e5e5}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}.update-php .button.button-primary{margin-right:1em}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px;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.about-php #TB_window,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:#fcfcfc}.ie8 body.about-php #TB_window:before,.ie8 body.import-php #TB_window:before,.ie8 body.index-php #TB_window:before,.ie8 body.plugin-install-php #TB_window:before,.ie8 body.plugins-php #TB_window:before,.ie8 body.update-core-php #TB_window:before{content:" ";background:0 0}body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;background:url(../images/spinner.gif) center no-repeat #fcfcfc;-webkit-background-size:20px 20px;background-size:20px 20px;-webkit-transform:translateZ(0);transform:translateZ(0)}body.about-php #TB_ajaxWindowTitle,body.about-php .tb-close-icon,body.import-php #TB_ajaxWindowTitle,body.import-php .tb-close-icon,body.index-php #TB_ajaxWindowTitle,body.index-php .tb-close-icon,body.plugin-install-php #TB_ajaxWindowTitle,body.plugin-install-php .tb-close-icon,body.plugins-php #TB_ajaxWindowTitle,body.plugins-php .tb-close-icon,body.update-core-php #TB_ajaxWindowTitle,body.update-core-php .tb-close-icon{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}body.about-php #TB_title,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}.about-php #TB_closeWindowButton,.import-php #TB_closeWindowButton,.index-php #TB_closeWindowButton,.plugin-install-php #TB_closeWindowButton,.plugins-php #TB_closeWindowButton,.update-core-php #TB_closeWindowButton{left:auto;right:-30px;color:#eee}body.about-php #TB_closeWindowButton:focus,body.about-php #TB_closeWindowButton:hover,body.import-php #TB_closeWindowButton:focus,body.import-php #TB_closeWindowButton:hover,body.index-php #TB_closeWindowButton:focus,body.index-php #TB_closeWindowButton:hover,body.plugin-install-php #TB_closeWindowButton:focus,body.plugin-install-php #TB_closeWindowButton:hover,body.plugins-php #TB_closeWindowButton:focus,body.plugins-php #TB_closeWindowButton:hover,body.update-core-php #TB_closeWindowButton:focus,body.update-core-php #TB_closeWindowButton:hover{color:#00a0d2;outline:0;-webkit-box-shadow:none;box-shadow:none}body.about-php #TB_closeWindowButton:after,body.import-php #TB_closeWindowButton:after,body.index-php #TB_closeWindowButton:after,body.plugin-install-php #TB_closeWindowButton:after,body.plugins-php #TB_closeWindowButton:after,body.update-core-php #TB_closeWindowButton:after{content:"\f335";font:400 32px/29px dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:830px){body.about-php #TB_closeWindowButton,body.import-php #TB_closeWindowButton,body.index-php #TB_closeWindowButton,body.plugin-install-php #TB_closeWindowButton,body.plugins-php #TB_closeWindowButton,body.update-core-php #TB_closeWindowButton{right:0;top:-30px}}img{border:none}.bulk-action-notice .toggle-indicator:before,.js .meta-box-sortables .postbox .toggle-indicator:before,.js .sidebar-name .sidebar-name-arrow:before{content:"\f142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator:before,.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before,.js .widgets-holder-wrap.closed .sidebar-name-arrow:before{content:"\f140"}.js .sidebar-name .sidebar-name-arrow:before{padding:10px;left:0}.js #widgets-left .sidebar-name .sidebar-name-arrow{display:none}.accordion-section.open .accordion-section-content,.js #widgets-left .sidebar-name:hover .sidebar-name-arrow,.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow,.no-js .accordion-section .accordion-section-content{display:block}.js .postbox .handlediv .toggle-indicator:before{margin-top:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}#postcustomstuff p.submit,#templateside h2,.alignleft h2{margin:0}.rtl.js .postbox .handlediv .toggle-indicator:before{text-indent:1px}.bulk-action-notice .toggle-indicator:before{line-height:16px;vertical-align:top;color:#72777c}.js .postbox .handlediv:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.js .postbox .handlediv:focus .toggle-indicator: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)}#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}#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:600}.nonessential{color:#666;font-size:11px;font-style:italic;padding-left:12px}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:baseline;font-weight:600}.fileedit-sub{padding:10px 0 8px;line-height:180%}.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}.accordion-section-title:after,.handlediv,.item-edit,.sidebar-name-arrow{color:#72777c}.widget-action{color:#555d66}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:focus,.item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.widget-action:focus,.widget-top:hover .widget-action{color:#23282d}.widget-top a.widget-action:after{padding:1px 2px 1px 0;margin-top:10px;margin-right:10px;-webkit-border-radius:50%;border-radius:50%}.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)}.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 #ddd;margin:0}.accordion-section.open:hover{border-bottom-color:#ddd}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-left:1px solid #ddd;border-right:1px solid #ddd;-webkit-user-select:none;-moz-user-select:none;-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: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 #ddd}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;right:0;background:#ccc}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:left;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:left}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f9f9f9}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:left;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f9f9f9}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:left;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:left}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f9f9f9}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:left;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:left}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f9f9f9}}@media only screen and (min-width:1600px){.my-sites li{float:left;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:left}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f9f9f9}}.my-sites li a{text-decoration:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) 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){#col-left,#col-right,#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:rgba(0,0,0,0)!important}#wpcontent{position:relative;margin-left:0;padding-left:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-right:12px;margin-left:0}#col-left .col-wrap,#col-right .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 .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#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}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:25px}}@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}.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab{margin:10px 10px 0 0;border-bottom:1px solid #ccc}}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:left}} \ No newline at end of file + */.ui-draggable-handle,.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.accordion-section{border-bottom:1px solid #ddd;margin:0}.accordion-section.open:hover{border-bottom-color:#ddd}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-left:1px solid #ddd;border-right:1px solid #ddd;-webkit-user-select:none;-moz-user-select:none;-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:0}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a0a5aa transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section .accordion-section-title,.customize-pane-child .accordion-section-title{border-left:none;border-right:none;padding:10px 10px 11px 14px;line-height:21px;background:#fff}.control-section .accordion-section-title:after,.customize-pane-child .accordion-section-title:after{top: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 #ddd}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;right:0;background:#ccc}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:left;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:left}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f9f9f9}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:left;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f9f9f9}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:left;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:left}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f9f9f9}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:left;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:left}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f9f9f9}}@media only screen and (min-width:1600px){.my-sites li{float:left;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:left}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f9f9f9}}.my-sites li a{text-decoration:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) 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,.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){#col-left,#col-right,#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:rgba(0,0,0,0)!important}#wpcontent{position:relative;margin-left:0;padding-left:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-right:12px;margin-left:0}#col-left .col-wrap,#col-right .col-wrap{padding:0}#collapse-menu,#screen-meta,#screen-meta-links,.post-format-select{display:none!important}.wrap h1.wp-heading-inline{margin-bottom:.5em}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.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 .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#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}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:25px}.wp-filter .button.drawer-toggle{font-size:13px;line-height:26px;height:28px}}@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}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab{margin:10px 10px 0 0;border-bottom:1px solid #ccc}}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:left}} \ No newline at end of file diff --git a/wp/wp-admin/css/customize-controls-rtl.css b/wp/wp-admin/css/customize-controls-rtl.css index a0f4c0b4..f0d7220c 100644 --- a/wp/wp-admin/css/customize-controls-rtl.css +++ b/wp/wp-admin/css/customize-controls-rtl.css @@ -3,7 +3,8 @@ body { -webkit-text-size-adjust: 100%; } -#customize-controls a { +.customize-controls-close, +.widget-control-actions a { text-decoration: none; } @@ -20,7 +21,7 @@ body { } #customize-controls .description { - color: #555; + color: #555d66; } #customize-header-actions .button-primary { @@ -48,14 +49,40 @@ body { #customize-controls .customize-info { border: none; - border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; margin-bottom: 15px; } +#customize-controls .customize-info.section-meta { + margin-bottom: 15px; +} + +#customize-controls .customize-info.is-in-view, +#customize-controls .customize-section-title.is-in-view { + position: absolute; + z-index: 9; + width: 100%; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, .1); + box-shadow: 0 1px 0 rgba(0, 0, 0, .1); +} + +#customize-controls .customize-section-title.is-in-view { + margin-top: 0; +} + +#customize-controls .customize-info.is-in-view + .accordion-section { + margin-top: 15px; +} + +#customize-controls .customize-info.is-sticky, +#customize-controls .customize-section-title.is-sticky { + position: fixed; + top: 46px; +} + #customize-controls .customize-info .accordion-section-title { background: #fff; - color: #555; + color: #555d66; border-right: none; border-left: none; border-bottom: none; @@ -65,7 +92,7 @@ body { #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; + color: #32373c; } #customize-controls .customize-info .accordion-section-title:after { @@ -77,8 +104,8 @@ body { line-height: 24px; } -#customize-controls .control-section .customize-section-title h3, -#customize-controls .control-section h3.customize-section-title, +#customize-controls .customize-pane-child .customize-section-title h3, +#customize-controls .customize-pane-child h3.customize-section-title, #customize-controls .customize-info .panel-title { font-size: 20px; font-weight: 200; @@ -107,7 +134,7 @@ body { box-shadow: none; -webkit-appearance: none; background: transparent; - color: #555; + color: #555d66; border: none; } @@ -124,22 +151,30 @@ body { } #customize-controls .customize-info .customize-panel-description, +#customize-controls .customize-info .customize-section-description, #customize-controls .no-widget-areas-rendered-notice { - color: #555; + color: #555d66; display: none; background: #fff; padding: 12px 15px; border-top: 1px solid #ddd; } + #customize-controls .customize-info .customize-panel-description.open + .no-widget-areas-rendered-notice { border-top: none; } -#customize-controls .customize-info .customize-panel-description p:first-child { +#customize-controls .customize-info .customize-section-description { + margin-bottom: 15px; +} + +#customize-controls .customize-info .customize-panel-description p:first-child, +#customize-controls .customize-info .customize-section-description p:first-child { margin-top: 0; } -#customize-controls .customize-info .customize-panel-description p:last-child { +#customize-controls .customize-info .customize-panel-description p:last-child, +#customize-controls .customize-info .customize-section-description p:last-child { margin-bottom: 0; } @@ -152,9 +187,22 @@ body { } #customize-theme-controls .accordion-section-title { + color: #555d66; + background-color: #fff; + border-bottom: 1px solid #ddd; + border-right: 4px solid #fff; + -webkit-transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; +} + +#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title { color: #555; background-color: #fff; - border-bottom: 1px solid #eee; + border-right: 4px solid #fff; } #customize-theme-controls .accordion-section-title:after { @@ -163,7 +211,7 @@ body { } #customize-theme-controls .accordion-section-content { - color: #555; + color: #555d66; background: transparent; } @@ -171,22 +219,27 @@ body { #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; + color: #0073aa; + background: #f3f3f5; + border-right-color: #0073aa; +} + +#accordion-section-themes + .control-section { + border-top: 1px solid #ddd; } .js .control-section:hover .accordion-section-title, .js .control-section .accordion-section-title:hover, .js .control-section.open .accordion-section-title, .js .control-section .accordion-section-title:focus { - background: #f5f5f5; + background: #f3f3f5; } #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; + color: #0073aa; } #customize-theme-controls .control-section.open { @@ -202,6 +255,11 @@ body { border-bottom-color: #ddd; } +#customize-theme-controls .control-panel-content .control-section:nth-child(2), +#customize-theme-controls .control-panel-nav_menus .control-section:nth-child(3) { + border-top: 1px solid #ddd; +} + #customize-theme-controls > ul { margin: 0; } @@ -218,6 +276,109 @@ body { box-sizing: border-box; } +#customize-info, +#customize-theme-controls .customize-pane-parent, +#customize-theme-controls .customize-pane-child { + overflow: visible; + width: 100%; + margin: 0; + padding: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: 0.18s -webkit-transform cubic-bezier(0.645, 0.045, 0.355, 1); + transition: 0.18s -webkit-transform cubic-bezier(0.645, 0.045, 0.355, 1); + -webkit-transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1); + transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1); + -webkit-transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1), 0.18s -webkit-transform cubic-bezier(0.645, 0.045, 0.355, 1); + transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1), 0.18s -webkit-transform cubic-bezier(0.645, 0.045, 0.355, 1); /* easeInOutCubic */ +} + +#customize-info, +#customize-theme-controls .customize-pane-parent { + position: relative; + visibility: visible; + height: auto; + max-height: none; + overflow: auto; + -webkit-transform: none; + -ms-transform: none; + transform: none; +} + +#customize-theme-controls .customize-pane-child { + position: absolute; + top: 0; + right: 0; + visibility: hidden; + height: 0; + max-height: none; + overflow: hidden; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); +} + +#customize-theme-controls .customize-pane-child.open, +#customize-theme-controls .customize-pane-child.current-panel, +#customize-theme-controls .customize-themes-panel.customize-pane-child.current-panel { + -webkit-transform: none; + -ms-transform: none; + transform: none; +} + +#customize-theme-controls .customize-themes-panel.customize-pane-child, +.section-open #customize-theme-controls .customize-pane-parent, +.in-sub-panel #customize-theme-controls .customize-pane-parent, +.section-open #customize-info, +.in-sub-panel #customize-info, +.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel, +.in-themes-panel #customize-theme-controls .customize-pane-parent, +.in-themes-panel #customize-info { + visibility: hidden; + height: 0; + overflow: hidden; + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); +} + +.section-open #customize-theme-controls .customize-pane-parent.busy, +.in-sub-panel #customize-theme-controls .customize-pane-parent.busy, +.in-themes-panel #customize-theme-controls .customize-pane-parent.busy, +.section-open #customize-info.busy, +.in-sub-panel #customize-info.busy, +.in-themes-panel #customize-info.busy, +.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel, +#customize-theme-controls .customize-pane-child.open, +#customize-theme-controls .customize-pane-child.current-panel, +#customize-theme-controls .customize-pane-child.busy { + visibility: visible; + height: auto; + overflow: auto; +} + +.in-themes-panel #customize-theme-controls .customize-pane-parent, +.in-themes-panel #customize-info { + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); +} + +#customize-theme-controls .customize-pane-child.accordion-section-content, +#customize-theme-controls .customize-pane-child.accordion-sub-container { + display: block; + overflow-x: hidden; +} + +#customize-theme-controls .customize-pane-child.accordion-section-content { + padding: 12px; +} + +#customize-theme-controls .customize-pane-child.menu li { + position: static; +} + .customize-section-description-container { margin-bottom: 15px; } @@ -232,6 +393,10 @@ div.customize-section-description { margin-top: 22px; } +.customize-info div.customize-section-description { + margin-top: 0; +} + div.customize-section-description p:first-child { margin-top: 0; } @@ -254,42 +419,17 @@ 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%; + color: #555d66; } .accordion-sub-container.control-panel-content { display: none; position: absolute; - right: 100%; top: 0; width: 100%; - -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 { +.accordion-sub-container.control-panel-content.busy { display: block; } @@ -303,16 +443,21 @@ h3.customize-section-title { top: 0; right: 0; width: 45px; - height: 45px; + height: 41px; padding: 0 0 0 2px; background: #eee; border: none; + border-top: 4px solid #eee; border-left: 1px solid #ddd; color: #444; text-align: right; cursor: pointer; - -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; - transition: color .1s ease-in-out, background .1s ease-in-out; + -webkit-transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; + transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; @@ -329,23 +474,22 @@ h3.customize-section-title { background: #fff; border: none; border-left: 1px solid #ddd; + border-right: 4px solid #fff; -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; + -webkit-transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; + transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; } .customize-section-back { height: 74px; } -.ios .customize-panel-back, -.ios .customize-section-back { - -webkit-transition: right 0s; - transition: right 0s; -} - .ios .customize-panel-back { display: none; } @@ -354,33 +498,38 @@ h3.customize-section-title { display: block; } -.panel-meta.customize-info .accordion-section-title { +#customize-controls .panel-meta.customize-info .accordion-section-title { margin-right: 48px; + border-right: none; } -#customize-controls .panel-meta.customize-info .accordion-section-title:hover { +#customize-controls .panel-meta.customize-info .accordion-section-title:hover, +#customize-controls .cannot-expand:hover .accordion-section-title { background: #fff; - color: #555; + color: #555d66; + border-right-color: #fff; } .customize-controls-close:focus, .customize-controls-close:hover, .customize-controls-preview-toggle:focus, .customize-controls-preview-toggle:hover { - background: #ddd; - border-color: #ccc; - color: #000; + background: #fff; + color: #0073aa; + border-top-color: #0073aa; 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; + color: #0073aa; + background: #f3f3f5; + border-right-color: #0073aa; outline: none; -webkit-box-shadow: none; box-shadow: none; @@ -390,7 +539,7 @@ h3.customize-section-title { font: normal 22px/45px dashicons; content: "\f335"; position: relative; - top: 1px; + top: -3px; right: 13px; } @@ -399,10 +548,11 @@ h3.customize-section-title { font: normal 20px/72px dashicons; content: "\f345"; position: relative; - right: 13px; + right: 9px; } .wp-full-overlay-sidebar .wp-full-overlay-header { + background-color: #eee; -webkit-transition: padding ease-in-out .18s; transition: padding ease-in-out .18s; } @@ -411,63 +561,6 @@ h3.customize-section-title { 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: -100%; - width: 100%; -} - -.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; @@ -509,8 +602,8 @@ p.customize-section-description { } .customize-control select { - min-width: 50%; - max-width: 100%; + width: 100%; + max-width: 300px; height: 28px; line-height: 28px; } @@ -531,9 +624,20 @@ p.customize-section-description { display: block; font-style: italic; line-height: 18px; + margin-top: 0; margin-bottom: 5px; } +.customize-section-description a.external-link:after { + font: 16px/11px dashicons; + content: "\f310"; + top: 3px; + position: relative; + padding-right: 3px; + display: inline-block; + text-decoration: none; +} + .customize-control-color .color-picker, .customize-control-upload div { line-height: 28px; @@ -608,6 +712,71 @@ p.customize-section-description { float: right; } +#available-menu-items .accordion-section-content .new-content-item, +.customize-control-dropdown-pages .new-content-item { + width: -webkit-calc(100% - 30px); + width: calc(100% - 30px); + padding: 8px 15px; + position: absolute; + bottom: 0; + z-index: 10; + background: #eee; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} + +.customize-control-dropdown-pages .new-content-item { + width: 100%; + max-width: 300px; + padding: 5px 1px 5px 0; + position: relative; +} + +#available-menu-items .new-content-item .create-item-input, +.customize-control-dropdown-pages .new-content-item .create-item-input { + -webkit-box-flex: 10; + -webkit-flex-grow: 10; + -moz-box-flex: 10; + -ms-flex-positive: 10; + -ms-flex: 10; + flex-grow: 10; +} + +#available-menu-items .new-content-item .add-content, +.customize-control-dropdown-pages .new-content-item .add-content { + margin: 2px 6px 2px 0; + -webkit-box-flex: 10; + -webkit-flex-grow: 10; + -moz-box-flex: 10; + -ms-flex-positive: 10; + -ms-flex: 10; + flex-grow: 1; +} + +.customize-control-dropdown-pages .new-content-item .create-item-input.invalid { + border: 1px solid #f00; +} + +.customize-control-dropdown-pages .add-new-toggle { + margin-right: 1px; + color: #0073aa; + font-weight: 600; + line-height: 28px; + text-decoration: underline; +} + +.customize-control-dropdown-pages .add-new-toggle:hover, +.customize-control-dropdown-pages .add-new-toggle:active { + color: #00a0d2; +} + +.customize-control-dropdown-pages .add-new-toggle:focus { + color: #124964; +} + #customize-preview iframe { width: 100%; height: 100%; @@ -739,7 +908,7 @@ p.customize-section-description { } .customize-control-color .dropdown .dropdown-content { - background-color: #555; + background-color: #555d66; border: 1px solid rgba(0, 0, 0, 0.15); } @@ -770,6 +939,7 @@ p.customize-section-description { margin-bottom: 8px; } +.customize-control-header .actions, .customize-control-header .uploaded { margin-bottom: 18px; } @@ -822,7 +992,7 @@ p.customize-section-description { display: none; position: absolute; width: 100%; - color: #555; + color: #555d66; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; @@ -853,6 +1023,11 @@ p.customize-section-description { .customize-control-header .header-view:after { border: 0; } + +.customize-control-header .header-view.selected .choice:focus { + outline: none; +} + .customize-control-header .header-view.selected:after { content: ''; position: absolute; @@ -862,6 +1037,7 @@ p.customize-section-description { -webkit-border-radius: 2px; border-radius: 2px; } + .customize-control-header .header-view.button.selected { border: 0; } @@ -871,11 +1047,11 @@ p.customize-section-description { .customize-control-header .uploaded .header-view .close { font-size: 20px; color: #fff; - background: #555; + background: #555d66; background: rgba(0, 0, 0, 0.5); position: absolute; top: 10px; - left: -999px; + right: -999px; z-index: 1; width: 26px; height: 26px; @@ -884,9 +1060,14 @@ p.customize-section-description { .customize-control-header .header-view:hover .close, .customize-control-header .header-view .close:focus { + right: auto; left: 10px; } +.customize-control-header .header-view .close:focus { + outline: 1px solid #5b9dd9; +} + /* Header control: randomiz(s)er */ .customize-control-header .random.placeholder { @@ -933,6 +1114,16 @@ p.customize-section-description { margin-bottom: 9px; } +.customize-control-header .choice:focus { + outline: none; + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 3px 1px rgba(30, 140, 190, .8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 3px 1px rgba(30, 140, 190, .8); +} + .customize-control-header .uploaded div:last-child > .choice { margin-bottom: 0; } @@ -954,6 +1145,64 @@ p.customize-section-description { float: left; } +/* Background position control */ +.customize-control-background_position .background-position-control .button-group { + display: block; +} + +/** + * Custom CSS Section + * + * Modifications to the Section Container to make the textarea full-width and + * full-height, if the control is the only control in the section. + */ + +#customize-controls .customize-section-description-container.section-meta.customize-info { + border-bottom: none; +} + +#sub-accordion-section-custom_css .customize-control-notifications-container { + margin-bottom: 15px; +} + +#customize-control-custom_css textarea { + display: block; + font-family: Consolas, Monaco, monospace; + font-size: 12px; + padding: 6px 8px; + height: 500px; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; +} + +.customize-section-description-container + #customize-control-custom_css:last-child textarea { + border-left: 0; + border-right: 0; + height: -webkit-calc( 100vh - 185px ); + height: calc( 100vh - 185px ); + resize: none; +} +.customize-section-description-container + #customize-control-custom_css:last-child { + margin-right: -12px; + width: 299px; + margin-bottom: -12px; +} + +@media screen and ( max-width: 640px ) { + .customize-section-description-container + #customize-control-custom_css:last-child { + margin-right: 0; + margin-left: 0; + width: 100%; + } + .customize-section-description-container + #customize-control-custom_css:last-child textarea { + height: -webkit-calc( 100vh - 140px ); + height: calc( 100vh - 140px ); + width: 100%; + border: solid 1px #ddd; + } +} + /** * Themes */ @@ -975,37 +1224,46 @@ p.customize-section-description { animation: customize-reload .75s; } -.control-section-themes .accordion-section-title { +#customize-theme-controls .control-section-themes .accordion-section-title:hover, /* Not a focusable element. */ +#customize-theme-controls .control-section-themes .accordion-section-title { cursor: default; + background: #fff; + color: #555d66; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + border-right: none; + margin-top: 0; } -#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; +#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover, /* Not a focusable element. */ +#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child { + border-top: 0; } -.control-section-themes .accordion-section-title { - margin: 15px 0; +#customize-theme-controls .control-section-themes > .accordion-section-title:hover, /* Not a focusable element. */ +#customize-theme-controls .control-section-themes > .accordion-section-title { + margin: 0 0 15px; } -.customize-themes-panel .accordion-section-title { +#customize-controls .customize-themes-panel .accordion-section-title:hover, +#customize-controls .customize-themes-panel .accordion-section-title { margin: 15px -8px; } -.control-section-themes .accordion-section-title { +#customize-controls .control-section-themes .accordion-section-title, +#customize-controls .customize-themes-panel .accordion-section-title { padding-left: 100px; /* Space for the button */ } -.control-section-themes .accordion-section-title span.customize-action, +#customize-controls .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 { +#customize-controls .control-section-themes .accordion-section-title .change-theme, +#customize-controls .customize-themes-panel .accordion-section-title .customize-theme { position: absolute; left: 10px; top: 50%; @@ -1013,12 +1271,11 @@ p.customize-section-description { font-weight: 400; } -.control-section-themes .accordion-section-title:before { +#customize-controls .control-section-themes .accordion-section-title:before { display: none; } -.customize-themes-panel { - display: none; +#customize-controls .customize-themes-panel { padding: 0 8px; background: #f1f1f1; -webkit-box-sizing: border-box; @@ -1026,7 +1283,7 @@ p.customize-section-description { box-sizing: border-box; } -.customize-themes-panel .accordion-section-title:first-child { +#customize-controls .customize-themes-panel .accordion-section-title:first-child { margin-top: 0; } @@ -1035,14 +1292,10 @@ p.customize-section-description { font-weight: 600; } -.customize-themes-panel > h2 { +#customize-controls .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; @@ -1088,27 +1341,15 @@ p.customize-section-description { width: 100%; } -#accordion-section-themes .accordion-section-title:after { +.control-section-themes .accordion-section-title:after, +.customize-themes-panel .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; @@ -1142,10 +1383,6 @@ p.customize-section-description { 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 { @@ -1196,7 +1433,7 @@ body.cheatin p { * Widgets and Menus common styles */ -/* higher specificity than .wp-core-ui .button-secondary */ +/* higher specificity than .wp-core-ui .button */ #customize-theme-controls .add-new-widget, #customize-theme-controls .add-new-menu-item { cursor: pointer; @@ -1219,7 +1456,8 @@ body.cheatin p { } .add-new-widget:before, -.add-new-menu-item:before { +.add-new-menu-item:before, +#available-menu-items .new-content-item .add-content:before { content: "\f132"; display: inline-block; position: relative; @@ -1400,6 +1638,11 @@ body.adding-widget .add-new-widget:before, overflow: auto; bottom: 0; width: 100%; + border-top: 1px solid #ddd; +} + +.no-widgets-found #available-widgets-list { + border-top: none; } #available-widgets-filter { @@ -1408,13 +1651,12 @@ body.adding-widget .add-new-widget:before, z-index: 1; width: 300px; background: #eee; - border-bottom: 1px solid #e5e5e5; } /* search field container */ #available-widgets-filter, #available-menu-items-search .accordion-section-title { - padding: 12px 15px; + padding: 13px 15px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; @@ -1422,8 +1664,101 @@ body.adding-widget .add-new-widget:before, #available-widgets-filter input, #available-menu-items-search input { - padding: 6px 10px; width: 100%; + height: 32px; + margin: 1px 0; + padding: 6px 30px; +} + +#available-widgets-filter input::-ms-clear, +#available-menu-items-search input::-ms-clear { + display: none; /* remove the "x" in IE, which conflicts with the "x" icon on button.clear-results */ +} + +#available-menu-items-search .search-icon, +#available-widgets-filter .search-icon { + display: block; + position: absolute; + top: 15px; /* 13 container padding +1 input margin +1 input border */ + right: 16px; + width: 30px; + height: 30px; + line-height: 28px; + text-align: center; + color: #72777c; +} + +#available-widgets-filter .clear-results, +#available-menu-items-search .clear-results { + position: absolute; + top: 15px; /* 13 container padding +1 input margin +1 input border */ + left: 16px; + width: 30px; + height: 30px; + padding: 0; + border: 0; + cursor: pointer; + background: none; + color: #a00; + text-decoration: none; + outline: 0; +} + +#available-widgets-filter .clear-results, +#available-menu-items-search .clear-results, +#available-menu-items-search.loading .clear-results.is-visible { + display: none; +} + +#available-widgets-filter .clear-results.is-visible, +#available-menu-items-search .clear-results.is-visible { + display: block; +} + +#available-widgets-filter .clear-results:before, +#available-menu-items-search .clear-results:before { + content: "\f335"; + font: normal 20px/1 dashicons; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#available-widgets-filter .clear-results:hover, +#available-widgets-filter .clear-results:focus, +#available-menu-items-search .clear-results:hover, +#available-menu-items-search .clear-results:focus { + color: #dc3232; +} + +#available-widgets-filter .clear-results:focus, +#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 .search-icon:after, +#available-widgets-filter .search-icon:after { + content: "\f179"; + font: normal 20px/1 dashicons; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.no-widgets-found-message { + display: none; + margin: 0; + padding: 0 15px; + line-height: inherit; +} + +.no-widgets-found .no-widgets-found-message { + display: block; } #available-widgets .widget-top, @@ -1441,7 +1776,14 @@ body.adding-widget .add-new-widget:before, position: relative; padding: 20px 60px 20px 15px; background: #fff; - border-bottom: 1px solid #e5e5e5; + border-bottom: 1px solid #ddd; + border-right: 4px solid #fff; + -webkit-transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; cursor: pointer; display: none; } @@ -1517,7 +1859,7 @@ body.adding-widget .add-new-widget:before, background: #eee; border: 0; border-left: 1px solid #ddd; - color: #444; + color: #555d66; 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; @@ -1598,7 +1940,7 @@ body.adding-widget .add-new-widget:before, padding: 9px 14px 12px 10px; margin: 0; line-height: 24px; - color: #555; + color: #555d66; display: block; overflow: hidden; white-space: nowrap; @@ -1618,12 +1960,15 @@ body.adding-widget .add-new-widget:before, #available-widgets-filter { position: relative; width: 100%; - background: #fff; height: auto; - padding: 10px 15px; } #available-widgets-list { - top: 140px; + top: 130px; + } + + #available-menu-items-search .clear-results, + #available-menu-items-search .search-icon { + top: 85px; /* 70 section title height + 13 container padding +1 input margin +1 input border */ } } diff --git a/wp/wp-admin/css/customize-controls-rtl.min.css b/wp/wp-admin/css/customize-controls-rtl.min.css index a668fa32..d34a20cc 100644 --- a/wp/wp-admin/css/customize-controls-rtl.min.css +++ b/wp/wp-admin/css/customize-controls-rtl.min.css @@ -1 +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:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;left:1px;padding:20px 10px 10px 20px;width:20px;height:20px;cursor:pointer;-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,#customize-controls .no-widget-areas-rendered-notice{color:#555;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}#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";color:#a0a5aa}#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:100%;top:0;width:100%;-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:71px;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:74px}.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/72px 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:-100%;width:100%}.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:100%;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:4px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-bottom:5px}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{line-height:20px;display:block;margin-right:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:4px;margin-right:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control .attachment-thumb.type-icon{float:right;margin:10px;width:auto}.customize-control .attachment-title{font-weight:600;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image{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%;position:absolute}#customize-preview iframe+iframe{visibility:hidden}.wp-full-overlay-sidebar{background:#eee;border-left:1px solid #ddd}#customize-controls .customize-control-notifications-container{margin:4px 0 8px;padding:0;display:none;cursor:default}#customize-controls .customize-control-widget_form.has-error .widget .widget-top,.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle{-webkit-box-shadow:inset 0 0 0 2px #dc3232;box-shadow:inset 0 0 0 2px #dc3232;-webkit-transition:.15s box-shadow linear;transition:.15s box-shadow linear}.customize-control-notifications-container li.notice{list-style:none;margin:0 0 6px;padding:4px 8px}.customize-control-notifications-container li.notice:last-child{margin-bottom:0}#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container{margin-top:0}#customize-controls .customize-control-widget_form .customize-control-notifications-container,.customize-control .attachment-media-view .actions{margin-top:8px}.customize-control-text.has-error input{outline:#dc3232 solid 2px}.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 .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control-header .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 .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control .attachment-media-view .upload-button,.customize-control-header button.new,.customize-control-header button.remove{white-space:normal;width:48%;height:auto}.customize-control .attachment-media-view .thumbnail,.customize-control-header .current .container{overflow:hidden}.customize-control .attachment-media-view .placeholder,.customize-control-header .placeholder{width:100%;position:relative;text-align:center;cursor:default;border:1px dashed #b4b9be;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:9px 0;line-height:20px}.customize-control-header .inner{display:none;position:absolute;width:100%;color:#555;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-header .inner,.customize-control-header .inner .dashicons{line-height:20px;top:8px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom: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-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control .attachment-media-view .thumbnail-image img,.customize-control-header img{max-width:100%}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control-header .remove{float:right;margin-left:3px}.customize-control .attachment-media-view .upload-button,.customize-control-header .new{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}.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%}.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,.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 h1{border-bottom:1px solid #ddd;clear:both;color:#666;font-size:24px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:30px 0 0;padding:0 0 7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:left;margin-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}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}.add-new-menu-item:before,.add-new-widget: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}.reorder-toggle{color:#0073aa;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:hover{color:#00a0d2}.reorder-toggle:focus{outline:dotted 1px}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none;color:#0073aa}.reorder-toggle:active .reorder-done,.reorder-toggle:focus .reorder-done,.reorder-toggle:hover .reorder-done{color:#00a0d2}.menu-item-reorder-nav button,.widget-reorder-nav span{position:relative;overflow:hidden;float:right;display:block;width:33px;height:43px;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}.menu-item-reorder-nav button{width:30px;height:40px;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none}.menu-item-reorder-nav button:before,.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;font:400 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items .customize-section-title,#available-widgets .customize-section-title,.customize-controls-preview-toggle{display:none}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover,.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#191e23;background:#eee}.menus-move-down:before,.move-widget-down:before{content:"\f347"}.menus-move-up:before,.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down,.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#d5d5d5;background-color:#fff;cursor:default;pointer-events:none}.wp-full-overlay-main{left:auto;width:100%}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover,body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#929793;color:#32373c;-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,body.adding-widget .add-new-widget:before{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}#available-menu-items,#available-widgets{position:absolute;top:0;bottom:0;right:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#eee;-webkit-transition:right .18s;transition:right .18s;border-left:1px solid #ddd}#available-widgets-list{top:60px;position:absolute;overflow:auto;bottom:0;width:100%}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;background:#eee;border-bottom:1px solid #e5e5e5}#available-menu-items-search .accordion-section-title,#available-widgets-filter{padding:12px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items-search input,#available-widgets-filter input{padding:6px 10px;width:100%}#available-menu-items .item-top,#available-menu-items .item-top:hover,#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-menu-items .item-tpl,#available-widgets .widget-tpl{position:relative;padding:20px 60px 20px 15px;background:#fff;border-bottom:1px solid #e5e5e5;cursor:pointer;display:none}#available-menu-items .item,#available-widgets .widget{position:static}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{margin-right:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:-32px}.customize-control input[type=radio]+label,.customize-control input[type=checkbox]+label{line-height:32px}}@media screen and (max-width:640px){#customize-controls{width:100%}.wp-full-overlay.collapsed #customize-controls,.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:0;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}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets{top:46px;right:0;z-index:10;width:100%}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back,#available-widgets .customize-section-back{height:69px}#available-menu-items .customize-section-title h3,#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 14px 12px 10px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action,#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;background:#fff;height:auto;padding:10px 15px}#available-widgets-list{top:140px}} \ No newline at end of file +#customize-controls .customize-info .customize-section-description,#customize-controls .customize-info.section-meta{margin-bottom:15px}body{overflow:hidden;-webkit-text-size-adjust:100%}.customize-controls-close,.widget-control-actions a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls .description{color:#555d66}#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-bottom:1px solid #ddd;margin-bottom:15px}#customize-controls .customize-info.is-in-view,#customize-controls .customize-section-title.is-in-view{position:absolute;z-index:9;width:100%;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 0 rgba(0,0,0,.1)}#customize-controls .customize-section-title.is-in-view{margin-top:0}#customize-controls .customize-info.is-in-view+.accordion-section{margin-top:15px}#customize-controls .customize-info.is-sticky,#customize-controls .customize-section-title.is-sticky{position:fixed;top:46px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#555d66;border-right:none;border-left:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#32373c}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:24px}#customize-controls .customize-info .panel-title,#customize-controls .customize-pane-child .customize-section-title h3,#customize-controls .customize-pane-child h3.customize-section-title{font-size:20px;font-weight:200;line-height:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;left:1px;padding:20px 10px 10px 20px;width:20px;height:20px;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;background:0 0;color:#555d66;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;right:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}#customize-controls .customize-info .customize-panel-description,#customize-controls .customize-info .customize-section-description,#customize-controls .no-widget-areas-rendered-notice{color:#555d66;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}#customize-controls .customize-info .customize-panel-description p:first-child,#customize-controls .customize-info .customize-section-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child,#customize-controls .customize-info .customize-section-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-left:30px}#customize-theme-controls .control-section{border:none}#customize-theme-controls .accordion-section-title{color:#555d66;background-color:#fff;border-bottom:1px solid #ddd;border-right:4px solid #fff;-webkit-transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title{color:#555;background-color:#fff;border-right:4px solid #fff}#customize-theme-controls .accordion-section-title:after{content:"\f341";color:#a0a5aa}#customize-theme-controls .accordion-section-content{color:#555d66;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:#0073aa;background:#f3f3f5;border-right-color:#0073aa}#accordion-section-themes+.control-section{border-top:1px solid #ddd}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f3f3f5}#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}#customize-theme-controls .control-section.open{border-bottom:1px solid #eee}#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#eee!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#ddd}#customize-theme-controls .control-panel-content .control-section:nth-child(2),#customize-theme-controls .control-panel-nav_menus .control-section:nth-child(3){border-top:1px solid #ddd}#customize-theme-controls>ul{margin:0}#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{width:100%;margin:0;padding:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:.18s transform cubic-bezier(.645,.045,.355,1),.18s -webkit-transform cubic-bezier(.645,.045,.355,1);transition:.18s transform cubic-bezier(.645,.045,.355,1),.18s -webkit-transform cubic-bezier(.645,.045,.355,1)}#customize-info,#customize-theme-controls .customize-pane-parent{position:relative;visibility:visible;height:auto;max-height:none;overflow:auto;-webkit-transform:none;-ms-transform:none;transform:none}#customize-theme-controls .customize-pane-child{position:absolute;top:0;right:0;visibility:hidden;height:0;max-height:none;overflow:hidden;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open,#customize-theme-controls .customize-themes-panel.customize-pane-child.current-panel{-webkit-transform:none;-ms-transform:none;transform:none}#customize-theme-controls .customize-themes-panel.customize-pane-child,.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls .customize-pane-parent,.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel,.in-themes-panel #customize-info,.in-themes-panel #customize-theme-controls .customize-pane-parent,.section-open #customize-info,.section-open #customize-theme-controls .customize-pane-parent{visibility:hidden;height:0;overflow:hidden;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}#customize-theme-controls .customize-pane-child.busy,#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open,.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel,.in-sub-panel #customize-info.busy,.in-sub-panel #customize-theme-controls .customize-pane-parent.busy,.in-themes-panel #customize-info.busy,.in-themes-panel #customize-theme-controls .customize-pane-parent.busy,.section-open #customize-info.busy,.section-open #customize-theme-controls .customize-pane-parent.busy{visibility:visible;height:auto;overflow:auto}.in-themes-panel #customize-info,.in-themes-panel #customize-theme-controls .customize-pane-parent{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}#customize-theme-controls .customize-pane-child.accordion-section-content,#customize-theme-controls .customize-pane-child.accordion-sub-container{display:block;overflow-x:hidden}#customize-theme-controls .customize-pane-child.accordion-section-content{padding:12px}#customize-theme-controls .customize-pane-child.menu li{position:static}.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}.customize-info div.customize-section-description,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:#555d66}.accordion-sub-container.control-panel-content{display:none;position:absolute;top:0;width:100%}.accordion-sub-container.control-panel-content.busy{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;right:0;width:45px;height:41px;padding:0 0 0 2px;background:#eee;border:none;border-top:4px solid #eee;border-left:1px solid #ddd;color:#444;text-align:right;cursor:pointer;-webkit-transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;-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:71px;padding:0 0 0 24px;margin:0;background:#fff;border:none;border-left:1px solid #ddd;border-right:4px solid #fff;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;-webkit-transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out}.customize-section-back{height:74px}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}#customize-controls .panel-meta.customize-info .accordion-section-title{margin-right:48px;border-right:none}#customize-controls .cannot-expand:hover .accordion-section-title,#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#555d66;border-right-color:#fff}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#fff;color:#0073aa;border-top-color:#0073aa;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#0073aa;background:#f3f3f5;border-right-color:#0073aa;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-controls-close:before{font:400 22px/45px dashicons;content:"\f335";position:relative;top:-3px;right:13px}.customize-panel-back:before,.customize-section-back:before{font:400 20px/72px dashicons;content:"\f345";position:relative;right:9px}.wp-full-overlay-sidebar .wp-full-overlay-header{background-color:#eee;-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}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:100%;line-height:18px;margin:0}.customize-control-hidden{margin:0}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{width:100%;max-width:300px;height:28px;line-height:28px}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:24px;font-weight:600;margin-bottom:4px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-top:0;margin-bottom:5px}.customize-section-description a.external-link:after{font:16px/11px dashicons;content:"\f310";top:3px;position:relative;padding-right:3px;display:inline-block;text-decoration:none}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{line-height:20px;display:block;margin-right:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:4px;margin-right:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control .attachment-thumb.type-icon{float:right;margin:10px;width:auto}.customize-control .attachment-title{font-weight:600;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image{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}#available-menu-items .accordion-section-content .new-content-item,.customize-control-dropdown-pages .new-content-item{width:-webkit-calc(100% - 30px);width:calc(100% - 30px);padding:8px 15px;position:absolute;bottom:0;z-index:10;background:#eee;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.customize-control-dropdown-pages .new-content-item{width:100%;max-width:300px;padding:5px 1px 5px 0;position:relative}#available-menu-items .new-content-item .create-item-input,.customize-control-dropdown-pages .new-content-item .create-item-input{-webkit-box-flex:10;-webkit-flex-grow:10;-moz-box-flex:10;-ms-flex-positive:10;-ms-flex:10;flex-grow:10}#available-menu-items .new-content-item .add-content,.customize-control-dropdown-pages .new-content-item .add-content{margin:2px 6px 2px 0;-webkit-box-flex:10;-webkit-flex-grow:10;-moz-box-flex:10;-ms-flex-positive:10;-ms-flex:10;flex-grow:1}.customize-control-dropdown-pages .new-content-item .create-item-input.invalid{border:1px solid red}.customize-control-dropdown-pages .add-new-toggle{margin-right:1px;color:#0073aa;font-weight:600;line-height:28px;text-decoration:underline}.customize-control-dropdown-pages .add-new-toggle:active,.customize-control-dropdown-pages .add-new-toggle:hover{color:#00a0d2}.customize-control-dropdown-pages .add-new-toggle:focus{color:#124964}#customize-preview iframe{width:100%;height:100%;position:absolute}#customize-preview iframe+iframe{visibility:hidden}.wp-full-overlay-sidebar{background:#eee;border-left:1px solid #ddd}#customize-controls .customize-control-notifications-container{margin:4px 0 8px;padding:0;display:none;cursor:default}#customize-controls .customize-control-widget_form.has-error .widget .widget-top,.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle{-webkit-box-shadow:inset 0 0 0 2px #dc3232;box-shadow:inset 0 0 0 2px #dc3232;-webkit-transition:.15s box-shadow linear;transition:.15s box-shadow linear}.customize-control-notifications-container li.notice{list-style:none;margin:0 0 6px;padding:4px 8px}.customize-control-notifications-container li.notice:last-child{margin-bottom:0}#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container{margin-top:0}#customize-controls .customize-control-widget_form .customize-control-notifications-container,.customize-control .attachment-media-view .actions{margin-top:8px}.customize-control-text.has-error input{outline:#dc3232 solid 2px}.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:#555d66;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control-header .current{margin-bottom:8px}.customize-control-header .actions,.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control .attachment-media-view .upload-button,.customize-control-header button.new,.customize-control-header button.remove{white-space:normal;width:48%;height:auto}.customize-control .attachment-media-view .thumbnail,.customize-control-header .current .container{overflow:hidden}.customize-control .attachment-media-view .placeholder,.customize-control-header .placeholder{width:100%;position:relative;text-align:center;cursor:default;border:1px dashed #b4b9be;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:9px 0;line-height:20px}.customize-control-header .inner{display:none;position:absolute;width:100%;color:#555d66;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-header .inner,.customize-control-header .inner .dashicons{line-height:20px;top:8px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom: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 .choice:focus{outline:0}.customize-control-header .header-view.selected:after{content:'';position:absolute;height:auto;top:0;right:0;bottom:0;left:0;border:4px solid #00a0d2;-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:#555d66;background:rgba(0,0,0,.5);position:absolute;top:10px;right:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{right:auto;left:10px}.customize-control-header .header-view .close:focus{outline:#5b9dd9 solid 1px}.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-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .choice:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 3px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 3px 1px rgba(30,140,190,.8)}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control .attachment-media-view .thumbnail-image img,.customize-control-header img{max-width:100%}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control-header .remove{float:right;margin-left:3px}.customize-control .attachment-media-view .upload-button,.customize-control-header .new{float:left}.customize-control-background_position .background-position-control .button-group{display:block}#customize-controls .customize-section-description-container.section-meta.customize-info{border-bottom:none}#sub-accordion-section-custom_css .customize-control-notifications-container{margin-bottom:15px}#customize-control-custom_css textarea{display:block;font-family:Consolas,Monaco,monospace;font-size:12px;padding:6px 8px;height:500px;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.customize-section-description-container+#customize-control-custom_css:last-child textarea{border-left:0;border-right:0;height:-webkit-calc(100vh - 185px);height:calc(100vh - 185px);resize:none}.customize-section-description-container+#customize-control-custom_css:last-child{margin-right:-12px;width:299px;margin-bottom:-12px}@media screen and (max-width:640px){.customize-section-description-container+#customize-control-custom_css:last-child{margin-right:0;margin-left:0;width:100%}.customize-section-description-container+#customize-control-custom_css:last-child textarea{height:-webkit-calc(100vh - 140px);height:calc(100vh - 140px);width:100%;border:1px solid #ddd}}@-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}#customize-theme-controls .control-section-themes .accordion-section-title,#customize-theme-controls .control-section-themes .accordion-section-title:hover{cursor:default;background:#fff;color:#555d66;border-top:1px solid #ddd;border-bottom:1px solid #ddd;border-right:none;margin-top:0}#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child,#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover{border-top:0}#customize-theme-controls .control-section-themes>.accordion-section-title,#customize-theme-controls .control-section-themes>.accordion-section-title:hover{margin:0 0 15px}#customize-controls .customize-themes-panel .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title:hover{margin:15px -8px}#customize-controls .control-section-themes .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title{padding-left:100px}#customize-controls .control-section-themes .accordion-section-title span.customize-action,#customize-controls .customize-section-title span.customize-action{font-size:13px;display:block;font-weight:400}#customize-controls .control-section-themes .accordion-section-title .change-theme,#customize-controls .customize-themes-panel .accordion-section-title .customize-theme{position:absolute;left:10px;top:50%;margin-top:-14px;font-weight:400}#customize-controls .control-section-themes .accordion-section-title:before{display:none}#customize-controls .customize-themes-panel{padding:0 8px;background:#f1f1f1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#customize-controls .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-controls .customize-themes-panel>h2{padding:15px 8px 0}#customize-theme-controls .customize-themes-panel .accordion-section-content{background:0 0;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%}.control-section-themes .accordion-section-title:after,.customize-themes-panel .accordion-section-title:after{display:none}.customize-themes-panel.control-panel-content{border-top:1px solid #ddd}.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,.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}.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 h1{border-bottom:1px solid #ddd;clear:both;color:#666;font-size:24px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:30px 0 0;padding:0 0 7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:left;margin-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}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#available-menu-items .new-content-item .add-content:before,.add-new-menu-item:before,.add-new-widget:before{content:"\f132";display:inline-block;position:relative;right:-2px;top:-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}.reorder-toggle{color:#0073aa;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:hover{color:#00a0d2}.reorder-toggle:focus{outline:dotted 1px}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none;color:#0073aa}.reorder-toggle:active .reorder-done,.reorder-toggle:focus .reorder-done,.reorder-toggle:hover .reorder-done{color:#00a0d2}.menu-item-reorder-nav button,.widget-reorder-nav span{position:relative;overflow:hidden;float:right;display:block;width:33px;height:43px;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}.menu-item-reorder-nav button{width:30px;height:40px;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none}.menu-item-reorder-nav button:before,.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;font:400 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover,.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#191e23;background:#eee}.menus-move-down:before,.move-widget-down:before{content:"\f347"}.menus-move-up:before,.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down,.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#d5d5d5;background-color:#fff;cursor:default;pointer-events:none}.wp-full-overlay-main{left:auto;width:100%}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover,body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#929793;color:#32373c;-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,body.adding-widget .add-new-widget:before{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}#available-menu-items,#available-widgets{position:absolute;top:0;bottom:0;right:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#eee;-webkit-transition:right .18s;transition:right .18s;border-left:1px solid #ddd}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:none}#available-widgets-list{top:60px;position:absolute;overflow:auto;bottom:0;width:100%;border-top:1px solid #ddd}.no-widgets-found #available-widgets-list{border-top:none}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;background:#eee}#available-menu-items-search .accordion-section-title,#available-widgets-filter{padding:13px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items-search input,#available-widgets-filter input{width:100%;height:32px;margin:1px 0;padding:6px 30px}#available-menu-items-search input::-ms-clear,#available-widgets-filter input::-ms-clear{display:none}#available-menu-items-search .search-icon,#available-widgets-filter .search-icon{display:block;position:absolute;top:15px;right:16px;width:30px;height:30px;line-height:28px;text-align:center;color:#72777c}#available-menu-items-search .clear-results,#available-widgets-filter .clear-results{position:absolute;top:15px;left:16px;width:30px;height:30px;padding:0;border:0;cursor:pointer;background:0 0;color:#a00;text-decoration:none;outline:0}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible,#available-widgets-filter .clear-results{display:none}#available-menu-items-search .clear-results.is-visible,#available-widgets-filter .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before,#available-widgets-filter .clear-results:before{content:"\f335";font:400 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover,#available-widgets-filter .clear-results:focus,#available-widgets-filter .clear-results:hover{color:#dc3232}#available-menu-items-search .clear-results:focus,#available-widgets-filter .clear-results:focus{-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 .search-icon:after,#available-widgets-filter .search-icon:after{content:"\f179";font:400 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.no-widgets-found-message{display:none;margin:0;padding:0 15px;line-height:inherit}.no-widgets-found .no-widgets-found-message{display:block}#available-menu-items .item-top,#available-menu-items .item-top:hover,#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-menu-items .item-tpl,#available-widgets .widget-tpl{position:relative;padding:20px 60px 20px 15px;background:#fff;border-bottom:1px solid #ddd;border-right:4px solid #fff;-webkit-transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;cursor:pointer;display:none}#available-menu-items .item,#available-widgets .widget{position:static}.customize-controls-preview-toggle{display:none}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{margin-right:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:-32px}.customize-control input[type=radio]+label,.customize-control input[type=checkbox]+label{line-height:32px}}@media screen and (max-width:640px){#customize-controls{width:100%}.wp-full-overlay.collapsed #customize-controls,.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:0;border-left:1px solid #ddd;color:#555d66;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}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets{top:46px;right:0;z-index:10;width:100%}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back,#available-widgets .customize-section-back{height:69px}#available-menu-items .customize-section-title h3,#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 14px 12px 10px;margin:0;line-height:24px;color:#555d66;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action,#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;height:auto}#available-widgets-list{top:130px}#available-menu-items-search .clear-results,#available-menu-items-search .search-icon{top:85px}} \ No newline at end of file diff --git a/wp/wp-admin/css/customize-controls.css b/wp/wp-admin/css/customize-controls.css index d2eef49a..716dfbb6 100644 --- a/wp/wp-admin/css/customize-controls.css +++ b/wp/wp-admin/css/customize-controls.css @@ -3,7 +3,8 @@ body { -webkit-text-size-adjust: 100%; } -#customize-controls a { +.customize-controls-close, +.widget-control-actions a { text-decoration: none; } @@ -20,7 +21,7 @@ body { } #customize-controls .description { - color: #555; + color: #555d66; } #customize-header-actions .button-primary { @@ -48,14 +49,40 @@ body { #customize-controls .customize-info { border: none; - border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; margin-bottom: 15px; } +#customize-controls .customize-info.section-meta { + margin-bottom: 15px; +} + +#customize-controls .customize-info.is-in-view, +#customize-controls .customize-section-title.is-in-view { + position: absolute; + z-index: 9; + width: 100%; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, .1); + box-shadow: 0 1px 0 rgba(0, 0, 0, .1); +} + +#customize-controls .customize-section-title.is-in-view { + margin-top: 0; +} + +#customize-controls .customize-info.is-in-view + .accordion-section { + margin-top: 15px; +} + +#customize-controls .customize-info.is-sticky, +#customize-controls .customize-section-title.is-sticky { + position: fixed; + top: 46px; +} + #customize-controls .customize-info .accordion-section-title { background: #fff; - color: #555; + color: #555d66; border-left: none; border-right: none; border-bottom: none; @@ -65,7 +92,7 @@ body { #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; + color: #32373c; } #customize-controls .customize-info .accordion-section-title:after { @@ -77,8 +104,8 @@ body { line-height: 24px; } -#customize-controls .control-section .customize-section-title h3, -#customize-controls .control-section h3.customize-section-title, +#customize-controls .customize-pane-child .customize-section-title h3, +#customize-controls .customize-pane-child h3.customize-section-title, #customize-controls .customize-info .panel-title { font-size: 20px; font-weight: 200; @@ -107,7 +134,7 @@ body { box-shadow: none; -webkit-appearance: none; background: transparent; - color: #555; + color: #555d66; border: none; } @@ -124,22 +151,30 @@ body { } #customize-controls .customize-info .customize-panel-description, +#customize-controls .customize-info .customize-section-description, #customize-controls .no-widget-areas-rendered-notice { - color: #555; + color: #555d66; display: none; background: #fff; padding: 12px 15px; border-top: 1px solid #ddd; } + #customize-controls .customize-info .customize-panel-description.open + .no-widget-areas-rendered-notice { border-top: none; } -#customize-controls .customize-info .customize-panel-description p:first-child { +#customize-controls .customize-info .customize-section-description { + margin-bottom: 15px; +} + +#customize-controls .customize-info .customize-panel-description p:first-child, +#customize-controls .customize-info .customize-section-description p:first-child { margin-top: 0; } -#customize-controls .customize-info .customize-panel-description p:last-child { +#customize-controls .customize-info .customize-panel-description p:last-child, +#customize-controls .customize-info .customize-section-description p:last-child { margin-bottom: 0; } @@ -152,9 +187,22 @@ body { } #customize-theme-controls .accordion-section-title { + color: #555d66; + background-color: #fff; + border-bottom: 1px solid #ddd; + border-left: 4px solid #fff; + -webkit-transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; +} + +#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title { color: #555; background-color: #fff; - border-bottom: 1px solid #eee; + border-left: 4px solid #fff; } #customize-theme-controls .accordion-section-title:after { @@ -163,7 +211,7 @@ body { } #customize-theme-controls .accordion-section-content { - color: #555; + color: #555d66; background: transparent; } @@ -171,22 +219,27 @@ body { #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; + color: #0073aa; + background: #f3f3f5; + border-left-color: #0073aa; +} + +#accordion-section-themes + .control-section { + border-top: 1px solid #ddd; } .js .control-section:hover .accordion-section-title, .js .control-section .accordion-section-title:hover, .js .control-section.open .accordion-section-title, .js .control-section .accordion-section-title:focus { - background: #f5f5f5; + background: #f3f3f5; } #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; + color: #0073aa; } #customize-theme-controls .control-section.open { @@ -202,6 +255,11 @@ body { border-bottom-color: #ddd; } +#customize-theme-controls .control-panel-content .control-section:nth-child(2), +#customize-theme-controls .control-panel-nav_menus .control-section:nth-child(3) { + border-top: 1px solid #ddd; +} + #customize-theme-controls > ul { margin: 0; } @@ -218,6 +276,109 @@ body { box-sizing: border-box; } +#customize-info, +#customize-theme-controls .customize-pane-parent, +#customize-theme-controls .customize-pane-child { + overflow: visible; + width: 100%; + margin: 0; + padding: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: 0.18s -webkit-transform cubic-bezier(0.645, 0.045, 0.355, 1); + transition: 0.18s -webkit-transform cubic-bezier(0.645, 0.045, 0.355, 1); + -webkit-transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1); + transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1); + -webkit-transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1), 0.18s -webkit-transform cubic-bezier(0.645, 0.045, 0.355, 1); + transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1), 0.18s -webkit-transform cubic-bezier(0.645, 0.045, 0.355, 1); /* easeInOutCubic */ +} + +#customize-info, +#customize-theme-controls .customize-pane-parent { + position: relative; + visibility: visible; + height: auto; + max-height: none; + overflow: auto; + -webkit-transform: none; + -ms-transform: none; + transform: none; +} + +#customize-theme-controls .customize-pane-child { + position: absolute; + top: 0; + left: 0; + visibility: hidden; + height: 0; + max-height: none; + overflow: hidden; + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); +} + +#customize-theme-controls .customize-pane-child.open, +#customize-theme-controls .customize-pane-child.current-panel, +#customize-theme-controls .customize-themes-panel.customize-pane-child.current-panel { + -webkit-transform: none; + -ms-transform: none; + transform: none; +} + +#customize-theme-controls .customize-themes-panel.customize-pane-child, +.section-open #customize-theme-controls .customize-pane-parent, +.in-sub-panel #customize-theme-controls .customize-pane-parent, +.section-open #customize-info, +.in-sub-panel #customize-info, +.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel, +.in-themes-panel #customize-theme-controls .customize-pane-parent, +.in-themes-panel #customize-info { + visibility: hidden; + height: 0; + overflow: hidden; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); +} + +.section-open #customize-theme-controls .customize-pane-parent.busy, +.in-sub-panel #customize-theme-controls .customize-pane-parent.busy, +.in-themes-panel #customize-theme-controls .customize-pane-parent.busy, +.section-open #customize-info.busy, +.in-sub-panel #customize-info.busy, +.in-themes-panel #customize-info.busy, +.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel, +#customize-theme-controls .customize-pane-child.open, +#customize-theme-controls .customize-pane-child.current-panel, +#customize-theme-controls .customize-pane-child.busy { + visibility: visible; + height: auto; + overflow: auto; +} + +.in-themes-panel #customize-theme-controls .customize-pane-parent, +.in-themes-panel #customize-info { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); +} + +#customize-theme-controls .customize-pane-child.accordion-section-content, +#customize-theme-controls .customize-pane-child.accordion-sub-container { + display: block; + overflow-x: hidden; +} + +#customize-theme-controls .customize-pane-child.accordion-section-content { + padding: 12px; +} + +#customize-theme-controls .customize-pane-child.menu li { + position: static; +} + .customize-section-description-container { margin-bottom: 15px; } @@ -232,6 +393,10 @@ div.customize-section-description { margin-top: 22px; } +.customize-info div.customize-section-description { + margin-top: 0; +} + div.customize-section-description p:first-child { margin-top: 0; } @@ -254,42 +419,17 @@ 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%; + color: #555d66; } .accordion-sub-container.control-panel-content { display: none; position: absolute; - left: 100%; top: 0; width: 100%; - -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 { +.accordion-sub-container.control-panel-content.busy { display: block; } @@ -303,16 +443,21 @@ h3.customize-section-title { top: 0; left: 0; width: 45px; - height: 45px; + height: 41px; padding: 0 2px 0 0; background: #eee; border: none; + border-top: 4px solid #eee; border-right: 1px solid #ddd; color: #444; text-align: left; cursor: pointer; - -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; - transition: color .1s ease-in-out, background .1s ease-in-out; + -webkit-transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; + transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; @@ -329,23 +474,22 @@ h3.customize-section-title { background: #fff; border: none; border-right: 1px solid #ddd; + border-left: 4px solid #fff; -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; + -webkit-transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; + transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; } .customize-section-back { height: 74px; } -.ios .customize-panel-back, -.ios .customize-section-back { - -webkit-transition: left 0s; - transition: left 0s; -} - .ios .customize-panel-back { display: none; } @@ -354,33 +498,38 @@ h3.customize-section-title { display: block; } -.panel-meta.customize-info .accordion-section-title { +#customize-controls .panel-meta.customize-info .accordion-section-title { margin-left: 48px; + border-left: none; } -#customize-controls .panel-meta.customize-info .accordion-section-title:hover { +#customize-controls .panel-meta.customize-info .accordion-section-title:hover, +#customize-controls .cannot-expand:hover .accordion-section-title { background: #fff; - color: #555; + color: #555d66; + border-left-color: #fff; } .customize-controls-close:focus, .customize-controls-close:hover, .customize-controls-preview-toggle:focus, .customize-controls-preview-toggle:hover { - background: #ddd; - border-color: #ccc; - color: #000; + background: #fff; + color: #0073aa; + border-top-color: #0073aa; 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; + color: #0073aa; + background: #f3f3f5; + border-left-color: #0073aa; outline: none; -webkit-box-shadow: none; box-shadow: none; @@ -390,7 +539,7 @@ h3.customize-section-title { font: normal 22px/45px dashicons; content: "\f335"; position: relative; - top: 1px; + top: -3px; left: 13px; } @@ -399,10 +548,11 @@ h3.customize-section-title { font: normal 20px/72px dashicons; content: "\f341"; position: relative; - left: 13px; + left: 9px; } .wp-full-overlay-sidebar .wp-full-overlay-header { + background-color: #eee; -webkit-transition: padding ease-in-out .18s; transition: padding ease-in-out .18s; } @@ -411,63 +561,6 @@ h3.customize-section-title { 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: -100%; - width: 100%; -} - -.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; @@ -509,8 +602,8 @@ p.customize-section-description { } .customize-control select { - min-width: 50%; - max-width: 100%; + width: 100%; + max-width: 300px; height: 28px; line-height: 28px; } @@ -531,9 +624,20 @@ p.customize-section-description { display: block; font-style: italic; line-height: 18px; + margin-top: 0; margin-bottom: 5px; } +.customize-section-description a.external-link:after { + font: 16px/11px dashicons; + content: "\f310"; + top: 3px; + position: relative; + padding-left: 3px; + display: inline-block; + text-decoration: none; +} + .customize-control-color .color-picker, .customize-control-upload div { line-height: 28px; @@ -608,6 +712,71 @@ p.customize-section-description { float: left; } +#available-menu-items .accordion-section-content .new-content-item, +.customize-control-dropdown-pages .new-content-item { + width: -webkit-calc(100% - 30px); + width: calc(100% - 30px); + padding: 8px 15px; + position: absolute; + bottom: 0; + z-index: 10; + background: #eee; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} + +.customize-control-dropdown-pages .new-content-item { + width: 100%; + max-width: 300px; + padding: 5px 0 5px 1px; + position: relative; +} + +#available-menu-items .new-content-item .create-item-input, +.customize-control-dropdown-pages .new-content-item .create-item-input { + -webkit-box-flex: 10; + -webkit-flex-grow: 10; + -moz-box-flex: 10; + -ms-flex-positive: 10; + -ms-flex: 10; + flex-grow: 10; +} + +#available-menu-items .new-content-item .add-content, +.customize-control-dropdown-pages .new-content-item .add-content { + margin: 2px 0 2px 6px; + -webkit-box-flex: 10; + -webkit-flex-grow: 10; + -moz-box-flex: 10; + -ms-flex-positive: 10; + -ms-flex: 10; + flex-grow: 1; +} + +.customize-control-dropdown-pages .new-content-item .create-item-input.invalid { + border: 1px solid #f00; +} + +.customize-control-dropdown-pages .add-new-toggle { + margin-left: 1px; + color: #0073aa; + font-weight: 600; + line-height: 28px; + text-decoration: underline; +} + +.customize-control-dropdown-pages .add-new-toggle:hover, +.customize-control-dropdown-pages .add-new-toggle:active { + color: #00a0d2; +} + +.customize-control-dropdown-pages .add-new-toggle:focus { + color: #124964; +} + #customize-preview iframe { width: 100%; height: 100%; @@ -739,7 +908,7 @@ p.customize-section-description { } .customize-control-color .dropdown .dropdown-content { - background-color: #555; + background-color: #555d66; border: 1px solid rgba(0, 0, 0, 0.15); } @@ -770,6 +939,7 @@ p.customize-section-description { margin-bottom: 8px; } +.customize-control-header .actions, .customize-control-header .uploaded { margin-bottom: 18px; } @@ -822,7 +992,7 @@ p.customize-section-description { display: none; position: absolute; width: 100%; - color: #555; + color: #555d66; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; @@ -853,6 +1023,11 @@ p.customize-section-description { .customize-control-header .header-view:after { border: 0; } + +.customize-control-header .header-view.selected .choice:focus { + outline: none; +} + .customize-control-header .header-view.selected:after { content: ''; position: absolute; @@ -862,6 +1037,7 @@ p.customize-section-description { -webkit-border-radius: 2px; border-radius: 2px; } + .customize-control-header .header-view.button.selected { border: 0; } @@ -871,11 +1047,11 @@ p.customize-section-description { .customize-control-header .uploaded .header-view .close { font-size: 20px; color: #fff; - background: #555; + background: #555d66; background: rgba(0, 0, 0, 0.5); position: absolute; top: 10px; - right: -999px; + left: -999px; z-index: 1; width: 26px; height: 26px; @@ -884,9 +1060,14 @@ p.customize-section-description { .customize-control-header .header-view:hover .close, .customize-control-header .header-view .close:focus { + left: auto; right: 10px; } +.customize-control-header .header-view .close:focus { + outline: 1px solid #5b9dd9; +} + /* Header control: randomiz(s)er */ .customize-control-header .random.placeholder { @@ -933,6 +1114,16 @@ p.customize-section-description { margin-bottom: 9px; } +.customize-control-header .choice:focus { + outline: none; + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 3px 1px rgba(30, 140, 190, .8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 3px 1px rgba(30, 140, 190, .8); +} + .customize-control-header .uploaded div:last-child > .choice { margin-bottom: 0; } @@ -954,6 +1145,64 @@ p.customize-section-description { float: right; } +/* Background position control */ +.customize-control-background_position .background-position-control .button-group { + display: block; +} + +/** + * Custom CSS Section + * + * Modifications to the Section Container to make the textarea full-width and + * full-height, if the control is the only control in the section. + */ + +#customize-controls .customize-section-description-container.section-meta.customize-info { + border-bottom: none; +} + +#sub-accordion-section-custom_css .customize-control-notifications-container { + margin-bottom: 15px; +} + +#customize-control-custom_css textarea { + display: block; + font-family: Consolas, Monaco, monospace; + font-size: 12px; + padding: 6px 8px; + height: 500px; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; +} + +.customize-section-description-container + #customize-control-custom_css:last-child textarea { + border-right: 0; + border-left: 0; + height: -webkit-calc( 100vh - 185px ); + height: calc( 100vh - 185px ); + resize: none; +} +.customize-section-description-container + #customize-control-custom_css:last-child { + margin-left: -12px; + width: 299px; + margin-bottom: -12px; +} + +@media screen and ( max-width: 640px ) { + .customize-section-description-container + #customize-control-custom_css:last-child { + margin-left: 0; + margin-right: 0; + width: 100%; + } + .customize-section-description-container + #customize-control-custom_css:last-child textarea { + height: -webkit-calc( 100vh - 140px ); + height: calc( 100vh - 140px ); + width: 100%; + border: solid 1px #ddd; + } +} + /** * Themes */ @@ -975,37 +1224,46 @@ p.customize-section-description { animation: customize-reload .75s; } -.control-section-themes .accordion-section-title { +#customize-theme-controls .control-section-themes .accordion-section-title:hover, /* Not a focusable element. */ +#customize-theme-controls .control-section-themes .accordion-section-title { cursor: default; + background: #fff; + color: #555d66; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + border-left: none; + margin-top: 0; } -#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; +#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover, /* Not a focusable element. */ +#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child { + border-top: 0; } -.control-section-themes .accordion-section-title { - margin: 15px 0; +#customize-theme-controls .control-section-themes > .accordion-section-title:hover, /* Not a focusable element. */ +#customize-theme-controls .control-section-themes > .accordion-section-title { + margin: 0 0 15px; } -.customize-themes-panel .accordion-section-title { +#customize-controls .customize-themes-panel .accordion-section-title:hover, +#customize-controls .customize-themes-panel .accordion-section-title { margin: 15px -8px; } -.control-section-themes .accordion-section-title { +#customize-controls .control-section-themes .accordion-section-title, +#customize-controls .customize-themes-panel .accordion-section-title { padding-right: 100px; /* Space for the button */ } -.control-section-themes .accordion-section-title span.customize-action, +#customize-controls .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 { +#customize-controls .control-section-themes .accordion-section-title .change-theme, +#customize-controls .customize-themes-panel .accordion-section-title .customize-theme { position: absolute; right: 10px; top: 50%; @@ -1013,12 +1271,11 @@ p.customize-section-description { font-weight: 400; } -.control-section-themes .accordion-section-title:before { +#customize-controls .control-section-themes .accordion-section-title:before { display: none; } -.customize-themes-panel { - display: none; +#customize-controls .customize-themes-panel { padding: 0 8px; background: #f1f1f1; -webkit-box-sizing: border-box; @@ -1026,7 +1283,7 @@ p.customize-section-description { box-sizing: border-box; } -.customize-themes-panel .accordion-section-title:first-child { +#customize-controls .customize-themes-panel .accordion-section-title:first-child { margin-top: 0; } @@ -1035,14 +1292,10 @@ p.customize-section-description { font-weight: 600; } -.customize-themes-panel > h2 { +#customize-controls .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; @@ -1088,27 +1341,15 @@ p.customize-section-description { width: 100%; } -#accordion-section-themes .accordion-section-title:after { +.control-section-themes .accordion-section-title:after, +.customize-themes-panel .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; @@ -1142,10 +1383,6 @@ p.customize-section-description { 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 { @@ -1196,7 +1433,7 @@ body.cheatin p { * Widgets and Menus common styles */ -/* higher specificity than .wp-core-ui .button-secondary */ +/* higher specificity than .wp-core-ui .button */ #customize-theme-controls .add-new-widget, #customize-theme-controls .add-new-menu-item { cursor: pointer; @@ -1219,7 +1456,8 @@ body.cheatin p { } .add-new-widget:before, -.add-new-menu-item:before { +.add-new-menu-item:before, +#available-menu-items .new-content-item .add-content:before { content: "\f132"; display: inline-block; position: relative; @@ -1400,6 +1638,11 @@ body.adding-widget .add-new-widget:before, overflow: auto; bottom: 0; width: 100%; + border-top: 1px solid #ddd; +} + +.no-widgets-found #available-widgets-list { + border-top: none; } #available-widgets-filter { @@ -1408,13 +1651,12 @@ body.adding-widget .add-new-widget:before, z-index: 1; width: 300px; background: #eee; - border-bottom: 1px solid #e5e5e5; } /* search field container */ #available-widgets-filter, #available-menu-items-search .accordion-section-title { - padding: 12px 15px; + padding: 13px 15px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; @@ -1422,8 +1664,101 @@ body.adding-widget .add-new-widget:before, #available-widgets-filter input, #available-menu-items-search input { - padding: 6px 10px; width: 100%; + height: 32px; + margin: 1px 0; + padding: 6px 30px; +} + +#available-widgets-filter input::-ms-clear, +#available-menu-items-search input::-ms-clear { + display: none; /* remove the "x" in IE, which conflicts with the "x" icon on button.clear-results */ +} + +#available-menu-items-search .search-icon, +#available-widgets-filter .search-icon { + display: block; + position: absolute; + top: 15px; /* 13 container padding +1 input margin +1 input border */ + left: 16px; + width: 30px; + height: 30px; + line-height: 28px; + text-align: center; + color: #72777c; +} + +#available-widgets-filter .clear-results, +#available-menu-items-search .clear-results { + position: absolute; + top: 15px; /* 13 container padding +1 input margin +1 input border */ + right: 16px; + width: 30px; + height: 30px; + padding: 0; + border: 0; + cursor: pointer; + background: none; + color: #a00; + text-decoration: none; + outline: 0; +} + +#available-widgets-filter .clear-results, +#available-menu-items-search .clear-results, +#available-menu-items-search.loading .clear-results.is-visible { + display: none; +} + +#available-widgets-filter .clear-results.is-visible, +#available-menu-items-search .clear-results.is-visible { + display: block; +} + +#available-widgets-filter .clear-results:before, +#available-menu-items-search .clear-results:before { + content: "\f335"; + font: normal 20px/1 dashicons; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#available-widgets-filter .clear-results:hover, +#available-widgets-filter .clear-results:focus, +#available-menu-items-search .clear-results:hover, +#available-menu-items-search .clear-results:focus { + color: #dc3232; +} + +#available-widgets-filter .clear-results:focus, +#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 .search-icon:after, +#available-widgets-filter .search-icon:after { + content: "\f179"; + font: normal 20px/1 dashicons; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.no-widgets-found-message { + display: none; + margin: 0; + padding: 0 15px; + line-height: inherit; +} + +.no-widgets-found .no-widgets-found-message { + display: block; } #available-widgets .widget-top, @@ -1441,7 +1776,14 @@ body.adding-widget .add-new-widget:before, position: relative; padding: 20px 15px 20px 60px; background: #fff; - border-bottom: 1px solid #e5e5e5; + border-bottom: 1px solid #ddd; + border-left: 4px solid #fff; + -webkit-transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; cursor: pointer; display: none; } @@ -1517,7 +1859,7 @@ body.adding-widget .add-new-widget:before, background: #eee; border: 0; border-right: 1px solid #ddd; - color: #444; + color: #555d66; 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; @@ -1598,7 +1940,7 @@ body.adding-widget .add-new-widget:before, padding: 9px 10px 12px 14px; margin: 0; line-height: 24px; - color: #555; + color: #555d66; display: block; overflow: hidden; white-space: nowrap; @@ -1618,12 +1960,15 @@ body.adding-widget .add-new-widget:before, #available-widgets-filter { position: relative; width: 100%; - background: #fff; height: auto; - padding: 10px 15px; } #available-widgets-list { - top: 140px; + top: 130px; + } + + #available-menu-items-search .clear-results, + #available-menu-items-search .search-icon { + top: 85px; /* 70 section title height + 13 container padding +1 input margin +1 input border */ } } diff --git a/wp/wp-admin/css/customize-controls.min.css b/wp/wp-admin/css/customize-controls.min.css index cf42cc97..d5d48fb7 100644 --- a/wp/wp-admin/css/customize-controls.min.css +++ b/wp/wp-admin/css/customize-controls.min.css @@ -1 +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:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;right:1px;padding:20px 20px 10px 10px;width:20px;height:20px;cursor:pointer;-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,#customize-controls .no-widget-areas-rendered-notice{color:#555;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}#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";color:#a0a5aa}#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:100%;top:0;width:100%;-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:71px;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:74px}.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/72px 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:-100%;width:100%}.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:100%;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:4px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-bottom:5px}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{line-height:20px;display:block;margin-left:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:4px;margin-left:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control .attachment-thumb.type-icon{float:left;margin:10px;width:auto}.customize-control .attachment-title{font-weight:600;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image{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%;position:absolute}#customize-preview iframe+iframe{visibility:hidden}.wp-full-overlay-sidebar{background:#eee;border-right:1px solid #ddd}#customize-controls .customize-control-notifications-container{margin:4px 0 8px;padding:0;display:none;cursor:default}#customize-controls .customize-control-widget_form.has-error .widget .widget-top,.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle{-webkit-box-shadow:inset 0 0 0 2px #dc3232;box-shadow:inset 0 0 0 2px #dc3232;-webkit-transition:.15s box-shadow linear;transition:.15s box-shadow linear}.customize-control-notifications-container li.notice{list-style:none;margin:0 0 6px;padding:4px 8px}.customize-control-notifications-container li.notice:last-child{margin-bottom:0}#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container{margin-top:0}#customize-controls .customize-control-widget_form .customize-control-notifications-container,.customize-control .attachment-media-view .actions{margin-top:8px}.customize-control-text.has-error input{outline:#dc3232 solid 2px}.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 .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control-header .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 .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control .attachment-media-view .upload-button,.customize-control-header button.new,.customize-control-header button.remove{white-space:normal;width:48%;height:auto}.customize-control .attachment-media-view .thumbnail,.customize-control-header .current .container{overflow:hidden}.customize-control .attachment-media-view .placeholder,.customize-control-header .placeholder{width:100%;position:relative;text-align:center;cursor:default;border:1px dashed #b4b9be;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:9px 0;line-height:20px}.customize-control-header .inner{display:none;position:absolute;width:100%;color:#555;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-header .inner,.customize-control-header .inner .dashicons{line-height:20px;top:8px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom: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-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control .attachment-media-view .thumbnail-image img,.customize-control-header img{max-width:100%}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control-header .remove{float:left;margin-right:3px}.customize-control .attachment-media-view .upload-button,.customize-control-header .new{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}.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%}.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,.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 h1{border-bottom:1px solid #ddd;clear:both;color:#666;font-size:24px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:30px 0 0;padding:0 0 7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:right;margin-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}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}.add-new-menu-item:before,.add-new-widget: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}.reorder-toggle{color:#0073aa;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:hover{color:#00a0d2}.reorder-toggle:focus{outline:dotted 1px}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none;color:#0073aa}.reorder-toggle:active .reorder-done,.reorder-toggle:focus .reorder-done,.reorder-toggle:hover .reorder-done{color:#00a0d2}.menu-item-reorder-nav button,.widget-reorder-nav span{position:relative;overflow:hidden;float:left;display:block;width:33px;height:43px;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}.menu-item-reorder-nav button{width:30px;height:40px;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none}.menu-item-reorder-nav button:before,.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:400 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items .customize-section-title,#available-widgets .customize-section-title,.customize-controls-preview-toggle{display:none}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover,.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#191e23;background:#eee}.menus-move-down:before,.move-widget-down:before{content:"\f347"}.menus-move-up:before,.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down,.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#d5d5d5;background-color:#fff;cursor:default;pointer-events:none}.wp-full-overlay-main{right:auto;width:100%}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover,body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#929793;color:#32373c;-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,body.adding-widget .add-new-widget:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#available-menu-items,#available-widgets{position:absolute;top:0;bottom:0;left:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#eee;-webkit-transition:left .18s;transition:left .18s;border-right:1px solid #ddd}#available-widgets-list{top:60px;position:absolute;overflow:auto;bottom:0;width:100%}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;background:#eee;border-bottom:1px solid #e5e5e5}#available-menu-items-search .accordion-section-title,#available-widgets-filter{padding:12px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items-search input,#available-widgets-filter input{padding:6px 10px;width:100%}#available-menu-items .item-top,#available-menu-items .item-top:hover,#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-menu-items .item-tpl,#available-widgets .widget-tpl{position:relative;padding:20px 15px 20px 60px;background:#fff;border-bottom:1px solid #e5e5e5;cursor:pointer;display:none}#available-menu-items .item,#available-widgets .widget{position:static}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{margin-left:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:-32px}.customize-control input[type=radio]+label,.customize-control input[type=checkbox]+label{line-height:32px}}@media screen and (max-width:640px){#customize-controls{width:100%}.wp-full-overlay.collapsed #customize-controls,.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:0;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}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets{top:46px;left:0;z-index:10;width:100%}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back,#available-widgets .customize-section-back{height:69px}#available-menu-items .customize-section-title h3,#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 10px 12px 14px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action,#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;background:#fff;height:auto;padding:10px 15px}#available-widgets-list{top:140px}} \ No newline at end of file +#customize-controls .customize-info .customize-section-description,#customize-controls .customize-info.section-meta{margin-bottom:15px}body{overflow:hidden;-webkit-text-size-adjust:100%}.customize-controls-close,.widget-control-actions a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls .description{color:#555d66}#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-bottom:1px solid #ddd;margin-bottom:15px}#customize-controls .customize-info.is-in-view,#customize-controls .customize-section-title.is-in-view{position:absolute;z-index:9;width:100%;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 0 rgba(0,0,0,.1)}#customize-controls .customize-section-title.is-in-view{margin-top:0}#customize-controls .customize-info.is-in-view+.accordion-section{margin-top:15px}#customize-controls .customize-info.is-sticky,#customize-controls .customize-section-title.is-sticky{position:fixed;top:46px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#555d66;border-left:none;border-right:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#32373c}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:24px}#customize-controls .customize-info .panel-title,#customize-controls .customize-pane-child .customize-section-title h3,#customize-controls .customize-pane-child h3.customize-section-title{font-size:20px;font-weight:200;line-height:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;right:1px;padding:20px 20px 10px 10px;width:20px;height:20px;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;background:0 0;color:#555d66;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;left:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}#customize-controls .customize-info .customize-panel-description,#customize-controls .customize-info .customize-section-description,#customize-controls .no-widget-areas-rendered-notice{color:#555d66;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}#customize-controls .customize-info .customize-panel-description p:first-child,#customize-controls .customize-info .customize-section-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child,#customize-controls .customize-info .customize-section-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-right:30px}#customize-theme-controls .control-section{border:none}#customize-theme-controls .accordion-section-title{color:#555d66;background-color:#fff;border-bottom:1px solid #ddd;border-left:4px solid #fff;-webkit-transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title{color:#555;background-color:#fff;border-left:4px solid #fff}#customize-theme-controls .accordion-section-title:after{content:"\f345";color:#a0a5aa}#customize-theme-controls .accordion-section-content{color:#555d66;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:#0073aa;background:#f3f3f5;border-left-color:#0073aa}#accordion-section-themes+.control-section{border-top:1px solid #ddd}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f3f3f5}#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}#customize-theme-controls .control-section.open{border-bottom:1px solid #eee}#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#eee!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#ddd}#customize-theme-controls .control-panel-content .control-section:nth-child(2),#customize-theme-controls .control-panel-nav_menus .control-section:nth-child(3){border-top:1px solid #ddd}#customize-theme-controls>ul{margin:0}#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{width:100%;margin:0;padding:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:.18s transform cubic-bezier(.645,.045,.355,1),.18s -webkit-transform cubic-bezier(.645,.045,.355,1);transition:.18s transform cubic-bezier(.645,.045,.355,1),.18s -webkit-transform cubic-bezier(.645,.045,.355,1)}#customize-info,#customize-theme-controls .customize-pane-parent{position:relative;visibility:visible;height:auto;max-height:none;overflow:auto;-webkit-transform:none;-ms-transform:none;transform:none}#customize-theme-controls .customize-pane-child{position:absolute;top:0;left:0;visibility:hidden;height:0;max-height:none;overflow:hidden;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open,#customize-theme-controls .customize-themes-panel.customize-pane-child.current-panel{-webkit-transform:none;-ms-transform:none;transform:none}#customize-theme-controls .customize-themes-panel.customize-pane-child,.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls .customize-pane-parent,.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel,.in-themes-panel #customize-info,.in-themes-panel #customize-theme-controls .customize-pane-parent,.section-open #customize-info,.section-open #customize-theme-controls .customize-pane-parent{visibility:hidden;height:0;overflow:hidden;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}#customize-theme-controls .customize-pane-child.busy,#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open,.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel,.in-sub-panel #customize-info.busy,.in-sub-panel #customize-theme-controls .customize-pane-parent.busy,.in-themes-panel #customize-info.busy,.in-themes-panel #customize-theme-controls .customize-pane-parent.busy,.section-open #customize-info.busy,.section-open #customize-theme-controls .customize-pane-parent.busy{visibility:visible;height:auto;overflow:auto}.in-themes-panel #customize-info,.in-themes-panel #customize-theme-controls .customize-pane-parent{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}#customize-theme-controls .customize-pane-child.accordion-section-content,#customize-theme-controls .customize-pane-child.accordion-sub-container{display:block;overflow-x:hidden}#customize-theme-controls .customize-pane-child.accordion-section-content{padding:12px}#customize-theme-controls .customize-pane-child.menu li{position:static}.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}.customize-info div.customize-section-description,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:#555d66}.accordion-sub-container.control-panel-content{display:none;position:absolute;top:0;width:100%}.accordion-sub-container.control-panel-content.busy{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;left:0;width:45px;height:41px;padding:0 2px 0 0;background:#eee;border:none;border-top:4px solid #eee;border-right:1px solid #ddd;color:#444;text-align:left;cursor:pointer;-webkit-transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;-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:71px;padding:0 24px 0 0;margin:0;background:#fff;border:none;border-right:1px solid #ddd;border-left:4px solid #fff;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;-webkit-transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out}.customize-section-back{height:74px}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}#customize-controls .panel-meta.customize-info .accordion-section-title{margin-left:48px;border-left:none}#customize-controls .cannot-expand:hover .accordion-section-title,#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#555d66;border-left-color:#fff}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#fff;color:#0073aa;border-top-color:#0073aa;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#0073aa;background:#f3f3f5;border-left-color:#0073aa;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-controls-close:before{font:400 22px/45px dashicons;content:"\f335";position:relative;top:-3px;left:13px}.customize-panel-back:before,.customize-section-back:before{font:400 20px/72px dashicons;content:"\f341";position:relative;left:9px}.wp-full-overlay-sidebar .wp-full-overlay-header{background-color:#eee;-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}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:100%;line-height:18px;margin:0}.customize-control-hidden{margin:0}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{width:100%;max-width:300px;height:28px;line-height:28px}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:24px;font-weight:600;margin-bottom:4px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-top:0;margin-bottom:5px}.customize-section-description a.external-link:after{font:16px/11px dashicons;content:"\f310";top:3px;position:relative;padding-left:3px;display:inline-block;text-decoration:none}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{line-height:20px;display:block;margin-left:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:4px;margin-left:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control .attachment-thumb.type-icon{float:left;margin:10px;width:auto}.customize-control .attachment-title{font-weight:600;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image{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}#available-menu-items .accordion-section-content .new-content-item,.customize-control-dropdown-pages .new-content-item{width:-webkit-calc(100% - 30px);width:calc(100% - 30px);padding:8px 15px;position:absolute;bottom:0;z-index:10;background:#eee;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.customize-control-dropdown-pages .new-content-item{width:100%;max-width:300px;padding:5px 0 5px 1px;position:relative}#available-menu-items .new-content-item .create-item-input,.customize-control-dropdown-pages .new-content-item .create-item-input{-webkit-box-flex:10;-webkit-flex-grow:10;-moz-box-flex:10;-ms-flex-positive:10;-ms-flex:10;flex-grow:10}#available-menu-items .new-content-item .add-content,.customize-control-dropdown-pages .new-content-item .add-content{margin:2px 0 2px 6px;-webkit-box-flex:10;-webkit-flex-grow:10;-moz-box-flex:10;-ms-flex-positive:10;-ms-flex:10;flex-grow:1}.customize-control-dropdown-pages .new-content-item .create-item-input.invalid{border:1px solid red}.customize-control-dropdown-pages .add-new-toggle{margin-left:1px;color:#0073aa;font-weight:600;line-height:28px;text-decoration:underline}.customize-control-dropdown-pages .add-new-toggle:active,.customize-control-dropdown-pages .add-new-toggle:hover{color:#00a0d2}.customize-control-dropdown-pages .add-new-toggle:focus{color:#124964}#customize-preview iframe{width:100%;height:100%;position:absolute}#customize-preview iframe+iframe{visibility:hidden}.wp-full-overlay-sidebar{background:#eee;border-right:1px solid #ddd}#customize-controls .customize-control-notifications-container{margin:4px 0 8px;padding:0;display:none;cursor:default}#customize-controls .customize-control-widget_form.has-error .widget .widget-top,.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle{-webkit-box-shadow:inset 0 0 0 2px #dc3232;box-shadow:inset 0 0 0 2px #dc3232;-webkit-transition:.15s box-shadow linear;transition:.15s box-shadow linear}.customize-control-notifications-container li.notice{list-style:none;margin:0 0 6px;padding:4px 8px}.customize-control-notifications-container li.notice:last-child{margin-bottom:0}#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container{margin-top:0}#customize-controls .customize-control-widget_form .customize-control-notifications-container,.customize-control .attachment-media-view .actions{margin-top:8px}.customize-control-text.has-error input{outline:#dc3232 solid 2px}.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:#555d66;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control-header .current{margin-bottom:8px}.customize-control-header .actions,.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control .attachment-media-view .upload-button,.customize-control-header button.new,.customize-control-header button.remove{white-space:normal;width:48%;height:auto}.customize-control .attachment-media-view .thumbnail,.customize-control-header .current .container{overflow:hidden}.customize-control .attachment-media-view .placeholder,.customize-control-header .placeholder{width:100%;position:relative;text-align:center;cursor:default;border:1px dashed #b4b9be;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:9px 0;line-height:20px}.customize-control-header .inner{display:none;position:absolute;width:100%;color:#555d66;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-header .inner,.customize-control-header .inner .dashicons{line-height:20px;top:8px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom: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 .choice:focus{outline:0}.customize-control-header .header-view.selected:after{content:'';position:absolute;height:auto;top:0;left:0;bottom:0;right:0;border:4px solid #00a0d2;-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:#555d66;background:rgba(0,0,0,.5);position:absolute;top:10px;left:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{left:auto;right:10px}.customize-control-header .header-view .close:focus{outline:#5b9dd9 solid 1px}.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-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .choice:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 3px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 3px 1px rgba(30,140,190,.8)}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control .attachment-media-view .thumbnail-image img,.customize-control-header img{max-width:100%}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control-header .remove{float:left;margin-right:3px}.customize-control .attachment-media-view .upload-button,.customize-control-header .new{float:right}.customize-control-background_position .background-position-control .button-group{display:block}#customize-controls .customize-section-description-container.section-meta.customize-info{border-bottom:none}#sub-accordion-section-custom_css .customize-control-notifications-container{margin-bottom:15px}#customize-control-custom_css textarea{display:block;font-family:Consolas,Monaco,monospace;font-size:12px;padding:6px 8px;height:500px;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.customize-section-description-container+#customize-control-custom_css:last-child textarea{border-right:0;border-left:0;height:-webkit-calc(100vh - 185px);height:calc(100vh - 185px);resize:none}.customize-section-description-container+#customize-control-custom_css:last-child{margin-left:-12px;width:299px;margin-bottom:-12px}@media screen and (max-width:640px){.customize-section-description-container+#customize-control-custom_css:last-child{margin-left:0;margin-right:0;width:100%}.customize-section-description-container+#customize-control-custom_css:last-child textarea{height:-webkit-calc(100vh - 140px);height:calc(100vh - 140px);width:100%;border:1px solid #ddd}}@-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}#customize-theme-controls .control-section-themes .accordion-section-title,#customize-theme-controls .control-section-themes .accordion-section-title:hover{cursor:default;background:#fff;color:#555d66;border-top:1px solid #ddd;border-bottom:1px solid #ddd;border-left:none;margin-top:0}#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child,#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover{border-top:0}#customize-theme-controls .control-section-themes>.accordion-section-title,#customize-theme-controls .control-section-themes>.accordion-section-title:hover{margin:0 0 15px}#customize-controls .customize-themes-panel .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title:hover{margin:15px -8px}#customize-controls .control-section-themes .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title{padding-right:100px}#customize-controls .control-section-themes .accordion-section-title span.customize-action,#customize-controls .customize-section-title span.customize-action{font-size:13px;display:block;font-weight:400}#customize-controls .control-section-themes .accordion-section-title .change-theme,#customize-controls .customize-themes-panel .accordion-section-title .customize-theme{position:absolute;right:10px;top:50%;margin-top:-14px;font-weight:400}#customize-controls .control-section-themes .accordion-section-title:before{display:none}#customize-controls .customize-themes-panel{padding:0 8px;background:#f1f1f1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#customize-controls .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-controls .customize-themes-panel>h2{padding:15px 8px 0}#customize-theme-controls .customize-themes-panel .accordion-section-content{background:0 0;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%}.control-section-themes .accordion-section-title:after,.customize-themes-panel .accordion-section-title:after{display:none}.customize-themes-panel.control-panel-content{border-top:1px solid #ddd}.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,.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}.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 h1{border-bottom:1px solid #ddd;clear:both;color:#666;font-size:24px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:30px 0 0;padding:0 0 7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:right;margin-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}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#available-menu-items .new-content-item .add-content:before,.add-new-menu-item:before,.add-new-widget:before{content:"\f132";display:inline-block;position:relative;left:-2px;top:-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}.reorder-toggle{color:#0073aa;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:hover{color:#00a0d2}.reorder-toggle:focus{outline:dotted 1px}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none;color:#0073aa}.reorder-toggle:active .reorder-done,.reorder-toggle:focus .reorder-done,.reorder-toggle:hover .reorder-done{color:#00a0d2}.menu-item-reorder-nav button,.widget-reorder-nav span{position:relative;overflow:hidden;float:left;display:block;width:33px;height:43px;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}.menu-item-reorder-nav button{width:30px;height:40px;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none}.menu-item-reorder-nav button:before,.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:400 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover,.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#191e23;background:#eee}.menus-move-down:before,.move-widget-down:before{content:"\f347"}.menus-move-up:before,.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down,.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#d5d5d5;background-color:#fff;cursor:default;pointer-events:none}.wp-full-overlay-main{right:auto;width:100%}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover,body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#929793;color:#32373c;-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,body.adding-widget .add-new-widget:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#available-menu-items,#available-widgets{position:absolute;top:0;bottom:0;left:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#eee;-webkit-transition:left .18s;transition:left .18s;border-right:1px solid #ddd}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:none}#available-widgets-list{top:60px;position:absolute;overflow:auto;bottom:0;width:100%;border-top:1px solid #ddd}.no-widgets-found #available-widgets-list{border-top:none}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;background:#eee}#available-menu-items-search .accordion-section-title,#available-widgets-filter{padding:13px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items-search input,#available-widgets-filter input{width:100%;height:32px;margin:1px 0;padding:6px 30px}#available-menu-items-search input::-ms-clear,#available-widgets-filter input::-ms-clear{display:none}#available-menu-items-search .search-icon,#available-widgets-filter .search-icon{display:block;position:absolute;top:15px;left:16px;width:30px;height:30px;line-height:28px;text-align:center;color:#72777c}#available-menu-items-search .clear-results,#available-widgets-filter .clear-results{position:absolute;top:15px;right:16px;width:30px;height:30px;padding:0;border:0;cursor:pointer;background:0 0;color:#a00;text-decoration:none;outline:0}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible,#available-widgets-filter .clear-results{display:none}#available-menu-items-search .clear-results.is-visible,#available-widgets-filter .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before,#available-widgets-filter .clear-results:before{content:"\f335";font:400 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover,#available-widgets-filter .clear-results:focus,#available-widgets-filter .clear-results:hover{color:#dc3232}#available-menu-items-search .clear-results:focus,#available-widgets-filter .clear-results:focus{-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 .search-icon:after,#available-widgets-filter .search-icon:after{content:"\f179";font:400 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.no-widgets-found-message{display:none;margin:0;padding:0 15px;line-height:inherit}.no-widgets-found .no-widgets-found-message{display:block}#available-menu-items .item-top,#available-menu-items .item-top:hover,#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-menu-items .item-tpl,#available-widgets .widget-tpl{position:relative;padding:20px 15px 20px 60px;background:#fff;border-bottom:1px solid #ddd;border-left:4px solid #fff;-webkit-transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;cursor:pointer;display:none}#available-menu-items .item,#available-widgets .widget{position:static}.customize-controls-preview-toggle{display:none}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{margin-left:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:-32px}.customize-control input[type=radio]+label,.customize-control input[type=checkbox]+label{line-height:32px}}@media screen and (max-width:640px){#customize-controls{width:100%}.wp-full-overlay.collapsed #customize-controls,.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:0;border-right:1px solid #ddd;color:#555d66;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}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets{top:46px;left:0;z-index:10;width:100%}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back,#available-widgets .customize-section-back{height:69px}#available-menu-items .customize-section-title h3,#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 10px 12px 14px;margin:0;line-height:24px;color:#555d66;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action,#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;height:auto}#available-widgets-list{top:130px}#available-menu-items-search .clear-results,#available-menu-items-search .search-icon{top:85px}} \ No newline at end of file diff --git a/wp/wp-admin/css/customize-nav-menus-rtl.css b/wp/wp-admin/css/customize-nav-menus-rtl.css index fde34051..0d33732c 100644 --- a/wp/wp-admin/css/customize-nav-menus-rtl.css +++ b/wp/wp-admin/css/customize-nav-menus-rtl.css @@ -1,8 +1,12 @@ -#accordion-section-menu_locations { +#customize-theme-controls #accordion-section-menu_locations { position: relative; margin-bottom: 15px; } +#customize-theme-controls #accordion-section-menu_locations > .accordion-section-title { + border-bottom-color: #ddd; +} + .menu-in-location, .menu-in-locations { display: block; @@ -61,9 +65,18 @@ text-align: left; } +.wp-customizer .menu-item-handle:hover { + z-index: 8; +} + +.customize-control-nav_menu_item.has-notifications .menu-item-handle { + border-right: 4px solid #00a0d2; +} + .wp-customizer .menu-item-settings { max-width: 100%; overflow: hidden; + z-index: 8; padding: 10px; background: #eee; border: 1px solid #999; @@ -288,19 +301,19 @@ text-decoration: none !important; } -#accordion-panel-nav_menus .field-link-target, -#accordion-panel-nav_menus .field-title-attribute, -#accordion-panel-nav_menus .field-css-classes, -#accordion-panel-nav_menus .field-xfn, -#accordion-panel-nav_menus .field-description { +.control-section-nav_menu .field-link-target, +.control-section-nav_menu .field-title-attribute, +.control-section-nav_menu .field-css-classes, +.control-section-nav_menu .field-xfn, +.control-section-nav_menu .field-description { display: none; } -#accordion-panel-nav_menus.field-link-target-active .field-link-target, -#accordion-panel-nav_menus.field-title-attribute-active .field-title-attribute, -#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 { +.control-section-nav_menu.field-link-target-active .field-link-target, +.control-section-nav_menu.field-title-attribute-active .field-title-attribute, +.control-section-nav_menu.field-css-classes-active .field-css-classes, +.control-section-nav_menu.field-xfn-active .field-xfn, +.control-section-nav_menu.field-description-active .field-description { display: block; } @@ -373,15 +386,15 @@ .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 { +.control-section-nav_menu.menu .menu-item-edit-active { margin-right: 0; } -.control-section-nav_menu .menu .menu-item-edit-active .menu-item-bar { +.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar { margin-left: 0; } -.control-section-nav_menu .menu .sortable-placeholder { +.control-section-nav_menu.menu .sortable-placeholder { margin-top: 0; margin-bottom: 1px; max-width: -webkit-calc(100% - 2px); @@ -395,7 +408,7 @@ float: none; } -.control-section-nav_menu .menu ul.menu-item-transport .menu-item-bar { +.control-section-nav_menu.menu ul.menu-item-transport .menu-item-bar { margin-top: 0; } @@ -474,6 +487,11 @@ background: #fff; -webkit-transition: background-color 0.15s; transition: background-color 0.15s; + /* Reset the value inherited from the base .accordion-section-title style. Ticket #37589. */ + -webkit-user-select: auto; + -moz-user-select: auto; + -ms-user-select: auto; + user-select: auto; } #available-menu-items .open .accordion-section-title, @@ -497,7 +515,7 @@ color: #23282d; } -#available-menu-items .accordion-section-content { +#available-menu-items .available-menu-items-list { overflow-y: auto; max-height: 200px; /* This gets set in JS to fit the screen size, and based on # of sections. */ background: transparent; @@ -534,9 +552,24 @@ } #available-menu-items .accordion-section-content { - padding: 1px 15px 15px 15px; - margin: 0; max-height: 290px; + margin: 0; + padding: 0; + position: relative; + background: transparent; +} + +#available-menu-items .accordion-section-content .available-menu-items-list { + margin: 0 0 45px 0; + padding: 1px 15px 15px 15px; +} + +#available-menu-items .accordion-section-content .available-menu-items-list:only-child { /* Types that do not support new items for the current user */ + margin-bottom: 0; +} + +#new-custom-menu-item .accordion-section-content { + padding: 0 15px 15px 15px; } #available-menu-items .menu-item-tpl { @@ -546,7 +579,9 @@ #custom-menu-item-name.invalid, #custom-menu-item-url.invalid, .menu-name-field.invalid, -.menu-name-field.invalid:focus { +.menu-name-field.invalid:focus, +#available-menu-items .new-content-item .create-item-input.invalid, +#available-menu-items .new-content-item .create-item-input.invalid:focus { border: 1px solid #f00; } @@ -623,58 +658,17 @@ margin: 0 20px; } -#available-menu-items-search .clear-results { - position: absolute; - top: 18px; /* 12 container padding +1 input margin +1 input border +4 ( 4 is ( 28 input height - 20 button height ) / 2 ) */ - left: 20px; - width: 20px; - height: 20px; - padding: 0; - border: 0; - cursor: pointer; - background: none; - color: #a00; - text-decoration: none; - outline: 0; -} - -#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; -} - -.ie8 #available-menu-items-search.loading .clear-results:before { - content: ""; /* help IE8 redraw the pseudo element */ -} - -#available-menu-items-search .clear-results:before { - content: "\f335"; - font: normal 20px/1 dashicons; - vertical-align: middle; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -#available-menu-items-search .clear-results:hover, -#available-menu-items-search .clear-results:focus { - color: #f00; -} - #available-menu-items-search .spinner { position: absolute; - top: 18px; /* 12 container padding +1 input margin +1 input border +4 ( ( 28 input height - 20 button height ) / 2 ) */ - left: 20px; + top: 20px; /* 13 container padding +1 input margin +6 ( ( 32 input height - 20 spinner height ) / 2 ) */ + left: 21px; margin: 0 !important; } /* search results list */ #available-menu-items #available-menu-items-search .accordion-section-content { position: absolute; - right: 1px; + right: 0; top: 60px; /* below title div / search input */ bottom: 0px; /* 100% height that still triggers lazy load */ max-height: none; @@ -685,6 +679,11 @@ box-sizing: border-box; } +#available-menu-items-search .nothing-found { + /* Compensate the 1px top padding of the container. */ + margin-top: -1px; +} + #available-menu-items-search .accordion-section-title:after { display: none; } @@ -754,9 +753,14 @@ body.adding-menu-items #customize-preview { /* Add/delete Menus */ +#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title { + border-bottom-color: #ddd; +} + /* @todo update selector */ #accordion-section-add_menu { margin: 15px 12px; + overflow: hidden; } .new-menu-section-content { @@ -850,7 +854,6 @@ li.assigned-to-menu-location .add-new-menu-item { .customize-screen-options-toggle:focus:before, #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-customizer button:focus .toggle-indicator:after, -#available-menu-items-search .clear-results:focus, .menu-delete:focus, .menu-item-bar .item-delete:focus:before, #available-menu-items .item-add:focus:before { @@ -867,19 +870,10 @@ li.assigned-to-menu-location .add-new-menu-item { #available-menu-items #available-menu-items-search .accordion-section-content { top: 63px; } - - #available-menu-items-search .spinner, - #available-menu-items-search .clear-results { - top: 20px; /* 12 container padding +1 input margin +1 input border +5.5 ( 5.5 rounded to 6 is ( 31 input height - 20 button height ) / 2 ) */ - } } @media screen and ( max-width: 640px ) { #available-menu-items #available-menu-items-search .accordion-section-content { - top: 133px; - } - - #available-menu-items-search .clear-results { - top: 90px; /* 70 section title height + 12 container padding +1 input margin +1 input border +5.5 ( 5.5 rounded to 6 is ( 31 input height - 20 button height ) / 2 ) */ + top: 130px; } } diff --git a/wp/wp-admin/css/customize-nav-menus-rtl.min.css b/wp/wp-admin/css/customize-nav-menus-rtl.min.css index 9c5e43ca..4bbb6e8d 100644 --- a/wp/wp-admin/css/customize-nav-menus-rtl.min.css +++ b/wp/wp-admin/css/customize-nav-menus-rtl.min.css @@ -1 +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:hover .menu-in-location,#customize-controls .theme-location-set{color:#555}.customize-control-nav_menu_location .edit-menu{margin-right:6px;vertical-align:middle;line-height:28px;color:#0073aa;text-decoration:underline}.customize-control-nav_menu_location .edit-menu:active,.customize-control-nav_menu_location .edit-menu:hover{color:#00a0d2}.customize-control-nav_menu_location .edit-menu:focus{color:#124964}.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{float:right;margin:6px 0 0;padding:0;cursor:pointer}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;left:0}.menus-move-left:before{content:"\f345"}.menus-move-right:before{content:"\f341"}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%;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;-webkit-box-shadow:none;box-shadow:none;outline:0;overflow:hidden;cursor:pointer}.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-border-radius:100%;border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-left:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1;text-indent:-1px}.rtl .wp-customizer .toggle-indicator{text-indent:1px}.wp-customizer .toggle-indicator:after{content:"\f140";speak:none;vertical-align:top;-webkit-border-radius:50%;border-radius:50%;color:#72777c;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#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-title-attribute,#accordion-panel-nav_menus .field-xfn{display:none}#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-title-attribute-active .field-title-attribute,#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}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.menu-item-bar .item-delete{color:#a00;position:absolute;top:2px;left:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;right:5px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;color:red}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-right:none;border-left:none;background:#fff;-webkit-transition:background-color .15s;transition:background-color .15s}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#eee}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:after,#available-menu-items .button-link:focus .toggle-indicator:after,#available-menu-items .button-link:hover .toggle-indicator:after{color:#23282d}#available-menu-items .open .accordion-section-title .toggle-indicator:after{content:"\f142";color:#23282d}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;left:5px;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{float:left;color:#555d66;font-weight:400;margin-right:5px}#available-menu-items .accordion-section-content{overflow-y:auto;background:0 0;padding:1px 15px 15px;margin:0;max-height:290px}#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 .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;-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;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d}#available-menu-items .item-add:before{content:"\f543";position:relative;right:2px;top:3px;display:inline-block;height:20px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1.05 dashicons}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#82878c}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .clear-results{position:absolute;top:18px;left:20px;width:20px;height:20px;padding:0;border:0;cursor:pointer;background:0 0;color:#a00;text-decoration:none;outline:0}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible{display:none}#available-menu-items-search .clear-results.is-visible{display:block}.ie8 #available-menu-items-search.loading .clear-results:before{content:""}#available-menu-items-search .clear-results:before{content:"\f335";font:400 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover{color:red}#available-menu-items-search .spinner{position:absolute;top:18px;left:20px;margin:0!important}#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-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{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:focus,.menu-delete:hover{color:red;text-decoration:none}.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}#available-menu-items .item-add:focus:before,#available-menu-items-search .clear-results:focus,#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before,.menu-delete:focus,.menu-item-bar .item-delete:focus:before,.wp-customizer .menu-item .submitbox .submitdelete:focus,.wp-customizer button:focus .toggle-indicator: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)}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}#available-menu-items-search .clear-results,#available-menu-items-search .spinner{top:20px}}@media screen and (max-width:640px){#available-menu-items #available-menu-items-search .accordion-section-content{top:133px}#available-menu-items-search .clear-results{top:90px}} \ No newline at end of file +#customize-theme-controls #accordion-section-menu_locations{position:relative;margin-bottom:15px}#customize-theme-controls #accordion-section-menu_locations>.accordion-section-title{border-bottom-color:#ddd}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .theme-location-set{color:#555}.customize-control-nav_menu_location .edit-menu{margin-right:6px;vertical-align:middle;line-height:28px;color:#0073aa;text-decoration:underline}.customize-control-nav_menu_location .edit-menu:active,.customize-control-nav_menu_location .edit-menu:hover{color:#00a0d2}.customize-control-nav_menu_location .edit-menu:focus{color:#124964}.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-handle:hover{z-index:8}.customize-control-nav_menu_item.has-notifications .menu-item-handle{border-right:4px solid #00a0d2}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;z-index:8;padding:10px;background:#eee;border:1px solid #999;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{float:right;margin:6px 0 0;padding:0;cursor:pointer}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;left:0}.menus-move-left:before{content:"\f345"}.menus-move-right:before{content:"\f341"}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%;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;-webkit-box-shadow:none;box-shadow:none;outline:0;overflow:hidden;cursor:pointer}.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-border-radius:100%;border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-left:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1;text-indent:-1px}.rtl .wp-customizer .toggle-indicator{text-indent:1px}.wp-customizer .toggle-indicator:after{content:"\f140";speak:none;vertical-align:top;-webkit-border-radius:50%;border-radius:50%;color:#72777c;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.control-section-nav_menu .field-css-classes,.control-section-nav_menu .field-description,.control-section-nav_menu .field-link-target,.control-section-nav_menu .field-title-attribute,.control-section-nav_menu .field-xfn{display:none}.control-section-nav_menu.field-css-classes-active .field-css-classes,.control-section-nav_menu.field-description-active .field-description,.control-section-nav_menu.field-link-target-active .field-link-target,.control-section-nav_menu.field-title-attribute-active .field-title-attribute,.control-section-nav_menu.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:20px}.menu-item-depth-2{margin-right:40px}.menu-item-depth-3{margin-right:60px}.menu-item-depth-4{margin-right:80px}.menu-item-depth-5{margin-right:100px}.menu-item-depth-6{margin-right:120px}.menu-item-depth-7{margin-right:140px}.menu-item-depth-8{margin-right:160px}.menu-item-depth-9{margin-right:180px}.menu-item-depth-10{margin-right:200px}.menu-item-depth-11{margin-right:220px}.menu-item-depth-0>.menu-item-bar{margin-left:0}.menu-item-depth-1>.menu-item-bar{margin-left:20px}.menu-item-depth-2>.menu-item-bar{margin-left:40px}.menu-item-depth-3>.menu-item-bar{margin-left:60px}.menu-item-depth-4>.menu-item-bar{margin-left:80px}.menu-item-depth-5>.menu-item-bar{margin-left:100px}.menu-item-depth-6>.menu-item-bar{margin-left:120px}.menu-item-depth-7>.menu-item-bar{margin-left:140px}.menu-item-depth-8>.menu-item-bar{margin-left:160px}.menu-item-depth-9>.menu-item-bar{margin-left:180px}.menu-item-depth-10>.menu-item-bar{margin-left:200px}.menu-item-depth-11>.menu-item-bar{margin-left:220px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-20px}.menu-item-depth-3 .menu-item-transport{margin-right:-60px}.menu-item-depth-4 .menu-item-transport{margin-right:-80px}.menu-item-depth-2 .menu-item-transport{margin-right:-40px}.menu-item-depth-5 .menu-item-transport{margin-right:-100px}.menu-item-depth-6 .menu-item-transport{margin-right:-120px}.menu-item-depth-7 .menu-item-transport{margin-right:-140px}.menu-item-depth-8 .menu-item-transport{margin-right:-160px}.menu-item-depth-9 .menu-item-transport{margin-right:-180px}.menu-item-depth-10 .menu-item-transport{margin-right:-200px}.menu-item-depth-11 .menu-item-transport{margin-right:-220px}.reordering .menu-item-depth-0{margin-right:0}.reordering .menu-item-depth-1{margin-right:15px}.reordering .menu-item-depth-2{margin-right:30px}.reordering .menu-item-depth-3{margin-right:45px}.reordering .menu-item-depth-4{margin-right:60px}.reordering .menu-item-depth-5{margin-right:75px}.reordering .menu-item-depth-6{margin-right:90px}.reordering .menu-item-depth-7{margin-right:105px}.reordering .menu-item-depth-8{margin-right:120px}.reordering .menu-item-depth-9{margin-right:135px}.reordering .menu-item-depth-10{margin-right:150px}.reordering .menu-item-depth-11{margin-right:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-left:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-left:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-left:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-left:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-left:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-left:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-left:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-left:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-left:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-left:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-left:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-left:165px}.control-section-nav_menu.menu .menu-item-edit-active{margin-right:0}.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar{margin-left:0}.control-section-nav_menu.menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:-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}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.menu-item-bar .item-delete{color:#a00;position:absolute;top:2px;left:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;right:5px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;color:red}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-right:none;border-left:none;background:#fff;-webkit-transition:background-color .15s;transition:background-color .15s;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#eee}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:after,#available-menu-items .button-link:focus .toggle-indicator:after,#available-menu-items .button-link:hover .toggle-indicator:after{color:#23282d}#available-menu-items .open .accordion-section-title .toggle-indicator:after{content:"\f142";color:#23282d}#available-menu-items .available-menu-items-list{overflow-y:auto;max-height:200px;background:0 0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;left:5px;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{float:left;color:#555d66;font-weight:400;margin-right:5px}#available-menu-items .accordion-section-content{max-height:290px;margin:0;padding:0;position:relative;background:0 0}#available-menu-items .accordion-section-content .available-menu-items-list{margin:0 0 45px;padding:1px 15px 15px}#available-menu-items .accordion-section-content .available-menu-items-list:only-child{margin-bottom:0}#new-custom-menu-item .accordion-section-content{padding:0 15px 15px}#available-menu-items .menu-item-tpl{margin:0}#available-menu-items .new-content-item .create-item-input.invalid,#available-menu-items .new-content-item .create-item-input.invalid:focus,#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid red}#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;-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;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d}#available-menu-items .item-add:before{content:"\f543";position:relative;right:2px;top:3px;display:inline-block;height:20px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1.05 dashicons}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#82878c}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .spinner{position:absolute;top:20px;left:21px;margin:0!important}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;right:0;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items-search .nothing-found{margin-top:-1px}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{-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)}#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title{border-bottom-color:#ddd}#accordion-section-add_menu{margin:15px 12px;overflow:hidden}.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{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:focus,.menu-delete:hover{color:red;text-decoration:none}.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}#available-menu-items .item-add:focus:before,#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before,.menu-delete:focus,.menu-item-bar .item-delete:focus:before,.wp-customizer .menu-item .submitbox .submitdelete:focus,.wp-customizer button:focus .toggle-indicator: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)}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){#available-menu-items #available-menu-items-search .accordion-section-content{top:130px}} \ No newline at end of file diff --git a/wp/wp-admin/css/customize-nav-menus.css b/wp/wp-admin/css/customize-nav-menus.css index afe0cbc5..6fe558d2 100644 --- a/wp/wp-admin/css/customize-nav-menus.css +++ b/wp/wp-admin/css/customize-nav-menus.css @@ -1,8 +1,12 @@ -#accordion-section-menu_locations { +#customize-theme-controls #accordion-section-menu_locations { position: relative; margin-bottom: 15px; } +#customize-theme-controls #accordion-section-menu_locations > .accordion-section-title { + border-bottom-color: #ddd; +} + .menu-in-location, .menu-in-locations { display: block; @@ -61,9 +65,18 @@ text-align: right; } +.wp-customizer .menu-item-handle:hover { + z-index: 8; +} + +.customize-control-nav_menu_item.has-notifications .menu-item-handle { + border-left: 4px solid #00a0d2; +} + .wp-customizer .menu-item-settings { max-width: 100%; overflow: hidden; + z-index: 8; padding: 10px; background: #eee; border: 1px solid #999; @@ -288,19 +301,19 @@ text-decoration: none !important; } -#accordion-panel-nav_menus .field-link-target, -#accordion-panel-nav_menus .field-title-attribute, -#accordion-panel-nav_menus .field-css-classes, -#accordion-panel-nav_menus .field-xfn, -#accordion-panel-nav_menus .field-description { +.control-section-nav_menu .field-link-target, +.control-section-nav_menu .field-title-attribute, +.control-section-nav_menu .field-css-classes, +.control-section-nav_menu .field-xfn, +.control-section-nav_menu .field-description { display: none; } -#accordion-panel-nav_menus.field-link-target-active .field-link-target, -#accordion-panel-nav_menus.field-title-attribute-active .field-title-attribute, -#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 { +.control-section-nav_menu.field-link-target-active .field-link-target, +.control-section-nav_menu.field-title-attribute-active .field-title-attribute, +.control-section-nav_menu.field-css-classes-active .field-css-classes, +.control-section-nav_menu.field-xfn-active .field-xfn, +.control-section-nav_menu.field-description-active .field-description { display: block; } @@ -373,15 +386,15 @@ .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 { +.control-section-nav_menu.menu .menu-item-edit-active { margin-left: 0; } -.control-section-nav_menu .menu .menu-item-edit-active .menu-item-bar { +.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar { margin-right: 0; } -.control-section-nav_menu .menu .sortable-placeholder { +.control-section-nav_menu.menu .sortable-placeholder { margin-top: 0; margin-bottom: 1px; max-width: -webkit-calc(100% - 2px); @@ -395,7 +408,7 @@ float: none; } -.control-section-nav_menu .menu ul.menu-item-transport .menu-item-bar { +.control-section-nav_menu.menu ul.menu-item-transport .menu-item-bar { margin-top: 0; } @@ -474,6 +487,11 @@ background: #fff; -webkit-transition: background-color 0.15s; transition: background-color 0.15s; + /* Reset the value inherited from the base .accordion-section-title style. Ticket #37589. */ + -webkit-user-select: auto; + -moz-user-select: auto; + -ms-user-select: auto; + user-select: auto; } #available-menu-items .open .accordion-section-title, @@ -497,7 +515,7 @@ color: #23282d; } -#available-menu-items .accordion-section-content { +#available-menu-items .available-menu-items-list { overflow-y: auto; max-height: 200px; /* This gets set in JS to fit the screen size, and based on # of sections. */ background: transparent; @@ -534,9 +552,24 @@ } #available-menu-items .accordion-section-content { - padding: 1px 15px 15px 15px; - margin: 0; max-height: 290px; + margin: 0; + padding: 0; + position: relative; + background: transparent; +} + +#available-menu-items .accordion-section-content .available-menu-items-list { + margin: 0 0 45px 0; + padding: 1px 15px 15px 15px; +} + +#available-menu-items .accordion-section-content .available-menu-items-list:only-child { /* Types that do not support new items for the current user */ + margin-bottom: 0; +} + +#new-custom-menu-item .accordion-section-content { + padding: 0 15px 15px 15px; } #available-menu-items .menu-item-tpl { @@ -546,7 +579,9 @@ #custom-menu-item-name.invalid, #custom-menu-item-url.invalid, .menu-name-field.invalid, -.menu-name-field.invalid:focus { +.menu-name-field.invalid:focus, +#available-menu-items .new-content-item .create-item-input.invalid, +#available-menu-items .new-content-item .create-item-input.invalid:focus { border: 1px solid #f00; } @@ -623,58 +658,17 @@ margin: 0 20px; } -#available-menu-items-search .clear-results { - position: absolute; - top: 18px; /* 12 container padding +1 input margin +1 input border +4 ( 4 is ( 28 input height - 20 button height ) / 2 ) */ - right: 20px; - width: 20px; - height: 20px; - padding: 0; - border: 0; - cursor: pointer; - background: none; - color: #a00; - text-decoration: none; - outline: 0; -} - -#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; -} - -.ie8 #available-menu-items-search.loading .clear-results:before { - content: ""; /* help IE8 redraw the pseudo element */ -} - -#available-menu-items-search .clear-results:before { - content: "\f335"; - font: normal 20px/1 dashicons; - vertical-align: middle; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -#available-menu-items-search .clear-results:hover, -#available-menu-items-search .clear-results:focus { - color: #f00; -} - #available-menu-items-search .spinner { position: absolute; - top: 18px; /* 12 container padding +1 input margin +1 input border +4 ( ( 28 input height - 20 button height ) / 2 ) */ - right: 20px; + top: 20px; /* 13 container padding +1 input margin +6 ( ( 32 input height - 20 spinner height ) / 2 ) */ + right: 21px; margin: 0 !important; } /* search results list */ #available-menu-items #available-menu-items-search .accordion-section-content { position: absolute; - left: 1px; + left: 0; top: 60px; /* below title div / search input */ bottom: 0px; /* 100% height that still triggers lazy load */ max-height: none; @@ -685,6 +679,11 @@ box-sizing: border-box; } +#available-menu-items-search .nothing-found { + /* Compensate the 1px top padding of the container. */ + margin-top: -1px; +} + #available-menu-items-search .accordion-section-title:after { display: none; } @@ -754,9 +753,14 @@ body.adding-menu-items #customize-preview { /* Add/delete Menus */ +#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title { + border-bottom-color: #ddd; +} + /* @todo update selector */ #accordion-section-add_menu { margin: 15px 12px; + overflow: hidden; } .new-menu-section-content { @@ -850,7 +854,6 @@ li.assigned-to-menu-location .add-new-menu-item { .customize-screen-options-toggle:focus:before, #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-customizer button:focus .toggle-indicator:after, -#available-menu-items-search .clear-results:focus, .menu-delete:focus, .menu-item-bar .item-delete:focus:before, #available-menu-items .item-add:focus:before { @@ -867,19 +870,10 @@ li.assigned-to-menu-location .add-new-menu-item { #available-menu-items #available-menu-items-search .accordion-section-content { top: 63px; } - - #available-menu-items-search .spinner, - #available-menu-items-search .clear-results { - top: 20px; /* 12 container padding +1 input margin +1 input border +5.5 ( 5.5 rounded to 6 is ( 31 input height - 20 button height ) / 2 ) */ - } } @media screen and ( max-width: 640px ) { #available-menu-items #available-menu-items-search .accordion-section-content { - top: 133px; - } - - #available-menu-items-search .clear-results { - top: 90px; /* 70 section title height + 12 container padding +1 input margin +1 input border +5.5 ( 5.5 rounded to 6 is ( 31 input height - 20 button height ) / 2 ) */ + top: 130px; } } diff --git a/wp/wp-admin/css/customize-nav-menus.min.css b/wp/wp-admin/css/customize-nav-menus.min.css index 4c2e208a..7a085237 100644 --- a/wp/wp-admin/css/customize-nav-menus.min.css +++ b/wp/wp-admin/css/customize-nav-menus.min.css @@ -1 +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:hover .menu-in-location,#customize-controls .theme-location-set{color:#555}.customize-control-nav_menu_location .edit-menu{margin-left:6px;vertical-align:middle;line-height:28px;color:#0073aa;text-decoration:underline}.customize-control-nav_menu_location .edit-menu:active,.customize-control-nav_menu_location .edit-menu:hover{color:#00a0d2}.customize-control-nav_menu_location .edit-menu:focus{color:#124964}.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{float:left;margin:6px 0 0;padding:0;cursor:pointer}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;right:0}.menus-move-left:before{content:"\f341"}.menus-move-right:before{content:"\f345"}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%;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;-webkit-box-shadow:none;box-shadow:none;outline:0;overflow:hidden;cursor:pointer}.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-border-radius:100%;border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-right:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1;text-indent:-1px}.rtl .wp-customizer .toggle-indicator{text-indent:1px}.wp-customizer .toggle-indicator:after{content:"\f140";speak:none;vertical-align:top;-webkit-border-radius:50%;border-radius:50%;color:#72777c;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#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-title-attribute,#accordion-panel-nav_menus .field-xfn{display:none}#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-title-attribute-active .field-title-attribute,#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}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.menu-item-bar .item-delete{color:#a00;position:absolute;top:2px;right:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;left:5px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;color:red}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-left:none;border-right:none;background:#fff;-webkit-transition:background-color .15s;transition:background-color .15s}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#eee}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:after,#available-menu-items .button-link:focus .toggle-indicator:after,#available-menu-items .button-link:hover .toggle-indicator:after{color:#23282d}#available-menu-items .open .accordion-section-title .toggle-indicator:after{content:"\f142";color:#23282d}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;right:5px;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{float:right;color:#555d66;font-weight:400;margin-left:5px}#available-menu-items .accordion-section-content{overflow-y:auto;background:0 0;padding:1px 15px 15px;margin:0;max-height:290px}#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 .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;-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;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d}#available-menu-items .item-add:before{content:"\f543";position:relative;left:2px;top:3px;display:inline-block;height:20px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1.05 dashicons}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#82878c}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .clear-results{position:absolute;top:18px;right:20px;width:20px;height:20px;padding:0;border:0;cursor:pointer;background:0 0;color:#a00;text-decoration:none;outline:0}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible{display:none}#available-menu-items-search .clear-results.is-visible{display:block}.ie8 #available-menu-items-search.loading .clear-results:before{content:""}#available-menu-items-search .clear-results:before{content:"\f335";font:400 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover{color:red}#available-menu-items-search .spinner{position:absolute;top:18px;right:20px;margin:0!important}#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-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{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:focus,.menu-delete:hover{color:red;text-decoration:none}.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}#available-menu-items .item-add:focus:before,#available-menu-items-search .clear-results:focus,#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before,.menu-delete:focus,.menu-item-bar .item-delete:focus:before,.wp-customizer .menu-item .submitbox .submitdelete:focus,.wp-customizer button:focus .toggle-indicator: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)}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}#available-menu-items-search .clear-results,#available-menu-items-search .spinner{top:20px}}@media screen and (max-width:640px){#available-menu-items #available-menu-items-search .accordion-section-content{top:133px}#available-menu-items-search .clear-results{top:90px}} \ No newline at end of file +#customize-theme-controls #accordion-section-menu_locations{position:relative;margin-bottom:15px}#customize-theme-controls #accordion-section-menu_locations>.accordion-section-title{border-bottom-color:#ddd}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .theme-location-set{color:#555}.customize-control-nav_menu_location .edit-menu{margin-left:6px;vertical-align:middle;line-height:28px;color:#0073aa;text-decoration:underline}.customize-control-nav_menu_location .edit-menu:active,.customize-control-nav_menu_location .edit-menu:hover{color:#00a0d2}.customize-control-nav_menu_location .edit-menu:focus{color:#124964}.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-handle:hover{z-index:8}.customize-control-nav_menu_item.has-notifications .menu-item-handle{border-left:4px solid #00a0d2}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;z-index:8;padding:10px;background:#eee;border:1px solid #999;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{float:left;margin:6px 0 0;padding:0;cursor:pointer}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;right:0}.menus-move-left:before{content:"\f341"}.menus-move-right:before{content:"\f345"}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%;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;-webkit-box-shadow:none;box-shadow:none;outline:0;overflow:hidden;cursor:pointer}.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-border-radius:100%;border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-right:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1;text-indent:-1px}.rtl .wp-customizer .toggle-indicator{text-indent:1px}.wp-customizer .toggle-indicator:after{content:"\f140";speak:none;vertical-align:top;-webkit-border-radius:50%;border-radius:50%;color:#72777c;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.control-section-nav_menu .field-css-classes,.control-section-nav_menu .field-description,.control-section-nav_menu .field-link-target,.control-section-nav_menu .field-title-attribute,.control-section-nav_menu .field-xfn{display:none}.control-section-nav_menu.field-css-classes-active .field-css-classes,.control-section-nav_menu.field-description-active .field-description,.control-section-nav_menu.field-link-target-active .field-link-target,.control-section-nav_menu.field-title-attribute-active .field-title-attribute,.control-section-nav_menu.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:20px}.menu-item-depth-2{margin-left:40px}.menu-item-depth-3{margin-left:60px}.menu-item-depth-4{margin-left:80px}.menu-item-depth-5{margin-left:100px}.menu-item-depth-6{margin-left:120px}.menu-item-depth-7{margin-left:140px}.menu-item-depth-8{margin-left:160px}.menu-item-depth-9{margin-left:180px}.menu-item-depth-10{margin-left:200px}.menu-item-depth-11{margin-left:220px}.menu-item-depth-0>.menu-item-bar{margin-right:0}.menu-item-depth-1>.menu-item-bar{margin-right:20px}.menu-item-depth-2>.menu-item-bar{margin-right:40px}.menu-item-depth-3>.menu-item-bar{margin-right:60px}.menu-item-depth-4>.menu-item-bar{margin-right:80px}.menu-item-depth-5>.menu-item-bar{margin-right:100px}.menu-item-depth-6>.menu-item-bar{margin-right:120px}.menu-item-depth-7>.menu-item-bar{margin-right:140px}.menu-item-depth-8>.menu-item-bar{margin-right:160px}.menu-item-depth-9>.menu-item-bar{margin-right:180px}.menu-item-depth-10>.menu-item-bar{margin-right:200px}.menu-item-depth-11>.menu-item-bar{margin-right:220px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-20px}.menu-item-depth-3 .menu-item-transport{margin-left:-60px}.menu-item-depth-4 .menu-item-transport{margin-left:-80px}.menu-item-depth-2 .menu-item-transport{margin-left:-40px}.menu-item-depth-5 .menu-item-transport{margin-left:-100px}.menu-item-depth-6 .menu-item-transport{margin-left:-120px}.menu-item-depth-7 .menu-item-transport{margin-left:-140px}.menu-item-depth-8 .menu-item-transport{margin-left:-160px}.menu-item-depth-9 .menu-item-transport{margin-left:-180px}.menu-item-depth-10 .menu-item-transport{margin-left:-200px}.menu-item-depth-11 .menu-item-transport{margin-left:-220px}.reordering .menu-item-depth-0{margin-left:0}.reordering .menu-item-depth-1{margin-left:15px}.reordering .menu-item-depth-2{margin-left:30px}.reordering .menu-item-depth-3{margin-left:45px}.reordering .menu-item-depth-4{margin-left:60px}.reordering .menu-item-depth-5{margin-left:75px}.reordering .menu-item-depth-6{margin-left:90px}.reordering .menu-item-depth-7{margin-left:105px}.reordering .menu-item-depth-8{margin-left:120px}.reordering .menu-item-depth-9{margin-left:135px}.reordering .menu-item-depth-10{margin-left:150px}.reordering .menu-item-depth-11{margin-left:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-right:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-right:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-right:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-right:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-right:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-right:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-right:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-right:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-right:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-right:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-right:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-right:165px}.control-section-nav_menu.menu .menu-item-edit-active{margin-left:0}.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar{margin-right:0}.control-section-nav_menu.menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:-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}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.menu-item-bar .item-delete{color:#a00;position:absolute;top:2px;right:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;left:5px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;color:red}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-left:none;border-right:none;background:#fff;-webkit-transition:background-color .15s;transition:background-color .15s;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#eee}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:after,#available-menu-items .button-link:focus .toggle-indicator:after,#available-menu-items .button-link:hover .toggle-indicator:after{color:#23282d}#available-menu-items .open .accordion-section-title .toggle-indicator:after{content:"\f142";color:#23282d}#available-menu-items .available-menu-items-list{overflow-y:auto;max-height:200px;background:0 0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;right:5px;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{float:right;color:#555d66;font-weight:400;margin-left:5px}#available-menu-items .accordion-section-content{max-height:290px;margin:0;padding:0;position:relative;background:0 0}#available-menu-items .accordion-section-content .available-menu-items-list{margin:0 0 45px;padding:1px 15px 15px}#available-menu-items .accordion-section-content .available-menu-items-list:only-child{margin-bottom:0}#new-custom-menu-item .accordion-section-content{padding:0 15px 15px}#available-menu-items .menu-item-tpl{margin:0}#available-menu-items .new-content-item .create-item-input.invalid,#available-menu-items .new-content-item .create-item-input.invalid:focus,#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid red}#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;-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;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d}#available-menu-items .item-add:before{content:"\f543";position:relative;left:2px;top:3px;display:inline-block;height:20px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1.05 dashicons}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#82878c}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .spinner{position:absolute;top:20px;right:21px;margin:0!important}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;left:0;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items-search .nothing-found{margin-top:-1px}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{-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)}#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title{border-bottom-color:#ddd}#accordion-section-add_menu{margin:15px 12px;overflow:hidden}.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{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:focus,.menu-delete:hover{color:red;text-decoration:none}.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}#available-menu-items .item-add:focus:before,#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before,.menu-delete:focus,.menu-item-bar .item-delete:focus:before,.wp-customizer .menu-item .submitbox .submitdelete:focus,.wp-customizer button:focus .toggle-indicator: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)}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){#available-menu-items #available-menu-items-search .accordion-section-content{top:130px}} \ No newline at end of file diff --git a/wp/wp-admin/css/customize-widgets-rtl.css b/wp/wp-admin/css/customize-widgets-rtl.css index 767a3e22..8567da93 100644 --- a/wp/wp-admin/css/customize-widgets-rtl.css +++ b/wp/wp-admin/css/customize-widgets-rtl.css @@ -229,8 +229,10 @@ #available-widgets .widget-tpl:hover, #available-widgets .widget-tpl.selected { - background: #eee; + background: #f3f3f5; border-bottom-color: #ccc; + color: #0073aa; + border-right: 4px solid #0073aa; } #customize-controls .widget-title h3 { diff --git a/wp/wp-admin/css/customize-widgets-rtl.min.css b/wp/wp-admin/css/customize-widgets-rtl.min.css index bfe8b97c..7655a2ed 100644 --- a/wp/wp-admin/css/customize-widgets-rtl.min.css +++ b/wp/wp-admin/css/customize-widgets-rtl.min.css @@ -1 +1 @@ -.control-section.control-section-sidebar .accordion-section-content.ui-sortable,.wp-full-overlay-sidebar{overflow:visible}.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label{display:none}.customize-control-widget_form .widget-top{background:#fff;-webkit-transition:opacity .5s;transition:opacity .5s}.customize-control .widget-action{color:#72777c}.customize-control .widget-action:focus,.customize-control .widget-top:hover .widget-action{color:#23282d}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;-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}.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,.widget-top{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}#widget-customizer-control-templates{display:none}#customize-theme-controls .widget-reorder-nav{display:none;float:left;background-color:#fafafa}.move-widget:before{content:"\f504"}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #ddd;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 42px 15px 15px;color:#555;border-top:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-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}#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}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}.ios #available-widgets{-webkit-transition:right 0s;transition:right 0s}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#eee;border-bottom-color:#ccc}#customize-controls .widget-title h3{font-size:1em}#available-widgets .widget-title h3{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#72777c}#customize-preview{-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{content:"\f132";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;-moz-osx-font-smoothing:grayscale}#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"}@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 h3{padding:13px 15px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 42px 11px 15px}#customize-theme-controls .widget-area-select li:before{top:8px}} \ No newline at end of file +.control-section.control-section-sidebar .accordion-section-content.ui-sortable,.wp-full-overlay-sidebar{overflow:visible}.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label{display:none}.customize-control-widget_form .widget-top{background:#fff;-webkit-transition:opacity .5s;transition:opacity .5s}.customize-control .widget-action{color:#72777c}.customize-control .widget-action:focus,.customize-control .widget-top:hover .widget-action{color:#23282d}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;-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}.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,.widget-top{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}#widget-customizer-control-templates{display:none}#customize-theme-controls .widget-reorder-nav{display:none;float:left;background-color:#fafafa}.move-widget:before{content:"\f504"}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #ddd;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 42px 15px 15px;color:#555;border-top:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-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}#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}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}.ios #available-widgets{-webkit-transition:right 0s;transition:right 0s}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#f3f3f5;border-bottom-color:#ccc;color:#0073aa;border-right:4px solid #0073aa}#customize-controls .widget-title h3{font-size:1em}#available-widgets .widget-title h3{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#72777c}#customize-preview{-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{content:"\f132";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;-moz-osx-font-smoothing:grayscale}#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"}@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 h3{padding:13px 15px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 42px 11px 15px}#customize-theme-controls .widget-area-select li:before{top:8px}} \ No newline at end of file diff --git a/wp/wp-admin/css/customize-widgets.css b/wp/wp-admin/css/customize-widgets.css index a32f56e6..687c9f85 100644 --- a/wp/wp-admin/css/customize-widgets.css +++ b/wp/wp-admin/css/customize-widgets.css @@ -229,8 +229,10 @@ #available-widgets .widget-tpl:hover, #available-widgets .widget-tpl.selected { - background: #eee; + background: #f3f3f5; border-bottom-color: #ccc; + color: #0073aa; + border-left: 4px solid #0073aa; } #customize-controls .widget-title h3 { diff --git a/wp/wp-admin/css/customize-widgets.min.css b/wp/wp-admin/css/customize-widgets.min.css index b802cdd8..506c3f35 100644 --- a/wp/wp-admin/css/customize-widgets.min.css +++ b/wp/wp-admin/css/customize-widgets.min.css @@ -1 +1 @@ -.control-section.control-section-sidebar .accordion-section-content.ui-sortable,.wp-full-overlay-sidebar{overflow:visible}.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label{display:none}.customize-control-widget_form .widget-top{background:#fff;-webkit-transition:opacity .5s;transition:opacity .5s}.customize-control .widget-action{color:#72777c}.customize-control .widget-action:focus,.customize-control .widget-top:hover .widget-action{color:#23282d}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;-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}.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,.widget-top{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}#widget-customizer-control-templates{display:none}#customize-theme-controls .widget-reorder-nav{display:none;float:right;background-color:#fafafa}.move-widget:before{content:"\f504"}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #ddd;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 15px 15px 42px;color:#555;border-top:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-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}#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}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}.ios #available-widgets{-webkit-transition:left 0s;transition:left 0s}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#eee;border-bottom-color:#ccc}#customize-controls .widget-title h3{font-size:1em}#available-widgets .widget-title h3{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#72777c}#customize-preview{-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{content:"\f132";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;-moz-osx-font-smoothing:grayscale}#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"}@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 h3{padding:13px 15px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 15px 11px 42px}#customize-theme-controls .widget-area-select li:before{top:8px}} \ No newline at end of file +.control-section.control-section-sidebar .accordion-section-content.ui-sortable,.wp-full-overlay-sidebar{overflow:visible}.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label{display:none}.customize-control-widget_form .widget-top{background:#fff;-webkit-transition:opacity .5s;transition:opacity .5s}.customize-control .widget-action{color:#72777c}.customize-control .widget-action:focus,.customize-control .widget-top:hover .widget-action{color:#23282d}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;-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}.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,.widget-top{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}#widget-customizer-control-templates{display:none}#customize-theme-controls .widget-reorder-nav{display:none;float:right;background-color:#fafafa}.move-widget:before{content:"\f504"}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #ddd;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 15px 15px 42px;color:#555;border-top:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-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}#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}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}.ios #available-widgets{-webkit-transition:left 0s;transition:left 0s}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#f3f3f5;border-bottom-color:#ccc;color:#0073aa;border-left:4px solid #0073aa}#customize-controls .widget-title h3{font-size:1em}#available-widgets .widget-title h3{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#72777c}#customize-preview{-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{content:"\f132";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;-moz-osx-font-smoothing:grayscale}#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"}@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 h3{padding:13px 15px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 15px 11px 42px}#customize-theme-controls .widget-area-select li:before{top:8px}} \ No newline at end of file diff --git a/wp/wp-admin/css/edit-rtl.css b/wp/wp-admin/css/edit-rtl.css index 5e28c4dd..e8f01145 100644 --- a/wp/wp-admin/css/edit-rtl.css +++ b/wp/wp-admin/css/edit-rtl.css @@ -129,23 +129,10 @@ input#link_url { float: right; } -.submitbox .submitdelete { - text-decoration: none; - padding: 1px 2px; -} - body.post-new-php .submitbox .submitdelete { display: none; } -/* @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; } @@ -349,7 +336,7 @@ form#tags-filter { } #content-resize-handle { - background: transparent url(../images/resize.gif) no-repeat scroll right bottom; + background: transparent url(../images/resize.gif) no-repeat scroll left bottom; width: 12px; cursor: row-resize; } @@ -464,7 +451,7 @@ form#tags-filter { height: auto !important; } -#misc-publishing-actions label[for="post_status"]:before, +#post-body .misc-pub-post-status:before, #post-body #visibility:before, .curtime #timestamp:before, #post-body .misc-pub-revisions:before, @@ -472,20 +459,22 @@ span.wp-media-buttons-icon:before { color: #82878c; } +#post-body .misc-pub-post-status:before, #post-body #visibility:before, .curtime #timestamp:before, #post-body .misc-pub-revisions:before { font: normal 20px/1 dashicons; speak: none; display: inline-block; - padding: 0 0 0 2px; - top: 0; - right: -1px; - position: relative; + margin-right: -1px; + padding-left: 3px; vertical-align: top; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - text-decoration: none !important; +} + +#post-body .misc-pub-post-status:before { + content: "\f173"; } #post-body #visibility:before { @@ -494,6 +483,7 @@ span.wp-media-buttons-icon:before { .curtime #timestamp:before { content: "\f145"; + position: relative; top: -1px; } @@ -592,10 +582,9 @@ span.wp-media-buttons-icon:before { position: absolute; } -.tagchecklist span { - margin-left: 25px; - display: block; +.tagchecklist > span { float: right; + margin-left: 25px; font-size: 13px; line-height: 1.8em; cursor: default; @@ -604,16 +593,16 @@ span.wp-media-buttons-icon:before { 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; +.tagchecklist .ntdelbutton { position: absolute; + width: 24px; + height: 24px; + border: none; + margin: 0 -19px 0 0; + padding: 0; + background: none; + cursor: pointer; + text-indent: 0; } #poststuff h3.hndle, /* Back-compat for pre-4.4 */ @@ -639,11 +628,21 @@ span.wp-media-buttons-icon:before { width: 250px; } +.post-attributes-label-wrapper { + margin-bottom: 0.5em; +} + +.post-attributes-label { + vertical-align: baseline; + font-weight: 600; +} + #post-visibility-select { line-height: 1.5em; margin-top: 3px; } +#linksubmitdiv .inside, /* Old Link Manager back-compat. */ #poststuff #submitdiv .inside { margin: 0; padding: 0; @@ -1036,6 +1035,25 @@ span.description, width: 260px; } +.tagcloud-link.button-link { + color: #0073aa; + text-decoration: underline; +} + +.tagcloud-link.button-link:hover { + color: #00a0d2; +} + +.tagcloud-link.button-link: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); +} + #post-body-content .tagsdiv .the-tags { margin: 0 5px; } @@ -1061,6 +1079,7 @@ p.popular-tags a { margin: 2px 0 12px; } +/* Suggest.js autocomplete, no more used by core. */ .ac_results { display: none; margin: -1px 0 0; @@ -1300,7 +1319,7 @@ table.links-table { (min-resolution: 120dpi) { #content-resize-handle, #post-body .wp_themeSkin .mceStatusbar a.mceResize { - background: transparent url(../images/resize-2x.gif) no-repeat scroll right bottom; + background: transparent url(../images/resize-2x.gif) no-repeat scroll left bottom; -webkit-background-size: 11px 11px; background-size: 11px 11px; } @@ -1447,7 +1466,7 @@ table.links-table { margin: 25px 10px; } - .tagchecklist span { + .tagchecklist > span { font-size: 16px; line-height: 1.4; } diff --git a/wp/wp-admin/css/edit-rtl.min.css b/wp/wp-admin/css/edit-rtl.min.css index af6cdf7a..cf452031 100644 --- a/wp/wp-admin/css/edit-rtl.min.css +++ b/wp/wp-admin/css/edit-rtl.min.css @@ -1 +1 @@ -#pending,#poststuff #titlewrap{border:0;padding:0}#pending,#poststuff #post-body{padding:0}#editable-post-name-full,body.post-new-php .submitbox .submitdelete{display:none}#titlediv,#wp-content-editor-container,.postbox,form#tags-filter{position:relative}#poststuff{padding-top:10px;min-width:763px}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-left:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:right}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:right;margin:0 0 0 5px}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#72777c;position:absolute;font-size:1.7em;padding:11px 10px}input#link_description,input#link_url{width:98%}#pending{background:100% none;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-left:10px;padding:0;font-size:11px;text-decoration:underline;color:#0073aa}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name{font-weight:600}#editable-post-name input{font-size:13px;font-weight:400;height:22px;margin:0;width:16em}.postarea h3 label{float:right}.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}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{min-width:255px;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}#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{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#32373c}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0}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 #ddd;border-bottom-color:#fdfdfd;background-color:#fdfdfd}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 6px}#set-post-thumbnail{display:inline-block;max-width:100%}.ui-tabs-hide,.wp-editor-expand #content-resize-handle,.wp-hidden-children .wp-hidden-child{display:none}#postimagediv .inside img{max-width:100%;height:auto;width:auto;vertical-align:top;background-image:-webkit-linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),-webkit-linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-image:linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:100% 0,10px 10px;-webkit-background-size:20px 20px;background-size:20px 20px}#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,.04);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) right bottom no-repeat;width:12px;cursor:row-resize}.rtl #content-resize-handle{background-image:url(../images/resize-rtl.gif);background-position:left bottom}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}.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{display:block;float:right;overflow:hidden}.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 .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}.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 #ddd;border-spacing:0;background-color:#f9f9f9}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-left:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:right;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-state-format{overflow:hidden;display:inline-block;vertical-align:middle;height:20px;width:20px;margin-left:5px;margin-top:-4px}.post-state-format:before{display:block;height:20px;width:20px;font: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 #ddd;background-color:#fdfdfd}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 0}.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%}.form-wrap p,p.description{margin:2px 0 5px;color:#666}.form-wrap p,p.description,p.help,span.description{font-size:13px;font-style:italic}.form-wrap .form-field{margin:1em 0;padding:0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}.edit-term-notes{margin-top:2em}#poststuff .tagsdiv .howto{margin:0 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h2{margin:2px 0 12px}.ac_results{display:none;margin:-1px 0 0;padding:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{margin:0;padding:5px 10px;white-space:nowrap;text-align:right}.ac_over .ac_match,.ac_results .ac_over{background-color:#0073aa;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}.comment-ays .comment-content ul{list-style:outside;margin-right:2em}.comment-ays .comment-content a[href]:after{content:'(' attr(href) ')';display:inline-block;padding:0 4px;color:#72777C;font-size:13px;word-break:break-all}.comment-ays .comment-content p.edit-comment{margin-top:10px}.comment-ays .comment-content p.edit-comment a[href]:after{content:'';padding:0}#comment-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}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw{display:none}.wp-editor-expand #qt_content_dfw,.wp-editor-expand #wp-content-wrap .mce-wp-dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .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:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-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:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-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-image:url(../images/resize-rtl-2x.gif);background-position:left bottom}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{border:0;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 .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}.post-format-options{padding-left:0}.post-format-options a{margin-left:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-left:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}.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:14px;padding:6px 10px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-right:-2px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}.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}} \ No newline at end of file +#pending,#poststuff #titlewrap{border:0;padding:0}#pending,#poststuff #post-body{padding:0}#editable-post-name-full,body.post-new-php .submitbox .submitdelete{display:none}#edit-slug-box .cancel,.submitbox .submit a:hover{text-decoration:underline}#titlediv,#wp-content-editor-container,.postbox,form#tags-filter{position:relative}#poststuff{padding-top:10px;min-width:763px}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-left:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:right}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:right;margin:0 0 0 5px}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#72777c;position:absolute;font-size:1.7em;padding:11px 10px}input#link_description,input#link_url{width:98%}#pending{background:100% none;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-left:10px;padding:0;font-size:11px;color:#0073aa}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name{font-weight:600}#editable-post-name input{font-size:13px;font-weight:400;height:22px;margin:0;width:16em}.postarea h3 label{float:right}.submitbox .submit input{margin-bottom:8px;margin-left:4px;padding:6px}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{min-width:255px;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}#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{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#32373c}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0}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 #ddd;border-bottom-color:#fdfdfd;background-color:#fdfdfd}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 6px}#set-post-thumbnail{display:inline-block;max-width:100%}.ui-tabs-hide,.wp-editor-expand #content-resize-handle,.wp-hidden-children .wp-hidden-child{display:none}#postimagediv .inside img{max-width:100%;height:auto;width:auto;vertical-align:top;background-image:-webkit-linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),-webkit-linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-image:linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:100% 0,10px 10px;-webkit-background-size:20px 20px;background-size:20px 20px}#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,.04);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-image:url(../images/resize-rtl.gif);background-position:left bottom}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}.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}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:#82878c}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before{font:400 20px/1 dashicons;speak:none;display:inline-block;margin-right:-1px;padding-left:3px;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#post-body .misc-pub-post-status:before{content:"\f173"}#post-body #visibility:before{content:"\f177"}.curtime #timestamp:before{content:"\f145";position:relative;top:-1px}#post-body .misc-pub-revisions:before{content:"\f321"}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}.notification-dialog{position:fixed;top:30%;max-height:70%;right:50%;width:450px;margin-right:-225px;background:#fff;-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 strong{margin-right:-8px;position:absolute}.tagchecklist>span{float:right;margin-left:25px;font-size:13px;line-height:1.8em;cursor:default;max-width:100%;overflow:hidden;text-overflow:ellipsis}.tagchecklist .ntdelbutton{position:absolute;width:24px;height:24px;border:none;margin:0 -19px 0 0;padding:0;background:0 0;cursor:pointer;text-indent:0}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}.ie8 #poststuff .inside #page_template,.ie8 #poststuff .inside #parent_id{width:250px}.post-attributes-label-wrapper{margin-bottom:.5em}.post-attributes-label{vertical-align:baseline;font-weight:600}#post-visibility-select{line-height:1.5em;margin-top:3px}#linksubmitdiv .inside,#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}#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 #ddd;border-spacing:0;background-color:#f9f9f9}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-left:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:right;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-state-format{overflow:hidden;display:inline-block;vertical-align:middle;height:20px;width:20px;margin-left:5px;margin-top:-4px}.post-state-format:before{display:block;height:20px;width:20px;font: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 #ddd;background-color:#fdfdfd}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 0}.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%}.form-wrap p,p.description{margin:2px 0 5px;color:#666}.form-wrap p,p.description,p.help,span.description{font-size:13px;font-style:italic}.form-wrap .form-field{margin:1em 0;padding:0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}.edit-term-notes{margin-top:2em}#poststuff .tagsdiv .howto{margin:0 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}.tagcloud-link.button-link{color:#0073aa;text-decoration:underline}.tagcloud-link.button-link:hover{color:#00a0d2}.tagcloud-link.button-link: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)}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h2{margin:2px 0 12px}.ac_results{display:none;margin:-1px 0 0;padding:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{margin:0;padding:5px 10px;white-space:nowrap;text-align:right}.ac_over .ac_match,.ac_results .ac_over{background-color:#0073aa;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}.comment-ays .comment-content ul{list-style:outside;margin-right:2em}.comment-ays .comment-content a[href]:after{content:'(' attr(href) ')';display:inline-block;padding:0 4px;color:#72777C;font-size:13px;word-break:break-all}.comment-ays .comment-content p.edit-comment{margin-top:10px}.comment-ays .comment-content p.edit-comment a[href]:after{content:'';padding:0}#comment-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}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw{display:none}.wp-editor-expand #qt_content_dfw,.wp-editor-expand #wp-content-wrap .mce-wp-dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .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:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-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:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-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-image:url(../images/resize-rtl-2x.gif);background-position:left bottom}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{border:0;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 .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}.post-format-options{padding-left:0}.post-format-options a{margin-left:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-left:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}.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:14px;padding:6px 10px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-right:-2px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}.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}} \ No newline at end of file diff --git a/wp/wp-admin/css/edit.css b/wp/wp-admin/css/edit.css index ac764921..d33f1077 100644 --- a/wp/wp-admin/css/edit.css +++ b/wp/wp-admin/css/edit.css @@ -129,23 +129,10 @@ input#link_url { float: left; } -.submitbox .submitdelete { - text-decoration: none; - padding: 1px 2px; -} - body.post-new-php .submitbox .submitdelete { display: none; } -/* @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; } @@ -464,7 +451,7 @@ form#tags-filter { height: auto !important; } -#misc-publishing-actions label[for="post_status"]:before, +#post-body .misc-pub-post-status:before, #post-body #visibility:before, .curtime #timestamp:before, #post-body .misc-pub-revisions:before, @@ -472,20 +459,22 @@ span.wp-media-buttons-icon:before { color: #82878c; } +#post-body .misc-pub-post-status:before, #post-body #visibility:before, .curtime #timestamp:before, #post-body .misc-pub-revisions:before { font: normal 20px/1 dashicons; speak: none; display: inline-block; - padding: 0 2px 0 0; - top: 0; - left: -1px; - position: relative; + margin-left: -1px; + padding-right: 3px; vertical-align: top; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - text-decoration: none !important; +} + +#post-body .misc-pub-post-status:before { + content: "\f173"; } #post-body #visibility:before { @@ -494,6 +483,7 @@ span.wp-media-buttons-icon:before { .curtime #timestamp:before { content: "\f145"; + position: relative; top: -1px; } @@ -592,10 +582,9 @@ span.wp-media-buttons-icon:before { position: absolute; } -.tagchecklist span { - margin-right: 25px; - display: block; +.tagchecklist > span { float: left; + margin-right: 25px; font-size: 13px; line-height: 1.8em; cursor: default; @@ -604,16 +593,16 @@ span.wp-media-buttons-icon:before { 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; +.tagchecklist .ntdelbutton { position: absolute; + width: 24px; + height: 24px; + border: none; + margin: 0 0 0 -19px; + padding: 0; + background: none; + cursor: pointer; + text-indent: 0; } #poststuff h3.hndle, /* Back-compat for pre-4.4 */ @@ -639,11 +628,21 @@ span.wp-media-buttons-icon:before { width: 250px; } +.post-attributes-label-wrapper { + margin-bottom: 0.5em; +} + +.post-attributes-label { + vertical-align: baseline; + font-weight: 600; +} + #post-visibility-select { line-height: 1.5em; margin-top: 3px; } +#linksubmitdiv .inside, /* Old Link Manager back-compat. */ #poststuff #submitdiv .inside { margin: 0; padding: 0; @@ -1036,6 +1035,25 @@ span.description, width: 260px; } +.tagcloud-link.button-link { + color: #0073aa; + text-decoration: underline; +} + +.tagcloud-link.button-link:hover { + color: #00a0d2; +} + +.tagcloud-link.button-link: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); +} + #post-body-content .tagsdiv .the-tags { margin: 0 5px; } @@ -1061,6 +1079,7 @@ p.popular-tags a { margin: 2px 0 12px; } +/* Suggest.js autocomplete, no more used by core. */ .ac_results { display: none; margin: -1px 0 0; @@ -1447,7 +1466,7 @@ table.links-table { margin: 25px 10px; } - .tagchecklist span { + .tagchecklist > span { font-size: 16px; line-height: 1.4; } diff --git a/wp/wp-admin/css/edit.min.css b/wp/wp-admin/css/edit.min.css index 505a62ab..2967f643 100644 --- a/wp/wp-admin/css/edit.min.css +++ b/wp/wp-admin/css/edit.min.css @@ -1 +1 @@ -#pending,#poststuff #titlewrap{border:0;padding:0}#pending,#poststuff #post-body{padding:0}#editable-post-name-full,body.post-new-php .submitbox .submitdelete{display:none}#titlediv,#wp-content-editor-container,.postbox,form#tags-filter{position:relative}#poststuff{padding-top:10px;min-width:763px}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:left}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:left;margin:0 5px 0 0}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#72777c;position:absolute;font-size:1.7em;padding:11px 10px}input#link_description,input#link_url{width:98%}#pending{background:0 none;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-right:10px;padding:0;font-size:11px;text-decoration:underline;color:#0073aa}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name{font-weight:600}#editable-post-name input{font-size:13px;font-weight:400;height:22px;margin:0;width:16em}.postarea h3 label{float:left}.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}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{min-width:255px;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}#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{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#32373c}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0}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 #ddd;border-bottom-color:#fdfdfd;background-color:#fdfdfd}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 6px}#set-post-thumbnail{display:inline-block;max-width:100%}.ui-tabs-hide,.wp-editor-expand #content-resize-handle,.wp-hidden-children .wp-hidden-child{display:none}#postimagediv .inside img{max-width:100%;height:auto;width:auto;vertical-align:top;background-image:-webkit-linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),-webkit-linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-image:linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:0 0,10px 10px;-webkit-background-size:20px 20px;background-size:20px 20px}#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,.04);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-image:url(../images/resize-rtl.gif);background-position:left bottom}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}.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{display:block;float:left;overflow:hidden}.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 .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}.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 #ddd;border-spacing:0;background-color:#f9f9f9}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-right:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:left;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-state-format{overflow:hidden;display:inline-block;vertical-align:middle;height:20px;width:20px;margin-right:5px;margin-top:-4px}.post-state-format:before{display:block;height:20px;width:20px;font: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 #ddd;background-color:#fdfdfd}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 0}.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%}.form-wrap p,p.description{margin:2px 0 5px;color:#666}.form-wrap p,p.description,p.help,span.description{font-size:13px;font-style:italic}.form-wrap .form-field{margin:1em 0;padding:0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}.edit-term-notes{margin-top:2em}#poststuff .tagsdiv .howto{margin:0 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h2{margin:2px 0 12px}.ac_results{display:none;margin:-1px 0 0;padding:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{margin:0;padding:5px 10px;white-space:nowrap;text-align:left}.ac_over .ac_match,.ac_results .ac_over{background-color:#0073aa;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}.comment-ays .comment-content ul{list-style:outside;margin-left:2em}.comment-ays .comment-content a[href]:after{content:'(' attr(href) ')';display:inline-block;padding:0 4px;color:#72777C;font-size:13px;word-break:break-all}.comment-ays .comment-content p.edit-comment{margin-top:10px}.comment-ays .comment-content p.edit-comment a[href]:after{content:'';padding:0}#comment-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}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw{display:none}.wp-editor-expand #qt_content_dfw,.wp-editor-expand #wp-content-wrap .mce-wp-dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .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:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-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:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-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-image:url(../images/resize-rtl-2x.gif);background-position:left bottom}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-right:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{border:0;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 .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}.post-format-options{padding-right:0}.post-format-options a{margin-right:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-right:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}.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:14px;padding:6px 10px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-left:-2px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}.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}} \ No newline at end of file +#pending,#poststuff #titlewrap{border:0;padding:0}#pending,#poststuff #post-body{padding:0}#editable-post-name-full,body.post-new-php .submitbox .submitdelete{display:none}#edit-slug-box .cancel,.submitbox .submit a:hover{text-decoration:underline}#titlediv,#wp-content-editor-container,.postbox,form#tags-filter{position:relative}#poststuff{padding-top:10px;min-width:763px}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:left}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:left;margin:0 5px 0 0}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#72777c;position:absolute;font-size:1.7em;padding:11px 10px}input#link_description,input#link_url{width:98%}#pending{background:0 none;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-right:10px;padding:0;font-size:11px;color:#0073aa}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name{font-weight:600}#editable-post-name input{font-size:13px;font-weight:400;height:22px;margin:0;width:16em}.postarea h3 label{float:left}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{min-width:255px;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}#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{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#32373c}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0}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 #ddd;border-bottom-color:#fdfdfd;background-color:#fdfdfd}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 6px}#set-post-thumbnail{display:inline-block;max-width:100%}.ui-tabs-hide,.wp-editor-expand #content-resize-handle,.wp-hidden-children .wp-hidden-child{display:none}#postimagediv .inside img{max-width:100%;height:auto;width:auto;vertical-align:top;background-image:-webkit-linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),-webkit-linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-image:linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:0 0,10px 10px;-webkit-background-size:20px 20px;background-size:20px 20px}#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,.04);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-image:url(../images/resize-rtl.gif);background-position:left bottom}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}.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}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:#82878c}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before{font:400 20px/1 dashicons;speak:none;display:inline-block;margin-left:-1px;padding-right:3px;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#post-body .misc-pub-post-status:before{content:"\f173"}#post-body #visibility:before{content:"\f177"}.curtime #timestamp:before{content:"\f145";position:relative;top:-1px}#post-body .misc-pub-revisions:before{content:"\f321"}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}.notification-dialog{position:fixed;top:30%;max-height:70%;left:50%;width:450px;margin-left:-225px;background:#fff;-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 strong{margin-left:-8px;position:absolute}.tagchecklist>span{float:left;margin-right:25px;font-size:13px;line-height:1.8em;cursor:default;max-width:100%;overflow:hidden;text-overflow:ellipsis}.tagchecklist .ntdelbutton{position:absolute;width:24px;height:24px;border:none;margin:0 0 0 -19px;padding:0;background:0 0;cursor:pointer;text-indent:0}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}.ie8 #poststuff .inside #page_template,.ie8 #poststuff .inside #parent_id{width:250px}.post-attributes-label-wrapper{margin-bottom:.5em}.post-attributes-label{vertical-align:baseline;font-weight:600}#post-visibility-select{line-height:1.5em;margin-top:3px}#linksubmitdiv .inside,#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}#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 #ddd;border-spacing:0;background-color:#f9f9f9}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-right:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:left;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-state-format{overflow:hidden;display:inline-block;vertical-align:middle;height:20px;width:20px;margin-right:5px;margin-top:-4px}.post-state-format:before{display:block;height:20px;width:20px;font: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 #ddd;background-color:#fdfdfd}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 0}.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%}.form-wrap p,p.description{margin:2px 0 5px;color:#666}.form-wrap p,p.description,p.help,span.description{font-size:13px;font-style:italic}.form-wrap .form-field{margin:1em 0;padding:0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}.edit-term-notes{margin-top:2em}#poststuff .tagsdiv .howto{margin:0 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}.tagcloud-link.button-link{color:#0073aa;text-decoration:underline}.tagcloud-link.button-link:hover{color:#00a0d2}.tagcloud-link.button-link: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)}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h2{margin:2px 0 12px}.ac_results{display:none;margin:-1px 0 0;padding:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{margin:0;padding:5px 10px;white-space:nowrap;text-align:left}.ac_over .ac_match,.ac_results .ac_over{background-color:#0073aa;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}.comment-ays .comment-content ul{list-style:outside;margin-left:2em}.comment-ays .comment-content a[href]:after{content:'(' attr(href) ')';display:inline-block;padding:0 4px;color:#72777C;font-size:13px;word-break:break-all}.comment-ays .comment-content p.edit-comment{margin-top:10px}.comment-ays .comment-content p.edit-comment a[href]:after{content:'';padding:0}#comment-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}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw{display:none}.wp-editor-expand #qt_content_dfw,.wp-editor-expand #wp-content-wrap .mce-wp-dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .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:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-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:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-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-image:url(../images/resize-rtl-2x.gif);background-position:left bottom}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-right:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{border:0;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 .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}.post-format-options{padding-right:0}.post-format-options a{margin-right:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-right:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}.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:14px;padding:6px 10px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-left:-2px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}.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}} \ No newline at end of file diff --git a/wp/wp-admin/css/forms-rtl.css b/wp/wp-admin/css/forms-rtl.css index b8a0956f..0633c1af 100644 --- a/wp/wp-admin/css/forms-rtl.css +++ b/wp/wp-admin/css/forms-rtl.css @@ -204,6 +204,7 @@ textarea { .wp-admin input[type="file"] { padding: 3px 0; + cursor: pointer; } label { @@ -297,6 +298,7 @@ input[type="range"].disabled { background: none; -webkit-box-shadow: none; box-shadow: none; + cursor: default; } input[type="checkbox"]:disabled, @@ -384,7 +386,7 @@ textarea.large-text { width: 99%; } -input.regular-text { +.regular-text { width: 25em; } @@ -456,21 +458,6 @@ fieldset 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; @@ -607,11 +594,18 @@ ul#add-to-blog-users { padding: 4px 10px; white-space: nowrap; text-align: right; + cursor: pointer; } -.ui-autocomplete li.ui-state-focus { +/* Colors for the wplink toolbar autocomplete. */ +.ui-autocomplete .ui-state-focus { background-color: #ddd; - cursor: pointer; +} + +/* Colors for the tags autocomplete. */ +.wp-tags-autocomplete .ui-state-focus { + background-color: #0073aa; + color: #fff; } /*------------------------------------------------------------------------------ diff --git a/wp/wp-admin/css/forms-rtl.min.css b/wp/wp-admin/css/forms-rtl.min.css index 79cb014b..388b1082 100644 --- a/wp/wp-admin/css/forms-rtl.min.css +++ b/wp/wp-admin/css/forms-rtl.min.css @@ -1 +1 @@ -#pass-strength-result,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.meta-box-sortables select,p.submit{max-width:100%}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{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:50ms border-color ease-in-out;transition:50ms 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=number]{height:28px;line-height:1}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;resize:vertical}.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}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-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-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-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}.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}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 0 0 8px}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:right;margin-left:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-right:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#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.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}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=text].ui-autocomplete-loading,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{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 .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-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:#e5e5e5;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;-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-bookmarklet span:before{color:#72777c;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin: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:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0 0;font-weight:600}.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 .request-filesystem-credentials-action-buttons{text-align:left}.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}@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[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font: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,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=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}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.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}.options-general-php input[type=text].small-text{max-width:60px;margin:0}}@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%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-left:.5em}} \ No newline at end of file +#pass-strength-result,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.meta-box-sortables select,p.submit{max-width:100%}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{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:50ms border-color ease-in-out;transition:50ms 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=number]{height:28px;line-height:1}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}#pass1-text,.pw-weak,.show-password #pass1{display:none}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;resize:vertical}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-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-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-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;cursor:default}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}.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%}.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 0 0 8px}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:right;margin-left:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-right:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 1px 5px 5px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.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}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=text].ui-autocomplete-loading,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;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#ddd}.wp-tags-autocomplete .ui-state-focus{background-color:#0073aa;color:#fff}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:right;padding:20px 0 20px 10px;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-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:#e5e5e5;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;-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-bookmarklet span:before{color:#72777c;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin: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:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0 0;font-weight:600}.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 .request-filesystem-credentials-action-buttons{text-align:left}.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}@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[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font: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,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=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}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.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}.options-general-php input[type=text].small-text{max-width:60px;margin:0}}@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%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-left:.5em}} \ No newline at end of file diff --git a/wp/wp-admin/css/forms.css b/wp/wp-admin/css/forms.css index 15be606f..f0b1b372 100644 --- a/wp/wp-admin/css/forms.css +++ b/wp/wp-admin/css/forms.css @@ -204,6 +204,7 @@ textarea { .wp-admin input[type="file"] { padding: 3px 0; + cursor: pointer; } label { @@ -297,6 +298,7 @@ input[type="range"].disabled { background: none; -webkit-box-shadow: none; box-shadow: none; + cursor: default; } input[type="checkbox"]:disabled, @@ -384,7 +386,7 @@ textarea.large-text { width: 99%; } -input.regular-text { +.regular-text { width: 25em; } @@ -456,21 +458,6 @@ fieldset 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; @@ -607,11 +594,18 @@ ul#add-to-blog-users { padding: 4px 10px; white-space: nowrap; text-align: left; + cursor: pointer; } -.ui-autocomplete li.ui-state-focus { +/* Colors for the wplink toolbar autocomplete. */ +.ui-autocomplete .ui-state-focus { background-color: #ddd; - cursor: pointer; +} + +/* Colors for the tags autocomplete. */ +.wp-tags-autocomplete .ui-state-focus { + background-color: #0073aa; + color: #fff; } /*------------------------------------------------------------------------------ diff --git a/wp/wp-admin/css/forms.min.css b/wp/wp-admin/css/forms.min.css index 12ee61b4..d6de8555 100644 --- a/wp/wp-admin/css/forms.min.css +++ b/wp/wp-admin/css/forms.min.css @@ -1 +1 @@ -#pass-strength-result,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.meta-box-sortables select,p.submit{max-width:100%}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{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:50ms border-color ease-in-out;transition:50ms 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=number]{height:28px;line-height:1}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;resize:vertical}.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}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-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-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-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}.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}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:left;margin-right:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-left:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#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.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}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=text].ui-autocomplete-loading,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{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 .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-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:#e5e5e5;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;-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-bookmarklet span:before{color:#72777c;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin: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:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0 0;font-weight:600}.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 .request-filesystem-credentials-action-buttons{text-align:right}.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}@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[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font: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,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=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}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.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}.options-general-php input[type=text].small-text{max-width:60px;margin:0}}@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%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-right:.5em}} \ No newline at end of file +#pass-strength-result,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.meta-box-sortables select,p.submit{max-width:100%}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{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:50ms border-color ease-in-out;transition:50ms 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=number]{height:28px;line-height:1}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}#pass1-text,.pw-weak,.show-password #pass1{display:none}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;resize:vertical}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-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-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-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;cursor:default}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}.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%}.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:left;margin-right:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-left:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 1px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.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}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=text].ui-autocomplete-loading,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;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#ddd}.wp-tags-autocomplete .ui-state-focus{background-color:#0073aa;color:#fff}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-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:#e5e5e5;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;-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-bookmarklet span:before{color:#72777c;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin: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:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0 0;font-weight:600}.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 .request-filesystem-credentials-action-buttons{text-align:right}.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}@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[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font: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,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=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}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.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}.options-general-php input[type=text].small-text{max-width:60px;margin:0}}@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%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-right:.5em}} \ No newline at end of file diff --git a/wp/wp-admin/css/ie-rtl.css b/wp/wp-admin/css/ie-rtl.css index 739374a3..df19f457 100644 --- a/wp/wp-admin/css/ie-rtl.css +++ b/wp/wp-admin/css/ie-rtl.css @@ -221,8 +221,7 @@ table.fixed td { } #wpbody-content input.button, -#wpbody-content input.button-primary, -#wpbody-content input.button-secondary { +#wpbody-content input.button-primary { overflow: visible; } @@ -442,13 +441,17 @@ div#dashboard-widgets { padding-left: 1px; } -.tagchecklist span, .tagchecklist span a { +.tagchecklist > span, .tagchecklist .ntdelbutton { display: inline-block; display: block; } -.tablenav .button-secondary, -.nav .button-secondary { +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before { + outline: 1px solid #5b9dd9; +} + +.tablenav .button, +.nav .button { padding-top: 2px; padding-bottom: 2px; } @@ -507,7 +510,7 @@ table.ie-fixed { border-collapse: collapse; } -.tablenav a.button-secondary { +.tablenav a.button { display: inline-block; padding: 2px 5px; } diff --git a/wp/wp-admin/css/ie-rtl.min.css b/wp/wp-admin/css/ie-rtl.min.css index d96fbaa9..9535dae7 100644 --- a/wp/wp-admin/css/ie-rtl.min.css +++ b/wp/wp-admin/css/ie-rtl.min.css @@ -1 +1 @@ -#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}#wpbody-content .postbox,* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea,* html input{border:1px solid #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}.tablenav-pages .current-page{vertical-align:middle}#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{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 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 .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 +#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}#wpbody-content .postbox,* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea,* html input{border:1px solid #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{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 .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{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 .ntdelbutton,.tagchecklist>span{display:inline-block;display:block}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{outline:#5b9dd9 solid 1px}.nav .button,.tablenav .button{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}.subsubsub li{display:inline}a.post-state-format{text-indent:0;line-height:0;font-size:0}table.ie-fixed{table-layout:fixed}.widefat tfoot td,.widefat th,.widefat thead td,.widefat tr{margin-bottom:0;border-spacing:0}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 5px 0 0}.widefat tfoot .check-column,.widefat thead .check-column{padding-top:6px}.media.widefat tbody th.check-column,.widefat tbody th.check-column{padding:4px 0 0}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.inactive-sidebar .widget{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 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 .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/wp-admin/css/ie.css b/wp/wp-admin/css/ie.css index 90cf8f34..df8d7924 100644 --- a/wp/wp-admin/css/ie.css +++ b/wp/wp-admin/css/ie.css @@ -221,8 +221,7 @@ table.fixed td { } #wpbody-content input.button, -#wpbody-content input.button-primary, -#wpbody-content input.button-secondary { +#wpbody-content input.button-primary { overflow: visible; } @@ -442,13 +441,17 @@ div#dashboard-widgets { padding-right: 1px; } -.tagchecklist span, .tagchecklist span a { +.tagchecklist > span, .tagchecklist .ntdelbutton { display: inline-block; display: block; } -.tablenav .button-secondary, -.nav .button-secondary { +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before { + outline: 1px solid #5b9dd9; +} + +.tablenav .button, +.nav .button { padding-top: 2px; padding-bottom: 2px; } @@ -507,7 +510,7 @@ table.ie-fixed { border-collapse: collapse; } -.tablenav a.button-secondary { +.tablenav a.button { display: inline-block; padding: 2px 5px; } diff --git a/wp/wp-admin/css/ie.min.css b/wp/wp-admin/css/ie.min.css index 486502d0..5cbe8b99 100644 --- a/wp/wp-admin/css/ie.min.css +++ b/wp/wp-admin/css/ie.min.css @@ -1 +1 @@ -#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}#wpbody-content .postbox,* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea,* html input{border:1px solid #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}.tablenav-pages .current-page{vertical-align:middle}#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{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 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 .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 +#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}#wpbody-content .postbox,* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea,* html input{border:1px solid #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{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 .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{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 .ntdelbutton,.tagchecklist>span{display:inline-block;display:block}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{outline:#5b9dd9 solid 1px}.nav .button,.tablenav .button{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}.subsubsub li{display:inline}a.post-state-format{text-indent:0;line-height:0;font-size:0}table.ie-fixed{table-layout:fixed}.widefat tfoot td,.widefat th,.widefat thead td,.widefat tr{margin-bottom:0;border-spacing:0}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 0 0 5px}.widefat tfoot .check-column,.widefat thead .check-column{padding-top:6px}.media.widefat tbody th.check-column,.widefat tbody th.check-column{padding:4px 0 0}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.inactive-sidebar .widget{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 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 .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/wp-admin/css/install-rtl.css b/wp/wp-admin/css/install-rtl.css index 43378fc9..8f29fd28 100644 --- a/wp/wp-admin/css/install-rtl.css +++ b/wp/wp-admin/css/install-rtl.css @@ -443,7 +443,7 @@ body.language-chooser { margin-left: 15px; } -.button-secondary.hide-if-no-js, +.button.hide-if-no-js, .hide-if-no-js { display: none; } diff --git a/wp/wp-admin/css/install-rtl.min.css b/wp/wp-admin/css/install-rtl.min.css index d05100c2..a52e5dd8 100644 --- a/wp/wp-admin/css/install-rtl.min.css +++ b/wp/wp-admin/css/install-rtl.min.css @@ -1 +1 @@ -a img,abbr,fieldset{border:0}#logo,h1,h2{padding:0 0 7px}#logo a,.form-table th p,h1,h2{font-weight:400}html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;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: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}h1,h2{border-bottom:1px solid #ddd;clear:both;color:#666;font-size:24px}h3{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}input,submit,textarea{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}dl,ol,ul{padding:5px 22px 5px 5px}abbr{font-variant:normal}fieldset{padding:0;margin:0}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:#444;height:84px;font-size:20px;line-height:1.3em;margin:-130px auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#pass1-text,.pw-weak,.show-password #pass1{display:none}#logo a:focus{-webkit-box-shadow:none;box-shadow:none}.step{margin:20px 0 15px}.step,th{text-align:right;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;font-size:14px;line-height:33px;vertical-align:middle}.form-table td,.form-table th{padding:10px 0 10px 20px;vertical-align:top;font-size:14px}textarea{border:1px solid #ddd;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}.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,.form-table.install-success th{vertical-align:middle;padding:16px 0 16px 20px}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.wp-hide-pw>.dashicons{line-height:inherit}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 0 5px 5px;padding:3px 5px;text-align:center;width:218px;-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-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-right:4px solid #dc3232;padding:.7em .6em;background-color:#fbeaea}#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;vertical-align:middle;margin-left:15px}.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 +a img,abbr,fieldset{border:0}#logo,h1,h2{padding:0 0 7px}#logo a,.form-table th p,h1,h2{font-weight:400}html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;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: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}h1,h2{border-bottom:1px solid #ddd;clear:both;color:#666;font-size:24px}h3{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}input,submit,textarea{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}dl,ol,ul{padding:5px 22px 5px 5px}abbr{font-variant:normal}fieldset{padding:0;margin:0}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:#444;height:84px;font-size:20px;line-height:1.3em;margin:-130px auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#pass1-text,.pw-weak,.show-password #pass1{display:none}#logo a:focus{-webkit-box-shadow:none;box-shadow:none}.step{margin:20px 0 15px}.step,th{text-align:right;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;font-size:14px;line-height:33px;vertical-align:middle}.form-table td,.form-table th{padding:10px 0 10px 20px;vertical-align:top;font-size:14px}textarea{border:1px solid #ddd;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}.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,.form-table.install-success th{vertical-align:middle;padding:16px 0 16px 20px}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.wp-hide-pw>.dashicons{line-height:inherit}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 0 5px 5px;padding:3px 5px;text-align:center;width:218px;-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-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-right:4px solid #dc3232;padding:.7em .6em;background-color:#fbeaea}#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;vertical-align:middle;margin-left:15px}.button.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}} \ No newline at end of file diff --git a/wp/wp-admin/css/install.css b/wp/wp-admin/css/install.css index d1db4ec6..9de99ee3 100644 --- a/wp/wp-admin/css/install.css +++ b/wp/wp-admin/css/install.css @@ -443,7 +443,7 @@ body.language-chooser { margin-right: 15px; } -.button-secondary.hide-if-no-js, +.button.hide-if-no-js, .hide-if-no-js { display: none; } diff --git a/wp/wp-admin/css/install.min.css b/wp/wp-admin/css/install.min.css index ceac7516..714109f2 100644 --- a/wp/wp-admin/css/install.min.css +++ b/wp/wp-admin/css/install.min.css @@ -1 +1 @@ -a img,abbr,fieldset{border:0}#logo,h1,h2{padding:0 0 7px}#logo a,.form-table th p,h1,h2{font-weight:400}html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;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: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}h1,h2{border-bottom:1px solid #ddd;clear:both;color:#666;font-size:24px}h3{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}input,submit,textarea{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}dl,ol,ul{padding:5px 5px 5px 22px}abbr{font-variant:normal}fieldset{padding:0;margin:0}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:#444;height:84px;font-size:20px;line-height:1.3em;margin:-130px auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#pass1-text,.pw-weak,.show-password #pass1{display:none}#logo a:focus{-webkit-box-shadow:none;box-shadow:none}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;font-size:14px;line-height:33px;vertical-align:middle}.form-table td,.form-table th{padding:10px 20px 10px 0;vertical-align:top;font-size:14px}textarea{border:1px solid #ddd;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}.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,.form-table.install-success th{vertical-align:middle;padding:16px 20px 16px 0}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.wp-hide-pw>.dashicons{line-height:inherit}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 0;padding:3px 5px;text-align:center;width:218px;-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-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-left:4px solid #dc3232;padding:.7em .6em;background-color:#fbeaea}#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;vertical-align:middle;margin-right:15px}.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 +a img,abbr,fieldset{border:0}#logo,h1,h2{padding:0 0 7px}#logo a,.form-table th p,h1,h2{font-weight:400}html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;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: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}h1,h2{border-bottom:1px solid #ddd;clear:both;color:#666;font-size:24px}h3{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}input,submit,textarea{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}dl,ol,ul{padding:5px 5px 5px 22px}abbr{font-variant:normal}fieldset{padding:0;margin:0}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:#444;height:84px;font-size:20px;line-height:1.3em;margin:-130px auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#pass1-text,.pw-weak,.show-password #pass1{display:none}#logo a:focus{-webkit-box-shadow:none;box-shadow:none}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;font-size:14px;line-height:33px;vertical-align:middle}.form-table td,.form-table th{padding:10px 20px 10px 0;vertical-align:top;font-size:14px}textarea{border:1px solid #ddd;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}.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,.form-table.install-success th{vertical-align:middle;padding:16px 20px 16px 0}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.wp-hide-pw>.dashicons{line-height:inherit}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 0;padding:3px 5px;text-align:center;width:218px;-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-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-left:4px solid #dc3232;padding:.7em .6em;background-color:#fbeaea}#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;vertical-align:middle;margin-right:15px}.button.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}} \ No newline at end of file diff --git a/wp/wp-admin/css/list-tables-rtl.css b/wp/wp-admin/css/list-tables-rtl.css index 079c3c34..250be23b 100644 --- a/wp/wp-admin/css/list-tables-rtl.css +++ b/wp/wp-admin/css/list-tables-rtl.css @@ -555,15 +555,13 @@ tr.wp-locked .locked-indicator { width: 16px; } -tr.wp-locked .locked-indicator:before { +tr.wp-locked .locked-indicator-icon: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; } @@ -581,7 +579,7 @@ tr .locked-info { } tr.wp-locked .locked-info { - margin-top: 8px; + margin-top: 4px; height: auto; opacity: 1; } @@ -656,6 +654,7 @@ th.asc a:focus span.sorting-indicator { margin-right: 2px; } +.tablenav a.button, .tablenav a.button-secondary { display: block; margin: 3px 0 0 8px; diff --git a/wp/wp-admin/css/list-tables-rtl.min.css b/wp/wp-admin/css/list-tables-rtl.min.css index 2523af05..cc68630d 100644 --- a/wp/wp-admin/css/list-tables-rtl.min.css +++ b/wp/wp-admin/css/list-tables-rtl.min.css @@ -1 +1 @@ -.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}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #ccc}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#555d66}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;overflow:hidden;text-align:center}#replysubmit .button{margin-left:5px}#replysubmit .error{color:red;line-height:21px;text-align:center}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#edithead .inside{float:right;padding:3px 5px 2px 0;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;-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:#f5f5f5}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fef7f1}#the-comment-list .unapproved th.check-column{border-right:4px solid #d54e21}#the-comment-list .unapproved th.check-column input{margin-right:4px}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}#the-comment-list td,#the-comment-list th{-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;speak:none;display:inline-block;padding:0;top:4px;right:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-date,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-posts{width:74px}.fixed .column-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%}#comments-form .fixed .column-date{width:14%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-right:7px}.sorting-indicator:before{content:"\f142";font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0;top:-4px;right:-8px;line-height:10px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.column-comments .sorting-indicator:before{top:0;right:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;left:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{-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:#444;content:"\f140";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;overflow:hidden;padding:8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:right;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages a,.tablenav-pages-navspan{font-weight:600;padding:0 2px}.tablenav-pages .current-page{margin:0 0 0 2px;padding-bottom:5px;font-size:13px;text-align:center}.tablenav .total-pages{margin-left:2px}.tablenav #table-paging{margin-right:2px}.tablenav a.button-secondary{display:block;margin:3px 0 0 8px}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:left;height:28px;margin-top:3px;cursor:default;color:#555}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a,.tablenav-pages-navspan{display:inline-block;min-width:17px;border:1px solid #ccc;padding:3px 5px 7px;background:#e5e5e5;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#ddd;background:#f7f7f7;color:#a0a5aa}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;-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{overflow:hidden;padding:2px 0 0 8px}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-left:20px}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#0073aa}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#00a0d2}.tablenav .view-switch{float:left;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 2px 0 8px}.media-toolbar.wp-filter .view-switch{margin:0 2px 0 12px}.view-switch a{float:right;width:28px;height:28px;text-align:center;line-height:24px;text-decoration:none}.view-switch a:before{color:#b4b9be;display:inline-block;font: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;position:relative;right:-9999em}.plugins,.plugins td,.plugins th,.row-actions .network_active,.row-actions .network_only{color:#000}.rtl .row-actions a{display:inline-block}.comment-item:hover .row-actions,.mobile .row-actions,.no-js .row-actions,.row-actions.visible,tr:hover .row-actions{position:static}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:right;margin:0;padding:0;width:100%}#wpbody-content .inline-edit-row fieldset .inline-edit-col,tr.inline-edit-row td{padding:0 .5em}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em .5em 0;line-height:2.5;font-weight:600}#the-list #bulk-edit.inline-edit-row .inline-edit-legend{padding:.2em .5em}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0;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 .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset .inline-edit-date{float:right}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.3em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}ul.cat-checklist{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}.quick-edit-row-post fieldset label.inline-edit-status{float:right}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;float:right;height:18px;margin:0 -2px 0 3px;overflow:hidden;position:relative;width:20px}#bulk-titles div a:before{position:relative;top:-3px}.plugins tbody,.plugins tbody th.check-column{padding:8px 2px 0 0}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}.updates-table .plugin-title p{margin-top:0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-right:6px}.plugins 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-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}.plugin-update-tr.active td,.plugins .active th.check-column{border-right:4px solid #00a0d2}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-left:12px;white-space:nowrap}.updates-table-screenshot{float:right;padding:0 0 5px 10px}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugins .plugin-update-tr .plugin-update{-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;padding:0}.plugins .plugin-update-tr .notice,.plugins .plugin-update-tr div[class=update-message]{margin:5px 40px 15px 20px}.plugins .notice p{margin:.5em 0}.plugin-card .update-now:before{color:#f56e28;content:"\f463";display:inline-block;font:400 20px/1 dashicons;margin:3px -2px 0 5px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .updating-message:before{content:"\f463";-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{color:#79ba49;content:"\f147"}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{float:right;margin:0 8px 16px;width:48.5%;width:-webkit-calc(50% - 8px);width:calc(50% - 8px);background-color:#fff;border:1px solid #ddd;-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 h3{margin:0 0 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-right:148px;margin-left:120px}.plugin-card .action-links{position:absolute;top:20px;left:20px;width:120px}.plugin-action-buttons{clear:left;float:left;margin-right:2em;margin-bottom:1em;text-align:left}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#fafafa;border-top:1px solid #ddd;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-right:16px;-webkit-box-shadow:0 -1px 0 #ddd;box-shadow:0 -1px 0 #ddd}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:23px}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:right;clear:right;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:left;float:left;clear:left;width:65%;width:-webkit-calc(100% - 180px);width:calc(100% - 180px)}.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;width:128px;height:128px;margin:0 0 20px 20px}.no-plugin-results{color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table .site-deleted,.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table .site-spammed,.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table .site-archived,.wp-list-table tr.site-archived{background:#ffebe8}.wp-list-table .site-mature,.wp-list-table tr.site-mature{background:#fecac2}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-right:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:right}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-left:20px}.plugin-card .desc,.plugin-card .name{margin-left:0}.plugin-card .desc p:first-of-type{margin-top:0}.fixed .column-date{width:14%}}@media screen and (max-width:782px){.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{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 11px 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 th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell;width:35px}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;display:block;width:auto!important}.wp-list-table td.column-primary{padding-left:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 35% 3px 8px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;right:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:right}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{-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}#edithead label,.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.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 td.check-column,.widefat thead td.check-column{padding-top:10px}.widefat *{word-wrap:normal}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;-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}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset label.inline-edit-tags{padding:0 .5em}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-right:0}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{width:3em}.inline-edit-row fieldset input[name=aa]{width:4.5em}.inline-edit-row .inline-edit-or{margin:0 0 0 6px}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:right;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#bulk-titles div{margin:.8em .3em}.plugin-card,.plugin-update-tr .update-message,.plugins .plugin-update-tr .update-message{margin-right:0}#bulk-titles div a{height:22px}#wpbody-content .updates-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}#wpbody-content .wp-list-table.plugins .plugin-title,#wpbody-content .wp-list-table.plugins .theme-title{padding-left:12px;white-space:normal}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{-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 #the-list .plugin-update-tr .plugin-update{border-right:none}.plugins .active.update+.plugin-update-tr:before{background-color:#f7fcfe;border-right:4px solid #00a0d2}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong{font-size:1.4em;line-height:1.5}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}table.plugin-install #the-list td{-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%}}@media screen and (max-width:480px){.tablenav-pages .current-page{margin:0}.tablenav-pages .tablenav-paging-text{float:right;width:100%;padding-top:.5em}} \ No newline at end of file +.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}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #ccc}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#555d66}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;overflow:hidden;text-align:center}#replysubmit .button{margin-left:5px}#replysubmit .error{color:red;line-height:21px;text-align:center}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#edithead .inside{float:right;padding:3px 5px 2px 0;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;-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:#f5f5f5}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fef7f1}#the-comment-list .unapproved th.check-column{border-right:4px solid #d54e21}#the-comment-list .unapproved th.check-column input{margin-right:4px}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}#the-comment-list td,#the-comment-list th{-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;speak:none;display:inline-block;padding:0;top:4px;right:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-date,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-posts{width:74px}.fixed .column-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%}#comments-form .fixed .column-date{width:14%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-right:7px}.sorting-indicator:before{content:"\f142";font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0;top:-4px;right:-8px;line-height:10px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.column-comments .sorting-indicator:before{top:0;right:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;left:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{-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:#444;content:"\f140";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-icon:before{color:#82878c;content:"\f160";display:inline-block;font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}tr .locked-info{height:0;opacity:0}tr.wp-locked .locked-info{margin-top:4px;height:auto;opacity:1}.locked-text{vertical-align:top}tr.locked-info,tr.wp-locked .locked-info{-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;overflow:hidden;padding:8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:right;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages a,.tablenav-pages-navspan{font-weight:600;padding:0 2px}.tablenav-pages .current-page{margin:0 0 0 2px;padding-bottom:5px;font-size:13px;text-align:center}.tablenav .total-pages{margin-left:2px}.tablenav #table-paging{margin-right:2px}.tablenav a.button,.tablenav a.button-secondary{display:block;margin:3px 0 0 8px}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:left;height:28px;margin-top:3px;cursor:default;color:#555}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a,.tablenav-pages-navspan{display:inline-block;min-width:17px;border:1px solid #ccc;padding:3px 5px 7px;background:#e5e5e5;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#ddd;background:#f7f7f7;color:#a0a5aa}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;-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{overflow:hidden;padding:2px 0 0 8px}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-left:20px}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#0073aa}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#00a0d2}.tablenav .view-switch{float:left;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 2px 0 8px}.media-toolbar.wp-filter .view-switch{margin:0 2px 0 12px}.view-switch a{float:right;width:28px;height:28px;text-align:center;line-height:24px;text-decoration:none}.view-switch a:before{color:#b4b9be;display:inline-block;font: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;position:relative;right:-9999em}.plugins,.plugins td,.plugins th,.row-actions .network_active,.row-actions .network_only{color:#000}.rtl .row-actions a{display:inline-block}.comment-item:hover .row-actions,.mobile .row-actions,.no-js .row-actions,.row-actions.visible,tr:hover .row-actions{position:static}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:right;margin:0;padding:0;width:100%}#wpbody-content .inline-edit-row fieldset .inline-edit-col,tr.inline-edit-row td{padding:0 .5em}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em .5em 0;line-height:2.5;font-weight:600}#the-list #bulk-edit.inline-edit-row .inline-edit-legend{padding:.2em .5em}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0;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 .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset .inline-edit-date{float:right}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.3em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}ul.cat-checklist{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}.quick-edit-row-post fieldset label.inline-edit-status{float:right}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;float:right;height:18px;margin:0 -2px 0 3px;overflow:hidden;position:relative;width:20px}#bulk-titles div a:before{position:relative;top:-3px}.plugins tbody,.plugins tbody th.check-column{padding:8px 2px 0 0}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}.updates-table .plugin-title p{margin-top:0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-right:6px}.plugins 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-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}.plugin-update-tr.active td,.plugins .active th.check-column{border-right:4px solid #00a0d2}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-left:12px;white-space:nowrap}.updates-table-screenshot{float:right;padding:0 0 5px 10px}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugins .plugin-update-tr .plugin-update{-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;padding:0}.plugins .plugin-update-tr .notice,.plugins .plugin-update-tr div[class=update-message]{margin:5px 40px 15px 20px}.plugins .notice p{margin:.5em 0}.plugin-card .update-now:before{color:#f56e28;content:"\f463";display:inline-block;font:400 20px/1 dashicons;margin:3px -2px 0 5px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .updating-message:before{content:"\f463";-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{color:#79ba49;content:"\f147"}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{float:right;margin:0 8px 16px;width:48.5%;width:-webkit-calc(50% - 8px);width:calc(50% - 8px);background-color:#fff;border:1px solid #ddd;-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 h3{margin:0 0 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-right:148px;margin-left:120px}.plugin-card .action-links{position:absolute;top:20px;left:20px;width:120px}.plugin-action-buttons{clear:left;float:left;margin-right:2em;margin-bottom:1em;text-align:left}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#fafafa;border-top:1px solid #ddd;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-right:16px;-webkit-box-shadow:0 -1px 0 #ddd;box-shadow:0 -1px 0 #ddd}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:23px}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:right;clear:right;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:left;float:left;clear:left;width:65%;width:-webkit-calc(100% - 180px);width:calc(100% - 180px)}.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;width:128px;height:128px;margin:0 0 20px 20px}.no-plugin-results{color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table .site-deleted,.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table .site-spammed,.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table .site-archived,.wp-list-table tr.site-archived{background:#ffebe8}.wp-list-table .site-mature,.wp-list-table tr.site-mature{background:#fecac2}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-right:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:right}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-left:20px}.plugin-card .desc,.plugin-card .name{margin-left:0}.plugin-card .desc p:first-of-type{margin-top:0}.fixed .column-date{width:14%}}@media screen and (max-width:782px){.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{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 11px 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 th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell;width:35px}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;display:block;width:auto!important}.wp-list-table td.column-primary{padding-left:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 35% 3px 8px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;right:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:right}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{-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}#edithead label,.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.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 td.check-column,.widefat thead td.check-column{padding-top:10px}.widefat *{word-wrap:normal}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;-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}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset label.inline-edit-tags{padding:0 .5em}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-right:0}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{width:3em}.inline-edit-row fieldset input[name=aa]{width:4.5em}.inline-edit-row .inline-edit-or{margin:0 0 0 6px}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:right;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#bulk-titles div{margin:.8em .3em}.plugin-card,.plugin-update-tr .update-message,.plugins .plugin-update-tr .update-message{margin-right:0}#bulk-titles div a{height:22px}#wpbody-content .updates-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}#wpbody-content .wp-list-table.plugins .plugin-title,#wpbody-content .wp-list-table.plugins .theme-title{padding-left:12px;white-space:normal}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{-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 #the-list .plugin-update-tr .plugin-update{border-right:none}.plugins .active.update+.plugin-update-tr:before{background-color:#f7fcfe;border-right:4px solid #00a0d2}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong{font-size:1.4em;line-height:1.5}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}table.plugin-install #the-list td{-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%}}@media screen and (max-width:480px){.tablenav-pages .current-page{margin:0}.tablenav-pages .tablenav-paging-text{float:right;width:100%;padding-top:.5em}} \ No newline at end of file diff --git a/wp/wp-admin/css/list-tables.css b/wp/wp-admin/css/list-tables.css index b66f0c0d..05e5f82a 100644 --- a/wp/wp-admin/css/list-tables.css +++ b/wp/wp-admin/css/list-tables.css @@ -555,15 +555,13 @@ tr.wp-locked .locked-indicator { width: 16px; } -tr.wp-locked .locked-indicator:before { +tr.wp-locked .locked-indicator-icon: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; } @@ -581,7 +579,7 @@ tr .locked-info { } tr.wp-locked .locked-info { - margin-top: 8px; + margin-top: 4px; height: auto; opacity: 1; } @@ -656,6 +654,7 @@ th.asc a:focus span.sorting-indicator { margin-left: 2px; } +.tablenav a.button, .tablenav a.button-secondary { display: block; margin: 3px 8px 0 0; diff --git a/wp/wp-admin/css/list-tables.min.css b/wp/wp-admin/css/list-tables.min.css index cb07782a..22cd6f0e 100644 --- a/wp/wp-admin/css/list-tables.min.css +++ b/wp/wp-admin/css/list-tables.min.css @@ -1 +1 @@ -.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}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #ccc}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#555d66}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;overflow:hidden;text-align:center}#replysubmit .button{margin-right:5px}#replysubmit .error{color:red;line-height:21px;text-align:center}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;-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:#f5f5f5}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fef7f1}#the-comment-list .unapproved th.check-column{border-left:4px solid #d54e21}#the-comment-list .unapproved th.check-column input{margin-left:4px}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}#the-comment-list td,#the-comment-list th{-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;speak:none;display:inline-block;padding:0;top:4px;left:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-date,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-posts{width:74px}.fixed .column-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%}#comments-form .fixed .column-date{width:14%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-left:7px}.sorting-indicator:before{content:"\f142";font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0;top:-4px;left:-8px;line-height:10px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.column-comments .sorting-indicator:before{top:0;left:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;right:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{-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:#444;content:"\f140";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;overflow:hidden;padding:8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:left;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages a,.tablenav-pages-navspan{font-weight:600;padding:0 2px}.tablenav-pages .current-page{margin:0 2px 0 0;padding-bottom:5px;font-size:13px;text-align:center}.tablenav .total-pages{margin-right:2px}.tablenav #table-paging{margin-left:2px}.tablenav a.button-secondary{display:block;margin:3px 8px 0 0}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:right;height:28px;margin-top:3px;cursor:default;color:#555}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a,.tablenav-pages-navspan{display:inline-block;min-width:17px;border:1px solid #ccc;padding:3px 5px 7px;background:#e5e5e5;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#ddd;background:#f7f7f7;color:#a0a5aa}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;-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{overflow:hidden;padding:2px 8px 0 0}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-right:20px}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#0073aa}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#00a0d2}.tablenav .view-switch{float:right;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 8px 0 2px}.media-toolbar.wp-filter .view-switch{margin:0 12px 0 2px}.view-switch a{float:left;width:28px;height:28px;text-align:center;line-height:24px;text-decoration:none}.view-switch a:before{color:#b4b9be;display:inline-block;font: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;position:relative;left:-9999em}.plugins,.plugins td,.plugins th,.row-actions .network_active,.row-actions .network_only{color:#000}.rtl .row-actions a{display:inline-block}.comment-item:hover .row-actions,.mobile .row-actions,.no-js .row-actions,.row-actions.visible,tr:hover .row-actions{position:static}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%}#wpbody-content .inline-edit-row fieldset .inline-edit-col,tr.inline-edit-row td{padding:0 .5em}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em .5em 0;line-height:2.5;font-weight:600}#the-list #bulk-edit.inline-edit-row .inline-edit-legend{padding:.2em .5em}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0;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 .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset .inline-edit-date{float:left}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.3em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}ul.cat-checklist{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}.quick-edit-row-post fieldset label.inline-edit-status{float:left}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;float:left;height:18px;margin:0 3px 0 -2px;overflow:hidden;position:relative;width:20px}#bulk-titles div a:before{position:relative;top:-3px}.plugins tbody,.plugins tbody th.check-column{padding:8px 0 0 2px}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}.updates-table .plugin-title p{margin-top:0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-left:6px}.plugins 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-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}.plugin-update-tr.active td,.plugins .active th.check-column{border-left:4px solid #00a0d2}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap}.updates-table-screenshot{float:left;padding:0 10px 5px 0}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugins .plugin-update-tr .plugin-update{-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;padding:0}.plugins .plugin-update-tr .notice,.plugins .plugin-update-tr div[class=update-message]{margin:5px 20px 15px 40px}.plugins .notice p{margin:.5em 0}.plugin-card .update-now:before{color:#f56e28;content:"\f463";display:inline-block;font:400 20px/1 dashicons;margin:3px 5px 0 -2px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .updating-message:before{content:"\f463";-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{color:#79ba49;content:"\f147"}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{float:left;margin:0 8px 16px;width:48.5%;width:-webkit-calc(50% - 8px);width:calc(50% - 8px);background-color:#fff;border:1px solid #ddd;-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 h3{margin:0 0 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-left:148px;margin-right:120px}.plugin-card .action-links{position:absolute;top:20px;right:20px;width:120px}.plugin-action-buttons{clear:right;float:right;margin-left:2em;margin-bottom:1em;text-align:right}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#fafafa;border-top:1px solid #ddd;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-left:16px;-webkit-box-shadow:0 -1px 0 #ddd;box-shadow:0 -1px 0 #ddd}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:23px}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:left;clear:left;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:right;float:right;clear:right;width:65%;width:-webkit-calc(100% - 180px);width:calc(100% - 180px)}.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;width:128px;height:128px;margin:0 20px 20px 0}.no-plugin-results{color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table .site-deleted,.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table .site-spammed,.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table .site-archived,.wp-list-table tr.site-archived{background:#ffebe8}.wp-list-table .site-mature,.wp-list-table tr.site-mature{background:#fecac2}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-left:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:left}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-right:20px}.plugin-card .desc,.plugin-card .name{margin-right:0}.plugin-card .desc p:first-of-type{margin-top:0}.fixed .column-date{width:14%}}@media screen and (max-width:782px){.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{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 11px 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 th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell;width:35px}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;display:block;width:auto!important}.wp-list-table td.column-primary{padding-right:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 8px 3px 35%}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;left:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:left}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{-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}#edithead label,.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.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 td.check-column,.widefat thead td.check-column{padding-top:10px}.widefat *{word-wrap:normal}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;-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}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset label.inline-edit-tags{padding:0 .5em}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-left:0}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{width:3em}.inline-edit-row fieldset input[name=aa]{width:4.5em}.inline-edit-row .inline-edit-or{margin:0 6px 0 0}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:left;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#bulk-titles div{margin:.8em .3em}.plugin-card,.plugin-update-tr .update-message,.plugins .plugin-update-tr .update-message{margin-left:0}#bulk-titles div a{height:22px}#wpbody-content .updates-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}#wpbody-content .wp-list-table.plugins .plugin-title,#wpbody-content .wp-list-table.plugins .theme-title{padding-right:12px;white-space:normal}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{-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 #the-list .plugin-update-tr .plugin-update{border-left:none}.plugins .active.update+.plugin-update-tr:before{background-color:#f7fcfe;border-left:4px solid #00a0d2}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong{font-size:1.4em;line-height:1.5}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}table.plugin-install #the-list td{-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%}}@media screen and (max-width:480px){.tablenav-pages .current-page{margin:0}.tablenav-pages .tablenav-paging-text{float:left;width:100%;padding-top:.5em}} \ No newline at end of file +.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}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #ccc}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#555d66}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;overflow:hidden;text-align:center}#replysubmit .button{margin-right:5px}#replysubmit .error{color:red;line-height:21px;text-align:center}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;-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:#f5f5f5}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fef7f1}#the-comment-list .unapproved th.check-column{border-left:4px solid #d54e21}#the-comment-list .unapproved th.check-column input{margin-left:4px}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}#the-comment-list td,#the-comment-list th{-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;speak:none;display:inline-block;padding:0;top:4px;left:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-date,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-posts{width:74px}.fixed .column-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%}#comments-form .fixed .column-date{width:14%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-left:7px}.sorting-indicator:before{content:"\f142";font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0;top:-4px;left:-8px;line-height:10px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.column-comments .sorting-indicator:before{top:0;left:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;right:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{-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:#444;content:"\f140";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-icon:before{color:#82878c;content:"\f160";display:inline-block;font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}tr .locked-info{height:0;opacity:0}tr.wp-locked .locked-info{margin-top:4px;height:auto;opacity:1}.locked-text{vertical-align:top}tr.locked-info,tr.wp-locked .locked-info{-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;overflow:hidden;padding:8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:left;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages a,.tablenav-pages-navspan{font-weight:600;padding:0 2px}.tablenav-pages .current-page{margin:0 2px 0 0;padding-bottom:5px;font-size:13px;text-align:center}.tablenav .total-pages{margin-right:2px}.tablenav #table-paging{margin-left:2px}.tablenav a.button,.tablenav a.button-secondary{display:block;margin:3px 8px 0 0}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:right;height:28px;margin-top:3px;cursor:default;color:#555}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a,.tablenav-pages-navspan{display:inline-block;min-width:17px;border:1px solid #ccc;padding:3px 5px 7px;background:#e5e5e5;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#ddd;background:#f7f7f7;color:#a0a5aa}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;-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{overflow:hidden;padding:2px 8px 0 0}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-right:20px}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#0073aa}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#00a0d2}.tablenav .view-switch{float:right;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 8px 0 2px}.media-toolbar.wp-filter .view-switch{margin:0 12px 0 2px}.view-switch a{float:left;width:28px;height:28px;text-align:center;line-height:24px;text-decoration:none}.view-switch a:before{color:#b4b9be;display:inline-block;font: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;position:relative;left:-9999em}.plugins,.plugins td,.plugins th,.row-actions .network_active,.row-actions .network_only{color:#000}.rtl .row-actions a{display:inline-block}.comment-item:hover .row-actions,.mobile .row-actions,.no-js .row-actions,.row-actions.visible,tr:hover .row-actions{position:static}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%}#wpbody-content .inline-edit-row fieldset .inline-edit-col,tr.inline-edit-row td{padding:0 .5em}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em .5em 0;line-height:2.5;font-weight:600}#the-list #bulk-edit.inline-edit-row .inline-edit-legend{padding:.2em .5em}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0;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 .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset .inline-edit-date{float:left}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.3em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}ul.cat-checklist{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}.quick-edit-row-post fieldset label.inline-edit-status{float:left}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;float:left;height:18px;margin:0 3px 0 -2px;overflow:hidden;position:relative;width:20px}#bulk-titles div a:before{position:relative;top:-3px}.plugins tbody,.plugins tbody th.check-column{padding:8px 0 0 2px}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}.updates-table .plugin-title p{margin-top:0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-left:6px}.plugins 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-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}.plugin-update-tr.active td,.plugins .active th.check-column{border-left:4px solid #00a0d2}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap}.updates-table-screenshot{float:left;padding:0 10px 5px 0}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugins .plugin-update-tr .plugin-update{-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;padding:0}.plugins .plugin-update-tr .notice,.plugins .plugin-update-tr div[class=update-message]{margin:5px 20px 15px 40px}.plugins .notice p{margin:.5em 0}.plugin-card .update-now:before{color:#f56e28;content:"\f463";display:inline-block;font:400 20px/1 dashicons;margin:3px 5px 0 -2px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .updating-message:before{content:"\f463";-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{color:#79ba49;content:"\f147"}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{float:left;margin:0 8px 16px;width:48.5%;width:-webkit-calc(50% - 8px);width:calc(50% - 8px);background-color:#fff;border:1px solid #ddd;-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 h3{margin:0 0 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-left:148px;margin-right:120px}.plugin-card .action-links{position:absolute;top:20px;right:20px;width:120px}.plugin-action-buttons{clear:right;float:right;margin-left:2em;margin-bottom:1em;text-align:right}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#fafafa;border-top:1px solid #ddd;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-left:16px;-webkit-box-shadow:0 -1px 0 #ddd;box-shadow:0 -1px 0 #ddd}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:23px}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:left;clear:left;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:right;float:right;clear:right;width:65%;width:-webkit-calc(100% - 180px);width:calc(100% - 180px)}.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;width:128px;height:128px;margin:0 20px 20px 0}.no-plugin-results{color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table .site-deleted,.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table .site-spammed,.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table .site-archived,.wp-list-table tr.site-archived{background:#ffebe8}.wp-list-table .site-mature,.wp-list-table tr.site-mature{background:#fecac2}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-left:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:left}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-right:20px}.plugin-card .desc,.plugin-card .name{margin-right:0}.plugin-card .desc p:first-of-type{margin-top:0}.fixed .column-date{width:14%}}@media screen and (max-width:782px){.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{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 11px 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 th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell;width:35px}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;display:block;width:auto!important}.wp-list-table td.column-primary{padding-right:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 8px 3px 35%}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;left:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:left}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{-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}#edithead label,.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.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 td.check-column,.widefat thead td.check-column{padding-top:10px}.widefat *{word-wrap:normal}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;-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}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset label.inline-edit-tags{padding:0 .5em}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-left:0}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{width:3em}.inline-edit-row fieldset input[name=aa]{width:4.5em}.inline-edit-row .inline-edit-or{margin:0 6px 0 0}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:left;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#bulk-titles div{margin:.8em .3em}.plugin-card,.plugin-update-tr .update-message,.plugins .plugin-update-tr .update-message{margin-left:0}#bulk-titles div a{height:22px}#wpbody-content .updates-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}#wpbody-content .wp-list-table.plugins .plugin-title,#wpbody-content .wp-list-table.plugins .theme-title{padding-right:12px;white-space:normal}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{-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 #the-list .plugin-update-tr .plugin-update{border-left:none}.plugins .active.update+.plugin-update-tr:before{background-color:#f7fcfe;border-left:4px solid #00a0d2}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong{font-size:1.4em;line-height:1.5}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}table.plugin-install #the-list td{-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%}}@media screen and (max-width:480px){.tablenav-pages .current-page{margin:0}.tablenav-pages .tablenav-paging-text{float:left;width:100%;padding-top:.5em}} \ No newline at end of file diff --git a/wp/wp-admin/css/login-rtl.css b/wp/wp-admin/css/login-rtl.css index c870e28c..a895b1c5 100644 --- a/wp/wp-admin/css/login-rtl.css +++ b/wp/wp-admin/css/login-rtl.css @@ -216,19 +216,6 @@ p { width: 100%; } -.mobile #login { - padding: 20px 0; -} - -.mobile #login form { - margin-right: 0; -} - -.mobile #login #nav, -.mobile #login #backtoblog { - margin-right: 8px; -} - body.interim-login { height: auto; } @@ -255,6 +242,12 @@ body.interim-login { width: device-width; } +@media screen and ( max-height: 550px ) { + #login { + padding: 20px 0; + } +} + @media screen and ( max-width: 782px ) { .interim-login input[type=checkbox] { height: 16px; diff --git a/wp/wp-admin/css/login-rtl.min.css b/wp/wp-admin/css/login-rtl.min.css index 7e116e62..64b36fa9 100644 --- a/wp/wp-admin/css/login-rtl.min.css +++ b/wp/wp-admin/css/login-rtl.min.css @@ -1 +1 @@ -#pass-strength-result,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.meta-box-sortables select,p.submit{max-width:100%}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{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:50ms border-color ease-in-out;transition:50ms 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=number]{height:28px;line-height:1}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;resize:vertical}.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}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-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-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-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}.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}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 0 0 8px}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:right;margin-left:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-right:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#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.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}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=text].ui-autocomplete-loading,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{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 .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-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{overflow:hidden;font-weight:400}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e5e5e5;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;-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-bookmarklet span:before{color:#72777c;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin: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:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0 0;font-weight:600}.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 .request-filesystem-credentials-action-buttons{text-align:left}.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}@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[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font: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,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=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}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.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}.options-general-php input[type=text].small-text{max-width:60px;margin:0}}.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%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-left:.5em}}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:600}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:600}.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 #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-right:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-left:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:0}}body,html{height:100%;margin:0;padding:0}body{background:#f1f1f1;min-width:0;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;-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 #login_error,.login .message{border-right:4px solid #00a0d2;padding:12px;margin-right:0;background-color:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error{border-right-color:#dc3232}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login 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:#72777c;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1{text-align:center}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=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:#444;height:84px;font-size:20px;line-height:1.3em;margin:0 auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;display:block}#login{width:320px;padding:8% 0 0;margin:auto}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0}.login #backtoblog a,.login #nav a{text-decoration:none;color:#555d66}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#00a0d2}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#124964}.login 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 form{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 +#pass-strength-result,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.meta-box-sortables select,p.submit{max-width:100%}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}#pressthis-code-wrap,textarea{overflow:auto}.login h1 a,form p.submit a.cancel:hover{text-decoration:none}input,textarea{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:50ms border-color ease-in-out;transition:50ms 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=number]{height:28px;line-height:1}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}#pass1-text,.pw-weak,.show-password #pass1{display:none}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;resize:vertical}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-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-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-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;cursor:default}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}.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%}.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 0 0 8px}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:right;margin-left:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-right:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 1px 5px 5px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.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}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=text].ui-autocomplete-loading,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;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#ddd}.wp-tags-autocomplete .ui-state-focus{background-color:#0073aa;color:#fff}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:right;padding:20px 0 20px 10px;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-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{overflow:hidden;font-weight:400}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e5e5e5;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;-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-bookmarklet span:before{color:#72777c;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin: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:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0 0;font-weight:600}.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 .request-filesystem-credentials-action-buttons{text-align:left}.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}@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[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font: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,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=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}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.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}.options-general-php input[type=text].small-text{max-width:60px;margin:0}}.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%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-left:.5em}}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:600}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:600}.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 #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-right:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-left:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:0}}body,html{height:100%;margin:0;padding:0}body{background:#f1f1f1;min-width:0;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;-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 #login_error,.login .message{border-right:4px solid #00a0d2;padding:12px;margin-right:0;background-color:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error{border-right-color:#dc3232}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login 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:#72777c;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1{text-align:center}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=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:#444;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 #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0}.login #backtoblog a,.login #nav a{text-decoration:none;color:#555d66}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#00a0d2}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#124964}.login 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%}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-height:550px){#login{padding:20px 0}}@media screen and (max-width:782px){.interim-login input[type=checkbox]{height:16px;width:16px}.interim-login input[type=checkbox]:checked:before{width:16px;font:400 21px/1 dashicons;margin:-3px -4px 0 0}} \ No newline at end of file diff --git a/wp/wp-admin/css/login.css b/wp/wp-admin/css/login.css index 9f69e9c9..0a652d60 100644 --- a/wp/wp-admin/css/login.css +++ b/wp/wp-admin/css/login.css @@ -216,19 +216,6 @@ p { width: 100%; } -.mobile #login { - padding: 20px 0; -} - -.mobile #login form { - margin-left: 0; -} - -.mobile #login #nav, -.mobile #login #backtoblog { - margin-left: 8px; -} - body.interim-login { height: auto; } @@ -255,6 +242,12 @@ body.interim-login { width: device-width; } +@media screen and ( max-height: 550px ) { + #login { + padding: 20px 0; + } +} + @media screen and ( max-width: 782px ) { .interim-login input[type=checkbox] { height: 16px; diff --git a/wp/wp-admin/css/login.min.css b/wp/wp-admin/css/login.min.css index 31dd8627..e2e932d7 100644 --- a/wp/wp-admin/css/login.min.css +++ b/wp/wp-admin/css/login.min.css @@ -1 +1 @@ -#pass-strength-result,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.meta-box-sortables select,p.submit{max-width:100%}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{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:50ms border-color ease-in-out;transition:50ms 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=number]{height:28px;line-height:1}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;resize:vertical}.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}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-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-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-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}.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}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:left;margin-right:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-left:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#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.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}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=text].ui-autocomplete-loading,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{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 .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-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{overflow:hidden;font-weight:400}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e5e5e5;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;-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-bookmarklet span:before{color:#72777c;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin: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:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0 0;font-weight:600}.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 .request-filesystem-credentials-action-buttons{text-align:right}.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}@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[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font: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,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=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}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.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}.options-general-php input[type=text].small-text{max-width:60px;margin:0}}.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%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-right:.5em}}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:600}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:600}.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 #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-left:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-right:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:0}}body,html{height:100%;margin:0;padding:0}body{background:#f1f1f1;min-width:0;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;-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 #login_error,.login .message{border-left:4px solid #00a0d2;padding:12px;margin-left:0;background-color:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error{border-left-color:#dc3232}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login 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:#72777c;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1{text-align:center}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=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:#444;height:84px;font-size:20px;line-height:1.3em;margin:0 auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;display:block}#login{width:320px;padding:8% 0 0;margin:auto}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0}.login #backtoblog a,.login #nav a{text-decoration:none;color:#555d66}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#00a0d2}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#124964}.login 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 form{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 +#pass-strength-result,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.meta-box-sortables select,p.submit{max-width:100%}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}#pressthis-code-wrap,textarea{overflow:auto}.login h1 a,form p.submit a.cancel:hover{text-decoration:none}input,textarea{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:50ms border-color ease-in-out;transition:50ms 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=number]{height:28px;line-height:1}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}#pass1-text,.pw-weak,.show-password #pass1{display:none}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;resize:vertical}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-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-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-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;cursor:default}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}.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%}.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:left;margin-right:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-left:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 1px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.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}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=text].ui-autocomplete-loading,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;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#ddd}.wp-tags-autocomplete .ui-state-focus{background-color:#0073aa;color:#fff}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-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{overflow:hidden;font-weight:400}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e5e5e5;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;-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-bookmarklet span:before{color:#72777c;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin: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:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0 0;font-weight:600}.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 .request-filesystem-credentials-action-buttons{text-align:right}.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}@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[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font: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,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=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}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.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}.options-general-php input[type=text].small-text{max-width:60px;margin:0}}.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%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-right:.5em}}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:600}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:600}.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 #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-left:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-right:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:0}}body,html{height:100%;margin:0;padding:0}body{background:#f1f1f1;min-width:0;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;-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 #login_error,.login .message{border-left:4px solid #00a0d2;padding:12px;margin-left:0;background-color:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error{border-left-color:#dc3232}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login 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:#72777c;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1{text-align:center}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=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:#444;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 #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0}.login #backtoblog a,.login #nav a{text-decoration:none;color:#555d66}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#00a0d2}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#124964}.login 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%}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-height:550px){#login{padding:20px 0}}@media screen and (max-width:782px){.interim-login input[type=checkbox]{height:16px;width:16px}.interim-login input[type=checkbox]:checked:before{width:16px;font:400 21px/1 dashicons;margin:-3px 0 0 -4px}} \ No newline at end of file diff --git a/wp/wp-admin/css/media-rtl.css b/wp/wp-admin/css/media-rtl.css index 4406d96e..24e15e15 100644 --- a/wp/wp-admin/css/media-rtl.css +++ b/wp/wp-admin/css/media-rtl.css @@ -769,13 +769,17 @@ border color while dragging a file over the uploader drop area */ .edit-attachment-frame .attachment-media-view .details-image { display: block; - margin-bottom: 16px; + margin: 0 auto 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 .attachment-media-view .attachment-actions { + text-align: center; +} + .edit-attachment-frame .wp-media-wrapper { margin-bottom: 12px; } @@ -1144,7 +1148,7 @@ span.imgedit-scale-warn { .imgedit-settings .imgedit-crop-sel input[type="text"] { width: 50px; font-size: 14px; - padding: 3px 5px; + padding: 5px 8px; } .imgedit-separator { diff --git a/wp/wp-admin/css/media-rtl.min.css b/wp/wp-admin/css/media-rtl.min.css index 8af1af5c..662346bc 100644 --- a/wp/wp-admin/css/media-rtl.min.css +++ b/wp/wp-admin/css/media-rtl.min.css @@ -1 +1 @@ -.imgedit-wait,.ui-find-overlay{opacity:.7;filter:alpha(opacity=70)}.media-item .describe{border-collapse:collapse;width:100%;border-top:1px solid #ddd;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:right;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .media-item-info tr{background-color:transparent}.media-item .describe td{padding:0 0 8px 8px;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 10px 0 0}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{display:inline;padding:0 23px 0 0;margin:0 3px 0 1em;font-weight:600}.media-upload-form tr.image-size label{margin:0 5px 0 0;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 5px 0 0}.describe-toggle-off,.describe-toggle-on,.media-item .edit-attachment{display:block;line-height:36px;float:left;margin-left:10px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.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 #ddd;box-shadow:0 1px 0 #ddd}#media-items:empty{border:0}.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 #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 16px 0 36px;position:absolute;top:0;right:0;left:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;-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;border:none;padding:0;position:absolute;top:0;left:0;cursor:pointer;text-align:center;background:0 0;color:#666}#find-posts-close:focus,#find-posts-close:hover{color:#00a0d2}#find-posts-close:focus{outline:0;-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)}#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 #ddd;position:absolute;bottom:0;right:0;left:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;right:0;left:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;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}.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:#b4b9be}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2,.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;left:auto;right:auto;bottom:auto;padding-top:0;margin-top: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:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#72777c;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-right:1px solid #ddd;-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:"\f345"}.edit-attachment-frame .edit-media-header .right:before,.rtl .edit-attachment-frame .edit-media-header .left:before{content:"\f341"}.edit-attachment-frame .edit-media-header .left.disabled,.edit-attachment-frame .edit-media-header .left.disabled:hover,.edit-attachment-frame .edit-media-header .right.disabled,.edit-attachment-frame .edit-media-header .right.disabled:hover{color:#ccc;background:inherit;cursor:default;pointer-events:none}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{right:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;left:0;right:0;-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;padding-top:10px}.imgedit-settings fieldset,.imgedit-settings p{margin:8px 0}.imgedit-settings legend{margin-bottom:5px}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding:3px 0 0 16px;float:right}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:left;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;bottom:0;width:100%;background:#fff;display:none}.imgedit-wait:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;margin:-10px -10px 0 0;background:url(../images/spinner.gif) center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;-webkit-transform:translateZ(0);transform:translateZ(0)}.no-float{float:none}.A1B1 .button,.A1B1 .spinner,.wp_attachment_image .button,.wp_attachment_image .spinner{float:right}.imgedit-settings .disabled,.media-disabled{color:#a0a5aa}.A1B1{overflow:hidden}.no-js .wp_attachment_image .button{display:none}.imgedit-menu{min-width:300px;margin:0 0 12px}.imgedit-menu .note-no-rotate{clear:both;margin:0;padding:1em 0 0}.image-editor .imgedit-menu .button{float:right;width:32px;height:32px;margin:0 0 0 8px;padding:0;background:#f1f1f1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:16px;color:#72777c}.imgedit-menu .button:before{font:400 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu .button.disabled{border-color:#ccc;background-color:#ddd;color:#72777c;filter:alpha(opacity=50);opacity:.5;cursor:default}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop{margin:0 0 0 8px}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 3px 0 8px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 3px 0 8px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 3px 0 8px}.imgedit-thumbnail-preview{margin:10px 0 0 8px}.imgedit-thumbnail-preview-caption{display:block}#poststuff .imgedit-group-top h2,#poststuff .imgedit-group-top h3{display:inline-block;margin:0;padding:0;font-size:14px;line-height:1.4}.imgedit-group-top h2 a,.imgedit-group-top h3 a{text-decoration:none}.imgedit-applyto .imgedit-label{display:block;padding:.5em 0 0}.imgedit-help{display:none;font-style:italic}.image-editor .imgedit-settings .imgedit-help-toggle,.image-editor .imgedit-settings .imgedit-help-toggle:active,.image-editor .imgedit-settings .imgedit-help-toggle:hover{border:1px solid transparent;margin:-1px -1px 0 0;padding:0;background:0 0;color:#0074a2;font-size:20px;line-height:1;cursor:pointer;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-box-shadow:none;box-shadow:none}.image-editor .imgedit-settings .imgedit-help-toggle:focus{color:#0074a2;border-color:#5b9dd9;outline:0;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-right:20px}.imgedit-wrap .nowrap{white-space:nowrap;font-size:12px;line-height:inherit}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-save-target{margin:8px 0}.imgedit-group{margin-bottom:8px;padding:10px}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:50px;font-size:14px;padding:3px 5px}.imgedit-separator{display:inline-block;width:7px;text-align:center;vertical-align:middle;font-size:13px;color:#444}.imgedit-settings .imgedit-scale .button{margin-bottom:0}audio,video{display:inline-block;max-width:100%}.mejs-container{width:100%;max-width:100%}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 12px 10px 0}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:60px;font-size:16px;padding:6px 10px}.imgedit-applyto .imgedit-label{vertical-align:middle}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;left:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{left:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.upload-php .media-modal-close .media-modal-icon{margin:9px 10px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{left:82px}.edit-attachment-frame .edit-media-header .right{left:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}} \ No newline at end of file +.imgedit-wait,.ui-find-overlay{opacity:.7;filter:alpha(opacity=70)}.media-item .describe{border-collapse:collapse;width:100%;border-top:1px solid #ddd;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:right;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .media-item-info tr{background-color:transparent}.media-item .describe td{padding:0 0 8px 8px;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 10px 0 0}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{display:inline;padding:0 23px 0 0;margin:0 3px 0 1em;font-weight:600}.media-upload-form tr.image-size label{margin:0 5px 0 0;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 5px 0 0}.describe-toggle-off,.describe-toggle-on,.media-item .edit-attachment{display:block;line-height:36px;float:left;margin-left:10px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.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 #ddd;box-shadow:0 1px 0 #ddd}#media-items:empty{border:0}.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 #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 16px 0 36px;position:absolute;top:0;right:0;left:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;-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;border:none;padding:0;position:absolute;top:0;left:0;cursor:pointer;text-align:center;background:0 0;color:#666}#find-posts-close:focus,#find-posts-close:hover{color:#00a0d2}#find-posts-close:focus{outline:0;-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)}#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 #ddd;position:absolute;bottom:0;right:0;left:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;right:0;left:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;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}.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:#b4b9be}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2,.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;left:auto;right:auto;bottom:auto;padding-top:0;margin-top: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:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#72777c;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-right:1px solid #ddd;-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:"\f345"}.edit-attachment-frame .edit-media-header .right:before,.rtl .edit-attachment-frame .edit-media-header .left:before{content:"\f341"}.edit-attachment-frame .edit-media-header .left.disabled,.edit-attachment-frame .edit-media-header .left.disabled:hover,.edit-attachment-frame .edit-media-header .right.disabled,.edit-attachment-frame .edit-media-header .right.disabled:hover{color:#ccc;background:inherit;cursor:default;pointer-events:none}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{right:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;left:0;right:0;-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:0 auto 16px;max-width:100%;max-height:90%;max-height:-webkit-calc(100% - 42px);max-height:calc(100% - 42px)}.edit-attachment-frame .attachment-media-view .attachment-actions{text-align:center}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:6px 8px;line-height:16px}.edit-attachment-frame .attachment-info{overflow:auto;-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;padding-top:10px}.imgedit-settings fieldset,.imgedit-settings p{margin:8px 0}.imgedit-settings legend{margin-bottom:5px}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding:3px 0 0 16px;float:right}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:left;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;bottom:0;width:100%;background:#fff;display:none}.imgedit-wait:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;margin:-10px -10px 0 0;background:url(../images/spinner.gif) center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;-webkit-transform:translateZ(0);transform:translateZ(0)}.no-float{float:none}.A1B1 .button,.A1B1 .spinner,.wp_attachment_image .button,.wp_attachment_image .spinner{float:right}.imgedit-settings .disabled,.media-disabled{color:#a0a5aa}.A1B1{overflow:hidden}.no-js .wp_attachment_image .button{display:none}.imgedit-menu{min-width:300px;margin:0 0 12px}.imgedit-menu .note-no-rotate{clear:both;margin:0;padding:1em 0 0}.image-editor .imgedit-menu .button{float:right;width:32px;height:32px;margin:0 0 0 8px;padding:0;background:#f1f1f1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:16px;color:#72777c}.imgedit-menu .button:before{font:400 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu .button.disabled{border-color:#ccc;background-color:#ddd;color:#72777c;filter:alpha(opacity=50);opacity:.5;cursor:default}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop{margin:0 0 0 8px}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 3px 0 8px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 3px 0 8px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 3px 0 8px}.imgedit-thumbnail-preview{margin:10px 0 0 8px}.imgedit-thumbnail-preview-caption{display:block}#poststuff .imgedit-group-top h2,#poststuff .imgedit-group-top h3{display:inline-block;margin:0;padding:0;font-size:14px;line-height:1.4}.imgedit-group-top h2 a,.imgedit-group-top h3 a{text-decoration:none}.imgedit-applyto .imgedit-label{display:block;padding:.5em 0 0}.imgedit-help{display:none;font-style:italic}.image-editor .imgedit-settings .imgedit-help-toggle,.image-editor .imgedit-settings .imgedit-help-toggle:active,.image-editor .imgedit-settings .imgedit-help-toggle:hover{border:1px solid transparent;margin:-1px -1px 0 0;padding:0;background:0 0;color:#0074a2;font-size:20px;line-height:1;cursor:pointer;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-box-shadow:none;box-shadow:none}.image-editor .imgedit-settings .imgedit-help-toggle:focus{color:#0074a2;border-color:#5b9dd9;outline:0;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-right:20px}.imgedit-wrap .nowrap{white-space:nowrap;font-size:12px;line-height:inherit}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-save-target{margin:8px 0}.imgedit-group{margin-bottom:8px;padding:10px}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:50px;font-size:14px;padding:5px 8px}.imgedit-separator{display:inline-block;width:7px;text-align:center;vertical-align:middle;font-size:13px;color:#444}.imgedit-settings .imgedit-scale .button{margin-bottom:0}audio,video{display:inline-block;max-width:100%}.mejs-container{width:100%;max-width:100%}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 12px 10px 0}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:60px;font-size:16px;padding:6px 10px}.imgedit-applyto .imgedit-label{vertical-align:middle}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;left:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{left:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.upload-php .media-modal-close .media-modal-icon{margin:9px 10px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{left:82px}.edit-attachment-frame .edit-media-header .right{left:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}} \ No newline at end of file diff --git a/wp/wp-admin/css/media.css b/wp/wp-admin/css/media.css index 22cc406f..65d39661 100644 --- a/wp/wp-admin/css/media.css +++ b/wp/wp-admin/css/media.css @@ -769,13 +769,17 @@ border color while dragging a file over the uploader drop area */ .edit-attachment-frame .attachment-media-view .details-image { display: block; - margin-bottom: 16px; + margin: 0 auto 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 .attachment-media-view .attachment-actions { + text-align: center; +} + .edit-attachment-frame .wp-media-wrapper { margin-bottom: 12px; } @@ -1144,7 +1148,7 @@ span.imgedit-scale-warn { .imgedit-settings .imgedit-crop-sel input[type="text"] { width: 50px; font-size: 14px; - padding: 3px 5px; + padding: 5px 8px; } .imgedit-separator { diff --git a/wp/wp-admin/css/media.min.css b/wp/wp-admin/css/media.min.css index 47395ef6..51a088f8 100644 --- a/wp/wp-admin/css/media.min.css +++ b/wp/wp-admin/css/media.min.css @@ -1 +1 @@ -.imgedit-wait,.ui-find-overlay{opacity:.7;filter:alpha(opacity=70)}.media-item .describe{border-collapse:collapse;width:100%;border-top:1px solid #ddd;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:left;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .media-item-info tr{background-color:transparent}.media-item .describe td{padding:0 8px 8px 0;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 0 0 10px}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-right:6px;margin-left:2px}.media-upload-form .align .field label{display:inline;padding:0 0 0 23px;margin:0 1em 0 3px;font-weight:600}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 0 0 5px}.describe-toggle-off,.describe-toggle-on,.media-item .edit-attachment{display:block;line-height:36px;float:right;margin-right:10px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.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 #ddd;box-shadow:0 1px 0 #ddd}#media-items:empty{border:0}.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 #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 36px 0 16px;position:absolute;top:0;left:0;right:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;-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;border:none;padding:0;position:absolute;top:0;right:0;cursor:pointer;text-align:center;background:0 0;color:#666}#find-posts-close:focus,#find-posts-close:hover{color:#00a0d2}#find-posts-close:focus{outline:0;-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)}#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 #ddd;position:absolute;bottom:0;left:0;right:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;left:0;right:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;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}.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:#b4b9be}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2,.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;right:auto;left:auto;bottom:auto;padding-top:0;margin-top: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:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#72777c;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-left:1px solid #ddd;-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;padding-top:10px}.imgedit-settings fieldset,.imgedit-settings p{margin:8px 0}.imgedit-settings legend{margin-bottom:5px}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding:3px 16px 0 0;float:left}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:right;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;bottom:0;width:100%;background:#fff;display:none}.imgedit-wait:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;margin:-10px 0 0 -10px;background:url(../images/spinner.gif) center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;-webkit-transform:translateZ(0);transform:translateZ(0)}.no-float{float:none}.A1B1 .button,.A1B1 .spinner,.wp_attachment_image .button,.wp_attachment_image .spinner{float:left}.imgedit-settings .disabled,.media-disabled{color:#a0a5aa}.A1B1{overflow:hidden}.no-js .wp_attachment_image .button{display:none}.imgedit-menu{min-width:300px;margin:0 0 12px}.imgedit-menu .note-no-rotate{clear:both;margin:0;padding:1em 0 0}.image-editor .imgedit-menu .button{float:left;width:32px;height:32px;margin:0 8px 0 0;padding:0;background:#f1f1f1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:16px;color:#72777c}.imgedit-menu .button:before{font:400 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu .button.disabled{border-color:#ccc;background-color:#ddd;color:#72777c;filter:alpha(opacity=50);opacity:.5;cursor:default}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop{margin:0 8px 0 0}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 8px 0 3px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 8px 0 3px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 8px 0 3px}.imgedit-thumbnail-preview{margin:10px 8px 0 0}.imgedit-thumbnail-preview-caption{display:block}#poststuff .imgedit-group-top h2,#poststuff .imgedit-group-top h3{display:inline-block;margin:0;padding:0;font-size:14px;line-height:1.4}.imgedit-group-top h2 a,.imgedit-group-top h3 a{text-decoration:none}.imgedit-applyto .imgedit-label{display:block;padding:.5em 0 0}.imgedit-help{display:none;font-style:italic}.image-editor .imgedit-settings .imgedit-help-toggle,.image-editor .imgedit-settings .imgedit-help-toggle:active,.image-editor .imgedit-settings .imgedit-help-toggle:hover{border:1px solid transparent;margin:-1px 0 0 -1px;padding:0;background:0 0;color:#0074a2;font-size:20px;line-height:1;cursor:pointer;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-box-shadow:none;box-shadow:none}.image-editor .imgedit-settings .imgedit-help-toggle:focus{color:#0074a2;border-color:#5b9dd9;outline:0;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-left:20px}.imgedit-wrap .nowrap{white-space:nowrap;font-size:12px;line-height:inherit}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-save-target{margin:8px 0}.imgedit-group{margin-bottom:8px;padding:10px}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:50px;font-size:14px;padding:3px 5px}.imgedit-separator{display:inline-block;width:7px;text-align:center;vertical-align:middle;font-size:13px;color:#444}.imgedit-settings .imgedit-scale .button{margin-bottom:0}audio,video{display:inline-block;max-width:100%}.mejs-container{width:100%;max-width:100%}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 0 10px 12px}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:60px;font-size:16px;padding:6px 10px}.imgedit-applyto .imgedit-label{vertical-align:middle}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;right:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{right:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.upload-php .media-modal-close .media-modal-icon{margin:9px 10px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{right:82px}.edit-attachment-frame .edit-media-header .right{right:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}} \ No newline at end of file +.imgedit-wait,.ui-find-overlay{opacity:.7;filter:alpha(opacity=70)}.media-item .describe{border-collapse:collapse;width:100%;border-top:1px solid #ddd;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:left;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .media-item-info tr{background-color:transparent}.media-item .describe td{padding:0 8px 8px 0;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 0 0 10px}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-right:6px;margin-left:2px}.media-upload-form .align .field label{display:inline;padding:0 0 0 23px;margin:0 1em 0 3px;font-weight:600}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 0 0 5px}.describe-toggle-off,.describe-toggle-on,.media-item .edit-attachment{display:block;line-height:36px;float:right;margin-right:10px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.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 #ddd;box-shadow:0 1px 0 #ddd}#media-items:empty{border:0}.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 #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 36px 0 16px;position:absolute;top:0;left:0;right:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;-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;border:none;padding:0;position:absolute;top:0;right:0;cursor:pointer;text-align:center;background:0 0;color:#666}#find-posts-close:focus,#find-posts-close:hover{color:#00a0d2}#find-posts-close:focus{outline:0;-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)}#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 #ddd;position:absolute;bottom:0;left:0;right:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;left:0;right:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;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}.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:#b4b9be}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2,.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;right:auto;left:auto;bottom:auto;padding-top:0;margin-top: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:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#72777c;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-left:1px solid #ddd;-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:0 auto 16px;max-width:100%;max-height:90%;max-height:-webkit-calc(100% - 42px);max-height:calc(100% - 42px)}.edit-attachment-frame .attachment-media-view .attachment-actions{text-align:center}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:6px 8px;line-height:16px}.edit-attachment-frame .attachment-info{overflow:auto;-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;padding-top:10px}.imgedit-settings fieldset,.imgedit-settings p{margin:8px 0}.imgedit-settings legend{margin-bottom:5px}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding:3px 16px 0 0;float:left}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:right;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;bottom:0;width:100%;background:#fff;display:none}.imgedit-wait:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;margin:-10px 0 0 -10px;background:url(../images/spinner.gif) center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;-webkit-transform:translateZ(0);transform:translateZ(0)}.no-float{float:none}.A1B1 .button,.A1B1 .spinner,.wp_attachment_image .button,.wp_attachment_image .spinner{float:left}.imgedit-settings .disabled,.media-disabled{color:#a0a5aa}.A1B1{overflow:hidden}.no-js .wp_attachment_image .button{display:none}.imgedit-menu{min-width:300px;margin:0 0 12px}.imgedit-menu .note-no-rotate{clear:both;margin:0;padding:1em 0 0}.image-editor .imgedit-menu .button{float:left;width:32px;height:32px;margin:0 8px 0 0;padding:0;background:#f1f1f1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:16px;color:#72777c}.imgedit-menu .button:before{font:400 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu .button.disabled{border-color:#ccc;background-color:#ddd;color:#72777c;filter:alpha(opacity=50);opacity:.5;cursor:default}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop{margin:0 8px 0 0}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 8px 0 3px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 8px 0 3px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 8px 0 3px}.imgedit-thumbnail-preview{margin:10px 8px 0 0}.imgedit-thumbnail-preview-caption{display:block}#poststuff .imgedit-group-top h2,#poststuff .imgedit-group-top h3{display:inline-block;margin:0;padding:0;font-size:14px;line-height:1.4}.imgedit-group-top h2 a,.imgedit-group-top h3 a{text-decoration:none}.imgedit-applyto .imgedit-label{display:block;padding:.5em 0 0}.imgedit-help{display:none;font-style:italic}.image-editor .imgedit-settings .imgedit-help-toggle,.image-editor .imgedit-settings .imgedit-help-toggle:active,.image-editor .imgedit-settings .imgedit-help-toggle:hover{border:1px solid transparent;margin:-1px 0 0 -1px;padding:0;background:0 0;color:#0074a2;font-size:20px;line-height:1;cursor:pointer;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-box-shadow:none;box-shadow:none}.image-editor .imgedit-settings .imgedit-help-toggle:focus{color:#0074a2;border-color:#5b9dd9;outline:0;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-left:20px}.imgedit-wrap .nowrap{white-space:nowrap;font-size:12px;line-height:inherit}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-save-target{margin:8px 0}.imgedit-group{margin-bottom:8px;padding:10px}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:50px;font-size:14px;padding:5px 8px}.imgedit-separator{display:inline-block;width:7px;text-align:center;vertical-align:middle;font-size:13px;color:#444}.imgedit-settings .imgedit-scale .button{margin-bottom:0}audio,video{display:inline-block;max-width:100%}.mejs-container{width:100%;max-width:100%}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 0 10px 12px}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:60px;font-size:16px;padding:6px 10px}.imgedit-applyto .imgedit-label{vertical-align:middle}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;right:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{right:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.upload-php .media-modal-close .media-modal-icon{margin:9px 10px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{right:82px}.edit-attachment-frame .edit-media-header .right{right:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}} \ No newline at end of file diff --git a/wp/wp-admin/css/nav-menus-rtl.css b/wp/wp-admin/css/nav-menus-rtl.css index e5496043..8618240b 100644 --- a/wp/wp-admin/css/nav-menus-rtl.css +++ b/wp/wp-admin/css/nav-menus-rtl.css @@ -27,6 +27,10 @@ ul.add-menu-item-tabs li { margin-bottom: 0; } +.has-no-menu-item .button-controls { + display: none; +} + #nav-menus-frame { margin-right: 300px; margin-top: 23px; @@ -105,24 +109,28 @@ ul.add-menu-item-tabs li { margin-top: 2em; } -.menu-settings dl { +.menu-settings-group { margin: 0 0 10px; overflow: hidden; - padding-right: 18%; + padding-right: 20%; } -.menu-settings dd { +.menu-settings-group:last-of-type { + margin-bottom: 0; +} + +.menu-settings-input { float: right; margin: 0; width: 100%; } -.menu-settings dt { +.menu-settings-group-name { float: right; clear: both; - width: 21.951%; + width: 25%; padding: 3px 0 0; - margin-right: -21.951%; + margin-right: -25%; /* 20 container left padding x ( 100 container % width / 80 this % width ) */ } .menu-settings label { @@ -139,12 +147,15 @@ ul.add-menu-item-tabs li { } /* Menu Container */ + +/* @todo: responsive view. */ #menu-management-liquid { float: right; min-width: 100%; margin-top: 3px; } +/* @todo: responsive view. */ #menu-management { position: relative; margin-left: 20px; @@ -284,19 +295,6 @@ ul.add-menu-item-tabs li { padding: 0; } -.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; @@ -480,6 +478,7 @@ ul.add-menu-item-tabs li { font-weight: 600; line-height: 20px; display: block; + /* @todo: responsive view. */ margin-left: 13em; } @@ -651,9 +650,38 @@ body.menu-max-depth-11 { min-width: 1280px !important; } box-shadow: 0 1px 1px rgba(0,0,0,0.04); } -.menu-item-settings .field-move a { +.menu-item-settings .field-move { + margin: 3px 0 5px; + line-height: 1.5; +} + +.field-move-visual-label { + float: right; + margin-left: 4px; + font-style: italic; +} + +.menu-item-settings .field-move .button-link { display: none; margin: 0 2px; + color: #0073aa; + font-style: italic; + text-decoration: underline; +} + +.menu-item-settings .field-move .button-link:hover, +.menu-item-settings .field-move .button-link:active { + color: #00a0d2; +} + +.menu-item-settings .field-move .button-link: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); } .menu-item-edit-active .menu-item-settings { @@ -665,13 +693,22 @@ body.menu-max-depth-11 { min-width: 1280px !important; } } .add-menu-item-pagelinks { - margin: .5em auto; + margin: .5em -10px; text-align: center; } +.add-menu-item-pagelinks .page-numbers { + display: inline-block; + min-width: 20px; +} + +.add-menu-item-pagelinks .page-numbers.dots { + min-width: 0; +} + .link-to-original { display: block; - margin: 0 0 10px; + margin: 0 0 15px; padding: 3px 5px 5px; border: 1px solid #ddd; color: #72777c; @@ -704,6 +741,7 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .menu-item-actions { padding-top: 15px; + padding-bottom: 7px; } #cancel-save { @@ -713,7 +751,8 @@ body.menu-max-depth-11 { min-width: 1280px !important; } /* Major/minor publishing actions (classes) */ .nav-menus-php .major-publishing-actions { clear: both; - padding: 7px 0 6px; + padding: 10px 0; + line-height: 28px; } .nav-menus-php .major-publishing-actions .publishing-action { @@ -725,21 +764,10 @@ body.menu-max-depth-11 { min-width: 1280px !important; } display: none; } +/* Same as the Publish Meta Box #delete-action */ .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; + line-height: 28px; } .nav-menus-php .major-publishing-actions .form-invalid { @@ -825,14 +853,9 @@ body.menu-max-depth-11 { min-width: 1280px !important; } 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; + line-height: 30px; } .menu-item-bar .menu-item-handle, @@ -859,23 +882,26 @@ body.menu-max-depth-11 { min-width: 1280px !important; } width: 25px; } - .menu-settings dl { + .menu-settings-group { padding-right: 0; } - .menu-settings dd { - float: none; - width: 100%; - margin-bottom: 15px; - } - - .menu-settings dt { + .menu-settings-group-name { float: none; width: auto; margin-right: 0; margin-bottom: 15px; } + .menu-settings-input { + float: none; + margin-bottom: 15px; + } + + .menu-edit .checkbox-input { + margin-top: 0; + } + .manage-menus select { margin: 0.5em 0; } diff --git a/wp/wp-admin/css/nav-menus-rtl.min.css b/wp/wp-admin/css/nav-menus-rtl.min.css index afc8bc0b..47178d1c 100644 --- a/wp/wp-admin/css/nav-menus-rtl.min.css +++ b/wp/wp-admin/css/nav-menus-rtl.min.css @@ -1 +1 @@ -.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 8px 4px 5px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}#nav-menus-frame{margin-right:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-right:-300px;clear:both;float:right;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#555d66;font-style:italic;font-weight:400;margin-right:4px}#menu-management .menu-add-new abbr,.menu-location-title label{font-weight:600}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus .selected-menu,.manage-menus .submit-btn,.manage-menus select,.nav-menus-php .add-new-menu-action{display:inline-block;margin-left:3px;vertical-align:middle}.manage-menus select,.menu-location-menus select{max-width:100%}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings 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:#72777c;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 #ddd;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #ddd;margin-bottom:0}#nav-menu-header .menu-name-label{display:inline-block;vertical-align:middle;margin-left:7px;font-style:italic}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#select-nav-menu-container{text-align:left;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations .menu-location-title{padding:13px 10px 0}.menu-location-menus select{float:right}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:right;width:160px;margin-left:5px}.locations-row-links{float:right;margin:6px 6px 0 0}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-left:3px;border-left:1px solid #ccc}#menu-management .inside{padding:0 10px}.customlinkdiv .menu-item-textbox,.postbox .howto input{width:180px;float:left}.accordion-container .outer-border{margin:0}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:left}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}.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;vertical-align:middle}#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}.customlinkdiv label,.nav-menus-php .howto span{float:right;margin-top:6px}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px 0 0 -10px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-left:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #ddd;position:relative;padding:10px 15px;height:auto;min-height:20px;width:382px;line-height:30px;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#999}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;border-color:#f1acb1}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}#cancel-save,.item-controls a:hover{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:#72777c}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:30px}.menu-item-depth-2{margin-right:60px}.menu-item-depth-3{margin-right:90px}.menu-item-depth-4{margin-right:120px}.menu-item-depth-5{margin-right:150px}.menu-item-depth-6{margin-right:180px}.menu-item-depth-7{margin-right:210px}.menu-item-depth-8{margin-right:240px}.menu-item-depth-9{margin-right:270px}.menu-item-depth-10{margin-right:300px}.menu-item-depth-11{margin-right:330px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px}.menu-item-depth-2 .menu-item-transport{margin-right:-60px}.menu-item-depth-3 .menu-item-transport{margin-right:-90px}.menu-item-depth-4 .menu-item-transport{margin-right:-120px}.menu-item-depth-5 .menu-item-transport{margin-right:-150px}.menu-item-depth-6 .menu-item-transport{margin-right:-180px}.menu-item-depth-7 .menu-item-transport{margin-right:-210px}.menu-item-depth-8 .menu-item-transport{margin-right:-240px}.menu-item-depth-9 .menu-item-transport{margin-right:-270px}.menu-item-depth-10 .menu-item-transport{margin-right:-300px}.menu-item-depth-11 .menu-item-transport{margin-right:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{display:inline-block;padding:12px 16px;color:#666;font-size:12px;line-height:18px}.item-controls{font-size:12px;position:absolute;left:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls .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;white-space:nowrap}.no-js.nav-menus-php .item-edit{position:static;float:left;width:auto;height:auto;margin-left:-10px!important;padding:12px 0;color:#0073aa;text-decoration:underline;font-size:12px;line-height:18px;text-indent:0}.nav-menus-php .item-edit:before{margin-top:10px;margin-right:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}.no-js.nav-menus-php .item-edit:before{display:none}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.nav-menus-php .item-edit:focus{-webkit-box-shadow:none;box-shadow:none}.nav-menus-php .item-edit: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)}.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 #ddd;color:#72777c;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:7px 0 6px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:left;float:left}.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,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}.menu-item-bar .menu-item-handle{width:90%}}@media screen and (max-width:782px){body.nav-menus-php{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}.manage-menus select{margin:.5em 0}.widefat .menu-locations .menu-location-title{padding-top:16px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}} \ No newline at end of file +.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 8px 4px 5px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}.has-no-menu-item .button-controls{display:none}#nav-menus-frame{margin-right:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-right:-300px;clear:both;float:right;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#555d66;font-style:italic;font-weight:400;margin-right:4px}#menu-management .menu-add-new abbr,.menu-location-title label{font-weight:600}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus .selected-menu,.manage-menus .submit-btn,.manage-menus select,.nav-menus-php .add-new-menu-action{display:inline-block;margin-left:3px;vertical-align:middle}.manage-menus select,.menu-location-menus select{max-width:100%}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings-group{margin:0 0 10px;overflow:hidden;padding-right:20%}.menu-settings-group:last-of-type{margin-bottom:0}.menu-settings-input{float:right;margin:0;width:100%}.menu-settings-group-name{float:right;clear:both;width:25%;padding:3px 0 0;margin-right:-25%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#72777c;font-size:11px}#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 #ddd;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #ddd;margin-bottom:0}#nav-menu-header .menu-name-label{display:inline-block;vertical-align:middle;margin-left:7px;font-style:italic}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#select-nav-menu-container{text-align:left;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations .menu-location-title{padding:13px 10px 0}.menu-location-menus select{float:right}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:right;width:160px;margin-left:5px}.locations-row-links{float:right;margin:6px 6px 0 0}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-left:3px;border-left:1px solid #ccc}#menu-management .inside{padding:0 10px}.customlinkdiv .menu-item-textbox,.postbox .howto input{width:180px;float:left}.accordion-container .outer-border{margin:0}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:left}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}#cancel-save{text-decoration:underline;margin-right:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:left}.list-controls{float:right;margin-top:5px}.add-to-menu{float:left}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px;vertical-align:middle}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link label span{display:block;float:right;margin-top:5px;padding-left:5px}.menu-item-textbox{width:180px}.customlinkdiv label,.nav-menus-php .howto span{float:right;margin-top:6px}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px 0 0 -10px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-left:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #ddd;position:relative;padding:10px 15px;height:auto;min-height:20px;width:382px;line-height:30px;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#999}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;border-color:#f1acb1}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}#cancel-save,.item-controls a:hover{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:#72777c}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:30px}.menu-item-depth-2{margin-right:60px}.menu-item-depth-3{margin-right:90px}.menu-item-depth-4{margin-right:120px}.menu-item-depth-5{margin-right:150px}.menu-item-depth-6{margin-right:180px}.menu-item-depth-7{margin-right:210px}.menu-item-depth-8{margin-right:240px}.menu-item-depth-9{margin-right:270px}.menu-item-depth-10{margin-right:300px}.menu-item-depth-11{margin-right:330px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px}.menu-item-depth-2 .menu-item-transport{margin-right:-60px}.menu-item-depth-3 .menu-item-transport{margin-right:-90px}.menu-item-depth-4 .menu-item-transport{margin-right:-120px}.menu-item-depth-5 .menu-item-transport{margin-right:-150px}.menu-item-depth-6 .menu-item-transport{margin-right:-180px}.menu-item-depth-7 .menu-item-transport{margin-right:-210px}.menu-item-depth-8 .menu-item-transport{margin-right:-240px}.menu-item-depth-9 .menu-item-transport{margin-right:-270px}.menu-item-depth-10 .menu-item-transport{margin-right:-300px}.menu-item-depth-11 .menu-item-transport{margin-right:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{display:inline-block;padding:12px 16px;color:#666;font-size:12px;line-height:18px}.item-controls{font-size:12px;position:absolute;left:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls .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;white-space:nowrap}.no-js.nav-menus-php .item-edit{position:static;float:left;width:auto;height:auto;margin-left:-10px!important;padding:12px 0;color:#0073aa;text-decoration:underline;font-size:12px;line-height:18px;text-indent:0}.nav-menus-php .item-edit:before{margin-top:10px;margin-right:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}.no-js.nav-menus-php .item-edit:before{display:none}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.nav-menus-php .item-edit:focus{-webkit-box-shadow:none;box-shadow:none}.nav-menus-php .item-edit: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)}.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{margin:3px 0 5px;line-height:1.5}.field-move-visual-label{float:right;margin-left:4px;font-style:italic}.menu-item-settings .field-move .button-link{display:none;margin:0 2px;color:#0073aa;font-style:italic;text-decoration:underline}.menu-item-settings .field-move .button-link:active,.menu-item-settings .field-move .button-link:hover{color:#00a0d2}.menu-item-settings .field-move .button-link: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)}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em -10px;text-align:center}.add-menu-item-pagelinks .page-numbers{display:inline-block;min-width:20px}.add-menu-item-pagelinks .page-numbers.dots{min-width:0}.link-to-original{display:block;margin:0 0 15px;padding:3px 5px 5px;border:1px solid #ddd;color:#72777c;font-size:12px;font-style:italic}.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;padding-bottom:7px}.nav-menus-php .major-publishing-actions{clear:both;padding:10px 0;line-height:28px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:left;float:left}.nav-menus-php .delete-action{float:right;line-height:28px}.nav-menus-php .major-publishing-actions .form-invalid{padding-right:4px;margin-right:-4px}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}.menu-item-bar .menu-item-handle{width:90%}}@media screen and (max-width:782px){body.nav-menus-php{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}.menu-settings-group-name,.menu-settings-input{float:none;margin-bottom:15px}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 .delete-action{font-size:14px;line-height:30px}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide,.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings-group{padding-right:0}.menu-settings-group-name{width:auto;margin-right:0}.menu-edit .checkbox-input{margin-top:0}.manage-menus select{margin:.5em 0}.widefat .menu-locations .menu-location-title{padding-top:16px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}} \ No newline at end of file diff --git a/wp/wp-admin/css/nav-menus.css b/wp/wp-admin/css/nav-menus.css index 2e4ee7cb..b7a25a12 100644 --- a/wp/wp-admin/css/nav-menus.css +++ b/wp/wp-admin/css/nav-menus.css @@ -27,6 +27,10 @@ ul.add-menu-item-tabs li { margin-bottom: 0; } +.has-no-menu-item .button-controls { + display: none; +} + #nav-menus-frame { margin-left: 300px; margin-top: 23px; @@ -105,24 +109,28 @@ ul.add-menu-item-tabs li { margin-top: 2em; } -.menu-settings dl { +.menu-settings-group { margin: 0 0 10px; overflow: hidden; - padding-left: 18%; + padding-left: 20%; } -.menu-settings dd { +.menu-settings-group:last-of-type { + margin-bottom: 0; +} + +.menu-settings-input { float: left; margin: 0; width: 100%; } -.menu-settings dt { +.menu-settings-group-name { float: left; clear: both; - width: 21.951%; + width: 25%; padding: 3px 0 0; - margin-left: -21.951%; + margin-left: -25%; /* 20 container left padding x ( 100 container % width / 80 this % width ) */ } .menu-settings label { @@ -139,12 +147,15 @@ ul.add-menu-item-tabs li { } /* Menu Container */ + +/* @todo: responsive view. */ #menu-management-liquid { float: left; min-width: 100%; margin-top: 3px; } +/* @todo: responsive view. */ #menu-management { position: relative; margin-right: 20px; @@ -284,19 +295,6 @@ ul.add-menu-item-tabs li { padding: 0; } -.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; @@ -480,6 +478,7 @@ ul.add-menu-item-tabs li { font-weight: 600; line-height: 20px; display: block; + /* @todo: responsive view. */ margin-right: 13em; } @@ -651,9 +650,38 @@ body.menu-max-depth-11 { min-width: 1280px !important; } box-shadow: 0 1px 1px rgba(0,0,0,0.04); } -.menu-item-settings .field-move a { +.menu-item-settings .field-move { + margin: 3px 0 5px; + line-height: 1.5; +} + +.field-move-visual-label { + float: left; + margin-right: 4px; + font-style: italic; +} + +.menu-item-settings .field-move .button-link { display: none; margin: 0 2px; + color: #0073aa; + font-style: italic; + text-decoration: underline; +} + +.menu-item-settings .field-move .button-link:hover, +.menu-item-settings .field-move .button-link:active { + color: #00a0d2; +} + +.menu-item-settings .field-move .button-link: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); } .menu-item-edit-active .menu-item-settings { @@ -665,13 +693,22 @@ body.menu-max-depth-11 { min-width: 1280px !important; } } .add-menu-item-pagelinks { - margin: .5em auto; + margin: .5em -10px; text-align: center; } +.add-menu-item-pagelinks .page-numbers { + display: inline-block; + min-width: 20px; +} + +.add-menu-item-pagelinks .page-numbers.dots { + min-width: 0; +} + .link-to-original { display: block; - margin: 0 0 10px; + margin: 0 0 15px; padding: 3px 5px 5px; border: 1px solid #ddd; color: #72777c; @@ -704,6 +741,7 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .menu-item-actions { padding-top: 15px; + padding-bottom: 7px; } #cancel-save { @@ -713,7 +751,8 @@ body.menu-max-depth-11 { min-width: 1280px !important; } /* Major/minor publishing actions (classes) */ .nav-menus-php .major-publishing-actions { clear: both; - padding: 7px 0 6px; + padding: 10px 0; + line-height: 28px; } .nav-menus-php .major-publishing-actions .publishing-action { @@ -725,21 +764,10 @@ body.menu-max-depth-11 { min-width: 1280px !important; } display: none; } +/* Same as the Publish Meta Box #delete-action */ .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; + line-height: 28px; } .nav-menus-php .major-publishing-actions .form-invalid { @@ -825,14 +853,9 @@ body.menu-max-depth-11 { min-width: 1280px !important; } 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; + line-height: 30px; } .menu-item-bar .menu-item-handle, @@ -859,23 +882,26 @@ body.menu-max-depth-11 { min-width: 1280px !important; } width: 25px; } - .menu-settings dl { + .menu-settings-group { padding-left: 0; } - .menu-settings dd { - float: none; - width: 100%; - margin-bottom: 15px; - } - - .menu-settings dt { + .menu-settings-group-name { float: none; width: auto; margin-left: 0; margin-bottom: 15px; } + .menu-settings-input { + float: none; + margin-bottom: 15px; + } + + .menu-edit .checkbox-input { + margin-top: 0; + } + .manage-menus select { margin: 0.5em 0; } diff --git a/wp/wp-admin/css/nav-menus.min.css b/wp/wp-admin/css/nav-menus.min.css index da00a532..6880a543 100644 --- a/wp/wp-admin/css/nav-menus.min.css +++ b/wp/wp-admin/css/nav-menus.min.css @@ -1 +1 @@ -.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 5px 4px 8px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}#nav-menus-frame{margin-left:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#555d66;font-style:italic;font-weight:400;margin-left:4px}#menu-management .menu-add-new abbr,.menu-location-title label{font-weight:600}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus .selected-menu,.manage-menus .submit-btn,.manage-menus select,.nav-menus-php .add-new-menu-action{display:inline-block;margin-right:3px;vertical-align:middle}.manage-menus select,.menu-location-menus select{max-width:100%}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings 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:#72777c;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 #ddd;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #ddd;margin-bottom:0}#nav-menu-header .menu-name-label{display:inline-block;vertical-align:middle;margin-right:7px;font-style:italic}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#select-nav-menu-container{text-align:right;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations .menu-location-title{padding:13px 10px 0}.menu-location-menus select{float:left}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:left;width:160px;margin-right:5px}.locations-row-links{float:left;margin:6px 0 0 6px}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-right:3px;border-right:1px solid #ccc}#menu-management .inside{padding:0 10px}.customlinkdiv .menu-item-textbox,.postbox .howto input{width:180px;float:right}.accordion-container .outer-border{margin:0}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:right}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}.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;vertical-align:middle}#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}.customlinkdiv label,.nav-menus-php .howto span{float:left;margin-top:6px}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px -10px 0 0}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-right:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #ddd;position:relative;padding:10px 15px;height:auto;min-height:20px;width:382px;line-height:30px;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#999}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;border-color:#f1acb1}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}#cancel-save,.item-controls a:hover{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:#72777c}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:30px}.menu-item-depth-2{margin-left:60px}.menu-item-depth-3{margin-left:90px}.menu-item-depth-4{margin-left:120px}.menu-item-depth-5{margin-left:150px}.menu-item-depth-6{margin-left:180px}.menu-item-depth-7{margin-left:210px}.menu-item-depth-8{margin-left:240px}.menu-item-depth-9{margin-left:270px}.menu-item-depth-10{margin-left:300px}.menu-item-depth-11{margin-left:330px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-30px}.menu-item-depth-2 .menu-item-transport{margin-left:-60px}.menu-item-depth-3 .menu-item-transport{margin-left:-90px}.menu-item-depth-4 .menu-item-transport{margin-left:-120px}.menu-item-depth-5 .menu-item-transport{margin-left:-150px}.menu-item-depth-6 .menu-item-transport{margin-left:-180px}.menu-item-depth-7 .menu-item-transport{margin-left:-210px}.menu-item-depth-8 .menu-item-transport{margin-left:-240px}.menu-item-depth-9 .menu-item-transport{margin-left:-270px}.menu-item-depth-10 .menu-item-transport{margin-left:-300px}.menu-item-depth-11 .menu-item-transport{margin-left:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{display:inline-block;padding:12px 16px;color:#666;font-size:12px;line-height:18px}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls .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;white-space:nowrap}.no-js.nav-menus-php .item-edit{position:static;float:right;width:auto;height:auto;margin-right:-10px!important;padding:12px 0;color:#0073aa;text-decoration:underline;font-size:12px;line-height:18px;text-indent:0}.nav-menus-php .item-edit:before{margin-top:10px;margin-left:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}.no-js.nav-menus-php .item-edit:before{display:none}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.nav-menus-php .item-edit:focus{-webkit-box-shadow:none;box-shadow:none}.nav-menus-php .item-edit: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)}.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 #ddd;color:#72777c;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:7px 0 6px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right}.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,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}.menu-item-bar .menu-item-handle{width:90%}}@media screen and (max-width:782px){body.nav-menus-php{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}.manage-menus select{margin:.5em 0}.widefat .menu-locations .menu-location-title{padding-top:16px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}} \ No newline at end of file +.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 5px 4px 8px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}.has-no-menu-item .button-controls{display:none}#nav-menus-frame{margin-left:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#555d66;font-style:italic;font-weight:400;margin-left:4px}#menu-management .menu-add-new abbr,.menu-location-title label{font-weight:600}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus .selected-menu,.manage-menus .submit-btn,.manage-menus select,.nav-menus-php .add-new-menu-action{display:inline-block;margin-right:3px;vertical-align:middle}.manage-menus select,.menu-location-menus select{max-width:100%}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings-group{margin:0 0 10px;overflow:hidden;padding-left:20%}.menu-settings-group:last-of-type{margin-bottom:0}.menu-settings-input{float:left;margin:0;width:100%}.menu-settings-group-name{float:left;clear:both;width:25%;padding:3px 0 0;margin-left:-25%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#72777c;font-size:11px}#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 #ddd;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #ddd;margin-bottom:0}#nav-menu-header .menu-name-label{display:inline-block;vertical-align:middle;margin-right:7px;font-style:italic}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#select-nav-menu-container{text-align:right;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations .menu-location-title{padding:13px 10px 0}.menu-location-menus select{float:left}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:left;width:160px;margin-right:5px}.locations-row-links{float:left;margin:6px 0 0 6px}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-right:3px;border-right:1px solid #ccc}#menu-management .inside{padding:0 10px}.customlinkdiv .menu-item-textbox,.postbox .howto input{width:180px;float:right}.accordion-container .outer-border{margin:0}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:right}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}#cancel-save{text-decoration:underline;margin-left:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:right}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px;vertical-align:middle}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px}.menu-item-textbox{width:180px}.customlinkdiv label,.nav-menus-php .howto span{float:left;margin-top:6px}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px -10px 0 0}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-right:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #ddd;position:relative;padding:10px 15px;height:auto;min-height:20px;width:382px;line-height:30px;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#999}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;border-color:#f1acb1}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}#cancel-save,.item-controls a:hover{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:#72777c}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:30px}.menu-item-depth-2{margin-left:60px}.menu-item-depth-3{margin-left:90px}.menu-item-depth-4{margin-left:120px}.menu-item-depth-5{margin-left:150px}.menu-item-depth-6{margin-left:180px}.menu-item-depth-7{margin-left:210px}.menu-item-depth-8{margin-left:240px}.menu-item-depth-9{margin-left:270px}.menu-item-depth-10{margin-left:300px}.menu-item-depth-11{margin-left:330px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-30px}.menu-item-depth-2 .menu-item-transport{margin-left:-60px}.menu-item-depth-3 .menu-item-transport{margin-left:-90px}.menu-item-depth-4 .menu-item-transport{margin-left:-120px}.menu-item-depth-5 .menu-item-transport{margin-left:-150px}.menu-item-depth-6 .menu-item-transport{margin-left:-180px}.menu-item-depth-7 .menu-item-transport{margin-left:-210px}.menu-item-depth-8 .menu-item-transport{margin-left:-240px}.menu-item-depth-9 .menu-item-transport{margin-left:-270px}.menu-item-depth-10 .menu-item-transport{margin-left:-300px}.menu-item-depth-11 .menu-item-transport{margin-left:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{display:inline-block;padding:12px 16px;color:#666;font-size:12px;line-height:18px}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls .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;white-space:nowrap}.no-js.nav-menus-php .item-edit{position:static;float:right;width:auto;height:auto;margin-right:-10px!important;padding:12px 0;color:#0073aa;text-decoration:underline;font-size:12px;line-height:18px;text-indent:0}.nav-menus-php .item-edit:before{margin-top:10px;margin-left:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}.no-js.nav-menus-php .item-edit:before{display:none}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.nav-menus-php .item-edit:focus{-webkit-box-shadow:none;box-shadow:none}.nav-menus-php .item-edit: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)}.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{margin:3px 0 5px;line-height:1.5}.field-move-visual-label{float:left;margin-right:4px;font-style:italic}.menu-item-settings .field-move .button-link{display:none;margin:0 2px;color:#0073aa;font-style:italic;text-decoration:underline}.menu-item-settings .field-move .button-link:active,.menu-item-settings .field-move .button-link:hover{color:#00a0d2}.menu-item-settings .field-move .button-link: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)}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em -10px;text-align:center}.add-menu-item-pagelinks .page-numbers{display:inline-block;min-width:20px}.add-menu-item-pagelinks .page-numbers.dots{min-width:0}.link-to-original{display:block;margin:0 0 15px;padding:3px 5px 5px;border:1px solid #ddd;color:#72777c;font-size:12px;font-style:italic}.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;padding-bottom:7px}.nav-menus-php .major-publishing-actions{clear:both;padding:10px 0;line-height:28px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right}.nav-menus-php .delete-action{float:left;line-height:28px}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}.menu-item-bar .menu-item-handle{width:90%}}@media screen and (max-width:782px){body.nav-menus-php{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}.menu-settings-group-name,.menu-settings-input{float:none;margin-bottom:15px}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 .delete-action{font-size:14px;line-height:30px}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide,.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings-group{padding-left:0}.menu-settings-group-name{width:auto;margin-left:0}.menu-edit .checkbox-input{margin-top:0}.manage-menus select{margin:.5em 0}.widefat .menu-locations .menu-location-title{padding-top:16px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}} \ No newline at end of file diff --git a/wp/wp-admin/css/press-this-rtl.css b/wp/wp-admin/css/press-this-rtl.css index 2c471494..eba29390 100644 --- a/wp/wp-admin/css/press-this-rtl.css +++ b/wp/wp-admin/css/press-this-rtl.css @@ -770,38 +770,6 @@ dd { 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; - 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; @@ -817,10 +785,9 @@ dd { clear: both; } -.tagchecklist span { - display: block; - margin-left: 25px; +.tagchecklist > span { float: right; + margin-left: 25px; font-size: 13px; line-height: 1.8; white-space: nowrap; @@ -828,7 +795,7 @@ dd { } @media (max-width: 600px) { - .tagchecklist span { + .tagchecklist > span { margin-bottom: 15px; font-size: 16px; line-height: 1.3; @@ -836,36 +803,51 @@ dd { } .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; + width: 24px; + height: 24px; + border: none; + margin: 0 -19px 0 0; + padding: 0; + background: none; + cursor: pointer; + text-indent: 0;; + position: absolute; } -.tagchecklist .ntdelbutton:before { +.tagchecklist .ntdelbutton .remove-tag-icon:before { content: "\f153"; display: block; - margin: 2px 0; + margin-right: 2px; height: 20px; width: 20px; - background: 100% 0; - color: #9ea7af; - font: 400 16px/1 dashicons; + -webkit-border-radius: 50%; + border-radius: 50%; + background: transparent; + color: #0073aa; + /* line-height tweak to vertically center the icon cross browsers */ + font: 400 16px/1.28 dashicons; text-align: center; - speak: none; -webkit-font-smoothing: antialiased; } -.tagchecklist .ntdelbutton:focus:before { - color: #00a0d2; +.tagchecklist .ntdelbutton:focus { + outline: 0; } +.tagchecklist .ntdelbutton:hover .remove-tag-icon:before, +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before { + color: #c00; +} + +.tagchecklist .ntdelbutton:focus .remove-tag-icon: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); +} /* THE TAG CLOUD. */ .tagsdiv + p { @@ -2194,6 +2176,7 @@ html { -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; + font-size: 14px; } .ui-autocomplete li { @@ -2201,9 +2184,16 @@ html { padding: 4px 10px; white-space: nowrap; text-align: right; -} - -.ui-autocomplete li.ui-state-focus { - background-color: #ddd; cursor: pointer; } + +/* Colors for the wplink toolbar autocomplete. */ +.ui-autocomplete .ui-state-focus { + background-color: #ddd; +} + +/* Colors for the tags autocomplete. */ +.wp-tags-autocomplete .ui-state-focus { + background-color: #0073aa; + color: #fff; +} diff --git a/wp/wp-admin/css/press-this-rtl.min.css b/wp/wp-admin/css/press-this-rtl.min.css index 07be2b99..c7563995 100644 --- a/wp/wp-admin/css/press-this-rtl.min.css +++ b/wp/wp-admin/css/press-this-rtl.min.css @@ -1 +1 @@ -body,fieldset{margin:0}.screen-reader-text,fieldset,legend,td,th{padding:0}.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}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}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}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}.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:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-weight:400;line-height:1.6}b,dt,strong{font-weight:700}h1,h2,h3,h4,h5,h6{clear:both}p{margin-bottom:1.5em}.scan-submit{display:inline-block;margin:0;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none}.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;line-height:2}.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:#0085ba;border-color:#0073aa #006799 #006799;border-width:1px;border-style:solid;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.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:1px solid #006799;float:left}.split-button-toggle i{margin:4px 0 3px 20px;padding:0 10px}.split-button-primary:hover,.split-button-toggle:hover{outline:0;background:#008ec2;border-color:#006799}.split-button-primary:focus,.split-button-toggle:focus{outline:0;-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.split-button-primary:active,.split-button-toggle:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa;box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.postform,textarea{vertical-align:top}[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{overflow:auto;padding-right:3px}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-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,.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;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: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}.tagsdiv+p{margin:0}.press-this .tagcloud-link{display:block;margin:0 16px 5px;padding:0;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}}.press-this .add-cat-toggle{float:left;margin-top:-45px;line-height:20px;padding:12px 10px 8px;color:#0073aa}.press-this .add-cat-toggle:focus{text-decoration:none;color:#00a0d2}.press-this .add-cat-toggle.is-toggled{padding:10px}.press-this .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}.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;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}.alert,.scan{border-bottom:1px solid #e5e5e5}.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;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}.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}}@media (max-width:320px){body{font-size:14px}}.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:after{clear:both}.adminbar .dashicons{color:#a0a5aa}.press-this .adminbar button{position:absolute;top:50%;left:6px;margin-top:-13px;padding:0 10px 1px;font-size:13px}.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){.adminbar{min-height:45px}.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}.scan form{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.scan.is-hidden form{opacity:.2;pointer-events:none}}.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%}@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:#008ec2;border-color:#006799;color:#fff;outline:0}.scan-submit:active{background:#0073aa;border-color:#006799;color:#fff}.scan-submit:visited{color:#555}.wrapper{position:relative;margin-bottom:60px;margin-left:320px}.wrapper:after,.wrapper:before{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:after,.editor-wrapper:before{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) 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:#82878c;z-index:-1}.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-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}}.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:active,.suggested-media-thumbnail:focus,.suggested-media-thumbnail:hover{color:#fff}.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{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){.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:#fff;color:rgba(255,255,255,.9)}.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{color:#fff}.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}}.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-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 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:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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}.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;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-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;border-color:#e5e5e5}.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;width:100%;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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%)}}.press-this .modal-close{display:block;width:100%;padding:13px 14px;border-bottom:1px solid #e5e5e5;color:#00a0d2;text-decoration:none;text-align:right}.press-this .modal-close:focus{outline:0;-webkit-box-shadow:inset -5px 0 0 #00a0d2;box-shadow:inset -5px 0 0 #00a0d2;border-color:#e5e5e5}.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}.wp-link-input input{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:50ms border-color ease-in-out;transition:50ms border-color ease-in-out}.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} \ No newline at end of file +body,fieldset{margin:0}.screen-reader-text,fieldset,legend,td,th{padding:0}.scan-submit,.split-button-primary,.split-button-toggle{text-decoration:none;-webkit-appearance:none;cursor:pointer}.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}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}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}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}.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:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-weight:400;line-height:1.6}b,dt,strong{font-weight:700}h1,h2,h3,h4,h5,h6{clear:both}p{margin-bottom:1.5em}.scan-submit{display:inline-block;margin:0;white-space:nowrap}.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;line-height:2}.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;white-space:nowrap;line-height:2;padding:0 10px 1px;background:#0085ba;border-color:#0073aa #006799 #006799;border-width:1px;border-style:solid;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.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:1px solid #006799;float:left}.split-button-toggle i{margin:4px 0 3px 20px;padding:0 10px}.split-button-primary:hover,.split-button-toggle:hover{outline:0;background:#008ec2;border-color:#006799}.split-button-primary:focus,.split-button-toggle:focus{outline:0;-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.split-button-primary:active,.split-button-toggle:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa;box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.postform,textarea{vertical-align:top}[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{overflow:auto;padding-right:3px}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-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,.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}.tagchecklist{padding:16px 28px 5px}.tagchecklist:after,.tagchecklist:before{content:"";display:table}.tagchecklist:after{clear:both}.tagchecklist>span{float:right;margin-left:25px;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{width:24px;height:24px;border:none;margin:0 -19px 0 0;padding:0;background:0 0;cursor:pointer;text-indent:0;position:absolute}.tagchecklist .ntdelbutton .remove-tag-icon:before{content:"\f153";display:block;margin-right:2px;height:20px;width:20px;-webkit-border-radius:50%;border-radius:50%;background:0 0;color:#0073aa;font:400 16px/1.28 dashicons;text-align:center;-webkit-font-smoothing:antialiased}.tagchecklist .ntdelbutton:focus{outline:0}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before,.tagchecklist .ntdelbutton:hover .remove-tag-icon:before{color:#c00}.tagchecklist .ntdelbutton:focus .remove-tag-icon: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)}.tagsdiv+p{margin:0}.press-this .tagcloud-link{display:block;margin:0 16px 5px;padding:0;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}}.press-this .add-cat-toggle{float:left;margin-top:-45px;line-height:20px;padding:12px 10px 8px;color:#0073aa}.press-this .add-cat-toggle:focus{text-decoration:none;color:#00a0d2}.press-this .add-cat-toggle.is-toggled{padding:10px}.press-this .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}.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;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}.alert,.scan{border-bottom:1px solid #e5e5e5}.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;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}.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}}@media (max-width:320px){body{font-size:14px}}.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:after{clear:both}.adminbar .dashicons{color:#a0a5aa}.press-this .adminbar button{position:absolute;top:50%;left:6px;margin-top:-13px;padding:0 10px 1px;font-size:13px}.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){.adminbar{min-height:45px}.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}.scan form{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.scan.is-hidden form{opacity:.2;pointer-events:none}}.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%}@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:#008ec2;border-color:#006799;color:#fff;outline:0}.scan-submit:active{background:#0073aa;border-color:#006799;color:#fff}.scan-submit:visited{color:#555}.wrapper{position:relative;margin-bottom:60px;margin-left:320px}.wrapper:after,.wrapper:before{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:after,.editor-wrapper:before{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) 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:#82878c;z-index:-1}.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-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}}.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:active,.suggested-media-thumbnail:focus,.suggested-media-thumbnail:hover{color:#fff}.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{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){.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:#fff;color:rgba(255,255,255,.9)}.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{color:#fff}.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}}.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-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 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:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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}.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;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-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;border-color:#e5e5e5}.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;width:100%;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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%)}}.press-this .modal-close{display:block;width:100%;padding:13px 14px;border-bottom:1px solid #e5e5e5;color:#00a0d2;text-decoration:none;text-align:right}.press-this .modal-close:focus{outline:0;-webkit-box-shadow:inset -5px 0 0 #00a0d2;box-shadow:inset -5px 0 0 #00a0d2;border-color:#e5e5e5}.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}.wp-link-input input{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:50ms border-color ease-in-out;transition:50ms border-color ease-in-out}.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;font-size:14px}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:right;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#ddd}.wp-tags-autocomplete .ui-state-focus{background-color:#0073aa;color:#fff} \ No newline at end of file diff --git a/wp/wp-admin/css/press-this.css b/wp/wp-admin/css/press-this.css index 1ec3ba06..36b98881 100644 --- a/wp/wp-admin/css/press-this.css +++ b/wp/wp-admin/css/press-this.css @@ -770,38 +770,6 @@ dd { 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; - 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; @@ -817,10 +785,9 @@ dd { clear: both; } -.tagchecklist span { - display: block; - margin-right: 25px; +.tagchecklist > span { float: left; + margin-right: 25px; font-size: 13px; line-height: 1.8; white-space: nowrap; @@ -828,7 +795,7 @@ dd { } @media (max-width: 600px) { - .tagchecklist span { + .tagchecklist > span { margin-bottom: 15px; font-size: 16px; line-height: 1.3; @@ -836,36 +803,51 @@ dd { } .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; + width: 24px; + height: 24px; + border: none; + margin: 0 0 0 -19px; + padding: 0; + background: none; + cursor: pointer; + text-indent: 0;; + position: absolute; } -.tagchecklist .ntdelbutton:before { +.tagchecklist .ntdelbutton .remove-tag-icon:before { content: "\f153"; display: block; - margin: 2px 0; + margin-left: 2px; height: 20px; width: 20px; - background: 0 0; - color: #9ea7af; - font: 400 16px/1 dashicons; + -webkit-border-radius: 50%; + border-radius: 50%; + background: transparent; + color: #0073aa; + /* line-height tweak to vertically center the icon cross browsers */ + font: 400 16px/1.28 dashicons; text-align: center; - speak: none; -webkit-font-smoothing: antialiased; } -.tagchecklist .ntdelbutton:focus:before { - color: #00a0d2; +.tagchecklist .ntdelbutton:focus { + outline: 0; } +.tagchecklist .ntdelbutton:hover .remove-tag-icon:before, +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before { + color: #c00; +} + +.tagchecklist .ntdelbutton:focus .remove-tag-icon: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); +} /* THE TAG CLOUD. */ .tagsdiv + p { @@ -2194,6 +2176,7 @@ html { -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; + font-size: 14px; } .ui-autocomplete li { @@ -2201,9 +2184,16 @@ html { padding: 4px 10px; white-space: nowrap; text-align: left; -} - -.ui-autocomplete li.ui-state-focus { - background-color: #ddd; cursor: pointer; } + +/* Colors for the wplink toolbar autocomplete. */ +.ui-autocomplete .ui-state-focus { + background-color: #ddd; +} + +/* Colors for the tags autocomplete. */ +.wp-tags-autocomplete .ui-state-focus { + background-color: #0073aa; + color: #fff; +} diff --git a/wp/wp-admin/css/press-this.min.css b/wp/wp-admin/css/press-this.min.css index 2e3377a8..a6925ea3 100644 --- a/wp/wp-admin/css/press-this.min.css +++ b/wp/wp-admin/css/press-this.min.css @@ -1 +1 @@ -body,fieldset{margin:0}.screen-reader-text,fieldset,legend,td,th{padding:0}.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}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}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}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}.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:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-weight:400;line-height:1.6}b,dt,strong{font-weight:700}h1,h2,h3,h4,h5,h6{clear:both}p{margin-bottom:1.5em}.scan-submit{display:inline-block;margin:0;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none}.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;line-height:2}.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:#0085ba;border-color:#0073aa #006799 #006799;border-width:1px;border-style:solid;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.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:1px solid #006799;float:right}.split-button-toggle i{margin:4px 20px 3px 0;padding:0 10px}.split-button-primary:hover,.split-button-toggle:hover{outline:0;background:#008ec2;border-color:#006799}.split-button-primary:focus,.split-button-toggle:focus{outline:0;-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.split-button-primary:active,.split-button-toggle:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa;box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.postform,textarea{vertical-align:top}[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{overflow:auto;padding-left:3px}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-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,.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;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: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}.tagsdiv+p{margin:0}.press-this .tagcloud-link{display:block;margin:0 16px 5px;padding:0;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}}.press-this .add-cat-toggle{float:right;margin-top:-45px;line-height:20px;padding:12px 10px 8px;color:#0073aa}.press-this .add-cat-toggle:focus{text-decoration:none;color:#00a0d2}.press-this .add-cat-toggle.is-toggled{padding:10px}.press-this .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}.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;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}.alert,.scan{border-bottom:1px solid #e5e5e5}.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;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}.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}}@media (max-width:320px){body{font-size:14px}}.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:after{clear:both}.adminbar .dashicons{color:#a0a5aa}.press-this .adminbar button{position:absolute;top:50%;right:6px;margin-top:-13px;padding:0 10px 1px;font-size:13px}.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){.adminbar{min-height:45px}.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}.scan form{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.scan.is-hidden form{opacity:.2;pointer-events:none}}.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%}@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:#008ec2;border-color:#006799;color:#fff;outline:0}.scan-submit:active{background:#0073aa;border-color:#006799;color:#fff}.scan-submit:visited{color:#555}.wrapper{position:relative;margin-bottom:60px;margin-right:320px}.wrapper:after,.wrapper:before{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:after,.editor-wrapper:before{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) 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:#82878c;z-index:-1}.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-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}}.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:active,.suggested-media-thumbnail:focus,.suggested-media-thumbnail:hover{color:#fff}.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{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){.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:#fff;color:rgba(255,255,255,.9)}.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{color:#fff}.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}}.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-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 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:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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}.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;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-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;border-color:#e5e5e5}.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;width:100%;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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%)}}.press-this .modal-close{display:block;width:100%;padding:13px 14px;border-bottom:1px solid #e5e5e5;color:#00a0d2;text-decoration:none;text-align:left}.press-this .modal-close:focus{outline:0;-webkit-box-shadow:inset 5px 0 0 #00a0d2;box-shadow:inset 5px 0 0 #00a0d2;border-color:#e5e5e5}.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}.wp-link-input input{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:50ms border-color ease-in-out;transition:50ms border-color ease-in-out}.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} \ No newline at end of file +body,fieldset{margin:0}.screen-reader-text,fieldset,legend,td,th{padding:0}.scan-submit,.split-button-primary,.split-button-toggle{text-decoration:none;-webkit-appearance:none;cursor:pointer}.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}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}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}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}.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:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-weight:400;line-height:1.6}b,dt,strong{font-weight:700}h1,h2,h3,h4,h5,h6{clear:both}p{margin-bottom:1.5em}.scan-submit{display:inline-block;margin:0;white-space:nowrap}.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;line-height:2}.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;white-space:nowrap;line-height:2;padding:0 10px 1px;background:#0085ba;border-color:#0073aa #006799 #006799;border-width:1px;border-style:solid;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.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:1px solid #006799;float:right}.split-button-toggle i{margin:4px 20px 3px 0;padding:0 10px}.split-button-primary:hover,.split-button-toggle:hover{outline:0;background:#008ec2;border-color:#006799}.split-button-primary:focus,.split-button-toggle:focus{outline:0;-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.split-button-primary:active,.split-button-toggle:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa;box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.postform,textarea{vertical-align:top}[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{overflow:auto;padding-left:3px}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-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,.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}.tagchecklist{padding:16px 28px 5px}.tagchecklist:after,.tagchecklist:before{content:"";display:table}.tagchecklist:after{clear:both}.tagchecklist>span{float:left;margin-right:25px;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{width:24px;height:24px;border:none;margin:0 0 0 -19px;padding:0;background:0 0;cursor:pointer;text-indent:0;position:absolute}.tagchecklist .ntdelbutton .remove-tag-icon:before{content:"\f153";display:block;margin-left:2px;height:20px;width:20px;-webkit-border-radius:50%;border-radius:50%;background:0 0;color:#0073aa;font:400 16px/1.28 dashicons;text-align:center;-webkit-font-smoothing:antialiased}.tagchecklist .ntdelbutton:focus{outline:0}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before,.tagchecklist .ntdelbutton:hover .remove-tag-icon:before{color:#c00}.tagchecklist .ntdelbutton:focus .remove-tag-icon: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)}.tagsdiv+p{margin:0}.press-this .tagcloud-link{display:block;margin:0 16px 5px;padding:0;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}}.press-this .add-cat-toggle{float:right;margin-top:-45px;line-height:20px;padding:12px 10px 8px;color:#0073aa}.press-this .add-cat-toggle:focus{text-decoration:none;color:#00a0d2}.press-this .add-cat-toggle.is-toggled{padding:10px}.press-this .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}.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;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}.alert,.scan{border-bottom:1px solid #e5e5e5}.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;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}.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}}@media (max-width:320px){body{font-size:14px}}.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:after{clear:both}.adminbar .dashicons{color:#a0a5aa}.press-this .adminbar button{position:absolute;top:50%;right:6px;margin-top:-13px;padding:0 10px 1px;font-size:13px}.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){.adminbar{min-height:45px}.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}.scan form{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.scan.is-hidden form{opacity:.2;pointer-events:none}}.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%}@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:#008ec2;border-color:#006799;color:#fff;outline:0}.scan-submit:active{background:#0073aa;border-color:#006799;color:#fff}.scan-submit:visited{color:#555}.wrapper{position:relative;margin-bottom:60px;margin-right:320px}.wrapper:after,.wrapper:before{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:after,.editor-wrapper:before{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) 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:#82878c;z-index:-1}.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-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}}.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:active,.suggested-media-thumbnail:focus,.suggested-media-thumbnail:hover{color:#fff}.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{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){.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:#fff;color:rgba(255,255,255,.9)}.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{color:#fff}.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}}.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-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 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:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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}.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;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-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;border-color:#e5e5e5}.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;width:100%;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-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%)}}.press-this .modal-close{display:block;width:100%;padding:13px 14px;border-bottom:1px solid #e5e5e5;color:#00a0d2;text-decoration:none;text-align:left}.press-this .modal-close:focus{outline:0;-webkit-box-shadow:inset 5px 0 0 #00a0d2;box-shadow:inset 5px 0 0 #00a0d2;border-color:#e5e5e5}.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}.wp-link-input input{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:50ms border-color ease-in-out;transition:50ms border-color ease-in-out}.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;font-size:14px}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:left;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#ddd}.wp-tags-autocomplete .ui-state-focus{background-color:#0073aa;color:#fff} \ No newline at end of file diff --git a/wp/wp-admin/css/themes-rtl.css b/wp/wp-admin/css/themes-rtl.css index b6202982..0e5f8dcb 100644 --- a/wp/wp-admin/css/themes-rtl.css +++ b/wp/wp-admin/css/themes-rtl.css @@ -114,7 +114,7 @@ margin-left: 3px; } -.theme-browser .theme .theme-actions .button-secondary { +.theme-browser .theme .theme-actions .button { float: none; margin-right: 3px; } @@ -1017,7 +1017,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-install-php .wp-filter { - padding: 0 20px; + padding-right: 20px; } .theme-install-php a.upload, @@ -1176,12 +1176,143 @@ div#custom-background-image img { max-height: 300px; } +.background-position-control input[type="radio"]:checked ~ .button { + background: #eee; + border-color: #999; + -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 ); + z-index: 1; +} + +.background-position-control input[type="radio"]:focus ~ .button { + border-color: #5b9dd9; + -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, .5 ), 0 0 3px rgba( 0, 115, 170, .8 ); + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, .5 ), 0 0 3px rgba( 0, 115, 170, .8 ); + color: #23282d; +} + +.background-position-control .background-position-center-icon, +.background-position-control .background-position-center-icon:before { + display: inline-block; + line-height: 1; + text-align: center; + -webkit-transition: background-color .1s ease-in 0; + transition: background-color .1s ease-in 0; +} + +.background-position-control .background-position-center-icon { + height: 20px; + margin-top: 13px; + vertical-align: top; + width: 20px; +} + +.background-position-control .background-position-center-icon:before { + background-color: #555; + -webkit-border-radius: 50%; + border-radius: 50%; + content: ""; + height: 12px; + width: 12px; +} + +.background-position-control .button:hover .background-position-center-icon:before, +.background-position-control input[type="radio"]:focus ~ .button .background-position-center-icon:before { + background-color: #23282d; +} + +.background-position-control .button-group { + display: block; +} + +.background-position-control .button-group .button { + -webkit-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + /* Following properties are overridden by buttons responsive styles (see: wp-includes/css/buttons.css). */ + height: 40px !important; + line-height: 37px !important; + margin: 0 0 0 -1px !important; + padding: 0 10px 1px !important; + position: relative; +} + +.background-position-control .button-group .button:active, +.background-position-control .button-group .button:hover, +.background-position-control .button-group .button:focus { + z-index: 1; +} + +.background-position-control .button-group:last-child .button { + -webkit-box-shadow: 0 1px 0 #ccc; + box-shadow: 0 1px 0 #ccc; +} + +.background-position-control .button-group > label { + margin: 0 !important; +} + +.background-position-control .button-group:first-child > label:first-child .button { + -webkit-border-radius: 0 3px 0 0; + border-radius: 0 3px 0 0; +} + +.background-position-control .button-group:first-child > label:first-child .dashicons { + -webkit-transform: rotate( -45deg ); + -ms-transform: rotate( -45deg ); + transform: rotate( -45deg ); +} + +.background-position-control .button-group:first-child > label:last-child .button { + -webkit-border-radius: 3px 0 0 0; + border-radius: 3px 0 0 0; +} + +.background-position-control .button-group:first-child > label:last-child .dashicons { + -webkit-transform: rotate( 45deg ); + -ms-transform: rotate( 45deg ); + transform: rotate( 45deg ); +} + +.background-position-control .button-group:last-child > label:first-child .button { + -webkit-border-radius: 0 0 3px 0; + border-radius: 0 0 3px 0; +} + +.background-position-control .button-group:last-child > label:first-child .dashicons { + -webkit-transform: rotate( 45deg ); + -ms-transform: rotate( 45deg ); + transform: rotate( 45deg ); +} + +.background-position-control .button-group:last-child > label:last-child .button { + -webkit-border-radius: 0 0 0 3px; + border-radius: 0 0 0 3px; +} + +.background-position-control .button-group:last-child > label:last-child .dashicons { + -webkit-transform: rotate( -45deg ); + -ms-transform: rotate( -45deg ); + transform: rotate( -45deg ); +} + +.background-position-control .button-group .dashicons { + margin-top: 9px; +} + +.background-position-control .button-group + .button-group { + margin-top: -1px; +} + /*------------------------------------------------------------------------------ 23.0 - Full Overlay w/ Sidebar ------------------------------------------------------------------------------*/ body.full-overlay-active { overflow: hidden; + /* Hide all the content, the Customizer overlay is then made visible to be the only available content. */ + visibility: hidden; } .wp-full-overlay { @@ -1390,6 +1521,7 @@ body.full-overlay-active { box-shadow: none !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; + z-index: -1; /* Below device buttons */ } .wp-core-ui .wp-full-overlay .collapse-sidebar:hover, @@ -1485,7 +1617,7 @@ body.full-overlay-active { position: fixed; bottom: 0; right: 0; - width: 300px; + width: 299px; height: 45px; border-top: 1px solid #ddd; background: #eee; @@ -1493,6 +1625,9 @@ body.full-overlay-active { .wp-full-overlay-footer .devices { float: left; + background: #eee; + -webkit-box-shadow: 20px 0 10px -5px #eee; + box-shadow: 20px 0 10px -5px #eee; } .wp-full-overlay-footer .devices button { @@ -1506,8 +1641,12 @@ body.full-overlay-active { box-shadow: none; border-top: 1px solid transparent; border-bottom: 4px solid transparent; - -webkit-transition: background .1s ease-in-out; - transition: background .1s ease-in-out; + -webkit-transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; } .wp-full-overlay-footer .devices button:focus { @@ -1535,15 +1674,18 @@ body.full-overlay-active { background-color: #fff; } -.wp-full-overlay-footer .devices button:focus { - background-color: #fff; +.wp-full-overlay-footer .devices button:focus, +.wp-full-overlay-footer .devices button.active:hover { border-bottom-color: #0073aa; } -.wp-full-overlay-footer .devices button.active:before, +.wp-full-overlay-footer .devices button.active:before { + color: #191e23; +} + .wp-full-overlay-footer .devices button:hover:before, .wp-full-overlay-footer .devices button:focus:before { - color: #191e23; + color: #0073aa; } .wp-full-overlay-footer .devices .preview-desktop:before { @@ -1613,8 +1755,10 @@ body.full-overlay-active { height: 100%; } -.customize-active #customize-container { - display: block; +/* Make the Customizer and Theme installer overlays the only available content. */ +#customize-container, +.theme-install-overlay { + visibility: visible; } .customize-loading #customize-container iframe { diff --git a/wp/wp-admin/css/themes-rtl.min.css b/wp/wp-admin/css/themes-rtl.min.css index cdd6a8d4..ad2797e4 100644 --- a/wp/wp-admin/css/themes-rtl.min.css +++ b/wp/wp-admin/css/themes-rtl.min.css @@ -1 +1 @@ -.theme-browser .themes{clear:both}.themes-php:not(.network-admin) .wrap h1{margin-bottom:15px}.themes-php .wrap h1 .button{margin-right:20px}.themes-php .wp-filter-search{position:relative;top:-2px;right:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.theme .notice,.theme .notice.is-dismissible{right:0;margin:0;position:absolute;left:0;top:0}.theme-browser .theme{cursor:pointer;float:right;margin:0 0 4% 4%;position:relative;width:30.6%;border:1px solid #ddd;-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-backface-visibility:hidden;-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:20%;right:20%;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;-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.active .theme-name{background:#23282d;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{text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;right:0;left:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #d5d2ca;border:5px dashed rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.theme-overlay .theme-actions,.theme-overlay .theme-wrap{-webkit-box-sizing:border-box;-moz-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 .close,.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;background-color:transparent;height:48px;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;text-align:center}.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{width:50px;float:left;border:0;border-right:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:400 22px/50px dashicons!important;color:#72777c;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{color:#72777c;width:54px;float:right;border:0;border-left:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#ddd;border-color:#ccc;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{-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}.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-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,.1);box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}body.folded .theme-browser~.theme-overlay .theme-wrap{right:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;right:0;left:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;right:0;left:0;padding:10px 25px 5px;background:#f3f3f3;z-index:30;box-sizing:border-box;border-top:1px solid #eee}.theme-overlay .screenshot,.upload-plugin,.upload-theme{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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: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;-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;word-wrap:break-word;overflow-wrap:break-word}.theme-overlay .theme-version{color:#72777c;font-size:13px;font-weight:400;float:none;display:inline-block;margin-right:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#72777c;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .theme-author a{text-decoration:none}.theme-overlay .theme-description{color:#555;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.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:600;margin-left:5px}.theme-overlay .parent-theme{background:#f7fcfe;border:1px solid #eee;border-right:4px solid #00a0d2;font-size:14px;font-weight:400;margin-top:30px;padding:10px 20px 10px 10px}.theme-overlay .parent-theme strong{font-weight:700}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;right:auto;left:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 0 3% 3%}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-left:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-left:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 0 3% 3%}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-left:3%}.theme-browser .theme:nth-child(4n){margin-left:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-left:0}.theme-browser .theme:nth-child(even){margin-left:0}.theme-browser .theme:nth-child(odd){margin-left:5%}}@media only screen and (max-width:900px){.theme-overlay .theme-wrap{right:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;left:0;bottom:0;right:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:0;width:auto}.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-left:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-left:0}}@media only screen and (max-width:650px){.theme-overlay .theme-description{margin-right:0}.theme-overlay .theme-actions .delete-theme{position:relative;left:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;right:0;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 .notice-success p:before{color:#79ba49;content:"\f147";display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.theme-install.updated-message:before{content:''}.theme-install-php .wp-filter{padding:0 20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.plugin-install-tab-upload .upload-view-toggle .upload,.upload-view-toggle .browse{display:none}.plugin-install-tab-upload .upload-view-toggle .browse{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:50px 0;width:100%;overflow:hidden;position:relative;top:10px}.wp-full-overlay,.wp-full-overlay-main,.wp-full-overlay-sidebar{top:0;height:100%;bottom:0;right:0}.upload-plugin-wrap{display:none}.plugin-install-tab-upload .upload-plugin,.show-upload-view .upload-plugin,.show-upload-view .upload-plugin-wrap,.show-upload-view .upload-theme{display:block}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;max-width:380px}.upload-plugin .install-help,.upload-theme .install-help{color:#555d66;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}p.no-themes{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0;text-align:center;display:none}.no-results p.no-themes{display:block}.theme-install-php .add-new-theme{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0;text-align:right}}.theme-details .theme-rating{line-height:23px}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#72777c}.theme-details .no-rating{display:block;line-height:20px}.appearance_page_custom-header #headimg{border:1px solid #ddd;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{clear:both;margin:0 0 20px 20px;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-left:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #ddd}div#custom-background-image img{max-width:400px;max-height:300px}body.full-overlay-active{overflow:hidden}.wp-full-overlay{z-index:500000;position:fixed;overflow:visible;left:0;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;padding:0;margin:0;z-index:10;background:#eee;border-left:none}.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;left: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}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{border-right:0;border-top:0;border-bottom:0}.theme-install-overlay .close-full-overlay:before,.theme-install-overlay .next-theme:before,.theme-install-overlay .previous-theme:before{top:2px;right:0}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:0;right:0;padding:9px 10px 9px 0;height:45px;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;-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}.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar{padding:9px 10px}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-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}.wp-full-overlay{background:#191e23}.wp-full-overlay-main{background-color:#f1f1f1}.expanded .wp-full-overlay-footer{position:fixed;bottom:0;right:0;width:300px;height:45px;border-top:1px solid #ddd;background:#eee}.wp-full-overlay-footer .devices{float:left}.wp-full-overlay-footer .devices button{cursor:pointer;background:0 0;border:none;height:45px;padding:0 3px;margin:0 -4px 0 0;-webkit-box-shadow:none;box-shadow:none;border-top:1px solid transparent;border-bottom:4px solid transparent;-webkit-transition:background .1s ease-in-out;transition:background .1s ease-in-out}.wp-full-overlay-footer .devices button:before{display:inline-block;-webkit-font-smoothing:antialiased;font:400 20px/30px dashicons;vertical-align:top;margin:3px 0;padding:4px 8px;color:#656a6f}.wp-full-overlay-footer .devices button.active{border-bottom-color:#191e23}.wp-full-overlay-footer .devices button:focus,.wp-full-overlay-footer .devices button:hover{background-color:#fff}.wp-full-overlay-footer .devices button:focus{-webkit-box-shadow:none;box-shadow:none;outline:0;background-color:#fff;border-bottom-color:#0073aa}.wp-full-overlay-footer .devices button.active:before,.wp-full-overlay-footer .devices button:focus:before,.wp-full-overlay-footer .devices button:hover:before{color:#191e23}.wp-full-overlay-footer .devices .preview-desktop:before{content:"\f472"}.wp-full-overlay-footer .devices .preview-tablet:before{content:"\f471"}.wp-full-overlay-footer .devices .preview-mobile:before{content:"\f470"}@media screen and (max-width:1024px){.wp-full-overlay-footer .devices{display:none}}.collapsed .wp-full-overlay-footer .devices button:before{display:none}.preview-mobile .wp-full-overlay-main{margin:auto -160px auto 0;width:320px;height:480px;max-height:100%;max-width:100%;right:50%}.preview-tablet .wp-full-overlay-main{margin:auto -360px auto 0;width:720px;height:1080px;max-height:100%;max-width:100%;right:50%}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container{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-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:15px 0;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:right;color:#72777c;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .button{float:left;margin:8px 0 0 10px;line-height:26px}.theme-install-overlay .wp-full-overlay-sidebar{background:#eee;border-left:1px solid #ddd}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.theme-install-overlay .wp-full-overlay-main{position:absolute;z-index:0;background-color:#f1f1f1}.customize-loading #customize-container{background-color:#f1f1f1}#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;-webkit-transform:translateZ(0);transform:translateZ(0);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:before,.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);-webkit-background-size:15px 123px;background-size:15px 123px}#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:6px;line-height:normal}}@media aural{.theme .notice:before,.theme-info .updated-message:before,.theme-info .updating-message:before,.theme-install.updating-message:before{speak:none}} \ No newline at end of file +.theme-browser .themes{clear:both}.themes-php:not(.network-admin) .wrap h1{margin-bottom:15px}.themes-php .wrap h1 .button{margin-right:20px}.themes-php .wp-filter-search{position:relative;top:-2px;right:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.theme .notice,.theme .notice.is-dismissible{right:0;margin:0;position:absolute;left:0;top:0}.theme-browser .theme{cursor:pointer;float:right;margin:0 0 4% 4%;position:relative;width:30.6%;border:1px solid #ddd;-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{float:none;margin-right:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden;-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:20%;right:20%;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;-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.active .theme-name{background:#23282d;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{text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;right:0;left:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #d5d2ca;border:5px dashed rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.theme-overlay .theme-actions,.theme-overlay .theme-wrap{-webkit-box-sizing:border-box;-moz-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:#72777c;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#72777c;background-color:transparent;height:48px;width:54px;float:right;text-align:center;border:0;border-left:1px solid #ddd;-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}.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-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,.1);box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}body.folded .theme-browser~.theme-overlay .theme-wrap{right:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;right:0;left:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;right:0;left:0;padding:10px 25px 5px;background:#f3f3f3;z-index:30;box-sizing:border-box;border-top:1px solid #eee}.theme-overlay .screenshot,.upload-plugin,.upload-theme{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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: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;-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;word-wrap:break-word;overflow-wrap:break-word}.theme-overlay .theme-version{color:#72777c;font-size:13px;font-weight:400;float:none;display:inline-block;margin-right:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#72777c;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .theme-author a{text-decoration:none}.theme-overlay .theme-description{color:#555;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.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:600;margin-left:5px}.theme-overlay .parent-theme{background:#f7fcfe;border:1px solid #eee;border-right:4px solid #00a0d2;font-size:14px;font-weight:400;margin-top:30px;padding:10px 20px 10px 10px}.theme-overlay .parent-theme strong{font-weight:700}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;right:auto;left:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 0 3% 3%}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-left:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-left:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 0 3% 3%}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-left:3%}.theme-browser .theme:nth-child(4n){margin-left:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-left:0}.theme-browser .theme:nth-child(even){margin-left:0}.theme-browser .theme:nth-child(odd){margin-left:5%}}@media only screen and (max-width:900px){.theme-overlay .theme-wrap{right:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;left:0;bottom:0;right:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:0;width:auto}.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-left:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-left:0}}@media only screen and (max-width:650px){.theme-overlay .theme-description{margin-right:0}.theme-overlay .theme-actions .delete-theme{position:relative;left:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;right:0;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 .notice-success p:before{color:#79ba49;content:"\f147";display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.theme-install.updated-message:before{content:''}.theme-install-php .wp-filter{padding-right:20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.plugin-install-tab-upload .upload-view-toggle .upload,.upload-view-toggle .browse{display:none}.plugin-install-tab-upload .upload-view-toggle .browse{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:50px 0;width:100%;overflow:hidden;position:relative;top:10px}.upload-plugin-wrap{display:none}.plugin-install-tab-upload .upload-plugin,.show-upload-view .upload-plugin,.show-upload-view .upload-plugin-wrap,.show-upload-view .upload-theme{display:block}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;max-width:380px}.upload-plugin .install-help,.upload-theme .install-help{color:#555d66;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}p.no-themes{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0;text-align:center;display:none}.no-results p.no-themes{display:block}.theme-install-php .add-new-theme{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0;text-align:right}}.theme-details .theme-rating{line-height:23px}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#72777c}.theme-details .no-rating{display:block;line-height:20px}.appearance_page_custom-header #headimg{border:1px solid #ddd;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{clear:both;margin:0 0 20px 20px;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-left:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #ddd}div#custom-background-image img{max-width:400px;max-height:300px}.background-position-control input[type=radio]:checked~.button{background:#eee;border-color:#999;-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);z-index:1}.background-position-control input[type=radio]:focus~.button{border-color:#5b9dd9;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8);color:#23282d}.background-position-control .background-position-center-icon,.background-position-control .background-position-center-icon:before{display:inline-block;line-height:1;text-align:center;-webkit-transition:background-color .1s ease-in 0;transition:background-color .1s ease-in 0}.background-position-control .background-position-center-icon{height:20px;margin-top:13px;vertical-align:top;width:20px}.background-position-control .background-position-center-icon:before{background-color:#555;-webkit-border-radius:50%;border-radius:50%;content:"";height:12px;width:12px}.background-position-control .button:hover .background-position-center-icon:before,.background-position-control input[type=radio]:focus~.button .background-position-center-icon:before{background-color:#23282d}.background-position-control .button-group{display:block}.background-position-control .button-group .button{-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none;height:40px!important;line-height:37px!important;margin:0 0 0 -1px!important;padding:0 10px 1px!important;position:relative}.wp-full-overlay,.wp-full-overlay-sidebar{position:fixed;top:0;height:100%;bottom:0;right:0}.background-position-control .button-group .button:active,.background-position-control .button-group .button:focus,.background-position-control .button-group .button:hover{z-index:1}.background-position-control .button-group:last-child .button{-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc}.background-position-control .button-group>label{margin:0!important}.background-position-control .button-group:first-child>label:first-child .button{-webkit-border-radius:0 3px 0 0;border-radius:0 3px 0 0}.background-position-control .button-group:first-child>label:first-child .dashicons{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.background-position-control .button-group:first-child>label:last-child .button{-webkit-border-radius:3px 0 0;border-radius:3px 0 0}.background-position-control .button-group:first-child>label:last-child .dashicons{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.background-position-control .button-group:last-child>label:first-child .button{-webkit-border-radius:0 0 3px;border-radius:0 0 3px}.background-position-control .button-group:last-child>label:first-child .dashicons{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.background-position-control .button-group:last-child>label:last-child .button{-webkit-border-radius:0 0 0 3px;border-radius:0 0 0 3px}.background-position-control .button-group:last-child>label:last-child .dashicons{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.background-position-control .button-group .dashicons{margin-top:9px}.background-position-control .button-group+.button-group{margin-top:-1px}body.full-overlay-active{overflow:hidden;visibility:hidden}.wp-full-overlay{z-index:500000;overflow:visible;left:0;min-width:0}.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:300px;padding:0;margin:0;z-index:10;background:#eee;border-left:none}.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%}.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}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{border-right:0;border-top:0;border-bottom:0}.theme-install-overlay .close-full-overlay:before,.theme-install-overlay .next-theme:before,.theme-install-overlay .previous-theme:before{top:2px;right:0}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:0;right:0;padding:9px 10px 9px 0;height:45px;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:0!important;border-radius:0!important;z-index:-1}.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}.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar{padding:9px 10px}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-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}.wp-full-overlay{background:#191e23}.wp-full-overlay-main{background-color:#f1f1f1}.expanded .wp-full-overlay-footer{position:fixed;bottom:0;right:0;width:299px;height:45px;border-top:1px solid #ddd;background:#eee}.wp-full-overlay-footer .devices{float:left;background:#eee;-webkit-box-shadow:20px 0 10px -5px #eee;box-shadow:20px 0 10px -5px #eee}.wp-full-overlay-footer .devices button{cursor:pointer;background:0 0;border:none;height:45px;padding:0 3px;margin:0 -4px 0 0;-webkit-box-shadow:none;box-shadow:none;border-top:1px solid transparent;border-bottom:4px solid transparent;-webkit-transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.wp-full-overlay-footer .devices button:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.wp-full-overlay-footer .devices button:before{display:inline-block;-webkit-font-smoothing:antialiased;font:400 20px/30px dashicons;vertical-align:top;margin:3px 0;padding:4px 8px;color:#656a6f}.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,.theme-install-overlay{display:none}.wp-full-overlay-footer .devices button.active{border-bottom-color:#191e23}.wp-full-overlay-footer .devices button:focus,.wp-full-overlay-footer .devices button:hover{background-color:#fff}.wp-full-overlay-footer .devices button.active:hover,.wp-full-overlay-footer .devices button:focus{border-bottom-color:#0073aa}.wp-full-overlay-footer .devices button.active:before{color:#191e23}.wp-full-overlay-footer .devices button:focus:before,.wp-full-overlay-footer .devices button:hover:before{color:#0073aa}.wp-full-overlay-footer .devices .preview-desktop:before{content:"\f472"}.wp-full-overlay-footer .devices .preview-tablet:before{content:"\f471"}.wp-full-overlay-footer .devices .preview-mobile:before{content:"\f470"}@media screen and (max-width:1024px){.wp-full-overlay-footer .devices{display:none}}.collapsed .wp-full-overlay-footer .devices button:before{display:none}.preview-mobile .wp-full-overlay-main{margin:auto -160px auto 0;width:320px;height:480px;max-height:100%;max-width:100%;right:50%}.preview-tablet .wp-full-overlay-main{margin:auto -360px auto 0;width:720px;height:1080px;max-height:100%;max-width:100%;right:50%}#customize-container{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;right:0;left:0;height:100%}#customize-container,.theme-install-overlay{visibility:visible}.customize-loading #customize-container iframe{opacity:0}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .install-theme-info{display:block}.install-theme-info .theme-install{float:left;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:24px;margin-bottom:0;margin-top:0}.install-theme-info .theme-screenshot{margin:15px 0;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:right;color:#72777c;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .button{float:left;margin:8px 0 0 10px;line-height:26px}.theme-install-overlay .wp-full-overlay-sidebar{background:#eee;border-left:1px solid #ddd}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.theme-install-overlay .wp-full-overlay-main{position:absolute;z-index:0;background-color:#f1f1f1}.customize-loading #customize-container{background-color:#f1f1f1}#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;-webkit-transform:translateZ(0);transform:translateZ(0);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:before,.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);-webkit-background-size:15px 123px;background-size:15px 123px}#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:6px;line-height:normal}}@media aural{.theme .notice:before,.theme-info .updated-message:before,.theme-info .updating-message:before,.theme-install.updating-message:before{speak:none}} \ No newline at end of file diff --git a/wp/wp-admin/css/themes.css b/wp/wp-admin/css/themes.css index ab67ad06..db01ce10 100644 --- a/wp/wp-admin/css/themes.css +++ b/wp/wp-admin/css/themes.css @@ -114,7 +114,7 @@ margin-right: 3px; } -.theme-browser .theme .theme-actions .button-secondary { +.theme-browser .theme .theme-actions .button { float: none; margin-left: 3px; } @@ -1017,7 +1017,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-install-php .wp-filter { - padding: 0 20px; + padding-left: 20px; } .theme-install-php a.upload, @@ -1176,12 +1176,143 @@ div#custom-background-image img { max-height: 300px; } +.background-position-control input[type="radio"]:checked ~ .button { + background: #eee; + border-color: #999; + -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 ); + z-index: 1; +} + +.background-position-control input[type="radio"]:focus ~ .button { + border-color: #5b9dd9; + -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, .5 ), 0 0 3px rgba( 0, 115, 170, .8 ); + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, .5 ), 0 0 3px rgba( 0, 115, 170, .8 ); + color: #23282d; +} + +.background-position-control .background-position-center-icon, +.background-position-control .background-position-center-icon:before { + display: inline-block; + line-height: 1; + text-align: center; + -webkit-transition: background-color .1s ease-in 0; + transition: background-color .1s ease-in 0; +} + +.background-position-control .background-position-center-icon { + height: 20px; + margin-top: 13px; + vertical-align: top; + width: 20px; +} + +.background-position-control .background-position-center-icon:before { + background-color: #555; + -webkit-border-radius: 50%; + border-radius: 50%; + content: ""; + height: 12px; + width: 12px; +} + +.background-position-control .button:hover .background-position-center-icon:before, +.background-position-control input[type="radio"]:focus ~ .button .background-position-center-icon:before { + background-color: #23282d; +} + +.background-position-control .button-group { + display: block; +} + +.background-position-control .button-group .button { + -webkit-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + /* Following properties are overridden by buttons responsive styles (see: wp-includes/css/buttons.css). */ + height: 40px !important; + line-height: 37px !important; + margin: 0 -1px 0 0 !important; + padding: 0 10px 1px !important; + position: relative; +} + +.background-position-control .button-group .button:active, +.background-position-control .button-group .button:hover, +.background-position-control .button-group .button:focus { + z-index: 1; +} + +.background-position-control .button-group:last-child .button { + -webkit-box-shadow: 0 1px 0 #ccc; + box-shadow: 0 1px 0 #ccc; +} + +.background-position-control .button-group > label { + margin: 0 !important; +} + +.background-position-control .button-group:first-child > label:first-child .button { + -webkit-border-radius: 3px 0 0; + border-radius: 3px 0 0; +} + +.background-position-control .button-group:first-child > label:first-child .dashicons { + -webkit-transform: rotate( 45deg ); + -ms-transform: rotate( 45deg ); + transform: rotate( 45deg ); +} + +.background-position-control .button-group:first-child > label:last-child .button { + -webkit-border-radius: 0 3px 0 0; + border-radius: 0 3px 0 0; +} + +.background-position-control .button-group:first-child > label:last-child .dashicons { + -webkit-transform: rotate( -45deg ); + -ms-transform: rotate( -45deg ); + transform: rotate( -45deg ); +} + +.background-position-control .button-group:last-child > label:first-child .button { + -webkit-border-radius: 0 0 0 3px; + border-radius: 0 0 0 3px; +} + +.background-position-control .button-group:last-child > label:first-child .dashicons { + -webkit-transform: rotate( -45deg ); + -ms-transform: rotate( -45deg ); + transform: rotate( -45deg ); +} + +.background-position-control .button-group:last-child > label:last-child .button { + -webkit-border-radius: 0 0 3px 0; + border-radius: 0 0 3px 0; +} + +.background-position-control .button-group:last-child > label:last-child .dashicons { + -webkit-transform: rotate( 45deg ); + -ms-transform: rotate( 45deg ); + transform: rotate( 45deg ); +} + +.background-position-control .button-group .dashicons { + margin-top: 9px; +} + +.background-position-control .button-group + .button-group { + margin-top: -1px; +} + /*------------------------------------------------------------------------------ 23.0 - Full Overlay w/ Sidebar ------------------------------------------------------------------------------*/ body.full-overlay-active { overflow: hidden; + /* Hide all the content, the Customizer overlay is then made visible to be the only available content. */ + visibility: hidden; } .wp-full-overlay { @@ -1390,6 +1521,7 @@ body.full-overlay-active { box-shadow: none !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; + z-index: -1; /* Below device buttons */ } .wp-core-ui .wp-full-overlay .collapse-sidebar:hover, @@ -1485,7 +1617,7 @@ body.full-overlay-active { position: fixed; bottom: 0; left: 0; - width: 300px; + width: 299px; height: 45px; border-top: 1px solid #ddd; background: #eee; @@ -1493,6 +1625,9 @@ body.full-overlay-active { .wp-full-overlay-footer .devices { float: right; + background: #eee; + -webkit-box-shadow: -20px 0 10px -5px #eee; + box-shadow: -20px 0 10px -5px #eee; } .wp-full-overlay-footer .devices button { @@ -1506,8 +1641,12 @@ body.full-overlay-active { box-shadow: none; border-top: 1px solid transparent; border-bottom: 4px solid transparent; - -webkit-transition: background .1s ease-in-out; - transition: background .1s ease-in-out; + -webkit-transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; } .wp-full-overlay-footer .devices button:focus { @@ -1535,15 +1674,18 @@ body.full-overlay-active { background-color: #fff; } -.wp-full-overlay-footer .devices button:focus { - background-color: #fff; +.wp-full-overlay-footer .devices button:focus, +.wp-full-overlay-footer .devices button.active:hover { border-bottom-color: #0073aa; } -.wp-full-overlay-footer .devices button.active:before, +.wp-full-overlay-footer .devices button.active:before { + color: #191e23; +} + .wp-full-overlay-footer .devices button:hover:before, .wp-full-overlay-footer .devices button:focus:before { - color: #191e23; + color: #0073aa; } .wp-full-overlay-footer .devices .preview-desktop:before { @@ -1613,8 +1755,10 @@ body.full-overlay-active { height: 100%; } -.customize-active #customize-container { - display: block; +/* Make the Customizer and Theme installer overlays the only available content. */ +#customize-container, +.theme-install-overlay { + visibility: visible; } .customize-loading #customize-container iframe { diff --git a/wp/wp-admin/css/themes.min.css b/wp/wp-admin/css/themes.min.css index 0dc2017a..e904bb55 100644 --- a/wp/wp-admin/css/themes.min.css +++ b/wp/wp-admin/css/themes.min.css @@ -1 +1 @@ -.theme-browser .themes{clear:both}.themes-php:not(.network-admin) .wrap h1{margin-bottom:15px}.themes-php .wrap h1 .button{margin-left:20px}.themes-php .wp-filter-search{position:relative;top:-2px;left:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.theme .notice,.theme .notice.is-dismissible{left:0;margin:0;position:absolute;right:0;top:0}.theme-browser .theme{cursor:pointer;float:left;margin:0 4% 4% 0;position:relative;width:30.6%;border:1px solid #ddd;-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-backface-visibility:hidden;-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:20%;left:20%;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;-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.active .theme-name{background:#23282d;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{text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;left:0;right:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #d5d2ca;border:5px dashed rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.theme-overlay .theme-actions,.theme-overlay .theme-wrap{-webkit-box-sizing:border-box;-moz-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 .close,.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;background-color:transparent;height:48px;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;text-align:center}.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{width:50px;float:right;border:0;border-left:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:400 22px/50px dashicons!important;color:#72777c;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{color:#72777c;width:54px;float:left;border:0;border-right:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#ddd;border-color:#ccc;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{-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}.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-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,.1);box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}body.folded .theme-browser~.theme-overlay .theme-wrap{left:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;left:0;right:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;left:0;right:0;padding:10px 25px 5px;background:#f3f3f3;z-index:30;box-sizing:border-box;border-top:1px solid #eee}.theme-overlay .screenshot,.upload-plugin,.upload-theme{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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: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;-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;word-wrap:break-word;overflow-wrap:break-word}.theme-overlay .theme-version{color:#72777c;font-size:13px;font-weight:400;float:none;display:inline-block;margin-left:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#72777c;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .theme-author a{text-decoration:none}.theme-overlay .theme-description{color:#555;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.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:600;margin-right:5px}.theme-overlay .parent-theme{background:#f7fcfe;border:1px solid #eee;border-left:4px solid #00a0d2;font-size:14px;font-weight:400;margin-top:30px;padding:10px 10px 10px 20px}.theme-overlay .parent-theme strong{font-weight:700}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;left:auto;right:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 3% 3% 0}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-right:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-right:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 3% 3% 0}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-right:3%}.theme-browser .theme:nth-child(4n){margin-right:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-right:0}.theme-browser .theme:nth-child(even){margin-right:0}.theme-browser .theme:nth-child(odd){margin-right:5%}}@media only screen and (max-width:900px){.theme-overlay .theme-wrap{left:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;right:0;bottom:0;left:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:0;width:auto}.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-right:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-right:0}}@media only screen and (max-width:650px){.theme-overlay .theme-description{margin-left:0}.theme-overlay .theme-actions .delete-theme{position:relative;right:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;left:0;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 .notice-success p:before{color:#79ba49;content:"\f147";display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.theme-install.updated-message:before{content:''}.theme-install-php .wp-filter{padding:0 20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.plugin-install-tab-upload .upload-view-toggle .upload,.upload-view-toggle .browse{display:none}.plugin-install-tab-upload .upload-view-toggle .browse{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:50px 0;width:100%;overflow:hidden;position:relative;top:10px}.wp-full-overlay,.wp-full-overlay-main,.wp-full-overlay-sidebar{top:0;height:100%;bottom:0;left:0}.upload-plugin-wrap{display:none}.plugin-install-tab-upload .upload-plugin,.show-upload-view .upload-plugin,.show-upload-view .upload-plugin-wrap,.show-upload-view .upload-theme{display:block}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;max-width:380px}.upload-plugin .install-help,.upload-theme .install-help{color:#555d66;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}p.no-themes{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0;text-align:center;display:none}.no-results p.no-themes{display:block}.theme-install-php .add-new-theme{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0;text-align:left}}.theme-details .theme-rating{line-height:23px}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#72777c}.theme-details .no-rating{display:block;line-height:20px}.appearance_page_custom-header #headimg{border:1px solid #ddd;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:left;margin:0 20px 20px 0}.appearance_page_custom-header .random-header{clear:both;margin:0 20px 20px 0;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #ddd}div#custom-background-image img{max-width:400px;max-height:300px}body.full-overlay-active{overflow:hidden}.wp-full-overlay{z-index:500000;position:fixed;overflow:visible;right:0;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;padding:0;margin:0;z-index:10;background:#eee;border-right:none}.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;right: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}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{border-left:0;border-top:0;border-bottom:0}.theme-install-overlay .close-full-overlay:before,.theme-install-overlay .next-theme:before,.theme-install-overlay .previous-theme:before{top:2px;left:0}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:0;left:0;padding:9px 0 9px 10px;height:45px;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;-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}.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar{padding:9px 10px}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-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}.wp-full-overlay{background:#191e23}.wp-full-overlay-main{background-color:#f1f1f1}.expanded .wp-full-overlay-footer{position:fixed;bottom:0;left:0;width:300px;height:45px;border-top:1px solid #ddd;background:#eee}.wp-full-overlay-footer .devices{float:right}.wp-full-overlay-footer .devices button{cursor:pointer;background:0 0;border:none;height:45px;padding:0 3px;margin:0 0 0 -4px;-webkit-box-shadow:none;box-shadow:none;border-top:1px solid transparent;border-bottom:4px solid transparent;-webkit-transition:background .1s ease-in-out;transition:background .1s ease-in-out}.wp-full-overlay-footer .devices button:before{display:inline-block;-webkit-font-smoothing:antialiased;font:400 20px/30px dashicons;vertical-align:top;margin:3px 0;padding:4px 8px;color:#656a6f}.wp-full-overlay-footer .devices button.active{border-bottom-color:#191e23}.wp-full-overlay-footer .devices button:focus,.wp-full-overlay-footer .devices button:hover{background-color:#fff}.wp-full-overlay-footer .devices button:focus{-webkit-box-shadow:none;box-shadow:none;outline:0;background-color:#fff;border-bottom-color:#0073aa}.wp-full-overlay-footer .devices button.active:before,.wp-full-overlay-footer .devices button:focus:before,.wp-full-overlay-footer .devices button:hover:before{color:#191e23}.wp-full-overlay-footer .devices .preview-desktop:before{content:"\f472"}.wp-full-overlay-footer .devices .preview-tablet:before{content:"\f471"}.wp-full-overlay-footer .devices .preview-mobile:before{content:"\f470"}@media screen and (max-width:1024px){.wp-full-overlay-footer .devices{display:none}}.collapsed .wp-full-overlay-footer .devices button:before{display:none}.preview-mobile .wp-full-overlay-main{margin:auto 0 auto -160px;width:320px;height:480px;max-height:100%;max-width:100%;left:50%}.preview-tablet .wp-full-overlay-main{margin:auto 0 auto -360px;width:720px;height:1080px;max-height:100%;max-width:100%;left:50%}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container{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-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:15px 0;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:left;color:#72777c;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .button{float:right;margin:8px 10px 0 0;line-height:26px}.theme-install-overlay .wp-full-overlay-sidebar{background:#eee;border-right:1px solid #ddd}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.theme-install-overlay .wp-full-overlay-main{position:absolute;z-index:0;background-color:#f1f1f1}.customize-loading #customize-container{background-color:#f1f1f1}#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;-webkit-transform:translateZ(0);transform:translateZ(0);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:before,.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);-webkit-background-size:15px 123px;background-size:15px 123px}#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:6px;line-height:normal}}@media aural{.theme .notice:before,.theme-info .updated-message:before,.theme-info .updating-message:before,.theme-install.updating-message:before{speak:none}} \ No newline at end of file +.theme-browser .themes{clear:both}.themes-php:not(.network-admin) .wrap h1{margin-bottom:15px}.themes-php .wrap h1 .button{margin-left:20px}.themes-php .wp-filter-search{position:relative;top:-2px;left:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.theme .notice,.theme .notice.is-dismissible{left:0;margin:0;position:absolute;right:0;top:0}.theme-browser .theme{cursor:pointer;float:left;margin:0 4% 4% 0;position:relative;width:30.6%;border:1px solid #ddd;-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{float:none;margin-left:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden;-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:20%;left:20%;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;-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.active .theme-name{background:#23282d;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{text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;left:0;right:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #d5d2ca;border:5px dashed rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.theme-overlay .theme-actions,.theme-overlay .theme-wrap{-webkit-box-sizing:border-box;-moz-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:#72777c;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#72777c;background-color:transparent;height:48px;width:54px;float:left;text-align:center;border:0;border-right:1px solid #ddd;-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}.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-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,.1);box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}body.folded .theme-browser~.theme-overlay .theme-wrap{left:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;left:0;right:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;left:0;right:0;padding:10px 25px 5px;background:#f3f3f3;z-index:30;box-sizing:border-box;border-top:1px solid #eee}.theme-overlay .screenshot,.upload-plugin,.upload-theme{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.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: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;-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;word-wrap:break-word;overflow-wrap:break-word}.theme-overlay .theme-version{color:#72777c;font-size:13px;font-weight:400;float:none;display:inline-block;margin-left:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#72777c;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .theme-author a{text-decoration:none}.theme-overlay .theme-description{color:#555;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.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:600;margin-right:5px}.theme-overlay .parent-theme{background:#f7fcfe;border:1px solid #eee;border-left:4px solid #00a0d2;font-size:14px;font-weight:400;margin-top:30px;padding:10px 10px 10px 20px}.theme-overlay .parent-theme strong{font-weight:700}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;left:auto;right:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 3% 3% 0}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-right:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-right:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 3% 3% 0}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-right:3%}.theme-browser .theme:nth-child(4n){margin-right:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-right:0}.theme-browser .theme:nth-child(even){margin-right:0}.theme-browser .theme:nth-child(odd){margin-right:5%}}@media only screen and (max-width:900px){.theme-overlay .theme-wrap{left:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;right:0;bottom:0;left:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:0;width:auto}.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-right:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-right:0}}@media only screen and (max-width:650px){.theme-overlay .theme-description{margin-left:0}.theme-overlay .theme-actions .delete-theme{position:relative;right:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;left:0;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 .notice-success p:before{color:#79ba49;content:"\f147";display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.theme-install.updated-message:before{content:''}.theme-install-php .wp-filter{padding-left:20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.plugin-install-tab-upload .upload-view-toggle .upload,.upload-view-toggle .browse{display:none}.plugin-install-tab-upload .upload-view-toggle .browse{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:50px 0;width:100%;overflow:hidden;position:relative;top:10px}.upload-plugin-wrap{display:none}.plugin-install-tab-upload .upload-plugin,.show-upload-view .upload-plugin,.show-upload-view .upload-plugin-wrap,.show-upload-view .upload-theme{display:block}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;max-width:380px}.upload-plugin .install-help,.upload-theme .install-help{color:#555d66;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}p.no-themes{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0;text-align:center;display:none}.no-results p.no-themes{display:block}.theme-install-php .add-new-theme{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0;text-align:left}}.theme-details .theme-rating{line-height:23px}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#72777c}.theme-details .no-rating{display:block;line-height:20px}.appearance_page_custom-header #headimg{border:1px solid #ddd;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:left;margin:0 20px 20px 0}.appearance_page_custom-header .random-header{clear:both;margin:0 20px 20px 0;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #ddd}div#custom-background-image img{max-width:400px;max-height:300px}.background-position-control input[type=radio]:checked~.button{background:#eee;border-color:#999;-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);z-index:1}.background-position-control input[type=radio]:focus~.button{border-color:#5b9dd9;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8);color:#23282d}.background-position-control .background-position-center-icon,.background-position-control .background-position-center-icon:before{display:inline-block;line-height:1;text-align:center;-webkit-transition:background-color .1s ease-in 0;transition:background-color .1s ease-in 0}.background-position-control .background-position-center-icon{height:20px;margin-top:13px;vertical-align:top;width:20px}.background-position-control .background-position-center-icon:before{background-color:#555;-webkit-border-radius:50%;border-radius:50%;content:"";height:12px;width:12px}.background-position-control .button:hover .background-position-center-icon:before,.background-position-control input[type=radio]:focus~.button .background-position-center-icon:before{background-color:#23282d}.background-position-control .button-group{display:block}.background-position-control .button-group .button{-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none;height:40px!important;line-height:37px!important;margin:0 -1px 0 0!important;padding:0 10px 1px!important;position:relative}.wp-full-overlay,.wp-full-overlay-sidebar{position:fixed;top:0;height:100%;bottom:0;left:0}.background-position-control .button-group .button:active,.background-position-control .button-group .button:focus,.background-position-control .button-group .button:hover{z-index:1}.background-position-control .button-group:last-child .button{-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc}.background-position-control .button-group>label{margin:0!important}.background-position-control .button-group:first-child>label:first-child .button{-webkit-border-radius:3px 0 0;border-radius:3px 0 0}.background-position-control .button-group:first-child>label:first-child .dashicons{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.background-position-control .button-group:first-child>label:last-child .button{-webkit-border-radius:0 3px 0 0;border-radius:0 3px 0 0}.background-position-control .button-group:first-child>label:last-child .dashicons{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.background-position-control .button-group:last-child>label:first-child .button{-webkit-border-radius:0 0 0 3px;border-radius:0 0 0 3px}.background-position-control .button-group:last-child>label:first-child .dashicons{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.background-position-control .button-group:last-child>label:last-child .button{-webkit-border-radius:0 0 3px;border-radius:0 0 3px}.background-position-control .button-group:last-child>label:last-child .dashicons{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.background-position-control .button-group .dashicons{margin-top:9px}.background-position-control .button-group+.button-group{margin-top:-1px}body.full-overlay-active{overflow:hidden;visibility:hidden}.wp-full-overlay{z-index:500000;overflow:visible;right:0;min-width:0}.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:300px;padding:0;margin:0;z-index:10;background:#eee;border-right:none}.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%}.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}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{border-left:0;border-top:0;border-bottom:0}.theme-install-overlay .close-full-overlay:before,.theme-install-overlay .next-theme:before,.theme-install-overlay .previous-theme:before{top:2px;left:0}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:0;left:0;padding:9px 0 9px 10px;height:45px;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:0!important;border-radius:0!important;z-index:-1}.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}.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar{padding:9px 10px}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-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}.wp-full-overlay{background:#191e23}.wp-full-overlay-main{background-color:#f1f1f1}.expanded .wp-full-overlay-footer{position:fixed;bottom:0;left:0;width:299px;height:45px;border-top:1px solid #ddd;background:#eee}.wp-full-overlay-footer .devices{float:right;background:#eee;-webkit-box-shadow:-20px 0 10px -5px #eee;box-shadow:-20px 0 10px -5px #eee}.wp-full-overlay-footer .devices button{cursor:pointer;background:0 0;border:none;height:45px;padding:0 3px;margin:0 0 0 -4px;-webkit-box-shadow:none;box-shadow:none;border-top:1px solid transparent;border-bottom:4px solid transparent;-webkit-transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.wp-full-overlay-footer .devices button:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.wp-full-overlay-footer .devices button:before{display:inline-block;-webkit-font-smoothing:antialiased;font:400 20px/30px dashicons;vertical-align:top;margin:3px 0;padding:4px 8px;color:#656a6f}.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,.theme-install-overlay{display:none}.wp-full-overlay-footer .devices button.active{border-bottom-color:#191e23}.wp-full-overlay-footer .devices button:focus,.wp-full-overlay-footer .devices button:hover{background-color:#fff}.wp-full-overlay-footer .devices button.active:hover,.wp-full-overlay-footer .devices button:focus{border-bottom-color:#0073aa}.wp-full-overlay-footer .devices button.active:before{color:#191e23}.wp-full-overlay-footer .devices button:focus:before,.wp-full-overlay-footer .devices button:hover:before{color:#0073aa}.wp-full-overlay-footer .devices .preview-desktop:before{content:"\f472"}.wp-full-overlay-footer .devices .preview-tablet:before{content:"\f471"}.wp-full-overlay-footer .devices .preview-mobile:before{content:"\f470"}@media screen and (max-width:1024px){.wp-full-overlay-footer .devices{display:none}}.collapsed .wp-full-overlay-footer .devices button:before{display:none}.preview-mobile .wp-full-overlay-main{margin:auto 0 auto -160px;width:320px;height:480px;max-height:100%;max-width:100%;left:50%}.preview-tablet .wp-full-overlay-main{margin:auto 0 auto -360px;width:720px;height:1080px;max-height:100%;max-width:100%;left:50%}#customize-container{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%}#customize-container,.theme-install-overlay{visibility:visible}.customize-loading #customize-container iframe{opacity:0}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .install-theme-info{display:block}.install-theme-info .theme-install{float:right;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:24px;margin-bottom:0;margin-top:0}.install-theme-info .theme-screenshot{margin:15px 0;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:left;color:#72777c;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .button{float:right;margin:8px 10px 0 0;line-height:26px}.theme-install-overlay .wp-full-overlay-sidebar{background:#eee;border-right:1px solid #ddd}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.theme-install-overlay .wp-full-overlay-main{position:absolute;z-index:0;background-color:#f1f1f1}.customize-loading #customize-container{background-color:#f1f1f1}#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;-webkit-transform:translateZ(0);transform:translateZ(0);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:before,.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);-webkit-background-size:15px 123px;background-size:15px 123px}#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:6px;line-height:normal}}@media aural{.theme .notice:before,.theme-info .updated-message:before,.theme-info .updating-message:before,.theme-install.updating-message:before{speak:none}} \ No newline at end of file diff --git a/wp/wp-admin/custom-background.php b/wp/wp-admin/custom-background.php index a03986f5..bea4084c 100644 --- a/wp/wp-admin/custom-background.php +++ b/wp/wp-admin/custom-background.php @@ -97,8 +97,8 @@ class Custom_Background { get_current_screen()->set_help_sidebar( '

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

' . - '

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

' . - '

' . __( 'Support Forums' ) . '

' + '

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

' . + '

' . __( 'Support Forums' ) . '

' ); wp_enqueue_media(); @@ -133,31 +133,73 @@ class Custom_Background { 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 + if ( isset( $_POST['background-preset'] ) ) { + check_admin_referer( 'custom-background' ); + + if ( in_array( $_POST['background-preset'], array( 'default', 'fill', 'fit', 'repeat', 'custom' ), true ) ) { + $preset = $_POST['background-preset']; + } else { + $preset = 'default'; + } + + set_theme_mod( 'background_preset', $preset ); + } + + if ( isset( $_POST['background-position'] ) ) { + check_admin_referer( 'custom-background' ); + + $position = explode( ' ', $_POST['background-position'] ); + + if ( in_array( $position[0], array( 'left', 'center', 'right' ), true ) ) { + $position_x = $position[0]; + } else { + $position_x = 'left'; + } + + if ( in_array( $position[1], array( 'top', 'center', 'bottom' ), true ) ) { + $position_y = $position[1]; + } else { + $position_y = 'top'; + } + + set_theme_mod( 'background_position_x', $position_x ); + set_theme_mod( 'background_position_y', $position_y ); + } + + if ( isset( $_POST['background-size'] ) ) { + check_admin_referer( 'custom-background' ); + + if ( in_array( $_POST['background-size'], array( 'auto', 'contain', 'cover' ), true ) ) { + $size = $_POST['background-size']; + } else { + $size = 'auto'; + } + + set_theme_mod( 'background_size', $size ); + } + + if ( isset( $_POST['background-repeat'] ) ) { + check_admin_referer( 'custom-background' ); + + $repeat = $_POST['background-repeat']; + + if ( 'no-repeat' !== $repeat ) { $repeat = 'repeat'; - set_theme_mod('background_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 ( 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); + $attachment = $_POST['background-attachment']; + + if ( 'fixed' !== $attachment ) { + $attachment = 'scroll'; + } + + set_theme_mod( 'background_attachment', $attachment ); } if ( isset($_POST['background-color']) ) { @@ -219,11 +261,18 @@ class Custom_Background { $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_position_x = get_theme_mod( 'background_position_x', get_theme_support( 'custom-background', 'default-position-x' ) ); + $background_position_y = get_theme_mod( 'background_position_y', get_theme_support( 'custom-background', 'default-position-y' ) ); + $background_size = get_theme_mod( 'background_size', get_theme_support( 'custom-background', 'default-size' ) ); + $background_repeat = get_theme_mod( 'background_repeat', get_theme_support( 'custom-background', 'default-repeat' ) ); + $background_attachment = get_theme_mod( 'background_attachment', get_theme_support( 'custom-background', 'default-attachment' ) ); // 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' ) ); + $background_styles .= " background-image: url('$background_image_thumb');" + . " background-size: $background_size;" + . " background-position: $background_position_x $background_position_y;" + . " background-repeat: $background_repeat;" + . " background-attachment: $background_attachment;"; } ?>
@@ -242,7 +291,7 @@ class Custom_Background {
-
+
@@ -256,7 +305,7 @@ class Custom_Background {
-
+
@@ -272,7 +321,7 @@ class Custom_Background { - +


@@ -287,50 +336,81 @@ class Custom_Background { -

+

+ + + array( 'label' => __( 'Top Left' ), 'icon' => 'dashicons dashicons-arrow-left-alt' ), + 'center top' => array( 'label' => __( 'Top' ), 'icon' => 'dashicons dashicons-arrow-up-alt' ), + 'right top' => array( 'label' => __( 'Top Right' ), 'icon' => 'dashicons dashicons-arrow-right-alt' ), + ), + array( + 'left center' => array( 'label' => __( 'Left' ), 'icon' => 'dashicons dashicons-arrow-left-alt' ), + 'center center' => array( 'label' => __( 'Center' ), 'icon' => 'background-position-center-icon' ), + 'right center' => array( 'label' => __( 'Right' ), 'icon' => 'dashicons dashicons-arrow-right-alt' ), + ), + array( + 'left bottom' => array( 'label' => __( 'Bottom Left' ), 'icon' => 'dashicons dashicons-arrow-left-alt' ), + 'center bottom' => array( 'label' => __( 'Bottom' ), 'icon' => 'dashicons dashicons-arrow-down-alt' ), + 'right bottom' => array( 'label' => __( 'Bottom Right' ), 'icon' => 'dashicons dashicons-arrow-right-alt' ), + ), +); +?> - - + - - + - - + + + + + + @@ -342,7 +422,7 @@ $default_color = ''; if ( current_theme_supports( 'custom-background', 'default-color' ) ) $default_color = ' data-default-color="#' . esc_attr( get_theme_support( 'custom-background', 'default-color' ) ) . '"'; ?> - /> +> diff --git a/wp/wp-admin/custom-header.php b/wp/wp-admin/custom-header.php index fc5adb67..5cc64ef7 100644 --- a/wp/wp-admin/custom-header.php +++ b/wp/wp-admin/custom-header.php @@ -124,8 +124,8 @@ class Custom_Image_Header { get_current_screen()->set_help_sidebar( '

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

' . - '

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

' . - '

' . __( 'Support Forums' ) . '

' + '

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

' . + '

' . __( 'Support Forums' ) . '

' ); } @@ -576,7 +576,7 @@ class Custom_Image_Header { - +

@@ -823,7 +823,7 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>

diff --git a/wp/wp-admin/customize.php b/wp/wp-admin/customize.php index bd8e1181..44654c00 100644 --- a/wp/wp-admin/customize.php +++ b/wp/wp-admin/customize.php @@ -20,6 +20,31 @@ if ( ! current_user_can( 'customize' ) ) { ); } +/** + * @global WP_Scripts $wp_scripts + * @global WP_Customize_Manager $wp_customize + */ +global $wp_scripts, $wp_customize; + +if ( $wp_customize->changeset_post_id() ) { + if ( ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->edit_post, $wp_customize->changeset_post_id() ) ) { + wp_die( + '

' . __( 'Cheatin’ uh?' ) . '

' . + '

' . __( 'Sorry, you are not allowed to edit this changeset.' ) . '

', + 403 + ); + } + if ( in_array( get_post_status( $wp_customize->changeset_post_id() ), array( 'publish', 'trash' ), true ) ) { + wp_die( + '

' . __( 'Cheatin’ uh?' ) . '

' . + '

' . __( 'This changeset has already been published and cannot be further modified.' ) . '

' . + '

' . __( 'Customize New Changes' ) . '

', + 403 + ); + } +} + + wp_reset_vars( array( 'url', 'return', 'autofocus' ) ); if ( ! empty( $url ) ) { $wp_customize->set_preview_url( wp_unslash( $url ) ); @@ -31,12 +56,6 @@ if ( ! empty( $autofocus ) && is_array( $autofocus ) ) { $wp_customize->set_autofocus( wp_unslash( $autofocus ) ); } -/** - * @global WP_Scripts $wp_scripts - * @global WP_Customize_Manager $wp_customize - */ -global $wp_scripts, $wp_customize; - $registered = $wp_scripts->registered; $wp_scripts = new WP_Scripts; $wp_scripts->registered = $registered; @@ -115,7 +134,11 @@ do_action( 'customize_controls_print_scripts' );
is_theme_active() ? __( 'Save & Publish' ) : __( 'Save & Activate' ); - submit_button( $save_text, 'primary save', 'save', false ); + $save_attrs = array(); + if ( ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->publish_posts ) ) { + $save_attrs['style'] = 'display: none'; + } + submit_button( $save_text, 'primary save', 'save', false, $save_attrs ); ?>
-
+
@@ -168,9 +191,9 @@ do_action( 'customize_controls_print_scripts' ); - diff --git a/wp/wp-admin/edit-comments.php b/wp/wp-admin/edit-comments.php index f0ecec92..a33f986b 100644 --- a/wp/wp-admin/edit-comments.php +++ b/wp/wp-admin/edit-comments.php @@ -82,6 +82,22 @@ if ( $doaction ) { } } + if ( ! in_array( $doaction, array( 'approve', 'unapprove', 'spam', 'unspam', 'trash', 'delete' ), true ) ) { + /** + * Fires when a custom bulk action should be handled. + * + * The redirect link should be modified with success or failure feedback + * from the action to be used to display feedback to the user. + * + * @since 4.7.0 + * + * @param string $redirect_url The redirect URL. + * @param string $doaction The action being taken. + * @param array $items The items to take the action on. + */ + $redirect_to = apply_filters( 'handle_bulk_actions-' . get_current_screen()->id, $redirect_to, $doaction, $comment_ids ); + } + wp_defer_comment_counting( false ); if ( $approved ) @@ -162,10 +178,10 @@ get_current_screen()->add_help_tab( array( get_current_screen()->set_help_sidebar( '

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

' . - '

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

' . - '

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

' . - '

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

' . - '

' . __( 'Support Forums' ) . '

' + '

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

' . + '

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

' . + '

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

' . + '

' . __( 'Support Forums' ) . '

' ); get_current_screen()->set_screen_reader_content( array( diff --git a/wp/wp-admin/edit-form-advanced.php b/wp/wp-admin/edit-form-advanced.php index bd229b90..803300f4 100644 --- a/wp/wp-admin/edit-form-advanced.php +++ b/wp/wp-admin/edit-form-advanced.php @@ -259,8 +259,9 @@ foreach ( get_object_taxonomies( $post ) as $tax_name ) { 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 ( post_type_supports( $post_type, 'page-attributes' ) || count( get_page_templates( $post ) ) > 0 ) { + add_meta_box( 'pageparentdiv', $post_type_object->labels->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'); @@ -331,7 +332,7 @@ do_action( 'add_meta_boxes', $post_type, $post ); * * @param WP_Post $post Post object. */ -do_action( 'add_meta_boxes_' . $post_type, $post ); +do_action( "add_meta_boxes_{$post_type}", $post ); /** * Fires after meta boxes have been added. @@ -378,8 +379,8 @@ if ( 'post' == $post_type ) { 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') . '

' + '

' . __('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.') . '

' . @@ -393,9 +394,9 @@ if ( 'post' == $post_type ) { get_current_screen()->set_help_sidebar( '

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

' . - '

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

' . - '

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

' . - '

' . __('Support Forums') . '

' + '

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

' . + '

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

' . + '

' . __('Support Forums') . '

' ); } elseif ( 'attachment' == $post_type ) { get_current_screen()->add_help_tab( array( @@ -410,8 +411,8 @@ if ( 'post' == $post_type ) { get_current_screen()->set_help_sidebar( '

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

' . - '

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

' . - '

' . __('Support Forums') . '

' + '

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

' . + '

' . __('Support Forums') . '

' ); } @@ -473,11 +474,18 @@ require_once( ABSPATH . 'wp-admin/admin-header.php' ); ?>
-

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

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

@@ -631,8 +639,10 @@ if ( post_type_supports($post_type, 'editor') ) { if ( 'auto-draft' != $post->post_status ) { echo ''; if ( $last_user = get_userdata( get_post_meta( $post_ID, '_edit_last', true ) ) ) { + /* translators: 1: Name of most recent post author, 2: Post edited date, 3: Post edited time */ printf( __( 'Last edited by %1$s on %2$s at %3$s' ), esc_html( $last_user->display_name ), mysql2date( __( 'F j, Y' ), $post->post_modified ), mysql2date( __( 'g:i a' ), $post->post_modified ) ); } else { + /* translators: 1: Post edited date, 2: Post edited time */ printf( __( 'Last edited on %1$s at %2$s' ), mysql2date( __( 'F j, Y' ), $post->post_modified ), mysql2date( __( 'g:i a' ), $post->post_modified ) ); } echo ''; diff --git a/wp/wp-admin/edit-form-comment.php b/wp/wp-admin/edit-form-comment.php index 9fac3e93..2ae7957f 100644 --- a/wp/wp-admin/edit-form-comment.php +++ b/wp/wp-admin/edit-form-comment.php @@ -162,7 +162,7 @@ endif; ?> comment_ID&_wp_original_http_referer=" . urlencode(wp_get_referer()), 'delete-comment_' . $comment->comment_ID) . "'>" . ( !EMPTY_TRASH_DAYS ? __('Delete Permanently') : __('Move to Trash') ) . "\n"; ?>
- +
diff --git a/wp/wp-admin/edit-link-form.php b/wp/wp-admin/edit-link-form.php index ff02e394..e25841d3 100644 --- a/wp/wp-admin/edit-link-form.php +++ b/wp/wp-admin/edit-link-form.php @@ -57,13 +57,13 @@ get_current_screen()->add_help_tab( array( '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.' ) . '

' + '

' . __( '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' ) . '

' + '

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

' . + '

' . __( 'Support Forums' ) . '

' ); require_once( ABSPATH . 'wp-admin/admin-header.php' ); diff --git a/wp/wp-admin/edit-tag-form.php b/wp/wp-admin/edit-tag-form.php index 7d218dd5..d233b309 100644 --- a/wp/wp-admin/edit-tag-form.php +++ b/wp/wp-admin/edit-tag-form.php @@ -78,24 +78,17 @@ do_action( "{$taxonomy}_pre_edit_form", $tag, $taxonomy ); ?> /* translators: %s: taxonomy name */ printf( _x( '← Back to %s', 'admin screen' ), $tax->labels->name ); ?>

- -

labels->name ); - ?>

-name, get_taxonomies( array( 'show_ui' => true ) ) ) ) { - wp_die( __( 'Sorry, you are not allowed to manage these items.' ) ); + wp_die( __( 'Sorry, you are not allowed to edit terms in this taxonomy.' ) ); } if ( ! current_user_can( $tax->cap->manage_terms ) ) { wp_die( '

' . __( 'Cheatin’ uh?' ) . '

' . - '

' . __( 'Sorry, you are not allowed to manage these items.' ) . '

', + '

' . __( 'Sorry, you are not allowed to manage terms in this taxonomy.' ) . '

', 403 ); } @@ -61,46 +61,33 @@ get_current_screen()->set_screen_reader_content( array( $location = false; $referer = wp_get_referer(); +if ( ! $referer ) { // For POST requests. + $referer = wp_unslash( $_SERVER['REQUEST_URI'] ); +} +$referer = remove_query_arg( array( '_wp_http_referer', '_wpnonce', 'error', 'message', 'paged' ), $referer ); 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?' ) . '

' . - '

' . __( 'Sorry, you are not allowed to add this item.' ) . '

', + '

' . __( 'Sorry, you are not allowed to create terms in this taxonomy.' ) . '

', 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 && 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 ); + $location = add_query_arg( array( 'error' => true, 'message' => 4 ), $referer ); break; case 'delete': - $location = 'edit-tags.php?taxonomy=' . $taxonomy; - if ( 'post' != $post_type ) - $location .= '&post_type=' . $post_type; - - if ( $referer && false !== strpos( $referer, 'edit-tags.php' ) ) { - $location = $referer; - } - if ( ! isset( $_REQUEST['tag_ID'] ) ) { break; } @@ -108,7 +95,7 @@ case 'delete': $tag_ID = (int) $_REQUEST['tag_ID']; check_admin_referer( 'delete-tag_' . $tag_ID ); - if ( ! current_user_can( $tax->cap->delete_terms ) ) { + if ( ! current_user_can( 'delete_term', $tag_ID ) ) { wp_die( '

' . __( 'Cheatin’ uh?' ) . '

' . '

' . __( 'Sorry, you are not allowed to delete this item.' ) . '

', @@ -118,7 +105,7 @@ case 'delete': wp_delete_term( $tag_ID, $taxonomy ); - $location = add_query_arg( 'message', 2, $location ); + $location = add_query_arg( 'message', 2, $referer ); break; @@ -138,14 +125,7 @@ case 'bulk-delete': wp_delete_term( $tag_ID, $taxonomy ); } - $location = 'edit-tags.php?taxonomy=' . $taxonomy; - if ( 'post' != $post_type ) - $location .= '&post_type=' . $post_type; - if ( $referer && false !== strpos( $referer, 'edit-tags.php' ) ) { - $location = $referer; - } - - $location = add_query_arg( 'message', 6, $location ); + $location = add_query_arg( 'message', 6, $referer ); break; @@ -168,7 +148,7 @@ case 'editedtag': $tag_ID = (int) $_POST['tag_ID']; check_admin_referer( 'update-tag_' . $tag_ID ); - if ( ! current_user_can( $tax->cap->edit_terms ) ) { + if ( ! current_user_can( 'edit_term', $tag_ID ) ) { wp_die( '

' . __( 'Cheatin’ uh?' ) . '

' . '

' . __( 'Sorry, you are not allowed to edit this item.' ) . '

', @@ -182,35 +162,37 @@ case 'editedtag': $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 && false !== strpos( $referer, 'edit-tags.php' ) ) { - $location = $referer; + if ( $ret && ! is_wp_error( $ret ) ) { + $location = add_query_arg( 'message', 3, $referer ); + } else { + $location = add_query_arg( array( 'error' => true, 'message' => 5 ), $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; +default: + if ( ! $wp_list_table->current_action() || ! isset( $_REQUEST['delete_tags'] ) ) { + break; + } + check_admin_referer( 'bulk-tags' ); + $tags = (array) $_REQUEST['delete_tags']; + /** This action is documented in wp-admin/edit-comments.php */ + $location = apply_filters( 'handle_bulk_actions-' . get_current_screen()->id, $location, $wp_list_table->current_action(), $tags ); break; } if ( ! $location && ! empty( $_REQUEST['_wp_http_referer'] ) ) { - $location = remove_query_arg( array('_wp_http_referer', '_wpnonce'), wp_unslash($_SERVER['REQUEST_URI']) ); + $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 ); + if ( $pagenum > 1 ) { + $location = add_query_arg( 'paged', $pagenum, $location ); // $pagenum takes care of $total_pages. } /** * Filters the taxonomy redirect destination URL. * * @since 4.6.0 - * + * * @param string $location The destination URL. * @param object $tax The taxonomy object. */ @@ -279,13 +261,13 @@ if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $t $help = '

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

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

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

'; + $help .= '

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

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

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

'; + $help .= '

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

'; else - $help .= '

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

'; + $help .= '

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

'; - $help .= '

' . __('Support Forums') . '

'; + $help .= '

' . __('Support Forums') . '

'; get_current_screen()->set_help_sidebar( $help ); @@ -294,14 +276,6 @@ if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $t require_once( ABSPATH . 'wp-admin/admin-header.php' ); -if ( ! current_user_can( $tax->cap->edit_terms ) ) { - wp_die( - '

' . __( 'Cheatin’ uh?' ) . '

' . - '

' . __( 'Sorry, you are not allowed to edit this item.' ) . '

', - 403 - ); -} - /** Also used by the Edit Tag form */ require_once( ABSPATH . 'wp-admin/includes/edit-tag-messages.php' ); @@ -392,10 +366,9 @@ if ( current_user_can($tax->cap->edit_terms) ) {

labels->add_new_item; ?>

-
-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; ?>

- -
- + diff --git a/wp/wp-admin/edit.php b/wp/wp-admin/edit.php index 59cb4f19..3b11eb71 100644 --- a/wp/wp-admin/edit.php +++ b/wp/wp-admin/edit.php @@ -162,6 +162,10 @@ if ( $doaction ) { } } break; + default: + /** This action is documented in wp-admin/edit-comments.php */ + $sendback = apply_filters( 'handle_bulk_actions-' . get_current_screen()->id, $sendback, $doaction, $post_ids ); + break; } $sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status', 'post', 'bulk_edit', 'post_view'), $sendback ); @@ -221,8 +225,8 @@ if ( 'post' == $post_type ) { get_current_screen()->set_help_sidebar( '

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

' . - '

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

' . - '

' . __('Support Forums') . '

' + '

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

' . + '

' . __('Support Forums') . '

' ); } elseif ( 'page' == $post_type ) { @@ -242,8 +246,8 @@ if ( 'post' == $post_type ) { get_current_screen()->set_help_sidebar( '

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

' . - '

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

' . - '

' . __('Support Forums') . '

' + '

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

' . + '

' . __('Support Forums') . '

' ); } @@ -299,16 +303,22 @@ $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 ) ) +?>

+ +cap->create_posts ) ) { echo ' ' . esc_html( $post_type_object->labels->add_new ) . ''; +} if ( isset( $_REQUEST['s'] ) && strlen( $_REQUEST['s'] ) ) { /* translators: %s: search keywords */ printf( ' ' . __( 'Search results for “%s”' ) . '', get_search_query() ); } -?> +?> + +
add_help_tab( array( get_current_screen()->set_help_sidebar( '

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

' . - '

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

' . - '

' . __('Support Forums') . '

' + '

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

' . + '

' . __('Support Forums') . '

' ); // If the 'download' URL parameter is set, a WXR export file is baked and returned. diff --git a/wp/wp-admin/freedoms.php b/wp/wp-admin/freedoms.php index b47465d7..2aa95372 100644 --- a/wp/wp-admin/freedoms.php +++ b/wp/wp-admin/freedoms.php @@ -11,7 +11,7 @@ require_once( dirname( __FILE__ ) . '/admin.php' ); $title = __( 'Freedoms' ); -list( $display_version ) = explode( '-', $wp_version ); +list( $display_version ) = explode( '-', get_bloginfo( 'version' ) ); include( ABSPATH . 'wp-admin/admin-header.php' ); ?> @@ -19,7 +19,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );

-

+

@@ -42,8 +42,8 @@ include( ABSPATH . 'wp-admin/admin-header.php' );

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/' ); ?>

diff --git a/wp/wp-admin/import.php b/wp/wp-admin/import.php index 51837662..1aa682ae 100644 --- a/wp/wp-admin/import.php +++ b/wp/wp-admin/import.php @@ -26,8 +26,8 @@ get_current_screen()->add_help_tab( array( get_current_screen()->set_help_sidebar( '

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

' . - '

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

' . - '

' . __('Support Forums') . '

' + '

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

' . + '

' . __('Support Forums') . '

' ); if ( current_user_can( 'install_plugins' ) ) { diff --git a/wp/wp-admin/includes/admin.php b/wp/wp-admin/includes/admin.php index a44abba9..ee197714 100644 --- a/wp/wp-admin/includes/admin.php +++ b/wp/wp-admin/includes/admin.php @@ -61,6 +61,7 @@ require_once(ABSPATH . 'wp-admin/includes/template.php'); /** WordPress List Table Administration API and base class */ require_once(ABSPATH . 'wp-admin/includes/class-wp-list-table.php'); +require_once(ABSPATH . 'wp-admin/includes/class-wp-list-table-compat.php'); require_once(ABSPATH . 'wp-admin/includes/list-table.php'); /** WordPress Theme Administration API */ diff --git a/wp/wp-admin/includes/ajax-actions.php b/wp/wp-admin/includes/ajax-actions.php index dc965d63..ef89a6b8 100644 --- a/wp/wp-admin/includes/ajax-actions.php +++ b/wp/wp-admin/includes/ajax-actions.php @@ -79,21 +79,19 @@ function wp_ajax_nopriv_heartbeat() { * 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 ) + if ( ! $wp_list_table ) { wp_die( 0 ); + } - if ( ! $wp_list_table->ajax_user_can() ) + if ( ! $wp_list_table->ajax_user_can() ) { wp_die( -1 ); + } $wp_list_table->ajax_response(); @@ -136,9 +134,9 @@ function wp_ajax_ajax_tag_search() { * * @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. + * @param int $characters The minimum number of characters required. Default 2. + * @param WP_Taxonomy $tax The taxonomy object. + * @param string $s The search term. */ $term_search_min_chars = (int) apply_filters( 'term_search_min_chars', 2, $tax, $s ); @@ -596,12 +594,11 @@ 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 ) ) + if ( ! current_user_can( 'delete_term', $tag_id ) ) { wp_die( -1 ); + } + $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag'; $tag = get_term( $tag_id, $taxonomy ); if ( !$tag || is_wp_error( $tag ) ) wp_die( 1 ); @@ -788,7 +785,7 @@ function wp_ajax_dim_comment() { } /** - * Ajax handler for deleting a link category. + * Ajax handler for adding a link category. * * @since 3.1.0 * @@ -798,8 +795,10 @@ function wp_ajax_add_link_category( $action ) { if ( empty( $action ) ) $action = 'add-link-category'; check_ajax_referer( $action ); - if ( !current_user_can( 'manage_categories' ) ) + $tax = get_taxonomy( 'link_category' ); + if ( ! current_user_can( $tax->cap->manage_terms ) ) { wp_die( -1 ); + } $names = explode(',', wp_unslash( $_POST['newcat'] ) ); $x = new WP_Ajax_Response(); foreach ( $names as $cat_name ) { @@ -829,12 +828,8 @@ function wp_ajax_add_link_category( $action ) { * 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); @@ -933,36 +928,39 @@ function wp_ajax_get_tagcloud() { * * @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 ) ) + global $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 ) ) + if ( ! empty( $id ) ) { $post_id = $id; + } } - if ( empty( $post_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 ) ) + if ( ! current_user_can( 'edit_post', $post_id ) ) { wp_die( -1 ); + } $wp_list_table->prepare_items(); - if ( !$wp_list_table->has_items() ) + if ( ! $wp_list_table->has_items() ) { wp_die( 1 ); + } $x = new WP_Ajax_Response(); ob_start(); @@ -986,12 +984,9 @@ function wp_ajax_get_comments( $action ) { * * @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'; @@ -1108,12 +1103,8 @@ function wp_ajax_replyto_comment( $action ) { * 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']; @@ -1257,6 +1248,7 @@ function wp_ajax_add_meta() { $post_data['post_type'] = $post->post_type; $post_data['post_status'] = 'draft'; $now = current_time('timestamp', 1); + /* translators: 1: Post creation date, 2: Post creation time */ $post_data['post_title'] = sprintf( __( 'Draft created on %1$s at %2$s' ), date( __( 'F j, Y' ), $now ), date( __( 'g:i a' ), $now ) ); $pid = edit_post( $post_data ); @@ -1327,14 +1319,12 @@ function wp_ajax_add_meta() { * * @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 ) ) + if ( empty( $action ) ) { $action = 'add-user'; + } check_ajax_referer( $action ); if ( ! current_user_can('create_users') ) @@ -1608,11 +1598,9 @@ function wp_ajax_sample_permalink() { * 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, $mode; + global $mode; check_ajax_referer( 'inlineeditnonce', '_inline_edit' ); @@ -1708,12 +1696,8 @@ function wp_ajax_inline_save() { * 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'] ); @@ -1721,14 +1705,16 @@ function wp_ajax_inline_save_tax() { if ( ! $tax ) wp_die( 0 ); - if ( ! current_user_can( $tax->cap->edit_terms ) ) + if ( ! isset( $_POST['tax_ID'] ) || ! ( $id = (int) $_POST['tax_ID'] ) ) { wp_die( -1 ); + } + + if ( ! current_user_can( 'edit_term', $id ) ) { + 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; @@ -2033,7 +2019,7 @@ function wp_ajax_upload_attachment() { echo wp_json_encode( array( 'success' => false, 'data' => array( - 'message' => __( "You don't have permission to attach files to this post." ), + 'message' => __( 'Sorry, you are not allowed to attach files to this post.' ), 'filename' => $_FILES['async-upload']['name'], ) ) ); @@ -2415,6 +2401,11 @@ function wp_ajax_query_attachments() { if ( current_user_can( get_post_type_object( 'attachment' )->cap->read_private_posts ) ) $query['post_status'] .= ',private'; + // Filter query clauses to include filenames. + if ( isset( $query['s'] ) ) { + add_filter( 'posts_clauses', '_filter_query_attachment_filenames' ); + } + /** * Filters the arguments passed to WP_Query during an Ajax * call for querying attachments. @@ -3132,38 +3123,28 @@ function wp_ajax_destroy_sessions() { * 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(); + include( ABSPATH . 'wp-admin/includes/class-wp-press-this.php' ); + $wp_press_this = new WP_Press_This(); + $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(); + include( ABSPATH . 'wp-admin/includes/class-wp-press-this.php' ); + $wp_press_this = new WP_Press_This(); + $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'] ); @@ -3184,7 +3165,7 @@ function wp_ajax_crop_image() { switch ( $context ) { case 'site-icon': require_once ABSPATH . '/wp-admin/includes/class-wp-site-icon.php'; - global $wp_site_icon; + $wp_site_icon = new 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 ) { @@ -3427,7 +3408,7 @@ function wp_ajax_update_theme() { ) ); } - $stylesheet = sanitize_key( wp_unslash( $_POST['slug'] ) ); + $stylesheet = preg_replace( '/[^A-z0-9_\-]/', '', wp_unslash( $_POST['slug'] ) ); $status = array( 'update' => 'theme', 'slug' => $stylesheet, @@ -3512,7 +3493,7 @@ function wp_ajax_delete_theme() { ) ); } - $stylesheet = sanitize_key( wp_unslash( $_POST['slug'] ) ); + $stylesheet = preg_replace( '/[^A-z0-9_\-]/', '', wp_unslash( $_POST['slug'] ) ); $status = array( 'delete' => 'theme', 'slug' => $stylesheet, @@ -3641,16 +3622,20 @@ function wp_ajax_install_plugin() { } $install_status = install_plugin_install_status( $api ); + $pagenow = isset( $_POST['pagenow'] ) ? sanitize_key( $_POST['pagenow'] ) : ''; + + // If install request is coming from import page, do not return network activation link. + $plugins_url = ( 'import' === $pagenow ) ? admin_url( 'plugins.php' ) : network_admin_url( 'plugins.php' ); if ( current_user_can( 'activate_plugins' ) && is_plugin_inactive( $install_status['file'] ) ) { $status['activateUrl'] = add_query_arg( array( '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $install_status['file'] ), 'action' => 'activate', 'plugin' => $install_status['file'], - ), network_admin_url( 'plugins.php' ) ); + ), $plugins_url ); } - if ( is_multisite() && current_user_can( 'manage_network_plugins' ) ) { + if ( is_multisite() && current_user_can( 'manage_network_plugins' ) && 'import' !== $pagenow ) { $status['activateUrl'] = add_query_arg( array( 'networkwide' => 1 ), $status['activateUrl'] ); } @@ -3698,7 +3683,7 @@ function wp_ajax_update_plugin() { $status['oldVersion'] = sprintf( __( 'Version %s' ), $plugin_data['Version'] ); } - include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); wp_update_plugins(); diff --git a/wp/wp-admin/includes/class-ftp-pure.php b/wp/wp-admin/includes/class-ftp-pure.php index 28e56779..38d348ba 100644 --- a/wp/wp-admin/includes/class-ftp-pure.php +++ b/wp/wp-admin/includes/class-ftp-pure.php @@ -25,16 +25,12 @@ * @link http://www.phpclasses.org/browse/package/1743.html Site * @license LGPL http://www.opensource.org/licenses/lgpl-license.html */ -class ftp extends ftp_base { +class ftp_pure extends ftp_base { function __construct($verb=FALSE, $le=FALSE) { parent::__construct(false, $verb, $le); } - function ftp($verb=FALSE, $le=FALSE) { - $this->__construct($verb, $le); - } - // // // diff --git a/wp/wp-admin/includes/class-ftp-sockets.php b/wp/wp-admin/includes/class-ftp-sockets.php index c71205e9..5ca4a2b5 100644 --- a/wp/wp-admin/includes/class-ftp-sockets.php +++ b/wp/wp-admin/includes/class-ftp-sockets.php @@ -25,16 +25,12 @@ * @link http://www.phpclasses.org/browse/package/1743.html Site * @license LGPL http://www.opensource.org/licenses/lgpl-license.html */ -class ftp extends ftp_base { +class ftp_sockets extends ftp_base { function __construct($verb=FALSE, $le=FALSE) { parent::__construct(true, $verb, $le); } - function ftp($verb=FALSE, $le=FALSE) { - $this->__construct($verb, $le); - } - // // // diff --git a/wp/wp-admin/includes/class-ftp.php b/wp/wp-admin/includes/class-ftp.php index de6a2996..35f670ff 100644 --- a/wp/wp-admin/includes/class-ftp.php +++ b/wp/wp-admin/includes/class-ftp.php @@ -818,7 +818,7 @@ class ftp_base { function glob_regexp($pattern,$probe) { $sensitive=(PHP_OS!='WIN32'); return ($sensitive? - preg_match( '/' . preg_quote( $pattern, '/' ) . '/', $probe ) : + preg_match( '/' . preg_quote( $pattern, '/' ) . '/', $probe ) : preg_match( '/' . preg_quote( $pattern, '/' ) . '/i', $probe ) ); } @@ -904,3 +904,9 @@ if ( ! $mod_sockets && function_exists( 'dl' ) && is_callable( 'dl' ) ) { } require_once dirname( __FILE__ ) . "/class-ftp-" . ( $mod_sockets ? "sockets" : "pure" ) . ".php"; + +if ( $mod_sockets ) { + class ftp extends ftp_sockets {} +} else { + class ftp extends ftp_pure {} +} diff --git a/wp/wp-admin/includes/class-plugin-installer-skin.php b/wp/wp-admin/includes/class-plugin-installer-skin.php index 34b20203..6c554552 100644 --- a/wp/wp-admin/includes/class-plugin-installer-skin.php +++ b/wp/wp-admin/includes/class-plugin-installer-skin.php @@ -52,12 +52,12 @@ class Plugin_Installer_Skin extends WP_Upgrader_Skin { $from = isset($_GET['from']) ? wp_unslash( $_GET['from'] ) : 'plugins'; if ( 'import' == $from ) - $install_actions['activate_plugin'] = '' . __( 'Activate Plugin & Run Importer' ) . ''; + $install_actions['activate_plugin'] = '' . __( 'Activate Plugin & Run Importer' ) . ''; else - $install_actions['activate_plugin'] = '' . __( 'Activate Plugin' ) . ''; + $install_actions['activate_plugin'] = '' . __( 'Activate Plugin' ) . ''; if ( is_multisite() && current_user_can( 'manage_network_plugins' ) ) { - $install_actions['network_activate'] = '' . __( 'Network Activate' ) . ''; + $install_actions['network_activate'] = '' . __( 'Network Activate' ) . ''; unset( $install_actions['activate_plugin'] ); } @@ -90,7 +90,8 @@ class Plugin_Installer_Skin extends WP_Upgrader_Skin { */ $install_actions = apply_filters( 'install_plugin_complete_actions', $install_actions, $this->api, $plugin_file ); - if ( ! empty($install_actions) ) - $this->feedback(implode(' | ', (array)$install_actions)); + if ( ! empty( $install_actions ) ) { + $this->feedback( implode( ' ', (array) $install_actions ) ); + } } } diff --git a/wp/wp-admin/includes/class-plugin-upgrader.php b/wp/wp-admin/includes/class-plugin-upgrader.php index ffb46204..1327d28c 100644 --- a/wp/wp-admin/includes/class-plugin-upgrader.php +++ b/wp/wp-admin/includes/class-plugin-upgrader.php @@ -101,8 +101,10 @@ class Plugin_Upgrader extends WP_Upgrader { $this->install_strings(); add_filter('upgrader_source_selection', array($this, 'check_package') ); - // Clear cache so wp_update_plugins() knows about the new plugin. - add_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9, 0 ); + if ( $parsed_args['clear_update_cache'] ) { + // Clear cache so wp_update_plugins() knows about the new plugin. + add_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9, 0 ); + } $this->run( array( 'package' => $package, @@ -168,8 +170,10 @@ class Plugin_Upgrader extends WP_Upgrader { 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. - // Clear cache so wp_update_plugins() knows about the new plugin. - add_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9, 0 ); + if ( $parsed_args['clear_update_cache'] ) { + // Clear cache so wp_update_plugins() knows about the new plugin. + add_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9, 0 ); + } $this->run( array( 'package' => $r->package, @@ -227,7 +231,6 @@ class Plugin_Upgrader extends WP_Upgrader { $current = get_site_transient( 'update_plugins' ); add_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'), 10, 4); - add_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9, 0 ); $this->skin->header(); @@ -294,6 +297,9 @@ class Plugin_Upgrader extends WP_Upgrader { $this->maintenance_mode(false); + // Force refresh of plugin update information. + wp_clean_plugins_cache( $parsed_args['clear_update_cache'] ); + /** This action is documented in wp-admin/includes/class-wp-upgrader.php */ do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', @@ -307,12 +313,8 @@ class Plugin_Upgrader extends WP_Upgrader { $this->skin->footer(); // Cleanup our hooks, in case something else does a upgrade on this connection. - remove_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9 ); 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; } diff --git a/wp/wp-admin/includes/class-theme-upgrader.php b/wp/wp-admin/includes/class-theme-upgrader.php index 76129e34..b2571ee7 100644 --- a/wp/wp-admin/includes/class-theme-upgrader.php +++ b/wp/wp-admin/includes/class-theme-upgrader.php @@ -201,8 +201,10 @@ class Theme_Upgrader extends WP_Upgrader { add_filter('upgrader_source_selection', array($this, 'check_package') ); add_filter('upgrader_post_install', array($this, 'check_parent_theme_filter'), 10, 3); - // Clear cache so wp_update_themes() knows about the new theme. - add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 ); + if ( $parsed_args['clear_update_cache'] ) { + // Clear cache so wp_update_themes() knows about the new theme. + add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 ); + } $this->run( array( 'package' => $package, @@ -269,8 +271,10 @@ class Theme_Upgrader extends WP_Upgrader { 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); - // Clear cache so wp_update_themes() knows about the new theme. - add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 ); + if ( $parsed_args['clear_update_cache'] ) { + // Clear cache so wp_update_themes() knows about the new theme. + add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 ); + } $this->run( array( 'package' => $r['package'], @@ -329,8 +333,6 @@ class Theme_Upgrader extends WP_Upgrader { 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); - // Clear cache so wp_update_themes() knows about the new theme. - add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 ); $this->skin->header(); @@ -394,6 +396,9 @@ class Theme_Upgrader extends WP_Upgrader { $this->maintenance_mode(false); + // Refresh the Theme Update information + wp_clean_themes_cache( $parsed_args['clear_update_cache'] ); + /** This action is documented in wp-admin/includes/class-wp-upgrader.php */ do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', @@ -407,14 +412,10 @@ class Theme_Upgrader extends WP_Upgrader { $this->skin->footer(); // Cleanup our hooks, in case something else does a upgrade on this connection. - remove_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9 ); 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; } diff --git a/wp/wp-admin/includes/class-walker-nav-menu-edit.php b/wp/wp-admin/includes/class-walker-nav-menu-edit.php index 9a2f3ecb..1f685766 100644 --- a/wp/wp-admin/includes/class-walker-nav-menu-edit.php +++ b/wp/wp-admin/includes/class-walker-nav-menu-edit.php @@ -197,16 +197,14 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {

-

- -

+
+ + + + + + +
_screen = $screen; + + if ( !empty( $columns ) ) { + $this->_columns = $columns; + add_filter( 'manage_' . $screen->id . '_columns', array( $this, 'get_columns' ), 0 ); + } + } + + /** + * @access protected + * + * @return array + */ + protected function get_column_info() { + $columns = get_column_headers( $this->_screen ); + $hidden = get_hidden_columns( $this->_screen ); + $sortable = array(); + $primary = $this->get_default_primary_column_name(); + + return array( $columns, $hidden, $sortable, $primary ); + } + + /** + * @access public + * + * @return array + */ + public function get_columns() { + return $this->_columns; + } +} diff --git a/wp/wp-admin/includes/class-wp-list-table.php b/wp/wp-admin/includes/class-wp-list-table.php index ee0f9af5..bf642acb 100644 --- a/wp/wp-admin/includes/class-wp-list-table.php +++ b/wp/wp-admin/includes/class-wp-list-table.php @@ -284,7 +284,7 @@ class WP_List_Table { $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'] ) { + if ( ! headers_sent() && ! wp_doing_ajax() && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages'] ) { wp_redirect( add_query_arg( 'paged', $args['total_pages'] ) ); exit; } @@ -361,7 +361,7 @@ class WP_List_Table { _actions ) ) { - $no_new_actions = $this->_actions = $this->get_bulk_actions(); + $this->_actions = $this->get_bulk_actions(); /** * Filters the list table Bulk Actions drop-down. * @@ -450,7 +450,6 @@ class WP_List_Table { * @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'; diff --git a/wp/wp-admin/includes/class-wp-media-list-table.php b/wp/wp-admin/includes/class-wp-media-list-table.php index 170ec5a2..d0c24449 100644 --- a/wp/wp-admin/includes/class-wp-media-list-table.php +++ b/wp/wp-admin/includes/class-wp-media-list-table.php @@ -174,7 +174,7 @@ class WP_Media_List_Table extends WP_List_Table { /** This action is documented in wp-admin/includes/class-wp-posts-list-table.php */ do_action( 'restrict_manage_posts', $this->screen->post_type ); - submit_button( __( 'Filter' ), 'button', 'filter_action', false, array( 'id' => 'post-query-submit' ) ); + submit_button( __( 'Filter' ), '', 'filter_action', false, array( 'id' => 'post-query-submit' ) ); } if ( $this->is_trash && current_user_can( 'edit_others_posts' ) ) { @@ -262,7 +262,7 @@ class WP_Media_List_Table extends WP_List_Table {
-
+
' . __( 'Edit' ) . ''; $actions['backend'] = "" . __( 'Dashboard' ) . ''; - if ( get_current_site()->blog_id != $blog['blog_id'] ) { + if ( get_network()->site_id != $blog['blog_id'] ) { if ( $blog['deleted'] == '1' ) { $actions['activate'] = '' . __( 'Activate' ) . ''; } else { diff --git a/wp/wp-admin/includes/class-wp-ms-themes-list-table.php b/wp/wp-admin/includes/class-wp-ms-themes-list-table.php index d35956c1..0f3865a9 100644 --- a/wp/wp-admin/includes/class-wp-ms-themes-list-table.php +++ b/wp/wp-admin/includes/class-wp-ms-themes-list-table.php @@ -150,7 +150,8 @@ class WP_MS_Themes_List_Table extends WP_List_Table { $total_this_page = $totals[ $status ]; wp_localize_script( 'updates', '_wpUpdatesItemCounts', array( - 'totals' => $totals, + 'themes' => $totals, + 'totals' => wp_get_update_data(), ) ); if ( $orderby ) { @@ -518,7 +519,7 @@ class WP_MS_Themes_List_Table extends WP_List_Table { * @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 ); + $actions = apply_filters( "theme_action_links_{$stylesheet}", $actions, $theme, $context ); echo $this->row_actions( $actions, true ); } @@ -726,6 +727,6 @@ class WP_MS_Themes_List_Table extends WP_List_Table { * @param WP_Theme $theme Current WP_Theme object. * @param string $status Status of the theme. */ - do_action( "after_theme_row_$stylesheet", $stylesheet, $theme, $status ); + do_action( "after_theme_row_{$stylesheet}", $stylesheet, $theme, $status ); } } diff --git a/wp/wp-admin/includes/class-wp-ms-users-list-table.php b/wp/wp-admin/includes/class-wp-ms-users-list-table.php index da00131b..d219efc3 100644 --- a/wp/wp-admin/includes/class-wp-ms-users-list-table.php +++ b/wp/wp-admin/includes/class-wp-ms-users-list-table.php @@ -329,7 +329,7 @@ class WP_MS_Users_List_Table extends WP_List_Table { $path = ( $val->path === '/' ) ? '' : $val->path; echo ''; - echo '' . str_replace( '.' . get_current_site()->domain, '', $val->domain . $path ) . ''; + echo '' . str_replace( '.' . get_network()->domain, '', $val->domain . $path ) . ''; echo ' '; $actions = array(); $actions['edit'] = '' . __( 'Edit' ) . ''; diff --git a/wp/wp-admin/includes/class-wp-plugin-install-list-table.php b/wp/wp-admin/includes/class-wp-plugin-install-list-table.php index 6e389b1a..cd718360 100644 --- a/wp/wp-admin/includes/class-wp-plugin-install-list-table.php +++ b/wp/wp-admin/includes/class-wp-plugin-install-list-table.php @@ -69,7 +69,6 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { * @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' ); @@ -88,7 +87,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { if ( 'search' === $tab ) { $tabs['search'] = __( 'Search Results' ); } - if ( $tab === 'beta' || false !== strpos( $GLOBALS['wp_version'], '-' ) ) { + if ( $tab === 'beta' || false !== strpos( get_bloginfo( 'version' ), '-' ) ) { $tabs['beta'] = _x( 'Beta Testing', 'Plugin Installer' ); } $tabs['featured'] = _x( 'Featured', 'Plugin Installer' ); @@ -135,7 +134,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { 'active_installs' => true ), // Send the locale and installed plugin slugs to the API so it can provide context-sensitive results. - 'locale' => get_locale(), + 'locale' => get_user_locale(), 'installed_plugins' => $this->get_installed_plugin_slugs(), ); @@ -200,7 +199,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { * * @param array|bool $args Plugin Install API arguments. */ - $args = apply_filters( "install_plugins_table_api_args_$tab", $args ); + $args = apply_filters( "install_plugins_table_api_args_{$tab}", $args ); if ( !$args ) return; @@ -391,9 +390,6 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { } } - /** - * @global string $wp_version - */ public function display_rows() { $plugins_allowedtags = array( 'a' => array( 'href' => array(),'title' => array(), 'target' => array() ), @@ -492,7 +488,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { } $action_links[] = sprintf( - '%3$s', + '%3$s', esc_url( $activate_url ), esc_attr( sprintf( $button_label, $plugin['name'] ) ), $button_text @@ -566,6 +562,8 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { = 1000000 ) { $active_installs_text = _x( '1+ Million', 'Active plugin installs' ); + } elseif ( 0 == $plugin['active_installs'] ) { + $active_installs_text = _x( 'Less Than 10', 'Active plugin installs' ); } else { $active_installs_text = number_format_i18n( $plugin['active_installs'] ) . '+'; } @@ -574,9 +572,11 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
' ) ) { + $wp_version = get_bloginfo( 'version' ); + + if ( ! empty( $plugin['tested'] ) && version_compare( substr( $wp_version, 0, strlen( $plugin['tested'] ) ), $plugin['tested'], '>' ) ) { echo '' . __( 'Untested with your version of WordPress' ) . ''; - } elseif ( ! empty( $plugin['requires'] ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $plugin['requires'] ) ), $plugin['requires'], '<' ) ) { + } elseif ( ! empty( $plugin['requires'] ) && version_compare( substr( $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/wp-admin/includes/class-wp-plugins-list-table.php b/wp/wp-admin/includes/class-wp-plugins-list-table.php index 4204cf93..136fbd4c 100644 --- a/wp/wp-admin/includes/class-wp-plugins-list-table.php +++ b/wp/wp-admin/includes/class-wp-plugins-list-table.php @@ -253,6 +253,7 @@ class WP_Plugins_List_Table extends WP_List_Table { wp_localize_script( 'updates', '_wpUpdatesItemCounts', array( 'plugins' => $js_plugins, + 'totals' => wp_get_update_data(), ) ); if ( ! $orderby ) { @@ -367,7 +368,7 @@ class WP_Plugins_List_Table extends WP_List_Table { '; if ( 'recently_activated' == $status ) { - submit_button( __( 'Clear List' ), 'button', 'clear-recent-list', false ); + submit_button( __( 'Clear List' ), '', 'clear-recent-list', false ); } elseif ( 'top' === $which && 'mustuse' === $status ) { /* translators: %s: mu-plugins directory name */ echo '

' . sprintf( __( 'Files in the %s directory are executed automatically.' ), @@ -652,8 +653,7 @@ class WP_Plugins_List_Table extends WP_List_Table { * The default action links for the Network plugins list table include * 'Network Activate', 'Network Deactivate', 'Edit', and 'Delete'. * - * @since 3.1.0 As `{$prefix}_plugin_action_links` - * @since 4.4.0 + * @since 3.1.0 * * @param array $actions An array of plugin action links. * @param string $plugin_file Path to the plugin file relative to the plugins directory. @@ -670,8 +670,7 @@ class WP_Plugins_List_Table extends WP_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 3.1.0 As `{$prefix}_plugin_action_links_{$plugin_file}` - * @since 4.4.0 + * @since 3.1.0 * * @param array $actions An array of plugin action links. * @param string $plugin_file Path to the plugin file relative to the plugins directory. @@ -691,8 +690,8 @@ class WP_Plugins_List_Table extends WP_List_Table { * 'Activate', 'Deactivate', and 'Edit', for a network site, and * 'Activate', 'Deactivate', 'Edit', and 'Delete' for a single site. * - * @since 2.5.0 As `{$prefix}_plugin_action_links` - * @since 4.4.0 + * @since 2.5.0 + * @since 2.6.0 The `$context` parameter was added. * * @param array $actions An array of plugin action links. * @param string $plugin_file Path to the plugin file relative to the plugins directory. @@ -709,8 +708,7 @@ class WP_Plugins_List_Table extends WP_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 As `{$prefix}_plugin_action_links_{$plugin_file}` - * @since 4.4.0 + * @since 2.7.0 * * @param array $actions An array of plugin action links. * @param string $plugin_file Path to the plugin file relative to the plugins directory. @@ -864,7 +862,7 @@ class WP_Plugins_List_Table extends WP_List_Table { * 'Inactive', 'Recently Activated', 'Upgrade', 'Must-Use', * 'Drop-ins', 'Search'. */ - do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status ); + do_action( "after_plugin_row_{$plugin_file}", $plugin_file, $plugin_data, $status ); } /** diff --git a/wp/wp-admin/includes/class-wp-posts-list-table.php b/wp/wp-admin/includes/class-wp-posts-list-table.php index 7ef790e3..ae0f2441 100644 --- a/wp/wp-admin/includes/class-wp-posts-list-table.php +++ b/wp/wp-admin/includes/class-wp-posts-list-table.php @@ -459,6 +459,7 @@ class WP_Posts_List_Table extends WP_List_Table {

months_dropdown( $this->screen->post_type ); $this->categories_dropdown( $this->screen->post_type ); @@ -479,7 +480,12 @@ class WP_Posts_List_Table extends WP_List_Table { */ do_action( 'restrict_manage_posts', $this->screen->post_type, $which ); - submit_button( __( 'Filter' ), 'button', 'filter_action', false, array( 'id' => 'post-query-submit' ) ); + $output = ob_get_clean(); + + if ( ! empty( $output ) ) { + echo $output; + submit_button( __( 'Filter' ), '', '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 ) ) { @@ -829,7 +835,16 @@ class WP_Posts_List_Table extends WP_List_Table { printf( __( 'Select %s' ), _draft_or_post_title() ); ?> -
+
+ + +
ID ); + + 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"; + } + $pad = str_repeat( '— ', $this->current_level ); echo ""; @@ -901,7 +932,6 @@ class WP_Posts_List_Table extends WP_List_Table { echo $this->get_edit_link( $format_args, $label . ':', $format_class ); } - $can_edit_post = current_user_can( 'edit_post', $post->ID ); $title = _draft_or_post_title(); if ( $can_edit_post && $post->post_status != 'trash' ) { @@ -924,20 +954,6 @@ class WP_Posts_List_Table extends WP_List_Table { } 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(); } @@ -1522,38 +1538,38 @@ class WP_Posts_List_Table extends WP_List_Table { - post_type ) : - ?> - - - + post_type ) ) ) : ?> + + + - cap->assign_terms ) ) : ?> + cap->assign_terms ) ) : + $taxonomy_name = esc_attr( $taxonomy->name ); + + ?> @@ -1713,14 +1729,14 @@ class WP_Posts_List_Table extends WP_List_Table { } ?>

- + - + diff --git a/wp/wp-admin/includes/class-wp-press-this.php b/wp/wp-admin/includes/class-wp-press-this.php index a00bbaa4..71ce5153 100644 --- a/wp/wp-admin/includes/class-wp-press-this.php +++ b/wp/wp-admin/includes/class-wp-press-this.php @@ -13,8 +13,8 @@ * @since 4.2.0 */ class WP_Press_This { - // Used to trigger the bookmarklet update notice. + const VERSION = 8; public $version = 8; private $images = array(); @@ -267,8 +267,6 @@ class WP_Press_This { * @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.' ) ); } @@ -276,7 +274,7 @@ class WP_Press_This { $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' ) + 'user-agent' => 'Press This (WordPress/' . get_bloginfo( 'version' ) . '); ' . get_bloginfo( 'url' ) ) ); if ( is_wp_error( $remote_url ) ) { @@ -479,7 +477,6 @@ class WP_Press_This { // 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 ) ) ) { @@ -943,7 +940,7 @@ class WP_Press_This { if ( $user_can_assign_terms ) { ?> - + merge_or_fetch_data(); @@ -1314,7 +1312,7 @@ class WP_Press_This { $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() ) ) ); + $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_user_locale() ) ) ); /** This filter is documented in wp-admin/admin-header.php */ $admin_body_classes = apply_filters( 'admin_body_class', '' ); @@ -1517,9 +1515,3 @@ class WP_Press_This { die(); } } - -/** - * - * @global WP_Press_This $wp_press_this - */ -$GLOBALS['wp_press_this'] = new WP_Press_This; diff --git a/wp/wp-admin/includes/class-wp-site-icon.php b/wp/wp-admin/includes/class-wp-site-icon.php index 3afc83de..a54c60b7 100644 --- a/wp/wp-admin/includes/class-wp-site-icon.php +++ b/wp/wp-admin/includes/class-wp-site-icon.php @@ -240,8 +240,3 @@ class WP_Site_Icon { return $value; } } - -/** - * @global WP_Site_Icon $wp_site_icon - */ -$GLOBALS['wp_site_icon'] = new WP_Site_Icon; diff --git a/wp/wp-admin/includes/class-wp-terms-list-table.php b/wp/wp-admin/includes/class-wp-terms-list-table.php index e765794a..7d59624a 100644 --- a/wp/wp-admin/includes/class-wp-terms-list-table.php +++ b/wp/wp-admin/includes/class-wp-terms-list-table.php @@ -151,7 +151,10 @@ class WP_Terms_List_Table extends WP_List_Table { */ protected function get_bulk_actions() { $actions = array(); - $actions['delete'] = __( 'Delete' ); + + if ( current_user_can( get_taxonomy( $this->screen->taxonomy )->cap->delete_terms ) ) { + $actions['delete'] = __( 'Delete' ); + } return $actions; } @@ -313,7 +316,7 @@ class WP_Terms_List_Table extends WP_List_Table { /** * @global string $taxonomy - * @param object $tag + * @param WP_Term $tag Term object. * @param int $level */ public function single_row( $tag, $level = 0 ) { @@ -328,21 +331,20 @@ class WP_Terms_List_Table extends WP_List_Table { } /** - * @param object $tag + * @param WP_Term $tag Term object. * @return string */ public function column_cb( $tag ) { - $default_term = get_option( 'default_' . $this->screen->taxonomy ); - - if ( current_user_can( get_taxonomy( $this->screen->taxonomy )->cap->delete_terms ) && $tag->term_id != $default_term ) + if ( current_user_can( 'delete_term', $tag->term_id ) ) { return '' . ''; + } return ' '; } /** - * @param object $tag + * @param WP_Term $tag Term object. * @return string */ public function column_name( $tag ) { @@ -361,13 +363,13 @@ class WP_Terms_List_Table extends WP_List_Table { * @see WP_Terms_List_Table::column_name() * * @param string $pad_tag_name The term name, padded if not top-level. - * @param object $tag Term object. + * @param WP_Term $tag Term object. */ $name = apply_filters( 'term_name', $pad . ' ' . $tag->name, $tag ); $qe_data = get_term( $tag->term_id, $taxonomy, OBJECT, 'edit' ); - $uri = ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ? wp_get_referer() : $_SERVER['REQUEST_URI']; + $uri = wp_doing_ajax() ? wp_get_referer() : $_SERVER['REQUEST_URI']; $edit_link = add_query_arg( 'wp_http_referer', @@ -411,9 +413,9 @@ class WP_Terms_List_Table extends WP_List_Table { * @since 4.3.0 * @access protected * - * @param object $tag Tag being acted upon. - * @param string $column_name Current column name. - * @param string $primary Primary column name. + * @param WP_Term $tag Tag being acted upon. + * @param string $column_name Current column name. + * @param string $primary Primary column name. * @return string Row actions output for terms. */ protected function handle_row_actions( $tag, $column_name, $primary ) { @@ -423,9 +425,7 @@ class WP_Terms_List_Table extends WP_List_Table { $taxonomy = $this->screen->taxonomy; $tax = get_taxonomy( $taxonomy ); - $default_term = get_option( 'default_' . $taxonomy ); - - $uri = ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ? wp_get_referer() : $_SERVER['REQUEST_URI']; + $uri = wp_doing_ajax() ? wp_get_referer() : $_SERVER['REQUEST_URI']; $edit_link = add_query_arg( 'wp_http_referer', @@ -434,7 +434,7 @@ class WP_Terms_List_Table extends WP_List_Table { ); $actions = array(); - if ( current_user_can( $tax->cap->edit_terms ) ) { + if ( current_user_can( 'edit_term', $tag->term_id ) ) { $actions['edit'] = sprintf( '%s', esc_url( $edit_link ), @@ -449,7 +449,7 @@ class WP_Terms_List_Table extends WP_List_Table { __( 'Quick Edit' ) ); } - if ( current_user_can( $tax->cap->delete_terms ) && $tag->term_id != $default_term ) { + if ( current_user_can( 'delete_term', $tag->term_id ) ) { $actions['delete'] = sprintf( '%s', wp_nonce_url( "edit-tags.php?action=delete&taxonomy=$taxonomy&tag_ID=$tag->term_id", 'delete-tag_' . $tag->term_id ), @@ -476,7 +476,7 @@ class WP_Terms_List_Table extends WP_List_Table { * * @param array $actions An array of action links to be displayed. Default * 'Edit', 'Quick Edit', 'Delete', and 'View'. - * @param object $tag Term object. + * @param WP_Term $tag Term object. */ $actions = apply_filters( 'tag_row_actions', $actions, $tag ); @@ -489,7 +489,7 @@ class WP_Terms_List_Table extends WP_List_Table { * * @param array $actions An array of action links to be displayed. Default * 'Edit', 'Quick Edit', 'Delete', and 'View'. - * @param object $tag Term object. + * @param WP_Term $tag Term object. */ $actions = apply_filters( "{$taxonomy}_row_actions", $actions, $tag ); @@ -497,7 +497,7 @@ class WP_Terms_List_Table extends WP_List_Table { } /** - * @param object $tag + * @param WP_Term $tag Term object. * @return string */ public function column_description( $tag ) { @@ -505,7 +505,7 @@ class WP_Terms_List_Table extends WP_List_Table { } /** - * @param object $tag + * @param WP_Term $tag Term object. * @return string */ public function column_slug( $tag ) { @@ -514,7 +514,7 @@ class WP_Terms_List_Table extends WP_List_Table { } /** - * @param object $tag + * @param WP_Term $tag Term object. * @return string */ public function column_posts( $tag ) { @@ -542,7 +542,7 @@ class WP_Terms_List_Table extends WP_List_Table { } /** - * @param object $tag + * @param WP_Term $tag Term object. * @return string */ public function column_links( $tag ) { @@ -553,7 +553,7 @@ class WP_Terms_List_Table extends WP_List_Table { } /** - * @param object $tag + * @param WP_Term $tag Term object. * @param string $column_name * @return string */ @@ -619,8 +619,8 @@ class WP_Terms_List_Table extends WP_List_Table { ?>

- - + + diff --git a/wp/wp-admin/includes/class-wp-theme-install-list-table.php b/wp/wp-admin/includes/class-wp-theme-install-list-table.php index 492497ed..f459d67d 100644 --- a/wp/wp-admin/includes/class-wp-theme-install-list-table.php +++ b/wp/wp-admin/includes/class-wp-theme-install-list-table.php @@ -134,7 +134,7 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table { * * @param array $args An array of themes API arguments. */ - $args = apply_filters( 'install_themes_table_api_args_' . $tab, $args ); + $args = apply_filters( "install_themes_table_api_args_{$tab}", $args ); if ( ! $args ) return; @@ -226,23 +226,26 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table { /** * Prints a theme from the WordPress.org API. * + * @since 3.1.0 + * @access public + * * @global array $themes_allowedtags * - * @param object $theme An object that contains theme data returned by the WordPress.org API. + * @param object $theme { + * An object that contains theme data returned by the WordPress.org API. * - * Example theme data: - * object(stdClass)[59] - * public 'name' => string 'Magazine Basic' - * public 'slug' => string 'magazine-basic' - * public 'version' => string '1.1' - * public 'author' => string 'tinkerpriest' - * public 'preview_url' => string 'http://wp-themes.com/?magazine-basic' - * public 'screenshot_url' => string 'http://wp-themes.com/wp-content/themes/magazine-basic/screenshot.png' - * public 'rating' => float 80 - * public 'num_ratings' => int 1 - * public 'homepage' => string 'http://wordpress.org/themes/magazine-basic' - * public 'description' => string 'A basic magazine style layout with a fully customizable layout through a back-end interface. Designed by c.bavota of Tinker Priest Media.' - * public 'download_link' => string 'http://wordpress.org/themes/download/magazine-basic.1.1.zip' + * @type string $name Theme name, e.g. 'Twenty Seventeen'. + * @type string $slug Theme slug, e.g. 'twentyseventeen'. + * @type string $version Theme version, e.g. '1.1'. + * @type string $author Theme author username, e.g. 'melchoyce'. + * @type string $preview_url Preview URL, e.g. 'http://2017.wordpress.net/'. + * @type string $screenshot_url Screenshot URL, e.g. 'https://wordpress.org/themes/twentyseventeen/'. + * @type float $rating Rating score. + * @type int $num_ratings The number of ratings. + * @type string $homepage Theme homepage, e.g. 'https://wordpress.org/themes/twentyseventeen/'. + * @type string $description Theme description. + * @type string $download_link Theme ZIP download URL. + * } */ public function single_row( $theme ) { global $themes_allowedtags; @@ -329,14 +332,14 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {

- +
diff --git a/wp/wp-admin/includes/image-edit.php b/wp/wp-admin/includes/image-edit.php index 928cd135..db11b566 100644 --- a/wp/wp-admin/includes/image-edit.php +++ b/wp/wp-admin/includes/image-edit.php @@ -387,7 +387,7 @@ function _image_get_preview_ratio($w, $h) { * @return resource|false GD image resource, false otherwise. */ function _rotate_image_resource($img, $angle) { - _deprecated_function( __FUNCTION__, '3.5.0', __( 'Use WP_Image_Editor::rotate' ) ); + _deprecated_function( __FUNCTION__, '3.5.0', 'WP_Image_Editor::rotate()' ); if ( function_exists('imagerotate') ) { $rotated = imagerotate($img, $angle, 0); if ( is_resource($rotated) ) { @@ -410,7 +410,7 @@ function _rotate_image_resource($img, $angle) { * @return resource (maybe) flipped image resource. */ function _flip_image_resource($img, $horz, $vert) { - _deprecated_function( __FUNCTION__, '3.5.0', __( 'Use WP_Image_Editor::flip' ) ); + _deprecated_function( __FUNCTION__, '3.5.0', 'WP_Image_Editor::flip()' ); $w = imagesx($img); $h = imagesy($img); $dst = wp_imagecreatetruecolor($w, $h); @@ -700,13 +700,11 @@ function wp_restore_image($post_id) { * Saves image to post along with enqueued changes * in $_REQUEST['history'] * - * @global array $_wp_additional_image_sizes - * * @param int $post_id * @return \stdClass */ function wp_save_image( $post_id ) { - global $_wp_additional_image_sizes; + $_wp_additional_image_sizes = wp_get_additional_image_sizes(); $return = new stdClass; $success = $delete = $scaled = $nocrop = false; @@ -761,28 +759,33 @@ function wp_save_image( $post_id ) { $backup_sizes = array(); // Generate new filename. - $path = get_attached_file($post_id); - $path_parts = pathinfo( $path ); - $filename = $path_parts['filename']; + $path = get_attached_file( $post_id ); + + $basename = pathinfo( $path, PATHINFO_BASENAME ); + $dirname = pathinfo( $path, PATHINFO_DIRNAME ); + $ext = pathinfo( $path, PATHINFO_EXTENSION ); + $filename = pathinfo( $path, PATHINFO_FILENAME ); $suffix = time() . rand(100, 999); if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE && - isset($backup_sizes['full-orig']) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] ) { + isset($backup_sizes['full-orig']) && $backup_sizes['full-orig']['file'] != $basename ) { - if ( 'thumbnail' == $target ) - $new_path = "{$path_parts['dirname']}/{$filename}-temp.{$path_parts['extension']}"; - else + if ( 'thumbnail' == $target ) { + $new_path = "{$dirname}/{$filename}-temp.{$ext}"; + } else { $new_path = $path; + } } else { - while( true ) { + while ( true ) { $filename = preg_replace( '/-e([0-9]+)$/', '', $filename ); $filename .= "-e{$suffix}"; - $new_filename = "{$filename}.{$path_parts['extension']}"; - $new_path = "{$path_parts['dirname']}/$new_filename"; - if ( file_exists($new_path) ) + $new_filename = "{$filename}.{$ext}"; + $new_path = "{$dirname}/$new_filename"; + if ( file_exists($new_path) ) { $suffix++; - else + } else { break; + } } } @@ -792,18 +795,19 @@ function wp_save_image( $post_id ) { return $return; } - if ( 'nothumb' == $target || 'all' == $target || 'full' == $target || $scaled ) { + if ( 'nothumb' === $target || 'all' === $target || 'full' === $target || $scaled ) { $tag = false; - if ( isset($backup_sizes['full-orig']) ) { - if ( ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE ) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] ) + if ( isset( $backup_sizes['full-orig'] ) ) { + if ( ( ! defined( 'IMAGE_EDIT_OVERWRITE' ) || ! IMAGE_EDIT_OVERWRITE ) && $backup_sizes['full-orig']['file'] !== $basename ) { $tag = "full-$suffix"; + } } else { $tag = 'full-orig'; } - if ( $tag ) - $backup_sizes[$tag] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $path_parts['basename']); - + if ( $tag ) { + $backup_sizes[$tag] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $basename ); + } $success = ( $path === $new_path ) || update_attached_file( $post_id, $new_path ); $meta['file'] = _wp_relative_upload_path( $new_path ); @@ -834,7 +838,7 @@ function wp_save_image( $post_id ) { if ( defined( 'IMAGE_EDIT_OVERWRITE' ) && IMAGE_EDIT_OVERWRITE && ! empty( $meta['sizes'] ) ) { foreach ( $meta['sizes'] as $size ) { if ( ! empty( $size['file'] ) && preg_match( '/-e[0-9]{13}-/', $size['file'] ) ) { - $delete_file = path_join( $path_parts['dirname'], $size['file'] ); + $delete_file = path_join( $dirname, $size['file'] ); wp_delete_file( $delete_file ); } } diff --git a/wp/wp-admin/includes/image.php b/wp/wp-admin/includes/image.php index 4d9e0769..5f7b583d 100644 --- a/wp/wp-admin/includes/image.php +++ b/wp/wp-admin/includes/image.php @@ -67,8 +67,6 @@ function wp_crop_image( $src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $s * * @since 2.1.0 * - * @global array $_wp_additional_image_sizes - * * @param int $attachment_id Attachment Id to process. * @param string $file Filepath of the Attached image. * @return mixed Metadata for attachment. @@ -78,7 +76,9 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) { $metadata = array(); $support = false; - if ( preg_match('!^image/!', get_post_mime_type( $attachment )) && file_is_displayable_image($file) ) { + $mime_type = get_post_mime_type( $attachment ); + + if ( preg_match( '!^image/!', $mime_type ) && file_is_displayable_image( $file ) ) { $imagesize = getimagesize( $file ); $metadata['width'] = $imagesize[0]; $metadata['height'] = $imagesize[1]; @@ -87,23 +87,34 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) { $metadata['file'] = _wp_relative_upload_path($file); // Make thumbnails and other intermediate sizes. - global $_wp_additional_image_sizes; + $_wp_additional_image_sizes = wp_get_additional_image_sizes(); $sizes = array(); foreach ( get_intermediate_image_sizes() as $s ) { $sizes[$s] = array( 'width' => '', 'height' => '', 'crop' => false ); - if ( isset( $_wp_additional_image_sizes[$s]['width'] ) ) - $sizes[$s]['width'] = intval( $_wp_additional_image_sizes[$s]['width'] ); // For theme-added sizes - else - $sizes[$s]['width'] = get_option( "{$s}_size_w" ); // For default sizes set in options - if ( isset( $_wp_additional_image_sizes[$s]['height'] ) ) - $sizes[$s]['height'] = intval( $_wp_additional_image_sizes[$s]['height'] ); // For theme-added sizes - else - $sizes[$s]['height'] = get_option( "{$s}_size_h" ); // For default sizes set in options - if ( isset( $_wp_additional_image_sizes[$s]['crop'] ) ) - $sizes[$s]['crop'] = $_wp_additional_image_sizes[$s]['crop']; // For theme-added sizes - else - $sizes[$s]['crop'] = get_option( "{$s}_crop" ); // For default sizes set in options + if ( isset( $_wp_additional_image_sizes[$s]['width'] ) ) { + // For theme-added sizes + $sizes[$s]['width'] = intval( $_wp_additional_image_sizes[$s]['width'] ); + } else { + // For default sizes set in options + $sizes[$s]['width'] = get_option( "{$s}_size_w" ); + } + + if ( isset( $_wp_additional_image_sizes[$s]['height'] ) ) { + // For theme-added sizes + $sizes[$s]['height'] = intval( $_wp_additional_image_sizes[$s]['height'] ); + } else { + // For default sizes set in options + $sizes[$s]['height'] = get_option( "{$s}_size_h" ); + } + + if ( isset( $_wp_additional_image_sizes[$s]['crop'] ) ) { + // For theme-added sizes + $sizes[$s]['crop'] = $_wp_additional_image_sizes[$s]['crop']; + } else { + // For default sizes set in options + $sizes[$s]['crop'] = get_option( "{$s}_crop" ); + } } /** @@ -192,6 +203,56 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) { } } } + // Try to create image thumbnails for PDFs + else if ( 'application/pdf' === $mime_type ) { + $fallback_sizes = array( + 'thumbnail', + 'medium', + 'large', + ); + + /** + * Filters the image sizes generated for non-image mime types. + * + * @since 4.7.0 + * + * @param array $fallback_sizes An array of image size names. + */ + $fallback_sizes = apply_filters( 'fallback_intermediate_image_sizes', $fallback_sizes, $metadata ); + + $sizes = array(); + + foreach ( $fallback_sizes as $s ) { + $sizes[ $s ]['width'] = get_option( "{$s}_size_w" ); + $sizes[ $s ]['height'] = get_option( "{$s}_size_h" ); + + // Force thumbnails to be soft crops. + if ( ! 'thumbnail' === $s ) { + $sizes[ $s ]['crop'] = get_option( "{$s}_crop" ); + } + } + + // Only load PDFs in an image editor if we're processing sizes. + if ( ! empty( $sizes ) ) { + $editor = wp_get_image_editor( $file ); + + if ( ! is_wp_error( $editor ) ) { // No support for this type of file + $uploaded = $editor->save( $file, 'image/jpeg' ); + unset( $editor ); + + // Resize based on the full size image, rather than the source. + if ( ! is_wp_error( $uploaded ) ) { + $editor = wp_get_image_editor( $uploaded['path'] ); + unset( $uploaded['path'] ); + + if ( ! is_wp_error( $editor ) ) { + $metadata['sizes'] = $editor->multi_resize( $sizes ); + $metadata['sizes']['full'] = $uploaded; + } + } + } + } + } // Remove the blob of binary data from the array. if ( $metadata ) { @@ -554,7 +615,7 @@ function _load_image_to_edit_path( $attachment_id, $size = 'full' ) { */ $filepath = apply_filters( 'load_image_to_edit_filesystempath', path_join( dirname( $filepath ), $data['file'] ), $attachment_id, $size ); } - } elseif ( function_exists( 'fopen' ) && function_exists( 'ini_get' ) && true == ini_get( 'allow_url_fopen' ) ) { + } elseif ( function_exists( 'fopen' ) && true == ini_get( 'allow_url_fopen' ) ) { /** * Filters the image URL if not in the local filesystem. * diff --git a/wp/wp-admin/includes/import.php b/wp/wp-admin/includes/import.php index 4f0b7853..0d534422 100644 --- a/wp/wp-admin/includes/import.php +++ b/wp/wp-admin/includes/import.php @@ -125,13 +125,13 @@ function wp_import_handle_upload() { function wp_get_popular_importers() { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version - $locale = get_locale(); + $locale = get_user_locale(); $cache_key = 'popular_importers_' . md5( $locale . $wp_version ); $popular_importers = get_site_transient( $cache_key ); if ( ! $popular_importers ) { $url = add_query_arg( array( - 'locale' => get_locale(), + 'locale' => get_user_locale(), 'version' => $wp_version, ), 'http://api.wordpress.org/core/importers/1.1/' ); $options = array( 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url() ); diff --git a/wp/wp-admin/includes/list-table.php b/wp/wp-admin/includes/list-table.php index bcc182c8..e4c66d1f 100644 --- a/wp/wp-admin/includes/list-table.php +++ b/wp/wp-admin/includes/list-table.php @@ -66,7 +66,7 @@ function _get_list_table( $class, $args = array() ) { * @see get_column_headers(), print_column_headers(), get_hidden_columns() */ function register_column_headers($screen, $columns) { - $wp_list_table = new _WP_List_Table_Compat($screen, $columns); + new _WP_List_Table_Compat( $screen, $columns ); } /** @@ -82,48 +82,3 @@ function print_column_headers( $screen, $with_id = true ) { $wp_list_table->print_column_headers( $with_id ); } - -/** - * Helper class to be used only by back compat functions - * - * @since 3.1.0 - */ -class _WP_List_Table_Compat extends WP_List_Table { - public $_screen; - public $_columns; - - public function __construct( $screen, $columns = array() ) { - if ( is_string( $screen ) ) - $screen = convert_to_screen( $screen ); - - $this->_screen = $screen; - - if ( !empty( $columns ) ) { - $this->_columns = $columns; - add_filter( 'manage_' . $screen->id . '_columns', array( $this, 'get_columns' ), 0 ); - } - } - - /** - * @access protected - * - * @return array - */ - protected function get_column_info() { - $columns = get_column_headers( $this->_screen ); - $hidden = get_hidden_columns( $this->_screen ); - $sortable = array(); - $primary = $this->get_default_primary_column_name(); - - return array( $columns, $hidden, $sortable, $primary ); - } - - /** - * @access public - * - * @return array - */ - public function get_columns() { - return $this->_columns; - } -} diff --git a/wp/wp-admin/includes/media.php b/wp/wp-admin/includes/media.php index c6b2dcd1..ede25b3d 100644 --- a/wp/wp-admin/includes/media.php +++ b/wp/wp-admin/includes/media.php @@ -135,7 +135,7 @@ function get_image_send_to_editor( $id, $caption, $title, $align, $url = '', $re $html = '' . $html . ''; /** - * Filters the image HTML markup to send to the editor. + * Filters the image HTML markup to send to the editor when inserting an image. * * @since 2.5.0 * @@ -278,19 +278,19 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override $time = $post->post_date; } - $name = $_FILES[$file_id]['name']; $file = wp_handle_upload($_FILES[$file_id], $overrides, $time); if ( isset($file['error']) ) return new WP_Error( 'upload_error', $file['error'] ); - $name_parts = pathinfo($name); - $name = trim( substr( $name, 0, -(1 + strlen($name_parts['extension'])) ) ); + $name = $_FILES[$file_id]['name']; + $ext = pathinfo( $name, PATHINFO_EXTENSION ); + $name = wp_basename( $name, ".$ext" ); $url = $file['url']; $type = $file['type']; $file = $file['file']; - $title = sanitize_title( $name ); + $title = sanitize_text_field( $name ); $content = ''; $excerpt = ''; @@ -313,6 +313,7 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override /* translators: 1: audio track title, 2: artist name */ $content .= sprintf( __( '"%1$s" by %2$s.' ), $title, $meta['artist'] ); } else { + /* translators: 1: audio track title */ $content .= sprintf( __( '"%s".' ), $title ); } @@ -331,19 +332,26 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override } - if ( ! empty( $meta['year'] ) ) + if ( ! empty( $meta['year'] ) ) { + /* translators: Audio file track information. 1: Year of audio track release */ $content .= ' ' . sprintf( __( 'Released: %d.' ), $meta['year'] ); + } if ( ! empty( $meta['track_number'] ) ) { $track_number = explode( '/', $meta['track_number'] ); - if ( isset( $track_number[1] ) ) + if ( isset( $track_number[1] ) ) { + /* translators: Audio file track information. 1: Audio track number, 2: Total audio tracks */ $content .= ' ' . sprintf( __( 'Track %1$s of %2$s.' ), number_format_i18n( $track_number[0] ), number_format_i18n( $track_number[1] ) ); - else + } else { + /* translators: Audio file track information. 1: Audio track number */ $content .= ' ' . sprintf( __( 'Track %1$s.' ), number_format_i18n( $track_number[0] ) ); + } } - if ( ! empty( $meta['genre'] ) ) + if ( ! empty( $meta['genre'] ) ) { + /* translators: Audio file genre information. 1: Audio genre name */ $content .= ' ' . sprintf( __( 'Genre: %s.' ), $meta['genre'] ); + } // Use image exif/iptc data for title and caption defaults if possible. } elseif ( 0 === strpos( $type, 'image/' ) && $image_meta = @wp_read_image_metadata( $file ) ) { @@ -619,7 +627,7 @@ function get_upload_iframe_src( $type = null, $post_id = null, $tab = null ) { * * @param string $upload_iframe_src The upload iframe source URL by type. */ - $upload_iframe_src = apply_filters( $type . '_upload_iframe_src', $upload_iframe_src ); + $upload_iframe_src = apply_filters( "{$type}_upload_iframe_src", $upload_iframe_src ); return add_query_arg('TB_iframe', true, $upload_iframe_src); } @@ -787,7 +795,7 @@ function wp_media_upload_handler() { * @param string $src Media source URL. * @param string $title Media title. */ - $html = apply_filters( $type . '_send_to_editor_url', $html, esc_url_raw( $src ), $title ); + $html = apply_filters( "{$type}_send_to_editor_url", $html, esc_url_raw( $src ), $title ); } else { $align = ''; $alt = esc_attr( wp_unslash( $_POST['alt'] ) ); @@ -1482,7 +1490,7 @@ function get_media_item( $attachment_id, $args = null ) { ); if ( $r['send'] ) { - $r['send'] = get_submit_button( __( 'Insert into Post' ), 'button', "send[$attachment_id]", false ); + $r['send'] = get_submit_button( __( 'Insert into Post' ), '', "send[$attachment_id]", false ); } $delete = empty( $r['delete'] ) ? '' : $r['delete']; @@ -2033,7 +2041,7 @@ if ( $id ) { ?>

- +

- 'save-all', 'style' => 'display: none;' ) ); ?> + 'save-all', 'style' => 'display: none;' ) ); ?> @@ -2384,7 +2392,7 @@ function media_upload_library_form($errors) {

    @@ -2481,7 +2489,7 @@ foreach ($arc_result as $arc_row) { - +
@@ -2511,7 +2519,7 @@ jQuery(function($){

- +

@@ -2614,7 +2622,7 @@ function wp_media_insert_url_form( $default_view = 'image' ) {
- - - +
+
+ +
+ $input ) : ?> + + +
+ +
- - - - +
+
- - +
+ + +
+ +

- +

- +
- ' . get_submit_button( __( 'Insert into Post' ), 'button', 'insertonlybutton', false ) . ' + ' . get_submit_button( __( 'Insert into Post' ), '', 'insertonlybutton', false ) . '
@@ -2766,7 +2774,17 @@ function edit_form_image_editor( $post ) { echo wp_video_shortcode( $attr ); - else : + elseif ( isset( $thumb_url[0] ) ): + + ?> +
+

+ +

+
+
- +
@@ -74,9 +74,9 @@ do_action( 'post_submitbox_minor_actions', $post );
-
- - + post_status ) { case 'private': _e('Privately Published'); @@ -98,11 +98,12 @@ switch ( $post->post_status ) { ?> post_status || 'private' == $post->post_status || $can_publish ) { ?> -post_status ) { ?>style="display:none;" class="edit-post-status hide-if-no-js"> +post_status ) { ?>style="display:none;" class="edit-post-status hide-if-no-js" role="button">
- post_status ) : ?> post_status, 'publish' ); ?> value='publish'> post_status ) : ?> @@ -144,7 +145,7 @@ if ( 'private' == $post->post_status ) { echo esc_html( $visibility_trans ); ?> - +
@@ -157,7 +158,7 @@ echo esc_html( $visibility_trans ); ?> ID ) ); ?> />
/>
-
+
/>

@@ -174,14 +175,18 @@ echo esc_html( $visibility_trans ); ?> $datef = __( 'M j, Y @ H:i' ); if ( 0 != $post->ID ) { if ( 'future' == $post->post_status ) { // scheduled for publishing at a future date + /* translators: Post date information. 1: Date on which the post is currently scheduled to be published */ $stamp = __('Scheduled for: %1$s'); } elseif ( 'publish' == $post->post_status || 'private' == $post->post_status ) { // already published + /* translators: Post date information. 1: Date on which the post was 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 + /* translators: Post date information. 1: Date on which the post is to be published */ $stamp = __('Schedule for: %1$s'); } else { // draft, 1 or more saves, date specified + /* translators: Post date information. 1: Date on which the post is to be published */ $stamp = __('Publish on: %1$s'); } $date = date_i18n( $datef, strtotime( $post->post_date ) ); @@ -192,7 +197,10 @@ if ( 0 != $post->ID ) { if ( ! empty( $args['args']['revisions_count'] ) ) : ?>

- ' . number_format_i18n( $args['args']['revisions_count'] ) . '' ); ?> + ' . number_format_i18n( $args['args']['revisions_count'] ) . '' ); + ?>
- +
@@ -252,14 +260,14 @@ if ( !in_array( $post->post_status, array('publish', 'future', 'private') ) || 0 if ( $can_publish ) : if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?> - + - + - + @@ -290,7 +298,7 @@ function attachment_submit_meta_box( $post ) {
- +
@@ -298,6 +306,7 @@ function attachment_submit_meta_box( $post ) { %1$s'); $date = date_i18n( $datef, strtotime( $post->post_date ) ); ?> @@ -334,7 +343,7 @@ function attachment_submit_meta_box( $post ) {
- +
@@ -430,16 +439,18 @@ function post_tags_meta_box( $post, $box ) {
-

+

labels->separate_items_with_commas; ?>

+ +

labels->no_terms; ?>

-

labels->choose_from_most_used; ?>

+

post_type); - if ( $post_type_object->hierarchical ) { + if ( is_post_type_hierarchical( $post->post_type ) ) : $dropdown_args = array( 'post_type' => $post->post_type, 'exclude_tree' => $post->ID, @@ -809,20 +819,20 @@ function page_attributes_meta_box($post) { */ $dropdown_args = apply_filters( 'page_attributes_dropdown_pages_args', $dropdown_args, $post ); $pages = wp_dropdown_pages( $dropdown_args ); - if ( ! empty($pages) ) { + 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; + endif; // end empty pages check + endif; // end hierarchical check. + + if ( count( get_page_templates( $post ) ) > 0 && get_option( 'page_for_posts' ) != $post->ID ) : + $template = ! empty( $post->page_template ) ? $post->page_template : false; ?> -

- - +post_type ); ?> - -

-

-post_type && get_current_screen()->get_help_tabs() ) { ?> + +post_type, 'page-attributes' ) ) : ?> +

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

-
- +
@@ -909,9 +919,9 @@ if ( !empty($_GET['action']) && 'edit' == $_GET['action'] && current_user_can('m
link_id) ) { ?> - + - +
diff --git a/wp/wp-admin/includes/misc.php b/wp/wp-admin/includes/misc.php index 0cc57cbc..679b9ac5 100644 --- a/wp/wp-admin/includes/misc.php +++ b/wp/wp-admin/includes/misc.php @@ -133,7 +133,7 @@ function insert_with_markers( $filename, $marker, $insertion ) { $lines[] = rtrim( fgets( $fp ), "\r\n" ); } - // Split out the existing file into the preceeding lines, and those that appear after the marker + // Split out the existing file into the preceding lines, and those that appear after the marker $pre_lines = $post_lines = $existing_lines = array(); $found_marker = $found_end_marker = false; foreach ( $lines as $line ) { diff --git a/wp/wp-admin/includes/ms.php b/wp/wp-admin/includes/ms.php index c88123a1..0edc3083 100644 --- a/wp/wp-admin/includes/ms.php +++ b/wp/wp-admin/includes/ms.php @@ -29,10 +29,12 @@ function check_upload_size( $file ) { $file_size = filesize( $file['tmp_name'] ); if ( $space_left < $file_size ) { + /* translators: 1: Required disk space in kilobytes */ $file['error'] = sprintf( __( 'Not enough space to upload. %1$s KB needed.' ), number_format( ( $file_size - $space_left ) / KB_IN_BYTES ) ); } if ( $file_size > ( KB_IN_BYTES * get_site_option( 'fileupload_maxk', 1500 ) ) ) { + /* translators: 1: Maximum allowed file size in kilobytes */ $file['error'] = sprintf( __( 'This file is too big. Files must be less than %1$s KB in size.' ), get_site_option( 'fileupload_maxk', 1500 ) ); } @@ -40,7 +42,7 @@ function check_upload_size( $file ) { $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 ) ) { + if ( $file['error'] != '0' && ! isset( $_POST['html-upload'] ) && ! wp_doing_ajax() ) { wp_die( $file['error'] . ' ' . __( 'Back' ) . '' ); } @@ -66,7 +68,7 @@ function wpmu_delete_blog( $blog_id, $drop = false ) { switch_to_blog( $blog_id ); } - $blog = get_blog_details( $blog_id ); + $blog = get_site( $blog_id ); /** * Fires before a site is deleted. * @@ -88,7 +90,7 @@ function wpmu_delete_blog( $blog_id, $drop = false ) { update_blog_status( $blog_id, 'deleted', 1 ); - $current_site = get_current_site(); + $current_network = get_network(); // If a full blog object is not available, do not destroy anything. if ( $drop && ! $blog ) { @@ -96,7 +98,7 @@ function wpmu_delete_blog( $blog_id, $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 ) ) ) { + if ( $drop && ( 1 == $blog_id || is_main_site( $blog_id ) || ( $blog->path == $current_network->path && $blog->domain == $current_network->domain ) ) ) { $drop = false; } @@ -272,6 +274,8 @@ function update_option_new_admin_email( $old_value, $value ) { ); update_option( 'adminhash', $new_admin_email ); + $switched_locale = switch_to_locale( get_user_locale() ); + /* translators: Do not translate USERNAME, ADMIN_URL, EMAIL, SITENAME, SITEURL: those are placeholders. */ $email_text = __( 'Howdy ###USERNAME###, @@ -315,6 +319,10 @@ All at ###SITENAME### $content = str_replace( '###SITEURL###', network_home_url(), $content ); wp_mail( $value, sprintf( __( '[%s] New Admin Email Address' ), wp_specialchars_decode( get_option( 'blogname' ) ) ), $content ); + + if ( $switched_locale ) { + restore_previous_locale(); + } } /** @@ -353,6 +361,8 @@ function send_confirmation_on_profile_email() { ); update_user_meta( $current_user->ID, '_new_email', $new_user_email ); + $switched_locale = switch_to_locale( get_user_locale() ); + /* translators: Do not translate USERNAME, ADMIN_URL, EMAIL, SITENAME, SITEURL: those are placeholders. */ $email_text = __( 'Howdy ###USERNAME###, @@ -388,13 +398,17 @@ All at ###SITENAME### $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( '###ADMIN_URL###', esc_url( self_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; + + if ( $switched_locale ) { + restore_previous_locale(); + } } } @@ -462,7 +476,10 @@ function display_space_usage() { $space .= __( 'MB' ); } ?> - + true, - 'update_post_meta_cache' => false, - 'update_post_term_cache' => false, - 'posts_per_page' => 10, - 'post_type' => $matches[2], - 's' => $query, - ) ); + $post_type_obj = _wp_nav_menu_meta_box_object( get_post_type_object( $matches[2] ) ); + $args = array_merge( + $args, + array( + 'no_found_rows' => true, + 'update_post_meta_cache' => false, + 'update_post_term_cache' => false, + 'posts_per_page' => 10, + 'post_type' => $matches[2], + 's' => $query, + ) + ); + if ( isset( $post_type_obj->_default_query ) ) { + $args = array_merge( $args, (array) $post_type_obj->_default_query ); + } + $search_results_query = new WP_Query( $args ); if ( ! $search_results_query->have_posts() ) { return; } @@ -279,7 +287,7 @@ function wp_nav_menu_item_link_meta_box() {

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

@@ -350,9 +358,10 @@ function wp_nav_menu_item_post_type_meta_box( $object, $box ) { ) ), 'format' => '', - 'prev_text' => __('«'), - 'next_text' => __('»'), - 'total' => $num_pages, + 'prev_text' => '' . __( '«' ) . '', + 'next_text' => '' . __( '»' ) . '', + 'before_page_number' => '' . __( 'Page' ) . ' ', + 'total' => $num_pages, 'current' => $pagenum )); @@ -445,7 +454,7 @@ function wp_nav_menu_item_post_type_meta_box( $object, $box ) { - 'submit-quick-search-posttype-' . $post_type_name ) ); ?> + 'submit-quick-search-posttype-' . $post_type_name ) ); ?>

    @@ -502,7 +511,7 @@ function wp_nav_menu_item_post_type_meta_box( $object, $box ) { } $post_type = get_post_type_object( $post_type_name ); - $archive_link = get_post_type_archive_link( $post_type_name ); + if ( $post_type->has_archive ) { $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1; array_unshift( $posts, (object) array( @@ -563,11 +572,11 @@ function wp_nav_menu_item_post_type_meta_box( $object, $box ) { ), remove_query_arg( $removed_args ) )); - ?>#posttype-" class="select-all"> + ?>#posttype-" class="select-all aria-button-if-js"> - class="button-secondary submit-add-to-menu right" value="" name="add-post-type-menu-item" id="" /> + class="button submit-add-to-menu right" value="" name="add-post-type-menu-item" id="" />

    @@ -634,9 +643,10 @@ function wp_nav_menu_item_taxonomy_meta_box( $object, $box ) { ) ), 'format' => '', - 'prev_text' => __('«'), - 'next_text' => __('»'), - 'total' => $num_pages, + 'prev_text' => '' . __( '«' ) . '', + 'next_text' => '' . __( '»' ) . '', + 'before_page_number' => '' . __( 'Page' ) . ' ', + 'total' => $num_pages, 'current' => $pagenum )); @@ -734,7 +744,7 @@ function wp_nav_menu_item_taxonomy_meta_box( $object, $box ) { - 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?> + 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?>

      @@ -761,11 +771,11 @@ function wp_nav_menu_item_taxonomy_meta_box( $object, $box ) { ), remove_query_arg($removed_args) )); - ?>#taxonomy-" class="select-all"> + ?>#taxonomy-" class="select-all aria-button-if-js"> - class="button-secondary submit-add-to-menu right" value="" name="add-taxonomy-menu-item" id="" /> + class="button submit-add-to-menu right" value="" name="add-taxonomy-menu-item" id="" />

      diff --git a/wp/wp-admin/includes/network.php b/wp/wp-admin/includes/network.php index d04b4f9a..fef6b668 100644 --- a/wp/wp-admin/includes/network.php +++ b/wp/wp-admin/includes/network.php @@ -144,8 +144,18 @@ function network_step1( $errors = false ) { $error_codes = $errors->get_error_codes(); } - $site_name = ( ! empty( $_POST['sitename'] ) && ! in_array( 'empty_sitename', $error_codes ) ) ? $_POST['sitename'] : sprintf( _x('%s Sites', 'Default network name' ), get_option( 'blogname' ) ); - $admin_email = ( ! empty( $_POST['email'] ) && ! in_array( 'invalid_email', $error_codes ) ) ? $_POST['email'] : get_option( 'admin_email' ); + if ( ! empty( $_POST['sitename'] ) && ! in_array( 'empty_sitename', $error_codes ) ) { + $site_name = $_POST['sitename']; + } else { + /* translators: %s: Default network name */ + $site_name = sprintf( __( '%s Sites' ), get_option( 'blogname' ) ); + } + + if ( ! empty( $_POST['email'] ) && ! in_array( 'invalid_email', $error_codes ) ) { + $admin_email = $_POST['email']; + } else { + $admin_email = get_option( 'admin_email' ); + } ?>

      diff --git a/wp/wp-admin/includes/plugin-install.php b/wp/wp-admin/includes/plugin-install.php index 4d558cf0..0d932c26 100644 --- a/wp/wp-admin/includes/plugin-install.php +++ b/wp/wp-admin/includes/plugin-install.php @@ -109,7 +109,7 @@ function plugins_api( $action, $args = array() ) { } if ( ! isset( $args->locale ) ) { - $args->locale = get_locale(); + $args->locale = get_user_locale(); } /** @@ -155,16 +155,38 @@ function plugins_api( $action, $args = array() ) { $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 ); + trigger_error( + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ) . ' ' . __( '(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() ); + $res = new WP_Error( 'plugins_api_failed', + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ), + $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 ) ); + if ( ! is_object( $res ) && ! is_array( $res ) ) { + $res = new WP_Error( 'plugins_api_failed', + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ), + wp_remote_retrieve_body( $request ) + ); + } } } elseif ( !is_wp_error($res) ) { $res->external = true; @@ -210,7 +232,7 @@ function install_popular_tags( $args = array() ) { */ function install_dashboard() { ?> -

      WordPress Plugin Directory or upload a plugin in .zip format by clicking the button at the top of this page.' ), 'https://wordpress.org/plugins/' ); ?>

      +

      WordPress Plugin Directory or upload a plugin in .zip format by clicking the button at the top of this page.' ), __( 'https://wordpress.org/plugins/' ) ); ?>

      @@ -263,9 +285,9 @@ function install_search_form( $deprecated = true ) { - 'search-submit' ) ); ?> + 'search-submit' ) ); ?> - +
tested ) ) { ?>
  • tested; ?>
  • - active_installs ) ) { ?> + active_installs ) ) { ?>
  • active_installs >= 1000000 ) { _ex( '1+ Million', 'Active plugin installs' ); + } elseif ( 0 == $api->active_installs ) { + _ex( 'Less Than 10', 'Active plugin installs' ); } else { echo number_format_i18n( $api->active_installs ) . '+'; } ?>
  • slug ) && empty( $api->external ) ) { ?> -
  • +
  • homepage ) ) { ?>
  • donate_link ) && empty( $api->contributors ) ) { ?> @@ -630,9 +660,11 @@ function install_plugin_information() {
    tested ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->tested ) ), $api->tested, '>' ) ) { + $wp_version = get_bloginfo( 'version' ); + + if ( ! empty( $api->tested ) && version_compare( substr( $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, '<' ) ) { + } elseif ( ! empty( $api->requires ) && version_compare( substr( $wp_version, 0, strlen( $api->requires ) ), $api->requires, '<' ) ) { echo '

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

    '; } diff --git a/wp/wp-admin/includes/plugin.php b/wp/wp-admin/includes/plugin.php index cf6b4bab..9a4d0cb2 100644 --- a/wp/wp-admin/includes/plugin.php +++ b/wp/wp-admin/includes/plugin.php @@ -588,7 +588,7 @@ function activate_plugin( $plugin, $redirect = '', $network_wide = false, $silen * @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 ); + do_action( "activate_{$plugin}", $network_wide ); } if ( $network_wide ) { @@ -701,7 +701,7 @@ function deactivate_plugins( $plugins, $silent = false, $network_wide = null ) { * @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 ); + do_action( "deactivate_{$plugin}", $network_deactivating ); /** * Fires after a plugin is deactivated. @@ -1764,67 +1764,6 @@ function user_can_access_admin_page() { /* 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.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.0', 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.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.0', 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 ); -} - /** * Refreshes the value of the options whitelist available via the 'whitelist_options' hook. * diff --git a/wp/wp-admin/includes/post.php b/wp/wp-admin/includes/post.php index 790b736c..ab50c27d 100644 --- a/wp/wp-admin/includes/post.php +++ b/wp/wp-admin/includes/post.php @@ -160,7 +160,7 @@ function _wp_translate_postdata( $update = false, $post_data = null ) { $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.' ) ); + return new WP_Error( 'invalid_date', __( 'Invalid date.' ) ); } $post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] ); } @@ -288,6 +288,8 @@ function edit_post( $post_data = null ) { continue; if ( $meta->post_id != $post_ID ) continue; + if ( is_protected_meta( $meta->meta_key, 'post' ) || ! current_user_can( 'edit_post_meta', $post_ID, $meta->meta_key ) ) + 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'] ); @@ -1144,9 +1146,43 @@ function wp_edit_attachments_query_vars( $q = false ) { $q['post_parent'] = 0; } + // Filter query clauses to include filenames. + if ( isset( $q['s'] ) ) { + add_filter( 'posts_clauses', '_filter_query_attachment_filenames' ); + } + return $q; } +/** + * Filter the SQL clauses of an attachment query to include filenames. + * + * @since 4.7.0 + * @access private + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param array $clauses An array including WHERE, GROUP BY, JOIN, ORDER BY, + * DISTINCT, fields (SELECT), and LIMITS clauses. + * @return array The modified clauses. + */ +function _filter_query_attachment_filenames( $clauses ) { + global $wpdb; + remove_filter( 'posts_clauses', __FUNCTION__ ); + + // Add a LEFT JOIN of the postmeta table so we don't trample existing JOINs. + $clauses['join'] .= " LEFT JOIN {$wpdb->postmeta} AS sq1 ON ( {$wpdb->posts}.ID = sq1.post_id AND sq1.meta_key = '_wp_attached_file' )"; + + $clauses['groupby'] = "{$wpdb->posts}.ID"; + + $clauses['where'] = preg_replace( + "/\({$wpdb->posts}.post_content (NOT LIKE|LIKE) (\'[^']+\')\)/", + "$0 OR ( sq1.meta_value $1 $2 )", + $clauses['where'] ); + + return $clauses; +} + /** * Executes a query for attachments. An array of WP_Query arguments * can be passed in, which will override the arguments set by this function. @@ -1207,9 +1243,9 @@ function postbox_classes( $id, $page ) { * @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. + * @param string $title Optional. Title to override the post's current title when generating the post name. Default null. + * @param string $name Optional. Name to override the post name. Default null. + * @return array Array containing the sample permalink with placeholder for the post name, and the post name. */ function get_sample_permalink($id, $title = null, $name = null) { $post = get_post( $id ); @@ -1270,7 +1306,7 @@ function get_sample_permalink($id, $title = null, $name = null) { * * @since 4.4.0 * - * @param string $permalink Sample permalink. + * @param array $permalink Array containing the sample permalink with placeholder for the post name, and the post name. * @param int $post_id Post ID. * @param string $title Post title. * @param string $name Post name (slug). @@ -1300,14 +1336,14 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) { $preview_target = ''; if ( current_user_can( 'read_post', $post->ID ) ) { - if ( 'draft' === $post->post_status ) { + if ( 'draft' === $post->post_status || empty( $post->post_name ) ) { $view_link = get_preview_post_link( $post ); $preview_target = " target='wp-preview-{$post->ID}'"; } else { if ( 'publish' === $post->post_status || 'attachment' === $post->post_type ) { $view_link = get_permalink( $post ); } else { - // Allow non-published (private, future) to be viewed at a pretty permalink. + // Allow non-published (private, future) to be viewed at a pretty permalink, in case $post->post_name is set $view_link = str_replace( array( '%pagename%', '%postname%' ), $post->post_name, $permalink ); } } @@ -1367,14 +1403,12 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) { * * @since 2.9.0 * - * @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 $_wp_additional_image_sizes; + $_wp_additional_image_sizes = wp_get_additional_image_sizes(); $post = get_post( $post ); $post_type_object = get_post_type_object( $post->post_type ); diff --git a/wp/wp-admin/includes/revision.php b/wp/wp-admin/includes/revision.php index dee879d6..9edf52d2 100644 --- a/wp/wp-admin/includes/revision.php +++ b/wp/wp-admin/includes/revision.php @@ -70,10 +70,10 @@ function wp_get_revision_ui_diff( $post, $compare_from, $compare_to ) { * @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' ) : ''; + $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' ); + $content_to = apply_filters( "_wp_post_revision_field_{$field}", $compare_to->$field, $field, $compare_to, 'to' ); $args = array( 'show_split_view' => true @@ -340,7 +340,7 @@ function wp_print_revision_templates() { } #> /> - +
    @@ -400,4 +400,4 @@ function wp_print_revision_templates() { <# }); #>
    posts ( 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_password varchar(255) NOT NULL default '', post_name varchar(200) NOT NULL default '', to_ping text NOT NULL, pinged text NOT NULL, @@ -527,7 +527,7 @@ function populate_options() { // 3.0 multisite if ( is_multisite() ) { /* translators: site tagline */ - $options[ 'blogdescription' ] = sprintf(__('Just another %s site'), get_current_site()->site_name ); + $options[ 'blogdescription' ] = sprintf(__('Just another %s site'), get_network()->site_name ); $options[ 'permalink_structure' ] = '/%year%/%monthnum%/%day%/%postname%/'; } diff --git a/wp/wp-admin/includes/template.php b/wp/wp-admin/includes/template.php index 57478a11..edf9a864 100644 --- a/wp/wp-admin/includes/template.php +++ b/wp/wp-admin/includes/template.php @@ -293,14 +293,15 @@ function get_inline_data($post) {
    ' . mysql2date( 's', $post->post_date, false ) . '
    ' . esc_html( $post->post_password ) . '
    '; - if ( $post_type_object->hierarchical ) + if ( $post_type_object->hierarchical ) { echo '
    ' . $post->post_parent . '
    '; + } - if ( $post->post_type == 'page' ) - echo '
    ' . esc_html( get_post_meta( $post->ID, '_wp_page_template', true ) ) . '
    '; + echo '
    ' . ( $post->page_template ? esc_html( $post->page_template ) : 'default' ) . '
    '; - if ( post_type_supports( $post->post_type, 'page-attributes' ) ) + if ( post_type_supports( $post->post_type, 'page-attributes' ) ) { echo ''; + } $taxonomy_names = get_object_taxonomies( $post->post_type ); foreach ( $taxonomy_names as $taxonomy_name) { @@ -423,11 +424,11 @@ function wp_comment_reply( $position = 1, $checkbox = false, $mode = 'single', $

    - + - +

    @@ -657,7 +658,7 @@ function meta_form( $post = null ) {
    - 'newmeta-submit', 'data-wp-lists' => 'add:the-list:newmeta' ) ); ?> + 'newmeta-submit', 'data-wp-lists' => 'add:the-list:newmeta' ) ); ?>
    @@ -761,11 +762,13 @@ function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) { * Print out option HTML elements for the page templates drop-down. * * @since 1.5.0 + * @since 4.7.0 Added the `$post_type` parameter. * - * @param string $default Optional. The template file name. Default empty. + * @param string $default Optional. The template file name. Default empty. + * @param string $post_type Optional. Post type to get templates for. Default 'post'. */ -function page_template_dropdown( $default = '' ) { - $templates = get_page_templates( get_post() ); +function page_template_dropdown( $default = '', $post_type = 'page' ) { + $templates = get_page_templates( null, $post_type ); ksort( $templates ); foreach ( array_keys( $templates ) as $template ) { $selected = selected( $default, $templates[ $template ], false ); @@ -1513,7 +1516,7 @@ function find_posts_div($found_action = '') {
    - +
    @@ -1622,7 +1625,7 @@ do_action( "admin_head-$hook_suffix" ); /** This action is documented in wp-admin/admin-header.php */ do_action( 'admin_head' ); -$admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) ); +$admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_user_locale() ) ) ); if ( is_rtl() ) $admin_body_class .= ' rtl'; @@ -1752,14 +1755,39 @@ function _media_states( $post ) { if ( current_theme_supports( 'custom-header') ) { $meta_header = get_post_meta($post->ID, '_wp_attachment_is_custom_header', true ); - if ( ! empty( $meta_header ) && $meta_header == $stylesheet ) - $media_states[] = __( 'Header Image' ); + + if ( is_random_header_image() ) { + $header_images = wp_list_pluck( get_uploaded_header_images(), 'attachment_id' ); + + if ( $meta_header == $stylesheet && in_array( $post->ID, $header_images ) ) { + $media_states[] = __( 'Header Image' ); + } + } else { + $header_image = get_header_image(); + + // Display "Header Image" if the image was ever used as a header image + if ( ! empty( $meta_header ) && $meta_header == $stylesheet && $header_image !== wp_get_attachment_url( $post->ID ) ) { + $media_states[] = __( 'Header Image' ); + } + + // Display "Current Header Image" if the image is currently the header image + if ( $header_image && $header_image == wp_get_attachment_url( $post->ID ) ) { + $media_states[] = __( 'Current Header Image' ); + } + } } if ( current_theme_supports( 'custom-background') ) { $meta_background = get_post_meta($post->ID, '_wp_attachment_is_custom_background', true ); - if ( ! empty( $meta_background ) && $meta_background == $stylesheet ) + + if ( ! empty( $meta_background ) && $meta_background == $stylesheet ) { $media_states[] = __( 'Background Image' ); + + $background_image = get_background_image(); + if ( $background_image && $background_image == wp_get_attachment_url( $post->ID ) ) { + $media_states[] = __( 'Current Background Image' ); + } + } } if ( $post->ID == get_option( 'site_icon' ) ) { @@ -1914,10 +1942,8 @@ function get_submit_button( $text = '', $type = 'primary large', $name = 'submit continue; $classes[] = in_array( $t, $button_shorthand ) ? 'button-' . $t : $t; } - $class = implode( ' ', array_unique( $classes ) ); - - if ( 'delete' === $type ) - $class = 'button-secondary delete'; + // Remove empty items, remove duplicate items, and finally build a string. + $class = implode( ' ', array_unique( array_filter( $classes ) ) ); $text = $text ? $text : __( 'Save Changes' ); @@ -1995,7 +2021,7 @@ function _wp_admin_html_begin() { * @return WP_Screen Screen object. */ function convert_to_screen( $hook_name ) { - if ( ! class_exists( 'WP_Screen', false ) ) { + if ( ! class_exists( 'WP_Screen' ) ) { _doing_it_wrong( 'convert_to_screen(), add_meta_box()', __( "Likely direct inclusion of wp-admin/includes/template.php in order to use add_meta_box(). This is very wrong. Hook the add_meta_box() call into the add_meta_boxes action instead." ), '3.3.0' ); return (object) array( 'id' => '_invalid', 'base' => '_are_belong_to_us' ); } diff --git a/wp/wp-admin/includes/theme-install.php b/wp/wp-admin/includes/theme-install.php index 9333beac..31ce5f79 100644 --- a/wp/wp-admin/includes/theme-install.php +++ b/wp/wp-admin/includes/theme-install.php @@ -85,7 +85,7 @@ function install_theme_search_form( $type_selector = true ) { - +
    - + - + get_page_templates( $post ) ); +function get_page_templates( $post = null, $post_type = 'page' ) { + return array_flip( wp_get_theme()->get_page_templates( $post, $post_type ) ); } /** @@ -360,9 +362,9 @@ function get_theme_feature_list( $api = true ) { * @param string $action API action to perform: 'query_themes', 'theme_information', * 'hot_tags' or 'feature_list'. * @param array|object $args { - * Optional. Array or object of arguments to serialize for the Plugin Info API. + * Optional. Array or object of arguments to serialize for the Themes API. * - * @type string $slug The plugin slug. Default empty. + * @type string $slug The theme slug. Default empty. * @type int $per_page Number of themes per page. Default 24. * @type int $page Number of current page. Default 1. * @type int $number Number of tags to be queried. @@ -412,7 +414,7 @@ function themes_api( $action, $args = array() ) { } if ( ! isset( $args->locale ) ) { - $args->locale = get_locale(); + $args->locale = get_user_locale(); } /** @@ -459,18 +461,40 @@ function themes_api( $action, $args = array() ) { $request = wp_remote_post( $url, $http_args ); if ( $ssl && is_wp_error( $request ) ) { - if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) { - 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 ); + if ( ! wp_doing_ajax() ) { + trigger_error( + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ) . ' ' . __( '(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('themes_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() ); + $res = new WP_Error( 'themes_api_failed', + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ), + $request->get_error_message() + ); } else { $res = maybe_unserialize( wp_remote_retrieve_body( $request ) ); - if ( ! is_object( $res ) && ! is_array( $res ) ) - $res = new WP_Error('themes_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ), wp_remote_retrieve_body( $request ) ); + if ( ! is_object( $res ) && ! is_array( $res ) ) { + $res = new WP_Error( 'themes_api_failed', + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ), + wp_remote_retrieve_body( $request ) + ); + } } } @@ -572,6 +596,7 @@ function wp_prepare_themes_for_js( $themes = null ) { 'parent' => $parent, 'active' => $slug === $current_theme, 'hasUpdate' => isset( $updates[ $slug ] ), + 'hasPackage' => isset( $updates[ $slug ] ) && ! empty( $updates[ $slug ][ 'package' ] ), 'update' => get_theme_update_available( $theme ), 'actions' => array( 'activate' => current_user_can( 'switch_themes' ) ? wp_nonce_url( admin_url( 'themes.php?action=activate&stylesheet=' . $encoded_slug ), 'switch-theme_' . $slug ) : null, diff --git a/wp/wp-admin/includes/translation-install.php b/wp/wp-admin/includes/translation-install.php index ee8254d5..ed86b15c 100644 --- a/wp/wp-admin/includes/translation-install.php +++ b/wp/wp-admin/includes/translation-install.php @@ -56,17 +56,38 @@ function translations_api( $type, $args = null ) { $request = wp_remote_post( $url, $options ); 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 ); + trigger_error( + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ) . ' ' . __( '(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, $options ); } if ( is_wp_error( $request ) ) { - $res = new WP_Error( 'translations_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() ); + $res = new WP_Error( 'translations_api_failed', + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ), + $request->get_error_message() + ); } else { $res = json_decode( wp_remote_retrieve_body( $request ), true ); if ( ! is_object( $res ) && ! is_array( $res ) ) { - $res = new WP_Error( 'translations_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 ) ); + $res = new WP_Error( 'translations_api_failed', + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ), + wp_remote_retrieve_body( $request ) + ); } } } diff --git a/wp/wp-admin/includes/update-core.php b/wp/wp-admin/includes/update-core.php index a378d3ce..3e6aaa20 100644 --- a/wp/wp-admin/includes/update-core.php +++ b/wp/wp-admin/includes/update-core.php @@ -720,8 +720,9 @@ $_old_files = array( * Directories should be noted by suffixing it with a trailing slash (/) * * @since 3.2.0 - * @since 4.4.0 New themes are not automatically installed on upgrade. - * This can still be explicitly asked for by defining + * @since 4.7.0 New themes were not automatically installed for 4.4-4.6 on + * upgrade. New themes are now installed again. To disable new + * themes from being installed on upgrade, explicitly define * CORE_UPGRADE_SKIP_NEW_BUNDLED as false. * @global array $_new_bundled_files * @var array @@ -730,21 +731,17 @@ $_old_files = array( global $_new_bundled_files; $_new_bundled_files = array( - 'plugins/akismet/' => '2.0', - 'themes/twentyten/' => '3.0', - 'themes/twentyeleven/' => '3.2', - 'themes/twentytwelve/' => '3.5', - 'themes/twentythirteen/' => '3.6', - 'themes/twentyfourteen/' => '3.8', - 'themes/twentyfifteen/' => '4.1', - 'themes/twentysixteen/' => '4.4', + 'plugins/akismet/' => '2.0', + 'themes/twentyten/' => '3.0', + 'themes/twentyeleven/' => '3.2', + 'themes/twentytwelve/' => '3.5', + 'themes/twentythirteen/' => '3.6', + 'themes/twentyfourteen/' => '3.8', + 'themes/twentyfifteen/' => '4.1', + 'themes/twentysixteen/' => '4.4', + 'themes/twentyseventeen/' => '4.7', ); -// If not explicitly defined as false, don't install new default themes. -if ( ! defined( 'CORE_UPGRADE_SKIP_NEW_BUNDLED' ) || CORE_UPGRADE_SKIP_NEW_BUNDLED ) { - $_new_bundled_files = array( 'plugins/akismet/' => '2.0' ); -} - /** * Upgrades the core of WordPress. * @@ -902,6 +899,8 @@ function update_core($from, $to) { continue; if ( ! file_exists( $working_dir_local . $file ) ) continue; + if ( '.' === dirname( $file ) && in_array( pathinfo( $file, PATHINFO_EXTENSION ), array( 'html', 'txt' ) ) ) + continue; if ( md5_file( ABSPATH . $file ) === $checksum ) $skip[] = $file; else @@ -963,6 +962,10 @@ function update_core($from, $to) { continue; if ( ! file_exists( $working_dir_local . $file ) ) continue; + if ( '.' === dirname( $file ) && in_array( pathinfo( $file, PATHINFO_EXTENSION ), array( 'html', 'txt' ) ) ) { + $skip[] = $file; + continue; + } if ( file_exists( ABSPATH . $file ) && md5_file( ABSPATH . $file ) == $checksum ) $skip[] = $file; else diff --git a/wp/wp-admin/includes/update.php b/wp/wp-admin/includes/update.php index 74899e37..e7a8b5e7 100644 --- a/wp/wp-admin/includes/update.php +++ b/wp/wp-admin/includes/update.php @@ -112,7 +112,14 @@ function get_core_checksums( $version, $locale ) { $response = wp_remote_get( $url, $options ); if ( $ssl && is_wp_error( $response ) ) { - 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 ); + trigger_error( + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ) . ' ' . __( '(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 + ); $response = wp_remote_get( $http_url, $options ); } @@ -200,6 +207,7 @@ function core_update_footer( $msg = '' ) { switch ( $cur->response ) { case 'development' : + /* translators: 1: WordPress version number, 2: WordPress updates admin screen URL */ return sprintf( __( 'You are using a development version (%1$s). Cool! Please stay updated.' ), get_bloginfo( 'version', 'display' ), network_admin_url( 'update-core.php' ) ); case 'upgrade' : diff --git a/wp/wp-admin/includes/upgrade.php b/wp/wp-admin/includes/upgrade.php index 807673a7..94a12250 100644 --- a/wp/wp-admin/includes/upgrade.php +++ b/wp/wp-admin/includes/upgrade.php @@ -50,6 +50,9 @@ function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated update_option('admin_email', $user_email); update_option('blog_public', $public); + // Freshness of site - in the future, this could get more specific about actions taken, perhaps. + update_option( 'fresh_site', 1 ); + if ( $language ) { update_option( 'WPLANG', $language ); } @@ -161,12 +164,12 @@ function wp_install_defaults( $user_id ) { } $first_post = sprintf( $first_post, - sprintf( '%s', esc_url( network_home_url() ), get_current_site()->site_name ) + sprintf( '%s', esc_url( network_home_url() ), get_network()->site_name ) ); // Back-compat for pre-4.4 $first_post = str_replace( 'SITE_URL', esc_url( network_home_url() ), $first_post ); - $first_post = str_replace( 'SITE_NAME', get_current_site()->site_name, $first_post ); + $first_post = str_replace( 'SITE_NAME', get_network()->site_name, $first_post ); } else { $first_post = __( 'Welcome to WordPress. This is your first post. Edit or delete it, then start writing!' ); } @@ -253,8 +256,7 @@ As a new WordPress user, you should go to your dashboard to d update_option( 'widget_archives', array ( 2 => array ( 'title' => '', 'count' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) ); update_option( 'widget_categories', array ( 2 => array ( 'title' => '', 'count' => 0, 'hierarchical' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) ); update_option( 'widget_meta', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) ); - update_option( 'sidebars_widgets', array ( 'wp_inactive_widgets' => array (), 'sidebar-1' => array ( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2', ), 'array_version' => 3 ) ); - + update_option( 'sidebars_widgets', array( 'wp_inactive_widgets' => array(), 'sidebar-1' => array( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2' ), 'sidebar-2' => array(), 'sidebar-3' => array(), 'array_version' => 3 ) ); if ( ! is_multisite() ) update_user_meta( $user_id, 'show_welcome_panel', 1 ); elseif ( ! is_super_admin( $user_id ) && ! metadata_exists( 'user', $user_id, 'show_welcome_panel' ) ) @@ -373,6 +375,7 @@ function wp_new_blog_notification($blog_title, $blog_url, $user_id, $password) { $email = $user->user_email; $name = $user->user_login; $login_url = wp_login_url(); + /* translators: New site notification email. 1: New site URL, 2: User login, 3: User password or password reset link, 4: Login URL */ $message = sprintf( __( "Your new WordPress site has been successfully set up at: %1\$s @@ -2283,7 +2286,7 @@ function dbDelta( $queries = '', $execute = true ) { $index_type = str_replace( 'INDEX', 'KEY', $index_type ); // Escape the index name with backticks. An index for a primary key has no name. - $index_name = ( 'PRIMARY KEY' === $index_type ) ? '' : '`' . $index_matches['index_name'] . '`'; + $index_name = ( 'PRIMARY KEY' === $index_type ) ? '' : '`' . strtolower( $index_matches['index_name'] ) . '`'; // Parse the columns. Multiple columns are separated by a comma. $index_columns = array_map( 'trim', explode( ',', $index_matches['index_columns'] ) ); @@ -2407,7 +2410,7 @@ function dbDelta( $queries = '', $execute = true ) { foreach ($tableindices as $tableindex) { // Add the index to the index data array. - $keyname = $tableindex->Key_name; + $keyname = strtolower( $tableindex->Key_name ); $index_ary[$keyname]['columns'][] = array('fieldname' => $tableindex->Column_name, 'subpart' => $tableindex->Sub_part); $index_ary[$keyname]['unique'] = ($tableindex->Non_unique == 0)?true:false; $index_ary[$keyname]['index_type'] = $tableindex->Index_type; @@ -2418,7 +2421,7 @@ function dbDelta( $queries = '', $execute = true ) { // Build a create string to compare to the query. $index_string = ''; - if ($index_name == 'PRIMARY') { + if ($index_name == 'primary') { $index_string .= 'PRIMARY '; } elseif ( $index_data['unique'] ) { $index_string .= 'UNIQUE '; @@ -2430,7 +2433,7 @@ function dbDelta( $queries = '', $execute = true ) { $index_string .= 'SPATIAL '; } $index_string .= 'KEY '; - if ( 'PRIMARY' !== $index_name ) { + if ( 'primary' !== $index_name ) { $index_string .= '`' . $index_name . '`'; } $index_columns = ''; @@ -2821,7 +2824,7 @@ function pre_schema_upgrade() { // Multisite schema upgrades. if ( $wp_current_db_version < 25448 && is_multisite() && wp_should_upgrade_global_tables() ) { - // Upgrade verions prior to 3.7 + // Upgrade versions prior to 3.7 if ( $wp_current_db_version < 25179 ) { // New primary key for signups. $wpdb->query( "ALTER TABLE $wpdb->signups ADD signup_id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST" ); diff --git a/wp/wp-admin/includes/user.php b/wp/wp-admin/includes/user.php index f6c52dd9..d962717a 100644 --- a/wp/wp-admin/includes/user.php +++ b/wp/wp-admin/includes/user.php @@ -94,6 +94,20 @@ function edit_user( $user_id = 0 ) { $user->rich_editing = isset( $_POST['rich_editing'] ) && 'false' == $_POST['rich_editing'] ? 'false' : 'true'; $user->admin_color = isset( $_POST['admin_color'] ) ? sanitize_text_field( $_POST['admin_color'] ) : 'fresh'; $user->show_admin_bar_front = isset( $_POST['admin_bar_front'] ) ? 'true' : 'false'; + $user->locale = ''; + + if ( isset( $_POST['locale'] ) ) { + $locale = sanitize_text_field( $_POST['locale'] ); + if ( 'site-default' === $locale ) { + $locale = ''; + } elseif ( '' === $locale ) { + $locale = 'en_US'; + } elseif ( ! in_array( $locale, get_available_languages(), true ) ) { + $locale = ''; + } + + $user->locale = $locale; + } } $user->comment_shortcuts = isset( $_POST['comment_shortcuts'] ) && 'true' == $_POST['comment_shortcuts'] ? 'true' : ''; @@ -171,7 +185,7 @@ function edit_user( $user_id = 0 ) { * * @param WP_Error &$errors WP_Error object, passed by reference. * @param bool $update Whether this is a user update. - * @param WP_User &$user WP_User object, passed by reference. + * @param stdClass &$user User object, passed by reference. */ do_action_ref_array( 'user_profile_update_errors', array( &$errors, $update, &$user ) ); diff --git a/wp/wp-admin/includes/widgets.php b/wp/wp-admin/includes/widgets.php index 746a8927..fe2a957f 100644 --- a/wp/wp-admin/includes/widgets.php +++ b/wp/wp-admin/includes/widgets.php @@ -254,7 +254,7 @@ function wp_widget_control( $sidebar_args ) {
    - 'widget-' . esc_attr( $id_format ) . '-savewidget' ) ); ?> + 'widget-' . esc_attr( $id_format ) . '-savewidget' ) ); ?>

    @@ -278,4 +278,4 @@ function wp_widget_control( $sidebar_args ) { */ function wp_widgets_access_body_class($classes) { return "$classes widgets_access "; -} \ No newline at end of file +} diff --git a/wp/wp-admin/index.php b/wp/wp-admin/index.php index 86bed0ad..d2d7ec88 100644 --- a/wp/wp-admin/index.php +++ b/wp/wp-admin/index.php @@ -33,7 +33,6 @@ $parent_file = 'index.php'; $help = '

    ' . __( 'Welcome to your WordPress Dashboard! This is the screen you will see when you log in to your site, and gives you access to all the site management features of WordPress. You can get help for any screen by clicking the Help tab above the screen title.' ) . '

    '; -// Not using chaining here, so as to be parseable by PHP4. $screen = get_current_screen(); $screen->add_help_tab( array( @@ -95,8 +94,8 @@ unset( $help ); $screen->set_help_sidebar( '

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

    ' . - '

    ' . __( 'Documentation on Dashboard' ) . '

    ' . - '

    ' . __( 'Support Forums' ) . '

    ' + '

    ' . __( 'Documentation on Dashboard' ) . '

    ' . + '

    ' . __( 'Support Forums' ) . '

    ' ); include( ABSPATH . 'wp-admin/admin-header.php' ); diff --git a/wp/wp-admin/install.php b/wp/wp-admin/install.php index 24039820..ed9d06d1 100644 --- a/wp/wp-admin/install.php +++ b/wp/wp-admin/install.php @@ -141,7 +141,7 @@ function display_setup_form( $error = null ) {
    - @@ -232,12 +232,16 @@ $mysql_version = $wpdb->db_version(); $php_compat = version_compare( $php_version, $required_php_version, '>=' ); $mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' ); -if ( !$mysql_compat && !$php_compat ) +if ( !$mysql_compat && !$php_compat ) { + /* translators: 1: WordPress version number, 2: Minimum required PHP version number, 3: Minimum required MySQL version number, 4: Current PHP version number, 5: Current MySQL version number */ $compat = sprintf( __( 'You cannot install because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.' ), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version ); -elseif ( !$php_compat ) +} elseif ( !$php_compat ) { + /* translators: 1: WordPress version number, 2: Minimum required PHP version number, 3: Current PHP version number */ $compat = sprintf( __( 'You cannot install because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.' ), $wp_version, $required_php_version, $php_version ); -elseif ( !$mysql_compat ) +} elseif ( !$mysql_compat ) { + /* translators: 1: WordPress version number, 2: Minimum required MySQL version number, 3: Current MySQL version number */ $compat = sprintf( __( 'You cannot install because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.' ), $wp_version, $required_mysql_version, $mysql_version ); +} if ( !$mysql_compat || !$php_compat ) { display_header(); @@ -330,7 +334,6 @@ switch($step) { $scripts_to_print[] = 'user-profile'; - display_header(); // Fill in the data we gathered $weblog_title = isset( $_POST['weblog_title'] ) ? trim( wp_unslash( $_POST['weblog_title'] ) ) : ''; $user_name = isset($_POST['user_name']) ? trim( wp_unslash( $_POST['user_name'] ) ) : ''; @@ -343,21 +346,26 @@ switch($step) { $error = false; if ( empty( $user_name ) ) { // TODO: poka-yoke + display_header(); display_setup_form( __( 'Please provide a valid username.' ) ); $error = true; } elseif ( $user_name != sanitize_user( $user_name, true ) ) { + display_header(); display_setup_form( __( 'The username you provided has invalid characters.' ) ); $error = true; } elseif ( $admin_password != $admin_password_check ) { // TODO: poka-yoke + display_header(); display_setup_form( __( 'Your passwords do not match. Please try again.' ) ); $error = true; } elseif ( empty( $admin_email ) ) { // TODO: poka-yoke + display_header(); display_setup_form( __( 'You must provide an email address.' ) ); $error = true; } elseif ( ! is_email( $admin_email ) ) { // TODO: poka-yoke + display_header(); display_setup_form( __( 'Sorry, that isn’t a valid email address. Email addresses look like username@example.com.' ) ); $error = true; } @@ -365,6 +373,16 @@ switch($step) { if ( $error === false ) { $wpdb->show_errors(); $result = wp_install( $weblog_title, $user_name, $admin_email, $public, '', wp_slash( $admin_password ), $loaded_language ); + + // Log the user in and send them to wp-admin: + if ( ! headers_sent() ) { + wp_set_auth_cookie( $result['user_id'], true, is_ssl() ); + wp_redirect( admin_url() ); + exit; + } + + // If headers have already been sent, fall back to a "Success!" message: + display_header(); ?>

    diff --git a/wp/wp-admin/js/bookmarklet.min.js b/wp/wp-admin/js/bookmarklet.min.js index 089a8495..15318069 100644 --- a/wp/wp-admin/js/bookmarklet.min.js +++ b/wp/wp-admin/js/bookmarklet.min.js @@ -1 +1 @@ -(function(a,b,c,d){function e(a,c){if("undefined"!=typeof c){var d=b.createElement("input");d.name=a,d.value=c,d.type="hidden",p.appendChild(d)}}var f,g,h,i,j,k,l,m,n,o=a.encodeURIComponent,p=b.createElement("form"),q=b.getElementsByTagName("head")[0],r="_press_this_app",s=!0;if(d){if(!c.match(/^https?:/))return void(top.location.href=d);if(d+="&u="+o(c),c.match(/^https:/)&&d.match(/^http:/)&&(s=!1),a.getSelection?h=a.getSelection()+"":b.getSelection?h=b.getSelection()+"":b.selection&&(h=b.selection.createRange().text||""),d+="&buster="+(new Date).getTime(),s||(b.title&&(d+="&t="+o(b.title.substr(0,256))),h&&(d+="&s="+o(h.substr(0,512)))),f=a.outerWidth||b.documentElement.clientWidth||600,g=a.outerHeight||b.documentElement.clientHeight||700,f=800>f||f>5e3?600:.7*f,g=800>g||g>3e3?700:.9*g,!s)return void a.open(d,r,"location,resizable,scrollbars,width="+f+",height="+g);i=q.getElementsByTagName("meta")||[];for(var t=0;t200);t++){var u=i[t],v=u.getAttribute("name"),w=u.getAttribute("property"),x=u.getAttribute("content");x&&(v?e("_meta["+v+"]",x):w&&e("_meta["+w+"]",x))}j=q.getElementsByTagName("link")||[];for(var y=0;y=50);y++){var z=j[y],A=z.getAttribute("rel");"canonical"!==A&&"icon"!==A&&"shortlink"!==A||e("_links["+A+"]",z.getAttribute("href"))}b.body.getElementsByClassName&&(k=b.body.getElementsByClassName("hfeed")[0]),k=b.getElementById("content")||k||b.body,l=k.getElementsByTagName("img")||[];for(var B=0;B=100);B++)n=l[B],n.src.indexOf("avatar")>-1||n.className.indexOf("avatar")>-1||n.width&&n.width<256||n.height&&n.height<128||e("_images[]",n.src);m=b.body.getElementsByTagName("iframe")||[];for(var C=0;C=50);C++)e("_embeds[]",m[C].src);b.title&&e("t",b.title),h&&e("s",h),p.setAttribute("method","POST"),p.setAttribute("action",d),p.setAttribute("target",r),p.setAttribute("style","display: none;"),a.open("about:blank",r,"location,resizable,scrollbars,width="+f+",height="+g),b.body.appendChild(p),p.submit()}})(window,document,top.location.href,window.pt_url); \ No newline at end of file +(function(a,b,c,d){function e(a,c){if("undefined"!=typeof c){var d=b.createElement("input");d.name=a,d.value=c,d.type="hidden",p.appendChild(d)}}var f,g,h,i,j,k,l,m,n,o=a.encodeURIComponent,p=b.createElement("form"),q=b.getElementsByTagName("head")[0],r="_press_this_app",s=!0;if(d){if(!c.match(/^https?:/))return void(top.location.href=d);if(d+="&u="+o(c),c.match(/^https:/)&&d.match(/^http:/)&&(s=!1),a.getSelection?h=a.getSelection()+"":b.getSelection?h=b.getSelection()+"":b.selection&&(h=b.selection.createRange().text||""),d+="&buster="+(new Date).getTime(),s||(b.title&&(d+="&t="+o(b.title.substr(0,256))),h&&(d+="&s="+o(h.substr(0,512)))),f=a.outerWidth||b.documentElement.clientWidth||600,g=a.outerHeight||b.documentElement.clientHeight||700,f=f<800||f>5e3?600:.7*f,g=g<800||g>3e3?700:.9*g,!s)return void a.open(d,r,"location,resizable,scrollbars,width="+f+",height="+g);i=q.getElementsByTagName("meta")||[];for(var t=0;t200);t++){var u=i[t],v=u.getAttribute("name"),w=u.getAttribute("property"),x=u.getAttribute("content");x&&(v?e("_meta["+v+"]",x):w&&e("_meta["+w+"]",x))}j=q.getElementsByTagName("link")||[];for(var y=0;y=50);y++){var z=j[y],A=z.getAttribute("rel");"canonical"!==A&&"icon"!==A&&"shortlink"!==A||e("_links["+A+"]",z.getAttribute("href"))}b.body.getElementsByClassName&&(k=b.body.getElementsByClassName("hfeed")[0]),k=b.getElementById("content")||k||b.body,l=k.getElementsByTagName("img")||[];for(var B=0;B=100);B++)n=l[B],n.src.indexOf("avatar")>-1||n.className.indexOf("avatar")>-1||n.width&&n.width<256||n.height&&n.height<128||e("_images[]",n.src);m=b.body.getElementsByTagName("iframe")||[];for(var C=0;C=50);C++)e("_embeds[]",m[C].src);b.title&&e("t",b.title),h&&e("s",h),p.setAttribute("method","POST"),p.setAttribute("action",d),p.setAttribute("target",r),p.setAttribute("style","display: none;"),a.open("about:blank",r,"location,resizable,scrollbars,width="+f+",height="+g),b.body.appendChild(p),p.submit()}})(window,document,top.location.href,window.pt_url); \ No newline at end of file diff --git a/wp/wp-admin/js/color-picker.js b/wp/wp-admin/js/color-picker.js index 96f55dae..807ff2a1 100644 --- a/wp/wp-admin/js/color-picker.js +++ b/wp/wp-admin/js/color-picker.js @@ -17,7 +17,33 @@ hide: true, palettes: true, width: 255, - mode: 'hsv' + mode: 'hsv', + type: 'full', + slider: 'horizontal' + }, + _createHueOnly: function() { + var self = this, + el = self.element, + color; + + // hide input + el.hide(); + // max saturated color for hue to be obvious + color = 'hsl(' + el.val() + ', 100, 50)'; + + el.iris( { + mode: 'hsl', + type: 'hue', + hide: false, + color: color, + change: function( event, ui ) { + if ( $.isFunction( self.options.change ) ) { + self.options.change.call( this, event, ui ); + } + }, + width: self.options.width, + slider: self.options.slider + } ); }, _create: function() { // bail early for unsupported Iris. @@ -30,6 +56,11 @@ $.extend( self.options, el.data() ); + // hue-only gets created differently + if ( self.options.type === 'hue' ) { + return self._createHueOnly(); + } + // keep close bound so it can be attached to a body listener self.close = $.proxy( self.close, self ); @@ -141,7 +172,6 @@ if ( newColor === undef ) { return this.element.iris( 'option', 'color' ); } - this.element.iris( 'option', 'color', newColor ); }, //$("#input").wpColorPicker('defaultColor') returns the current default color diff --git a/wp/wp-admin/js/color-picker.min.js b/wp/wp-admin/js/color-picker.min.js index 7c6e1d1c..7b6591de 100644 --- a/wp/wp-admin/js/color-picker.min.js +++ b/wp/wp-admin/js/color-picker.min.js @@ -1 +1 @@ -!function(a,b){var c,d='',e='
    ',f='
    ',g='';c={options:{defaultColor:!1,change:!1,clear:!1,hide:!0,palettes:!0,width:255,mode:"hsv"},_create:function(){if(a.support.iris){var b=this,c=b.element;a.extend(b.options,c.data()),b.close=a.proxy(b.close,b),b.initialValue=c.val(),c.addClass("wp-color-picker").hide().wrap(f),b.wrap=c.parent(),b.toggler=a(d).insertBefore(c).css({backgroundColor:b.initialValue}).attr("title",wpColorPickerL10n.pick).attr("data-current",wpColorPickerL10n.current),b.pickerContainer=a(e).insertAfter(c),b.button=a(g),b.options.defaultColor?b.button.addClass("wp-picker-default").val(wpColorPickerL10n.defaultString):b.button.addClass("wp-picker-clear").val(wpColorPickerL10n.clear),c.wrap('').after(b.button),c.iris({target:b.pickerContainer,hide:b.options.hide,width:b.options.width,mode:b.options.mode,palettes:b.options.palettes,change:function(c,d){b.toggler.css({backgroundColor:d.color.toString()}),a.isFunction(b.options.change)&&b.options.change.call(this,c,d)}}),c.val(b.initialValue),b._addListeners(),b.options.hide||b.toggler.click()}},_addListeners:function(){var b=this;b.wrap.on("click.wpcolorpicker",function(a){a.stopPropagation()}),b.toggler.click(function(){b.toggler.hasClass("wp-picker-open")?b.close():b.open()}),b.element.change(function(c){var d=a(this),e=d.val();""!==e&&"#"!==e||(b.toggler.css("backgroundColor",""),a.isFunction(b.options.clear)&&b.options.clear.call(this,c))}),b.toggler.on("keyup",function(a){13!==a.keyCode&&32!==a.keyCode||(a.preventDefault(),b.toggler.trigger("click").next().focus())}),b.button.click(function(c){var d=a(this);d.hasClass("wp-picker-clear")?(b.element.val(""),b.toggler.css("backgroundColor",""),a.isFunction(b.options.clear)&&b.options.clear.call(this,c)):d.hasClass("wp-picker-default")&&b.element.val(b.options.defaultColor).change()})},open:function(){this.element.show().iris("toggle").focus(),this.button.removeClass("hidden"),this.wrap.addClass("wp-picker-active"),this.toggler.addClass("wp-picker-open"),a("body").trigger("click.wpcolorpicker").on("click.wpcolorpicker",this.close)},close:function(){this.element.hide().iris("toggle"),this.button.addClass("hidden"),this.wrap.removeClass("wp-picker-active"),this.toggler.removeClass("wp-picker-open"),a("body").off("click.wpcolorpicker",this.close)},color:function(a){return a===b?this.element.iris("option","color"):void this.element.iris("option","color",a)},defaultColor:function(a){return a===b?this.options.defaultColor:void(this.options.defaultColor=a)}},a.widget("wp.wpColorPicker",c)}(jQuery); \ No newline at end of file +!function(a,b){var c,d='',e='
    ',f='
    ',g='';c={options:{defaultColor:!1,change:!1,clear:!1,hide:!0,palettes:!0,width:255,mode:"hsv",type:"full",slider:"horizontal"},_createHueOnly:function(){var b,c=this,d=c.element;d.hide(),b="hsl("+d.val()+", 100, 50)",d.iris({mode:"hsl",type:"hue",hide:!1,color:b,change:function(b,d){a.isFunction(c.options.change)&&c.options.change.call(this,b,d)},width:c.options.width,slider:c.options.slider})},_create:function(){if(a.support.iris){var b=this,c=b.element;if(a.extend(b.options,c.data()),"hue"===b.options.type)return b._createHueOnly();b.close=a.proxy(b.close,b),b.initialValue=c.val(),c.addClass("wp-color-picker").hide().wrap(f),b.wrap=c.parent(),b.toggler=a(d).insertBefore(c).css({backgroundColor:b.initialValue}).attr("title",wpColorPickerL10n.pick).attr("data-current",wpColorPickerL10n.current),b.pickerContainer=a(e).insertAfter(c),b.button=a(g),b.options.defaultColor?b.button.addClass("wp-picker-default").val(wpColorPickerL10n.defaultString):b.button.addClass("wp-picker-clear").val(wpColorPickerL10n.clear),c.wrap('').after(b.button),c.iris({target:b.pickerContainer,hide:b.options.hide,width:b.options.width,mode:b.options.mode,palettes:b.options.palettes,change:function(c,d){b.toggler.css({backgroundColor:d.color.toString()}),a.isFunction(b.options.change)&&b.options.change.call(this,c,d)}}),c.val(b.initialValue),b._addListeners(),b.options.hide||b.toggler.click()}},_addListeners:function(){var b=this;b.wrap.on("click.wpcolorpicker",function(a){a.stopPropagation()}),b.toggler.click(function(){b.toggler.hasClass("wp-picker-open")?b.close():b.open()}),b.element.change(function(c){var d=a(this),e=d.val();""!==e&&"#"!==e||(b.toggler.css("backgroundColor",""),a.isFunction(b.options.clear)&&b.options.clear.call(this,c))}),b.toggler.on("keyup",function(a){13!==a.keyCode&&32!==a.keyCode||(a.preventDefault(),b.toggler.trigger("click").next().focus())}),b.button.click(function(c){var d=a(this);d.hasClass("wp-picker-clear")?(b.element.val(""),b.toggler.css("backgroundColor",""),a.isFunction(b.options.clear)&&b.options.clear.call(this,c)):d.hasClass("wp-picker-default")&&b.element.val(b.options.defaultColor).change()})},open:function(){this.element.show().iris("toggle").focus(),this.button.removeClass("hidden"),this.wrap.addClass("wp-picker-active"),this.toggler.addClass("wp-picker-open"),a("body").trigger("click.wpcolorpicker").on("click.wpcolorpicker",this.close)},close:function(){this.element.hide().iris("toggle"),this.button.addClass("hidden"),this.wrap.removeClass("wp-picker-active"),this.toggler.removeClass("wp-picker-open"),a("body").off("click.wpcolorpicker",this.close)},color:function(a){return a===b?this.element.iris("option","color"):void this.element.iris("option","color",a)},defaultColor:function(a){return a===b?this.options.defaultColor:void(this.options.defaultColor=a)}},a.widget("wp.wpColorPicker",c)}(jQuery); \ No newline at end of file diff --git a/wp/wp-admin/js/common.js b/wp/wp-admin/js/common.js index 200d3e47..867f1119 100644 --- a/wp/wp-admin/js/common.js +++ b/wp/wp-admin/js/common.js @@ -196,13 +196,15 @@ $document.ready( function() { pinnedMenuTop = false, pinnedMenuBottom = false, menuTop = 0, + menuState, menuIsPinned = false, height = { window: $window.height(), wpwrap: $wpwrap.height(), adminbar: $adminbar.height(), menu: $adminMenuWrap.height() - }; + }, + $headerEnd = $( '.wp-header-end' ); // when the menu is folded, make the fly-out submenu header clickable @@ -210,59 +212,43 @@ $document.ready( function() { $(e.target).parent().siblings('a').get(0).click(); }); - $('#collapse-menu').on('click.collapse-menu', function() { - var respWidth, state; + $( '#collapse-button' ).on( 'click.collapse-menu', function() { + var viewportWidth = getViewportWidth() || 961; // reset any compensation for submenus near the bottom of the screen $('#adminmenu div.wp-submenu').css('margin-top', ''); - if ( window.innerWidth ) { - // window.innerWidth is affected by zooming on phones - respWidth = Math.max( window.innerWidth, document.documentElement.clientWidth ); - } else { - // IE < 9 doesn't support @media CSS rules - respWidth = 961; - } - - if ( respWidth && respWidth < 960 ) { + if ( viewportWidth < 960 ) { if ( $body.hasClass('auto-fold') ) { $body.removeClass('auto-fold').removeClass('folded'); setUserSetting('unfold', 1); setUserSetting('mfold', 'o'); - state = 'open'; + menuState = 'open'; } else { $body.addClass('auto-fold'); setUserSetting('unfold', 0); - state = 'folded'; + menuState = 'folded'; } } else { if ( $body.hasClass('folded') ) { $body.removeClass('folded'); setUserSetting('mfold', 'o'); - state = 'open'; + menuState = 'open'; } else { $body.addClass('folded'); setUserSetting('mfold', 'f'); - state = 'folded'; + menuState = 'folded'; } } - currentMenuItemHasPopup(); - $document.trigger( 'wp-collapse-menu', { state: state } ); + $document.trigger( 'wp-collapse-menu', { state: menuState } ); }); // Handle the `aria-haspopup` attribute on the current menu item when it has a sub-menu. function currentMenuItemHasPopup() { - var respWidth, - $current = $( 'a.wp-has-current-submenu' ); + var $current = $( 'a.wp-has-current-submenu' ); - if ( window.innerWidth ) { - respWidth = Math.max( window.innerWidth, document.documentElement.clientWidth ); - } else { - respWidth = 961; - } - - if ( $body.hasClass( 'folded' ) || ( $body.hasClass( 'auto-fold' ) && respWidth && respWidth <= 960 && respWidth > 782 ) ) { + if ( 'folded' === menuState ) { // When folded or auto-folded and not responsive view, the current menu item does have a fly-out sub-menu. $current.attr( 'aria-haspopup', 'true' ); } else { @@ -271,7 +257,7 @@ $document.ready( function() { } } - $document.on( 'wp-window-resized wp-responsive-activate wp-responsive-deactivate', currentMenuItemHasPopup ); + $document.on( 'wp-menu-state-set wp-collapse-menu wp-responsive-activate wp-responsive-deactivate', currentMenuItemHasPopup ); /** * Ensure an admin submenu is within the visual viewport. @@ -396,8 +382,13 @@ $document.ready( function() { /* * The `.below-h2` class is here just for backward compatibility with plugins * that are (incorrectly) using it. Do not use. Use `.inline` instead. See #34570. + * If '.wp-header-end' is found, append the notices after it otherwise + * after the first h1 or h2 heading found within the main content. */ - $( 'div.updated, div.error, div.notice' ).not( '.inline, .below-h2' ).insertAfter( $( '.wrap h1, .wrap h2' ).first() ); + if ( ! $headerEnd.length ) { + $headerEnd = $( '.wrap h1, .wrap h2' ).first(); + } + $( 'div.updated, div.error, div.notice' ).not( '.inline, .below-h2' ).insertAfter( $headerEnd ); // Make notices dismissible function makeNoticesDismissible() { @@ -426,10 +417,11 @@ $document.ready( function() { // Init screen meta screenMeta.init(); - // check all checkboxes - $('tbody').children().children('.check-column').find(':checkbox').click( function(e) { - if ( 'undefined' == e.shiftKey ) { return true; } - if ( e.shiftKey ) { + // This event needs to be delegated. Ticket #37973. + $body.on( 'click', 'tbody .check-column :checkbox', function( event ) { + // Shift click to select a range of checkboxes. + if ( 'undefined' == event.shiftKey ) { return true; } + if ( event.shiftKey ) { if ( !lastClicked ) { return true; } checks = $( lastClicked ).closest( 'form' ).find( ':checkbox' ).filter( ':visible:enabled' ); first = checks.index( lastClicked ); @@ -447,7 +439,7 @@ $document.ready( function() { } lastClicked = this; - // toggle "check all" checkboxes + // Toggle the "Select all" checkboxes depending if the other ones are all checked or not. var unchecked = $(this).closest('tbody').find(':checkbox').filter(':visible:enabled').not(':checked'); $(this).closest('table').children('thead, tfoot').find(':checkbox').prop('checked', function() { return ( 0 === unchecked.length ); @@ -456,7 +448,8 @@ $document.ready( function() { return true; }); - $('thead, tfoot').find('.check-column :checkbox').on( 'click.wp-toggle-checkboxes', function( event ) { + // This event needs to be delegated. Ticket #37973. + $body.on( 'click.wp-toggle-checkboxes', 'thead .check-column :checkbox, tfoot .check-column :checkbox', function( event ) { var $this = $(this), $table = $this.closest( 'table' ), controlChecked = $this.prop('checked'), @@ -828,17 +821,14 @@ $document.ready( function() { }, trigger: function() { - var width; + var viewportWidth = getViewportWidth(); - if ( window.innerWidth ) { - // window.innerWidth is affected by zooming on phones - width = Math.max( window.innerWidth, document.documentElement.clientWidth ); - } else { - // Exclude IE < 9, it doesn't support @media CSS rules + // Exclude IE < 9, it doesn't support @media CSS rules. + if ( ! viewportWidth ) { return; } - if ( width <= 782 ) { + if ( viewportWidth <= 782 ) { if ( ! wpResponsiveActive ) { $document.trigger( 'wp-responsive-activate' ); wpResponsiveActive = true; @@ -850,7 +840,7 @@ $document.ready( function() { } } - if ( width <= 480 ) { + if ( viewportWidth <= 480 ) { this.enableOverlay(); } else { this.disableOverlay(); @@ -904,8 +894,82 @@ $document.ready( function() { aria_button_if_js(); }); + /** + * @summary Get the viewport width. + * + * @since 4.7.0 + * + * @returns {number|boolean} The current viewport width or false if the + * browser doesn't support innerWidth (IE < 9). + */ + function getViewportWidth() { + var viewportWidth = false; + + if ( window.innerWidth ) { + // On phones, window.innerWidth is affected by zooming. + viewportWidth = Math.max( window.innerWidth, document.documentElement.clientWidth ); + } + + return viewportWidth; + } + + /** + * @summary Set the admin menu collapsed/expanded state. + * + * Sets the global variable `menuState` and triggers a custom event passing + * the current menu state. + * + * @since 4.7.0 + * + * @returns {void} + */ + function setMenuState() { + var viewportWidth = getViewportWidth() || 961; + + if ( viewportWidth <= 782 ) { + menuState = 'responsive'; + } else if ( $body.hasClass( 'folded' ) || ( $body.hasClass( 'auto-fold' ) && viewportWidth <= 960 && viewportWidth > 782 ) ) { + menuState = 'folded'; + } else { + menuState = 'open'; + } + + $document.trigger( 'wp-menu-state-set', { state: menuState } ); + } + + // Set the menu state when the window gets resized. + $document.on( 'wp-window-resized.set-menu-state', setMenuState ); + + /** + * @summary Set ARIA attributes on the collapse/expand menu button. + * + * When the admin menu is open or folded, updates the `aria-expanded` and + * `aria-label` attributes of the button to give feedback to assistive + * technologies. In the responsive view, the button is always hidden. + * + * @since 4.7.0 + * + * @returns {void} + */ + $document.on( 'wp-menu-state-set wp-collapse-menu', function( event, eventData ) { + var $collapseButton = $( '#collapse-button' ), + ariaExpanded = 'true', + ariaLabelText = commonL10n.collapseMenu; + + if ( 'folded' === eventData.state ) { + ariaExpanded = 'false'; + ariaLabelText = commonL10n.expandMenu; + } + + $collapseButton.attr({ + 'aria-expanded': ariaExpanded, + 'aria-label': ariaLabelText + }); + }); + window.wpResponsive.init(); setPinMenu(); + setMenuState(); currentMenuItemHasPopup(); makeNoticesDismissible(); aria_button_if_js(); diff --git a/wp/wp-admin/js/common.min.js b/wp/wp-admin/js/common.min.js index c2070ae4..1ff9e6f1 100644 --- a/wp/wp-admin/js/common.min.js +++ b/wp/wp-admin/js/common.min.js @@ -1 +1 @@ -var showNotice,adminMenu,columns,validateForm,screenMeta;!function(a,b,c){var d=a(document),e=a(b),f=a(document.body);adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}},columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var c=a(this),d=c.val();c.prop("checked")?b.checked(d):b.unchecked(d),columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).removeClass("hidden"),this.colSpanChange(1)},unchecked:function(b){a(".column-"+b).addClass("hidden"),this.colSpanChange(-1)},hidden:function(){return a(".manage-column[id]").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var a=this.id;return a.substring(a,a.length-5)}).get().join(",")}},colSpanChange:function(b){var c,d=a("table").find(".colspanchange");d.length&&(c=parseInt(d.attr("colspan"),10)+b,d.attr("colspan",c.toString()))}},d.ready(function(){columns.init()}),validateForm=function(b){return!a(b).find(".form-required").filter(function(){return""===a("input:visible",this).val()}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).length},showNotice={warn:function(){var a=commonL10n.warnDelete||"";return!!confirm(a)},note:function(a){alert(a)}},screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta"),this.toggles=a("#screen-meta-links").find(".show-settings"),this.page=a("#wpcontent"),this.toggles.click(this.toggleEvent)},toggleEvent:function(){var b=a("#"+a(this).attr("aria-controls"));b.length&&(b.is(":visible")?screenMeta.close(b,a(this)):screenMeta.open(b,a(this)))},open:function(b,c){a("#screen-meta-links").find(".screen-meta-toggle").not(c.parent()).css("visibility","hidden"),b.parent().show(),b.slideDown("fast",function(){b.focus(),c.addClass("screen-meta-active").attr("aria-expanded",!0)}),d.trigger("screen:options:open")},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active").attr("aria-expanded",!1),a(".screen-meta-toggle").css("visibility",""),b.parent().hide()}),d.trigger("screen:options:close")}},a(".contextual-help-tabs").delegate("a","click",function(b){var c,d=a(this);return b.preventDefault(),!d.is(".active a")&&(a(".contextual-help-tabs .active").removeClass("active"),d.parent("li").addClass("active"),c=a(d.attr("href")),a(".help-tab-content").not(c).removeClass("active").hide(),void c.addClass("active").show())}),d.ready(function(){function c(){var c,d=a("a.wp-has-current-submenu");c=b.innerWidth?Math.max(b.innerWidth,document.documentElement.clientWidth):961,f.hasClass("folded")||f.hasClass("auto-fold")&&c&&c<=960&&c>782?d.attr("aria-haspopup","true"):d.attr("aria-haspopup","false")}function g(a){var b,c,d,f,g,h,i,j=a.find(".wp-submenu");g=a.offset().top,h=e.scrollTop(),i=g-h-30,b=g+j.height()+1,c=C.height(),d=60+b-c,f=e.height()+h-50,fi&&(d=i),d>1?j.css("margin-top","-"+d+"px"):j.css("margin-top","")}function h(){a(".notice.is-dismissible").each(function(){var b=a(this),c=a(''),d=commonL10n.dismiss||"";c.find(".screen-reader-text").text(d),c.on("click.wp-dismiss-notice",function(a){a.preventDefault(),b.fadeTo(100,0,function(){b.slideUp(100,function(){b.remove()})})}),b.append(c)})}function i(a){var b=e.scrollTop(),c=!a||"scroll"!==a.type;if(!(y||A||D.data("wp-responsive"))){if(P.menu+P.adminbarP.wpwrap)return void k();if(O=!0,P.menu+P.adminbar>P.window){if(b<0)return void(L||(L=!0,M=!1,B.css({position:"fixed",top:"",bottom:""})));if(b+P.window>d.height()-1)return void(M||(M=!0,L=!1,B.css({position:"fixed",top:"",bottom:0})));b>K?L?(L=!1,N=B.offset().top-P.adminbar-(b-K),N+P.menu+P.adminbarb+P.window&&(N=b),B.css({position:"absolute",top:N,bottom:""})):!L&&B.offset().top>=b+P.adminbar&&(L=!0,B.css({position:"fixed",top:"",bottom:""})):c&&(L=M=!1,N=b+P.window-P.menu-P.adminbar-1,N>0?B.css({position:"absolute",top:N,bottom:""}):k())}K=b}}function j(){P={window:e.height(),wpwrap:C.height(),adminbar:J.height(),menu:B.height()}}function k(){!y&&O&&(L=M=O=!1,B.css({position:"",top:"",bottom:""}))}function l(){j(),D.data("wp-responsive")?(f.removeClass("sticky-menu"),k()):P.menu+P.adminbar>P.window?(i(),f.removeClass("sticky-menu")):(f.addClass("sticky-menu"),k())}function m(){a(".aria-button-if-js").attr("role","button")}var n,o,p,q,r,s,t,u,v=!1,w=a("input.current-page"),x=w.val(),y=/iPhone|iPad|iPod/.test(navigator.userAgent),z=navigator.userAgent.indexOf("Android")!==-1,A=a(document.documentElement).hasClass("ie8"),B=a("#adminmenuwrap"),C=a("#wpwrap"),D=a("#adminmenu"),E=a("#wp-responsive-overlay"),F=a("#wp-toolbar"),G=F.find('a[aria-haspopup="true"]'),H=a(".meta-box-sortables"),I=!1,J=a("#wpadminbar"),K=0,L=!1,M=!1,N=0,O=!1,P={window:e.height(),wpwrap:C.height(),adminbar:J.height(),menu:B.height()};D.on("click.wp-submenu-head",".wp-submenu-head",function(b){a(b.target).parent().siblings("a").get(0).click()}),a("#collapse-menu").on("click.collapse-menu",function(){var e,g;a("#adminmenu div.wp-submenu").css("margin-top",""),e=b.innerWidth?Math.max(b.innerWidth,document.documentElement.clientWidth):961,e&&e<960?f.hasClass("auto-fold")?(f.removeClass("auto-fold").removeClass("folded"),setUserSetting("unfold",1),setUserSetting("mfold","o"),g="open"):(f.addClass("auto-fold"),setUserSetting("unfold",0),g="folded"):f.hasClass("folded")?(f.removeClass("folded"),setUserSetting("mfold","o"),g="open"):(f.addClass("folded"),setUserSetting("mfold","f"),g="folded"),c(),d.trigger("wp-collapse-menu",{state:g})}),d.on("wp-window-resized wp-responsive-activate wp-responsive-deactivate",c),("ontouchstart"in b||/IEMobile\/[1-9]/.test(navigator.userAgent))&&(s=y?"touchstart":"click",f.on(s+".wp-mobile-hover",function(b){D.data("wp-responsive")||a(b.target).closest("#adminmenu").length||D.find("li.opensub").removeClass("opensub")}),D.find("a.wp-has-submenu").on(s+".wp-mobile-hover",function(b){var c=a(this).parent();D.data("wp-responsive")||c.hasClass("opensub")||c.hasClass("wp-menu-open")&&!(c.width()<40)||(b.preventDefault(),g(c),D.find("li.opensub").removeClass("opensub"),c.addClass("opensub"))})),y||z||(D.find("li.wp-has-submenu").hoverIntent({over:function(){var b=a(this),c=b.find(".wp-submenu"),d=parseInt(c.css("top"),10);isNaN(d)||d>-5||D.data("wp-responsive")||(g(b),D.find("li.opensub").removeClass("opensub"),b.addClass("opensub"))},out:function(){D.data("wp-responsive")||a(this).removeClass("opensub").find(".wp-submenu").css("margin-top","")},timeout:200,sensitivity:7,interval:90}),D.on("focus.adminmenu",".wp-submenu a",function(b){D.data("wp-responsive")||a(b.target).closest("li.menu-top").addClass("opensub")}).on("blur.adminmenu",".wp-submenu a",function(b){D.data("wp-responsive")||a(b.target).closest("li.menu-top").removeClass("opensub")}).find("li.wp-has-submenu.wp-not-current-submenu").on("focusin.adminmenu",function(){g(a(this))})),a("div.updated, div.error, div.notice").not(".inline, .below-h2").insertAfter(a(".wrap h1, .wrap h2").first()),d.on("wp-updates-notice-added wp-plugin-install-error wp-plugin-update-error wp-plugin-delete-error wp-theme-install-error wp-theme-delete-error",h),screenMeta.init(),a("tbody").children().children(".check-column").find(":checkbox").click(function(b){if("undefined"==b.shiftKey)return!0;if(b.shiftKey){if(!v)return!0;n=a(v).closest("form").find(":checkbox").filter(":visible:enabled"),o=n.index(v),p=n.index(this),q=a(this).prop("checked"),0o?n.slice(o,p):n.slice(p,o),r.prop("checked",function(){return!!a(this).closest("tr").is(":visible")&&q}))}v=this;var c=a(this).closest("tbody").find(":checkbox").filter(":visible:enabled").not(":checked");return a(this).closest("table").children("thead, tfoot").find(":checkbox").prop("checked",function(){return 0===c.length}),!0}),a("thead, tfoot").find(".check-column :checkbox").on("click.wp-toggle-checkboxes",function(b){var c=a(this),d=c.closest("table"),e=c.prop("checked"),f=b.shiftKey||c.data("wp-toggle");d.children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return!a(this).is(":hidden,:disabled")&&(f?!a(this).prop("checked"):!!e)}),d.children("thead, tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return!f&&!!e})}),a("#wpbody-content").on({focusin:function(){clearTimeout(t),u=a(this).find(".row-actions"),a(".row-actions").not(this).removeClass("visible"),u.addClass("visible")},focusout:function(){t=setTimeout(function(){u.removeClass("visible")},30)}},".has-row-actions"),a("tbody").on("click",".toggle-row",function(){a(this).closest("tr").toggleClass("is-expanded")}),a("#default-password-nag-no").click(function(){return setUserSetting("default_password_nag","hide"),a("div.default-password-nag").hide(),!1}),a("#newcontent").bind("keydown.wpevent_InsertTab",function(b){var c,d,e,f,g,h=b.target;if(27==b.keyCode)return b.preventDefault(),void a(h).data("tab-out",!0);if(!(9!=b.keyCode||b.ctrlKey||b.altKey||b.shiftKey)){if(a(h).data("tab-out"))return void a(h).data("tab-out",!1);c=h.selectionStart,d=h.selectionEnd,e=h.value,document.selection?(h.focus(),g=document.selection.createRange(),g.text="\t"):c>=0&&(f=this.scrollTop,h.value=e.substring(0,c).concat("\t",e.substring(d)),h.selectionStart=h.selectionEnd=c+1,this.scrollTop=f),b.stopPropagation&&b.stopPropagation(),b.preventDefault&&b.preventDefault()}}),w.length&&w.closest("form").submit(function(){a('select[name="action"]').val()==-1&&a('select[name="action2"]').val()==-1&&w.val()==x&&w.val("1")}),a('.search-box input[type="search"], .search-box input[type="submit"]').mousedown(function(){a('select[name^="action"]').val("-1")}),a("#contextual-help-link, #show-settings-link").on("focus.scroll-into-view",function(a){a.target.scrollIntoView&&a.target.scrollIntoView(!1)}),function(){function b(){c.prop("disabled",""===d.map(function(){return a(this).val()}).get().join(""))}var c,d,e=a("form.wp-upload-form");e.length&&(c=e.find('input[type="submit"]'),d=e.find('input[type="file"]'),b(),d.on("change",b))}(),y||(e.on("scroll.pin-menu",i),d.on("tinymce-editor-init.pin-menu",function(a,b){b.on("wp-autoresize",j)})),b.wpResponsive={init:function(){var c=this;d.on("wp-responsive-activate.wp-responsive",function(){c.activate()}).on("wp-responsive-deactivate.wp-responsive",function(){c.deactivate()}),a("#wp-admin-bar-menu-toggle a").attr("aria-expanded","false"),a("#wp-admin-bar-menu-toggle").on("click.wp-responsive",function(b){b.preventDefault(),J.find(".hover").removeClass("hover"),C.toggleClass("wp-responsive-open"),C.hasClass("wp-responsive-open")?(a(this).find("a").attr("aria-expanded","true"),a("#adminmenu a:first").focus()):a(this).find("a").attr("aria-expanded","false")}),D.on("click.wp-responsive","li.wp-has-submenu > a",function(b){D.data("wp-responsive")&&(a(this).parent("li").toggleClass("selected"),b.preventDefault())}),c.trigger(),d.on("wp-window-resized.wp-responsive",a.proxy(this.trigger,this)),e.on("load.wp-responsive",function(){var a=navigator.userAgent.indexOf("AppleWebKit/")>-1?e.width():b.innerWidth;a<=782&&c.disableSortables()})},activate:function(){l(),f.hasClass("auto-fold")||f.addClass("auto-fold"),D.data("wp-responsive",1),this.disableSortables()},deactivate:function(){l(),D.removeData("wp-responsive"),this.enableSortables()},trigger:function(){var a;b.innerWidth&&(a=Math.max(b.innerWidth,document.documentElement.clientWidth),a<=782?I||(d.trigger("wp-responsive-activate"),I=!0):I&&(d.trigger("wp-responsive-deactivate"),I=!1),a<=480?this.enableOverlay():this.disableOverlay())},enableOverlay:function(){0===E.length&&(E=a('
    ').insertAfter("#wpcontent").hide().on("click.wp-responsive",function(){F.find(".menupop.hover").removeClass("hover"),a(this).hide()})),G.on("click.wp-responsive",function(){E.show()})},disableOverlay:function(){G.off("click.wp-responsive"),E.hide()},disableSortables:function(){if(H.length)try{H.sortable("disable")}catch(a){}},enableSortables:function(){if(H.length)try{H.sortable("enable")}catch(a){}}},a(document).ajaxComplete(function(){m()}),b.wpResponsive.init(),l(),c(),h(),m(),d.on("wp-pin-menu wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu wp-collapse-menu.pin-menu wp-scroll-start.pin-menu",l),a(".wp-initial-focus").focus()}),function(){function a(){d.trigger("wp-window-resized")}function c(){b.clearTimeout(f),f=b.setTimeout(a,200)}var f;e.on("resize.wp-fire-once",c)}(),function(){if("-ms-user-select"in document.documentElement.style&&navigator.userAgent.match(/IEMobile\/10\.0/)){var a=document.createElement("style");a.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")),document.getElementsByTagName("head")[0].appendChild(a)}}()}(jQuery,window); \ No newline at end of file +var showNotice,adminMenu,columns,validateForm,screenMeta;!function(a,b,c){var d=a(document),e=a(b),f=a(document.body);adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}},columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var c=a(this),d=c.val();c.prop("checked")?b.checked(d):b.unchecked(d),columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).removeClass("hidden"),this.colSpanChange(1)},unchecked:function(b){a(".column-"+b).addClass("hidden"),this.colSpanChange(-1)},hidden:function(){return a(".manage-column[id]").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var a=this.id;return a.substring(a,a.length-5)}).get().join(",")}},colSpanChange:function(b){var c,d=a("table").find(".colspanchange");d.length&&(c=parseInt(d.attr("colspan"),10)+b,d.attr("colspan",c.toString()))}},d.ready(function(){columns.init()}),validateForm=function(b){return!a(b).find(".form-required").filter(function(){return""===a("input:visible",this).val()}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).length},showNotice={warn:function(){var a=commonL10n.warnDelete||"";return!!confirm(a)},note:function(a){alert(a)}},screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta"),this.toggles=a("#screen-meta-links").find(".show-settings"),this.page=a("#wpcontent"),this.toggles.click(this.toggleEvent)},toggleEvent:function(){var b=a("#"+a(this).attr("aria-controls"));b.length&&(b.is(":visible")?screenMeta.close(b,a(this)):screenMeta.open(b,a(this)))},open:function(b,c){a("#screen-meta-links").find(".screen-meta-toggle").not(c.parent()).css("visibility","hidden"),b.parent().show(),b.slideDown("fast",function(){b.focus(),c.addClass("screen-meta-active").attr("aria-expanded",!0)}),d.trigger("screen:options:open")},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active").attr("aria-expanded",!1),a(".screen-meta-toggle").css("visibility",""),b.parent().hide()}),d.trigger("screen:options:close")}},a(".contextual-help-tabs").delegate("a","click",function(b){var c,d=a(this);return b.preventDefault(),!d.is(".active a")&&(a(".contextual-help-tabs .active").removeClass("active"),d.parent("li").addClass("active"),c=a(d.attr("href")),a(".help-tab-content").not(c).removeClass("active").hide(),void c.addClass("active").show())}),d.ready(function(){function c(){var b=a("a.wp-has-current-submenu");"folded"===x?b.attr("aria-haspopup","true"):b.attr("aria-haspopup","false")}function g(a){var b,c,d,f,g,h,i,j=a.find(".wp-submenu");g=a.offset().top,h=e.scrollTop(),i=g-h-30,b=g+j.height()+1,c=F.height(),d=60+b-c,f=e.height()+h-50,fi&&(d=i),d>1?j.css("margin-top","-"+d+"px"):j.css("margin-top","")}function h(){a(".notice.is-dismissible").each(function(){var b=a(this),c=a(''),d=commonL10n.dismiss||"";c.find(".screen-reader-text").text(d),c.on("click.wp-dismiss-notice",function(a){a.preventDefault(),b.fadeTo(100,0,function(){b.slideUp(100,function(){b.remove()})})}),b.append(c)})}function i(a){var b=e.scrollTop(),c=!a||"scroll"!==a.type;if(!(B||D||G.data("wp-responsive"))){if(S.menu+S.adminbarS.wpwrap)return void k();if(R=!0,S.menu+S.adminbar>S.window){if(b<0)return void(O||(O=!0,P=!1,E.css({position:"fixed",top:"",bottom:""})));if(b+S.window>d.height()-1)return void(P||(P=!0,O=!1,E.css({position:"fixed",top:"",bottom:0})));b>N?O?(O=!1,Q=E.offset().top-S.adminbar-(b-N),Q+S.menu+S.adminbarb+S.window&&(Q=b),E.css({position:"absolute",top:Q,bottom:""})):!O&&E.offset().top>=b+S.adminbar&&(O=!0,E.css({position:"fixed",top:"",bottom:""})):c&&(O=P=!1,Q=b+S.window-S.menu-S.adminbar-1,Q>0?E.css({position:"absolute",top:Q,bottom:""}):k())}N=b}}function j(){S={window:e.height(),wpwrap:F.height(),adminbar:M.height(),menu:E.height()}}function k(){!B&&R&&(O=P=R=!1,E.css({position:"",top:"",bottom:""}))}function l(){j(),G.data("wp-responsive")?(f.removeClass("sticky-menu"),k()):S.menu+S.adminbar>S.window?(i(),f.removeClass("sticky-menu")):(f.addClass("sticky-menu"),k())}function m(){a(".aria-button-if-js").attr("role","button")}function n(){var a=!1;return b.innerWidth&&(a=Math.max(b.innerWidth,document.documentElement.clientWidth)),a}function o(){var a=n()||961;x=a<=782?"responsive":f.hasClass("folded")||f.hasClass("auto-fold")&&a<=960&&a>782?"folded":"open",d.trigger("wp-menu-state-set",{state:x})}var p,q,r,s,t,u,v,w,x,y=!1,z=a("input.current-page"),A=z.val(),B=/iPhone|iPad|iPod/.test(navigator.userAgent),C=navigator.userAgent.indexOf("Android")!==-1,D=a(document.documentElement).hasClass("ie8"),E=a("#adminmenuwrap"),F=a("#wpwrap"),G=a("#adminmenu"),H=a("#wp-responsive-overlay"),I=a("#wp-toolbar"),J=I.find('a[aria-haspopup="true"]'),K=a(".meta-box-sortables"),L=!1,M=a("#wpadminbar"),N=0,O=!1,P=!1,Q=0,R=!1,S={window:e.height(),wpwrap:F.height(),adminbar:M.height(),menu:E.height()},T=a(".wp-header-end");G.on("click.wp-submenu-head",".wp-submenu-head",function(b){a(b.target).parent().siblings("a").get(0).click()}),a("#collapse-button").on("click.collapse-menu",function(){var b=n()||961;a("#adminmenu div.wp-submenu").css("margin-top",""),b<960?f.hasClass("auto-fold")?(f.removeClass("auto-fold").removeClass("folded"),setUserSetting("unfold",1),setUserSetting("mfold","o"),x="open"):(f.addClass("auto-fold"),setUserSetting("unfold",0),x="folded"):f.hasClass("folded")?(f.removeClass("folded"),setUserSetting("mfold","o"),x="open"):(f.addClass("folded"),setUserSetting("mfold","f"),x="folded"),d.trigger("wp-collapse-menu",{state:x})}),d.on("wp-menu-state-set wp-collapse-menu wp-responsive-activate wp-responsive-deactivate",c),("ontouchstart"in b||/IEMobile\/[1-9]/.test(navigator.userAgent))&&(u=B?"touchstart":"click",f.on(u+".wp-mobile-hover",function(b){G.data("wp-responsive")||a(b.target).closest("#adminmenu").length||G.find("li.opensub").removeClass("opensub")}),G.find("a.wp-has-submenu").on(u+".wp-mobile-hover",function(b){var c=a(this).parent();G.data("wp-responsive")||c.hasClass("opensub")||c.hasClass("wp-menu-open")&&!(c.width()<40)||(b.preventDefault(),g(c),G.find("li.opensub").removeClass("opensub"),c.addClass("opensub"))})),B||C||(G.find("li.wp-has-submenu").hoverIntent({over:function(){var b=a(this),c=b.find(".wp-submenu"),d=parseInt(c.css("top"),10);isNaN(d)||d>-5||G.data("wp-responsive")||(g(b),G.find("li.opensub").removeClass("opensub"),b.addClass("opensub"))},out:function(){G.data("wp-responsive")||a(this).removeClass("opensub").find(".wp-submenu").css("margin-top","")},timeout:200,sensitivity:7,interval:90}),G.on("focus.adminmenu",".wp-submenu a",function(b){G.data("wp-responsive")||a(b.target).closest("li.menu-top").addClass("opensub")}).on("blur.adminmenu",".wp-submenu a",function(b){G.data("wp-responsive")||a(b.target).closest("li.menu-top").removeClass("opensub")}).find("li.wp-has-submenu.wp-not-current-submenu").on("focusin.adminmenu",function(){g(a(this))})),T.length||(T=a(".wrap h1, .wrap h2").first()),a("div.updated, div.error, div.notice").not(".inline, .below-h2").insertAfter(T),d.on("wp-updates-notice-added wp-plugin-install-error wp-plugin-update-error wp-plugin-delete-error wp-theme-install-error wp-theme-delete-error",h),screenMeta.init(),f.on("click","tbody .check-column :checkbox",function(b){if("undefined"==b.shiftKey)return!0;if(b.shiftKey){if(!y)return!0;p=a(y).closest("form").find(":checkbox").filter(":visible:enabled"),q=p.index(y),r=p.index(this),s=a(this).prop("checked"),0q?p.slice(q,r):p.slice(r,q),t.prop("checked",function(){return!!a(this).closest("tr").is(":visible")&&s}))}y=this;var c=a(this).closest("tbody").find(":checkbox").filter(":visible:enabled").not(":checked");return a(this).closest("table").children("thead, tfoot").find(":checkbox").prop("checked",function(){return 0===c.length}),!0}),f.on("click.wp-toggle-checkboxes","thead .check-column :checkbox, tfoot .check-column :checkbox",function(b){var c=a(this),d=c.closest("table"),e=c.prop("checked"),f=b.shiftKey||c.data("wp-toggle");d.children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return!a(this).is(":hidden,:disabled")&&(f?!a(this).prop("checked"):!!e)}),d.children("thead, tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return!f&&!!e})}),a("#wpbody-content").on({focusin:function(){clearTimeout(v),w=a(this).find(".row-actions"),a(".row-actions").not(this).removeClass("visible"),w.addClass("visible")},focusout:function(){v=setTimeout(function(){w.removeClass("visible")},30)}},".has-row-actions"),a("tbody").on("click",".toggle-row",function(){a(this).closest("tr").toggleClass("is-expanded")}),a("#default-password-nag-no").click(function(){return setUserSetting("default_password_nag","hide"),a("div.default-password-nag").hide(),!1}),a("#newcontent").bind("keydown.wpevent_InsertTab",function(b){var c,d,e,f,g,h=b.target;if(27==b.keyCode)return b.preventDefault(),void a(h).data("tab-out",!0);if(!(9!=b.keyCode||b.ctrlKey||b.altKey||b.shiftKey)){if(a(h).data("tab-out"))return void a(h).data("tab-out",!1);c=h.selectionStart,d=h.selectionEnd,e=h.value,document.selection?(h.focus(),g=document.selection.createRange(),g.text="\t"):c>=0&&(f=this.scrollTop,h.value=e.substring(0,c).concat("\t",e.substring(d)),h.selectionStart=h.selectionEnd=c+1,this.scrollTop=f),b.stopPropagation&&b.stopPropagation(),b.preventDefault&&b.preventDefault()}}),z.length&&z.closest("form").submit(function(){a('select[name="action"]').val()==-1&&a('select[name="action2"]').val()==-1&&z.val()==A&&z.val("1")}),a('.search-box input[type="search"], .search-box input[type="submit"]').mousedown(function(){a('select[name^="action"]').val("-1")}),a("#contextual-help-link, #show-settings-link").on("focus.scroll-into-view",function(a){a.target.scrollIntoView&&a.target.scrollIntoView(!1)}),function(){function b(){c.prop("disabled",""===d.map(function(){return a(this).val()}).get().join(""))}var c,d,e=a("form.wp-upload-form");e.length&&(c=e.find('input[type="submit"]'),d=e.find('input[type="file"]'),b(),d.on("change",b))}(),B||(e.on("scroll.pin-menu",i),d.on("tinymce-editor-init.pin-menu",function(a,b){b.on("wp-autoresize",j)})),b.wpResponsive={init:function(){var c=this;d.on("wp-responsive-activate.wp-responsive",function(){c.activate()}).on("wp-responsive-deactivate.wp-responsive",function(){c.deactivate()}),a("#wp-admin-bar-menu-toggle a").attr("aria-expanded","false"),a("#wp-admin-bar-menu-toggle").on("click.wp-responsive",function(b){b.preventDefault(),M.find(".hover").removeClass("hover"),F.toggleClass("wp-responsive-open"),F.hasClass("wp-responsive-open")?(a(this).find("a").attr("aria-expanded","true"),a("#adminmenu a:first").focus()):a(this).find("a").attr("aria-expanded","false")}),G.on("click.wp-responsive","li.wp-has-submenu > a",function(b){G.data("wp-responsive")&&(a(this).parent("li").toggleClass("selected"),b.preventDefault())}),c.trigger(),d.on("wp-window-resized.wp-responsive",a.proxy(this.trigger,this)),e.on("load.wp-responsive",function(){var a=navigator.userAgent.indexOf("AppleWebKit/")>-1?e.width():b.innerWidth;a<=782&&c.disableSortables()})},activate:function(){l(),f.hasClass("auto-fold")||f.addClass("auto-fold"),G.data("wp-responsive",1),this.disableSortables()},deactivate:function(){l(),G.removeData("wp-responsive"),this.enableSortables()},trigger:function(){var a=n();a&&(a<=782?L||(d.trigger("wp-responsive-activate"),L=!0):L&&(d.trigger("wp-responsive-deactivate"),L=!1),a<=480?this.enableOverlay():this.disableOverlay())},enableOverlay:function(){0===H.length&&(H=a('
    ').insertAfter("#wpcontent").hide().on("click.wp-responsive",function(){I.find(".menupop.hover").removeClass("hover"),a(this).hide()})),J.on("click.wp-responsive",function(){H.show()})},disableOverlay:function(){J.off("click.wp-responsive"),H.hide()},disableSortables:function(){if(K.length)try{K.sortable("disable")}catch(a){}},enableSortables:function(){if(K.length)try{K.sortable("enable")}catch(a){}}},a(document).ajaxComplete(function(){m()}),d.on("wp-window-resized.set-menu-state",o),d.on("wp-menu-state-set wp-collapse-menu",function(b,c){var d=a("#collapse-button"),e="true",f=commonL10n.collapseMenu;"folded"===c.state&&(e="false",f=commonL10n.expandMenu),d.attr({"aria-expanded":e,"aria-label":f})}),b.wpResponsive.init(),l(),o(),c(),h(),m(),d.on("wp-pin-menu wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu wp-collapse-menu.pin-menu wp-scroll-start.pin-menu",l),a(".wp-initial-focus").focus()}),function(){function a(){d.trigger("wp-window-resized")}function c(){b.clearTimeout(f),f=b.setTimeout(a,200)}var f;e.on("resize.wp-fire-once",c)}(),function(){if("-ms-user-select"in document.documentElement.style&&navigator.userAgent.match(/IEMobile\/10\.0/)){var a=document.createElement("style");a.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")),document.getElementsByTagName("head")[0].appendChild(a)}}()}(jQuery,window); \ No newline at end of file diff --git a/wp/wp-admin/js/custom-background.js b/wp/wp-admin/js/custom-background.js index 81fd5917..c3f4e294 100644 --- a/wp/wp-admin/js/custom-background.js +++ b/wp/wp-admin/js/custom-background.js @@ -13,12 +13,20 @@ } }); - $('input[name="background-position-x"]').change(function() { - bgImage.css('background-position', $(this).val() + ' top'); + $( 'select[name="background-size"]' ).change( function() { + bgImage.css( 'background-size', $( this ).val() ); }); - $('input[name="background-repeat"]').change(function() { - bgImage.css('background-repeat', $(this).val()); + $( 'input[name="background-position"]' ).change( function() { + bgImage.css( 'background-position', $( this ).val() ); + }); + + $( 'input[name="background-repeat"]' ).change( function() { + bgImage.css( 'background-repeat', $( this ).is( ':checked' ) ? 'repeat' : 'no-repeat' ); + }); + + $( 'input[name="background-attachment"]' ).change( function() { + bgImage.css( 'background-attachment', $( this ).is( ':checked' ) ? 'scroll' : 'fixed' ); }); $('#choose-from-library-link').click( function( event ) { diff --git a/wp/wp-admin/js/custom-background.min.js b/wp/wp-admin/js/custom-background.min.js index f53e02ca..5e303882 100644 --- a/wp/wp-admin/js/custom-background.min.js +++ b/wp/wp-admin/js/custom-background.min.js @@ -1 +1 @@ -!function(a){a(document).ready(function(){var b,c=a("#custom-background-image");a("#background-color").wpColorPicker({change:function(a,b){c.css("background-color",b.color.toString())},clear:function(){c.css("background-color","")}}),a('input[name="background-position-x"]').change(function(){c.css("background-position",a(this).val()+" top")}),a('input[name="background-repeat"]').change(function(){c.css("background-repeat",a(this).val())}),a("#choose-from-library-link").click(function(c){var d=a(this);return c.preventDefault(),b?void b.open():(b=wp.media.frames.customBackground=wp.media({title:d.data("choose"),library:{type:"image"},button:{text:d.data("update"),close:!1}}),b.on("select",function(){var c=b.state().get("selection").first();a.post(ajaxurl,{action:"set-background-image",attachment_id:c.id,size:"full"}).done(function(){window.location.reload()})}),void b.open())})})}(jQuery); \ No newline at end of file +!function(a){a(document).ready(function(){var b,c=a("#custom-background-image");a("#background-color").wpColorPicker({change:function(a,b){c.css("background-color",b.color.toString())},clear:function(){c.css("background-color","")}}),a('select[name="background-size"]').change(function(){c.css("background-size",a(this).val())}),a('input[name="background-position"]').change(function(){c.css("background-position",a(this).val())}),a('input[name="background-repeat"]').change(function(){c.css("background-repeat",a(this).is(":checked")?"repeat":"no-repeat")}),a('input[name="background-attachment"]').change(function(){c.css("background-attachment",a(this).is(":checked")?"scroll":"fixed")}),a("#choose-from-library-link").click(function(c){var d=a(this);return c.preventDefault(),b?void b.open():(b=wp.media.frames.customBackground=wp.media({title:d.data("choose"),library:{type:"image"},button:{text:d.data("update"),close:!1}}),b.on("select",function(){var c=b.state().get("selection").first();a.post(ajaxurl,{action:"set-background-image",attachment_id:c.id,size:"full"}).done(function(){window.location.reload()})}),void b.open())})})}(jQuery); \ No newline at end of file diff --git a/wp/wp-admin/js/customize-controls.js b/wp/wp-admin/js/customize-controls.js index 8fa7bb09..65f5584e 100644 --- a/wp/wp-admin/js/customize-controls.js +++ b/wp/wp-admin/js/customize-controls.js @@ -1,6 +1,6 @@ /* global _wpCustomizeHeader, _wpCustomizeBackground, _wpMediaViewsL10n, MediaElementPlayer */ (function( exports, $ ){ - var Container, focus, api = wp.customize; + var Container, focus, normalizedTransitionendEventName, api = wp.customize; /** * A Customizer Setting. @@ -22,26 +22,45 @@ */ api.Setting = api.Value.extend({ initialize: function( id, value, options ) { - api.Value.prototype.initialize.call( this, value, options ); + var setting = this; + api.Value.prototype.initialize.call( setting, value, options ); - this.id = id; - this.transport = this.transport || 'refresh'; - this._dirty = options.dirty || false; - this.notifications = new api.Values({ defaultConstructor: api.Notification }); + setting.id = id; + setting.transport = setting.transport || 'refresh'; + setting._dirty = options.dirty || false; + setting.notifications = new api.Values({ defaultConstructor: api.Notification }); // Whenever the setting's value changes, refresh the preview. - this.bind( this.preview ); + setting.bind( setting.preview ); }, /** * Refresh the preview, respective of the setting's refresh policy. + * + * If the preview hasn't sent a keep-alive message and is likely + * disconnected by having navigated to a non-allowed URL, then the + * refresh transport will be forced when postMessage is the transport. + * Note that postMessage does not throw an error when the recipient window + * fails to match the origin window, so using try/catch around the + * previewer.send() call to then fallback to refresh will not work. + * + * @since 3.4.0 + * @access public + * + * @returns {void} */ preview: function() { - switch ( this.transport ) { - case 'refresh': - return this.previewer.refresh(); - case 'postMessage': - return this.previewer.send( 'setting', [ this.id, this() ] ); + var setting = this, transport; + transport = setting.transport; + + if ( 'postMessage' === transport && ! api.state( 'previewerAlive' ).get() ) { + transport = 'refresh'; + } + + if ( 'postMessage' === transport ) { + setting.previewer.send( 'setting', [ setting.id, setting() ] ); + } else if ( 'refresh' === transport ) { + setting.previewer.refresh(); } }, @@ -65,9 +84,172 @@ }); /** - * Utility function namespace + * Current change count. + * + * @since 4.7.0 + * @type {number} + * @protected */ - api.utils = {}; + api._latestRevision = 0; + + /** + * Last revision that was saved. + * + * @since 4.7.0 + * @type {number} + * @protected + */ + api._lastSavedRevision = 0; + + /** + * Latest revisions associated with the updated setting. + * + * @since 4.7.0 + * @type {object} + * @protected + */ + api._latestSettingRevisions = {}; + + /* + * Keep track of the revision associated with each updated setting so that + * requestChangesetUpdate knows which dirty settings to include. Also, once + * ready is triggered and all initial settings have been added, increment + * revision for each newly-created initially-dirty setting so that it will + * also be included in changeset update requests. + */ + api.bind( 'change', function incrementChangedSettingRevision( setting ) { + api._latestRevision += 1; + api._latestSettingRevisions[ setting.id ] = api._latestRevision; + } ); + api.bind( 'ready', function() { + api.bind( 'add', function incrementCreatedSettingRevision( setting ) { + if ( setting._dirty ) { + api._latestRevision += 1; + api._latestSettingRevisions[ setting.id ] = api._latestRevision; + } + } ); + } ); + + /** + * Get the dirty setting values. + * + * @since 4.7.0 + * @access public + * + * @param {object} [options] Options. + * @param {boolean} [options.unsaved=false] Whether only values not saved yet into a changeset will be returned (differential changes). + * @returns {object} Dirty setting values. + */ + api.dirtyValues = function dirtyValues( options ) { + var values = {}; + api.each( function( setting ) { + var settingRevision; + + if ( ! setting._dirty ) { + return; + } + + settingRevision = api._latestSettingRevisions[ setting.id ]; + + // Skip including settings that have already been included in the changeset, if only requesting unsaved. + if ( api.state( 'changesetStatus' ).get() && ( options && options.unsaved ) && ( _.isUndefined( settingRevision ) || settingRevision <= api._lastSavedRevision ) ) { + return; + } + + values[ setting.id ] = setting.get(); + } ); + return values; + }; + + /** + * Request updates to the changeset. + * + * @since 4.7.0 + * @access public + * + * @param {object} [changes] Mapping of setting IDs to setting params each normally including a value property, or mapping to null. + * If not provided, then the changes will still be obtained from unsaved dirty settings. + * @returns {jQuery.Promise} Promise resolving with the response data. + */ + api.requestChangesetUpdate = function requestChangesetUpdate( changes ) { + var deferred, request, submittedChanges = {}, data; + deferred = new $.Deferred(); + + if ( changes ) { + _.extend( submittedChanges, changes ); + } + + // Ensure all revised settings (changes pending save) are also included, but not if marked for deletion in changes. + _.each( api.dirtyValues( { unsaved: true } ), function( dirtyValue, settingId ) { + if ( ! changes || null !== changes[ settingId ] ) { + submittedChanges[ settingId ] = _.extend( + {}, + submittedChanges[ settingId ] || {}, + { value: dirtyValue } + ); + } + } ); + + // Short-circuit when there are no pending changes. + if ( _.isEmpty( submittedChanges ) ) { + deferred.resolve( {} ); + return deferred.promise(); + } + + // Make sure that publishing a changeset waits for all changeset update requests to complete. + api.state( 'processing' ).set( api.state( 'processing' ).get() + 1 ); + deferred.always( function() { + api.state( 'processing' ).set( api.state( 'processing' ).get() - 1 ); + } ); + + // Allow plugins to attach additional params to the settings. + api.trigger( 'changeset-save', submittedChanges ); + + // Ensure that if any plugins add data to save requests by extending query() that they get included here. + data = api.previewer.query( { excludeCustomizedSaved: true } ); + delete data.customized; // Being sent in customize_changeset_data instead. + _.extend( data, { + nonce: api.settings.nonce.save, + customize_theme: api.settings.theme.stylesheet, + customize_changeset_data: JSON.stringify( submittedChanges ) + } ); + + request = wp.ajax.post( 'customize_save', data ); + + request.done( function requestChangesetUpdateDone( data ) { + var savedChangesetValues = {}; + + // Ensure that all settings updated subsequently will be included in the next changeset update request. + api._lastSavedRevision = Math.max( api._latestRevision, api._lastSavedRevision ); + + api.state( 'changesetStatus' ).set( data.changeset_status ); + deferred.resolve( data ); + api.trigger( 'changeset-saved', data ); + + if ( data.setting_validities ) { + _.each( data.setting_validities, function( validity, settingId ) { + if ( true === validity && _.isObject( submittedChanges[ settingId ] ) && ! _.isUndefined( submittedChanges[ settingId ].value ) ) { + savedChangesetValues[ settingId ] = submittedChanges[ settingId ].value; + } + } ); + } + + api.previewer.send( 'changeset-saved', _.extend( {}, data, { saved_changeset_values: savedChangesetValues } ) ); + } ); + request.fail( function requestChangesetUpdateFail( data ) { + deferred.reject( data ); + api.trigger( 'changeset-error', data ); + } ); + request.always( function( data ) { + if ( data.setting_validities ) { + api._handleSettingValidities( { + settingValidities: data.setting_validities + } ); + } + } ); + + return deferred.promise(); + }; /** * Watch all changes to Value properties, and bubble changes to parent Values instance @@ -101,10 +283,8 @@ params = params || {}; focus = function () { var focusContainer; - if ( construct.extended( api.Panel ) && construct.expanded && construct.expanded() ) { - focusContainer = construct.container.find( 'ul.control-panel-content' ); - } else if ( construct.extended( api.Section ) && construct.expanded && construct.expanded() ) { - focusContainer = construct.container.find( 'ul.accordion-section-content' ); + if ( ( construct.extended( api.Panel ) || construct.extended( api.Section ) ) && construct.expanded && construct.expanded() ) { + focusContainer = construct.contentContainer; } else { focusContainer = construct.container; } @@ -125,6 +305,8 @@ } else { params.completeCallback = focus; } + + api.state( 'paneVisible' ).set( true ); if ( construct.expand ) { construct.expand( params ); } else { @@ -185,6 +367,32 @@ return equal; }; + /** + * Return browser supported `transitionend` event name. + * + * @since 4.7.0 + * + * @returns {string|null} Normalized `transitionend` event name or null if CSS transitions are not supported. + */ + normalizedTransitionendEventName = (function () { + var el, transitions, prop; + el = document.createElement( 'div' ); + transitions = { + 'transition' : 'transitionend', + 'OTransition' : 'oTransitionEnd', + 'MozTransition' : 'transitionend', + 'WebkitTransition': 'webkitTransitionEnd' + }; + prop = _.find( _.keys( transitions ), function( prop ) { + return ! _.isUndefined( el.style[ prop ] ); + } ); + if ( prop ) { + return transitions[ prop ]; + } else { + return null; + } + })(); + /** * Base class for Panel and Section. * @@ -236,6 +444,9 @@ if ( 0 === container.container.length ) { container.container = $( container.getContainer() ); } + container.headContainer = container.container; + container.contentContainer = container.getContent(); + container.container = container.container.add( container.contentContainer ); container.deferred = { embedded: new $.Deferred() @@ -323,7 +534,10 @@ * @param {Object} args.completeCallback */ onChangeActive: function( active, args ) { - var duration, construct = this, expandedOtherPanel; + var construct = this, + headContainer = construct.headContainer, + duration, expandedOtherPanel; + if ( args.unchanged ) { if ( args.completeCallback ) { args.completeCallback(); @@ -350,31 +564,26 @@ } } - if ( ! $.contains( document, construct.container[0] ) ) { + if ( ! $.contains( document, headContainer ) ) { // jQuery.fn.slideUp is not hiding an element if it is not in the DOM - construct.container.toggle( active ); + headContainer.toggle( active ); if ( args.completeCallback ) { args.completeCallback(); } } else if ( active ) { - construct.container.stop( true, true ).slideDown( duration, args.completeCallback ); + headContainer.stop( true, true ).slideDown( duration, args.completeCallback ); } else { if ( construct.expanded() ) { construct.collapse({ duration: duration, completeCallback: function() { - construct.container.stop( true, true ).slideUp( duration, args.completeCallback ); + headContainer.stop( true, true ).slideUp( duration, args.completeCallback ); } }); } else { - construct.container.stop( true, true ).slideUp( duration, args.completeCallback ); + headContainer.stop( true, true ).slideUp( duration, args.completeCallback ); } } - - // Recalculate the margin-top immediately, not waiting for debounced reflow, to prevent momentary (100ms) vertical jiggle. - if ( expandedOtherPanel ) { - expandedOtherPanel._recalculateTopMargin(); - } }, /** @@ -441,6 +650,7 @@ return false; } + api.state( 'paneVisible' ).set( true ); params.completeCallback = function() { if ( previousCompleteCallback ) { previousCompleteCallback.apply( instance, arguments ); @@ -479,6 +689,66 @@ return this._toggleExpanded( false, params ); }, + /** + * Animate container state change if transitions are supported by the browser. + * + * @since 4.7.0 + * @private + * + * @param {function} completeCallback Function to be called after transition is completed. + * @returns {void} + */ + _animateChangeExpanded: function( completeCallback ) { + // Return if CSS transitions are not supported. + if ( ! normalizedTransitionendEventName ) { + if ( completeCallback ) { + completeCallback(); + } + return; + } + + var construct = this, + content = construct.contentContainer, + overlay = content.closest( '.wp-full-overlay' ), + elements, transitionEndCallback; + + // Determine set of elements that are affected by the animation. + elements = overlay.add( content ); + if ( _.isUndefined( construct.panel ) || '' === construct.panel() ) { + elements = elements.add( '#customize-info, .customize-pane-parent' ); + } + + // Handle `transitionEnd` event. + transitionEndCallback = function( e ) { + if ( 2 !== e.eventPhase || ! $( e.target ).is( content ) ) { + return; + } + content.off( normalizedTransitionendEventName, transitionEndCallback ); + elements.removeClass( 'busy' ); + if ( completeCallback ) { + completeCallback(); + } + }; + content.on( normalizedTransitionendEventName, transitionEndCallback ); + elements.addClass( 'busy' ); + + // Prevent screen flicker when pane has been scrolled before expanding. + _.defer( function() { + var container = content.closest( '.wp-full-overlay-sidebar-content' ), + currentScrollTop = container.scrollTop(), + previousScrollTop = content.data( 'previous-scrollTop' ) || 0, + expanded = construct.expanded(); + + if ( expanded && 0 < currentScrollTop ) { + content.css( 'top', currentScrollTop + 'px' ); + content.data( 'previous-scrollTop', currentScrollTop ); + } else if ( ! expanded && 0 < currentScrollTop + previousScrollTop ) { + content.css( 'top', previousScrollTop - currentScrollTop + 'px' ); + container.scrollTop( previousScrollTop ); + } + } ); + }, + /** * Bring the container into view and then expand this and bring it into view * @param {Object} [params] @@ -504,6 +774,40 @@ } return '
  • '; + }, + + /** + * Find content element which is displayed when the section is expanded. + * + * After a construct is initialized, the return value will be available via the `contentContainer` property. + * By default the element will be related it to the parent container with `aria-owns` and detached. + * Custom panels and sections (such as the `NewMenuSection`) that do not have a sliding pane should + * just return the content element without needing to add the `aria-owns` element or detach it from + * the container. Such non-sliding pane custom sections also need to override the `onChangeExpanded` + * method to handle animating the panel/section into and out of view. + * + * @since 4.7.0 + * @access public + * + * @returns {jQuery} Detached content element. + */ + getContent: function() { + var construct = this, + container = construct.container, + content = container.find( '.accordion-section-content, .control-panel-content' ).first(), + contentId = 'sub-' + container.attr( 'id' ), + ownedElements = contentId, + alreadyOwnedElements = container.attr( 'aria-owns' ); + + if ( alreadyOwnedElements ) { + ownedElements = ownedElements + ' ' + alreadyOwnedElements; + } + container.attr( 'aria-owns', ownedElements ); + + return content.detach().attr( { + 'id': contentId, + 'class': 'customize-pane-child ' + content.attr( 'class' ) + ' ' + container.attr( 'class' ) + } ); } }); @@ -549,7 +853,7 @@ section.id = id; section.panel = new api.Value(); section.panel.bind( function ( id ) { - $( section.container ).toggleClass( 'control-subsection', !! id ); + $( section.headContainer ).toggleClass( 'control-subsection', !! id ); }); section.panel.set( section.params.panel || '' ); api.utils.bubbleChildValueChanges( section, [ 'panel' ] ); @@ -566,7 +870,9 @@ * @since 4.1.0 */ embed: function () { - var section = this, inject; + var inject, + section = this, + container = $( '#customize-theme-controls' ); // Watch for changes to the panel state inject = function ( panelId ) { @@ -576,31 +882,30 @@ api.panel( panelId, function ( panel ) { // The panel has been registered, wait for it to become ready/initialized panel.deferred.embedded.done( function () { - parentContainer = panel.container.find( 'ul:first' ); - if ( ! section.container.parent().is( parentContainer ) ) { - parentContainer.append( section.container ); + parentContainer = panel.contentContainer; + if ( ! section.headContainer.parent().is( parentContainer ) ) { + parentContainer.append( section.headContainer ); + } + if ( ! section.contentContainer.parent().is( section.headContainer ) ) { + container.append( section.contentContainer ); } section.deferred.embedded.resolve(); }); } ); } else { // There is no panel, so embed the section in the root of the customizer - parentContainer = $( '#customize-theme-controls' ).children( 'ul' ); // @todo This should be defined elsewhere, and to be configurable - if ( ! section.container.parent().is( parentContainer ) ) { - parentContainer.append( section.container ); + parentContainer = $( '.customize-pane-parent' ); // @todo This should be defined elsewhere, and to be configurable + if ( ! section.headContainer.parent().is( parentContainer ) ) { + parentContainer.append( section.headContainer ); + } + if ( ! section.contentContainer.parent().is( section.headContainer ) ) { + container.append( section.contentContainer ); } section.deferred.embedded.resolve(); } }; section.panel.bind( inject ); inject( section.panel.get() ); // Since a section may never get a panel, assume that it won't ever get one - - section.deferred.embedded.done(function() { - // Fix the top margin after reflow. - api.bind( 'pane-contents-reflowed', _.debounce( function() { - section._recalculateTopMargin(); - }, 100 ) ); - }); }, /** @@ -609,7 +914,11 @@ * @since 4.1.0 */ attachEvents: function () { - var section = this; + var meta, content, section = this; + + if ( section.container.hasClass( 'cannot-expand' ) ) { + return; + } // Expand/Collapse accordion sections on click. section.container.find( '.accordion-section-title, .customize-section-back' ).on( 'click keydown', function( event ) { @@ -624,6 +933,21 @@ section.expand(); } }); + + // This is very similar to what is found for api.Panel.attachEvents(). + section.container.find( '.customize-section-title .customize-help-toggle' ).on( 'click', function() { + + meta = section.container.find( '.section-meta' ); + if ( meta.hasClass( 'cannot-expand' ) ) { + return; + } + content = meta.find( '.customize-section-description:first' ); + content.toggleClass( 'open' ); + content.slideToggle(); + content.attr( 'aria-expanded', function ( i, attr ) { + return 'true' === attr ? 'false' : 'true'; + }); + }); }, /** @@ -666,50 +990,36 @@ */ onChangeExpanded: function ( expanded, args ) { var section = this, - container = section.container.closest( '.wp-full-overlay-sidebar-content' ), - content = section.container.find( '.accordion-section-content' ), - overlay = section.container.closest( '.wp-full-overlay' ), - backBtn = section.container.find( '.customize-section-back' ), - sectionTitle = section.container.find( '.accordion-section-title' ).first(), - headerActionsHeight = $( '#customize-header-actions' ).height(), - resizeContentHeight, expand, position, scroll; + container = section.headContainer.closest( '.wp-full-overlay-sidebar-content' ), + content = section.contentContainer, + overlay = section.headContainer.closest( '.wp-full-overlay' ), + backBtn = content.find( '.customize-section-back' ), + sectionTitle = section.headContainer.find( '.accordion-section-title' ).first(), + expand; - if ( expanded && ! section.container.hasClass( 'open' ) ) { + if ( expanded && ! content.hasClass( 'open' ) ) { if ( args.unchanged ) { expand = args.completeCallback; } else { - container.scrollTop( 0 ); - resizeContentHeight = function() { - var matchMedia, offset; - matchMedia = window.matchMedia || window.msMatchMedia; - offset = 90; // 45px for customize header actions + 45px for footer actions. + expand = $.proxy( function() { + section._animateChangeExpanded( function() { + sectionTitle.attr( 'tabindex', '-1' ); + backBtn.attr( 'tabindex', '0' ); - // No footer on small screens. - if ( matchMedia && matchMedia( '(max-width: 640px)' ).matches ) { - offset = 45; - } - content.css( 'height', ( window.innerHeight - offset ) ); - }; - expand = function() { - section.container.addClass( 'open' ); + backBtn.focus(); + content.css( 'top', '' ); + container.scrollTop( 0 ); + + if ( args.completeCallback ) { + args.completeCallback(); + } + } ); + + content.addClass( 'open' ); overlay.addClass( 'section-open' ); - position = content.offset().top; - scroll = container.scrollTop(); - content.css( 'margin-top', ( headerActionsHeight - position - scroll ) ); - resizeContentHeight(); - sectionTitle.attr( 'tabindex', '-1' ); - backBtn.attr( 'tabindex', '0' ); - backBtn.focus(); - if ( args.completeCallback ) { - args.completeCallback(); - } - - // Fix the height after browser resize. - $( window ).on( 'resize.customizer-section', _.debounce( resizeContentHeight, 100 ) ); - - setTimeout( _.bind( section._recalculateTopMargin, section ), 0 ); - }; + api.state( 'expandedSection' ).set( section ); + }, this ); } if ( ! args.allowMultiple ) { @@ -732,42 +1042,30 @@ expand(); } - } else if ( ! expanded && section.container.hasClass( 'open' ) ) { - section.container.removeClass( 'open' ); + } else if ( ! expanded && content.hasClass( 'open' ) ) { + section._animateChangeExpanded( function() { + backBtn.attr( 'tabindex', '-1' ); + sectionTitle.attr( 'tabindex', '0' ); + + sectionTitle.focus(); + content.css( 'top', '' ); + + if ( args.completeCallback ) { + args.completeCallback(); + } + } ); + + content.removeClass( 'open' ); overlay.removeClass( 'section-open' ); - content.css( 'margin-top', '' ); - container.scrollTop( 0 ); - backBtn.attr( 'tabindex', '-1' ); - sectionTitle.attr( 'tabindex', '0' ); - sectionTitle.focus(); - if ( args.completeCallback ) { - args.completeCallback(); + if ( section === api.state( 'expandedSection' ).get() ) { + api.state( 'expandedSection' ).set( false ); } - $( window ).off( 'resize.customizer-section' ); + } else { if ( args.completeCallback ) { args.completeCallback(); } } - }, - - /** - * Recalculate the top margin. - * - * @since 4.4.0 - * @private - */ - _recalculateTopMargin: function() { - var section = this, content, offset, headerActionsHeight; - content = section.container.find( '.accordion-section-content' ); - if ( 0 === content.length ) { - return; - } - headerActionsHeight = $( '#customize-header-actions' ).height(); - offset = ( content.offset().top - headerActionsHeight ); - if ( 0 < offset ) { - content.css( 'margin-top', ( parseInt( content.css( 'margin-top' ), 10 ) - offset ) ); - } } }); @@ -805,7 +1103,7 @@ section.template = wp.template( 'customize-themes-details-view' ); // Bind global keyboard events. - $( 'body' ).on( 'keyup', function( event ) { + section.container.on( 'keydown', function( event ) { if ( ! section.overlay.find( '.theme-wrap' ).is( ':visible' ) ) { return; } @@ -823,6 +1121,7 @@ // Pressing the escape key fires a theme:collapse event if ( 27 === event.keyCode ) { section.closeDetails(); + event.stopPropagation(); // Prevent section from being collapsed. } }); @@ -945,18 +1244,14 @@ } // Note: there is a second argument 'args' passed - var position, scroll, - panel = this, - section = panel.container.closest( '.accordion-section' ), + var panel = this, + section = panel.contentContainer, overlay = section.closest( '.wp-full-overlay' ), container = section.closest( '.wp-full-overlay-sidebar-content' ), - siblings = container.find( '.open' ), customizeBtn = section.find( '.customize-theme' ), - changeBtn = section.find( '.change-theme' ), - content = section.find( '.control-panel-content' ); - - if ( expanded ) { + changeBtn = panel.headContainer.find( '.change-theme' ); + if ( expanded && ! section.hasClass( 'current-panel' ) ) { // Collapse any sibling sections/panels api.section.each( function ( otherSection ) { if ( otherSection !== panel ) { @@ -967,45 +1262,41 @@ otherPanel.collapse( { duration: 0 } ); }); - content.show( 0, function() { - position = content.offset().top; - scroll = container.scrollTop(); - content.css( 'margin-top', ( $( '#customize-header-actions' ).height() - position - scroll ) ); - section.addClass( 'current-panel' ); - overlay.addClass( 'in-themes-panel' ); - container.scrollTop( 0 ); - _.delay( panel.renderScreenshots, 10 ); // Wait for the controls - panel.$customizeSidebar.on( 'scroll.customize-themes-section', _.throttle( panel.renderScreenshots, 300 ) ); - if ( args.completeCallback ) { - args.completeCallback(); - } - } ); - customizeBtn.focus(); - } else { - siblings.removeClass( 'open' ); - section.removeClass( 'current-panel' ); - overlay.removeClass( 'in-themes-panel' ); - panel.$customizeSidebar.off( 'scroll.customize-themes-section' ); - content.delay( 180 ).hide( 0, function() { - content.css( 'margin-top', 'inherit' ); // Reset - if ( args.completeCallback ) { - args.completeCallback(); - } - } ); - customizeBtn.attr( 'tabindex', '0' ); - changeBtn.focus(); - container.scrollTop( 0 ); - } - }, + panel._animateChangeExpanded( function() { + changeBtn.attr( 'tabindex', '-1' ); + customizeBtn.attr( 'tabindex', '0' ); - /** - * Recalculate the top margin. - * - * @since 4.4.0 - * @private - */ - _recalculateTopMargin: function() { - api.Panel.prototype._recalculateTopMargin.call( this ); + customizeBtn.focus(); + section.css( 'top', '' ); + container.scrollTop( 0 ); + + if ( args.completeCallback ) { + args.completeCallback(); + } + } ); + + overlay.addClass( 'in-themes-panel' ); + section.addClass( 'current-panel' ); + _.delay( panel.renderScreenshots, 10 ); // Wait for the controls + panel.$customizeSidebar.on( 'scroll.customize-themes-section', _.throttle( panel.renderScreenshots, 300 ) ); + + } else if ( ! expanded && section.hasClass( 'current-panel' ) ) { + panel._animateChangeExpanded( function() { + changeBtn.attr( 'tabindex', '0' ); + customizeBtn.attr( 'tabindex', '-1' ); + + changeBtn.focus(); + section.css( 'top', '' ); + + if ( args.completeCallback ) { + args.completeCallback(); + } + } ); + + overlay.removeClass( 'in-themes-panel' ); + section.removeClass( 'current-panel' ); + panel.$customizeSidebar.off( 'scroll.customize-themes-section' ); + } }, /** @@ -1134,6 +1425,60 @@ } }, + /** + * Load theme preview. + * + * @since 4.7.0 + * @access public + * + * @param {string} themeId Theme ID. + * @returns {jQuery.promise} Promise. + */ + loadThemePreview: function( themeId ) { + var deferred = $.Deferred(), onceProcessingComplete, overlay, urlParser; + + urlParser = document.createElement( 'a' ); + urlParser.href = location.href; + urlParser.search = $.param( _.extend( + api.utils.parseQueryString( urlParser.search.substr( 1 ) ), + { + theme: themeId, + changeset_uuid: api.settings.changeset.uuid + } + ) ); + + overlay = $( '.wp-full-overlay' ); + overlay.addClass( 'customize-loading' ); + + onceProcessingComplete = function() { + var request; + if ( api.state( 'processing' ).get() > 0 ) { + return; + } + + api.state( 'processing' ).unbind( onceProcessingComplete ); + + request = api.requestChangesetUpdate(); + request.done( function() { + $( window ).off( 'beforeunload.customize-confirm' ); + top.location.href = urlParser.href; + deferred.resolve(); + } ); + request.fail( function() { + overlay.removeClass( 'customize-loading' ); + deferred.reject(); + } ); + }; + + if ( 0 === api.state( 'processing' ).get() ) { + onceProcessingComplete(); + } else { + api.state( 'processing' ).bind( onceProcessingComplete ); + } + + return deferred.promise(); + }, + /** * Render & show the theme details for a given theme model. * @@ -1142,7 +1487,7 @@ * @param {Object} theme */ showDetails: function ( theme, callback ) { - var section = this; + var section = this, link; callback = callback || function(){}; section.currentTheme = theme.id; section.overlay.html( section.template( theme ) ) @@ -1151,6 +1496,22 @@ $( 'body' ).addClass( 'modal-open' ); section.containFocus( section.overlay ); section.updateLimits(); + + link = section.overlay.find( '.inactive-theme > a' ); + + link.on( 'click', function( event ) { + event.preventDefault(); + + // Short-circuit if request is currently being made. + if ( link.hasClass( 'disabled' ) ) { + return; + } + link.addClass( 'disabled' ); + + section.loadThemePreview( theme.id ).fail( function() { + link.removeClass( 'disabled' ); + } ); + } ); callback(); }, @@ -1234,17 +1595,17 @@ */ embed: function () { var panel = this, - parentContainer = $( '#customize-theme-controls > ul' ); // @todo This should be defined elsewhere, and to be configurable + container = $( '#customize-theme-controls' ), + parentContainer = $( '.customize-pane-parent' ); // @todo This should be defined elsewhere, and to be configurable - if ( ! panel.container.parent().is( parentContainer ) ) { - parentContainer.append( panel.container ); + if ( ! panel.headContainer.parent().is( parentContainer ) ) { + parentContainer.append( panel.headContainer ); + } + if ( ! panel.contentContainer.parent().is( panel.headContainer ) ) { + container.append( panel.contentContainer ); panel.renderContent(); } - api.bind( 'pane-contents-reflowed', _.debounce( function() { - panel._recalculateTopMargin(); - }, 100 ) ); - panel.deferred.embedded.resolve(); }, @@ -1255,7 +1616,7 @@ var meta, panel = this; // Expand/Collapse accordion sections on click. - panel.container.find( '.accordion-section-title' ).on( 'click keydown', function( event ) { + panel.headContainer.find( '.accordion-section-title' ).on( 'click keydown', function( event ) { if ( api.utils.isKeydownButNotEnterEvent( event ) ) { return; } @@ -1286,7 +1647,6 @@ } event.preventDefault(); // Keep this AFTER the key filter above - meta = panel.container.find( '.panel-meta' ); if ( meta.hasClass( 'cannot-expand' ) ) { return; } @@ -1356,20 +1716,14 @@ } // Note: there is a second argument 'args' passed - var position, scroll, - panel = this, - accordionSection = panel.container.closest( '.accordion-section' ), + var panel = this, + accordionSection = panel.contentContainer, overlay = accordionSection.closest( '.wp-full-overlay' ), container = accordionSection.closest( '.wp-full-overlay-sidebar-content' ), - siblings = container.find( '.open' ), - topPanel = overlay.find( '#customize-theme-controls > ul > .accordion-section > .accordion-section-title' ), - backBtn = accordionSection.find( '.customize-panel-back' ), - panelTitle = accordionSection.find( '.accordion-section-title' ).first(), - content = accordionSection.find( '.control-panel-content' ), - headerActionsHeight = $( '#customize-header-actions' ).height(); - - if ( expanded ) { + topPanel = panel.headContainer.find( '.accordion-section-title' ), + backBtn = accordionSection.find( '.customize-panel-back' ); + if ( expanded && ! accordionSection.hasClass( 'current-panel' ) ) { // Collapse any sibling sections/panels api.section.each( function ( section ) { if ( panel.id !== section.panel() ) { @@ -1382,51 +1736,42 @@ } }); - content.show( 0, function() { - content.parent().show(); - position = content.offset().top; - scroll = container.scrollTop(); - content.css( 'margin-top', ( headerActionsHeight - position - scroll ) ); - accordionSection.addClass( 'current-panel' ); - overlay.addClass( 'in-sub-panel' ); - container.scrollTop( 0 ); - if ( args.completeCallback ) { - args.completeCallback(); - } - } ); - topPanel.attr( 'tabindex', '-1' ); - backBtn.attr( 'tabindex', '0' ); - backBtn.focus(); - panel._recalculateTopMargin(); - } else { - siblings.removeClass( 'open' ); - accordionSection.removeClass( 'current-panel' ); - overlay.removeClass( 'in-sub-panel' ); - content.delay( 180 ).hide( 0, function() { - content.css( 'margin-top', 'inherit' ); // Reset - if ( args.completeCallback ) { - args.completeCallback(); - } - } ); - topPanel.attr( 'tabindex', '0' ); - backBtn.attr( 'tabindex', '-1' ); - panelTitle.focus(); - container.scrollTop( 0 ); - } - }, + panel._animateChangeExpanded( function() { + topPanel.attr( 'tabindex', '-1' ); + backBtn.attr( 'tabindex', '0' ); - /** - * Recalculate the top margin. - * - * @since 4.4.0 - * @private - */ - _recalculateTopMargin: function() { - var panel = this, headerActionsHeight, content, accordionSection; - headerActionsHeight = $( '#customize-header-actions' ).height(); - accordionSection = panel.container.closest( '.accordion-section' ); - content = accordionSection.find( '.control-panel-content' ); - content.css( 'margin-top', ( parseInt( content.css( 'margin-top' ), 10 ) - ( content.offset().top - headerActionsHeight ) ) ); + backBtn.focus(); + accordionSection.css( 'top', '' ); + container.scrollTop( 0 ); + + if ( args.completeCallback ) { + args.completeCallback(); + } + } ); + + overlay.addClass( 'in-sub-panel' ); + accordionSection.addClass( 'current-panel' ); + api.state( 'expandedPanel' ).set( panel ); + + } else if ( ! expanded && accordionSection.hasClass( 'current-panel' ) ) { + panel._animateChangeExpanded( function() { + topPanel.attr( 'tabindex', '0' ); + backBtn.attr( 'tabindex', '-1' ); + + topPanel.focus(); + accordionSection.css( 'top', '' ); + + if ( args.completeCallback ) { + args.completeCallback(); + } + } ); + + overlay.removeClass( 'in-sub-panel' ); + accordionSection.removeClass( 'current-panel' ); + if ( panel === api.state( 'expandedPanel' ).get() ) { + api.state( 'expandedPanel' ).set( false ); + } + } }, /** @@ -1446,8 +1791,8 @@ } else { template = wp.template( 'customize-panel-default-content' ); } - if ( template && panel.container ) { - panel.container.find( '.accordion-sub-container' ).html( template( panel.params ) ); + if ( template && panel.headContainer ) { + panel.contentContainer.html( template( panel.params ) ); } } }); @@ -1623,7 +1968,7 @@ api.section( sectionId, function ( section ) { // Wait for the section to be ready/initialized section.deferred.embedded.done( function () { - parentContainer = section.container.find( 'ul:first' ); + parentContainer = ( section.contentContainer.is( 'ul' ) ) ? section.contentContainer : section.contentContainer.find( 'ul:first' ); if ( ! control.container.parent().is( parentContainer ) ) { parentContainer.append( control.container ); control.renderContent(); @@ -1639,9 +1984,28 @@ /** * Triggered when the control's markup has been injected into the DOM. * - * @abstract + * @returns {void} */ - ready: function() {}, + ready: function() { + var control = this, newItem; + if ( 'dropdown-pages' === control.params.type && control.params.allow_addition ) { + newItem = control.container.find( '.new-content-item' ); + newItem.hide(); // Hide in JS to preserve flex display when showing. + control.container.on( 'click', '.add-new-toggle', function( e ) { + $( e.currentTarget ).slideUp( 180 ); + newItem.slideDown( 180 ); + newItem.find( '.create-item-input' ).focus(); + }); + control.container.on( 'click', '.add-content', function() { + control.addNewPage(); + }); + control.container.on( 'keyup', '.create-item-input', function( e ) { + if ( 13 === e.which ) { // Enter + control.addNewPage(); + } + }); + } + }, /** * Get the element inside of a control's container that contains the validation error message. @@ -1859,6 +2223,73 @@ control.container.html( template( control.params ) ); } } + }, + + /** + * Add a new page to a dropdown-pages control reusing menus code for this. + * + * @since 4.7.0 + * @access private + * @returns {void} + */ + addNewPage: function () { + var control = this, promise, toggle, container, input, title, select; + + if ( 'dropdown-pages' !== control.params.type || ! control.params.allow_addition || ! api.Menus ) { + return; + } + + toggle = control.container.find( '.add-new-toggle' ); + container = control.container.find( '.new-content-item' ); + input = control.container.find( '.create-item-input' ); + title = input.val(); + select = control.container.find( 'select' ); + + if ( ! title ) { + input.addClass( 'invalid' ); + return; + } + + input.removeClass( 'invalid' ); + input.attr( 'disabled', 'disabled' ); + + // The menus functions add the page, publish when appropriate, and also add the new page to the dropdown-pages controls. + promise = api.Menus.insertAutoDraftPost( { + post_title: title, + post_type: 'page' + } ); + promise.done( function( data ) { + var availableItem, $content, itemTemplate; + + // Prepare the new page as an available menu item. + // See api.Menus.submitNew(). + availableItem = new api.Menus.AvailableItemModel( { + 'id': 'post-' + data.post_id, // Used for available menu item Backbone models. + 'title': title, + 'type': 'page', + 'type_label': api.Menus.data.l10n.page_label, + 'object': 'post_type', + 'object_id': data.post_id, + 'url': data.url + } ); + + // Add the new item to the list of available menu items. + api.Menus.availableMenuItemsPanel.collection.add( availableItem ); + $content = $( '#available-menu-items-post_type-page' ).find( '.available-menu-items-list' ); + itemTemplate = wp.template( 'available-menu-item' ); + $content.prepend( itemTemplate( availableItem.attributes ) ); + + // Focus the select control. + select.focus(); + control.setting.set( String( data.post_id ) ); // Triggers a preview refresh and updates the setting. + + // Reset the create page form. + container.slideUp( 180 ); + toggle.slideDown( 180 ); + } ); + promise.always( function() { + input.val( '' ).removeAttr( 'disabled' ); + } ); } }); @@ -1872,21 +2303,57 @@ api.ColorControl = api.Control.extend({ ready: function() { var control = this, - picker = this.container.find('.color-picker-hex'); + isHueSlider = this.params.mode === 'hue', + updating = false, + picker; - picker.val( control.setting() ).wpColorPicker({ - change: function() { - control.setting.set( picker.wpColorPicker('color') ); - }, - clear: function() { - control.setting.set( '' ); + if ( isHueSlider ) { + picker = this.container.find( '.color-picker-hue' ); + picker.val( control.setting() ).wpColorPicker({ + change: function( event, ui ) { + updating = true; + control.setting( ui.color.h() ); + updating = false; + } + }); + } else { + picker = this.container.find( '.color-picker-hex' ); + picker.val( control.setting() ).wpColorPicker({ + change: function() { + updating = true; + control.setting.set( picker.wpColorPicker( 'color' ) ); + updating = false; + }, + clear: function() { + updating = true; + control.setting.set( '' ); + updating = false; + } + }); + } + + control.setting.bind( function ( value ) { + // Bail if the update came from the control itself. + if ( updating ) { + return; } - }); - - this.setting.bind( function ( value ) { picker.val( value ); picker.wpColorPicker( 'color', value ); - }); + } ); + + // Collapse color picker when hitting Esc instead of collapsing the current section. + control.container.on( 'keydown', function( event ) { + var pickerContainer; + if ( 27 !== event.which ) { // Esc. + return; + } + pickerContainer = control.container.find( '.wp-picker-container' ); + if ( pickerContainer.hasClass( 'wp-picker-active' ) ) { + picker.wpColorPicker( 'close' ); + control.container.find( '.wp-color-result' ).focus(); + event.stopPropagation(); // Prevent section from being collapsed. + } + } ); } }); @@ -2166,12 +2633,53 @@ wp.ajax.post( 'custom-background-add', { nonce: _wpCustomizeBackground.nonces.add, wp_customize: 'on', - theme: api.settings.theme.stylesheet, + customize_theme: api.settings.theme.stylesheet, attachment_id: this.params.attachment.id } ); } }); + /** + * A control for positioning a background image. + * + * @since 4.7.0 + * + * @class + * @augments wp.customize.Control + * @augments wp.customize.Class + */ + api.BackgroundPositionControl = api.Control.extend( { + + /** + * Set up control UI once embedded in DOM and settings are created. + * + * @since 4.7.0 + * @access public + */ + ready: function() { + var control = this, updateRadios; + + control.container.on( 'change', 'input[name="background-position"]', function() { + var position = $( this ).val().split( ' ' ); + control.settings.x( position[0] ); + control.settings.y( position[1] ); + } ); + + updateRadios = _.debounce( function() { + var x, y, radioInput, inputValue; + x = control.settings.x.get(); + y = control.settings.y.get(); + inputValue = String( x ) + ' ' + String( y ); + radioInput = control.container.find( 'input[name="background-position"][value="' + inputValue + '"]' ); + radioInput.click(); + } ); + control.settings.x.bind( updateRadios ); + control.settings.y.bind( updateRadios ); + + updateRadios(); // Set initial UI. + } + } ); + /** * A control for selecting and cropping an image. * @@ -2456,7 +2964,7 @@ * @param {object} attachment */ setImageFromAttachment: function( attachment ) { - var sizes = [ 'site_icon-32', 'thumbnail', 'full' ], + var sizes = [ 'site_icon-32', 'thumbnail', 'full' ], link, icon; _.each( sizes, function( size ) { @@ -2470,8 +2978,13 @@ // Set the Customizer setting; the callback takes care of rendering. this.setting( attachment.id ); + if ( ! icon ) { + return; + } + // Update the icon in-browser. - $( 'link[sizes="32x32"]' ).attr( 'href', icon.url ); + link = $( 'link[rel="icon"][sizes="32x32"]' ); + link.attr( 'href', icon.url ); }, /** @@ -2488,7 +3001,7 @@ this.params.attachment = {}; this.setting( '' ); this.renderContent(); // Not bound to setting change when emptying. - $( 'link[rel="icon"]' ).attr( 'href', '' ); + $( 'link[rel="icon"][sizes="32x32"]' ).attr( 'href', '/favicon.ico' ); // Set to default. } }); @@ -2531,7 +3044,7 @@ // Ensure custom-header-crop Ajax requests bootstrap the Customizer to activate the previewed theme. wp.media.controller.Cropper.prototype.defaults.doCropArgs.wp_customize = 'on'; - wp.media.controller.Cropper.prototype.defaults.doCropArgs.theme = api.settings.theme.stylesheet; + wp.media.controller.Cropper.prototype.defaults.doCropArgs.customize_theme = api.settings.theme.stylesheet; }, /** @@ -2822,11 +3335,7 @@ return; } - var previewUrl = $( this ).data( 'previewUrl' ); - - $( '.wp-full-overlay' ).addClass( 'customize-loading' ); - - window.parent.location = previewUrl; + api.section( control.section() ).loadThemePreview( control.params.theme.id ); }); control.container.on( 'click keydown', '.theme-actions .theme-details', function( event ) { @@ -2887,13 +3396,12 @@ * @mixes wp.customize.Events */ api.PreviewFrame = api.Messenger.extend({ - sensitivity: 2000, + sensitivity: null, // Will get set to api.settings.timeouts.previewFrameSensitivity. /** * Initialize the PreviewFrame. * * @param {object} params.container - * @param {object} params.signature * @param {object} params.previewUrl * @param {object} params.query * @param {object} options @@ -2908,7 +3416,6 @@ deferred.promise( this ); this.container = params.container; - this.signature = params.signature; $.extend( params, { channel: api.PreviewFrame.uuid() }); @@ -2928,129 +3435,118 @@ * the request. */ run: function( deferred ) { - var self = this, + var previewFrame = this, loaded = false, - ready = false; + ready = false, + readyData = null, + hasPendingChangesetUpdate = '{}' !== previewFrame.query.customized, + urlParser, + params, + form; - if ( this._ready ) { - this.unbind( 'ready', this._ready ); + if ( previewFrame._ready ) { + previewFrame.unbind( 'ready', previewFrame._ready ); } - this._ready = function() { + previewFrame._ready = function( data ) { ready = true; - - if ( loaded ) { - deferred.resolveWith( self ); - } - }; - - this.bind( 'ready', this._ready ); - - this.bind( 'ready', function ( data ) { - - this.container.addClass( 'iframe-ready' ); - + readyData = data; + previewFrame.container.addClass( 'iframe-ready' ); if ( ! data ) { return; } - /* - * Walk over all panels, sections, and controls and set their - * respective active states to true if the preview explicitly - * indicates as such. - */ - var constructs = { - panel: data.activePanels, - section: data.activeSections, - control: data.activeControls - }; - _( constructs ).each( function ( activeConstructs, type ) { - api[ type ].each( function ( construct, id ) { - var active = !! ( activeConstructs && activeConstructs[ id ] ); - if ( active ) { - construct.activate(); - } else { - construct.deactivate(); - } - } ); + if ( loaded ) { + deferred.resolveWith( previewFrame, [ data ] ); + } + }; + + previewFrame.bind( 'ready', previewFrame._ready ); + + urlParser = document.createElement( 'a' ); + urlParser.href = previewFrame.previewUrl(); + + params = _.extend( + api.utils.parseQueryString( urlParser.search.substr( 1 ) ), + { + customize_changeset_uuid: previewFrame.query.customize_changeset_uuid, + customize_theme: previewFrame.query.customize_theme, + customize_messenger_channel: previewFrame.query.customize_messenger_channel + } + ); + + urlParser.search = $.param( params ); + previewFrame.iframe = $( ''; echo '
    '; + + wp_localize_script( 'updates', '_wpUpdatesItemCounts', array( + 'totals' => wp_get_update_data(), + ) ); + include(ABSPATH . 'wp-admin/admin-footer.php'); } elseif ( 'do-theme-upgrade' == $action ) { @@ -700,6 +718,11 @@ if ( 'upgrade-core' == $action ) {
    wp_get_update_data(), + ) ); + include(ABSPATH . 'wp-admin/admin-footer.php'); } elseif ( 'do-translation-upgrade' == $action ) { @@ -720,6 +743,10 @@ if ( 'upgrade-core' == $action ) { $upgrader = new Language_Pack_Upgrader( new Language_Pack_Upgrader_Skin( compact( 'url', 'nonce', 'title', 'context' ) ) ); $result = $upgrader->bulk_upgrade(); + wp_localize_script( 'updates', '_wpUpdatesItemCounts', array( + 'totals' => wp_get_update_data(), + ) ); + require_once( ABSPATH . 'wp-admin/admin-footer.php' ); } else { diff --git a/wp/wp-admin/upload.php b/wp/wp-admin/upload.php index b9495ac0..80e73b4e 100644 --- a/wp/wp-admin/upload.php +++ b/wp/wp-admin/upload.php @@ -63,8 +63,8 @@ if ( 'grid' === $mode ) { get_current_screen()->set_help_sidebar( '

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

    ' . - '

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

    ' . - '

    ' . __( 'Support Forums' ) . '

    ' + '

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

    ' . + '

    ' . __( 'Support Forums' ) . '

    ' ); $title = __('Media Library'); @@ -163,6 +163,9 @@ if ( $doaction ) { } $location = add_query_arg( 'deleted', count( $post_ids ), $location ); break; + default: + /** This action is documented in wp-admin/edit-comments.php */ + $location = apply_filters( 'handle_bulk_actions-' . get_current_screen()->id, $location, $doaction, $post_ids ); } wp_redirect( $location ); @@ -204,8 +207,8 @@ get_current_screen()->add_help_tab( array( get_current_screen()->set_help_sidebar( '

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

    ' . - '

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

    ' . - '

    ' . __( 'Support Forums' ) . '

    ' + '

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

    ' . + '

    ' . __( 'Support Forums' ) . '

    ' ); get_current_screen()->set_screen_reader_content( array( diff --git a/wp/wp-admin/user-edit.php b/wp/wp-admin/user-edit.php index aa6ed7f5..2222ae26 100644 --- a/wp/wp-admin/user-edit.php +++ b/wp/wp-admin/user-edit.php @@ -38,6 +38,7 @@ else $profile_help = '

    ' . __('Your profile contains information about you (your “account”) as well as some personal options related to using WordPress.') . '

    ' . '

    ' . __('You can change your password, turn on keyboard shortcuts, change the color scheme of your WordPress administration screens, and turn off the WYSIWYG (Visual) editor, among other things. You can hide the Toolbar (formerly called the Admin Bar) from the front end of your site, however it cannot be disabled on the admin screens.') . '

    ' . + '

    ' . __( 'You can select the language you wish to use while using the WordPress administration screen without affecting the language site visitors see.' ) . '

    ' . '

    ' . __('Your username cannot be changed, but you can use other fields to enter your real name or a nickname, and change which name to display on your posts.') . '

    ' . '

    ' . __( 'You can log out of other devices, such as your phone or a public computer, by clicking the Log Out Everywhere Else button.' ) . '

    ' . '

    ' . __('Required fields are indicated; the rest are optional. Profile information will only be displayed if your theme is set up to do so.') . '

    ' . @@ -51,8 +52,8 @@ get_current_screen()->add_help_tab( array( get_current_screen()->set_help_sidebar( '

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

    ' . - '

    ' . __('Documentation on User Profiles') . '

    ' . - '

    ' . __('Support Forums') . '

    ' + '

    ' . __('Documentation on User Profiles') . '

    ' . + '

    ' . __('Support Forums') . '

    ' ); $wp_http_referer = remove_query_arg( array( 'update', 'delete_count', 'user_id' ), $wp_http_referer ); @@ -269,6 +270,40 @@ if ( !( IS_PROFILE_PAGE && !$user_can_edit ) ) : ?> + + + + + + + + + locale; + + if ( 'en_US' === $user_locale ) { + $user_locale = ''; + } elseif ( '' === $user_locale || ! in_array( $user_locale, $languages, true ) ) { + $user_locale = 'site-default'; + } + + wp_dropdown_languages( array( + 'name' => 'locale', + 'id' => 'locale', + 'selected' => $user_locale, + 'languages' => $languages, + 'show_available_translations' => false, + 'show_option_site_default' => true + ) ); + ?> + + + +

    @@ -503,16 +540,16 @@ if ( $show_password_fields = apply_filters( 'show_password_fields', true, $profi - +
    - - @@ -542,7 +579,7 @@ if ( IS_PROFILE_PAGE && count( $sessions->get_all() ) === 1 ) : ?> -
    +

    @@ -552,7 +589,7 @@ if ( IS_PROFILE_PAGE && count( $sessions->get_all() ) === 1 ) : ?> -
    +

    @@ -562,7 +599,7 @@ if ( IS_PROFILE_PAGE && count( $sessions->get_all() ) === 1 ) : ?> -

    +

    'add'), 'user-new.php' ); } } @@ -203,8 +210,8 @@ get_current_screen()->add_help_tab( array( get_current_screen()->set_help_sidebar( '

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

    ' . - '

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

    ' . - '

    ' . __('Support Forums') . '

    ' + '

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

    ' . + '

    ' . __('Support Forums') . '

    ' ); wp_enqueue_script('wp-ajax-response'); @@ -270,9 +277,9 @@ if ( isset($_GET['update']) ) {

    @@ -341,8 +348,11 @@ if ( is_multisite() ) { - - + + + + + @@ -421,17 +431,17 @@ $new_user_ignore_pass = $creating && isset( $_POST['noconfirmation'] ) ? wp_unsl - +
    - - @@ -455,7 +465,10 @@ $new_user_ignore_pass = $creating && isset( $_POST['noconfirmation'] ) ? wp_unsl - + + /> + + @@ -471,8 +484,11 @@ $new_user_ignore_pass = $creating && isset( $_POST['noconfirmation'] ) ? wp_unsl - - + + + /> + + diff --git a/wp/wp-admin/users.php b/wp/wp-admin/users.php index 194ced94..24367647 100644 --- a/wp/wp-admin/users.php +++ b/wp/wp-admin/users.php @@ -13,7 +13,7 @@ require_once( dirname( __FILE__ ) . '/admin.php' ); if ( ! current_user_can( 'list_users' ) ) { wp_die( '

    ' . __( 'Cheatin’ uh?' ) . '

    ' . - '

    ' . __( 'Sorry, you are not allowed to browse users.' ) . '

    ', + '

    ' . __( 'Sorry, you are not allowed to list users.' ) . '

    ', 403 ); } @@ -64,9 +64,9 @@ unset( $help ); get_current_screen()->set_help_sidebar( '

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

    ' . - '

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

    ' . - '

    ' . __('Descriptions of Roles and Capabilities') . '

    ' . - '

    ' . __('Support Forums') . '

    ' + '

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

    ' . + '

    ' . __('Descriptions of Roles and Capabilities') . '

    ' . + '

    ' . __('Support Forums') . '

    ' ); get_current_screen()->set_screen_reader_content( array( @@ -94,7 +94,7 @@ case 'promote': check_admin_referer('bulk-users'); if ( ! current_user_can( 'promote_users' ) ) - wp_die( __( 'You can’t edit that user.' ) ); + wp_die( __( 'Sorry, you are not allowed to edit this user.' ) ); if ( empty($_REQUEST['users']) ) { wp_redirect($redirect); @@ -110,7 +110,7 @@ case 'promote': } if ( ! $role || empty( $editable_roles[ $role ] ) ) { - wp_die( __( 'You can’t give users that role.' ) ); + wp_die( __( 'Sorry, you are not allowed to give users that role.' ) ); } $userids = $_REQUEST['users']; @@ -119,7 +119,7 @@ case 'promote': $id = (int) $id; if ( ! current_user_can('promote_user', $id) ) - wp_die(__('You can’t edit that user.')); + wp_die(__('Sorry, you are not allowed to edit this user.')); // The new role of the current user must also have the promote_users cap or be a multisite super admin if ( $id == $current_user->ID && ! $wp_roles->role_objects[ $role ]->has_cap('promote_users') && ! ( is_multisite() && is_super_admin() ) ) { @@ -164,14 +164,14 @@ case 'dodelete': } if ( ! current_user_can( 'delete_users' ) ) - wp_die(__('You can’t delete users.')); + wp_die(__('Sorry, you are not allowed to delete users.')); $update = 'del'; $delete_count = 0; foreach ( $userids as $id ) { if ( ! current_user_can( 'delete_user', $id ) ) - wp_die(__( 'You can’t delete that user.' ) ); + wp_die(__( 'Sorry, you are not allowed to delete that user.' ) ); if ( $id == $current_user->ID ) { $update = 'err_admin_del'; @@ -204,7 +204,7 @@ case 'delete': } if ( ! current_user_can( 'delete_users' ) ) - $errors = new WP_Error( 'edit_users', __( 'You can’t delete users.' ) ); + $errors = new WP_Error( 'edit_users', __( 'Sorry, you are not allowed to delete users.' ) ); if ( empty($_REQUEST['users']) ) $userids = array( intval( $_REQUEST['user'] ) ); @@ -314,7 +314,7 @@ case 'doremove': } if ( ! current_user_can( 'remove_users' ) ) - wp_die( __( 'You can’t remove users.' ) ); + wp_die( __( 'Sorry, you are not allowed to remove users.' ) ); $userids = $_REQUEST['users']; @@ -349,7 +349,7 @@ case 'remove': } if ( !current_user_can('remove_users') ) - $error = new WP_Error('edit_users', __('You can’t remove users.')); + $error = new WP_Error('edit_users', __('Sorry, you are not allowed to remove users.')); if ( empty($_REQUEST['users']) ) $userids = array(intval($_REQUEST['user'])); @@ -382,7 +382,7 @@ case 'remove': echo "
  • " . sprintf(__('ID #%1$s: %2$s The current user will not be removed.'), $id, $user->user_login) . "
  • \n"; } elseif ( !current_user_can('remove_user', $id) ) { /* translators: 1: user id, 2: user login */ - echo "
  • " . sprintf(__('ID #%1$s: %2$s You don’t have permission to remove this user.'), $id, $user->user_login) . "
  • \n"; + echo "
  • " . sprintf(__('ID #%1$s: %2$s Sorry, you are not allowed to remove this user.'), $id, $user->user_login) . "
  • \n"; } else { /* translators: 1: user id, 2: user login */ echo "
  • " . sprintf(__('ID #%1$s: %2$s'), $id, $user->user_login) . "
  • \n"; @@ -410,6 +410,17 @@ default: exit; } + if ( $wp_list_table->current_action() && ! empty( $_REQUEST['users'] ) ) { + $userids = $_REQUEST['users']; + $sendback = wp_get_referer(); + + /** This action is documented in wp-admin/edit-comments.php */ + $sendback = apply_filters( 'handle_bulk_actions-' . get_current_screen()->id, $sendback, $wp_list_table->current_action(), $userids ); + + wp_safe_redirect( $sendback ); + exit; + } + $wp_list_table->prepare_items(); $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); if ( $pagenum > $total_pages && $total_pages > 0 ) { diff --git a/wp/wp-admin/widgets.php b/wp/wp-admin/widgets.php index a9876b89..e1ae0913 100644 --- a/wp/wp-admin/widgets.php +++ b/wp/wp-admin/widgets.php @@ -71,8 +71,8 @@ get_current_screen()->add_help_tab( array( get_current_screen()->set_help_sidebar( '

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

    ' . - '

    ' . __('Documentation on Widgets') . '

    ' . - '

    ' . __('Support Forums') . '

    ' + '

    ' . __('Documentation on Widgets') . '

    ' . + '

    ' . __('Support Forums') . '

    ' ); if ( ! current_theme_supports( 'widgets' ) ) { @@ -315,9 +315,9 @@ if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) { + submit_button( __( 'Save Widget' ), 'primary alignright', 'savewidget', false ); ?> @@ -500,8 +500,8 @@ foreach ( $theme_sidebars as $sidebar => $registered_sidebar ) {
      - - + +
      diff --git a/wp/wp-comments-post.php b/wp/wp-comments-post.php index 4e9f1fcf..2c421d32 100644 --- a/wp/wp-comments-post.php +++ b/wp/wp-comments-post.php @@ -6,8 +6,13 @@ */ if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) { + $protocol = $_SERVER['SERVER_PROTOCOL']; + if ( ! in_array( $protocol, array( 'HTTP/1.1', 'HTTP/2', 'HTTP/2.0' ) ) ) { + $protocol = 'HTTP/1.0'; + } + header('Allow: POST'); - header('HTTP/1.1 405 Method Not Allowed'); + header("$protocol 405 Method Not Allowed"); header('Content-Type: text/plain'); exit; } diff --git a/wp/wp-content/languages/admin-nb_NO.mo b/wp/wp-content/languages/admin-nb_NO.mo index 36429ac4e8e6b2b461b15dc198df29d137cd6039..f94f47e92f520c9214713f44a6eca133f4696d27 100644 GIT binary patch delta 64127 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

      ' . __( 'Cheatin’ uh?' ) . '

      ' . + '

      ' . __( 'Sorry, you are not allowed to customize this site.' ) . '

      ', + 403 + ); + } + return; } - show_admin_bar( false ); - - if ( ! current_user_can( 'customize' ) ) { - $this->wp_die( -1, __( 'Sorry, you are not allowed to customize this site.' ) ); + if ( ! preg_match( '/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/', $this->_changeset_uuid ) ) { + $this->wp_die( -1, __( 'Invalid changeset UUID' ) ); } - $this->original_stylesheet = get_stylesheet(); + /* + * If unauthenticated then require a valid changeset UUID to load the preview. + * In this way, the UUID serves as a secret key. If the messenger channel is present, + * then send unauthenticated code to prompt re-auth. + */ + if ( ! current_user_can( 'customize' ) && ! $this->changeset_post_id() ) { + $this->wp_die( $this->messenger_channel ? 0 : -1, __( 'Non-existent changeset UUID.' ) ); + } - $this->theme = wp_get_theme( isset( $_REQUEST['theme'] ) ? $_REQUEST['theme'] : null ); + if ( ! headers_sent() ) { + send_origin_headers(); + } + + // Hide the admin bar if we're embedded in the customizer iframe. + if ( $this->messenger_channel ) { + show_admin_bar( false ); + } if ( $this->is_theme_active() ) { // Once the theme is loaded, we'll validate it. @@ -415,6 +523,15 @@ final class WP_Customize_Manager { } } + /* + * Import theme starter content for fresh installs when landing in the customizer. + * Import starter content at after_setup_theme:100 so that any + * add_theme_support( 'starter-content' ) calls will have been made. + */ + if ( get_option( 'fresh_site' ) && 'customize.php' === $pagenow ) { + add_action( 'after_setup_theme', array( $this, 'import_theme_starter_content' ), 100 ); + } + $this->start_previewing_theme(); } @@ -507,6 +624,18 @@ final class WP_Customize_Manager { do_action( 'stop_previewing_theme', $this ); } + /** + * Get the changeset UUID. + * + * @since 4.7.0 + * @access public + * + * @return string UUID. + */ + public function changeset_uuid() { + return $this->_changeset_uuid; + } + /** * Get the theme being customized. * @@ -604,8 +733,23 @@ final class WP_Customize_Manager { */ do_action( 'customize_register', $this ); - if ( $this->is_preview() && ! is_admin() ) + /* + * Note that settings must be previewed here even outside the customizer preview + * and also in the customizer pane itself. This is to enable loading an existing + * changeset into the customizer. Previewing the settings only has to be prevented + * in the case of a customize_save action because then update_option() + * may short-circuit because it will detect that there are no changes to + * make. + */ + if ( ! $this->doing_ajax( 'customize_save' ) ) { + foreach ( $this->settings as $setting ) { + $setting->preview(); + } + } + + if ( $this->is_preview() && ! is_admin() ) { $this->customize_preview_init(); + } } /** @@ -615,43 +759,701 @@ final class WP_Customize_Manager { * Instead, the JS will sniff out the location header. * * @since 3.4.0 + * @deprecated 4.7.0 * - * @param $status + * @param int $status Status. * @return int */ public function wp_redirect_status( $status ) { - if ( $this->is_preview() && ! is_admin() ) + _deprecated_function( __FUNCTION__, '4.7.0' ); + + if ( $this->is_preview() && ! is_admin() ) { return 200; + } return $status; } /** - * Parse the incoming $_POST['customized'] JSON data and store the unsanitized - * settings for subsequent post_value() lookups. + * Find the changeset post ID for a given changeset UUID. * - * @since 4.1.1 + * @since 4.7.0 + * @access public * - * @return array + * @param string $uuid Changeset UUID. + * @return int|null Returns post ID on success and null on failure. */ - public function unsanitized_post_values() { - if ( ! isset( $this->_post_values ) ) { - if ( isset( $_POST['customized'] ) ) { - $this->_post_values = json_decode( wp_unslash( $_POST['customized'] ), true ); + public function find_changeset_post_id( $uuid ) { + $cache_group = 'customize_changeset_post'; + $changeset_post_id = wp_cache_get( $uuid, $cache_group ); + if ( $changeset_post_id && 'customize_changeset' === get_post_type( $changeset_post_id ) ) { + return $changeset_post_id; + } + + $changeset_post_query = new WP_Query( array( + 'post_type' => 'customize_changeset', + 'post_status' => get_post_stati(), + 'name' => $uuid, + 'posts_per_page' => 1, + 'no_found_rows' => true, + 'cache_results' => true, + 'update_post_meta_cache' => false, + 'update_term_meta_cache' => false, + ) ); + if ( ! empty( $changeset_post_query->posts ) ) { + // Note: 'fields'=>'ids' is not being used in order to cache the post object as it will be needed. + $changeset_post_id = $changeset_post_query->posts[0]->ID; + wp_cache_set( $this->_changeset_uuid, $changeset_post_id, $cache_group ); + return $changeset_post_id; + } + + return null; + } + + /** + * Get the changeset post id for the loaded changeset. + * + * @since 4.7.0 + * @access public + * + * @return int|null Post ID on success or null if there is no post yet saved. + */ + public function changeset_post_id() { + if ( ! isset( $this->_changeset_post_id ) ) { + $post_id = $this->find_changeset_post_id( $this->_changeset_uuid ); + if ( ! $post_id ) { + $post_id = false; } - if ( empty( $this->_post_values ) ) { // if not isset or if JSON error - $this->_post_values = array(); + $this->_changeset_post_id = $post_id; + } + if ( false === $this->_changeset_post_id ) { + return null; + } + return $this->_changeset_post_id; + } + + /** + * Get the data stored in a changeset post. + * + * @since 4.7.0 + * @access protected + * + * @param int $post_id Changeset post ID. + * @return array|WP_Error Changeset data or WP_Error on error. + */ + protected function get_changeset_post_data( $post_id ) { + if ( ! $post_id ) { + return new WP_Error( 'empty_post_id' ); + } + $changeset_post = get_post( $post_id ); + if ( ! $changeset_post ) { + return new WP_Error( 'missing_post' ); + } + if ( 'customize_changeset' !== $changeset_post->post_type ) { + return new WP_Error( 'wrong_post_type' ); + } + $changeset_data = json_decode( $changeset_post->post_content, true ); + if ( function_exists( 'json_last_error' ) && json_last_error() ) { + return new WP_Error( 'json_parse_error', '', json_last_error() ); + } + if ( ! is_array( $changeset_data ) ) { + return new WP_Error( 'expected_array' ); + } + return $changeset_data; + } + + /** + * Get changeset data. + * + * @since 4.7.0 + * @access public + * + * @return array Changeset data. + */ + public function changeset_data() { + if ( isset( $this->_changeset_data ) ) { + return $this->_changeset_data; + } + $changeset_post_id = $this->changeset_post_id(); + if ( ! $changeset_post_id ) { + $this->_changeset_data = array(); + } else { + $data = $this->get_changeset_post_data( $changeset_post_id ); + if ( ! is_wp_error( $data ) ) { + $this->_changeset_data = $data; + } else { + $this->_changeset_data = array(); } } - if ( empty( $this->_post_values ) ) { - return array(); - } else { - return $this->_post_values; + return $this->_changeset_data; + } + + /** + * Starter content setting IDs. + * + * @since 4.7.0 + * @access private + * @var array + */ + protected $pending_starter_content_settings_ids = array(); + + /** + * Import theme starter content into the customized state. + * + * @since 4.7.0 + * @access public + * + * @param array $starter_content Starter content. Defaults to `get_theme_starter_content()`. + */ + function import_theme_starter_content( $starter_content = array() ) { + if ( empty( $starter_content ) ) { + $starter_content = get_theme_starter_content(); + } + + $changeset_data = array(); + if ( $this->changeset_post_id() ) { + $changeset_data = $this->get_changeset_post_data( $this->changeset_post_id() ); + } + + $sidebars_widgets = isset( $starter_content['widgets'] ) && ! empty( $this->widgets ) ? $starter_content['widgets'] : array(); + $attachments = isset( $starter_content['attachments'] ) && ! empty( $this->nav_menus ) ? $starter_content['attachments'] : array(); + $posts = isset( $starter_content['posts'] ) && ! empty( $this->nav_menus ) ? $starter_content['posts'] : array(); + $options = isset( $starter_content['options'] ) ? $starter_content['options'] : array(); + $nav_menus = isset( $starter_content['nav_menus'] ) && ! empty( $this->nav_menus ) ? $starter_content['nav_menus'] : array(); + $theme_mods = isset( $starter_content['theme_mods'] ) ? $starter_content['theme_mods'] : array(); + + // Widgets. + $max_widget_numbers = array(); + foreach ( $sidebars_widgets as $sidebar_id => $widgets ) { + $sidebar_widget_ids = array(); + foreach ( $widgets as $widget ) { + list( $id_base, $instance ) = $widget; + + if ( ! isset( $max_widget_numbers[ $id_base ] ) ) { + + // When $settings is an array-like object, get an intrinsic array for use with array_keys(). + $settings = get_option( "widget_{$id_base}", array() ); + if ( $settings instanceof ArrayObject || $settings instanceof ArrayIterator ) { + $settings = $settings->getArrayCopy(); + } + + // Find the max widget number for this type. + $widget_numbers = array_keys( $settings ); + if ( count( $widget_numbers ) > 0 ) { + $widget_numbers[] = 1; + $max_widget_numbers[ $id_base ] = call_user_func_array( 'max', $widget_numbers ); + } else { + $max_widget_numbers[ $id_base ] = 1; + } + } + $max_widget_numbers[ $id_base ] += 1; + + $widget_id = sprintf( '%s-%d', $id_base, $max_widget_numbers[ $id_base ] ); + $setting_id = sprintf( 'widget_%s[%d]', $id_base, $max_widget_numbers[ $id_base ] ); + + $setting_value = $this->widgets->sanitize_widget_js_instance( $instance ); + if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) { + $this->set_post_value( $setting_id, $setting_value ); + $this->pending_starter_content_settings_ids[] = $setting_id; + } + $sidebar_widget_ids[] = $widget_id; + } + + $setting_id = sprintf( 'sidebars_widgets[%s]', $sidebar_id ); + if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) { + $this->set_post_value( $setting_id, $sidebar_widget_ids ); + $this->pending_starter_content_settings_ids[] = $setting_id; + } + } + + $starter_content_auto_draft_post_ids = array(); + if ( ! empty( $changeset_data['nav_menus_created_posts']['value'] ) ) { + $starter_content_auto_draft_post_ids = array_merge( $starter_content_auto_draft_post_ids, $changeset_data['nav_menus_created_posts']['value'] ); + } + + // Make an index of all the posts needed and what their slugs are. + $needed_posts = array(); + $attachments = $this->prepare_starter_content_attachments( $attachments ); + foreach ( $attachments as $attachment ) { + $key = 'attachment:' . $attachment['post_name']; + $needed_posts[ $key ] = true; + } + foreach ( array_keys( $posts ) as $post_symbol ) { + if ( empty( $posts[ $post_symbol ]['post_name'] ) && empty( $posts[ $post_symbol ]['post_title'] ) ) { + unset( $posts[ $post_symbol ] ); + continue; + } + if ( empty( $posts[ $post_symbol ]['post_name'] ) ) { + $posts[ $post_symbol ]['post_name'] = sanitize_title( $posts[ $post_symbol ]['post_title'] ); + } + if ( empty( $posts[ $post_symbol ]['post_type'] ) ) { + $posts[ $post_symbol ]['post_type'] = 'post'; + } + $needed_posts[ $posts[ $post_symbol ]['post_type'] . ':' . $posts[ $post_symbol ]['post_name'] ] = true; + } + $all_post_slugs = array_merge( + wp_list_pluck( $attachments, 'post_name' ), + wp_list_pluck( $posts, 'post_name' ) + ); + + // Re-use auto-draft starter content posts referenced in the current customized state. + $existing_starter_content_posts = array(); + if ( ! empty( $starter_content_auto_draft_post_ids ) ) { + $existing_posts_query = new WP_Query( array( + 'post__in' => $starter_content_auto_draft_post_ids, + 'post_status' => 'auto-draft', + 'post_type' => 'any', + 'posts_per_page' => -1, + ) ); + foreach ( $existing_posts_query->posts as $existing_post ) { + $post_name = $existing_post->post_name; + if ( empty( $post_name ) ) { + $post_name = get_post_meta( $existing_post->ID, '_customize_draft_post_name', true ); + } + $existing_starter_content_posts[ $existing_post->post_type . ':' . $post_name ] = $existing_post; + } + } + + // Re-use non-auto-draft posts. + if ( ! empty( $all_post_slugs ) ) { + $existing_posts_query = new WP_Query( array( + 'post_name__in' => $all_post_slugs, + 'post_status' => array_diff( get_post_stati(), array( 'auto-draft' ) ), + 'post_type' => 'any', + 'posts_per_page' => -1, + ) ); + foreach ( $existing_posts_query->posts as $existing_post ) { + $key = $existing_post->post_type . ':' . $existing_post->post_name; + if ( isset( $needed_posts[ $key ] ) && ! isset( $existing_starter_content_posts[ $key ] ) ) { + $existing_starter_content_posts[ $key ] = $existing_post; + } + } + } + + // Attachments are technically posts but handled differently. + if ( ! empty( $attachments ) ) { + + $attachment_ids = array(); + + foreach ( $attachments as $symbol => $attachment ) { + $file_array = array( + 'name' => $attachment['file_name'], + ); + $file_path = $attachment['file_path']; + $attachment_id = null; + $attached_file = null; + if ( isset( $existing_starter_content_posts[ 'attachment:' . $attachment['post_name'] ] ) ) { + $attachment_post = $existing_starter_content_posts[ 'attachment:' . $attachment['post_name'] ]; + $attachment_id = $attachment_post->ID; + $attached_file = get_attached_file( $attachment_id ); + if ( empty( $attached_file ) || ! file_exists( $attached_file ) ) { + $attachment_id = null; + $attached_file = null; + } elseif ( $this->get_stylesheet() !== get_post_meta( $attachment_post->ID, '_starter_content_theme', true ) ) { + + // Re-generate attachment metadata since it was previously generated for a different theme. + $metadata = wp_generate_attachment_metadata( $attachment_post->ID, $attached_file ); + wp_update_attachment_metadata( $attachment_id, $metadata ); + update_post_meta( $attachment_id, '_starter_content_theme', $this->get_stylesheet() ); + } + } + + // Insert the attachment auto-draft because it doesn't yet exist or the attached file is gone. + if ( ! $attachment_id ) { + + // Copy file to temp location so that original file won't get deleted from theme after sideloading. + $temp_file_name = wp_tempnam( basename( $file_path ) ); + if ( $temp_file_name && copy( $file_path, $temp_file_name ) ) { + $file_array['tmp_name'] = $temp_file_name; + } + if ( empty( $file_array['tmp_name'] ) ) { + continue; + } + + $attachment_post_data = array_merge( + wp_array_slice_assoc( $attachment, array( 'post_title', 'post_content', 'post_excerpt' ) ), + array( + 'post_status' => 'auto-draft', // So attachment will be garbage collected in a week if changeset is never published. + ) + ); + + // In PHP < 5.6 filesize() returns 0 for the temp files unless we clear the file status cache. + // Technically, PHP < 5.6.0 || < 5.5.13 || < 5.4.29 but no need to be so targeted. + // See https://bugs.php.net/bug.php?id=65701 + if ( version_compare( PHP_VERSION, '5.6', '<' ) ) { + clearstatcache(); + } + + $attachment_id = media_handle_sideload( $file_array, 0, null, $attachment_post_data ); + if ( is_wp_error( $attachment_id ) ) { + continue; + } + update_post_meta( $attachment_id, '_starter_content_theme', $this->get_stylesheet() ); + update_post_meta( $attachment_id, '_customize_draft_post_name', $attachment['post_name'] ); + } + + $attachment_ids[ $symbol ] = $attachment_id; + } + $starter_content_auto_draft_post_ids = array_merge( $starter_content_auto_draft_post_ids, array_values( $attachment_ids ) ); + } + + // Posts & pages. + if ( ! empty( $posts ) ) { + foreach ( array_keys( $posts ) as $post_symbol ) { + if ( empty( $posts[ $post_symbol ]['post_type'] ) || empty( $posts[ $post_symbol ]['post_name'] ) ) { + continue; + } + $post_type = $posts[ $post_symbol ]['post_type']; + if ( ! empty( $posts[ $post_symbol ]['post_name'] ) ) { + $post_name = $posts[ $post_symbol ]['post_name']; + } elseif ( ! empty( $posts[ $post_symbol ]['post_title'] ) ) { + $post_name = sanitize_title( $posts[ $post_symbol ]['post_title'] ); + } else { + continue; + } + + // Use existing auto-draft post if one already exists with the same type and name. + if ( isset( $existing_starter_content_posts[ $post_type . ':' . $post_name ] ) ) { + $posts[ $post_symbol ]['ID'] = $existing_starter_content_posts[ $post_type . ':' . $post_name ]->ID; + continue; + } + + // Translate the featured image symbol. + if ( ! empty( $posts[ $post_symbol ]['thumbnail'] ) + && preg_match( '/^{{(?P.+)}}$/', $posts[ $post_symbol ]['thumbnail'], $matches ) + && isset( $attachment_ids[ $matches['symbol'] ] ) ) { + $posts[ $post_symbol ]['meta_input']['_thumbnail_id'] = $attachment_ids[ $matches['symbol'] ]; + } + + if ( ! empty( $posts[ $post_symbol ]['template'] ) ) { + $posts[ $post_symbol ]['meta_input']['_wp_page_template'] = $posts[ $post_symbol ]['template']; + } + + $r = $this->nav_menus->insert_auto_draft_post( $posts[ $post_symbol ] ); + if ( $r instanceof WP_Post ) { + $posts[ $post_symbol ]['ID'] = $r->ID; + } + } + + $starter_content_auto_draft_post_ids = array_merge( $starter_content_auto_draft_post_ids, wp_list_pluck( $posts, 'ID' ) ); + } + + // The nav_menus_created_posts setting is why nav_menus component is dependency for adding posts. + if ( ! empty( $this->nav_menus ) && ! empty( $starter_content_auto_draft_post_ids ) ) { + $setting_id = 'nav_menus_created_posts'; + $this->set_post_value( $setting_id, array_unique( array_values( $starter_content_auto_draft_post_ids ) ) ); + $this->pending_starter_content_settings_ids[] = $setting_id; + } + + // Nav menus. + $placeholder_id = -1; + $reused_nav_menu_setting_ids = array(); + foreach ( $nav_menus as $nav_menu_location => $nav_menu ) { + + $nav_menu_term_id = null; + $nav_menu_setting_id = null; + $matches = array(); + + // Look for an existing placeholder menu with starter content to re-use. + foreach ( $changeset_data as $setting_id => $setting_params ) { + $can_reuse = ( + ! empty( $setting_params['starter_content'] ) + && + ! in_array( $setting_id, $reused_nav_menu_setting_ids, true ) + && + preg_match( '#^nav_menu\[(?P-?\d+)\]$#', $setting_id, $matches ) + ); + if ( $can_reuse ) { + $nav_menu_term_id = intval( $matches['nav_menu_id'] ); + $nav_menu_setting_id = $setting_id; + $reused_nav_menu_setting_ids[] = $setting_id; + break; + } + } + + if ( ! $nav_menu_term_id ) { + while ( isset( $changeset_data[ sprintf( 'nav_menu[%d]', $placeholder_id ) ] ) ) { + $placeholder_id--; + } + $nav_menu_term_id = $placeholder_id; + $nav_menu_setting_id = sprintf( 'nav_menu[%d]', $placeholder_id ); + } + + $this->set_post_value( $nav_menu_setting_id, array( + 'name' => isset( $nav_menu['name'] ) ? $nav_menu['name'] : $nav_menu_location, + ) ); + $this->pending_starter_content_settings_ids[] = $nav_menu_setting_id; + + // @todo Add support for menu_item_parent. + $position = 0; + foreach ( $nav_menu['items'] as $nav_menu_item ) { + $nav_menu_item_setting_id = sprintf( 'nav_menu_item[%d]', $placeholder_id-- ); + if ( ! isset( $nav_menu_item['position'] ) ) { + $nav_menu_item['position'] = $position++; + } + $nav_menu_item['nav_menu_term_id'] = $nav_menu_term_id; + + if ( isset( $nav_menu_item['object_id'] ) ) { + if ( 'post_type' === $nav_menu_item['type'] && preg_match( '/^{{(?P.+)}}$/', $nav_menu_item['object_id'], $matches ) && isset( $posts[ $matches['symbol'] ] ) ) { + $nav_menu_item['object_id'] = $posts[ $matches['symbol'] ]['ID']; + if ( empty( $nav_menu_item['title'] ) ) { + $original_object = get_post( $nav_menu_item['object_id'] ); + $nav_menu_item['title'] = $original_object->post_title; + } + } else { + continue; + } + } else { + $nav_menu_item['object_id'] = 0; + } + + if ( empty( $changeset_data[ $nav_menu_item_setting_id ] ) || ! empty( $changeset_data[ $nav_menu_item_setting_id ]['starter_content'] ) ) { + $this->set_post_value( $nav_menu_item_setting_id, $nav_menu_item ); + $this->pending_starter_content_settings_ids[] = $nav_menu_item_setting_id; + } + } + + $setting_id = sprintf( 'nav_menu_locations[%s]', $nav_menu_location ); + if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) { + $this->set_post_value( $setting_id, $nav_menu_term_id ); + $this->pending_starter_content_settings_ids[] = $setting_id; + } + } + + // Options. + foreach ( $options as $name => $value ) { + if ( preg_match( '/^{{(?P.+)}}$/', $value, $matches ) ) { + if ( isset( $posts[ $matches['symbol'] ] ) ) { + $value = $posts[ $matches['symbol'] ]['ID']; + } elseif ( isset( $attachment_ids[ $matches['symbol'] ] ) ) { + $value = $attachment_ids[ $matches['symbol'] ]; + } else { + continue; + } + } + + if ( empty( $changeset_data[ $name ] ) || ! empty( $changeset_data[ $name ]['starter_content'] ) ) { + $this->set_post_value( $name, $value ); + $this->pending_starter_content_settings_ids[] = $name; + } + } + + // Theme mods. + foreach ( $theme_mods as $name => $value ) { + if ( preg_match( '/^{{(?P.+)}}$/', $value, $matches ) ) { + if ( isset( $posts[ $matches['symbol'] ] ) ) { + $value = $posts[ $matches['symbol'] ]['ID']; + } elseif ( isset( $attachment_ids[ $matches['symbol'] ] ) ) { + $value = $attachment_ids[ $matches['symbol'] ]; + } else { + continue; + } + } + + // Handle header image as special case since setting has a legacy format. + if ( 'header_image' === $name ) { + $name = 'header_image_data'; + $metadata = wp_get_attachment_metadata( $value ); + if ( empty( $metadata ) ) { + continue; + } + $value = array( + 'attachment_id' => $value, + 'url' => wp_get_attachment_url( $value ), + 'height' => $metadata['height'], + 'width' => $metadata['width'], + ); + } elseif ( 'background_image' === $name ) { + $value = wp_get_attachment_url( $value ); + } + + if ( empty( $changeset_data[ $name ] ) || ! empty( $changeset_data[ $name ]['starter_content'] ) ) { + $this->set_post_value( $name, $value ); + $this->pending_starter_content_settings_ids[] = $name; + } + } + + if ( ! empty( $this->pending_starter_content_settings_ids ) ) { + if ( did_action( 'customize_register' ) ) { + $this->_save_starter_content_changeset(); + } else { + add_action( 'customize_register', array( $this, '_save_starter_content_changeset' ), 1000 ); + } } } /** - * Returns the sanitized value for a given setting from the request's POST data. + * Prepare starter content attachments. + * + * Ensure that the attachments are valid and that they have slugs and file name/path. + * + * @since 4.7.0 + * @access private + * + * @param array $attachments Attachments. + * @return array Prepared attachments. + */ + protected function prepare_starter_content_attachments( $attachments ) { + $prepared_attachments = array(); + if ( empty( $attachments ) ) { + return $prepared_attachments; + } + + // Such is The WordPress Way. + require_once( ABSPATH . 'wp-admin/includes/file.php' ); + require_once( ABSPATH . 'wp-admin/includes/media.php' ); + require_once( ABSPATH . 'wp-admin/includes/image.php' ); + + foreach ( $attachments as $symbol => $attachment ) { + + // A file is required and URLs to files are not currently allowed. + if ( empty( $attachment['file'] ) || preg_match( '#^https?://$#', $attachment['file'] ) ) { + continue; + } + + $file_path = null; + if ( file_exists( $attachment['file'] ) ) { + $file_path = $attachment['file']; // Could be absolute path to file in plugin. + } elseif ( is_child_theme() && file_exists( get_stylesheet_directory() . '/' . $attachment['file'] ) ) { + $file_path = get_stylesheet_directory() . '/' . $attachment['file']; + } elseif ( file_exists( get_template_directory() . '/' . $attachment['file'] ) ) { + $file_path = get_template_directory() . '/' . $attachment['file']; + } else { + continue; + } + $file_name = basename( $attachment['file'] ); + + // Skip file types that are not recognized. + $checked_filetype = wp_check_filetype( $file_name ); + if ( empty( $checked_filetype['type'] ) ) { + continue; + } + + // Ensure post_name is set since not automatically derived from post_title for new auto-draft posts. + if ( empty( $attachment['post_name'] ) ) { + if ( ! empty( $attachment['post_title'] ) ) { + $attachment['post_name'] = sanitize_title( $attachment['post_title'] ); + } else { + $attachment['post_name'] = sanitize_title( preg_replace( '/\.\w+$/', '', $file_name ) ); + } + } + + $attachment['file_name'] = $file_name; + $attachment['file_path'] = $file_path; + $prepared_attachments[ $symbol ] = $attachment; + } + return $prepared_attachments; + } + + /** + * Save starter content changeset. + * + * @since 4.7.0 + * @access private + */ + public function _save_starter_content_changeset() { + + if ( empty( $this->pending_starter_content_settings_ids ) ) { + return; + } + + $this->save_changeset_post( array( + 'data' => array_fill_keys( $this->pending_starter_content_settings_ids, array( 'starter_content' => true ) ), + 'starter_content' => true, + ) ); + + $this->pending_starter_content_settings_ids = array(); + } + + /** + * Get dirty pre-sanitized setting values in the current customized state. + * + * The returned array consists of a merge of three sources: + * 1. If the theme is not currently active, then the base array is any stashed + * theme mods that were modified previously but never published. + * 2. The values from the current changeset, if it exists. + * 3. If the user can customize, the values parsed from the incoming + * `$_POST['customized']` JSON data. + * 4. Any programmatically-set post values via `WP_Customize_Manager::set_post_value()`. + * + * The name "unsanitized_post_values" is a carry-over from when the customized + * state was exclusively sourced from `$_POST['customized']`. Nevertheless, + * the value returned will come from the current changeset post and from the + * incoming post data. + * + * @since 4.1.1 + * @since 4.7.0 Added $args param and merging with changeset values and stashed theme mods. + * + * @param array $args { + * Args. + * + * @type bool $exclude_changeset Whether the changeset values should also be excluded. Defaults to false. + * @type bool $exclude_post_data Whether the post input values should also be excluded. Defaults to false when lacking the customize capability. + * } + * @return array + */ + public function unsanitized_post_values( $args = array() ) { + $args = array_merge( + array( + 'exclude_changeset' => false, + 'exclude_post_data' => ! current_user_can( 'customize' ), + ), + $args + ); + + $values = array(); + + // Let default values be from the stashed theme mods if doing a theme switch and if no changeset is present. + if ( ! $this->is_theme_active() ) { + $stashed_theme_mods = get_option( 'customize_stashed_theme_mods' ); + $stylesheet = $this->get_stylesheet(); + if ( isset( $stashed_theme_mods[ $stylesheet ] ) ) { + $values = array_merge( $values, wp_list_pluck( $stashed_theme_mods[ $stylesheet ], 'value' ) ); + } + } + + if ( ! $args['exclude_changeset'] ) { + foreach ( $this->changeset_data() as $setting_id => $setting_params ) { + if ( ! array_key_exists( 'value', $setting_params ) ) { + continue; + } + if ( isset( $setting_params['type'] ) && 'theme_mod' === $setting_params['type'] ) { + + // Ensure that theme mods values are only used if they were saved under the current theme. + $namespace_pattern = '/^(?P.+?)::(?P.+)$/'; + if ( preg_match( $namespace_pattern, $setting_id, $matches ) && $this->get_stylesheet() === $matches['stylesheet'] ) { + $values[ $matches['setting_id'] ] = $setting_params['value']; + } + } else { + $values[ $setting_id ] = $setting_params['value']; + } + } + } + + if ( ! $args['exclude_post_data'] ) { + if ( ! isset( $this->_post_values ) ) { + if ( isset( $_POST['customized'] ) ) { + $post_values = json_decode( wp_unslash( $_POST['customized'] ), true ); + } else { + $post_values = array(); + } + if ( is_array( $post_values ) ) { + $this->_post_values = $post_values; + } else { + $this->_post_values = array(); + } + } + $values = array_merge( $values, $this->_post_values ); + } + return $values; + } + + /** + * Returns the sanitized value for a given setting from the current customized state. + * + * The name "post_value" is a carry-over from when the customized state was exclusively + * sourced from `$_POST['customized']`. Nevertheless, the value returned will come + * from the current changeset post and from the incoming post data. * * @since 3.4.0 * @since 4.1.1 Introduced the `$default` parameter. @@ -685,7 +1487,10 @@ final class WP_Customize_Manager { } /** - * Override a setting's (unsanitized) value as found in any incoming $_POST['customized']. + * Override a setting's value in the current customized state. + * + * The name "post_value" is a carry-over from when the customized state was + * exclusively sourced from `$_POST['customized']`. * * @since 4.2.0 * @access public @@ -694,7 +1499,7 @@ final class WP_Customize_Manager { * @param mixed $value Post value. */ public function set_post_value( $setting_id, $value ) { - $this->unsanitized_post_values(); + $this->unsanitized_post_values(); // Populate _post_values from $_POST['customized']. $this->_post_values[ $setting_id ] = $value; /** @@ -734,22 +1539,41 @@ final class WP_Customize_Manager { * @since 3.4.0 */ public function customize_preview_init() { - $this->nonce_tick = check_ajax_referer( 'preview-customize_' . $this->get_stylesheet(), 'nonce' ); + + /* + * Now that Customizer previews are loaded into iframes via GET requests + * and natural URLs with transaction UUIDs added, we need to ensure that + * the responses are never cached by proxies. In practice, this will not + * be needed if the user is logged-in anyway. But if anonymous access is + * allowed then the auth cookies would not be sent and WordPress would + * not send no-cache headers by default. + */ + if ( ! headers_sent() ) { + nocache_headers(); + header( 'X-Robots: noindex, nofollow, noarchive' ); + } + add_action( 'wp_head', 'wp_no_robots' ); + add_filter( 'wp_headers', array( $this, 'filter_iframe_security_headers' ) ); + + /* + * If preview is being served inside the customizer preview iframe, and + * if the user doesn't have customize capability, then it is assumed + * that the user's session has expired and they need to re-authenticate. + */ + if ( $this->messenger_channel && ! current_user_can( 'customize' ) ) { + $this->wp_die( -1, __( 'Unauthorized. You may remove the customize_messenger_channel param to preview as frontend.' ) ); + return; + } $this->prepare_controls(); - wp_enqueue_script( 'customize-preview' ); - add_action( 'wp', array( $this, 'customize_preview_override_404_status' ) ); - add_action( 'wp_head', array( $this, 'customize_preview_base' ) ); - add_action( 'wp_head', array( $this, 'customize_preview_html5' ) ); - add_action( 'wp_head', array( $this, 'customize_preview_loading_style' ) ); - add_action( 'wp_footer', array( $this, 'customize_preview_settings' ), 20 ); - add_action( 'shutdown', array( $this, 'customize_preview_signature' ), 1000 ); - add_filter( 'wp_die_handler', array( $this, 'remove_preview_signature' ) ); + add_filter( 'wp_redirect', array( $this, 'add_state_query_params' ) ); - foreach ( $this->settings as $setting ) { - $setting->preview(); - } + wp_enqueue_script( 'customize-preview' ); + add_action( 'wp_head', array( $this, 'customize_preview_loading_style' ) ); + add_action( 'wp_head', array( $this, 'remove_frameless_preview_messenger_channel' ) ); + add_action( 'wp_footer', array( $this, 'customize_preview_settings' ), 20 ); + add_filter( 'get_edit_post_link', '__return_empty_string' ); /** * Fires once the Customizer preview has initialized and JavaScript @@ -762,44 +1586,96 @@ final class WP_Customize_Manager { do_action( 'customize_preview_init', $this ); } + /** + * Filter the X-Frame-Options and Content-Security-Policy headers to ensure frontend can load in customizer. + * + * @since 4.7.0 + * @access public + * + * @param array $headers Headers. + * @return array Headers. + */ + public function filter_iframe_security_headers( $headers ) { + $customize_url = admin_url( 'customize.php' ); + $headers['X-Frame-Options'] = 'ALLOW-FROM ' . $customize_url; + $headers['Content-Security-Policy'] = 'frame-ancestors ' . preg_replace( '#^(\w+://[^/]+).+?$#', '$1', $customize_url ); + return $headers; + } + + /** + * Add customize state query params to a given URL if preview is allowed. + * + * @since 4.7.0 + * @access public + * @see wp_redirect() + * @see WP_Customize_Manager::get_allowed_url() + * + * @param string $url URL. + * @return string URL. + */ + public function add_state_query_params( $url ) { + $parsed_original_url = wp_parse_url( $url ); + $is_allowed = false; + foreach ( $this->get_allowed_urls() as $allowed_url ) { + $parsed_allowed_url = wp_parse_url( $allowed_url ); + $is_allowed = ( + $parsed_allowed_url['scheme'] === $parsed_original_url['scheme'] + && + $parsed_allowed_url['host'] === $parsed_original_url['host'] + && + 0 === strpos( $parsed_original_url['path'], $parsed_allowed_url['path'] ) + ); + if ( $is_allowed ) { + break; + } + } + + if ( $is_allowed ) { + $query_params = array( + 'customize_changeset_uuid' => $this->changeset_uuid(), + ); + if ( ! $this->is_theme_active() ) { + $query_params['customize_theme'] = $this->get_stylesheet(); + } + if ( $this->messenger_channel ) { + $query_params['customize_messenger_channel'] = $this->messenger_channel; + } + $url = add_query_arg( $query_params, $url ); + } + + return $url; + } + /** * Prevent sending a 404 status when returning the response for the customize * preview, since it causes the jQuery Ajax to fail. Send 200 instead. * * @since 4.0.0 + * @deprecated 4.7.0 * @access public */ public function customize_preview_override_404_status() { - if ( is_404() ) { - status_header( 200 ); - } + _deprecated_function( __METHOD__, '4.7.0' ); } /** * Print base element for preview frame. * * @since 3.4.0 + * @deprecated 4.7.0 */ public function customize_preview_base() { - ?> - messenger_channel ) { + return; + } + ?> + + validate_setting_values( $this->unsanitized_post_values() ); + $post_values = $this->unsanitized_post_values( array( 'exclude_changeset' => true ) ); + $setting_validities = $this->validate_setting_values( $post_values ); $exported_setting_validities = array_map( array( $this, 'prepare_setting_validity_for_js' ), $setting_validities ); + // Note that the REQUEST_URI is not passed into home_url() since this breaks subdirectory installs. + $self_url = empty( $_SERVER['REQUEST_URI'] ) ? home_url( '/' ) : esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ); + $state_query_params = array( + 'customize_theme', + 'customize_changeset_uuid', + 'customize_messenger_channel', + ); + $self_url = remove_query_arg( $state_query_params, $self_url ); + + $allowed_urls = $this->get_allowed_urls(); + $allowed_hosts = array(); + foreach ( $allowed_urls as $allowed_url ) { + $parsed = wp_parse_url( $allowed_url ); + if ( empty( $parsed['host'] ) ) { + continue; + } + $host = $parsed['host']; + if ( ! empty( $parsed['port'] ) ) { + $host .= ':' . $parsed['port']; + } + $allowed_hosts[] = $host; + } $settings = array( + 'changeset' => array( + 'uuid' => $this->_changeset_uuid, + ), + 'timeouts' => array( + 'selectiveRefresh' => 250, + 'keepAliveSend' => 1000, + ), 'theme' => array( 'stylesheet' => $this->get_stylesheet(), 'active' => $this->is_theme_active(), ), 'url' => array( - 'self' => empty( $_SERVER['REQUEST_URI'] ) ? home_url( '/' ) : esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ), + 'self' => $self_url, + 'allowed' => array_map( 'esc_url_raw', $this->get_allowed_urls() ), + 'allowedHosts' => array_unique( $allowed_hosts ), + 'isCrossDomain' => $this->is_cross_domain(), ), - 'channel' => wp_unslash( $_POST['customize_messenger_channel'] ), + 'channel' => $this->messenger_channel, 'activePanels' => array(), 'activeSections' => array(), 'activeControls' => array(), 'settingValidities' => $exported_setting_validities, - 'nonce' => $this->get_nonces(), + 'nonce' => current_user_can( 'customize' ) ? $this->get_nonces() : array(), 'l10n' => array( 'shiftClickToEdit' => __( 'Shift-click to edit this element.' ), + 'linkUnpreviewable' => __( 'This link is not live-previewable.' ), + 'formUnpreviewable' => __( 'This form is not live-previewable.' ), ), - '_dirty' => array_keys( $this->unsanitized_post_values() ), + '_dirty' => array_keys( $post_values ), ); foreach ( $this->panels as $panel_id => $panel ) { @@ -902,21 +1859,23 @@ final class WP_Customize_Manager { * Prints a signature so we can ensure the Customizer was properly executed. * * @since 3.4.0 + * @deprecated 4.7.0 */ public function customize_preview_signature() { - echo 'WP_CUSTOMIZER_SIGNATURE'; + _deprecated_function( __METHOD__, '4.7.0' ); } /** * Removes the signature in case we experience a case where the Customizer was not properly executed. * * @since 3.4.0 + * @deprecated 4.7.0 * * @param mixed $return Value passed through for {@see 'wp_die_handler'} filter. * @return mixed Value passed through for {@see 'wp_die_handler'} filter. */ public function remove_preview_signature( $return = null ) { - remove_action( 'shutdown', array( $this, 'customize_preview_signature' ), 1000 ); + _deprecated_function( __METHOD__, '4.7.0' ); return $return; } @@ -991,9 +1950,10 @@ final class WP_Customize_Manager { /** * Validates setting values. * - * Sanitization is applied to the values before being passed for validation. * Validation is skipped for unregistered settings or for values that are - * already null since they will be skipped anyway. + * already null since they will be skipped anyway. Sanitization is applied + * to values that pass validation, and values that become null or `WP_Error` + * after sanitizing are marked invalid. * * @since 4.6.0 * @access public @@ -1001,17 +1961,45 @@ final class WP_Customize_Manager { * @see WP_REST_Request::has_valid_params() * @see WP_Customize_Setting::validate() * - * @param array $setting_values Mapping of setting IDs to values to sanitize and validate. + * @param array $setting_values Mapping of setting IDs to values to validate and sanitize. + * @param array $options { + * Options. + * + * @type bool $validate_existence Whether a setting's existence will be checked. + * @type bool $validate_capability Whether the setting capability will be checked. + * } * @return array Mapping of setting IDs to return value of validate method calls, either `true` or `WP_Error`. */ - public function validate_setting_values( $setting_values ) { + public function validate_setting_values( $setting_values, $options = array() ) { + $options = wp_parse_args( $options, array( + 'validate_capability' => false, + 'validate_existence' => false, + ) ); + $validities = array(); foreach ( $setting_values as $setting_id => $unsanitized_value ) { $setting = $this->get_setting( $setting_id ); - if ( ! $setting || is_null( $unsanitized_value ) ) { + if ( ! $setting ) { + if ( $options['validate_existence'] ) { + $validities[ $setting_id ] = new WP_Error( 'unrecognized', __( 'Setting does not exist or is unrecognized.' ) ); + } continue; } - $validity = $setting->validate( $unsanitized_value ); + if ( $options['validate_capability'] && ! current_user_can( $setting->capability ) ) { + $validity = new WP_Error( 'unauthorized', __( 'Unauthorized to modify setting due to capability.' ) ); + } else { + if ( is_null( $unsanitized_value ) ) { + continue; + } + $validity = $setting->validate( $unsanitized_value ); + } + if ( ! is_wp_error( $validity ) ) { + /** This filter is documented in wp-includes/class-wp-customize-setting.php */ + $late_validity = apply_filters( "customize_validate_{$setting->id}", new WP_Error(), $unsanitized_value, $setting ); + if ( ! empty( $late_validity->errors ) ) { + $validity = $late_validity; + } + } if ( ! is_wp_error( $validity ) ) { $value = $setting->sanitize( $unsanitized_value ); if ( is_null( $value ) ) { @@ -1046,17 +2034,9 @@ final class WP_Customize_Manager { if ( is_wp_error( $validity ) ) { $notification = array(); foreach ( $validity->errors as $error_code => $error_messages ) { - $error_data = $validity->get_error_data( $error_code ); - if ( is_null( $error_data ) ) { - $error_data = array(); - } - $error_data = array_merge( - $error_data, - array( 'from_server' => true ) - ); $notification[ $error_code ] = array( 'message' => join( ' ', $error_messages ), - 'data' => $error_data, + 'data' => $validity->get_error_data( $error_code ), ); } return $notification; @@ -1066,11 +2046,16 @@ final class WP_Customize_Manager { } /** - * Switch the theme and trigger the save() method on each setting. + * Handle customize_save WP Ajax request to save/update a changeset. * * @since 3.4.0 + * @since 4.7.0 The semantics of this method have changed to update a changeset, optionally to also change the status and other attributes. */ public function save() { + if ( ! is_user_logged_in() ) { + wp_send_json_error( 'unauthenticated' ); + } + if ( ! $this->is_preview() ) { wp_send_json_error( 'not_preview' ); } @@ -1080,6 +2065,248 @@ final class WP_Customize_Manager { wp_send_json_error( 'invalid_nonce' ); } + $changeset_post_id = $this->changeset_post_id(); + if ( empty( $changeset_post_id ) ) { + if ( ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->create_posts ) ) { + wp_send_json_error( 'cannot_create_changeset_post' ); + } + } else { + if ( ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->edit_post, $changeset_post_id ) ) { + wp_send_json_error( 'cannot_edit_changeset_post' ); + } + } + + if ( ! empty( $_POST['customize_changeset_data'] ) ) { + $input_changeset_data = json_decode( wp_unslash( $_POST['customize_changeset_data'] ), true ); + if ( ! is_array( $input_changeset_data ) ) { + wp_send_json_error( 'invalid_customize_changeset_data' ); + } + } else { + $input_changeset_data = array(); + } + + // Validate title. + $changeset_title = null; + if ( isset( $_POST['customize_changeset_title'] ) ) { + $changeset_title = sanitize_text_field( wp_unslash( $_POST['customize_changeset_title'] ) ); + } + + // Validate changeset status param. + $is_publish = null; + $changeset_status = null; + if ( isset( $_POST['customize_changeset_status'] ) ) { + $changeset_status = wp_unslash( $_POST['customize_changeset_status'] ); + if ( ! get_post_status_object( $changeset_status ) || ! in_array( $changeset_status, array( 'draft', 'pending', 'publish', 'future' ), true ) ) { + wp_send_json_error( 'bad_customize_changeset_status', 400 ); + } + $is_publish = ( 'publish' === $changeset_status || 'future' === $changeset_status ); + if ( $is_publish && ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->publish_posts ) ) { + wp_send_json_error( 'changeset_publish_unauthorized', 403 ); + } + } + + /* + * Validate changeset date param. Date is assumed to be in local time for + * the WP if in MySQL format (YYYY-MM-DD HH:MM:SS). Otherwise, the date + * is parsed with strtotime() so that ISO date format may be supplied + * or a string like "+10 minutes". + */ + $changeset_date_gmt = null; + if ( isset( $_POST['customize_changeset_date'] ) ) { + $changeset_date = wp_unslash( $_POST['customize_changeset_date'] ); + if ( preg_match( '/^\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d$/', $changeset_date ) ) { + $mm = substr( $changeset_date, 5, 2 ); + $jj = substr( $changeset_date, 8, 2 ); + $aa = substr( $changeset_date, 0, 4 ); + $valid_date = wp_checkdate( $mm, $jj, $aa, $changeset_date ); + if ( ! $valid_date ) { + wp_send_json_error( 'bad_customize_changeset_date', 400 ); + } + $changeset_date_gmt = get_gmt_from_date( $changeset_date ); + } else { + $timestamp = strtotime( $changeset_date ); + if ( ! $timestamp ) { + wp_send_json_error( 'bad_customize_changeset_date', 400 ); + } + $changeset_date_gmt = gmdate( 'Y-m-d H:i:s', $timestamp ); + } + } + + $r = $this->save_changeset_post( array( + 'status' => $changeset_status, + 'title' => $changeset_title, + 'date_gmt' => $changeset_date_gmt, + 'data' => $input_changeset_data, + ) ); + if ( is_wp_error( $r ) ) { + $response = array( + 'message' => $r->get_error_message(), + 'code' => $r->get_error_code(), + ); + if ( is_array( $r->get_error_data() ) ) { + $response = array_merge( $response, $r->get_error_data() ); + } else { + $response['data'] = $r->get_error_data(); + } + } else { + $response = $r; + + // Note that if the changeset status was publish, then it will get set to trash if revisions are not supported. + $response['changeset_status'] = get_post_status( $this->changeset_post_id() ); + if ( $is_publish && 'trash' === $response['changeset_status'] ) { + $response['changeset_status'] = 'publish'; + } + + if ( 'publish' === $response['changeset_status'] ) { + $response['next_changeset_uuid'] = wp_generate_uuid4(); + } + } + + if ( isset( $response['setting_validities'] ) ) { + $response['setting_validities'] = array_map( array( $this, 'prepare_setting_validity_for_js' ), $response['setting_validities'] ); + } + + /** + * Filters response data for a successful customize_save Ajax request. + * + * This filter does not apply if there was a nonce or authentication failure. + * + * @since 4.2.0 + * + * @param array $response Additional information passed back to the 'saved' + * event on `wp.customize`. + * @param WP_Customize_Manager $this WP_Customize_Manager instance. + */ + $response = apply_filters( 'customize_save_response', $response, $this ); + + if ( is_wp_error( $r ) ) { + wp_send_json_error( $response ); + } else { + wp_send_json_success( $response ); + } + } + + /** + * Save the post for the loaded changeset. + * + * @since 4.7.0 + * @access public + * + * @param array $args { + * Args for changeset post. + * + * @type array $data Optional additional changeset data. Values will be merged on top of any existing post values. + * @type string $status Post status. Optional. If supplied, the save will be transactional and a post revision will be allowed. + * @type string $title Post title. Optional. + * @type string $date_gmt Date in GMT. Optional. + * @type int $user_id ID for user who is saving the changeset. Optional, defaults to the current user ID. + * @type bool $starter_content Whether the data is starter content. If false (default), then $starter_content will be cleared for any $data being saved. + * } + * + * @return array|WP_Error Returns array on success and WP_Error with array data on error. + */ + function save_changeset_post( $args = array() ) { + + $args = array_merge( + array( + 'status' => null, + 'title' => null, + 'data' => array(), + 'date_gmt' => null, + 'user_id' => get_current_user_id(), + 'starter_content' => false, + ), + $args + ); + + $changeset_post_id = $this->changeset_post_id(); + $existing_changeset_data = array(); + if ( $changeset_post_id ) { + $existing_status = get_post_status( $changeset_post_id ); + if ( 'publish' === $existing_status || 'trash' === $existing_status ) { + return new WP_Error( 'changeset_already_published' ); + } + + $existing_changeset_data = $this->get_changeset_post_data( $changeset_post_id ); + } + + // Fail if attempting to publish but publish hook is missing. + if ( 'publish' === $args['status'] && false === has_action( 'transition_post_status', '_wp_customize_publish_changeset' ) ) { + return new WP_Error( 'missing_publish_callback' ); + } + + // Validate date. + $now = gmdate( 'Y-m-d H:i:59' ); + if ( $args['date_gmt'] ) { + $is_future_dated = ( mysql2date( 'U', $args['date_gmt'], false ) > mysql2date( 'U', $now, false ) ); + if ( ! $is_future_dated ) { + return new WP_Error( 'not_future_date' ); // Only future dates are allowed. + } + + if ( ! $this->is_theme_active() && ( 'future' === $args['status'] || $is_future_dated ) ) { + return new WP_Error( 'cannot_schedule_theme_switches' ); // This should be allowed in the future, when theme is a regular setting. + } + $will_remain_auto_draft = ( ! $args['status'] && ( ! $changeset_post_id || 'auto-draft' === get_post_status( $changeset_post_id ) ) ); + if ( $will_remain_auto_draft ) { + return new WP_Error( 'cannot_supply_date_for_auto_draft_changeset' ); + } + } elseif ( $changeset_post_id && 'future' === $args['status'] ) { + + // Fail if the new status is future but the existing post's date is not in the future. + $changeset_post = get_post( $changeset_post_id ); + if ( mysql2date( 'U', $changeset_post->post_date_gmt, false ) <= mysql2date( 'U', $now, false ) ) { + return new WP_Error( 'not_future_date' ); + } + } + + // The request was made via wp.customize.previewer.save(). + $update_transactionally = (bool) $args['status']; + $allow_revision = (bool) $args['status']; + + // Amend post values with any supplied data. + foreach ( $args['data'] as $setting_id => $setting_params ) { + if ( array_key_exists( 'value', $setting_params ) ) { + $this->set_post_value( $setting_id, $setting_params['value'] ); // Add to post values so that they can be validated and sanitized. + } + } + + // Note that in addition to post data, this will include any stashed theme mods. + $post_values = $this->unsanitized_post_values( array( + 'exclude_changeset' => true, + 'exclude_post_data' => false, + ) ); + $this->add_dynamic_settings( array_keys( $post_values ) ); // Ensure settings get created even if they lack an input value. + + /* + * Get list of IDs for settings that have values different from what is currently + * saved in the changeset. By skipping any values that are already the same, the + * subset of changed settings can be passed into validate_setting_values to prevent + * an underprivileged modifying a single setting for which they have the capability + * from being blocked from saving. This also prevents a user from touching of the + * previous saved settings and overriding the associated user_id if they made no change. + */ + $changed_setting_ids = array(); + foreach ( $post_values as $setting_id => $setting_value ) { + $setting = $this->get_setting( $setting_id ); + + if ( $setting && 'theme_mod' === $setting->type ) { + $prefixed_setting_id = $this->get_stylesheet() . '::' . $setting->id; + } else { + $prefixed_setting_id = $setting_id; + } + + $is_value_changed = ( + ! isset( $existing_changeset_data[ $prefixed_setting_id ] ) + || + ! array_key_exists( 'value', $existing_changeset_data[ $prefixed_setting_id ] ) + || + $existing_changeset_data[ $prefixed_setting_id ]['value'] !== $setting_value + ); + if ( $is_value_changed ) { + $changed_setting_ids[] = $setting_id; + } + } + /** * Fires before save validation happens. * @@ -1094,42 +2321,369 @@ final class WP_Customize_Manager { do_action( 'customize_save_validation_before', $this ); // Validate settings. - $setting_validities = $this->validate_setting_values( $this->unsanitized_post_values() ); + $validated_values = array_merge( + array_fill_keys( array_keys( $args['data'] ), null ), // Make sure existence/capability checks are done on value-less setting updates. + $post_values + ); + $setting_validities = $this->validate_setting_values( $validated_values, array( + 'validate_capability' => true, + 'validate_existence' => true, + ) ); $invalid_setting_count = count( array_filter( $setting_validities, 'is_wp_error' ) ); - $exported_setting_validities = array_map( array( $this, 'prepare_setting_validity_for_js' ), $setting_validities ); - if ( $invalid_setting_count > 0 ) { + + /* + * Short-circuit if there are invalid settings the update is transactional. + * A changeset update is transactional when a status is supplied in the request. + */ + if ( $update_transactionally && $invalid_setting_count > 0 ) { $response = array( - 'setting_validities' => $exported_setting_validities, + 'setting_validities' => $setting_validities, 'message' => sprintf( _n( 'There is %s invalid setting.', 'There are %s invalid settings.', $invalid_setting_count ), number_format_i18n( $invalid_setting_count ) ), ); - - /** This filter is documented in wp-includes/class-wp-customize-manager.php */ - $response = apply_filters( 'customize_save_response', $response, $this ); - wp_send_json_error( $response ); + return new WP_Error( 'transaction_fail', '', $response ); } - // Do we have to switch themes? - if ( ! $this->is_theme_active() ) { - // Temporarily stop previewing the theme to allow switch_themes() - // to operate properly. + // Obtain/merge data for changeset. + $original_changeset_data = $this->get_changeset_post_data( $changeset_post_id ); + $data = $original_changeset_data; + if ( is_wp_error( $data ) ) { + $data = array(); + } + + // Ensure that all post values are included in the changeset data. + foreach ( $post_values as $setting_id => $post_value ) { + if ( ! isset( $args['data'][ $setting_id ] ) ) { + $args['data'][ $setting_id ] = array(); + } + if ( ! isset( $args['data'][ $setting_id ]['value'] ) ) { + $args['data'][ $setting_id ]['value'] = $post_value; + } + } + + foreach ( $args['data'] as $setting_id => $setting_params ) { + $setting = $this->get_setting( $setting_id ); + if ( ! $setting || ! $setting->check_capabilities() ) { + continue; + } + + // Skip updating changeset for invalid setting values. + if ( isset( $setting_validities[ $setting_id ] ) && is_wp_error( $setting_validities[ $setting_id ] ) ) { + continue; + } + + $changeset_setting_id = $setting_id; + if ( 'theme_mod' === $setting->type ) { + $changeset_setting_id = sprintf( '%s::%s', $this->get_stylesheet(), $setting_id ); + } + + if ( null === $setting_params ) { + // Remove setting from changeset entirely. + unset( $data[ $changeset_setting_id ] ); + } else { + + if ( ! isset( $data[ $changeset_setting_id ] ) ) { + $data[ $changeset_setting_id ] = array(); + } + + // Merge any additional setting params that have been supplied with the existing params. + $merged_setting_params = array_merge( $data[ $changeset_setting_id ], $setting_params ); + + // Skip updating setting params if unchanged (ensuring the user_id is not overwritten). + if ( $data[ $changeset_setting_id ] === $merged_setting_params ) { + continue; + } + + $data[ $changeset_setting_id ] = array_merge( + $merged_setting_params, + array( + 'type' => $setting->type, + 'user_id' => $args['user_id'], + ) + ); + + // Clear starter_content flag in data if changeset is not explicitly being updated for starter content. + if ( empty( $args['starter_content'] ) ) { + unset( $data[ $changeset_setting_id ]['starter_content'] ); + } + } + } + + $filter_context = array( + 'uuid' => $this->changeset_uuid(), + 'title' => $args['title'], + 'status' => $args['status'], + 'date_gmt' => $args['date_gmt'], + 'post_id' => $changeset_post_id, + 'previous_data' => is_wp_error( $original_changeset_data ) ? array() : $original_changeset_data, + 'manager' => $this, + ); + + /** + * Filters the settings' data that will be persisted into the changeset. + * + * Plugins may amend additional data (such as additional meta for settings) into the changeset with this filter. + * + * @since 4.7.0 + * + * @param array $data Updated changeset data, mapping setting IDs to arrays containing a $value item and optionally other metadata. + * @param array $context { + * Filter context. + * + * @type string $uuid Changeset UUID. + * @type string $title Requested title for the changeset post. + * @type string $status Requested status for the changeset post. + * @type string $date_gmt Requested date for the changeset post in MySQL format and GMT timezone. + * @type int|false $post_id Post ID for the changeset, or false if it doesn't exist yet. + * @type array $previous_data Previous data contained in the changeset. + * @type WP_Customize_Manager $manager Manager instance. + * } + */ + $data = apply_filters( 'customize_changeset_save_data', $data, $filter_context ); + + // Switch theme if publishing changes now. + if ( 'publish' === $args['status'] && ! $this->is_theme_active() ) { + // Temporarily stop previewing the theme to allow switch_themes() to operate properly. $this->stop_previewing_theme(); switch_theme( $this->get_stylesheet() ); update_option( 'theme_switched_via_customizer', true ); $this->start_previewing_theme(); } + // Gather the data for wp_insert_post()/wp_update_post(). + $json_options = 0; + if ( defined( 'JSON_UNESCAPED_SLASHES' ) ) { + $json_options |= JSON_UNESCAPED_SLASHES; // Introduced in PHP 5.4. This is only to improve readability as slashes needn't be escaped in storage. + } + $json_options |= JSON_PRETTY_PRINT; // Also introduced in PHP 5.4, but WP defines constant for back compat. See WP Trac #30139. + $post_array = array( + 'post_content' => wp_json_encode( $data, $json_options ), + ); + if ( $args['title'] ) { + $post_array['post_title'] = $args['title']; + } + if ( $changeset_post_id ) { + $post_array['ID'] = $changeset_post_id; + } else { + $post_array['post_type'] = 'customize_changeset'; + $post_array['post_name'] = $this->changeset_uuid(); + $post_array['post_status'] = 'auto-draft'; + } + if ( $args['status'] ) { + $post_array['post_status'] = $args['status']; + } + + // Reset post date to now if we are publishing, otherwise pass post_date_gmt and translate for post_date. + if ( 'publish' === $args['status'] ) { + $post_array['post_date_gmt'] = '0000-00-00 00:00:00'; + $post_array['post_date'] = '0000-00-00 00:00:00'; + } elseif ( $args['date_gmt'] ) { + $post_array['post_date_gmt'] = $args['date_gmt']; + $post_array['post_date'] = get_date_from_gmt( $args['date_gmt'] ); + } + + $this->store_changeset_revision = $allow_revision; + add_filter( 'wp_save_post_revision_post_has_changed', array( $this, '_filter_revision_post_has_changed' ), 5, 3 ); + + // Update the changeset post. The publish_customize_changeset action will cause the settings in the changeset to be saved via WP_Customize_Setting::save(). + $has_kses = ( false !== has_filter( 'content_save_pre', 'wp_filter_post_kses' ) ); + if ( $has_kses ) { + kses_remove_filters(); // Prevent KSES from corrupting JSON in post_content. + } + + // Note that updating a post with publish status will trigger WP_Customize_Manager::publish_changeset_values(). + if ( $changeset_post_id ) { + $post_array['edit_date'] = true; // Prevent date clearing. + $r = wp_update_post( wp_slash( $post_array ), true ); + } else { + $r = wp_insert_post( wp_slash( $post_array ), true ); + if ( ! is_wp_error( $r ) ) { + $this->_changeset_post_id = $r; // Update cached post ID for the loaded changeset. + } + } + if ( $has_kses ) { + kses_init_filters(); + } + $this->_changeset_data = null; // Reset so WP_Customize_Manager::changeset_data() will re-populate with updated contents. + + remove_filter( 'wp_save_post_revision_post_has_changed', array( $this, '_filter_revision_post_has_changed' ) ); + + $response = array( + 'setting_validities' => $setting_validities, + ); + + if ( is_wp_error( $r ) ) { + $response['changeset_post_save_failure'] = $r->get_error_code(); + return new WP_Error( 'changeset_post_save_failure', '', $response ); + } + + return $response; + } + + /** + * Whether a changeset revision should be made. + * + * @since 4.7.0 + * @access private + * @var bool + */ + protected $store_changeset_revision; + + /** + * Filters whether a changeset has changed to create a new revision. + * + * Note that this will not be called while a changeset post remains in auto-draft status. + * + * @since 4.7.0 + * @access private + * + * @param bool $post_has_changed Whether the post has changed. + * @param WP_Post $last_revision The last revision post object. + * @param WP_Post $post The post object. + * + * @return bool Whether a revision should be made. + */ + public function _filter_revision_post_has_changed( $post_has_changed, $last_revision, $post ) { + unset( $last_revision ); + if ( 'customize_changeset' === $post->post_type ) { + $post_has_changed = $this->store_changeset_revision; + } + return $post_has_changed; + } + + /** + * Publish changeset values. + * + * This will the values contained in a changeset, even changesets that do not + * correspond to current manager instance. This is called by + * `_wp_customize_publish_changeset()` when a customize_changeset post is + * transitioned to the `publish` status. As such, this method should not be + * called directly and instead `wp_publish_post()` should be used. + * + * Please note that if the settings in the changeset are for a non-activated + * theme, the theme must first be switched to (via `switch_theme()`) before + * invoking this method. + * + * @since 4.7.0 + * @access private + * @see _wp_customize_publish_changeset() + * + * @param int $changeset_post_id ID for customize_changeset post. Defaults to the changeset for the current manager instance. + * @return true|WP_Error True or error info. + */ + public function _publish_changeset_values( $changeset_post_id ) { + $publishing_changeset_data = $this->get_changeset_post_data( $changeset_post_id ); + if ( is_wp_error( $publishing_changeset_data ) ) { + return $publishing_changeset_data; + } + + $changeset_post = get_post( $changeset_post_id ); + + /* + * Temporarily override the changeset context so that it will be read + * in calls to unsanitized_post_values() and so that it will be available + * on the $wp_customize object passed to hooks during the save logic. + */ + $previous_changeset_post_id = $this->_changeset_post_id; + $this->_changeset_post_id = $changeset_post_id; + $previous_changeset_uuid = $this->_changeset_uuid; + $this->_changeset_uuid = $changeset_post->post_name; + $previous_changeset_data = $this->_changeset_data; + $this->_changeset_data = $publishing_changeset_data; + + // Parse changeset data to identify theme mod settings and user IDs associated with settings to be saved. + $setting_user_ids = array(); + $theme_mod_settings = array(); + $namespace_pattern = '/^(?P.+?)::(?P.+)$/'; + $matches = array(); + foreach ( $this->_changeset_data as $raw_setting_id => $setting_params ) { + $actual_setting_id = null; + $is_theme_mod_setting = ( + isset( $setting_params['value'] ) + && + isset( $setting_params['type'] ) + && + 'theme_mod' === $setting_params['type'] + && + preg_match( $namespace_pattern, $raw_setting_id, $matches ) + ); + if ( $is_theme_mod_setting ) { + if ( ! isset( $theme_mod_settings[ $matches['stylesheet'] ] ) ) { + $theme_mod_settings[ $matches['stylesheet'] ] = array(); + } + $theme_mod_settings[ $matches['stylesheet'] ][ $matches['setting_id'] ] = $setting_params; + + if ( $this->get_stylesheet() === $matches['stylesheet'] ) { + $actual_setting_id = $matches['setting_id']; + } + } else { + $actual_setting_id = $raw_setting_id; + } + + // Keep track of the user IDs for settings actually for this theme. + if ( $actual_setting_id && isset( $setting_params['user_id'] ) ) { + $setting_user_ids[ $actual_setting_id ] = $setting_params['user_id']; + } + } + + $changeset_setting_values = $this->unsanitized_post_values( array( + 'exclude_post_data' => true, + 'exclude_changeset' => false, + ) ); + $changeset_setting_ids = array_keys( $changeset_setting_values ); + $this->add_dynamic_settings( $changeset_setting_ids ); + /** * Fires once the theme has switched in the Customizer, but before settings * have been saved. * * @since 3.4.0 * - * @param WP_Customize_Manager $this WP_Customize_Manager instance. + * @param WP_Customize_Manager $manager WP_Customize_Manager instance. */ do_action( 'customize_save', $this ); - foreach ( $this->settings as $setting ) { - $setting->save(); + /* + * Ensure that all settings will allow themselves to be saved. Note that + * this is safe because the setting would have checked the capability + * when the setting value was written into the changeset. So this is why + * an additional capability check is not required here. + */ + $original_setting_capabilities = array(); + foreach ( $changeset_setting_ids as $setting_id ) { + $setting = $this->get_setting( $setting_id ); + if ( $setting && ! isset( $setting_user_ids[ $setting_id ] ) ) { + $original_setting_capabilities[ $setting->id ] = $setting->capability; + $setting->capability = 'exist'; + } + } + + $original_user_id = get_current_user_id(); + foreach ( $changeset_setting_ids as $setting_id ) { + $setting = $this->get_setting( $setting_id ); + if ( $setting ) { + /* + * Set the current user to match the user who saved the value into + * the changeset so that any filters that apply during the save + * process will respect the original user's capabilities. This + * will ensure, for example, that KSES won't strip unsafe HTML + * when a scheduled changeset publishes via WP Cron. + */ + if ( isset( $setting_user_ids[ $setting_id ] ) ) { + wp_set_current_user( $setting_user_ids[ $setting_id ] ); + } else { + wp_set_current_user( $original_user_id ); + } + + $setting->save(); + } + } + wp_set_current_user( $original_user_id ); + + // Update the stashed theme mod settings, removing the active theme's stashed settings, if activated. + if ( did_action( 'switch_theme' ) ) { + $other_theme_mod_settings = $theme_mod_settings; + unset( $other_theme_mod_settings[ $this->get_stylesheet() ] ); + $this->update_stashed_theme_mod_settings( $other_theme_mod_settings ); } /** @@ -1137,27 +2691,62 @@ final class WP_Customize_Manager { * * @since 3.6.0 * - * @param WP_Customize_Manager $this WP_Customize_Manager instance. + * @param WP_Customize_Manager $manager WP_Customize_Manager instance. */ do_action( 'customize_save_after', $this ); - $data = array( - 'setting_validities' => $exported_setting_validities, - ); + // Restore original capabilities. + foreach ( $original_setting_capabilities as $setting_id => $capability ) { + $setting = $this->get_setting( $setting_id ); + if ( $setting ) { + $setting->capability = $capability; + } + } - /** - * Filters response data for a successful customize_save Ajax request. - * - * This filter does not apply if there was a nonce or authentication failure. - * - * @since 4.2.0 - * - * @param array $data Additional information passed back to the 'saved' - * event on `wp.customize`. - * @param WP_Customize_Manager $this WP_Customize_Manager instance. - */ - $response = apply_filters( 'customize_save_response', $data, $this ); - wp_send_json_success( $response ); + // Restore original changeset data. + $this->_changeset_data = $previous_changeset_data; + $this->_changeset_post_id = $previous_changeset_post_id; + $this->_changeset_uuid = $previous_changeset_uuid; + + return true; + } + + /** + * Update stashed theme mod settings. + * + * @since 4.7.0 + * @access private + * + * @param array $inactive_theme_mod_settings Mapping of stylesheet to arrays of theme mod settings. + * @return array|false Returns array of updated stashed theme mods or false if the update failed or there were no changes. + */ + protected function update_stashed_theme_mod_settings( $inactive_theme_mod_settings ) { + $stashed_theme_mod_settings = get_option( 'customize_stashed_theme_mods' ); + if ( empty( $stashed_theme_mod_settings ) ) { + $stashed_theme_mod_settings = array(); + } + + // Delete any stashed theme mods for the active theme since since they would have been loaded and saved upon activation. + unset( $stashed_theme_mod_settings[ $this->get_stylesheet() ] ); + + // Merge inactive theme mods with the stashed theme mod settings. + foreach ( $inactive_theme_mod_settings as $stylesheet => $theme_mod_settings ) { + if ( ! isset( $stashed_theme_mod_settings[ $stylesheet ] ) ) { + $stashed_theme_mod_settings[ $stylesheet ] = array(); + } + + $stashed_theme_mod_settings[ $stylesheet ] = array_merge( + $stashed_theme_mod_settings[ $stylesheet ], + $theme_mod_settings + ); + } + + $autoload = false; + $result = update_option( 'customize_stashed_theme_mods', $stashed_theme_mod_settings, $autoload ); + if ( ! $result ) { + return false; + } + return $stashed_theme_mod_settings; } /** @@ -1535,7 +3124,7 @@ final class WP_Customize_Manager { @@ -1546,12 +3135,15 @@ final class WP_Customize_Manager { * Helper function to compare two objects by priority, ensuring sort stability via instance_number. * * @since 3.4.0 + * @deprecated 4.7.0 Use wp_list_sort() * * @param WP_Customize_Panel|WP_Customize_Section|WP_Customize_Control $a Object A. * @param WP_Customize_Panel|WP_Customize_Section|WP_Customize_Control $b Object B. * @return int */ protected function _cmp_priority( $a, $b ) { + _deprecated_function( __METHOD__, '4.7.0', 'wp_list_sort' ); + if ( $a->priority === $b->priority ) { return $a->instance_number - $b->instance_number; } else { @@ -1571,7 +3163,10 @@ final class WP_Customize_Manager { public function prepare_controls() { $controls = array(); - uasort( $this->controls, array( $this, '_cmp_priority' ) ); + $this->controls = wp_list_sort( $this->controls, array( + 'priority' => 'ASC', + 'instance_number' => 'ASC', + ), 'ASC', true ); foreach ( $this->controls as $id => $control ) { if ( ! isset( $this->sections[ $control->section ] ) || ! $control->check_capabilities() ) { @@ -1584,7 +3179,10 @@ final class WP_Customize_Manager { $this->controls = $controls; // Prepare sections. - uasort( $this->sections, array( $this, '_cmp_priority' ) ); + $this->sections = wp_list_sort( $this->sections, array( + 'priority' => 'ASC', + 'instance_number' => 'ASC', + ), 'ASC', true ); $sections = array(); foreach ( $this->sections as $section ) { @@ -1592,7 +3190,11 @@ final class WP_Customize_Manager { continue; } - usort( $section->controls, array( $this, '_cmp_priority' ) ); + + $section->controls = wp_list_sort( $section->controls, array( + 'priority' => 'ASC', + 'instance_number' => 'ASC', + ) ); if ( ! $section->panel ) { // Top-level section. @@ -1607,7 +3209,10 @@ final class WP_Customize_Manager { $this->sections = $sections; // Prepare panels. - uasort( $this->panels, array( $this, '_cmp_priority' ) ); + $this->panels = wp_list_sort( $this->panels, array( + 'priority' => 'ASC', + 'instance_number' => 'ASC', + ), 'ASC', true ); $panels = array(); foreach ( $this->panels as $panel ) { @@ -1615,14 +3220,20 @@ final class WP_Customize_Manager { continue; } - uasort( $panel->sections, array( $this, '_cmp_priority' ) ); + $panel->sections = wp_list_sort( $panel->sections, array( + 'priority' => 'ASC', + 'instance_number' => 'ASC', + ), 'ASC', true ); $panels[ $panel->id ] = $panel; } $this->panels = $panels; // Sort panels and top-level sections together. $this->containers = array_merge( $this->panels, $this->sections ); - uasort( $this->containers, array( $this, '_cmp_priority' ) ); + $this->containers = wp_list_sort( $this->containers, array( + 'priority' => 'ASC', + 'instance_number' => 'ASC', + ), 'ASC', true ); } /** @@ -1700,6 +3311,67 @@ final class WP_Customize_Manager { return $preview_url; } + /** + * Determines whether the admin and the frontend are on different domains. + * + * @since 4.7.0 + * @access public + * + * @return bool Whether cross-domain. + */ + public function is_cross_domain() { + $admin_origin = wp_parse_url( admin_url() ); + $home_origin = wp_parse_url( home_url() ); + $cross_domain = ( strtolower( $admin_origin['host'] ) !== strtolower( $home_origin['host'] ) ); + return $cross_domain; + } + + /** + * Get URLs allowed to be previewed. + * + * If the front end and the admin are served from the same domain, load the + * preview over ssl if the Customizer is being loaded over ssl. This avoids + * insecure content warnings. This is not attempted if the admin and front end + * are on different domains to avoid the case where the front end doesn't have + * ssl certs. Domain mapping plugins can allow other urls in these conditions + * using the customize_allowed_urls filter. + * + * @since 4.7.0 + * @access public + * + * @returns array Allowed URLs. + */ + public function get_allowed_urls() { + $allowed_urls = array( home_url( '/' ) ); + + if ( is_ssl() && ! $this->is_cross_domain() ) { + $allowed_urls[] = home_url( '/', 'https' ); + } + + /** + * Filters 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 ) ); + + return $allowed_urls; + } + + /** + * Get messenger channel. + * + * @since 4.7.0 + * @access public + * + * @return string Messenger channel. + */ + public function get_messenger_channel() { + return $this->messenger_channel; + } + /** * Set URL to link the user to when closing the Customizer. * @@ -1809,40 +3481,33 @@ final class WP_Customize_Manager { * @since 4.4.0 */ public function customize_pane_settings() { - /* - * If the front end and the admin are served from the same domain, load the - * preview over ssl if the Customizer is being loaded over ssl. This avoids - * insecure content warnings. This is not attempted if the admin and front end - * are on different domains to avoid the case where the front end 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' ); - } - - /** - * Filters 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() ); + // Ensure dirty flags are set for modified settings. + foreach ( array_keys( $this->unsanitized_post_values() ) as $setting_id ) { + $setting = $this->get_setting( $setting_id ); + if ( $setting ) { + $setting->dirty = true; + } + } + // Prepare Customizer settings to pass to JavaScript. $settings = array( + 'changeset' => array( + 'uuid' => $this->changeset_uuid(), + 'status' => $this->changeset_post_id() ? get_post_status( $this->changeset_post_id() ) : '', + ), + 'timeouts' => array( + 'windowRefresh' => 250, + 'changesetAutoSave' => AUTOSAVE_INTERVAL * 1000, + 'keepAliveCheck' => 2500, + 'reflowPaneContents' => 100, + 'previewFrameSensitivity' => 2000, + ), 'theme' => array( 'stylesheet' => $this->get_stylesheet(), 'active' => $this->is_theme_active(), @@ -1852,8 +3517,8 @@ final class WP_Customize_Manager { '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, + 'allowed' => array_map( 'esc_url_raw', $this->get_allowed_urls() ), + 'isCrossDomain' => $this->is_cross_domain(), 'home' => esc_url_raw( home_url( '/' ) ), 'login' => esc_url_raw( $login_url ), ), @@ -1977,6 +3642,7 @@ final class WP_Customize_Manager { $this->register_control_type( 'WP_Customize_Upload_Control' ); $this->register_control_type( 'WP_Customize_Image_Control' ); $this->register_control_type( 'WP_Customize_Background_Image_Control' ); + $this->register_control_type( 'WP_Customize_Background_Position_Control' ); $this->register_control_type( 'WP_Customize_Cropped_Image_Control' ); $this->register_control_type( 'WP_Customize_Site_Icon_Control' ); $this->register_control_type( 'WP_Customize_Theme_Control' ); @@ -2166,27 +3832,120 @@ final class WP_Customize_Manager { 'section' => 'colors', ) ) ); - /* Custom Header */ + if ( current_theme_supports( 'custom-header', 'video' ) ) { + $title = __( 'Header Media' ); + $description = '

      ' . __( 'If you add a video, the image will be used as a fallback while the video loads.' ) . '

      '; + + // @todo Customizer sections should support having notifications just like controls do. See . + $description .= ''; + $width = absint( get_theme_support( 'custom-header', 'width' ) ); + $height = absint( get_theme_support( 'custom-header', 'height' ) ); + if ( $width && $height ) { + $control_description = sprintf( + /* translators: 1: .mp4, 2: header size in pixels */ + __( 'Upload your video in %1$s format and minimize its file size for best results. Your theme recommends dimensions of %2$s pixels.' ), + '.mp4', + sprintf( '%s × %s', $width, $height ) + ); + } elseif ( $width ) { + $control_description = sprintf( + /* translators: 1: .mp4, 2: header width in pixels */ + __( 'Upload your video in %1$s format and minimize its file size for best results. Your theme recommends a width of %2$s pixels.' ), + '.mp4', + sprintf( '%s', $width ) + ); + } else { + $control_description = sprintf( + /* translators: 1: .mp4, 2: header height in pixels */ + __( 'Upload your video in %1$s format and minimize its file size for best results. Your theme recommends a height of %2$s pixels.' ), + '.mp4', + sprintf( '%s', $height ) + ); + } + } else { + $title = __( 'Header Image' ); + $description = ''; + $control_description = ''; + } + $this->add_section( 'header_image', array( - 'title' => __( 'Header Image' ), + 'title' => $title, + 'description' => $description, 'theme_supports' => 'custom-header', 'priority' => 60, ) ); + $this->add_setting( 'header_video', array( + 'theme_supports' => array( 'custom-header', 'video' ), + 'transport' => 'postMessage', + 'sanitize_callback' => 'absint', + 'validate_callback' => array( $this, '_validate_header_video' ), + ) ); + + $this->add_setting( 'external_header_video', array( + 'theme_supports' => array( 'custom-header', 'video' ), + 'transport' => 'postMessage', + 'sanitize_callback' => 'esc_url_raw', + 'validate_callback' => array( $this, '_validate_external_header_video' ), + ) ); + $this->add_setting( new WP_Customize_Filter_Setting( $this, 'header_image', array( - 'default' => get_theme_support( 'custom-header', 'default-image' ), + 'default' => sprintf( get_theme_support( 'custom-header', 'default-image' ), get_template_directory_uri(), get_stylesheet_directory_uri() ), 'theme_supports' => 'custom-header', ) ) ); $this->add_setting( new WP_Customize_Header_Image_Setting( $this, 'header_image_data', array( - // 'default' => get_theme_support( 'custom-header', 'default-image' ), 'theme_supports' => 'custom-header', ) ) ); + /* + * Switch image settings to postMessage when video support is enabled since + * it entails that the_custom_header_markup() will be used, and thus selective + * refresh can be utilized. + */ + if ( current_theme_supports( 'custom-header', 'video' ) ) { + $this->get_setting( 'header_image' )->transport = 'postMessage'; + $this->get_setting( 'header_image_data' )->transport = 'postMessage'; + } + + $this->add_control( new WP_Customize_Media_Control( $this, 'header_video', array( + 'theme_supports' => array( 'custom-header', 'video' ), + 'label' => __( 'Header Video' ), + 'description' => $control_description, + 'section' => 'header_image', + 'mime_type' => 'video', + // @todo These button_labels can be removed once WP_Customize_Media_Control provides mime_type-specific labels automatically. See . + 'button_labels' => array( + 'select' => __( 'Select Video' ), + 'change' => __( 'Change Video' ), + 'placeholder' => __( 'No video selected' ), + 'frame_title' => __( 'Select Video' ), + 'frame_button' => __( 'Choose Video' ), + ), + 'active_callback' => 'is_header_video_active', + ) ) ); + + $this->add_control( 'external_header_video', array( + 'theme_supports' => array( 'custom-header', 'video' ), + 'type' => 'url', + 'description' => __( 'Or, enter a YouTube URL:' ), + 'section' => 'header_image', + 'active_callback'=> 'is_front_page', + ) ); + $this->add_control( new WP_Customize_Header_Image_Control( $this ) ); + $this->selective_refresh->add_partial( 'custom_header', array( + 'selector' => '#wp-custom-header', + 'render_callback' => 'the_custom_header_markup', + 'settings' => array( 'header_video', 'external_header_video', 'header_image' ), // The image is used as a video fallback here. + 'container_inclusive' => true, + ) ); + /* Custom Background */ $this->add_section( 'background_image', array( @@ -2198,123 +3957,209 @@ final class WP_Customize_Manager { $this->add_setting( 'background_image', array( 'default' => get_theme_support( 'custom-background', 'default-image' ), 'theme_supports' => 'custom-background', + 'sanitize_callback' => array( $this, '_sanitize_background_setting' ), ) ); $this->add_setting( new WP_Customize_Background_Image_Setting( $this, 'background_image_thumb', array( 'theme_supports' => 'custom-background', + 'sanitize_callback' => array( $this, '_sanitize_background_setting' ), ) ) ); $this->add_control( new WP_Customize_Background_Image_Control( $this ) ); - $this->add_setting( 'background_repeat', array( - 'default' => get_theme_support( 'custom-background', 'default-repeat' ), + $this->add_setting( 'background_preset', array( + 'default' => get_theme_support( 'custom-background', 'default-preset' ), 'theme_supports' => 'custom-background', + 'sanitize_callback' => array( $this, '_sanitize_background_setting' ), ) ); - $this->add_control( 'background_repeat', array( - 'label' => __( 'Background Repeat' ), + $this->add_control( 'background_preset', array( + 'label' => _x( 'Preset', 'Background Preset' ), 'section' => 'background_image', - 'type' => 'radio', + 'type' => 'select', 'choices' => array( - 'no-repeat' => __('No Repeat'), - 'repeat' => __('Tile'), - 'repeat-x' => __('Tile Horizontally'), - 'repeat-y' => __('Tile Vertically'), + 'default' => _x( 'Default', 'Default Preset' ), + 'fill' => __( 'Fill Screen' ), + 'fit' => __( 'Fit to Screen' ), + 'repeat' => _x( 'Repeat', 'Repeat Image' ), + 'custom' => _x( 'Custom', 'Custom Preset' ), ), ) ); $this->add_setting( 'background_position_x', array( 'default' => get_theme_support( 'custom-background', 'default-position-x' ), 'theme_supports' => 'custom-background', + 'sanitize_callback' => array( $this, '_sanitize_background_setting' ), ) ); - $this->add_control( 'background_position_x', array( - 'label' => __( 'Background Position' ), - 'section' => 'background_image', - 'type' => 'radio', - 'choices' => array( - 'left' => __('Left'), - 'center' => __('Center'), - 'right' => __('Right'), + $this->add_setting( 'background_position_y', array( + 'default' => get_theme_support( 'custom-background', 'default-position-y' ), + 'theme_supports' => 'custom-background', + 'sanitize_callback' => array( $this, '_sanitize_background_setting' ), + ) ); + + $this->add_control( new WP_Customize_Background_Position_Control( $this, 'background_position', array( + 'label' => __( 'Image Position' ), + 'section' => 'background_image', + 'settings' => array( + 'x' => 'background_position_x', + 'y' => 'background_position_y', ), + ) ) ); + + $this->add_setting( 'background_size', array( + 'default' => get_theme_support( 'custom-background', 'default-size' ), + 'theme_supports' => 'custom-background', + 'sanitize_callback' => array( $this, '_sanitize_background_setting' ), + ) ); + + $this->add_control( 'background_size', array( + 'label' => __( 'Image Size' ), + 'section' => 'background_image', + 'type' => 'select', + 'choices' => array( + 'auto' => __( 'Original' ), + 'contain' => __( 'Fit to Screen' ), + 'cover' => __( 'Fill Screen' ), + ), + ) ); + + $this->add_setting( 'background_repeat', array( + 'default' => get_theme_support( 'custom-background', 'default-repeat' ), + 'sanitize_callback' => array( $this, '_sanitize_background_setting' ), + 'theme_supports' => 'custom-background', + ) ); + + $this->add_control( 'background_repeat', array( + 'label' => __( 'Repeat Background Image' ), + 'section' => 'background_image', + 'type' => 'checkbox', ) ); $this->add_setting( 'background_attachment', array( - 'default' => get_theme_support( 'custom-background', 'default-attachment' ), - 'theme_supports' => 'custom-background', + 'default' => get_theme_support( 'custom-background', 'default-attachment' ), + 'sanitize_callback' => array( $this, '_sanitize_background_setting' ), + 'theme_supports' => 'custom-background', ) ); $this->add_control( 'background_attachment', array( - 'label' => __( 'Background Attachment' ), - 'section' => 'background_image', - 'type' => 'radio', - 'choices' => array( - 'scroll' => __('Scroll'), - 'fixed' => __('Fixed'), - ), + 'label' => __( 'Scroll with Page' ), + 'section' => 'background_image', + 'type' => 'checkbox', ) ); + // If the theme is using the default background callback, we can update // the background CSS using postMessage. if ( get_theme_support( 'custom-background', 'wp-head-callback' ) === '_custom_background_cb' ) { - foreach ( array( 'color', 'image', 'position_x', 'repeat', 'attachment' ) as $prop ) { + foreach ( array( 'color', 'image', 'preset', 'position_x', 'position_y', 'size', 'repeat', 'attachment' ) as $prop ) { $this->get_setting( 'background_' . $prop )->transport = 'postMessage'; } } - /* Static Front Page */ - // #WP19627 + /* + * Static Front Page + * See also https://core.trac.wordpress.org/ticket/19627 which introduces the the static-front-page theme_support. + * The following replicates behavior from options-reading.php. + */ - // Replicate behavior from options-reading.php and hide front page options if there are no pages - if ( get_pages() ) { - $this->add_section( 'static_front_page', array( - 'title' => __( 'Static Front Page' ), - // 'theme_supports' => 'static-front-page', - 'priority' => 120, - 'description' => __( 'Your theme supports a static front page.' ), - ) ); + $this->add_section( 'static_front_page', array( + 'title' => __( 'Static Front Page' ), + 'priority' => 120, + 'description' => __( 'Your theme supports a static front page.' ), + 'active_callback' => array( $this, 'has_published_pages' ), + ) ); - $this->add_setting( 'show_on_front', array( - 'default' => get_option( 'show_on_front' ), - 'capability' => 'manage_options', - 'type' => 'option', - // 'theme_supports' => 'static-front-page', - ) ); + $this->add_setting( 'show_on_front', array( + 'default' => get_option( 'show_on_front' ), + 'capability' => 'manage_options', + 'type' => 'option', + ) ); - $this->add_control( 'show_on_front', array( - 'label' => __( 'Front page displays' ), - 'section' => 'static_front_page', - 'type' => 'radio', - 'choices' => array( - 'posts' => __( 'Your latest posts' ), - 'page' => __( 'A static page' ), - ), - ) ); + $this->add_control( 'show_on_front', array( + 'label' => __( 'Front page displays' ), + 'section' => 'static_front_page', + 'type' => 'radio', + 'choices' => array( + 'posts' => __( 'Your latest posts' ), + 'page' => __( 'A static page' ), + ), + ) ); - $this->add_setting( 'page_on_front', array( - 'type' => 'option', - 'capability' => 'manage_options', - // 'theme_supports' => 'static-front-page', - ) ); + $this->add_setting( 'page_on_front', array( + 'type' => 'option', + 'capability' => 'manage_options', + ) ); - $this->add_control( 'page_on_front', array( - 'label' => __( 'Front page' ), - 'section' => 'static_front_page', - 'type' => 'dropdown-pages', - ) ); + $this->add_control( 'page_on_front', array( + 'label' => __( 'Front page' ), + 'section' => 'static_front_page', + 'type' => 'dropdown-pages', + 'allow_addition' => true, + ) ); - $this->add_setting( 'page_for_posts', array( - 'type' => 'option', - 'capability' => 'manage_options', - // 'theme_supports' => 'static-front-page', - ) ); + $this->add_setting( 'page_for_posts', array( + 'type' => 'option', + 'capability' => 'manage_options', + ) ); - $this->add_control( 'page_for_posts', array( - 'label' => __( 'Posts page' ), - 'section' => 'static_front_page', - 'type' => 'dropdown-pages', - ) ); + $this->add_control( 'page_for_posts', array( + 'label' => __( 'Posts page' ), + 'section' => 'static_front_page', + 'type' => 'dropdown-pages', + 'allow_addition' => true, + ) ); + + /* Custom CSS */ + $this->add_section( 'custom_css', array( + 'title' => __( 'Additional CSS' ), + 'priority' => 200, + 'description_hidden' => true, + 'description' => sprintf( '%s
      %s%s', + __( 'CSS allows you to customize the appearance and layout of your site with code. Separate CSS is saved for each of your themes. In the editing area the Tab key enters a tab character. To move below this area by pressing Tab, press the Esc key followed by the Tab key.' ), + esc_url( __( 'https://codex.wordpress.org/CSS' ) ), + __( 'Learn more about CSS' ), + __( '(link opens in a new window)' ) + ), + ) ); + + $custom_css_setting = new WP_Customize_Custom_CSS_Setting( $this, sprintf( 'custom_css[%s]', get_stylesheet() ), array( + 'capability' => 'edit_css', + 'default' => sprintf( "/*\n%s\n*/", __( "You can add your own CSS here.\n\nClick the help icon above to learn more." ) ), + ) ); + $this->add_setting( $custom_css_setting ); + + $this->add_control( 'custom_css', array( + 'type' => 'textarea', + 'section' => 'custom_css', + 'settings' => array( 'default' => $custom_css_setting->id ), + 'input_attrs' => array( + 'class' => 'code', // Ensures contents displayed as LTR instead of RTL. + ), + ) ); + } + + /** + * Return whether there are published pages. + * + * Used as active callback for static front page section and controls. + * + * @access private + * @since 4.7.0 + * + * @returns bool Whether there are published (or to be published) pages. + */ + public function has_published_pages() { + + $setting = $this->get_setting( 'nav_menus_created_posts' ); + if ( $setting ) { + foreach ( $setting->value() as $post_id ) { + if ( 'page' === get_post_type( $post_id ) ) { + return true; + } + } } + return 0 !== count( get_pages() ); } /** @@ -2326,7 +4171,8 @@ final class WP_Customize_Manager { * @see add_dynamic_settings() */ public function register_dynamic_settings() { - $this->add_dynamic_settings( array_keys( $this->unsanitized_post_values() ) ); + $setting_ids = array_keys( $this->unsanitized_post_values() ); + $this->add_dynamic_settings( $setting_ids ); } /** @@ -2351,6 +4197,120 @@ final class WP_Customize_Manager { return $color; } + /** + * Callback for validating a background setting value. + * + * @since 4.7.0 + * @access private + * + * @param string $value Repeat value. + * @param WP_Customize_Setting $setting Setting. + * @return string|WP_Error Background value or validation error. + */ + public function _sanitize_background_setting( $value, $setting ) { + if ( 'background_repeat' === $setting->id ) { + if ( ! in_array( $value, array( 'repeat-x', 'repeat-y', 'repeat', 'no-repeat' ) ) ) { + return new WP_Error( 'invalid_value', __( 'Invalid value for background repeat.' ) ); + } + } elseif ( 'background_attachment' === $setting->id ) { + if ( ! in_array( $value, array( 'fixed', 'scroll' ) ) ) { + return new WP_Error( 'invalid_value', __( 'Invalid value for background attachment.' ) ); + } + } elseif ( 'background_position_x' === $setting->id ) { + if ( ! in_array( $value, array( 'left', 'center', 'right' ), true ) ) { + return new WP_Error( 'invalid_value', __( 'Invalid value for background position X.' ) ); + } + } elseif ( 'background_position_y' === $setting->id ) { + if ( ! in_array( $value, array( 'top', 'center', 'bottom' ), true ) ) { + return new WP_Error( 'invalid_value', __( 'Invalid value for background position Y.' ) ); + } + } elseif ( 'background_size' === $setting->id ) { + if ( ! in_array( $value, array( 'auto', 'contain', 'cover' ), true ) ) { + return new WP_Error( 'invalid_value', __( 'Invalid value for background size.' ) ); + } + } elseif ( 'background_preset' === $setting->id ) { + if ( ! in_array( $value, array( 'default', 'fill', 'fit', 'repeat', 'custom' ), true ) ) { + return new WP_Error( 'invalid_value', __( 'Invalid value for background size.' ) ); + } + } elseif ( 'background_image' === $setting->id || 'background_image_thumb' === $setting->id ) { + $value = empty( $value ) ? '' : esc_url_raw( $value ); + } else { + return new WP_Error( 'unrecognized_setting', __( 'Unrecognized background setting.' ) ); + } + return $value; + } + + /** + * Export header video settings to facilitate selective refresh. + * + * @since 4.7.0 + * + * @param array $response Response. + * @param WP_Customize_Selective_Refresh $selective_refresh Selective refresh component. + * @param array $partials Array of partials. + * @return array + */ + public function export_header_video_settings( $response, $selective_refresh, $partials ) { + if ( isset( $partials['custom_header'] ) ) { + $response['custom_header_settings'] = get_header_video_settings(); + } + + return $response; + } + + /** + * Callback for validating the header_video value. + * + * Ensures that the selected video is less than 8MB and provides an error message. + * + * @since 4.7.0 + * + * @param WP_Error $validity + * @param mixed $value + * @return mixed + */ + public function _validate_header_video( $validity, $value ) { + $video = get_attached_file( absint( $value ) ); + if ( $video ) { + $size = filesize( $video ); + if ( 8 < $size / pow( 1024, 2 ) ) { // Check whether the size is larger than 8MB. + $validity->add( 'size_too_large', + __( 'This video file is too large to use as a header video. Try a shorter video or optimize the compression settings and re-upload a file that is less than 8MB. Or, upload your video to YouTube and link it with the option below.' ) + ); + } + if ( '.mp4' !== substr( $video, -4 ) && '.mov' !== substr( $video, -4 ) ) { // Check for .mp4 or .mov format, which (assuming h.264 encoding) are the only cross-browser-supported formats. + $validity->add( 'invalid_file_type', sprintf( + /* translators: 1: .mp4, 2: .mov */ + __( 'Only %1$s or %2$s files may be used for header video. Please convert your video file and try again, or, upload your video to YouTube and link it with the option below.' ), + '.mp4', + '.mov' + ) ); + } + } + return $validity; + } + + /** + * Callback for validating the external_header_video value. + * + * Ensures that the provided URL is supported. + * + * @since 4.7.0 + * + * @param WP_Error $validity + * @param mixed $value + * @return mixed + */ + public function _validate_external_header_video( $validity, $value ) { + $video = esc_url_raw( $value ); + if ( $video ) { + if ( ! preg_match( '#^https?://(?:www\.)?(?:youtube\.com/watch|youtu\.be/)#', $video ) ) { + $validity->add( 'invalid_url', __( 'Please enter a valid YouTube URL.' ) ); + } + } + return $validity; + } + /** * Callback for rendering the custom logo, used in the custom_logo partial. * diff --git a/wp/wp-includes/class-wp-customize-nav-menus.php b/wp/wp-includes/class-wp-customize-nav-menus.php index f9832a69..ca1b72f7 100644 --- a/wp/wp-includes/class-wp-customize-nav-menus.php +++ b/wp/wp-includes/class-wp-customize-nav-menus.php @@ -48,7 +48,12 @@ final class WP_Customize_Nav_Menus { $this->previewed_menus = array(); $this->manager = $manager; - // Skip useless hooks when the user can't manage nav menus anyway. + // See https://github.com/xwp/wp-customize-snapshots/blob/962586659688a5b1fd9ae93618b7ce2d4e7a421c/php/class-customize-snapshot-manager.php#L469-L499 + add_action( 'customize_register', array( $this, 'customize_register' ), 11 ); + add_filter( 'customize_dynamic_setting_args', array( $this, 'filter_dynamic_setting_args' ), 10, 2 ); + add_filter( 'customize_dynamic_setting_class', array( $this, 'filter_dynamic_setting_class' ), 10, 3 ); + + // Skip remaining hooks when the user can't manage nav menus anyway. if ( ! current_user_can( 'edit_theme_options' ) ) { return; } @@ -56,16 +61,13 @@ final class WP_Customize_Nav_Menus { add_filter( 'customize_refresh_nonces', array( $this, 'filter_nonces' ) ); add_action( 'wp_ajax_load-available-menu-items-customizer', array( $this, 'ajax_load_available_items' ) ); add_action( 'wp_ajax_search-available-menu-items-customizer', array( $this, 'ajax_search_available_items' ) ); + add_action( 'wp_ajax_customize-nav-menus-insert-auto-draft', array( $this, 'ajax_insert_auto_draft_post' ) ); add_action( 'customize_controls_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); - - // Needs to run after core Navigation section is set up. - add_action( 'customize_register', array( $this, 'customize_register' ), 11 ); - - add_filter( 'customize_dynamic_setting_args', array( $this, 'filter_dynamic_setting_args' ), 10, 2 ); - add_filter( 'customize_dynamic_setting_class', array( $this, 'filter_dynamic_setting_class' ), 10, 3 ); add_action( 'customize_controls_print_footer_scripts', array( $this, 'print_templates' ) ); add_action( 'customize_controls_print_footer_scripts', array( $this, 'available_items_template' ) ); add_action( 'customize_preview_init', array( $this, 'customize_preview_init' ) ); + add_action( 'customize_preview_init', array( $this, 'make_auto_draft_status_previewable' ) ); + add_action( 'customize_save_nav_menus_created_posts', array( $this, 'save_nav_menus_created_posts' ) ); // Selective Refresh partials. add_filter( 'customize_dynamic_partial_args', array( $this, 'customize_dynamic_partial_args' ), 10, 2 ); @@ -98,20 +100,35 @@ final class WP_Customize_Nav_Menus { wp_die( -1 ); } - if ( empty( $_POST['type'] ) || empty( $_POST['object'] ) ) { + $all_items = array(); + $item_types = array(); + if ( isset( $_POST['item_types'] ) && is_array( $_POST['item_types'] ) ) { + $item_types = wp_unslash( $_POST['item_types'] ); + } elseif ( isset( $_POST['type'] ) && isset( $_POST['object'] ) ) { // Back compat. + $item_types[] = array( + 'type' => wp_unslash( $_POST['type'] ), + 'object' => wp_unslash( $_POST['object'] ), + 'page' => empty( $_POST['page'] ) ? 0 : absint( $_POST['page'] ), + ); + } else { wp_send_json_error( 'nav_menus_missing_type_or_object_parameter' ); } - $type = sanitize_key( $_POST['type'] ); - $object = sanitize_key( $_POST['object'] ); - $page = empty( $_POST['page'] ) ? 0 : absint( $_POST['page'] ); - $items = $this->load_available_items_query( $type, $object, $page ); - - if ( is_wp_error( $items ) ) { - wp_send_json_error( $items->get_error_code() ); - } else { - wp_send_json_success( array( 'items' => $items ) ); + foreach ( $item_types as $item_type ) { + if ( empty( $item_type['type'] ) || empty( $item_type['object'] ) ) { + wp_send_json_error( 'nav_menus_missing_type_or_object_parameter' ); + } + $type = sanitize_key( $item_type['type'] ); + $object = sanitize_key( $item_type['object'] ); + $page = empty( $item_type['page'] ) ? 0 : absint( $item_type['page'] ); + $items = $this->load_available_items_query( $type, $object, $page ); + if ( is_wp_error( $items ) ) { + wp_send_json_error( $items->get_error_code() ); + } + $all_items[ $item_type['type'] . ':' . $item_type['object'] ] = $items; } + + wp_send_json_success( array( 'items' => $all_items ) ); } /** @@ -157,13 +174,25 @@ final class WP_Customize_Nav_Menus { ); } - $posts = get_posts( array( + // Prepend posts with nav_menus_created_posts on first page. + $posts = array(); + if ( 0 === $page && $this->manager->get_setting( 'nav_menus_created_posts' ) ) { + foreach ( $this->manager->get_setting( 'nav_menus_created_posts' )->value() as $post_id ) { + $auto_draft_post = get_post( $post_id ); + if ( $post_type->name === $auto_draft_post->post_type ) { + $posts[] = $auto_draft_post; + } + } + } + + $posts = array_merge( $posts, get_posts( array( 'numberposts' => 10, 'offset' => 10 * $page, 'orderby' => 'date', 'order' => 'DESC', 'post_type' => $object, - ) ); + ) ) ); + foreach ( $posts as $post ) { $post_title = $post->post_title; if ( '' === $post_title ) { @@ -288,27 +317,42 @@ final class WP_Customize_Nav_Menus { $query['s'] = $args['s']; } + $posts = array(); + + // Prepend list of posts with nav_menus_created_posts search results on first page. + $nav_menus_created_posts_setting = $this->manager->get_setting( 'nav_menus_created_posts' ); + if ( 1 === $args['pagenum'] && $nav_menus_created_posts_setting && count( $nav_menus_created_posts_setting ) > 0 ) { + $stub_post_query = new WP_Query( array_merge( + $query, + array( + 'post_status' => 'auto-draft', + 'post__in' => $nav_menus_created_posts_setting->value(), + 'posts_per_page' => -1, + ) + ) ); + $posts = array_merge( $posts, $stub_post_query->posts ); + } + // Query posts. $get_posts = new WP_Query( $query ); + $posts = array_merge( $posts, $get_posts->posts ); - // Check if any posts were found. - if ( $get_posts->post_count ) { - foreach ( $get_posts->posts as $post ) { - $post_title = $post->post_title; - if ( '' === $post_title ) { - /* translators: %d: ID of a post */ - $post_title = sprintf( __( '#%d (no title)' ), $post->ID ); - } - $items[] = array( - 'id' => 'post-' . $post->ID, - 'title' => html_entity_decode( $post_title, ENT_QUOTES, get_bloginfo( 'charset' ) ), - 'type' => 'post_type', - 'type_label' => $post_type_objects[ $post->post_type ]->labels->singular_name, - 'object' => $post->post_type, - 'object_id' => intval( $post->ID ), - 'url' => get_permalink( intval( $post->ID ) ), - ); + // Create items for posts. + foreach ( $posts as $post ) { + $post_title = $post->post_title; + if ( '' === $post_title ) { + /* translators: %d: ID of a post */ + $post_title = sprintf( __( '#%d (no title)' ), $post->ID ); } + $items[] = array( + 'id' => 'post-' . $post->ID, + 'title' => html_entity_decode( $post_title, ENT_QUOTES, get_bloginfo( 'charset' ) ), + 'type' => 'post_type', + 'type_label' => $post_type_objects[ $post->post_type ]->labels->singular_name, + 'object' => $post->post_type, + 'object_id' => intval( $post->ID ), + 'url' => get_permalink( intval( $post->ID ) ), + ); } // Query taxonomy terms. @@ -368,6 +412,7 @@ final class WP_Customize_Nav_Menus { 'untitled' => _x( '(no label)', 'missing menu item navigation label' ), 'unnamed' => _x( '(unnamed)', 'Missing menu name.' ), 'custom_label' => __( 'Custom Link' ), + 'page_label' => get_post_type_object( 'page' )->labels->singular_name, /* translators: %s: menu location */ 'menuLocation' => _x( '(Currently set to: %s)', 'menu' ), 'menuNameLabel' => __( 'Menu Name' ), @@ -486,6 +531,24 @@ final class WP_Customize_Nav_Menus { */ public function customize_register() { + /* + * Preview settings for nav menus early so that the sections and controls will be added properly. + * See https://github.com/xwp/wp-customize-snapshots/blob/962586659688a5b1fd9ae93618b7ce2d4e7a421c/php/class-customize-snapshot-manager.php#L506-L543 + */ + $nav_menus_setting_ids = array(); + foreach ( array_keys( $this->manager->unsanitized_post_values() ) as $setting_id ) { + if ( preg_match( '/^(nav_menu_locations|nav_menu|nav_menu_item)\[/', $setting_id ) ) { + $nav_menus_setting_ids[] = $setting_id; + } + } + $this->manager->add_dynamic_settings( $nav_menus_setting_ids ); + foreach ( $nav_menus_setting_ids as $setting_id ) { + $setting = $this->manager->get_setting( $setting_id ); + if ( $setting ) { + $setting->preview(); + } + } + // Require JS-rendered control types. $this->manager->register_panel_type( 'WP_Customize_Nav_Menus_Panel' ); $this->manager->register_control_type( 'WP_Customize_Nav_Menu_Control' ); @@ -587,6 +650,10 @@ final class WP_Customize_Nav_Menus { $menu_item_setting_id = 'nav_menu_item[' . $item->ID . ']'; $value = (array) $item; + if ( empty( $value['post_title'] ) ) { + $value['title'] = ''; + } + $value['nav_menu_term_id'] = $menu_id; $this->manager->add_setting( new WP_Customize_Nav_Menu_Item_Setting( $this->manager, $menu_item_setting_id, array( 'value' => $value, @@ -626,6 +693,13 @@ final class WP_Customize_Nav_Menus { 'section' => 'add_menu', 'settings' => array(), ) ) ); + + $this->manager->add_setting( new WP_Customize_Filter_Setting( $this->manager, 'nav_menus_created_posts', array( + 'transport' => 'postMessage', + 'type' => 'option', // To prevent theme prefix in changeset. + 'default' => array(), + 'sanitize_callback' => array( $this, 'sanitize_nav_menus_created_posts' ), + ) ) ); } /** @@ -648,6 +722,7 @@ final class WP_Customize_Nav_Menus { * Return an array of all the available item types. * * @since 4.3.0 + * @since 4.7.0 Each array item now includes a `$type_label` in in addition to `$title`, `$type`, and `$object`. * @access public * * @return array The available menu item types. @@ -660,7 +735,8 @@ final class WP_Customize_Nav_Menus { foreach ( $post_types as $slug => $post_type ) { $item_types[] = array( 'title' => $post_type->labels->name, - 'type' => 'post_type', + 'type_label' => $post_type->labels->singular_name, + 'type' => 'post_type', 'object' => $post_type->name, ); } @@ -673,8 +749,9 @@ final class WP_Customize_Nav_Menus { continue; } $item_types[] = array( - 'title' => $taxonomy->labels->name, - 'type' => 'taxonomy', + 'title' => $taxonomy->labels->name, + 'type_label' => $taxonomy->labels->singular_name, + 'type' => 'taxonomy', 'object' => $taxonomy->name, ); } @@ -684,6 +761,7 @@ final class WP_Customize_Nav_Menus { * Filters the available menu item types. * * @since 4.3.0 + * @since 4.7.0 Each array item now includes a `$type_label` in in addition to `$title`, `$type`, and `$object`. * * @param array $item_types Custom menu item types. */ @@ -692,6 +770,130 @@ final class WP_Customize_Nav_Menus { return $item_types; } + /** + * Add a new `auto-draft` post. + * + * @access public + * @since 4.7.0 + * + * @param array $postarr { + * Post array. Note that post_status is overridden to be `auto-draft`. + * + * @var string $post_title Post title. Required. + * @var string $post_type Post type. Required. + * @var string $post_name Post name. + * @var string $post_content Post content. + * } + * @return WP_Post|WP_Error Inserted auto-draft post object or error. + */ + public function insert_auto_draft_post( $postarr ) { + if ( ! isset( $postarr['post_type'] ) || ! post_type_exists( $postarr['post_type'] ) ) { + return new WP_Error( 'unknown_post_type', __( 'Unknown post type' ) ); + } + if ( empty( $postarr['post_title'] ) ) { + return new WP_Error( 'empty_title', __( 'Empty title' ) ); + } + if ( ! empty( $postarr['post_status'] ) ) { + return new WP_Error( 'status_forbidden', __( 'Status is forbidden' ) ); + } + + $postarr['post_status'] = 'auto-draft'; + + // Auto-drafts are allowed to have empty post_names, so it has to be explicitly set. + if ( empty( $postarr['post_name'] ) ) { + $postarr['post_name'] = sanitize_title( $postarr['post_title'] ); + } + if ( ! isset( $postarr['meta_input'] ) ) { + $postarr['meta_input'] = array(); + } + $postarr['meta_input']['_customize_draft_post_name'] = $postarr['post_name']; + unset( $postarr['post_name'] ); + + add_filter( 'wp_insert_post_empty_content', '__return_false', 1000 ); + $r = wp_insert_post( wp_slash( $postarr ), true ); + remove_filter( 'wp_insert_post_empty_content', '__return_false', 1000 ); + + if ( is_wp_error( $r ) ) { + return $r; + } else { + return get_post( $r ); + } + } + + /** + * Ajax handler for adding a new auto-draft post. + * + * @access public + * @since 4.7.0 + */ + public function ajax_insert_auto_draft_post() { + if ( ! check_ajax_referer( 'customize-menus', 'customize-menus-nonce', false ) ) { + wp_send_json_error( 'bad_nonce', 400 ); + } + + if ( ! current_user_can( 'customize' ) ) { + wp_send_json_error( 'customize_not_allowed', 403 ); + } + + if ( empty( $_POST['params'] ) || ! is_array( $_POST['params'] ) ) { + wp_send_json_error( 'missing_params', 400 ); + } + + $params = wp_unslash( $_POST['params'] ); + $illegal_params = array_diff( array_keys( $params ), array( 'post_type', 'post_title' ) ); + if ( ! empty( $illegal_params ) ) { + wp_send_json_error( 'illegal_params', 400 ); + } + + $params = array_merge( + array( + 'post_type' => '', + 'post_title' => '', + ), + $params + ); + + if ( empty( $params['post_type'] ) || ! post_type_exists( $params['post_type'] ) ) { + status_header( 400 ); + wp_send_json_error( 'missing_post_type_param' ); + } + + $post_type_object = get_post_type_object( $params['post_type'] ); + if ( ! current_user_can( $post_type_object->cap->create_posts ) || ! current_user_can( $post_type_object->cap->publish_posts ) ) { + status_header( 403 ); + wp_send_json_error( 'insufficient_post_permissions' ); + } + + $params['post_title'] = trim( $params['post_title'] ); + if ( '' === $params['post_title'] ) { + status_header( 400 ); + wp_send_json_error( 'missing_post_title' ); + } + + $r = $this->insert_auto_draft_post( $params ); + if ( is_wp_error( $r ) ) { + $error = $r; + if ( ! empty( $post_type_object->labels->singular_name ) ) { + $singular_name = $post_type_object->labels->singular_name; + } else { + $singular_name = __( 'Post' ); + } + + $data = array( + /* translators: %1$s is the post type name and %2$s is the error message. */ + 'message' => sprintf( __( '%1$s could not be created: %2$s' ), $singular_name, $error->get_error_message() ), + ); + wp_send_json_error( $data ); + } else { + $post = $r; + $data = array( + 'post_id' => $post->ID, + 'url' => get_permalink( $post->ID ), + ); + wp_send_json_success( $data ); + } + } + /** * Print the JavaScript templates used to render Menu Customizer components. * @@ -767,61 +969,116 @@ final class WP_Customize_Nav_Menus {

      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 F`+sQc)>;4n delta 61900 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 SIY@72-Z_Xv^{>5?BL4@5hJ>d8 diff --git a/wp/wp-content/languages/admin-nb_NO.po b/wp/wp-content/languages/admin-nb_NO.po index 4137c990..1c52cb07 100644 --- a/wp/wp-content/languages/admin-nb_NO.po +++ b/wp/wp-content/languages/admin-nb_NO.po @@ -1,20 +1,15 @@ -# Translation of Administration in Norwegian (Bokmål) -# This file is distributed under the same license as the Administration package. +# Translation of WordPress - Development - Administration in Norwegian (Bokmål) +# This file is distributed under the same license as the WordPress - Development - Administration package. msgid "" msgstr "" -"PO-Revision-Date: 2016-08-16 13:09:49+0000\n" +"PO-Revision-Date: 2016-12-05 19:38:28+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: GlotPress/2.1.0-alpha\n" -"Project-Id-Version: Administration\n" - -#. translators: default start of the week. 0 = Sunday, 1 = Monday -#: wp-admin/includes/schema.php:402 -msgctxt "start of week" -msgid "1" -msgstr "1" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: nb_NO\n" +"Project-Id-Version: WordPress - Development - Administration\n" #. 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 @@ -25,271 +20,463 @@ msgctxt "default GMT offset or timezone string" msgid "0" msgstr "Europe/Oslo" -#. translators: 1: WP_Site_Query, 2: WP_Network_Query -#: wp-admin/about.php:196 -msgid "Cached and comprehensive site queries improve your network admin experience. The addition of %1$s and %2$s help craft advanced queries with less effort." -msgstr "Hurtiglagrede og omfattende nettstedsspørringer forbedrer din nettverksadmin-opplevelse. De nye %1$s og %2$s hjelper deg å lage avanserte spørringer, enklere." +#. translators: default start of the week. 0 = Sunday, 1 = Monday +#: wp-admin/includes/schema.php:402 +msgctxt "start of week" +msgid "1" +msgstr "1" -#: wp-admin/about.php:189 -msgid "Settings now have an API for enforcing validation constraints. Likewise, customizer controls now support notifications, which are used to display validation errors instead of failing silently." -msgstr "Innstillinger har nå en API for å håndheve validering. Likeledes støtter nå tematilpasseren varslinger som kan brukes for å vise valideringsfeil istedenfor å feile sporløst." +#: wp-admin/about.php:223 +msgid "Customize changesets make changes in the customizer persistent, like autosave drafts. They also make exciting new features like starter content possible." +msgstr "Endringssett i tematilpasseren gjør at du kan lagre endringer i tematilpasseren, slik som autolagring av utkast fungerer. De gjør også nye spennende funksjoner mulige, som start-innhold." -#: wp-admin/about.php:192 -msgid "Multisite, now faster than ever" -msgstr "Nettstedsnettverk, nå raskere enn noensinne" +#: wp-admin/about.php:222 +msgid "Customize Changesets" +msgstr "Endringssett i tematilpasseren" -#: wp-admin/about.php:178 -msgid "WordPress will install and use the newest language packs for your plugins and themes as soon as they’re available from WordPress.org’s community of translators." -msgstr "WordPress vil installere og bruke de nyeste språkpakkene for dine utvidelser og temaer så snart de er tilgjengelige fra WordPress.org's oversettere." +#. translators: 1: register_setting(), 2: +#. https://make.wordpress.org/core/2016/10/26/registering-your-settings-in-wordpress-4-7/ +#: wp-admin/about.php:215 +msgid "%1$s has been enhanced to include type, description, and REST API visibility." +msgstr "%1$s har blitt forbedret til å inkludere type, beskrivelse og REST API-synlighet." -#: wp-admin/about.php:182 -msgid "Masonry 3.3.2, imagesLoaded 3.2.0, MediaElement.js 2.22.0, TinyMCE 4.4.1, and Backbone.js 1.3.3 are bundled." -msgstr "Masonry 3.3.2, imagesLoaded 3.2.0, MediaElement.js 2.22.0, TinyMCE 4.4.1 og Backbone.js 1.3.3 er lagt ved." +#: wp-admin/about.php:211 +msgid "Settings Registration API" +msgstr "API for registrering av innstillinger" +#. translators: %s: +#. https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/ +#: wp-admin/about.php:205 +msgid "The code that lies beneath actions and filters has been overhauled and modernized, fixing bugs along the way." +msgstr "Koden som ligger bak actions og filtere har blitt gjennomgått og modernisert, samtidig som flere feil har blitt rettet." + +#: wp-admin/about.php:195 +msgid "List tables, now with more than bulk edit and delete." +msgstr "Listetabeller, nå med mer enn massehandlinger for redigering og sletting." + +#: wp-admin/about.php:194 +msgid "Custom Bulk Actions" +msgstr "Tilpassede massehandlinger" + +#. translators: %s: +#. https://make.wordpress.org/core/2016/09/09/new-functions-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/ #: wp-admin/about.php:188 -msgid "Customizer APIs for Setting Validation and Notifications" -msgstr "Tematilpasser-APIer for validering og varsling" +msgid "WordPress 4.7 includes new functions, hooks, and behavior for theme developers." +msgstr "WordPress 4.7 inkluderer nye funksjoner, hooks og logikk for temautviklere." -#. translators: %s: -#. https://make.wordpress.org/core/2016/07/08/enhancing-register_meta-in-4-6/ -#: wp-admin/about.php:171 -msgid "The Meta Registration API has been expanded to support types, descriptions, and REST API visibility." -msgstr "Metaregistrerings-APIen har blitt utvidet til å støtte typer, beskrivelser og synlighet i REST API." +#: wp-admin/about.php:184 +msgid "More Theme API Goodies" +msgstr "Mer tema-API-godteri" -#: wp-admin/about.php:177 -msgid "Translations On Demand" -msgstr "Oversettelser på bestilling" +#: wp-admin/about.php:181 +msgid "By opening up the page template functionality to all post types, theme developers have even more flexibility with the WordPress template hierarchy." +msgstr "Ved å åpne opp sidemalfunksjonaliteten for alle innholdstyper, har temautviklere enda mer fleksibilitet i WordPress' malhierarki." -#. translators: 1: WP_Term_Query, 2: WP_Post_Type -#: wp-admin/about.php:157 -msgid "A new %1$s class adds flexibility to query term information while a new %2$s object makes interacting with post types more predictable." -msgstr "En ny %1$s-klasse gjør term-spørringer mer fleksible, og et nytt %2$s-objekt gjør det mer forutsigbart å håndtere innleggstyper." +#: wp-admin/about.php:180 +msgid "Post Type Templates" +msgstr "Innleggstypemaler" -#: wp-admin/about.php:167 -msgid "Meta Registration API" -msgstr "Metaregisterings-API" +#. translators: %s: smiling face with smiling eyes emoji +#: wp-admin/about.php:173 +msgid "Even More Developer Happiness %s" +msgstr "Enda mer digg for utviklere %s" -#: wp-admin/about.php:147 -msgid "The HTTP API now leverages the Requests library, improving HTTP standard support and adding case-insensitive headers, parallel HTTP requests, and support for Internationalized Domain Names." -msgstr "HTTP API bruker nå Requests-biblioteket, som forbedrer standard HTTP-støtte og legger til støtte for å ikke skille mellom små og store bokstaver, parallelle HTTP-spørringer og domenenavn med internasjonale tegn." +#. translators: %s: https://developer.wordpress.org/rest-api/ +#: wp-admin/about.php:161 +msgid "Content endpoints provide machine-readable external access to your WordPress site with a clear, standards-driven interface, paving the way for new and innovative methods of interacting with sites through plugins, themes, apps, and beyond. Ready to get started with development? Check out the REST API reference." +msgstr "Endpoints for innhold gir maskinlesbar tilgang til ditt nettsted med et rent, standarddrevet grensesnitt, som rydder veien for nye og innovative metoder for å interagere med nettsteder gjennom utvidelser, temaer, app-er og mer. Klar for å begynne å utvikle? Sjekk ut resten av REST API-håndboka." -#. translators: 1: WP_Term_Query, 2: WP_Post_Type -#: wp-admin/about.php:152 -msgid "%1$s and %2$s" -msgstr "%1$s og %2$s" +#: wp-admin/about.php:156 +msgid "WordPress 4.7 comes with REST API endpoints for posts, comments, terms, users, meta, and settings." +msgstr "WordPress 4.7 kommer med REST API-endpoints for innlegg, kommentarer, termer, brukere, meta og innstillinger." -#. translators: %s: -#. https://make.wordpress.org/core/2016/07/06/resource-hints-in-4-6/ -#: wp-admin/about.php:140 -msgid "Resource hints help browsers decide which resources to fetch and preprocess. WordPress 4.6 adds them automatically for your styles and scripts making your site even faster." -msgstr "Ressurshint hjelper nettlesere å bestemme hvilke ressurser som skal hentes og forhåndsprosesseres. WordPress 4.6 legger dem til automatisk for dine css- og skriptfiler, som gjør ditt nettsted enda raskere." +#: wp-admin/about.php:155 +msgid "Introducing REST API Content Endpoints" +msgstr "Introduserer REST API innholds-endpoints" + +#: wp-admin/about.php:148 +msgid "Just because your site is in one language doesn’t mean that everybody helping manage it prefers that language for their admin. Add more languages to your site and a user language option will show up in your user’s profiles." +msgstr "Bare fordi ditt nettsted har ett språk, betyr ikke det at alle som hjelper til å administrere det må bruke det samme språket i kontrollpanelet. Legg til flere språk til nettstedet ditt, og brukere vil få muligheten til å velge sitt eget språk i sine profiler." #: wp-admin/about.php:146 -msgid "Robust Requests" -msgstr "Robuste spørringer" +msgid "Dashboard in your language" +msgstr "Kontrollpanel på ditt eget språk" -#: wp-admin/about.php:125 -msgid "As you type, WordPress saves your content to the browser. Recovering saved content is even easier with WordPress 4.6." -msgstr "Når du skriver, lagrer WordPress ditt innhold i nettleseren. Gjenoppretting av lagret innhold er enda enklere i WordPress 4.6." +#: wp-admin/about.php:143 +msgid "Managing your document collection is easier with WordPress 4.7. Uploading PDFs will generate thumbnail images so you can more easily distinguish between all your documents." +msgstr "Å håndtere dokumentsamlinger er lettere med WordPress 4.7. Når du laster opp PDF-er vil det automatisk genereres miniatyrbilder, slik at du lettere kan skille mellom dokumentene." -#: wp-admin/about.php:136 -msgid "Resource Hints" -msgstr "Ressurshint" +#: wp-admin/about.php:141 +msgid "PDF Thumbnail Previews" +msgstr "Miniatyrbilder for PDF-er" -#. translators: %s: Home URL appended with 'wordpress.org' -#: wp-admin/about.php:117 -msgid "Ever accidentally made a link to %s? Now WordPress automatically checks to make sure you didn’t." -msgstr "Har du laget en lenke til %s ved en feil? Nå sjekker WordPress automatisk at du ikke gjør det." +#: wp-admin/about.php:133 +msgid "Sometimes you just need a few visual tweaks to make your site perfect. WordPress 4.7 allows you to add custom CSS and instantly see how your changes affect your site. The live preview allows you to work quickly without page refreshes slowing you down." +msgstr "Noen ganger trenger du bare noen få visuelle endringer for å gjøre ditt nettsted perfekt. WordPress 4.7 lar deg legge til tilpasset CSS og øyeblikkelig se hvordan endringene påvirker ditt nettsted. Live forhåndsvisning lar deg jobbe kjapt uten å laste inn siden på nytt." -#: wp-admin/about.php:124 -msgid "Content Recovery" -msgstr "Gjenopprett innhold" +#: wp-admin/about.php:128 +msgid "Many menus for sites contain links to the pages of your site, but what happens when you don’t have any pages yet? Now you can add new pages while building menus instead of leaving the customizer and abandoning your changes. Once you’ve published your customizations, you’ll have new pages ready for you to fill with content." +msgstr "Mange menyer for nettsteder inneholder lenker til sidene på nettstedet, men hva skjer når du ikke har noen sider ennå? Nå kan du legge til nye sider mens du bygger menyene, istedenfor å gå bort fra tematilpasseren og avbryte endringene dine. Når du har publisert dine endringer vil du ha nye sider som du kan fylle med innhold." -#: wp-admin/about.php:113 -msgid "Inline Link Checker" -msgstr "Innebygget lenkesjekker" +#: wp-admin/about.php:126 +msgid "Smoother Menu Building" +msgstr "Enklere meny-bygging" -#: wp-admin/about.php:103 -msgid "The WordPress dashboard now takes advantage of the fonts you already have, making it load faster and letting you feel more at home on whatever device you use." -msgstr "Kontrollpanelet i WordPress benytter nå skrifttyper du allerede har. Det betyr raskere innlasting og at du vil føle deg mer hjemme på de enhetene du bruker." +#: wp-admin/about.php:120 +msgid "Sometimes a big atmospheric video as a moving header image is just what you need to showcase your wares; go ahead and try it out with Twenty Seventeen. Need some video inspiration? Try searching for sites with video headers available for download and use." +msgstr "Noen ganger kan en stor video som en bevegelig header være det du trenger for å vise frem varene dine. Prøv det med Twenty Seventeen. Trenger du noe video-inspirasjon? Prøv å søke på nettsteder med tilgjengelige video-headere som du kan laste ned og bruke." -#: wp-admin/about.php:78 -msgid "Don’t lose your place: stay on the same page while you update, install, and delete your plugins and themes." -msgstr "Ikke mist fotfestet; bli værende på samme side når du oppdaterer, installerer og sletter utvidelser og temaer." +#: wp-admin/about.php:108 +msgid "Video Headers" +msgstr "Video-headere" -#: wp-admin/about.php:102 -msgid "Native Fonts" -msgstr "Innebygde skrifftyper" +#: wp-admin/about.php:105 +msgid "Visible icons appear to show you which parts of your site can be customized while live previewing. Click on a shortcut and get straight to editing. Paired with starter content, getting started with customizing your site is faster than ever." +msgstr "Synlige ikoner viser deg hvilke deler av nettstedet som kan tilpasses mens du forhåndsviser live. Klikk på en snarvei og begynn å redigere med en gang. Sammen med standardinnhold blir det lettere enn noen sinne å tilpasse ditt nettsted." -#: wp-admin/about.php:52 wp-admin/credits.php:23 wp-admin/freedoms.php:22 -msgid "Thank you for updating to the latest version. WordPress %s changes a lot behind the scenes to make your WordPress experience even better!" -msgstr "Takk for at du oppdaterer til nyeste versjon. WordPress %s endrer mye bak scenen sånn at din WordPress-opplevelse blir enda bedre!" +#: wp-admin/about.php:93 +msgid "Edit Shortcuts" +msgstr "Rediger-snarveier" -#: wp-admin/about.php:77 -msgid "Streamlined Updates" -msgstr "Enklere oppdateringer" +#: wp-admin/about.php:74 +msgid "To help give you a solid base to build from, individual themes can provide starter content that appears when you go to customize your brand new site. This can range from placing a business information widget in the best location to providing a sample menu with social icon links to a static front page complete with beautiful images. Don’t worry - nothing new will appear on the live site until you’re ready to save and publish your initial theme setup." +msgstr "For å gi deg et solid fundament å bygge fra, kan individuelle temaer gi deg start-innhold som vises når du skal tilpasse ditt nye nettsted. Dette kan være å plassere en informasjonswidget i den beste widget-plasseringen, å gi deg et eksempel på en meny med sosiale ikoner, til en statisk forside fylt med vakre bilder. Men ikke vær redd. Ikke noe nytt vil vises på ditt nettsted før du er klar til å lagre og publisere ditt nye temaoppsett." + +#: wp-admin/about.php:73 +msgid "Theme Starter Content" +msgstr "Startinnhold for temaer" + +#: wp-admin/about.php:68 +msgid "WordPress 4.7 adds new features to the customizer to help take you through the initial setup of a theme, with non-destructive live previews of all your changes in one uninterrupted workflow." +msgstr "WordPress 4.7 har gitt tematilpasseren ny funksjonalitet for å hjelpe deg å sette opp et nytt tema, med ikke-destruktiv live forhåndsvisning av alle endringer i én uavbrutt arbeidsflyt." + +#: wp-admin/about.php:67 +msgid "Your Site, Your Way" +msgstr "Ditt nettsted, du bestemmer" + +#: wp-admin/about.php:61 +msgid "Twenty Seventeen focuses on business sites and features a customizable front page with multiple sections. Personalize it with widgets, navigation, social menus, a logo, custom colors, and more. Our default theme for 2017 works great in many languages, on any device, and for a wide range of users." +msgstr "Twenty Seventeen har forretningsnettsteder i fokus og har en forside som kan tilpasses med flere seksjoner. Lag temaet til ditt eget med widgeter, navigasjon, sosiale menyer, logo, tilpassede farger og mer. Vårt standardtema for 2017 fungerer fint på mange språk, skjermstørrelser og for alle mulige brukere." + +#: wp-admin/about.php:55 +msgid "A brand new default theme brings your site to life with immersive featured images and video headers." +msgstr "Et helt nytt standardtema blåser liv i nettstedet ditt med store fremhevede bilder og video-headere." + +#: wp-admin/about.php:54 +msgid "Presenting Twenty Seventeen" +msgstr "Presenterer Twenty Seventeen" + +#: wp-admin/about.php:37 wp-admin/credits.php:23 wp-admin/freedoms.php:22 +msgid "Thank you for updating to the latest version! WordPress %s helps you get your site set up the way you want it." +msgstr "Takk for at du oppdaterer til siste versjon! WordPress %s hjelper deg å få ditt nettsted slik du vil ha det." + +#: wp-admin/users.php:167 wp-admin/users.php:207 +msgid "Sorry, you are not allowed to delete users." +msgstr "Beklager, du har ikke lov til å slette brukere." + +#: wp-admin/customize.php:163 +msgid "The Customizer allows you to preview changes to your site before publishing them. You can navigate to different pages on your site within the preview. Edit shortcuts are shown for some editable elements." +msgstr "Tematilpasseren lar deg forhåndsvise endringer på nettstedet før du publiserer dem. Du kan navigere til ulike sider på nettstedet inne i forhåndsvisningen. Rediger-snarveier vises for noen redigerbare elementer." + +#: wp-admin/customize.php:196 +msgctxt "short (~12 characters) label for hide controls button" +msgid "Hide Controls" +msgstr "Skjul verktøy" + +#: wp-admin/theme-install.php:59 +msgid "Expand Sidebar" +msgstr "Utvid sidekolonne" + +#: wp-admin/nav-menus.php:812 +msgid "Display location" +msgstr "Vis sted" + +#. translators: 1: user id, 2: user login +#: wp-admin/users.php:385 +msgid "ID #%1$s: %2$s Sorry, you are not allowed to remove this user." +msgstr "ID #%1$s: %2$s Beklager, du har ikke lov til å fjerne denne brukeren." + +#. translators: The user language selection field label +#: wp-admin/user-edit.php:280 +msgid "Language" +msgstr "Språk" + +#: wp-admin/user-edit.php:41 +msgid "You can select the language you wish to use while using the WordPress administration screen without affecting the language site visitors see." +msgstr "Du kan velge språket du vil bruke når du bruker kontrollpanelet uten at det får noen innvirkning på språket som de som besøkende på nettstedet ser." + +#. translators: 1: WordPress version number, 2: WordPress version number +#. including locale if necessary +#: wp-admin/update-core.php:81 +msgid "You can update to WordPress %2$s automatically:" +msgstr "Du kan oppdatere til WordPress %2$s automatisk:" + +#: wp-admin/update-core.php:60 +msgid "If you need to re-install version %s, you can do so here:" +msgstr "Hvis du må re-installere versjon %s, kan du gjøre det her:" + +#: wp-admin/update-core.php:57 +msgid "You are using a development version of WordPress. You can update to the latest nightly build automatically:" +msgstr "Du bruker en utviklerversjon av WordPress. Du kan oppdatere til siste nigthly build automatisk:" + +#: wp-admin/themes.php:258 wp-admin/themes.php:388 +msgid "New version available." +msgstr "Ny versjon tilgjengelig." + +#: wp-admin/theme-install.php:213 +msgid "Edit Filters" +msgstr "Rediger filtere" + +#: wp-admin/theme-install.php:188 wp-admin/theme-install.php:208 +msgid "Clear current filters" +msgstr "Fjern gjeldende filtere" + +#. translators: hidden accessibility text +#: wp-admin/theme-install.php:61 +msgid "Select one or more Theme features to filter by" +msgstr "Velg ett eller flere temafunksjoner å filtrere etter" + +#: wp-admin/options-general.php:153 +msgid "Choose either a city in the same timezone as you or a UTC timezone offset." +msgstr "Velg enten en by i samme tidssone som deg, eller et bestemt avvik fra UTC-tidssonen." + +#: wp-admin/includes/template.php:1788 +msgid "Current Background Image" +msgstr "Gjeldende bakgrunnsbilde" + +#: wp-admin/includes/template.php:1775 +msgid "Current Header Image" +msgstr "Gjeldende toppbilde" + +#: wp-admin/includes/plugin-install.php:288 +msgid "Search plugins..." +msgstr "Søk i utvidelser..." + +#: wp-admin/includes/meta-boxes.php:105 +msgid "Set status" +msgstr "Sett status" + +#. translators: %s: post title +#: wp-admin/includes/class-wp-posts-list-table.php:843 +msgid "“%s” is locked" +msgstr "«%s» er låst" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:566 +#: wp-admin/includes/plugin-install.php:593 +msgctxt "Active plugin installs" +msgid "Less Than 10" +msgstr "Færre enn 10" + +#: wp-admin/includes/ajax-actions.php:2022 +msgid "Sorry, you are not allowed to attach files to this post." +msgstr "Beklager, du har ikke lov til å legge ved filer til dette innlegget." + +#: wp-admin/freedoms.php:45 wp-admin/includes/plugin-install.php:235 +#: wp-admin/includes/plugin-install.php:599 wp-admin/plugin-install.php:82 +#: wp-admin/plugins.php:392 +msgid "https://wordpress.org/plugins/" +msgstr "https://nb.wordpress.org/plugins/" + +#: wp-admin/customize.php:41 +msgid "Customize New Changes" +msgstr "Endringer i tematilpasseren" + +#: wp-admin/customize.php:40 +msgid "This changeset has already been published and cannot be further modified." +msgstr "Denne endringen har allerede blitt publisert, og kan ikke bli endret videre." + +#: wp-admin/custom-background.php:410 wp-admin/custom-background.php:411 +msgctxt "Background Scroll" +msgid "Scroll" +msgstr "Skroll" + +#: wp-admin/custom-background.php:402 wp-admin/custom-background.php:403 +msgctxt "Background Repeat" +msgid "Repeat" +msgstr "Gjenta" + +#: wp-admin/custom-background.php:394 +msgctxt "Original Size" +msgid "Original" +msgstr "Original" + +#: wp-admin/comment.php:52 wp-admin/custom-background.php:101 +#: wp-admin/custom-header.php:128 wp-admin/edit-comments.php:184 +#: wp-admin/edit-form-advanced.php:383 wp-admin/edit-form-advanced.php:399 +#: wp-admin/edit-form-advanced.php:415 wp-admin/edit-link-form.php:66 +#: wp-admin/edit-tags.php:270 wp-admin/edit.php:229 wp-admin/edit.php:250 +#: wp-admin/export.php:55 wp-admin/import.php:30 wp-admin/index.php:98 +#: wp-admin/link-manager.php:67 wp-admin/media-new.php:57 wp-admin/media.php:84 +#: wp-admin/my-sites.php:48 wp-admin/nav-menus.php:572 +#: wp-admin/options-discussion.php:29 wp-admin/options-general.php:46 +#: wp-admin/options-media.php:35 wp-admin/options-permalink.php:46 +#: wp-admin/options-reading.php:39 wp-admin/options-writing.php:46 +#: wp-admin/plugin-editor.php:157 wp-admin/plugin-install.php:99 +#: wp-admin/plugins.php:410 wp-admin/revision.php:121 +#: wp-admin/theme-editor.php:43 wp-admin/theme-install.php:115 +#: wp-admin/themes.php:119 wp-admin/tools.php:29 wp-admin/update-core.php:574 +#: wp-admin/upload.php:67 wp-admin/upload.php:211 wp-admin/user-edit.php:56 +#: wp-admin/user-new.php:214 wp-admin/users.php:69 wp-admin/widgets.php:75 +msgid "Support Forums" +msgstr "Supportforum" #. translators: %s: Number of failed updates -#: wp-admin/includes/update.php:671 -msgid "%s update failed." -msgstr "%s oppdatering feilet." - -#. translators: %s: Number of failed updates -#: wp-admin/includes/update.php:676 +#: wp-admin/includes/update.php:684 msgid "%s updates failed." msgstr "%s oppdateringer feilet." -#: wp-admin/includes/class-wp-plugins-list-table.php:369 +#. translators: %s: Number of failed updates +#: wp-admin/includes/update.php:679 +msgid "%s update failed." +msgstr "%s oppdatering feilet." + +#: wp-admin/includes/class-wp-plugins-list-table.php:370 msgid "Search installed plugins..." msgstr "Søk i installerte utvidelser..." -#: wp-admin/plugin-install.php:82 -msgid "Plugins hook into WordPress to extend its functionality with custom features. Plugins are developed independently from the core WordPress application by thousands of developers all over the world. All plugins in the official WordPress Plugin Directory are compatible with the license WordPress uses." -msgstr "Utvidelser hekter seg inn i WordPress for å utvide funksjonaliteten. Utvidelser utvikles selvstendig fra WordPress-applikasjonen av tusenvis av utviklere over hele verden. Alle utvidelser i WordPress Plugin Directory er kompatible med lisensen som WordPress bruker." - #: wp-admin/plugin-install.php:83 msgid "You can find new plugins to install by searching or browsing the directory right here in your own Plugins section." msgstr "Du kan finne nye utvidelser å installere ved å søke eller bla i katalogen her i utvidelses-seksjonen." -#: wp-admin/includes/plugin-install.php:259 +#: wp-admin/plugin-install.php:82 +msgid "Plugins hook into WordPress to extend its functionality with custom features. Plugins are developed independently from the core WordPress application by thousands of developers all over the world. All plugins in the official WordPress Plugin Directory are compatible with the license WordPress uses." +msgstr "Utvidelser hekter seg inn i WordPress for å utvide funksjonaliteten. Utvidelser utvikles selvstendig fra WordPress-applikasjonen av tusenvis av utviklere over hele verden. Alle utvidelser i WordPress Plugin Directory er kompatible med lisensen som WordPress bruker." + +#: wp-admin/includes/plugin-install.php:281 msgid "Search plugins by:" msgstr "Søk i utvidelser etter:" -#: wp-admin/includes/import.php:171 -msgid "Convert existing categories to tags or tags to categories, selectively." -msgstr "Konverter eksisterende kategorier til stikkord eller stikkord til kategorier, som du vil." - -#: wp-admin/includes/import.php:177 -msgid "Import posts from LiveJournal using their API." -msgstr "Importer innlegg fra LiveJournal ved å bruke deres API." - -#: wp-admin/includes/import.php:183 -msgid "Import posts and comments from a Movable Type or TypePad blog." -msgstr "Importer innlegg og kommentarer fra Movable Type eller TypePad blog." - -#: wp-admin/includes/import.php:189 -msgid "Import links in OPML format." -msgstr "Importer lenker i OPML-format." - -#: wp-admin/includes/import.php:195 -msgid "Import posts from an RSS feed." -msgstr "Importer innlegg fra en RSS-strøm." +#: wp-admin/includes/import.php:207 +msgid "Import posts, pages, comments, custom fields, categories, and tags from a WordPress export file." +msgstr "Importer innlegg, sider, kommentarer, egendefinerte felt, kategorier og stikkord fra et WordPress-arkiv." #: wp-admin/includes/import.php:201 msgid "Import posts & media from Tumblr using their API." msgstr "Importer innlegg & media fra Tumblr ved å bruke deres API." -#: wp-admin/includes/import.php:207 -msgid "Import posts, pages, comments, custom fields, categories, and tags from a WordPress export file." -msgstr "Importer innlegg, sider, kommentarer, egendefinerte felt, kategorier og stikkord fra et WordPress-arkiv." +#: wp-admin/includes/import.php:195 +msgid "Import posts from an RSS feed." +msgstr "Importer innlegg fra en RSS-strøm." + +#: wp-admin/includes/import.php:189 +msgid "Import links in OPML format." +msgstr "Importer lenker i OPML-format." + +#: wp-admin/includes/import.php:183 +msgid "Import posts and comments from a Movable Type or TypePad blog." +msgstr "Importer innlegg og kommentarer fra Movable Type eller TypePad blog." + +#: wp-admin/includes/import.php:177 +msgid "Import posts from LiveJournal using their API." +msgstr "Importer innlegg fra LiveJournal ved å bruke deres API." + +#: wp-admin/includes/import.php:171 +msgid "Convert existing categories to tags or tags to categories, selectively." +msgstr "Konverter eksisterende kategorier til stikkord eller stikkord til kategorier, som du vil." #: wp-admin/includes/import.php:165 msgid "Import posts, comments, and users from a Blogger blog." msgstr "Importer innlegg, kommentarer og brukere fra en Blogger-blogg." #. translators: %s: plugin name -#: wp-admin/includes/class-wp-plugins-list-table.php:603 +#: wp-admin/includes/class-wp-plugins-list-table.php:627 msgctxt "plugin" -msgid "Network Deactivate %s" -msgstr "Deaktiver i nettverk %s" +msgid "Deactivate %s" +msgstr "Deaktiver %s" #. translators: %s: plugin name -#: wp-admin/includes/class-wp-plugins-list-table.php:612 -#: wp-admin/includes/class-wp-plugins-list-table.php:633 +#: wp-admin/includes/class-wp-plugins-list-table.php:613 +#: wp-admin/includes/class-wp-plugins-list-table.php:634 msgctxt "plugin" msgid "Delete %s" msgstr "Slett %s" #. translators: %s: plugin name -#: wp-admin/includes/class-wp-plugins-list-table.php:626 +#: wp-admin/includes/class-wp-plugins-list-table.php:604 msgctxt "plugin" -msgid "Deactivate %s" -msgstr "Deaktiver %s" +msgid "Network Deactivate %s" +msgstr "Deaktiver i nettverk %s" -#: wp-admin/user-new.php:180 +#: wp-admin/user-new.php:187 msgid "By default, new users will receive an email letting them know they’ve been added as a user for your site. This email will also contain a password reset link. Uncheck the box if you don’t want to send the new user a welcome email." msgstr "Som standard vil nye brukere få en e-post som lar dem vite at de har blitt lagt til som brukere på ditt nettsted. E-posten vil også inneholde en lenke for å nullstille passordet. Fjern krysset i boksen hvis du ikke vil sende slike e-poster til nye brukere." -#: wp-admin/user-new.php:178 +#: wp-admin/user-new.php:185 msgid "New users are automatically assigned a password, which they can change after logging in. You can view or edit the assigned password by clicking the Show Password button. The username cannot be changed once the user has been added." msgstr "Nye brukere får automatisk tildelt et passord, som de kan endre etter at de har logget inn. Du kan se eller redigere det tildelte passordet ved å klikke på Vis passord-knappen. Brukernavnet kan ikke bli endret etter at brukeren har blitt lagt til." #. translators: %s: Plugin name -#: wp-admin/includes/update.php:739 +#: wp-admin/includes/update.php:747 msgctxt "plugin" msgid "%s was successfully deleted." msgstr "%s ble slettet." -#: wp-admin/plugins.php:374 +#: wp-admin/plugins.php:388 msgid "The search for installed plugins will search for terms in their name, description, or author." msgstr "Søket etter installerte utvidelser vil søke i navn, beskrivelse og forfatter." -#: wp-admin/includes/theme.php:251 +#: wp-admin/includes/theme.php:253 msgid "Custom Logo" msgstr "Tilpasset logo" -#: wp-admin/user-edit.php:534 -msgid "Confirm use of potentially weak password" -msgstr "Bekreft bruk av potensielt svakt passord" +#: wp-admin/user-new.php:23 wp-admin/user-new.php:117 +msgid "Sorry, you are not allowed to create users." +msgstr "Beklager, du har ikke lov til å opprette brukere." #: wp-admin/user-new.php:16 wp-admin/user-new.php:56 msgid "Sorry, you are not allowed to add users to this network." msgstr "Beklager, du har ikke lov til å legge til brukere i dette nettverket." -#: wp-admin/user-new.php:23 wp-admin/user-new.php:110 -msgid "Sorry, you are not allowed to create users." -msgstr "Beklager, du har ikke lov til å opprette brukere." +#: wp-admin/user-edit.php:571 +msgid "Confirm use of potentially weak password" +msgstr "Bekreft bruk av potensielt svakt passord" -#: wp-admin/themes.php:255 wp-admin/themes.php:381 -msgid "New version available. " -msgstr "Ny versjon tilgjengelig. " +#: wp-admin/customize.php:33 +msgid "Sorry, you are not allowed to edit this changeset." +msgstr "Beklager, du har ikke lov til å redigere denne endringen." -#: wp-admin/update-core.php:23 wp-admin/update-core.php:626 -#: wp-admin/update-core.php:650 wp-admin/update-core.php:678 -#: wp-admin/update-core.php:708 -msgid "Sorry, you are not allowed to update this site." -msgstr "Beklager, du har ikke lov til å oppdatere dette nettstedet." - -#: wp-admin/includes/ajax-actions.php:3438 wp-admin/update.php:172 +#: wp-admin/includes/ajax-actions.php:3419 wp-admin/update.php:172 #: wp-admin/update.php:193 msgid "Sorry, you are not allowed to update themes for this site." msgstr "Beklager, du har ikke lov til å oppdatere temaer på dette nettstedet." -#: wp-admin/theme-install.php:134 +#: wp-admin/update-core.php:23 wp-admin/update-core.php:635 +#: wp-admin/update-core.php:663 wp-admin/update-core.php:696 +#: wp-admin/update-core.php:731 +msgid "Sorry, you are not allowed to update this site." +msgstr "Beklager, du har ikke lov til å oppdatere dette nettstedet." + +#: wp-admin/themes.php:256 wp-admin/themes.php:386 +msgid "New version available. " +msgstr "Ny versjon tilgjengelig. " + +#: wp-admin/theme-install.php:140 msgid "The Theme Installer screen requires JavaScript." msgstr "Tema-installeringsskjermen krever JavaScript." -#: wp-admin/setup-config.php:284 -msgid "ERROR: \"Table Prefix\" is invalid." -msgstr "FEIL: \"Table Prefix\" er ugyldig." - #: wp-admin/theme-editor.php:18 msgid "Sorry, you are not allowed to edit templates for this site." msgstr "Beklager, du har ikke lov til å redigere maler på dette nettstedet." -#: wp-admin/plugins.php:33 wp-admin/plugins.php:72 wp-admin/plugins.php:150 -msgid "Sorry, you are not allowed to activate plugins for this site." -msgstr "Beklager, du har ikke lov til å aktivere utvidelser på dette nettstedet." +#: wp-admin/setup-config.php:282 +msgid "ERROR: \"Table Prefix\" is invalid." +msgstr "FEIL: \"Table Prefix\" er ugyldig." #: wp-admin/plugins.php:171 wp-admin/plugins.php:196 msgid "Sorry, you are not allowed to deactivate plugins for this site." msgstr "Beklager, du har ikke lov til å deaktivere utvidelser på dette nettstedet." -#: wp-admin/options.php:164 -msgid "Sorry, you are not allowed to modify unregistered settings for this site." -msgstr "Beklager, du har ikke lov til å redigere uregistrerte innstillinger på dette nettstedet." +#: wp-admin/plugins.php:33 wp-admin/plugins.php:72 wp-admin/plugins.php:150 +msgid "Sorry, you are not allowed to activate plugins for this site." +msgstr "Beklager, du har ikke lov til å aktivere utvidelser på dette nettstedet." #: wp-admin/plugin-editor.php:18 msgid "Sorry, you are not allowed to edit plugins for this site." msgstr "Beklager, du har ikke lov til å redigere utvidelser på dette nettstedet." -#: wp-admin/ms-delete-site.php:16 -msgid "Sorry, you are not allowed to delete this site." -msgstr "Beklager, du har ikke lov til å slette dette nettstedet." - -#: wp-admin/nav-menus.php:588 wp-admin/widgets.php:360 -msgid "Manage with Live Preview" -msgstr "Håndter med live forhåndsvisning" +#: wp-admin/options.php:164 +msgid "Sorry, you are not allowed to modify unregistered settings for this site." +msgstr "Beklager, du har ikke lov til å redigere uregistrerte innstillinger på dette nettstedet." #: wp-admin/options-discussion.php:12 wp-admin/options-general.php:16 #: wp-admin/options-media.php:13 wp-admin/options-permalink.php:13 @@ -297,21 +484,29 @@ msgstr "Håndter med live forhåndsvisning" msgid "Sorry, you are not allowed to manage options for this site." msgstr "Beklager, du har ikke lov til å endre innstillinger på dette nettstedet." -#. translators: %s: WordPress Planet URL -#: wp-admin/index.php:82 -msgid "WordPress News — Latest news from the official WordPress project and the WordPress Planet." -msgstr "WordPress News — De siste nyhetene fra WordPress-prosjektet og WordPress Planet." +#: wp-admin/nav-menus.php:589 wp-admin/widgets.php:360 +msgid "Manage with Live Preview" +msgstr "Håndter med live forhåndsvisning" + +#: wp-admin/ms-delete-site.php:16 +msgid "Sorry, you are not allowed to delete this site." +msgstr "Beklager, du har ikke lov til å slette dette nettstedet." #: wp-admin/link-add.php:13 msgid "Sorry, you are not allowed to add links to this site." msgstr "Beklager, du har ikke lov til å legge til lenker på dette nettstedet." #. translators: %s: WordPress Planet URL -#: wp-admin/index.php:76 +#: wp-admin/index.php:81 +msgid "WordPress News — Latest news from the official WordPress project and the WordPress Planet." +msgstr "WordPress News — De siste nyhetene fra WordPress-prosjektet og WordPress Planet." + +#. translators: %s: WordPress Planet URL +#: wp-admin/index.php:75 msgid "WordPress News — Latest news from the official WordPress project, the WordPress Planet, and popular plugins." msgstr "WordPress News — De siste nyhetene fra WordPress-prosjektet, WordPress Planet og populære utvidelser." -#: wp-admin/includes/upgrade.php:197 +#: wp-admin/includes/upgrade.php:200 msgid "" "Hi, this is a comment.\n" "To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.\n" @@ -321,325 +516,321 @@ msgstr "" "For å starte med moderering, redigering og sletting av kommentarer, vennligst gå til Kommentar-skjermen i kontrollpanelet.\n" "Kommentar-avatarer kommer fra Gravatar." +#: wp-admin/includes/upgrade.php:197 +msgid "A WordPress Commenter" +msgstr "En WordPress-kommentator" + #. translators: %s: Theme name -#: wp-admin/includes/update.php:747 +#: wp-admin/includes/update.php:755 msgctxt "theme" msgid "%s was successfully deleted." msgstr "%s ble slettet." -#: wp-admin/includes/upgrade.php:194 -msgid "A WordPress Commenter" -msgstr "En WordPress-kommentator" - -#: wp-admin/includes/theme.php:236 -msgid "Grid Layout" -msgstr "Grid-layout" - -#: wp-admin/includes/theme.php:257 -msgid "Footer Widgets" -msgstr "Footer-widgeter" - -#: wp-admin/includes/theme.php:270 -msgid "Blog" -msgstr "Blogg" - -#: wp-admin/includes/theme.php:271 -msgid "E-Commerce" -msgstr "E-handel" - -#: wp-admin/includes/theme.php:272 -msgid "Education" -msgstr "Utdanning" - -#: wp-admin/includes/theme.php:273 -msgid "Entertainment" -msgstr "Underholdning" - -#: wp-admin/includes/theme.php:274 -msgid "Food & Drink" -msgstr "Mat og drikke" - -#: wp-admin/includes/theme.php:276 -msgid "News" -msgstr "Nyheter" - -#: wp-admin/includes/theme.php:277 -msgid "Photography" -msgstr "Foto" - -#: wp-admin/includes/theme.php:278 -msgid "Portfolio" -msgstr "Portefølje" - -#. translators: 1: Codex URL to release notes, 2: new WordPress version, 3: URL -#. to network admin, 4: accessibility text -#: wp-admin/includes/update.php:236 -msgid "WordPress %2$s is available! Please update now." -msgstr "WordPress %2$s er her! Vennligst oppdater nå." - -#. translators: %s: WordPress version -#: wp-admin/includes/update.php:239 wp-admin/includes/update.php:252 -msgid "https://codex.wordpress.org/Version_%s" -msgstr "https://codex.wordpress.org/Version_%s" - -#: wp-admin/includes/update.php:244 -msgid "Please update WordPress now" -msgstr "Vennligst oppdater WordPress nå" - -#. translators: 1: Codex URL to release notes, 2: new WordPress version -#: wp-admin/includes/update.php:249 -msgid "WordPress %2$s is available! Please notify the site administrator." -msgstr "WordPress %2$s er her! Vennligst si ifra til nettstedets administrator." - -#. translators: %s: Number of plugins -#: wp-admin/includes/update.php:644 -msgid "%s plugin successfully updated." -msgstr "%s utvidelse ble oppdatert." - #. translators: %s: Number of themes -#: wp-admin/includes/update.php:649 -msgid "%s theme successfully updated." -msgstr "%s tema ble oppdatert." +#: wp-admin/includes/update.php:669 +msgid "%s themes successfully updated." +msgstr "%s temaer ble oppdaterte." #. translators: %s: Number of plugins -#: wp-admin/includes/update.php:656 +#: wp-admin/includes/update.php:664 msgid "%s plugins successfully updated." msgstr "%s utvidelser ble oppdaterte." #. translators: %s: Number of themes -#: wp-admin/includes/update.php:661 -msgid "%s themes successfully updated." -msgstr "%s temaer ble oppdaterte." +#: wp-admin/includes/update.php:657 +msgid "%s theme successfully updated." +msgstr "%s tema ble oppdatert." -#: wp-admin/includes/template.php:2020 +#. translators: %s: Number of plugins +#: wp-admin/includes/update.php:652 +msgid "%s plugin successfully updated." +msgstr "%s utvidelse ble oppdatert." + +#. translators: 1: Codex URL to release notes, 2: new WordPress version +#: wp-admin/includes/update.php:257 +msgid "WordPress %2$s is available! Please notify the site administrator." +msgstr "WordPress %2$s er her! Vennligst si ifra til nettstedets administrator." + +#: wp-admin/includes/update.php:252 +msgid "Please update WordPress now" +msgstr "Vennligst oppdater WordPress nå" + +#. translators: %s: WordPress version +#: wp-admin/includes/update.php:247 wp-admin/includes/update.php:260 +msgid "https://codex.wordpress.org/Version_%s" +msgstr "https://codex.wordpress.org/Version_%s" + +#. translators: 1: Codex URL to release notes, 2: new WordPress version, 3: URL +#. to network admin, 4: accessibility text +#: wp-admin/includes/update.php:244 +msgid "WordPress %2$s is available! Please update now." +msgstr "WordPress %2$s er her! Vennligst oppdater nå." + +#: wp-admin/includes/theme.php:280 +msgid "Portfolio" +msgstr "Portefølje" + +#: wp-admin/includes/theme.php:279 +msgid "Photography" +msgstr "Foto" + +#: wp-admin/includes/theme.php:278 +msgid "News" +msgstr "Nyheter" + +#: wp-admin/includes/theme.php:276 +msgid "Food & Drink" +msgstr "Mat og drikke" + +#: wp-admin/includes/theme.php:275 +msgid "Entertainment" +msgstr "Underholdning" + +#: wp-admin/includes/theme.php:274 +msgid "Education" +msgstr "Utdanning" + +#: wp-admin/includes/theme.php:273 +msgid "E-Commerce" +msgstr "E-handel" + +#: wp-admin/includes/theme.php:272 +msgid "Blog" +msgstr "Blogg" + +#: wp-admin/includes/theme.php:259 +msgid "Footer Widgets" +msgstr "Footer-widgeter" + +#: wp-admin/includes/theme.php:238 +msgid "Grid Layout" +msgstr "Grid-layout" + +#: wp-admin/includes/template.php:2046 msgid "This will replace the current editor content with the last backup version. You can use undo and redo in the editor to get the old content back or to return to the restored version." msgstr "Dette vil erstatte innholdet i redigereren med siste sikkerhetskopierte versjon. Du kan bruke angre og gjør om i redigereren for å få tilbake det gamle innholdet eller å gå tilbake til den gjenopprettede versjonen." -#: wp-admin/includes/template.php:1498 +#: wp-admin/includes/template.php:1501 msgid "Close media attachment panel" msgstr "Lukk medievedleggspanelet" -#: wp-admin/includes/file.php:46 -msgid "Embed Template" -msgstr "Mal for innbygging" +#: wp-admin/users.php:317 wp-admin/users.php:352 +msgid "Sorry, you are not allowed to remove users." +msgstr "Beklager, du har ikke lov til å fjerne brukere." -#: wp-admin/includes/file.php:47 -msgid "Embed 404 Template" -msgstr "Mal for innbygging ved 404" +#: wp-admin/includes/ms.php:1084 +msgid "Info" +msgstr "Info" -#: wp-admin/includes/file.php:48 -msgid "Embed Content Template" -msgstr "Mal for innbyggingsinnhold" - -#: wp-admin/includes/file.php:49 -msgid "Embed Header Template" -msgstr "Mal for innbyggingsheader" - -#: wp-admin/includes/file.php:50 -msgid "Embed Footer Template" -msgstr "Mal for innbyggingsfooter" +#: wp-admin/includes/meta-boxes.php:866 +msgid "Need help? Use the Help tab above the screen title." +msgstr "Trenger du hjelp? Bruk hjelpfanen over skjermtittelen." #: wp-admin/includes/menu.php:342 wp-admin/my-sites.php:16 msgid "Sorry, you are not allowed to access this page." msgstr "Beklager, du har ikke tilgang til denne siden." -#: wp-admin/includes/meta-boxes.php:856 -msgid "Need help? Use the Help tab above the screen title." -msgstr "Trenger du hjelp? Bruk hjelpfanen over skjermtittelen." +#: wp-admin/includes/file.php:50 +msgid "Embed Footer Template" +msgstr "Mal for innbyggingsfooter" -#: wp-admin/includes/ms.php:1067 -msgid "Info" -msgstr "Info" +#: wp-admin/includes/file.php:49 +msgid "Embed Header Template" +msgstr "Mal for innbyggingsheader" -#: wp-admin/includes/ajax-actions.php:3579 -#: wp-admin/includes/ajax-actions.php:3674 -#: wp-admin/includes/ajax-actions.php:3777 -msgid "No plugin specified." -msgstr "Ingen utvidelser spesifisert." +#: wp-admin/includes/file.php:48 +msgid "Embed Content Template" +msgstr "Mal for innbyggingsinnhold" -#: wp-admin/includes/ajax-actions.php:3589 wp-admin/plugin-install.php:18 -#: wp-admin/update.php:96 wp-admin/update.php:144 -msgid "Sorry, you are not allowed to install plugins on this site." -msgstr "Beklager, du har ikke lov til å installere utvidelser på dette nettstedet." +#: wp-admin/includes/file.php:47 +msgid "Embed 404 Template" +msgstr "Mal for innbygging ved 404" -#: wp-admin/includes/ajax-actions.php:3688 wp-admin/update.php:24 -#: wp-admin/update.php:50 wp-admin/update.php:71 -msgid "Sorry, you are not allowed to update plugins for this site." -msgstr "Beklager, du har ikke lov til å oppdatere utvidelser på dette nettstedet." +#: wp-admin/includes/file.php:46 +msgid "Embed Template" +msgstr "Mal for innbygging" -#: wp-admin/includes/ajax-actions.php:3789 wp-admin/plugins.php:231 -msgid "Sorry, you are not allowed to delete plugins for this site." -msgstr "Beklager, du har ikke lov til å slette utvidelser på dette nettstedet." - -#: wp-admin/includes/ajax-actions.php:3827 -msgid "Plugin could not be deleted." -msgstr "Utvidelse kunne ikke slettes." - -#: wp-admin/includes/ajax-actions.php:3857 -#: wp-admin/includes/ajax-actions.php:3900 wp-admin/plugins.php:13 -msgid "Sorry, you are not allowed to manage plugins for this site." -msgstr "Beklager, du har ikke lov til å håndtere utvidelser på dette nettstedet." - -#: wp-admin/includes/bookmark.php:32 wp-admin/includes/bookmark.php:315 -#: wp-admin/link-manager.php:12 wp-admin/link-manager.php:71 -msgid "Sorry, you are not allowed to edit the links for this site." -msgstr "Beklager, du har ikke lov til å redigere lenker på dette nettstedet." +#: wp-admin/includes/class-wp-plugin-install-list-table.php:472 +msgctxt "plugin" +msgid "Active" +msgstr "Aktive" #: wp-admin/includes/class-wp-media-list-table.php:488 msgid "(Private post)" msgstr "(Privat innlegg)" -#: wp-admin/includes/class-wp-plugin-install-list-table.php:476 -msgctxt "plugin" -msgid "Active" -msgstr "Aktive" +#: wp-admin/includes/bookmark.php:32 wp-admin/includes/bookmark.php:315 +#: wp-admin/link-manager.php:12 wp-admin/link-manager.php:77 +msgid "Sorry, you are not allowed to edit the links for this site." +msgstr "Beklager, du har ikke lov til å redigere lenker på dette nettstedet." -#: wp-admin/includes/ajax-actions.php:3319 -#: wp-admin/includes/ajax-actions.php:3426 -#: wp-admin/includes/ajax-actions.php:3511 -msgid "No theme specified." -msgstr "Ingen temaer er valgt." +#: wp-admin/includes/ajax-actions.php:3842 +#: wp-admin/includes/ajax-actions.php:3885 wp-admin/plugins.php:13 +msgid "Sorry, you are not allowed to manage plugins for this site." +msgstr "Beklager, du har ikke lov til å håndtere utvidelser på dette nettstedet." -#: wp-admin/includes/ajax-actions.php:3331 wp-admin/theme-install.php:16 +#: wp-admin/includes/ajax-actions.php:3812 +msgid "Plugin could not be deleted." +msgstr "Utvidelse kunne ikke slettes." + +#: wp-admin/includes/ajax-actions.php:3774 wp-admin/plugins.php:231 +msgid "Sorry, you are not allowed to delete plugins for this site." +msgstr "Beklager, du har ikke lov til å slette utvidelser på dette nettstedet." + +#: wp-admin/includes/ajax-actions.php:3673 wp-admin/update.php:24 +#: wp-admin/update.php:50 wp-admin/update.php:71 +msgid "Sorry, you are not allowed to update plugins for this site." +msgstr "Beklager, du har ikke lov til å oppdatere utvidelser på dette nettstedet." + +#: wp-admin/includes/ajax-actions.php:3570 wp-admin/plugin-install.php:18 +#: wp-admin/update.php:96 wp-admin/update.php:144 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "Beklager, du har ikke lov til å installere utvidelser på dette nettstedet." + +#: wp-admin/includes/ajax-actions.php:3560 +#: wp-admin/includes/ajax-actions.php:3659 +#: wp-admin/includes/ajax-actions.php:3762 +msgid "No plugin specified." +msgstr "Ingen utvidelser spesifisert." + +#: wp-admin/includes/ajax-actions.php:3539 +msgid "Theme could not be deleted." +msgstr "Tema kunne ikke slettes." + +#: wp-admin/includes/ajax-actions.php:3503 +msgid "Sorry, you are not allowed to delete themes on this site." +msgstr "Beklager, du har ikke lov til å slette temaer på dette nettstedet." + +#: wp-admin/includes/ajax-actions.php:3474 +msgid "Update failed." +msgstr "Oppdatering feilet." + +#: wp-admin/includes/ajax-actions.php:3312 wp-admin/theme-install.php:16 #: wp-admin/update.php:219 wp-admin/update.php:249 msgid "Sorry, you are not allowed to install themes on this site." msgstr "Beklager, du har ikke lov til å installere temaer på dette nettstedet." -#: wp-admin/includes/ajax-actions.php:3493 -msgid "Update failed." -msgstr "Oppdatering feilet." - -#: wp-admin/includes/ajax-actions.php:3522 -msgid "Sorry, you are not allowed to delete themes on this site." -msgstr "Beklager, du har ikke lov til å slette temaer på dette nettstedet." - -#: wp-admin/includes/ajax-actions.php:3558 -msgid "Theme could not be deleted." -msgstr "Tema kunne ikke slettes." - -#: wp-admin/edit.php:197 -msgid "You can filter the list of posts by post status using the text links above the posts list to only show posts with that status. The default view is to show all posts." -msgstr "Du kan filtrere listen med innlegg etter innleggsstatus ved å bruke tekstlenkene over innleggslisten. Som standard vises alle innlegg." +#: wp-admin/includes/ajax-actions.php:3300 +#: wp-admin/includes/ajax-actions.php:3407 +#: wp-admin/includes/ajax-actions.php:3492 +msgid "No theme specified." +msgstr "Ingen temaer er valgt." #: wp-admin/export.php:13 msgid "Sorry, you are not allowed to export the content of this site." msgstr "Beklager, du har ikke lov til å eksportere innholdet på dette nettstedet." -#: wp-admin/custom-header.php:969 -msgid "Sorry, you are not allowed to customize headers." -msgstr "Beklager, du har ikke lov til å redigere sidetopper." - -#: wp-admin/customize.php:126 -msgid "Close the Customizer and go back to the previous page" -msgstr "Lukk tilpasseren og gå tilbake til forrige side" +#: wp-admin/edit.php:201 +msgid "You can filter the list of posts by post status using the text links above the posts list to only show posts with that status. The default view is to show all posts." +msgstr "Du kan filtrere listen med innlegg etter innleggsstatus ved å bruke tekstlenkene over innleggslisten. Som standard vises alle innlegg." #. translators: %s: taxonomy name -#: wp-admin/edit-tag-form.php:79 wp-admin/edit-tag-form.php:84 +#: wp-admin/edit-tag-form.php:79 msgctxt "admin screen" msgid "← Back to %s" msgstr "← Tilbake til %s" +#: wp-admin/customize.php:149 +msgid "Close the Customizer and go back to the previous page" +msgstr "Lukk tilpasseren og gå tilbake til forrige side" + +#: wp-admin/custom-header.php:969 +msgid "Sorry, you are not allowed to customize headers." +msgstr "Beklager, du har ikke lov til å redigere sidetopper." + #: wp-admin/admin.php:261 wp-admin/import.php:15 msgid "Sorry, you are not allowed to import content." msgstr "Beklager, du har ikke lov til å importere innhold." -#: wp-admin/credits.php:122 -msgid "Release Design Lead" -msgstr "Designansvarlig for utgivelse" - #: wp-admin/credits.php:123 msgid "Release Deputy" msgstr "Utgivelsesansvarlig" -#: wp-admin/about.php:181 -msgid "JavaScript Library Updates" -msgstr "Oppdateringer av JavaScript-bibliotek" - -#: wp-admin/about.php:110 -msgid "Editor Improvements" -msgstr "Forbedret redigering" +#: wp-admin/credits.php:122 +msgid "Release Design Lead" +msgstr "Designansvarlig for utgivelse" #. translators: %s: Codex URL -#: wp-admin/includes/meta-boxes.php:642 -msgid "Custom fields can be used to add extra metadata to a post that you can use in your theme." -msgstr "Tilpassede felt kan brukes for å legge til ekstra metadata til et innlegg som du kan bruke i ditt tema." +#: wp-admin/includes/meta-boxes.php:675 +msgid "Allow trackbacks and pingbacks on this page." +msgstr "Tillat tilbakesporinger og tilbakeping på denne siden." -#: wp-admin/includes/meta-boxes.php:643 +#: wp-admin/includes/meta-boxes.php:654 msgid "https://codex.wordpress.org/Using_Custom_Fields" msgstr "https://codex.wordpress.org/Using_Custom_Fields" #. translators: %s: Codex URL -#: wp-admin/includes/meta-boxes.php:664 -msgid "Allow trackbacks and pingbacks on this page." -msgstr "Tillat tilbakesporinger og tilbakeping på denne siden." +#: wp-admin/includes/meta-boxes.php:653 +msgid "Custom fields can be used to add extra metadata to a post that you can use in your theme." +msgstr "Tilpassede felt kan brukes for å legge til ekstra metadata til et innlegg som du kan bruke i ditt tema." #. translators: %s: Codex URL -#: wp-admin/includes/meta-boxes.php:610 +#: wp-admin/includes/meta-boxes.php:621 msgid "Trackbacks are a way to notify legacy blog systems that you’ve linked to them. If you link other WordPress sites, they’ll be notified automatically using pingbacks, no other action necessary." msgstr "Tilbakesporinger er en måte å gi beskjed til eldre bloggsystemer at du har lenket til dem. Hvis du lenker til andre WordPress-nettsteder vil de bli varslet automatisk ved hjelp av tilbakeping. Ingen andre handlinger er nødvendige." #. translators: %s: Codex URL -#: wp-admin/includes/meta-boxes.php:575 +#: wp-admin/includes/meta-boxes.php:586 msgid "Excerpts are optional hand-crafted summaries of your content that can be used in your theme. Learn more about manual excerpts." msgstr "Sammendrag er valgfri håndlagede sammendrag av ditt innhold som kan brukes i ditt tema. Lær mer om manuelle sammendrag." -#: wp-admin/edit-form-advanced.php:367 +#: wp-admin/edit-form-advanced.php:368 msgid "The Text mode allows you to enter HTML along with your post text. Note that <p> and <br> tags are converted to line breaks when switching to the Text editor to make it less cluttered. When you type, a single line break can be used instead of typing <br>, and two line breaks instead of paragraph tags. The line breaks are converted back to tags automatically." msgstr "Tekst-modus lar deg skrive inn HTML sammen med innleggets tekst. Merk at taggene <p> og <br> blir konvertert til linjeskift automatisk når du bytter redigeringsmodus for å gjøre teksten enklere å lese. Når du skriver, kan et enkelt linjeskift brukes istedenfor å skrive <br>, og to linjeskift kan brukes istedenfor p-tagger. Linjeskift konverteres tilbake til tagger automatisk." -#: wp-admin/edit-form-advanced.php:366 +#: wp-admin/edit-form-advanced.php:367 msgid "Visual mode gives you an editor that is similar to a word processor. Click the Toolbar Toggle button to get a second row of controls." msgstr "Visuell modus gir deg en tekstredigering som fungerer som en ordbehandler. Klikk på verktøylinjen for å vise en andre linje med kontroller." +#: wp-admin/upload.php:302 +msgid "Error saving media file." +msgstr "Feil under lagring av mediefil." + #. translators: %s: number of media files -#: wp-admin/upload.php:291 +#: wp-admin/upload.php:294 msgid "%s media file restored from the trash." msgid_plural "%s media files restored from the trash." msgstr[0] "%s mediefil gjennopprettet fra papirkurven." msgstr[1] "%s mediefiler gjennopprettet fra papirkurven." -#: wp-admin/upload.php:299 -msgid "Error saving media file." -msgstr "Feil under lagring av mediefil." - #. translators: %s: number of media files -#: wp-admin/upload.php:279 +#: wp-admin/upload.php:282 msgid "%s media file moved to the trash." msgid_plural "%s media files moved to the trash." msgstr[0] "%s mediefil flyttet til papirkurven." msgstr[1] "%s mediefiler flyttet til papirkurven." -#: wp-admin/upload.php:243 -msgid "Media file attached." -msgstr "Mediefil lagt ved." - #. translators: %s: number of media files -#: wp-admin/upload.php:246 -msgid "%s media file attached." -msgid_plural "%s media files attached." -msgstr[0] "%s mediefil lagt ved." -msgstr[1] "%s mediefiler lagt ved." - -#: wp-admin/upload.php:254 -msgid "Media file detached." -msgstr "Mediefil fjernet som vedlegg." - -#. translators: %s: number of media files -#: wp-admin/upload.php:257 -msgid "%s media file detached." -msgid_plural "%s media files detached." -msgstr[0] "%s mediefil fjernet som vedlegg." -msgstr[1] "%s mediefiler fjernet som vedlegg." - -#. translators: %s: number of media files -#: wp-admin/upload.php:268 +#: wp-admin/upload.php:271 msgid "%s media file permanently deleted." msgid_plural "%s media files permanently deleted." msgstr[0] "%s mediefil slettet permanent." msgstr[1] "%s mediefiler slettet permanent." +#. translators: %s: number of media files +#: wp-admin/upload.php:260 +msgid "%s media file detached." +msgid_plural "%s media files detached." +msgstr[0] "%s mediefil fjernet som vedlegg." +msgstr[1] "%s mediefiler fjernet som vedlegg." + +#: wp-admin/upload.php:257 +msgid "Media file detached." +msgstr "Mediefil fjernet som vedlegg." + +#. translators: %s: number of media files +#: wp-admin/upload.php:249 +msgid "%s media file attached." +msgid_plural "%s media files attached." +msgstr[0] "%s mediefil lagt ved." +msgstr[1] "%s mediefiler lagt ved." + +#: wp-admin/upload.php:246 +msgid "Media file attached." +msgstr "Mediefil lagt ved." + #: wp-admin/edit-form-advanced.php:163 wp-admin/media.php:95 -#: wp-admin/upload.php:237 wp-admin/upload.php:297 +#: wp-admin/upload.php:240 wp-admin/upload.php:300 msgid "Media file updated." msgstr "Mediefil oppdatert." @@ -649,78 +840,74 @@ msgstr "Mediefil oppdatert." #. translators: 1: theme name, 2: version number #. translators: 1: theme name, 2: version number #. translators: 1: plugin name, 2: version number -#: wp-admin/includes/theme.php:184 wp-admin/includes/theme.php:195 -#: wp-admin/includes/theme.php:206 wp-admin/includes/update.php:377 -#: wp-admin/includes/update.php:388 wp-admin/includes/update.php:399 -#: wp-admin/includes/update.php:522 wp-admin/includes/update.php:533 -#: wp-admin/includes/update.php:544 wp-admin/update-core.php:288 +#: wp-admin/includes/theme.php:186 wp-admin/includes/theme.php:197 +#: wp-admin/includes/theme.php:208 wp-admin/includes/update.php:385 +#: wp-admin/includes/update.php:396 wp-admin/includes/update.php:407 +#: wp-admin/includes/update.php:530 wp-admin/includes/update.php:541 +#: wp-admin/includes/update.php:552 wp-admin/update-core.php:285 msgid "View %1$s version %2$s details" msgstr "Se detaljer for %1$s versjon %2$s" #. translators: 1: relative date, 2: time -#: wp-admin/includes/dashboard.php:860 +#: wp-admin/includes/dashboard.php:863 msgctxt "dashboard" msgid "%1$s, %2$s" msgstr "%1$s, %2$s" -#: wp-admin/edit-form-advanced.php:432 +#: wp-admin/edit-form-advanced.php:433 msgid "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). The Password protected option allows you to set an arbitrary password for each post. The Private option hides the post from everyone except editors and administrators. 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." msgstr "Publiser – Du kan bestemme detaljene om publiseringen av ditt innlegg i Publiser-boksen. For status, synlighet og publiser (umiddelbart), klikk på redigeringslenken for å vise flere valg. Synlighet inkluderer valg for passord-beskyttelse eller å få innlegget til å være klistret øverst i bloggen. Passordbeskyttelse lar deg sette et passord for hvert innlegg. Privat-valget skjuler innlegget fra alle bortsett fra redaktører og administratorer. Publiser (umiddelbart) lar deg sette en publiseringsdato i fremtiden eller bakover i tid, slik at du kan planlegge publisering av et innlegg." -#: wp-admin/user-edit.php:191 -msgid "Error while saving the new email address. Please try again." -msgstr "Feil under lagring av ny e-postadresse. Vennligst prøv igjen." - -#. translators: %s: new email -#: wp-admin/user-edit.php:403 -msgid "There is a pending change of your email to %s." -msgstr "Det er en ventende endring av din e-post til %s." - #. translators: %s: edit page url -#: wp-admin/user-new.php:251 +#: wp-admin/user-new.php:258 msgid "User has been added to your site. Edit user" msgstr "Bruker har blitt lagt til ditt nettsted. Rediger bruker" -#: wp-admin/upload.php:189 +#. translators: %s: new email +#: wp-admin/user-edit.php:438 +msgid "There is a pending change of your email to %s." +msgstr "Det er en ventende endring av din e-post til %s." + +#: wp-admin/user-edit.php:192 +msgid "Error while saving the new email address. Please try again." +msgstr "Feil under lagring av ny e-postadresse. Vennligst prøv igjen." + +#: wp-admin/upload.php:192 msgid "You can narrow the list by file type/status or by date using the dropdown menus above the media table." msgstr "Du kan filtrere listen etter filtype, status eller dato ved å bruke nedtrekksmenyene over tabellen." +#: wp-admin/themes.php:310 +msgid "The following themes are installed but incomplete." +msgstr "Disse temaene er installerte men ufullstendige." + #: wp-admin/themes.php:168 msgid "New theme activated." msgstr "Nytt tema aktivert." -#: wp-admin/themes.php:306 -msgid "The following themes are installed but incomplete." -msgstr "Disse temaene er installerte men ufullstendige." - #: wp-admin/themes.php:166 msgid "Settings saved and theme activated." msgstr "Innstillinger lagret og tema aktivert." -#: wp-admin/setup-config.php:193 -msgid "The name of the database you want to use with WordPress." -msgstr "Navnet på databasen som du vil bruke med WordPress." - -#: wp-admin/setup-config.php:198 -msgid "Your database username." -msgstr "Ditt databasebrukernavn." - -#: wp-admin/setup-config.php:203 -msgid "Your database password." -msgstr "Ditt databasepassord." - -#: wp-admin/term.php:38 -msgid "Sorry, you are not allowed to manage this item." -msgstr "Beklager, du har ikke lov til å administrere dette." - -#: wp-admin/theme-install.php:80 +#: wp-admin/freedoms.php:46 wp-admin/theme-install.php:86 +#: wp-admin/themes.php:92 msgid "https://wordpress.org/themes/" msgstr "https://wordpress.org/themes/" -#. translators: 1: plugin name, 2: plugin author -#: wp-admin/plugins.php:306 -msgid "%1$s by %2$s (will also delete its data)" -msgstr "%1$s av %2$s (vil også slette utvidelsens data)" +#: wp-admin/users.php:174 +msgid "Sorry, you are not allowed to delete that user." +msgstr "Beklager, du har ikke lov til å slette den brukeren." + +#: wp-admin/setup-config.php:201 +msgid "Your database password." +msgstr "Ditt databasepassord." + +#: wp-admin/setup-config.php:196 +msgid "Your database username." +msgstr "Ditt databasebrukernavn." + +#: wp-admin/setup-config.php:191 +msgid "The name of the database you want to use with WordPress." +msgstr "Navnet på databasen som du vil bruke med WordPress." #. translators: 1: plugin name, 2: plugin author #: wp-admin/plugins.php:310 @@ -728,136 +915,145 @@ msgctxt "plugin" msgid "%1$s by %2$s" msgstr "%1$s av %2$s" -#. translators: %s: new admin email -#: wp-admin/options-general.php:110 -msgid "There is a pending change of the admin email to %s." -msgstr "Det er en ventende endring av admins e-post til %s." +#. translators: 1: plugin name, 2: plugin author +#: wp-admin/plugins.php:306 +msgid "%1$s by %2$s (will also delete its data)" +msgstr "%1$s av %2$s (vil også slette utvidelsens data)" #. translators: 1: UTC abbreviation, 2: UTC time #: wp-admin/options-general.php:158 msgid "Universal time (%1$s) is %2$s." msgstr "Universell tid (%1$s) er %2$s." -#: wp-admin/index.php:119 -msgid "Dismiss the welcome panel" -msgstr "Fjern velkomstpanel" +#. translators: %s: new admin email +#: wp-admin/options-general.php:110 +msgid "There is a pending change of the admin email to %s." +msgstr "Det er en ventende endring av admins e-post til %s." -#. translators: %s: wp-config.php -#: wp-admin/install.php:253 -msgid "Your %s file has an empty database table prefix, which is not supported." -msgstr "Din %s har et tomt databasetabell-prefiks. Dette er ikke støttet." - -#. translators: %s: DO_NOT_UPGRADE_GLOBAL_TABLES -#: wp-admin/install.php:266 -msgid "The constant %s cannot be defined when installing WordPress." -msgstr "Konstanten %s kan ikke være definert når WordPress installeres." - -#: wp-admin/install.php:372 +#: wp-admin/install.php:390 msgid "WordPress has been installed. Thank you, and enjoy!" msgstr "WordPress har blitt installert. Takk, og lykke til!" -#: wp-admin/includes/plugin-install.php:333 -msgid "You are using a development version of WordPress. These feature plugins are also under development. Learn more." -msgstr "Du bruker en utviklerversjon av WordPress. Disse feature-utvidelsene er også under utvikling. Lær mer." +#. translators: %s: DO_NOT_UPGRADE_GLOBAL_TABLES +#: wp-admin/install.php:270 +msgid "The constant %s cannot be defined when installing WordPress." +msgstr "Konstanten %s kan ikke være definert når WordPress installeres." -#: wp-admin/includes/plugin-install.php:583 -msgid "Reviews" -msgstr "Vurderinger" +#. translators: %s: wp-config.php +#: wp-admin/install.php:257 +msgid "Your %s file has an empty database table prefix, which is not supported." +msgstr "Din %s har et tomt databasetabell-prefiks. Dette er ikke støttet." -#: wp-admin/includes/plugin-install.php:584 -msgid "Read all reviews on WordPress.org or write your own!" -msgstr "Les alle vurderinger på WordPress.org eller skriv dine egne!" - -#. translators: 1: number of stars (used to determine singular/plural), 2: -#. number of reviews -#: wp-admin/includes/plugin-install.php:590 -msgid "Reviews with %1$d star: %2$s. Opens in a new window." -msgid_plural "Reviews with %1$d stars: %2$s. Opens in a new window." -msgstr[0] "Vurderinger med %1$d stjerne: %2$s. Åpnes i et nytt vindu." -msgstr[1] "Vurderinger med %1$d stjerner: %2$s. Åpnes i et nytt vindu." - -#: wp-admin/includes/post.php:1420 -msgid "Click the image to edit or update" -msgstr "Klikk bildet for å redigere eller oppdatere" - -#: wp-admin/includes/template.php:1497 -msgid "Attach to existing content" -msgstr "Legg ved til eksisterende innhold" +#: wp-admin/index.php:118 +msgid "Dismiss the welcome panel" +msgstr "Fjern velkomstpanel" #: wp-admin/includes/theme-install.php:146 msgid "Theme zip file" msgstr "Tema i zip-fil" -#: wp-admin/includes/image-edit.php:50 -msgid "Scale Image Help" -msgstr "Hjelp for skalering av bilder" +#: wp-admin/includes/template.php:1500 +msgid "Attach to existing content" +msgstr "Legg ved til eksisterende innhold" -#: wp-admin/includes/image-edit.php:60 -msgid "New dimensions:" -msgstr "Nye dimensjoner:" +#: wp-admin/includes/post.php:1454 +msgid "Click the image to edit or update" +msgstr "Klikk bildet for å redigere eller oppdatere" -#: wp-admin/includes/image-edit.php:62 -msgid "scale width" -msgstr "skaler bredde" +#. translators: 1: number of stars (used to determine singular/plural), 2: +#. number of reviews +#: wp-admin/includes/plugin-install.php:620 +msgid "Reviews with %1$d star: %2$s. Opens in a new window." +msgid_plural "Reviews with %1$d stars: %2$s. Opens in a new window." +msgstr[0] "Vurderinger med %1$d stjerne: %2$s. Åpnes i et nytt vindu." +msgstr[1] "Vurderinger med %1$d stjerner: %2$s. Åpnes i et nytt vindu." -#: wp-admin/includes/image-edit.php:66 -msgid "scale height" -msgstr "skaler høyde" +#: wp-admin/includes/plugin-install.php:614 +msgid "Read all reviews on WordPress.org or write your own!" +msgstr "Les alle vurderinger på WordPress.org eller skriv dine egne!" -#: wp-admin/includes/image-edit.php:102 -msgid "Image Crop Help" -msgstr "Hjelp for beskjæring av bilde" +#: wp-admin/includes/plugin-install.php:613 +msgid "Reviews" +msgstr "Vurderinger" -#: wp-admin/includes/image-edit.php:118 -msgid "crop ratio width" -msgstr "bredde på beskjæringsratio" - -#: wp-admin/includes/image-edit.php:122 -msgid "crop ratio height" -msgstr "høyde på beskjæringsratio" - -#: wp-admin/includes/image-edit.php:131 -msgid "selection width" -msgstr "valgt bredde" - -#: wp-admin/includes/image-edit.php:135 -msgid "selection height" -msgstr "valgt høyde" +#: wp-admin/includes/plugin-install.php:355 +msgid "You are using a development version of WordPress. These feature plugins are also under development. Learn more." +msgstr "Du bruker en utviklerversjon av WordPress. Disse feature-utvidelsene er også under utvikling. Lær mer." #: wp-admin/includes/image-edit.php:150 msgid "Thumbnail Settings Help" msgstr "Hjelp til miniatyrbildeinnstillinger" -#. translators: 1: type of comment, 2: post link, 3: notification if the -#. comment is pending -#: wp-admin/includes/dashboard.php:724 -msgctxt "dashboard" -msgid "%1$s on %2$s %3$s" -msgstr "%1$s til %2$s %3$s" +#: wp-admin/includes/image-edit.php:135 +msgid "selection height" +msgstr "valgt høyde" -#: wp-admin/includes/dashboard.php:924 -msgid "View more comments" -msgstr "Vis flere kommentarer" +#: wp-admin/includes/image-edit.php:131 +msgid "selection width" +msgstr "valgt bredde" -#: wp-admin/includes/dashboard.php:1361 -msgid "Dismiss the browser warning panel" -msgstr "Fjern nettleservarselpanelet" +#: wp-admin/includes/image-edit.php:122 +msgid "crop ratio height" +msgstr "høyde på beskjæringsratio" -#: wp-admin/includes/file.php:28 -msgid "Taxonomy Template" -msgstr "Klassifiserings-mal" +#: wp-admin/includes/image-edit.php:118 +msgid "crop ratio width" +msgstr "bredde på beskjæringsratio" -#: wp-admin/includes/file.php:33 -msgid "Date Template" -msgstr "Dato-mal" +#: wp-admin/includes/image-edit.php:102 +msgid "Image Crop Help" +msgstr "Hjelp for beskjæring av bilde" + +#: wp-admin/includes/image-edit.php:66 +msgid "scale height" +msgstr "skaler høyde" + +#: wp-admin/includes/image-edit.php:62 +msgid "scale width" +msgstr "skaler bredde" + +#: wp-admin/includes/image-edit.php:60 +msgid "New dimensions:" +msgstr "Nye dimensjoner:" + +#: wp-admin/includes/image-edit.php:50 +msgid "Scale Image Help" +msgstr "Hjelp for skalering av bilder" + +#: wp-admin/includes/file.php:37 +msgid "Single Page" +msgstr "Singel-side" #: wp-admin/includes/file.php:35 msgid "Singular Template" msgstr "Singel-mal" -#: wp-admin/includes/file.php:37 -msgid "Single Page" -msgstr "Singel-side" +#: wp-admin/includes/file.php:33 +msgid "Date Template" +msgstr "Dato-mal" + +#: wp-admin/includes/file.php:28 +msgid "Taxonomy Template" +msgstr "Klassifiserings-mal" + +#: wp-admin/includes/dashboard.php:1364 +msgid "Dismiss the browser warning panel" +msgstr "Fjern nettleservarselpanelet" + +#: wp-admin/includes/dashboard.php:927 +msgid "View more comments" +msgstr "Vis flere kommentarer" + +#. translators: 1: type of comment, 2: post link, 3: notification if the +#. comment is pending +#: wp-admin/includes/dashboard.php:727 +msgctxt "dashboard" +msgid "%1$s on %2$s %3$s" +msgstr "%1$s til %2$s %3$s" + +#: wp-admin/includes/dashboard.php:644 +msgid "View this comment" +msgstr "Vis denne kommentaren" #. translators: Number of comments in moderation #: wp-admin/includes/dashboard.php:283 @@ -867,9 +1063,62 @@ msgid_plural "%s comments in moderation" msgstr[0] "%s kommentar i moderasjonskø" msgstr[1] "%s kommentarer i moderasjonskø" -#: wp-admin/includes/dashboard.php:641 -msgid "View this comment" -msgstr "Vis denne kommentaren" +#: wp-admin/includes/class-core-upgrader.php:31 +msgid "Another update is currently in progress." +msgstr "En annen oppdatering kjøres nå." + +#: wp-admin/includes/class-plugin-upgrader-skin.php:46 +#: wp-admin/update-core.php:684 wp-admin/update-core.php:718 +msgid "Update progress" +msgstr "Fremdrift" + +#. translators: %s: taxonomy term name +#: wp-admin/includes/class-wp-terms-list-table.php:466 +msgid "View “%s” archive" +msgstr "Vis arkivet for «%s»" + +#. translators: %s: taxonomy term name +#: wp-admin/includes/class-wp-terms-list-table.php:457 +msgid "Delete “%s”" +msgstr "Slett «%s»" + +#. translators: %s: post title +#. translators: %s: taxonomy term name +#: wp-admin/includes/class-wp-posts-list-table.php:1235 +#: wp-admin/includes/class-wp-terms-list-table.php:448 +msgid "Quick edit “%s” inline" +msgstr "Hurtigrediger «%s» inline" + +#: wp-admin/includes/class-wp-plugins-list-table.php:337 +msgid "Search for plugins in the WordPress Plugin Directory." +msgstr "Søk etter utvidelser i WordPress Plugin Directory." + +#: wp-admin/includes/class-wp-plugins-list-table.php:333 +msgid "No plugins found for “%s”." +msgstr "Ingen utvidelser funnet for «%s»." + +#. translators: %s: attachment title +#. translators: %s: post title +#: wp-admin/includes/class-wp-media-list-table.php:714 +#: wp-admin/includes/class-wp-posts-list-table.php:1246 +msgid "Restore “%s” from the Trash" +msgstr "Gjenopprett «%s» fra papirkurven" + +#. translators: %s: attachment title +#. translators: %s: post title +#: wp-admin/includes/class-wp-media-list-table.php:675 +#: wp-admin/includes/class-wp-media-list-table.php:733 +#: wp-admin/includes/class-wp-posts-list-table.php:1263 +msgid "Delete “%s” permanently" +msgstr "Slett «%s» permanent" + +#. translators: %s: attachment title +#. translators: %s: post title +#: wp-admin/includes/class-wp-media-list-table.php:665 +#: wp-admin/includes/class-wp-media-list-table.php:722 +#: wp-admin/includes/class-wp-posts-list-table.php:1254 +msgid "Move “%s” to the Trash" +msgstr "Flytt «%s» til papirkurven" #. translators: %s: attachment title #: wp-admin/includes/class-wp-media-list-table.php:513 @@ -877,120 +1126,73 @@ msgstr "Vis denne kommentaren" msgid "Attach “%s” to existing content" msgstr "Legg ved «%s» til eksisterende innhold" -#. translators: %s: attachment title -#. translators: %s: post title -#: wp-admin/includes/class-wp-media-list-table.php:665 -#: wp-admin/includes/class-wp-media-list-table.php:722 -#: wp-admin/includes/class-wp-posts-list-table.php:1238 -msgid "Move “%s” to the Trash" -msgstr "Flytt «%s» til papirkurven" +#. translators: %s: title of the post the attachment is attached to +#: wp-admin/includes/class-wp-media-list-table.php:501 +msgid "Detach from “%s”" +msgstr "Fjern fra «%s»" #. translators: %s: attachment title -#. translators: %s: post title -#: wp-admin/includes/class-wp-media-list-table.php:675 -#: wp-admin/includes/class-wp-media-list-table.php:733 -#: wp-admin/includes/class-wp-posts-list-table.php:1247 -msgid "Delete “%s” permanently" -msgstr "Slett «%s» permanent" - -#. translators: %s: attachment title -#. translators: %s: post title -#: wp-admin/includes/class-wp-media-list-table.php:714 -#: wp-admin/includes/class-wp-posts-list-table.php:1230 -msgid "Restore “%s” from the Trash" -msgstr "Gjenopprett «%s» fra papirkurven" - -#: wp-admin/includes/class-wp-plugins-list-table.php:332 -msgid "No plugins found for “%s”." -msgstr "Ingen utvidelser funnet for «%s»." - -#: wp-admin/includes/class-wp-plugins-list-table.php:336 -msgid "Search for plugins in the WordPress Plugin Directory." -msgstr "Søk etter utvidelser i WordPress Plugin Directory." - #. translators: %s: post title #. translators: %s: taxonomy term name -#: wp-admin/includes/class-wp-posts-list-table.php:1219 -#: wp-admin/includes/class-wp-terms-list-table.php:448 -msgid "Quick edit “%s” inline" -msgstr "Hurtigrediger «%s» inline" - -#. translators: %s: taxonomy term name -#: wp-admin/includes/class-wp-terms-list-table.php:457 -msgid "Delete “%s”" -msgstr "Slett «%s»" - -#. translators: %s: taxonomy term name -#: wp-admin/includes/class-wp-terms-list-table.php:466 -msgid "View “%s” archive" -msgstr "Vis arkivet for «%s»" - -#: wp-admin/includes/class-plugin-upgrader-skin.php:46 -#: wp-admin/update-core.php:671 wp-admin/update-core.php:700 -msgid "Update progress" -msgstr "Fremdrift" - -#: wp-admin/includes/class-core-upgrader.php:31 -msgid "Another update is currently in progress." -msgstr "En annen oppdatering kjøres nå." - -#: wp-admin/includes/class-wp-comments-list-table.php:584 -#: wp-admin/includes/dashboard.php:631 -msgid "Edit this comment" -msgstr "Rediger denne kommentaren" - -#: wp-admin/includes/class-wp-comments-list-table.php:588 -msgid "Quick edit this comment inline" -msgstr "Hurtigrediger denne kommentaren inline" - -#. translators: %s: stream_get_contents() -#: wp-admin/includes/class-wp-filesystem-ssh2.php:69 -msgid "The ssh2 PHP extension is available, however, we require the PHP5 function %s" -msgstr "PHP-utvidelsen ssh2 er tilgjengelig, men vi krever PHP5-funksjonen %s" +#: wp-admin/includes/class-wp-media-list-table.php:377 +#: wp-admin/includes/class-wp-posts-list-table.php:942 +#: wp-admin/includes/class-wp-terms-list-table.php:384 +msgid "“%s” (Edit)" +msgstr "«%s» (rediger)" #: wp-admin/includes/class-wp-media-list-table.php:130 msgctxt "attachment filter" msgid "Trash" msgstr "Papirkurv" -#. translators: %s: attachment title -#. translators: %s: post title -#. translators: %s: taxonomy term name -#: wp-admin/includes/class-wp-media-list-table.php:377 -#: wp-admin/includes/class-wp-posts-list-table.php:912 -#: wp-admin/includes/class-wp-terms-list-table.php:382 -msgid "“%s” (Edit)" -msgstr "«%s» (rediger)" +#. translators: %s: stream_get_contents() +#: wp-admin/includes/class-wp-filesystem-ssh2.php:69 +msgid "The ssh2 PHP extension is available, however, we require the PHP5 function %s" +msgstr "PHP-utvidelsen ssh2 er tilgjengelig, men vi krever PHP5-funksjonen %s" -#. translators: %s: title of the post the attachment is attached to -#: wp-admin/includes/class-wp-media-list-table.php:501 -msgid "Detach from “%s”" -msgstr "Fjern fra «%s»" +#: wp-admin/includes/class-wp-comments-list-table.php:588 +msgid "Quick edit this comment inline" +msgstr "Hurtigrediger denne kommentaren inline" + +#: wp-admin/includes/class-wp-comments-list-table.php:584 +#: wp-admin/includes/dashboard.php:634 +msgid "Edit this comment" +msgstr "Rediger denne kommentaren" #: wp-admin/includes/class-wp-comments-list-table.php:570 msgid "Restore this comment from the spam" msgstr "Gjenopprett denne kommentaren fra spam" +#. translators: 1: user_login, 2: user_email +#: wp-admin/includes/ajax-actions.php:291 +msgctxt "user autocomplete result" +msgid "%1$s (%2$s)" +msgstr "%1$s (%2$s)" + #. translators: %s: importer slug #: wp-admin/import.php:64 msgid "The %s importer is invalid or is not installed." msgstr "%s-importøren er ugyldig eller ikke installert." -#. translators: 1: user_login, 2: user_email -#: wp-admin/includes/ajax-actions.php:293 -msgctxt "user autocomplete result" -msgid "%1$s (%2$s)" -msgstr "%1$s (%2$s)" - #: wp-admin/edit-form-comment.php:86 msgctxt "comment status" msgid "Pending" msgstr "Ventende" #. translators: %s: size in pixels -#: wp-admin/custom-header.php:531 -msgid "Images should be at least %s wide." -msgstr "Bilder bør være minst %s brede." +#: wp-admin/custom-header.php:564 +msgid "Suggested height is %s." +msgstr "Anbefalt høyde er %s." + +#. translators: %s: size in pixels +#: wp-admin/custom-header.php:554 +msgid "Suggested width is %s." +msgstr "Anbefalt bredde er %s." + +#. translators: %s: size in pixels +#: wp-admin/custom-header.php:542 +msgid "Images should be at least %s tall." +msgstr "Bilder bør være minst %s høye." #. translators: %d: custom header width #. translators: %d: custom header height @@ -1002,68 +1204,58 @@ msgid "%d pixels" msgstr "%d piksler" #. translators: %s: size in pixels -#: wp-admin/custom-header.php:542 -msgid "Images should be at least %s tall." -msgstr "Bilder bør være minst %s høye." +#: wp-admin/custom-header.php:531 +msgid "Images should be at least %s wide." +msgstr "Bilder bør være minst %s brede." -#. translators: %s: size in pixels -#: wp-admin/custom-header.php:554 -msgid "Suggested width is %s." -msgstr "Anbefalt bredde er %s." - -#. translators: %s: size in pixels -#: wp-admin/custom-header.php:564 -msgid "Suggested height is %s." -msgstr "Anbefalt høyde er %s." - -#: wp-admin/user-new.php:457 -msgid "Send User Notification" -msgstr "Send varsling til bruker" - -#: wp-admin/user-new.php:458 +#: wp-admin/user-new.php:470 msgid "Send the new user an email about their account." msgstr "Send en e-post til brukeren om den nye kontoen." +#: wp-admin/user-new.php:467 +msgid "Send User Notification" +msgstr "Send varsling til bruker" + #. translators: %s: menu name -#: wp-admin/nav-menus.php:817 +#: wp-admin/nav-menus.php:820 msgctxt "menu location" msgid "(Currently set to: %s)" msgstr "(Nå satt til: %s)" -#. translators: %s: WordPress version number -#: wp-admin/about.php:234 -msgid "Version %s addressed one security issue." -msgstr "Version %s tettet et sikkerhetshull." - #. translators: %s: site link -#: wp-admin/includes/schema.php:1010 wp-admin/includes/upgrade.php:160 +#: wp-admin/includes/schema.php:1010 wp-admin/includes/upgrade.php:163 msgid "Welcome to %s. This is your first post. Edit or delete it, then start blogging!" msgstr "Velkommen til %s. Dette er ditt første innlegg. Rediger eller slett det, og start bloggingen!" -#. translators: %s: Gravatar URL -#: wp-admin/user-edit.php:465 -msgid "You can change your profile picture on Gravatar." -msgstr "Du kan endre profilbildet ditt på Gravatar." +#. translators: %s: WordPress version number +#: wp-admin/about.php:258 +msgid "Version %s addressed one security issue." +msgstr "Version %s tettet et sikkerhetshull." -#: wp-admin/user-edit.php:466 +#: wp-admin/user-edit.php:501 msgid "https://en.gravatar.com/" msgstr "https://nb.gravatar.com/" -#: wp-admin/user-edit.php:459 +#. translators: %s: Gravatar URL +#: wp-admin/user-edit.php:500 +msgid "You can change your profile picture on Gravatar." +msgstr "Du kan endre profilbildet ditt på Gravatar." + +#: wp-admin/user-edit.php:494 msgid "Profile Picture" msgstr "Profilbilde" -#: wp-admin/about.php:225 -msgid "Maintenance Releases" -msgstr "Vedlikeholdsutgivelser" +#: wp-admin/about.php:255 +msgid "Maintenance and Security Releases" +msgstr "Vedlikehold- og sikkerhetsutgivelser" -#: wp-admin/about.php:228 +#: wp-admin/about.php:252 msgid "Security Releases" msgstr "Sikkerhetsutgivelser" -#: wp-admin/about.php:231 -msgid "Maintenance and Security Releases" -msgstr "Vedlikehold- og sikkerhetsutgivelser" +#: wp-admin/about.php:249 +msgid "Maintenance Releases" +msgstr "Vedlikeholdsutgivelser" #: wp-admin/options-permalink.php:181 msgid "Plain" @@ -1077,33 +1269,33 @@ msgstr "WordPress lar deg lage tilpassede URL-strukturer for dine permalenker og msgid "Permalinks can contain useful information, such as the post date, title, or other elements. You can choose from any of the suggested permalink formats, or you can craft your own if you select Custom Structure." msgstr "Permalenker kan inneholde nyttig informasjon, som innleggsdato, titel, med mer. Du kan velge fra de anbefalte permalink-formatene, eller du kan lage ditt eget hvis du velger Egendefinert struktur." -#. translators: %s: Codex URL -#: wp-admin/setup-config.php:170 -msgid "Need more help? We got it." -msgstr "Trenger du mer hjelp? Se her." - -#. translators: %s: localhost -#: wp-admin/setup-config.php:210 -msgid "You should be able to get this info from your web host, if %s doesn’t work." -msgstr "Det burde være mulig å få denne infoen fra din web-admin, hvis %s ikke fungerer." - #. translators: %s: wp-config.php -#: wp-admin/setup-config.php:363 -msgid "Sorry, but I can’t write the %s file." -msgstr "Beklager, men jeg kan ikke skrive %s-filen." - -#. translators: %s: wp-config.php -#: wp-admin/setup-config.php:367 +#: wp-admin/setup-config.php:364 msgid "You can create the %s manually and paste the following text into it." msgstr "Du kan lage %s manuelt og lime inn følgende tekst i den." +#. translators: %s: wp-config.php +#: wp-admin/setup-config.php:360 +msgid "Sorry, but I can’t write the %s file." +msgstr "Beklager, men jeg kan ikke skrive %s-filen." + +#. translators: %s: localhost +#: wp-admin/setup-config.php:208 +msgid "You should be able to get this info from your web host, if %s doesn’t work." +msgstr "Det burde være mulig å få denne infoen fra din web-admin, hvis %s ikke fungerer." + +#. translators: %s: Codex URL +#: wp-admin/setup-config.php:168 +msgid "Need more help? We got it." +msgstr "Trenger du mer hjelp? Se her." + #. translators: 1: wp-config-sample.php, 2: wp-config.php -#: wp-admin/setup-config.php:163 +#: wp-admin/setup-config.php:161 msgid "If for any reason this automatic file creation doesn’t work, don’t worry. All this does is fill in the database information to a configuration file. You may also simply open %1$s in a text editor, fill in your information, and save it as %2$s." msgstr "Hvis, av en eller annen grunn, den automatiske filopprettingen ikke fungerer, ikke vær urolig. Alt dette gjør er å fylle inn databaseinformasjonen i en konfigurasjonsfil. Du kan også enkelt åpne %1$s i en tekstredigerer, fylle inn din informasjon, og lagre den som %2$s." #. translators: %s: wp-config.php -#: wp-admin/setup-config.php:157 +#: wp-admin/setup-config.php:155 msgid "We’re going to use this information to create a %s file." msgstr "Vi vil bruke denne informasjonen for å lage filen %s." @@ -1112,194 +1304,194 @@ msgstr "Vi vil bruke denne informasjonen for å lage filen %s." msgid "Default is %s" msgstr "Standard er %s" -#. translators: %s: style.css -#: wp-admin/includes/class-theme-upgrader.php:451 -msgid "The theme is missing the %s stylesheet." -msgstr "Temaet mangler stilarket %s." - -#. translators: %s: style.css -#: wp-admin/includes/class-theme-upgrader.php:462 -msgid "The %s stylesheet doesn’t contain a valid theme header." -msgstr "Stilarket %s inneholder ikke en gyldig temabeskrivelse." - -#. translators: %s: index.php -#: wp-admin/includes/class-theme-upgrader.php:472 -msgid "The theme is missing the %s file." -msgstr "Temaet mangler filen %s." - #. translators: 1: .po 2: .mo #: wp-admin/includes/class-language-pack-upgrader.php:338 msgid "The language pack is missing either the %1$s or %2$s files." msgstr "Språkpakken mangler enten filen %1$s- eller %2$s-filene." -#: wp-admin/theme-install.php:169 +#. translators: %s: index.php +#: wp-admin/includes/class-theme-upgrader.php:473 +msgid "The theme is missing the %s file." +msgstr "Temaet mangler filen %s." + +#. translators: %s: style.css +#: wp-admin/includes/class-theme-upgrader.php:463 +msgid "The %s stylesheet doesn’t contain a valid theme header." +msgstr "Stilarket %s inneholder ikke en gyldig temabeskrivelse." + +#. translators: %s: style.css +#: wp-admin/includes/class-theme-upgrader.php:452 +msgid "The theme is missing the %s stylesheet." +msgstr "Temaet mangler stilarket %s." + +#: wp-admin/theme-install.php:175 msgid "If you have marked themes as favorites on WordPress.org, you can browse them here." msgstr "Hvis du har merket temaer som favoritter på WordPress.org, kan du finne dem her." -#: wp-admin/maint/repair.php:32 -msgid "Allow automatic database repair" -msgstr "Tillat automatisk databasereparasjon" +#: wp-admin/theme-install.php:158 +msgctxt "themes" +msgid "Favorites" +msgstr "Favoritter" #: wp-admin/maint/repair.php:74 msgid "Database repair results" msgstr "Resultater fra databasereparasjon" -#: wp-admin/theme-install.php:152 -msgctxt "themes" -msgid "Favorites" -msgstr "Favoritter" +#: wp-admin/maint/repair.php:32 +msgid "Allow automatic database repair" +msgstr "Tillat automatisk databasereparasjon" -#: wp-admin/maint/repair.php:66 -msgid "Check secret keys" -msgstr "Sjekk hemmelige nøkler" +#: wp-admin/setup-config.php:401 +msgid "Successful database connection" +msgstr "Vellykket databasetilkobling" + +#: wp-admin/setup-config.php:184 +msgid "Set up your database connection" +msgstr "Sett opp din databasetilkobling" + +#: wp-admin/setup-config.php:144 +msgid "Before getting started" +msgstr "Før du setter i gang" #: wp-admin/maint/repair.php:157 msgid "WordPress database repair" msgstr "WordPress databasereparasjon" -#: wp-admin/setup-config.php:146 -msgid "Before getting started" -msgstr "Før du setter i gang" - -#: wp-admin/setup-config.php:186 -msgid "Set up your database connection" -msgstr "Sett opp din databasetilkobling" - -#: wp-admin/setup-config.php:404 -msgid "Successful database connection" -msgstr "Vellykket databasetilkobling" - -#. translators: %s: walker class name -#: wp-admin/includes/nav-menu.php:925 -msgid "The Walker class named %s does not exist." -msgstr "Walker-klassen med navnet %s finnes ikke." +#: wp-admin/maint/repair.php:66 +msgid "Check secret keys" +msgstr "Sjekk hemmelige nøkler" #. translators: %s: nav menu title -#: wp-admin/includes/nav-menu.php:1074 +#: wp-admin/includes/nav-menu.php:1084 msgid "%s has been updated." msgstr "%s har blitt oppdatert." +#. translators: %s: walker class name +#: wp-admin/includes/nav-menu.php:935 +msgid "The Walker class named %s does not exist." +msgstr "Walker-klassen med navnet %s finnes ikke." + #. translators: 1: drop-in constant name, 2: wp-config.php -#: wp-admin/includes/class-wp-plugins-list-table.php:583 +#: wp-admin/includes/class-wp-plugins-list-table.php:584 msgid "Requires %1$s in %2$s file." msgstr "Krever %1$s i filen %2$s." -#. translators: %s: file name -#: wp-admin/includes/media.php:1496 -msgid "You are about to delete %s." -msgstr "Du er i ferd med å slette %s." - -#. translators: %s: date and time -#: wp-admin/options-general.php:205 -msgid "Daylight saving time begins on: %s." -msgstr "Sommertid begynner %s." - #. translators: %s: date and time #: wp-admin/options-general.php:207 msgid "Standard time begins on: %s." msgstr "Standardtid starter %s." +#. translators: %s: date and time +#: wp-admin/options-general.php:205 +msgid "Daylight saving time begins on: %s." +msgstr "Sommertid begynner %s." + +#. translators: %s: file name +#: wp-admin/includes/media.php:1504 +msgid "You are about to delete %s." +msgstr "Du er i ferd med å slette %s." + #. translators: %s: mu-plugins directory name -#: wp-admin/includes/class-wp-plugins-list-table.php:502 +#: wp-admin/includes/class-wp-plugins-list-table.php:503 msgid "Files in the %s directory are executed automatically." msgstr "Filer i mappen %s kjøres automatisk." -#: wp-admin/edit-tags.php:21 wp-admin/edit-tags.php:27 wp-admin/options.php:50 -msgid "Sorry, you are not allowed to manage these items." +#: wp-admin/options.php:50 +msgid "Sorry, you are not allowed to manage these options." msgstr "Beklager, du har ikke lov til å administrere dette." #: wp-admin/widgets.php:436 msgid "This will clear all items from the inactive widgets list. You will not be able to restore any customizations." msgstr "Dette vil slette alt fra listen med inaktive widgeter. Du vil ikke kunne gjenopprette tilpasninger som er gjort." -#: wp-admin/users.php:74 -msgid "Users list navigation" -msgstr "Navigasjon for brukerliste" - -#: wp-admin/users.php:75 -msgid "Users list" -msgstr "Brukerliste" +#: wp-admin/widgets.php:426 +msgid "Clear Inactive Widgets" +msgstr "Tøm inaktive widgeter" #: wp-admin/users.php:134 msgid "One of the selected users is not a member of this site." msgstr "En av de valgte brukerne er ikke et medlem på dette nettstedet." -#: wp-admin/widgets.php:426 -msgid "Clear Inactive Widgets" -msgstr "Tøm inaktive widgeter" +#: wp-admin/users.php:75 +msgid "Users list" +msgstr "Brukerliste" + +#: wp-admin/users.php:74 +msgid "Users list navigation" +msgstr "Navigasjon for brukerliste" #: wp-admin/users.php:73 msgid "Filter users list" msgstr "Filtrer brukerliste" -#: wp-admin/upload.php:212 -msgid "Filter media items list" -msgstr "Filtrer mediefilliste" +#: wp-admin/upload.php:217 +msgid "Media items list" +msgstr "Mediefilliste" -#: wp-admin/upload.php:213 +#: wp-admin/upload.php:216 msgid "Media items list navigation" msgstr "Navigasjon for mediefilliste" -#: wp-admin/upload.php:214 -msgid "Media items list" -msgstr "Mediefilliste" +#: wp-admin/upload.php:215 +msgid "Filter media items list" +msgstr "Filtrer mediefilliste" + +#: wp-admin/themes.php:355 +msgid "Install Parent Theme" +msgstr "Installer foreldretema" + +#: wp-admin/theme-install.php:217 +msgid "Themes list" +msgstr "Temaliste" + +#: wp-admin/theme-install.php:147 +msgid "Filter themes list" +msgstr "Filtrer temaliste" #. translators: %s: file extension #: wp-admin/theme-editor.php:226 msgid "%s files" msgstr "%s filer" -#: wp-admin/theme-install.php:141 -msgid "Filter themes list" -msgstr "Filtrer temaliste" - -#: wp-admin/theme-install.php:207 -msgid "Themes list" -msgstr "Temaliste" - -#: wp-admin/themes.php:351 -msgid "Install Parent Theme" -msgstr "Installer foreldretema" - -#: wp-admin/plugins.php:459 -msgid "The selected plugin has been deleted." -msgstr "Den valgte utvidelsen har blitt slettet." - -#: wp-admin/plugins.php:476 +#: wp-admin/plugins.php:490 msgid "All selected plugins are up to date." msgstr "Alle valgte utvidelser er oppdaterte." -#. translators: %s: plugin file name -#: wp-admin/plugin-editor.php:194 -msgid "Editing %s (active)" -msgstr "Redigerer %s (aktiv)" +#: wp-admin/plugins.php:473 +msgid "The selected plugin has been deleted." +msgstr "Den valgte utvidelsen har blitt slettet." + +#: wp-admin/plugin-install.php:105 wp-admin/plugins.php:416 +msgid "Plugins list" +msgstr "Utvidelsesliste" + +#: wp-admin/plugin-install.php:104 wp-admin/plugins.php:415 +msgid "Plugins list navigation" +msgstr "Navigasjon for utvidelsesliste" + +#: wp-admin/plugin-install.php:103 wp-admin/plugins.php:414 +msgid "Filter plugins list" +msgstr "Filtrer utvidelsesliste" #. translators: %s: plugin file name -#: wp-admin/plugin-editor.php:197 -msgid "Browsing %s (active)" -msgstr "Blar i %s (aktiv)" +#: wp-admin/plugin-editor.php:217 +msgid "Browsing %s (inactive)" +msgstr "Blar i %s (inaktiv)" #. translators: %s: plugin file name -#: wp-admin/plugin-editor.php:202 +#: wp-admin/plugin-editor.php:214 msgid "Editing %s (inactive)" msgstr "Redigerer %s (inaktiv)" #. translators: %s: plugin file name -#: wp-admin/plugin-editor.php:205 -msgid "Browsing %s (inactive)" -msgstr "Blar i %s (inaktiv)" +#: wp-admin/plugin-editor.php:209 +msgid "Browsing %s (active)" +msgstr "Blar i %s (aktiv)" -#: wp-admin/plugin-install.php:103 wp-admin/plugins.php:400 -msgid "Filter plugins list" -msgstr "Filtrer utvidelsesliste" - -#: wp-admin/plugin-install.php:104 wp-admin/plugins.php:401 -msgid "Plugins list navigation" -msgstr "Navigasjon for utvidelsesliste" - -#: wp-admin/plugin-install.php:105 wp-admin/plugins.php:402 -msgid "Plugins list" -msgstr "Utvidelsesliste" +#. translators: %s: plugin file name +#: wp-admin/plugin-editor.php:206 +msgid "Editing %s (active)" +msgstr "Redigerer %s (aktiv)" #: wp-admin/options-permalink.php:254 msgid "Documentation on Nginx configuration." @@ -1310,104 +1502,125 @@ msgstr "Dokumentasjon om Nginx-kon msgid "Local time is %s." msgstr "Lokal tid er %s." -#: wp-admin/my-sites.php:65 +#: wp-admin/my-sites.php:64 msgctxt "site" msgid "Add New" msgstr "Legg til nytt" -#: wp-admin/link-manager.php:65 +#: wp-admin/link-manager.php:71 msgid "Links list" msgstr "Lenkeliste" -#: wp-admin/includes/template.php:1039 +#: wp-admin/includes/update.php:214 +msgid "Get Version %s" +msgstr "Hent versjon %s" + +#: wp-admin/includes/template.php:1042 msgid "Toggle panel: %s" msgstr "Veksle panel: %s" -#: wp-admin/includes/update.php:206 -msgid "Get Version %s" -msgstr "Hent versjon %s" +#: wp-admin/includes/post.php:1651 +msgid "Saving revision…" +msgstr "Lagrer revisjon…" + +#: wp-admin/includes/post.php:1380 +msgid "Edit permalink" +msgstr "Rediger permalenke" #. translators: 1: Site Wide Only: true, 2: Network: true #: wp-admin/includes/plugin.php:89 msgid "The %1$s plugin header is deprecated. Use %2$s instead." msgstr "Utvidelsestoppen %1$s er utgått. Bruk %2$s isteden." -#: wp-admin/includes/post.php:1344 -msgid "Edit permalink" -msgstr "Rediger permalenke" - -#: wp-admin/includes/post.php:1617 -msgid "Saving revision…" -msgstr "Lagrer revisjon…" - -#. translators: user login -#: wp-admin/includes/ms.php:948 -msgid "What should be done with content owned by %s?" -msgstr "Hva skal gjøres med innhold som er eid av %s?" - -#: wp-admin/includes/ms.php:956 -msgid "Select a user" -msgstr "Velg en bruker" - -#: wp-admin/includes/ms.php:971 -msgid "Site: %s" -msgstr "Nettsted: %s" - -#: wp-admin/includes/ms.php:984 -msgid "User has no sites or content and will be deleted." -msgstr "Brukeren har ingen nettsteder eller innhold og vil bli slettet." - -#: wp-admin/includes/ms.php:998 -msgid "Once you hit “Confirm Deletion”, the user will be permanently removed." -msgstr "Når du klikker på «Bekreft sletting», vil brukeren bli slettet permanent." - -#: wp-admin/includes/ms.php:1000 +#: wp-admin/includes/ms.php:1017 msgid "Once you hit “Confirm Deletion”, these users will be permanently removed." msgstr "Når du klikker på «Bekreft sletting», vil brukerne bli slettet permanent." -#: wp-admin/includes/file.php:18 -msgid "Theme Footer" -msgstr "Temabunn (footer)" +#: wp-admin/includes/ms.php:1015 +msgid "Once you hit “Confirm Deletion”, the user will be permanently removed." +msgstr "Når du klikker på «Bekreft sletting», vil brukeren bli slettet permanent." + +#: wp-admin/includes/ms.php:1001 +msgid "User has no sites or content and will be deleted." +msgstr "Brukeren har ingen nettsteder eller innhold og vil bli slettet." + +#: wp-admin/includes/ms.php:988 +msgid "Site: %s" +msgstr "Nettsted: %s" + +#: wp-admin/includes/ms.php:973 +msgid "Select a user" +msgstr "Velg en bruker" + +#. translators: user login +#: wp-admin/includes/ms.php:965 +msgid "What should be done with content owned by %s?" +msgstr "Hva skal gjøres med innhold som er eid av %s?" + +#: wp-admin/includes/ms.php:952 +msgid "Warning! User cannot be deleted. The user %s is a network administrator." +msgstr "Advarsel! Bruker kan ikke slettes. Brukeren %s er nettverksadmin." + +#: wp-admin/includes/ms.php:948 +msgid "Warning! User %s cannot be deleted." +msgstr "Advarsel! Brukeren %s kan ikke slettes." + +#: wp-admin/includes/ms.php:933 +msgid "You have chosen to delete the following users from all networks and sites." +msgstr "Du har valgt å slette disse brukerne fra alle nettverker og nettsteder." + +#: wp-admin/includes/ms.php:931 +msgid "You have chosen to delete the user from all networks and sites." +msgstr "Du har valgt å slette brukeren fra alle nettverker og nettsteder." + +#: wp-admin/includes/media.php:868 +msgid "Invalid image URL" +msgstr "Ugyldig bilde-URL" #: wp-admin/includes/file.php:17 msgid "Theme Header" msgstr "Tematopp (header)" -#: wp-admin/includes/media.php:860 -msgid "Invalid image URL" -msgstr "Ugyldig bilde-URL" +#: wp-admin/includes/file.php:18 +msgid "Theme Footer" +msgstr "Temabunn (footer)" -#: wp-admin/includes/ms.php:914 -msgid "You have chosen to delete the user from all networks and sites." -msgstr "Du har valgt å slette brukeren fra alle nettverker og nettsteder." +#. translators: date and time format for recent posts on the dashboard, from a +#. different calendar year, see https://secure.php.net/date +#: wp-admin/includes/dashboard.php:850 +msgid "M jS Y" +msgstr "j. M Y" -#: wp-admin/includes/ms.php:916 -msgid "You have chosen to delete the following users from all networks and sites." -msgstr "Du har valgt å slette disse brukerne fra alle nettverker og nettsteder." +#. translators: 1: comment author, 2: notification if the comment is pending +#: wp-admin/includes/dashboard.php:698 +msgid "From %1$s %2$s" +msgstr "Fra %1$s %2$s" -#: wp-admin/includes/ms.php:931 -msgid "Warning! User %s cannot be deleted." -msgstr "Advarsel! Brukeren %s kan ikke slettes." +#: wp-admin/includes/dashboard.php:568 +msgid "View all drafts" +msgstr "Vis alle kladder" -#: wp-admin/includes/ms.php:935 -msgid "Warning! User cannot be deleted. The user %s is a network administrator." -msgstr "Advarsel! Bruker kan ikke slettes. Brukeren %s er nettverksadmin." +#: wp-admin/includes/class-wp-users-list-table.php:548 +msgctxt "no user roles" +msgid "None" +msgstr "Ingen" -#: wp-admin/includes/class-wp-screen.php:703 -msgid "Items list navigation" -msgstr "Navigasjon for innholdsliste" +#: wp-admin/includes/class-wp-users-list-table.php:218 +msgid "No role" +msgstr "Ingen rolle" -#: wp-admin/includes/class-wp-screen.php:704 -msgid "Items list" -msgstr "Innholdsliste" +#. translators: 1: Title of an update, 2: Error message +#: wp-admin/includes/class-bulk-upgrader-skin.php:42 +msgid "An error occurred while updating %1$s: %2$s" +msgstr "En feil skjedde når %1$s ble oppdatert: %2$s" -#: wp-admin/includes/class-wp-screen.php:921 -msgid "Additional settings" -msgstr "Flere innstillinger" +#: wp-admin/includes/class-wp-screen.php:1226 +msgid "View Mode" +msgstr "Visningsmodus" -#: wp-admin/includes/class-wp-screen.php:1030 -msgid "Boxes" -msgstr "Bokser" +#: wp-admin/includes/class-wp-screen.php:1179 +msgid "Pagination" +msgstr "Paginering" #: wp-admin/includes/class-wp-screen.php:1119 msgid "%s column" @@ -1415,83 +1628,51 @@ msgid_plural "%s columns" msgstr[0] "%s kolonne" msgstr[1] "%s kolonner" -#: wp-admin/includes/class-wp-screen.php:1179 -msgid "Pagination" -msgstr "Paginering" +#: wp-admin/includes/class-wp-screen.php:1030 +msgid "Boxes" +msgstr "Bokser" -#: wp-admin/includes/class-wp-screen.php:1226 -msgid "View Mode" -msgstr "Visningsmodus" +#: wp-admin/includes/class-wp-screen.php:921 +msgid "Additional settings" +msgstr "Flere innstillinger" -#. translators: 1: Title of an update, 2: Error message -#: wp-admin/includes/class-bulk-upgrader-skin.php:42 -msgid "An error occurred while updating %1$s: %2$s" -msgstr "En feil skjedde når %1$s ble oppdatert: %2$s" +#: wp-admin/includes/class-wp-screen.php:704 +msgid "Items list" +msgstr "Innholdsliste" -#: wp-admin/includes/class-wp-users-list-table.php:218 -msgid "No role" -msgstr "Ingen rolle" +#: wp-admin/includes/class-wp-screen.php:703 +msgid "Items list navigation" +msgstr "Navigasjon for innholdsliste" -#: wp-admin/includes/class-wp-users-list-table.php:548 -msgctxt "no user roles" -msgid "None" -msgstr "Ingen" +#: wp-admin/includes/class-wp-screen.php:702 +msgid "Filter items list" +msgstr "Filtrer innholdsliste" -#: wp-admin/includes/dashboard.php:565 -msgid "View all drafts" -msgstr "Vis alle kladder" +#: wp-admin/includes/class-wp-press-this.php:1483 +msgid "Saving…" +msgstr "Lagrer …" -#. translators: 1: comment author, 2: notification if the comment is pending -#: wp-admin/includes/dashboard.php:695 -msgid "From %1$s %2$s" -msgstr "Fra %1$s %2$s" +#: wp-admin/includes/class-wp-plugins-list-table.php:623 +msgid "Network Only" +msgstr "Kun nettverk" -#. translators: date and time format for recent posts on the dashboard, from a -#. different calendar year, see https://secure.php.net/date -#: wp-admin/includes/dashboard.php:847 -msgid "M jS Y" -msgstr "j. M Y" +#: wp-admin/includes/class-wp-plugins-list-table.php:619 +msgid "Network Active" +msgstr "Nettverksaktivert" -#: wp-admin/export.php:197 wp-admin/export.php:239 wp-admin/export.php:271 -msgid "End date:" -msgstr "Sluttdato:" +#: wp-admin/includes/class-wp-list-table.php:685 +msgid "No pending comments" +msgstr "Ingen ventende kommentarer" -#. translators: %s: the new user -#: wp-admin/includes/ajax-actions.php:1364 -msgid "User %s added" -msgstr "Bruker %s er lagt til" +#. translators: %s: hostname:port +#: wp-admin/includes/class-wp-filesystem-ssh2.php:159 +msgid "Failed to initialize a SFTP subsystem session with the SSH2 Server %s" +msgstr "Klarte ikke å initiere en SFTP subsystemsesjon med SSH2-serveren %s" -#. translators: %s: all comments count -#: wp-admin/includes/class-wp-comments-list-table.php:207 -msgctxt "comments" -msgid "All (%s)" -msgid_plural "All (%s)" -msgstr[0] "Alle (%s)" -msgstr[1] "Alle (%s)" - -#. translators: %s: pending comments count -#: wp-admin/includes/class-wp-comments-list-table.php:214 -msgctxt "comments" -msgid "Pending (%s)" -msgid_plural "Pending (%s)" -msgstr[0] "Ventende (%s)" -msgstr[1] "Ventende (%s)" - -#. translators: %s: approved comments count -#: wp-admin/includes/class-wp-comments-list-table.php:221 -msgctxt "comments" -msgid "Approved (%s)" -msgid_plural "Approved (%s)" -msgstr[0] "Godkjent (%s)" -msgstr[1] "Godkjente (%s)" - -#. translators: %s: spam comments count -#: wp-admin/includes/class-wp-comments-list-table.php:228 -msgctxt "comments" -msgid "Spam (%s)" -msgid_plural "Spam (%s)" -msgstr[0] "Spam (%s)" -msgstr[1] "Spam (%s)" +#: wp-admin/includes/class-wp-comments-list-table.php:405 +msgctxt "column name" +msgid "Submitted On" +msgstr "Sendt inn" #. translators: %s: trashed comments count #: wp-admin/includes/class-wp-comments-list-table.php:235 @@ -1501,49 +1682,60 @@ msgid_plural "Trash (%s)" msgstr[0] "Kastet (%s)" msgstr[1] "Kastede (%s)" -#: wp-admin/includes/class-wp-comments-list-table.php:405 -msgctxt "column name" -msgid "Submitted On" -msgstr "Sendt inn" +#. translators: %s: spam comments count +#: wp-admin/includes/class-wp-comments-list-table.php:228 +msgctxt "comments" +msgid "Spam (%s)" +msgid_plural "Spam (%s)" +msgstr[0] "Spam (%s)" +msgstr[1] "Spam (%s)" -#. translators: %s: hostname:port -#: wp-admin/includes/class-wp-filesystem-ssh2.php:159 -msgid "Failed to initialize a SFTP subsystem session with the SSH2 Server %s" -msgstr "Klarte ikke å initiere en SFTP subsystemsesjon med SSH2-serveren %s" +#. translators: %s: approved comments count +#: wp-admin/includes/class-wp-comments-list-table.php:221 +msgctxt "comments" +msgid "Approved (%s)" +msgid_plural "Approved (%s)" +msgstr[0] "Godkjent (%s)" +msgstr[1] "Godkjente (%s)" -#: wp-admin/includes/class-wp-list-table.php:686 -msgid "No pending comments" -msgstr "Ingen ventende kommentarer" +#. translators: %s: pending comments count +#: wp-admin/includes/class-wp-comments-list-table.php:214 +msgctxt "comments" +msgid "Pending (%s)" +msgid_plural "Pending (%s)" +msgstr[0] "Ventende (%s)" +msgstr[1] "Ventende (%s)" -#: wp-admin/includes/class-wp-plugins-list-table.php:618 -msgid "Network Active" -msgstr "Nettverksaktivert" +#. translators: %s: all comments count +#: wp-admin/includes/class-wp-comments-list-table.php:207 +msgctxt "comments" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "Alle (%s)" +msgstr[1] "Alle (%s)" -#: wp-admin/includes/class-wp-plugins-list-table.php:622 -msgid "Network Only" -msgstr "Kun nettverk" +#. translators: %s: the new user +#: wp-admin/includes/ajax-actions.php:1354 +msgid "User %s added" +msgstr "Bruker %s er lagt til" -#: wp-admin/includes/class-wp-press-this.php:1485 -msgid "Saving…" -msgstr "Lagrer …" - -#: wp-admin/includes/class-wp-screen.php:702 -msgid "Filter items list" -msgstr "Filtrer innholdsliste" - -#. translators: %s: default category -#: wp-admin/edit-tags.php:584 -msgid "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." -msgstr "Å slette en kategori sletter ikke innleggene i kategorien. Isteden får innleggene som kun hadde den slettede kategorien tilordnet kategorien %s." - -#: wp-admin/edit.php:198 -msgid "You can view posts in a simple title list or with an excerpt using the Screen Options tab." -msgstr "Du kan se innlegg i en enkel tittelliste eller med et utdrag ved hjelp av Visningsinnstillinger-fanen." +#: wp-admin/export.php:197 wp-admin/export.php:239 wp-admin/export.php:271 +msgid "End date:" +msgstr "Sluttdato:" #: wp-admin/export.php:164 msgid "Content to export" msgstr "Innhold som skal eksporteres" +#: wp-admin/edit.php:202 +msgid "You can view posts in a simple title list or with an excerpt using the Screen Options tab." +msgstr "Du kan se innlegg i en enkel tittelliste eller med et utdrag ved hjelp av Visningsinnstillinger-fanen." + +#. translators: %s: default category +#: wp-admin/edit-tags.php:538 +msgid "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." +msgstr "Å slette en kategori sletter ikke innleggene i kategorien. Isteden får innleggene som kun hadde den slettede kategorien tilordnet kategorien %s." + #. translators: %s: comment date #: wp-admin/edit-form-comment.php:98 msgid "Submitted on: %s" @@ -1554,33 +1746,33 @@ msgctxt "comment" msgid "Permalink:" msgstr "Permalenke:" -#: wp-admin/edit-form-advanced.php:160 -msgid "Page scheduled for: %s." -msgstr "Side planlagt for: %s." - #: wp-admin/edit-form-advanced.php:161 msgid "Page draft updated." msgstr "Sidekladd oppdatert." -#: wp-admin/edit-form-advanced.php:157 -msgid "Page published." -msgstr "Side er publisert." +#: wp-admin/edit-form-advanced.php:160 +msgid "Page scheduled for: %s." +msgstr "Side planlagt for: %s." #: wp-admin/edit-form-advanced.php:159 msgid "Page submitted." msgstr "Side innsendt." -#: wp-admin/edit-form-advanced.php:145 -msgid "Post submitted." -msgstr "Innlegg innstendt." +#: wp-admin/edit-form-advanced.php:157 +msgid "Page published." +msgstr "Side er publisert." + +#: wp-admin/edit-form-advanced.php:147 +msgid "Post draft updated." +msgstr "Utkast oppdatert." #: wp-admin/edit-form-advanced.php:146 msgid "Post scheduled for: %s." msgstr "Innlegg planlagt for: %s." -#: wp-admin/edit-form-advanced.php:147 -msgid "Post draft updated." -msgstr "Utkast oppdatert." +#: wp-admin/edit-form-advanced.php:145 +msgid "Post submitted." +msgstr "Innlegg innstendt." #: wp-admin/edit-form-advanced.php:143 msgid "Post published." @@ -1590,46 +1782,46 @@ msgstr "Innlegget er publisert." msgid "View page" msgstr "Se side" -#: wp-admin/edit-comments.php:172 -msgid "Filter comments list" -msgstr "Filtrer kommentarliste" - -#: wp-admin/edit-comments.php:173 -msgid "Comments list navigation" -msgstr "Navigasjon for kommentarliste" - -#: wp-admin/edit-comments.php:174 -msgid "Comments list" -msgstr "Kommentarliste" +#: wp-admin/edit-form-advanced.php:115 wp-admin/edit-form-advanced.php:121 +msgid "Preview page" +msgstr "Forhåndsvis side" #: wp-admin/edit-form-advanced.php:97 wp-admin/edit-form-advanced.php:103 msgid "Preview post" msgstr "Forhåndsvis innlegg" -#: wp-admin/edit-form-advanced.php:115 wp-admin/edit-form-advanced.php:121 -msgid "Preview page" -msgstr "Forhåndsvis side" +#: wp-admin/edit-comments.php:190 +msgid "Comments list" +msgstr "Kommentarliste" -#: wp-admin/edit-comments.php:159 +#: wp-admin/edit-comments.php:189 +msgid "Comments list navigation" +msgstr "Navigasjon for kommentarliste" + +#: wp-admin/edit-comments.php:188 +msgid "Filter comments list" +msgstr "Filtrer kommentarliste" + +#: wp-admin/edit-comments.php:175 msgid "In the Submitted On column, the date and time the comment was left on your site appears. Clicking on the date/time link will take you to that comment on your live site." msgstr "I Sendt inn-kolonnen vises datoen og tiden kommentaren ble lagt igjen på ditt nettsted. Klikker du på datolenken blir du tatt til den kommentaren på ditt nettsted." -#: wp-admin/edit-comments.php:157 +#: wp-admin/edit-comments.php:173 msgid "In the Comment column, hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment." msgstr "I Kommentar-kolonnen, når du holder musen over en kommentar får du valgene å godkjenne, svare (og godkjenne), hurtigredigere, redigere, merke som spam eller sende kommentaren til papirkurven." +#. translators: 1: comments count 2: post title +#: wp-admin/edit-comments.php:137 +msgid "Comments (%1$s) on “%2$s”" +msgstr "Kommentarer (%1$s) til «%2$s»" + #: wp-admin/custom-header.php:893 msgid "The current theme does not support a flexible sized header image." msgstr "Det aktive temaet støtter ikke et toppbilde med fleksibel størrelse." -#: wp-admin/edit-comments.php:14 -msgid "Sorry, you are not allowed to edit comments." -msgstr "Beklager, du har ikke lov til å redigere kommentarer." - -#. translators: 1: comments count 2: post title -#: wp-admin/edit-comments.php:121 -msgid "Comments (%1$s) on “%2$s”" -msgstr "Kommentarer (%1$s) til «%2$s»" +#: wp-admin/custom-header.php:727 wp-admin/custom-header.php:885 +msgid "The current theme does not support uploading a custom header image." +msgstr "Det aktive temaet støtter ikke opplasting av et eget sidetopp-bilde." #. translators: %s: comment link #: wp-admin/comment.php:187 @@ -1637,11 +1829,7 @@ msgstr "Kommentarer (%1$s) til «%2$s»" msgid "In reply to %s." msgstr "Som svar til %s." -#: wp-admin/custom-header.php:727 wp-admin/custom-header.php:885 -msgid "The current theme does not support uploading a custom header image." -msgstr "Det aktive temaet støtter ikke opplasting av et eget sidetopp-bilde." - -#: wp-admin/includes/user.php:464 +#: wp-admin/includes/user.php:478 msgid "You’re using the auto-generated password for your account. Would you like to change it?" msgstr "Du bruker det autogenererte passordet for din konto. Ønsker du å endre det?" @@ -1650,34 +1838,34 @@ msgid "You have specified this user for removal:" msgstr "Du har merket denne brukeren for sletting:" #. translators: 1: User's display name. -#: wp-admin/user-edit.php:569 +#: wp-admin/user-edit.php:606 msgid "Log %s out of all locations." msgstr "Logg ut %s fra alle sesjoner." -#: wp-admin/user-edit.php:557 +#: wp-admin/user-edit.php:594 msgid "Did you lose your phone or leave your account logged in at a public computer? You can log out everywhere else, and stay logged in here." msgstr "Mistet du telefonen eller glemte du å logge ut fra en offentlig datamaskin? Her kan du logge ut alle andre steder, men fortsatt være logget inn her." -#: wp-admin/user-edit.php:545 wp-admin/user-edit.php:555 -msgid "Log Out Everywhere Else" -msgstr "Logg ut alle andre steder" +#: wp-admin/user-edit.php:543 +msgid "Generate Password" +msgstr "Generer passord" -#: wp-admin/user-edit.php:515 wp-admin/user-new.php:434 -msgid "Cancel password change" -msgstr "Avbryt passordendring" - -#: wp-admin/user-edit.php:543 wp-admin/user-edit.php:553 -#: wp-admin/user-edit.php:563 -msgid "Sessions" -msgstr "Sesjoner" - -#: wp-admin/user-edit.php:500 +#: wp-admin/user-edit.php:537 msgid "Account Management" msgstr "Administrer kontoer" -#: wp-admin/user-edit.php:506 -msgid "Generate Password" -msgstr "Generer passord" +#: wp-admin/user-edit.php:580 wp-admin/user-edit.php:590 +#: wp-admin/user-edit.php:600 +msgid "Sessions" +msgstr "Sesjoner" + +#: wp-admin/user-edit.php:552 wp-admin/user-new.php:444 +msgid "Cancel password change" +msgstr "Avbryt passordendring" + +#: wp-admin/user-edit.php:582 wp-admin/user-edit.php:592 +msgid "Log Out Everywhere Else" +msgstr "Logg ut alle andre steder" #. translators: The non-breaking space prevents 1Password from thinking the #. text "log in" should trigger a password save prompt. @@ -1685,49 +1873,45 @@ msgstr "Generer passord" msgid "You will need this password to log in. Please store it in a secure location." msgstr "Du vil trenge dette passordet for å logge inn. Vennligst lagre det på en sikker plass." -#: wp-admin/includes/class-wp-list-table.php:673 +#: wp-admin/includes/class-wp-list-table.php:672 msgid "No approved comments" msgstr "Ingen godkjente kommentarer" -#: wp-admin/includes/class-wp-list-table.php:655 -msgid "%s approved comment" -msgid_plural "%s approved comments" -msgstr[0] "%s godkjent kommentar" -msgstr[1] "%s godkjente kommentarer" +#: wp-admin/includes/class-wp-list-table.php:660 +#: wp-admin/includes/class-wp-list-table.php:672 +#: wp-admin/includes/class-wp-list-table.php:685 +msgid "No comments" +msgstr "Ingen kommentarer" -#: wp-admin/includes/class-wp-list-table.php:656 +#: wp-admin/includes/class-wp-list-table.php:655 msgid "%s pending comment" msgid_plural "%s pending comments" msgstr[0] "%s ventende kommentar" msgstr[1] "%s ventende kommentarer" -#: wp-admin/includes/class-wp-list-table.php:661 -#: wp-admin/includes/class-wp-list-table.php:673 -#: wp-admin/includes/class-wp-list-table.php:686 -msgid "No comments" -msgstr "Ingen kommentarer" - -#: wp-admin/includes/ajax-actions.php:3181 -msgid "Image could not be processed." -msgstr "Kunne ikke behandle bildet." - #: wp-admin/includes/class-wp-list-table.php:654 +msgid "%s approved comment" +msgid_plural "%s approved comments" +msgstr[0] "%s godkjent kommentar" +msgstr[1] "%s godkjente kommentarer" + +#: wp-admin/includes/class-wp-list-table.php:653 msgid "%s comment" msgid_plural "%s comments" msgstr[0] "%s kommentar" msgstr[1] "%s kommentarer" +#: wp-admin/includes/ajax-actions.php:3162 +msgid "Image could not be processed." +msgstr "Kunne ikke behandle bildet." + #. translators: %s: plugin name -#: wp-admin/includes/class-wp-plugins-list-table.php:641 +#: wp-admin/includes/class-wp-plugins-list-table.php:642 msgid "Edit %s" msgstr "Rediger %s" -#: wp-admin/install.php:171 wp-admin/user-new.php:452 -msgid "Confirm use of weak password" -msgstr "Bekreft bruk av svake passord" - -#: wp-admin/install.php:167 wp-admin/user-edit.php:530 -#: wp-admin/user-new.php:448 +#: wp-admin/install.php:167 wp-admin/user-edit.php:567 +#: wp-admin/user-new.php:458 msgid "Confirm Password" msgstr "Bekreft passord" @@ -1737,74 +1921,74 @@ msgid "While you are editing your %1$s file, take a moment to make sure you have msgstr "Når du redigerer din %1$s-fil, bruk et minutt på å forsikre deg om at du har alle åtte (8) nøkler og at de er unike. Du kan generere disse ved å bruke Wordpress.org's secret key service." #: wp-admin/includes/class-wp-comments-list-table.php:616 -#: wp-admin/includes/class-wp-list-table.php:524 -#: wp-admin/includes/class-wp-list-table.php:1325 -#: wp-admin/includes/update.php:679 +#: wp-admin/includes/class-wp-list-table.php:523 +#: wp-admin/includes/class-wp-list-table.php:1324 +#: wp-admin/includes/update.php:687 msgid "Show more details" msgstr "Vis flere detaljer" -#: wp-admin/includes/class-theme-installer-skin.php:69 -#: wp-admin/includes/class-theme-upgrader-skin.php:59 -msgid "Live Preview “%s”" -msgstr "Forhåndsvis “%s”" - #: wp-admin/includes/class-wp-users-list-table.php:485 msgid "%s post by this author" msgid_plural "%s posts by this author" msgstr[0] "%s innlegg av denne forfatteren" msgstr[1] "%s innlegg av denne forfatteren" -#: wp-admin/includes/class-wp-list-table.php:842 -msgid "Last page" -msgstr "Siste side" +#: wp-admin/includes/class-theme-installer-skin.php:69 +#: wp-admin/includes/class-theme-upgrader-skin.php:59 +msgid "Live Preview “%s”" +msgstr "Forhåndsvis “%s”" + +#: wp-admin/includes/class-wp-press-this.php:1486 +msgid "More actions" +msgstr "Flere handlinger" #: wp-admin/includes/class-wp-press-this.php:223 msgid "This category already exists." msgstr "Denne kategorien finnes allerede." -#: wp-admin/includes/class-wp-press-this.php:1488 -msgid "More actions" -msgstr "Flere handlinger" +#: wp-admin/includes/class-wp-list-table.php:841 +msgid "Last page" +msgstr "Siste side" -#: wp-admin/edit-form-comment.php:84 -msgid "Comment status" -msgstr "Kommentarstatus" - -#: wp-admin/edit-form-comment.php:104 wp-admin/includes/meta-boxes.php:206 -msgid "Date and time" -msgstr "Dato og tid" - -#. translators: %s: post link -#: wp-admin/edit-form-comment.php:122 -msgid "In response to: %s" -msgstr "Kommentar til: %s" +#: wp-admin/includes/class-wp-list-table.php:798 +msgid "First page" +msgstr "Første side" #. translators: %s: comment link #: wp-admin/edit-form-comment.php:137 msgid "In reply to: %s" msgstr "Svar på: %s" -#: wp-admin/includes/class-wp-list-table.php:799 -msgid "First page" -msgstr "Første side" +#. translators: %s: post link +#: wp-admin/edit-form-comment.php:122 +msgid "In response to: %s" +msgstr "Kommentar til: %s" + +#: wp-admin/edit-form-comment.php:104 wp-admin/includes/meta-boxes.php:214 +msgid "Date and time" +msgstr "Dato og tid" + +#: wp-admin/edit-form-comment.php:84 +msgid "Comment status" +msgstr "Kommentarstatus" #: wp-admin/options-general.php:77 msgid "Enter the address here if you want your site home page to be different from your WordPress installation directory." msgstr "Skriv inn adressen her hvis du vil at nettstedets forside skal være forskjellig fra mappen WordPress er installert i." -#: wp-admin/revision.php:119 -msgid "Revisions Management" -msgstr "Revisjonshåndtering" +#: wp-admin/revision.php:120 +msgid "Revisions Management" +msgstr "Revisjonshåndtering" -#: wp-admin/edit-form-advanced.php:420 +#: wp-admin/edit-form-advanced.php:421 msgid "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." msgstr "Du kan også bygge inn media fra mange populære nettsteder som Twitter, YouTube, Flickr og andre ved å lime inn media-URL-en på en egen linje i et innlegg eller på en side. Vennligst sjekk ut Codex for å lære mer om innbygging." -#: wp-admin/includes/dashboard.php:1502 +#: wp-admin/includes/dashboard.php:1501 msgid "https://codex.wordpress.org/First_Steps_With_WordPress" msgstr "https://codex.wordpress.org/First_Steps_With_WordPress" -#: wp-admin/edit-form-advanced.php:436 +#: wp-admin/edit-form-advanced.php:437 msgid "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." msgstr "Format – Innleggsformater avgjør hvordan ditt tema vil vise et valgt innlegg. For eksempel kan du ha et standard-innlegg med tittel og tekst, eller en kort notis som ikke har tittel og kun har en liten tekst. Vennligst se Codex for beskrivelser av de ulike innleggsformatene. Ditt tema kan aktivere alle eller bare noen av de 10 mulige formatene." @@ -1812,232 +1996,242 @@ msgstr "Format – Innleggsformater avgjør hvordan ditt tema v msgid "WordPress is not notifying any Update Services because of your site’s visibility settings." msgstr "WordPress sier ikke ifra til noen Oppdateringstjenester på grunn av ditt nettsteds synlighetsinnstillinger." -#: wp-admin/edit-tags.php:286 -msgid "Documentation on Tags" -msgstr "Dokumentasjon om stikkord" +#: wp-admin/edit-tags.php:268 +msgid "Documentation on Tags" +msgstr "Dokumentasjon om stikkord" #: wp-admin/options-writing.php:45 -msgid "Documentation on Writing Settings" -msgstr "Dokumentasjon om skrive-innstillinger" - -#: wp-admin/edit-form-advanced.php:396 -msgid "Documentation on Adding New Pages" -msgstr "Dokumentasjon om å legge til nye sider" - -#: wp-admin/edit.php:245 -msgid "Documentation on Managing Pages" -msgstr "Dokumentasjon om håndterering av sider" - -#: wp-admin/nav-menus.php:570 -msgid "Documentation on Menus" -msgstr "Dokumentasjon om menyer" - -#: wp-admin/import.php:29 -msgid "Documentation on Import" -msgstr "Dokumentasjon om import" - -#: wp-admin/custom-background.php:100 -msgid "Documentation on Custom Background" -msgstr "Dokumentasjon om egendefinert bakgrunn" - -#: wp-admin/plugin-editor.php:143 -msgid "Documentation on Editing Plugins" -msgstr "Dokumentasjon om redigering av utvidelser" - -#: wp-admin/widgets.php:74 -msgid "Documentation on Widgets" -msgstr "Dokumentasjon om widgeter" - -#: wp-admin/index.php:98 -msgid "Documentation on Dashboard" -msgstr "Dokumentasjon om kontrollpanel" - -#: wp-admin/edit-tags.php:284 -msgid "Documentation on Link Categories" -msgstr "Dokumentasjon om lenkekategorier" - -#: wp-admin/edit.php:224 -msgid "Documentation on Managing Posts" -msgstr "Dokumentasjon om administrering av innlegg" - -#: wp-admin/edit-tags.php:282 -msgid "Documentation on Categories" -msgstr "Dokumentasjon om kategorier" - -#: wp-admin/plugin-install.php:98 -msgid "Documentation on Installing Plugins" -msgstr "Dokumentasjon om installering av utvidelser" - -#: wp-admin/user-new.php:206 -msgid "Documentation on Adding New Users" -msgstr "Dokumentasjon om å legge til nye brukere" - -#: wp-admin/options-reading.php:38 -msgid "Documentation on Reading Settings" -msgstr "Dokumentasjon om leseinnstillinger" - -#: wp-admin/edit-link-form.php:65 -msgid "Documentation on Creating Links" -msgstr "Dokumentasjon om å opprette lenker" - -#: wp-admin/options-discussion.php:28 -msgid "Documentation on Discussion Settings" -msgstr "Dokumentasjon om diskusjonsinnstillinger" - -#: wp-admin/options-permalink.php:44 -msgid "Documentation on Permalinks Settings" -msgstr "Dokumentasjon om permalenkeinnstillinger" - -#: wp-admin/user-edit.php:54 -msgid "Documentation on User Profiles" -msgstr "Dokumentasjon om brukerprofiler" - -#: wp-admin/media-new.php:56 -msgid "Documentation on Uploading Media Files" -msgstr "Dokumentasjon om opplasting av mediafiler" - -#: wp-admin/users.php:67 -msgid "Documentation on Managing Users" -msgstr "Dokumentasjon om håndtering av brukere" - -#: wp-admin/comment.php:51 wp-admin/edit-comments.php:165 -msgid "Documentation on Comments" -msgstr "Dokumentasjon om kommentarer" - -#: wp-admin/edit-form-advanced.php:381 -msgid "Documentation on Writing and Editing Posts" -msgstr "Dokumentasjon om skriving og redigering av innlegg" - -#: wp-admin/update-core.php:576 -msgid "Documentation on Updating WordPress" -msgstr "Dokumentasjon om oppdatering av WordPress" - -#: wp-admin/options-media.php:34 -msgid "Documentation on Media Settings" -msgstr "Dokumentasjon om medieinnstillinger" - -#: wp-admin/options-general.php:45 -msgid "Documentation on General Settings" -msgstr "Dokumentasjon om generelle innstillinger" - -#: wp-admin/export.php:54 -msgid "Documentation on Export" -msgstr "Dokumentasjon om Eksport" - -#: wp-admin/link-manager.php:60 -msgid "Documentation on Managing Links" -msgstr "Dokumentasjon om håndtering av lenker" - -#: wp-admin/custom-header.php:127 -msgid "Documentation on Custom Header" -msgstr "Dokumentasjon av egendefinert sidetopp" - -#: wp-admin/tools.php:28 -msgid "Documentation on Tools" -msgstr "Dokumentasjon om Verktøy" - -#: wp-admin/upload.php:66 wp-admin/upload.php:207 -msgid "Documentation on Media Library" -msgstr "Dokumentasjon om Mediabibliotek" +msgid "Documentation on Writing Settings" +msgstr "Dokumentasjon om skrive-innstillinger" #: wp-admin/edit-form-advanced.php:397 -msgid "Documentation on Editing Pages" -msgstr "Dokumentasjon om redigering av sider" +msgid "Documentation on Adding New Pages" +msgstr "Dokumentasjon om å legge til nye sider" -#: wp-admin/edit-form-advanced.php:413 wp-admin/media.php:83 -msgid "Documentation on Edit Media" -msgstr "Dokumentasjon om redigering av media" +#: wp-admin/edit.php:249 +msgid "Documentation on Managing Pages" +msgstr "Dokumentasjon om håndterering av sider" + +#: wp-admin/nav-menus.php:571 +msgid "Documentation on Menus" +msgstr "Dokumentasjon om menyer" + +#: wp-admin/import.php:29 +msgid "Documentation on Import" +msgstr "Dokumentasjon om import" + +#: wp-admin/custom-background.php:100 +msgid "Documentation on Custom Background" +msgstr "Dokumentasjon om egendefinert bakgrunn" + +#: wp-admin/plugin-editor.php:155 +msgid "Documentation on Editing Plugins" +msgstr "Dokumentasjon om redigering av utvidelser" + +#: wp-admin/widgets.php:74 +msgid "Documentation on Widgets" +msgstr "Dokumentasjon om widgeter" + +#: wp-admin/index.php:97 +msgid "Documentation on Dashboard" +msgstr "Dokumentasjon om kontrollpanel" + +#: wp-admin/edit-tags.php:266 +msgid "Documentation on Link Categories" +msgstr "Dokumentasjon om lenkekategorier" + +#: wp-admin/edit.php:228 +msgid "Documentation on Managing Posts" +msgstr "Dokumentasjon om administrering av innlegg" + +#: wp-admin/edit-tags.php:264 +msgid "Documentation on Categories" +msgstr "Dokumentasjon om kategorier" + +#: wp-admin/plugin-install.php:98 +msgid "Documentation on Installing Plugins" +msgstr "Dokumentasjon om installering av utvidelser" + +#: wp-admin/user-new.php:213 +msgid "Documentation on Adding New Users" +msgstr "Dokumentasjon om å legge til nye brukere" + +#: wp-admin/options-reading.php:38 +msgid "Documentation on Reading Settings" +msgstr "Dokumentasjon om leseinnstillinger" + +#: wp-admin/edit-link-form.php:65 +msgid "Documentation on Creating Links" +msgstr "Dokumentasjon om å opprette lenker" + +#: wp-admin/options-discussion.php:28 +msgid "Documentation on Discussion Settings" +msgstr "Dokumentasjon om diskusjonsinnstillinger" + +#: wp-admin/options-permalink.php:44 +msgid "Documentation on Permalinks Settings" +msgstr "Dokumentasjon om permalenkeinnstillinger" + +#: wp-admin/user-edit.php:55 +msgid "Documentation on User Profiles" +msgstr "Dokumentasjon om brukerprofiler" + +#: wp-admin/media-new.php:56 +msgid "Documentation on Uploading Media Files" +msgstr "Dokumentasjon om opplasting av mediafiler" + +#: wp-admin/users.php:67 +msgid "Documentation on Managing Users" +msgstr "Dokumentasjon om håndtering av brukere" + +#: wp-admin/comment.php:51 wp-admin/edit-comments.php:181 +msgid "Documentation on Comments" +msgstr "Dokumentasjon om kommentarer" + +#: wp-admin/edit-form-advanced.php:382 +msgid "Documentation on Writing and Editing Posts" +msgstr "Dokumentasjon om skriving og redigering av innlegg" + +#: wp-admin/update-core.php:573 +msgid "Documentation on Updating WordPress" +msgstr "Dokumentasjon om oppdatering av WordPress" + +#: wp-admin/options-media.php:34 +msgid "Documentation on Media Settings" +msgstr "Dokumentasjon om medieinnstillinger" + +#: wp-admin/options-general.php:45 +msgid "Documentation on General Settings" +msgstr "Dokumentasjon om generelle innstillinger" + +#: wp-admin/export.php:54 +msgid "Documentation on Export" +msgstr "Dokumentasjon om Eksport" + +#: wp-admin/link-manager.php:66 +msgid "Documentation on Managing Links" +msgstr "Dokumentasjon om håndtering av lenker" + +#: wp-admin/custom-header.php:127 +msgid "Documentation on Custom Header" +msgstr "Dokumentasjon av egendefinert sidetopp" + +#: wp-admin/tools.php:28 +msgid "Documentation on Tools" +msgstr "Dokumentasjon om Verktøy" + +#: wp-admin/upload.php:66 wp-admin/upload.php:210 +msgid "Documentation on Media Library" +msgstr "Dokumentasjon om Mediabibliotek" + +#: wp-admin/edit-form-advanced.php:398 +msgid "Documentation on Editing Pages" +msgstr "Dokumentasjon om redigering av sider" + +#: wp-admin/edit-form-advanced.php:414 wp-admin/media.php:83 +msgid "Documentation on Edit Media" +msgstr "Dokumentasjon om redigering av media" #: wp-admin/users.php:68 -msgid "Descriptions of Roles and Capabilities" -msgstr "Beskrivelser av roller og muligheter" +msgid "Descriptions of Roles and Capabilities" +msgstr "Beskrivelser av roller og muligheter" #: wp-admin/options-permalink.php:45 -msgid "Documentation on Using Permalinks" -msgstr "Dokumentasjon om å bruke permalenker" +msgid "Documentation on Using Permalinks" +msgstr "Dokumentasjon om å bruke permalenker" -#: wp-admin/edit-comments.php:167 -msgid "Documentation on Keyboard Shortcuts" -msgstr "Dokumentasjon om hurtigtaster" +#: wp-admin/edit-comments.php:183 +msgid "Documentation on Keyboard Shortcuts" +msgstr "Dokumentasjon om hurtigtaster" -#: wp-admin/plugin-editor.php:144 -msgid "Documentation on Writing Plugins" -msgstr "Dokumentasjon om å skrive utvidelser" +#: wp-admin/plugin-editor.php:156 +msgid "Documentation on Writing Plugins" +msgstr "Dokumentasjon om å skrive utvidelser" -#: wp-admin/my-sites.php:48 -msgid "Documentation on My Sites" -msgstr "Dokumentasjon om Mine nettsteder" +#: wp-admin/my-sites.php:47 +msgid "Documentation on My Sites" +msgstr "Dokumentasjon om Mine nettsteder" -#: wp-admin/user-edit.php:260 +#: wp-admin/user-edit.php:261 msgid "More information" msgstr "Mer informasjon" -#: wp-admin/edit-comments.php:166 -msgid "Documentation on Comment Spam" -msgstr "Dokumentasjon om kommentar-spam" +#: wp-admin/edit-comments.php:182 +msgid "Documentation on Comment Spam" +msgstr "Dokumentasjon om kommentar-spam" #: wp-admin/options-general.php:298 msgid "Documentation on date and time formatting." msgstr "Dokumentasjon om formatering av dato og tid." -#: wp-admin/update-core.php:77 -msgid "You can update to WordPress %2$s automatically or download the package and install it manually:" -msgstr "Du kan oppdatere til WordPress %2$s automatisk eller laste ned pakken og installere den manuelt:" - -#: wp-admin/update-core.php:181 +#: wp-admin/update-core.php:183 msgid "Important: before updating, please back up your database and files. For help with updates, visit the Updating WordPress Codex page." msgstr "Viktig: før du oppdaterer, vennligst ta sikkerhetskopi av databasen og filene dine. Hvis du trenger hjelp med oppdateringer, kan du gå til supportsiden Oppdatering av WordPress." -#: wp-admin/theme-install.php:108 -msgid "Documentation on Adding New Themes" -msgstr "Dokumentasjon om installering av nye temaer" +#: wp-admin/theme-install.php:114 +msgid "Documentation on Adding New Themes" +msgstr "Dokumentasjon om installering av nye temaer" #: wp-admin/theme-editor.php:39 -msgid "Documentation on Theme Development" -msgstr "Dokumentasjon om utvikling av temaer" +msgid "Documentation on Theme Development" +msgstr "Dokumentasjon om utvikling av temaer" #: wp-admin/theme-editor.php:40 wp-admin/themes.php:118 -msgid "Documentation on Using Themes" -msgstr "Dokumentasjon om bruk av temaer" +msgid "Documentation on Using Themes" +msgstr "Dokumentasjon om bruk av temaer" #: wp-admin/theme-editor.php:41 -msgid "Documentation on Editing Files" -msgstr "Dokumentasjon om filredigering" +msgid "Documentation on Editing Files" +msgstr "Dokumentasjon om filredigering" #: wp-admin/theme-editor.php:42 -msgid "Documentation on Template Tags" -msgstr "Dokumentasjon om mal-tagger" +msgid "Documentation on Template Tags" +msgstr "Dokumentasjon om mal-tagger" -#: wp-admin/plugins.php:395 -msgid "Documentation on Managing Plugins" -msgstr "Dokumentasjon om håndtering av utvidelser" +#: wp-admin/plugins.php:409 +msgid "Documentation on Managing Plugins" +msgstr "Dokumentasjon om håndtering av utvidelser" #. translators: %s: the option/setting -#: wp-admin/options.php:202 +#: wp-admin/options.php:204 msgid "The %s setting is unregistered. Unregistered settings are deprecated. See https://codex.wordpress.org/Settings_API" msgstr "innstillingen %s er uregistrert. Uregistrerte innstillinger er utgått. Se https://codex.wordpress.org/Settings_API" -#: wp-admin/update-core.php:71 wp-admin/upgrade.php:81 +#. translators: 1: WordPress version number, 2: Minimum required PHP version +#. number, 3: Minimum required MySQL version number, 4: Current PHP version +#. number, 5: Current MySQL version number +#: wp-admin/update-core.php:72 wp-admin/upgrade.php:81 msgid "You cannot update because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s." msgstr "Du kan ikke oppdatere fordi WordPress %1$s krever PHP versjon %2$s eller høyere og MySQL versjon %3$s eller høyere. Du bruker PHP versjon %4$s og MySQL verson %5$s." -#: wp-admin/update-core.php:73 wp-admin/upgrade.php:83 +#. translators: 1: WordPress version number, 2: Minimum required PHP version +#. number, 3: Current PHP version number +#: wp-admin/update-core.php:75 wp-admin/upgrade.php:83 msgid "You cannot update because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s." msgstr "Du kan ikke oppdatere fordi WordPress %1$s krever PHP versjon %2$s eller høyere. Du bruker versjon %3$s." -#: wp-admin/update-core.php:75 wp-admin/upgrade.php:85 +#. translators: 1: WordPress version number, 2: Minimum required MySQL version +#. number, 3: Current MySQL version number +#: wp-admin/update-core.php:78 wp-admin/upgrade.php:85 msgid "You cannot update because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s." msgstr "Du kan ikke oppdatere fordi WordPress %1$s krever MySQL versjon %2$s eller høyere. Du bruker versjon %3$s." -#: wp-admin/install.php:236 +#. translators: 1: WordPress version number, 2: Minimum required PHP version +#. number, 3: Minimum required MySQL version number, 4: Current PHP version +#. number, 5: Current MySQL version number +#: wp-admin/install.php:237 msgid "You cannot install because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s." msgstr "Du kan ikke installere fordi WordPress %1$s krever PHP versjon %2$s eller høyere og MySQL versjon %3$s eller høyere. Du bruker PHP versjon %4$s og MySQL versjon %5$s." -#: wp-admin/install.php:238 +#. translators: 1: WordPress version number, 2: Minimum required PHP version +#. number, 3: Current PHP version number +#: wp-admin/install.php:240 msgid "You cannot install because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s." msgstr "Du kan ikke installere fordi WordPress %1$s krever PHP versjon %2$s eller høyere. Du bruker versjon %3$s." -#: wp-admin/install.php:240 +#. translators: 1: WordPress version number, 2: Minimum required MySQL version +#. number, 3: Current MySQL version number +#: wp-admin/install.php:243 msgid "You cannot install because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s." msgstr "Du kan ikke installere fordi WordPress %1$s krever MySQL versjon %2$s eller høyere. Du bruker versjon %3$s." @@ -2045,7 +2239,7 @@ msgstr "Du kan ikke installere fordi follow these instructions." msgstr "Temaet du bruker støtter ikke widgeter. Dette betyr at temaet ikke har noen sidekolonner som du kan endre. For mer informasjon om hvordan du kan gjøre temaet ditt mottagelig for widgeter, vennligst følg disse instruksjonene." -#: wp-admin/plugin-editor.php:280 wp-admin/theme-editor.php:279 +#: wp-admin/plugin-editor.php:292 wp-admin/theme-editor.php:279 msgid "You need to make this file writable before you can save your changes. See the Codex for more information." msgstr "Du trenger å gjøre denne filen skrivbar før du kan lagre endringene dine. Se Codex for mer informasjon." @@ -2065,7 +2259,7 @@ msgstr "Hvis toppnivået for nettstedet ditt var web.config file were writable, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your web.config file. Click in the field and press CTRL + a to select all. Then insert this rule inside of the /<configuration>/<system.webServer>/<rewrite>/<rules> element in web.config file." msgstr "Hvis web.config filen din var skrivbar kunne vi gjort dette automatisk, men det er den ikke. Dette er URL rewrite-regelen du bør ha i web.config filen. Klikk i feltet, og trykk CTRL + a for å velge alt. Lim deretter inn denne regelen i /<configuration>/<system.webServer>/<rewrite>/<rules> elementet i web.config-filen." -#: wp-admin/includes/meta-boxes.php:611 wp-admin/includes/meta-boxes.php:665 +#: wp-admin/includes/meta-boxes.php:622 wp-admin/includes/meta-boxes.php:676 msgid "https://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" msgstr "https://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" @@ -2073,68 +2267,68 @@ msgstr "https://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" msgid "The character encoding of your site (UTF-8 is recommended)" msgstr "tegnsettet til ditt nettsted (UTF-8 er anbefalt)" -#: wp-admin/includes/class-wp-press-this.php:1493 +#: wp-admin/includes/class-wp-press-this.php:1491 msgid "Standard Editor" msgstr "Standardredigering" -#: wp-admin/includes/file.php:1206 +#: wp-admin/includes/file.php:1207 msgid "example: www.wordpress.org" msgstr "eksempel: www.wordpress.org" +#: wp-admin/theme-install.php:56 wp-admin/themes.php:141 +msgid "Number of Themes found: %d" +msgstr "Antall tema funnet: %d" + +#: wp-admin/theme-install.php:88 +msgid "You can Search for themes by keyword, author, or tag, or can get more specific and search by criteria listed in the feature filter." +msgstr "Du kan søke etter temaer etter nøkkelord, forfatter eller stikkord, eller du kan gjøre et spesifikt søk med kriteriene som er opplistet i funksjonalitetsfilteret." + +#: wp-admin/theme-install.php:89 +msgid "Alternately, you can browse the themes that are Featured, Popular, or Latest. When you find a theme you like, you can preview it or install it." +msgstr "Alternativt kan du bla i temaene som er fremhevet, populære eller nye. Når du finner et tema som du liker, kan du forhåndsvise det eller installere det." + #: wp-admin/themes.php:78 msgid "The search for installed themes will search for terms in their name, description, author, or tag." msgstr "Søket etter installerte temaer søker etter nøkkelord i navn, beskrivelser, forfattere og stikkord." -#: wp-admin/theme-install.php:83 -msgid "Alternately, you can browse the themes that are Featured, Popular, or Latest. When you find a theme you like, you can preview it or install it." -msgstr "Alternativt kan du bla i temaene som er fremhevet, populære eller nye. Når du finner et tema som du liker, kan du forhåndsvise det eller installere det." - -#: wp-admin/theme-install.php:82 -msgid "You can Search for themes by keyword, author, or tag, or can get more specific and search by criteria listed in the feature filter." -msgstr "Du kan søke etter temaer etter nøkkelord, forfatter eller stikkord, eller du kan gjøre et spesifikt søk med kriteriene som er opplistet i funksjonalitetsfilteret." - -#: wp-admin/theme-install.php:52 wp-admin/themes.php:141 -msgid "Number of Themes found: %d" -msgstr "Antall tema funnet: %d" - -#: wp-admin/options-general.php:293 -msgid "Custom time format:" -msgstr "Egendefinert tidsformat:" - -#: wp-admin/options-general.php:259 wp-admin/options-general.php:295 -msgid "example:" -msgstr "eksempel:" - -#: wp-admin/options-general.php:292 -msgid "enter a custom time format in the following field" -msgstr "legg inn et egendefinert tidsformat i det følgende feltet" +#: wp-admin/options-general.php:256 +msgid "enter a custom date format in the following field" +msgstr "legg inn et egendefinert datoformat i det følgende feltet" #: wp-admin/options-general.php:257 msgid "Custom date format:" msgstr "Egendefinert datoformat:" -#: wp-admin/options-general.php:256 -msgid "enter a custom date format in the following field" -msgstr "legg inn et egendefinert datoformat i det følgende feltet" +#: wp-admin/options-general.php:292 +msgid "enter a custom time format in the following field" +msgstr "legg inn et egendefinert tidsformat i det følgende feltet" + +#: wp-admin/options-general.php:259 wp-admin/options-general.php:295 +msgid "example:" +msgstr "eksempel:" + +#: wp-admin/options-general.php:293 +msgid "Custom time format:" +msgstr "Egendefinert tidsformat:" #: wp-admin/includes/class-plugin-upgrader.php:58 msgid "Plugins updated successfully." msgstr "Utvidelser oppdatert." -#: wp-admin/includes/class-wp-plugin-install-list-table.php:572 -msgid "%s Active Installs" -msgstr "%s aktive installasjoner" - -#: wp-admin/includes/plugin-install.php:561 -msgid "Active Installs:" -msgstr "Aktive installasjoner:" - -#: wp-admin/includes/class-wp-plugin-install-list-table.php:568 -#: wp-admin/includes/plugin-install.php:563 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:564 +#: wp-admin/includes/plugin-install.php:591 msgctxt "Active plugin installs" msgid "1+ Million" msgstr "1+ million" +#: wp-admin/includes/plugin-install.php:589 +msgid "Active Installs:" +msgstr "Aktive installasjoner:" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:570 +msgid "%s Active Installs" +msgstr "%s aktive installasjoner" + #: wp-admin/tools.php:41 msgid "Press This is a little tool that lets you grab bits of the web and create new posts with ease." msgstr "«Skriv om dette» er et lite verktøy som lar deg ta små biter fra nettet og enkelt skrive nye innlegg." @@ -2143,126 +2337,83 @@ msgstr "«Skriv om dette» er et lite verktøy som lar deg ta små biter fra net msgid "Detach" msgstr "Koble fra" -#: wp-admin/menu-header.php:244 +#: wp-admin/menu-header.php:246 msgid "Main menu" msgstr "Hovedmeny" -#: wp-admin/includes/file.php:1251 +#: wp-admin/includes/file.php:1252 msgid "Enter the location on the server where the public and private keys are located. If a passphrase is needed, enter that in the password field above." msgstr "Legg inn hvor på tjeneren de offentlige og private nøklene er plassert. Hvis et passord er nødvendig, legg det inn i passordfeltet over." -#: wp-admin/users.php:242 -msgid "You have specified these users for deletion:" -msgstr "Du har spesifisert disse brukerne for sletting:" - -#: wp-admin/users.php:269 -msgid "What should be done with content owned by these users?" -msgstr "Hva skal gjøres med innhold eid av disse brukerne?" - -#: wp-admin/users.php:431 +#: wp-admin/users.php:442 msgid "%s user deleted." msgid_plural "%s users deleted." msgstr[0] "%s bruker slettet." msgstr[1] "%s brukere slettet." -#: wp-admin/plugins.php:294 -msgid "Delete Plugins" -msgstr "Slett utvidelser" +#: wp-admin/users.php:269 +msgid "What should be done with content owned by these users?" +msgstr "Hva skal gjøres med innhold eid av disse brukerne?" -#: wp-admin/plugins.php:298 -msgid "You are about to remove the following plugins:" -msgstr "Du er i ferd med å slette følgende utvidelser:" +#: wp-admin/users.php:242 +msgid "You have specified these users for deletion:" +msgstr "Du har spesifisert disse brukerne for sletting:" -#: wp-admin/includes/ajax-actions.php:435 -#: wp-admin/includes/class-wp-list-table.php:763 -#: wp-admin/includes/class-wp-list-table.php:1350 -msgid "%s item" -msgid_plural "%s items" -msgstr[0] "%s element" -msgstr[1] "%s elementer" +#: wp-admin/edit.php:274 +msgid "1 post not updated, somebody is editing it." +msgstr "1 innlegg ikke oppdatert, noen redigerer det." + +#: wp-admin/edit.php:282 +msgid "1 page not updated, somebody is editing it." +msgstr "1 side ikke oppdatert, noen redigerer den." #: wp-admin/plugins.php:296 msgid "These plugins may be active on other sites in the network." msgstr "Disse utvidelsene kan være aktive på andre nettsteder i nettverket." -#: wp-admin/edit.php:278 -msgid "1 page not updated, somebody is editing it." -msgstr "1 side ikke oppdatert, noen redigerer den." +#: wp-admin/includes/ajax-actions.php:433 +#: wp-admin/includes/class-wp-list-table.php:762 +#: wp-admin/includes/class-wp-list-table.php:1349 +msgid "%s item" +msgid_plural "%s items" +msgstr[0] "%s element" +msgstr[1] "%s elementer" -#: wp-admin/edit.php:270 -msgid "1 post not updated, somebody is editing it." -msgstr "1 innlegg ikke oppdatert, noen redigerer det." +#: wp-admin/plugins.php:298 +msgid "You are about to remove the following plugins:" +msgstr "Du er i ferd med å slette følgende utvidelser:" -#: wp-admin/includes/class-wp-press-this.php:1335 +#: wp-admin/plugins.php:294 +msgid "Delete Plugins" +msgstr "Slett utvidelser" + +#: wp-admin/includes/class-wp-press-this.php:1333 msgid "Hide post options" msgstr "Skjul innleggsinnstillinger" -#: wp-admin/plugin-editor.php:136 wp-admin/theme-editor.php:30 +#: wp-admin/plugin-editor.php:148 wp-admin/theme-editor.php:30 msgid "In the editing area the Tab key enters a tab character. To move below this area by pressing Tab, press the Esc key followed by the Tab key. In some cases the Esc key will need to be pressed twice before the Tab key will allow you to continue." msgstr "Hvis du trykker på tab-tasten i redigeringsområdet vil du skrive inn et tabulatortegn. For å flytte fokus ved å trykke på tab, må du først trykke på esc, og deretter tab. I noen tilfeller må du trykke på esc to ganger før du kan trykke på tab for å fortsette." -#: wp-admin/includes/template.php:1714 -msgid "Front Page" -msgstr "Forside" +#: wp-admin/includes/class-wp-screen.php:1139 +msgid "Number of items per page:" +msgstr "Antall innlegg per side:" -#: wp-admin/theme-install.php:309 -msgid "This theme has not been rated yet." -msgstr "Dette temaet har ikke fått noen vurderinger ennå." +#: wp-admin/includes/file.php:31 wp-admin/includes/template.php:1721 +msgid "Posts Page" +msgstr "Innleggsside" -#: wp-admin/update-core.php:422 -msgid "New translations are available." -msgstr "Nye oversettelser er tilgjengelige." +#: wp-admin/includes/template.php:2126 +msgid "You are currently editing the page that shows your latest posts." +msgstr "Du redigerer nå siden som viser dine siste innlegg." -#: wp-admin/user-edit.php:42 -msgid "You can log out of other devices, such as your phone or a public computer, by clicking the Log Out Everywhere Else button." -msgstr "Du kan logge ut fra andre enheter, som for eksempel telefonen din eller en offentlig datamaskin, ved å klikke på Logg ut alle andre steder-knappen." - -#: wp-admin/tools.php:71 -msgid "Open Press This" -msgstr "Åpne Skriv om dette" - -#: wp-admin/tools.php:68 -msgid "Follow the link to open Press This. Then add it to your device’s bookmarks or home screen." -msgstr "Følg lenken for å åpne Skriv om dette. Så kan du legge den til dine bokmerker eller på hjem-skjermen." - -#: wp-admin/tools.php:67 -msgid "Direct link (best for mobile)" -msgstr "Direktelenke (best for mobil)" - -#: wp-admin/tools.php:60 -msgid "If you can’t drag the bookmarklet to your bookmarks, copy the following code and create a new bookmark. Paste the code into the new bookmark’s URL field." -msgstr "Hvis du ikke kan dra bokmerkeskriptet til dine bokmerker, kopier følgende kode og lag et nytt bokmerke. Lim inn koden i det nye bokmerkets URL-felt." - -#: wp-admin/tools.php:54 -msgid "Copy “Press This” bookmarklet code" -msgstr "Kopier bokmerkekoden for «Skriv om dette»" - -#: wp-admin/tools.php:48 -msgid "Drag the bookmarklet below to your bookmarks bar. Then, when you’re on a page you want to share, simply “press” it." -msgstr "Dra bokmerkeskriptet nedenfor til dine bokmerker. Da kan du enkelt skrive om en nettside som du har lyst å dele." - -#: wp-admin/tools.php:47 -msgid "Bookmarklet" -msgstr "Bokmerkeskript" - -#: wp-admin/tools.php:46 -msgid "Install Press This" -msgstr "Installer Skriv om dette" - -#. translators: date and time format for exact current time, mainly about -#. timezones, see https://secure.php.net/date -#: wp-admin/options-general.php:21 -msgctxt "timezone date format" -msgid "Y-m-d H:i:s" -msgstr "Y-m-d H:i:s" - -#: wp-admin/nav-menus.php:546 -msgid "To add a custom link, expand the Custom Links section, enter a URL and link text, and click Add to Menu" -msgstr "For å legge til en tilpasset lenke, utvid Tilpasset lenke-seksjonen, skriv inn en URL og en lenketekst og klikk på Legg til i meny" +#: wp-admin/includes/theme.php:643 wp-admin/themes.php:433 +msgid "Close details dialog" +msgstr "Lukk detaljer-vinduet" #. translators: Do not translate USERNAME, URL_DELETE, SITE_NAME: those are #. placeholders. -#: wp-admin/ms-delete-site.php:46 +#: wp-admin/ms-delete-site.php:48 msgid "" "Howdy ###USERNAME###,\n" "\n" @@ -2296,71 +2447,171 @@ msgstr "" "Takk for at du brukte nettstedet,\n" "-- ###SITE_NAME###" -#: wp-admin/includes/theme.php:618 wp-admin/themes.php:425 -msgid "Close details dialog" -msgstr "Lukk detaljer-vinduet" +#: wp-admin/nav-menus.php:547 +msgid "To add a custom link, expand the Custom Links section, enter a URL and link text, and click Add to Menu" +msgstr "For å legge til en tilpasset lenke, utvid Tilpasset lenke-seksjonen, skriv inn en URL og en lenketekst og klikk på Legg til i meny" -#: wp-admin/includes/template.php:2100 -msgid "You are currently editing the page that shows your latest posts." -msgstr "Du redigerer nå siden som viser dine siste innlegg." +#. translators: date and time format for exact current time, mainly about +#. timezones, see https://secure.php.net/date +#: wp-admin/options-general.php:21 +msgctxt "timezone date format" +msgid "Y-m-d H:i:s" +msgstr "Y-m-d H:i:s" -#: wp-admin/includes/file.php:31 wp-admin/includes/template.php:1718 -msgid "Posts Page" -msgstr "Innleggsside" +#: wp-admin/tools.php:46 +msgid "Install Press This" +msgstr "Installer Skriv om dette" -#: wp-admin/includes/class-wp-screen.php:1139 -msgid "Number of items per page:" -msgstr "Antall innlegg per side:" +#: wp-admin/tools.php:47 +msgid "Bookmarklet" +msgstr "Bokmerkeskript" -#: wp-admin/includes/class-wp-press-this.php:106 -msgid "Missing post ID." -msgstr "Savner innleggs-ID." +#: wp-admin/tools.php:48 +msgid "Drag the bookmarklet below to your bookmarks bar. Then, when you’re on a page you want to share, simply “press” it." +msgstr "Dra bokmerkeskriptet nedenfor til dine bokmerker. Da kan du enkelt skrive om en nettside som du har lyst å dele." -#: wp-admin/includes/ms.php:505 -msgid "Size in megabytes" -msgstr "Størrelse i megabyte" +#: wp-admin/tools.php:54 +msgid "Copy “Press This” bookmarklet code" +msgstr "Kopier bokmerkekoden for «Skriv om dette»" -#: wp-admin/includes/ms.php:502 -msgid "Site Upload Space Quota" -msgstr "Kvote for opplasting på nettsted" +#: wp-admin/tools.php:60 +msgid "If you can’t drag the bookmarklet to your bookmarks, copy the following code and create a new bookmark. Paste the code into the new bookmark’s URL field." +msgstr "Hvis du ikke kan dra bokmerkeskriptet til dine bokmerker, kopier følgende kode og lag et nytt bokmerke. Lim inn koden i det nye bokmerkets URL-felt." -#. translators: Do not translate USERNAME, ADMIN_URL, EMAIL, SITENAME, SITEURL: -#. those are placeholders. -#: wp-admin/includes/ms.php:357 +#: wp-admin/tools.php:67 +msgid "Direct link (best for mobile)" +msgstr "Direktelenke (best for mobil)" + +#: wp-admin/tools.php:68 +msgid "Follow the link to open Press This. Then add it to your device’s bookmarks or home screen." +msgstr "Følg lenken for å åpne Skriv om dette. Så kan du legge den til dine bokmerker eller på hjem-skjermen." + +#: wp-admin/tools.php:71 +msgid "Open Press This" +msgstr "Åpne Skriv om dette" + +#: wp-admin/user-edit.php:43 +msgid "You can log out of other devices, such as your phone or a public computer, by clicking the Log Out Everywhere Else button." +msgstr "Du kan logge ut fra andre enheter, som for eksempel telefonen din eller en offentlig datamaskin, ved å klikke på Logg ut alle andre steder-knappen." + +#: wp-admin/update-core.php:419 +msgid "New translations are available." +msgstr "Nye oversettelser er tilgjengelige." + +#: wp-admin/theme-install.php:319 +msgid "This theme has not been rated yet." +msgstr "Dette temaet har ikke fått noen vurderinger ennå." + +#: wp-admin/includes/template.php:1717 +msgid "Front Page" +msgstr "Forside" + +#: wp-admin/includes/revision.php:208 wp-admin/includes/revision.php:250 +msgctxt "revision date short format" +msgid "j M @ H:i" +msgstr "j. M @ H:i" + +#: wp-admin/includes/class-wp-press-this.php:241 +msgid "This category cannot be added. Please change the name and try again." +msgstr "Kategorien kunne ikke legges til. Vennligst endre navnet og prøv igjen." + +#: wp-admin/includes/class-wp-press-this.php:248 +msgid "Error while adding the category. Please try again later." +msgstr "Det skjedde en feil mens kategorien skulle legges til. Vennligst prøv igjen senere." + +#: wp-admin/includes/class-wp-press-this.php:859 +msgid "Toggle add category" +msgstr "Åpne eller lukke «Legg til kategori»" + +#: wp-admin/includes/class-wp-press-this.php:884 +msgid "Search categories by name" +msgstr "Søk i kategorier etter navn" + +#: wp-admin/includes/class-wp-press-this.php:886 +msgid "Search categories" +msgstr "Søk i kategorier" + +#: wp-admin/includes/class-wp-press-this.php:1138 +msgctxt "Used in Press This to indicate where the content comes from." +msgid "Source:" +msgstr "Kilde:" + +#: wp-admin/includes/class-wp-press-this.php:1331 +msgid "Show post options" +msgstr "Vis innleggsvalg" + +#: wp-admin/includes/class-wp-press-this.php:1244 +msgid "Press This!" +msgstr "Skriv om dette!" + +#: wp-admin/includes/class-wp-press-this.php:1339 +msgid "Scan site for content" +msgstr "Søk gjennom nettsted etter innhold" + +#: wp-admin/includes/class-wp-press-this.php:1340 +msgid "Enter a URL to scan" +msgstr "Skriv inn URL som skal søkes gjennom" + +#: wp-admin/includes/class-wp-press-this.php:1341 +msgid "Scan" +msgstr "Søk gjennom" + +#: wp-admin/includes/class-wp-press-this.php:1367 +msgid "You should upgrade your bookmarklet to the latest version!" +msgstr "Du bør oppgradere ditt bokmerkeskript til nyeste versjon!" + +#: wp-admin/includes/class-wp-press-this.php:1376 +#: wp-admin/includes/class-wp-press-this.php:1377 +msgid "Post title" +msgstr "Innleggstittel" + +#: wp-admin/includes/class-wp-press-this.php:1381 +msgid "Suggested media" +msgstr "Anbefalt medie" + +#: wp-admin/includes/class-wp-press-this.php:1444 +#: wp-admin/includes/class-wp-press-this.php:1454 +#: wp-admin/includes/class-wp-press-this.php:1463 +msgid "Back to post options" +msgstr "Tilbake til innleggsvalg" + +#: wp-admin/includes/class-wp-automatic-updater.php:838 msgid "" -"Howdy ###USERNAME###,\n" +"BETA TESTING?\n" +"=============\n" "\n" -"You recently requested to have the email address on your account changed.\n" +"This debugging email is sent when you are using a development version of WordPress.\n" "\n" -"If this is correct, please click on the following link to change it:\n" -"###ADMIN_URL###\n" +"If you think these failures might be due to a bug in WordPress, could you report it?\n" +" * Open a thread in the support forums: https://wordpress.org/support/forum/alphabeta\n" +" * Or, if you're comfortable writing a bug report: https://core.trac.wordpress.org/\n" "\n" -"You can safely ignore and delete this email if you do not want to\n" -"take this action.\n" -"\n" -"This email has been sent to ###EMAIL###\n" -"\n" -"Regards,\n" -"All at ###SITENAME###\n" -"###SITEURL###" +"Thanks! -- The WordPress Team" msgstr "" -"Hei, ###USERNAME###\n" +"BETATESTER?\n" +"===========\n" "\n" -"Du har nylig bedt om å endre e-postadressen til din konto.\n" +"Denne e-posten blir sendt for å hjelpe med debugging når du bruker en utviklerversjon av WordPress.\n" "\n" -"Hvis dette stemmer, vennligst klikk på lenken under for å endre den:\n" -"###ADMIN_URL###\n" +"Hvis du mener at disse feilene kan skyldes en feil i WordPress, kan du tenke deg å rapportere det?\n" +"* Åpne en tråd i supportforumene: https://wordpress.org/support/forum/alphabeta\n" +"* Eller, hvis du er komfortabel med bugrapportering: https://core.trac.wordpress.org/\n" "\n" -"Hvis du ikke vil gjøre dette, kan du trygt ignorere og slette denne e-posten.\n" +"Takk!\n" "\n" -"Denne e-posten har blitt sendt til ###EMAIL###\n" -"\n" -"Vennlig hilsen\n" -"-- ###SITENAME### ###SITEURL###" +"-- WordPress-teamet" + +#: wp-admin/includes/class-wp-automatic-updater.php:856 +msgid "" +"UPDATE LOG\n" +"==========" +msgstr "" +"OPPDATERINGSLOGG\n" +"================" #. translators: Do not translate USERNAME, ADMIN_URL, EMAIL, SITENAME, SITEURL: #. those are placeholders. -#: wp-admin/includes/ms.php:276 +#: wp-admin/includes/ms.php:280 msgid "" "Howdy ###USERNAME###,\n" "\n" @@ -2393,132 +2644,71 @@ msgstr "" "Vennlig hilsen\n" "-- ###SITENAME### ###SITEURL###" -#: wp-admin/includes/class-wp-automatic-updater.php:865 +#. translators: Do not translate USERNAME, ADMIN_URL, EMAIL, SITENAME, SITEURL: +#. those are placeholders. +#: wp-admin/includes/ms.php:367 msgid "" -"UPDATE LOG\n" -"==========" +"Howdy ###USERNAME###,\n" +"\n" +"You recently requested to have the email address on your account changed.\n" +"\n" +"If this is correct, please click on the following link to change it:\n" +"###ADMIN_URL###\n" +"\n" +"You can safely ignore and delete this email if you do not want to\n" +"take this action.\n" +"\n" +"This email has been sent to ###EMAIL###\n" +"\n" +"Regards,\n" +"All at ###SITENAME###\n" +"###SITEURL###" msgstr "" -"OPPDATERINGSLOGG\n" -"================" - -#: wp-admin/includes/class-wp-automatic-updater.php:847 -msgid "" -"BETA TESTING?\n" -"=============\n" +"Hei, ###USERNAME###\n" "\n" -"This debugging email is sent when you are using a development version of WordPress.\n" +"Du har nylig bedt om å endre e-postadressen til din konto.\n" "\n" -"If you think these failures might be due to a bug in WordPress, could you report it?\n" -" * Open a thread in the support forums: https://wordpress.org/support/forum/alphabeta\n" -" * Or, if you're comfortable writing a bug report: https://core.trac.wordpress.org/\n" +"Hvis dette stemmer, vennligst klikk på lenken under for å endre den:\n" +"###ADMIN_URL###\n" "\n" -"Thanks! -- The WordPress Team" -msgstr "" -"BETATESTER?\n" -"===========\n" +"Hvis du ikke vil gjøre dette, kan du trygt ignorere og slette denne e-posten.\n" "\n" -"Denne e-posten blir sendt for å hjelpe med debugging når du bruker en utviklerversjon av WordPress.\n" +"Denne e-posten har blitt sendt til ###EMAIL###\n" "\n" -"Hvis du mener at disse feilene kan skyldes en feil i WordPress, kan du tenke deg å rapportere det?\n" -"* Åpne en tråd i supportforumene: https://wordpress.org/support/forum/alphabeta\n" -"* Eller, hvis du er komfortabel med bugrapportering: https://core.trac.wordpress.org/\n" -"\n" -"Takk!\n" -"\n" -"-- WordPress-teamet" +"Vennlig hilsen\n" +"-- ###SITENAME### ###SITEURL###" -#: wp-admin/includes/class-wp-press-this.php:1446 -#: wp-admin/includes/class-wp-press-this.php:1456 -#: wp-admin/includes/class-wp-press-this.php:1465 -msgid "Back to post options" -msgstr "Tilbake til innleggsvalg" +#: wp-admin/includes/ms.php:519 +msgid "Site Upload Space Quota" +msgstr "Kvote for opplasting på nettsted" -#: wp-admin/includes/class-wp-press-this.php:1383 -msgid "Suggested media" -msgstr "Anbefalt medie" +#: wp-admin/includes/ms.php:522 +msgid "Size in megabytes" +msgstr "Størrelse i megabyte" -#: wp-admin/includes/class-wp-press-this.php:1378 -#: wp-admin/includes/class-wp-press-this.php:1379 -msgid "Post title" -msgstr "Innleggstittel" - -#: wp-admin/includes/class-wp-press-this.php:1369 -msgid "You should upgrade your bookmarklet to the latest version!" -msgstr "Du bør oppgradere ditt bokmerkeskript til nyeste versjon!" - -#: wp-admin/includes/class-wp-press-this.php:1343 -msgid "Scan" -msgstr "Søk gjennom" - -#: wp-admin/includes/class-wp-press-this.php:1342 -msgid "Enter a URL to scan" -msgstr "Skriv inn URL som skal søkes gjennom" - -#: wp-admin/includes/class-wp-press-this.php:1341 -msgid "Scan site for content" -msgstr "Søk gjennom nettsted etter innhold" - -#: wp-admin/includes/class-wp-press-this.php:1246 -msgid "Press This!" -msgstr "Skriv om dette!" - -#: wp-admin/includes/class-wp-press-this.php:1333 -msgid "Show post options" -msgstr "Vis innleggsvalg" - -#: wp-admin/includes/class-wp-press-this.php:1141 -msgctxt "Used in Press This to indicate where the content comes from." -msgid "Source:" -msgstr "Kilde:" - -#: wp-admin/includes/class-wp-press-this.php:889 -msgid "Search categories" -msgstr "Søk i kategorier" - -#: wp-admin/includes/class-wp-press-this.php:887 -msgid "Search categories by name" -msgstr "Søk i kategorier etter navn" - -#: wp-admin/includes/class-wp-press-this.php:862 -msgid "Toggle add category" -msgstr "Åpne eller lukke «Legg til kategori»" - -#: wp-admin/includes/class-wp-press-this.php:248 -msgid "Error while adding the category. Please try again later." -msgstr "Det skjedde en feil mens kategorien skulle legges til. Vennligst prøv igjen senere." - -#: wp-admin/includes/class-wp-press-this.php:241 -msgid "This category cannot be added. Please change the name and try again." -msgstr "Kategorien kunne ikke legges til. Vennligst endre navnet og prøv igjen." - -#: wp-admin/includes/revision.php:208 wp-admin/includes/revision.php:250 -msgctxt "revision date short format" -msgid "j M @ H:i" -msgstr "j. M @ H:i" - -#: wp-admin/includes/class-wp-posts-list-table.php:965 -msgid "Y/m/d g:i:s a" -msgstr "Y-m-d H:i:s" - -#: wp-admin/includes/ajax-actions.php:3371 -#: wp-admin/includes/ajax-actions.php:3482 -#: wp-admin/includes/ajax-actions.php:3540 -#: wp-admin/includes/ajax-actions.php:3633 -#: wp-admin/includes/ajax-actions.php:3748 -#: wp-admin/includes/ajax-actions.php:3811 -msgid "Unable to connect to the filesystem. Please confirm your credentials." -msgstr "Kunne ikke koble til filsystemet. Vennligst bekreft din innloggingsinformasjon." +#: wp-admin/includes/class-wp-press-this.php:106 +msgid "Missing post ID." +msgstr "Savner innleggs-ID." #. translators: Publish box date format, see https://secure.php.net/date #: wp-admin/edit-form-advanced.php:133 wp-admin/edit-form-comment.php:93 -#: wp-admin/includes/meta-boxes.php:174 wp-admin/includes/meta-boxes.php:300 +#: wp-admin/includes/meta-boxes.php:175 wp-admin/includes/meta-boxes.php:308 #: wp-admin/includes/revision.php:207 wp-admin/includes/revision.php:249 msgid "M j, Y @ H:i" msgstr "j. M Y @ H:i" -#: wp-admin/comment.php:195 -msgid "Submitted on" -msgstr "Sendt inn" +#: wp-admin/includes/ajax-actions.php:3352 +#: wp-admin/includes/ajax-actions.php:3463 +#: wp-admin/includes/ajax-actions.php:3521 +#: wp-admin/includes/ajax-actions.php:3614 +#: wp-admin/includes/ajax-actions.php:3733 +#: wp-admin/includes/ajax-actions.php:3796 +msgid "Unable to connect to the filesystem. Please confirm your credentials." +msgstr "Kunne ikke koble til filsystemet. Vennligst bekreft din innloggingsinformasjon." + +#: wp-admin/includes/class-wp-posts-list-table.php:981 +msgid "Y/m/d g:i:s a" +msgstr "Y-m-d H:i:s" #. translators: column name or table row header #: wp-admin/comment.php:169 @@ -2526,28 +2716,34 @@ msgstr "Sendt inn" msgid "In Response To" msgstr "Som svar til" -#: wp-admin/user-edit.php:547 -msgid "You are only logged in at this location." -msgstr "Du er bare innlogget herfra." +#: wp-admin/comment.php:195 +msgid "Submitted on" +msgstr "Sendt inn" -#: wp-admin/includes/plugin-install.php:329 -msgid "These suggestions are based on the plugins you and other users have installed." -msgstr "Disse anbefalingene er basert på utvidelsene som du og andre brukere har installert." - -#: wp-admin/edit-form-advanced.php:369 +#: wp-admin/edit-form-advanced.php:370 msgid "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." msgstr "Du kan aktivere distraksjonsfri skrivemodud med ikonet til høyre. Denne funksjonen er ikke støttet på eldre nettlesere eller på enheter med små skjermer, og krever at hele høyden-redigering er aktivert i Visningsinnstillinger." -#: wp-admin/user-edit.php:565 +#: wp-admin/includes/plugin-install.php:351 +msgid "These suggestions are based on the plugins you and other users have installed." +msgstr "Disse anbefalingene er basert på utvidelsene som du og andre brukere har installert." + +#: wp-admin/user-edit.php:584 +msgid "You are only logged in at this location." +msgstr "Du er bare innlogget herfra." + +#: wp-admin/user-edit.php:602 msgid "Log Out Everywhere" msgstr "Logg ut overalt" -#: wp-admin/includes/class-wp-plugin-install-list-table.php:96 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:95 msgctxt "Plugin Installer" msgid "Recommended" msgstr "Anbefalte" -#: wp-admin/includes/upgrade.php:376 +#. translators: New site notification email. 1: New site URL, 2: User login, 3: +#. User password or password reset link, 4: Login URL +#: wp-admin/includes/upgrade.php:379 msgid "" "Your new WordPress site has been successfully set up at:\n" "\n" @@ -2579,99 +2775,91 @@ msgstr "" "--WordPress-teamet\n" "https://wordpress.org/\n" -#: wp-admin/themes.php:173 -msgid "You cannot delete a theme while it has an active child theme." -msgstr "Du kan ikke slette et tema mens det har et aktivt dattertema." +#: wp-admin/install.php:128 +msgid "Usernames can have only alphanumeric characters, spaces, underscores, hyphens, periods, and the @ symbol." +msgstr "Brukernavn kan kun ha alfanumeriske tegn, mellomrom, understreker, bindestreker, kommaer og @-symbolet." + +#: wp-admin/options-discussion.php:224 +msgid "Mystery Person" +msgstr "Mystisk person" #: wp-admin/options-general.php:33 msgid "You can set the language, and the translation files will be automatically downloaded and installed (available if your filesystem is writable)." msgstr "Du kan bestemme språket, og oversettelsen vil bli lastet ned og installert automatisk (hvis WordPress kan skrive til ditt filsystem)." -#: wp-admin/options-discussion.php:223 -msgid "Mystery Person" -msgstr "Mystisk person" - -#: wp-admin/install.php:128 -msgid "Usernames can have only alphanumeric characters, spaces, underscores, hyphens, periods, and the @ symbol." -msgstr "Brukernavn kan kun ha alfanumeriske tegn, mellomrom, understreker, bindestreker, kommaer og @-symbolet." +#: wp-admin/themes.php:173 +msgid "You cannot delete a theme while it has an active child theme." +msgstr "Du kan ikke slette et tema mens det har et aktivt dattertema." #: wp-admin/includes/class-wp-screen.php:923 msgid "Enable full-height editor and distraction-free functionality." msgstr "Aktiver full-høyderedigering og distraksjonsfri skrivemodus." -#: wp-admin/includes/dashboard.php:1127 -msgid "https://planet.wordpress.org/feed/" -msgstr "https://planet.wordpress.org/feed/" - -#: wp-admin/includes/dashboard.php:1118 wp-admin/index.php:77 -#: wp-admin/index.php:83 -msgid "https://planet.wordpress.org/" -msgstr "https://planet.wordpress.org/" - #: wp-admin/includes/class-wp-plugin-install-list-table.php:578 msgid "Untested with your version of WordPress" msgstr "Ikke testet med din versjon av WordPress" -#: wp-admin/custom-header.php:463 -msgid "You can now manage and live-preview Custom Header in the Customizer." -msgstr "Du kan nå håndtere og forhåndsvise tilpasset sidetopp i Tilpasseren." +#: wp-admin/includes/dashboard.php:1121 wp-admin/index.php:76 +#: wp-admin/index.php:82 +msgid "https://planet.wordpress.org/" +msgstr "https://planet.wordpress.org/" -#: wp-admin/custom-background.php:190 -msgid "You can now manage and live-preview Custom Backgrounds in the Customizer." -msgstr "Du kan nå håndtere og forhåndsvise tilpassede bakgrunner i Tilpasseren" +#: wp-admin/includes/dashboard.php:1130 +msgid "https://planet.wordpress.org/feed/" +msgstr "https://planet.wordpress.org/feed/" + +#: wp-admin/edit-form-advanced.php:366 +msgid "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." +msgstr "Innleggsredigerer – Skriv inn teksten til ditt innlegg. Det er to moduser for å redigere: visuell og tekst. Velg modus ved å klikke på den fanen du ønsker." + +#: wp-admin/edit-form-advanced.php:369 +msgid "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." +msgstr "Du kan sette inn mediefiler ved å klikke på ikonene over innleggsredigereren og følge anvisningene. Du kan justere eller redigere bildene med formateringsverktøyet som er synlig i Visuell modus." + +#: wp-admin/edit-tag-form.php:149 wp-admin/edit-tags.php:399 +msgctxt "term parent" +msgid "Parent" +msgstr "Forelder" + +#: wp-admin/includes/ajax-actions.php:3011 +msgid "This preview is unavailable in the editor." +msgstr "Denne forhåndsvisningen er ikke tilgjengelig i redigereren." + +#: wp-admin/includes/ajax-actions.php:3104 +msgid "Could not log out user sessions. Please try again." +msgstr "Kunne ikke logge ut brukersesjoner. Vennligst prøv igjen." + +#. translators: 1: User's display name. +#: wp-admin/includes/ajax-actions.php:3116 +msgid "%s has been logged out." +msgstr "%s har blitt logget ut." + +#: wp-admin/includes/ajax-actions.php:3112 +msgid "You are now logged out everywhere else." +msgstr "Du er nå logget ut alle andre steder." + +#: wp-admin/includes/class-wp-comments-list-table.php:327 +msgid "Filter by comment type" +msgstr "Filtrer etter kommentartype" #: wp-admin/includes/class-wp-links-list-table.php:113 #: wp-admin/includes/class-wp-posts-list-table.php:449 msgid "Filter by category" msgstr "Filtrer etter kategori" -#: wp-admin/includes/class-wp-comments-list-table.php:327 -msgid "Filter by comment type" -msgstr "Filtrer etter kommentartype" +#: wp-admin/custom-background.php:232 +msgid "You can now manage and live-preview Custom Backgrounds in the Customizer." +msgstr "Du kan nå håndtere og forhåndsvise tilpassede bakgrunner i Tilpasseren" -#: wp-admin/includes/ajax-actions.php:3121 -msgid "You are now logged out everywhere else." -msgstr "Du er nå logget ut alle andre steder." +#: wp-admin/custom-header.php:463 +msgid "You can now manage and live-preview Custom Header in the Customizer." +msgstr "Du kan nå håndtere og forhåndsvise tilpasset sidetopp i Tilpasseren." -#. translators: 1: User's display name. -#: wp-admin/includes/ajax-actions.php:3125 -msgid "%s has been logged out." -msgstr "%s har blitt logget ut." - -#: wp-admin/includes/ajax-actions.php:3113 -msgid "Could not log out user sessions. Please try again." -msgstr "Kunne ikke logge ut brukersesjoner. Vennligst prøv igjen." - -#: wp-admin/includes/ajax-actions.php:3020 -msgid "This preview is unavailable in the editor." -msgstr "Denne forhåndsvisningen er ikke tilgjengelig i redigereren." - -#: wp-admin/includes/ajax-actions.php:2036 -msgid "You don't have permission to attach files to this post." -msgstr "Du har ikke adgang til å legge ved filer til dette innlegget." - -#: wp-admin/edit-tag-form.php:156 wp-admin/edit-tags.php:426 -msgctxt "term parent" -msgid "Parent" -msgstr "Forelder" - -#: wp-admin/edit-form-advanced.php:368 -msgid "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." -msgstr "Du kan sette inn mediefiler ved å klikke på ikonene over innleggsredigereren og følge anvisningene. Du kan justere eller redigere bildene med formateringsverktøyet som er synlig i Visuell modus." - -#: wp-admin/edit-form-advanced.php:365 -msgid "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." -msgstr "Innleggsredigerer – Skriv inn teksten til ditt innlegg. Det er to moduser for å redigere: visuell og tekst. Velg modus ved å klikke på den fanen du ønsker." - -#: wp-admin/includes/class-wp-screen.php:1046 -msgctxt "Welcome panel" -msgid "Welcome" -msgstr "Velkommen" - -#: wp-admin/menu.php:192 -msgctxt "theme editor" -msgid "Editor" -msgstr "Redigering" +#: wp-admin/edit-link-form.php:94 +#: wp-admin/includes/class-wp-links-list-table.php:128 +msgctxt "link name" +msgid "Name" +msgstr "Navn" #: wp-admin/includes/class-wp-users-list-table.php:193 msgctxt "users" @@ -2680,11 +2868,15 @@ msgid_plural "All (%s)" msgstr[0] "Alle (%s)" msgstr[1] "Alle (%s)" -#: wp-admin/edit-link-form.php:94 -#: wp-admin/includes/class-wp-links-list-table.php:128 -msgctxt "link name" -msgid "Name" -msgstr "Navn" +#: wp-admin/menu.php:192 +msgctxt "theme editor" +msgid "Editor" +msgstr "Redigering" + +#: wp-admin/includes/class-wp-screen.php:1046 +msgctxt "Welcome panel" +msgid "Welcome" +msgstr "Velkommen" #. translators: %s is a placeholder that must come at the start of the URL. #: wp-admin/options-permalink.php:216 @@ -2699,399 +2891,390 @@ msgstr "Utgivelsesansvarlig" msgid "Use the arrow buttons at the top of the dialog, or the left and right arrow keys on your keyboard, to navigate between media items quickly." msgstr "Bruk pilknappene øverst i dialogen, eller venstre- og høyre-piltastene på tastaturet ditt, for å kjapt navigere mellom mediefiler." -#: wp-admin/upload.php:51 wp-admin/upload.php:190 -msgid "You can view your media in a simple visual grid or a list with columns. Switch between these views using the icons to the left above the media." -msgstr "Du kan vise dine mediefiler i et enkelt visuelt rutenett eller som en liste med kolonner. Du kan veksle mellom visningene ved å bruke ikonene til venstre over filene." - -#: wp-admin/upload.php:52 -msgid "To delete media items, click the Bulk Select button at the top of the screen. Select any items you wish to delete, then click the Delete Selected button. Clicking the Cancel Selection button takes you back to viewing your media." -msgstr "For å slette mediefiler, klikk på Velg flere-knappen øverst på skjermen. Velg de filene som du vil slette, så klikker du på Slett valgte-knappen. Hvis du klikker på Avbryt utvalg-knappen, blir du tatt tilbake til medievisningen." +#: wp-admin/upload.php:61 +msgid "You can also delete individual items and access the extended edit screen from the details dialog." +msgstr "Du kan også slette individuelle filer og få tilgang til den utvidede redigeringsskjermen fra detaljer-dialogen." #: wp-admin/upload.php:59 msgid "Clicking an item will display an Attachment Details dialog, which allows you to preview media and make quick edits. Any changes you make to the attachment details will be automatically saved." msgstr "Hvis du klikker på en fil, vil Vedleggsdetaljer-dialogen vises. Her kan du forhåndsvise og gjøre kjappe redigeringer. Endringer du gjør her vil bli lagret automatisk." -#: wp-admin/upload.php:61 -msgid "You can also delete individual items and access the extended edit screen from the details dialog." -msgstr "Du kan også slette individuelle filer og få tilgang til den utvidede redigeringsskjermen fra detaljer-dialogen." +#: wp-admin/upload.php:52 +msgid "To delete media items, click the Bulk Select button at the top of the screen. Select any items you wish to delete, then click the Delete Selected button. Clicking the Cancel Selection button takes you back to viewing your media." +msgstr "For å slette mediefiler, klikk på Velg flere-knappen øverst på skjermen. Velg de filene som du vil slette, så klikker du på Slett valgte-knappen. Hvis du klikker på Avbryt utvalg-knappen, blir du tatt tilbake til medievisningen." -#: wp-admin/plugin-install.php:121 -msgid "Browse Plugins" -msgstr "Bla i utvidelser" - -#: wp-admin/plugin-install.php:91 -msgid "If you just want to get an idea of what’s available, you can browse Featured and Popular plugins by using the links above the plugins list. These sections rotate regularly." -msgstr "Hvis du bare vil få et inntrykk av hva som er tilgjengelig, kan du bla i fremhevede og populære utvidelser ved å bruke lenkene over listen med utvidelser. Disse seksjonene oppdateres jevnlig." +#: wp-admin/upload.php:51 wp-admin/upload.php:193 +msgid "You can view your media in a simple visual grid or a list with columns. Switch between these views using the icons to the left above the media." +msgstr "Du kan vise dine mediefiler i et enkelt visuelt rutenett eller som en liste med kolonner. Du kan veksle mellom visningene ved å bruke ikonene til venstre over filene." #: wp-admin/upload.php:50 msgid "All the files you’ve uploaded are listed in the Media Library, with the most recent uploads listed first." msgstr "Alle filene du har lastet opp er listet i Mediebiblioteket, med de nyeste opplastingene først." +#: wp-admin/plugin-install.php:91 +msgid "If you just want to get an idea of what’s available, you can browse Featured and Popular plugins by using the links above the plugins list. These sections rotate regularly." +msgstr "Hvis du bare vil få et inntrykk av hva som er tilgjengelig, kan du bla i fremhevede og populære utvidelser ved å bruke lenkene over listen med utvidelser. Disse seksjonene oppdateres jevnlig." + +#: wp-admin/plugin-install.php:121 +msgid "Browse Plugins" +msgstr "Bla i utvidelser" + #: wp-admin/plugin-install.php:48 msgid "Add Plugins" msgstr "Legg til utvidelser" -#: wp-admin/includes/translation-install.php:23 -msgid "Invalid translation type." -msgstr "Ugyldig oversettelses-type." - -#: wp-admin/edit-tags.php:581 wp-admin/options-general.php:352 -msgid "Note:" -msgstr "Merk:" - #: wp-admin/options-general.php:352 wp-admin/options-general.php:356 msgid "The %s constant in your %s file is no longer needed." msgstr "Konstanten %s i din %s-fil er ikke lenger nødvendig." -#: wp-admin/install.php:312 +#: wp-admin/edit-tags.php:535 wp-admin/options-general.php:352 +msgid "Note:" +msgstr "Merk:" + +#: wp-admin/includes/translation-install.php:23 +msgid "Invalid translation type." +msgstr "Ugyldig oversettelses-type." + +#: wp-admin/install.php:316 msgid "Welcome to the famous five-minute WordPress installation process! Just fill in the information below and you’ll be on your way to using the most extendable and powerful personal publishing platform in the world." msgstr "Velkommen til den berømte fem-minutters-installasjonen av WordPress! Fyll inn informasjonen nedenfor, og du vil være godt på vei til å komme i gang med den mest utvidbare og kraftige personlige publiseringsplattformen i verden." -#: wp-admin/includes/class-wp-plugin-install-list-table.php:580 -msgid "Incompatible with your version of WordPress" -msgstr "Ikke kompatibel med din versjon av WordPress" - #: wp-admin/includes/class-wp-plugin-install-list-table.php:582 msgid "Compatible with your version of WordPress" msgstr "Kompatibel med din versjon av WordPress" -#: wp-admin/includes/plugin-install.php:597 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:580 +msgid "Incompatible with your version of WordPress" +msgstr "Ikke kompatibel med din versjon av WordPress" + +#: wp-admin/includes/plugin-install.php:627 msgid "%d star" msgid_plural "%d stars" msgstr[0] "%d stjerne" msgstr[1] "%d stjerner" -#: wp-admin/includes/class-wp-list-table.php:462 +#: wp-admin/includes/class-wp-list-table.php:461 msgid "Select bulk action" msgstr "Velg massehandling" -#: wp-admin/includes/template.php:713 -msgid "Month" -msgstr "Måned" - -#: wp-admin/includes/template.php:723 -msgid "Day" -msgstr "Dag" - -#: wp-admin/includes/template.php:725 -msgid "Hour" -msgstr "Time" - -#: wp-admin/includes/template.php:726 -msgid "Minute" -msgstr "Minutt" - -#: wp-admin/theme-install.php:282 -msgctxt "Button label for a theme" -msgid "Previous" -msgstr "Forrige" - -#: wp-admin/theme-install.php:283 -msgctxt "Button label for a theme" -msgid "Next" -msgstr "Neste" - -#: wp-admin/update-core.php:194 -msgid "BETA TESTERS:" -msgstr "BETATESTERE:" - -#: wp-admin/update-core.php:194 -msgid "This site is set up to install updates of future beta versions automatically." -msgstr "Dette nettstedet er satt opp for å installere oppdateringer av fremtidige betaversjoner automatisk." +#: wp-admin/user-new.php:354 wp-admin/user-new.php:490 +msgid "Add the user without sending an email that requires their confirmation." +msgstr "Legg til bruker uten å sende en e-post som krever deres bekreftelse." #. translators: %s: list view URL #: wp-admin/upload.php:87 msgid "The grid view for the Media Library requires JavaScript. Switch to the list view." msgstr "Rutenettvisningen for mediebiblioteket krever JavaScript. Gå til listevisning." -#: wp-admin/user-new.php:345 wp-admin/user-new.php:475 -msgid "Add the user without sending an email that requires their confirmation." -msgstr "Legg til bruker uten å sende en e-post som krever deres bekreftelse." +#: wp-admin/update-core.php:196 +msgid "This site is set up to install updates of future beta versions automatically." +msgstr "Dette nettstedet er satt opp for å installere oppdateringer av fremtidige betaversjoner automatisk." -#: wp-admin/includes/class-wp-automatic-updater.php:699 -msgid "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." -msgstr "Wordpress-teamet er klare for å hjelpe deg. Send denne e-posten videre til %s, og teamet vil jobbe for å få ditt nettsted til å fungere." +#: wp-admin/update-core.php:196 +msgid "BETA TESTERS:" +msgstr "BETATESTERE:" -#: wp-admin/includes/ajax-actions.php:2990 -msgid "%s failed to embed." -msgstr "%s klarte ikke å bygges inn." +#: wp-admin/theme-install.php:293 +msgctxt "Button label for a theme" +msgid "Next" +msgstr "Neste" -#: wp-admin/includes/class-wp-plugin-install-list-table.php:92 -msgctxt "Plugin Installer" -msgid "Beta Testing" -msgstr "Betatesting" +#: wp-admin/theme-install.php:292 +msgctxt "Button label for a theme" +msgid "Previous" +msgstr "Forrige" -#: wp-admin/includes/class-wp-plugin-install-list-table.php:406 -msgctxt "Plugin installer group title" -msgid "Performance" -msgstr "Ytelse" +#: wp-admin/includes/template.php:727 +msgid "Minute" +msgstr "Minutt" -#: wp-admin/includes/class-wp-plugin-install-list-table.php:407 -msgctxt "Plugin installer group title" -msgid "Social" -msgstr "Sosialt" +#: wp-admin/includes/template.php:726 +msgid "Hour" +msgstr "Time" -#: wp-admin/includes/class-wp-plugin-install-list-table.php:408 -msgctxt "Plugin installer group title" -msgid "Tools" -msgstr "Verktøy" +#: wp-admin/includes/template.php:724 +msgid "Day" +msgstr "Dag" -#: wp-admin/includes/class-wp-plugin-install-list-table.php:511 -msgid "More Details" -msgstr "Mer detaljer" +#: wp-admin/includes/template.php:714 +msgid "Month" +msgstr "Måned" -#: wp-admin/includes/class-wp-plugins-list-table.php:790 -msgid "View details" -msgstr "Vis detaljer" +#: wp-admin/includes/plugin-install.php:637 +msgid "Contributors" +msgstr "Bidragsytere" -#: wp-admin/includes/class-wp-terms-list-table.php:185 -msgctxt "Number/count of items" -msgid "Count" -msgstr "Antall" +#: wp-admin/includes/plugin-install.php:603 +#: wp-admin/includes/plugin-install.php:657 +msgid "Donate to this plugin »" +msgstr "Doner til denne utvidelsen »" + +#: wp-admin/includes/plugin-install.php:494 +msgctxt "Plugin installer section title" +msgid "Reviews" +msgstr "Omtaler" #: wp-admin/includes/class-wp-theme-install-list-table.php:67 msgctxt "themes" msgid "Recently Updated" msgstr "Nylig oppdaterte" -#: wp-admin/includes/plugin-install.php:466 -msgctxt "Plugin installer section title" -msgid "Reviews" -msgstr "Omtaler" +#: wp-admin/includes/class-wp-terms-list-table.php:188 +msgctxt "Number/count of items" +msgid "Count" +msgstr "Antall" -#: wp-admin/includes/plugin-install.php:573 -#: wp-admin/includes/plugin-install.php:627 -msgid "Donate to this plugin »" -msgstr "Doner til denne utvidelsen »" +#: wp-admin/includes/class-wp-plugins-list-table.php:788 +msgid "View details" +msgstr "Vis detaljer" -#: wp-admin/includes/plugin-install.php:607 -msgid "Contributors" -msgstr "Bidragsytere" +#: wp-admin/includes/class-wp-plugin-install-list-table.php:507 +msgid "More Details" +msgstr "Mer detaljer" -#: wp-admin/customize.php:140 -msgid "The Customizer allows you to preview changes to your site before publishing them. You can also navigate to different pages on your site to preview them." -msgstr "Tilpasseren lar deg forhåndsvise endringer på ditt nettsted før du publiserer dem. Du kan også navigere til ulike sider på ditt nettsted for å forhåndsvise disse." +#: wp-admin/includes/class-wp-plugin-install-list-table.php:404 +msgctxt "Plugin installer group title" +msgid "Tools" +msgstr "Verktøy" -#: wp-admin/includes/class-wp-automatic-updater.php:712 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:403 +msgctxt "Plugin installer group title" +msgid "Social" +msgstr "Sosialt" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:402 +msgctxt "Plugin installer group title" +msgid "Performance" +msgstr "Ytelse" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:91 +msgctxt "Plugin Installer" +msgid "Beta Testing" +msgstr "Betatesting" + +#: wp-admin/includes/ajax-actions.php:2981 +msgid "%s failed to embed." +msgstr "%s klarte ikke å bygges inn." + +#: wp-admin/includes/class-wp-automatic-updater.php:690 +msgid "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." +msgstr "Wordpress-teamet er klare for å hjelpe deg. Send denne e-posten videre til %s, og teamet vil jobbe for å få ditt nettsted til å fungere." + +#: wp-admin/includes/class-wp-automatic-updater.php:703 msgid "If you reach out to us, we'll also ensure you'll never have this problem again." msgstr "Hvis du når ut til oss, vil vi også gjøre vårt ytterste for at du aldri skal måtte ha dette problemet igjen." -#: wp-admin/theme-install.php:201 -msgid "Filtering by:" -msgstr "Filtrerer etter:" - -#: wp-admin/theme-install.php:53 wp-admin/theme-install.php:211 -#: wp-admin/themes.php:142 wp-admin/themes.php:297 +#: wp-admin/theme-install.php:57 wp-admin/theme-install.php:221 +#: wp-admin/themes.php:142 wp-admin/themes.php:301 msgid "No themes found. Try a different search." msgstr "Fant ingen temaer. Prøv et annet søk." -#: wp-admin/includes/image-edit.php:105 -msgid "To crop the image, click on it and drag to make your selection." -msgstr "For å beskjære bildet, klikk på det og dra for å velge område." +#: wp-admin/theme-install.php:211 +msgid "Filtering by:" +msgstr "Filtrerer etter:" -#: wp-admin/includes/image-edit.php:52 -msgid "You can proportionally scale the original image. For best results, scaling should be done before you crop, flip, or rotate. Images can only be scaled down, not up." -msgstr "Du kan proporsjonalt skalere det originale bildet. For beste resultat bør skalering gjøres før du beskjærer, speilvender eller roterer. Bilder kan kun skaleres ned, ikke opp." - -#: wp-admin/edit-comments.php:155 -msgid "A red bar on the left means the comment is waiting for you to moderate it." -msgstr "En rød stripe til venstre betyr at kommentarer venter på din moderasjon." - -#: wp-admin/edit-form-advanced.php:370 -msgid "Keyboard users: When you’re working in the visual editor, you can use Alt + F10 to access the toolbar." -msgstr "Tastaturbrukere: Når du jobber i visuell redigering, kan du bruke Alt + F10 for å få tilgang til verktøylinjen." - -#: wp-admin/includes/image-edit.php:108 -msgid "The aspect ratio is the relationship between the width and height. You can preserve the aspect ratio by holding down the shift key while resizing your selection. Use the input box to specify the aspect ratio, e.g. 1:1 (square), 4:3, 16:9, etc." -msgstr "Størrelsesforholdet (aspect ratio) er forholdet mellom bredden og høyden. Du kan bevare størrelsesforholdet ved å holde nede Shift-tasten mens du endrer størrelse på utvalget. Bruk inputfeltet for å angi størrelsesforholdet, for eksempel 1:1 (kvadrat), 4:3, 16:9, osv." - -#: wp-admin/includes/image-edit.php:111 -msgid "Once you have made your selection, you can adjust it by entering the size in pixels. The minimum selection size is the thumbnail size as set in the Media settings." -msgstr "Når du har gjort ditt valg, kan du justere det ved å angi størrelse i piksler. Minste utvalgsstørrelse er miniatyrstørrelsen som satt i mediainnstillinger." +#: wp-admin/includes/media.php:2827 +msgid "Displayed on attachment pages." +msgstr "Vises på vedleggssider." #: wp-admin/includes/image-edit.php:151 msgid "You can edit the image while preserving the thumbnail. For example, you may wish to have a square thumbnail that displays just a section of the image." msgstr "Du kan redigere bildet og samtidig bevare miniatyrbildet. For eksempel kan det være lurt å ha en firkantet miniatyr som bare viser en del av bildet." -#: wp-admin/includes/media.php:2809 -msgid "Displayed on attachment pages." -msgstr "Vises på vedleggssider." +#: wp-admin/includes/image-edit.php:111 +msgid "Once you have made your selection, you can adjust it by entering the size in pixels. The minimum selection size is the thumbnail size as set in the Media settings." +msgstr "Når du har gjort ditt valg, kan du justere det ved å angi størrelse i piksler. Minste utvalgsstørrelse er miniatyrstørrelsen som satt i mediainnstillinger." + +#: wp-admin/includes/image-edit.php:108 +msgid "The aspect ratio is the relationship between the width and height. You can preserve the aspect ratio by holding down the shift key while resizing your selection. Use the input box to specify the aspect ratio, e.g. 1:1 (square), 4:3, 16:9, etc." +msgstr "Størrelsesforholdet (aspect ratio) er forholdet mellom bredden og høyden. Du kan bevare størrelsesforholdet ved å holde nede Shift-tasten mens du endrer størrelse på utvalget. Bruk inputfeltet for å angi størrelsesforholdet, for eksempel 1:1 (kvadrat), 4:3, 16:9, osv." + +#: wp-admin/edit-form-advanced.php:371 +msgid "Keyboard users: When you’re working in the visual editor, you can use Alt + F10 to access the toolbar." +msgstr "Tastaturbrukere: Når du jobber i visuell redigering, kan du bruke Alt + F10 for å få tilgang til verktøylinjen." + +#: wp-admin/edit-comments.php:171 +msgid "A red bar on the left means the comment is waiting for you to moderate it." +msgstr "En rød stripe til venstre betyr at kommentarer venter på din moderasjon." + +#: wp-admin/includes/image-edit.php:52 +msgid "You can proportionally scale the original image. For best results, scaling should be done before you crop, flip, or rotate. Images can only be scaled down, not up." +msgstr "Du kan proporsjonalt skalere det originale bildet. For beste resultat bør skalering gjøres før du beskjærer, speilvender eller roterer. Bilder kan kun skaleres ned, ikke opp." + +#: wp-admin/includes/image-edit.php:105 +msgid "To crop the image, click on it and drag to make your selection." +msgstr "For å beskjære bildet, klikk på det og dra for å velge område." #: wp-admin/includes/class-wp-comments-list-table.php:329 msgid "All comment types" msgstr "Alle kommentartyper" -#: wp-admin/includes/class-wp-theme-install-list-table.php:64 -#: wp-admin/theme-install.php:149 -msgctxt "themes" -msgid "Featured" -msgstr "Fremhevede" - -#: wp-admin/theme-install.php:150 -msgctxt "themes" -msgid "Popular" -msgstr "Populære" - #: wp-admin/includes/class-wp-theme-install-list-table.php:66 -#: wp-admin/theme-install.php:151 +#: wp-admin/theme-install.php:157 msgctxt "themes" msgid "Latest" msgstr "Siste" -#: wp-admin/users.php:52 -msgid "Remove allows you to remove a user from your site. It does not delete their content. You can also remove multiple users at once by using Bulk Actions." -msgstr "«Fjern» lar deg fjerne en bruker fra nettstedet. Det sletter ikke deres innhold. Du kan også fjerne flere brukere samtidig med «massehandlinger»." +#: wp-admin/theme-install.php:156 +msgctxt "themes" +msgid "Popular" +msgstr "Populære" -#: wp-admin/edit-tags.php:74 -msgid "Sorry, you are not allowed to add this item." -msgstr "Beklager, du har ikke lov til å legge til dette." +#: wp-admin/includes/class-wp-theme-install-list-table.php:64 +#: wp-admin/theme-install.php:155 +msgctxt "themes" +msgid "Featured" +msgstr "Fremhevede" -#: wp-admin/index.php:59 -msgid "Box Controls — Click the title bar of the box to expand or collapse it. Some boxes added by plugins may have configurable content, and will show a “Configure” link in the title bar if you hover over it." -msgstr "Bokskontroll - Klikk på tittellinjen til boksen for å utvide eller forminske den. Noen bokser som legges til av utvidelser kan ha innhold som kan tilpasses, og vil vise en «konfigurer»-lenke i tittellinjen om du holder musen over den." +#: wp-admin/includes/ms.php:992 wp-admin/users.php:275 +msgid "Attribute all content to:" +msgstr "Overfør alt innhold til:" -#: wp-admin/index.php:69 -msgid "At A Glance — Displays a summary of the content on your site and identifies which theme and version of WordPress you are using." -msgstr "Oversikt – Viser en oversikt over innholdet på ditt nettsted og identifiserer hvilket tema og hvilken WordPress-versjon du bruker." - -#: wp-admin/maint/repair.php:147 -msgid "https://wordpress.org/support/forum/how-to-and-troubleshooting" -msgstr "https://wordpress.org/support/forum/how-to-and-troubleshooting" - -#: wp-admin/revision.php:78 -msgid "← Return to editor" -msgstr "← Tilbake til redigering av innlegget" - -#: wp-admin/theme-install.php:23 -msgid "Add Themes" -msgstr "Legg til tema" - -#: wp-admin/theme-install.php:47 -msgid "Search Themes" -msgstr "Søk etter tema" - -#: wp-admin/theme-install.php:48 -msgid "Search themes..." -msgstr "Søk etter tema..." - -#: wp-admin/theme-install.php:240 -msgctxt "theme" -msgid "Details & Preview" -msgstr "Detaljer og forhåndsvisning" - -#: wp-admin/users.php:54 -msgid "Delete brings you to the Delete Users screen for confirmation, where you can permanently remove a user from your site and delete their content. You can also delete multiple users at once by using Bulk Actions." -msgstr "«Slett» tar deg til «Slett brukere»-skjermen for bekreftelse, der du kan slette brukere permanent fra ditt nettsted og slette deres innhold. Du kan også slette flere brukere samtidig ved å bruke «massehandlinger»." +#: wp-admin/includes/ms.php:990 wp-admin/users.php:273 +msgid "Delete all content." +msgstr "Slett alt innhold." #: wp-admin/users.php:267 msgid "What should be done with content owned by this user?" msgstr "Hva bør gjøres med innhold laget av denne brukeren?" -#: wp-admin/includes/ms.php:973 wp-admin/users.php:273 -msgid "Delete all content." -msgstr "Slett alt innhold." +#: wp-admin/users.php:54 +msgid "Delete brings you to the Delete Users screen for confirmation, where you can permanently remove a user from your site and delete their content. You can also delete multiple users at once by using Bulk Actions." +msgstr "«Slett» tar deg til «Slett brukere»-skjermen for bekreftelse, der du kan slette brukere permanent fra ditt nettsted og slette deres innhold. Du kan også slette flere brukere samtidig ved å bruke «massehandlinger»." -#: wp-admin/includes/ms.php:975 wp-admin/users.php:275 -msgid "Attribute all content to:" -msgstr "Overfør alt innhold til:" +#: wp-admin/theme-install.php:250 +msgctxt "theme" +msgid "Details & Preview" +msgstr "Detaljer og forhåndsvisning" -#: wp-admin/includes/ajax-actions.php:1787 -msgid "Type" -msgstr "Skriv" +#: wp-admin/theme-install.php:48 +msgid "Search themes..." +msgstr "Søk etter tema..." -#: wp-admin/admin-footer.php:34 -msgid "Thank you for creating with WordPress." -msgstr "Takk for at du skaper med WordPress." +#: wp-admin/theme-install.php:47 +msgid "Search Themes" +msgstr "Søk etter tema" -#: wp-admin/comment.php:52 wp-admin/custom-background.php:101 -#: wp-admin/custom-header.php:128 wp-admin/edit-comments.php:168 -#: wp-admin/edit-form-advanced.php:382 wp-admin/edit-form-advanced.php:398 -#: wp-admin/edit-form-advanced.php:414 wp-admin/edit-link-form.php:66 -#: wp-admin/edit-tags.php:288 wp-admin/edit.php:225 wp-admin/edit.php:246 -#: wp-admin/export.php:55 wp-admin/import.php:30 wp-admin/index.php:99 -#: wp-admin/link-manager.php:61 wp-admin/media-new.php:57 wp-admin/media.php:84 -#: wp-admin/my-sites.php:49 wp-admin/nav-menus.php:571 -#: wp-admin/options-discussion.php:29 wp-admin/options-general.php:46 -#: wp-admin/options-media.php:35 wp-admin/options-permalink.php:46 -#: wp-admin/options-reading.php:39 wp-admin/options-writing.php:46 -#: wp-admin/plugin-editor.php:145 wp-admin/plugin-install.php:99 -#: wp-admin/plugins.php:396 wp-admin/revision.php:120 -#: wp-admin/theme-editor.php:43 wp-admin/theme-install.php:109 -#: wp-admin/themes.php:119 wp-admin/tools.php:29 wp-admin/update-core.php:577 -#: wp-admin/upload.php:67 wp-admin/upload.php:208 wp-admin/user-edit.php:55 -#: wp-admin/user-new.php:207 wp-admin/users.php:69 wp-admin/widgets.php:75 -msgid "Support Forums" -msgstr "Supportforum" +#: wp-admin/theme-install.php:23 +msgid "Add Themes" +msgstr "Legg til tema" -#: wp-admin/credits.php:42 wp-admin/credits.php:104 -msgid "https://make.wordpress.org/" -msgstr "https://make.wordpress.org/" +#: wp-admin/revision.php:79 +msgid "← Return to editor" +msgstr "← Tilbake til redigering av innlegget" -#: wp-admin/includes/dashboard.php:1493 -msgid "Manage widgets" -msgstr "Håndter widgeter" +#: wp-admin/maint/repair.php:147 +msgid "https://wordpress.org/support/forum/how-to-and-troubleshooting" +msgstr "https://wordpress.org/support/forum/how-to-and-troubleshooting" -#: wp-admin/includes/dashboard.php:1495 -msgid "Manage menus" -msgstr "Håndter menyer" +#: wp-admin/index.php:68 +msgid "At A Glance — Displays a summary of the content on your site and identifies which theme and version of WordPress you are using." +msgstr "Oversikt – Viser en oversikt over innholdet på ditt nettsted og identifiserer hvilket tema og hvilken WordPress-versjon du bruker." + +#: wp-admin/index.php:58 +msgid "Box Controls — Click the title bar of the box to expand or collapse it. Some boxes added by plugins may have configurable content, and will show a “Configure” link in the title bar if you hover over it." +msgstr "Bokskontroll - Klikk på tittellinjen til boksen for å utvide eller forminske den. Noen bokser som legges til av utvidelser kan ha innhold som kan tilpasses, og vil vise en «konfigurer»-lenke i tittellinjen om du holder musen over den." + +#: wp-admin/users.php:52 +msgid "Remove allows you to remove a user from your site. It does not delete their content. You can also remove multiple users at once by using Bulk Actions." +msgstr "«Fjern» lar deg fjerne en bruker fra nettstedet. Det sletter ikke deres innhold. Du kan også fjerne flere brukere samtidig med «massehandlinger»." + +#: wp-admin/edit-form-comment.php:102 wp-admin/includes/meta-boxes.php:212 +msgid "Edit date and time" +msgstr "Rediger dato og tid" + +#: wp-admin/includes/meta-boxes.php:204 +msgid "Browse revisions" +msgstr "Bla i revisjoner" + +#: wp-admin/includes/meta-boxes.php:148 +msgid "Edit visibility" +msgstr "Rediger synlighet" #: wp-admin/includes/meta-boxes.php:101 msgid "Edit status" msgstr "Rediger status" -#: wp-admin/includes/meta-boxes.php:147 -msgid "Edit visibility" -msgstr "Rediger synlighet" +#: wp-admin/includes/dashboard.php:1494 +msgid "Manage menus" +msgstr "Håndter menyer" -#: wp-admin/includes/meta-boxes.php:196 -msgid "Browse revisions" -msgstr "Bla i revisjoner" +#: wp-admin/includes/dashboard.php:1492 +msgid "Manage widgets" +msgstr "Håndter widgeter" -#: wp-admin/edit-form-comment.php:102 wp-admin/includes/meta-boxes.php:204 -msgid "Edit date and time" -msgstr "Rediger dato og tid" +#: wp-admin/credits.php:42 wp-admin/credits.php:104 +msgid "https://make.wordpress.org/" +msgstr "https://make.wordpress.org/" + +#: wp-admin/admin-footer.php:34 +msgid "Thank you for creating with WordPress." +msgstr "Takk for at du skaper med WordPress." + +#: wp-admin/includes/ajax-actions.php:1773 +msgid "Type" +msgstr "Skriv" #: wp-admin/themes.php:140 msgid "Search installed themes..." msgstr "Søk i installerte temaer..." -#: wp-admin/update-core.php:553 -msgid "If an update is available, you᾿ll see a notification appear in the Toolbar and navigation menu." -msgstr "Hvis en oppdatering er tilgjengelig, vil du se et varsel i verktøylinjen og navigasjonsmenyen." - -#: wp-admin/update-core.php:561 -msgid "WordPress — Updating your WordPress installation is a simple one-click procedure: just click on the “Update Now” button when you are notified that a new version is available." -msgstr "WordPress — Å oppdatere WordPress er enkelt, og krever bare et klikk: klikk på «Oppdater nå»-knappen når du blir varslet om at en ny versjon er tilgjengelig." - -#: wp-admin/update-core.php:561 -msgid "In most cases, WordPress will automatically apply maintenance and security updates in the background for you." -msgstr "I de fleste tilfeller vil WordPress automatisk legge inn vedlikeholds- og sikkerhetsoppdateringer for deg i bakgrunnen." - -#: wp-admin/update-core.php:565 +#: wp-admin/update-core.php:562 msgid "Translations — The files translating WordPress into your language are updated for you whenever any other updates occur. But if these files are out of date, you can click the “Update Translations” button." msgstr "Oversettelser — Filene som oversetter WordPress til ditt språk oppdateres sammen med andre oppdateringer. Men, hvis disse filene er utdaterte kan du klikke på «Oppdater oversettelser»-knappen." -#: wp-admin/update-core.php:552 -msgid "On this screen, you can update to the latest version of WordPress, as well as update your themes, plugins, and translations from the WordPress.org repositories." -msgstr "På denne skjermen kan du oppdatere til siste versjon av WordPress, i tillegg til å oppdatere dine temaer og utvidelser fra WordPress.org-repoen." +#: wp-admin/update-core.php:558 +msgid "In most cases, WordPress will automatically apply maintenance and security updates in the background for you." +msgstr "I de fleste tilfeller vil WordPress automatisk legge inn vedlikeholds- og sikkerhetsoppdateringer for deg i bakgrunnen." -#: wp-admin/update-core.php:562 +#: wp-admin/update-core.php:558 +msgid "WordPress — Updating your WordPress installation is a simple one-click procedure: just click on the “Update Now” button when you are notified that a new version is available." +msgstr "WordPress — Å oppdatere WordPress er enkelt, og krever bare et klikk: klikk på «Oppdater nå»-knappen når du blir varslet om at en ny versjon er tilgjengelig." + +#: wp-admin/update-core.php:550 +msgid "If an update is available, you᾿ll see a notification appear in the Toolbar and navigation menu." +msgstr "Hvis en oppdatering er tilgjengelig, vil du se et varsel i verktøylinjen og navigasjonsmenyen." + +#: wp-admin/update-core.php:559 msgid "Themes and Plugins — To update individual themes or plugins from this screen, use the checkboxes to make your selection, then click on the appropriate “Update” button. To update all of your themes or plugins at once, you can check the box at the top of the section to select all before clicking the update button." msgstr "Temaer og utvidelser — For å oppdatere individuelle temaer eller utvidelser fra denne skjermen, bruk avkrysningsboksene for å gjøre ditt valg, så klikker du på den tilsvarende «Oppdater»-knappen. For å oppdatere alle temaer og utvidelser samtidig kan du huke av boksen i toppen av valgområdet for å velge alle før du trykker på knappen for oppdatering." -#: wp-admin/about.php:50 +#: wp-admin/update-core.php:549 +msgid "On this screen, you can update to the latest version of WordPress, as well as update your themes, plugins, and translations from the WordPress.org repositories." +msgstr "På denne skjermen kan du oppdatere til siste versjon av WordPress, i tillegg til å oppdatere dine temaer og utvidelser fra WordPress.org-repoen." + +#: wp-admin/about.php:35 msgid "Welcome to WordPress %s" msgstr "Velkommen til WordPress %s" #: wp-admin/themes.php:92 -msgid "If you would like to see more themes to choose from, click on the “Add New” button and you will be able to browse or search for additional themes from the WordPress Theme Directory. Themes in the WordPress Theme Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they’re free!" -msgstr "Hvis du ønsker å se flere temaer å velge mellom, klikk på «Legg til»-knappen. Da kan du bla igjennom eller søke etter andre temaer fra tema-katalogenen til WordPress.org. Disse temaene er laget av tredjeparts utviklere, og er kompatible med samme lisens som WordPress bruker. Og, de er helt gratis!" +msgid "If you would like to see more themes to choose from, click on the “Add New” button and you will be able to browse or search for additional themes from the WordPress Theme Directory. Themes in the WordPress Theme Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they’re free!" +msgstr "Hvis du ønsker å se flere temaer å velge mellom, klikk på «Legg til»-knappen. Da kan du bla igjennom eller søke etter andre temaer fra tema-katalogenen til WordPress.org. Disse temaene er laget av tredjeparts utviklere, og er kompatible med samme lisens som WordPress bruker. Og, de er helt gratis!" -#: wp-admin/includes/dashboard.php:258 -msgid "%s Post" -msgid_plural "%s Posts" -msgstr[0] "%s innlegg" -msgstr[1] "%s innlegg" +#. translators: 1: number of megabytes, 2: percentage +#: wp-admin/includes/dashboard.php:1315 +msgid "%1$s MB (%2$s%%) Space Used" +msgstr "%1$s MB (%2$s%%) lagringsplass brukt" + +#. translators: number of megabytes +#: wp-admin/includes/dashboard.php:1303 +msgid "%s MB Space Allowed" +msgstr "%s MB lagringsplass tillatt" + +#. translators: date and time format for recent posts on the dashboard, see +#. https://secure.php.net/date +#: wp-admin/includes/dashboard.php:853 +msgid "M jS" +msgstr "j. M" + +#. translators: Number of comments in moderation +#: wp-admin/includes/ajax-actions.php:381 +#: wp-admin/includes/ajax-actions.php:1087 wp-admin/includes/dashboard.php:281 +msgctxt "comments" +msgid "%s in moderation" +msgid_plural "%s in moderation" +msgstr[0] "%s i moderasjonskø" +msgstr[1] "%s i moderasjonskø" #: wp-admin/includes/dashboard.php:260 msgid "%s Page" @@ -3099,148 +3282,138 @@ msgid_plural "%s Pages" msgstr[0] "%s side" msgstr[1] "%s sider" -#. translators: Number of comments in moderation -#: wp-admin/includes/ajax-actions.php:383 -#: wp-admin/includes/ajax-actions.php:1092 wp-admin/includes/dashboard.php:281 -msgctxt "comments" -msgid "%s in moderation" -msgid_plural "%s in moderation" -msgstr[0] "%s i moderasjonskø" -msgstr[1] "%s i moderasjonskø" - -#. translators: date and time format for recent posts on the dashboard, see -#. https://secure.php.net/date -#: wp-admin/includes/dashboard.php:850 -msgid "M jS" -msgstr "j. M" - -#. translators: number of megabytes -#: wp-admin/includes/dashboard.php:1300 -msgid "%s MB Space Allowed" -msgstr "%s MB lagringsplass tillatt" - -#. translators: 1: number of megabytes, 2: percentage -#: wp-admin/includes/dashboard.php:1312 -msgid "%1$s MB (%2$s%%) Space Used" -msgstr "%1$s MB (%2$s%%) lagringsplass brukt" - -#: wp-admin/options-reading.php:33 -msgid "When this setting is in effect, a reminder is shown in the At a Glance box of the Dashboard that says, “Search Engines Discouraged,” to remind you that your site is not being crawled." -msgstr "Når denne innstillingen er aktiv vises en påminnelse i kontrollpanelet som sier at «Søkemotorer bedt om ikke å indeksere nettstedet» for å minne deg på at nettstedet ikke indekseres." +#: wp-admin/includes/dashboard.php:258 +msgid "%s Post" +msgid_plural "%s Posts" +msgstr[0] "%s innlegg" +msgstr[1] "%s innlegg" #: wp-admin/includes/dashboard.php:39 msgid "At a Glance" msgstr "Oversikt" -#: wp-admin/includes/theme.php:246 +#: wp-admin/options-reading.php:33 +msgid "When this setting is in effect, a reminder is shown in the At a Glance box of the Dashboard that says, “Search Engines Discouraged,” to remind you that your site is not being crawled." +msgstr "Når denne innstillingen er aktiv vises en påminnelse i kontrollpanelet som sier at «Søkemotorer bedt om ikke å indeksere nettstedet» for å minne deg på at nettstedet ikke indekseres." + +#: wp-admin/includes/theme.php:248 msgid "Accessibility Ready" msgstr "Tilgjengelighetstilpasset" -#: wp-admin/includes/theme.php:638 wp-admin/themes.php:452 +#: wp-admin/includes/theme.php:663 wp-admin/themes.php:460 msgid "This is a child theme of %s." msgstr "Dette er et dattertema til %s." -#: wp-admin/themes.php:72 -msgid "This screen is used for managing your installed themes. Aside from the default theme(s) included with your WordPress installation, themes are designed and developed by third parties." -msgstr "Denne skjermen brukes for å håndtere dine installerte temaer. Ved siden av standardtema(ene) som er inkludert i installasjonen, designes og utvikles temaer av tredjepart." - -#: wp-admin/themes.php:74 -msgid "Hover or tap to see Activate and Live Preview buttons" -msgstr "Hold musen over eller klikk for å se Aktiver- og Live forhåndsvisningsknapper" - -#: wp-admin/themes.php:75 -msgid "Click on the theme to see the theme name, version, author, description, tags, and the Delete link" -msgstr "Klikk på temaet for å se navn, versjon, forfatter, beskrivelse, stikkord og slette-lenken" - -#: wp-admin/themes.php:76 -msgid "Click Customize for the current theme or Live Preview for any other theme to see a live preview" -msgstr "Klikk Tilpass for det gjeldende temaet eller live forhåndsvisning for et annet tema for å se det i bruk" - -#: wp-admin/themes.php:77 -msgid "The current theme is displayed highlighted as the first theme." -msgstr "Det gjeldende temaet vises uthevet som det første temaet." - -#: wp-admin/themes.php:105 -msgid "Tap or hover on any theme then click the Live Preview button to see a live preview of that theme and change theme options in a separate, full-screen view. You can also find a Live Preview button at the bottom of the theme details screen. Any installed theme can be previewed and customized in this way." -msgstr "Hold musen over et tema og klikk Live forhåndsvisnings-knappen for å se en prøve av temaet og endre valg i et separat fullskjermsvindu. Du kan også finne en Live forhåndsvisningsknapp på bunn av temadetaljer-siden. Alle installerte temaer kan forhåndsvises og tilpasses på denne måten." - -#: wp-admin/themes.php:106 -msgid "The theme being previewed is fully interactive — navigate to different pages to see how the theme handles posts, archives, and other page templates. The settings may differ depending on what theme features the theme being previewed supports. To accept the new settings and activate the theme all in one step, click the Save & Activate button above the menu." -msgstr "Temaet som forhåndsvises er helt interaktivt – naviger for å vise ulike sider og hvordan temaet håndterer innlegg, arkiv og andre sidemaler. Innstillingene kan variere ut ifra hvilke temafunksjoner temaet støtter. For å akseptere de nye innstillingene og aktivere temaet, alt på en gang, klikk Lagre og aktiver-knappen over denne menyen." - #: wp-admin/themes.php:107 msgid "When previewing on smaller monitors, you can use the collapse icon at the bottom of the left-hand pane. This will hide the pane, giving you more room to preview your site in the new theme. To bring the pane back, click on the collapse icon again." msgstr "Når du forhåndsviser på små skjermer kan du bruke trekk sammen-ikonet på bunn av feltet til venstre. Dette vil skjule feltet og gir deg mer plass til å se nettstedet med det nye temaet. For å få feltet tilbake, klikk på trekk sammen-ikonet igjen." +#: wp-admin/themes.php:106 +msgid "The theme being previewed is fully interactive — navigate to different pages to see how the theme handles posts, archives, and other page templates. The settings may differ depending on what theme features the theme being previewed supports. To accept the new settings and activate the theme all in one step, click the Save & Activate button above the menu." +msgstr "Temaet som forhåndsvises er helt interaktivt – naviger for å vise ulike sider og hvordan temaet håndterer innlegg, arkiv og andre sidemaler. Innstillingene kan variere ut ifra hvilke temafunksjoner temaet støtter. For å akseptere de nye innstillingene og aktivere temaet, alt på en gang, klikk Lagre og aktiver-knappen over denne menyen." + +#: wp-admin/themes.php:105 +msgid "Tap or hover on any theme then click the Live Preview button to see a live preview of that theme and change theme options in a separate, full-screen view. You can also find a Live Preview button at the bottom of the theme details screen. Any installed theme can be previewed and customized in this way." +msgstr "Hold musen over et tema og klikk Live forhåndsvisnings-knappen for å se en prøve av temaet og endre valg i et separat fullskjermsvindu. Du kan også finne en Live forhåndsvisningsknapp på bunn av temadetaljer-siden. Alle installerte temaer kan forhåndsvises og tilpasses på denne måten." + +#: wp-admin/themes.php:77 +msgid "The current theme is displayed highlighted as the first theme." +msgstr "Det gjeldende temaet vises uthevet som det første temaet." + +#: wp-admin/themes.php:76 +msgid "Click Customize for the current theme or Live Preview for any other theme to see a live preview" +msgstr "Klikk Tilpass for det gjeldende temaet eller live forhåndsvisning for et annet tema for å se det i bruk" + +#: wp-admin/themes.php:75 +msgid "Click on the theme to see the theme name, version, author, description, tags, and the Delete link" +msgstr "Klikk på temaet for å se navn, versjon, forfatter, beskrivelse, stikkord og slette-lenken" + +#: wp-admin/themes.php:74 +msgid "Hover or tap to see Activate and Live Preview buttons" +msgstr "Hold musen over eller klikk for å se Aktiver- og Live forhåndsvisningsknapper" + +#: wp-admin/themes.php:72 +msgid "This screen is used for managing your installed themes. Aside from the default theme(s) included with your WordPress installation, themes are designed and developed by third parties." +msgstr "Denne skjermen brukes for å håndtere dine installerte temaer. Ved siden av standardtema(ene) som er inkludert i installasjonen, designes og utvikles temaer av tredjepart." + #: wp-admin/widgets.php:390 msgid "To activate a widget drag it to a sidebar or click on it. To deactivate a widget and delete its settings, drag it back." msgstr "For å aktivere en widget, dra den til sidekolonnen eller klikk på den. For å deaktivere en widget og slette innstillingene, dra den tilbake." +#. translators: 1: The rating +#: wp-admin/includes/template.php:2102 +msgid "%s rating" +msgstr "%s vurdering" + #. translators: 1: The rating, 2: The number of ratings -#: wp-admin/includes/template.php:2072 +#: wp-admin/includes/template.php:2098 msgid "%1$s rating based on %2$s rating" msgid_plural "%1$s rating based on %2$s ratings" msgstr[0] "%1$s – basert på %2$s vurdering" msgstr[1] "%1$s – basert på %2$s vurderinger" -#. translators: 1: The rating -#: wp-admin/includes/template.php:2076 -msgid "%s rating" -msgstr "%s vurdering" - #: wp-admin/my-sites.php:42 msgid "This screen shows an individual user all of their sites in this network, and also allows that user to set a primary site. They can use the links under each site to visit either the front end or the dashboard for that site." msgstr "Denne skjermen viser individuelle brukere alle deres nettsteder i dette nettverket, og lar også brukeren velge sitt primære nettsted. De kan bruke lenkene under hvert nettsted for å vise enten forsiden eller kontrollpanelet for det nettstedet." #. translators: 1: Error code, 2: Error message. -#: wp-admin/includes/class-wp-automatic-updater.php:889 -msgid "Rollback Error: [%1$s] %2$s" -msgstr "Rollback-feil: [%1$s] %2$s" - -#. translators: 1: Error code, 2: Error message. -#: wp-admin/includes/class-wp-automatic-updater.php:892 +#: wp-admin/includes/class-wp-automatic-updater.php:883 msgid "Error: [%1$s] %2$s" msgstr "Feil: [%1$s] %2$s" -#: wp-admin/includes/class-wp-automatic-updater.php:816 -msgid "The following plugins were successfully updated:" -msgstr "Følgende utvidelser ble korrekt oppdaterte:" +#. translators: 1: Error code, 2: Error message. +#: wp-admin/includes/class-wp-automatic-updater.php:880 +msgid "Rollback Error: [%1$s] %2$s" +msgstr "Rollback-feil: [%1$s] %2$s" -#: wp-admin/includes/class-wp-automatic-updater.php:817 -msgid "The following themes were successfully updated:" -msgstr "Følgende temaer ble korrekt oppdaterte:" - -#: wp-admin/includes/class-wp-automatic-updater.php:818 -msgid "The following translations were successfully updated:" -msgstr "Følgende oversettelser ble korrekt oppdaterte:" - -#: wp-admin/includes/class-wp-automatic-updater.php:829 -msgid "The following plugins failed to update:" -msgstr "Følgende utvidelser kunne ikke oppdateres:" - -#: wp-admin/includes/class-wp-automatic-updater.php:830 -msgid "The following themes failed to update:" -msgstr "Følgende temaer kunne ikke oppdateres:" - -#: wp-admin/includes/class-wp-automatic-updater.php:831 +#: wp-admin/includes/class-wp-automatic-updater.php:822 msgid "The following translations failed to update:" msgstr "Følgende oversettelser kunne ikke oppdateres:" -#: wp-admin/post.php:72 -msgid "Unable to submit this form, please refresh and try again." -msgstr "Kunne ikke sende dette skjemaet. Vennligst last inn siden på nytt og prøv igjen." +#: wp-admin/includes/class-wp-automatic-updater.php:821 +msgid "The following themes failed to update:" +msgstr "Følgende temaer kunne ikke oppdateres:" -#: wp-admin/index.php:57 -msgid "Screen Options — Use the Screen Options tab to choose which Dashboard boxes to show." -msgstr "Visningsinnstillinger – Bruk Visningsinnstillinger-fanen for å velge hvilke bokser som skal vises i kontrollpanelet." +#: wp-admin/includes/class-wp-automatic-updater.php:820 +msgid "The following plugins failed to update:" +msgstr "Følgende utvidelser kunne ikke oppdateres:" -#: wp-admin/index.php:70 -msgid "Activity — Shows the upcoming scheduled posts, recently published posts, and the most recent comments on your posts and allows you to moderate them." -msgstr "Aktivitet – Viser planlagte innlegg, nylig publiserte innlegg og nylige kommentarer til dine innlegg, og lar deg moderere dem." +#: wp-admin/includes/class-wp-automatic-updater.php:809 +msgid "The following translations were successfully updated:" +msgstr "Følgende oversettelser ble korrekt oppdaterte:" -#: wp-admin/index.php:72 -msgid "Quick Draft — Allows you to create a new post and save it as a draft. Also displays links to the 5 most recent draft posts you've started." -msgstr "Hurtigkladd – Lar deg lage et nytt innlegg og lagre det som en kladd. Viser også lenker til de fem siste kladdene du har påbegynt." +#: wp-admin/includes/class-wp-automatic-updater.php:808 +msgid "The following themes were successfully updated:" +msgstr "Følgende temaer ble korrekt oppdaterte:" + +#: wp-admin/includes/class-wp-automatic-updater.php:807 +msgid "The following plugins were successfully updated:" +msgstr "Følgende utvidelser ble korrekt oppdaterte:" + +#: wp-admin/widgets.php:504 +msgid "Add Widget" +msgstr "Legg til widget" + +#: wp-admin/includes/theme.php:642 wp-admin/themes.php:432 +msgid "Show next theme" +msgstr "Vis neste tema" + +#: wp-admin/includes/theme.php:641 wp-admin/themes.php:431 +msgid "Show previous theme" +msgstr "Vis forrige tema" + +#: wp-admin/themes.php:453 +msgid "Update Available" +msgstr "Oppdatering tilgjengelig" + +#: wp-admin/themes.php:158 +msgctxt "Add new theme" +msgid "Add New" +msgstr "Legg til nytt" + +#: wp-admin/theme-install.php:46 wp-admin/themes.php:138 +msgid "Add New Theme" +msgstr "Legg til nytt tema" #: wp-admin/themes.php:134 msgid "" @@ -3252,475 +3425,460 @@ msgstr "" "\n" "Klikk «Avbryt» for å gå tilbake eller «OK» for å bekrefte slettingen." -#: wp-admin/theme-install.php:46 wp-admin/themes.php:138 -msgid "Add New Theme" -msgstr "Legg til nytt tema" +#: wp-admin/index.php:71 +msgid "Quick Draft — Allows you to create a new post and save it as a draft. Also displays links to the 5 most recent draft posts you've started." +msgstr "Hurtigkladd – Lar deg lage et nytt innlegg og lagre det som en kladd. Viser også lenker til de fem siste kladdene du har påbegynt." -#: wp-admin/themes.php:158 -msgctxt "Add new theme" -msgid "Add New" -msgstr "Legg til nytt" +#: wp-admin/index.php:69 +msgid "Activity — Shows the upcoming scheduled posts, recently published posts, and the most recent comments on your posts and allows you to moderate them." +msgstr "Aktivitet – Viser planlagte innlegg, nylig publiserte innlegg og nylige kommentarer til dine innlegg, og lar deg moderere dem." -#: wp-admin/themes.php:445 -msgid "Update Available" -msgstr "Oppdatering tilgjengelig" +#: wp-admin/index.php:56 +msgid "Screen Options — Use the Screen Options tab to choose which Dashboard boxes to show." +msgstr "Visningsinnstillinger – Bruk Visningsinnstillinger-fanen for å velge hvilke bokser som skal vises i kontrollpanelet." -#: wp-admin/includes/theme.php:616 wp-admin/themes.php:423 -msgid "Show previous theme" -msgstr "Vis forrige tema" +#: wp-admin/post.php:72 +msgid "Unable to submit this form, please refresh and try again." +msgstr "Kunne ikke sende dette skjemaet. Vennligst last inn siden på nytt og prøv igjen." -#: wp-admin/includes/theme.php:617 wp-admin/themes.php:424 -msgid "Show next theme" -msgstr "Vis neste tema" +#: wp-admin/includes/dashboard.php:1310 wp-admin/includes/dashboard.php:1323 +msgid "Manage Uploads" +msgstr "Håndter opplastinger" -#: wp-admin/widgets.php:504 -msgid "Add Widget" -msgstr "Legg til widget" +#: wp-admin/includes/dashboard.php:1260 +msgid "Popular Plugin" +msgstr "Populær utvidelse" -#: wp-admin/includes/dashboard.php:46 -msgid "Activity" -msgstr "Aktivitet" +#: wp-admin/includes/dashboard.php:847 +msgid "Tomorrow" +msgstr "I morgen" -#: wp-admin/includes/class-wp-automatic-updater.php:795 -msgid "WordPress site: %s" -msgstr "WordPress-nettsted: %s" +#: wp-admin/includes/dashboard.php:784 +msgid "No activity yet!" +msgstr "Ingen aktivitet ennå!" -#: wp-admin/includes/class-wp-automatic-updater.php:801 -msgid "SUCCESS: WordPress was successfully updated to %s" -msgstr "VELLYKKET: WordPress ble oppdatert til %s" +#: wp-admin/includes/dashboard.php:775 +msgid "Recently Published" +msgstr "Nylig publisert" -#: wp-admin/includes/class-wp-automatic-updater.php:803 -msgid "FAILED: WordPress failed to update to %s" -msgstr "FEILET: Wordpress ble ikke oppdatert til %s" +#: wp-admin/includes/dashboard.php:768 +msgid "Publishing Soon" +msgstr "Publiserer snart" -#: wp-admin/includes/class-wp-automatic-updater.php:823 -msgid "SUCCESS: %s" -msgstr "VELLYKKET: %s" +#: wp-admin/includes/dashboard.php:51 wp-admin/includes/dashboard.php:570 +msgid "Drafts" +msgstr "Kladder" -#: wp-admin/includes/class-wp-automatic-updater.php:837 -msgid "FAILED: %s" -msgstr "FEILET: %s" +#: wp-admin/includes/dashboard.php:568 +msgctxt "drafts" +msgid "View all" +msgstr "Vis alle" -#: wp-admin/includes/class-wp-automatic-updater.php:860 -msgid "[%s] There were failures during background updates" -msgstr "[%s] Det skjedde feil i løpet av bakgrunnsoppdateringene" +#: wp-admin/includes/dashboard.php:515 +msgid "What’s on your mind?" +msgstr "Hva tenker du på?" -#: wp-admin/includes/class-wp-automatic-updater.php:862 -msgid "[%s] Background updates have finished" -msgstr "[%s] Bakgrunnsoppdateringene er klare" - -#: wp-admin/includes/dashboard.php:51 -msgid "Quick Draft" -msgstr "Hurtigkladd" +#. translators: 1: version number, 2: theme name +#: wp-admin/includes/update.php:286 +msgid "WordPress %1$s running %2$s theme." +msgstr "WordPress %1$s med temaet %2$s." #: wp-admin/includes/dashboard.php:56 msgid "WordPress News" msgstr "WordPress-nyheter" -#. translators: 1: version number, 2: theme name -#: wp-admin/includes/update.php:278 -msgid "WordPress %1$s running %2$s theme." -msgstr "WordPress %1$s med temaet %2$s." +#: wp-admin/includes/dashboard.php:51 +msgid "Quick Draft" +msgstr "Hurtigkladd" -#: wp-admin/includes/dashboard.php:512 -msgid "What’s on your mind?" -msgstr "Hva tenker du på?" +#: wp-admin/includes/class-wp-automatic-updater.php:853 +msgid "[%s] Background updates have finished" +msgstr "[%s] Bakgrunnsoppdateringene er klare" -#: wp-admin/includes/dashboard.php:565 -msgctxt "drafts" -msgid "View all" -msgstr "Vis alle" +#: wp-admin/includes/class-wp-automatic-updater.php:851 +msgid "[%s] There were failures during background updates" +msgstr "[%s] Det skjedde feil i løpet av bakgrunnsoppdateringene" -#: wp-admin/includes/dashboard.php:51 wp-admin/includes/dashboard.php:567 -msgid "Drafts" -msgstr "Kladder" +#: wp-admin/includes/class-wp-automatic-updater.php:828 +msgid "FAILED: %s" +msgstr "FEILET: %s" -#: wp-admin/includes/dashboard.php:765 -msgid "Publishing Soon" -msgstr "Publiserer snart" +#: wp-admin/includes/class-wp-automatic-updater.php:814 +msgid "SUCCESS: %s" +msgstr "VELLYKKET: %s" -#: wp-admin/includes/dashboard.php:772 -msgid "Recently Published" -msgstr "Nylig publisert" +#: wp-admin/includes/class-wp-automatic-updater.php:794 +msgid "FAILED: WordPress failed to update to %s" +msgstr "FEILET: Wordpress ble ikke oppdatert til %s" -#: wp-admin/includes/dashboard.php:781 -msgid "No activity yet!" -msgstr "Ingen aktivitet ennå!" +#: wp-admin/includes/class-wp-automatic-updater.php:792 +msgid "SUCCESS: WordPress was successfully updated to %s" +msgstr "VELLYKKET: WordPress ble oppdatert til %s" -#: wp-admin/includes/dashboard.php:844 -msgid "Tomorrow" -msgstr "I morgen" +#: wp-admin/includes/class-wp-automatic-updater.php:786 +msgid "WordPress site: %s" +msgstr "WordPress-nettsted: %s" -#: wp-admin/includes/dashboard.php:1257 -msgid "Popular Plugin" -msgstr "Populær utvidelse" +#: wp-admin/includes/dashboard.php:46 +msgid "Activity" +msgstr "Aktivitet" -#: wp-admin/includes/dashboard.php:1307 wp-admin/includes/dashboard.php:1320 -msgid "Manage Uploads" -msgstr "Håndter opplastinger" - -#: wp-admin/includes/class-core-upgrader.php:138 -#: wp-admin/includes/class-wp-upgrader.php:172 -#: wp-admin/includes/update-core.php:854 wp-admin/includes/update-core.php:929 -#: wp-admin/includes/update-core.php:952 -msgid "The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions." -msgstr "Oppdateringen kan ikke installeres fordi at noen av filene ikke vil kunne kopieres. Dette er som regel på grunn av inkonsekvente filrettigheter." - -#: wp-admin/includes/class-wp-automatic-updater.php:661 -msgid "WordPress %s is also now available." -msgstr "WordPress %s er nå også tilgjengelig." - -#: wp-admin/includes/class-wp-automatic-updater.php:685 -msgid "Your site at %1$s experienced a critical failure while trying to update WordPress to version %2$s." -msgstr "Det skjedde en kritisk feil når ditt nettsted på %1$s skulle oppdatere WordPress til versjon %2$s." - -#: wp-admin/includes/class-wp-automatic-updater.php:725 +#: wp-admin/includes/class-wp-automatic-updater.php:716 msgid "Your site was running version %s." msgstr "Ditt nettsted kjørte versjon %s." -#: wp-admin/includes/class-language-pack-upgrader-skin.php:29 -#: wp-admin/update-core.php:424 wp-admin/update-core.php:717 -msgid "Update Translations" -msgstr "Oppdater oversettelser" +#: wp-admin/includes/class-wp-automatic-updater.php:676 +msgid "Your site at %1$s experienced a critical failure while trying to update WordPress to version %2$s." +msgstr "Det skjedde en kritisk feil når ditt nettsted på %1$s skulle oppdatere WordPress til versjon %2$s." + +#: wp-admin/includes/class-wp-automatic-updater.php:652 +msgid "WordPress %s is also now available." +msgstr "WordPress %s er nå også tilgjengelig." + +#: wp-admin/includes/class-core-upgrader.php:138 +#: wp-admin/includes/class-wp-upgrader.php:172 +#: wp-admin/includes/update-core.php:851 wp-admin/includes/update-core.php:928 +#: wp-admin/includes/update-core.php:951 +msgid "The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions." +msgstr "Oppdateringen kan ikke installeres fordi at noen av filene ikke vil kunne kopieres. Dette er som regel på grunn av inkonsekvente filrettigheter." + +#: wp-admin/update-core.php:410 +msgid "Your translations are all up to date." +msgstr "Alle oversettelser er oppdaterte." + +#: wp-admin/update-core.php:409 wp-admin/update-core.php:417 +msgid "Translations" +msgstr "Oversettelser" + +#: wp-admin/update-core.php:178 +msgid "Future security updates will be applied automatically." +msgstr "Fremtidige sikkerhetsoppdateringer vil bli lastet ned automatisk." + +#: wp-admin/includes/post.php:1614 +msgid "If you take over, %s will be blocked from continuing to edit." +msgstr "Hvis du tar over, vil %s bli blokkert fra å fortsette å redigere." + +#: wp-admin/includes/post.php:1612 +msgid "This content is currently locked." +msgstr "Dette innholdet er for tiden låst." + +#: wp-admin/includes/class-wp-automatic-updater.php:731 +msgid "Error code: %s" +msgstr "Feilkode: %s" + +#: wp-admin/includes/class-wp-automatic-updater.php:718 +msgid "Your hosting company, support forum volunteers, or a friendly developer may be able to use this information to help you:" +msgstr "Din webhost, frivillige i supportforumet eller vennligsinnede utviklere kan kanskje bruke denne informasjonen for å hjelpe deg:" + +#: wp-admin/includes/class-wp-automatic-updater.php:717 +msgid "We have some data that describes the error your site encountered." +msgstr "Vi har noe data som beskriver feilen som ditt nettsted opplevde." + +#: wp-admin/includes/class-wp-automatic-updater.php:712 +msgid "The WordPress Team" +msgstr "WordPress-teamet" + +#: wp-admin/includes/class-wp-automatic-updater.php:708 +msgid "You also have some plugins or themes with updates available. Update them now:" +msgstr "Du har også noen utvidelser eller temaer som har tilgjengelige oppdateringer. Oppdater dem nå:" + +#: wp-admin/includes/class-wp-automatic-updater.php:693 +msgid "If you experience any issues or need support, the volunteers in the WordPress.org support forums may be able to help." +msgstr "Hvis du opplever noen problemer eller trenger støtte, kan kanskje de frivillige i WordPress.org supportforum hjelpe deg." + +#: wp-admin/includes/class-wp-automatic-updater.php:699 +#: wp-admin/update-core.php:550 +msgid "Keeping your site updated is important for security. It also makes the internet a safer place for you and your readers." +msgstr "Å holde nettstedet oppdatert er viktig for sikkerheten. Det gjør også Internett til et tryggere sted for deg og dine lesere." + +#: wp-admin/includes/class-wp-automatic-updater.php:682 +msgid "Please check out your site now. It's possible that everything is working. If it says you need to update, you should do so:" +msgstr "Vennligst sjekk ditt nettsted nå. Det er mulig at alt fungerer. Hvis det sier at du må oppdatere, bør du gjøre dette:" + +#: wp-admin/includes/class-wp-automatic-updater.php:680 +msgid "This means your site may be offline or broken. Don't panic; this can be fixed." +msgstr "Dette betyr at ditt nettsted kan være utilgjengelig eller ødelagt. Men, foreløpig ingen grunn til panikk; dette kan vi fikse." + +#: wp-admin/includes/class-wp-automatic-updater.php:678 +msgid "Your site at %1$s experienced a critical failure while trying to update to the latest version of WordPress, %2$s." +msgstr "Ditt nettsted på %1$s fikk en kritisk feil mens det prøvde å oppdatere seg selv til siste versjon av WordPress, %2$s." + +#: wp-admin/includes/class-wp-automatic-updater.php:653 +#: wp-admin/includes/class-wp-automatic-updater.php:670 +msgid "Updating is easy and only takes a few moments:" +msgstr "Å oppdatere er lett, og tar kun få minutter:" + +#: wp-admin/includes/class-wp-automatic-updater.php:668 +msgid "We tried but were unable to update your site automatically." +msgstr "Vi forsøkte, men klarte ikke å oppdatere ditt nettsted automatisk." + +#: wp-admin/includes/class-wp-automatic-updater.php:661 +msgid "Please update your site at %1$s to WordPress %2$s." +msgstr "Vennligst oppdater ditt nettsted på %1$s til WordPress %2$s." + +#: wp-admin/includes/class-wp-automatic-updater.php:648 +msgid "For more on version %s, see the About WordPress screen:" +msgstr "For mer om versjon %s, se Om WordPress-skjermen:" + +#: wp-admin/includes/class-wp-automatic-updater.php:644 +msgid "No further action is needed on your part." +msgstr "Du trenger ikke å gjøre noe mer!" + +#: wp-admin/includes/class-wp-automatic-updater.php:641 +msgid "Howdy! Your site at %1$s has been updated automatically to WordPress %2$s." +msgstr "Hei! Ditt nettsted på %1$s har blitt oppdatert automatisk til WordPress %2$s." + +#. translators: 1: Site name. +#: wp-admin/includes/class-wp-automatic-updater.php:626 +msgid "[%1$s] URGENT: Your site may be down due to a failed update" +msgstr "[%1$s] HASTER: Ditt nettsted kan være nede på grunn av en mislykket oppdatering" + +#. translators: 1: Site name, 2: WordPress version number. +#: wp-admin/includes/class-wp-automatic-updater.php:621 +msgid "[%1$s] WordPress %2$s is available. Please update!" +msgstr "[%1$s] WordPress %2$s er tilgjengelig. Vennligst oppdater!" + +#. translators: 1: Site name, 2: WordPress version number. +#: wp-admin/includes/class-wp-automatic-updater.php:615 +msgid "[%1$s] Your site has updated to WordPress %2$s" +msgstr "[%1$s] Ditt nettsted har blitt oppdatert til WordPress %2$s" + +#: wp-admin/includes/class-wp-automatic-updater.php:319 +msgid "Translations for %s" +msgstr "Oversettelser for %s" #: wp-admin/includes/class-language-pack-upgrader-skin.php:47 #: wp-admin/includes/class-wp-automatic-updater.php:320 msgid "Updating translations for %1$s (%2$s)…" msgstr "Oppdaterer oversettelser for %1$s (%2$s)…" -#: wp-admin/includes/class-wp-automatic-updater.php:319 -msgid "Translations for %s" -msgstr "Oversettelser for %s" +#: wp-admin/includes/class-language-pack-upgrader-skin.php:29 +#: wp-admin/update-core.php:421 wp-admin/update-core.php:740 +msgid "Update Translations" +msgstr "Oppdater oversettelser" -#. translators: 1: Site name, 2: WordPress version number. -#: wp-admin/includes/class-wp-automatic-updater.php:624 -msgid "[%1$s] Your site has updated to WordPress %2$s" -msgstr "[%1$s] Ditt nettsted har blitt oppdatert til WordPress %2$s" - -#. translators: 1: Site name, 2: WordPress version number. -#: wp-admin/includes/class-wp-automatic-updater.php:630 -msgid "[%1$s] WordPress %2$s is available. Please update!" -msgstr "[%1$s] WordPress %2$s er tilgjengelig. Vennligst oppdater!" - -#. translators: 1: Site name. -#: wp-admin/includes/class-wp-automatic-updater.php:635 -msgid "[%1$s] URGENT: Your site may be down due to a failed update" -msgstr "[%1$s] HASTER: Ditt nettsted kan være nede på grunn av en mislykket oppdatering" - -#: wp-admin/includes/class-wp-automatic-updater.php:650 -msgid "Howdy! Your site at %1$s has been updated automatically to WordPress %2$s." -msgstr "Hei! Ditt nettsted på %1$s har blitt oppdatert automatisk til WordPress %2$s." - -#: wp-admin/includes/class-wp-automatic-updater.php:653 -msgid "No further action is needed on your part." -msgstr "Du trenger ikke å gjøre noe mer!" - -#: wp-admin/includes/class-wp-automatic-updater.php:657 -msgid "For more on version %s, see the About WordPress screen:" -msgstr "For mer om versjon %s, se Om WordPress-skjermen:" - -#: wp-admin/includes/class-wp-automatic-updater.php:670 -msgid "Please update your site at %1$s to WordPress %2$s." -msgstr "Vennligst oppdater ditt nettsted på %1$s til WordPress %2$s." - -#: wp-admin/includes/class-wp-automatic-updater.php:677 -msgid "We tried but were unable to update your site automatically." -msgstr "Vi forsøkte, men klarte ikke å oppdatere ditt nettsted automatisk." - -#: wp-admin/includes/class-wp-automatic-updater.php:662 -#: wp-admin/includes/class-wp-automatic-updater.php:679 -msgid "Updating is easy and only takes a few moments:" -msgstr "Å oppdatere er lett, og tar kun få minutter:" - -#: wp-admin/includes/class-wp-automatic-updater.php:687 -msgid "Your site at %1$s experienced a critical failure while trying to update to the latest version of WordPress, %2$s." -msgstr "Ditt nettsted på %1$s fikk en kritisk feil mens det prøvde å oppdatere seg selv til siste versjon av WordPress, %2$s." - -#: wp-admin/includes/class-wp-automatic-updater.php:689 -msgid "This means your site may be offline or broken. Don't panic; this can be fixed." -msgstr "Dette betyr at ditt nettsted kan være utilgjengelig eller ødelagt. Men, foreløpig ingen grunn til panikk; dette kan vi fikse." - -#: wp-admin/includes/class-wp-automatic-updater.php:691 -msgid "Please check out your site now. It's possible that everything is working. If it says you need to update, you should do so:" -msgstr "Vennligst sjekk ditt nettsted nå. Det er mulig at alt fungerer. Hvis det sier at du må oppdatere, bør du gjøre dette:" - -#: wp-admin/includes/class-wp-automatic-updater.php:708 -#: wp-admin/update-core.php:553 -msgid "Keeping your site updated is important for security. It also makes the internet a safer place for you and your readers." -msgstr "Å holde nettstedet oppdatert er viktig for sikkerheten. Det gjør også Internett til et tryggere sted for deg og dine lesere." - -#: wp-admin/includes/class-wp-automatic-updater.php:702 -msgid "If you experience any issues or need support, the volunteers in the WordPress.org support forums may be able to help." -msgstr "Hvis du opplever noen problemer eller trenger støtte, kan kanskje de frivillige i WordPress.org supportforum hjelpe deg." - -#: wp-admin/includes/class-wp-automatic-updater.php:717 -msgid "You also have some plugins or themes with updates available. Update them now:" -msgstr "Du har også noen utvidelser eller temaer som har tilgjengelige oppdateringer. Oppdater dem nå:" - -#: wp-admin/includes/class-wp-automatic-updater.php:721 -msgid "The WordPress Team" -msgstr "WordPress-teamet" - -#: wp-admin/includes/class-wp-automatic-updater.php:726 -msgid "We have some data that describes the error your site encountered." -msgstr "Vi har noe data som beskriver feilen som ditt nettsted opplevde." - -#: wp-admin/includes/class-wp-automatic-updater.php:727 -msgid "Your hosting company, support forum volunteers, or a friendly developer may be able to use this information to help you:" -msgstr "Din webhost, frivillige i supportforumet eller vennligsinnede utviklere kan kanskje bruke denne informasjonen for å hjelpe deg:" - -#: wp-admin/includes/class-wp-automatic-updater.php:740 -msgid "Error code: %s" -msgstr "Feilkode: %s" - -#: wp-admin/themes.php:180 -msgid "ERROR: %s" -msgstr "FEIL: %s" - -#: wp-admin/includes/post.php:1578 -msgid "This content is currently locked." -msgstr "Dette innholdet er for tiden låst." - -#: wp-admin/includes/post.php:1580 -msgid "If you take over, %s will be blocked from continuing to edit." -msgstr "Hvis du tar over, vil %s bli blokkert fra å fortsette å redigere." - -#: wp-admin/update-core.php:60 -msgid "If you need to re-install version %s, you can do so here or download the package and re-install manually:" -msgstr "Hvis du må re-installere versjon %s, kan du gjøre dette her, eller laste ned pakken og re-installere manuelt:" - -#: wp-admin/update-core.php:176 -msgid "Future security updates will be applied automatically." -msgstr "Fremtidige sikkerhetsoppdateringer vil bli lastet ned automatisk." - -#: wp-admin/update-core.php:412 wp-admin/update-core.php:420 -msgid "Translations" -msgstr "Oversettelser" - -#: wp-admin/update-core.php:413 -msgid "Your translations are all up to date." -msgstr "Alle oversettelser er oppdaterte." - -#: wp-admin/includes/class-language-pack-upgrader.php:116 -msgid "Some of your translations need updating. Sit tight for a few more seconds while we update them as well." -msgstr "Noen av dine oversettelser må oppdateres. Sitt i ro noen sekunder mens vi oppdaterer dem også." - -#: wp-admin/includes/class-language-pack-upgrader.php:117 -msgid "The translations are up to date." -msgstr "Oversettelsene er oppdaterte." - -#: wp-admin/includes/class-language-pack-upgrader.php:119 -msgid "Downloading translation from %s…" -msgstr "Laster ned oversettelser fra %s…" - -#: wp-admin/includes/class-language-pack-upgrader.php:121 -msgid "Translation update failed." -msgstr "Oppdatering av oversettelser mislyktes." - -#: wp-admin/includes/class-language-pack-upgrader.php:122 -msgid "Translation updated successfully." -msgstr "Oppdateringen av oversettelser var vellykket." - -#: wp-admin/includes/class-wp-automatic-updater.php:309 -msgid "Updating theme: %s" -msgstr "Oppdaterer tema: %s" +#: wp-admin/includes/update-core.php:988 +msgid "There is not enough free disk space to complete the update." +msgstr "Det er ikke nok plass på serveren for å fullføre oppdateringen." #: wp-admin/includes/class-wp-automatic-updater.php:315 msgid "Updating plugin: %s" msgstr "Oppdaterer utvidelse: %s" -#: wp-admin/includes/update-core.php:985 -msgid "There is not enough free disk space to complete the update." -msgstr "Det er ikke nok plass på serveren for å fullføre oppdateringen." +#: wp-admin/includes/class-wp-automatic-updater.php:309 +msgid "Updating theme: %s" +msgstr "Oppdaterer tema: %s" -#: wp-admin/options-discussion.php:144 -msgid "Comment must be manually approved" -msgstr "Kommentaren må godkjennes manuelt" +#: wp-admin/includes/class-language-pack-upgrader.php:122 +msgid "Translation updated successfully." +msgstr "Oppdateringen av oversettelser var vellykket." + +#: wp-admin/includes/class-language-pack-upgrader.php:121 +msgid "Translation update failed." +msgstr "Oppdatering av oversettelser mislyktes." + +#: wp-admin/includes/class-language-pack-upgrader.php:119 +msgid "Downloading translation from %s…" +msgstr "Laster ned oversettelser fra %s…" + +#: wp-admin/includes/class-language-pack-upgrader.php:117 +msgid "The translations are up to date." +msgstr "Oversettelsene er oppdaterte." + +#: wp-admin/includes/class-language-pack-upgrader.php:116 +msgid "Some of your translations need updating. Sit tight for a few more seconds while we update them as well." +msgstr "Noen av dine oversettelser må oppdateres. Sitt i ro noen sekunder mens vi oppdaterer dem også." + +#: wp-admin/user-new.php:382 +msgid "Create a brand new user and add them to this site." +msgstr "Lag en helt ny bruker og legg den til dette nettstedet." + +#: wp-admin/theme-editor.php:33 +msgid "Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a child theme instead." +msgstr "Å oppgradere til en nyere versjon av det samme temaet vil overskrive endringene som gjøres her. For å unngå dette, vurder å lage et dattertema isteden." #: wp-admin/options-media.php:49 msgid "The sizes listed below determine the maximum dimensions in pixels to use when adding an image to the Media Library." msgstr "Størrelsene under bestemmer maks antall piksler du kan bruke når du legger til bilder i mediebiblioteket." -#: wp-admin/theme-editor.php:33 -msgid "Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a child theme instead." -msgstr "Å oppgradere til en nyere versjon av det samme temaet vil overskrive endringene som gjøres her. For å unngå dette, vurder å lage et dattertema isteden." +#: wp-admin/options-discussion.php:145 +msgid "Comment must be manually approved" +msgstr "Kommentaren må godkjennes manuelt" -#: wp-admin/user-new.php:372 -msgid "Create a brand new user and add them to this site." -msgstr "Lag en helt ny bruker og legg den til dette nettstedet." +#: wp-admin/nav-menus.php:545 +msgid "Clicking the arrow to the right of any menu item in the editor will reveal a standard group of settings. Additional settings such as link target, CSS classes, link relationships, and link descriptions can be enabled and disabled via the Screen Options tab." +msgstr "Å klikke på pilen til høyre for et menyelement i redigeringen vil vise en gruppe standardinnstillinger. Flere innstillinger, som lenkemål, CSS-klasser, lenkerelasjoner og lenkebeskrivelser kan aktiveres og deaktiveres via Visningsinnstillinger-fanen." + +#. translators: 1: Widgets admin screen URL, 2 and 3: The name of the default +#. themes +#: wp-admin/nav-menus.php:522 +msgid "Menus can be displayed in locations defined by your theme, even used in sidebars by adding a “Custom Menu” widget on the Widgets screen. If your theme does not support the custom menus feature (the default themes, %2$s and %3$s, do), you can learn about adding this support by following the Documentation link to the side." +msgstr "Menyer kan vises i plasseringer som er definert av ditt tema, også i sidekolonner ved å legge til en «Tilpasset meny»-widget i Widgets-skjermen. Hvis temaet ikke støtter tilpassede menyer (standardtemaene, %2$s og %3$s, gjør det), kan du lære om hvordan man legger til denne støtten ved å følge dokumentasjonslenken ved siden av." + +#: wp-admin/nav-menus.php:517 +msgid "Your theme does not natively support menus, but you can use them in sidebars by adding a “Custom Menu” widget on the Widgets screen." +msgstr "Ditt tema støtter ikke vanlige menyer, men du kan bruke dem i sidekolonner ved å legge til «Tilpasset meny»-widgeten på Widgets-skjermen." + +#: wp-admin/install.php:369 +msgid "Sorry, that isn’t a valid email address. Email addresses look like username@example.com." +msgstr "Beklager, dette er ikke en gyldig e-postadresse. E-postadresser ser ut som brukernavn@eksempel.no." + +#: wp-admin/install.php:364 +msgid "You must provide an email address." +msgstr "Du må oppgi en e-postadresse." + +#: wp-admin/install.php:359 +msgid "Your passwords do not match. Please try again." +msgstr "Dine passord er ikke like. Vennligst prøv igjen." + +#: wp-admin/install.php:354 +msgid "The username you provided has invalid characters." +msgstr "Brukernavnet du oppga har ugyldige tegn." + +#: wp-admin/install.php:350 +msgid "Please provide a valid username." +msgstr "Vennligst oppgi et gyldig brukernavn." + +#: wp-admin/includes/update-core.php:941 +msgid "Copying the required files…" +msgstr "Kopierer de nødvendige filene…" + +#: wp-admin/includes/update-core.php:879 +msgid "Preparing to install the latest version…" +msgstr "Forbereder installasjon av den nyeste versjonen…" + +#: wp-admin/includes/file.php:1219 +msgid "This password will not be stored on the server." +msgstr "Dette passordet vil ikke lagres på serveren." + +#: wp-admin/includes/file.php:549 +msgid "The checksum of the file (%1$s) does not match the expected checksum value (%2$s)." +msgstr "Sjekksummen til filen (%1$s) er ikke lik den forventede sjekksumverdien (%2$s)." + +#: wp-admin/includes/class-wp-automatic-updater.php:303 +msgid "WordPress %s" +msgstr "WordPress %s" + +#: wp-admin/includes/class-wp-automatic-updater.php:302 +msgid "Updating to WordPress %s" +msgstr "Oppdaterer til WordPress %s" + +#: wp-admin/includes/class-core-upgrader.php:38 +msgid "Due to an error during updating, WordPress has rolled back to your previous version." +msgstr "På grunn av en feil under oppdatering, har WordPress blitt rullet tilbake til den forrige versjonen." + +#: wp-admin/includes/class-core-upgrader.php:37 +msgid "Attempting to roll back to previous version." +msgstr "Prøver å rulle tilbake til den forrige versjonen." #. translators: 1: folder to locate, 2: folder to start searching from #: wp-admin/includes/class-wp-filesystem-base.php:257 msgid "Looking for %1$s in %2$s" msgstr "Ser etter %1$s i %2$s" -#: wp-admin/includes/class-core-upgrader.php:37 -msgid "Attempting to roll back to previous version." -msgstr "Prøver å rulle tilbake til den forrige versjonen." +#: wp-admin/edit.php:286 +msgid "%s page restored from the Trash." +msgid_plural "%s pages restored from the Trash." +msgstr[0] "%s side gjenopprettet fra papirkurven." +msgstr[1] "%s sider gjenopprettede fra papirkurven." -#: wp-admin/includes/class-core-upgrader.php:38 -msgid "Due to an error during updating, WordPress has rolled back to your previous version." -msgstr "På grunn av en feil under oppdatering, har WordPress blitt rullet tilbake til den forrige versjonen." +#: wp-admin/edit.php:285 +msgid "%s page moved to the Trash." +msgid_plural "%s pages moved to the Trash." +msgstr[0] "%s side flyttet til papirkurven." +msgstr[1] "%s sider flyttet til papirkurven." -#: wp-admin/includes/class-wp-automatic-updater.php:302 -msgid "Updating to WordPress %s" -msgstr "Oppdaterer til WordPress %s" +#: wp-admin/edit.php:284 +msgid "%s page permanently deleted." +msgid_plural "%s pages permanently deleted." +msgstr[0] "%s side permanent slettet." +msgstr[1] "%s sider permanent slettede." -#: wp-admin/includes/class-wp-automatic-updater.php:303 -msgid "WordPress %s" -msgstr "WordPress %s" +#: wp-admin/edit.php:283 +msgid "%s page not updated, somebody is editing it." +msgid_plural "%s pages not updated, somebody is editing them." +msgstr[0] "%s side ikke oppdatert, noen redigerer den." +msgstr[1] "%s sider ikke oppdaterte, noen redigerer dem." -#: wp-admin/includes/file.php:548 -msgid "The checksum of the file (%1$s) does not match the expected checksum value (%2$s)." -msgstr "Sjekksummen til filen (%1$s) er ikke lik den forventede sjekksumverdien (%2$s)." +#: wp-admin/edit.php:281 +msgid "%s page updated." +msgid_plural "%s pages updated." +msgstr[0] "%s side oppdatert." +msgstr[1] "%s sider oppdaterte." -#: wp-admin/includes/file.php:1218 -msgid "This password will not be stored on the server." -msgstr "Dette passordet vil ikke lagres på serveren." - -#: wp-admin/includes/update-core.php:882 -msgid "Preparing to install the latest version…" -msgstr "Forbereder installasjon av den nyeste versjonen…" - -#: wp-admin/includes/update-core.php:942 -msgid "Copying the required files…" -msgstr "Kopierer de nødvendige filene…" - -#: wp-admin/install.php:346 -msgid "Please provide a valid username." -msgstr "Vennligst oppgi et gyldig brukernavn." - -#: wp-admin/install.php:349 -msgid "The username you provided has invalid characters." -msgstr "Brukernavnet du oppga har ugyldige tegn." - -#: wp-admin/install.php:353 -msgid "Your passwords do not match. Please try again." -msgstr "Dine passord er ikke like. Vennligst prøv igjen." - -#: wp-admin/install.php:357 -msgid "You must provide an email address." -msgstr "Du må oppgi en e-postadresse." - -#: wp-admin/install.php:361 -msgid "Sorry, that isn’t a valid email address. Email addresses look like username@example.com." -msgstr "Beklager, dette er ikke en gyldig e-postadresse. E-postadresser ser ut som brukernavn@eksempel.no." - -#: wp-admin/nav-menus.php:517 -msgid "Your theme does not natively support menus, but you can use them in sidebars by adding a “Custom Menu” widget on the Widgets screen." -msgstr "Ditt tema støtter ikke vanlige menyer, men du kan bruke dem i sidekolonner ved å legge til «Tilpasset meny»-widgeten på Widgets-skjermen." - -#: wp-admin/nav-menus.php:521 -msgid "Menus can be displayed in locations defined by your theme, even used in sidebars by adding a “Custom Menu” widget on the Widgets screen. If your theme does not support the custom menus feature (the default themes, %2$s and %3$s, do), you can learn about adding this support by following the Documentation link to the side." -msgstr "Menyer kan vises i plasseringer som er definert av ditt tema, også i sidekolonner ved å legge til en «Tilpasset meny»-widget i Widgets-skjermen. Hvis temaet ikke støtter tilpassede menyer (standardtemaene, %2$s og %3$s, gjør det), kan du lære om hvordan man legger til denne støtten ved å følge dokumentasjonslenken ved siden av." - -#: wp-admin/nav-menus.php:544 -msgid "Clicking the arrow to the right of any menu item in the editor will reveal a standard group of settings. Additional settings such as link target, CSS classes, link relationships, and link descriptions can be enabled and disabled via the Screen Options tab." -msgstr "Å klikke på pilen til høyre for et menyelement i redigeringen vil vise en gruppe standardinnstillinger. Flere innstillinger, som lenkemål, CSS-klasser, lenkerelasjoner og lenkebeskrivelser kan aktiveres og deaktiveres via Visningsinnstillinger-fanen." - -#: wp-admin/includes/edit-tag-messages.php:24 -msgid "Category added." -msgstr "Kategori lagt til." - -#: wp-admin/includes/edit-tag-messages.php:25 -msgid "Category deleted." -msgstr "Kategori slettet." - -#: wp-admin/includes/edit-tag-messages.php:26 -msgid "Category updated." -msgstr "Kategori oppdatert." - -#: wp-admin/includes/edit-tag-messages.php:27 -msgid "Category not added." -msgstr "Kategori ikke lagt til." - -#: wp-admin/includes/edit-tag-messages.php:28 -msgid "Category not updated." -msgstr "Kategori ikke oppdatert." - -#: wp-admin/includes/edit-tag-messages.php:29 -msgid "Categories deleted." -msgstr "Kategorier slettede." - -#: wp-admin/includes/edit-tag-messages.php:34 -msgid "Tag added." -msgstr "Stikkord lagt til." - -#: wp-admin/includes/edit-tag-messages.php:35 -msgid "Tag deleted." -msgstr "Stikkord slettet." - -#: wp-admin/includes/edit-tag-messages.php:36 -msgid "Tag updated." -msgstr "Stikkord oppdatert." - -#: wp-admin/includes/edit-tag-messages.php:37 -msgid "Tag not added." -msgstr "Stikkord ikke lagt til." - -#: wp-admin/includes/edit-tag-messages.php:38 -msgid "Tag not updated." -msgstr "Stikkord ikke oppdatert." - -#: wp-admin/includes/edit-tag-messages.php:39 -msgid "Tags deleted." -msgstr "Stikkord slettet." - -#: wp-admin/edit.php:271 -msgid "%s post not updated, somebody is editing it." -msgid_plural "%s posts not updated, somebody is editing them." -msgstr[0] "%s innlegg ikke oppdatert, noen redigerer det." -msgstr[1] "%s innlegg ikke oppdaterte, noen redigerer dem." - -#: wp-admin/edit.php:272 -msgid "%s post permanently deleted." -msgid_plural "%s posts permanently deleted." -msgstr[0] "%s innlegg permanent slettet." -msgstr[1] "%s innlegg permanent slettede." - -#: wp-admin/edit.php:273 -msgid "%s post moved to the Trash." -msgid_plural "%s posts moved to the Trash." -msgstr[0] "%s innlegg flyttet til papirkurven." -msgstr[1] "%s innlegg flyttet til papirkurven." - -#: wp-admin/edit.php:274 +#: wp-admin/edit.php:278 msgid "%s post restored from the Trash." msgid_plural "%s posts restored from the Trash." msgstr[0] "%s innlegg gjenopprettet fra papirkurven." msgstr[1] "%s innlegg gjenopprettede fra papirkurven." #: wp-admin/edit.php:277 -msgid "%s page updated." -msgid_plural "%s pages updated." -msgstr[0] "%s side oppdatert." -msgstr[1] "%s sider oppdaterte." +msgid "%s post moved to the Trash." +msgid_plural "%s posts moved to the Trash." +msgstr[0] "%s innlegg flyttet til papirkurven." +msgstr[1] "%s innlegg flyttet til papirkurven." -#: wp-admin/edit.php:279 -msgid "%s page not updated, somebody is editing it." -msgid_plural "%s pages not updated, somebody is editing them." -msgstr[0] "%s side ikke oppdatert, noen redigerer den." -msgstr[1] "%s sider ikke oppdaterte, noen redigerer dem." +#: wp-admin/edit.php:276 +msgid "%s post permanently deleted." +msgid_plural "%s posts permanently deleted." +msgstr[0] "%s innlegg permanent slettet." +msgstr[1] "%s innlegg permanent slettede." -#: wp-admin/edit.php:280 -msgid "%s page permanently deleted." -msgid_plural "%s pages permanently deleted." -msgstr[0] "%s side permanent slettet." -msgstr[1] "%s sider permanent slettede." +#: wp-admin/edit.php:275 +msgid "%s post not updated, somebody is editing it." +msgid_plural "%s posts not updated, somebody is editing them." +msgstr[0] "%s innlegg ikke oppdatert, noen redigerer det." +msgstr[1] "%s innlegg ikke oppdaterte, noen redigerer dem." -#: wp-admin/edit.php:281 -msgid "%s page moved to the Trash." -msgid_plural "%s pages moved to the Trash." -msgstr[0] "%s side flyttet til papirkurven." -msgstr[1] "%s sider flyttet til papirkurven." +#: wp-admin/includes/edit-tag-messages.php:39 +msgid "Tags deleted." +msgstr "Stikkord slettet." -#: wp-admin/edit.php:282 -msgid "%s page restored from the Trash." -msgid_plural "%s pages restored from the Trash." -msgstr[0] "%s side gjenopprettet fra papirkurven." -msgstr[1] "%s sider gjenopprettede fra papirkurven." +#: wp-admin/includes/edit-tag-messages.php:38 +msgid "Tag not updated." +msgstr "Stikkord ikke oppdatert." -#: wp-admin/revision.php:109 +#: wp-admin/includes/edit-tag-messages.php:37 +msgid "Tag not added." +msgstr "Stikkord ikke lagt til." + +#: wp-admin/includes/edit-tag-messages.php:36 +msgid "Tag updated." +msgstr "Stikkord oppdatert." + +#: wp-admin/includes/edit-tag-messages.php:35 +msgid "Tag deleted." +msgstr "Stikkord slettet." + +#: wp-admin/includes/edit-tag-messages.php:34 +msgid "Tag added." +msgstr "Stikkord lagt til." + +#: wp-admin/includes/edit-tag-messages.php:29 +msgid "Categories deleted." +msgstr "Kategorier slettede." + +#: wp-admin/includes/edit-tag-messages.php:28 +msgid "Category not updated." +msgstr "Kategori ikke oppdatert." + +#: wp-admin/includes/edit-tag-messages.php:27 +msgid "Category not added." +msgstr "Kategori ikke lagt til." + +#: wp-admin/includes/edit-tag-messages.php:26 +msgid "Category updated." +msgstr "Kategori oppdatert." + +#: wp-admin/includes/edit-tag-messages.php:25 +msgid "Category deleted." +msgstr "Kategori slettet." + +#: wp-admin/includes/edit-tag-messages.php:24 +msgid "Category added." +msgstr "Kategori lagt til." + +#: wp-admin/revision.php:110 msgid "Compare two different revisions by selecting the “Compare any two revisions” box to the side." msgstr "Sammenlikne to ulike revisjoner ved å verge «Sammenlikne to revisjoner»-boksen på siden." @@ -3728,80 +3886,77 @@ msgstr "Sammenlikne to ulike revisjoner ved å verge «Sammenlikne to re msgid "Compare any two revisions" msgstr "Sammenlikne to revisjoner" -#. translators: 1: audio track title, 2: album title, 3: artist name -#: wp-admin/includes/media.php:308 -msgid "\"%1$s\" from %2$s by %3$s." -msgstr "\"%1$s\" fra %2$s av %3$s." +#: wp-admin/includes/revision.php:381 +msgid "Restore This Autosave" +msgstr "Gjenopprett denne autolagringen" -#. translators: 1: audio track title, 2: album title -#: wp-admin/includes/media.php:311 -msgid "\"%1$s\" from %2$s." -msgstr "\"%1$s\" fra %2$s." +#: wp-admin/includes/revision.php:363 +msgid "Current Revision by %s" +msgstr "Gjeldende revisjon av %s" + +#: wp-admin/includes/revision.php:360 +msgid "Autosave by %s" +msgstr "Autolagring av %s" + +#: wp-admin/includes/meta-boxes.php:204 +msgctxt "revisions" +msgid "Browse" +msgstr "Bla" + +#. translators: Post revisions heading. 1: The number of available revisions +#: wp-admin/includes/meta-boxes.php:202 +msgid "Revisions: %s" +msgstr "Revisjoner: %s" + +#. translators: 1: audio track title +#: wp-admin/includes/media.php:317 +msgid "\"%s\"." +msgstr "\"%s\"." #. translators: 1: audio track title, 2: artist name #: wp-admin/includes/media.php:314 msgid "\"%1$s\" by %2$s." msgstr "\"%1$s\" av %2$s." -#: wp-admin/includes/media.php:316 -msgid "\"%s\"." -msgstr "\"%s\"." +#. translators: 1: audio track title, 2: album title +#: wp-admin/includes/media.php:311 +msgid "\"%1$s\" from %2$s." +msgstr "\"%1$s\" fra %2$s." -#: wp-admin/includes/meta-boxes.php:195 -msgid "Revisions: %s" -msgstr "Revisjoner: %s" - -#: wp-admin/includes/meta-boxes.php:196 -msgctxt "revisions" -msgid "Browse" -msgstr "Bla" - -#: wp-admin/includes/revision.php:360 -msgid "Autosave by %s" -msgstr "Autolagring av %s" - -#: wp-admin/includes/revision.php:363 -msgid "Current Revision by %s" -msgstr "Gjeldende revisjon av %s" - -#: wp-admin/includes/revision.php:381 -msgid "Restore This Autosave" -msgstr "Gjenopprett denne autolagringen" +#. translators: 1: audio track title, 2: album title, 3: artist name +#: wp-admin/includes/media.php:308 +msgid "\"%1$s\" from %2$s by %3$s." +msgstr "\"%1$s\" fra %2$s av %3$s." #: wp-admin/includes/revision.php:366 msgid "Revision by %s" msgstr "Revisjon av %s" -#: wp-admin/edit-form-advanced.php:488 -msgid "Connection lost. Saving has been disabled until you’re reconnected." -msgstr "Forbindelsen brutt. Lagring er deaktivert inntil forbindelsen er gjenopprettet." - -#: wp-admin/edit-form-advanced.php:489 +#: wp-admin/edit-form-advanced.php:497 msgid "We’re backing up this post in your browser, just in case." msgstr "Vi sikkerhetskopierer dette innlegget i nettleseren for sikkerhets skyld." +#: wp-admin/edit-form-advanced.php:496 +msgid "Connection lost. Saving has been disabled until you’re reconnected." +msgstr "Forbindelsen brutt. Lagring er deaktivert inntil forbindelsen er gjenopprettet." + #: wp-admin/includes/revision.php:395 msgid "Sorry, something went wrong. The requested comparison could not be loaded." msgstr "Beklager, men noe gikk galt, Den ønskede sammenlikningen kunne ikke lastes inn." -#: wp-admin/custom-background.php:324 -msgctxt "Background Attachment" -msgid "Attachment" -msgstr "Vedlegg" - -#: wp-admin/user-edit.php:523 -msgid "Repeat New Password" -msgstr "Gjenta nytt passord" - -#: wp-admin/install.php:158 wp-admin/user-new.php:442 +#: wp-admin/install.php:158 wp-admin/user-new.php:452 msgid "Repeat Password" msgstr "Gjenta passord" -#: wp-admin/includes/nav-menu.php:904 +#: wp-admin/user-edit.php:560 +msgid "Repeat New Password" +msgstr "Gjenta nytt passord" + +#: wp-admin/includes/nav-menu.php:914 msgid "Add menu items from the column on the left." msgstr "Legg til menyelementer fra kolonnen til venstre." -#: wp-admin/includes/plugin-install.php:213 +#: wp-admin/includes/plugin-install.php:235 msgid "Plugins extend and expand the functionality of WordPress. You may automatically install plugins from the WordPress Plugin Directory or upload a plugin in .zip format by clicking the button at the top of this page." msgstr "Utvidelser gir WordPress mer funksjonalitet. Du kan installere utvidelser automatisk fra WordPress Plugin Directory eller laste opp utvidelser i .zip-format ved å klikke på knappen øverst på denne siden." @@ -3809,335 +3964,337 @@ msgstr "Utvidelser gir WordPress mer funksjonalitet. Du kan installere utvidelse msgid "http://wordpress.org/plugins/hello-dolly/" msgstr "http://wordpress.org/plugins/hello-dolly/" -#: wp-admin/includes/class-wp-upgrader.php:168 -msgid "The package contains no files." -msgstr "Denne pakken inneholder ingen filer." - #: wp-admin/includes/class-theme-upgrader.php:70 msgid "The theme contains no files." msgstr "Temaet inneholder ingen filer." -#: wp-admin/revision.php:108 +#: wp-admin/includes/class-wp-upgrader.php:168 +msgid "The package contains no files." +msgstr "Denne pakken inneholder ingen filer." + +#: wp-admin/revision.php:109 msgid "To navigate between revisions, drag the slider handle left or right or use the Previous or Next buttons." msgstr "For å navigere mellom revisjoner, dra håndtaket til venstre eller høyre eller bruk Forrige- eller Neste-knappene." -#: wp-admin/customize.php:88 +#: wp-admin/customize.php:107 msgid "Loading…" msgstr "Laster…" -#: wp-admin/post.php:208 -msgid "The item you are trying to move to the Trash no longer exists." -msgstr "Elementet du prøvde å flytte til papirkurven finnes ikke lengre." - -#: wp-admin/post.php:231 -msgid "The item you are trying to restore from the Trash no longer exists." -msgstr "Elementet du prøvde å gjenopprette fra papirkurven finnes ikke lengre." - #: wp-admin/post.php:249 msgid "This item has already been deleted." msgstr "Elementet har allerede blitt slettet." -#: wp-admin/nav-menus.php:770 +#: wp-admin/post.php:231 +msgid "The item you are trying to restore from the Trash no longer exists." +msgstr "Elementet du prøvde å gjenopprette fra papirkurven finnes ikke lengre." + +#: wp-admin/post.php:208 +msgid "The item you are trying to move to the Trash no longer exists." +msgstr "Elementet du prøvde å flytte til papirkurven finnes ikke lengre." + +#: wp-admin/nav-menus.php:771 msgid "Drag each item into the order you prefer. Click the arrow on the right of the item to reveal additional configuration options." msgstr "Dra alle elementene til den rekkefølgen du vil ha. Klikk på pilen til høyre for elementet for å vise flere innstillinger." -#: wp-admin/nav-menus.php:534 +#: wp-admin/nav-menus.php:535 msgid "If you haven’t yet created any menus, click the ’create a new menu’ link to get started" msgstr "Hvis du ikke har laget noen menyer ennå, klikk på «lag ny meny»-lenken for å komme i gang" -#: wp-admin/revision.php:105 -msgid "This screen is used for managing your content revisions." -msgstr "Denne skjermen brukes for å håndtere dine innholdsrevisjoner." +#: wp-admin/revision.php:111 +msgid "To restore a revision, click Restore This Revision." +msgstr "For å gjenopprette en revisjon, klikk Gjenopprett denne revisjonen." -#: wp-admin/revision.php:106 -msgid "Revisions are saved copies of your post or page, which are periodically created as you update your content. The red text on the left shows the content that was removed. The green text on the right shows the content that was added." -msgstr "Revisjoner er lagrede kopier av dine innlegg og sider, som lages med jevne mellomrom når du oppdaterer ditt innhold. Rød tekst til venstre viser innholdet som ble slettet. Grønn tekst til høyre viser innhold som ble lagt til." - -#: wp-admin/revision.php:107 +#: wp-admin/revision.php:108 msgid "From this screen you can review, compare, and restore revisions:" msgstr "Fra denne skjermen kan du gå gjennom, sammenlikne og gjenopprette revisjoner:" -#: wp-admin/revision.php:110 -msgid "To restore a revision, click Restore This Revision." -msgstr "For å gjenopprette en revisjon, klikk Gjenopprett denne revisjonen." +#: wp-admin/revision.php:107 +msgid "Revisions are saved copies of your post or page, which are periodically created as you update your content. The red text on the left shows the content that was removed. The green text on the right shows the content that was added." +msgstr "Revisjoner er lagrede kopier av dine innlegg og sider, som lages med jevne mellomrom når du oppdaterer ditt innhold. Rød tekst til venstre viser innholdet som ble slettet. Grønn tekst til høyre viser innhold som ble lagt til." + +#: wp-admin/revision.php:106 +msgid "This screen is used for managing your content revisions." +msgstr "Denne skjermen brukes for å håndtere dine innholdsrevisjoner." #: wp-admin/includes/revision.php:354 msgctxt "Followed by post revision info" msgid "To:" msgstr "Til:" -#: wp-admin/includes/revision.php:352 -msgctxt "Followed by post revision info" -msgid "From:" -msgstr "Fra:" +#: wp-admin/includes/revision.php:329 +msgctxt "Button label for a next revision" +msgid "Next" +msgstr "Neste" #: wp-admin/includes/revision.php:325 msgctxt "Button label for a previous revision" msgid "Previous" msgstr "Forrige" -#: wp-admin/includes/revision.php:329 -msgctxt "Button label for a next revision" -msgid "Next" -msgstr "Neste" +#: wp-admin/includes/revision.php:352 +msgctxt "Followed by post revision info" +msgid "From:" +msgstr "Fra:" -#: wp-admin/nav-menus.php:394 -msgid "Menu locations updated." -msgstr "Menyplasseringer oppdatert." +#: wp-admin/nav-menus.php:648 +msgctxt "menu" +msgid "Use new menu" +msgstr "Bruk ny meny" -#. translators: 1: audio album title, 2: artist name -#: wp-admin/includes/media.php:323 -msgid "%1$s by %2$s." -msgstr "%1$s av %2$s." +#: wp-admin/nav-menus.php:642 +msgctxt "menu" +msgid "Edit" +msgstr "Rediger" -#: wp-admin/includes/media.php:335 -msgid "Released: %d." -msgstr "Sluppet: %d." +#: wp-admin/nav-menus.php:630 +msgid "Select a Menu" +msgstr "Velg en meny" -#: wp-admin/includes/media.php:340 -msgid "Track %1$s of %2$s." -msgstr "Spor %1$s av %2$s." +#: wp-admin/nav-menus.php:621 +msgid "Assigned Menu" +msgstr "Tilordnet meny" -#: wp-admin/includes/media.php:342 -msgid "Track %1$s." -msgstr "Spor %1$s." +#: wp-admin/nav-menus.php:620 +msgid "Theme Location" +msgstr "Temaplassering" -#: wp-admin/includes/media.php:346 -msgid "Genre: %s." -msgstr "Sjanger: %s." +#: wp-admin/nav-menus.php:597 +msgid "Manage Locations" +msgstr "Bestem plasseringer" -#: wp-admin/includes/media.php:2929 -msgid "Audio Format:" -msgstr "Lydformat:" +#: wp-admin/nav-menus.php:595 +msgid "Edit Menus" +msgstr "Rediger menyer" -#: wp-admin/includes/media.php:2930 -msgid "Audio Codec:" -msgstr "Lydkodek:" +#: wp-admin/nav-menus.php:560 +msgid "To add a new menu instead of assigning an existing one, click the ’Use new menu’ link. Your new menu will be automatically assigned to that theme location" +msgstr "For å legge til en ny meny istedenfor å tilordne en som allerede eksisterer, klikk «Bruk ny meny»-lenken. Din nye meny vil automatisk bli tilordnet den temaplasseringen" -#: wp-admin/includes/post.php:1618 -msgid "Your latest changes were saved as a revision." -msgstr "Dine siste endringer ble lagret som en revisjon." +#: wp-admin/nav-menus.php:559 +msgid "To edit a menu currently assigned to a theme location, click the adjacent ’Edit’ link" +msgstr "For å redigere en meny som er tilordnet en plassering, klikk på «Rediger»-lenken ved siden av" + +#: wp-admin/nav-menus.php:558 +msgid "To assign menus to one or more theme locations, select a menu from each location’s drop down. When you’re finished, click Save Changes" +msgstr "For å tilordne menyer til én eller flere plasseringer, velg en meny fra hver plasserings nedtrekksmeny. Når du er klar, klikk Lagre endringer" + +#: wp-admin/nav-menus.php:557 +msgid "This screen is used for globally assigning menus to locations defined by your theme." +msgstr "Denne skjermen brukes for å tilordne menyer til alle plasseringene som er definert i ditt tema." + +#: wp-admin/nav-menus.php:553 +msgid "Editing Menus" +msgstr "Redigerer menyer" + +#: wp-admin/nav-menus.php:549 +msgid "Delete a menu item by expanding it and clicking the Remove link" +msgstr "Slett et menyelement ved å utvide det og klikke på Slett lenke" + +#: wp-admin/nav-menus.php:548 +msgid "To reorganize menu items, drag and drop items with your mouse or use your keyboard. Drag or move a menu item a little to the right to make it a submenu" +msgstr "For å omorganisere menyelementer, dra og slipp elementer med musen eller ditt tastatur. Dra eller slipp menyelemenyer litt til høyre for å lage en undermeny" + +#: wp-admin/nav-menus.php:546 +msgid "Add one or several items at once by selecting the checkbox next to each item and clicking Add to Menu" +msgstr "Legg til et eller flere elementer samtidig ved å krysse av i boksene ved siden av hvert element og klikk Legg til i meny" + +#: wp-admin/nav-menus.php:544 +msgid "Each custom menu may contain a mix of links to pages, categories, custom URLs or other content types. Menu links are added by selecting items from the expanding boxes in the left-hand column below." +msgstr "Hver tilpasset meny kan inneholde en kombinasjon av lenker til sider, kategorier, tilpassede lenker eller annet innhold. Menylenker legges til ved å velge elementer fra de utvidende boksene i venstre kolonne nedenfor." + +#: wp-admin/nav-menus.php:540 +msgid "Menu Management" +msgstr "Menyhåndtering" + +#: wp-admin/nav-menus.php:536 +msgid "You can assign theme locations to individual menus by selecting the desired settings at the bottom of the menu editor. To assign menus to all theme locations at once, visit the Manage Locations tab at the top of the screen." +msgstr "Du kan plassere individuelle menyer ved å velge de ønskede innstillingene i bunn av menyredigeringsvinduet. For å plassere alle menyene samtidig, gå til fanen Bestem plasseringer øverst i skjermen." + +#: wp-admin/nav-menus.php:534 +msgid "To edit an existing menu, choose a menu from the drop down and click Select" +msgstr "For å redigere en eksisterende meny, velg en meny fra nedtrekksmenyen og klikk Velg" + +#: wp-admin/nav-menus.php:533 +msgid "The menu management box at the top of the screen is used to control which menu is opened in the editor below." +msgstr "Menyhåndteringsboksen på toppen av skjermen brukes for å kontrollere hvilken meny som åpnes i redigeringsvinduet under." + +#: wp-admin/nav-menus.php:525 +msgid "Add, organize, and modify individual menu items" +msgstr "Legge til organisere og modifisere individuelle menypunkter" + +#: wp-admin/nav-menus.php:524 +msgid "Create, edit, and delete menus" +msgstr "Lage, redigere og slette menyer" + +#: wp-admin/nav-menus.php:523 wp-admin/themes.php:73 +msgid "From this screen you can:" +msgstr "Fra denne skjermen kan du:" #: wp-admin/nav-menus.php:520 msgid "This screen is used for managing your custom navigation menus." msgstr "Denne skjermen brukes for å håndtere dine tilpassede navigeringsmenyer." -#: wp-admin/nav-menus.php:522 wp-admin/themes.php:73 -msgid "From this screen you can:" -msgstr "Fra denne skjermen kan du:" +#: wp-admin/includes/post.php:1652 +msgid "Your latest changes were saved as a revision." +msgstr "Dine siste endringer ble lagret som en revisjon." -#: wp-admin/nav-menus.php:523 -msgid "Create, edit, and delete menus" -msgstr "Lage, redigere og slette menyer" +#: wp-admin/includes/media.php:2948 +msgid "Audio Codec:" +msgstr "Lydkodek:" -#: wp-admin/nav-menus.php:524 -msgid "Add, organize, and modify individual menu items" -msgstr "Legge til organisere og modifisere individuelle menypunkter" +#: wp-admin/includes/media.php:2947 +msgid "Audio Format:" +msgstr "Lydformat:" -#: wp-admin/nav-menus.php:532 -msgid "The menu management box at the top of the screen is used to control which menu is opened in the editor below." -msgstr "Menyhåndteringsboksen på toppen av skjermen brukes for å kontrollere hvilken meny som åpnes i redigeringsvinduet under." +#. translators: Audio file genre information. 1: Audio genre name +#: wp-admin/includes/media.php:353 +msgid "Genre: %s." +msgstr "Sjanger: %s." -#: wp-admin/nav-menus.php:533 -msgid "To edit an existing menu, choose a menu from the drop down and click Select" -msgstr "For å redigere en eksisterende meny, velg en meny fra nedtrekksmenyen og klikk Velg" +#. translators: Audio file track information. 1: Audio track number +#: wp-admin/includes/media.php:347 +msgid "Track %1$s." +msgstr "Spor %1$s." -#: wp-admin/nav-menus.php:535 -msgid "You can assign theme locations to individual menus by selecting the desired settings at the bottom of the menu editor. To assign menus to all theme locations at once, visit the Manage Locations tab at the top of the screen." -msgstr "Du kan plassere individuelle menyer ved å velge de ønskede innstillingene i bunn av menyredigeringsvinduet. For å plassere alle menyene samtidig, gå til fanen Bestem plasseringer øverst i skjermen." +#. translators: Audio file track information. 1: Audio track number, 2: Total +#. audio tracks +#: wp-admin/includes/media.php:344 +msgid "Track %1$s of %2$s." +msgstr "Spor %1$s av %2$s." -#: wp-admin/nav-menus.php:539 -msgid "Menu Management" -msgstr "Menyhåndtering" +#. translators: Audio file track information. 1: Year of audio track release +#: wp-admin/includes/media.php:337 +msgid "Released: %d." +msgstr "Sluppet: %d." -#: wp-admin/nav-menus.php:543 -msgid "Each custom menu may contain a mix of links to pages, categories, custom URLs or other content types. Menu links are added by selecting items from the expanding boxes in the left-hand column below." -msgstr "Hver tilpasset meny kan inneholde en kombinasjon av lenker til sider, kategorier, tilpassede lenker eller annet innhold. Menylenker legges til ved å velge elementer fra de utvidende boksene i venstre kolonne nedenfor." +#. translators: 1: audio album title, 2: artist name +#: wp-admin/includes/media.php:324 +msgid "%1$s by %2$s." +msgstr "%1$s av %2$s." -#: wp-admin/nav-menus.php:545 -msgid "Add one or several items at once by selecting the checkbox next to each item and clicking Add to Menu" -msgstr "Legg til et eller flere elementer samtidig ved å krysse av i boksene ved siden av hvert element og klikk Legg til i meny" - -#: wp-admin/nav-menus.php:547 -msgid "To reorganize menu items, drag and drop items with your mouse or use your keyboard. Drag or move a menu item a little to the right to make it a submenu" -msgstr "For å omorganisere menyelementer, dra og slipp elementer med musen eller ditt tastatur. Dra eller slipp menyelemenyer litt til høyre for å lage en undermeny" - -#: wp-admin/nav-menus.php:548 -msgid "Delete a menu item by expanding it and clicking the Remove link" -msgstr "Slett et menyelement ved å utvide det og klikke på Slett lenke" - -#: wp-admin/nav-menus.php:552 -msgid "Editing Menus" -msgstr "Redigerer menyer" - -#: wp-admin/nav-menus.php:556 -msgid "This screen is used for globally assigning menus to locations defined by your theme." -msgstr "Denne skjermen brukes for å tilordne menyer til alle plasseringene som er definert i ditt tema." - -#: wp-admin/nav-menus.php:557 -msgid "To assign menus to one or more theme locations, select a menu from each location’s drop down. When you’re finished, click Save Changes" -msgstr "For å tilordne menyer til én eller flere plasseringer, velg en meny fra hver plasserings nedtrekksmeny. Når du er klar, klikk Lagre endringer" - -#: wp-admin/nav-menus.php:558 -msgid "To edit a menu currently assigned to a theme location, click the adjacent ’Edit’ link" -msgstr "For å redigere en meny som er tilordnet en plassering, klikk på «Rediger»-lenken ved siden av" - -#: wp-admin/nav-menus.php:559 -msgid "To add a new menu instead of assigning an existing one, click the ’Use new menu’ link. Your new menu will be automatically assigned to that theme location" -msgstr "For å legge til en ny meny istedenfor å tilordne en som allerede eksisterer, klikk «Bruk ny meny»-lenken. Din nye meny vil automatisk bli tilordnet den temaplasseringen" - -#: wp-admin/nav-menus.php:594 -msgid "Edit Menus" -msgstr "Rediger menyer" - -#: wp-admin/nav-menus.php:596 -msgid "Manage Locations" -msgstr "Bestem plasseringer" - -#: wp-admin/nav-menus.php:619 -msgid "Theme Location" -msgstr "Temaplassering" - -#: wp-admin/nav-menus.php:620 -msgid "Assigned Menu" -msgstr "Tilordnet meny" - -#: wp-admin/nav-menus.php:629 -msgid "Select a Menu" -msgstr "Velg en meny" - -#: wp-admin/nav-menus.php:641 -msgctxt "menu" -msgid "Edit" -msgstr "Rediger" - -#: wp-admin/nav-menus.php:647 -msgctxt "menu" -msgid "Use new menu" -msgstr "Bruk ny meny" +#: wp-admin/nav-menus.php:394 +msgid "Menu locations updated." +msgstr "Menyplasseringer oppdatert." #: wp-admin/includes/revision.php:383 msgid "Restore This Revision" msgstr "Gjenopprett dette innlegget" -#: wp-admin/user-edit.php:621 -msgid "Capabilities" -msgstr "Muligheter" - -#: wp-admin/user-edit.php:629 +#: wp-admin/user-edit.php:666 msgid "Denied: %s" msgstr "Forbudt: %s" -#: wp-admin/includes/class-walker-nav-menu-edit.php:202 -msgid "Move" -msgstr "Flytt" +#: wp-admin/user-edit.php:658 +msgid "Capabilities" +msgstr "Muligheter" -#: wp-admin/includes/class-walker-nav-menu-edit.php:203 -msgid "Up one" -msgstr "Flytt opp" - -#: wp-admin/includes/class-walker-nav-menu-edit.php:204 -msgid "Down one" -msgstr "Flytt ned" - -#: wp-admin/includes/class-walker-nav-menu-edit.php:207 -msgid "To the top" -msgstr "Til toppen" - -#: wp-admin/nav-menus.php:769 -msgid "Menu Structure" -msgstr "Menystruktur" - -#: wp-admin/nav-menus.php:789 +#: wp-admin/nav-menus.php:790 msgid "Menu Settings" msgstr "Menyinnstillinger" -#: wp-admin/includes/template.php:2016 -msgid "The backup of this post in your browser is different from the version below." -msgstr "En kopi av dette innlegget i denne nettleseren stemmer ikke med versjonen under." +#: wp-admin/nav-menus.php:770 +msgid "Menu Structure" +msgstr "Menystruktur" -#: wp-admin/includes/template.php:2017 +#: wp-admin/includes/class-walker-nav-menu-edit.php:206 +msgid "To the top" +msgstr "Til toppen" + +#: wp-admin/includes/class-walker-nav-menu-edit.php:203 +msgid "Down one" +msgstr "Flytt ned" + +#: wp-admin/includes/class-walker-nav-menu-edit.php:202 +msgid "Up one" +msgstr "Flytt opp" + +#: wp-admin/includes/class-walker-nav-menu-edit.php:201 +msgid "Move" +msgstr "Flytt" + +#: wp-admin/includes/template.php:2043 msgid "Restore the backup" msgstr "Gjenopprett sikkerhetskopi" -#: wp-admin/includes/ajax-actions.php:1260 +#: wp-admin/includes/template.php:2042 +msgid "The backup of this post in your browser is different from the version below." +msgstr "En kopi av dette innlegget i denne nettleseren stemmer ikke med versjonen under." + +#. translators: 1: Post creation date, 2: Post creation time +#: wp-admin/includes/ajax-actions.php:1252 msgid "Draft created on %1$s at %2$s" msgstr "Kladd opprettet %1$s klokka %2$s" -#: wp-admin/includes/misc.php:788 -msgid "%s has taken over and is currently editing." -msgstr "%s har tatt over og skriver." - -#: wp-admin/includes/post.php:1603 -msgid "Take over" -msgstr "Ta over" - #: wp-admin/post.php:218 msgid "You cannot move this item to the Trash. %s is currently editing." msgstr "Du kan ikke flytte dette elementet til Papirkurven. %s arbeider med det nå." -#: wp-admin/nav-menus.php:672 -msgid "Edit your menu below, or create a new menu." -msgstr "Rediger menyen under eller lag en ny." +#: wp-admin/includes/post.php:1637 +msgid "Take over" +msgstr "Ta over" -#: wp-admin/nav-menus.php:677 -msgid "Select a menu to edit:" -msgstr "Velg en meny du vil redigere:" +#: wp-admin/includes/misc.php:788 +msgid "%s has taken over and is currently editing." +msgstr "%s har tatt over og skriver." -#: wp-admin/nav-menus.php:718 +#: wp-admin/nav-menus.php:719 msgid "or create a new menu." msgstr "eller lag en ny meny." -#: wp-admin/includes/ms.php:768 +#: wp-admin/nav-menus.php:678 +msgid "Select a menu to edit:" +msgstr "Velg en meny du vil redigere:" + +#: wp-admin/nav-menus.php:673 +msgid "Edit your menu below, or create a new menu." +msgstr "Rediger menyen under eller lag en ny." + +#: wp-admin/includes/ms.php:785 msgid "Thank you for Updating! Please visit the Upgrade Network page to update all your sites." msgstr "Takk for at du oppdaterer WordPress! Vær vennlig å besøke siden Oppdater nettverk for å oppdatere alle dine nettsteder." -#: wp-admin/setup-config.php:405 +#: wp-admin/setup-config.php:402 msgid "All right, sparky! You’ve made it through this part of the installation. WordPress can now communicate with your database. If you are ready, time now to…" msgstr "OK, tøffing! Du har klart deg så langt i installasjonen. WordPress kan nå kommunisere med databasen. Gjør deg klar til…" -#: wp-admin/includes/class-walker-nav-menu-edit.php:116 -msgid "sub item" -msgstr "undermeny" +#: wp-admin/nav-menus.php:803 +msgid "Auto add pages" +msgstr "Legg til sider automatisk" + +#: wp-admin/nav-menus.php:784 +msgid "Give your menu a name, then click Create Menu." +msgstr "Gi menyen et navn og klikk Lag meny." + +#: wp-admin/nav-menus.php:771 +msgid "Edit your default menu by adding or removing items. Drag each item into the order you prefer. Click Create Menu to save your changes." +msgstr "Rediger din standard meny ved å legge til eller fjerne elementer. Dra hvert element til ønsket plass. Klikk Lag meny for å lagre endringene dine." #: wp-admin/nav-menus.php:281 msgid "Selected menus have been successfully deleted." msgstr "Valgte menyer er slettet." -#: wp-admin/nav-menus.php:770 -msgid "Edit your default menu by adding or removing items. Drag each item into the order you prefer. Click Create Menu to save your changes." -msgstr "Rediger din standard meny ved å legge til eller fjerne elementer. Dra hvert element til ønsket plass. Klikk Lag meny for å lagre endringene dine." - -#: wp-admin/nav-menus.php:783 -msgid "Give your menu a name, then click Create Menu." -msgstr "Gi menyen et navn og klikk Lag meny." - -#: wp-admin/nav-menus.php:802 -msgid "Auto add pages" -msgstr "Legg til sider automatisk" - -#: wp-admin/nav-menus.php:809 -msgid "Theme locations" -msgstr "Temaplasseringer" - -#: wp-admin/plugin-editor.php:135 -msgid "The Documentation menu below the editor lists the PHP functions recognized in the plugin file. Clicking Look Up takes you to a web page about that particular function." -msgstr "Dokumentasjonen under redigeringsvinduet lister opp PHP-funksjonene som er gjenkjent i filen. Når du klikker på Slå opp, blir du tatt til et nettsted som omhandler den funksjonen." - -#: wp-admin/plugin-editor.php:263 wp-admin/theme-editor.php:266 -msgid "Look Up" -msgstr "Undersøk" +#: wp-admin/includes/class-walker-nav-menu-edit.php:116 +msgid "sub item" +msgstr "undermeny" #: wp-admin/theme-editor.php:29 msgid "For PHP files, you can use the Documentation dropdown to select from functions recognized in that file. Look Up takes you to a web page with reference material about that particular function." msgstr "For PHP-filer kan du bruke Dokumentasjon-menyen for å velge funksjoner som er kjent igjen i den filen. Slå opp tar deg til et nettsted med informasjon om den valgte funksjonen." -#: wp-admin/includes/class-wp-posts-list-table.php:933 +#: wp-admin/plugin-editor.php:275 wp-admin/theme-editor.php:266 +msgid "Look Up" +msgstr "Undersøk" + +#: wp-admin/plugin-editor.php:147 +msgid "The Documentation menu below the editor lists the PHP functions recognized in the plugin file. Clicking Look Up takes you to a web page about that particular function." +msgstr "Dokumentasjonen under redigeringsvinduet lister opp PHP-funksjonene som er gjenkjent i filen. Når du klikker på Slå opp, blir du tatt til et nettsted som omhandler den funksjonen." + +#: wp-admin/includes/class-wp-posts-list-table.php:910 #: wp-admin/includes/misc.php:749 msgid "%s is currently editing" msgstr "%s arbeider nå" -#: wp-admin/edit-form-advanced.php:419 +#: wp-admin/edit-form-advanced.php:420 msgid "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." msgstr "Du kan laste opp og sette inn media (bilder, lyd, dokumenter, etc.) ved å klikke på Legg til media-knappen. Du kan da velge bilder som allerede er lastet opp i mediebiblioteket, eller laste opp nye mediefiler til ditt innlegg eller din side. For å lage et bildegalleri, velg bildene som skal med og klikk på «Lag nytt galleri»-knappen." @@ -4149,43 +4306,43 @@ msgstr "Bilderotasjon er ikke støttet av din nettserver." msgid "If you are looking to use the link manager, please install the Link Manager plugin." msgstr "Hvis du leter etter lenkehåndtereren, vennligst installer utvidelsen Lenkehåndtering." -#: wp-admin/includes/dashboard.php:1490 +#: wp-admin/includes/dashboard.php:1489 msgid "Manage widgets or menus" msgstr "Håndter widgeter eller menyer" -#: wp-admin/custom-background.php:93 -msgid "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." -msgstr "For å bruke et bakgrunnsbilde er det bare å laste det opp eller velge et bilde som allerede har blitt lastet opp til ditt mediebibliotek ved å klikke på «Velg bilde»-knappen. Du kan vise bildet én gang, eller vise det mange ganger etter hverandre for å fylle skjermen. Du kan ha bakgrunnen fiksert på plass, slik at innholdet flyttes over den, eller du kan la den skrolle sammen med innholdet." - -#: wp-admin/custom-header.php:122 -msgid "Don’t forget to click “Save Changes” when you’re done!" -msgstr "Ikke glem å klikke på «Lagre endringer» når du er klar!" - -#: wp-admin/edit-form-advanced.php:356 -msgid "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." -msgstr "Tittelfeltet og det store redigeringsområdet har sine faste plasser, men du kan flytte alle de andre boksene med dra-og-slipp. Du kan også minimere eller ekspandere de ved å klikke på tittellinjen for hver boks. Bruk Visningsinnstillinger-fanen for å vise eller skjule bokser (Sammendrag, Send tilbaketråkk, Tilpassede felt, Diskusjon, Permalenke, Forfatter) eller velg en 1- eller 2-kolonnelayout for denne skjermen." - -#: wp-admin/edit-form-advanced.php:424 -msgid "Inserting Media" -msgstr "Å sette inn media" - -#: wp-admin/edit-form-advanced.php:430 -msgid "Several boxes on this screen contain settings for how your content will be published, including:" -msgstr "Flere bokser på denne skjermen inneholder innstillinger for hvordan innholdet vil publiseres, inkludert:" - -#: wp-admin/edit-form-advanced.php:448 -msgid "Publish Settings" -msgstr "Publiseringsinnstillinger" - -#: wp-admin/edit-tags.php:266 -msgid "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." -msgstr "Forelder – Kategorier er hierarkiske i motsetning til stikkord. Du kan ha en Jazz-kategori, og under kan du ha datterkategorier som Bebop og Big Band. Helt valgfritt. For å lage en underkategori er det bare å velge en annen kategori fra Forelder-menyen." - #: wp-admin/widgets.php:69 msgid "When changing themes, there is often some variation in the number and setup of widget areas/sidebars and sometimes these conflicts make the transition a bit less smooth. If you changed themes and seem to be missing widgets, scroll down on this screen to the Inactive Widgets area, where all of your widgets and their settings will have been saved." msgstr "Når du endrer temaer er det ofte litt variasjon i antallet og oppsettet med widget-områder, og noen ganger oppstår konflikter som gjør overgangen ikke-fullt-så-smertefri. Hvis du endret temaer og det ser ut til at du mangler noen widgeter, bla ned på siden til Inaktive widgeter, der alle dine widgeter og deres innstillinger blir lagret." -#: wp-admin/includes/media.php:2642 +#: wp-admin/edit-tags.php:248 +msgid "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." +msgstr "Forelder – Kategorier er hierarkiske i motsetning til stikkord. Du kan ha en Jazz-kategori, og under kan du ha datterkategorier som Bebop og Big Band. Helt valgfritt. For å lage en underkategori er det bare å velge en annen kategori fra Forelder-menyen." + +#: wp-admin/edit-form-advanced.php:449 +msgid "Publish Settings" +msgstr "Publiseringsinnstillinger" + +#: wp-admin/edit-form-advanced.php:431 +msgid "Several boxes on this screen contain settings for how your content will be published, including:" +msgstr "Flere bokser på denne skjermen inneholder innstillinger for hvordan innholdet vil publiseres, inkludert:" + +#: wp-admin/edit-form-advanced.php:425 +msgid "Inserting Media" +msgstr "Å sette inn media" + +#: wp-admin/edit-form-advanced.php:357 +msgid "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." +msgstr "Tittelfeltet og det store redigeringsområdet har sine faste plasser, men du kan flytte alle de andre boksene med dra-og-slipp. Du kan også minimere eller ekspandere de ved å klikke på tittellinjen for hver boks. Bruk Visningsinnstillinger-fanen for å vise eller skjule bokser (Sammendrag, Send tilbaketråkk, Tilpassede felt, Diskusjon, Permalenke, Forfatter) eller velg en 1- eller 2-kolonnelayout for denne skjermen." + +#: wp-admin/custom-header.php:122 +msgid "Don’t forget to click “Save Changes” when you’re done!" +msgstr "Ikke glem å klikke på «Lagre endringer» når du er klar!" + +#: wp-admin/custom-background.php:93 +msgid "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." +msgstr "For å bruke et bakgrunnsbilde er det bare å laste det opp eller velge et bilde som allerede har blitt lastet opp til ditt mediebibliotek ved å klikke på «Velg bilde»-knappen. Du kan vise bildet én gang, eller vise det mange ganger etter hverandre for å fylle skjermen. Du kan ha bakgrunnen fiksert på plass, slik at innholdet flyttes over den, eller du kan la den skrolle sammen med innholdet." + +#: wp-admin/includes/media.php:2650 msgid "You are using the multi-file uploader. Problems? Try the browser uploader instead." msgstr "Du bruker fler-filopplasteren. Problemer? Prøv nettleseropplasting isteden." @@ -4205,80 +4362,77 @@ msgctxt "column name" msgid "Uploaded to" msgstr "Lastet opp til" -#: wp-admin/custom-background.php:374 wp-admin/custom-header.php:846 -#: wp-admin/includes/ajax-actions.php:2056 +#: wp-admin/custom-background.php:454 wp-admin/custom-header.php:846 +#: wp-admin/includes/ajax-actions.php:2042 msgid "The uploaded file is not a valid image. Please try again." msgstr "Den opplastede filen er ikke et gyldig bilde. Vennligst prøv igjen." -#: wp-admin/custom-background.php:280 -msgid "Choose a Background Image" -msgstr "Velg bakgrunnsbilde" - #: wp-admin/custom-header.php:592 msgid "Choose a Custom Header" msgstr "Velg tilpasset sidetopp" -#: wp-admin/custom-background.php:94 -msgid "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." -msgstr "Du kan også velge en bakgrunnsfarge ved å klikke på Velg farge-knappen og enten skrive inn en gyldig HTML hex-verdi, f. eks. «#ff0000» for rød, eller ved å velge en farge med fargevelgeren." +#: wp-admin/custom-background.php:329 +msgid "Choose a Background Image" +msgstr "Velg bakgrunnsbilde" #: wp-admin/custom-header.php:121 msgid "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." msgstr "I seksjonen for sidetopp-tekst på denne siden, kan du velge om du vil vise teksten eller skjule den. Du kan også velge en farge for teksten ved å klikke på Velg farge-knappen og enten skrive inn en gyldig HTML hex-verdi, f. eks. «#ff0000» for rød, eller ved å velge en farge med fargevelgeren." +#: wp-admin/custom-background.php:94 +msgid "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." +msgstr "Du kan også velge en bakgrunnsfarge ved å klikke på Velg farge-knappen og enten skrive inn en gyldig HTML hex-verdi, f. eks. «#ff0000» for rød, eller ved å velge en farge med fargevelgeren." + #: wp-admin/options-reading.php:32 msgid "You can choose whether or not your site will be crawled by robots, ping services, and spiders. If you want those services to ignore your site, click the checkbox next to “Discourage search engines from indexing this site” and click the Save Changes button at the bottom of the screen. Note that your privacy is not complete; your site is still visible on the web." msgstr "Du kan velge om du vil at ditt nettsted skal bli gjennomsøkt av roboter, ping-tjenester og edderkopper. Hvis du vil at disse tjenestene skal ignorere ditt nettsted, aktiver «Be søkemotorer om å ikke indeksere nettstedet» og klikk på knappen Lagre endringer nederst på siden. Husk at nettstedet ikke er privat – det er fortsatt synlig på internett." -#: wp-admin/includes/dashboard.php:1485 -msgid "More Actions" -msgstr "Flere handlinger" - -#: wp-admin/includes/dashboard.php:1500 -msgid "Turn comments on or off" -msgstr "Skru kommentarer på eller av" - -#: wp-admin/includes/dashboard.php:1502 +#: wp-admin/includes/dashboard.php:1501 msgid "Learn more about getting started" msgstr "Lær mer om å komme i gang" -#: wp-admin/includes/media.php:2841 +#: wp-admin/includes/dashboard.php:1499 +msgid "Turn comments on or off" +msgstr "Skru kommentarer på eller av" + +#: wp-admin/includes/dashboard.php:1484 +msgid "More Actions" +msgstr "Flere handlinger" + +#: wp-admin/includes/media.php:2859 msgid "File URL:" msgstr "Fil-URL:" -#: wp-admin/edit-comments.php:158 +#: wp-admin/edit-comments.php:174 msgid "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." msgstr "I kolonnen Som svar til er det tre elementer. Teksten er navnet til innlegget som inspirerte kommentaren og lenker til innleggsredigering for det innlegget. Vis innlegg-lenken tar deg til innlegget på nettstedet. Den lille boblen med tallet, viser antall godkjente kommentarer som det innlegget har. Hvis det er ventende kommentarer, vises en rød varslingssirkel med antallet ventende kommentarer. Klikk på varslingssirkelen vil filtrere kommentarvisningen til å bare vise ventende kommentarer for det innlegget." -#: wp-admin/includes/ms.php:465 -msgid "Used: %1$s%% of %2$s" -msgstr "Brukt: %1$s%% av %2$s" - -#. translators: 1: user id, 2: user login -#: wp-admin/users.php:252 -msgid "ID #%1$s: %2$s The current user will not be deleted." -msgstr "ID #%1$s: %2$s Den nåværende brukeren vil ikke bli slettet." - -#. translators: 1: user id, 2: user login -#: wp-admin/users.php:255 wp-admin/users.php:388 -msgid "ID #%1$s: %2$s" -msgstr "ID #%1$s: %2$s" - #. translators: 1: user id, 2: user login #: wp-admin/users.php:382 msgid "ID #%1$s: %2$s The current user will not be removed." msgstr "ID #%1$s: %2$s Den nåværende brukeren vil ikke bli fjernet." #. translators: 1: user id, 2: user login -#: wp-admin/users.php:385 -msgid "ID #%1$s: %2$s You don’t have permission to remove this user." -msgstr "ID #%1$s: %2$s Du har ikke tillatelse til å fjerne denne brukeren." +#: wp-admin/users.php:255 wp-admin/users.php:388 +msgid "ID #%1$s: %2$s" +msgstr "ID #%1$s: %2$s" + +#. translators: 1: user id, 2: user login +#: wp-admin/users.php:252 +msgid "ID #%1$s: %2$s The current user will not be deleted." +msgstr "ID #%1$s: %2$s Den nåværende brukeren vil ikke bli slettet." + +#. translators: Storage space that's been used. 1: Percentage of used space, 2: +#. Total space allowed in megabytes or gigabytes +#: wp-admin/includes/ms.php:481 +msgid "Used: %1$s%% of %2$s" +msgstr "Brukt: %1$s%% av %2$s" #: wp-admin/users.php:235 msgid "Please select an option." msgstr "Vennligst ta et valg." -#: wp-admin/includes/ms.php:344 +#: wp-admin/includes/ms.php:352 msgid "ERROR: The email address is already used." msgstr "FEIL: E-postadressen er allerede i bruk." @@ -4287,95 +4441,38 @@ msgstr "FEIL: E-postadressen er allerede i bruk." msgid "$image needs to be an WP_Image_Editor object" msgstr "$image må være et WP_Image_Editor-objekt" -#: wp-admin/includes/image-edit.php:390 -msgid "Use WP_Image_Editor::rotate" -msgstr "Bruk WP_Image_Editor::rotate" +#: wp-admin/setup-config.php:371 +msgid "After you’ve done that, click “Run the install.”" +msgstr "Etter at du har gjort dette, klikk «Kjør installering»." -#: wp-admin/includes/image-edit.php:413 -msgid "Use WP_Image_Editor::flip" -msgstr "Bruk WP_Image_Editor::flip" +#: wp-admin/setup-config.php:186 +msgid "Below you should enter your database connection details. If you’re not sure about these, contact your host." +msgstr "Under skal du skrive inn databasedetaljene. Hvis du ikke er sikker på disse, kontakt din nettjener." -#: wp-admin/includes/template.php:1263 -msgid "The privacy options group has been removed. Use another settings group." -msgstr "Gruppen med fortrolighetsvalg har blitt slettet. Bruk en annen gruppe med innstillinger." +#: wp-admin/plugin-install.php:93 +msgid "If you want to install a plugin that you’ve downloaded elsewhere, click the Upload Plugin button above the plugins list. You will be prompted to upload the .zip package, and once uploaded, you can activate the new plugin." +msgstr "Hvis du vil installere en utvidelse som du har lastet ned andre steder, klikke på Last opp-lenken over listen med utvidelser. Du vil bli bedt om å laste opp .zip-filen, og når den er lastet opp kan du aktivere den nye utvidelsen." -#: wp-admin/includes/dashboard.php:341 -msgid "Search Engines Discouraged" -msgstr "Søkemotorer bedt om ikke å indeksere nettstedet" +#: wp-admin/plugin-install.php:92 +msgid "You can also browse a user’s favorite plugins, by using the Favorites link above the plugins list and entering their WordPress.org username." +msgstr "Du kan også bla i en brukers favorittutvidelser, ved å bruke lenken Favoritter over lenken med utvidelser og å skrive inn deres WordPress.org-brukernavn." -#: wp-admin/includes/dashboard.php:1454 -msgid "Welcome to WordPress!" -msgstr "Velkommen til WordPress!" +#: wp-admin/plugin-install.php:90 +msgid "If you know what you’re looking for, Search is your best bet. The Search screen has options to search the WordPress Plugin Directory for a particular Term, Author, or Tag. You can also search the directory by selecting popular tags. Tags in larger type mean more plugins have been labeled with that tag." +msgstr "Hvis du vet hva du leter etter, er det best å søke. Søkeskjermen har valg for å søke i utvidelseskatalogen til WordPress.org for et bestemt nøkkelord, forfatter eller stikkord. Du kan også søke i katalogen ved å velge populære stikkord. Stikkord i større skrift betyr at flere utvidelser har blitt merket med det stikkordet." -#: wp-admin/includes/dashboard.php:1455 -msgid "We’ve assembled some links to get you started:" -msgstr "Vi har satt sammen noen lenker for at du skal komme i gang:" +#: wp-admin/install.php:199 wp-admin/options-reading.php:138 +msgid "It is up to search engines to honor this request." +msgstr "Det er opp til søkemotorene å oppfylle ditt ønske." -#: wp-admin/includes/dashboard.php:1459 -msgid "Get Started" -msgstr "Kom i gang" +#: wp-admin/install.php:191 wp-admin/install.php:198 +#: wp-admin/options-reading.php:117 wp-admin/options-reading.php:137 +msgid "Discourage search engines from indexing this site" +msgstr "Be søkemotorer om ikke å indeksere nettstedet" -#: wp-admin/includes/dashboard.php:1464 -msgid "or, change your theme completely" -msgstr "eller, endre hele temaet" - -#: wp-admin/includes/dashboard.php:1468 -msgid "Next Steps" -msgstr "Neste skritt" - -#: wp-admin/includes/dashboard.php:1471 wp-admin/includes/dashboard.php:1474 -msgid "Edit your front page" -msgstr "Rediger din forside" - -#: wp-admin/includes/dashboard.php:1472 wp-admin/includes/dashboard.php:1475 -msgid "Add additional pages" -msgstr "Legg til flere sider" - -#: wp-admin/includes/dashboard.php:1476 -msgid "Add a blog post" -msgstr "Legg til et blogginnlegg" - -#: wp-admin/includes/dashboard.php:1478 -msgid "Write your first blog post" -msgstr "Skriv ditt første blogginnlegg" - -#: wp-admin/includes/dashboard.php:1479 -msgid "Add an About page" -msgstr "Legg til en Om meg- eller Om oss-side" - -#: wp-admin/includes/dashboard.php:1481 -msgid "View your site" -msgstr "Vis ditt nettsted" - -#: wp-admin/includes/meta-boxes.php:301 -msgid "Uploaded on: %1$s" -msgstr "Lastet opp: %1$s" - -#: wp-admin/includes/plugin-install.php:299 -msgid "If you have marked plugins as favorites on WordPress.org, you can browse them here." -msgstr "Hvis du har merket utvidelser som favoritter på WordPress.org, kan du bla i dem her." - -#: wp-admin/includes/plugin-install.php:303 wp-admin/theme-install.php:172 -msgid "Your WordPress.org username:" -msgstr "Ditt brukernavn på WordPress.org:" - -#: wp-admin/includes/plugin-install.php:305 wp-admin/theme-install.php:175 -msgid "Get Favorites" -msgstr "Hent favoritter" - -#: wp-admin/includes/plugin.php:1783 wp-admin/includes/plugin.php:1788 -#: wp-admin/includes/plugin.php:1812 wp-admin/includes/plugin.php:1817 -#: wp-admin/includes/template.php:1207 wp-admin/includes/template.php:1212 -msgid "The \"%s\" options group has been removed. Use another settings group." -msgstr "Gruppen med innstillinger for \"%s\" har blitt fjernet. Bruk en annen gruppe med innstillinger." - -#: wp-admin/includes/update-core.php:1224 wp-admin/update-core.php:502 -msgid "Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click here." -msgstr "Velkommen til WordPress %1$s. Du vil bli omdirigert til Om WordPress-skjermen. Hvis ikke, klikk her." - -#: wp-admin/options-reading.php:25 -msgid "You can also control the display of your content in RSS feeds, including the maximum numbers of posts to display and whether to show full text or a summary." -msgstr "Du kan også kontrollere visningen av ditt innhold i RSS-strømmer, inkludert maks antall innlegg som skal vises og hvorvidt du vil vise hele teksten eller kun et utdrag." +#: wp-admin/install.php:189 wp-admin/options-reading.php:115 +msgid "Allow search engines to index this site" +msgstr "La søkemotorer indeksere nettstedet" #: wp-admin/install.php:182 wp-admin/install.php:185 #: wp-admin/options-reading.php:31 wp-admin/options-reading.php:111 @@ -4383,71 +4480,134 @@ msgstr "Du kan også kontrollere visningen av ditt innhold i RSS-strømmer, inkl msgid "Search Engine Visibility" msgstr "Synlighet for søkemotorer" -#: wp-admin/install.php:189 wp-admin/options-reading.php:115 -msgid "Allow search engines to index this site" -msgstr "La søkemotorer indeksere nettstedet" +#: wp-admin/options-reading.php:25 +msgid "You can also control the display of your content in RSS feeds, including the maximum numbers of posts to display and whether to show full text or a summary." +msgstr "Du kan også kontrollere visningen av ditt innhold i RSS-strømmer, inkludert maks antall innlegg som skal vises og hvorvidt du vil vise hele teksten eller kun et utdrag." -#: wp-admin/install.php:191 wp-admin/install.php:198 -#: wp-admin/options-reading.php:117 wp-admin/options-reading.php:137 -msgid "Discourage search engines from indexing this site" -msgstr "Be søkemotorer om ikke å indeksere nettstedet" +#: wp-admin/includes/update-core.php:1227 wp-admin/update-core.php:499 +msgid "Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click here." +msgstr "Velkommen til WordPress %1$s. Du vil bli omdirigert til Om WordPress-skjermen. Hvis ikke, klikk her." -#: wp-admin/install.php:199 wp-admin/options-reading.php:138 -msgid "It is up to search engines to honor this request." -msgstr "Det er opp til søkemotorene å oppfylle ditt ønske." +#: wp-admin/includes/plugin-install.php:327 wp-admin/theme-install.php:181 +msgid "Get Favorites" +msgstr "Hent favoritter" -#: wp-admin/plugin-install.php:90 -msgid "If you know what you’re looking for, Search is your best bet. The Search screen has options to search the WordPress Plugin Directory for a particular Term, Author, or Tag. You can also search the directory by selecting popular tags. Tags in larger type mean more plugins have been labeled with that tag." -msgstr "Hvis du vet hva du leter etter, er det best å søke. Søkeskjermen har valg for å søke i utvidelseskatalogen til WordPress.org for et bestemt nøkkelord, forfatter eller stikkord. Du kan også søke i katalogen ved å velge populære stikkord. Stikkord i større skrift betyr at flere utvidelser har blitt merket med det stikkordet." +#: wp-admin/includes/plugin-install.php:325 wp-admin/theme-install.php:178 +msgid "Your WordPress.org username:" +msgstr "Ditt brukernavn på WordPress.org:" -#: wp-admin/plugin-install.php:92 -msgid "You can also browse a user’s favorite plugins, by using the Favorites link above the plugins list and entering their WordPress.org username." -msgstr "Du kan også bla i en brukers favorittutvidelser, ved å bruke lenken Favoritter over lenken med utvidelser og å skrive inn deres WordPress.org-brukernavn." +#: wp-admin/includes/plugin-install.php:321 +msgid "If you have marked plugins as favorites on WordPress.org, you can browse them here." +msgstr "Hvis du har merket utvidelser som favoritter på WordPress.org, kan du bla i dem her." -#: wp-admin/plugin-install.php:93 -msgid "If you want to install a plugin that you’ve downloaded elsewhere, click the Upload Plugin button above the plugins list. You will be prompted to upload the .zip package, and once uploaded, you can activate the new plugin." -msgstr "Hvis du vil installere en utvidelse som du har lastet ned andre steder, klikke på Last opp-lenken over listen med utvidelser. Du vil bli bedt om å laste opp .zip-filen, og når den er lastet opp kan du aktivere den nye utvidelsen." +#. translators: Attachment information. 1: Date the attachment was uploaded +#: wp-admin/includes/meta-boxes.php:310 +msgid "Uploaded on: %1$s" +msgstr "Lastet opp: %1$s" -#: wp-admin/setup-config.php:188 -msgid "Below you should enter your database connection details. If you’re not sure about these, contact your host." -msgstr "Under skal du skrive inn databasedetaljene. Hvis du ikke er sikker på disse, kontakt din nettjener." +#: wp-admin/includes/dashboard.php:1480 +msgid "View your site" +msgstr "Vis ditt nettsted" -#: wp-admin/setup-config.php:374 -msgid "After you’ve done that, click “Run the install.”" -msgstr "Etter at du har gjort dette, klikk «Kjør installering»." +#: wp-admin/includes/dashboard.php:1478 +msgid "Add an About page" +msgstr "Legg til en Om meg- eller Om oss-side" -#: wp-admin/includes/class-wp-themes-list-table.php:238 -msgid "This child theme requires its parent theme, %2$s." -msgstr "Dette dattertemaet trenger sitt foreldretema, %2$s." +#: wp-admin/includes/dashboard.php:1477 +msgid "Write your first blog post" +msgstr "Skriv ditt første blogginnlegg" -#: wp-admin/edit-form-advanced.php:405 -msgid "This screen allows you to edit four fields for metadata in a file within the media library." -msgstr "Denne skjermen lar deg redigere fire felt med metadata for filer i mediebiblioteket." +#: wp-admin/includes/dashboard.php:1475 +msgid "Add a blog post" +msgstr "Legg til et blogginnlegg" -#: wp-admin/includes/class-wp-plugin-install-list-table.php:97 +#: wp-admin/includes/dashboard.php:1471 wp-admin/includes/dashboard.php:1474 +msgid "Add additional pages" +msgstr "Legg til flere sider" + +#: wp-admin/includes/dashboard.php:1470 wp-admin/includes/dashboard.php:1473 +msgid "Edit your front page" +msgstr "Rediger din forside" + +#: wp-admin/includes/dashboard.php:1467 +msgid "Next Steps" +msgstr "Neste skritt" + +#: wp-admin/includes/dashboard.php:1463 +msgid "or, change your theme completely" +msgstr "eller, endre hele temaet" + +#: wp-admin/includes/dashboard.php:1458 +msgid "Get Started" +msgstr "Kom i gang" + +#: wp-admin/includes/dashboard.php:1454 +msgid "We’ve assembled some links to get you started:" +msgstr "Vi har satt sammen noen lenker for at du skal komme i gang:" + +#: wp-admin/includes/dashboard.php:1453 +msgid "Welcome to WordPress!" +msgstr "Velkommen til WordPress!" + +#: wp-admin/includes/dashboard.php:341 +msgid "Search Engines Discouraged" +msgstr "Søkemotorer bedt om ikke å indeksere nettstedet" + +#: wp-admin/includes/template.php:1266 +msgid "The privacy options group has been removed. Use another settings group." +msgstr "Gruppen med fortrolighetsvalg har blitt slettet. Bruk en annen gruppe med innstillinger." + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:96 msgctxt "Plugin Installer" msgid "Favorites" msgstr "Favoritter" -#: wp-admin/includes/theme.php:256 +#: wp-admin/edit-form-advanced.php:406 +msgid "This screen allows you to edit four fields for metadata in a file within the media library." +msgstr "Denne skjermen lar deg redigere fire felt med metadata for filer i mediebiblioteket." + +#: wp-admin/includes/class-wp-themes-list-table.php:239 +msgid "This child theme requires its parent theme, %2$s." +msgstr "Dette dattertemaet trenger sitt foreldretema, %2$s." + +#: wp-admin/includes/theme.php:258 msgid "Flexible Header" msgstr "Fleksibel sidetopp" -#: wp-admin/theme-install.php:98 -msgid "To install the theme so you can preview it with your site’s content and customize its theme options, click the \"Install\" button at the top of the left-hand pane. The theme files will be downloaded to your website automatically. When this is complete, the theme is now available for activation, which you can do by clicking the \"Activate\" link, or by navigating to your Manage Themes screen and clicking the \"Live Preview\" link under any installed theme’s thumbnail image." -msgstr "For å installere tema slik at du kan forhåndsvise det med innholdet til din nettside og skreddersy temaets egenskaper, klikk knappen «Installer» på toppen i den venstre boksen. Temafilene vil lastes ned til ditt nettsted automatisk. Når dette er fullført vil temaet være tilgjengelig for aktivering. Dette gjør du ved å klikke lenken «Aktiver», eller ved å navigere til skjermen Temaer og klikke på lenken «Live forhåndsvisning» under miniatyrbildet til hvilket som helst installert tema." +#: wp-admin/includes/media.php:2705 +msgid "Sorry, you have used all of your storage quota of %s MB." +msgstr "Beklager, du har brukt opp din lagringskvote på %s MB." -#: wp-admin/includes/widgets.php:225 -msgctxt "widget" -msgid "Add" -msgstr "Legg til " +#: wp-admin/includes/ms.php:451 +msgid "Sorry, you have used your space allocation. Please delete some files to upload more files." +msgstr "Beklager, du har brukt opp all tilgjengelig plass. Du må slette noen filer for å kunne laste opp flere." -#: wp-admin/includes/widgets.php:224 -msgctxt "widget" -msgid "Edit" -msgstr "Rediger " +#: wp-admin/includes/class-wp-screen.php:794 +msgid "Contextual Help Tab" +msgstr "Fane for kontekstbasert hjelp" -#: wp-admin/includes/upgrade.php:217 +#: wp-admin/includes/class-wp-screen.php:978 +msgid "Screen Options Tab" +msgstr "Fane for Visningsinnstillinger" + +#: wp-admin/includes/theme-install.php:65 +msgid "Type of search" +msgstr "Type søk" + +#: wp-admin/includes/theme-install.php:74 +#: wp-admin/includes/theme-install.php:85 +msgid "Search by keyword" +msgstr "Søk etter nøkkelord" + +#: wp-admin/includes/theme-install.php:77 +msgid "Search by author" +msgstr "Søk etter forfatter" + +#: wp-admin/includes/theme-install.php:80 +msgid "Search by tag" +msgstr "Søk etter stikkord" + +#: wp-admin/includes/upgrade.php:220 msgid "" "This is an example page. It's different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:\n" "\n" @@ -4469,78 +4629,59 @@ msgstr "" "\n" "Som ny WordPress-bruker burde du gå til ditt kontrollpanel for å slette denne siden og lage nye sider for ditt innhold. Lykke til!" -#: wp-admin/includes/theme-install.php:80 -msgid "Search by tag" -msgstr "Søk etter stikkord" +#: wp-admin/includes/widgets.php:224 +msgctxt "widget" +msgid "Edit" +msgstr "Rediger " -#: wp-admin/includes/theme-install.php:77 -msgid "Search by author" -msgstr "Søk etter forfatter" +#: wp-admin/includes/widgets.php:225 +msgctxt "widget" +msgid "Add" +msgstr "Legg til " -#: wp-admin/includes/theme-install.php:74 -#: wp-admin/includes/theme-install.php:85 -msgid "Search by keyword" -msgstr "Søk etter nøkkelord" +#: wp-admin/theme-install.php:104 +msgid "To install the theme so you can preview it with your site’s content and customize its theme options, click the \"Install\" button at the top of the left-hand pane. The theme files will be downloaded to your website automatically. When this is complete, the theme is now available for activation, which you can do by clicking the \"Activate\" link, or by navigating to your Manage Themes screen and clicking the \"Live Preview\" link under any installed theme’s thumbnail image." +msgstr "For å installere tema slik at du kan forhåndsvise det med innholdet til din nettside og skreddersy temaets egenskaper, klikk knappen «Installer» på toppen i den venstre boksen. Temafilene vil lastes ned til ditt nettsted automatisk. Når dette er fullført vil temaet være tilgjengelig for aktivering. Dette gjør du ved å klikke lenken «Aktiver», eller ved å navigere til skjermen Temaer og klikke på lenken «Live forhåndsvisning» under miniatyrbildet til hvilket som helst installert tema." -#: wp-admin/includes/theme-install.php:65 -msgid "Type of search" -msgstr "Type søk" +#: wp-admin/menu-header.php:247 +msgid "Skip to main content" +msgstr "Hopp til hovedinnhold" -#: wp-admin/includes/class-wp-screen.php:978 -msgid "Screen Options Tab" -msgstr "Fane for Visningsinnstillinger" - -#: wp-admin/includes/class-wp-screen.php:794 -msgid "Contextual Help Tab" -msgstr "Fane for kontekstbasert hjelp" - -#: wp-admin/includes/ms.php:437 -msgid "Sorry, you have used your space allocation. Please delete some files to upload more files." -msgstr "Beklager, du har brukt opp all tilgjengelig plass. Du må slette noen filer for å kunne laste opp flere." - -#: wp-admin/includes/media.php:2697 -msgid "Sorry, you have used all of your storage quota of %s MB." -msgstr "Beklager, du har brukt opp din lagringskvote på %s MB." - -#: wp-admin/includes/class-wp-comments-list-table.php:627 -msgid "Select comment" -msgstr "Velg kommentar" - -#. translators: %s: plugin name -#. translators: %s: theme name -#: wp-admin/includes/class-wp-links-list-table.php:172 -#: wp-admin/includes/class-wp-media-list-table.php:351 -#: wp-admin/includes/class-wp-plugins-list-table.php:731 -#: wp-admin/includes/class-wp-posts-list-table.php:829 -#: wp-admin/includes/class-wp-terms-list-table.php:338 -#: wp-admin/includes/class-wp-users-list-table.php:432 -#: wp-admin/update-core.php:300 wp-admin/update-core.php:371 -msgid "Select %s" -msgstr "Velg %s" - -#: wp-admin/edit-tags.php:596 -msgid "Tags can be selectively converted to categories using the tag to category converter." -msgstr "Stikkord kan bli konvertert til kategorier ved å bruke stikkord til kategori-konvertereren." - -#: wp-admin/edit-tags.php:243 -msgid "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." -msgstr "Du kan slette lenkekategorier i massehandlinger-menyen, men den handlingen sletter ikke lenkene innenfor den kategorien. Lenkene her blir isteden flyttet til standardkategorien for lenker." - -#: wp-admin/edit-form-advanced.php:386 -msgid "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." -msgstr "Å lage en side er veldig likt som å lage et innlegg, og skjermene kan tilpasses på samme måte ved å bruke dra-og-slipp, Visningsinnstillinger-fanen og å vise/skjule bokser som du vil. Denne skjermen har også distraksjonsfri skrivemodus, tilgjengelig via fullskjerm-knappene. Som sagt er det mange likheter med siden for å redigere innlegg, men noen side-spesifikke funksjoner finnes i boksen for sideattributter." +#: wp-admin/admin-header.php:230 +msgid "Main content" +msgstr "Hovedinnhold" #: wp-admin/custom-header.php:523 msgid "You can select an image to be shown at the top of your site by uploading from your computer or choosing from your media library. After selecting an image you will be able to crop it." msgstr "Du kan velge et bilde som skal vises øverst på ditt nettsted ved å laste det opp fra din datamaskin eller ved å velge det fra ditt mediebibliotek. Etter at du har valgt et bilde vil du få muligheten til å beskjære det." -#: wp-admin/admin-header.php:225 -msgid "Main content" -msgstr "Hovedinnhold" +#: wp-admin/edit-form-advanced.php:387 +msgid "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." +msgstr "Å lage en side er veldig likt som å lage et innlegg, og skjermene kan tilpasses på samme måte ved å bruke dra-og-slipp, Visningsinnstillinger-fanen og å vise/skjule bokser som du vil. Denne skjermen har også distraksjonsfri skrivemodus, tilgjengelig via fullskjerm-knappene. Som sagt er det mange likheter med siden for å redigere innlegg, men noen side-spesifikke funksjoner finnes i boksen for sideattributter." -#: wp-admin/menu-header.php:245 -msgid "Skip to main content" -msgstr "Hopp til hovedinnhold" +#: wp-admin/edit-tags.php:225 +msgid "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." +msgstr "Du kan slette lenkekategorier i massehandlinger-menyen, men den handlingen sletter ikke lenkene innenfor den kategorien. Lenkene her blir isteden flyttet til standardkategorien for lenker." + +#: wp-admin/edit-tags.php:550 +msgid "Tags can be selectively converted to categories using the tag to category converter." +msgstr "Stikkord kan bli konvertert til kategorier ved å bruke stikkord til kategori-konvertereren." + +#. translators: %s: plugin name +#. translators: %s: theme name +#: wp-admin/includes/class-wp-links-list-table.php:172 +#: wp-admin/includes/class-wp-media-list-table.php:351 +#: wp-admin/includes/class-wp-plugins-list-table.php:729 +#: wp-admin/includes/class-wp-posts-list-table.php:835 +#: wp-admin/includes/class-wp-terms-list-table.php:339 +#: wp-admin/includes/class-wp-users-list-table.php:432 +#: wp-admin/update-core.php:297 wp-admin/update-core.php:368 +msgid "Select %s" +msgstr "Velg %s" + +#: wp-admin/includes/class-wp-comments-list-table.php:627 +msgid "Select comment" +msgstr "Velg kommentar" #: wp-admin/custom-header.php:110 msgid "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." @@ -4550,17 +4691,16 @@ msgstr "Du kan velge et tilpasset toppbilde for ditt nettsted. Bare last opp bil msgid "Skip Cropping, Publish Image as Is" msgstr "Hopp over beskjæring. Publiser bildet som det er" -#: wp-admin/includes/meta-boxes.php:576 +#: wp-admin/includes/meta-boxes.php:587 msgid "https://codex.wordpress.org/Excerpt" msgstr "http://codex.wordpress.org/Excerpt" -#: wp-admin/custom-background.php:278 wp-admin/custom-header.php:589 +#: wp-admin/custom-background.php:327 wp-admin/custom-header.php:589 msgid "Or choose an image from your media library:" msgstr "Eller velg et bilde fra ditt mediabibliotek:" -#: wp-admin/customize.php:173 -#: wp-admin/includes/class-wp-theme-install-list-table.php:341 -#: wp-admin/theme-install.php:324 +#: wp-admin/includes/class-wp-theme-install-list-table.php:344 +#: wp-admin/theme-install.php:334 msgid "Collapse" msgstr "Trekk sammen" @@ -4572,74 +4712,74 @@ msgstr "Hvis du ikke ønsker å vise et toppbilde på nettstedet ditt, klikk på msgid "You attempted to edit an item that isn’t an attachment. Please go back and try again." msgstr "Du har prøvd å redigere en fil som ikke er et vedlegg. Vennligst gå tilbake og prøv igjen." -#: wp-admin/includes/class-wp-plugin-install-list-table.php:501 -msgctxt "plugin" -msgid "Installed" -msgstr "Installert" - -#: wp-admin/includes/class-wp-theme-install-list-table.php:282 -#: wp-admin/includes/class-wp-theme-install-list-table.php:405 -msgid "This theme is already installed and is up to date" -msgstr "Dette temaet er allerede installert og oppdatert" - -#: wp-admin/includes/class-wp-theme-install-list-table.php:282 -#: wp-admin/includes/class-wp-theme-install-list-table.php:405 -#: wp-admin/theme-install.php:274 +#: wp-admin/includes/class-wp-theme-install-list-table.php:285 +#: wp-admin/includes/class-wp-theme-install-list-table.php:408 +#: wp-admin/theme-install.php:284 msgctxt "theme" msgid "Installed" msgstr "Installert" -#: wp-admin/theme-install.php:97 -msgid "Once you have generated a list of themes, you can preview and install any of them. Click on the thumbnail of the theme you’re interested in previewing. It will open up in a full-screen Preview page to give you a better idea of how that theme will look." -msgstr "Når du har lagt generert en liste med temaer, kan du forhåndsvise og installere et eller flere. Klikk på miniatyrbildet til temaet du ønsker å se, så åpner det seg i en fullskjermsvisning for at du skal få et bedre inntrykk av hvordan temaet kommer til å se ut." +#: wp-admin/includes/class-wp-theme-install-list-table.php:285 +#: wp-admin/includes/class-wp-theme-install-list-table.php:408 +msgid "This theme is already installed and is up to date" +msgstr "Dette temaet er allerede installert og oppdatert" -#: wp-admin/theme-install.php:102 -msgid "Previewing and Installing" -msgstr "Forhåndsviser og installerer" +#: wp-admin/includes/class-wp-plugin-install-list-table.php:497 +msgctxt "plugin" +msgid "Installed" +msgstr "Installert" #: wp-admin/themes.php:111 msgid "Previewing and Customizing" msgstr "Forhåndsviser og tilpasser" -#: wp-admin/includes/media.php:2655 +#: wp-admin/theme-install.php:108 +msgid "Previewing and Installing" +msgstr "Forhåndsviser og installerer" + +#: wp-admin/theme-install.php:103 +msgid "Once you have generated a list of themes, you can preview and install any of them. Click on the thumbnail of the theme you’re interested in previewing. It will open up in a full-screen Preview page to give you a better idea of how that theme will look." +msgstr "Når du har lagt generert en liste med temaer, kan du forhåndsvise og installere et eller flere. Klikk på miniatyrbildet til temaet du ønsker å se, så åpner det seg i en fullskjermsvisning for at du skal få et bedre inntrykk av hvordan temaet kommer til å se ut." + +#: wp-admin/includes/media.php:2663 msgid "You are using the browser’s built-in file uploader. The WordPress uploader includes multiple file selection and drag and drop capability. Switch to the multi-file uploader." msgstr "Du bruker nettleserens innebygde opplaster. Med WordPress' flerfilopplaster kan du velge mange filer samtidig med dra-og-slipp. Bytt til flerfilopplaster" #. translators: %s: Theme name -#: wp-admin/includes/class-wp-theme-install-list-table.php:290 -#: wp-admin/includes/theme.php:652 +#: wp-admin/includes/class-wp-theme-install-list-table.php:293 +#: wp-admin/includes/theme.php:677 msgid "Preview %s" msgstr "Forhåndsvis %s" -#: wp-admin/tools.php:22 -msgid "Categories have hierarchy, meaning that you can nest sub-categories. Tags do not have hierarchy and cannot be nested. Sometimes people start out using one on their posts, then later realize that the other would work better for their content." -msgstr "Kategorier har hierarki, som betyr at du kan lage underkategorier. Stikkord har ikke hierarki, og du kan derfor ikke lage «understikkord». Iblant starter folk med å bruke en type klassifisering av sine innlegg, men finner så senere ut at den andre typen fungerer bedre for deres innhold." - #: wp-admin/tools.php:23 msgid "The Categories and Tags Converter link on this screen will take you to the Import screen, where that Converter is one of the plugins you can install. Once that plugin is installed, the Activate Plugin & Run Importer link will take you to a screen where you can choose to convert tags into categories or vice versa." msgstr "Kategori- og stikkordkonverterer-lenken på denne skjermen vil ta deg til import-skjermen, der konvertereren er en av utvidelsene som du kan innstallere. Når utvidelsen er innstallert, vil «Aktiver utvidelsen og kjør importør»-lenken ta deg til en skjerm der du kan velge å konvertere stikkord til kategorier og omvendt." -#: wp-admin/custom-header.php:102 -msgid "This screen is used to customize the header section of your theme." -msgstr "I dette skjermbildet kan du tilpasse sidetoppen i temaet ditt." - -#: wp-admin/custom-header.php:103 -msgid "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." -msgstr "Du kan velge mellom standardbildene i temaet, eller et av dine egne. Du kan også tilpasse visningen av nettstedstittel og slagord." - -#: wp-admin/custom-header.php:111 -msgid "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." -msgstr "Noen temaer er utstyrt med flere toppbilder å velge blant. Hvis flere bilder er vist, kan du velge det du liker og klikke «Lagre innstillinger»-knappen." - -#: wp-admin/custom-header.php:112 -msgid "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." -msgstr "Hvis temaet har mer enn et standard toppbilde, og du selv har lastet opp flere toppbilder, har du nå muligheten til å la WordPress vise disse i tilfeldig på hver side av nettstedet. Klikk «Tilfeldig»-knappen ved siden av seksjonen for Last opp bilde eller Standardbilde for å få det til." +#: wp-admin/tools.php:22 +msgid "Categories have hierarchy, meaning that you can nest sub-categories. Tags do not have hierarchy and cannot be nested. Sometimes people start out using one on their posts, then later realize that the other would work better for their content." +msgstr "Kategorier har hierarki, som betyr at du kan lage underkategorier. Stikkord har ikke hierarki, og du kan derfor ikke lage «understikkord». Iblant starter folk med å bruke en type klassifisering av sine innlegg, men finner så senere ut at den andre typen fungerer bedre for deres innhold." #: wp-admin/custom-header.php:120 msgid "For most themes, the header text is your Site Title and Tagline, as defined in the General Settings section." msgstr "For de fleste temaer er topptekst din nettstedstittel og slagord, som du tilpasser under Generelle innstillinger.." -#: wp-admin/install.php:250 wp-admin/install.php:263 +#: wp-admin/custom-header.php:112 +msgid "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." +msgstr "Hvis temaet har mer enn et standard toppbilde, og du selv har lastet opp flere toppbilder, har du nå muligheten til å la WordPress vise disse i tilfeldig på hver side av nettstedet. Klikk «Tilfeldig»-knappen ved siden av seksjonen for Last opp bilde eller Standardbilde for å få det til." + +#: wp-admin/custom-header.php:111 +msgid "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." +msgstr "Noen temaer er utstyrt med flere toppbilder å velge blant. Hvis flere bilder er vist, kan du velge det du liker og klikke «Lagre innstillinger»-knappen." + +#: wp-admin/custom-header.php:103 +msgid "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." +msgstr "Du kan velge mellom standardbildene i temaet, eller et av dine egne. Du kan også tilpasse visningen av nettstedstittel og slagord." + +#: wp-admin/custom-header.php:102 +msgid "This screen is used to customize the header section of your theme." +msgstr "I dette skjermbildet kan du tilpasse sidetoppen i temaet ditt." + +#: wp-admin/install.php:254 wp-admin/install.php:267 msgid "Configuration Error" msgstr "Konfigurasjonsfeil" @@ -4647,29 +4787,29 @@ msgstr "Konfigurasjonsfeil" msgid "Revert to the Browser Uploader by clicking the link below the drag and drop box." msgstr "Gå tilbake til Nettleseropplasting ved å klikke på lenken nedenfor dra-og-slipp-boksen." -#: wp-admin/users.php:429 -msgid "User deleted." -msgstr "Bruker slettet." - #. translators: %s: edit page url -#: wp-admin/users.php:438 +#: wp-admin/users.php:449 msgid "New user created. Edit user" msgstr "Ny bruker opprettet. Rediger bruker." -#: wp-admin/includes/class-core-upgrader.php:36 wp-admin/includes/file.php:668 -#: wp-admin/includes/file.php:774 +#: wp-admin/users.php:440 +msgid "User deleted." +msgstr "Bruker slettet." + +#: wp-admin/includes/class-core-upgrader.php:36 wp-admin/includes/file.php:669 +#: wp-admin/includes/file.php:775 msgid "Could not copy files. You may have run out of disk space." msgstr "Kunne ikke kopiere filer. Du kan ha gått tom for lagringsplass." -#: wp-admin/includes/theme-install.php:60 -msgid "Search for themes by keyword." -msgstr "Søk blant temaer etter nøkkelord." - #: wp-admin/includes/theme-install.php:102 msgid "Find a theme based on specific features." msgstr "Finn et tema basert på spesielle egenskaper." -#: wp-admin/setup-config.php:174 +#: wp-admin/includes/theme-install.php:60 +msgid "Search for themes by keyword." +msgstr "Søk blant temaer etter nøkkelord." + +#: wp-admin/setup-config.php:172 msgid "In all likelihood, these items were supplied to you by your Web Host. If you don’t have this information, then you will need to contact them before you can continue. If you’re all ready…" msgstr "Sannsynligvis har du fått denne informasjonen fra din web-admin. Hvis du ikke har denne informasjonen, må du kontakte dem før du kan fortsette. Hvis du er klar…" @@ -4677,141 +4817,140 @@ msgstr "Sannsynligvis har du fått denne informasjonen fra din web-admin. Hvis d msgid "This theme is broken." msgstr "Dette temaet er ødelagt." -#: wp-admin/custom-background.php:281 -msgid "Set as background" -msgstr "Bruk som bakgrunnsbilde" - #: wp-admin/custom-header.php:593 msgid "Set as header" msgstr "Bruk som topptekst" +#: wp-admin/custom-background.php:330 +msgid "Set as background" +msgstr "Bruk som bakgrunnsbilde" + #: wp-admin/includes/class-theme-upgrader-skin.php:55 msgid "Customize “%s”" msgstr "Tilpass temaet «%s»" -#: wp-admin/about.php:43 -msgid "About" -msgstr "Om" +#: wp-admin/install.php:159 wp-admin/user-edit.php:384 +#: wp-admin/user-edit.php:429 wp-admin/user-new.php:405 +#: wp-admin/user-new.php:409 wp-admin/user-new.php:429 +#: wp-admin/user-new.php:452 +msgid "(required)" +msgstr "(obligatorisk)" -#: wp-admin/edit-comments.php:265 wp-admin/edit-comments.php:271 -msgid "Edit comment" -msgstr "Rediger kommentar" +#: wp-admin/link.php:104 +msgid "Edit Link" +msgstr "Rediger lenke" -#: wp-admin/edit-form-advanced.php:553 -msgid "Enter title here" -msgstr "Skriv tittel her" +#: wp-admin/includes/user.php:127 +msgid "ERROR: Please enter a nickname." +msgstr "FEIL: Vennligst skriv inn et kallenavn." -#: wp-admin/edit-form-advanced.php:627 -msgid "Word count: %s" -msgstr "Antall ord: %s" +#: wp-admin/includes/class-wp-list-table.php:1069 +#: wp-admin/includes/nav-menu.php:575 wp-admin/includes/nav-menu.php:774 +#: wp-admin/update-core.php:246 wp-admin/update-core.php:322 +#: wp-admin/update-core.php:354 wp-admin/update-core.php:393 +msgid "Select All" +msgstr "Velg alle" -#: wp-admin/edit-link-form.php:29 wp-admin/includes/meta-boxes.php:986 -msgid "Target" -msgstr "Mål" +#: wp-admin/export.php:261 wp-admin/includes/media.php:2244 +#: wp-admin/menu.php:49 wp-admin/menu.php:253 +msgid "Media" +msgstr "Media" -#: wp-admin/export.php:173 wp-admin/export.php:184 wp-admin/export.php:207 -#: wp-admin/export.php:226 wp-admin/export.php:249 -msgid "All" -msgstr "Alle" +#: wp-admin/includes/media.php:1230 wp-admin/includes/media.php:2614 +msgid "Enter a link URL or click above for presets." +msgstr "Skriv inn en lenke-URL eller klikk ovenfor for standardvalg." + +#: wp-admin/includes/media.php:1227 +msgid "Link URL" +msgstr "Lenke-URL" + +#: wp-admin/includes/image-edit.php:70 +msgid "Scale" +msgstr "Skaler" + +#: wp-admin/includes/meta-boxes.php:723 +msgid "No comments yet." +msgstr "Ingen kommentarer ennå." + +#: wp-admin/includes/dashboard.php:198 wp-admin/setup-config.php:219 +msgid "Submit" +msgstr "Send" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:423 +#: wp-admin/includes/class-wp-themes-list-table.php:236 +#: wp-admin/includes/plugin-install.php:568 +msgid "Version:" +msgstr "Versjon:" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:342 +#: wp-admin/theme-install.php:58 wp-admin/theme-install.php:332 +msgid "Collapse Sidebar" +msgstr "Trekk sammen sidekolonnen" + +#: wp-admin/includes/class-wp-plugins-list-table.php:386 +msgid "Plugin" +msgstr "Utvidelse" + +#: wp-admin/includes/media.php:2246 wp-admin/users.php:60 +msgid "Actions" +msgstr "Handlinger" + +#. translators: %s: Time since the last update +#: wp-admin/includes/class-wp-media-list-table.php:449 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:559 +#: wp-admin/includes/class-wp-posts-list-table.php:988 +#: wp-admin/includes/plugin-install.php:575 wp-admin/includes/revision.php:209 +#: wp-admin/includes/revision.php:251 +msgid "%s ago" +msgstr "%s siden" #: wp-admin/includes/class-wp-comments-list-table.php:300 #: wp-admin/includes/class-wp-comments-list-table.php:574 #: wp-admin/includes/class-wp-media-list-table.php:144 #: wp-admin/includes/class-wp-media-list-table.php:715 #: wp-admin/includes/class-wp-posts-list-table.php:397 -#: wp-admin/includes/class-wp-posts-list-table.php:1231 +#: wp-admin/includes/class-wp-posts-list-table.php:1247 msgid "Restore" msgstr "Gjenopprett" -#. translators: %s: Time since the last update -#: wp-admin/includes/class-wp-media-list-table.php:449 -#: wp-admin/includes/class-wp-plugin-install-list-table.php:563 -#: wp-admin/includes/class-wp-posts-list-table.php:972 -#: wp-admin/includes/plugin-install.php:547 wp-admin/includes/revision.php:209 -#: wp-admin/includes/revision.php:251 -msgid "%s ago" -msgstr "%s siden" +#: wp-admin/export.php:173 wp-admin/export.php:184 wp-admin/export.php:207 +#: wp-admin/export.php:226 wp-admin/export.php:249 +msgid "All" +msgstr "Alle" -#: wp-admin/includes/media.php:2238 wp-admin/users.php:60 -msgid "Actions" -msgstr "Handlinger" +#: wp-admin/edit-link-form.php:29 wp-admin/includes/meta-boxes.php:996 +msgid "Target" +msgstr "Mål" -#: wp-admin/includes/class-wp-plugins-list-table.php:385 -msgid "Plugin" -msgstr "Utvidelse" +#: wp-admin/edit-form-advanced.php:635 +msgid "Word count: %s" +msgstr "Antall ord: %s" -#: wp-admin/includes/class-wp-theme-install-list-table.php:420 -#: wp-admin/includes/class-wp-themes-list-table.php:235 -#: wp-admin/includes/plugin-install.php:540 -msgid "Version:" -msgstr "Versjon:" +#: wp-admin/edit-form-advanced.php:561 +msgid "Enter title here" +msgstr "Skriv tittel her" -#: wp-admin/includes/dashboard.php:198 wp-admin/setup-config.php:221 -msgid "Submit" -msgstr "Send" +#: wp-admin/edit-comments.php:281 wp-admin/edit-comments.php:287 +msgid "Edit comment" +msgstr "Rediger kommentar" -#: wp-admin/includes/meta-boxes.php:712 -msgid "No comments yet." -msgstr "Ingen kommentarer ennå." +#: wp-admin/about.php:28 +msgid "About" +msgstr "Om" -#: wp-admin/includes/image-edit.php:70 -msgid "Scale" -msgstr "Skaler" - -#: wp-admin/includes/media.php:1219 -msgid "Link URL" -msgstr "Lenke-URL" - -#: wp-admin/includes/media.php:1222 wp-admin/includes/media.php:2606 -msgid "Enter a link URL or click above for presets." -msgstr "Skriv inn en lenke-URL eller klikk ovenfor for standardvalg." - -#: wp-admin/export.php:261 wp-admin/includes/media.php:2236 -#: wp-admin/menu.php:49 wp-admin/menu.php:253 -msgid "Media" -msgstr "Media" - -#: wp-admin/includes/class-wp-press-this.php:880 -#: wp-admin/includes/class-wp-press-this.php:929 -#: wp-admin/includes/meta-boxes.php:434 wp-admin/includes/meta-boxes.php:969 -msgid "Add" -msgstr "Legg til" - -#: wp-admin/includes/class-wp-list-table.php:1070 -#: wp-admin/includes/nav-menu.php:566 wp-admin/includes/nav-menu.php:764 -#: wp-admin/update-core.php:249 wp-admin/update-core.php:325 -#: wp-admin/update-core.php:357 wp-admin/update-core.php:396 -msgid "Select All" -msgstr "Velg alle" - -#: wp-admin/includes/user.php:113 -msgid "ERROR: Please enter a nickname." -msgstr "FEIL: Vennligst skriv inn et kallenavn." - -#: wp-admin/link.php:104 -msgid "Edit Link" -msgstr "Rediger lenke" - -#: wp-admin/install.php:159 wp-admin/user-edit.php:349 -#: wp-admin/user-edit.php:394 wp-admin/user-new.php:395 -#: wp-admin/user-new.php:399 wp-admin/user-new.php:419 -#: wp-admin/user-new.php:442 -msgid "(required)" -msgstr "(obligatorisk)" - -#: wp-admin/includes/plugin-install.php:261 +#: wp-admin/includes/plugin-install.php:283 #: wp-admin/includes/theme-install.php:67 msgid "Keyword" msgstr "Nøkkelord" -#: wp-admin/includes/class-theme-upgrader.php:75 -msgid "This theme requires a parent theme. Checking if it is installed…" -msgstr "Temaet forutsetter et foreldretema. Sjekker om det er installert…" +#: wp-admin/includes/class-theme-upgrader.php:82 +msgid "The parent theme could not be found. You will need to install the parent theme, %s, before you can use this child theme." +msgstr "Foreldretemaet ble ikke funnet. Du må installere foreldretemaet, %s, før du kan bruke dette dattertemaet." #. translators: 1: theme name, 2: version -#: wp-admin/includes/class-theme-upgrader.php:77 -msgid "Preparing to install %1$s %2$s…" -msgstr "Forbereder installasjon av %1$s %2$s…" +#: wp-admin/includes/class-theme-upgrader.php:81 +msgid "Successfully installed the parent theme, %1$s %2$s." +msgstr "Vellykket installasjon av foreldretema, %1$s %2$s." #. translators: 1: theme name, 2: version #: wp-admin/includes/class-theme-upgrader.php:79 @@ -4819,31 +4958,31 @@ msgid "The parent theme, %1$s %2$s, is currently installed." msgstr "Foreldretemaet, %1$s %2$s, er installert." #. translators: 1: theme name, 2: version -#: wp-admin/includes/class-theme-upgrader.php:81 -msgid "Successfully installed the parent theme, %1$s %2$s." -msgstr "Vellykket installasjon av foreldretema, %1$s %2$s." +#: wp-admin/includes/class-theme-upgrader.php:77 +msgid "Preparing to install %1$s %2$s…" +msgstr "Forbereder installasjon av %1$s %2$s…" -#: wp-admin/includes/class-theme-upgrader.php:82 -msgid "The parent theme could not be found. You will need to install the parent theme, %s, before you can use this child theme." -msgstr "Foreldretemaet ble ikke funnet. Du må installere foreldretemaet, %s, før du kan bruke dette dattertemaet." +#: wp-admin/includes/class-theme-upgrader.php:75 +msgid "This theme requires a parent theme. Checking if it is installed…" +msgstr "Temaet forutsetter et foreldretema. Sjekker om det er installert…" + +#: wp-admin/custom-header.php:665 +msgid "Show header text with your image." +msgstr "Vis tittelfelt sammen med bildet." #: wp-admin/custom-header.php:118 wp-admin/custom-header.php:657 #: wp-admin/custom-header.php:662 msgid "Header Text" msgstr "Tittelfelt" -#: wp-admin/custom-header.php:665 -msgid "Show header text with your image." -msgstr "Vis tittelfelt sammen med bildet." - #. translators: 1: theme name, 2: theme details URL, 3: additional link #. attributes, 4: version number, 5: update URL, 6: additional link attributes #. translators: 1: plugin name, 2: details URL, 3: additional link attributes, #. 4: version number, 5: update URL, 6: additional link attributes #. translators: 1: theme name, 2: details URL, 3: additional link attributes, #. 4: version number, 5: update URL, 6: additional link attributes -#: wp-admin/includes/theme.php:201 wp-admin/includes/update.php:394 -#: wp-admin/includes/update.php:539 +#: wp-admin/includes/theme.php:203 wp-admin/includes/update.php:402 +#: wp-admin/includes/update.php:547 msgid "There is a new version of %1$s available. View version %4$s details or update now." msgstr "Det er en ny versjon av %1$s tilgjengelig. Se detaljer for versjon %4$s eller oppdater nå." @@ -4851,259 +4990,258 @@ msgstr "Det er en ny versjon av %1$s tilgjengelig. Se deta msgid "By %s." msgstr "Av %s." -#: wp-admin/includes/meta-boxes.php:704 -msgid "Add comment" -msgstr "Legg til kommentar" - -#: wp-admin/includes/template.php:397 -msgid "Add new Comment" -msgstr "Legg til ny kommentar" - -#: wp-admin/includes/template.php:427 +#: wp-admin/includes/template.php:428 msgid "Add Comment" msgstr "Legg til kommentar" -#. Plugin Name of the plugin/theme -msgid "Hello Dolly" -msgstr "Hello Dolly" +#: wp-admin/includes/template.php:398 +msgid "Add new Comment" +msgstr "Legg til ny kommentar" -#. Description of the plugin/theme -msgid "This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from Hello, Dolly in the upper right of your admin screen on every page." -msgstr "Dette er ikke bare en utvidelse, men symboliserer håp og entusiasme for en hel generasjon - summert i to ord, som ble mest berømt av Louis Armstrong: Hello Dolly. Etter aktivering av utvidelsen vil tilfeldige strofer fra sangteksten i Hello Dolly bli vist øverst til høyre i skjermbildet." - -#. Author of the plugin/theme -msgid "Matt Mullenweg" -msgstr "Matt Mullenweg" +#: wp-admin/includes/meta-boxes.php:715 +msgid "Add comment" +msgstr "Legg til kommentar" #. Author URI of the plugin/theme msgid "http://ma.tt/" msgstr "http://ma.tt/" -#: wp-admin/index.php:86 +#. Author of the plugin/theme +msgid "Matt Mullenweg" +msgstr "Matt Mullenweg" + +#. Description of the plugin/theme +msgid "This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from Hello, Dolly in the upper right of your admin screen on every page." +msgstr "Dette er ikke bare en utvidelse, men symboliserer håp og entusiasme for en hel generasjon - summert i to ord, som ble mest berømt av Louis Armstrong: Hello Dolly. Etter aktivering av utvidelsen vil tilfeldige strofer fra sangteksten i Hello Dolly bli vist øverst til høyre i skjermbildet." + +#. Plugin Name of the plugin/theme +msgid "Hello Dolly" +msgstr "Hello Dolly" + +#: wp-admin/index.php:85 msgid "Welcome — Shows links for some of the most common tasks when setting up a new site." msgstr "Velkommen – Viser lenker for noen av de vanligste tingene som man gjør når man setter opp et nytt nettsted." +#. translators: 1: month number (01, 02, etc.), 2: month abbreviation +#: wp-admin/includes/template.php:720 +msgid "%1$s-%2$s" +msgstr "%1$s-%2$s" + #. translators: 1: theme name, 2: theme details URL, 3: additional link #. attributes, 4: version number #. translators: 1: theme name, 2: details URL, 3: additional link attributes, #. 4: version number -#: wp-admin/includes/theme.php:190 wp-admin/includes/update.php:528 +#: wp-admin/includes/theme.php:192 wp-admin/includes/update.php:536 msgid "There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this theme." msgstr "Det er en ny versjon av %1$s tilgjengelig. Vis detaljene for versjon %4$s. Automatisk oppdatering er ikke tilgjengelig for dette temaet." -#. translators: 1: month number (01, 02, etc.), 2: month abbreviation -#: wp-admin/includes/template.php:719 -msgid "%1$s-%2$s" -msgstr "%1$s-%2$s" - -#: wp-admin/install.php:110 wp-admin/install.php:311 +#: wp-admin/install.php:110 wp-admin/install.php:315 msgctxt "Howdy" msgid "Welcome" msgstr "Velkommen" +#: wp-admin/ms-delete-site.php:84 +msgid "Thank you. Please check your email for a link to confirm your action. Your site will not be deleted until this link is clicked." +msgstr "Takk. Vennligst sjekk e-posten din for en lenke til å bekrefte forespørselen. Nettstedet ditt vil ikke bli slettet før du klikker på lenken." + #: wp-admin/ms-delete-site.php:88 -msgid "I'm sure I want to permanently disable my site, and I am aware I can never get it back or use %s again." -msgstr "Jeg er sikker på at jeg vil permanent fjerne nettstedet og er klar over at jeg ikke kan få det tilbake eller bruke %s igjen." - -#: wp-admin/ms-delete-site.php:89 -msgid "Delete My Site Permanently" -msgstr "Slett mitt nettsted permanent" - -#: wp-admin/ms-delete-site.php:75 -msgid "Delete My Site" -msgstr "Slett mitt nettsted" - -#: wp-admin/ms-delete-site.php:83 -msgid "Remember, once deleted your site cannot be restored." -msgstr "Husk at når du har slettet nettstedet kan det ikke gjenopprettes." - -#: wp-admin/ms-delete-site.php:23 -msgid "I'm sorry, the link you clicked is stale. Please select another option." -msgstr "Beklager. Lenken du trykte på er dårlig. Vennligst velg noe annet." +msgid "If you do not want to use your %s site any more, you can delete it using the form below. When you click Delete My Site Permanently you will be sent an email with a link in it. Click on this link to delete your site." +msgstr "Hvis du ikke vil bruke ditt nettsted %s mer kan du slette det ved å bruke skjemaet under. En e-post med en lenke i vil bli sendt til deg når du klikker Slett nettstedet mitt permanent. Klikk på lenken i e-posten for å slette nettstedet ditt." #: wp-admin/ms-delete-site.php:21 msgid "Thank you for using %s, your site has been deleted. Happy trails to you until we meet again." msgstr "Takk for at du brukte %s. Nettstedet ditt har blitt slettet. God tur videre til vi møtes igjen." -#: wp-admin/ms-delete-site.php:82 -msgid "If you do not want to use your %s site any more, you can delete it using the form below. When you click Delete My Site Permanently you will be sent an email with a link in it. Click on this link to delete your site." -msgstr "Hvis du ikke vil bruke ditt nettsted %s mer kan du slette det ved å bruke skjemaet under. En e-post med en lenke i vil bli sendt til deg når du klikker Slett nettstedet mitt permanent. Klikk på lenken i e-posten for å slette nettstedet ditt." +#: wp-admin/ms-delete-site.php:23 +msgid "I'm sorry, the link you clicked is stale. Please select another option." +msgstr "Beklager. Lenken du trykte på er dårlig. Vennligst velg noe annet." -#: wp-admin/ms-delete-site.php:78 -msgid "Thank you. Please check your email for a link to confirm your action. Your site will not be deleted until this link is clicked." -msgstr "Takk. Vennligst sjekk e-posten din for en lenke til å bekrefte forespørselen. Nettstedet ditt vil ikke bli slettet før du klikker på lenken." +#: wp-admin/ms-delete-site.php:89 +msgid "Remember, once deleted your site cannot be restored." +msgstr "Husk at når du har slettet nettstedet kan det ikke gjenopprettes." -#: wp-admin/includes/ms.php:36 -msgid "This file is too big. Files must be less than %1$s KB in size." -msgstr "Denne filen er for stor. Filer må være mindre enn %1$s kB stor." +#: wp-admin/ms-delete-site.php:77 +msgid "Delete My Site" +msgstr "Slett mitt nettsted" -#: wp-admin/includes/ms.php:40 -msgid "You have used your space quota. Please delete files before uploading." -msgstr "Du har brukt opp lagringskvoten din. Vennligst slett filer før du laster opp nye." +#: wp-admin/ms-delete-site.php:101 +msgid "Delete My Site Permanently" +msgstr "Slett mitt nettsted permanent" -#: wp-admin/includes/ms.php:317 -msgid "[%s] New Admin Email Address" -msgstr "[%s] Ny admin-e-postadresse" +#. translators: %s: site address +#: wp-admin/ms-delete-site.php:97 +msgid "I'm sure I want to permanently disable my site, and I am aware I can never get it back or use %s again." +msgstr "Jeg er sikker på at jeg vil permanent fjerne nettstedet og er klar over at jeg ikke kan få det tilbake eller bruke %s igjen." -#. translators: %s: New email address -#: wp-admin/includes/ms.php:413 -msgid "Your email address has not been updated yet. Please check your inbox at %s for a confirmation email." -msgstr "Din e-postadresse har ikke blitt oppdatert ennå. Vennligst sjekk din innboks på %s for en bekreftelsese-post." +#: wp-admin/includes/ms.php:744 +msgid "English" +msgstr "Engelsk" -#. translators: Gigabytes -#: wp-admin/includes/ms.php:458 -msgid "GB" -msgstr "GB" +#. translators: 1: Required disk space in kilobytes +#: wp-admin/includes/ms.php:33 +msgid "Not enough space to upload. %1$s KB needed." +msgstr "Ikke nok plass til å laste opp. %1$s KB trengs." -#. translators: Megabytes -#: wp-admin/includes/ms.php:462 -msgid "MB" -msgstr "MB" +#. translators: My sites label +#: wp-admin/includes/ms.php:836 +msgid "Primary Site" +msgstr "Primærnettsted" -#: wp-admin/includes/ms.php:396 -msgid "[%s] New Email Address" -msgstr "[%s] Ny e-postadresse" +#: wp-admin/includes/ms.php:730 +msgid "American English" +msgstr "Amerikansk engelsk" + +#: wp-admin/includes/ms.php:689 +msgid "View Site" +msgstr "Se nettsted" + +#: wp-admin/includes/ms.php:734 +msgid "British English" +msgstr "Britisk engelsk" + +#: wp-admin/includes/ms.php:522 +msgid "MB (Leave blank for network default)" +msgstr "MB (La være blank for nettverksstandard)" + +#: wp-admin/includes/ms.php:677 wp-admin/includes/ms.php:679 +msgid "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." +msgstr "Du forsøkte å få tilgang til kontrollpanelet til \"%1$s\", men du har for tiden ikke har rettigheter til dette nettstedet. Hvis du mener at du skal kunne få tilgang til \"%1$s\", vennligst kontakt din nettverksadministrator." + +#: wp-admin/includes/ms.php:680 +msgid "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." +msgstr "Hvis du kom til denne skjermen ved en feil og egentlig vil besøke et av dine nettsteder, kanskje noen av snarveiene her kan hjelpe deg videre." + +#: wp-admin/includes/ms.php:682 +msgid "Your Sites" +msgstr "Dine nettsteder" + +#: wp-admin/includes/ms.php:688 +msgid "Visit Dashboard" +msgstr "Gå til kontrollpanel" #: wp-admin/includes/ms-deprecated.php:33 msgid "Sorry, you must delete files before you can upload any more." msgstr "Beklager, du må slette filer før du kan laste opp flere." -#: wp-admin/includes/ms.php:671 -msgid "Visit Dashboard" -msgstr "Gå til kontrollpanel" +#: wp-admin/includes/ms.php:406 +msgid "[%s] New Email Address" +msgstr "[%s] Ny e-postadresse" -#: wp-admin/includes/ms.php:665 -msgid "Your Sites" -msgstr "Dine nettsteder" +#. translators: Megabytes +#: wp-admin/includes/ms.php:476 +msgid "MB" +msgstr "MB" -#: wp-admin/includes/ms.php:663 -msgid "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." -msgstr "Hvis du kom til denne skjermen ved en feil og egentlig vil besøke et av dine nettsteder, kanskje noen av snarveiene her kan hjelpe deg videre." +#. translators: Gigabytes +#: wp-admin/includes/ms.php:472 +msgid "GB" +msgstr "GB" -#: wp-admin/includes/ms.php:660 wp-admin/includes/ms.php:662 -msgid "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." -msgstr "Du forsøkte å få tilgang til kontrollpanelet til \"%1$s\", men du har for tiden ikke har rettigheter til dette nettstedet. Hvis du mener at du skal kunne få tilgang til \"%1$s\", vennligst kontakt din nettverksadministrator." +#. translators: %s: New email address +#: wp-admin/includes/ms.php:427 +msgid "Your email address has not been updated yet. Please check your inbox at %s for a confirmation email." +msgstr "Din e-postadresse har ikke blitt oppdatert ennå. Vennligst sjekk din innboks på %s for en bekreftelsese-post." -#: wp-admin/includes/ms.php:505 -msgid "MB (Leave blank for network default)" -msgstr "MB (La være blank for nettverksstandard)" +#: wp-admin/includes/ms.php:321 +msgid "[%s] New Admin Email Address" +msgstr "[%s] Ny admin-e-postadresse" -#: wp-admin/includes/ms.php:717 -msgid "British English" -msgstr "Britisk engelsk" +#: wp-admin/includes/ms.php:42 +msgid "You have used your space quota. Please delete files before uploading." +msgstr "Du har brukt opp lagringskvoten din. Vennligst slett filer før du laster opp nye." -#: wp-admin/includes/ms.php:672 -msgid "View Site" -msgstr "Se nettsted" - -#: wp-admin/includes/ms.php:713 -msgid "American English" -msgstr "Amerikansk engelsk" - -#. translators: My sites label -#: wp-admin/includes/ms.php:819 -msgid "Primary Site" -msgstr "Primærnettsted" - -#: wp-admin/includes/ms.php:32 -msgid "Not enough space to upload. %1$s KB needed." -msgstr "Ikke nok plass til å laste opp. %1$s KB trengs." - -#: wp-admin/includes/ms.php:727 -msgid "English" -msgstr "Engelsk" - -#: wp-admin/my-sites.php:72 -msgid "You must be a member of at least one site to use this page." -msgstr "Du må være medlem på minst ett nettsted for å bruke denne siden." - -#: wp-admin/my-sites.php:103 -msgid "Global Settings" -msgstr "Globale innstillinger" +#. translators: 1: Maximum allowed file size in kilobytes +#: wp-admin/includes/ms.php:38 +msgid "This file is too big. Files must be less than %1$s KB in size." +msgstr "Denne filen er for stor. Filer må være mindre enn %1$s kB stor." #: wp-admin/my-sites.php:31 msgid "The primary site you chose does not exist." msgstr "Hovednettstedet du valgte, finnes ikke." -#: wp-admin/my-sites.php:43 -msgid "Up until WordPress version 3.0, what is now called a Multisite Network had to be installed separately as WordPress MU (multi-user)." -msgstr "Frem til WordPress versjon 3.0, måtte det som nå heter Nettstedsnettverk bli installert separat som WordPress MU (multi-user)." +#: wp-admin/my-sites.php:102 +msgid "Global Settings" +msgstr "Globale innstillinger" -#: wp-admin/setup-config.php:51 -msgid "Sorry, I need a wp-config-sample.php file to work from. Please re-upload this file to your WordPress installation." -msgstr "Beklager, vi trenger filen wp-config-sample.php for å ha noe å jobbe med. Venligst last opp denne igjen til din WordPress-installasjon." +#: wp-admin/my-sites.php:71 +msgid "You must be a member of at least one site to use this page." +msgstr "Du må være medlem på minst ett nettsted for å bruke denne siden." -#. translators: %s: install.php -#: wp-admin/setup-config.php:57 -msgid "The file 'wp-config.php' already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now." -msgstr "Filen 'wp-config.php' finnes allerede. Hvis du må tilbakestille noen konfigurasjoner i denne filen, vennligst slett den først. Du kan prøve å installere nå." +#: wp-admin/setup-config.php:372 wp-admin/setup-config.php:404 +msgid "Run the install" +msgstr "Kjør installering" -#. translators: %s: install.php -#: wp-admin/setup-config.php:66 -msgid "The file 'wp-config.php' already exists one level above your WordPress installation. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now." -msgstr "Filen «wp-config.php» finnes allerede i mappen over din WordPress-installasjon. Hvis du må lage en ny, vennligst slett denne først. Du kan prøve å installere nå." +#: wp-admin/setup-config.php:214 +msgid "If you want to run multiple WordPress installations in a single database, change this." +msgstr "Hvis du vil kjøre flere WordPress-installasjoner i samme database, må du endre dette." -#: wp-admin/setup-config.php:100 -msgid "WordPress › Setup Configuration File" -msgstr "WordPress › Lag konfigurasjonsfil" +#: wp-admin/setup-config.php:212 +msgid "Table Prefix" +msgstr "Tabellprefiks" -#: wp-admin/setup-config.php:147 -msgid "Welcome to WordPress. Before getting started, we need some information on the database. You will need to know the following items before proceeding." -msgstr "Velkommen til WordPress. Før vi starter, trenger vi litt informasjon om databasen. Du må vite følgende før vi fortsetter." +#: wp-admin/setup-config.php:204 +msgid "Database Host" +msgstr "Databasetjener" -#: wp-admin/setup-config.php:149 -msgid "Database name" -msgstr "Navn på databasen" - -#: wp-admin/setup-config.php:150 -msgid "Database username" -msgstr "Databasebruker" - -#: wp-admin/setup-config.php:151 -msgid "Database password" -msgstr "Databasepassord" - -#: wp-admin/setup-config.php:152 -msgid "Database host" -msgstr "Database-tjener (host)" - -#: wp-admin/setup-config.php:153 -msgid "Table prefix (if you want to run more than one WordPress in a single database)" -msgstr "Tabellprefiks (hvis du vil kjøre mer enn én WordPress-installasjon i en enkelt database)" - -#: wp-admin/setup-config.php:176 -msgid "Let’s go!" -msgstr "La oss fortsette!" - -#: wp-admin/setup-config.php:191 -msgid "Database Name" -msgstr "Databasenavn" - -#: wp-admin/setup-config.php:197 -msgctxt "example username" -msgid "username" -msgstr "brukernavn" - -#: wp-admin/setup-config.php:202 +#: wp-admin/setup-config.php:200 msgctxt "example password" msgid "password" msgstr "passord" -#: wp-admin/setup-config.php:206 -msgid "Database Host" -msgstr "Databasetjener" +#: wp-admin/setup-config.php:195 +msgctxt "example username" +msgid "username" +msgstr "brukernavn" -#: wp-admin/setup-config.php:214 -msgid "Table Prefix" -msgstr "Tabellprefiks" +#: wp-admin/setup-config.php:189 +msgid "Database Name" +msgstr "Databasenavn" -#: wp-admin/setup-config.php:216 -msgid "If you want to run multiple WordPress installations in a single database, change this." -msgstr "Hvis du vil kjøre flere WordPress-installasjoner i samme database, må du endre dette." +#: wp-admin/setup-config.php:174 +msgid "Let’s go!" +msgstr "La oss fortsette!" -#: wp-admin/setup-config.php:375 wp-admin/setup-config.php:407 -msgid "Run the install" -msgstr "Kjør installering" +#: wp-admin/setup-config.php:151 +msgid "Table prefix (if you want to run more than one WordPress in a single database)" +msgstr "Tabellprefiks (hvis du vil kjøre mer enn én WordPress-installasjon i en enkelt database)" + +#: wp-admin/setup-config.php:150 +msgid "Database host" +msgstr "Database-tjener (host)" + +#: wp-admin/setup-config.php:149 +msgid "Database password" +msgstr "Databasepassord" + +#: wp-admin/setup-config.php:148 +msgid "Database username" +msgstr "Databasebruker" + +#: wp-admin/setup-config.php:147 +msgid "Database name" +msgstr "Navn på databasen" + +#: wp-admin/setup-config.php:145 +msgid "Welcome to WordPress. Before getting started, we need some information on the database. You will need to know the following items before proceeding." +msgstr "Velkommen til WordPress. Før vi starter, trenger vi litt informasjon om databasen. Du må vite følgende før vi fortsetter." + +#: wp-admin/setup-config.php:98 +msgid "WordPress › Setup Configuration File" +msgstr "WordPress › Lag konfigurasjonsfil" + +#. translators: %s: install.php +#: wp-admin/setup-config.php:64 +msgid "The file 'wp-config.php' already exists one level above your WordPress installation. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now." +msgstr "Filen «wp-config.php» finnes allerede i mappen over din WordPress-installasjon. Hvis du må lage en ny, vennligst slett denne først. Du kan prøve å installere nå." + +#. translators: %s: install.php +#: wp-admin/setup-config.php:55 +msgid "The file 'wp-config.php' already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now." +msgstr "Filen 'wp-config.php' finnes allerede. Hvis du må tilbakestille noen konfigurasjoner i denne filen, vennligst slett den først. Du kan prøve å installere nå." + +#: wp-admin/setup-config.php:49 +msgid "Sorry, I need a wp-config-sample.php file to work from. Please re-upload this file to your WordPress installation." +msgstr "Beklager, vi trenger filen wp-config-sample.php for å ha noe å jobbe med. Venligst last opp denne igjen til din WordPress-installasjon." #. translators: %s: wp-config.php #: wp-admin/maint/repair.php:37 @@ -5114,320 +5252,316 @@ msgstr "For å gi denne siden muligheten til å automatisk reparere databaseprob msgid "No comments awaiting moderation." msgstr "Ingen kommentarer venter på gjennomgang." -#: wp-admin/includes/plugin-install.php:465 +#: wp-admin/includes/plugin-install.php:492 msgctxt "Plugin installer section title" -msgid "Changelog" -msgstr "Endringslogg" +msgid "Screenshots" +msgstr "Skjermdumper" -#: wp-admin/includes/plugin-install.php:467 -msgctxt "Plugin installer section title" -msgid "Other Notes" -msgstr "Andre bemerkninger" - -#: wp-admin/includes/plugin-install.php:463 -msgctxt "Plugin installer section title" -msgid "FAQ" -msgstr "Vanlige spørsmål" - -#: wp-admin/includes/plugin-install.php:462 -msgctxt "Plugin installer section title" -msgid "Installation" -msgstr "Installasjon" - -#: wp-admin/includes/plugin-install.php:461 +#: wp-admin/includes/plugin-install.php:489 msgctxt "Plugin installer section title" msgid "Description" msgstr "Beskrivelse" -#: wp-admin/includes/plugin-install.php:464 +#: wp-admin/includes/plugin-install.php:490 msgctxt "Plugin installer section title" -msgid "Screenshots" -msgstr "Skjermdumper" +msgid "Installation" +msgstr "Installasjon" + +#: wp-admin/includes/plugin-install.php:491 +msgctxt "Plugin installer section title" +msgid "FAQ" +msgstr "Vanlige spørsmål" + +#: wp-admin/includes/plugin-install.php:495 +msgctxt "Plugin installer section title" +msgid "Other Notes" +msgstr "Andre bemerkninger" + +#: wp-admin/includes/plugin-install.php:493 +msgctxt "Plugin installer section title" +msgid "Changelog" +msgstr "Endringslogg" #: wp-admin/options-permalink.php:133 msgid "You should update your web.config now." msgstr "Du bør oppdatere din web.config nå." -#: wp-admin/includes/plugin-install.php:571 +#: wp-admin/includes/plugin-install.php:601 msgid "Plugin Homepage »" msgstr "Utvidelser →" -#: wp-admin/export.php:48 -msgid "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." -msgstr "Du kan eksportere en fil med innholdet på ditt nettsted for så å importere det til en annen installasjon eller plattform. Den eksporterte filen vil være i et XML-format som heter WXR. Innlegg, sider, kommentarer, egendefinerte felt, kategorier og stikkord kan inkluderes. Du kan velge om WXR-filen kun skal inkludere noen innlegg eller sider ved å sette filtrene til kun å eksportere bestemte kategorier, forfattere, måneder eller innlegg med en bestemt publiseringsstatus." - #. translators: 1: table name, 2: error message, #: wp-admin/maint/repair.php:117 msgid "Failed to repair the %1$s table. Error: %2$s" msgstr "Rettingen av tabellen %1$s feilet. Feil: %2$s" -#: wp-admin/user-new.php:176 +#: wp-admin/export.php:48 +msgid "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." +msgstr "Du kan eksportere en fil med innholdet på ditt nettsted for så å importere det til en annen installasjon eller plattform. Den eksporterte filen vil være i et XML-format som heter WXR. Innlegg, sider, kommentarer, egendefinerte felt, kategorier og stikkord kan inkluderes. Du kan velge om WXR-filen kun skal inkludere noen innlegg eller sider ved å sette filtrene til kun å eksportere bestemte kategorier, forfattere, måneder eller innlegg med en bestemt publiseringsstatus." + +#: wp-admin/user-new.php:183 msgid "New users will receive an email letting them know they’ve been added as a user for your site. This email will also contain their password. Check the box if you don’t want the user to receive a welcome email." msgstr "Nye brukere vil motta en e-post som forteller dem at de er lagt til på ditt nettsted. Denne e-posten inneholder også passord. Hvis du ikke vil sende e-post, må du merke dette i boksen." -#: wp-admin/plugins.php:429 +#: wp-admin/plugins.php:443 msgid "The plugin generated %d characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin." msgstr "Utvidelsen genererte %d tegn med uventet output under aktiveringen. Hvis du legger merke til «headers already sent»-meldinger, problemer med syndikerte strømmer eller andre feil, vennligst prøv å deaktivere eller slette denne utvidelsen." -#: wp-admin/users.php:42 -msgid "You can filter the list of users by User Role using the text links above the users list to show All, Administrator, Editor, Author, Contributor, or Subscriber. The default view is to show all users. Unused User Roles are not listed." -msgstr "Du kan filtrere listen med brukere etter brukerrolle ved hjelp av tekstlenkene over listen med brukere for å vise alle, administratorer, redaktører, forfattere, bidragsytere eller abonnenter. Standardvisningen er satt til alle brukere. Roller som ikke er i bruk, vises ikke i listen." - -#: wp-admin/update-core.php:56 -msgid "You are using a development version of WordPress. You can update to the latest nightly build automatically or download the nightly build and install it manually:" -msgstr "Du bruker en utviklingsversjon av WordPress. Du kan oppdatere til den nyeste versjonen automatisk, eller laste ned og installere den på egen hånd:" - -#: wp-admin/options-writing.php:30 -msgid "Post via email settings allow you to send your WordPress install an email with the content of your post. You must set up a secret email account with POP3 access to use this, and any mail received at this address will be posted, so it’s a good idea to keep this address very secret." -msgstr "Publiser med e-post-innstillinger lar deg sende en e-post til din WordPress-installasjon med innholdet i ditt innlegg. Du må sette opp en hemmelig e-post konto med POP3-tilgang for å bruke dette. All e-post mottatt på denne adressen vil bli publisert, så det er en god idé å holde adressen strengt hemmelig." - -#: wp-admin/includes/image-edit.php:227 -msgid "There are unsaved changes that will be lost. 'OK' to continue, 'Cancel' to return to the Image Editor." -msgstr "Det er ulagrede endringer som vil gå tapt. «OK» for å fortsette, «Avbryt» for å gå tilbake til bilderedigereren." - #: wp-admin/import.php:24 msgid "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." msgstr "I tidligere versjoner av WordPress var alle importfunksjoner innebygd. De er nå gjort om til utvidelser, fordi de fleste bruker dem lite eller ikke i det hele tatt." -#: wp-admin/themes.php:163 -msgid "The active theme is broken. Reverting to the default theme." -msgstr "Det aktiverte temaet er ufullstendig. Standardtemaet vil bli brukt i stedet." +#: wp-admin/includes/image-edit.php:227 +msgid "There are unsaved changes that will be lost. 'OK' to continue, 'Cancel' to return to the Image Editor." +msgstr "Det er ulagrede endringer som vil gå tapt. «OK» for å fortsette, «Avbryt» for å gå tilbake til bilderedigereren." -#: wp-admin/custom-header.php:787 wp-admin/custom-header.php:923 -#: wp-admin/custom-header.php:1234 -msgid "Image could not be processed. Please go back and try again." -msgstr "Bildet ble ikke behandlet. Vennligst gå tilbake og prøv igjen." +#: wp-admin/options-writing.php:30 +msgid "Post via email settings allow you to send your WordPress install an email with the content of your post. You must set up a secret email account with POP3 access to use this, and any mail received at this address will be posted, so it’s a good idea to keep this address very secret." +msgstr "Publiser med e-post-innstillinger lar deg sende en e-post til din WordPress-installasjon med innholdet i ditt innlegg. Du må sette opp en hemmelig e-post konto med POP3-tilgang for å bruke dette. All e-post mottatt på denne adressen vil bli publisert, så det er en god idé å holde adressen strengt hemmelig." + +#: wp-admin/users.php:42 +msgid "You can filter the list of users by User Role using the text links above the users list to show All, Administrator, Editor, Author, Contributor, or Subscriber. The default view is to show all users. Unused User Roles are not listed." +msgstr "Du kan filtrere listen med brukere etter brukerrolle ved hjelp av tekstlenkene over listen med brukere for å vise alle, administratorer, redaktører, forfattere, bidragsytere eller abonnenter. Standardvisningen er satt til alle brukere. Roller som ikke er i bruk, vises ikke i listen." + +#: wp-admin/user-new.php:317 +msgid "Enter the email address of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite." +msgstr "Skriv inn e-postadressen til en eksisterende bruker på nettverket for å invitere brukeren til dette nettstedet. Den personen vil få en e-post som spør om å bekrefte invitasjonen." + +#: wp-admin/plugin-editor.php:279 +msgid "Warning: Making changes to active plugins is not recommended. If your changes cause a fatal error, the plugin will be automatically deactivated." +msgstr "Advarsel: Det er ikke anbefalt å gjøre endringer i aktive utvidelser. Medfører dine endringer en alvorlig feil, så vil utvidelsen automatisk bli deaktivert." + +#: wp-admin/options-discussion.php:175 +msgid "An avatar is an image that follows you from weblog to weblog appearing beside your name when you comment on avatar enabled sites. Here you can enable the display of avatars for people who comment on your site." +msgstr "En Avatar er et bilde som følger deg fra nettsted til nettsted, og opptrer ved siden av navnet ditt når du kommenterer på nettsteder som har aktivert avatarer. Her kan du aktivere visningen av avatarer for de som kommenterer på ditt nettsted." + +#: wp-admin/user-new.php:321 +msgid "Enter the email address or username of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite." +msgstr "Skriv inn e-postadressen eller brukernavnet til en eksisterende bruker på nettverket for å invitere brukeren til dette nettstedet. Den personen vil få en e-post som spør om å bekrefte invitasjonen." + +#: wp-admin/maint/repair.php:165 +msgid "WordPress can also attempt to optimize the database. This improves performance in some situations. Repairing and optimizing the database can take a long time and the database will be locked while optimizing." +msgstr "WordPress kan også forsøke å optimere databasen. Dette kan i gitte situasjoner forbedre ytelsen til WordPress. Reparering og optimering av databasen kan ta lang tid og den forblir låst mens arbeidet pågår." + +#: wp-admin/maint/repair.php:162 +msgid "WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient." +msgstr "WordPress kan automatisk sjekke databasen for vanlige problemer og rette dem. Rettingen kan ta litt tid, så vennligst vis tålmodighet." + +#: wp-admin/maint/repair.php:153 +msgid "Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users." +msgstr "Ferdig med å reparere. Vennligst fjern følgende linje fra wp-config.php for å hindre at denne siden blir brukt av uautoriserte brukere." + +#: wp-admin/edit-form-advanced.php:202 +msgid "There is an autosave of this post that is more recent than the version below. View the autosave" +msgstr "Det finnes en autolagret versjon av dette innlegget som er nyere enn versjonen nedenfor. Se den autolagrede versjonen" #. translators: 1: table name, 2: error message, #: wp-admin/maint/repair.php:107 msgid "The %1$s table is not okay. It is reporting the following error: %2$s. WordPress will attempt to repair this table…" msgstr "Tabellen %1$s er ikke i orden. Den rapporterer følgende feil: %2$s. WordPress vil forsøke å rette denne tabellen…" -#: wp-admin/edit-form-advanced.php:202 -msgid "There is an autosave of this post that is more recent than the version below. View the autosave" -msgstr "Det finnes en autolagret versjon av dette innlegget som er nyere enn versjonen nedenfor. Se den autolagrede versjonen" +#: wp-admin/custom-header.php:787 wp-admin/custom-header.php:923 +#: wp-admin/custom-header.php:1234 +msgid "Image could not be processed. Please go back and try again." +msgstr "Bildet ble ikke behandlet. Vennligst gå tilbake og prøv igjen." -#: wp-admin/maint/repair.php:153 -msgid "Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users." -msgstr "Ferdig med å reparere. Vennligst fjern følgende linje fra wp-config.php for å hindre at denne siden blir brukt av uautoriserte brukere." +#: wp-admin/themes.php:163 +msgid "The active theme is broken. Reverting to the default theme." +msgstr "Det aktiverte temaet er ufullstendig. Standardtemaet vil bli brukt i stedet." -#: wp-admin/maint/repair.php:162 -msgid "WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient." -msgstr "WordPress kan automatisk sjekke databasen for vanlige problemer og rette dem. Rettingen kan ta litt tid, så vennligst vis tålmodighet." - -#: wp-admin/maint/repair.php:165 -msgid "WordPress can also attempt to optimize the database. This improves performance in some situations. Repairing and optimizing the database can take a long time and the database will be locked while optimizing." -msgstr "WordPress kan også forsøke å optimere databasen. Dette kan i gitte situasjoner forbedre ytelsen til WordPress. Reparering og optimering av databasen kan ta lang tid og den forblir låst mens arbeidet pågår." - -#: wp-admin/user-new.php:314 -msgid "Enter the email address or username of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite." -msgstr "Skriv inn e-postadressen eller brukernavnet til en eksisterende bruker på nettverket for å invitere brukeren til dette nettstedet. Den personen vil få en e-post som spør om å bekrefte invitasjonen." - -#: wp-admin/options-discussion.php:174 -msgid "An avatar is an image that follows you from weblog to weblog appearing beside your name when you comment on avatar enabled sites. Here you can enable the display of avatars for people who comment on your site." -msgstr "En Avatar er et bilde som følger deg fra nettsted til nettsted, og opptrer ved siden av navnet ditt når du kommenterer på nettsteder som har aktivert avatarer. Her kan du aktivere visningen av avatarer for de som kommenterer på ditt nettsted." - -#: wp-admin/plugin-editor.php:267 -msgid "Warning: Making changes to active plugins is not recommended. If your changes cause a fatal error, the plugin will be automatically deactivated." -msgstr "Advarsel: Det er ikke anbefalt å gjøre endringer i aktive utvidelser. Medfører dine endringer en alvorlig feil, så vil utvidelsen automatisk bli deaktivert." - -#: wp-admin/user-new.php:310 -msgid "Enter the email address of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite." -msgstr "Skriv inn e-postadressen til en eksisterende bruker på nettverket for å invitere brukeren til dette nettstedet. Den personen vil få en e-post som spør om å bekrefte invitasjonen." +#: wp-admin/user-edit.php:269 +msgid "Show Toolbar when viewing site" +msgstr "Vis verktøylinjen når du ser på nettstedet" #: wp-admin/credits.php:118 msgid "Contributing Developers" msgstr "Medvirkende utviklere" -#: wp-admin/user-edit.php:268 -msgid "Show Toolbar when viewing site" -msgstr "Vis verktøylinjen når du ser på nettstedet" - -#. translators: 1: WordPress version number, 2: plural number of bugs. Singular -#. security issue. -#: wp-admin/about.php:243 -msgid "Version %1$s addressed a security issue and fixed %2$s bug." -msgid_plural "Version %1$s addressed a security issue and fixed %2$s bugs." -msgstr[0] "Versjon %1$s tettet et sikkerhetshull og rettet %2$s programfeil." -msgstr[1] "Versjon %1$s tettet et sikkerhetshull og rettet %2$s programfeil." - -#. translators: %s: Codex URL -#: wp-admin/about.php:65 wp-admin/about.php:251 -msgid "For more information, see the release notes." -msgstr "For mer informasjon, se versjonsmerknadene." - -#. translators: 1: WordPress version number, 2: plural number of bugs. More -#. than one security issue. -#: wp-admin/about.php:63 wp-admin/about.php:247 -msgid "Version %1$s addressed some security issues and fixed %2$s bug." -msgid_plural "Version %1$s addressed some security issues and fixed %2$s bugs." -msgstr[0] "Versjon %1$s tettet noen sikkerhetshull og rettet %2$s programfeil." -msgstr[1] "Versjon %1$s tettet noen sikkerhetshull og rettet %2$s programfeil." - #. translators: 1: WordPress version number, 2: plural number of bugs. -#: wp-admin/about.php:239 +#: wp-admin/about.php:263 msgid "Version %1$s addressed %2$s bug." msgid_plural "Version %1$s addressed %2$s bugs." msgstr[0] "Versjon %1$s rettet %2$s programfeil." msgstr[1] "Versjon %1$s rettet %2$s programfeil." +#. translators: 1: WordPress version number, 2: plural number of bugs. More +#. than one security issue. +#: wp-admin/about.php:271 +msgid "Version %1$s addressed some security issues and fixed %2$s bug." +msgid_plural "Version %1$s addressed some security issues and fixed %2$s bugs." +msgstr[0] "Versjon %1$s tettet noen sikkerhetshull og rettet %2$s programfeil." +msgstr[1] "Versjon %1$s tettet noen sikkerhetshull og rettet %2$s programfeil." + +#. translators: %s: Codex URL +#: wp-admin/about.php:275 +msgid "For more information, see the release notes." +msgstr "For mer informasjon, se versjonsmerknadene." + +#. translators: 1: WordPress version number, 2: plural number of bugs. Singular +#. security issue. +#: wp-admin/about.php:267 +msgid "Version %1$s addressed a security issue and fixed %2$s bug." +msgid_plural "Version %1$s addressed a security issue and fixed %2$s bugs." +msgstr[0] "Versjon %1$s tettet et sikkerhetshull og rettet %2$s programfeil." +msgstr[1] "Versjon %1$s tettet et sikkerhetshull og rettet %2$s programfeil." + #: wp-admin/index.php:34 msgid "Welcome to your WordPress Dashboard! This is the screen you will see when you log in to your site, and gives you access to all the site management features of WordPress. You can get help for any screen by clicking the Help tab above the screen title." msgstr "Velkommen til kontrollpanelet i WordPress! Dette er det skjermbildet vil du se hver gang du logger inn på nettstedet, og gir deg tilgang alle administrative funksjoner i WordPress. Du kan få mer informasjon om hvert enkelt skjermbilde om du klikker Hjelp-fanen over skjermtittelen." -#: wp-admin/about.php:62 wp-admin/about.php:230 -msgid "Maintenance and Security Release" -msgstr "Vedlikeholds- og sikkerhetsoppdatering" +#. translators: %s: WordPress version number +#: wp-admin/about.php:260 +msgid "Version %s addressed some security issues." +msgstr "Versjon %s tettet noen sikkerhetshull." -#: wp-admin/about.php:56 wp-admin/credits.php:28 wp-admin/freedoms.php:27 -msgid "What’s New" -msgstr "Hva er nytt" - -#: wp-admin/about.php:227 -msgid "Security Release" -msgstr "Sikkerhetsoppdatering" - -#: wp-admin/about.php:224 +#: wp-admin/about.php:248 msgid "Maintenance Release" msgstr "Vedlikeholdsoppdatering" -#. translators: %s: WordPress version number -#: wp-admin/about.php:236 -msgid "Version %s addressed some security issues." -msgstr "Versjon %s tettet noen sikkerhetshull." +#: wp-admin/about.php:251 +msgid "Security Release" +msgstr "Sikkerhetsoppdatering" + +#: wp-admin/about.php:41 wp-admin/credits.php:28 wp-admin/freedoms.php:27 +msgid "What’s New" +msgstr "Hva er nytt" + +#: wp-admin/about.php:254 +msgid "Maintenance and Security Release" +msgstr "Vedlikeholds- og sikkerhetsoppdatering" #: wp-admin/options-permalink.php:22 msgid "This screen allows you to choose your permalink structure. You can choose from common settings or create custom URL structures." msgstr "Dette skjermbildet lar deg velge strukturen på permalenkene dine. Du kan velge blant de vanligste eller opprette din egen URL-struktur." -#: wp-admin/about.php:210 -msgid "Return to Updates" -msgstr "Tilbake til oppdateringer" - -#: wp-admin/includes/update-core.php:1225 wp-admin/update-core.php:503 +#: wp-admin/includes/update-core.php:1228 wp-admin/update-core.php:500 msgid "Welcome to WordPress %1$s. Learn more." msgstr "Velkommen til WordPress %1$s. Lær mer." -#: wp-admin/edit-tags.php:274 -msgid "Adding Categories" -msgstr "Legge til kategorier" - -#: wp-admin/edit-tags.php:274 -msgid "Adding Tags" -msgstr "Legge til stikkord" - -#: wp-admin/plugins.php:383 -msgid "Troubleshooting" -msgstr "Problemløsning" +#: wp-admin/about.php:234 +msgid "Return to Updates" +msgstr "Tilbake til oppdateringer" #: wp-admin/media-new.php:47 msgid "You can upload media files here without creating a post first. This allows you to upload files to use with posts and pages later and/or to get a web link for a particular file that you can share. There are three options for uploading files:" msgstr "Her kan du laste opp mediefiler uten å opprette innlegg først. Dette lar deg laste opp filer du kan bruke i innlegg og på sider senere, og/eller lage en lenke til en bestemt fil du ønsker å dele. Det er tre alternativer for opplasting av filer:" -#: wp-admin/tools.php:104 -msgid "If you want to convert your categories to tags (or vice versa), use the Categories and Tags Converter available from the Import screen." -msgstr "Hvis du vil konvertere kategorier til stikkord (og omvendt), bruker du Kategorier og stikkord konverterer, som er tilgjengelig i Import-skjermen." +#: wp-admin/plugins.php:397 +msgid "Troubleshooting" +msgstr "Problemløsning" -#: wp-admin/user-new.php:183 -msgid "Remember to click the Add New User button at the bottom of this screen when you are finished." -msgstr "Husk å klikke på knappen Legg til ny bruker i bunnen av dette skjermbildet når du er ferdig." +#: wp-admin/edit-tags.php:256 +msgid "Adding Tags" +msgstr "Legge til stikkord" -#: wp-admin/export.php:159 -msgid "Once you’ve saved the download file, you can use the Import function in another WordPress installation to import the content from this site." -msgstr "Når du har lagret den nedlastede filen kan du bruke importfunksjonen på en annen WordPress-installasjon til å importere innholdet fra dette nettstedet." - -#: wp-admin/users.php:38 -msgid "Screen Display" -msgstr "Skjermvisning" - -#: wp-admin/upload.php:200 -msgid "Attaching Files" -msgstr "Legge ved filer" - -#: wp-admin/user-new.php:194 -msgid "Here is a basic overview of the different user roles and the permissions associated with each one:" -msgstr "Her følger en grunnleggende oversikt over de ulike rollene en bruker kan ha, og tillatelsene knyttet til hver enkelt:" - -#: wp-admin/user-new.php:193 -msgid "User Roles" -msgstr "Brukerroller" - -#: wp-admin/user-new.php:172 -msgid "To add a new user to your site, fill in the form on this screen and click the Add New User button at the bottom." -msgstr "For å legge til en ny bruker på nettstedet ditt fyller du ut dette skjemaet og klikker på knappen Legg til ny bruker nederst." - -#: wp-admin/edit-comments.php:153 -msgid "Moderating Comments" -msgstr "Moderering av kommentarer" - -#: wp-admin/user-new.php:196 -msgid "Subscribers can read comments/comment/receive newsletters, etc. but cannot create regular site content." -msgstr "Abonnenter kan lese kommentarer, kommentere, motta nyhetsbrev osv., men kan ikke skrive ordinært innhold, som innlegg og sider." - -#: wp-admin/import.php:197 -msgid "If the importer you need is not listed, search the plugin directory to see if an importer is available." -msgstr "Importøren du trenger er ikke oppført. Søk i utvidelseskatalogen for å se om en importør er tilgjengelig." - -#: wp-admin/edit.php:219 -msgid "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." -msgstr "Når du bruker Massehandlinger, kan du endre metadata (kategorier, forfatter, etc) for alle de valgte innleggene på en gang. For å fjerne et innlegg fra oversikten, klikker du x i boksen ved siden av tittelen i skjermbildet." - -#: wp-admin/edit.php:204 wp-admin/upload.php:194 -msgid "Available Actions" -msgstr "Tilgjengelige handlinger" - -#: wp-admin/user-new.php:198 -msgid "Authors can publish and manage their own posts, and are able to upload files." -msgstr "Forfattere kan publisere og endre sine egne innlegg, i tillegg til å laste opp filer." - -#: wp-admin/update-core.php:570 -msgid "How to Update" -msgstr "Hvordan du oppdaterer" - -#: wp-admin/edit.php:188 -msgid "This screen provides access to all of your posts. You can customize the display of this screen to suit your workflow." -msgstr "Dette skjermbildet gir deg tilgang til alle dine innlegg. Du kan tilpasse visningen av skjermbildet slik at det passer til din måte å jobbe." - -#: wp-admin/edit.php:218 -msgid "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." -msgstr "Du kan redigere eller slette mange innlegg samtidig. Velg de innleggene du vil endre ved å krysse dem av i boksen til venstre for tittlfeltet. Så velger du hva du vil gjøre i boksen Massehandlinger, før du klikker Bruk." - -#: wp-admin/plugin-install.php:88 -msgid "Adding Plugins" -msgstr "Legge til utvidelser" - -#: wp-admin/edit.php:192 -msgid "Screen Content" -msgstr "Skjerminnhold" - -#: wp-admin/edit.php:194 -msgid "You can customize the display of this screen’s contents in a number of ways:" -msgstr "Du kan endre innstillingene til dette skjermbildet på mange måter:" +#: wp-admin/edit-tags.php:256 +msgid "Adding Categories" +msgstr "Legge til kategorier" #: wp-admin/themes.php:97 msgid "Adding Themes" msgstr "Legge til temaer" -#: wp-admin/options-permalink.php:21 -msgid "Permalinks are the permanent URLs to your individual pages and blog posts, as well as your category and tag archives. A permalink is the web address used to link to your content. The URL to each post should be permanent, and never change — hence the name permalink." -msgstr "Permalenker er permanente URL-er til dine individuelle sider og innlegg, samt til kategori- og stikkordsarkivene. En permalenke er nettadressen som brukes til å lenke til innholdet ditt. URL-en til hvert innlegg bør være permanent og aldri endre seg, og derav navnet permalenke." +#: wp-admin/edit.php:198 +msgid "You can customize the display of this screen’s contents in a number of ways:" +msgstr "Du kan endre innstillingene til dette skjermbildet på mange måter:" -#: wp-admin/options-permalink.php:178 -msgid "Common Settings" -msgstr "Vanlige innstillinger" +#: wp-admin/edit.php:196 +msgid "Screen Content" +msgstr "Skjerminnhold" + +#: wp-admin/plugin-install.php:88 +msgid "Adding Plugins" +msgstr "Legge til utvidelser" + +#: wp-admin/edit.php:222 +msgid "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." +msgstr "Du kan redigere eller slette mange innlegg samtidig. Velg de innleggene du vil endre ved å krysse dem av i boksen til venstre for tittlfeltet. Så velger du hva du vil gjøre i boksen Massehandlinger, før du klikker Bruk." + +#: wp-admin/edit.php:192 +msgid "This screen provides access to all of your posts. You can customize the display of this screen to suit your workflow." +msgstr "Dette skjermbildet gir deg tilgang til alle dine innlegg. Du kan tilpasse visningen av skjermbildet slik at det passer til din måte å jobbe." + +#: wp-admin/update-core.php:567 +msgid "How to Update" +msgstr "Hvordan du oppdaterer" + +#: wp-admin/user-new.php:205 +msgid "Authors can publish and manage their own posts, and are able to upload files." +msgstr "Forfattere kan publisere og endre sine egne innlegg, i tillegg til å laste opp filer." + +#: wp-admin/edit.php:208 wp-admin/upload.php:197 +msgid "Available Actions" +msgstr "Tilgjengelige handlinger" + +#: wp-admin/edit.php:223 +msgid "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." +msgstr "Når du bruker Massehandlinger, kan du endre metadata (kategorier, forfatter, etc) for alle de valgte innleggene på en gang. For å fjerne et innlegg fra oversikten, klikker du x i boksen ved siden av tittelen i skjermbildet." + +#: wp-admin/import.php:197 +msgid "If the importer you need is not listed, search the plugin directory to see if an importer is available." +msgstr "Importøren du trenger er ikke oppført. Søk i utvidelseskatalogen for å se om en importør er tilgjengelig." + +#: wp-admin/user-new.php:203 +msgid "Subscribers can read comments/comment/receive newsletters, etc. but cannot create regular site content." +msgstr "Abonnenter kan lese kommentarer, kommentere, motta nyhetsbrev osv., men kan ikke skrive ordinært innhold, som innlegg og sider." + +#: wp-admin/edit-comments.php:169 +msgid "Moderating Comments" +msgstr "Moderering av kommentarer" + +#: wp-admin/user-new.php:179 +msgid "To add a new user to your site, fill in the form on this screen and click the Add New User button at the bottom." +msgstr "For å legge til en ny bruker på nettstedet ditt fyller du ut dette skjemaet og klikker på knappen Legg til ny bruker nederst." + +#: wp-admin/user-new.php:200 +msgid "User Roles" +msgstr "Brukerroller" + +#: wp-admin/user-new.php:201 +msgid "Here is a basic overview of the different user roles and the permissions associated with each one:" +msgstr "Her følger en grunnleggende oversikt over de ulike rollene en bruker kan ha, og tillatelsene knyttet til hver enkelt:" + +#: wp-admin/upload.php:203 +msgid "Attaching Files" +msgstr "Legge ved filer" + +#: wp-admin/users.php:38 +msgid "Screen Display" +msgstr "Skjermvisning" + +#: wp-admin/export.php:159 +msgid "Once you’ve saved the download file, you can use the Import function in another WordPress installation to import the content from this site." +msgstr "Når du har lagret den nedlastede filen kan du bruke importfunksjonen på en annen WordPress-installasjon til å importere innholdet fra dette nettstedet." + +#: wp-admin/user-new.php:190 +msgid "Remember to click the Add New User button at the bottom of this screen when you are finished." +msgstr "Husk å klikke på knappen Legg til ny bruker i bunnen av dette skjermbildet når du er ferdig." + +#: wp-admin/tools.php:104 +msgid "If you want to convert your categories to tags (or vice versa), use the Categories and Tags Converter available from the Import screen." +msgstr "Hvis du vil konvertere kategorier til stikkord (og omvendt), bruker du Kategorier og stikkord konverterer, som er tilgjengelig i Import-skjermen." #: wp-admin/options-permalink.php:37 msgid "Custom Structures" msgstr "Egendefinerte strukturer" -#: wp-admin/options-media.php:21 -msgid "Uploading Files allows you to choose the folder and path for storing your uploaded files." -msgstr "Laste opp filer lar deg velge mappe og URL-bane for hvor du vil lagre filene." +#: wp-admin/options-permalink.php:178 +msgid "Common Settings" +msgstr "Vanlige innstillinger" + +#: wp-admin/options-permalink.php:21 +msgid "Permalinks are the permanent URLs to your individual pages and blog posts, as well as your category and tag archives. A permalink is the web address used to link to your content. The URL to each post should be permanent, and never change — hence the name permalink." +msgstr "Permalenker er permanente URL-er til dine individuelle sider og innlegg, samt til kategori- og stikkordsarkivene. En permalenke er nettadressen som brukes til å lenke til innholdet ditt. URL-en til hvert innlegg bør være permanent og aldri endre seg, og derav navnet permalenke." #: wp-admin/options-writing.php:21 msgid "You can submit content in several different ways; this screen holds the settings for all of them. The top section controls the editor within the dashboard, while the rest control external publishing methods. For more information on any of these methods, use the documentation links." msgstr "Du kan poste innhold på mange ulike måter. Dette skjermbildet har innstillinger for dem alle. Toppseksjonen kontrollerer redigeringsfunksjonen i kontrollpanelet, mens resten kontrollerer eksterne publiseringsmetoder. For mer informasjon om hver av disse metodene kan du følge lenkene til dokumentasjonen." +#: wp-admin/options-media.php:21 +msgid "Uploading Files allows you to choose the folder and path for storing your uploaded files." +msgstr "Laste opp filer lar deg velge mappe og URL-bane for hvor du vil lagre filene." + #: wp-admin/themes.php:90 msgid "Installing themes on Multisite can only be done from the Network Admin section." msgstr "Installering av temaer på nettverksinstallasjoner kan bare gjøres fra området for nettverksadminstrasjon." @@ -5436,14 +5570,14 @@ msgstr "Installering av temaer på nettverksinstallasjoner kan bare gjøres fra msgid "If you want site visitors to be able to register themselves, as opposed to by the site administrator, check the membership box. A default user role can be set for all new users, whether self-registered or registered by the site admin." msgstr "Hvis du ønsker at besøkende skal kunne registrere seg selv, i motsetning til å bli registrert av en administrator, sjekk medlemskapsboksen. En standard brukerrolle kan angis for alle nye brukere, både for selv-registrerte og for de som er registrerte av administrator." -#: wp-admin/options-writing.php:29 -msgid "Post Via Email" -msgstr "Publiser med e-post" - #: wp-admin/options-writing.php:39 msgid "If desired, WordPress will automatically alert various services of your new posts." msgstr "Hvis ønskelig kan WordPress automatisk varsle forskjellige oppdateringstjenester om dine nye innlegg." +#: wp-admin/options-writing.php:29 +msgid "Post Via Email" +msgstr "Publiser med e-post" + #: wp-admin/options-discussion.php:22 msgid "This screen provides many options for controlling the management and display of comments and links to your posts/pages. So many, in fact, they won’t all fit here! :) Use the documentation links to get information on what each discussion setting does." msgstr "Denne skjermen gir mange alternativer for å kontrollere håndtering og visning av kommentarer og koblinger til dine innlegg og sider. Så mange, faktisk, at alle ikke får plass her! :) Bruk dokumentasjonslenken nedenfor for å få informasjon om hva hver diskusjonsinnstilling gjør." @@ -5452,131 +5586,131 @@ msgstr "Denne skjermen gir mange alternativer for å kontrollere håndtering og msgid "You can change your password, turn on keyboard shortcuts, change the color scheme of your WordPress administration screens, and turn off the WYSIWYG (Visual) editor, among other things. You can hide the Toolbar (formerly called the Admin Bar) from the front end of your site, however it cannot be disabled on the admin screens." msgstr "Du kan bl. a. endre passord, slå på tastatursnarveier, forandre fargeinnstillingene i arbeidsområdet til WordPress, og slå av WYSIWYG (visuell) tekstbehandling. Du kan skjule Verktøylinjen (tidligere administrasjonslinjen) fra forsiden av nettstedet men ikke i arbeidsområdet. " -#: wp-admin/widgets.php:95 -msgid "Inactive Sidebar (not used)" -msgstr "Inaktive sidekolonner (ikke i bruk)" - #: wp-admin/widgets.php:98 msgid "This sidebar is no longer available and does not show anywhere on your site. Remove each of the widgets below to fully remove this inactive sidebar." msgstr "Denne sidekolonnen er ikke tilgjengelig lenger og blir ikke vist noe sted på nettstedet. Fjern hver av widgetene under for å fjerne sidekolonnen fullstendig." -#: wp-admin/media-new.php:49 -msgid "Drag and drop your files into the area below. Multiple files are allowed." -msgstr "Dra og slipp filene dine inn i feltet under. Gjerne flere filer om gangen." - -#: wp-admin/media-new.php:50 -msgid "Clicking Select Files opens a navigation window showing you files in your operating system. Selecting Open after clicking on the file you want activates a progress bar on the uploader screen." -msgstr "Klikker du på Velg Filer åpnes et navigasjonsvindu som viser filene på din datamaskin. Når du klikker på Åpne, etter å ha valgt fil, vil det komme en fremdrifstindikator på opplastingssiden." - -#: wp-admin/edit-tags.php:238 -msgid "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." -msgstr "Du kan gruppere lenkene ved å bruke lenkekategorier. Navnet på lenkekategorien må være unikt. Lenkekategorier er uavhengig av de kategoriene du måtte ha for innlegg." - -#: wp-admin/widgets.php:58 -msgid "Removing and Reusing" -msgstr "Fjerning og gjenbruk" - -#: wp-admin/edit-tags.php:240 -msgid "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." -msgstr "Du kan knytte nøkkelord til dine innlegg ved å bruke stikkord. Til forskjell fra kategorier har stikkord ikke noe hierarki. Det betyr at det ikke er noen relasjon mellom ulike stikkord." +#: wp-admin/widgets.php:95 +msgid "Inactive Sidebar (not used)" +msgstr "Inaktive sidekolonner (ikke i bruk)" #: wp-admin/widgets.php:66 msgid "Missing Widgets" msgstr "Manglende widgeter" -#: wp-admin/edit-comments.php:149 -msgid "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." -msgstr "Du kan redigere kommentarer på nettstedet på samme måte som du redigerer innlegg og annet innhold. Dette skjermbildet kan også tilpasses på samme måte som andre redaktør-skjermer. Kommentarer redigerer du ved å bevege musa over den enkelte kommentaren eller ved å velge dem ut i massehandlinger." +#: wp-admin/edit-tags.php:222 +msgid "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." +msgstr "Du kan knytte nøkkelord til dine innlegg ved å bruke stikkord. Til forskjell fra kategorier har stikkord ikke noe hierarki. Det betyr at det ikke er noen relasjon mellom ulike stikkord." -#: wp-admin/edit-comments.php:156 -msgid "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." -msgstr "I forfatter-kolonnen vises - i tillegg til navn, epost-adresse og bloggadresse - IP-addressen til den som kommenterer. Når du klikker på denne lenken vises alle kommentarer som er gjort fra denne IP-adressen." +#: wp-admin/widgets.php:58 +msgid "Removing and Reusing" +msgstr "Fjerning og gjenbruk" -#: wp-admin/index.php:48 -msgid "Links in the Toolbar at the top of the screen connect your dashboard and the front end of your site, and provide access to your profile and helpful WordPress information." -msgstr "Lenker i verktøylinjen på toppen av siden tar deg til kontrollpanelet og til forsiden av netttedet. De gir deg også tilgang til profilen din og nyttig informasjon om WordPress." +#: wp-admin/edit-tags.php:220 +msgid "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." +msgstr "Du kan gruppere lenkene ved å bruke lenkekategorier. Navnet på lenkekategorien må være unikt. Lenkekategorier er uavhengig av de kategoriene du måtte ha for innlegg." -#: wp-admin/link-manager.php:53 -msgid "Deleting Links" -msgstr "Slette lenker" +#: wp-admin/media-new.php:50 +msgid "Clicking Select Files opens a navigation window showing you files in your operating system. Selecting Open after clicking on the file you want activates a progress bar on the uploader screen." +msgstr "Klikker du på Velg Filer åpnes et navigasjonsvindu som viser filene på din datamaskin. Når du klikker på Åpne, etter å ha valgt fil, vil det komme en fremdrifstindikator på opplastingssiden." -#: wp-admin/upload.php:196 -msgid "Hovering over a row reveals action links: Edit, Delete Permanently, and View. Clicking Edit or on the media file’s name displays a simple screen to edit that individual file’s metadata. Clicking Delete Permanently will delete the file from the media library (as well as from any posts to which it is currently attached). View will take you to the display page for that file." -msgstr "Ved å bevege musa over en kolonne vises forskjellige redigeringsvalg: Rediger, Flytt til papirkurven og Vis. Når du klikker rediger eller på mediefilens navn, så vises det et enkelt skjermbilde til å redigere filens metadata. Flytt til papirkurven betyr at mediefilen slettes fra mediebiblioteket, og fra alle innlegg som det er knyttet til. Vis tar deg til skjermbildet for mediefilen." +#: wp-admin/media-new.php:49 +msgid "Drag and drop your files into the area below. Multiple files are allowed." +msgstr "Dra og slipp filene dine inn i feltet under. Gjerne flere filer om gangen." -#: wp-admin/edit.php:239 -msgid "Managing pages is very similar to managing posts, and the screens can be customized in the same way." -msgstr "Håndtering av sider er veldig likt som det å håndtere innlegg. Skjerminnstillingene kan også tilpasses på samme måte." - -#: wp-admin/edit.php:240 -msgid "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." -msgstr "Du kan utføre de samme handlingene - inkludert å korte ned listen gjennom filtre - når du redigerer sider, ved å bevege musa over en kolonne og klikke på menyvalgene som vises,. Eller du kan benytte menyen for massehandlinger til å redigere metadata for mange sider samtidig." - -#: wp-admin/upload.php:202 -msgid "If a media file has not been attached to any content, you will see that in the Uploaded To column, and can click on Attach to launch a small popup that will allow you to search for existing content and attach the file." -msgstr "Dersom en mediefil ikke har blitt lagt ved noe innlegg, vil du se det i kolonnen Lastet opp til. Du kan klikke på Vedlegg til for å få fram en sprettopp-meny som lar deg søke opp et innlegg og legge ved filen." - -#: wp-admin/upload.php:188 -msgid "All the files you’ve uploaded are listed in the Media Library, with the most recent uploads listed first. You can use the Screen Options tab to customize the display of this screen." -msgstr "Alle filer du har lastet opp finnes i Mediebiblioteket, der de siste filene du lastet opp vises først. Du kan bruke fanen med Visningsinnstillinger for å tilpasse visningen." - -#: wp-admin/edit-form-advanced.php:385 wp-admin/edit.php:233 -msgid "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." -msgstr "Sider likner innlegg ved at de har en tittel, et tekstområde og tilhørende metadata. De skiller seg ut ved at de ikke er en del av den kronologiske rekken av blogginginnlegg. Sider er ikke kategorisert eller arkivert, har ikke stikkord, men kan være hierarkisk ordnet. Du kan lage en overordnet side til andre ved å lage en «Forelder» til en gruppe med sider." - -#: wp-admin/edit-comments.php:160 +#: wp-admin/edit-comments.php:176 msgid "Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link to the side to learn more." msgstr "Mange liker å bruke tastatursnarveier til å moderere kommentarer raskere. Bruk lenken på siden til å lære mer om dem." -#: wp-admin/link-manager.php:48 +#: wp-admin/edit-form-advanced.php:386 wp-admin/edit.php:237 +msgid "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." +msgstr "Sider likner innlegg ved at de har en tittel, et tekstområde og tilhørende metadata. De skiller seg ut ved at de ikke er en del av den kronologiske rekken av blogginginnlegg. Sider er ikke kategorisert eller arkivert, har ikke stikkord, men kan være hierarkisk ordnet. Du kan lage en overordnet side til andre ved å lage en «Forelder» til en gruppe med sider." + +#: wp-admin/upload.php:191 +msgid "All the files you’ve uploaded are listed in the Media Library, with the most recent uploads listed first. You can use the Screen Options tab to customize the display of this screen." +msgstr "Alle filer du har lastet opp finnes i Mediebiblioteket, der de siste filene du lastet opp vises først. Du kan bruke fanen med Visningsinnstillinger for å tilpasse visningen." + +#: wp-admin/upload.php:205 +msgid "If a media file has not been attached to any content, you will see that in the Uploaded To column, and can click on Attach to launch a small popup that will allow you to search for existing content and attach the file." +msgstr "Dersom en mediefil ikke har blitt lagt ved noe innlegg, vil du se det i kolonnen Lastet opp til. Du kan klikke på Vedlegg til for å få fram en sprettopp-meny som lar deg søke opp et innlegg og legge ved filen." + +#: wp-admin/edit.php:244 +msgid "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." +msgstr "Du kan utføre de samme handlingene - inkludert å korte ned listen gjennom filtre - når du redigerer sider, ved å bevege musa over en kolonne og klikke på menyvalgene som vises,. Eller du kan benytte menyen for massehandlinger til å redigere metadata for mange sider samtidig." + +#: wp-admin/edit.php:243 +msgid "Managing pages is very similar to managing posts, and the screens can be customized in the same way." +msgstr "Håndtering av sider er veldig likt som det å håndtere innlegg. Skjerminnstillingene kan også tilpasses på samme måte." + +#: wp-admin/upload.php:199 +msgid "Hovering over a row reveals action links: Edit, Delete Permanently, and View. Clicking Edit or on the media file’s name displays a simple screen to edit that individual file’s metadata. Clicking Delete Permanently will delete the file from the media library (as well as from any posts to which it is currently attached). View will take you to the display page for that file." +msgstr "Ved å bevege musa over en kolonne vises forskjellige redigeringsvalg: Rediger, Flytt til papirkurven og Vis. Når du klikker rediger eller på mediefilens navn, så vises det et enkelt skjermbilde til å redigere filens metadata. Flytt til papirkurven betyr at mediefilen slettes fra mediebiblioteket, og fra alle innlegg som det er knyttet til. Vis tar deg til skjermbildet for mediefilen." + +#: wp-admin/link-manager.php:59 +msgid "Deleting Links" +msgstr "Slette lenker" + +#: wp-admin/index.php:47 +msgid "Links in the Toolbar at the top of the screen connect your dashboard and the front end of your site, and provide access to your profile and helpful WordPress information." +msgstr "Lenker i verktøylinjen på toppen av siden tar deg til kontrollpanelet og til forsiden av netttedet. De gir deg også tilgang til profilen din og nyttig informasjon om WordPress." + +#: wp-admin/edit-comments.php:172 +msgid "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." +msgstr "I forfatter-kolonnen vises - i tillegg til navn, epost-adresse og bloggadresse - IP-addressen til den som kommenterer. Når du klikker på denne lenken vises alle kommentarer som er gjort fra denne IP-adressen." + +#: wp-admin/edit-comments.php:165 +msgid "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." +msgstr "Du kan redigere kommentarer på nettstedet på samme måte som du redigerer innlegg og annet innhold. Dette skjermbildet kan også tilpasses på samme måte som andre redaktør-skjermer. Kommentarer redigerer du ved å bevege musa over den enkelte kommentaren eller ved å velge dem ut i massehandlinger." + +#: wp-admin/link-manager.php:54 msgid "Links may be separated into Link Categories; these are different than the categories used on your posts." msgstr "Lenker kan deles opp i lenkekategorier. Disse er uavhengige av kategoriene som du bruker til dine innlegg." -#: wp-admin/update-core.php:211 +#: wp-admin/update-core.php:213 msgid "Learn more about WordPress %s." msgstr "Lær mer om WordPress %s." -#: wp-admin/edit.php:237 -msgid "Managing Pages" -msgstr "Håndtere sider" - -#: wp-admin/users.php:41 -msgid "You can hide/display columns based on your needs and decide how many users to list per screen using the Screen Options tab." -msgstr "Du kan vise/skjule innhold etter eget behov, og bestemme hvor mange brukere som vises på skjemen, ved å bruke fanen for Visningsinnstillinger." - -#: wp-admin/edit.php:211 -msgid "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." -msgstr "Forhåndsvis viser hvordan innlegget vil se ut etter at det er publisert. Visningen vil ta deg til forsiden av nettstedet for å vise kladden. " - -#: wp-admin/users.php:47 -msgid "Hovering over a row in the users list will display action links that allow you to manage users. You can perform the following actions:" -msgstr "Beveger du musa over kolonnen med brukere vil du se teksten Rediger, som lar deg håndtere brukere. Da kan du foreta disse endringene:" - -#: wp-admin/edit.php:210 -msgid "Trash removes your post from this list and places it in the trash, from which you can permanently delete it." -msgstr "Fytt til papirkurv flytter innlegget ditt fra denne listen til papirkurven, der du kan slette det permanent." - -#: wp-admin/edit.php:209 -msgid "Quick Edit provides inline access to the metadata of your post, allowing you to update post details without leaving this screen." -msgstr "Hurtigredigering lar deg endre innleggets metadata uten at du forlater skjermbildet." - -#: wp-admin/edit.php:208 -msgid "Edit takes you to the editing screen for that post. You can also reach that screen by clicking on the post title." -msgstr "Rediger tar deg til skjermbildet for redigering av et innlegg. Du får også fram dette skjermbildet om du klikker på tittelen til innlegget." - -#: wp-admin/users.php:49 -msgid "Edit takes you to the editable profile screen for that user. You can also reach that screen by clicking on the username." -msgstr "Rediger lar deg endre profilen for den enkelte brukeren. Du kan også komme til dette skjermbildet ved å klikke på brukernavnet." - #: wp-admin/users.php:43 msgid "You can view all posts made by a user by clicking on the number under the Posts column." msgstr "Du kan få fram alle innlegg for hver enkelt bruker ved å klikke på antallet under kolonnen for innlegg." -#: wp-admin/user-new.php:175 +#: wp-admin/users.php:49 +msgid "Edit takes you to the editable profile screen for that user. You can also reach that screen by clicking on the username." +msgstr "Rediger lar deg endre profilen for den enkelte brukeren. Du kan også komme til dette skjermbildet ved å klikke på brukernavnet." + +#: wp-admin/edit.php:212 +msgid "Edit takes you to the editing screen for that post. You can also reach that screen by clicking on the post title." +msgstr "Rediger tar deg til skjermbildet for redigering av et innlegg. Du får også fram dette skjermbildet om du klikker på tittelen til innlegget." + +#: wp-admin/edit.php:213 +msgid "Quick Edit provides inline access to the metadata of your post, allowing you to update post details without leaving this screen." +msgstr "Hurtigredigering lar deg endre innleggets metadata uten at du forlater skjermbildet." + +#: wp-admin/edit.php:214 +msgid "Trash removes your post from this list and places it in the trash, from which you can permanently delete it." +msgstr "Fytt til papirkurv flytter innlegget ditt fra denne listen til papirkurven, der du kan slette det permanent." + +#: wp-admin/users.php:47 +msgid "Hovering over a row in the users list will display action links that allow you to manage users. You can perform the following actions:" +msgstr "Beveger du musa over kolonnen med brukere vil du se teksten Rediger, som lar deg håndtere brukere. Da kan du foreta disse endringene:" + +#: wp-admin/edit.php:215 +msgid "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." +msgstr "Forhåndsvis viser hvordan innlegget vil se ut etter at det er publisert. Visningen vil ta deg til forsiden av nettstedet for å vise kladden. " + +#: wp-admin/users.php:41 +msgid "You can hide/display columns based on your needs and decide how many users to list per screen using the Screen Options tab." +msgstr "Du kan vise/skjule innhold etter eget behov, og bestemme hvor mange brukere som vises på skjemen, ved å bruke fanen for Visningsinnstillinger." + +#: wp-admin/edit.php:241 +msgid "Managing Pages" +msgstr "Håndtere sider" + +#: wp-admin/user-new.php:182 msgid "Because this is a multisite installation, you may add accounts that already exist on the Network by specifying a username or email, and defining a role. For more options, such as specifying a password, you have to be a Network Administrator and use the hover link under an existing user’s name to Edit the user profile under Network Admin > All Users." msgstr "Fordi dette er en nettverksinstallasjon, kan du legge til brukerkontoer som allerede eksisterer i nettverket ved enten å spesifisere brukernavn eller e-post, og i tillegg definere roller. For flere valg, som å sette passord, må du være nettverksadministrator. Beveg musa over den enkelte brukerens navn for å redigere profilen under Nettverksadministrasjon → Alle brukere." -#: wp-admin/includes/template.php:1999 +#: wp-admin/includes/template.php:2025 msgid "Likely direct inclusion of wp-admin/includes/template.php in order to use add_meta_box(). This is very wrong. Hook the add_meta_box() call into the add_meta_boxes action instead." msgstr "Sannsynligvis direkte inkludering av wp-admin/includes/template.php for å bruke add_meta_box(). Dette er veldig feil. Knytt oppkallet add_meta_box() til handlingen add_meta_boxes i stedet." @@ -5584,32 +5718,28 @@ msgstr "Sannsynligvis direkte inkludering av wp-admin/includes/template.php for msgid "Welcome to WordPress %s" msgstr "Velkommen til WordPress %s" -#: wp-admin/about.php:213 -msgid "Go to Dashboard → Home" -msgstr "Gå til Kontrollpanel → Hjem" - -#: wp-admin/about.php:210 +#: wp-admin/about.php:234 msgid "Return to Dashboard → Updates" msgstr "Tilbake til Kontrollpanel → Oppdateringer" +#: wp-admin/about.php:237 +msgid "Go to Dashboard → Home" +msgstr "Gå til Kontrollpanel → Hjem" + #: wp-admin/credits.php:50 msgid "WordPress is created by a worldwide team of passionate individuals." msgstr "WordPress er blitt til av et nettverk med ihuga entusiaster i hele verden." -#: wp-admin/about.php:132 -msgid "Under the Hood" -msgstr "Under panseret" - -#: wp-admin/includes/dashboard.php:1460 wp-admin/includes/dashboard.php:1462 +#: wp-admin/includes/dashboard.php:1459 wp-admin/includes/dashboard.php:1461 msgid "Customize Your Site" msgstr "Tilpass nettstedet ditt" -#: wp-admin/user-edit.php:179 +#: wp-admin/user-edit.php:180 msgid "Profile updated." msgstr "Profil oppdatert." #. translators: 1: Site name, 2: site URL, 3: role, 4: activation URL -#: wp-admin/user-new.php:91 +#: wp-admin/user-new.php:93 msgid "" "Hi,\n" "\n" @@ -5631,19 +5761,19 @@ msgstr "" msgid "Core Developer" msgstr "Kjerneutvikler" -#: wp-admin/includes/class-wp-upgrader.php:171 -msgid "The package could not be installed." -msgstr "Pakken kunne ikke installeres." +#: wp-admin/includes/class-plugin-upgrader.php:360 +msgid "No valid plugins were found." +msgstr "Ingen gyldige utvidelser ble funnet." #: wp-admin/includes/class-plugin-upgrader.php:72 msgid "The plugin contains no files." msgstr "Utvidelsen inneholder ingen filer." -#: wp-admin/includes/class-plugin-upgrader.php:358 -msgid "No valid plugins were found." -msgstr "Ingen gyldige utvidelser ble funnet." +#: wp-admin/includes/class-wp-upgrader.php:171 +msgid "The package could not be installed." +msgstr "Pakken kunne ikke installeres." -#: wp-admin/includes/media.php:1073 +#: wp-admin/includes/media.php:1081 msgid "Attachment Post URL" msgstr "URL til vedleggsbeskrivelse" @@ -5652,22 +5782,17 @@ msgctxt "admin menu" msgid "All Links" msgstr "Alle lenker" -#: wp-admin/includes/media.php:1918 +#: wp-admin/includes/media.php:1926 msgid "Drop files here" msgstr "Slipp filer her" -#: wp-admin/includes/plugin-install.php:241 -msgid "%s plugins" -msgstr "%s utvidelser" - -#: wp-admin/includes/plugin-install.php:241 +#: wp-admin/includes/plugin-install.php:263 msgid "%s plugin" msgstr "%s utvidelse" -#. translators: %s: table name -#: wp-admin/maint/repair.php:136 -msgid "Successfully optimized the %s table." -msgstr "Optimalisering av tabellen %s var vellykket." +#: wp-admin/includes/plugin-install.php:263 +msgid "%s plugins" +msgstr "%s utvidelser" #. translators: 1: table name, 2: error message, #: wp-admin/maint/repair.php:139 @@ -5675,9 +5800,14 @@ msgid "Failed to optimize the %1$s table. Error: %2$s" msgstr "Klarte ikke å optimalisere tabellen %1$s. Feil: %2$s" #. translators: %s: table name -#: wp-admin/maint/repair.php:114 -msgid "Successfully repaired the %s table." -msgstr "Reparasjon av tabellen %s var vellykket." +#: wp-admin/maint/repair.php:136 +msgid "Successfully optimized the %s table." +msgstr "Optimalisering av tabellen %s var vellykket." + +#. translators: %s: table name +#: wp-admin/maint/repair.php:104 +msgid "The %s table is okay." +msgstr "Tabellen %s er OK." #. translators: %s: table name #: wp-admin/maint/repair.php:129 @@ -5685,12 +5815,12 @@ msgid "The %s table is already optimized." msgstr "Tabellen %s er allerede optimalisert." #. translators: %s: table name -#: wp-admin/maint/repair.php:104 -msgid "The %s table is okay." -msgstr "Tabellen %s er OK." +#: wp-admin/maint/repair.php:114 +msgid "Successfully repaired the %s table." +msgstr "Reparasjon av tabellen %s var vellykket." #. translators: %s: plugin version -#: wp-admin/update-core.php:290 +#: wp-admin/update-core.php:287 msgid "View version %s details." msgstr "Se detaljene for versjon %1$s." @@ -5698,261 +5828,271 @@ msgstr "Se detaljene for versjon %1$s." msgid "Tumblr" msgstr "Tumblr mikroblogg" -#: wp-admin/includes/dashboard.php:1360 +#: wp-admin/includes/dashboard.php:1363 msgid "Update %2$s or learn how to browse happy" msgstr "Oppdater %2$s eller lær hvordan å glad-surfe" #. translators: %1$s is link start tag, %2$s is link end tag, %3$d is width, #. %4$d is height -#: wp-admin/includes/media.php:2685 +#: wp-admin/includes/media.php:2693 msgid "Scale images to match the large size selected in %1$simage options%2$s (%3$d × %4$d)." msgstr "Skalere bilder for å matche den store størrelsen som er valgt i %1$sbilde-alternativer%2$s (%3$d × %4$d)." -#: wp-admin/includes/media.php:2556 -msgid "Audio, Video, or Other File" -msgstr "Lyd, film eller en annen fil" - -#: wp-admin/includes/media.php:2072 +#: wp-admin/includes/media.php:2080 msgid "Insert media from another website" msgstr "Sett inn media fra en annen nettside" +#: wp-admin/includes/media.php:2564 +msgid "Audio, Video, or Other File" +msgstr "Lyd, film eller en annen fil" + #: wp-admin/options.php:160 msgid "ERROR: options page not found." msgstr "FEIL: Siden for innstillinger ble ikke funnet." -#: wp-admin/includes/file.php:1145 +#: wp-admin/includes/file.php:1146 msgid "ERROR: There was an error connecting to the server, Please verify the settings are correct." msgstr "FEIL: Det skjedde en feil i servertilkoblingen, vennligst kontroller innstillingene." -#: wp-admin/includes/ajax-actions.php:1011 -msgid "ERROR: you are replying to a comment on a draft post." -msgstr "FEIL: du svarer på en kommentar til et innleggsutkast." - -#: wp-admin/includes/ajax-actions.php:1035 -#: wp-admin/includes/ajax-actions.php:1124 +#: wp-admin/includes/ajax-actions.php:1030 +#: wp-admin/includes/ajax-actions.php:1115 msgid "ERROR: please type a comment." msgstr "FEIL: vennligst skriv en kommentar." -#: wp-admin/index.php:47 -msgid "The left-hand navigation menu provides links to all of the WordPress administration screens, with submenu items displayed on hover. You can minimize this menu to a narrow icon strip by clicking on the Collapse Menu arrow at the bottom." -msgstr "Den venstre navigasjonsmenyen inneholder koblinger til alle administrasjonsskjermene til WordPress, med undermenyelementer som vises når musen holdes over. Du kan trekke sammen denne menyen til en smal ikonstripe ved å klikke på Trekk sammen meny-pilen nederst." - -#: wp-admin/index.php:52 -msgid "Navigation" -msgstr "Navigasjon" - -#: wp-admin/index.php:58 -msgid "Drag and Drop — To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box." -msgstr "Dra og slipp – For å omorganisere boksene, dra og slipp ved å klikke på tittellinjen for den valgte boksen og slipp når du ser en rektangel med en grå stiplet linje på stedet der du vil plassere boksen." - -#: wp-admin/index.php:56 -msgid "You can use the following controls to arrange your Dashboard screen to suit your workflow. This is true on most other administration screens as well." -msgstr "Du kan bruke følgende kontroller til å ordne kontrollpanelet slik at det passer din arbeidsflyt. Dette gjelder på de fleste andre administrasjonsskjermene også." +#: wp-admin/includes/ajax-actions.php:1006 +msgid "ERROR: you are replying to a comment on a draft post." +msgstr "FEIL: du svarer på en kommentar til et innleggsutkast." #: wp-admin/comment.php:43 wp-admin/custom-background.php:90 -#: wp-admin/custom-header.php:100 wp-admin/edit-comments.php:147 -#: wp-admin/edit-form-advanced.php:403 wp-admin/edit-link-form.php:56 -#: wp-admin/edit-tags.php:249 wp-admin/edit.php:186 wp-admin/edit.php:231 +#: wp-admin/custom-header.php:100 wp-admin/edit-comments.php:163 +#: wp-admin/edit-form-advanced.php:404 wp-admin/edit-link-form.php:56 +#: wp-admin/edit-tags.php:231 wp-admin/edit.php:190 wp-admin/edit.php:235 #: wp-admin/export.php:47 wp-admin/import.php:22 -#: wp-admin/includes/class-wp-screen.php:779 wp-admin/index.php:41 -#: wp-admin/link-manager.php:45 wp-admin/media-new.php:45 wp-admin/media.php:73 -#: wp-admin/my-sites.php:40 wp-admin/nav-menus.php:528 -#: wp-admin/nav-menus.php:563 wp-admin/options-discussion.php:21 +#: wp-admin/includes/class-wp-screen.php:779 wp-admin/index.php:40 +#: wp-admin/link-manager.php:51 wp-admin/media-new.php:45 wp-admin/media.php:73 +#: wp-admin/my-sites.php:40 wp-admin/nav-menus.php:529 +#: wp-admin/nav-menus.php:564 wp-admin/options-discussion.php:21 #: wp-admin/options-general.php:39 wp-admin/options-media.php:28 #: wp-admin/options-permalink.php:20 wp-admin/options-reading.php:22 -#: wp-admin/options-writing.php:20 wp-admin/plugin-editor.php:131 -#: wp-admin/plugin-install.php:80 wp-admin/plugins.php:371 -#: wp-admin/revision.php:114 wp-admin/theme-editor.php:25 -#: wp-admin/theme-install.php:92 wp-admin/themes.php:82 -#: wp-admin/update-core.php:557 wp-admin/upload.php:48 wp-admin/upload.php:186 -#: wp-admin/user-edit.php:48 wp-admin/user-new.php:187 wp-admin/users.php:31 +#: wp-admin/options-writing.php:20 wp-admin/plugin-editor.php:143 +#: wp-admin/plugin-install.php:80 wp-admin/plugins.php:385 +#: wp-admin/revision.php:115 wp-admin/theme-editor.php:25 +#: wp-admin/theme-install.php:98 wp-admin/themes.php:82 +#: wp-admin/update-core.php:554 wp-admin/upload.php:48 wp-admin/upload.php:189 +#: wp-admin/user-edit.php:49 wp-admin/user-new.php:194 wp-admin/users.php:31 #: wp-admin/widgets.php:51 msgid "Overview" msgstr "Oversikt" -#: wp-admin/menu.php:41 -msgid "Updates %s" -msgstr "Oppdateringer %s" +#: wp-admin/index.php:55 +msgid "You can use the following controls to arrange your Dashboard screen to suit your workflow. This is true on most other administration screens as well." +msgstr "Du kan bruke følgende kontroller til å ordne kontrollpanelet slik at det passer din arbeidsflyt. Dette gjelder på de fleste andre administrasjonsskjermene også." -#: wp-admin/includes/user.php:62 wp-admin/users.php:113 -msgid "You can’t give users that role." -msgstr "Du kan ikke gi brukere den rollen." +#: wp-admin/index.php:57 +msgid "Drag and Drop — To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box." +msgstr "Dra og slipp – For å omorganisere boksene, dra og slipp ved å klikke på tittellinjen for den valgte boksen og slipp når du ser en rektangel med en grå stiplet linje på stedet der du vil plassere boksen." -#: wp-admin/includes/class-wp-plugins-list-table.php:431 -msgid "Update Available (%s)" -msgid_plural "Update Available (%s)" -msgstr[0] "Oppdatering tilgjengelig (%s)" -msgstr[1] "Oppdateringer tilgjengelige (%s)" +#: wp-admin/index.php:51 +msgid "Navigation" +msgstr "Navigasjon" -#: wp-admin/comment.php:149 wp-admin/plugins.php:290 wp-admin/plugins.php:296 -#: wp-admin/theme-editor.php:272 -msgid "Caution:" -msgstr "Advarsel:" +#: wp-admin/index.php:46 +msgid "The left-hand navigation menu provides links to all of the WordPress administration screens, with submenu items displayed on hover. You can minimize this menu to a narrow icon strip by clicking on the Collapse Menu arrow at the bottom." +msgstr "Den venstre navigasjonsmenyen inneholder koblinger til alle administrasjonsskjermene til WordPress, med undermenyelementer som vises når musen holdes over. Du kan trekke sammen denne menyen til en smal ikonstripe ved å klikke på Trekk sammen meny-pilen nederst." -#: wp-admin/menu.php:233 wp-admin/menu.php:235 wp-admin/user-new.php:165 -#: wp-admin/user-new.php:370 wp-admin/user-new.php:485 -msgid "Add New User" -msgstr "Legg til ny bruker" +#: wp-admin/menu.php:244 wp-admin/ms-delete-site.php:30 +msgid "Delete Site" +msgstr "Slett nettsted" + +#: wp-admin/menu.php:202 +msgid "Plugins %s" +msgstr "Utvidelser %s" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:412 +#: wp-admin/includes/dashboard.php:1263 wp-admin/theme-install.php:278 +#: wp-admin/theme-install.php:297 +msgid "Install" +msgstr "Installer" + +#: wp-admin/menu.php:221 +msgid "All Users" +msgstr "Alle brukere" + +#: wp-admin/includes/class-wp-links-list-table.php:84 +#: wp-admin/includes/class-wp-links-list-table.php:330 +#: wp-admin/includes/class-wp-plugins-list-table.php:468 +#: wp-admin/includes/class-wp-plugins-list-table.php:613 +#: wp-admin/includes/class-wp-plugins-list-table.php:634 +#: wp-admin/includes/class-wp-terms-list-table.php:156 +#: wp-admin/includes/class-wp-terms-list-table.php:458 +#: wp-admin/includes/class-wp-themes-list-table.php:198 +#: wp-admin/includes/class-wp-users-list-table.php:244 +#: wp-admin/includes/class-wp-users-list-table.php:412 +#: wp-admin/includes/media.php:1501 wp-admin/includes/meta-boxes.php:916 +#: wp-admin/includes/template.php:561 wp-admin/includes/widgets.php:253 +#: wp-admin/themes.php:340 wp-admin/themes.php:486 wp-admin/widgets.php:318 +msgid "Delete" +msgstr "Slett" + +#: wp-admin/menu.php:223 wp-admin/menu.php:225 wp-admin/user-edit.php:206 +#: wp-admin/users.php:498 +msgctxt "user" +msgid "Add New" +msgstr "Legg til ny" + +#: wp-admin/comment.php:50 wp-admin/custom-background.php:99 +#: wp-admin/custom-header.php:126 wp-admin/edit-comments.php:180 +#: wp-admin/edit-form-advanced.php:381 wp-admin/edit-form-advanced.php:396 +#: wp-admin/edit-form-advanced.php:413 wp-admin/edit-link-form.php:64 +#: wp-admin/edit-tags.php:261 wp-admin/edit.php:227 wp-admin/edit.php:248 +#: wp-admin/export.php:53 wp-admin/import.php:28 wp-admin/index.php:96 +#: wp-admin/link-manager.php:65 wp-admin/media-new.php:55 wp-admin/media.php:82 +#: wp-admin/my-sites.php:46 wp-admin/nav-menus.php:570 +#: wp-admin/options-discussion.php:27 wp-admin/options-general.php:44 +#: wp-admin/options-media.php:33 wp-admin/options-permalink.php:43 +#: wp-admin/options-reading.php:37 wp-admin/options-writing.php:44 +#: wp-admin/plugin-editor.php:154 wp-admin/plugin-install.php:97 +#: wp-admin/plugins.php:408 wp-admin/revision.php:119 +#: wp-admin/theme-editor.php:38 wp-admin/theme-install.php:113 +#: wp-admin/themes.php:117 wp-admin/tools.php:27 wp-admin/update-core.php:572 +#: wp-admin/upload.php:65 wp-admin/upload.php:209 wp-admin/user-edit.php:54 +#: wp-admin/user-new.php:212 wp-admin/users.php:66 wp-admin/widgets.php:73 +msgid "For more information:" +msgstr "For mer informasjon:" + +#: wp-admin/includes/class-wp-users-list-table.php:321 +#: wp-admin/user-edit.php:343 wp-admin/user-new.php:343 +#: wp-admin/user-new.php:475 +msgid "Role" +msgstr "Rolle" + +#: wp-admin/user-new.php:282 wp-admin/user-new.php:315 +#: wp-admin/user-new.php:373 +msgid "Add Existing User" +msgstr "Legg til eksisterende bruker" + +#: wp-admin/includes/dashboard.php:431 wp-admin/includes/dashboard.php:433 +#: wp-admin/users.php:514 +msgid "Search Users" +msgstr "Søk i brukere" + +#: wp-admin/users.php:468 +msgid "User removed from this site." +msgstr "Bruker fjernet fra dette nettstedet." + +#: wp-admin/users.php:457 +msgid "Changed roles." +msgstr "Rollene er byttet." + +#: wp-admin/my-sites.php:54 wp-admin/options-head.php:15 +#: wp-admin/options.php:239 +msgid "Settings saved." +msgstr "Innstillinger lagret." + +#: wp-admin/users.php:309 wp-admin/users.php:344 +msgid "You can’t remove users." +msgstr "Du kan ikke fjerne brukere." + +#: wp-admin/user-edit.php:363 +msgid "Super Admin" +msgstr "Superadmin" + +#: wp-admin/includes/class-wp-media-list-table.php:685 +#: wp-admin/includes/class-wp-media-list-table.php:744 +#: wp-admin/includes/class-wp-posts-list-table.php:1287 +#: wp-admin/includes/class-wp-terms-list-table.php:467 +#: wp-admin/includes/dashboard.php:644 +msgid "View" +msgstr "Vis" + +#: wp-admin/user-new.php:273 +msgid "User added." +msgstr "Bruker lagt til." + +#. translators: %s: Theme author name +#: wp-admin/includes/class-wp-plugin-install-list-table.php:446 +#: wp-admin/includes/class-wp-plugins-list-table.php:778 +#: wp-admin/includes/class-wp-theme-install-list-table.php:312 +#: wp-admin/includes/class-wp-theme-install-list-table.php:416 +#: wp-admin/includes/class-wp-themes-list-table.php:222 +#: wp-admin/includes/theme.php:659 wp-admin/theme-install.php:254 +#: wp-admin/theme-install.php:306 wp-admin/themes.php:264 +#: wp-admin/themes.php:396 wp-admin/themes.php:449 +msgid "By %s" +msgstr "Av %s" + +#. translators: %s: Plugin version +#: wp-admin/about.php:38 wp-admin/credits.php:25 wp-admin/freedoms.php:24 +#: wp-admin/includes/ajax-actions.php:3683 +#: wp-admin/includes/ajax-actions.php:3726 +#: wp-admin/includes/class-wp-plugins-list-table.php:773 +#: wp-admin/includes/update.php:193 wp-admin/includes/update.php:218 +msgid "Version %s" +msgstr "Versjon %s" + +#: wp-admin/includes/class-wp-plugins-list-table.php:462 +#: wp-admin/includes/class-wp-plugins-list-table.php:627 +msgid "Deactivate" +msgstr "Deaktiver" + +#: wp-admin/includes/ms.php:1020 wp-admin/users.php:295 +msgid "Confirm Deletion" +msgstr "Bekreft slettingen" + +#: wp-admin/menu.php:204 +msgid "Installed Plugins" +msgstr "Installerte utvidelser" #: wp-admin/menu.php:209 msgctxt "plugin editor" msgid "Editor" msgstr "Redigering" -#: wp-admin/menu.php:204 -msgid "Installed Plugins" -msgstr "Installerte utvidelser" +#: wp-admin/menu.php:233 wp-admin/menu.php:235 wp-admin/user-new.php:172 +#: wp-admin/user-new.php:280 wp-admin/user-new.php:380 +#: wp-admin/user-new.php:501 +msgid "Add New User" +msgstr "Legg til ny bruker" -#: wp-admin/includes/ms.php:1003 wp-admin/users.php:295 -msgid "Confirm Deletion" -msgstr "Bekreft slettingen" +#: wp-admin/comment.php:149 wp-admin/plugins.php:290 wp-admin/plugins.php:296 +#: wp-admin/theme-editor.php:272 +msgid "Caution:" +msgstr "Advarsel:" -#: wp-admin/includes/class-wp-plugins-list-table.php:461 -#: wp-admin/includes/class-wp-plugins-list-table.php:626 -msgid "Deactivate" -msgstr "Deaktiver" +#: wp-admin/includes/class-wp-plugins-list-table.php:432 +msgid "Update Available (%s)" +msgid_plural "Update Available (%s)" +msgstr[0] "Oppdatering tilgjengelig (%s)" +msgstr[1] "Oppdateringer tilgjengelige (%s)" -#. translators: %s: Plugin version -#: wp-admin/about.php:53 wp-admin/credits.php:25 wp-admin/freedoms.php:24 -#: wp-admin/includes/ajax-actions.php:3698 -#: wp-admin/includes/ajax-actions.php:3741 -#: wp-admin/includes/class-wp-plugins-list-table.php:775 -#: wp-admin/includes/update.php:186 wp-admin/includes/update.php:210 -msgid "Version %s" -msgstr "Versjon %s" +#: wp-admin/includes/user.php:62 +msgid "You can’t give users that role." +msgstr "Du kan ikke gi brukere den rollen." -#: wp-admin/user-new.php:266 -msgid "User added." -msgstr "Bruker lagt til." +#: wp-admin/menu.php:41 +msgid "Updates %s" +msgstr "Oppdateringer %s" -#: wp-admin/includes/class-wp-media-list-table.php:685 -#: wp-admin/includes/class-wp-media-list-table.php:744 -#: wp-admin/includes/class-wp-posts-list-table.php:1271 -#: wp-admin/includes/class-wp-terms-list-table.php:467 -#: wp-admin/includes/dashboard.php:641 -msgid "View" -msgstr "Vis" +#: wp-admin/edit-form-advanced.php:375 +msgid "Title and Post Editor" +msgstr "Tittel- og innleggsredigerer" -#: wp-admin/user-edit.php:328 -msgid "Super Admin" -msgstr "Superadmin" - -#: wp-admin/users.php:309 wp-admin/users.php:317 wp-admin/users.php:344 -#: wp-admin/users.php:352 -msgid "You can’t remove users." -msgstr "Du kan ikke fjerne brukere." - -#: wp-admin/my-sites.php:55 wp-admin/options-head.php:15 -#: wp-admin/options.php:233 -msgid "Settings saved." -msgstr "Innstillinger lagret." - -#: wp-admin/users.php:446 -msgid "Changed roles." -msgstr "Rollene er byttet." - -#: wp-admin/users.php:457 -msgid "User removed from this site." -msgstr "Bruker fjernet fra dette nettstedet." - -#: wp-admin/includes/dashboard.php:428 wp-admin/includes/dashboard.php:430 -#: wp-admin/users.php:503 -msgid "Search Users" -msgstr "Søk i brukere" - -#: wp-admin/user-new.php:308 wp-admin/user-new.php:363 -msgid "Add Existing User" -msgstr "Legg til eksisterende bruker" - -#: wp-admin/includes/class-wp-users-list-table.php:321 -#: wp-admin/user-edit.php:308 wp-admin/user-new.php:336 -#: wp-admin/user-new.php:462 -msgid "Role" -msgstr "Rolle" - -#: wp-admin/comment.php:50 wp-admin/custom-background.php:99 -#: wp-admin/custom-header.php:126 wp-admin/edit-comments.php:164 -#: wp-admin/edit-form-advanced.php:380 wp-admin/edit-form-advanced.php:395 -#: wp-admin/edit-form-advanced.php:412 wp-admin/edit-link-form.php:64 -#: wp-admin/edit-tags.php:279 wp-admin/edit.php:223 wp-admin/edit.php:244 -#: wp-admin/export.php:53 wp-admin/import.php:28 wp-admin/index.php:97 -#: wp-admin/link-manager.php:59 wp-admin/media-new.php:55 wp-admin/media.php:82 -#: wp-admin/my-sites.php:47 wp-admin/nav-menus.php:569 -#: wp-admin/options-discussion.php:27 wp-admin/options-general.php:44 -#: wp-admin/options-media.php:33 wp-admin/options-permalink.php:43 -#: wp-admin/options-reading.php:37 wp-admin/options-writing.php:44 -#: wp-admin/plugin-editor.php:142 wp-admin/plugin-install.php:97 -#: wp-admin/plugins.php:394 wp-admin/revision.php:118 -#: wp-admin/theme-editor.php:38 wp-admin/theme-install.php:107 -#: wp-admin/themes.php:117 wp-admin/tools.php:27 wp-admin/update-core.php:575 -#: wp-admin/upload.php:65 wp-admin/upload.php:206 wp-admin/user-edit.php:53 -#: wp-admin/user-new.php:205 wp-admin/users.php:66 wp-admin/widgets.php:73 -msgid "For more information:" -msgstr "For mer informasjon:" - -#: wp-admin/menu.php:223 wp-admin/menu.php:225 wp-admin/user-edit.php:205 -#: wp-admin/users.php:487 -msgctxt "user" -msgid "Add New" -msgstr "Legg til ny" - -#: wp-admin/includes/class-wp-links-list-table.php:84 -#: wp-admin/includes/class-wp-links-list-table.php:330 -#: wp-admin/includes/class-wp-plugins-list-table.php:467 -#: wp-admin/includes/class-wp-plugins-list-table.php:612 -#: wp-admin/includes/class-wp-plugins-list-table.php:633 -#: wp-admin/includes/class-wp-terms-list-table.php:154 -#: wp-admin/includes/class-wp-terms-list-table.php:458 -#: wp-admin/includes/class-wp-themes-list-table.php:197 -#: wp-admin/includes/class-wp-users-list-table.php:244 -#: wp-admin/includes/class-wp-users-list-table.php:412 -#: wp-admin/includes/media.php:1493 wp-admin/includes/meta-boxes.php:906 -#: wp-admin/includes/template.php:560 wp-admin/includes/widgets.php:253 -#: wp-admin/themes.php:336 wp-admin/themes.php:478 wp-admin/widgets.php:318 -msgid "Delete" -msgstr "Slett" - -#: wp-admin/menu.php:221 -msgid "All Users" -msgstr "Alle brukere" - -#: wp-admin/edit-form-advanced.php:263 -msgid "Attributes" -msgstr "Attributter" - -#: wp-admin/includes/class-wp-theme-install-list-table.php:409 -#: wp-admin/includes/dashboard.php:1260 wp-admin/theme-install.php:268 -#: wp-admin/theme-install.php:287 -msgid "Install" -msgstr "Installer" - -#: wp-admin/menu.php:202 -msgid "Plugins %s" -msgstr "Utvidelser %s" - -#: wp-admin/menu.php:244 wp-admin/ms-delete-site.php:30 -msgid "Delete Site" -msgstr "Slett nettsted" - -#: wp-admin/edit-form-advanced.php:390 -msgid "About Pages" -msgstr "Om sider" - -#: wp-admin/edit-form-advanced.php:360 +#: wp-admin/edit-form-advanced.php:361 msgid "Customizing This Display" msgstr "Tilpass denne visningen" -#: wp-admin/edit-form-advanced.php:374 -msgid "Title and Post Editor" -msgstr "Tittel- og innleggsredigerer" +#: wp-admin/edit-form-advanced.php:391 +msgid "About Pages" +msgstr "Om sider" #: wp-admin/install.php:192 wp-admin/options-reading.php:118 msgid "Note: Neither of these options blocks access to your site — it is up to search engines to honor your request." msgstr "Advarsel: Ingen av disse alternativene blokkerer adgang til nettstedet — det er opp til den enkelte søkemotoren å respektere dette." -#: wp-admin/options-permalink.php:197 -msgid "Post name" -msgstr "Innleggsnavn" +#: wp-admin/options-permalink.php:174 wp-admin/options-permalink.php:194 +msgctxt "sample permalink base" +msgid "archives" +msgstr "arkiv" #: wp-admin/options-permalink.php:186 wp-admin/options-permalink.php:190 #: wp-admin/options-permalink.php:198 @@ -5960,30 +6100,29 @@ msgctxt "sample permalink structure" msgid "sample-post" msgstr "prove-innlegg" -#: wp-admin/options-permalink.php:174 wp-admin/options-permalink.php:194 -msgctxt "sample permalink base" -msgid "archives" -msgstr "arkiv" +#: wp-admin/options-permalink.php:197 +msgid "Post name" +msgstr "Innleggsnavn" #. translators: URL to wp-admin/import.php #: wp-admin/import.php:142 msgid "This importer is not installed. Please install importers from the main site." msgstr "Denne importøren er ikke installert. Vennligst installer importører fra hovednettstedet." -#: wp-admin/options-general.php:81 wp-admin/options-general.php:100 -msgid "Email Address" -msgstr "E-postadresse" - #: wp-admin/options-general.php:330 msgid "Site Language" msgstr "Nettstedsspråk" +#: wp-admin/options-general.php:81 wp-admin/options-general.php:100 +msgid "Email Address" +msgstr "E-postadresse" + #: wp-admin/options-discussion.php:47 msgid "Attempt to notify any blogs linked to from the article" msgstr "Prøv å varsle blogger som er lenket i innlegget" #. translators: 1: Site name, 2: site URL, 3: role -#: wp-admin/includes/user.php:517 +#: wp-admin/includes/user.php:531 msgid "" "Hi,\n" "You've been invited to join '%1$s' at\n" @@ -6003,210 +6142,210 @@ msgstr "" "Vennligst klikk denne lenken for å aktivere brukerkontoen:\n" "%%s" -#: wp-admin/includes/theme.php:259 -msgid "Full Width Template" -msgstr "Fullbreddemal" - -#: wp-admin/includes/class-wp-press-this.php:826 -#: wp-admin/includes/meta-boxes.php:376 wp-admin/includes/theme.php:261 -msgid "Post Formats" -msgstr "Innleggsformater" - -#: wp-admin/includes/theme.php:255 +#: wp-admin/includes/theme.php:257 msgid "Featured Images" msgstr "Fremhevede bilder" -#: wp-admin/includes/theme.php:254 +#: wp-admin/includes/class-wp-press-this.php:823 +#: wp-admin/includes/meta-boxes.php:385 wp-admin/includes/theme.php:263 +msgid "Post Formats" +msgstr "Innleggsformater" + +#: wp-admin/includes/theme.php:261 +msgid "Full Width Template" +msgstr "Fullbreddemal" + +#: wp-admin/includes/theme.php:256 msgid "Featured Image Header" msgstr "Fremhevet bilde som toppbilde" #. translators: %s: browser name and link -#: wp-admin/includes/dashboard.php:1341 +#: wp-admin/includes/dashboard.php:1344 msgid "It looks like you're using an old version of %s. For the best WordPress experience, please update your browser." msgstr "Det ser ut til at du bruker en gammel versjon av %s. For best mulig opplevelse av WordPress bør du oppdatere nettleseren din." #. translators: %s: browser name and link -#: wp-admin/includes/dashboard.php:1336 +#: wp-admin/includes/dashboard.php:1339 msgid "It looks like you're using an insecure version of %s. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser." msgstr "Det ser ut til at du bruker en usikker versjon av %s. Bruk av en utdatert nettleser gjør datamaskinen din utrygg. For best mulig opplevelse av WordPress bør du oppdatere nettleseren din." -#: wp-admin/includes/nav-menu.php:944 +#: wp-admin/includes/nav-menu.php:954 msgid "There are some invalid menu items. Please check or delete them." msgstr "Det er noen ugyldige menyelementer. Vennligst rett opp eller slett dem." -#: wp-admin/edit-tag-form.php:127 wp-admin/edit-tags.php:413 -#: wp-admin/includes/class-wp-terms-list-table.php:177 +#: wp-admin/edit-tag-form.php:120 wp-admin/edit-tags.php:386 +#: wp-admin/includes/class-wp-terms-list-table.php:180 #: wp-admin/includes/class-wp-terms-list-table.php:595 msgctxt "term name" msgid "Name" msgstr "Navn" -#: wp-admin/includes/template.php:487 wp-admin/includes/template.php:502 -#: wp-admin/includes/template.php:627 +#: wp-admin/includes/template.php:488 wp-admin/includes/template.php:503 +#: wp-admin/includes/template.php:628 msgctxt "meta name" msgid "Name" msgstr "Navn" -#: wp-admin/themes.php:314 +#: wp-admin/themes.php:318 msgctxt "theme name" msgid "Name" msgstr "Navn" #. translators: %s: Theme Directory URL -#: wp-admin/theme-install.php:79 -msgid "You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the WordPress Theme Directory. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses." -msgstr "Du kan finne flere temaer for nettstedet ditt ved hjelp av Tema-installereren på denne skjermen, som vil vise temaer fra WordPress.org Theme Directory. Disse temaene er designet og utviklet av tredjeparter, er gratis tilgjengelig, og er kompatible med lisensen som WordPress bruker." +#: wp-admin/theme-install.php:85 +msgid "You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the WordPress Theme Directory. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses." +msgstr "Du kan finne flere temaer for nettstedet ditt ved hjelp av Tema-installereren på denne skjermen, som vil vise temaer fra WordPress.org Theme Directory. Disse temaene er designet og utviklet av tredjeparter, er gratis tilgjengelig, og er kompatible med lisensen som WordPress bruker." #. translators: %s: WordPress Plugin Directory URL -#: wp-admin/plugins.php:377 -msgid "If you would like to see more plugins to choose from, click on the “Add New” button and you will be able to browse or search for additional plugins from the WordPress Plugin Directory. Plugins in the WordPress Plugin Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they’re free!" -msgstr "Hvis du ønsker å få flere utvidelser å velge mellom, klikk på «Installer ny»-knappen, og du kan bla gjennom eller søke etter flere utvidelser fra WordPress.org Plugin Directory. Disse utvidelsene er designet og utviklet av tredjeparter og er kompatible med lisensen som WordPress bruker. Og forresten, de er gratis!" +#: wp-admin/plugins.php:391 +msgid "If you would like to see more plugins to choose from, click on the “Add New” button and you will be able to browse or search for additional plugins from the WordPress Plugin Directory. Plugins in the WordPress Plugin Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they’re free!" +msgstr "Hvis du ønsker å få flere utvidelser å velge mellom, klikk på «Installer ny»-knappen, og du kan bla gjennom eller søke etter flere utvidelser fra WordPress.org Plugin Directory. Disse utvidelsene er designet og utviklet av tredjeparter og er kompatible med lisensen som WordPress bruker. Og forresten, de er gratis!" #: wp-admin/update-core.php:61 msgid "Re-install Now" msgstr "Re-installer nå" -#: wp-admin/includes/file.php:294 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." -msgstr "Den opplastede filen er større enn upload_max_filesize-regelen i php.ini." - -#: wp-admin/includes/file.php:295 +#: wp-admin/includes/file.php:296 msgid "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form." msgstr "Den opplastede filen er større enn MAX_FILE_SIZE-regelen som ble spesifisert i HTML-skjemaet." +#: wp-admin/includes/file.php:295 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." +msgstr "Den opplastede filen er større enn upload_max_filesize-regelen i php.ini." + #: wp-admin/credits.php:125 msgid "External Libraries" msgstr "Eksterne programbibliotek" -#: wp-admin/menu.php:240 -msgid "Available Tools" -msgstr "Tilgjengelige verktøy" - #: wp-admin/menu.php:246 msgid "Network Setup" msgstr "Nettverksoppsett" +#: wp-admin/menu.php:240 +msgid "Available Tools" +msgstr "Tilgjengelige verktøy" + #: wp-admin/credits.php:56 msgctxt "Translate this to be the equivalent of English Translators in your language for the credits page Translators section" msgid "Translators" msgstr "Oversettere til norsk (bokmål)" -#: wp-admin/freedoms.php:41 -msgid "WordPress grows when people like you tell their friends about it, and the thousands of businesses and services that are built on and around WordPress share that fact with their users. We’re flattered every time someone spreads the good word, just make sure to check out our trademark guidelines first." -msgstr "WordPress vokser når folk som deg forteller sine venner om det, og tusenvis av virksomheter og tjenester som er bygd på og rundt WordPress deler dette faktum med sine brukere. Vi blir smigret hver gang noen sprer gode ord, bare sørg for å sjekke ut våre retningslinjer for bruk av varemerket først." - #: wp-admin/freedoms.php:48 msgid "Every plugin and theme in WordPress.org’s directory is 100%% GPL or a similarly free and compatible license, so you can feel safe finding 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." msgstr "Hver utvidelse og hvert tema i WordPress.org-katalogen er 100%% GPL eller annen fri og kompatibel lisens, slik at du kan føle deg trygg når du finner utvidelser og temaer der. Hvis du får en utvidelse eller et tema fra en annen kilde, sørg for å spørre dem om det er GPL først. Hvis de ikke respekterer lisensen til WordPress, anbefaler vi dem ikke." +#: wp-admin/freedoms.php:41 +msgid "WordPress grows when people like you tell their friends about it, and the thousands of businesses and services that are built on and around WordPress share that fact with their users. We’re flattered every time someone spreads the good word, just make sure to check out our trademark guidelines first." +msgstr "WordPress vokser når folk som deg forteller sine venner om det, og tusenvis av virksomheter og tjenester som er bygd på og rundt WordPress deler dette faktum med sine brukere. Vi blir smigret hver gang noen sprer gode ord, bare sørg for å sjekke ut våre retningslinjer for bruk av varemerket først." + #: wp-admin/freedoms.php:32 msgid "WordPress is Free and open source software, built by a distributed community of mostly volunteer developers from around the world. WordPress comes with some awesome, worldview-changing rights courtesy of its license, the GPL." msgstr "WordPress er gratis og bruker åpen kildekode, som er bygget av et distribuert fellesskap av hovedsakelig frivillige utviklere fra hele verden. WordPress kommer med noen kule rettigheter, som følge av sin lisens, GPL." -#: wp-admin/credits.php:120 -msgid "Lead Developer" -msgstr "Ledende utvikler" - -#. translators: %s: https://make.wordpress.org/ -#: wp-admin/credits.php:103 -msgid "Want to see your name in lights on this page? Get involved in WordPress." -msgstr "Ønsker du å se navnet ditt her? Delta i utviklingen av WordPress." - -#: wp-admin/about.php:57 wp-admin/credits.php:13 wp-admin/credits.php:29 -#: wp-admin/freedoms.php:28 -msgid "Credits" -msgstr "Takk til" - -#: wp-admin/widgets.php:386 -msgctxt "removing-widget" -msgid "Deactivate" -msgstr "Deaktiver" - -#: wp-admin/credits.php:119 -msgid "Cofounder, Project Lead" -msgstr "Grunnlegger, prosjektleder" - -#: wp-admin/credits.php:117 -msgid "Core Contributors to WordPress %s" -msgstr "Bidragsytere til WordPress-kjernen i %s" - -#: wp-admin/menu.php:86 -msgid "All Comments" -msgstr "Alle kommentarer" +#: wp-admin/credits.php:116 +msgid "Project Leaders" +msgstr "Prosjektledere" #. translators: 1: https://wordpress.org/about/, 2: https://make.wordpress.org/ #: wp-admin/credits.php:40 msgid "WordPress is created by a worldwide team of passionate individuals. Get involved in WordPress." msgstr "WordPress er laget av et verdensomspennede nett av dedikerte personer. Bli med og gi ditt bidrag til WordPress." -#: wp-admin/credits.php:116 -msgid "Project Leaders" -msgstr "Prosjektledere" +#: wp-admin/menu.php:86 +msgid "All Comments" +msgstr "Alle kommentarer" -#: wp-admin/freedoms.php:35 -msgid "You have the freedom to run the program, for any purpose." -msgstr "Du står fritt til å bruke programmet til alle formål." +#: wp-admin/credits.php:117 +msgid "Core Contributors to WordPress %s" +msgstr "Bidragsytere til WordPress-kjernen i %s" -#: wp-admin/freedoms.php:36 -msgid "You have access to the source code, the freedom to study how the program works, and the freedom to change it to make it do what you wish." -msgstr "Du har tilgang til kildekoden, friheten til å utforske programmet og endre det til ditt eget formål." +#: wp-admin/credits.php:119 +msgid "Cofounder, Project Lead" +msgstr "Grunnlegger, prosjektleder" -#: wp-admin/freedoms.php:37 -msgid "You have the freedom to redistribute copies of the original program so you can help your neighbor." -msgstr "Du står fritt til å dele kopier av det opprinnelige programmet. På den måten hjelper du andre." +#: wp-admin/widgets.php:386 +msgctxt "removing-widget" +msgid "Deactivate" +msgstr "Deaktiver" -#: wp-admin/freedoms.php:38 -msgid "You have the freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes." -msgstr "Du står fritt til å videresende kopier av dine modifikasjoner til andre. Gjør du det, gir du hele fellesskapet muligheter til å vokse videre på grunn av din innsats." +#: wp-admin/about.php:42 wp-admin/credits.php:13 wp-admin/credits.php:29 +#: wp-admin/freedoms.php:28 +msgid "Credits" +msgstr "Takk til" -#: wp-admin/includes/dashboard.php:32 -msgid "You are using an insecure browser!" -msgstr "Din nettleser er ikke trygg!" +#. translators: %s: https://make.wordpress.org/ +#: wp-admin/credits.php:103 +msgid "Want to see your name in lights on this page? Get involved in WordPress." +msgstr "Ønsker du å se navnet ditt her? Delta i utviklingen av WordPress." -#: wp-admin/includes/dashboard.php:34 -msgid "Your browser is out of date!" -msgstr "Nettleseren din er ikke oppdatert!" +#: wp-admin/credits.php:120 +msgid "Lead Developer" +msgstr "Ledende utvikler" + +#: wp-admin/about.php:43 wp-admin/credits.php:30 wp-admin/freedoms.php:12 +#: wp-admin/freedoms.php:29 +msgid "Freedoms" +msgstr "Friheter" #: wp-admin/freedoms.php:50 msgid "Don’t you wish all software came with these freedoms? So do we! For more information, check out the Free Software Foundation." msgstr "Skulle ikke du ønske at all programvare kom med samme frihet? Det mener vi! For nærmere opplysninger, sjekk Stiftelsen for fri programvare." -#: wp-admin/about.php:58 wp-admin/credits.php:30 wp-admin/freedoms.php:12 -#: wp-admin/freedoms.php:29 -msgid "Freedoms" -msgstr "Friheter" +#: wp-admin/includes/dashboard.php:34 +msgid "Your browser is out of date!" +msgstr "Nettleseren din er ikke oppdatert!" -#: wp-admin/custom-header.php:624 -msgid "You can use one of these cool headers or show a random one on each page." -msgstr "Du kan bruke et av disse kule toppbildene, eller vise et tilfeldig valgt bilde for hver side." +#: wp-admin/includes/dashboard.php:32 +msgid "You are using an insecure browser!" +msgstr "Din nettleser er ikke trygg!" -#: wp-admin/custom-header.php:622 -msgid "If you don‘t want to upload your own image, you can use one of these cool headers, or show a random one." -msgstr "Hvis du ikke ønsker å laste opp et eget bilde, kan du bruke en av disse kule toppbildene. Eller la et tilfeldig bilde bli valgt ut for deg." +#: wp-admin/freedoms.php:38 +msgid "You have the freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes." +msgstr "Du står fritt til å videresende kopier av dine modifikasjoner til andre. Gjør du det, gir du hele fellesskapet muligheter til å vokse videre på grunn av din innsats." + +#: wp-admin/freedoms.php:37 +msgid "You have the freedom to redistribute copies of the original program so you can help your neighbor." +msgstr "Du står fritt til å dele kopier av det opprinnelige programmet. På den måten hjelper du andre." + +#: wp-admin/freedoms.php:36 +msgid "You have access to the source code, the freedom to study how the program works, and the freedom to change it to make it do what you wish." +msgstr "Du har tilgang til kildekoden, friheten til å utforske programmet og endre det til ditt eget formål." + +#: wp-admin/freedoms.php:35 +msgid "You have the freedom to run the program, for any purpose." +msgstr "Du står fritt til å bruke programmet til alle formål." #: wp-admin/custom-header.php:610 msgid "You can choose one of your previously uploaded headers, or show a random one." msgstr "Du kan velge en av toppbildene du lastet opp tidligere, eller å vise et tilfeldig et." -#: wp-admin/menu-header.php:238 +#: wp-admin/custom-header.php:622 +msgid "If you don‘t want to upload your own image, you can use one of these cool headers, or show a random one." +msgstr "Hvis du ikke ønsker å laste opp et eget bilde, kan du bruke en av disse kule toppbildene. Eller la et tilfeldig bilde bli valgt ut for deg." + +#: wp-admin/custom-header.php:624 +msgid "You can use one of these cool headers or show a random one on each page." +msgstr "Du kan bruke et av disse kule toppbildene, eller vise et tilfeldig valgt bilde for hver side." + +#: wp-admin/menu-header.php:240 msgid "Collapse menu" msgstr "Trekk sammen" #. translators: %s: wp-content directory name -#: wp-admin/includes/class-wp-plugins-list-table.php:507 +#: wp-admin/includes/class-wp-plugins-list-table.php:508 msgid "Drop-ins are advanced plugins in the %s directory that replace WordPress functionality when present." msgstr "Innslipp er avanserte utvidelser i %s-mappen som erstatter WordPress-funksjonalitet når de er tilstede." -#: wp-admin/custom-header.php:279 -msgid "Random: Show a different image on each page." -msgstr "Tilfeldige: Vis forskjellige bilder på hver side." - #: wp-admin/custom-header.php:608 msgid "Uploaded Images" msgstr "Opplastede bilder" -#: wp-admin/includes/class-wp-screen.php:1113 wp-admin/includes/theme.php:235 -#: wp-admin/includes/theme.php:300 wp-admin/index.php:63 +#: wp-admin/custom-header.php:279 +msgid "Random: Show a different image on each page." +msgstr "Tilfeldige: Vis forskjellige bilder på hver side." + +#: wp-admin/includes/class-wp-screen.php:1113 wp-admin/includes/theme.php:237 +#: wp-admin/includes/theme.php:302 wp-admin/index.php:62 msgid "Layout" msgstr "Layout" @@ -6214,92 +6353,82 @@ msgstr "Layout" msgid "You have specified this user for deletion:" msgstr "Du har angitt denne brukeren for sletting:" -#: wp-admin/user-edit.php:184 +#: wp-admin/user-edit.php:185 msgid "← Back to Users" msgstr "← Tilbake til brukere" -#: wp-admin/includes/class-wp-list-table.php:825 +#: wp-admin/includes/class-wp-list-table.php:824 msgctxt "paging" msgid "%1$s of %2$s" msgstr "%1$s av %2$s" -#: wp-admin/includes/file.php:87 +#: wp-admin/includes/file.php:88 msgid "%s Page Template" msgstr "%s Sidemal" +#: wp-admin/includes/ajax-actions.php:3783 wp-admin/plugins.php:441 +msgid "You cannot delete a plugin while it is active on the main site." +msgstr "Du kan ikke slette en utvidelse som er aktivt på hovednettstedet." + #: wp-admin/plugins.php:290 msgid "This plugin may be active on other sites in the network." msgstr "Denne utvidelsen kan være aktivt på andre nettsteder i ditt nettverk." -#: wp-admin/includes/ajax-actions.php:3798 wp-admin/plugins.php:427 -msgid "You cannot delete a plugin while it is active on the main site." -msgstr "Du kan ikke slette en utvidelse som er aktivt på hovednettstedet." +#: wp-admin/user-edit.php:208 wp-admin/users.php:500 +msgctxt "user" +msgid "Add Existing" +msgstr "Legg til eksisterende" #: wp-admin/options-writing.php:83 msgid "Default Post Format" msgstr "Standardformat for innlegg" -#: wp-admin/user-edit.php:207 wp-admin/users.php:489 -msgctxt "user" -msgid "Add Existing" -msgstr "Legg til eksisterende" - -#: wp-admin/user-new.php:273 -msgctxt "user" -msgid "Add New User" -msgstr "Legg til ny bruker" - -#: wp-admin/plugin-editor.php:138 wp-admin/theme-editor.php:34 +#: wp-admin/plugin-editor.php:150 wp-admin/theme-editor.php:34 msgid "Any edits to files from this screen will be reflected on all sites in the network." msgstr "All redigering i filene i dette skjermbildet vil påvirke alle nettstedene i nettverket." -#: wp-admin/user-new.php:275 -msgctxt "user" -msgid "Add Existing User" -msgstr "Legg til eksisterende bruker" - -#: wp-admin/tools.php:17 -msgid "Press This is a bookmarklet that makes it easy to blog about something you come across on the web. You can use it to just grab a link, or to post an excerpt. Press This will even allow you to choose from images included on the page and use them in your post. Just drag the Press This link on this screen to your bookmarks bar in your browser, and you’ll be on your way to easier content creation. Clicking on it while on another website opens a popup window with all these options." -msgstr "«Skriv om dette» er et bokmerkeskript som gjør det enkelt å blogge om noe du kommer over på nettet. Du kan bruke den til å bare ta en lenke, eller å legge inn et utdrag. «Skriv om dette» vil også la deg velge fra bilder som er inkludert på siden og bruke dem i ditt innlegg. Bare dra «Skriv om dette»-lenken på denne skjermen til bokmerkelinjen i nettleseren din, og du vil være på vei til enklere innhold. Ved å klikke på den mens du er på et annet nettsted, åpner du et vindu med alle disse alternativene." - -#: wp-admin/index.php:67 -msgid "The boxes on your Dashboard screen are:" -msgstr "Boksene på Kontrollpanel-skjermen er:" +#: wp-admin/plugin-editor.php:149 +msgid "If you want to make changes but don’t want them to be overwritten when the plugin is updated, you may be ready to think about writing your own plugin. For information on how to edit plugins, write your own from scratch, or just better understand their anatomy, check out the links below." +msgstr "Hvis du ønsker å gjøre endringer, men ikke vil at de skal bli overskrevet når utvidelsen blir oppdatert, kanskje du er klar til å tenke på å skrive din egen utvidelse. For informasjon om hvordan du redigerer utvidelser, skriver dine egne fra bunnen av, eller bare bedre forstå deres anatomi, sjekk ut lenkene nedenfor." #: wp-admin/users.php:32 msgid "This screen lists all the existing users for your site. Each user has one of five defined roles as set by the site admin: Site Administrator, Editor, Author, Contributor, or Subscriber. Users with roles other than Administrator will see fewer options in the dashboard navigation when they are logged in, based on their role." msgstr "Denne skjermen viser alle eksisterende brukere på nettstedet ditt. Hver bruker har én av fem definerte roller som bestemt av admin: nettstedsadmin, redaktør, forfatter, bidragsyter, eller abonnent. Brukere med andre roller enn admin vil se færre alternativer i kontrollpanelsnavigeringen når de er logget inn, basert på rollen sin." -#: wp-admin/plugin-editor.php:137 -msgid "If you want to make changes but don’t want them to be overwritten when the plugin is updated, you may be ready to think about writing your own plugin. For information on how to edit plugins, write your own from scratch, or just better understand their anatomy, check out the links below." -msgstr "Hvis du ønsker å gjøre endringer, men ikke vil at de skal bli overskrevet når utvidelsen blir oppdatert, kanskje du er klar til å tenke på å skrive din egen utvidelse. For informasjon om hvordan du redigerer utvidelser, skriver dine egne fra bunnen av, eller bare bedre forstå deres anatomi, sjekk ut lenkene nedenfor." +#: wp-admin/index.php:66 +msgid "The boxes on your Dashboard screen are:" +msgstr "Boksene på Kontrollpanel-skjermen er:" -#. translators: Default page slug -#: wp-admin/includes/upgrade.php:238 -msgid "sample-page" -msgstr "testside" +#: wp-admin/tools.php:17 +msgid "Press This is a bookmarklet that makes it easy to blog about something you come across on the web. You can use it to just grab a link, or to post an excerpt. Press This will even allow you to choose from images included on the page and use them in your post. Just drag the Press This link on this screen to your bookmarks bar in your browser, and you’ll be on your way to easier content creation. Clicking on it while on another website opens a popup window with all these options." +msgstr "«Skriv om dette» er et bokmerkeskript som gjør det enkelt å blogge om noe du kommer over på nettet. Du kan bruke den til å bare ta en lenke, eller å legge inn et utdrag. «Skriv om dette» vil også la deg velge fra bilder som er inkludert på siden og bruke dem i ditt innlegg. Bare dra «Skriv om dette»-lenken på denne skjermen til bokmerkelinjen i nettleseren din, og du vil være på vei til enklere innhold. Ved å klikke på den mens du er på et annet nettsted, åpner du et vindu med alle disse alternativene." -#: wp-admin/includes/upgrade.php:236 +#: wp-admin/includes/upgrade.php:239 msgid "Sample Page" msgstr "Testside" -#: wp-admin/options-discussion.php:229 +#. translators: Default page slug +#: wp-admin/includes/upgrade.php:241 +msgid "sample-page" +msgstr "testside" + +#: wp-admin/options-discussion.php:230 msgid "Retro (Generated)" msgstr "Retro (Generert)" -#: wp-admin/includes/class-wp-themes-list-table.php:96 -msgid "You only have one theme enabled for this site right now. Visit the Network Admin to enable or install more themes." -msgstr "Du har bare ett tema aktivert for dette nettstedet akkurat nå. Besøk Nettverksadmin for å aktivere eller installere flere temaer." - -#: wp-admin/includes/class-wp-themes-list-table.php:100 +#: wp-admin/includes/class-wp-themes-list-table.php:101 msgid "You only have one theme enabled for this site right now. Visit the Network Admin to enable more themes." msgstr "Du har bare ett tema aktivert for dette nettstedet akkurat nå. Besøk Nettverksadmin for å aktivere flere temaer." -#: wp-admin/user-edit.php:333 +#: wp-admin/includes/class-wp-themes-list-table.php:97 +msgid "You only have one theme enabled for this site right now. Visit the Network Admin to enable or install more themes." +msgstr "Du har bare ett tema aktivert for dette nettstedet akkurat nå. Besøk Nettverksadmin for å aktivere eller installere flere temaer." + +#: wp-admin/user-edit.php:368 msgid "Super admin privileges cannot be removed because this user has the network admin email." msgstr "Rettighetene som superadmin kan ikke fjernes fordi denne brukeren har nettverkets admin-e-post." -#: wp-admin/includes/class-wp-themes-list-table.php:107 +#: wp-admin/includes/class-wp-themes-list-table.php:108 msgid "You only have one theme installed right now. Live a little! You can choose from over 1,000 free themes in the WordPress Theme Directory at any time: just click on the Install Themes tab above." msgstr "Du har bare ett tema installert akkurat nå. Lev litt! Du kan velge blant over 1000 gratis temaer i WordPress.org Theme Directory når som helst: klikk på Installer temaer-fanen ovenfor." @@ -6311,81 +6440,49 @@ msgstr "En eller flere databasetabeller er utilgjengelige. For å la WordPress f msgid "Visual Editor RTL Stylesheet" msgstr "Stilsett for visuell redigering for RTL" -#: wp-admin/theme-editor.php:212 -msgid "This child theme inherits templates from a parent theme, %s." -msgstr "Dette dattertemaet arver maler fra et foreldretema, %s." - #: wp-admin/theme-editor.php:273 msgid "This is a file in your current parent theme." msgstr "Dette er en fil i ditt gjeldende foreldretema." -#: wp-admin/upgrade.php:110 -msgid "Your WordPress database has been successfully updated!" -msgstr "Din WordPress-database har blitt oppdatert!" - -#: wp-admin/upgrade.php:99 -msgid "Update WordPress Database" -msgstr "Oppdater WordPress-databasen" - -#: wp-admin/update-core.php:111 -msgid "You are about to install WordPress %s in English (US). There is a chance this update will break your translation. You may prefer to wait for the localized version to be released." -msgstr "Du er i ferd med å installere WordPress %s på engelsk (US). Det er mulig at denne oppdateringen vil bryte din oversettelse. Du foretrekker kanskje å vente til den lokaliserte versjonen blir utgitt." - -#: wp-admin/upgrade.php:98 -msgid "The database update process may take a little while, so please be patient." -msgstr "Databaseoppdateringen kan ta en liten stund, så vær tålmodig." - -#: wp-admin/upgrade.php:64 -msgid "WordPress › Update" -msgstr "WordPress › Oppdater" - -#: wp-admin/upgrade.php:109 -msgid "Update Complete" -msgstr "Oppdatering utført" - -#: wp-admin/upgrade.php:96 -msgid "Database Update Required" -msgstr "Databaseoppdatering nødvendig" - -#: wp-admin/upgrade.php:97 -msgid "WordPress has been updated! Before we send you on your way, we have to update your database to the newest version." -msgstr "WordPress er oppdatert! Før vi sender deg videre, må vi oppdatere databasen til den nyeste versjonen." +#: wp-admin/theme-editor.php:212 +msgid "This child theme inherits templates from a parent theme, %s." +msgstr "Dette dattertemaet arver maler fra et foreldretema, %s." #: wp-admin/upgrade.php:75 msgid "No Update Required" msgstr "Ingen oppdatering påkrevd" -#: wp-admin/includes/class-plugin-upgrader.php:57 -msgid "Plugin updated successfully." -msgstr "Utvidelse oppdatert." +#: wp-admin/upgrade.php:97 +msgid "WordPress has been updated! Before we send you on your way, we have to update your database to the newest version." +msgstr "WordPress er oppdatert! Før vi sender deg videre, må vi oppdatere databasen til den nyeste versjonen." -#: wp-admin/includes/class-theme-upgrader-skin.php:26 wp-admin/update.php:179 -msgid "Update Theme" -msgstr "Oppdater tema" +#: wp-admin/upgrade.php:96 +msgid "Database Update Required" +msgstr "Databaseoppdatering nødvendig" -#. translators: 1: plugin name, 2: details URL, 3: additional link attributes, -#. 4: version number -#: wp-admin/includes/update.php:383 -msgid "There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this plugin." -msgstr "Det er en ny versjon av %1$s tilgjengelig. Vis detaljene for versjon %4$s. Automatisk oppdatering er ikke tilgjengelig for denne utvidelsen." +#: wp-admin/upgrade.php:109 +msgid "Update Complete" +msgstr "Oppdatering utført" -#: wp-admin/includes/ajax-actions.php:3732 -#: wp-admin/includes/ajax-actions.php:3759 -#: wp-admin/includes/class-plugin-upgrader.php:56 -msgid "Plugin update failed." -msgstr "Utvidelsesoppdateringen mislyktes." +#: wp-admin/upgrade.php:64 +msgid "WordPress › Update" +msgstr "WordPress › Oppdater" -#: wp-admin/includes/class-theme-upgrader.php:55 -msgid "Theme update failed." -msgstr "Temaoppdateringen mislyktes." +#: wp-admin/upgrade.php:98 +msgid "The database update process may take a little while, so please be patient." +msgstr "Databaseoppdateringen kan ta en liten stund, så vær tålmodig." -#: wp-admin/includes/class-theme-upgrader.php:56 -msgid "Theme updated successfully." -msgstr "Tema oppdatert." +#: wp-admin/update-core.php:113 +msgid "You are about to install WordPress %s in English (US). There is a chance this update will break your translation. You may prefer to wait for the localized version to be released." +msgstr "Du er i ferd med å installere WordPress %s på engelsk (US). Det er mulig at denne oppdateringen vil bryte din oversettelse. Du foretrekker kanskje å vente til den lokaliserte versjonen blir utgitt." -#: wp-admin/includes/class-plugin-upgrader-skin.php:28 wp-admin/update.php:54 -msgid "Update Plugin" -msgstr "Oppdater utvidelse" +#: wp-admin/upgrade.php:99 +msgid "Update WordPress Database" +msgstr "Oppdater WordPress-databasen" + +#: wp-admin/upgrade.php:110 +msgid "Your WordPress database has been successfully updated!" +msgstr "Din WordPress-database har blitt oppdatert!" #: wp-admin/includes/class-core-upgrader.php:32 #: wp-admin/includes/class-language-pack-upgrader.php:118 @@ -6394,59 +6491,94 @@ msgstr "Oppdater utvidelse" msgid "Update package not available." msgstr "Oppdateringspakken ikke tilgjengelig." -#: wp-admin/export.php:191 wp-admin/export.php:233 wp-admin/export.php:265 -msgid "Date range:" -msgstr "Datoperiode:" +#: wp-admin/includes/class-plugin-upgrader-skin.php:28 wp-admin/update.php:54 +msgid "Update Plugin" +msgstr "Oppdater utvidelse" -#: wp-admin/export.php:167 -msgid "This will contain all of your posts, pages, comments, custom fields, terms, navigation menus, and custom posts." -msgstr "Denne vil inneholde alle dine innlegg, sider, kommentarer, egendefinerte felt, termer, navigasjonsmenyer og tilpassede innlegg." +#: wp-admin/includes/class-theme-upgrader.php:56 +msgid "Theme updated successfully." +msgstr "Tema oppdatert." -#: wp-admin/export.php:161 -msgid "Choose what to export" -msgstr "Velg hva du vil eksportere" +#: wp-admin/includes/class-theme-upgrader.php:55 +msgid "Theme update failed." +msgstr "Temaoppdateringen mislyktes." -#: wp-admin/export.php:177 wp-admin/export.php:219 -msgid "Authors:" -msgstr "Forfattere:" +#: wp-admin/includes/ajax-actions.php:3717 +#: wp-admin/includes/ajax-actions.php:3744 +#: wp-admin/includes/class-plugin-upgrader.php:56 +msgid "Plugin update failed." +msgstr "Utvidelsesoppdateringen mislyktes." + +#. translators: 1: plugin name, 2: details URL, 3: additional link attributes, +#. 4: version number +#: wp-admin/includes/update.php:391 +msgid "There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this plugin." +msgstr "Det er en ny versjon av %1$s tilgjengelig. Vis detaljene for versjon %4$s. Automatisk oppdatering er ikke tilgjengelig for denne utvidelsen." + +#: wp-admin/includes/class-theme-upgrader-skin.php:26 wp-admin/update.php:179 +msgid "Update Theme" +msgstr "Oppdater tema" + +#: wp-admin/includes/class-plugin-upgrader.php:57 +msgid "Plugin updated successfully." +msgstr "Utvidelse oppdatert." #: wp-admin/export.php:166 msgid "All content" msgstr "Alt innhold" -#: wp-admin/includes/file.php:351 +#: wp-admin/export.php:177 wp-admin/export.php:219 +msgid "Authors:" +msgstr "Forfattere:" + +#: wp-admin/export.php:161 +msgid "Choose what to export" +msgstr "Velg hva du vil eksportere" + +#: wp-admin/export.php:167 +msgid "This will contain all of your posts, pages, comments, custom fields, terms, navigation menus, and custom posts." +msgstr "Denne vil inneholde alle dine innlegg, sider, kommentarer, egendefinerte felt, termer, navigasjonsmenyer og tilpassede innlegg." + +#: wp-admin/export.php:191 wp-admin/export.php:233 wp-admin/export.php:265 +msgid "Date range:" +msgstr "Datoperiode:" + +#: wp-admin/includes/file.php:352 msgid "Sorry, this file type is not permitted for security reasons." msgstr "Beklager, denne filtypen er ikke tillatt av sikkerhetsgrunner." -#: wp-admin/admin-header.php:44 +#. translators: Admin screen title. 1: Admin screen name +#: wp-admin/admin-header.php:47 msgid "%1$s — WordPress" msgstr "%1$s — WordPress" -#: wp-admin/widgets.php:54 -msgid "The Available Widgets section contains all the widgets you can choose from. Once you drag a widget into a sidebar, it will open to allow you to configure its settings. When you are happy with the widget settings, click the Save button and the widget will go live on your site. If you click Delete, it will remove the widget." -msgstr "Seksjonen Tilgjengelige widgeter inneholder alle widgeter du kan velge fra. Når du drar en widget til et sideområde, vil du få muligheten til å tilpasse innstillingene. Når du er fornøyd med widgetinnstillingene, klikker du på Lagre-knappen og widgeten vil vises på nettstedet ditt. Hvis du klikker Slett, vil widgeten bli fjernet." - -#: wp-admin/edit-form-advanced.php:408 wp-admin/media.php:78 -msgid "Remember to click Update Media to save metadata entered or changed." -msgstr "Husk å klikke Oppdater media for å lagre metadata som er skrevet inn eller endret." - -#: wp-admin/edit-form-advanced.php:407 wp-admin/media.php:77 -msgid "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." -msgstr "Merk at du beskjærer bildet ved å klikke på det (Beskjæringsikonet allerede er valgt), og dra beskjæringsrammen for å velge ønsket del. Klikk deretter Lagre for å beholde beskjæringen." - -#: wp-admin/edit-form-advanced.php:406 wp-admin/media.php:76 -msgid "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." -msgstr "For bilder kan du klikke på Rediger bilde under bildene for å utvide en innebygd bilderedigerer med ikoner for beskjæring, rotering og speilvending, så vel som for angre og \"utfør likevel\". Boksene til høyre gir deg flere alternativer for å skalere bildet, for beskjæring, og for beskjæring av miniatyrbilder på en annen måte enn du beskjærer originalbildet. Du kan klikke på Hjelp i disse boksene for å få mer informasjon." - #: wp-admin/media.php:75 msgid "This screen allows you to edit five fields for metadata in a file within the media library." msgstr "Dette skjermbildet lar deg redigere fem felt for metadata i en fil i mediebiblioteket." -#: wp-admin/user-new.php:315 +#: wp-admin/edit-form-advanced.php:407 wp-admin/media.php:76 +msgid "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." +msgstr "For bilder kan du klikke på Rediger bilde under bildene for å utvide en innebygd bilderedigerer med ikoner for beskjæring, rotering og speilvending, så vel som for angre og \"utfør likevel\". Boksene til høyre gir deg flere alternativer for å skalere bildet, for beskjæring, og for beskjæring av miniatyrbilder på en annen måte enn du beskjærer originalbildet. Du kan klikke på Hjelp i disse boksene for å få mer informasjon." + +#: wp-admin/edit-form-advanced.php:408 wp-admin/media.php:77 +msgid "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." +msgstr "Merk at du beskjærer bildet ved å klikke på det (Beskjæringsikonet allerede er valgt), og dra beskjæringsrammen for å velge ønsket del. Klikk deretter Lagre for å beholde beskjæringen." + +#: wp-admin/edit-form-advanced.php:409 wp-admin/media.php:78 +msgid "Remember to click Update Media to save metadata entered or changed." +msgstr "Husk å klikke Oppdater media for å lagre metadata som er skrevet inn eller endret." + +#: wp-admin/widgets.php:54 +msgid "The Available Widgets section contains all the widgets you can choose from. Once you drag a widget into a sidebar, it will open to allow you to configure its settings. When you are happy with the widget settings, click the Save button and the widget will go live on your site. If you click Delete, it will remove the widget." +msgstr "Seksjonen Tilgjengelige widgeter inneholder alle widgeter du kan velge fra. Når du drar en widget til et sideområde, vil du få muligheten til å tilpasse innstillingene. Når du er fornøyd med widgetinnstillingene, klikker du på Lagre-knappen og widgeten vil vises på nettstedet ditt. Hvis du klikker Slett, vil widgeten bli fjernet." + +#: wp-admin/user-new.php:322 msgid "Email or Username" msgstr "E-post eller brukernavn" -#: wp-admin/admin-header.php:46 +#. translators: Admin screen title. 1: Admin screen name, 2: Network or site +#. name +#: wp-admin/admin-header.php:50 msgid "%1$s ‹ %2$s — WordPress" msgstr "%1$s ‹ %2$s — WordPress" @@ -6454,7 +6586,7 @@ msgstr "%1$s ‹ %2$s — WordPress" msgid "Search Installed Themes" msgstr "Søk blant installerte temaer" -#: wp-admin/update-core.php:349 +#: wp-admin/update-core.php:346 msgid "Please Note: Any customizations you have made to theme files will be lost. Please consider using child themes for modifications." msgstr "Merk: Alle tilpasninger du har gjort i tema-filene vil gå tapt. Vennligst vurder å bruke dattertemaer for modifikasjoner." @@ -6465,100 +6597,100 @@ msgid_plural "Sticky (%s)" msgstr[0] "Klebrig (%s)" msgstr[1] "Klebrige (%s)" -#: wp-admin/update-core.php:595 -msgid "Please select one or more plugins to update." -msgstr "Velg én eller flere utvidelser for å oppdatere." - -#: wp-admin/update-core.php:593 -msgid "Please select one or more themes to update." -msgstr "Velg ett eller flere temaer for å oppdatere." +#: wp-admin/update-core.php:606 +msgid "Check Again" +msgstr "Sjekk igjen" #. translators: %1 date, %2 time. -#: wp-admin/update-core.php:601 +#: wp-admin/update-core.php:605 msgid "Last checked on %1$s at %2$s." msgstr "Sist sjekket %1$s kl. %2$s." -#: wp-admin/update-core.php:602 -msgid "Check Again" -msgstr "Sjekk igjen" +#: wp-admin/update-core.php:590 +msgid "Please select one or more themes to update." +msgstr "Velg ett eller flere temaer for å oppdatere." + +#: wp-admin/update-core.php:592 +msgid "Please select one or more plugins to update." +msgstr "Velg én eller flere utvidelser for å oppdatere." #: wp-admin/includes/class-bulk-upgrader-skin.php:40 msgid "The update process is starting. This process may take a while on some hosts, so please be patient." msgstr "Oppdateringen starter. Denne prosessen kan ta en stund på noen verter, så vær tålmodig." -#: wp-admin/theme-install.php:181 +#: wp-admin/theme-install.php:187 wp-admin/theme-install.php:207 msgid "Apply Filters" msgstr "Bruk filtre" -#: wp-admin/includes/theme.php:262 -msgid "RTL Language Support" -msgstr "RTL-språkstøtte" - -#: wp-admin/includes/theme.php:247 -msgid "BuddyPress" -msgstr "BuddyPress" - -#: wp-admin/includes/theme.php:253 -msgid "Editor Style" -msgstr "Visuell redigering" - -#: wp-admin/includes/theme.php:258 -msgid "Front Page Posting" -msgstr "Forsidepublisering" - -#: wp-admin/includes/theme.php:266 +#: wp-admin/includes/theme.php:268 msgid "Translation Ready" msgstr "Klar for oversettelse" -#: wp-admin/comment.php:64 -msgid "Sorry, you are not allowed to edit this comment." -msgstr "Beklager, du har ikke lov til å redigere denne kommentaren." +#: wp-admin/includes/theme.php:260 +msgid "Front Page Posting" +msgstr "Forsidepublisering" -#: wp-admin/includes/file.php:1188 +#: wp-admin/includes/theme.php:255 +msgid "Editor Style" +msgstr "Visuell redigering" + +#: wp-admin/includes/theme.php:249 +msgid "BuddyPress" +msgstr "BuddyPress" + +#: wp-admin/includes/theme.php:264 +msgid "RTL Language Support" +msgstr "RTL-språkstøtte" + +#: wp-admin/includes/file.php:1189 msgid "To perform the requested action, WordPress needs to access your web server." msgstr "For å utføre denne handlingen trenger WordPress å lese filer på din server." -#: wp-admin/includes/class-wp-list-table.php:816 -#: wp-admin/includes/class-wp-list-table.php:819 -msgid "Current Page" -msgstr "Gjeldende side" - #: wp-admin/includes/class-wp-theme-install-list-table.php:160 msgid "No themes match your request." msgstr "Ingen temaer passer til ditt søk." -#: wp-admin/includes/dashboard.php:436 wp-admin/includes/dashboard.php:438 -msgid "Search Sites" -msgstr "Søk i nettsteder" - -#: wp-admin/includes/dashboard.php:390 -msgid "Create a New User" -msgstr "Opprett ny bruker" - -#: wp-admin/includes/dashboard.php:398 -msgid "You have %1$s and %2$s." -msgstr "Du har %1$s og %2$s." +#: wp-admin/includes/class-wp-list-table.php:815 +#: wp-admin/includes/class-wp-list-table.php:818 +msgid "Current Page" +msgstr "Gjeldende side" +#. translators: 1: Number of users on the network #: wp-admin/includes/dashboard.php:396 -msgid "%s site" -msgid_plural "%s sites" -msgstr[0] "%s nettsted" -msgstr[1] "%s nettsteder" - -#: wp-admin/includes/dashboard.php:395 msgid "%s user" msgid_plural "%s users" msgstr[0] "%s bruker" msgstr[1] "%s brukere" -#: wp-admin/includes/dashboard.php:1085 -msgid "https://wordpress.org/news/" -msgstr "https://wordpress.org/news/" +#. translators: 1: Number of sites on the network +#: wp-admin/includes/dashboard.php:398 +msgid "%s site" +msgid_plural "%s sites" +msgstr[0] "%s nettsted" +msgstr[1] "%s nettsteder" -#: wp-admin/includes/dashboard.php:1094 +#. translators: 1: Text indicating the number of sites on the network, 2: Text +#. indicating the number of users on the network +#: wp-admin/includes/dashboard.php:401 +msgid "You have %1$s and %2$s." +msgstr "Du har %1$s og %2$s." + +#: wp-admin/includes/dashboard.php:390 +msgid "Create a New User" +msgstr "Opprett ny bruker" + +#: wp-admin/includes/dashboard.php:439 wp-admin/includes/dashboard.php:441 +msgid "Search Sites" +msgstr "Søk i nettsteder" + +#: wp-admin/includes/dashboard.php:1097 msgid "http://wordpress.org/news/feed/" msgstr "http://wordpress.org/news/feed/" +#: wp-admin/includes/dashboard.php:1088 +msgid "https://wordpress.org/news/" +msgstr "https://wordpress.org/news/" + #: wp-admin/options-discussion.php:68 msgid "(Signup has been disabled. Only members of this site can comment.)" msgstr "(Brukerregistrering er deaktivert. Kun medlemmer på nettstedet kan kommentere.)" @@ -6569,16 +6701,16 @@ msgstr "(Brukerregistrering er deaktivert. Kun medlemmer på nettstedet kan komm #. 4: version number #. translators: 1: theme name, 2: details URL, 3: additional link attributes, #. 4: version number -#: wp-admin/includes/theme.php:179 wp-admin/includes/update.php:372 -#: wp-admin/includes/update.php:517 +#: wp-admin/includes/theme.php:181 wp-admin/includes/update.php:380 +#: wp-admin/includes/update.php:525 msgid "There is a new version of %1$s available. View version %4$s details." msgstr "Det er en ny versjon av %1$s tilgjengelig. Vis detaljene for versjon %4$s." -#: wp-admin/includes/nav-menu.php:940 +#: wp-admin/includes/nav-menu.php:950 msgid "Click Save Menu to make pending menu items public." msgstr "Trykk \"Lagre meny\" for å gjøre ventende menyelementer tilgjengelige." -#: wp-admin/includes/dashboard.php:1294 +#: wp-admin/includes/dashboard.php:1297 msgid "Storage Space" msgstr "Lagringsplass" @@ -6595,161 +6727,153 @@ msgid "Crop and Publish" msgstr "Beskjær og publiser" #: wp-admin/edit-link-form.php:60 -msgid "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." -msgstr "XFN står for XHTML Friends Network, som er valgfritt. WordPress tillater generering av XFN-attributter som viser hvordan du er relatert til forfattere/eiere av nettstedet som du lenker til." - -#: wp-admin/includes/file.php:1198 -msgid "FTP Password" -msgstr "FTP passord" - -#: wp-admin/includes/file.php:1197 -msgid "FTP Username" -msgstr "FTP brukernavn" +msgid "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." +msgstr "XFN står for XHTML Friends Network, som er valgfritt. WordPress tillater generering av XFN-attributter som viser hvordan du er relatert til forfattere/eiere av nettstedet som du lenker til." #: wp-admin/includes/file.php:1194 -msgid "FTP/SSH Password" -msgstr "FTP/SSH passord" - -#: wp-admin/includes/file.php:1193 msgid "FTP/SSH Username" msgstr "FTP/SSH brukernavn" -#: wp-admin/options-reading.php:24 -msgid "You can choose what’s displayed on the front page of your site. It can be posts in reverse chronological order (classic blog), or a fixed/static page. To set a static home page, you first need to create two Pages. One will become the front page, and the other will be where your posts are displayed." -msgstr "Du kan velge hva som skal vises på forsiden til ditt nettsted. Det kan være blogginnlegg i omvendt kronologisk rekkefølge (klassisk blogg), eller en fast/statisk side. For å sette en statisk forside, må du først lage to sider. En vil bli til forsiden og den andre vil være den som viser dine blogginnlegg." +#: wp-admin/includes/file.php:1195 +msgid "FTP/SSH Password" +msgstr "FTP/SSH passord" -#: wp-admin/options-permalink.php:38 -msgid "The Optional fields let you customize the “category” and “tag” base names that will appear in archive URLs. For example, the page listing all posts in the “Uncategorized” category could be /topics/uncategorized instead of /category/uncategorized." -msgstr "De valgfrie feltene lar deg tilpasse basenavnene til «kategorier» og «stikkord» som skal vises i URL-ene til arkivet. For eksempel, siden som viser alle innlegg i «Ukategorisert»-kategorien kan være /emner/ukategorisert istedenfor /kategori/ukategorisert." +#: wp-admin/includes/file.php:1198 +msgid "FTP Username" +msgstr "FTP brukernavn" -#: wp-admin/options-permalink.php:31 -msgid "When you assign multiple categories or tags to a post, only one can show up in the permalink: the lowest numbered category. This applies if your custom structure includes %category% or %tag%." -msgstr "Når du legger flere kategorier eller stikkord til et innlegg, vises kun én kategori eller ett stikkord i permalenken: det som har det laveste ID-nummeret. Dette får betydning hvis din egendefinerte struktur inkluderer %category% eller %tag%." - -#: wp-admin/options-permalink.php:30 -msgid "If you pick an option other than Plain, your general URL path with structure tags (terms surrounded by %) will also appear in the custom structure field and your path can be further modified there." -msgstr "Hvis du velger noe annet enn standard, vil din generelle URL-sti med strukturelle attributter (nøkkelord omgitt av %) også være synlig i feltet for egendefinert struktur, slik at stien kan bli videre tilpasset der." +#: wp-admin/includes/file.php:1199 +msgid "FTP Password" +msgstr "FTP passord" #: wp-admin/widgets.php:68 msgid "Many themes show some sidebar widgets by default until you edit your sidebars, but they are not automatically displayed in your sidebar management tool. After you make your first widget change, you can re-add the default widgets by adding them from the Available Widgets area." msgstr "Mange temaer viser widgeter som standard inntil du redigerer sidekolonnene, men de vises ikke automatisk i verktøyet på denne siden. Etter at du har gjort din første widget-endring, kan du legge til standard-widgetene ved å legge dem til fra området med tilgjengelige widgeter." -#: wp-admin/widgets.php:60 -msgid "If you want to remove the widget but save its setting for possible future use, just drag it into the Inactive Widgets area. You can add them back anytime from there. This is especially helpful when you switch to a theme with fewer or different widget areas." -msgstr "Hvis du vil ta vekk en widget, men lagre innstillingene i tilfelle den skal aktiveres igjen, er det bare å dra widgeten til området med inaktive widgeter. Derifra kan du legge dem tilbake når som helst. Det er spesielt nyttig når du endrer tema til et et med færre eller andre widget-områder." +#: wp-admin/options-permalink.php:30 +msgid "If you pick an option other than Plain, your general URL path with structure tags (terms surrounded by %) will also appear in the custom structure field and your path can be further modified there." +msgstr "Hvis du velger noe annet enn standard, vil din generelle URL-sti med strukturelle attributter (nøkkelord omgitt av %) også være synlig i feltet for egendefinert struktur, slik at stien kan bli videre tilpasset der." + +#: wp-admin/options-permalink.php:31 +msgid "When you assign multiple categories or tags to a post, only one can show up in the permalink: the lowest numbered category. This applies if your custom structure includes %category% or %tag%." +msgstr "Når du legger flere kategorier eller stikkord til et innlegg, vises kun én kategori eller ett stikkord i permalenken: det som har det laveste ID-nummeret. Dette får betydning hvis din egendefinerte struktur inkluderer %category% eller %tag%." + +#: wp-admin/options-permalink.php:38 +msgid "The Optional fields let you customize the “category” and “tag” base names that will appear in archive URLs. For example, the page listing all posts in the “Uncategorized” category could be /topics/uncategorized instead of /category/uncategorized." +msgstr "De valgfrie feltene lar deg tilpasse basenavnene til «kategorier» og «stikkord» som skal vises i URL-ene til arkivet. For eksempel, siden som viser alle innlegg i «Ukategorisert»-kategorien kan være /emner/ukategorisert istedenfor /kategori/ukategorisert." + +#: wp-admin/options-reading.php:24 +msgid "You can choose what’s displayed on the front page of your site. It can be posts in reverse chronological order (classic blog), or a fixed/static page. To set a static home page, you first need to create two Pages. One will become the front page, and the other will be where your posts are displayed." +msgstr "Du kan velge hva som skal vises på forsiden til ditt nettsted. Det kan være blogginnlegg i omvendt kronologisk rekkefølge (klassisk blogg), eller en fast/statisk side. For å sette en statisk forside, må du først lage to sider. En vil bli til forsiden og den andre vil være den som viser dine blogginnlegg." #: wp-admin/users.php:33 msgid "To add a new user for your site, click the Add New button at the top of the screen or Add New in the Users menu section." msgstr "For å legge til en ny bruker på ditt nettsted, trykk \"Legg til\"-knappen øverst på skjermen eller \"Legg til\" i menyseksjonen for brukere." -#: wp-admin/options-media.php:18 -msgid "You can set maximum sizes for images inserted into your written content; you can also insert an image as Full Size." -msgstr "Du kan bestemme maksimal størrelse for bilder som skal settes inn i ditt skrevne innhold, men du kan også sette inn et bilde med original/full størrelse." +#: wp-admin/widgets.php:60 +msgid "If you want to remove the widget but save its setting for possible future use, just drag it into the Inactive Widgets area. You can add them back anytime from there. This is especially helpful when you switch to a theme with fewer or different widget areas." +msgstr "Hvis du vil ta vekk en widget, men lagre innstillingene i tilfelle den skal aktiveres igjen, er det bare å dra widgeten til området med inaktive widgeter. Derifra kan du legge dem tilbake når som helst. Det er spesielt nyttig når du endrer tema til et et med færre eller andre widget-områder." #: wp-admin/options-general.php:26 msgid "Most themes display the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. The tagline is also displayed by many themes." msgstr "De fleste temaer viser sidetittelen på toppen av alle sider, i tittelen i nettleseren og som identifikator for syndikerte strømmer. Slagordet vises også av mange temaer." -#: wp-admin/edit-form-advanced.php:463 +#: wp-admin/options-media.php:18 +msgid "You can set maximum sizes for images inserted into your written content; you can also insert an image as Full Size." +msgstr "Du kan bestemme maksimal størrelse for bilder som skal settes inn i ditt skrevne innhold, men du kan også sette inn et bilde med original/full størrelse." + +#: wp-admin/edit-form-advanced.php:464 msgid "Order — Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field." msgstr "Rekkefølge – Sider sorteres vanligvis alfabetisk, men du kan angi et tall i dette feltet for å endre rekkefølgen de sorteres i (1 for første, etc.)." -#: wp-admin/includes/file.php:1192 -msgid "Please enter your FTP or SSH credentials to proceed." -msgstr "Vennligst skriv inn dine FTP- eller SSH-detaljer for å fortsette." - -#: wp-admin/includes/file.php:1196 -msgid "Please enter your FTP credentials to proceed." -msgstr "Vennligst skriv inn innloggingsdetaljene for FTP-tilgang for å fortsette." - -#: wp-admin/includes/file.php:1202 +#: wp-admin/includes/file.php:1203 msgid "If you do not remember your credentials, you should contact your web host." msgstr "Hvis du ikke husker brukernavn og passord, bør du kontakte din nettjener." -#. translators: %s: /wp-content/themes -#: wp-admin/theme-install.php:86 -msgid "You can Upload a theme manually if you have already downloaded its ZIP archive onto your computer (make sure it is from a trusted and original source). You can also do it the old-fashioned way and copy a downloaded theme’s folder via FTP into your %s directory." -msgstr "Du kan laste opp et tema manuelt hvis du allerede har lastet ned ZIP-arkivet til din datamaskin (forsikre deg om at du stoler på originalkilden). Du kan også gjøre det på gamle-måten og kopiere en nedlastet temamappe via FTP til din %s-mappe." +#: wp-admin/includes/file.php:1197 +msgid "Please enter your FTP credentials to proceed." +msgstr "Vennligst skriv inn innloggingsdetaljene for FTP-tilgang for å fortsette." + +#: wp-admin/includes/file.php:1193 +msgid "Please enter your FTP or SSH credentials to proceed." +msgstr "Vennligst skriv inn dine FTP- eller SSH-detaljer for å fortsette." #: wp-admin/user-edit.php:39 msgid "Your profile contains information about you (your “account”) as well as some personal options related to using WordPress." msgstr "Din profil inneholder informasjon om deg (din «konto»), i tillegg til noen personlige innstillinger i forhold til hvordan du vil bruke WordPress." -#: wp-admin/edit-form-advanced.php:452 +#. translators: %s: /wp-content/themes +#: wp-admin/theme-install.php:92 +msgid "You can Upload a theme manually if you have already downloaded its ZIP archive onto your computer (make sure it is from a trusted and original source). You can also do it the old-fashioned way and copy a downloaded theme’s folder via FTP into your %s directory." +msgstr "Du kan laste opp et tema manuelt hvis du allerede har lastet ned ZIP-arkivet til din datamaskin (forsikre deg om at du stoler på originalkilden). Du kan også gjøre det på gamle-måten og kopiere en nedlastet temamappe via FTP til din %s-mappe." + +#: wp-admin/edit-form-advanced.php:453 msgid "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." msgstr "Send tilbakesporinger – Tilbakesporinger er en måte å si ifra til eldre bloggsystemer at du har lenket til dem. Skriv inn URL(-ene) som du vil sende tilbakesporinger til. Hvis du lenker til andre WordPress-nettsteder vil de bli fortalt dette automatisk med tilbakeping, og dette feltet er unødvendig." -#: wp-admin/user-new.php:197 -msgid "Contributors can write and manage their posts but not publish posts or upload media files." -msgstr "Bidragsytere kan skrive og håndtere sine innlegg, men ikke publisere innlegg eller laste opp mediefiler." - -#: wp-admin/user-new.php:200 -msgid "Administrators have access to all the administration features." -msgstr "Administratorer har tilgang til alle administrative funksjoner." - -#: wp-admin/plugin-editor.php:133 -msgid "You can use the editor to make changes to any of your plugins’ individual PHP files. Be aware that if you make changes, plugins updates will overwrite your customizations." -msgstr "Du kan bruke redigereren for å gjøre endringer til PHP-filene til alle dine utvidelser. Vær oppmerksom på at hvis du gjør endringer, og så oppdaterer utvidelsen, vil alle dine endringer slettes." - -#: wp-admin/link-manager.php:47 -msgid "You can add links here to be displayed on your site, usually using Widgets. By default, links to several sites in the WordPress community are included as examples." -msgstr "Du kan legge til lenker her som skal vises på ditt nettsted, vanligvis ved å bruke widgeter. Som standard ligger flere lenker til nettsteder i WordPress-nettverket her som eksempler." - -#: wp-admin/link-manager.php:55 +#: wp-admin/link-manager.php:61 msgid "If you delete a link, it will be removed permanently, as Links do not have a Trash function yet." msgstr "Hvis du sletter en lenke, vil den bli slettet permanent, siden lenker ikke har en papirkurvfunksjon ennå." -#: wp-admin/custom-background.php:95 -msgid "Don’t forget to click on the Save Changes button when you are finished." -msgstr "Ikke velg å trykke på \"Lagre endringer\"-knappen når du er ferdig." +#: wp-admin/link-manager.php:53 +msgid "You can add links here to be displayed on your site, usually using Widgets. By default, links to several sites in the WordPress community are included as examples." +msgstr "Du kan legge til lenker her som skal vises på ditt nettsted, vanligvis ved å bruke widgeter. Som standard ligger flere lenker til nettsteder i WordPress-nettverket her som eksempler." + +#: wp-admin/plugin-editor.php:145 +msgid "You can use the editor to make changes to any of your plugins’ individual PHP files. Be aware that if you make changes, plugins updates will overwrite your customizations." +msgstr "Du kan bruke redigereren for å gjøre endringer til PHP-filene til alle dine utvidelser. Vær oppmerksom på at hvis du gjør endringer, og så oppdaterer utvidelsen, vil alle dine endringer slettes." + +#: wp-admin/user-new.php:207 +msgid "Administrators have access to all the administration features." +msgstr "Administratorer har tilgang til alle administrative funksjoner." + +#: wp-admin/user-new.php:204 +msgid "Contributors can write and manage their posts but not publish posts or upload media files." +msgstr "Bidragsytere kan skrive og håndtere sine innlegg, men ikke publisere innlegg eller laste opp mediefiler." + +#: wp-admin/edit-form-advanced.php:380 +msgid "You can also create posts with the Press This bookmarklet." +msgstr "Du kan også lage innlegg med bokmerkeskriptet Skriv om dette." + +#: wp-admin/edit-tags.php:245 +msgid "Slug — The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens." +msgstr "Permalenke – Den URL-vennlige versjonen av navnet. Den er vanligvis i små bokstaver og inneholder bare bokstaver, tall og bindestreker." #: wp-admin/custom-background.php:92 msgid "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." msgstr "Du kan endre utseendet til nettstedet ditt uten å røre noe av temakoden ved å bruke en egendefinert bakgrunn. Din bakgrunn kan være et bilde eller en farge." -#: wp-admin/edit-tags.php:263 -msgid "Slug — The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens." -msgstr "Permalenke – Den URL-vennlige versjonen av navnet. Den er vanligvis i små bokstaver og inneholder bare bokstaver, tall og bindestreker." +#: wp-admin/custom-background.php:95 +msgid "Don’t forget to click on the Save Changes button when you are finished." +msgstr "Ikke velg å trykke på \"Lagre endringer\"-knappen når du er ferdig." -#: wp-admin/edit-form-advanced.php:379 -msgid "You can also create posts with the Press This bookmarklet." -msgstr "Du kan også lage innlegg med bokmerkeskriptet Skriv om dette." - -#: wp-admin/user-edit.php:41 -msgid "Your username cannot be changed, but you can use other fields to enter your real name or a nickname, and change which name to display on your posts." -msgstr "Ditt brukernavn kan ikke endres, men du kan bruke andre felt for å skrive inn ditt riktige navn eller et kallenavn, og bestemme hvilket navn som skal vises på dine innlegg." - -#: wp-admin/user-edit.php:43 -msgid "Required fields are indicated; the rest are optional. Profile information will only be displayed if your theme is set up to do so." -msgstr "Obligatoriske felt er merket; resten er valgfrie. Profilinformasjon vil kun bli vist hvis temaet er satt opp til å gjøre det." - -#: wp-admin/user-edit.php:44 -msgid "Remember to click the Update Profile button when you are finished." -msgstr "Husk å klikke på Oppdater profil-knappen når du er ferdig." - -#: wp-admin/user-new.php:199 +#: wp-admin/user-new.php:206 msgid "Editors can publish posts, manage posts as well as manage other people’s posts, etc." msgstr "Redaktører kan publisere innlegg og håndtere innlegg i tillegg til å håndtere andre brukeres innlegg, etc." -#: wp-admin/comment.php:46 -msgid "You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment." -msgstr "Du kan også moderere kommentaren fra denne skjermen med status-boksen, hvor du også kan endre tidsstempelet til kommentaren." +#: wp-admin/user-edit.php:45 +msgid "Remember to click the Update Profile button when you are finished." +msgstr "Husk å klikke på Oppdater profil-knappen når du er ferdig." + +#: wp-admin/user-edit.php:44 +msgid "Required fields are indicated; the rest are optional. Profile information will only be displayed if your theme is set up to do so." +msgstr "Obligatoriske felt er merket; resten er valgfrie. Profilinformasjon vil kun bli vist hvis temaet er satt opp til å gjøre det." + +#: wp-admin/user-edit.php:42 +msgid "Your username cannot be changed, but you can use other fields to enter your real name or a nickname, and change which name to display on your posts." +msgstr "Ditt brukernavn kan ikke endres, men du kan bruke andre felt for å skrive inn ditt riktige navn eller et kallenavn, og bestemme hvilket navn som skal vises på dine innlegg." #: wp-admin/comment.php:45 msgid "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." msgstr "Du kan redigere informasjonen som er gitt i en kommentar ved behov. Dette kan være hvis du merker at en kommentator har gjort en typografisk feil." -#: wp-admin/options-general.php:34 -msgid "UTC means Coordinated Universal Time." -msgstr "UTC betyr Universal Time Coordinated, eller koordinert universell tid." +#: wp-admin/comment.php:46 +msgid "You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment." +msgstr "Du kan også moderere kommentaren fra denne skjermen med status-boksen, hvor du også kan endre tidsstempelet til kommentaren." -#: wp-admin/options-general.php:25 -msgid "The fields on this screen determine some of the basics of your site setup." -msgstr "Feltene på denne skjermen bestemmer noe av det grunnleggende av oppsettet til nettstedet ditt." - -#: wp-admin/options-reading.php:23 -msgid "This screen contains the settings that affect the display of your content." -msgstr "Dette skjermbildet inneholder innstillinger som påvirker visningen av innholdet." +#: wp-admin/options-general.php:29 +msgid "The WordPress URL and the Site URL can be the same (example.com) or different; for example, having the WordPress core files (example.com/wordpress) in a subdirectory instead of the root directory." +msgstr "WordPress URL-en og nettstedadressen kan være de samme (eksempel.no) eller forskjellige, for eksempel å ha WordPress' kjernefiler (eksempel.no/wordpress) i en underkatalog i stedet for rotkatalogen." #: wp-admin/options-discussion.php:23 wp-admin/options-general.php:35 #: wp-admin/options-media.php:24 wp-admin/options-permalink.php:23 @@ -6758,51 +6882,59 @@ msgstr "Dette skjermbildet inneholder innstillinger som påvirker visningen av i msgid "You must click the Save Changes button at the bottom of the screen for new settings to take effect." msgstr "Husk å trykke på \"Lagre endringer\" knappen nederst på skjermen for at nye endringer skal kunne aktiveres." -#: wp-admin/options-general.php:29 -msgid "The WordPress URL and the Site URL can be the same (example.com) or different; for example, having the WordPress core files (example.com/wordpress) in a subdirectory instead of the root directory." -msgstr "WordPress URL-en og nettstedadressen kan være de samme (eksempel.no) eller forskjellige, for eksempel å ha WordPress' kjernefiler (eksempel.no/wordpress) i en underkatalog i stedet for rotkatalogen." +#: wp-admin/options-reading.php:23 +msgid "This screen contains the settings that affect the display of your content." +msgstr "Dette skjermbildet inneholder innstillinger som påvirker visningen av innholdet." + +#: wp-admin/options-general.php:25 +msgid "The fields on this screen determine some of the basics of your site setup." +msgstr "Feltene på denne skjermen bestemmer noe av det grunnleggende av oppsettet til nettstedet ditt." + +#: wp-admin/options-general.php:34 +msgid "UTC means Coordinated Universal Time." +msgstr "UTC betyr Universal Time Coordinated, eller koordinert universell tid." #: wp-admin/edit-link-form.php:59 msgid "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." msgstr "Boksene for lenkenavn, nettadresse og beskrivelse har faste plasser, men de andre kan bli flyttet ved hjelp av dra-og-slipp-metoden. Du kan også skjule bokser som du ikke bruker i fanen for Visningsinnstillinger, eller minimere bokser ved å klikke på tittelfeltet til boksen." -#: wp-admin/update-core.php:208 -msgid "While your site is being updated, it will be in maintenance mode. As soon as your updates are complete, your site will return to normal." -msgstr "Mens ditt nettsted blir oppdatert, vil det være i vedlikeholdsmodus. Så snart dine oppdateringer er fullført, vil nettstedet gå tilbake til normal drift." - -#: wp-admin/update-core.php:229 -msgid "Your plugins are all up to date." -msgstr "Alle dine utvidelser er oppdaterte." - -#: wp-admin/update-core.php:163 -msgid "You have the latest version of WordPress." -msgstr "Du har den siste versjonen av WordPress." - -#: wp-admin/update-core.php:341 -msgid "Your themes are all up to date." -msgstr "Alle dine temaer er oppdaterte." - -#: wp-admin/update-core.php:185 +#: wp-admin/update-core.php:187 msgid "An updated version of WordPress is available." msgstr "Det finnes en oppdatert versjon av WordPress tilgjengelig." -#: wp-admin/plugin-editor.php:159 wp-admin/theme-editor.php:145 +#: wp-admin/update-core.php:338 +msgid "Your themes are all up to date." +msgstr "Alle dine temaer er oppdaterte." + +#: wp-admin/update-core.php:165 +msgid "You have the latest version of WordPress." +msgstr "Du har den siste versjonen av WordPress." + +#: wp-admin/update-core.php:226 +msgid "Your plugins are all up to date." +msgstr "Alle dine utvidelser er oppdaterte." + +#: wp-admin/update-core.php:210 +msgid "While your site is being updated, it will be in maintenance mode. As soon as your updates are complete, your site will return to normal." +msgstr "Mens ditt nettsted blir oppdatert, vil det være i vedlikeholdsmodus. Så snart dine oppdateringer er fullført, vil nettstedet gå tilbake til normal drift." + +#: wp-admin/plugin-editor.php:171 wp-admin/theme-editor.php:145 msgid "Function Name…" msgstr "Funksjonsnavn…" -#: wp-admin/edit-link-form.php:58 -msgid "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." -msgstr "Du kan legge til eller redigere lenker på denne skjermen ved å skrive inn informasjon i disse boksene. Kun lenkens nettadresse og navn (teksten du vil vise på ditt nettsted som lenken) er obligatoriske felt." - -#: wp-admin/includes/class-plugin-installer-skin.php:65 -msgid "Return to Importers" -msgstr "Gå tilbake til importererne" - #: wp-admin/includes/class-plugin-installer-skin.php:55 msgid "Activate Plugin & Run Importer" msgstr "Aktiver utvidelse & kjør import" -#: wp-admin/edit-tags.php:591 +#: wp-admin/includes/class-plugin-installer-skin.php:65 +msgid "Return to Importers" +msgstr "Gå tilbake til importererne" + +#: wp-admin/edit-link-form.php:58 +msgid "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." +msgstr "Du kan legge til eller redigere lenker på denne skjermen ved å skrive inn informasjon i disse boksene. Kun lenkens nettadresse og navn (teksten du vil vise på ditt nettsted som lenken) er obligatoriske felt." + +#: wp-admin/edit-tags.php:545 msgid "Categories can be selectively converted to tags using the category to tag converter." msgstr "Kategorier kan selektivt konverteres til stikkord ved hjelp av kategori til stikkord-omformer." @@ -6811,156 +6943,152 @@ msgctxt "nav menu front page title" msgid "Home: %s" msgstr "Hjem: %s" -#: wp-admin/import.php:62 wp-admin/users.php:235 +#: wp-admin/import.php:62 wp-admin/themes.php:180 wp-admin/users.php:235 msgid "ERROR:" msgstr "FEIL:" -#: wp-admin/edit-form-advanced.php:263 wp-admin/edit-form-advanced.php:467 -msgid "Page Attributes" -msgstr "Sideattributter" - -#: wp-admin/import.php:23 -msgid "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." -msgstr "Dette skjermbildet lister lenker til utvidleser for å importere data fra blogge- og publiseringsplattformer. Velg plattformen du vil importere fra, og klikk Installer nå når du blir bedt i popup-vinduet. Hvis plattformen ikke er oppført, klikker du på lenken for å søke i utvidelseskatalogen etter andre importutvidelser for å se om det er noen for din plattform." - #: wp-admin/export.php:49 msgid "Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format." msgstr "Når den er generert, kan din WXR-fil importeres av en annen WordPress-side, eller av en annen bloggeplattform som kan bruke dette formatet." -#: wp-admin/link-manager.php:49 -msgid "You can customize the display of this screen using the Screen Options tab and/or the dropdown filters above the links table." -msgstr "Du kan tilpasse visningen av denne skjermen ved å bruke fanen for Visningsinnstillinger og/eller nedtrekksmenyene over lenketabellen." +#: wp-admin/import.php:23 +msgid "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." +msgstr "Dette skjermbildet lister lenker til utvidleser for å importere data fra blogge- og publiseringsplattformer. Velg plattformen du vil importere fra, og klikk Installer nå når du blir bedt i popup-vinduet. Hvis plattformen ikke er oppført, klikker du på lenken for å søke i utvidelseskatalogen etter andre importutvidelser for å se om det er noen for din plattform." -#: wp-admin/plugin-editor.php:134 +#: wp-admin/plugin-editor.php:146 msgid "Choose a plugin to edit from the dropdown menu and click the Select button. Click once on any file name to load it in the editor, and make your changes. Don’t forget to save your changes (Update File) when you’re finished." msgstr "Velg en utvidelse som du vil redigere oppe til høyre og klikk Velg-knappen. Klikk én gang på et filnavn for å laste den inn i redigereren, og gjør dine endringer. Husk å lagre dine endringer (Oppdater fil) når du er ferdig." -#: wp-admin/plugins.php:385 +#: wp-admin/link-manager.php:55 +msgid "You can customize the display of this screen using the Screen Options tab and/or the dropdown filters above the links table." +msgstr "Du kan tilpasse visningen av denne skjermen ved å bruke fanen for Visningsinnstillinger og/eller nedtrekksmenyene over lenketabellen." + +#: wp-admin/plugins.php:399 msgid "Most of the time, plugins play nicely with the core of WordPress and with other plugins. Sometimes, though, a plugin’s code will get in the way of another plugin, causing compatibility issues. If your site starts doing strange things, this may be the problem. Try deactivating all your plugins and re-activating them in various combinations until you isolate which one(s) caused the issue." msgstr "For det meste fungerer utvidelser fint med WordPress-kjernen og andre utvidelser. Men, noen ganger vil koden til en utvidelse komme i veien for en annen utvidelse, og da får vi kompabilitetsproblemer. Hvis ditt nettsted begynner å gjøre uventede ting, kan dette være problemet. Prøv å deaktivere alle utvidelsene og så reaktivere dem enkeltvis eller i ulike kombinasjoner inntil du finner ut av hvilke(t) som laget problemet." -#: wp-admin/widgets.php:61 -msgid "Widgets may be used multiple times. You can give each widget a title, to display on your site, but it’s not required." -msgstr "Widgeter kan brukes flere ganger. Du kan gi hver enkelt widget en egen tittel som vises på ditt nettsted, men du må ikke." - -#: wp-admin/widgets.php:62 -msgid "Enabling Accessibility Mode, via Screen Options, allows you to use Add and Edit buttons instead of using drag and drop." -msgstr "Når du aktiverer tilgengelighetstilstand via fanen Visningsinnstillinger, kan du bruke Legg til- og og Rediger-knappene istedenfor å bruke dra-og-slipp." - -#: wp-admin/theme-editor.php:27 -msgid "You can use the Theme Editor to edit the individual CSS and PHP files which make up your theme." -msgstr "Du kan bruke temaredigereren for å endre individuelle CSS- og PHP-filene som utgjør ditt tema." - -#: wp-admin/theme-editor.php:28 -msgid "Begin by choosing a theme to edit from the dropdown menu and clicking the Select button. A list then appears of the theme’s template files. Clicking once on any file name causes the file to appear in the large Editor box." -msgstr "Begynn med å velge et tema som du skal redigere fra nedtrekksmenyen og klikk Velg. Da ser du en liste med alle mal-filene. Når du klikker på en fil, vil du se innholdet i den store redigeringsboksen." - -#: wp-admin/widgets.php:53 -msgid "Widgets are independent sections of content that can be placed into any widgetized area provided by your theme (commonly called sidebars). To populate your sidebars/widget areas with individual widgets, drag and drop the title bars into the desired area. By default, only the first widget area is expanded. To populate additional widget areas, click on their title bars to expand them." -msgstr "Widgeter er uavhengige seksjoner med innhold som kan plasseres i et widgetområde som bestemmes i temaet (de kalles ofte sidekolonner). For å fylle sidekolonnene/widgetområdene med widgeter, dra og slipp titlene til ønsket område. Som standard vil kun det første widgetområdet være åpnet. For å åpne flere widgetområder, klikk på tittelområdet for å utvide dem." - -#: wp-admin/theme-editor.php:32 -msgid "Advice: think very carefully about your site crashing if you are live-editing the theme currently in use." -msgstr "Tips: tenk nøye på at ditt nettsted kan bli utilgjengelig hvis du redigerer temaet som brukes nå." - #: wp-admin/theme-editor.php:31 msgid "After typing in your edits, click Update File." msgstr "Etter at du har skrevet inn dine endringer, klikk Oppdater fil." -#: wp-admin/includes/meta-boxes.php:795 +#: wp-admin/theme-editor.php:32 +msgid "Advice: think very carefully about your site crashing if you are live-editing the theme currently in use." +msgstr "Tips: tenk nøye på at ditt nettsted kan bli utilgjengelig hvis du redigerer temaet som brukes nå." + +#: wp-admin/widgets.php:53 +msgid "Widgets are independent sections of content that can be placed into any widgetized area provided by your theme (commonly called sidebars). To populate your sidebars/widget areas with individual widgets, drag and drop the title bars into the desired area. By default, only the first widget area is expanded. To populate additional widget areas, click on their title bars to expand them." +msgstr "Widgeter er uavhengige seksjoner med innhold som kan plasseres i et widgetområde som bestemmes i temaet (de kalles ofte sidekolonner). For å fylle sidekolonnene/widgetområdene med widgeter, dra og slipp titlene til ønsket område. Som standard vil kun det første widgetområdet være åpnet. For å åpne flere widgetområder, klikk på tittelområdet for å utvide dem." + +#: wp-admin/theme-editor.php:28 +msgid "Begin by choosing a theme to edit from the dropdown menu and clicking the Select button. A list then appears of the theme’s template files. Clicking once on any file name causes the file to appear in the large Editor box." +msgstr "Begynn med å velge et tema som du skal redigere fra nedtrekksmenyen og klikk Velg. Da ser du en liste med alle mal-filene. Når du klikker på en fil, vil du se innholdet i den store redigeringsboksen." + +#: wp-admin/theme-editor.php:27 +msgid "You can use the Theme Editor to edit the individual CSS and PHP files which make up your theme." +msgstr "Du kan bruke temaredigereren for å endre individuelle CSS- og PHP-filene som utgjør ditt tema." + +#: wp-admin/widgets.php:62 +msgid "Enabling Accessibility Mode, via Screen Options, allows you to use Add and Edit buttons instead of using drag and drop." +msgstr "Når du aktiverer tilgengelighetstilstand via fanen Visningsinnstillinger, kan du bruke Legg til- og og Rediger-knappene istedenfor å bruke dra-og-slipp." + +#: wp-admin/widgets.php:61 +msgid "Widgets may be used multiple times. You can give each widget a title, to display on your site, but it’s not required." +msgstr "Widgeter kan brukes flere ganger. Du kan gi hver enkelt widget en egen tittel som vises på ditt nettsted, men du må ikke." + +#: wp-admin/includes/meta-boxes.php:805 msgid "(no parent)" msgstr "(ingen forelder)" #: wp-admin/edit-form-advanced.php:462 -msgid "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." -msgstr "Mal – Noen temaer har egendefinerte maler som du kan bruke på spesielle sider. Malene kan ha ekstra funksjonalitet eller eget utseende. Hvis det er tilfelle vil du se dem i denne nedtrekksmenyen." - -#: wp-admin/edit-form-advanced.php:461 msgid "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." msgstr "Forelder – Du kan organisere sidene dine i hierarkier. Du kan for eksempel ha en «Om meg»-side som har «Livshistorie»- og «Min hund»-sider under seg. Det er ingen begrensning på hvor mange sider du kan ha under hverandre." +#: wp-admin/edit-form-advanced.php:463 +msgid "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." +msgstr "Mal – Noen temaer har egendefinerte maler som du kan bruke på spesielle sider. Malene kan ha ekstra funksjonalitet eller eget utseende. Hvis det er tilfelle vil du se dem i denne nedtrekksmenyen." + #: wp-admin/includes/class-bulk-upgrader-skin.php:47 msgid "All updates have been completed." msgstr "Alle oppgraderinger har blitt fullført." -#: wp-admin/edit-tags.php:257 -msgid "When adding a new tag on this screen, you’ll fill in the following fields:" -msgstr "Når du legger til et nytt stikkord på denne skjermen, kommer du til å fylle inn følgende felter:" - -#: wp-admin/edit-tags.php:236 -msgid "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." -msgstr "Du kan bruke kategorier for å definere seksjoner av ditt nettsted og grupperelaterte innlegg. Standardkategorien er «Ukategorisert» inntil du endrer dette i skriveinnstillingene." - -#: wp-admin/edit-tags.php:245 -msgid "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." -msgstr "Hva er forskjellen mellom kategorier og stikkord? Normalt er stikkord ad-hoc-nøkler som viser viktig informasjon i ditt innlegg (navn, emne, osv.) som kan (men trenger ikke å) gjentas i andre innlegg, mens kategorier er forhåndsbestemte seksjoner. Hvis du tenker på ditt nettsted som en bok, er kategoriene som innholdsfortegnelsen mens stikkordene er som registeret." - -#: wp-admin/edit-tags.php:270 -msgid "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." -msgstr "Du kan endre visningen på denne skjermen ved å bruke fanen Visningsinnstillinger, for eksempel for å bestemme hvor mange elementer som skal vises på hvert skjermbilde og for å vise eller skjule kolonner i tabellen." - -#: wp-admin/edit-tags.php:268 -msgid "Description — The description is not prominent by default; however, some themes may display it." -msgstr "Beskrivelse – Beskrivelsen vises ikke som standard, men noen temaer kan gjøre det." - -#: wp-admin/edit-tags.php:260 -msgid "Name — The name is how it appears on your site." -msgstr "Navn – Navnet, slik det vises på nettstedet ditt." - -#: wp-admin/edit-tags.php:255 +#: wp-admin/edit-tags.php:237 msgid "When adding a new category on this screen, you’ll fill in the following fields:" msgstr "Når du legger til en ny kategori på denne skjermen, kommer du til å fylle inn følgende felter:" -#: wp-admin/custom-header.php:619 -msgid "Default Images" -msgstr "Standardbilder" +#: wp-admin/edit-tags.php:242 +msgid "Name — The name is how it appears on your site." +msgstr "Navn – Navnet, slik det vises på nettstedet ditt." -#: wp-admin/custom-header.php:801 -msgid "Crop Header Image" -msgstr "Beskjær toppbilde" +#: wp-admin/edit-tags.php:250 +msgid "Description — The description is not prominent by default; however, some themes may display it." +msgstr "Beskrivelse – Beskrivelsen vises ikke som standard, men noen temaer kan gjøre det." -#: wp-admin/custom-header.php:636 -msgid "This will remove the header image. You will not be able to restore any customizations." -msgstr "Dette vil fjerne toppbildet. Alle tilpasninger du har gjort vil bli borte." +#: wp-admin/edit-tags.php:252 +msgid "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." +msgstr "Du kan endre visningen på denne skjermen ved å bruke fanen Visningsinnstillinger, for eksempel for å bestemme hvor mange elementer som skal vises på hvert skjermbilde og for å vise eller skjule kolonner i tabellen." -#: wp-admin/custom-header.php:637 -msgid "Remove Header Image" -msgstr "Fjern toppbilde" +#: wp-admin/edit-tags.php:227 +msgid "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." +msgstr "Hva er forskjellen mellom kategorier og stikkord? Normalt er stikkord ad-hoc-nøkler som viser viktig informasjon i ditt innlegg (navn, emne, osv.) som kan (men trenger ikke å) gjentas i andre innlegg, mens kategorier er forhåndsbestemte seksjoner. Hvis du tenker på ditt nettsted som en bok, er kategoriene som innholdsfortegnelsen mens stikkordene er som registeret." -#: wp-admin/custom-header.php:645 -msgid "Reset Image" -msgstr "Tilbakestill bilde" +#: wp-admin/edit-tags.php:218 +msgid "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." +msgstr "Du kan bruke kategorier for å definere seksjoner av ditt nettsted og grupperelaterte innlegg. Standardkategorien er «Ukategorisert» inntil du endrer dette i skriveinnstillingene." -#: wp-admin/custom-header.php:647 -msgid "This will restore the original header image. You will not be able to restore any customizations." -msgstr "Dette vil gjenopprette det originale toppbildet. Alle tilpasninger du har gjort vil bli borte." - -#: wp-admin/custom-header.php:648 -msgid "Restore Original Header Image" -msgstr "Hent tilbake det originale toppbildet" - -#: wp-admin/custom-header.php:671 -msgid "Text Color" -msgstr "Tekstfarge" - -#: wp-admin/custom-header.php:851 -msgid "Image Upload Error" -msgstr "Bildeopplastingsfeil" +#: wp-admin/edit-tags.php:239 +msgid "When adding a new tag on this screen, you’ll fill in the following fields:" +msgstr "Når du legger til et nytt stikkord på denne skjermen, kommer du til å fylle inn følgende felter:" #: wp-admin/custom-header.php:805 msgid "You need JavaScript to choose a part of the image." msgstr "Du trenger JavaScript for å velge en del av bildet." +#: wp-admin/custom-header.php:851 +msgid "Image Upload Error" +msgstr "Bildeopplastingsfeil" + +#: wp-admin/custom-header.php:671 +msgid "Text Color" +msgstr "Tekstfarge" + +#: wp-admin/custom-header.php:648 +msgid "Restore Original Header Image" +msgstr "Hent tilbake det originale toppbildet" + +#: wp-admin/custom-header.php:647 +msgid "This will restore the original header image. You will not be able to restore any customizations." +msgstr "Dette vil gjenopprette det originale toppbildet. Alle tilpasninger du har gjort vil bli borte." + +#: wp-admin/custom-header.php:645 +msgid "Reset Image" +msgstr "Tilbakestill bilde" + +#: wp-admin/custom-header.php:637 +msgid "Remove Header Image" +msgstr "Fjern toppbilde" + +#: wp-admin/custom-header.php:636 +msgid "This will remove the header image. You will not be able to restore any customizations." +msgstr "Dette vil fjerne toppbildet. Alle tilpasninger du har gjort vil bli borte." + +#: wp-admin/custom-header.php:801 +msgid "Crop Header Image" +msgstr "Beskjær toppbilde" + +#: wp-admin/custom-header.php:619 +msgid "Default Images" +msgstr "Standardbilder" + +#: wp-admin/includes/class-wp-comments-list-table.php:578 +#: wp-admin/includes/dashboard.php:639 +msgid "Delete this comment permanently" +msgstr "Slett denne kommentaren permanent" + #: wp-admin/includes/class-wp-comments-list-table.php:574 msgid "Restore this comment from the Trash" msgstr "Gjenopprett denne kommentaren fra papirkurven" -#: wp-admin/includes/class-wp-comments-list-table.php:578 -#: wp-admin/includes/dashboard.php:636 -msgid "Delete this comment permanently" -msgstr "Slett denne kommentaren permanent" - -#: wp-admin/includes/meta-boxes.php:660 +#: wp-admin/includes/meta-boxes.php:671 msgid "Allow comments." msgstr "Tillat kommentarer." @@ -6970,36 +7098,36 @@ msgstr "Tillat kommentarer." msgid "Return to WordPress Updates page" msgstr "Gå tilbake til WordPress-oppdateringer" -#. translators: %s: Featured Image -#: wp-admin/edit-form-advanced.php:441 -msgid "%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." -msgstr "%s – Dette lar deg velge et bilde som kobles til innlegget uten å sette det inn i teksten. Dette er vanligvis kun nyttig hvis ditt tema bruker fremhevede bilder («featured images» på engelsk) som miniatyrbilde på forsiden, egendefinert toppbilde, eller liknende." - -#: wp-admin/edit-form-advanced.php:364 -msgid "Title — Enter a title for your post. After you enter a title, you’ll see the permalink below, which you can edit." -msgstr "Tittel – Skriv inn en tittel for ditt innlegg. Etter at du har skrevet en tittel, vil du se permalenken nedenfor, som du kan velge å redigere." - -#: wp-admin/edit-form-advanced.php:453 +#: wp-admin/edit-form-advanced.php:454 msgid "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." msgstr "Diskusjon – Du kan skru av eller på kommentarer og tilbakeping, og hvis det er kommentarer til innlegget, kan du se dem her og moderere dem." -#: wp-admin/edit.php:199 -msgid "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." -msgstr "Du kan snevre inn listen slik at du kun viser innlegg i en bestemt kategori eller fra en bestemt måned ved å bruke nedtrekksmenyene over innleggslisten. Klikk på Filter-knappen etter at du har gjort ditt valg. Du kan også snevre inn listen ved å klikke på innleggsforfatter, kategori eller stikkord i innleggslisten." +#: wp-admin/edit-form-advanced.php:365 +msgid "Title — Enter a title for your post. After you enter a title, you’ll see the permalink below, which you can edit." +msgstr "Tittel – Skriv inn en tittel for ditt innlegg. Etter at du har skrevet en tittel, vil du se permalenken nedenfor, som du kan velge å redigere." -#: wp-admin/edit.php:196 -msgid "You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab." -msgstr "Du kan vise eller skjule kolonner basert på dine behov og velge hvor mange innlegg som skal vises per skjermbilde ved å bruke fanen Visningsinnstillinger." +#. translators: %s: Featured Image +#: wp-admin/edit-form-advanced.php:442 +msgid "%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." +msgstr "%s – Dette lar deg velge et bilde som kobles til innlegget uten å sette det inn i teksten. Dette er vanligvis kun nyttig hvis ditt tema bruker fremhevede bilder («featured images» på engelsk) som miniatyrbilde på forsiden, egendefinert toppbilde, eller liknende." + +#: wp-admin/edit.php:210 +msgid "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:" +msgstr "Når du fører pekeren over en rad i innleggslisten vil du se handlingslenker som lar deg håndtere innlegget. Du kan utføre disse handlingene:" #: wp-admin/users.php:39 msgid "You can customize the display of this screen in a number of ways:" msgstr "Du kan tilpasse visningen på denne skjermen på mange ulike måter:" -#: wp-admin/edit.php:206 -msgid "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:" -msgstr "Når du fører pekeren over en rad i innleggslisten vil du se handlingslenker som lar deg håndtere innlegget. Du kan utføre disse handlingene:" +#: wp-admin/edit.php:200 +msgid "You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab." +msgstr "Du kan vise eller skjule kolonner basert på dine behov og velge hvor mange innlegg som skal vises per skjermbilde ved å bruke fanen Visningsinnstillinger." -#: wp-admin/plugins.php:512 +#: wp-admin/edit.php:203 +msgid "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." +msgstr "Du kan snevre inn listen slik at du kun viser innlegg i en bestemt kategori eller fra en bestemt måned ved å bruke nedtrekksmenyene over innleggslisten. Klikk på Filter-knappen etter at du har gjort ditt valg. Du kan også snevre inn listen ved å klikke på innleggsforfatter, kategori eller stikkord i innleggslisten." + +#: wp-admin/plugins.php:526 msgid "Search Installed Plugins" msgstr "Søk i installerte utvidelser" @@ -7012,7 +7140,7 @@ msgstr "Det aktive temaet støtter ikke menyer eller widgeter." msgid "Categories and Tags Converter" msgstr "Kategorier og stikkord konverterer" -#: wp-admin/includes/nav-menu.php:389 +#: wp-admin/includes/nav-menu.php:398 msgid "Most Recent" msgstr "Siste" @@ -7020,25 +7148,20 @@ msgstr "Siste" msgid "Start date:" msgstr "Startdato:" -#: wp-admin/theme-editor.php:222 -msgctxt "Theme stylesheets in theme editor" -msgid "Styles" -msgstr "Stiler" - -#: wp-admin/includes/plugin-install.php:263 -msgctxt "Plugin Installer" -msgid "Tag" -msgstr "Stikkord" - #: wp-admin/includes/theme-install.php:69 msgctxt "Theme Installer" msgid "Tag" msgstr "Stikkord" -#: wp-admin/includes/media.php:2229 -msgctxt "verb" -msgid "Clear" -msgstr "Fjern" +#: wp-admin/includes/plugin-install.php:285 +msgctxt "Plugin Installer" +msgid "Tag" +msgstr "Stikkord" + +#: wp-admin/theme-editor.php:222 +msgctxt "Theme stylesheets in theme editor" +msgid "Styles" +msgstr "Stiler" #: wp-admin/comment.php:115 #: wp-admin/includes/class-wp-comments-list-table.php:297 @@ -7046,28 +7169,28 @@ msgctxt "comment" msgid "Mark as Spam" msgstr "Merk som spam" -#: wp-admin/custom-background.php:245 +#: wp-admin/includes/media.php:2237 +msgctxt "verb" +msgid "Clear" +msgstr "Fjern" + +#: wp-admin/custom-background.php:294 msgid "Remove Background Image" msgstr "Fjern bakgrunnsbilde" #. translators: %s: post title #. translators: %s: link to post -#: wp-admin/edit-comments.php:127 wp-admin/edit-comments.php:184 +#: wp-admin/edit-comments.php:143 wp-admin/edit-comments.php:200 msgid "Comments on “%s”" msgstr "Kommentarer til «%s»" -#: wp-admin/includes/nav-menu.php:966 +#: wp-admin/includes/nav-menu.php:976 msgid "Show advanced menu properties" msgstr "Vis avanserte menyegenskaper" -#. translators: %s: add new taxonomy label -#: wp-admin/includes/meta-boxes.php:505 -msgid "+ %s" -msgstr "+ %s" - #. translators: 1: plugin version, 2: new version #. translators: 1: theme version, 2: new version -#: wp-admin/update-core.php:309 wp-admin/update-core.php:381 +#: wp-admin/update-core.php:306 wp-admin/update-core.php:378 msgid "You have version %1$s installed. Update to %2$s." msgstr "Du bruker versjon %1$s. Oppgrader til %2$s." @@ -7077,221 +7200,217 @@ msgctxt "comment" msgid "Not Spam" msgstr "Ikke spam" -#: wp-admin/custom-background.php:260 +#: wp-admin/custom-background.php:309 msgid "This will restore the original background image. You will not be able to restore any customizations." msgstr "Dette vil gjenopprette det originale bakgrunnsbildet. Alle tilpasninger du har gjort vil bli borte." -#: wp-admin/includes/dashboard.php:1103 +#: wp-admin/includes/dashboard.php:1106 msgid "WordPress Blog" msgstr "WordPress blogg" -#: wp-admin/user-edit.php:320 wp-admin/user-edit.php:322 -msgid "— No role for this site —" -msgstr "— Ingen rolle på dette nettstedet —" - -#: wp-admin/tools.php:42 -msgid "Use Press This to clip text, images and videos from any web page. Then edit and add more straight from Press This before you save or publish it in a post on your site." -msgstr "Bruk «Skriv om dette» for å klippe tekst, bilder og film fra en nettside. Etterpå kan du redigere og legge til mer fra «Skriv om dette» før du lagrer eller publiserer det som et innlegg på ditt nettsted." - #: wp-admin/users.php:366 msgid "Remove Users from Site" msgstr "Fjern brukere fra nettstedet" -#: wp-admin/includes/post.php:726 -msgid "Sorry, you are not allowed to create posts or drafts on this site." -msgstr "Beklager, du har ikke lov til å opprette innlegg eller utkast på dette nettstedet." +#: wp-admin/tools.php:42 +msgid "Use Press This to clip text, images and videos from any web page. Then edit and add more straight from Press This before you save or publish it in a post on your site." +msgstr "Bruk «Skriv om dette» for å klippe tekst, bilder og film fra en nettside. Etterpå kan du redigere og legge til mer fra «Skriv om dette» før du lagrer eller publiserer det som et innlegg på ditt nettsted." -#: wp-admin/includes/plugin.php:429 -msgid "Custom site deleted message." -msgstr "Tilpasset beskjed for slettet nettsted." +#: wp-admin/user-edit.php:355 wp-admin/user-edit.php:357 +msgid "— No role for this site —" +msgstr "— Ingen rolle på dette nettstedet —" -#: wp-admin/includes/plugin.php:431 -msgid "Custom site suspended message." -msgstr "Tilpasset melding for suspendert nettsted" - -#: wp-admin/includes/plugin.php:430 -msgid "Custom site inactive message." -msgstr "Tilpasset beskjed for ikke aktivt nettsted." - -#: wp-admin/includes/post.php:724 -msgid "Sorry, you are not allowed to create pages on this site." -msgstr "Beklager, du har ikke lov til å opprette sider på dette nettstedet." +#: wp-admin/includes/upgrade.php:395 +msgid "New WordPress Site" +msgstr "Nytt WordPress-nettsted" #: wp-admin/includes/schema.php:396 msgid "My Site" msgstr "Mitt nettsted" -#: wp-admin/includes/upgrade.php:392 -msgid "New WordPress Site" -msgstr "Nytt WordPress-nettsted" +#: wp-admin/includes/post.php:726 +msgid "Sorry, you are not allowed to create pages on this site." +msgstr "Beklager, du har ikke lov til å opprette sider på dette nettstedet." + +#: wp-admin/includes/plugin.php:430 +msgid "Custom site inactive message." +msgstr "Tilpasset beskjed for ikke aktivt nettsted." + +#: wp-admin/includes/plugin.php:431 +msgid "Custom site suspended message." +msgstr "Tilpasset melding for suspendert nettsted" + +#: wp-admin/includes/plugin.php:429 +msgid "Custom site deleted message." +msgstr "Tilpasset beskjed for slettet nettsted." + +#: wp-admin/includes/post.php:728 +msgid "Sorry, you are not allowed to create posts or drafts on this site." +msgstr "Beklager, du har ikke lov til å opprette innlegg eller utkast på dette nettstedet." #: wp-admin/import.php:68 msgid "If you have posts or comments in another system, WordPress can import those into this site. To get started, choose a system to import from below:" msgstr "Hvis du har innlegg eller kommentarer i et annet system, kan WordPress importere dem til dette nettstedet. Velg systemet du vil importere fra for å komme i gang:" -#: wp-admin/includes/nav-menu.php:337 wp-admin/includes/nav-menu.php:621 +#: wp-admin/includes/nav-menu.php:345 wp-admin/includes/nav-menu.php:630 msgid "No items." msgstr "Ingen valg." -#. translators: %s: asterisk symbol (*) -#: wp-admin/includes/schema.php:1097 -msgid "To use a subdomain configuration, you must have a wildcard entry in your DNS. This usually means adding a %s hostname record pointing at your web server in your DNS configuration tool." -msgstr "For å bruke en underdomenekonfigurasjon må du ha en wildcard-innstilling i DNS-en din. Dette betyr vanligvis å legge til hostname-oppføringen %s som peker til din nettjener i din DNS-konfigurasjon." - #. translators: %s: host name #: wp-admin/includes/schema.php:1086 msgid "The installer attempted to contact a random hostname (%s) on your domain." msgstr "Installeringen forsøkte å kontakte en tilfeldig tjener (%s) på ditt domene." +#. translators: %s: asterisk symbol (*) +#: wp-admin/includes/schema.php:1097 +msgid "To use a subdomain configuration, you must have a wildcard entry in your DNS. This usually means adding a %s hostname record pointing at your web server in your DNS configuration tool." +msgstr "For å bruke en underdomenekonfigurasjon må du ha en wildcard-innstilling i DNS-en din. Dette betyr vanligvis å legge til hostname-oppføringen %s som peker til din nettjener i din DNS-konfigurasjon." + #: wp-admin/nav-menus.php:245 msgid "The menu item has been successfully deleted." msgstr "Menyvalget ble slettet." -#: wp-admin/includes/class-wp-plugin-install-list-table.php:236 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:235 #: wp-admin/includes/class-wp-theme-install-list-table.php:145 -#: wp-admin/setup-config.php:249 +#: wp-admin/setup-config.php:247 msgid "Try again" msgstr "Prøv igjen" -#: wp-admin/includes/ajax-actions.php:1296 +#: wp-admin/includes/ajax-actions.php:1288 msgid "Please provide a custom field name." msgstr "Vennligst angi et egendefinert feltnavn." -#: wp-admin/custom-background.php:290 -msgid "Display Options" -msgstr "Visningsinnstillinger" - -#: wp-admin/custom-background.php:241 wp-admin/custom-header.php:634 +#: wp-admin/custom-background.php:290 wp-admin/custom-header.php:634 msgid "Remove Image" msgstr "Fjern bilde" -#: wp-admin/users.php:371 -msgid "You have specified these users for removal:" -msgstr "Du har angitt at du vil slette disse brukerne:" +#: wp-admin/custom-background.php:339 +msgid "Display Options" +msgstr "Visningsinnstillinger" -#: wp-admin/users.php:148 wp-admin/users.php:197 -msgid "User deletion is not allowed from this screen." -msgstr "Sletting av brukere er ikke tillatt fra denne siden." +#: wp-admin/users.php:472 +msgid "Other users have been removed." +msgstr "Andre brukere har blitt slettet." -#: wp-admin/users.php:174 -msgid "You can’t delete that user." -msgstr "Du kan ikke slette den brukeren." - -#: wp-admin/users.php:396 -msgid "Confirm Removal" -msgstr "Bekreft fjerning" +#: wp-admin/users.php:471 +msgid "You can't remove the current user." +msgstr "Du kan ikke slette gjeldende bruker." #: wp-admin/users.php:398 msgid "There are no valid users selected for removal." msgstr "Ingen gyldige brukere er angitt for sletting." -#: wp-admin/users.php:460 -msgid "You can't remove the current user." -msgstr "Du kan ikke slette gjeldende bruker." +#: wp-admin/users.php:396 +msgid "Confirm Removal" +msgstr "Bekreft fjerning" -#: wp-admin/users.php:461 -msgid "Other users have been removed." -msgstr "Andre brukere har blitt slettet." +#: wp-admin/users.php:148 wp-admin/users.php:197 +msgid "User deletion is not allowed from this screen." +msgstr "Sletting av brukere er ikke tillatt fra denne siden." + +#: wp-admin/users.php:371 +msgid "You have specified these users for removal:" +msgstr "Du har angitt at du vil slette disse brukerne:" + +#: wp-admin/includes/class-bulk-upgrader-skin.php:46 +msgid "Hide Details" +msgstr "Skjul detaljer" + +#: wp-admin/includes/class-bulk-upgrader-skin.php:46 +msgid "Show Details" +msgstr "Vis detaljer" #. translators: 1: Title of an update #: wp-admin/includes/class-bulk-upgrader-skin.php:46 msgid "%1$s updated successfully." msgstr "Oppdateringen av %1$s var vellykket." -#: wp-admin/includes/class-bulk-upgrader-skin.php:46 -msgid "Show Details" -msgstr "Vis detaljer" +#: wp-admin/includes/user.php:481 +msgid "No thanks, do not remind me again" +msgstr "Nei takk og ikke minn meg på dette igjen" -#: wp-admin/includes/class-bulk-upgrader-skin.php:46 -msgid "Hide Details" -msgstr "Skjul detaljer" - -#: wp-admin/includes/user.php:466 -msgid "Yes, take me to my profile page" -msgstr "Ja, gå til profilsiden min" - -#: wp-admin/includes/upgrade.php:80 +#: wp-admin/includes/upgrade.php:83 msgid "Your chosen password." msgstr "Ditt valgte passord." -#: wp-admin/includes/user.php:467 -msgid "No thanks, do not remind me again" -msgstr "Nei takk og ikke minn meg på dette igjen" +#: wp-admin/includes/user.php:480 +msgid "Yes, take me to my profile page" +msgstr "Ja, gå til profilsiden min" #: wp-admin/edit.php:144 wp-admin/edit.php:147 wp-admin/post.php:260 #: wp-admin/post.php:263 wp-admin/upload.php:162 msgid "Error in deleting." msgstr "Feil under sletting." -#: wp-admin/edit.php:128 wp-admin/post.php:240 wp-admin/upload.php:150 -msgid "Error in restoring from Trash." -msgstr "Feil under gjenoppretting fra papirkurven." - -#: wp-admin/edit.php:125 wp-admin/post.php:237 wp-admin/upload.php:147 -msgid "Sorry, you are not allowed to restore this item from the Trash." -msgstr "Beklager, du har ikke lov til å gjenopprette dette fra papirkurven." - -#: wp-admin/edit.php:114 wp-admin/post.php:222 wp-admin/upload.php:138 -msgid "Error in moving to Trash." -msgstr "Feil under flytting til papirkurven." - -#. translators: %s: number of comments restored from the Trash -#: wp-admin/edit-comments.php:254 -msgid "%s comment restored from the Trash" -msgid_plural "%s comments restored from the Trash" -msgstr[0] "%s kommentar gjenopprettet fra papirkurven" -msgstr[1] "%s kommentarer gjenopprettet fra papirkurven" +#: wp-admin/edit.php:106 wp-admin/post.php:214 wp-admin/upload.php:135 +msgid "Sorry, you are not allowed to move this item to the Trash." +msgstr "Beklager, du har ikke lov til å flytte dette til papirkurven." #. translators: %s: number of comments moved to the Trash -#: wp-admin/edit-comments.php:249 +#: wp-admin/edit-comments.php:265 msgid "%s comment moved to the Trash." msgid_plural "%s comments moved to the Trash." msgstr[0] "%s kommentar flyttet til papirkurven." msgstr[1] "%s kommentarer flyttet til papirkurven." -#: wp-admin/edit.php:106 wp-admin/post.php:214 wp-admin/upload.php:135 -msgid "Sorry, you are not allowed to move this item to the Trash." -msgstr "Beklager, du har ikke lov til å flytte dette til papirkurven." +#. translators: %s: number of comments restored from the Trash +#: wp-admin/edit-comments.php:270 +msgid "%s comment restored from the Trash" +msgid_plural "%s comments restored from the Trash" +msgstr[0] "%s kommentar gjenopprettet fra papirkurven" +msgstr[1] "%s kommentarer gjenopprettet fra papirkurven" -#: wp-admin/update-core.php:348 +#: wp-admin/edit.php:114 wp-admin/post.php:222 wp-admin/upload.php:138 +msgid "Error in moving to Trash." +msgstr "Feil under flytting til papirkurven." + +#: wp-admin/edit.php:125 wp-admin/post.php:237 wp-admin/upload.php:147 +msgid "Sorry, you are not allowed to restore this item from the Trash." +msgstr "Beklager, du har ikke lov til å gjenopprette dette fra papirkurven." + +#: wp-admin/edit.php:128 wp-admin/post.php:240 wp-admin/upload.php:150 +msgid "Error in restoring from Trash." +msgstr "Feil under gjenoppretting fra papirkurven." + +#: wp-admin/update-core.php:345 msgid "The following themes have new versions available. Check the ones you want to update and then click “Update Themes”." msgstr "Følgende temaer har nye versjoner tilgjengelig. Merk de du vil oppdatere og klikk «Oppdater tema»." -#: wp-admin/user-new.php:248 -msgid "User has been added to your site." -msgstr "Bruker har blitt lagt til ditt nettsted." - -#: wp-admin/user-new.php:255 -msgid "That user is already a member of this site." -msgstr "Den brukeren er allerede medlem på dette nettstedet." - -#: wp-admin/user-new.php:244 +#: wp-admin/user-new.php:251 msgid "Invitation email sent to user. A confirmation link must be clicked for them to be added to your site." msgstr "Invitasjon er sendt til bruker på e-post. Der er en aktiveringslenke som må trykkes på for at brukeren skal legges til på nettstedet." -#: wp-admin/update-core.php:241 +#: wp-admin/user-new.php:262 +msgid "That user is already a member of this site." +msgstr "Den brukeren er allerede medlem på dette nettstedet." + +#: wp-admin/user-new.php:255 +msgid "User has been added to your site." +msgstr "Bruker har blitt lagt til ditt nettsted." + +#: wp-admin/update-core.php:238 msgid "The following plugins have new versions available. Check the ones you want to update and then click “Update Plugins”." msgstr "Følgende utvidelser har nye versjoner tilgjengelig. Merk de du vil oppdatere og klikk «Oppdater utvidelser»." -#: wp-admin/custom-background.php:246 +#: wp-admin/custom-background.php:295 msgid "This will remove the background image. You will not be able to restore any customizations." msgstr "Dette vil fjerne bakgrunnsbildet. Alle tilpasninger du har gjort vil bli borte." -#: wp-admin/includes/class-wp-themes-list-table.php:113 +#: wp-admin/includes/class-wp-themes-list-table.php:114 msgid "Only the current theme is available to you. Contact the %s administrator for information about accessing additional themes." msgstr "Kun det aktive temaet er tilgjengelig for deg nå. Kontakt administratoren på %s for informasjon om hvordan du får tilgang til flere temaer." -#: wp-admin/includes/file.php:27 -msgid "Author Template" -msgstr "Forfattermal" +#: wp-admin/includes/file.php:30 +msgid "Tag Template" +msgstr "Stikkordmal" #: wp-admin/includes/file.php:53 msgid "Visual Editor Stylesheet" msgstr "Visuell tekstbehandlermal" -#: wp-admin/includes/file.php:30 -msgid "Tag Template" -msgstr "Stikkordmal" +#: wp-admin/includes/file.php:27 +msgid "Author Template" +msgstr "Forfattermal" #: wp-admin/edit-form-advanced.php:158 msgid "Page saved." @@ -7300,43 +7419,43 @@ msgstr "Side lagret." #. translators: %s: Importer name #. translators: 1: Plugin name and version. #: wp-admin/import.php:175 -#: wp-admin/includes/class-wp-plugin-install-list-table.php:511 -#: wp-admin/includes/class-wp-plugins-list-table.php:788 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:507 +#: wp-admin/includes/class-wp-plugins-list-table.php:786 msgid "More information about %s" msgstr "Mer informasjon om %s" -#: wp-admin/user-edit.php:331 -msgid "Grant this user super admin privileges for the Network." -msgstr "Gi denne brukeren superadminrettigheter for nettverket." - -#: wp-admin/install.php:151 wp-admin/user-edit.php:174 -msgid "Important:" -msgstr "Viktig:" - -#: wp-admin/user-edit.php:174 +#: wp-admin/user-edit.php:175 msgid "This user has super admin privileges." msgstr "Denne brukeren har superadminrettigheter." -#: wp-admin/includes/class-wp-theme-install-list-table.php:278 -#: wp-admin/includes/class-wp-theme-install-list-table.php:401 +#: wp-admin/install.php:151 wp-admin/user-edit.php:175 +msgid "Important:" +msgstr "Viktig:" + +#: wp-admin/user-edit.php:366 +msgid "Grant this user super admin privileges for the Network." +msgstr "Gi denne brukeren superadminrettigheter for nettverket." + +#: wp-admin/includes/class-wp-theme-install-list-table.php:281 +#: wp-admin/includes/class-wp-theme-install-list-table.php:404 msgid "Update to version %s" msgstr "Oppdater til versjon %s" +#: wp-admin/user-edit.php:339 +msgid "Usernames cannot be changed." +msgstr "Brukernavn kan ikke endres." + #: wp-admin/options-reading.php:100 msgid "items" msgstr "saker" -#: wp-admin/user-edit.php:304 -msgid "Usernames cannot be changed." -msgstr "Brukernavn kan ikke endres." - #: wp-admin/nav-menus.php:264 msgid "The menu has been successfully deleted." msgstr "Menyen har blitt slettet." -#: wp-admin/options-general.php:66 -msgid "In a few words, explain what this site is about." -msgstr "Forklar med få ord hva dette nettstedet handler om." +#: wp-admin/includes/template.php:1261 +msgid "The miscellaneous options group has been removed. Use another settings group." +msgstr "Gruppen med diverse innstillinger er fjernet. Bruk en annen gruppe med innstillinger." #: wp-admin/install.php:182 wp-admin/install.php:185 #: wp-admin/options-reading.php:31 wp-admin/options-reading.php:111 @@ -7344,92 +7463,92 @@ msgstr "Forklar med få ord hva dette nettstedet handler om." msgid "Site Visibility" msgstr "Nettstedets synlighet" -#: wp-admin/includes/template.php:1258 -msgid "The miscellaneous options group has been removed. Use another settings group." -msgstr "Gruppen med diverse innstillinger er fjernet. Bruk en annen gruppe med innstillinger." +#: wp-admin/options-general.php:66 +msgid "In a few words, explain what this site is about." +msgstr "Forklar med få ord hva dette nettstedet handler om." -#: wp-admin/includes/nav-menu.php:968 -msgid "Link Target" -msgstr "Lenkemål" +#: wp-admin/nav-menus.php:763 wp-admin/nav-menus.php:842 +msgid "Save Menu" +msgstr "Lagre meny" #: wp-admin/includes/class-walker-nav-menu-edit.php:182 msgid "CSS Classes (optional)" msgstr "CSS-klasser (valgfritt)" -#: wp-admin/nav-menus.php:762 wp-admin/nav-menus.php:839 -msgid "Save Menu" -msgstr "Lagre meny" +#: wp-admin/includes/nav-menu.php:978 +msgid "Link Target" +msgstr "Lenkemål" #: wp-admin/includes/class-bulk-theme-upgrader-skin.php:23 msgid "Updating Theme %1$s (%2$d/%3$d)" msgstr "Oppdaterer tema %1$s (%2$d/%3$d)" -#: wp-admin/includes/schema.php:904 -msgid "You must provide a domain name." -msgstr "Du må skrive inn et domenenavn." - -#: wp-admin/includes/schema.php:906 -msgid "You must provide a name for your network of sites." -msgstr "Du må oppgi et navn for ditt nettverk med nettsteder." - -#: wp-admin/includes/schema.php:910 -msgid "The network already exists." -msgstr "Nettverket finnes allerede." - -#: wp-admin/includes/schema.php:913 -msgid "You must provide a valid email address." -msgstr "Du må skrive inn en gyldig e-postadresse." +#: wp-admin/includes/schema.php:1101 +msgid "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." +msgstr "Du kan fortsatt bruke nettstedet, men underdomener du lager kan bli utilgjengelige. Ignorer denne beskjeden hvis du vet at din DNS er riktig." #. translators: %s: error message #: wp-admin/includes/schema.php:1091 msgid "This resulted in an error message: %s" msgstr "Dette medførte en feilmelding: %s" -#: wp-admin/includes/schema.php:1101 -msgid "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." -msgstr "Du kan fortsatt bruke nettstedet, men underdomener du lager kan bli utilgjengelige. Ignorer denne beskjeden hvis du vet at din DNS er riktig." +#: wp-admin/includes/schema.php:913 +msgid "You must provide a valid email address." +msgstr "Du må skrive inn en gyldig e-postadresse." -#: wp-admin/includes/user.php:463 +#: wp-admin/includes/schema.php:910 +msgid "The network already exists." +msgstr "Nettverket finnes allerede." + +#: wp-admin/includes/schema.php:906 +msgid "You must provide a name for your network of sites." +msgstr "Du må oppgi et navn for ditt nettverk med nettsteder." + +#: wp-admin/includes/schema.php:904 +msgid "You must provide a domain name." +msgstr "Du må skrive inn et domenenavn." + +#: wp-admin/includes/user.php:477 msgid "Notice:" msgstr "Merk:" -#: wp-admin/edit-form-advanced.php:578 +#: wp-admin/edit-form-advanced.php:586 msgid "Get Shortlink" msgstr "Få kortlenke" -#: wp-admin/includes/class-bulk-plugin-upgrader-skin.php:23 -msgid "Updating Plugin %1$s (%2$d/%3$d)" -msgstr "Oppdaterer utvidelse %1$s (%2$d/%3$d)" - #. translators: 1: Title of an update #: wp-admin/includes/class-bulk-upgrader-skin.php:44 msgid "The update of %1$s failed." msgstr "Oppdatering av %1$s feilet." -#: wp-admin/includes/upgrade.php:95 -msgid "The password you chose during the install." -msgstr "Passordet du valgte under installeringen." +#: wp-admin/includes/class-bulk-plugin-upgrader-skin.php:23 +msgid "Updating Plugin %1$s (%2$d/%3$d)" +msgstr "Oppdaterer utvidelse %1$s (%2$d/%3$d)" -#: wp-admin/includes/upgrade.php:83 +#: wp-admin/includes/upgrade.php:86 msgid "User already exists. Password inherited." msgstr "Brukeren finnes allerede. Det gamle passordet ble beholdt." -#: wp-admin/includes/class-wp-automatic-updater.php:355 -#: wp-admin/includes/update-core.php:1221 wp-admin/update-core.php:501 -msgid "WordPress updated successfully" -msgstr "Oppdateringen av WordPress var vellykket" +#: wp-admin/includes/upgrade.php:98 +msgid "The password you chose during the install." +msgstr "Passordet du valgte under installeringen." -#: wp-admin/update-core.php:461 -msgid "Update WordPress" -msgstr "Oppdater WordPress" - -#: wp-admin/plugins.php:131 wp-admin/update-core.php:244 -#: wp-admin/update-core.php:329 wp-admin/update-core.php:666 -#: wp-admin/update-core.php:670 +#: wp-admin/plugins.php:131 wp-admin/update-core.php:241 +#: wp-admin/update-core.php:326 wp-admin/update-core.php:679 +#: wp-admin/update-core.php:683 msgid "Update Plugins" msgstr "Oppdater utvidelser" -#: wp-admin/update-core.php:549 wp-admin/update-core.php:588 +#: wp-admin/update-core.php:458 +msgid "Update WordPress" +msgstr "Oppdater WordPress" + +#: wp-admin/includes/class-wp-automatic-updater.php:355 +#: wp-admin/includes/update-core.php:1224 wp-admin/update-core.php:498 +msgid "WordPress updated successfully" +msgstr "Oppdateringen av WordPress var vellykket" + +#: wp-admin/update-core.php:546 wp-admin/update-core.php:585 msgid "WordPress Updates" msgstr "WordPress oppdateringer" @@ -7437,1378 +7556,184 @@ msgstr "WordPress oppdateringer" msgid "Edit menu item" msgstr "Rediger menyvalg" -#: wp-admin/options-general.php:102 -msgid "This address is used for admin purposes. If you change this we will send you an email at your new address to confirm it. The new address will not become active until confirmed." -msgstr "Denne adressen er brukt til administrative oppgaver. Hvis du endrer denne vil vi sende deg en e-post til den nye adressen for å bekrefte den. Den nye adressen vil ikke bli aktivert før den er bekreftet." - -#: wp-admin/plugins.php:292 -msgid "You are about to remove the following plugin:" -msgstr "Du er i ferd med å fjerne følgende utvidelse:" - -#: wp-admin/plugins.php:288 -msgid "Delete Plugin" -msgstr "Slett utvidelse" - -#: wp-admin/plugins.php:317 -msgid "Are you sure you wish to delete these files and data?" -msgstr "Er du sikker på at du vil slette disse filene og data?" - -#: wp-admin/plugins.php:330 -msgid "Yes, delete these files and data" -msgstr "Ja, slett disse filene og dataene" - -#: wp-admin/includes/class-wp-plugins-list-table.php:581 -msgid "Inactive:" -msgstr "Inaktive:" - -#: wp-admin/includes/class-wp-plugins-list-table.php:425 -msgid "Must-Use (%s)" -msgid_plural "Must-Use (%s)" -msgstr[0] "Må bruke (%s)" -msgstr[1] "Må bruke (%s)" - -#: wp-admin/about.php:213 -msgid "Go to Dashboard" -msgstr "Gå til kontrollpanel" - -#: wp-admin/nav-menus.php:341 wp-admin/nav-menus.php:351 -msgid "Please enter a valid menu name." -msgstr "Vennligst oppgi et gyldig menynavn." - -#: wp-admin/includes/nav-menu.php:394 wp-admin/includes/nav-menu.php:678 -msgid "View All" -msgstr "Vis alle" - -#: wp-admin/options-general.php:181 -msgid "This timezone is currently in daylight saving time." -msgstr "Denne tidssonen er nå i sommertid." - -#: wp-admin/options-general.php:216 -msgid "This timezone does not observe daylight saving time." -msgstr "Denne tidssonen bruker ikke sommertid." - -#: wp-admin/includes/class-wp-plugins-list-table.php:428 +#: wp-admin/includes/class-wp-plugins-list-table.php:429 msgid "Drop-ins (%s)" msgid_plural "Drop-ins (%s)" msgstr[0] "Innslipp (%s)" msgstr[1] "Innslipp (%s)" -#: wp-admin/includes/plugin.php:428 -msgid "Executed before Multisite is loaded." -msgstr "Kjørt før flernettsted lastes." +#: wp-admin/options-general.php:216 +msgid "This timezone does not observe daylight saving time." +msgstr "Denne tidssonen bruker ikke sommertid." -#: wp-admin/includes/plugin.php:424 -msgid "External object cache." -msgstr "Ekstern objekt-cache." +#: wp-admin/options-general.php:181 +msgid "This timezone is currently in daylight saving time." +msgstr "Denne tidssonen er nå i sommertid." -#: wp-admin/includes/plugin.php:423 -msgid "Custom maintenance message." -msgstr "Egendefinert vedlikeholdsbeskjed." +#: wp-admin/includes/nav-menu.php:403 wp-admin/includes/nav-menu.php:688 +msgid "View All" +msgstr "Vis alle" -#: wp-admin/includes/plugin.php:422 -msgid "Custom install script." -msgstr "Tilpasset installeringsskript." +#: wp-admin/nav-menus.php:341 wp-admin/nav-menus.php:351 +msgid "Please enter a valid menu name." +msgstr "Vennligst oppgi et gyldig menynavn." -#: wp-admin/includes/plugin.php:421 -msgid "Custom database error message." -msgstr "Egendefinert beskjed for databasefeil." +#: wp-admin/about.php:237 +msgid "Go to Dashboard" +msgstr "Gå til kontrollpanel" -#: wp-admin/includes/file.php:326 -msgid "File is empty. Please upload something more substantial." -msgstr "Filen er tom. Vennligst last opp noe mer innholdsrikt." +#: wp-admin/includes/class-wp-plugins-list-table.php:426 +msgid "Must-Use (%s)" +msgid_plural "Must-Use (%s)" +msgstr[0] "Må bruke (%s)" +msgstr[1] "Må bruke (%s)" -#. translators: %s: Importer name -#. translators: %s: plugin name -#. translators: %s: Theme name -#: wp-admin/import.php:136 -#: wp-admin/includes/class-wp-theme-install-list-table.php:286 -#: wp-admin/includes/dashboard.php:1260 wp-admin/theme-install.php:266 -msgid "Install %s" -msgstr "Installer %s" +#: wp-admin/includes/class-wp-plugins-list-table.php:582 +msgid "Inactive:" +msgstr "Inaktive:" -#: wp-admin/includes/plugin.php:420 -msgid "Custom database class." -msgstr "Egendefinert databaseklasse." +#: wp-admin/plugins.php:330 +msgid "Yes, delete these files and data" +msgstr "Ja, slett disse filene og dataene" + +#: wp-admin/plugins.php:317 +msgid "Are you sure you wish to delete these files and data?" +msgstr "Er du sikker på at du vil slette disse filene og data?" + +#: wp-admin/plugins.php:288 +msgid "Delete Plugin" +msgstr "Slett utvidelse" + +#: wp-admin/plugins.php:292 +msgid "You are about to remove the following plugin:" +msgstr "Du er i ferd med å fjerne følgende utvidelse:" + +#: wp-admin/options-general.php:102 +msgid "This address is used for admin purposes. If you change this we will send you an email at your new address to confirm it. The new address will not become active until confirmed." +msgstr "Denne adressen er brukt til administrative oppgaver. Hvis du endrer denne vil vi sende deg en e-post til den nye adressen for å bekrefte den. Den nye adressen vil ikke bli aktivert før den er bekreftet." #: wp-admin/includes/plugin.php:419 msgid "Advanced caching plugin." msgstr "Avansert hurtiglagringsutvidelse." -#: wp-admin/comment.php:138 -msgid "This comment is currently marked as spam." -msgstr "Denne kommentaren er merket som spam." +#: wp-admin/includes/plugin.php:420 +msgid "Custom database class." +msgstr "Egendefinert databaseklasse." -#: wp-admin/comment.php:80 -msgid "Moderate Comment" -msgstr "Moderer kommentar" +#. translators: %s: Importer name +#. translators: %s: plugin name +#. translators: %s: Theme name +#: wp-admin/import.php:136 +#: wp-admin/includes/class-wp-theme-install-list-table.php:289 +#: wp-admin/includes/dashboard.php:1263 wp-admin/theme-install.php:276 +msgid "Install %s" +msgstr "Installer %s" -#: wp-admin/comment.php:135 -msgid "This comment is currently approved." -msgstr "Denne kommentaren er godkjent." +#: wp-admin/includes/file.php:327 +msgid "File is empty. Please upload something more substantial." +msgstr "Filen er tom. Vennligst last opp noe mer innholdsrikt." -#: wp-admin/edit-comments.php:265 -msgid "This comment is already approved." -msgstr "Denne kommentaren er allerede godkjent." +#: wp-admin/includes/plugin.php:421 +msgid "Custom database error message." +msgstr "Egendefinert beskjed for databasefeil." + +#: wp-admin/includes/plugin.php:422 +msgid "Custom install script." +msgstr "Tilpasset installeringsskript." + +#: wp-admin/includes/plugin.php:423 +msgid "Custom maintenance message." +msgstr "Egendefinert vedlikeholdsbeskjed." + +#: wp-admin/includes/plugin.php:424 +msgid "External object cache." +msgstr "Ekstern objekt-cache." + +#: wp-admin/includes/plugin.php:428 +msgid "Executed before Multisite is loaded." +msgstr "Kjørt før flernettsted lastes." + +#: wp-admin/edit-comments.php:287 +msgid "This comment is already marked as spam." +msgstr "Denne kommentaren er allerede merket som spam." + +#: wp-admin/edit-comments.php:284 +msgid "View Trash" +msgstr "Vis papirkurven" + +#: wp-admin/edit-comments.php:284 +msgid "This comment is already in the Trash." +msgstr "Denne kommentaren ligger allerede i papirkurven." #: wp-admin/comment.php:141 msgid "This comment is currently in the Trash." msgstr "Denne kommentaren ligger i papirkurven." -#: wp-admin/custom-background.php:314 -msgid "Repeat" -msgstr "Gjenta" - -#: wp-admin/edit-comments.php:268 -msgid "This comment is already in the Trash." -msgstr "Denne kommentaren ligger allerede i papirkurven." - -#: wp-admin/edit-comments.php:268 -msgid "View Trash" -msgstr "Vis papirkurven" - -#: wp-admin/edit-comments.php:271 -msgid "This comment is already marked as spam." -msgstr "Denne kommentaren er allerede merket som spam." - -#: wp-admin/includes/class-wp-screen.php:893 -msgid "Screen Options" -msgstr "Visningsinnstillinger" - -#: wp-admin/includes/theme-install.php:101 wp-admin/theme-install.php:155 -msgid "Feature Filter" -msgstr "Funksjonalitetsfilter" - -#: wp-admin/includes/theme.php:237 -msgid "One Column" -msgstr "En kolonne" - -#: wp-admin/includes/theme.php:238 -msgid "Two Columns" -msgstr "To kolonner" - -#: wp-admin/includes/theme.php:239 -msgid "Three Columns" -msgstr "Tre kolonner" - -#: wp-admin/includes/theme.php:240 -msgid "Four Columns" -msgstr "Fire kolonner" - -#: wp-admin/includes/theme.php:241 -msgid "Left Sidebar" -msgstr "Venstre sidekolonne" - -#: wp-admin/includes/theme.php:242 -msgid "Right Sidebar" -msgstr "Høyre sidekolonne" - -#: wp-admin/includes/theme.php:245 wp-admin/includes/theme.php:301 -msgid "Features" -msgstr "Egenskaper" - -#: wp-admin/includes/theme.php:249 -msgid "Custom Colors" -msgstr "Egendefinerte farger" - -#: wp-admin/includes/theme.php:264 -msgid "Theme Options" -msgstr "Temainnstillinger" - -#: wp-admin/includes/theme.php:265 -msgid "Threaded Comments" -msgstr "Trådet kommentarer" - -#: wp-admin/includes/theme.php:263 -msgid "Sticky Post" -msgstr "Klebrig innlegg" - -#: wp-admin/includes/theme.php:260 -msgid "Microformats" -msgstr "Mikroformat" - -#: wp-admin/includes/theme.php:269 wp-admin/includes/theme.php:302 -msgid "Subject" -msgstr "Emne" - -#: wp-admin/includes/theme.php:275 -msgid "Holiday" -msgstr "Ferie" - -#: wp-admin/includes/theme-install.php:133 -msgid "Find Themes" -msgstr "Finn temaer" - -#: wp-admin/includes/theme-install.php:143 -msgid "If you have a theme in a .zip format, you may install it by uploading it here." -msgstr "Hvis du har et tema i .zip format kan du installere det ved å laste det opp her." - -#: wp-admin/import.php:176 -#: wp-admin/includes/class-wp-theme-install-list-table.php:316 -#: wp-admin/includes/class-wp-themes-list-table.php:227 -msgid "Details" -msgstr "Detaljer" - -#: wp-admin/includes/theme-install.php:205 -msgid "Theme Install" -msgstr "Installer tema" - -#. translators: %s: Theme version -#: wp-admin/includes/theme.php:633 wp-admin/theme-install.php:314 -#: wp-admin/themes.php:440 -msgid "Version: %s" -msgstr "Versjon: %s" - -#: wp-admin/includes/class-wp-upgrader.php:162 wp-admin/includes/theme.php:67 -msgid "Unable to locate WordPress theme directory." -msgstr "Klarte ikke å finne WordPress temamappen." - -#: wp-admin/includes/theme.php:75 -msgid "Could not fully remove the theme %s." -msgstr "Kunne ikke fjerne %s-temaet fullstendig." - -#: wp-admin/includes/update-core.php:875 -msgid "The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s." -msgstr "Oppdateringen kunne ikke installeres fordi WordPress %1$s krever PHP versjon %2$s eller høyere og MySQL versjon %3$s eller høyere. Du bruker PHP versjon %4$s og MySQL verson %5$s." - -#: wp-admin/includes/update-core.php:877 -msgid "The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s." -msgstr "Oppdateringen kunne ikke installeres fordi WordPress %1$s krever PHP versjon %2$s eller høyere. Du bruker versjon %3$s." - -#: wp-admin/includes/update-core.php:879 -msgid "The update cannot be installed because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s." -msgstr "Oppdateringen kunne ikke installeres fordi WordPress %1$s krever MySQL versjon %2$s eller høyere. Du bruker versjon %3$s." - -#: wp-admin/includes/update-core.php:824 -msgid "Verifying the unpacked files…" -msgstr "Verifiserer utpakkede filer…" - -#: wp-admin/includes/update-core.php:837 -msgid "The update could not be unpacked" -msgstr "Oppdateringen kunne ikke pakkes ut" - -#: wp-admin/includes/update-core.php:1095 -msgid "Upgrading database…" -msgstr "Oppgraderer database…" - -#: wp-admin/includes/update.php:203 -msgid "You are using a development version (%1$s). Cool! Please stay updated." -msgstr "Du bruker en utviklingsversjon (%1$s). Kult! Vennligst hold deg oppdatert." - -#: wp-admin/includes/update.php:274 -msgid "Update to %s" -msgstr "Oppdater til %s" - -#: wp-admin/includes/update.php:274 -msgid "Latest" -msgstr "Siste" - -#: wp-admin/includes/update.php:608 -msgid "An automated WordPress update has failed to complete - please attempt the update again now." -msgstr "En automatisk WordPress-oppdatering feilet—vennligst prøv igjen nå." - -#: wp-admin/includes/update.php:610 -msgid "An automated WordPress update has failed to complete! Please notify the site administrator." -msgstr "En automatisk WordPress-oppdatering feilet! Vennligst si ifra til nettstedets administrator." - -#: wp-admin/includes/upgrade.php:74 -msgid "Note that password carefully! It is a random password that was generated just for you." -msgstr "Merk deg passordet og pass på det! Det er et tilfeldig passord som er lagd bare for deg." - -#. translators: Default category slug -#: wp-admin/includes/upgrade.php:133 -msgctxt "Default category slug" -msgid "Uncategorized" -msgstr "Ukategorisert" - -#: wp-admin/includes/upgrade.php:171 -msgid "Welcome to WordPress. This is your first post. Edit or delete it, then start writing!" -msgstr "Velkommen til WordPress. Dette er ditt første innlegg. Rediger eller slett det, og start bloggingen!" - -#: wp-admin/includes/upgrade.php:180 -msgid "Hello world!" -msgstr "Hei, verden!" - -#. translators: Default post slug -#: wp-admin/includes/upgrade.php:182 wp-admin/includes/upgrade.php:326 -msgctxt "Default post slug" -msgid "hello-world" -msgstr "hei-verden" - -#: wp-admin/includes/user.php:129 -msgid "ERROR: Please enter a password." -msgstr "FEIL: Vennligst skriv inn et passordet." - -#: wp-admin/includes/user.php:134 -msgid "ERROR: Passwords may not contain the character \"\\\"." -msgstr "FEIL: Passord kan ikke inneholde bokstaven \"\\\"." - -#: wp-admin/includes/user.php:139 -msgid "ERROR: Please enter the same password in both password fields." -msgstr "FEIL: Vennligst skriv det samme passordet i begge passordfeltene." - -#: wp-admin/includes/user.php:160 -msgid "ERROR: Please enter an email address." -msgstr "FEIL: Vennligst skriv inn en e-postadresse." - -#: wp-admin/install.php:73 -msgid "WordPress › Installation" -msgstr "WordPress › Installasjon" - -#: wp-admin/install.php:124 -msgid "User(s) already exists." -msgstr "Bruker(e) finnes allerede." - -#: wp-admin/install.php:177 -msgid "Your Email" -msgstr "Din e-postadresse" - -#: wp-admin/install.php:179 -msgid "Double-check your email address before continuing." -msgstr "Vennligst sjekk e-postadressen din før du fortsetter." - -#: wp-admin/install.php:205 -msgid "Install WordPress" -msgstr "Installer WordPress" - -#: wp-admin/install.php:244 -msgid "Insufficient Requirements" -msgstr "Systemkrav ikke oppfyllt" - -#: wp-admin/install.php:314 -msgid "Information needed" -msgstr "Informasjon trengs" - -#: wp-admin/install.php:315 -msgid "Please provide the following information. Don’t worry, you can always change these settings later." -msgstr "Vennligst oppgi følgende informasjon. Ingen grunn til bekymring, du kan endre innstillingene senere." - -#: wp-admin/install.php:370 -msgid "Success!" -msgstr "Suksess!" - -#: wp-admin/link-add.php:15 -msgid "Add New Link" -msgstr "Legg til ny lenke" - -#. translators: add new links -#: wp-admin/edit-link-form.php:73 wp-admin/link-manager.php:76 -#: wp-admin/menu.php:65 -msgctxt "link" -msgid "Add New" -msgstr "Legg til ny" - -#: wp-admin/link-manager.php:88 -msgid "%s link deleted." -msgid_plural "%s links deleted" -msgstr[0] "%s lenke slettet." -msgstr[1] "%s lenker slettet" - -#: wp-admin/link-manager.php:96 -msgid "Search Links" -msgstr "Søk i lenker" - -#: wp-admin/includes/class-wp-links-list-table.php:75 -msgid "No links found." -msgstr "Ingen lenker funnet." - -#: wp-admin/link.php:109 -msgid "Link not found." -msgstr "Fant ikke lenken" - -#: wp-admin/maint/repair.php:20 -msgid "WordPress › Database Repair" -msgstr "WordPress › Databasereparasjon" - -#: wp-admin/maint/repair.php:147 -msgid "Some database problems could not be repaired. Please copy-and-paste the following list of errors to the WordPress support forums to get additional assistance." -msgstr "Noen databaseproblemer kunne ikke repareres. Vennligst kopier og lim følgende liste med feil til WordPress-forumet for mer hjelp." - -#: wp-admin/maint/repair.php:164 -msgid "Repair Database" -msgstr "Reparer database" - -#: wp-admin/maint/repair.php:166 -msgid "Repair and Optimize Database" -msgstr "Reparer og optimaliser database" - -#: wp-admin/media-new.php:40 -msgid "Upload New Media" -msgstr "Last opp ny media" - -#: wp-admin/media.php:23 wp-admin/media.php:57 -msgid "Sorry, you are not allowed to edit this attachment." -msgstr "Beklager, du har ikke lov til å redigere dette vedlegget." - -#: wp-admin/media.php:61 -msgid "You attempted to edit an attachment that doesn’t exist. Perhaps it was deleted?" -msgstr "Du forsøkte å redigere et vedlegg som ikke eksisterer. Kanskje den ble slettet?" - -#: wp-admin/media.php:63 -msgid "You can’t edit this attachment because it is in the Trash. Please move it out of the Trash and try again." -msgstr "Du kan ikke redigere dette vedlegget fordi det ligger i papirkurven. Vennligst flytt det ut av papirkurven og prøv på nytt." - -#: wp-admin/media.php:116 wp-admin/media.php:125 -msgid "Update Media" -msgstr "Oppdater media" - -#: wp-admin/menu.php:50 -msgid "Library" -msgstr "Bibliotek" - -#. translators: add new file -#: wp-admin/media.php:110 wp-admin/menu.php:52 wp-admin/upload.php:80 -#: wp-admin/upload.php:225 -msgctxt "file" -msgid "Add New" -msgstr "Legg til ny" - -#: wp-admin/menu.php:75 -msgid "Comments %s" -msgstr "Kommentarer %s" - -#: wp-admin/menu.php:156 -msgid "Appearance" -msgstr "Utseende" - -#. translators: add new plugin -#: wp-admin/menu.php:208 wp-admin/plugins.php:482 -msgctxt "plugin" -msgid "Add New" -msgstr "Legg til ny" - -#: wp-admin/menu.php:217 wp-admin/user/menu.php:14 wp-admin/user-edit.php:28 -msgid "Profile" -msgstr "Profil" - -#: wp-admin/menu.php:228 wp-admin/menu.php:231 -msgid "Your Profile" -msgstr "Din profil" - -#: wp-admin/menu.php:239 wp-admin/tools.php:12 -msgid "Tools" -msgstr "Verktøy" - -#: wp-admin/menu.php:249 -msgctxt "settings screen" -msgid "General" -msgstr "Generelt" - -#: wp-admin/menu.php:250 -msgid "Writing" -msgstr "Skriving" - -#: wp-admin/menu.php:251 -msgid "Reading" -msgstr "Lesing" - -#: wp-admin/menu.php:254 -msgid "Permalinks" -msgstr "Permalenker" - -#: wp-admin/ms-delete-site.php:13 wp-admin/my-sites.php:13 -msgid "Multisite support is not enabled." -msgstr "Støtte for flernettsted er ikke aktivert." - -#: wp-admin/my-sites.php:119 -msgid "Visit" -msgstr "Gå til" - -#: wp-admin/update-core.php:352 wp-admin/update-core.php:400 -#: wp-admin/update-core.php:694 wp-admin/update-core.php:699 -msgid "Update Themes" -msgstr "Oppdater temaer" - -#: wp-admin/includes/class-wp-users-list-table.php:155 -#: wp-admin/includes/deprecated.php:561 -msgid "No users found." -msgstr "Ingen brukere funnet." - -#: wp-admin/edit-form-advanced.php:457 wp-admin/options-discussion.php:14 -msgid "Discussion Settings" -msgstr "Diskusjonsinnstillinger" - -#: wp-admin/options-discussion.php:43 wp-admin/options-discussion.php:44 -msgid "Default article settings" -msgstr "Standard innlegg- og sideinnstillinger" - -#: wp-admin/options-discussion.php:57 -msgid "These settings may be overridden for individual articles." -msgstr "Disse innstillingene kan overstyres for individuelle innlegg og sider." - -#: wp-admin/options-discussion.php:61 wp-admin/options-discussion.php:62 -msgid "Other comment settings" -msgstr "Andre kommentarinnstillinger" - -#: wp-admin/options-discussion.php:63 -msgid "Comment author must fill out name and email" -msgstr "Kommentarforfatteren må fylle ut navn og e-post" - -#: wp-admin/options-discussion.php:67 -msgid "Users must be registered and logged in to comment" -msgstr "Brukere må være registrert og innlogget for å kunne kommentere" - -#: wp-admin/options-discussion.php:74 -msgid "Automatically close comments on articles older than %s days" -msgstr "Steng automatisk for kommentarer på innlegg som er eldre enn %s dager" - -#: wp-admin/options-discussion.php:97 -msgid "Enable threaded (nested) comments %s levels deep" -msgstr "Aktiver trådet kommentarfelt %s nivåer dypt" - -#: wp-admin/options-discussion.php:106 -msgid "last" -msgstr "siste" - -#: wp-admin/options-discussion.php:108 -msgid "first" -msgstr "første" - -#: wp-admin/options-discussion.php:110 -msgid "Break comments into pages with %1$s top level comments per page and the %2$s page displayed by default" -msgstr "Del opp kommentarer i sider med %1$s kommentarer per side og den %2$s siden vist som standard" - -#: wp-admin/options-discussion.php:118 -msgid "older" -msgstr "eldste" - -#: wp-admin/options-discussion.php:120 -msgid "newer" -msgstr "nyeste" - -#: wp-admin/options-discussion.php:122 -msgid "Comments should be displayed with the %s comments at the top of each page" -msgstr "Kommentarer skal vises med de %s kommentarene øverst på hver side" - -#: wp-admin/options-discussion.php:128 wp-admin/options-discussion.php:129 -msgid "Email me whenever" -msgstr "Varsle meg på e-post når" - -#: wp-admin/options-discussion.php:132 -msgid "Anyone posts a comment" -msgstr "Noen kommenterer innlegget" - -#: wp-admin/options-discussion.php:136 -msgid "A comment is held for moderation" -msgstr "En kommentar holdes igjen for moderering" - -#: wp-admin/options-discussion.php:140 wp-admin/options-discussion.php:141 -msgid "Before a comment appears" -msgstr "Før en kommentar vises" - -#: wp-admin/options-discussion.php:146 -msgid "Comment author must have a previously approved comment" -msgstr "Kommentarforfatteren må tidligere ha fått godkjent en kommentar" - -#: wp-admin/options-discussion.php:150 wp-admin/options-discussion.php:151 -msgid "Comment Moderation" -msgstr "Moderering av kommentarer" - -#: wp-admin/options-discussion.php:152 -msgid "Hold a comment in the queue if it contains %s or more links. (A common characteristic of comment spam is a large number of hyperlinks.)" -msgstr "Hold en kommentar i køen hvis den inneholder %s lenker eller flere. (et vanlig symptom på kommentar-spam er et stort antall hyperlenker.)" - -#: wp-admin/options-discussion.php:154 -msgid "When a comment contains any of these words in its content, name, URL, email, or IP, it will be held in the moderation queue. One word or IP per line. It will match inside words, so “press” will match “WordPress”." -msgstr "Når en kommentar inneholder noen av disse ordene i innhold, navn, URL, e-post eller IP, vil den bli holdt i moderasjonskøen. Et ord eller IP per linje. Systemet finner også treff inne i ord, så «press» gir utslag på «WordPress»." - -#: wp-admin/options-discussion.php:161 wp-admin/options-discussion.php:162 -msgid "Comment Blacklist" -msgstr "Svarteliste for kommentarer" - -#: wp-admin/options-discussion.php:163 -msgid "When a comment contains any of these words in its content, name, URL, email, or IP, it will be put in the trash. One word or IP per line. It will match inside words, so “press” will match “WordPress”." -msgstr "Når en kommentar inneholder noen av disse ordene i innhold, navn, URL, e-post eller IP, vil den bli markert som useriøs. Ett ord eller IP per linje. Systemet finner også treff inne i ord, så «press» gir utslag på «WordPress»." - -#: wp-admin/options-discussion.php:172 -msgid "Avatars" -msgstr "Avatarer" - -#: wp-admin/options-discussion.php:184 wp-admin/options-discussion.php:185 -msgid "Avatar Display" -msgstr "Avatar visning" - -#: wp-admin/options-discussion.php:188 -msgid "Show Avatars" -msgstr "Vis avatarer" - -#: wp-admin/options-discussion.php:193 wp-admin/options-discussion.php:194 -msgid "Maximum Rating" -msgstr "Maks klassifisering" - -#. translators: Content suitability rating: -#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system -#: wp-admin/options-discussion.php:199 -msgid "G — Suitable for all audiences" -msgstr "G — Passende for alle" - -#. translators: Content suitability rating: -#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system -#: wp-admin/options-discussion.php:201 -msgid "PG — Possibly offensive, usually for audiences 13 and above" -msgstr "PG — Mulig støtende, vanligvis for lesere på 13 år eller eldre" - -#. translators: Content suitability rating: -#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system -#: wp-admin/options-discussion.php:203 -msgid "R — Intended for adult audiences above 17" -msgstr "R — Ment for voksne over 17 år" - -#. translators: Content suitability rating: -#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system -#: wp-admin/options-discussion.php:205 -msgid "X — Even more mature than above" -msgstr "X — Enda mer støtende enn det over" - -#: wp-admin/options-discussion.php:216 wp-admin/options-discussion.php:217 -msgid "Default Avatar" -msgstr "Standard avatar" - -#: wp-admin/options-discussion.php:219 -msgid "For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their email address." -msgstr "For brukere uten en egendefinert avatar kan du enten vise en generell logo eller en som er generert fra e-postadressen deres." - -#: wp-admin/options-discussion.php:224 -msgid "Blank" -msgstr "Blank" - -#: wp-admin/options-discussion.php:225 -msgid "Gravatar Logo" -msgstr "Gravatar logo" - -#: wp-admin/options-discussion.php:226 -msgid "Identicon (Generated)" -msgstr "Identicon (generert)" - -#: wp-admin/options-discussion.php:227 -msgid "Wavatar (Generated)" -msgstr "Wavatar (generert)" - -#: wp-admin/options-discussion.php:228 -msgid "MonsterID (Generated)" -msgstr "MonsterID (generert)" - -#: wp-admin/options-general.php:18 -msgid "General Settings" -msgstr "Generelle innstillinger" - -#: wp-admin/options-general.php:83 -msgid "This address is used for admin purposes, like new user notification." -msgstr "Adressen brukes i forbindelse med administrasjon, som varsling av ny bruker." - -#: wp-admin/options-general.php:86 wp-admin/options-general.php:87 -msgid "Membership" -msgstr "Medlemskap" - -#: wp-admin/options-general.php:89 -msgid "Anyone can register" -msgstr "Alle kan registrere seg" - -#: wp-admin/options-general.php:93 -msgid "New User Default Role" -msgstr "Standardrolle for ny bruker" - -#: wp-admin/options-general.php:146 -msgid "Timezone" -msgstr "Tidssone" - -#: wp-admin/options-general.php:153 -msgid "Choose a city in the same timezone as you." -msgstr "Velg en by i samme tidssone som deg." - -#: wp-admin/options-general.php:183 -msgid "This timezone is currently in standard time." -msgstr "Denne tidssonen er nå i standardtid." - -#: wp-admin/options-general.php:256 wp-admin/options-general.php:292 -msgid "Custom:" -msgstr "Egendefinert:" - -#: wp-admin/options-general.php:304 -msgid "Week Starts On" -msgstr "Uken starter på" - -#: wp-admin/options-media.php:15 -msgid "Media Settings" -msgstr "Mediainnstillinger" - -#: wp-admin/options-media.php:48 -msgid "Image sizes" -msgstr "Bildestørrelser" - -#: wp-admin/options-media.php:53 -msgid "Thumbnail size" -msgstr "Miniatyrbildestørrelse" - -#: wp-admin/options-media.php:60 -msgid "Crop thumbnail to exact dimensions (normally thumbnails are proportional)" -msgstr "Klipp miniatyrbilde til eksakte dimensjoner (miniatyrbilder er vanligvis proporsjonale)" - -#: wp-admin/options-media.php:65 wp-admin/options-media.php:66 -msgid "Medium size" -msgstr "Medium størrelse" - -#: wp-admin/options-media.php:67 wp-admin/options-media.php:77 -msgid "Max Width" -msgstr "Maks bredde" - -#: wp-admin/options-media.php:69 wp-admin/options-media.php:79 -msgid "Max Height" -msgstr "Maks høyde" - -#: wp-admin/options-media.php:75 wp-admin/options-media.php:76 -msgid "Large size" -msgstr "Stor størrelse" - -#: wp-admin/options-media.php:92 -msgid "Embeds" -msgstr "Innbygginger" - -#: wp-admin/options-media.php:99 -msgid "Uploading Files" -msgstr "Laste opp filer" - -#: wp-admin/options-media.php:106 -msgid "Store uploads in this folder" -msgstr "Lagre opplastinger i denne mappen" - -#: wp-admin/options-media.php:116 -msgid "Full URL path to files" -msgstr "Full URL-bane til filer" - -#: wp-admin/options-media.php:118 -msgid "Configuring this is optional. By default, it should be blank." -msgstr "Endring av dette er valgfritt og blank som standard." - -#: wp-admin/options-media.php:126 -msgid "Organize my uploads into month- and year-based folders" -msgstr "Mine opplastinger skal organiseres i måneds- og årsbaserte mapper" - -#: wp-admin/options-permalink.php:15 wp-admin/options-permalink.php:28 -msgid "Permalink Settings" -msgstr "Permalenkeinnstillinger" - -#: wp-admin/options-permalink.php:135 -msgid "Permalink structure updated. Remove write access on web.config file now!" -msgstr "Permalenkestruktur oppdatert. Fjern skrivetilgang på web.config filen nå!" - -#: wp-admin/options-permalink.php:138 -msgid "You should update your .htaccess now." -msgstr "Du bør oppdatere .htaccess nå." - -#: wp-admin/options-permalink.php:129 -msgid "Permalink structure updated." -msgstr "Strukturen for permalenker er oppdatert" - -#: wp-admin/options-permalink.php:185 -msgid "Day and name" -msgstr "Dag og navn" - -#: wp-admin/options-permalink.php:189 -msgid "Month and name" -msgstr "Måned og navn" - -#: wp-admin/options-permalink.php:193 -msgid "Numeric" -msgstr "Numerisk" - -#: wp-admin/options-permalink.php:203 -msgid "Custom Structure" -msgstr "Egendefinert stuktur" - -#: wp-admin/options-permalink.php:213 -msgid "Optional" -msgstr "Valgfritt" - -#. translators: prefix for category permalinks -#: wp-admin/options-permalink.php:220 -msgid "Category base" -msgstr "Kategoriprefiks" - -#: wp-admin/options-permalink.php:224 -msgid "Tag base" -msgstr "Stikkordprefiks" - -#: wp-admin/options-permalink.php:243 -msgid "If you temporarily make your web.config file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved." -msgstr "ikke glem å tilbakestille rettighetene etter at reglene har blitt lagret, hvis du midlertidig gjør din web.config fil skrivbar så vi kan lage omskrivningsregler automatisk." - -#: wp-admin/options-permalink.php:250 -msgid "If you temporarily make your site’s root directory writable for us to generate the web.config file automatically, do not forget to revert the permissions after the file has been created." -msgstr "Har du midlertidig gitt oss skriverettigheter til toppnivået for nettstedet ditt, så vi kan lage web.config-filen automatisk? Ikke glem å tilbakestille rettighetene etter at filen er opptrettet." - -#: wp-admin/options-reading.php:15 -msgid "Reading Settings" -msgstr "Leseinnstillinger" - -#: wp-admin/options-reading.php:79 -msgid "A static page (select below)" -msgstr "En statisk side (velg under)" - -#: wp-admin/options-reading.php:83 -msgid "Front page: %s" -msgstr "Forside: %s" - -#: wp-admin/options-reading.php:84 -msgid "Posts page: %s" -msgstr "Innleggsside: %s" - -#: wp-admin/options-reading.php:87 -msgid "Warning: these pages should not be the same!" -msgstr "Advarsel: disse sidene burde ikke være like!" - -#: wp-admin/options-reading.php:93 -msgid "Blog pages show at most" -msgstr "Innleggssidene viser maksimalt" - -#: wp-admin/options-reading.php:95 -msgid "posts" -msgstr "innlegg" - -#: wp-admin/options-reading.php:99 -msgid "Syndication feeds show the most recent" -msgstr "Atom- og RSS-strømmer viser de nyeste" - -#: wp-admin/options-reading.php:103 wp-admin/options-reading.php:104 -msgid "For each article in a feed, show" -msgstr "For hvert innlegg og hver side i en Atom- eller RSS-strøm, vis" - -#: wp-admin/options-reading.php:105 -msgid "Full text" -msgstr "Hele teksten" - -#: wp-admin/options-reading.php:106 -msgid "Summary" -msgstr "Sammendrag" - -#: wp-admin/options-reading.php:53 -msgid "Encoding for pages and feeds" -msgstr "Tegnkoding for sider og strømmer" - -#: wp-admin/options-writing.php:15 -msgid "Writing Settings" -msgstr "Skriveinnstillinger" - -#: wp-admin/options-writing.php:61 wp-admin/options-writing.php:62 -msgid "Formatting" -msgstr "Formattering" - -#: wp-admin/options-writing.php:65 -msgid "Convert emoticons like :-) and :-P to graphics on display" -msgstr "Endre smilefjes som :-) og :-P til små bilder" - -#: wp-admin/options-writing.php:66 -msgid "WordPress should correct invalidly nested XHTML automatically" -msgstr "WordPress skal rette ugyldig nøsting av XHTML automatisk" - -#: wp-admin/options-writing.php:71 -msgid "Default Post Category" -msgstr "Standardkategori for innlegg" - -#: wp-admin/options-writing.php:97 -msgid "Default Link Category" -msgstr "Standardkategori for lenker" - -#: wp-admin/options-writing.php:116 -msgid "Post via email" -msgstr "Publiser med e-post" - -#. translators: 1, 2, 3: examples of random email addresses -#: wp-admin/options-writing.php:120 -msgid "To post to WordPress by email you must set up a secret email account with POP3 access. Any mail received at this address will be posted, so it’s a good idea to keep this address very secret. Here are three random strings you could use: %1$s, %2$s, %3$s." -msgstr "For å publisere til WordPress med e-post må du sette opp en hemmelig e-post konto med POP3-tilgang. All e-post mottatt på denne adressen vil bli publisert, så det er en god idé å holde adressen veldig hemmelig. Her er noen tilfeldige tekstbiter du kan bruke: %1$s, %2$s, %3$s." - -#: wp-admin/options-writing.php:129 -msgid "Mail Server" -msgstr "E-posttjener" - -#: wp-admin/options-writing.php:131 -msgid "Port" -msgstr "Port" - -#: wp-admin/options-writing.php:136 -msgid "Login Name" -msgstr "Login navn" - -#: wp-admin/options-writing.php:146 -msgid "Default Mail Category" -msgstr "Standardkategori for e-post" - -#: wp-admin/options-writing.php:38 wp-admin/options-writing.php:167 -msgid "Update Services" -msgstr "Oppdateringstjenester" - -#: wp-admin/options.php:247 -msgid "All Settings" -msgstr "Alle innstillinger" - -#: wp-admin/plugin-editor.php:20 -msgid "Edit Plugins" -msgstr "Rediger utvidelser" - -#: wp-admin/plugin-editor.php:118 -msgid "No such file exists! Double check the name and try again." -msgstr "Oops, jeg kjenner ingen filer som heter dette! Dobbelsjekk navnet og prøv igjen." - -#: wp-admin/plugin-editor.php:125 -msgid "Files of this type are not editable." -msgstr "Denne filtypen kan ikke redigeres." - -#: wp-admin/plugin-editor.php:170 wp-admin/theme-editor.php:156 -msgid "File edited successfully." -msgstr "Filen ble redigert." - -#: wp-admin/plugin-editor.php:172 -msgid "This plugin has been deactivated because your changes resulted in a fatal error." -msgstr "Utvidelsen kunne ikke aktiveres fordi den utløste en fatal feil." - -#: wp-admin/plugin-editor.php:212 -msgid "Select plugin to edit:" -msgstr "Velg utvidelse å redigere:" - -#: wp-admin/plugin-editor.php:234 -msgid "Plugin Files" -msgstr "Utvidelsesfiler" - -#: wp-admin/plugin-editor.php:263 wp-admin/theme-editor.php:264 -msgid "Documentation:" -msgstr "Dokumentasjon:" - -#: wp-admin/plugin-editor.php:273 -msgid "Update File and Attempt to Reactivate" -msgstr "Oppdater filen og forsøk å reaktivere den" - -#: wp-admin/plugin-editor.php:275 wp-admin/theme-editor.php:277 -msgid "Update File" -msgstr "Oppdater fil" - -#: wp-admin/includes/class-wp-plugin-install-list-table.php:94 -msgctxt "Plugin Installer" -msgid "Featured" -msgstr "Fremhevede" - -#: wp-admin/includes/class-wp-plugin-install-list-table.php:95 -msgctxt "Plugin Installer" -msgid "Popular" -msgstr "Populære" - -#: wp-admin/plugins.php:319 -msgid "Are you sure you wish to delete these files?" -msgstr "Er du sikker på at du vil slette disse filene?" - -#: wp-admin/plugins.php:330 -msgid "Yes, delete these files" -msgstr "Ja, slett disse filene" - -#: wp-admin/plugins.php:336 -msgid "No, return me to the plugin list" -msgstr "Nei, gå tilbake til listen med utvidelser" - -#: wp-admin/plugins.php:373 -msgid "Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here." -msgstr "Utvidelser kan gi WordPress ny funksjonalitet. Når en utvidelse er installert kan du aktivere og deaktivere den her." - -#. translators: WP_PLUGIN_DIR constant value -#: wp-admin/plugins.php:388 -msgid "If something goes wrong with a plugin and you can’t use WordPress, delete or rename that file in the %s directory and it will be automatically deactivated." -msgstr "Med noen utvidelser kan ting gå galt, slik at du ikke kan bruke WordPress. Da må du slette eller endre navn på filen i %s-mappen, og utvidelsen blir deaktivert automatisk." - -#. translators: 1: plugin file 2: error message -#: wp-admin/plugins.php:416 -msgid "The plugin %1$s has been deactivated due to an error: %2$s" -msgstr "Utvidelsen %1$s har blitt deaktivert på grunn av en feil: %2$s" - -#: wp-admin/plugins.php:431 -msgid "Plugin could not be activated because it triggered a fatal error." -msgstr "Utvidelsen kunne ikke aktiveres fordi det utløste en fatal feil." - -#: wp-admin/plugins.php:453 -msgid "Plugin could not be deleted due to an error: %s" -msgstr "Utvidelsen kunne ikke slettes på grunn av en feil: %s" - -#: wp-admin/plugins.php:461 -msgid "The selected plugins have been deleted." -msgstr "Valgte utvidelser har blitt slettet." - -#: wp-admin/plugins.php:468 -msgid "Plugin activated." -msgstr "Utvidelse aktivert" - -#: wp-admin/plugins.php:470 -msgid "Selected plugins activated." -msgstr "Valgte utvidelser aktivert." - -#: wp-admin/plugins.php:472 -msgid "Plugin deactivated." -msgstr "Utvidelse deaktivert" - -#: wp-admin/plugins.php:474 -msgid "Selected plugins deactivated." -msgstr "Valgte utvidelser deaktivert." - -#: wp-admin/includes/class-wp-plugins-list-table.php:461 -#: wp-admin/includes/class-wp-plugins-list-table.php:603 -msgid "Network Deactivate" -msgstr "Deaktiver nettverk" - -#: wp-admin/includes/class-wp-plugins-list-table.php:795 -msgid "Visit plugin site" -msgstr "Gå til utvidelsens hjemmeside" - -#: wp-admin/includes/class-wp-plugins-list-table.php:499 -msgid "Clear List" -msgstr "Tøm liste" - -#: wp-admin/includes/class-wp-plugins-list-table.php:413 -msgctxt "plugins" -msgid "All (%s)" -msgid_plural "All (%s)" -msgstr[0] "Alle (%s)" -msgstr[1] "Alle (%s)" - -#: wp-admin/includes/class-wp-plugins-list-table.php:416 -msgid "Active (%s)" -msgid_plural "Active (%s)" -msgstr[0] "Aktiv (%s)" -msgstr[1] "Aktive (%s)" - -#: wp-admin/includes/class-wp-plugins-list-table.php:419 -msgid "Recently Active (%s)" -msgid_plural "Recently Active (%s)" -msgstr[0] "Nylig aktiv (%s)" -msgstr[1] "Nylig aktive (%s)" - -#: wp-admin/includes/class-wp-plugins-list-table.php:422 -msgid "Inactive (%s)" -msgid_plural "Inactive (%s)" -msgstr[0] "Inaktiv (%s)" -msgstr[1] "Inaktive (%s)" - -#: wp-admin/includes/class-wp-plugins-list-table.php:339 -msgid "No plugins found." -msgstr "Ingen utvidelser funnet." - -#: wp-admin/edit-tags.php:161 wp-admin/edit-tags.php:181 wp-admin/post.php:107 -#: wp-admin/term.php:26 -msgid "You attempted to edit an item that doesn’t exist. Perhaps it was deleted?" -msgstr "Du forsøkte å redigere noe som ikke eksisterer. Kanskje den ble slettet?" - -#: wp-admin/async-upload.php:57 wp-admin/edit-tags.php:174 -#: wp-admin/edit-tags.php:300 wp-admin/includes/post.php:1786 -#: wp-admin/media-upload.php:46 wp-admin/post.php:117 -msgid "Sorry, you are not allowed to edit this item." -msgstr "Beklager, du har ikke lov til å redigere dette." - -#: wp-admin/post.php:120 -msgid "You can’t edit this item because it is in the Trash. Please restore it and try again." -msgstr "Du kan ikke endre dette fordi det ligger i papirkurven. Vennligst flytt det ut av papirkurven og prøv på nytt." - -#: wp-admin/async-upload.php:55 wp-admin/post.php:110 wp-admin/post.php:211 -#: wp-admin/post.php:234 wp-admin/post.php:252 -msgid "Unknown post type." -msgstr "Ukjent innleggstype." - -#: wp-admin/edit-form-advanced.php:109 -msgid "View post" -msgstr "Vis innlegg" - -#: wp-admin/revision.php:77 -msgid "Compare Revisions of “%1$s”" -msgstr "Sammenlign revisjoner av «%1$s»" - -#: wp-admin/includes/theme.php:642 wp-admin/themes.php:456 -msgid "Tags:" -msgstr "Stikkord:" - -#: wp-admin/theme-editor.php:20 -msgid "Edit Themes" -msgstr "Rediger temaer" - -#: wp-admin/theme-editor.php:173 -msgid "Select theme to edit:" -msgstr "Velg tema å redigere:" - -#: wp-admin/theme-editor.php:210 -msgid "Templates" -msgstr "Maler" - -#: wp-admin/theme-editor.php:252 -msgid "Oops, no such file exists! Double check the name and try again, merci." -msgstr "Oops, jeg kjenner ingen filer som heter dette! Dobbelsjekk navnet og prøv igjen, er du grei." - -#: wp-admin/themes.php:171 -msgid "Theme deleted." -msgstr "Tema er slettet." - -#: wp-admin/includes/theme.php:631 wp-admin/themes.php:438 -msgid "Current Theme" -msgstr "Gjeldende tema" - -#: wp-admin/includes/class-wp-themes-list-table.php:196 -msgid "" -"You are about to delete this theme '%s'\n" -" 'Cancel' to stop, 'OK' to delete." -msgstr "" -"Du er i ferd med å slette temaet '%s'\n" -" 'Avbryt' for å stoppe, 'OK' for å slette." - -#: wp-admin/themes.php:305 -msgid "Broken Themes" -msgstr "Ødelagte temaer" - -#: wp-admin/update-core.php:57 -msgid "Download nightly build" -msgstr "Last ned utviklingsversjon" - -#: wp-admin/update-core.php:81 -msgid "Download %s" -msgstr "Last ned %s" - -#: wp-admin/update-core.php:103 -msgid "Hide this update" -msgstr "Skjul denne oppdateringen" - -#: wp-admin/update-core.php:105 -msgid "Bring back this update" -msgstr "Vis denne oppdateringen" - -#: wp-admin/update-core.php:108 -msgid "This localized version contains both the translation and various other localization fixes. You can skip upgrading if you want to keep your current translation." -msgstr "Denne språkversjonen inneholder både oversettelsen og andre språkrelaterte endringer. Du kan hoppe over oppgradering hvis du vil beholde gjeldende oversettelse." - -#: wp-admin/update-core.php:124 wp-admin/update-core.php:136 -msgid "Show hidden updates" -msgstr "Vis skjulte oppdateringer" - -#: wp-admin/update-core.php:125 -msgid "Hide hidden updates" -msgstr "Gjem gjemte oppdateringer" - -#: wp-admin/update-core.php:258 wp-admin/update-core.php:268 -msgid "Compatibility with WordPress %1$s: 100%% (according to its author)" -msgstr "Kompabilitet med WordPress %1$s: 100%% (i følge forfatteren)" - -#: wp-admin/update-core.php:261 wp-admin/update-core.php:271 -msgid "Compatibility with WordPress %1$s: %2$d%% (%3$d \"works\" votes out of %4$d total)" -msgstr "Kompabilitet med WordPress %1$s: %2$d%% (%3$d \"virker\" av totalt %4$d stemmer)" - -#: wp-admin/update-core.php:263 wp-admin/update-core.php:273 -msgid "Compatibility with WordPress %1$s: Unknown" -msgstr "Kompabilitet med WordPress %1$s: Ukjent" - -#: wp-admin/includes/class-wp-automatic-updater.php:353 -#: wp-admin/update-core.php:496 -msgid "Installation Failed" -msgstr "Installasjon feilet" - -#: wp-admin/update.php:80 -msgid "Plugin Reactivation" -msgstr "Reaktiver utvidelser" - -#: wp-admin/update.php:82 -msgid "Plugin reactivated successfully." -msgstr "Utvidelser ble reaktivert." - -#: wp-admin/update.php:85 -msgid "Plugin failed to reactivate due to a fatal error." -msgstr "Utvidelsen kunne ikke reaktiveres på grunn av en fatal feil." - -#: wp-admin/update.php:128 -msgid "Installing Plugin: %s" -msgstr "Installerer utvidelse: %s" - -#: wp-admin/includes/class-wp-plugin-install-list-table.php:101 -#: wp-admin/plugin-install.php:120 wp-admin/update.php:151 -msgid "Upload Plugin" -msgstr "Last opp utvidelse" - -#: wp-admin/update.php:156 -msgid "Installing Plugin from uploaded file: %s" -msgstr "Installerer utvidelse fra opplastet fil: %s" - -#: wp-admin/update.php:236 -msgid "Installing Theme: %s" -msgstr "Installerer tema: %s" - -#: wp-admin/theme-install.php:49 wp-admin/theme-install.php:128 -#: wp-admin/theme-install.php:130 wp-admin/update.php:258 -msgid "Upload Theme" -msgstr "Last opp tema" - -#: wp-admin/update.php:264 -msgid "Installing Theme from uploaded file: %s" -msgstr "Installerer tema fra opplastet fil: %s" - -#: wp-admin/upgrade.php:76 -msgid "Your WordPress database is already up-to-date!" -msgstr "WordPress-databasen din er allerede oppdatert!" - -#: wp-admin/upgrade.php:115 -msgid "%s queries" -msgstr "%s spørringer" - -#: wp-admin/upgrade.php:117 -msgid "%s seconds" -msgstr "%s sekunder" - -#: wp-admin/edit-tags.php:131 wp-admin/options.php:80 -msgid "Sorry, you are not allowed to delete these items." -msgstr "Beklager, du har ikke lov til å slette disse elementene." - -#: wp-admin/upload.php:265 wp-admin/upload.php:298 -msgid "Media file permanently deleted." -msgstr "Mediefil slettet permanent." - -#: wp-admin/upload.php:276 wp-admin/upload.php:300 -msgid "Media file moved to the trash." -msgstr "Mediefil flyttet til papirkurven." - -#: wp-admin/upload.php:288 wp-admin/upload.php:301 -msgid "Media file restored from the trash." -msgstr "Mediefil gjenopprettet fra papirkurven." - -#: wp-admin/user-edit.php:28 -msgid "Edit User" -msgstr "Rediger bruker" - -#: wp-admin/media-upload.php:38 -msgid "Invalid item ID." -msgstr "Ugyldig element-ID." - -#: wp-admin/includes/user.php:502 -msgid "Use https" -msgstr "Bruk https" - -#: wp-admin/includes/user.php:503 -msgid "Always use https when visiting the admin" -msgstr "Bruk alltid https ved bruk av administrasjonsmenyen" - -#: wp-admin/user-edit.php:181 -msgid "User updated." -msgstr "Brukeren er oppdatert." - -#: wp-admin/user-edit.php:228 -msgid "Personal Options" -msgstr "Personlige innstillinger" - -#: wp-admin/user-edit.php:233 -msgid "Visual Editor" -msgstr "Visuell tekstbehandler" - -#: wp-admin/user-edit.php:234 -msgid "Disable the visual editor when writing" -msgstr "Deaktiver visuell tekstbehandler når man skriver" - -#: wp-admin/includes/misc.php:659 wp-admin/user-edit.php:239 -msgid "Admin Color Scheme" -msgstr "Adminfargeskjema" - -#: wp-admin/user-edit.php:260 -msgid "Enable keyboard shortcuts for comment moderation." -msgstr "Aktiver tastatursnarveier for kommentarmoderasjon." - -#: wp-admin/user-edit.php:339 wp-admin/user-new.php:404 -msgid "First Name" -msgstr "Fornavn" - -#: wp-admin/user-edit.php:344 wp-admin/user-new.php:408 -msgid "Last Name" -msgstr "Etternavn" - -#: wp-admin/user-edit.php:349 -msgid "Nickname" -msgstr "Kallenavn" - -#: wp-admin/user-edit.php:354 -msgid "Display name publicly as" -msgstr "Vis navn offentlig som" - -#: wp-admin/user-edit.php:390 -msgid "Contact Info" -msgstr "Kontaktinfo" - -#: wp-admin/user-edit.php:448 -msgid "About Yourself" -msgstr "Om deg" - -#: wp-admin/user-edit.php:448 -msgid "About the user" -msgstr "Om brukeren" - -#: wp-admin/user-edit.php:452 -msgid "Biographical Info" -msgstr "Biografisk informasjon" - -#: wp-admin/user-edit.php:454 -msgid "Share a little biographical information to fill out your profile. This may be shown publicly." -msgstr "Del noen linjer biografisk informasjon. Denne kan vises offentlig." - -#: wp-admin/user-edit.php:503 -msgid "New Password" -msgstr "Nytt passord" - -#: wp-admin/user-edit.php:526 -msgid "Type your new password again." -msgstr "Skriv ditt nye passord en gang til." - -#: wp-admin/user-edit.php:618 -msgid "Additional Capabilities" -msgstr "Er også i stand til" - -#: wp-admin/user-edit.php:642 -msgid "Update Profile" -msgstr "Oppdater profil" - -#: wp-admin/user-edit.php:642 -msgid "Update User" -msgstr "Oppdater bruker" - -#: wp-admin/user-new.php:98 -msgid "[%s] Joining confirmation" -msgstr "[%s] venter på aktivering" - -#: wp-admin/user-new.php:241 -msgid "Invitation email sent to new user. A confirmation link must be clicked before their account is created." -msgstr "Invitasjon er sendt til den nye brukeren på e-post. Der er en aktiveringslenke som må trykkes på før kontoen lages." - -#: wp-admin/user-new.php:344 wp-admin/user-new.php:474 -msgid "Skip Confirmation Email" -msgstr "Hopp over bekreftelses-e-post" - -#: wp-admin/users.php:97 wp-admin/users.php:122 -msgid "You can’t edit that user." -msgstr "Du kan ikke redigere denne brukeren." - -#: wp-admin/users.php:167 wp-admin/users.php:207 -msgid "You can’t delete users." -msgstr "Du kan ikke slette brukere." - -#: wp-admin/users.php:232 -msgid "Delete Users" -msgstr "Slett brukere" - -#: wp-admin/users.php:297 -msgid "There are no valid users selected for deletion." -msgstr "Ingen gyldige brukere er angitt for sletting." - -#: wp-admin/users.php:442 -msgid "New user created." -msgstr "Ny bruker ble lagt til." - -#: wp-admin/users.php:449 -msgid "The current user’s role must have user editing capabilities." -msgstr "Gjeldende bruker må ha en rolle med mulighet for redigering av brukere." - -#: wp-admin/users.php:450 -msgid "Other user roles have been changed." -msgstr "Andre brukeres roller er byttet." - -#: wp-admin/users.php:453 -msgid "You can’t delete the current user." -msgstr "Du kan ikke slette gjeldende bruker." - -#: wp-admin/users.php:454 -msgid "Other users have been deleted." -msgstr "Andre brukere har blitt slettet." +#: wp-admin/edit-comments.php:281 +msgid "This comment is already approved." +msgstr "Denne kommentaren er allerede godkjent." + +#: wp-admin/comment.php:135 +msgid "This comment is currently approved." +msgstr "Denne kommentaren er godkjent." + +#: wp-admin/comment.php:80 +msgid "Moderate Comment" +msgstr "Moderer kommentar" + +#: wp-admin/comment.php:138 +msgid "This comment is currently marked as spam." +msgstr "Denne kommentaren er merket som spam." + +#: wp-admin/export.php:172 +msgid "Categories:" +msgstr "Kategorier:" + +#: wp-admin/widgets.php:115 +msgid "Drag widgets here to remove them from the sidebar but keep their settings." +msgstr "Dra widgeter hit for å fjerne dem fra sidekolonnen og beholde innstillingene deres." + +#: wp-admin/widgets.php:386 +msgid "Available Widgets" +msgstr "Tilgjengelige widgeter" + +#: wp-admin/widgets.php:341 +msgid "Error in displaying the widget settings form." +msgstr "Feil under visning av skjema for widgetens innstillinger." + +#: wp-admin/includes/misc.php:882 wp-admin/includes/post.php:1814 +#: wp-admin/widgets.php:340 +msgid "Error while saving." +msgstr "Feil under lagring." + +#: wp-admin/widgets.php:320 +msgid "Save Widget" +msgstr "Lagre widget" + +#: wp-admin/widgets.php:282 +msgid "Position" +msgstr "Posisjon" + +#: wp-admin/widgets.php:280 +msgid "Select both the sidebar for this widget and the position of the widget in that sidebar." +msgstr "Velg både sidekolonnen for denne widgeten og posisjonen til widgeten i den sidekolonnen." + +#: wp-admin/widgets.php:269 +msgid "Widget %s" +msgstr "Widget %s" + +#: wp-admin/widgets.php:112 +msgid "Inactive Widgets" +msgstr "Inaktive widgeter" + +#: wp-admin/includes/class-wp-users-list-table.php:270 +msgid "Change" +msgstr "Endre" + +#: wp-admin/includes/class-wp-users-list-table.php:264 +#: wp-admin/includes/class-wp-users-list-table.php:266 +msgid "Change role to…" +msgstr "Endre rolle til…" #. translators: User role name with count #: wp-admin/includes/class-wp-users-list-table.php:206 @@ -8816,110 +7741,3009 @@ msgstr "Andre brukere har blitt slettet." msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" -#: wp-admin/includes/class-wp-users-list-table.php:264 -#: wp-admin/includes/class-wp-users-list-table.php:266 -msgid "Change role to…" -msgstr "Endre rolle til…" +#: wp-admin/users.php:465 +msgid "Other users have been deleted." +msgstr "Andre brukere har blitt slettet." -#: wp-admin/includes/class-wp-users-list-table.php:270 -msgid "Change" -msgstr "Endre" +#: wp-admin/users.php:464 +msgid "You can’t delete the current user." +msgstr "Du kan ikke slette gjeldende bruker." -#: wp-admin/widgets.php:112 -msgid "Inactive Widgets" -msgstr "Inaktive widgeter" +#: wp-admin/users.php:461 +msgid "Other user roles have been changed." +msgstr "Andre brukeres roller er byttet." -#: wp-admin/widgets.php:269 -msgid "Widget %s" -msgstr "Widget %s" +#: wp-admin/users.php:460 +msgid "The current user’s role must have user editing capabilities." +msgstr "Gjeldende bruker må ha en rolle med mulighet for redigering av brukere." -#: wp-admin/widgets.php:280 -msgid "Select both the sidebar for this widget and the position of the widget in that sidebar." -msgstr "Velg både sidekolonnen for denne widgeten og posisjonen til widgeten i den sidekolonnen." +#: wp-admin/users.php:453 +msgid "New user created." +msgstr "Ny bruker ble lagt til." -#: wp-admin/custom-background.php:296 wp-admin/widgets.php:282 -msgid "Position" -msgstr "Posisjon" +#: wp-admin/users.php:297 +msgid "There are no valid users selected for deletion." +msgstr "Ingen gyldige brukere er angitt for sletting." -#: wp-admin/widgets.php:320 -msgid "Save Widget" -msgstr "Lagre widget" +#: wp-admin/users.php:232 +msgid "Delete Users" +msgstr "Slett brukere" -#: wp-admin/includes/misc.php:882 wp-admin/includes/post.php:1780 -#: wp-admin/widgets.php:340 -msgid "Error while saving." -msgstr "Feil under lagring." +#: wp-admin/user-new.php:351 wp-admin/user-new.php:487 +msgid "Skip Confirmation Email" +msgstr "Hopp over bekreftelses-e-post" -#: wp-admin/widgets.php:341 -msgid "Error in displaying the widget settings form." -msgstr "Feil under visning av skjema for widgetens innstillinger." +#: wp-admin/user-new.php:248 +msgid "Invitation email sent to new user. A confirmation link must be clicked before their account is created." +msgstr "Invitasjon er sendt til den nye brukeren på e-post. Der er en aktiveringslenke som må trykkes på før kontoen lages." -#: wp-admin/widgets.php:386 -msgid "Available Widgets" -msgstr "Tilgjengelige widgeter" +#: wp-admin/user-new.php:100 +msgid "[%s] Joining confirmation" +msgstr "[%s] venter på aktivering" -#: wp-admin/widgets.php:115 -msgid "Drag widgets here to remove them from the sidebar but keep their settings." -msgstr "Dra widgeter hit for å fjerne dem fra sidekolonnen og beholde innstillingene deres." +#: wp-admin/user-edit.php:679 +msgid "Update User" +msgstr "Oppdater bruker" -#: wp-admin/export.php:172 -msgid "Categories:" -msgstr "Kategorier:" +#: wp-admin/user-edit.php:679 +msgid "Update Profile" +msgstr "Oppdater profil" -#: wp-admin/comment.php:123 -msgid "Permanently Delete Comment" -msgstr "Slett kommentar permanent" +#: wp-admin/user-edit.php:655 +msgid "Additional Capabilities" +msgstr "Er også i stand til" -#: wp-admin/comment.php:126 -msgid "You are about to approve the following comment:" -msgstr "Du er i ferd med å godkjenne følgende kommentar:" +#: wp-admin/user-edit.php:563 +msgid "Type your new password again." +msgstr "Skriv ditt nye passord en gang til." -#: wp-admin/comment.php:127 -msgid "Approve Comment" -msgstr "Godkjenn kommentar" +#: wp-admin/user-edit.php:540 +msgid "New Password" +msgstr "Nytt passord" -#: wp-admin/comment.php:329 -msgid "Unknown action." -msgstr "Ukjent handling" +#: wp-admin/user-edit.php:489 +msgid "Share a little biographical information to fill out your profile. This may be shown publicly." +msgstr "Del noen linjer biografisk informasjon. Denne kan vises offentlig." -#: wp-admin/custom-background.php:183 wp-admin/includes/theme.php:248 -msgid "Custom Background" -msgstr "Egendefinert bakgrunn" +#: wp-admin/user-edit.php:487 +msgid "Biographical Info" +msgstr "Biografisk informasjon" -#: wp-admin/custom-background.php:200 -msgid "Background updated. Visit your site to see how it looks." -msgstr "Bakgrunn oppdatert. Besøk nettstedet ditt for å se hvordan det ser ut." +#: wp-admin/user-edit.php:483 +msgid "About the user" +msgstr "Om brukeren" -#: wp-admin/custom-background.php:271 wp-admin/custom-header.php:575 -msgid "Choose an image from your computer:" -msgstr "Velg et bilde fra maskinen din:" +#: wp-admin/user-edit.php:483 +msgid "About Yourself" +msgstr "Om deg" -#: wp-admin/custom-background.php:275 wp-admin/custom-header.php:579 -#: wp-admin/includes/class-wp-theme-install-list-table.php:63 -#: wp-admin/includes/media.php:1943 wp-admin/includes/media.php:1945 -msgid "Upload" -msgstr "Last opp" +#: wp-admin/user-edit.php:425 +msgid "Contact Info" +msgstr "Kontaktinfo" -#: wp-admin/includes/template.php:1922 wp-admin/nav-menus.php:656 -#: wp-admin/options.php:294 -msgid "Save Changes" -msgstr "Lagre endringene" +#: wp-admin/user-edit.php:389 +msgid "Display name publicly as" +msgstr "Vis navn offentlig som" -#: wp-admin/custom-header.php:456 wp-admin/includes/theme.php:250 -msgid "Custom Header" -msgstr "Egendefinert sidetopp" +#: wp-admin/user-edit.php:384 +msgid "Nickname" +msgstr "Kallenavn" -#: wp-admin/custom-header.php:473 -msgid "Header updated. Visit your site to see how it looks." -msgstr "Sidetopp oppdatert. Besøk nettstedet ditt for å se hvordan det ser ut." +#: wp-admin/user-edit.php:379 wp-admin/user-new.php:418 +msgid "Last Name" +msgstr "Etternavn" -#: wp-admin/custom-header.php:787 wp-admin/custom-header.php:923 -msgid "Image Processing Error" -msgstr "Bildebehandlingsfeil" +#: wp-admin/user-edit.php:374 wp-admin/user-new.php:414 +msgid "First Name" +msgstr "Fornavn" -#: wp-admin/custom-header.php:804 -msgid "Choose the part of the image you want to use as your header." -msgstr "Velg den delen av bildet du ønsker å bruke som toppbilde." +#: wp-admin/user-edit.php:261 +msgid "Enable keyboard shortcuts for comment moderation." +msgstr "Aktiver tastatursnarveier for kommentarmoderasjon." + +#: wp-admin/includes/misc.php:659 wp-admin/user-edit.php:240 +msgid "Admin Color Scheme" +msgstr "Adminfargeskjema" + +#: wp-admin/user-edit.php:235 +msgid "Disable the visual editor when writing" +msgstr "Deaktiver visuell tekstbehandler når man skriver" + +#: wp-admin/user-edit.php:234 +msgid "Visual Editor" +msgstr "Visuell tekstbehandler" + +#: wp-admin/user-edit.php:229 +msgid "Personal Options" +msgstr "Personlige innstillinger" + +#: wp-admin/user-edit.php:182 +msgid "User updated." +msgstr "Brukeren er oppdatert." + +#: wp-admin/includes/user.php:517 +msgid "Always use https when visiting the admin" +msgstr "Bruk alltid https ved bruk av administrasjonsmenyen" + +#: wp-admin/includes/user.php:516 +msgid "Use https" +msgstr "Bruk https" + +#: wp-admin/media-upload.php:38 +msgid "Invalid item ID." +msgstr "Ugyldig element-ID." + +#: wp-admin/user-edit.php:28 +msgid "Edit User" +msgstr "Rediger bruker" + +#: wp-admin/upload.php:291 wp-admin/upload.php:304 +msgid "Media file restored from the trash." +msgstr "Mediefil gjenopprettet fra papirkurven." + +#: wp-admin/upload.php:279 wp-admin/upload.php:303 +msgid "Media file moved to the trash." +msgstr "Mediefil flyttet til papirkurven." + +#: wp-admin/upload.php:268 wp-admin/upload.php:301 +msgid "Media file permanently deleted." +msgstr "Mediefil slettet permanent." + +#: wp-admin/edit-tags.php:118 wp-admin/options.php:80 +msgid "Sorry, you are not allowed to delete these items." +msgstr "Beklager, du har ikke lov til å slette disse elementene." + +#: wp-admin/upgrade.php:117 +msgid "%s seconds" +msgstr "%s sekunder" + +#: wp-admin/upgrade.php:115 +msgid "%s queries" +msgstr "%s spørringer" + +#: wp-admin/upgrade.php:76 +msgid "Your WordPress database is already up-to-date!" +msgstr "WordPress-databasen din er allerede oppdatert!" + +#: wp-admin/update.php:264 +msgid "Installing Theme from uploaded file: %s" +msgstr "Installerer tema fra opplastet fil: %s" + +#: wp-admin/theme-install.php:49 wp-admin/theme-install.php:134 +#: wp-admin/theme-install.php:136 wp-admin/update.php:258 +msgid "Upload Theme" +msgstr "Last opp tema" + +#: wp-admin/update.php:236 +msgid "Installing Theme: %s" +msgstr "Installerer tema: %s" + +#: wp-admin/update.php:156 +msgid "Installing Plugin from uploaded file: %s" +msgstr "Installerer utvidelse fra opplastet fil: %s" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:100 +#: wp-admin/plugin-install.php:120 wp-admin/update.php:151 +msgid "Upload Plugin" +msgstr "Last opp utvidelse" + +#: wp-admin/update.php:128 +msgid "Installing Plugin: %s" +msgstr "Installerer utvidelse: %s" + +#: wp-admin/update.php:85 +msgid "Plugin failed to reactivate due to a fatal error." +msgstr "Utvidelsen kunne ikke reaktiveres på grunn av en fatal feil." + +#: wp-admin/update.php:82 +msgid "Plugin reactivated successfully." +msgstr "Utvidelser ble reaktivert." + +#: wp-admin/update.php:80 +msgid "Plugin Reactivation" +msgstr "Reaktiver utvidelser" + +#: wp-admin/includes/class-wp-automatic-updater.php:353 +#: wp-admin/update-core.php:493 +msgid "Installation Failed" +msgstr "Installasjon feilet" + +#: wp-admin/update-core.php:260 wp-admin/update-core.php:270 +msgid "Compatibility with WordPress %1$s: Unknown" +msgstr "Kompabilitet med WordPress %1$s: Ukjent" + +#: wp-admin/update-core.php:258 wp-admin/update-core.php:268 +msgid "Compatibility with WordPress %1$s: %2$d%% (%3$d \"works\" votes out of %4$d total)" +msgstr "Kompabilitet med WordPress %1$s: %2$d%% (%3$d \"virker\" av totalt %4$d stemmer)" + +#: wp-admin/update-core.php:255 wp-admin/update-core.php:265 +msgid "Compatibility with WordPress %1$s: 100%% (according to its author)" +msgstr "Kompabilitet med WordPress %1$s: 100%% (i følge forfatteren)" + +#: wp-admin/update-core.php:127 +msgid "Hide hidden updates" +msgstr "Gjem gjemte oppdateringer" + +#: wp-admin/update-core.php:126 wp-admin/update-core.php:138 +msgid "Show hidden updates" +msgstr "Vis skjulte oppdateringer" + +#: wp-admin/update-core.php:110 +msgid "This localized version contains both the translation and various other localization fixes. You can skip upgrading if you want to keep your current translation." +msgstr "Denne språkversjonen inneholder både oversettelsen og andre språkrelaterte endringer. Du kan hoppe over oppgradering hvis du vil beholde gjeldende oversettelse." + +#: wp-admin/update-core.php:107 +msgid "Bring back this update" +msgstr "Vis denne oppdateringen" + +#: wp-admin/update-core.php:105 +msgid "Hide this update" +msgstr "Skjul denne oppdateringen" + +#: wp-admin/themes.php:309 +msgid "Broken Themes" +msgstr "Ødelagte temaer" + +#: wp-admin/includes/class-wp-themes-list-table.php:197 +msgid "" +"You are about to delete this theme '%s'\n" +" 'Cancel' to stop, 'OK' to delete." +msgstr "" +"Du er i ferd med å slette temaet '%s'\n" +" 'Avbryt' for å stoppe, 'OK' for å slette." + +#: wp-admin/includes/theme.php:656 wp-admin/themes.php:446 +msgid "Current Theme" +msgstr "Gjeldende tema" + +#: wp-admin/themes.php:171 +msgid "Theme deleted." +msgstr "Tema er slettet." + +#: wp-admin/theme-editor.php:252 +msgid "Oops, no such file exists! Double check the name and try again, merci." +msgstr "Oops, jeg kjenner ingen filer som heter dette! Dobbelsjekk navnet og prøv igjen, er du grei." + +#: wp-admin/theme-editor.php:210 +msgid "Templates" +msgstr "Maler" + +#: wp-admin/theme-editor.php:173 +msgid "Select theme to edit:" +msgstr "Velg tema å redigere:" + +#: wp-admin/theme-editor.php:20 +msgid "Edit Themes" +msgstr "Rediger temaer" + +#: wp-admin/includes/theme.php:667 wp-admin/themes.php:464 +msgid "Tags:" +msgstr "Stikkord:" + +#. translators: 1: Post title +#: wp-admin/revision.php:78 +msgid "Compare Revisions of “%1$s”" +msgstr "Sammenlign revisjoner av «%1$s»" + +#: wp-admin/edit-form-advanced.php:109 +msgid "View post" +msgstr "Vis innlegg" + +#: wp-admin/async-upload.php:55 wp-admin/post.php:110 wp-admin/post.php:211 +#: wp-admin/post.php:234 wp-admin/post.php:252 +msgid "Unknown post type." +msgstr "Ukjent innleggstype." + +#: wp-admin/post.php:120 +msgid "You can’t edit this item because it is in the Trash. Please restore it and try again." +msgstr "Du kan ikke endre dette fordi det ligger i papirkurven. Vennligst flytt det ut av papirkurven og prøv på nytt." + +#: wp-admin/async-upload.php:57 wp-admin/edit-tags.php:154 +#: wp-admin/includes/post.php:1820 wp-admin/media-upload.php:46 +#: wp-admin/post.php:117 wp-admin/term.php:38 +msgid "Sorry, you are not allowed to edit this item." +msgstr "Beklager, du har ikke lov til å redigere dette." + +#: wp-admin/edit-tags.php:141 wp-admin/edit-tags.php:161 wp-admin/post.php:107 +#: wp-admin/term.php:26 +msgid "You attempted to edit an item that doesn’t exist. Perhaps it was deleted?" +msgstr "Du forsøkte å redigere noe som ikke eksisterer. Kanskje den ble slettet?" + +#: wp-admin/includes/class-wp-plugins-list-table.php:340 +msgid "No plugins found." +msgstr "Ingen utvidelser funnet." + +#: wp-admin/includes/class-wp-plugins-list-table.php:423 +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inaktiv (%s)" +msgstr[1] "Inaktive (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:420 +msgid "Recently Active (%s)" +msgid_plural "Recently Active (%s)" +msgstr[0] "Nylig aktiv (%s)" +msgstr[1] "Nylig aktive (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:417 +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Aktiv (%s)" +msgstr[1] "Aktive (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:414 +msgctxt "plugins" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "Alle (%s)" +msgstr[1] "Alle (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:500 +msgid "Clear List" +msgstr "Tøm liste" + +#: wp-admin/includes/class-wp-plugins-list-table.php:793 +msgid "Visit plugin site" +msgstr "Gå til utvidelsens hjemmeside" + +#: wp-admin/includes/class-wp-plugins-list-table.php:462 +#: wp-admin/includes/class-wp-plugins-list-table.php:604 +msgid "Network Deactivate" +msgstr "Deaktiver nettverk" + +#: wp-admin/plugins.php:488 +msgid "Selected plugins deactivated." +msgstr "Valgte utvidelser deaktivert." + +#: wp-admin/plugins.php:486 +msgid "Plugin deactivated." +msgstr "Utvidelse deaktivert" + +#: wp-admin/plugins.php:484 +msgid "Selected plugins activated." +msgstr "Valgte utvidelser aktivert." + +#: wp-admin/plugins.php:482 +msgid "Plugin activated." +msgstr "Utvidelse aktivert" + +#: wp-admin/plugins.php:475 +msgid "The selected plugins have been deleted." +msgstr "Valgte utvidelser har blitt slettet." + +#: wp-admin/plugins.php:467 +msgid "Plugin could not be deleted due to an error: %s" +msgstr "Utvidelsen kunne ikke slettes på grunn av en feil: %s" + +#: wp-admin/plugins.php:445 +msgid "Plugin could not be activated because it triggered a fatal error." +msgstr "Utvidelsen kunne ikke aktiveres fordi det utløste en fatal feil." + +#. translators: 1: plugin file 2: error message +#: wp-admin/plugins.php:430 +msgid "The plugin %1$s has been deactivated due to an error: %2$s" +msgstr "Utvidelsen %1$s har blitt deaktivert på grunn av en feil: %2$s" + +#. translators: WP_PLUGIN_DIR constant value +#: wp-admin/plugins.php:402 +msgid "If something goes wrong with a plugin and you can’t use WordPress, delete or rename that file in the %s directory and it will be automatically deactivated." +msgstr "Med noen utvidelser kan ting gå galt, slik at du ikke kan bruke WordPress. Da må du slette eller endre navn på filen i %s-mappen, og utvidelsen blir deaktivert automatisk." + +#: wp-admin/plugins.php:387 +msgid "Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here." +msgstr "Utvidelser kan gi WordPress ny funksjonalitet. Når en utvidelse er installert kan du aktivere og deaktivere den her." + +#: wp-admin/plugins.php:336 +msgid "No, return me to the plugin list" +msgstr "Nei, gå tilbake til listen med utvidelser" + +#: wp-admin/plugins.php:330 +msgid "Yes, delete these files" +msgstr "Ja, slett disse filene" + +#: wp-admin/plugins.php:319 +msgid "Are you sure you wish to delete these files?" +msgstr "Er du sikker på at du vil slette disse filene?" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:94 +msgctxt "Plugin Installer" +msgid "Popular" +msgstr "Populære" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:93 +msgctxt "Plugin Installer" +msgid "Featured" +msgstr "Fremhevede" + +#: wp-admin/plugin-editor.php:287 wp-admin/theme-editor.php:277 +msgid "Update File" +msgstr "Oppdater fil" + +#: wp-admin/plugin-editor.php:285 +msgid "Update File and Attempt to Reactivate" +msgstr "Oppdater filen og forsøk å reaktivere den" + +#: wp-admin/plugin-editor.php:275 wp-admin/theme-editor.php:264 +msgid "Documentation:" +msgstr "Dokumentasjon:" + +#: wp-admin/plugin-editor.php:246 +msgid "Plugin Files" +msgstr "Utvidelsesfiler" + +#: wp-admin/plugin-editor.php:224 +msgid "Select plugin to edit:" +msgstr "Velg utvidelse å redigere:" + +#: wp-admin/plugin-editor.php:184 +msgid "This plugin has been deactivated because your changes resulted in a fatal error." +msgstr "Utvidelsen kunne ikke aktiveres fordi den utløste en fatal feil." + +#: wp-admin/plugin-editor.php:182 wp-admin/theme-editor.php:156 +msgid "File edited successfully." +msgstr "Filen ble redigert." + +#: wp-admin/plugin-editor.php:137 +msgid "Files of this type are not editable." +msgstr "Denne filtypen kan ikke redigeres." + +#: wp-admin/plugin-editor.php:130 +msgid "No such file exists! Double check the name and try again." +msgstr "Oops, jeg kjenner ingen filer som heter dette! Dobbelsjekk navnet og prøv igjen." + +#: wp-admin/plugin-editor.php:20 +msgid "Edit Plugins" +msgstr "Rediger utvidelser" + +#: wp-admin/options.php:253 +msgid "All Settings" +msgstr "Alle innstillinger" + +#: wp-admin/options-writing.php:38 wp-admin/options-writing.php:167 +msgid "Update Services" +msgstr "Oppdateringstjenester" + +#: wp-admin/options-writing.php:146 +msgid "Default Mail Category" +msgstr "Standardkategori for e-post" + +#: wp-admin/options-writing.php:136 +msgid "Login Name" +msgstr "Login navn" + +#: wp-admin/options-writing.php:131 +msgid "Port" +msgstr "Port" + +#: wp-admin/options-writing.php:129 +msgid "Mail Server" +msgstr "E-posttjener" + +#. translators: 1, 2, 3: examples of random email addresses +#: wp-admin/options-writing.php:120 +msgid "To post to WordPress by email you must set up a secret email account with POP3 access. Any mail received at this address will be posted, so it’s a good idea to keep this address very secret. Here are three random strings you could use: %1$s, %2$s, %3$s." +msgstr "For å publisere til WordPress med e-post må du sette opp en hemmelig e-post konto med POP3-tilgang. All e-post mottatt på denne adressen vil bli publisert, så det er en god idé å holde adressen veldig hemmelig. Her er noen tilfeldige tekstbiter du kan bruke: %1$s, %2$s, %3$s." + +#: wp-admin/options-writing.php:116 +msgid "Post via email" +msgstr "Publiser med e-post" + +#: wp-admin/options-writing.php:97 +msgid "Default Link Category" +msgstr "Standardkategori for lenker" + +#: wp-admin/options-writing.php:71 +msgid "Default Post Category" +msgstr "Standardkategori for innlegg" + +#: wp-admin/options-writing.php:66 +msgid "WordPress should correct invalidly nested XHTML automatically" +msgstr "WordPress skal rette ugyldig nøsting av XHTML automatisk" + +#: wp-admin/options-writing.php:65 +msgid "Convert emoticons like :-) and :-P to graphics on display" +msgstr "Endre smilefjes som :-) og :-P til små bilder" + +#: wp-admin/options-writing.php:61 wp-admin/options-writing.php:62 +msgid "Formatting" +msgstr "Formattering" + +#: wp-admin/options-writing.php:15 +msgid "Writing Settings" +msgstr "Skriveinnstillinger" + +#: wp-admin/options-reading.php:53 +msgid "Encoding for pages and feeds" +msgstr "Tegnkoding for sider og strømmer" + +#: wp-admin/options-reading.php:106 +msgid "Summary" +msgstr "Sammendrag" + +#: wp-admin/options-reading.php:105 +msgid "Full text" +msgstr "Hele teksten" + +#: wp-admin/options-reading.php:103 wp-admin/options-reading.php:104 +msgid "For each article in a feed, show" +msgstr "For hvert innlegg og hver side i en Atom- eller RSS-strøm, vis" + +#: wp-admin/options-reading.php:99 +msgid "Syndication feeds show the most recent" +msgstr "Atom- og RSS-strømmer viser de nyeste" + +#: wp-admin/options-reading.php:95 +msgid "posts" +msgstr "innlegg" + +#: wp-admin/options-reading.php:93 +msgid "Blog pages show at most" +msgstr "Innleggssidene viser maksimalt" + +#: wp-admin/options-reading.php:87 +msgid "Warning: these pages should not be the same!" +msgstr "Advarsel: disse sidene burde ikke være like!" + +#: wp-admin/options-reading.php:84 +msgid "Posts page: %s" +msgstr "Innleggsside: %s" + +#: wp-admin/options-reading.php:83 +msgid "Front page: %s" +msgstr "Forside: %s" + +#: wp-admin/options-reading.php:79 +msgid "A static page (select below)" +msgstr "En statisk side (velg under)" + +#: wp-admin/options-reading.php:15 +msgid "Reading Settings" +msgstr "Leseinnstillinger" + +#: wp-admin/options-permalink.php:250 +msgid "If you temporarily make your site’s root directory writable for us to generate the web.config file automatically, do not forget to revert the permissions after the file has been created." +msgstr "Har du midlertidig gitt oss skriverettigheter til toppnivået for nettstedet ditt, så vi kan lage web.config-filen automatisk? Ikke glem å tilbakestille rettighetene etter at filen er opptrettet." + +#: wp-admin/options-permalink.php:243 +msgid "If you temporarily make your web.config file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved." +msgstr "ikke glem å tilbakestille rettighetene etter at reglene har blitt lagret, hvis du midlertidig gjør din web.config fil skrivbar så vi kan lage omskrivningsregler automatisk." + +#: wp-admin/options-permalink.php:224 +msgid "Tag base" +msgstr "Stikkordprefiks" + +#. translators: prefix for category permalinks +#: wp-admin/options-permalink.php:220 +msgid "Category base" +msgstr "Kategoriprefiks" + +#: wp-admin/options-permalink.php:213 +msgid "Optional" +msgstr "Valgfritt" + +#: wp-admin/options-permalink.php:203 +msgid "Custom Structure" +msgstr "Egendefinert stuktur" + +#: wp-admin/options-permalink.php:193 +msgid "Numeric" +msgstr "Numerisk" + +#: wp-admin/options-permalink.php:189 +msgid "Month and name" +msgstr "Måned og navn" + +#: wp-admin/options-permalink.php:185 +msgid "Day and name" +msgstr "Dag og navn" + +#: wp-admin/options-permalink.php:129 +msgid "Permalink structure updated." +msgstr "Strukturen for permalenker er oppdatert" + +#: wp-admin/options-permalink.php:138 +msgid "You should update your .htaccess now." +msgstr "Du bør oppdatere .htaccess nå." + +#: wp-admin/options-permalink.php:135 +msgid "Permalink structure updated. Remove write access on web.config file now!" +msgstr "Permalenkestruktur oppdatert. Fjern skrivetilgang på web.config filen nå!" + +#: wp-admin/options-permalink.php:15 wp-admin/options-permalink.php:28 +msgid "Permalink Settings" +msgstr "Permalenkeinnstillinger" + +#: wp-admin/options-media.php:126 +msgid "Organize my uploads into month- and year-based folders" +msgstr "Mine opplastinger skal organiseres i måneds- og årsbaserte mapper" + +#: wp-admin/options-media.php:118 +msgid "Configuring this is optional. By default, it should be blank." +msgstr "Endring av dette er valgfritt og blank som standard." + +#: wp-admin/options-media.php:116 +msgid "Full URL path to files" +msgstr "Full URL-bane til filer" + +#: wp-admin/options-media.php:106 +msgid "Store uploads in this folder" +msgstr "Lagre opplastinger i denne mappen" + +#: wp-admin/options-media.php:99 +msgid "Uploading Files" +msgstr "Laste opp filer" + +#: wp-admin/options-media.php:92 +msgid "Embeds" +msgstr "Innbygginger" + +#: wp-admin/options-media.php:75 wp-admin/options-media.php:76 +msgid "Large size" +msgstr "Stor størrelse" + +#: wp-admin/options-media.php:69 wp-admin/options-media.php:79 +msgid "Max Height" +msgstr "Maks høyde" + +#: wp-admin/options-media.php:67 wp-admin/options-media.php:77 +msgid "Max Width" +msgstr "Maks bredde" + +#: wp-admin/options-media.php:65 wp-admin/options-media.php:66 +msgid "Medium size" +msgstr "Medium størrelse" + +#: wp-admin/options-media.php:60 +msgid "Crop thumbnail to exact dimensions (normally thumbnails are proportional)" +msgstr "Klipp miniatyrbilde til eksakte dimensjoner (miniatyrbilder er vanligvis proporsjonale)" + +#: wp-admin/options-media.php:53 +msgid "Thumbnail size" +msgstr "Miniatyrbildestørrelse" + +#: wp-admin/options-media.php:48 +msgid "Image sizes" +msgstr "Bildestørrelser" + +#: wp-admin/options-media.php:15 +msgid "Media Settings" +msgstr "Mediainnstillinger" + +#: wp-admin/options-general.php:304 +msgid "Week Starts On" +msgstr "Uken starter på" + +#: wp-admin/options-general.php:256 wp-admin/options-general.php:292 +msgid "Custom:" +msgstr "Egendefinert:" + +#: wp-admin/options-general.php:183 +msgid "This timezone is currently in standard time." +msgstr "Denne tidssonen er nå i standardtid." + +#: wp-admin/options-general.php:146 +msgid "Timezone" +msgstr "Tidssone" + +#: wp-admin/options-general.php:93 +msgid "New User Default Role" +msgstr "Standardrolle for ny bruker" + +#: wp-admin/options-general.php:89 +msgid "Anyone can register" +msgstr "Alle kan registrere seg" + +#: wp-admin/options-general.php:86 wp-admin/options-general.php:87 +msgid "Membership" +msgstr "Medlemskap" + +#: wp-admin/options-general.php:18 +msgid "General Settings" +msgstr "Generelle innstillinger" + +#: wp-admin/options-discussion.php:229 +msgid "MonsterID (Generated)" +msgstr "MonsterID (generert)" + +#: wp-admin/options-discussion.php:228 +msgid "Wavatar (Generated)" +msgstr "Wavatar (generert)" + +#: wp-admin/options-discussion.php:227 +msgid "Identicon (Generated)" +msgstr "Identicon (generert)" + +#: wp-admin/options-discussion.php:226 +msgid "Gravatar Logo" +msgstr "Gravatar logo" + +#: wp-admin/options-discussion.php:225 +msgid "Blank" +msgstr "Blank" + +#: wp-admin/options-discussion.php:220 +msgid "For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their email address." +msgstr "For brukere uten en egendefinert avatar kan du enten vise en generell logo eller en som er generert fra e-postadressen deres." + +#: wp-admin/options-discussion.php:217 wp-admin/options-discussion.php:218 +msgid "Default Avatar" +msgstr "Standard avatar" + +#. translators: Content suitability rating: +#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system +#: wp-admin/options-discussion.php:206 +msgid "X — Even more mature than above" +msgstr "X — Enda mer støtende enn det over" + +#. translators: Content suitability rating: +#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system +#: wp-admin/options-discussion.php:204 +msgid "R — Intended for adult audiences above 17" +msgstr "R — Ment for voksne over 17 år" + +#. translators: Content suitability rating: +#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system +#: wp-admin/options-discussion.php:202 +msgid "PG — Possibly offensive, usually for audiences 13 and above" +msgstr "PG — Mulig støtende, vanligvis for lesere på 13 år eller eldre" + +#. translators: Content suitability rating: +#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system +#: wp-admin/options-discussion.php:200 +msgid "G — Suitable for all audiences" +msgstr "G — Passende for alle" + +#: wp-admin/options-discussion.php:194 wp-admin/options-discussion.php:195 +msgid "Maximum Rating" +msgstr "Maks klassifisering" + +#: wp-admin/options-discussion.php:189 +msgid "Show Avatars" +msgstr "Vis avatarer" + +#: wp-admin/options-discussion.php:185 wp-admin/options-discussion.php:186 +msgid "Avatar Display" +msgstr "Avatar visning" + +#: wp-admin/options-discussion.php:173 +msgid "Avatars" +msgstr "Avatarer" + +#: wp-admin/options-discussion.php:164 +msgid "When a comment contains any of these words in its content, name, URL, email, or IP, it will be put in the trash. One word or IP per line. It will match inside words, so “press” will match “WordPress”." +msgstr "Når en kommentar inneholder noen av disse ordene i innhold, navn, URL, e-post eller IP, vil den bli markert som useriøs. Ett ord eller IP per linje. Systemet finner også treff inne i ord, så «press» gir utslag på «WordPress»." + +#: wp-admin/options-discussion.php:162 wp-admin/options-discussion.php:163 +msgid "Comment Blacklist" +msgstr "Svarteliste for kommentarer" + +#: wp-admin/options-discussion.php:155 +msgid "When a comment contains any of these words in its content, name, URL, email, or IP, it will be held in the moderation queue. One word or IP per line. It will match inside words, so “press” will match “WordPress”." +msgstr "Når en kommentar inneholder noen av disse ordene i innhold, navn, URL, e-post eller IP, vil den bli holdt i moderasjonskøen. Et ord eller IP per linje. Systemet finner også treff inne i ord, så «press» gir utslag på «WordPress»." + +#: wp-admin/options-discussion.php:153 +msgid "Hold a comment in the queue if it contains %s or more links. (A common characteristic of comment spam is a large number of hyperlinks.)" +msgstr "Hold en kommentar i køen hvis den inneholder %s lenker eller flere. (et vanlig symptom på kommentar-spam er et stort antall hyperlenker.)" + +#: wp-admin/options-discussion.php:151 wp-admin/options-discussion.php:152 +msgid "Comment Moderation" +msgstr "Moderering av kommentarer" + +#: wp-admin/options-discussion.php:147 +msgid "Comment author must have a previously approved comment" +msgstr "Kommentarforfatteren må tidligere ha fått godkjent en kommentar" + +#: wp-admin/options-discussion.php:141 wp-admin/options-discussion.php:142 +msgid "Before a comment appears" +msgstr "Før en kommentar vises" + +#: wp-admin/options-discussion.php:137 +msgid "A comment is held for moderation" +msgstr "En kommentar holdes igjen for moderering" + +#: wp-admin/options-discussion.php:133 +msgid "Anyone posts a comment" +msgstr "Noen kommenterer innlegget" + +#: wp-admin/options-discussion.php:129 wp-admin/options-discussion.php:130 +msgid "Email me whenever" +msgstr "Varsle meg på e-post når" + +#: wp-admin/options-discussion.php:123 +msgid "Comments should be displayed with the %s comments at the top of each page" +msgstr "Kommentarer skal vises med de %s kommentarene øverst på hver side" + +#: wp-admin/options-discussion.php:121 +msgid "newer" +msgstr "nyeste" + +#: wp-admin/options-discussion.php:119 +msgid "older" +msgstr "eldste" + +#. translators: 1: Form field control for number of top level comments per +#. page, 2: Form field control for the 'first' or 'last' page +#: wp-admin/options-discussion.php:111 +msgid "Break comments into pages with %1$s top level comments per page and the %2$s page displayed by default" +msgstr "Del opp kommentarer i sider med %1$s kommentarer per side og den %2$s siden vist som standard" + +#: wp-admin/options-discussion.php:108 +msgid "first" +msgstr "første" + +#: wp-admin/options-discussion.php:106 +msgid "last" +msgstr "siste" + +#: wp-admin/options-discussion.php:97 +msgid "Enable threaded (nested) comments %s levels deep" +msgstr "Aktiver trådet kommentarfelt %s nivåer dypt" + +#: wp-admin/options-discussion.php:74 +msgid "Automatically close comments on articles older than %s days" +msgstr "Steng automatisk for kommentarer på innlegg som er eldre enn %s dager" + +#: wp-admin/options-discussion.php:67 +msgid "Users must be registered and logged in to comment" +msgstr "Brukere må være registrert og innlogget for å kunne kommentere" + +#: wp-admin/options-discussion.php:63 +msgid "Comment author must fill out name and email" +msgstr "Kommentarforfatteren må fylle ut navn og e-post" + +#: wp-admin/options-discussion.php:61 wp-admin/options-discussion.php:62 +msgid "Other comment settings" +msgstr "Andre kommentarinnstillinger" + +#: wp-admin/options-discussion.php:57 +msgid "These settings may be overridden for individual articles." +msgstr "Disse innstillingene kan overstyres for individuelle innlegg og sider." + +#: wp-admin/options-discussion.php:43 wp-admin/options-discussion.php:44 +msgid "Default article settings" +msgstr "Standard innlegg- og sideinnstillinger" + +#: wp-admin/edit-form-advanced.php:458 wp-admin/options-discussion.php:14 +msgid "Discussion Settings" +msgstr "Diskusjonsinnstillinger" + +#: wp-admin/includes/class-wp-users-list-table.php:155 +#: wp-admin/includes/deprecated.php:561 +msgid "No users found." +msgstr "Ingen brukere funnet." + +#: wp-admin/update-core.php:349 wp-admin/update-core.php:397 +#: wp-admin/update-core.php:712 wp-admin/update-core.php:717 +msgid "Update Themes" +msgstr "Oppdater temaer" + +#: wp-admin/my-sites.php:118 +msgid "Visit" +msgstr "Gå til" + +#: wp-admin/ms-delete-site.php:13 wp-admin/my-sites.php:13 +msgid "Multisite support is not enabled." +msgstr "Støtte for flernettsted er ikke aktivert." + +#: wp-admin/menu.php:254 +msgid "Permalinks" +msgstr "Permalenker" + +#: wp-admin/menu.php:251 +msgid "Reading" +msgstr "Lesing" + +#: wp-admin/menu.php:250 +msgid "Writing" +msgstr "Skriving" + +#: wp-admin/menu.php:249 +msgctxt "settings screen" +msgid "General" +msgstr "Generelt" + +#: wp-admin/menu.php:239 wp-admin/tools.php:12 +msgid "Tools" +msgstr "Verktøy" + +#: wp-admin/menu.php:228 wp-admin/menu.php:231 +msgid "Your Profile" +msgstr "Din profil" + +#: wp-admin/menu.php:217 wp-admin/user/menu.php:14 wp-admin/user-edit.php:28 +msgid "Profile" +msgstr "Profil" + +#. translators: add new plugin +#: wp-admin/menu.php:208 wp-admin/plugins.php:496 +msgctxt "plugin" +msgid "Add New" +msgstr "Legg til ny" + +#: wp-admin/menu.php:156 +msgid "Appearance" +msgstr "Utseende" + +#: wp-admin/menu.php:75 +msgid "Comments %s" +msgstr "Kommentarer %s" + +#. translators: add new file +#: wp-admin/media.php:110 wp-admin/menu.php:52 wp-admin/upload.php:80 +#: wp-admin/upload.php:228 +msgctxt "file" +msgid "Add New" +msgstr "Legg til ny" + +#: wp-admin/menu.php:50 +msgid "Library" +msgstr "Bibliotek" + +#: wp-admin/media.php:116 wp-admin/media.php:125 +msgid "Update Media" +msgstr "Oppdater media" + +#: wp-admin/media.php:63 +msgid "You can’t edit this attachment because it is in the Trash. Please move it out of the Trash and try again." +msgstr "Du kan ikke redigere dette vedlegget fordi det ligger i papirkurven. Vennligst flytt det ut av papirkurven og prøv på nytt." + +#: wp-admin/media.php:61 +msgid "You attempted to edit an attachment that doesn’t exist. Perhaps it was deleted?" +msgstr "Du forsøkte å redigere et vedlegg som ikke eksisterer. Kanskje den ble slettet?" + +#: wp-admin/media.php:23 wp-admin/media.php:57 +msgid "Sorry, you are not allowed to edit this attachment." +msgstr "Beklager, du har ikke lov til å redigere dette vedlegget." + +#: wp-admin/media-new.php:40 +msgid "Upload New Media" +msgstr "Last opp ny media" + +#: wp-admin/maint/repair.php:166 +msgid "Repair and Optimize Database" +msgstr "Reparer og optimaliser database" + +#: wp-admin/maint/repair.php:164 +msgid "Repair Database" +msgstr "Reparer database" + +#: wp-admin/maint/repair.php:147 +msgid "Some database problems could not be repaired. Please copy-and-paste the following list of errors to the WordPress support forums to get additional assistance." +msgstr "Noen databaseproblemer kunne ikke repareres. Vennligst kopier og lim følgende liste med feil til WordPress-forumet for mer hjelp." + +#: wp-admin/maint/repair.php:20 +msgid "WordPress › Database Repair" +msgstr "WordPress › Databasereparasjon" + +#: wp-admin/link.php:109 +msgid "Link not found." +msgstr "Fant ikke lenken" + +#: wp-admin/includes/class-wp-links-list-table.php:75 +msgid "No links found." +msgstr "Ingen lenker funnet." + +#: wp-admin/link-manager.php:102 +msgid "Search Links" +msgstr "Søk i lenker" + +#: wp-admin/link-manager.php:94 +msgid "%s link deleted." +msgid_plural "%s links deleted" +msgstr[0] "%s lenke slettet." +msgstr[1] "%s lenker slettet" + +#. translators: add new links +#: wp-admin/edit-link-form.php:73 wp-admin/link-manager.php:82 +#: wp-admin/menu.php:65 +msgctxt "link" +msgid "Add New" +msgstr "Legg til ny" + +#: wp-admin/link-add.php:15 +msgid "Add New Link" +msgstr "Legg til ny lenke" + +#: wp-admin/install.php:388 +msgid "Success!" +msgstr "Suksess!" + +#: wp-admin/install.php:319 +msgid "Please provide the following information. Don’t worry, you can always change these settings later." +msgstr "Vennligst oppgi følgende informasjon. Ingen grunn til bekymring, du kan endre innstillingene senere." + +#: wp-admin/install.php:318 +msgid "Information needed" +msgstr "Informasjon trengs" + +#: wp-admin/install.php:248 +msgid "Insufficient Requirements" +msgstr "Systemkrav ikke oppfyllt" + +#: wp-admin/install.php:205 +msgid "Install WordPress" +msgstr "Installer WordPress" + +#: wp-admin/install.php:179 +msgid "Double-check your email address before continuing." +msgstr "Vennligst sjekk e-postadressen din før du fortsetter." + +#: wp-admin/install.php:177 +msgid "Your Email" +msgstr "Din e-postadresse" + +#: wp-admin/install.php:124 +msgid "User(s) already exists." +msgstr "Bruker(e) finnes allerede." + +#: wp-admin/install.php:73 +msgid "WordPress › Installation" +msgstr "WordPress › Installasjon" + +#: wp-admin/includes/user.php:174 +msgid "ERROR: Please enter an email address." +msgstr "FEIL: Vennligst skriv inn en e-postadresse." + +#: wp-admin/includes/user.php:153 +msgid "ERROR: Please enter the same password in both password fields." +msgstr "FEIL: Vennligst skriv det samme passordet i begge passordfeltene." + +#: wp-admin/includes/user.php:148 +msgid "ERROR: Passwords may not contain the character \"\\\"." +msgstr "FEIL: Passord kan ikke inneholde bokstaven \"\\\"." + +#: wp-admin/includes/user.php:143 +msgid "ERROR: Please enter a password." +msgstr "FEIL: Vennligst skriv inn et passordet." + +#. translators: Default post slug +#: wp-admin/includes/upgrade.php:185 wp-admin/includes/upgrade.php:328 +msgctxt "Default post slug" +msgid "hello-world" +msgstr "hei-verden" + +#: wp-admin/includes/upgrade.php:183 +msgid "Hello world!" +msgstr "Hei, verden!" + +#: wp-admin/includes/upgrade.php:174 +msgid "Welcome to WordPress. This is your first post. Edit or delete it, then start writing!" +msgstr "Velkommen til WordPress. Dette er ditt første innlegg. Rediger eller slett det, og start bloggingen!" + +#. translators: Default category slug +#: wp-admin/includes/upgrade.php:136 +msgctxt "Default category slug" +msgid "Uncategorized" +msgstr "Ukategorisert" + +#: wp-admin/includes/upgrade.php:77 +msgid "Note that password carefully! It is a random password that was generated just for you." +msgstr "Merk deg passordet og pass på det! Det er et tilfeldig passord som er lagd bare for deg." + +#: wp-admin/includes/update.php:618 +msgid "An automated WordPress update has failed to complete! Please notify the site administrator." +msgstr "En automatisk WordPress-oppdatering feilet! Vennligst si ifra til nettstedets administrator." + +#: wp-admin/includes/update.php:616 +msgid "An automated WordPress update has failed to complete - please attempt the update again now." +msgstr "En automatisk WordPress-oppdatering feilet—vennligst prøv igjen nå." + +#: wp-admin/includes/update.php:282 +msgid "Latest" +msgstr "Siste" + +#: wp-admin/includes/update.php:282 +msgid "Update to %s" +msgstr "Oppdater til %s" + +#. translators: 1: WordPress version number, 2: WordPress updates admin screen +#. URL +#: wp-admin/includes/update.php:211 +msgid "You are using a development version (%1$s). Cool! Please stay updated." +msgstr "Du bruker en utviklingsversjon (%1$s). Kult! Vennligst hold deg oppdatert." + +#: wp-admin/includes/update-core.php:1098 +msgid "Upgrading database…" +msgstr "Oppgraderer database…" + +#: wp-admin/includes/update-core.php:834 +msgid "The update could not be unpacked" +msgstr "Oppdateringen kunne ikke pakkes ut" + +#: wp-admin/includes/update-core.php:821 +msgid "Verifying the unpacked files…" +msgstr "Verifiserer utpakkede filer…" + +#: wp-admin/includes/update-core.php:876 +msgid "The update cannot be installed because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s." +msgstr "Oppdateringen kunne ikke installeres fordi WordPress %1$s krever MySQL versjon %2$s eller høyere. Du bruker versjon %3$s." + +#: wp-admin/includes/update-core.php:874 +msgid "The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s." +msgstr "Oppdateringen kunne ikke installeres fordi WordPress %1$s krever PHP versjon %2$s eller høyere. Du bruker versjon %3$s." + +#: wp-admin/includes/update-core.php:872 +msgid "The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s." +msgstr "Oppdateringen kunne ikke installeres fordi WordPress %1$s krever PHP versjon %2$s eller høyere og MySQL versjon %3$s eller høyere. Du bruker PHP versjon %4$s og MySQL verson %5$s." + +#: wp-admin/includes/theme.php:75 +msgid "Could not fully remove the theme %s." +msgstr "Kunne ikke fjerne %s-temaet fullstendig." + +#: wp-admin/includes/class-wp-upgrader.php:162 wp-admin/includes/theme.php:67 +msgid "Unable to locate WordPress theme directory." +msgstr "Klarte ikke å finne WordPress temamappen." + +#. translators: %s: Theme version +#: wp-admin/includes/theme.php:658 wp-admin/theme-install.php:324 +#: wp-admin/themes.php:448 +msgid "Version: %s" +msgstr "Versjon: %s" + +#: wp-admin/includes/theme-install.php:205 +msgid "Theme Install" +msgstr "Installer tema" + +#: wp-admin/import.php:176 +#: wp-admin/includes/class-wp-theme-install-list-table.php:319 +#: wp-admin/includes/class-wp-themes-list-table.php:228 +msgid "Details" +msgstr "Detaljer" + +#: wp-admin/includes/theme-install.php:143 +msgid "If you have a theme in a .zip format, you may install it by uploading it here." +msgstr "Hvis du har et tema i .zip format kan du installere det ved å laste det opp her." + +#: wp-admin/includes/theme-install.php:133 +msgid "Find Themes" +msgstr "Finn temaer" + +#: wp-admin/includes/theme.php:277 +msgid "Holiday" +msgstr "Ferie" + +#: wp-admin/includes/theme.php:271 wp-admin/includes/theme.php:304 +msgid "Subject" +msgstr "Emne" + +#: wp-admin/includes/theme.php:262 +msgid "Microformats" +msgstr "Mikroformat" + +#: wp-admin/includes/theme.php:265 +msgid "Sticky Post" +msgstr "Klebrig innlegg" + +#: wp-admin/includes/theme.php:267 +msgid "Threaded Comments" +msgstr "Trådet kommentarer" + +#: wp-admin/includes/theme.php:266 +msgid "Theme Options" +msgstr "Temainnstillinger" + +#: wp-admin/includes/theme.php:251 +msgid "Custom Colors" +msgstr "Egendefinerte farger" + +#: wp-admin/includes/theme.php:247 wp-admin/includes/theme.php:303 +msgid "Features" +msgstr "Egenskaper" + +#: wp-admin/includes/theme.php:244 +msgid "Right Sidebar" +msgstr "Høyre sidekolonne" + +#: wp-admin/includes/theme.php:243 +msgid "Left Sidebar" +msgstr "Venstre sidekolonne" + +#: wp-admin/includes/theme.php:242 +msgid "Four Columns" +msgstr "Fire kolonner" + +#: wp-admin/includes/theme.php:241 +msgid "Three Columns" +msgstr "Tre kolonner" + +#: wp-admin/includes/theme.php:240 +msgid "Two Columns" +msgstr "To kolonner" + +#: wp-admin/includes/theme.php:239 +msgid "One Column" +msgstr "En kolonne" + +#: wp-admin/includes/theme-install.php:101 wp-admin/theme-install.php:161 +msgid "Feature Filter" +msgstr "Funksjonalitetsfilter" + +#: wp-admin/includes/class-wp-screen.php:893 +msgid "Screen Options" +msgstr "Visningsinnstillinger" + +#: wp-admin/includes/class-wp-screen.php:918 +msgid "Disable accessibility mode" +msgstr "Deaktiver tilgjengelighetstilstand." + +#: wp-admin/includes/class-wp-screen.php:918 +msgid "Enable accessibility mode" +msgstr "Aktiver tilgjengelighetstilstand." + +#: wp-admin/themes.php:67 +msgid "Manage Themes" +msgstr "Håndter temaer" + +#: wp-admin/update.php:231 +msgid "Install Themes" +msgstr "Installer temaer" + +#: wp-admin/includes/template.php:872 +msgid "Upload file and import" +msgstr "Last opp fil og importer" + +#: wp-admin/includes/template.php:867 +msgid "Maximum size: %s" +msgstr "Maksstørrelse: %s" + +#: wp-admin/includes/template.php:867 +msgid "Choose a file from your computer:" +msgstr "Velg en fil fra maskinen din:" + +#: wp-admin/includes/template.php:861 +msgid "Before you can upload your import file, you will need to fix the following error:" +msgstr "Før du kan laste opp din importfil må du rette følgende feil:" + +#: wp-admin/includes/template.php:661 +msgid "Add Custom Field" +msgstr "Legg til tilpasset felt" + +#: wp-admin/includes/template.php:650 +msgid "Enter new" +msgstr "Skriv ny" + +#: wp-admin/includes/template.php:624 +msgid "Add New Custom Field:" +msgstr "Legg til nytt tilpasset felt:" + +#: wp-admin/includes/template.php:558 +msgid "Key" +msgstr "Nøkkel" + +#: wp-admin/includes/template.php:489 wp-admin/includes/template.php:504 +#: wp-admin/includes/template.php:568 wp-admin/includes/template.php:629 +msgid "Value" +msgstr "Verdi" + +#: wp-admin/includes/template.php:469 +msgid "Comment by %s marked as spam." +msgstr "Kommentar av %s merket som spam." + +#: wp-admin/includes/template.php:466 +msgid "Comment by %s moved to the trash." +msgstr "Kommentar av %s flyttet til papirkurven." + +#: wp-admin/includes/template.php:430 +msgid "Submit Reply" +msgstr "Send svar" + +#: wp-admin/includes/template.php:397 +msgid "Reply to Comment" +msgstr "Svar på kommentar" + +#: wp-admin/includes/class-wp-posts-list-table.php:1003 +msgid "Last Modified" +msgstr "Sist endret" + +#: wp-admin/includes/class-wp-posts-list-table.php:998 +msgid "Missed schedule" +msgstr "Mistet planlegging" + +#: wp-admin/includes/class-wp-posts-list-table.php:1660 +msgid "Make this post sticky" +msgstr "Gjør dette innlegget klebrig" + +#: wp-admin/includes/class-wp-posts-list-table.php:1652 +msgid "Not Sticky" +msgstr "Ikke klebrig" + +#: wp-admin/includes/class-wp-posts-list-table.php:1648 +#: wp-admin/includes/class-wp-posts-list-table.php:1651 +#: wp-admin/includes/template.php:1709 +msgid "Sticky" +msgstr "Klebrig" + +#: wp-admin/includes/class-wp-posts-list-table.php:1616 +msgid "Allow Pings" +msgstr "Tillat ping" + +#: wp-admin/includes/class-wp-posts-list-table.php:1611 +msgid "Allow Comments" +msgstr "Tillat kommentarer" + +#: wp-admin/includes/class-wp-posts-list-table.php:1590 +#: wp-admin/includes/class-wp-posts-list-table.php:1599 +msgid "Do not allow" +msgstr "Ikke tillat" + +#: wp-admin/includes/class-wp-posts-list-table.php:1589 +#: wp-admin/includes/class-wp-posts-list-table.php:1598 +msgid "Allow" +msgstr "Tillat" + +#. translators: Between password field and private checkbox on post quick edit +#. interface +#: wp-admin/includes/class-wp-posts-list-table.php:1460 +msgid "–OR–" +msgstr "–ELLER–" + +#: wp-admin/includes/class-wp-posts-list-table.php:1434 +#: wp-admin/includes/class-wp-posts-list-table.php:1514 +#: wp-admin/includes/class-wp-posts-list-table.php:1551 +#: wp-admin/includes/class-wp-posts-list-table.php:1588 +#: wp-admin/includes/class-wp-posts-list-table.php:1597 +#: wp-admin/includes/class-wp-posts-list-table.php:1629 +#: wp-admin/includes/class-wp-posts-list-table.php:1650 +#: wp-admin/includes/class-wp-posts-list-table.php:1678 +msgid "— No Change —" +msgstr "— Ingen endring —" + +#: wp-admin/includes/class-wp-posts-list-table.php:1387 +msgid "Bulk Edit" +msgstr "Masserediger" + +#: wp-admin/includes/class-wp-links-list-table.php:132 +msgid "Visible" +msgstr "Synlig" + +#: wp-admin/includes/class-wp-links-list-table.php:131 +msgid "Relationship" +msgstr "Forhold" + +#: wp-admin/includes/class-wp-comments-list-table.php:398 +#: wp-admin/includes/class-wp-post-comments-list-table.php:28 +msgctxt "column name" +msgid "Comment" +msgstr "Kommentar" + +#. translators: column name +#: wp-admin/includes/class-wp-media-list-table.php:313 +msgctxt "column name" +msgid "Date" +msgstr "Dato" + +#. translators: column name +#: wp-admin/includes/class-wp-media-list-table.php:278 +msgctxt "column name" +msgid "File" +msgstr "Fil" + +#. translators: manage posts column name +#: wp-admin/includes/class-wp-posts-list-table.php:539 +msgctxt "column name" +msgid "Title" +msgstr "Tittel" + +#: wp-admin/includes/class-wp-comments-list-table.php:588 +#: wp-admin/includes/class-wp-posts-list-table.php:1236 +#: wp-admin/includes/class-wp-terms-list-table.php:449 +msgid "Quick Edit" +msgstr "Hurtigredigering" + +#: wp-admin/includes/class-wp-posts-list-table.php:1387 +#: wp-admin/includes/class-wp-terms-list-table.php:592 +msgid "Quick Edit" +msgstr "Hurtigredigering" + +#: wp-admin/includes/schema.php:1082 +msgid "Warning! Wildcard DNS may not be configured correctly!" +msgstr "Advarsel! Wildcard DNS kan være feilkonfigurert!" + +#. translators: user role +#: wp-admin/includes/schema.php:644 +msgctxt "User role" +msgid "Subscriber" +msgstr "Abonnent" + +#. translators: user role +#: wp-admin/includes/schema.php:642 +msgctxt "User role" +msgid "Contributor" +msgstr "Bidragsyter" + +#. translators: user role +#: wp-admin/includes/schema.php:640 +msgctxt "User role" +msgid "Author" +msgstr "Forfatter" + +#. translators: user role +#: wp-admin/includes/schema.php:638 +msgctxt "User role" +msgid "Editor" +msgstr "Redaktør" + +#. translators: user role +#: wp-admin/includes/schema.php:636 +msgctxt "User role" +msgid "Administrator" +msgstr "Administrator" + +#. translators: site tagline +#: wp-admin/includes/schema.php:530 +msgid "Just another %s site" +msgstr "Bare enda et %s-nettsted" + +#. translators: site tagline +#: wp-admin/includes/schema.php:398 +msgid "Just another WordPress site" +msgstr "Bare enda et WordPress-nettsted" + +#: wp-admin/includes/post.php:1365 +msgid "Change Permalinks" +msgstr "Endre permalenker" + +#: wp-admin/includes/post.php:1354 wp-admin/includes/post.php:1377 +msgid "Permalink:" +msgstr "Permalenke:" + +#: wp-admin/includes/post.php:607 +msgid "Auto Draft" +msgstr "Automatisk kladd" + +#: wp-admin/includes/post.php:35 wp-admin/includes/post.php:73 +msgid "Sorry, you are not allowed to edit posts as this user." +msgstr "Beklager, du har ikke lov til å redigere innlegg som denne brukeren." + +#: wp-admin/includes/post.php:33 wp-admin/includes/post.php:71 +msgid "Sorry, you are not allowed to edit pages as this user." +msgstr "Beklager, du har ikke lov til å redigere sider som denne brukeren." + +#: wp-admin/includes/plugin.php:958 +msgid "The plugin does not have a valid header." +msgstr "Denne utvidelsen har ikke en gyldig beskrivelse." + +#: wp-admin/includes/plugin.php:954 +msgid "Plugin file does not exist." +msgstr "Filen med utvidelsen finnes ikke." + +#: wp-admin/includes/plugin.php:952 +msgid "Invalid plugin path." +msgstr "Ugyldig sti til utvidelsen." + +#: wp-admin/includes/plugin.php:897 +msgid "Could not fully remove the plugin(s) %s." +msgstr "Kunne ikke fjerne utvidelsen(e) %s helt." + +#: wp-admin/includes/plugin.php:758 +msgid "One of the plugins is invalid." +msgstr "En av utvidelsene er ugyldig." + +#: wp-admin/includes/plugin.php:623 +msgid "The plugin generated unexpected output." +msgstr "Utvidelsen produserte et uventet resultat." + +#: wp-admin/includes/plugin-install.php:668 +msgid "Warning: This plugin has not been marked as compatible with your version of WordPress." +msgstr "Advarsel: Denne utvidelsen er ikke merket som kompatibel med din versjon av WordPress." + +#: wp-admin/includes/plugin-install.php:666 +msgid "Warning: This plugin has not been tested with your current version of WordPress." +msgstr "Advarsel: Denne utvidelsen har ikke blitt testet med din versjon av WordPress." + +#: wp-admin/includes/plugin-install.php:607 +msgid "Average Rating" +msgstr "Gjennomsnittlig vurdering" + +#: wp-admin/includes/plugin-install.php:599 +msgid "WordPress.org Plugin Page »" +msgstr "WordPress.org utvidelsesside »" + +#: wp-admin/includes/plugin-install.php:587 +msgid "Compatible up to:" +msgstr "Kompatibel opp til:" + +#. translators: %s: WordPress version +#: wp-admin/includes/plugin-install.php:583 +msgid "%s or higher" +msgstr "%s eller høyere" + +#: wp-admin/includes/plugin-install.php:580 +msgid "Requires WordPress Version:" +msgstr "Krever WordPress versjon" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:559 +#: wp-admin/includes/plugin-install.php:572 +msgid "Last Updated:" +msgstr "Sist oppdatert:" + +#: wp-admin/includes/plugin-install.php:705 +msgid "Latest Version Installed" +msgstr "Siste versjon installert" + +#. translators: %s: Plugin version +#: wp-admin/includes/plugin-install.php:702 +msgid "Newer Version (%s) Installed" +msgstr "Nyere versjon (%s) installert" + +#: wp-admin/includes/plugin-install.php:697 +msgid "Install Update Now" +msgstr "Installer oppdatering nå" + +#: wp-admin/includes/plugin-install.php:517 wp-admin/update.php:123 +msgid "Plugin Install" +msgstr "Installer utvidelser" + +#: wp-admin/includes/plugin-install.php:609 +msgid "(based on %s rating)" +msgid_plural "(based on %s ratings)" +msgstr[0] "(basert på %s vurdering)" +msgstr[1] "(basert på %s vurderinger)" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:237 +msgid "No plugins match your request." +msgstr "Ingen utvidelser tilfredsstiller din forespørsel." + +#: wp-admin/includes/plugin-install.php:304 +msgid "Plugin zip file" +msgstr "Zip-fil med utvidelse" + +#: wp-admin/includes/plugin-install.php:301 +msgid "If you have a plugin in a .zip format, you may install it by uploading it here." +msgstr "Hvis du har en utvidelse i .zip-format kan du installere den ved å laste opp her." + +#: wp-admin/includes/plugin-install.php:287 +#: wp-admin/includes/plugin-install.php:290 +msgid "Search Plugins" +msgstr "Søk etter utvidelser" + +#: wp-admin/includes/plugin-install.php:241 +msgid "You may also browse based on the most popular tags in the Plugin Directory:" +msgstr "Du kan også lete basert på de mest populære stikkordene i utvidelseskatalogen på WordPress.org:" + +#: wp-admin/includes/plugin-install.php:240 +msgid "Popular tags" +msgstr "Populære stikkord" + +#: wp-admin/includes/meta-boxes.php:1193 +msgid "(Leave at 0 for no rating.)" +msgstr "(Velg 0 for ingen vurdering.)" + +#: wp-admin/includes/class-wp-links-list-table.php:133 +#: wp-admin/includes/meta-boxes.php:1184 +msgid "Rating" +msgstr "Vurdering" + +#: wp-admin/includes/meta-boxes.php:1180 +msgid "Notes" +msgstr "Notater" + +#: wp-admin/includes/meta-boxes.php:1176 +msgid "RSS Address" +msgstr "RSS-adresse" + +#: wp-admin/includes/meta-boxes.php:1172 +msgid "Image Address" +msgstr "Bildeadresse" + +#: wp-admin/includes/meta-boxes.php:1157 +msgid "If the link is to a person, you can specify your relationship with them using the above form. If you would like to learn more about the idea check out XFN." +msgstr "Hvis lenken er til en person kan du velge ditt forhold til dem med skjemaet over. Hvis du vil lære mer om denne ideen kan du ta en titt på XFN." + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1151 +msgid "sweetheart" +msgstr "kjæreste" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1148 +msgid "date" +msgstr "date" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1145 +msgid "crush" +msgstr "forelsket" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1142 +msgid "muse" +msgstr "muse" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1139 wp-admin/includes/meta-boxes.php:1140 +msgid "romantic" +msgstr "romantisk" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1131 +msgid "spouse" +msgstr "ektefelle" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1128 +msgid "sibling" +msgstr "søsken" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1125 +msgid "parent" +msgstr "forelder" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1122 +msgid "kin" +msgstr "slektning" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1119 +msgid "child" +msgstr "barn" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1116 wp-admin/includes/meta-boxes.php:1117 +msgid "family" +msgstr "familie" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1108 +msgid "neighbor" +msgstr "nabo" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1105 +msgid "co-resident" +msgstr "under samme tak" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1102 wp-admin/includes/meta-boxes.php:1103 +msgid "geographical" +msgstr "geografisk" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1097 +msgid "colleague" +msgstr "kollega" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1094 +msgid "co-worker" +msgstr "medarbeider" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1091 wp-admin/includes/meta-boxes.php:1092 +msgid "professional" +msgstr "profesjonelt" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1086 +msgid "met" +msgstr "møtt i virkeligheten" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1083 wp-admin/includes/meta-boxes.php:1084 +msgid "physical" +msgstr "fysisk" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1078 wp-admin/includes/meta-boxes.php:1111 +#: wp-admin/includes/meta-boxes.php:1134 +msgid "none" +msgstr "ingen" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1075 +msgid "friend" +msgstr "venn" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1072 +msgid "acquaintance" +msgstr "bekjentskap" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1069 +msgid "contact" +msgstr "kontakt" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1066 wp-admin/includes/meta-boxes.php:1067 +msgid "friendship" +msgstr "vennskap" + +#: wp-admin/includes/meta-boxes.php:1062 +msgid "another web address of mine" +msgstr "Den andre nettadressen min" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1058 wp-admin/includes/meta-boxes.php:1059 +msgid "identity" +msgstr "identitet" + +#. translators: xfn: http://gmpg.org/xfn/ +#: wp-admin/includes/meta-boxes.php:1054 +msgid "rel:" +msgstr "rel:" + +#: wp-admin/includes/meta-boxes.php:1007 +msgid "Choose the target frame for your link." +msgstr "Velg målramme for lenken din." + +#: wp-admin/includes/meta-boxes.php:1005 +msgid "_none — same window or tab." +msgstr "_none — samme vindu eller fane." + +#: wp-admin/includes/meta-boxes.php:1002 +msgid "_top — current window or tab, with no frames." +msgstr "_top — gjeldende vindu eller fane, uten rammer." + +#: wp-admin/includes/meta-boxes.php:999 +msgid "_blank — new window or tab." +msgstr "_blank — nytt vindu eller fane." + +#: wp-admin/includes/class-wp-links-list-table.php:330 +#: wp-admin/includes/meta-boxes.php:916 +msgid "" +"You are about to delete this link '%s'\n" +" 'Cancel' to stop, 'OK' to delete." +msgstr "" +"Du er i ferd med å slette denne lenken '%s'\n" +" 'Avbryt' for å avbryte, 'OK' for å slette." + +#: wp-admin/includes/meta-boxes.php:902 +msgid "Keep this link private" +msgstr "Hold denne lenken privat" + +#: wp-admin/includes/meta-boxes.php:894 +msgid "Visit Link" +msgstr "Gå til lenke" + +#: wp-admin/includes/class-wp-posts-list-table.php:1555 +#: wp-admin/includes/meta-boxes.php:856 +msgid "Default Template" +msgstr "Standardmal" + +#: wp-admin/includes/class-wp-posts-list-table.php:1508 +msgid "Main Page (no parent)" +msgstr "Hovedside (ingen forelder)" + +#: wp-admin/includes/class-wp-posts-list-table.php:1502 +#: wp-admin/includes/meta-boxes.php:824 +msgid "Parent" +msgstr "Forelder" + +#: wp-admin/includes/meta-boxes.php:733 +msgid "Show comments" +msgstr "Vis kommentarer" + +#: wp-admin/includes/meta-boxes.php:617 +msgid "Separate multiple URLs with spaces" +msgstr "Skill flere URL-er med mellomrom" + +#: wp-admin/includes/meta-boxes.php:614 +msgid "Send trackbacks to:" +msgstr "Send tilbakesporinger til:" + +#: wp-admin/includes/meta-boxes.php:604 +msgid "Already pinged:" +msgstr "Allerede pinget:" + +#: wp-admin/includes/meta-boxes.php:978 +msgid "New category name" +msgstr "Ny kategori navn" + +#: wp-admin/includes/meta-boxes.php:975 wp-admin/includes/meta-boxes.php:977 +msgid "+ Add New Category" +msgstr "+ Legg til ny kategori" + +#: wp-admin/includes/meta-boxes.php:493 wp-admin/includes/meta-boxes.php:954 +#: wp-admin/includes/nav-menu.php:683 +msgid "Most Used" +msgstr "Mest brukt" + +#. translators: Post date information. 1: Date on which the post is to be +#. published +#: wp-admin/includes/meta-boxes.php:190 +msgid "Publish on: %1$s" +msgstr "Publiser: %1$s" + +#. translators: Post date information. 1: Date on which the post is to be +#. published +#: wp-admin/includes/meta-boxes.php:187 +msgid "Schedule for: %1$s" +msgstr "Planlegg for: %1$s" + +#: wp-admin/includes/meta-boxes.php:184 wp-admin/includes/meta-boxes.php:194 +msgid "Publish immediately" +msgstr "Publiser umiddelbart" + +#. translators: Post date information. 1: Date on which the post was published +#: wp-admin/includes/meta-boxes.php:182 +msgid "Published on: %1$s" +msgstr "Publisert: %1$s" + +#. translators: Post date information. 1: Date on which the post is currently +#. scheduled to be published +#: wp-admin/includes/meta-boxes.php:179 +msgid "Scheduled for: %1$s" +msgstr "Planlagt for: %1$s" + +#: wp-admin/includes/meta-boxes.php:158 +msgid "Stick this post to the front page" +msgstr "Gjør innlegget klebrig på forsiden" + +#: wp-admin/includes/meta-boxes.php:137 wp-admin/includes/meta-boxes.php:160 +#: wp-admin/includes/template.php:1701 +msgid "Password protected" +msgstr "Passordbeskyttet" + +#: wp-admin/includes/meta-boxes.php:129 +msgid "Visibility:" +msgstr "Synlighet:" + +#: wp-admin/export.php:205 wp-admin/export.php:247 +#: wp-admin/includes/meta-boxes.php:78 +msgid "Status:" +msgstr "Status:" + +#: wp-admin/includes/meta-boxes.php:53 +msgid "Preview Changes" +msgstr "Forhåndsvis endringer" + +#: wp-admin/includes/media.php:2582 +msgid "Link text, e.g. “Ransom Demands (PDF)”" +msgstr "Lenketekst, f.eks. «Fjellvettreglene (PDF)»" + +#: wp-admin/includes/media.php:2613 +msgid "Link to image" +msgstr "Lenke til bilde" + +#: wp-admin/includes/media.php:2608 +msgid "Link Image To:" +msgstr "Lenk bilde til:" + +#: wp-admin/includes/media.php:2543 +msgid "Image Caption" +msgstr "Undertittel for bilde" + +#: wp-admin/includes/media.php:2492 +msgid "Filter »" +msgstr "Filter »" + +#: wp-admin/includes/media.php:2418 +msgid "All Types" +msgstr "Alle typer" + +#: wp-admin/includes/media.php:2334 +msgid "Update gallery settings" +msgstr "Oppdater galleri innstillinger" + +#: wp-admin/includes/media.php:2313 +msgid "Gallery columns:" +msgstr "Galleri kolonner:" + +#: wp-admin/includes/media.php:2298 +msgid "Order:" +msgstr "Rekkefølge:" + +#: wp-admin/includes/media.php:2290 +msgid "Random" +msgstr "Tilfeldig" + +#: wp-admin/includes/media.php:2289 +msgid "Date/Time" +msgstr "Dato/tid" + +#: wp-admin/includes/media.php:2287 +msgid "Menu order" +msgstr "Menyrekkefølge" + +#: wp-admin/includes/media.php:2282 +msgid "Order images by:" +msgstr "Sorter bilder etter:" + +#: wp-admin/includes/media.php:2272 +msgid "Image File" +msgstr "Bildefil" + +#: wp-admin/includes/media.php:2267 +msgid "Link thumbnails to:" +msgstr "Lenk miniatyrbilder til:" + +#: wp-admin/includes/media.php:2236 wp-admin/includes/media.php:2306 +msgid "Descending" +msgstr "Synkende" + +#: wp-admin/includes/media.php:2235 wp-admin/includes/media.php:2303 +msgid "Ascending" +msgstr "Stigende" + +#: wp-admin/includes/media.php:2234 +msgid "Sort Order:" +msgstr "Sorteringsrekkefølge:" + +#: wp-admin/includes/media.php:2230 +msgid "All Tabs:" +msgstr "Alle faner:" + +#: wp-admin/includes/media.php:2044 wp-admin/includes/media.php:2255 +#: wp-admin/includes/media.php:2522 +msgid "Save all changes" +msgstr "Lagre alle endringer" + +#: wp-admin/includes/media.php:2017 +msgid "Add media files from your computer" +msgstr "Legg til mediafiler fra din datamaskin" + +#: wp-admin/includes/media.php:1493 wp-admin/includes/media.php:2619 +#: wp-admin/includes/media.php:2625 +msgid "Insert into Post" +msgstr "Sett inn i innlegg" + +#: wp-admin/includes/media.php:1472 +msgid "Upload date:" +msgstr "Opplastet dato:" + +#: wp-admin/includes/media.php:1241 +msgid "Location of the uploaded file." +msgstr "URL til den opplastede filen." + +#: wp-admin/includes/class-wp-posts-list-table.php:1537 +#: wp-admin/includes/media.php:1233 wp-admin/includes/media.php:2245 +#: wp-admin/includes/meta-boxes.php:863 +msgid "Order" +msgstr "Rekkefølge" + +#: wp-admin/includes/media.php:1159 +msgid "Empty Title filled from filename." +msgstr "Tom tittel utfylt fra filnavn." + +#: wp-admin/includes/media.php:1282 wp-admin/includes/media.php:2589 +msgid "Alt text for the image, e.g. “The Mona Lisa”" +msgstr "Alternativ tekst for bildet, f.eks. «Skrik av Edvard Munch»" + +#: wp-admin/includes/media.php:1080 wp-admin/includes/media.php:1237 +msgid "File URL" +msgstr "URL til fil" + +#: wp-admin/includes/media.php:463 wp-admin/includes/template.php:1591 +#: wp-admin/install.php:80 wp-admin/maint/repair.php:26 +#: wp-admin/setup-config.php:102 wp-admin/upgrade.php:71 +msgid "WordPress" +msgstr "WordPress" + +#: wp-admin/includes/media.php:463 +msgid "Uploads" +msgstr "Opplastinger" + +#: wp-admin/includes/media.php:62 +msgid "Gallery (%s)" +msgstr "Galleri (%s)" + +#: wp-admin/includes/media.php:20 +msgid "Gallery" +msgstr "Galleri" + +#: wp-admin/includes/media.php:19 +msgid "From URL" +msgstr "Fra URL" + +#: wp-admin/includes/media.php:18 +msgid "From Computer" +msgstr "Fra datamaskin" + +#: wp-admin/includes/image-edit.php:908 +msgid "Image saved" +msgstr "Bilde lagret" + +#: wp-admin/includes/image-edit.php:794 +msgid "Unable to save the image." +msgstr "Kunne ikke lagre bildet." + +#: wp-admin/includes/image-edit.php:746 +msgid "Nothing to save, the image has not changed." +msgstr "Bildet har ikke blitt endret. Ingenting å lagre." + +#: wp-admin/includes/image-edit.php:738 +msgid "Error while saving the scaled image. Please reload the page and try again." +msgstr "En feil oppstod under lagring av skalert bilde. Vennligst last siden på nytt og prøv igjen." + +#: wp-admin/includes/image-edit.php:715 +msgid "Unable to create new image." +msgstr "Kunne ikke lage nytt bilde." + +#: wp-admin/includes/image-edit.php:694 +msgid "Image restored successfully." +msgstr "Bilde gjenopprettet." + +#: wp-admin/includes/image-edit.php:692 +msgid "Image metadata is inconsistent." +msgstr "Metadata for bilde er ikke konsekvent." + +#: wp-admin/includes/image-edit.php:687 +msgid "Cannot save image metadata." +msgstr "Kan ikke lagre metadata for bilde." + +#: wp-admin/includes/image-edit.php:631 +msgid "Cannot load image metadata." +msgstr "Kan ikke laste bilde metadata." + +#: wp-admin/includes/image-edit.php:173 +msgid "All sizes except thumbnail" +msgstr "Alle størrelser unntatt miniatyrbilde" + +#: wp-admin/includes/image-edit.php:165 +msgid "All image sizes" +msgstr "Alle bildestørrelser" + +#: wp-admin/includes/image-edit.php:161 +msgid "Apply changes to:" +msgstr "Lagre endringer på:" + +#: wp-admin/includes/image-edit.php:156 +msgid "Current thumbnail" +msgstr "Gjeldende miniatyrbilde" + +#: wp-admin/includes/image-edit.php:149 +msgid "Thumbnail Settings" +msgstr "Innstillinger for miniatyrbilde" + +#: wp-admin/includes/image-edit.php:129 +msgid "Selection:" +msgstr "Valgt:" + +#: wp-admin/includes/image-edit.php:116 +msgid "Aspect ratio:" +msgstr "Proporsjon:" + +#: wp-admin/includes/image-edit.php:110 +msgid "Crop Selection" +msgstr "Utklippsvalg" + +#: wp-admin/includes/image-edit.php:107 +msgid "Crop Aspect Ratio" +msgstr "Klipp proporsjon" + +#: wp-admin/includes/image-edit.php:101 +msgid "Image Crop" +msgstr "Utklipp av bilde" + +#: wp-admin/includes/image-edit.php:91 +msgid "Restore image" +msgstr "Gjenopprett bilde" + +#: wp-admin/includes/image-edit.php:87 +msgid "Previously edited copies of the image will not be deleted." +msgstr "Tidligere redigerte kopier av bildet vil ikke bli slettet." + +#: wp-admin/includes/image-edit.php:84 +msgid "Discard any changes and restore the original image." +msgstr "Avbryt endringer og tilbakestill det originale bildet." + +#: wp-admin/custom-background.php:304 wp-admin/custom-background.php:308 +#: wp-admin/includes/image-edit.php:82 +msgid "Restore Original Image" +msgstr "Gjenopprett originalt bilde" + +#: wp-admin/includes/image-edit.php:55 +msgid "Original dimensions %s" +msgstr "Original størrelse %s" + +#: wp-admin/includes/image-edit.php:49 +msgid "Scale Image" +msgstr "Skaler bilde" + +#: wp-admin/includes/image-edit.php:201 +msgid "Flip horizontally" +msgstr "Speilvend horisontalt" + +#: wp-admin/includes/image-edit.php:200 +msgid "Flip vertically" +msgstr "Speilvend vertikalt" + +#: wp-admin/includes/image-edit.php:192 +msgid "Rotate clockwise" +msgstr "Roter med klokken" + +#: wp-admin/includes/image-edit.php:191 +msgid "Rotate counter-clockwise" +msgstr "Roter mot klokken" + +#: wp-admin/includes/image-edit.php:185 +msgid "Crop" +msgstr "Klipp" + +#: wp-admin/includes/image-edit.php:26 wp-admin/includes/image-edit.php:754 +msgid "Image data does not exist. Please re-upload the image." +msgstr "Bildedata finnes ikke. Vennligst last opp bilde på nytt." + +#: wp-admin/includes/file.php:1264 +msgid "Proceed" +msgstr "Fortsett" + +#: wp-admin/includes/file.php:1223 +msgid "Connection Type" +msgstr "Tilkoblingstype" + +#: wp-admin/includes/file.php:1249 +msgid "Private Key:" +msgstr "Privat nøkkel:" + +#: wp-admin/includes/file.php:1245 +msgid "Public Key:" +msgstr "Offentlig nøkkel:" + +#: wp-admin/includes/file.php:1243 +msgid "Authentication Keys" +msgstr "Autentiseringsnøkler" + +#: wp-admin/includes/file.php:1206 +msgid "Hostname" +msgstr "Servernavn" + +#: wp-admin/includes/file.php:1184 +msgid "Connection Information" +msgstr "Tilkoblingsinformasjon" + +#: wp-admin/includes/file.php:1158 +msgid "SSH2" +msgstr "SSH2" + +#: wp-admin/includes/file.php:1156 +msgid "FTPS (SSL)" +msgstr "FTPS (SSL)" + +#: wp-admin/includes/file.php:1154 +msgid "FTP" +msgstr "FTP" + +#: wp-admin/includes/file.php:753 +msgid "Empty archive." +msgstr "Tomt arkiv." + +#: wp-admin/includes/file.php:712 wp-admin/includes/file.php:811 +#: wp-admin/includes/file.php:846 wp-admin/includes/update-core.php:1057 +#: wp-admin/includes/update-core.php:1168 +msgid "Could not copy file." +msgstr "Kunne ikke kopiere fil." + +#: wp-admin/includes/file.php:709 +msgid "Could not extract file from archive." +msgstr "Kunne ikke pakke ut fil fra arkivet." + +#: wp-admin/includes/file.php:645 wp-admin/includes/file.php:699 +msgid "Could not retrieve file from archive." +msgstr "Kunne ikke hente fil fra arkivet." + +#: wp-admin/includes/file.php:501 +msgid "Could not create Temporary file." +msgstr "Kunne ikke lage midlertidig fil." + +#: wp-admin/includes/file.php:495 +msgid "Invalid URL Provided." +msgstr "Ugyldig URL angitt." + +#: wp-admin/includes/file.php:337 +msgid "Specified file failed upload test." +msgstr "Filen du angav strøk på opplastingstesten." + +#: wp-admin/includes/file.php:329 wp-admin/includes/import.php:84 +msgid "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." +msgstr "Filen er tom. Vennligst last opp noe mer innholdsrikt. Denne feilen kan også komme av at opplasting er deaktivert i php.ini eller at post_max_size er definert som mindre enn upload_max_filesize i php.ini." + +#: wp-admin/includes/file.php:316 +msgid "Invalid form submission." +msgstr "Ugyldig sending av skjemaet." + +#: wp-admin/includes/file.php:302 +msgid "File upload stopped by extension." +msgstr "Opplasting av fil ble stoppet av utvidelse." + +#: wp-admin/includes/file.php:301 +msgid "Failed to write file to disk." +msgstr "Klarte ikke å skrive til disken." + +#: wp-admin/includes/file.php:300 +msgid "Missing a temporary folder." +msgstr "Mangler en midlertidig mappe." + +#: wp-admin/includes/file.php:298 +msgid "No file was uploaded." +msgstr "Ingen fil ble lastet opp." + +#: wp-admin/includes/file.php:297 +msgid "The uploaded file was only partially uploaded." +msgstr "Filen ble bare delvis lastet opp." + +#: wp-admin/includes/file.php:62 +msgid "Popup Comments Template" +msgstr "Mal for sprettoppkommentarer" + +#: wp-admin/includes/file.php:61 +msgid "Comments Template" +msgstr "Kommentarmal" + +#: wp-admin/includes/file.php:58 +msgid ".htaccess (for rewrite rules )" +msgstr ".htaccess (for omskrivningsregler)" + +#: wp-admin/includes/file.php:57 +msgid "my-hacks.php (legacy hacks support)" +msgstr "my-hacks.php (støtte for gamle hacks)" + +#: wp-admin/includes/file.php:44 +msgid "Application Attachment Template" +msgstr "Applikasjon vedleggsmal" + +#: wp-admin/includes/file.php:43 +msgid "Audio Attachment Template" +msgstr "Lyd vedleggsmal" + +#: wp-admin/includes/file.php:42 +msgid "Video Attachment Template" +msgstr "Film vedleggsmal" + +#: wp-admin/includes/file.php:41 +msgid "Image Attachment Template" +msgstr "Bilde vedleggsmal" + +#: wp-admin/includes/file.php:40 +msgid "Attachment Template" +msgstr "Vedleggsmal" + +#: wp-admin/includes/file.php:16 +msgid "Theme Functions" +msgstr "Temafunksjoner" + +#: wp-admin/includes/file.php:23 +msgid "Links Template" +msgstr "Lenkemal" + +#: wp-admin/includes/file.php:22 +msgid "404 Template" +msgstr "404-mal" + +#: wp-admin/includes/file.php:36 +msgid "Single Post" +msgstr "Enkeltinnlegg" + +#: wp-admin/includes/file.php:21 +msgid "Search Form" +msgstr "Søkeskjema" + +#: wp-admin/includes/file.php:29 +msgid "Category Template" +msgstr "Kategorimal" + +#: wp-admin/includes/file.php:63 +msgid "Popup Comments" +msgstr "Kommentarer i sprettoppvindu" + +#: wp-admin/includes/file.php:55 +msgid "RTL Stylesheet" +msgstr "RTL stilsett" + +#: wp-admin/includes/file.php:25 +msgid "Main Index Template" +msgstr "Hovedmal" + +#: wp-admin/includes/dashboard.php:971 +msgid "This widget requires JavaScript." +msgstr "Denne widgeten krever JavaScript." + +#: wp-admin/includes/dashboard.php:971 +msgid "Loading…" +msgstr "Laster…" + +#. translators: 1: type of comment, 2: notification if the comment is pending +#: wp-admin/includes/dashboard.php:735 +msgctxt "dashboard" +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#: wp-admin/includes/dashboard.php:693 wp-admin/includes/dashboard.php:700 +#: wp-admin/includes/dashboard.php:730 wp-admin/includes/dashboard.php:737 +msgid "[Pending]" +msgstr "[Ventende]" + +#. translators: 1: comment author, 2: post link, 3: notification if the comment +#. is pending +#: wp-admin/includes/dashboard.php:690 +msgid "From %1$s on %2$s %3$s" +msgstr "Fra %1$s til %2$s %3$s" + +#: wp-admin/includes/class-wp-comments-list-table.php:580 +#: wp-admin/includes/dashboard.php:641 +msgid "Move this comment to the Trash" +msgstr "Flytt denne kommentaren til papirkurven" + +#. translators: mark as spam link +#: wp-admin/includes/class-wp-comments-list-table.php:568 +#: wp-admin/includes/dashboard.php:636 +msgctxt "verb" +msgid "Spam" +msgstr "Spam" + +#: wp-admin/includes/class-wp-comments-list-table.php:568 +#: wp-admin/includes/dashboard.php:636 +msgid "Mark this comment as spam" +msgstr "Merk denne kommentaren som spam" + +#: wp-admin/includes/class-wp-comments-list-table.php:590 +#: wp-admin/includes/dashboard.php:635 +msgid "Reply to this comment" +msgstr "Svar på denne kommentaren" + +#: wp-admin/includes/class-wp-comments-list-table.php:558 +#: wp-admin/includes/class-wp-comments-list-table.php:564 +#: wp-admin/includes/dashboard.php:633 +msgid "Unapprove this comment" +msgstr "Avslå denne kommentaren" + +#: wp-admin/includes/class-wp-comments-list-table.php:560 +#: wp-admin/includes/class-wp-comments-list-table.php:563 +#: wp-admin/includes/dashboard.php:632 +msgid "Approve this comment" +msgstr "Godkjenn denne kommentaren" + +#: wp-admin/includes/class-wp-press-this.php:1482 +#: wp-admin/includes/meta-boxes.php:269 wp-admin/includes/meta-boxes.php:270 +msgid "Submit for Review" +msgstr "Send til gjennomgang" + +#: wp-admin/tools.php:16 wp-admin/tools.php:40 wp-admin/tools.php:51 +msgid "Press This" +msgstr "Skriv om dette" + +#: wp-admin/includes/nav-menu.php:363 wp-admin/includes/nav-menu.php:648 +msgid "Page" +msgstr "Side" + +#: wp-admin/edit-form-comment.php:67 wp-admin/includes/template.php:402 +msgid "Comment" +msgstr "Kommentar" + +#: wp-admin/includes/dashboard.php:167 +msgid "Configure" +msgstr "Tilpass" + +#: wp-admin/includes/dashboard.php:112 +msgid "View all" +msgstr "Vis alle" + +#: wp-admin/includes/dashboard.php:1139 +msgid "Other WordPress News" +msgstr "Andre WordPress-nyheter" + +#: wp-admin/includes/dashboard.php:42 +msgid "Right Now" +msgstr "Akkurat nå" + +#: wp-admin/includes/file.php:387 +msgid "The uploaded file could not be moved to %s." +msgstr "Filen som ble lastet opp kunne ikke flyttes til %s." + +#: wp-admin/includes/class-file-upload-upgrader.php:60 +#: wp-admin/includes/class-file-upload-upgrader.php:94 +#: wp-admin/includes/class-file-upload-upgrader.php:107 +msgid "Please select a file" +msgstr "Vennligst velg en fil" + +#: wp-admin/includes/class-bulk-theme-upgrader-skin.php:49 +#: wp-admin/includes/class-theme-installer-skin.php:79 +#: wp-admin/includes/class-theme-upgrader-skin.php:68 +msgid "Return to Themes page" +msgstr "Gå tilbake til temasiden" + +#: wp-admin/includes/class-theme-installer-skin.php:77 +msgid "Return to Theme Installer" +msgstr "Gå tilbake til temainstallasjon" + +#: wp-admin/includes/class-theme-installer-skin.php:71 +#: wp-admin/includes/class-theme-upgrader-skin.php:61 +#: wp-admin/includes/class-wp-themes-list-table.php:188 +msgid "Activate “%s”" +msgstr "Aktiver «%s»" + +#. translators: %s: post title +#: wp-admin/includes/class-wp-posts-list-table.php:1277 +#: wp-admin/includes/class-wp-theme-install-list-table.php:259 +msgid "Preview “%s”" +msgstr "Forhåndsvis «%s»" + +#. translators: 1: theme name, 2: version +#: wp-admin/includes/class-theme-upgrader.php:74 +msgid "Successfully installed the theme %1$s %2$s." +msgstr "Suksess: %1$s %2$s temaet er installert." + +#: wp-admin/includes/class-plugin-installer-skin.php:67 +#: wp-admin/includes/class-plugin-installer-skin.php:69 +msgid "Return to Plugin Installer" +msgstr "Gå tilbake til installering av utvidelser" + +#: wp-admin/includes/class-plugin-installer-skin.php:41 +msgid "Successfully installed the plugin %s %s." +msgstr "Installerte utvidelsen %s %s." + +#: wp-admin/includes/class-bulk-plugin-upgrader-skin.php:49 +#: wp-admin/includes/class-plugin-installer-skin.php:71 +#: wp-admin/includes/class-plugin-upgrader-skin.php:53 +msgid "Return to Plugins page" +msgstr "Gå tilbake til siden med utvidelser" + +#: wp-admin/includes/class-plugin-installer-skin.php:57 +#: wp-admin/includes/class-plugin-upgrader-skin.php:52 +msgid "Activate Plugin" +msgstr "Aktiver utvidelse" + +#: wp-admin/includes/class-core-upgrader.php:35 +msgid "Could not copy files." +msgstr "Kunne ikke kopiere filer." + +#: wp-admin/includes/class-core-upgrader.php:30 +msgid "WordPress is at the latest version." +msgstr "WordPress er nyeste versjon." + +#: wp-admin/includes/class-theme-upgrader.php:72 +msgid "Theme installed successfully." +msgstr "Tema installert med suksess." + +#: wp-admin/includes/class-theme-upgrader.php:71 +msgid "Theme install failed." +msgstr "Installer tema feilet." + +#: wp-admin/includes/class-theme-upgrader.php:69 +msgid "Installing the theme…" +msgstr "Installerer temaet…" + +#: wp-admin/includes/class-theme-upgrader.php:54 +msgid "Could not remove the old theme." +msgstr "Kunne ikke fjerne det gamle temaet." + +#: wp-admin/includes/class-theme-upgrader.php:53 +msgid "Removing the old version of the theme…" +msgstr "Fjerner den gamle versjonen av temaet…" + +#: wp-admin/includes/class-theme-upgrader.php:49 +msgid "The theme is at the latest version." +msgstr "Dette temaet er nyeste versjon." + +#: wp-admin/includes/class-plugin-upgrader.php:74 +msgid "Plugin installed successfully." +msgstr "Utvidelsen ble installert." + +#: wp-admin/includes/class-plugin-upgrader.php:73 +msgid "Plugin install failed." +msgstr "Installering av utvidelsen feilet." + +#: wp-admin/includes/class-plugin-upgrader.php:71 +msgid "Installing the plugin…" +msgstr "Installerer utvidelsen…" + +#: wp-admin/includes/class-plugin-upgrader.php:70 +#: wp-admin/includes/class-theme-upgrader.php:68 +msgid "Unpacking the package…" +msgstr "Pakker ut pakken…" + +#: wp-admin/includes/class-plugin-upgrader.php:69 +#: wp-admin/includes/class-theme-upgrader.php:67 +msgid "Downloading install package from %s…" +msgstr "Laster ned installasjonspakke fra (%s)…" + +#: wp-admin/includes/class-plugin-upgrader.php:68 +#: wp-admin/includes/class-theme-upgrader.php:66 +msgid "Install package not available." +msgstr "Installeringspakke ikke tilgjengelig." + +#: wp-admin/includes/class-plugin-upgrader.php:55 +msgid "Could not remove the old plugin." +msgstr "Kunne ikke fjerne den gamle utvidelsen." + +#: wp-admin/includes/class-plugin-upgrader.php:54 +msgid "Removing the old version of the plugin…" +msgstr "Fjerner den gamle versjonen av utvidelsen…" + +#: wp-admin/includes/class-core-upgrader.php:34 +#: wp-admin/includes/class-language-pack-upgrader.php:120 +#: wp-admin/includes/class-plugin-upgrader.php:53 +#: wp-admin/includes/class-theme-upgrader.php:52 +msgid "Unpacking the update…" +msgstr "Pakker ut oppdateringen…" + +#: wp-admin/includes/class-core-upgrader.php:33 +#: wp-admin/includes/class-plugin-upgrader.php:52 +#: wp-admin/includes/class-theme-upgrader.php:51 +msgid "Downloading update from %s…" +msgstr "Laster ned oppdatering fra %s…" + +#: wp-admin/includes/class-plugin-upgrader.php:50 +msgid "The plugin is at the latest version." +msgstr "Denne utvidelsen er oppdatert til nyeste versjon." + +#: wp-admin/includes/class-wp-upgrader.php:175 +#: wp-admin/includes/update-core.php:1020 +msgid "Disabling Maintenance mode…" +msgstr "Deaktiverer vedlikeholdstilstand…" + +#: wp-admin/includes/class-wp-upgrader.php:174 +#: wp-admin/includes/update-core.php:933 +msgid "Enabling Maintenance mode…" +msgstr "Aktiverer vedlikeholdstilstand…" + +#: wp-admin/includes/file.php:639 wp-admin/includes/file.php:750 +msgid "Incompatible Archive." +msgstr "Ikke kompatibelt arkiv." + +#: wp-admin/includes/class-wp-upgrader.php:170 wp-admin/includes/file.php:692 +#: wp-admin/includes/file.php:798 wp-admin/includes/file.php:851 +#: wp-admin/includes/update-core.php:1173 +msgid "Could not create directory." +msgstr "Kunne ikke lage mappe." + +#: wp-admin/includes/class-wp-upgrader.php:169 +msgid "Destination folder already exists." +msgstr "Målmappen finnes allerede." + +#: wp-admin/includes/class-wp-upgrader.php:167 +msgid "Installing the latest version…" +msgstr "Installerer den nyeste versjonen…" + +#: wp-admin/includes/class-wp-upgrader.php:166 +msgid "Download failed." +msgstr "Nedlasting feilet." + +#. translators: %s: directory name +#: wp-admin/includes/class-wp-upgrader.php:164 +msgid "Unable to locate needed folder (%s)." +msgstr "Klarte ikke å finne obligatorisk mappe (%s)." + +#: wp-admin/includes/class-wp-upgrader.php:161 wp-admin/includes/plugin.php:824 +msgid "Unable to locate WordPress plugin directory." +msgstr "Klarte ikke å finne WordPress-mappen for utvidelser (wp-content/plugins)." + +#: wp-admin/includes/class-wp-upgrader.php:160 +msgid "Unable to locate WordPress content directory (wp-content)." +msgstr "Klarte ikke å finne WordPress-mappen for innhold (wp-content)." + +#: wp-admin/includes/class-wp-upgrader.php:159 +msgid "Unable to locate WordPress root directory." +msgstr "Klarte ikke å finne toppnivåmappen til WordPress." + +#: wp-admin/includes/class-wp-upgrader.php:158 wp-admin/includes/plugin.php:819 +#: wp-admin/includes/theme.php:62 +msgid "Filesystem error." +msgstr "Filsystem-feil." + +#: wp-admin/includes/class-wp-automatic-updater.php:342 +#: wp-admin/includes/class-wp-upgrader.php:157 wp-admin/includes/file.php:571 +#: wp-admin/includes/plugin.php:816 wp-admin/includes/theme.php:59 +msgid "Could not access filesystem." +msgstr "Kunne ikke lese filsystemet." + +#: wp-admin/includes/class-wp-upgrader.php:156 +msgid "Invalid data provided." +msgstr "Ugyldig data angitt." + +#. translators: %s: command +#: wp-admin/includes/class-wp-filesystem-ssh2.php:206 +msgid "Unable to perform command: %s" +msgstr "Kunne ikke utføre kommandoen: %s" + +#. translators: %s: username +#: wp-admin/includes/class-wp-filesystem-ssh2.php:147 +msgid "Public and Private keys incorrect for %s" +msgstr "Offentlige og private nøkler er feil for %s" + +#. translators: %s: hostname:port +#: wp-admin/includes/class-wp-filesystem-ssh2.php:126 +msgid "Failed to connect to SSH2 Server %s" +msgstr "Kunne ikke koble til SSH2-tjeneren %s" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:105 +msgid "SSH2 password is required" +msgstr "SSH2 passord er obligatorisk" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:96 +msgid "SSH2 username is required" +msgstr "SSH2 brukernavn er obligatorisk" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:83 +msgid "SSH2 hostname is required" +msgstr "SSH2 tjenernavn er obligatorisk" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:61 +msgid "The ssh2 PHP extension is not available" +msgstr "SSH2 PHP tillegget er ikke tilgjengelig" + +#. translators: %s: username +#: wp-admin/includes/class-wp-filesystem-ftpext.php:90 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:95 +#: wp-admin/includes/class-wp-filesystem-ssh2.php:137 +msgid "Username/Password incorrect for %s" +msgstr "Brukernavn/passord feil for %s" + +#. translators: %s: hostname:port +#: wp-admin/includes/class-wp-filesystem-ftpext.php:80 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:75 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:85 +msgid "Failed to connect to FTP Server %s" +msgstr "Kunne ikke koble til FTP-tjeneren %s" + +#: wp-admin/includes/class-wp-filesystem-ftpext.php:57 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:56 +msgid "FTP password is required" +msgstr "FTP passord er obligatorisk" + +#: wp-admin/includes/class-wp-filesystem-ftpext.php:52 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:51 +msgid "FTP username is required" +msgstr "FTP brukernavn er obligatorisk" + +#: wp-admin/includes/class-wp-filesystem-ftpext.php:46 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:45 +msgid "FTP hostname is required" +msgstr "FTP tjenernavn er obligatorisk" + +#: wp-admin/includes/class-wp-filesystem-ftpext.php:31 +msgid "The ftp PHP extension is not available" +msgstr "FTP PHP tillegget er ikke tilgjengelig" + +#. translators: %s: directory name +#: wp-admin/includes/class-wp-filesystem-base.php:299 +msgid "Found %s" +msgstr "Fant %s" + +#. translators: %s: directory name +#: wp-admin/includes/class-wp-filesystem-base.php:284 +msgid "Changing to %s" +msgstr "Endrer til %s" + +#: wp-admin/includes/bookmark.php:208 +msgid "Could not insert link into the database" +msgstr "Kunne ikke sette inn lenke i databasen" + +#: wp-admin/includes/bookmark.php:200 +msgid "Could not update link in the database" +msgstr "Kunne ikke oppdatere lenke i databasen" + +#: wp-admin/includes/import.php:188 +msgid "Blogroll" +msgstr "Bloggrull" + +#: wp-admin/includes/import.php:182 +msgid "Movable Type and TypePad" +msgstr "Movable Type og TypePad" + +#: wp-admin/includes/import.php:176 +msgid "LiveJournal" +msgstr "LiveJournal" + +#: wp-admin/includes/import.php:164 +msgid "Blogger" +msgstr "Gamle Blogger" + +#: wp-admin/export.php:169 wp-admin/includes/class-wp-users-list-table.php:322 +msgid "Posts" +msgstr "Innlegg" + +#: wp-admin/includes/media.php:1505 wp-admin/upgrade.php:77 +#: wp-admin/upgrade.php:111 +msgid "Continue" +msgstr "Fortsett" + +#: wp-admin/import.php:86 +msgid "No importers are available." +msgstr "Ingen importører er tilgjengelige." + +#: wp-admin/export.php:290 +msgid "Download Export File" +msgstr "Last ned eksportfilen" + +#: wp-admin/export.php:158 +msgid "This format, which we call WordPress eXtended RSS or WXR, will contain your posts, pages, comments, custom fields, categories, and tags." +msgstr "Dette formatet, som vi kaller WordPress eXtended RSS eller WXR, inneholder innleggene, sidene, kommentarene, tilpassede felter, kategoriene og stikkordene." + +#: wp-admin/export.php:157 +msgid "When you click the button below WordPress will create an XML file for you to save to your computer." +msgstr "Når du klikker på knappen under, vil WordPress lage en XML-fil som du kan lagre på maskinen din." + +#: wp-admin/export.php:17 wp-admin/menu.php:242 +msgid "Export" +msgstr "Eksporter" + +#: wp-admin/includes/class-wp-list-table.php:163 +#: wp-admin/includes/class-wp-screen.php:1233 +msgid "Excerpt View" +msgstr "Utdragsvisning" + +#: wp-admin/includes/class-wp-posts-list-table.php:317 +msgctxt "posts" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "Alle (%s)" +msgstr[1] "Alle (%s)" + +#: wp-admin/includes/class-wp-posts-list-table.php:297 +msgctxt "posts" +msgid "Mine (%s)" +msgid_plural "Mine (%s)" +msgstr[0] "Min (%s)" +msgstr[1] "Mine (%s)" + +#: wp-admin/edit.php:273 +msgid "%s post updated." +msgid_plural "%s posts updated." +msgstr[0] "%s innlegg oppdatert." +msgstr[1] "%s innlegg oppdatert." + +#: wp-admin/edit-tags.php:101 wp-admin/edit.php:140 wp-admin/post.php:255 +#: wp-admin/themes.php:43 wp-admin/upload.php:159 +msgid "Sorry, you are not allowed to delete this item." +msgstr "Beklager, du har ikke lov til å slettet dette." + +#: wp-admin/includes/edit-tag-messages.php:19 +msgid "Items deleted." +msgstr "Stikkord er slettet." + +#: wp-admin/includes/edit-tag-messages.php:17 +msgid "Item not added." +msgstr "Stikkordet ble ikke lagt til." + +#: wp-admin/includes/edit-tag-messages.php:16 +msgid "Item updated." +msgstr "Stikkord er oppdatert." + +#: wp-admin/includes/edit-tag-messages.php:15 +msgid "Item deleted." +msgstr "Stikkord er slettet." + +#: wp-admin/includes/edit-tag-messages.php:14 +msgid "Item added." +msgstr "Stikkord er lagt til." + +#: wp-admin/edit-tag-form.php:168 wp-admin/edit-tags.php:437 +msgid "Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional." +msgstr "Kategorier, i motsetning til stikkord, kan ha hierarki. Du kan ha en jazz kategori, med underkategorier for Bebop og storband. Helt valgfritt." + +#: wp-admin/edit-tag-form.php:122 wp-admin/edit-tags.php:388 +msgid "The name is how it appears on your site." +msgstr "Navnet er hvordan det vises på nettstedet ditt." + +#: wp-admin/edit-link-form.php:113 +msgid "This will be shown when someone hovers over the link in the blogroll, or optionally below the link." +msgstr "Dette vises når noen beveger muspekeren over lenkene i bloggrullen, eller under lenken." + +#: wp-admin/edit-link-form.php:105 +msgid "Example: http://wordpress.org/ — don’t forget the http://" +msgstr "Eksempel: http://wordpress.org/ — ikke glem http://" + +#: wp-admin/edit-link-form.php:102 +msgid "Web Address" +msgstr "Nettadresse" + +#: wp-admin/edit-link-form.php:97 +msgid "Example: Nifty blogging software" +msgstr "Eksempel: Kreativ bloggprogramvare" + +#: wp-admin/edit-link-form.php:76 +msgid "Link added." +msgstr "Lenken ble lagt til." + +#: wp-admin/edit-link-form.php:19 +msgid "Links / Add New Link" +msgstr "Lenker / Legg til ny lenke" + +#: wp-admin/edit-link-form.php:15 wp-admin/includes/meta-boxes.php:922 +msgid "Update Link" +msgstr "Oppdater lenke" + +#: wp-admin/edit-link-form.php:14 +msgid "Links / Edit Link" +msgstr "Lenker / Endre lenker" + +#: wp-admin/edit-tag-form.php:176 wp-admin/edit-tags.php:444 +msgid "The description is not prominent by default; however, some themes may show it." +msgstr "Beskrivelsen vises ikke som standard, men noen temaer kan gjøre det." + +#: wp-admin/edit-tag-form.php:144 wp-admin/edit-tags.php:394 +msgid "The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens." +msgstr "«Permalenke» er den URL-vennlige versjonen av navnet. Den er vanligvis i små bokstaver og inneholder bare bokstaver, tall og bindestreker." + +#: wp-admin/edit-form-comment.php:53 +msgid "URL:" +msgstr "URL:" + +#: wp-admin/themes.php:166 wp-admin/themes.php:168 +msgid "Visit site" +msgstr "Gå til nettsted" + +#: wp-admin/edit-form-comment.php:47 +msgid "Email:" +msgstr "E-post:" + +#: wp-admin/edit-form-comment.php:43 +msgid "Name:" +msgstr "Navn:" + +#: wp-admin/includes/template.php:429 +msgid "Update Comment" +msgstr "Oppdater kommentar" + +#. translators: 1: Post edited date, 2: Post edited time +#: wp-admin/edit-form-advanced.php:646 wp-admin/includes/ajax-actions.php:2280 +msgid "Last edited on %1$s at %2$s" +msgstr "Sist endret %1$s kl. %2$s" + +#. translators: 1: Name of most recent post author, 2: Post edited date, 3: +#. Post edited time +#: wp-admin/edit-form-advanced.php:643 wp-admin/includes/ajax-actions.php:2278 +msgid "Last edited by %1$s on %2$s at %3$s" +msgstr "Sist endret av %1$s, %2$s kl. %3$s" + +#: wp-admin/edit-form-advanced.php:309 wp-admin/edit-tag-form.php:126 +#: wp-admin/edit-tags.php:392 +#: wp-admin/includes/class-wp-posts-list-table.php:1405 +#: wp-admin/includes/class-wp-terms-list-table.php:182 +#: wp-admin/includes/class-wp-terms-list-table.php:600 +#: wp-admin/includes/meta-boxes.php:751 +msgid "Slug" +msgstr "Permalenke" + +#: wp-admin/edit-form-advanced.php:291 wp-admin/menu.php:252 +msgid "Discussion" +msgstr "Diskusjon" + +#: wp-admin/edit-form-advanced.php:276 +msgid "Custom Fields" +msgstr "Tilpassede felt" + +#: wp-admin/edit-form-advanced.php:273 +msgid "Send Trackbacks" +msgstr "Send tilbakesporinger" + +#. translators: %s: date and time of the revision +#: wp-admin/edit-form-advanced.php:156 +msgid "Page restored to revision from %s." +msgstr "Side tilbakestilt til revisjon fra %s." + +#: wp-admin/edit-form-advanced.php:151 wp-admin/edit-form-advanced.php:154 +msgid "Page updated." +msgstr "Side oppdatert." + +#: wp-admin/edit-form-advanced.php:144 +msgid "Post saved." +msgstr "Innlegget er lagret." + +#. translators: %s: date and time of the revision +#: wp-admin/edit-form-advanced.php:142 +msgid "Post restored to revision from %s." +msgstr "Innlegg tilbakestilt til revisjon fra %s." + +#: wp-admin/edit-form-advanced.php:137 wp-admin/edit-form-advanced.php:140 +msgid "Post updated." +msgstr "Innlegg oppdatert." + +#: wp-admin/edit-form-advanced.php:139 wp-admin/edit-form-advanced.php:153 +msgid "Custom field deleted." +msgstr "Slettet egendefinert felt." + +#: wp-admin/edit-form-advanced.php:138 wp-admin/edit-form-advanced.php:152 +msgid "Custom field updated." +msgstr "Egendefinert felt oppdatert." + +#: wp-admin/includes/class-wp-comments-list-table.php:189 +msgid "No comments found." +msgstr "Ingen kommentarer funnet." + +#: wp-admin/includes/class-wp-comments-list-table.php:359 +#: wp-admin/includes/class-wp-media-list-table.php:181 +#: wp-admin/includes/class-wp-posts-list-table.php:492 +msgid "Empty Trash" +msgstr "Tøm papirkurven" + +#: wp-admin/includes/class-wp-comments-list-table.php:359 +msgid "Empty Spam" +msgstr "Tøm spam" + +#: wp-admin/includes/class-wp-comments-list-table.php:354 +#: wp-admin/includes/class-wp-links-list-table.php:115 +#: wp-admin/includes/class-wp-media-list-table.php:177 +#: wp-admin/includes/class-wp-posts-list-table.php:487 +msgid "Filter" +msgstr "Filter" + +#: wp-admin/includes/class-wp-comments-list-table.php:340 +#: wp-admin/includes/class-wp-posts-list-table.php:1595 +msgid "Pings" +msgstr "Ping" + +#: wp-admin/comment.php:119 wp-admin/edit-form-comment.php:162 +#: wp-admin/includes/class-wp-comments-list-table.php:308 +#: wp-admin/includes/class-wp-posts-list-table.php:407 +#: wp-admin/includes/media.php:1509 wp-admin/includes/meta-boxes.php:250 +msgid "Move to Trash" +msgstr "Flytt til papirkurven" + +#: wp-admin/includes/class-wp-comments-list-table.php:295 +#: wp-admin/includes/class-wp-comments-list-table.php:560 +#: wp-admin/includes/class-wp-comments-list-table.php:563 +#: wp-admin/includes/dashboard.php:632 +msgid "Approve" +msgstr "Godkjenn" + +#: wp-admin/includes/class-wp-comments-list-table.php:293 +#: wp-admin/includes/class-wp-comments-list-table.php:558 +#: wp-admin/includes/class-wp-comments-list-table.php:564 +#: wp-admin/includes/dashboard.php:633 +msgid "Unapprove" +msgstr "Avslå" + +#: wp-admin/edit.php:220 wp-admin/includes/class-wp-list-table.php:463 +msgid "Bulk Actions" +msgstr "Massehandlinger" + +#: wp-admin/includes/deprecated.php:594 +msgid "Displaying %s–%s of %s" +msgstr "Viser %s–%s av %s" + +#: wp-admin/edit-comments.php:301 +msgid "Search Comments" +msgstr "Søk i kommentarer" + +#. translators: %s: number of comments permanently deleted +#: wp-admin/edit-comments.php:275 +msgid "%s comment permanently deleted" +msgid_plural "%s comments permanently deleted" +msgstr[0] "%s kommentar permanent slettet" +msgstr[1] "%s kommentarer permanent slettet" + +#. translators: %s: number of comments restored from the spam +#: wp-admin/edit-comments.php:259 +msgid "%s comment restored from the spam" +msgid_plural "%s comments restored from the spam" +msgstr[0] "%s kommentar gjenopprettet fra spam" +msgstr[1] "%s kommentarer gjenopprettet fra spam" + +#. translators: %s: number of comments marked as spam +#: wp-admin/edit-comments.php:254 +msgid "%s comment marked as spam." +msgid_plural "%s comments marked as spam." +msgstr[0] "%s kommentar merket som spam." +msgstr[1] "%s kommentarer merket som spam." + +#. translators: %s: number of comments approved +#: wp-admin/edit-comments.php:248 +msgid "%s comment approved" +msgid_plural "%s comments approved" +msgstr[0] "%s kommentar godkjent" +msgstr[1] "%s kommentarer godkjent" + +#: wp-admin/includes/class-wp-media-list-table.php:154 +#: wp-admin/includes/class-wp-media-list-table.php:514 +#: wp-admin/includes/class-wp-media-list-table.php:694 +msgid "Attach" +msgstr "Legg ved" + +#: wp-admin/includes/class-wp-media-list-table.php:506 +msgid "(Unattached)" +msgstr "(Frakoblet)" + +#: wp-admin/includes/class-wp-media-list-table.php:447 +msgid "%s from now" +msgstr "%s fra nå" + +#: wp-admin/includes/class-wp-media-list-table.php:441 +#: wp-admin/includes/class-wp-posts-list-table.php:978 +msgid "Unpublished" +msgstr "Upublisert" + +#. translators: %s: attachment title +#. translators: %s: post title +#: wp-admin/includes/class-wp-media-list-table.php:684 +#: wp-admin/includes/class-wp-media-list-table.php:743 +#: wp-admin/includes/class-wp-posts-list-table.php:1286 +msgid "View “%s”" +msgstr "Vis «%s»" #. translators: %s: link name #. translators: %s: attachment title @@ -8929,1900 +10753,181 @@ msgstr "Velg den delen av bildet du ønsker å bruke som toppbilde." #: wp-admin/includes/class-wp-links-list-table.php:190 #: wp-admin/includes/class-wp-media-list-table.php:655 #: wp-admin/includes/class-wp-media-list-table.php:704 -#: wp-admin/includes/class-wp-posts-list-table.php:1213 +#: wp-admin/includes/class-wp-posts-list-table.php:1229 #: wp-admin/includes/class-wp-terms-list-table.php:442 -#: wp-admin/includes/dashboard.php:575 wp-admin/includes/dashboard.php:863 +#: wp-admin/includes/dashboard.php:578 wp-admin/includes/dashboard.php:866 msgid "Edit “%s”" msgstr "Endre «%s»" -#. translators: %s: attachment title -#. translators: %s: post title -#: wp-admin/includes/class-wp-media-list-table.php:684 -#: wp-admin/includes/class-wp-media-list-table.php:743 -#: wp-admin/includes/class-wp-posts-list-table.php:1270 -msgid "View “%s”" -msgstr "Vis «%s»" - -#: wp-admin/includes/class-wp-media-list-table.php:441 -#: wp-admin/includes/class-wp-posts-list-table.php:962 -msgid "Unpublished" -msgstr "Upublisert" - -#: wp-admin/includes/class-wp-media-list-table.php:447 -msgid "%s from now" -msgstr "%s fra nå" - -#: wp-admin/includes/class-wp-media-list-table.php:506 -msgid "(Unattached)" -msgstr "(Frakoblet)" - -#: wp-admin/includes/class-wp-media-list-table.php:154 -#: wp-admin/includes/class-wp-media-list-table.php:514 -#: wp-admin/includes/class-wp-media-list-table.php:694 -msgid "Attach" -msgstr "Legg ved" - -#. translators: %s: number of comments approved -#: wp-admin/edit-comments.php:232 -msgid "%s comment approved" -msgid_plural "%s comments approved" -msgstr[0] "%s kommentar godkjent" -msgstr[1] "%s kommentarer godkjent" - -#. translators: %s: number of comments marked as spam -#: wp-admin/edit-comments.php:238 -msgid "%s comment marked as spam." -msgid_plural "%s comments marked as spam." -msgstr[0] "%s kommentar merket som spam." -msgstr[1] "%s kommentarer merket som spam." - -#. translators: %s: number of comments restored from the spam -#: wp-admin/edit-comments.php:243 -msgid "%s comment restored from the spam" -msgid_plural "%s comments restored from the spam" -msgstr[0] "%s kommentar gjenopprettet fra spam" -msgstr[1] "%s kommentarer gjenopprettet fra spam" - -#. translators: %s: number of comments permanently deleted -#: wp-admin/edit-comments.php:259 -msgid "%s comment permanently deleted" -msgid_plural "%s comments permanently deleted" -msgstr[0] "%s kommentar permanent slettet" -msgstr[1] "%s kommentarer permanent slettet" - -#: wp-admin/edit-comments.php:285 -msgid "Search Comments" -msgstr "Søk i kommentarer" - -#: wp-admin/includes/deprecated.php:594 -msgid "Displaying %s–%s of %s" -msgstr "Viser %s–%s av %s" - -#: wp-admin/edit.php:216 wp-admin/includes/class-wp-list-table.php:464 -msgid "Bulk Actions" -msgstr "Massehandlinger" - -#: wp-admin/includes/class-wp-comments-list-table.php:293 -#: wp-admin/includes/class-wp-comments-list-table.php:558 -#: wp-admin/includes/class-wp-comments-list-table.php:564 -#: wp-admin/includes/dashboard.php:630 -msgid "Unapprove" -msgstr "Avslå" - -#: wp-admin/includes/class-wp-comments-list-table.php:295 -#: wp-admin/includes/class-wp-comments-list-table.php:560 -#: wp-admin/includes/class-wp-comments-list-table.php:563 -#: wp-admin/includes/dashboard.php:629 -msgid "Approve" -msgstr "Godkjenn" - -#: wp-admin/comment.php:119 wp-admin/edit-form-comment.php:162 -#: wp-admin/includes/class-wp-comments-list-table.php:308 -#: wp-admin/includes/class-wp-posts-list-table.php:407 -#: wp-admin/includes/media.php:1501 wp-admin/includes/meta-boxes.php:242 -msgid "Move to Trash" -msgstr "Flytt til papirkurven" - -#: wp-admin/includes/class-wp-comments-list-table.php:340 -#: wp-admin/includes/class-wp-posts-list-table.php:1579 -msgid "Pings" -msgstr "Ping" - -#: wp-admin/includes/class-wp-comments-list-table.php:354 -#: wp-admin/includes/class-wp-links-list-table.php:115 -#: wp-admin/includes/class-wp-media-list-table.php:177 -#: wp-admin/includes/class-wp-posts-list-table.php:482 -msgid "Filter" -msgstr "Filter" - -#: wp-admin/includes/class-wp-comments-list-table.php:359 -msgid "Empty Spam" -msgstr "Tøm spam" - -#: wp-admin/includes/class-wp-comments-list-table.php:359 -#: wp-admin/includes/class-wp-media-list-table.php:181 -#: wp-admin/includes/class-wp-posts-list-table.php:486 -msgid "Empty Trash" -msgstr "Tøm papirkurven" - -#: wp-admin/includes/class-wp-comments-list-table.php:189 -msgid "No comments found." -msgstr "Ingen kommentarer funnet." - -#: wp-admin/edit-form-advanced.php:138 wp-admin/edit-form-advanced.php:152 -msgid "Custom field updated." -msgstr "Egendefinert felt oppdatert." - -#: wp-admin/edit-form-advanced.php:139 wp-admin/edit-form-advanced.php:153 -msgid "Custom field deleted." -msgstr "Slettet egendefinert felt." - -#: wp-admin/edit-form-advanced.php:137 wp-admin/edit-form-advanced.php:140 -msgid "Post updated." -msgstr "Innlegg oppdatert." - -#. translators: %s: date and time of the revision -#: wp-admin/edit-form-advanced.php:142 -msgid "Post restored to revision from %s." -msgstr "Innlegg tilbakestilt til revisjon fra %s." - -#: wp-admin/edit-form-advanced.php:144 -msgid "Post saved." -msgstr "Innlegget er lagret." - -#: wp-admin/edit-form-advanced.php:151 wp-admin/edit-form-advanced.php:154 -msgid "Page updated." -msgstr "Side oppdatert." - -#. translators: %s: date and time of the revision -#: wp-admin/edit-form-advanced.php:156 -msgid "Page restored to revision from %s." -msgstr "Side tilbakestilt til revisjon fra %s." - -#: wp-admin/edit-form-advanced.php:272 -msgid "Send Trackbacks" -msgstr "Send tilbakesporinger" - -#: wp-admin/edit-form-advanced.php:275 -msgid "Custom Fields" -msgstr "Tilpassede felt" - -#: wp-admin/edit-form-advanced.php:290 wp-admin/menu.php:252 -msgid "Discussion" -msgstr "Diskusjon" - -#: wp-admin/edit-form-advanced.php:308 wp-admin/edit-tag-form.php:133 -#: wp-admin/edit-tags.php:419 -#: wp-admin/includes/class-wp-posts-list-table.php:1389 -#: wp-admin/includes/class-wp-terms-list-table.php:179 -#: wp-admin/includes/class-wp-terms-list-table.php:600 -#: wp-admin/includes/meta-boxes.php:740 -msgid "Slug" -msgstr "Permalenke" - -#: wp-admin/edit-form-advanced.php:634 wp-admin/includes/ajax-actions.php:2292 -msgid "Last edited by %1$s on %2$s at %3$s" -msgstr "Sist endret av %1$s, %2$s kl. %3$s" - -#: wp-admin/edit-form-advanced.php:636 wp-admin/includes/ajax-actions.php:2294 -msgid "Last edited on %1$s at %2$s" -msgstr "Sist endret %1$s kl. %2$s" - -#: wp-admin/includes/template.php:428 -msgid "Update Comment" -msgstr "Oppdater kommentar" - -#: wp-admin/edit-form-comment.php:43 -msgid "Name:" -msgstr "Navn:" - -#: wp-admin/edit-form-comment.php:47 -msgid "Email:" -msgstr "E-post:" - -#: wp-admin/themes.php:166 wp-admin/themes.php:168 -msgid "Visit site" -msgstr "Gå til nettsted" - -#: wp-admin/edit-form-comment.php:53 -msgid "URL:" -msgstr "URL:" - -#: wp-admin/edit-tag-form.php:151 wp-admin/edit-tags.php:421 -msgid "The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens." -msgstr "«Permalenke» er den URL-vennlige versjonen av navnet. Den er vanligvis i små bokstaver og inneholder bare bokstaver, tall og bindestreker." - -#: wp-admin/edit-tag-form.php:183 wp-admin/edit-tags.php:471 -msgid "The description is not prominent by default; however, some themes may show it." -msgstr "Beskrivelsen vises ikke som standard, men noen temaer kan gjøre det." - -#: wp-admin/edit-link-form.php:14 -msgid "Links / Edit Link" -msgstr "Lenker / Endre lenker" - -#: wp-admin/edit-link-form.php:15 wp-admin/includes/meta-boxes.php:912 -msgid "Update Link" -msgstr "Oppdater lenke" - -#: wp-admin/edit-link-form.php:19 -msgid "Links / Add New Link" -msgstr "Lenker / Legg til ny lenke" - -#: wp-admin/edit-link-form.php:76 -msgid "Link added." -msgstr "Lenken ble lagt til." - -#: wp-admin/edit-link-form.php:97 -msgid "Example: Nifty blogging software" -msgstr "Eksempel: Kreativ bloggprogramvare" - -#: wp-admin/edit-link-form.php:102 -msgid "Web Address" -msgstr "Nettadresse" - -#: wp-admin/edit-link-form.php:105 -msgid "Example: http://wordpress.org/ — don’t forget the http://" -msgstr "Eksempel: http://wordpress.org/ — ikke glem http://" - -#: wp-admin/edit-link-form.php:113 -msgid "This will be shown when someone hovers over the link in the blogroll, or optionally below the link." -msgstr "Dette vises når noen beveger muspekeren over lenkene i bloggrullen, eller under lenken." - -#: wp-admin/edit-tag-form.php:129 wp-admin/edit-tags.php:415 -msgid "The name is how it appears on your site." -msgstr "Navnet er hvordan det vises på nettstedet ditt." - -#: wp-admin/edit-tag-form.php:175 wp-admin/edit-tags.php:464 -msgid "Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional." -msgstr "Kategorier, i motsetning til stikkord, kan ha hierarki. Du kan ha en jazz kategori, med underkategorier for Bebop og storband. Helt valgfritt." - -#: wp-admin/includes/edit-tag-messages.php:14 -msgid "Item added." -msgstr "Stikkord er lagt til." - -#: wp-admin/includes/edit-tag-messages.php:15 -msgid "Item deleted." -msgstr "Stikkord er slettet." - -#: wp-admin/includes/edit-tag-messages.php:16 -msgid "Item updated." -msgstr "Stikkord er oppdatert." - -#: wp-admin/includes/edit-tag-messages.php:17 -msgid "Item not added." -msgstr "Stikkordet ble ikke lagt til." - -#: wp-admin/includes/edit-tag-messages.php:19 -msgid "Items deleted." -msgstr "Stikkord er slettet." - -#: wp-admin/edit-tags.php:114 wp-admin/edit.php:140 wp-admin/post.php:255 -#: wp-admin/themes.php:43 wp-admin/upload.php:159 -msgid "Sorry, you are not allowed to delete this item." -msgstr "Beklager, du har ikke lov til å slettet dette." - -#: wp-admin/edit.php:269 -msgid "%s post updated." -msgid_plural "%s posts updated." -msgstr[0] "%s innlegg oppdatert." -msgstr[1] "%s innlegg oppdatert." - -#: wp-admin/includes/class-wp-posts-list-table.php:297 -msgctxt "posts" -msgid "Mine (%s)" -msgid_plural "Mine (%s)" -msgstr[0] "Min (%s)" -msgstr[1] "Mine (%s)" - -#: wp-admin/includes/class-wp-posts-list-table.php:317 -msgctxt "posts" -msgid "All (%s)" -msgid_plural "All (%s)" -msgstr[0] "Alle (%s)" -msgstr[1] "Alle (%s)" - -#: wp-admin/includes/class-wp-list-table.php:163 -#: wp-admin/includes/class-wp-screen.php:1233 -msgid "Excerpt View" -msgstr "Utdragsvisning" - -#: wp-admin/export.php:17 wp-admin/menu.php:242 -msgid "Export" -msgstr "Eksporter" - -#: wp-admin/export.php:157 -msgid "When you click the button below WordPress will create an XML file for you to save to your computer." -msgstr "Når du klikker på knappen under, vil WordPress lage en XML-fil som du kan lagre på maskinen din." - -#: wp-admin/export.php:158 -msgid "This format, which we call WordPress eXtended RSS or WXR, will contain your posts, pages, comments, custom fields, categories, and tags." -msgstr "Dette formatet, som vi kaller WordPress eXtended RSS eller WXR, inneholder innleggene, sidene, kommentarene, tilpassede felter, kategoriene og stikkordene." - -#: wp-admin/export.php:290 -msgid "Download Export File" -msgstr "Last ned eksportfilen" - -#: wp-admin/import.php:86 -msgid "No importers are available." -msgstr "Ingen importører er tilgjengelige." - -#: wp-admin/includes/media.php:1497 wp-admin/upgrade.php:77 -#: wp-admin/upgrade.php:111 -msgid "Continue" -msgstr "Fortsett" - -#: wp-admin/export.php:169 wp-admin/includes/class-wp-users-list-table.php:322 -msgid "Posts" -msgstr "Innlegg" - -#: wp-admin/includes/import.php:164 -msgid "Blogger" -msgstr "Gamle Blogger" - -#: wp-admin/includes/import.php:176 -msgid "LiveJournal" -msgstr "LiveJournal" - -#: wp-admin/includes/import.php:182 -msgid "Movable Type and TypePad" -msgstr "Movable Type og TypePad" - -#: wp-admin/includes/import.php:188 -msgid "Blogroll" -msgstr "Bloggrull" - -#: wp-admin/includes/bookmark.php:200 -msgid "Could not update link in the database" -msgstr "Kunne ikke oppdatere lenke i databasen" - -#: wp-admin/includes/bookmark.php:208 -msgid "Could not insert link into the database" -msgstr "Kunne ikke sette inn lenke i databasen" - -#. translators: %s: directory name -#: wp-admin/includes/class-wp-filesystem-base.php:284 -msgid "Changing to %s" -msgstr "Endrer til %s" - -#. translators: %s: directory name -#: wp-admin/includes/class-wp-filesystem-base.php:299 -msgid "Found %s" -msgstr "Fant %s" - -#: wp-admin/includes/class-wp-filesystem-ftpext.php:31 -msgid "The ftp PHP extension is not available" -msgstr "FTP PHP tillegget er ikke tilgjengelig" - -#: wp-admin/includes/class-wp-filesystem-ftpext.php:46 -#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:45 -msgid "FTP hostname is required" -msgstr "FTP tjenernavn er obligatorisk" - -#: wp-admin/includes/class-wp-filesystem-ftpext.php:52 -#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:51 -msgid "FTP username is required" -msgstr "FTP brukernavn er obligatorisk" - -#: wp-admin/includes/class-wp-filesystem-ftpext.php:57 -#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:56 -msgid "FTP password is required" -msgstr "FTP passord er obligatorisk" - -#. translators: %s: hostname:port -#: wp-admin/includes/class-wp-filesystem-ftpext.php:80 -#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:75 -#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:85 -msgid "Failed to connect to FTP Server %s" -msgstr "Kunne ikke koble til FTP-tjeneren %s" - -#. translators: %s: username -#: wp-admin/includes/class-wp-filesystem-ftpext.php:90 -#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:95 -#: wp-admin/includes/class-wp-filesystem-ssh2.php:137 -msgid "Username/Password incorrect for %s" -msgstr "Brukernavn/passord feil for %s" - -#: wp-admin/includes/class-wp-filesystem-ssh2.php:61 -msgid "The ssh2 PHP extension is not available" -msgstr "SSH2 PHP tillegget er ikke tilgjengelig" - -#: wp-admin/includes/class-wp-filesystem-ssh2.php:83 -msgid "SSH2 hostname is required" -msgstr "SSH2 tjenernavn er obligatorisk" - -#: wp-admin/includes/class-wp-filesystem-ssh2.php:96 -msgid "SSH2 username is required" -msgstr "SSH2 brukernavn er obligatorisk" - -#: wp-admin/includes/class-wp-filesystem-ssh2.php:105 -msgid "SSH2 password is required" -msgstr "SSH2 passord er obligatorisk" - -#. translators: %s: hostname:port -#: wp-admin/includes/class-wp-filesystem-ssh2.php:126 -msgid "Failed to connect to SSH2 Server %s" -msgstr "Kunne ikke koble til SSH2-tjeneren %s" - -#. translators: %s: username -#: wp-admin/includes/class-wp-filesystem-ssh2.php:147 -msgid "Public and Private keys incorrect for %s" -msgstr "Offentlige og private nøkler er feil for %s" - -#. translators: %s: command -#: wp-admin/includes/class-wp-filesystem-ssh2.php:206 -msgid "Unable to perform command: %s" -msgstr "Kunne ikke utføre kommandoen: %s" - -#: wp-admin/includes/class-wp-upgrader.php:156 -msgid "Invalid data provided." -msgstr "Ugyldig data angitt." - -#: wp-admin/includes/class-wp-automatic-updater.php:342 -#: wp-admin/includes/class-wp-upgrader.php:157 wp-admin/includes/file.php:570 -#: wp-admin/includes/plugin.php:816 wp-admin/includes/theme.php:59 -msgid "Could not access filesystem." -msgstr "Kunne ikke lese filsystemet." - -#: wp-admin/includes/class-wp-upgrader.php:158 wp-admin/includes/plugin.php:819 -#: wp-admin/includes/theme.php:62 -msgid "Filesystem error." -msgstr "Filsystem-feil." - -#: wp-admin/includes/class-wp-upgrader.php:159 -msgid "Unable to locate WordPress root directory." -msgstr "Klarte ikke å finne toppnivåmappen til WordPress." - -#: wp-admin/includes/class-wp-upgrader.php:160 -msgid "Unable to locate WordPress content directory (wp-content)." -msgstr "Klarte ikke å finne WordPress-mappen for innhold (wp-content)." - -#: wp-admin/includes/class-wp-upgrader.php:161 wp-admin/includes/plugin.php:824 -msgid "Unable to locate WordPress plugin directory." -msgstr "Klarte ikke å finne WordPress-mappen for utvidelser (wp-content/plugins)." - -#. translators: %s: directory name -#: wp-admin/includes/class-wp-upgrader.php:164 -msgid "Unable to locate needed folder (%s)." -msgstr "Klarte ikke å finne obligatorisk mappe (%s)." - -#: wp-admin/includes/class-wp-upgrader.php:166 -msgid "Download failed." -msgstr "Nedlasting feilet." - -#: wp-admin/includes/class-wp-upgrader.php:167 -msgid "Installing the latest version…" -msgstr "Installerer den nyeste versjonen…" - -#: wp-admin/includes/class-wp-upgrader.php:169 -msgid "Destination folder already exists." -msgstr "Målmappen finnes allerede." - -#: wp-admin/includes/class-wp-upgrader.php:170 wp-admin/includes/file.php:691 -#: wp-admin/includes/file.php:797 wp-admin/includes/file.php:850 -#: wp-admin/includes/update-core.php:1170 -msgid "Could not create directory." -msgstr "Kunne ikke lage mappe." - -#: wp-admin/includes/file.php:638 wp-admin/includes/file.php:749 -msgid "Incompatible Archive." -msgstr "Ikke kompatibelt arkiv." - -#: wp-admin/includes/class-wp-upgrader.php:174 -#: wp-admin/includes/update-core.php:934 -msgid "Enabling Maintenance mode…" -msgstr "Aktiverer vedlikeholdstilstand…" - -#: wp-admin/includes/class-wp-upgrader.php:175 -#: wp-admin/includes/update-core.php:1017 -msgid "Disabling Maintenance mode…" -msgstr "Deaktiverer vedlikeholdstilstand…" - -#: wp-admin/includes/class-plugin-upgrader.php:50 -msgid "The plugin is at the latest version." -msgstr "Denne utvidelsen er oppdatert til nyeste versjon." - -#: wp-admin/includes/class-core-upgrader.php:33 -#: wp-admin/includes/class-plugin-upgrader.php:52 -#: wp-admin/includes/class-theme-upgrader.php:51 -msgid "Downloading update from %s…" -msgstr "Laster ned oppdatering fra %s…" - -#: wp-admin/includes/class-core-upgrader.php:34 -#: wp-admin/includes/class-language-pack-upgrader.php:120 -#: wp-admin/includes/class-plugin-upgrader.php:53 -#: wp-admin/includes/class-theme-upgrader.php:52 -msgid "Unpacking the update…" -msgstr "Pakker ut oppdateringen…" - -#: wp-admin/includes/class-plugin-upgrader.php:54 -msgid "Removing the old version of the plugin…" -msgstr "Fjerner den gamle versjonen av utvidelsen…" - -#: wp-admin/includes/class-plugin-upgrader.php:55 -msgid "Could not remove the old plugin." -msgstr "Kunne ikke fjerne den gamle utvidelsen." - -#: wp-admin/includes/class-plugin-upgrader.php:68 -#: wp-admin/includes/class-theme-upgrader.php:66 -msgid "Install package not available." -msgstr "Installeringspakke ikke tilgjengelig." - -#: wp-admin/includes/class-plugin-upgrader.php:69 -#: wp-admin/includes/class-theme-upgrader.php:67 -msgid "Downloading install package from %s…" -msgstr "Laster ned installasjonspakke fra (%s)…" - -#: wp-admin/includes/class-plugin-upgrader.php:70 -#: wp-admin/includes/class-theme-upgrader.php:68 -msgid "Unpacking the package…" -msgstr "Pakker ut pakken…" - -#: wp-admin/includes/class-plugin-upgrader.php:71 -msgid "Installing the plugin…" -msgstr "Installerer utvidelsen…" - -#: wp-admin/includes/class-plugin-upgrader.php:73 -msgid "Plugin install failed." -msgstr "Installering av utvidelsen feilet." - -#: wp-admin/includes/class-plugin-upgrader.php:74 -msgid "Plugin installed successfully." -msgstr "Utvidelsen ble installert." - -#: wp-admin/includes/class-theme-upgrader.php:49 -msgid "The theme is at the latest version." -msgstr "Dette temaet er nyeste versjon." - -#: wp-admin/includes/class-theme-upgrader.php:53 -msgid "Removing the old version of the theme…" -msgstr "Fjerner den gamle versjonen av temaet…" - -#: wp-admin/includes/class-theme-upgrader.php:54 -msgid "Could not remove the old theme." -msgstr "Kunne ikke fjerne det gamle temaet." - -#: wp-admin/includes/class-theme-upgrader.php:69 -msgid "Installing the theme…" -msgstr "Installerer temaet…" - -#: wp-admin/includes/class-theme-upgrader.php:71 -msgid "Theme install failed." -msgstr "Installer tema feilet." - -#: wp-admin/includes/class-theme-upgrader.php:72 -msgid "Theme installed successfully." -msgstr "Tema installert med suksess." - -#: wp-admin/includes/class-core-upgrader.php:30 -msgid "WordPress is at the latest version." -msgstr "WordPress er nyeste versjon." - -#: wp-admin/includes/class-core-upgrader.php:35 -msgid "Could not copy files." -msgstr "Kunne ikke kopiere filer." - -#: wp-admin/includes/class-plugin-installer-skin.php:57 -#: wp-admin/includes/class-plugin-upgrader-skin.php:52 -msgid "Activate Plugin" -msgstr "Aktiver utvidelse" - -#: wp-admin/includes/class-bulk-plugin-upgrader-skin.php:49 -#: wp-admin/includes/class-plugin-installer-skin.php:71 -#: wp-admin/includes/class-plugin-upgrader-skin.php:53 -msgid "Return to Plugins page" -msgstr "Gå tilbake til siden med utvidelser" - -#: wp-admin/includes/class-plugin-installer-skin.php:41 -msgid "Successfully installed the plugin %s %s." -msgstr "Installerte utvidelsen %s %s." - -#: wp-admin/includes/class-plugin-installer-skin.php:67 -#: wp-admin/includes/class-plugin-installer-skin.php:69 -msgid "Return to Plugin Installer" -msgstr "Gå tilbake til installering av utvidelser" - -#. translators: 1: theme name, 2: version -#: wp-admin/includes/class-theme-upgrader.php:74 -msgid "Successfully installed the theme %1$s %2$s." -msgstr "Suksess: %1$s %2$s temaet er installert." - -#. translators: %s: post title -#: wp-admin/includes/class-wp-posts-list-table.php:1261 -#: wp-admin/includes/class-wp-theme-install-list-table.php:256 -msgid "Preview “%s”" -msgstr "Forhåndsvis «%s»" - -#: wp-admin/includes/class-theme-installer-skin.php:71 -#: wp-admin/includes/class-theme-upgrader-skin.php:61 -#: wp-admin/includes/class-wp-themes-list-table.php:187 -msgid "Activate “%s”" -msgstr "Aktiver «%s»" - -#: wp-admin/includes/class-theme-installer-skin.php:77 -msgid "Return to Theme Installer" -msgstr "Gå tilbake til temainstallasjon" - -#: wp-admin/includes/class-bulk-theme-upgrader-skin.php:49 -#: wp-admin/includes/class-theme-installer-skin.php:79 -#: wp-admin/includes/class-theme-upgrader-skin.php:68 -msgid "Return to Themes page" -msgstr "Gå tilbake til temasiden" - -#: wp-admin/includes/class-file-upload-upgrader.php:60 -#: wp-admin/includes/class-file-upload-upgrader.php:94 -#: wp-admin/includes/class-file-upload-upgrader.php:107 -msgid "Please select a file" -msgstr "Vennligst velg en fil" - -#: wp-admin/includes/file.php:386 -msgid "The uploaded file could not be moved to %s." -msgstr "Filen som ble lastet opp kunne ikke flyttes til %s." - -#: wp-admin/includes/dashboard.php:42 -msgid "Right Now" -msgstr "Akkurat nå" - -#: wp-admin/includes/dashboard.php:1136 -msgid "Other WordPress News" -msgstr "Andre WordPress-nyheter" - -#: wp-admin/includes/dashboard.php:112 -msgid "View all" -msgstr "Vis alle" - -#: wp-admin/includes/dashboard.php:167 -msgid "Configure" -msgstr "Tilpass" - -#: wp-admin/edit-form-comment.php:67 wp-admin/includes/template.php:401 -msgid "Comment" -msgstr "Kommentar" - -#: wp-admin/tools.php:16 wp-admin/tools.php:40 wp-admin/tools.php:51 -msgid "Press This" -msgstr "Skriv om dette" - -#: wp-admin/includes/class-wp-press-this.php:1484 -#: wp-admin/includes/meta-boxes.php:261 wp-admin/includes/meta-boxes.php:262 -msgid "Submit for Review" -msgstr "Send til gjennomgang" - -#: wp-admin/includes/class-wp-comments-list-table.php:560 -#: wp-admin/includes/class-wp-comments-list-table.php:563 -#: wp-admin/includes/dashboard.php:629 -msgid "Approve this comment" -msgstr "Godkjenn denne kommentaren" - -#: wp-admin/includes/class-wp-comments-list-table.php:558 -#: wp-admin/includes/class-wp-comments-list-table.php:564 -#: wp-admin/includes/dashboard.php:630 -msgid "Unapprove this comment" -msgstr "Avslå denne kommentaren" - -#: wp-admin/includes/class-wp-comments-list-table.php:590 -#: wp-admin/includes/dashboard.php:632 -msgid "Reply to this comment" -msgstr "Svar på denne kommentaren" - -#: wp-admin/includes/class-wp-comments-list-table.php:568 -#: wp-admin/includes/dashboard.php:633 -msgid "Mark this comment as spam" -msgstr "Merk denne kommentaren som spam" - -#. translators: mark as spam link -#: wp-admin/includes/class-wp-comments-list-table.php:568 -#: wp-admin/includes/dashboard.php:633 -msgctxt "verb" -msgid "Spam" -msgstr "Spam" - -#: wp-admin/includes/class-wp-comments-list-table.php:580 -#: wp-admin/includes/dashboard.php:638 -msgid "Move this comment to the Trash" -msgstr "Flytt denne kommentaren til papirkurven" - -#. translators: 1: comment author, 2: post link, 3: notification if the comment -#. is pending -#: wp-admin/includes/dashboard.php:687 -msgid "From %1$s on %2$s %3$s" -msgstr "Fra %1$s til %2$s %3$s" - -#: wp-admin/includes/dashboard.php:690 wp-admin/includes/dashboard.php:697 -#: wp-admin/includes/dashboard.php:727 wp-admin/includes/dashboard.php:734 -msgid "[Pending]" -msgstr "[Ventende]" - -#. translators: 1: type of comment, 2: notification if the comment is pending -#: wp-admin/includes/dashboard.php:732 -msgctxt "dashboard" -msgid "%1$s %2$s" -msgstr "%1$s %2$s" - -#: wp-admin/includes/dashboard.php:968 -msgid "Loading…" -msgstr "Laster…" - -#: wp-admin/includes/dashboard.php:968 -msgid "This widget requires JavaScript." -msgstr "Denne widgeten krever JavaScript." - -#: wp-admin/includes/file.php:25 -msgid "Main Index Template" -msgstr "Hovedmal" - -#: wp-admin/includes/file.php:55 -msgid "RTL Stylesheet" -msgstr "RTL stilsett" - -#: wp-admin/includes/file.php:63 -msgid "Popup Comments" -msgstr "Kommentarer i sprettoppvindu" - -#: wp-admin/includes/file.php:29 -msgid "Category Template" -msgstr "Kategorimal" - -#: wp-admin/includes/meta-boxes.php:835 -msgid "Page Template" -msgstr "Sidemal" - -#: wp-admin/includes/file.php:21 -msgid "Search Form" -msgstr "Søkeskjema" - -#: wp-admin/includes/file.php:36 -msgid "Single Post" -msgstr "Enkeltinnlegg" - -#: wp-admin/includes/file.php:22 -msgid "404 Template" -msgstr "404-mal" - -#: wp-admin/includes/file.php:23 -msgid "Links Template" -msgstr "Lenkemal" - -#: wp-admin/includes/file.php:16 -msgid "Theme Functions" -msgstr "Temafunksjoner" - -#: wp-admin/includes/file.php:40 -msgid "Attachment Template" -msgstr "Vedleggsmal" - -#: wp-admin/includes/file.php:41 -msgid "Image Attachment Template" -msgstr "Bilde vedleggsmal" - -#: wp-admin/includes/file.php:42 -msgid "Video Attachment Template" -msgstr "Film vedleggsmal" - -#: wp-admin/includes/file.php:43 -msgid "Audio Attachment Template" -msgstr "Lyd vedleggsmal" - -#: wp-admin/includes/file.php:44 -msgid "Application Attachment Template" -msgstr "Applikasjon vedleggsmal" - -#: wp-admin/includes/file.php:57 -msgid "my-hacks.php (legacy hacks support)" -msgstr "my-hacks.php (støtte for gamle hacks)" - -#: wp-admin/includes/file.php:58 -msgid ".htaccess (for rewrite rules )" -msgstr ".htaccess (for omskrivningsregler)" - -#: wp-admin/includes/file.php:61 -msgid "Comments Template" -msgstr "Kommentarmal" - -#: wp-admin/includes/file.php:62 -msgid "Popup Comments Template" -msgstr "Mal for sprettoppkommentarer" - -#: wp-admin/includes/file.php:296 -msgid "The uploaded file was only partially uploaded." -msgstr "Filen ble bare delvis lastet opp." - -#: wp-admin/includes/file.php:297 -msgid "No file was uploaded." -msgstr "Ingen fil ble lastet opp." - -#: wp-admin/includes/file.php:299 -msgid "Missing a temporary folder." -msgstr "Mangler en midlertidig mappe." - -#: wp-admin/includes/file.php:300 -msgid "Failed to write file to disk." -msgstr "Klarte ikke å skrive til disken." - -#: wp-admin/includes/file.php:301 -msgid "File upload stopped by extension." -msgstr "Opplasting av fil ble stoppet av utvidelse." - -#: wp-admin/includes/file.php:315 -msgid "Invalid form submission." -msgstr "Ugyldig sending av skjemaet." - -#: wp-admin/includes/file.php:328 wp-admin/includes/import.php:84 -msgid "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." -msgstr "Filen er tom. Vennligst last opp noe mer innholdsrikt. Denne feilen kan også komme av at opplasting er deaktivert i php.ini eller at post_max_size er definert som mindre enn upload_max_filesize i php.ini." - -#: wp-admin/includes/file.php:336 -msgid "Specified file failed upload test." -msgstr "Filen du angav strøk på opplastingstesten." - -#: wp-admin/includes/file.php:494 -msgid "Invalid URL Provided." -msgstr "Ugyldig URL angitt." - -#: wp-admin/includes/file.php:500 -msgid "Could not create Temporary file." -msgstr "Kunne ikke lage midlertidig fil." - -#: wp-admin/includes/file.php:644 wp-admin/includes/file.php:698 -msgid "Could not retrieve file from archive." -msgstr "Kunne ikke hente fil fra arkivet." - -#: wp-admin/includes/file.php:708 -msgid "Could not extract file from archive." -msgstr "Kunne ikke pakke ut fil fra arkivet." - -#: wp-admin/includes/file.php:711 wp-admin/includes/file.php:810 -#: wp-admin/includes/file.php:845 wp-admin/includes/update-core.php:1054 -#: wp-admin/includes/update-core.php:1165 -msgid "Could not copy file." -msgstr "Kunne ikke kopiere fil." - -#: wp-admin/includes/file.php:752 -msgid "Empty archive." -msgstr "Tomt arkiv." - -#: wp-admin/includes/file.php:1153 -msgid "FTP" -msgstr "FTP" - -#: wp-admin/includes/file.php:1155 -msgid "FTPS (SSL)" -msgstr "FTPS (SSL)" - -#: wp-admin/includes/file.php:1157 -msgid "SSH2" -msgstr "SSH2" - -#: wp-admin/includes/file.php:1183 -msgid "Connection Information" -msgstr "Tilkoblingsinformasjon" - -#: wp-admin/includes/file.php:1205 -msgid "Hostname" -msgstr "Servernavn" - -#: wp-admin/includes/file.php:1242 -msgid "Authentication Keys" -msgstr "Autentiseringsnøkler" - -#: wp-admin/includes/file.php:1244 -msgid "Public Key:" -msgstr "Offentlig nøkkel:" - -#: wp-admin/includes/file.php:1248 -msgid "Private Key:" -msgstr "Privat nøkkel:" - -#: wp-admin/includes/file.php:1222 -msgid "Connection Type" -msgstr "Tilkoblingstype" - -#: wp-admin/includes/file.php:1263 -msgid "Proceed" -msgstr "Fortsett" - -#: wp-admin/includes/image-edit.php:26 wp-admin/includes/image-edit.php:756 -msgid "Image data does not exist. Please re-upload the image." -msgstr "Bildedata finnes ikke. Vennligst last opp bilde på nytt." - -#: wp-admin/includes/image-edit.php:185 -msgid "Crop" -msgstr "Klipp" - -#: wp-admin/includes/image-edit.php:191 -msgid "Rotate counter-clockwise" -msgstr "Roter mot klokken" - -#: wp-admin/includes/image-edit.php:192 -msgid "Rotate clockwise" -msgstr "Roter med klokken" - -#: wp-admin/includes/image-edit.php:200 -msgid "Flip vertically" -msgstr "Speilvend vertikalt" - -#: wp-admin/includes/image-edit.php:201 -msgid "Flip horizontally" -msgstr "Speilvend horisontalt" - -#: wp-admin/includes/image-edit.php:49 -msgid "Scale Image" -msgstr "Skaler bilde" - -#: wp-admin/includes/image-edit.php:55 -msgid "Original dimensions %s" -msgstr "Original størrelse %s" - -#: wp-admin/custom-background.php:255 wp-admin/custom-background.php:259 -#: wp-admin/includes/image-edit.php:82 -msgid "Restore Original Image" -msgstr "Gjenopprett originalt bilde" - -#: wp-admin/includes/image-edit.php:84 -msgid "Discard any changes and restore the original image." -msgstr "Avbryt endringer og tilbakestill det originale bildet." - -#: wp-admin/includes/image-edit.php:87 -msgid "Previously edited copies of the image will not be deleted." -msgstr "Tidligere redigerte kopier av bildet vil ikke bli slettet." - -#: wp-admin/includes/image-edit.php:91 -msgid "Restore image" -msgstr "Gjenopprett bilde" - -#: wp-admin/includes/image-edit.php:101 -msgid "Image Crop" -msgstr "Utklipp av bilde" - -#: wp-admin/includes/image-edit.php:107 -msgid "Crop Aspect Ratio" -msgstr "Klipp proporsjon" - -#: wp-admin/includes/image-edit.php:110 -msgid "Crop Selection" -msgstr "Utklippsvalg" - -#: wp-admin/includes/image-edit.php:116 -msgid "Aspect ratio:" -msgstr "Proporsjon:" - -#: wp-admin/includes/image-edit.php:129 -msgid "Selection:" -msgstr "Valgt:" - -#: wp-admin/includes/image-edit.php:149 -msgid "Thumbnail Settings" -msgstr "Innstillinger for miniatyrbilde" - -#: wp-admin/includes/image-edit.php:156 -msgid "Current thumbnail" -msgstr "Gjeldende miniatyrbilde" - -#: wp-admin/includes/image-edit.php:161 -msgid "Apply changes to:" -msgstr "Lagre endringer på:" - -#: wp-admin/includes/image-edit.php:165 -msgid "All image sizes" -msgstr "Alle bildestørrelser" - -#: wp-admin/includes/image-edit.php:173 -msgid "All sizes except thumbnail" -msgstr "Alle størrelser unntatt miniatyrbilde" - -#: wp-admin/includes/image-edit.php:631 -msgid "Cannot load image metadata." -msgstr "Kan ikke laste bilde metadata." - -#: wp-admin/includes/image-edit.php:687 -msgid "Cannot save image metadata." -msgstr "Kan ikke lagre metadata for bilde." - -#: wp-admin/includes/image-edit.php:692 -msgid "Image metadata is inconsistent." -msgstr "Metadata for bilde er ikke konsekvent." - -#: wp-admin/includes/image-edit.php:694 -msgid "Image restored successfully." -msgstr "Bilde gjenopprettet." - -#: wp-admin/includes/image-edit.php:717 -msgid "Unable to create new image." -msgstr "Kunne ikke lage nytt bilde." - -#: wp-admin/includes/image-edit.php:740 -msgid "Error while saving the scaled image. Please reload the page and try again." -msgstr "En feil oppstod under lagring av skalert bilde. Vennligst last siden på nytt og prøv igjen." - -#: wp-admin/includes/image-edit.php:748 -msgid "Nothing to save, the image has not changed." -msgstr "Bildet har ikke blitt endret. Ingenting å lagre." - -#: wp-admin/includes/image-edit.php:791 -msgid "Unable to save the image." -msgstr "Kunne ikke lagre bildet." - -#: wp-admin/includes/image-edit.php:904 -msgid "Image saved" -msgstr "Bilde lagret" - -#: wp-admin/includes/media.php:18 -msgid "From Computer" -msgstr "Fra datamaskin" - -#: wp-admin/includes/media.php:19 -msgid "From URL" -msgstr "Fra URL" - -#: wp-admin/includes/media.php:20 -msgid "Gallery" -msgstr "Galleri" - -#: wp-admin/includes/media.php:62 -msgid "Gallery (%s)" -msgstr "Galleri (%s)" - -#: wp-admin/includes/media.php:455 -msgid "Uploads" -msgstr "Opplastinger" - -#: wp-admin/includes/media.php:455 wp-admin/includes/template.php:1588 -#: wp-admin/install.php:80 wp-admin/maint/repair.php:26 -#: wp-admin/setup-config.php:104 wp-admin/upgrade.php:71 -msgid "WordPress" -msgstr "WordPress" - -#: wp-admin/includes/media.php:1072 wp-admin/includes/media.php:1229 -msgid "File URL" -msgstr "URL til fil" - -#: wp-admin/includes/media.php:1274 wp-admin/includes/media.php:2581 -msgid "Alt text for the image, e.g. “The Mona Lisa”" -msgstr "Alternativ tekst for bildet, f.eks. «Skrik av Edvard Munch»" - -#: wp-admin/includes/media.php:1151 -msgid "Empty Title filled from filename." -msgstr "Tom tittel utfylt fra filnavn." - -#: wp-admin/includes/class-wp-posts-list-table.php:1521 -#: wp-admin/includes/media.php:1225 wp-admin/includes/media.php:2237 -#: wp-admin/includes/meta-boxes.php:853 wp-admin/includes/meta-boxes.php:854 -msgid "Order" -msgstr "Rekkefølge" - -#: wp-admin/includes/media.php:1233 -msgid "Location of the uploaded file." -msgstr "URL til den opplastede filen." - -#: wp-admin/includes/media.php:1464 -msgid "Upload date:" -msgstr "Opplastet dato:" - -#: wp-admin/includes/media.php:1485 wp-admin/includes/media.php:2611 -#: wp-admin/includes/media.php:2617 -msgid "Insert into Post" -msgstr "Sett inn i innlegg" - -#: wp-admin/includes/media.php:2009 -msgid "Add media files from your computer" -msgstr "Legg til mediafiler fra din datamaskin" - -#: wp-admin/includes/media.php:2036 wp-admin/includes/media.php:2247 -#: wp-admin/includes/media.php:2514 -msgid "Save all changes" -msgstr "Lagre alle endringer" - -#: wp-admin/includes/media.php:2222 -msgid "All Tabs:" -msgstr "Alle faner:" - -#: wp-admin/includes/media.php:2226 -msgid "Sort Order:" -msgstr "Sorteringsrekkefølge:" - -#: wp-admin/includes/media.php:2227 wp-admin/includes/media.php:2295 -msgid "Ascending" -msgstr "Stigende" - -#: wp-admin/includes/media.php:2228 wp-admin/includes/media.php:2298 -msgid "Descending" -msgstr "Synkende" - -#: wp-admin/includes/media.php:2259 -msgid "Link thumbnails to:" -msgstr "Lenk miniatyrbilder til:" - -#: wp-admin/includes/media.php:2264 -msgid "Image File" -msgstr "Bildefil" - -#: wp-admin/includes/media.php:2274 -msgid "Order images by:" -msgstr "Sorter bilder etter:" - -#: wp-admin/includes/media.php:2279 -msgid "Menu order" -msgstr "Menyrekkefølge" - -#: wp-admin/includes/media.php:2281 -msgid "Date/Time" -msgstr "Dato/tid" - -#: wp-admin/includes/media.php:2282 -msgid "Random" -msgstr "Tilfeldig" - -#: wp-admin/includes/media.php:2290 -msgid "Order:" -msgstr "Rekkefølge:" - -#: wp-admin/includes/media.php:2305 -msgid "Gallery columns:" -msgstr "Galleri kolonner:" - -#: wp-admin/includes/media.php:2326 -msgid "Update gallery settings" -msgstr "Oppdater galleri innstillinger" - -#: wp-admin/includes/media.php:2410 -msgid "All Types" -msgstr "Alle typer" - -#: wp-admin/includes/media.php:2484 -msgid "Filter »" -msgstr "Filter »" - -#: wp-admin/includes/media.php:2535 -msgid "Image Caption" -msgstr "Undertittel for bilde" - -#: wp-admin/includes/media.php:2600 -msgid "Link Image To:" -msgstr "Lenk bilde til:" - -#: wp-admin/includes/media.php:2605 -msgid "Link to image" -msgstr "Lenke til bilde" - -#: wp-admin/includes/media.php:2574 -msgid "Link text, e.g. “Ransom Demands (PDF)”" -msgstr "Lenketekst, f.eks. «Fjellvettreglene (PDF)»" - -#: wp-admin/includes/meta-boxes.php:53 -msgid "Preview Changes" -msgstr "Forhåndsvis endringer" - -#: wp-admin/export.php:205 wp-admin/export.php:247 -#: wp-admin/includes/meta-boxes.php:77 -msgid "Status:" -msgstr "Status:" - -#: wp-admin/includes/meta-boxes.php:128 -msgid "Visibility:" -msgstr "Synlighet:" - -#: wp-admin/includes/meta-boxes.php:136 wp-admin/includes/meta-boxes.php:159 -#: wp-admin/includes/template.php:1698 -msgid "Password protected" -msgstr "Passordbeskyttet" - -#: wp-admin/includes/meta-boxes.php:157 -msgid "Stick this post to the front page" -msgstr "Gjør innlegget klebrig på forsiden" - -#: wp-admin/includes/meta-boxes.php:177 -msgid "Scheduled for: %1$s" -msgstr "Planlagt for: %1$s" - -#: wp-admin/includes/meta-boxes.php:179 -msgid "Published on: %1$s" -msgstr "Publisert: %1$s" - -#: wp-admin/includes/meta-boxes.php:181 wp-admin/includes/meta-boxes.php:189 -msgid "Publish immediately" -msgstr "Publiser umiddelbart" - -#: wp-admin/includes/meta-boxes.php:183 -msgid "Schedule for: %1$s" -msgstr "Planlegg for: %1$s" - -#: wp-admin/includes/meta-boxes.php:185 -msgid "Publish on: %1$s" -msgstr "Publiser: %1$s" - -#: wp-admin/includes/meta-boxes.php:482 wp-admin/includes/meta-boxes.php:944 -#: wp-admin/includes/nav-menu.php:673 -msgid "Most Used" -msgstr "Mest brukt" - -#: wp-admin/includes/meta-boxes.php:965 wp-admin/includes/meta-boxes.php:967 -msgid "+ Add New Category" -msgstr "+ Legg til ny kategori" - -#: wp-admin/includes/meta-boxes.php:968 -msgid "New category name" -msgstr "Ny kategori navn" - -#: wp-admin/includes/meta-boxes.php:593 -msgid "Already pinged:" -msgstr "Allerede pinget:" - -#: wp-admin/includes/meta-boxes.php:603 -msgid "Send trackbacks to:" -msgstr "Send tilbakesporinger til:" - -#: wp-admin/includes/meta-boxes.php:606 -msgid "Separate multiple URLs with spaces" -msgstr "Skill flere URL-er med mellomrom" - -#: wp-admin/includes/meta-boxes.php:722 -msgid "Show comments" -msgstr "Vis kommentarer" - -#: wp-admin/includes/class-wp-posts-list-table.php:1486 -#: wp-admin/includes/meta-boxes.php:814 wp-admin/includes/meta-boxes.php:815 -msgid "Parent" -msgstr "Forelder" - -#: wp-admin/includes/class-wp-posts-list-table.php:1492 -msgid "Main Page (no parent)" -msgstr "Hovedside (ingen forelder)" - -#: wp-admin/includes/class-wp-posts-list-table.php:1538 -#: wp-admin/includes/meta-boxes.php:846 -msgid "Default Template" -msgstr "Standardmal" - -#: wp-admin/includes/meta-boxes.php:884 -msgid "Visit Link" -msgstr "Gå til lenke" - -#: wp-admin/includes/meta-boxes.php:892 -msgid "Keep this link private" -msgstr "Hold denne lenken privat" - -#: wp-admin/includes/class-wp-links-list-table.php:330 -#: wp-admin/includes/meta-boxes.php:906 -msgid "" -"You are about to delete this link '%s'\n" -" 'Cancel' to stop, 'OK' to delete." -msgstr "" -"Du er i ferd med å slette denne lenken '%s'\n" -" 'Avbryt' for å avbryte, 'OK' for å slette." - -#: wp-admin/includes/meta-boxes.php:989 -msgid "_blank — new window or tab." -msgstr "_blank — nytt vindu eller fane." - -#: wp-admin/includes/meta-boxes.php:992 -msgid "_top — current window or tab, with no frames." -msgstr "_top — gjeldende vindu eller fane, uten rammer." - -#: wp-admin/includes/meta-boxes.php:995 -msgid "_none — same window or tab." -msgstr "_none — samme vindu eller fane." - -#: wp-admin/includes/meta-boxes.php:997 -msgid "Choose the target frame for your link." -msgstr "Velg målramme for lenken din." - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1044 -msgid "rel:" -msgstr "rel:" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1048 wp-admin/includes/meta-boxes.php:1049 -msgid "identity" -msgstr "identitet" - -#: wp-admin/includes/meta-boxes.php:1052 -msgid "another web address of mine" -msgstr "Den andre nettadressen min" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1056 wp-admin/includes/meta-boxes.php:1057 -msgid "friendship" -msgstr "vennskap" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1059 -msgid "contact" -msgstr "kontakt" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1062 -msgid "acquaintance" -msgstr "bekjentskap" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1065 -msgid "friend" -msgstr "venn" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1068 wp-admin/includes/meta-boxes.php:1101 -#: wp-admin/includes/meta-boxes.php:1124 -msgid "none" -msgstr "ingen" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1073 wp-admin/includes/meta-boxes.php:1074 -msgid "physical" -msgstr "fysisk" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1076 -msgid "met" -msgstr "møtt i virkeligheten" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1081 wp-admin/includes/meta-boxes.php:1082 -msgid "professional" -msgstr "profesjonelt" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1084 -msgid "co-worker" -msgstr "medarbeider" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1087 -msgid "colleague" -msgstr "kollega" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1092 wp-admin/includes/meta-boxes.php:1093 -msgid "geographical" -msgstr "geografisk" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1095 -msgid "co-resident" -msgstr "under samme tak" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1098 -msgid "neighbor" -msgstr "nabo" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1106 wp-admin/includes/meta-boxes.php:1107 -msgid "family" -msgstr "familie" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1109 -msgid "child" -msgstr "barn" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1112 -msgid "kin" -msgstr "slektning" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1115 -msgid "parent" -msgstr "forelder" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1118 -msgid "sibling" -msgstr "søsken" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1121 -msgid "spouse" -msgstr "ektefelle" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1129 wp-admin/includes/meta-boxes.php:1130 -msgid "romantic" -msgstr "romantisk" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1132 -msgid "muse" -msgstr "muse" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1135 -msgid "crush" -msgstr "forelsket" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1138 -msgid "date" -msgstr "date" - -#. translators: xfn: http://gmpg.org/xfn/ -#: wp-admin/includes/meta-boxes.php:1141 -msgid "sweetheart" -msgstr "kjæreste" - -#: wp-admin/includes/meta-boxes.php:1147 -msgid "If the link is to a person, you can specify your relationship with them using the above form. If you would like to learn more about the idea check out XFN." -msgstr "Hvis lenken er til en person kan du velge ditt forhold til dem med skjemaet over. Hvis du vil lære mer om denne ideen kan du ta en titt på XFN." - -#: wp-admin/includes/meta-boxes.php:1162 -msgid "Image Address" -msgstr "Bildeadresse" - -#: wp-admin/includes/meta-boxes.php:1166 -msgid "RSS Address" -msgstr "RSS-adresse" - -#: wp-admin/includes/meta-boxes.php:1170 -msgid "Notes" -msgstr "Notater" - -#: wp-admin/includes/class-wp-links-list-table.php:133 -#: wp-admin/includes/meta-boxes.php:1174 -msgid "Rating" -msgstr "Vurdering" - -#: wp-admin/includes/meta-boxes.php:1183 -msgid "(Leave at 0 for no rating.)" -msgstr "(Velg 0 for ingen vurdering.)" - -#: wp-admin/includes/plugin-install.php:218 -msgid "Popular tags" -msgstr "Populære stikkord" - -#: wp-admin/includes/plugin-install.php:219 -msgid "You may also browse based on the most popular tags in the Plugin Directory:" -msgstr "Du kan også lete basert på de mest populære stikkordene i utvidelseskatalogen på WordPress.org:" - -#: wp-admin/includes/plugin-install.php:265 -#: wp-admin/includes/plugin-install.php:266 -#: wp-admin/includes/plugin-install.php:268 -msgid "Search Plugins" -msgstr "Søk etter utvidelser" - -#: wp-admin/includes/plugin-install.php:279 -msgid "If you have a plugin in a .zip format, you may install it by uploading it here." -msgstr "Hvis du har en utvidelse i .zip-format kan du installere den ved å laste opp her." - -#: wp-admin/includes/plugin-install.php:282 -msgid "Plugin zip file" -msgstr "Zip-fil med utvidelse" - -#: wp-admin/includes/class-wp-plugin-install-list-table.php:238 -msgid "No plugins match your request." -msgstr "Ingen utvidelser tilfredsstiller din forespørsel." - -#: wp-admin/includes/plugin-install.php:579 -msgid "(based on %s rating)" -msgid_plural "(based on %s ratings)" -msgstr[0] "(basert på %s vurdering)" -msgstr[1] "(basert på %s vurderinger)" - -#: wp-admin/includes/plugin-install.php:489 wp-admin/update.php:123 -msgid "Plugin Install" -msgstr "Installer utvidelser" - -#: wp-admin/includes/plugin-install.php:665 -msgid "Install Update Now" -msgstr "Installer oppdatering nå" - -#. translators: %s: Plugin version -#: wp-admin/includes/plugin-install.php:670 -msgid "Newer Version (%s) Installed" -msgstr "Nyere versjon (%s) installert" - -#: wp-admin/includes/plugin-install.php:673 -msgid "Latest Version Installed" -msgstr "Siste versjon installert" - -#: wp-admin/includes/class-wp-plugin-install-list-table.php:563 -#: wp-admin/includes/plugin-install.php:544 -msgid "Last Updated:" -msgstr "Sist oppdatert:" - -#: wp-admin/includes/plugin-install.php:552 -msgid "Requires WordPress Version:" -msgstr "Krever WordPress versjon" - -#. translators: %s: WordPress version -#: wp-admin/includes/plugin-install.php:555 -msgid "%s or higher" -msgstr "%s eller høyere" - -#: wp-admin/includes/plugin-install.php:559 -msgid "Compatible up to:" -msgstr "Kompatibel opp til:" - -#: wp-admin/includes/plugin-install.php:569 -msgid "WordPress.org Plugin Page »" -msgstr "WordPress.org utvidelsesside »" - -#: wp-admin/includes/plugin-install.php:577 -msgid "Average Rating" -msgstr "Gjennomsnittlig vurdering" - -#: wp-admin/includes/plugin-install.php:634 -msgid "Warning: This plugin has not been tested with your current version of WordPress." -msgstr "Advarsel: Denne utvidelsen har ikke blitt testet med din versjon av WordPress." - -#: wp-admin/includes/plugin-install.php:636 -msgid "Warning: This plugin has not been marked as compatible with your version of WordPress." -msgstr "Advarsel: Denne utvidelsen er ikke merket som kompatibel med din versjon av WordPress." - -#: wp-admin/includes/plugin.php:623 -msgid "The plugin generated unexpected output." -msgstr "Utvidelsen produserte et uventet resultat." - -#: wp-admin/includes/plugin.php:758 -msgid "One of the plugins is invalid." -msgstr "En av utvidelsene er ugyldig." - -#: wp-admin/includes/plugin.php:897 -msgid "Could not fully remove the plugin(s) %s." -msgstr "Kunne ikke fjerne utvidelsen(e) %s helt." - -#: wp-admin/includes/plugin.php:952 -msgid "Invalid plugin path." -msgstr "Ugyldig sti til utvidelsen." - -#: wp-admin/includes/plugin.php:954 -msgid "Plugin file does not exist." -msgstr "Filen med utvidelsen finnes ikke." - -#: wp-admin/includes/plugin.php:958 -msgid "The plugin does not have a valid header." -msgstr "Denne utvidelsen har ikke en gyldig beskrivelse." - -#: wp-admin/includes/post.php:33 wp-admin/includes/post.php:71 -msgid "Sorry, you are not allowed to edit pages as this user." -msgstr "Beklager, du har ikke lov til å redigere sider som denne brukeren." - -#: wp-admin/includes/post.php:35 wp-admin/includes/post.php:73 -msgid "Sorry, you are not allowed to edit posts as this user." -msgstr "Beklager, du har ikke lov til å redigere innlegg som denne brukeren." - -#: wp-admin/includes/post.php:605 -msgid "Auto Draft" -msgstr "Automatisk kladd" - -#: wp-admin/includes/post.php:1318 wp-admin/includes/post.php:1341 -msgid "Permalink:" -msgstr "Permalenke:" - -#: wp-admin/includes/post.php:1329 -msgid "Change Permalinks" -msgstr "Endre permalenker" - -#. translators: site tagline -#: wp-admin/includes/schema.php:398 -msgid "Just another WordPress site" -msgstr "Bare enda et WordPress-nettsted" - -#. translators: site tagline -#: wp-admin/includes/schema.php:530 -msgid "Just another %s site" -msgstr "Bare enda et %s-nettsted" - -#. translators: user role -#: wp-admin/includes/schema.php:636 -msgctxt "User role" -msgid "Administrator" -msgstr "Administrator" - -#. translators: user role -#: wp-admin/includes/schema.php:638 -msgctxt "User role" -msgid "Editor" -msgstr "Redaktør" - -#. translators: user role -#: wp-admin/includes/schema.php:640 -msgctxt "User role" -msgid "Author" -msgstr "Forfatter" - -#. translators: user role -#: wp-admin/includes/schema.php:642 -msgctxt "User role" -msgid "Contributor" -msgstr "Bidragsyter" - -#. translators: user role -#: wp-admin/includes/schema.php:644 -msgctxt "User role" -msgid "Subscriber" -msgstr "Abonnent" - -#: wp-admin/includes/schema.php:1082 -msgid "Warning! Wildcard DNS may not be configured correctly!" -msgstr "Advarsel! Wildcard DNS kan være feilkonfigurert!" - -#: wp-admin/includes/class-wp-posts-list-table.php:1371 -#: wp-admin/includes/class-wp-terms-list-table.php:592 -msgid "Quick Edit" -msgstr "Hurtigredigering" - -#: wp-admin/includes/class-wp-comments-list-table.php:588 -#: wp-admin/includes/class-wp-posts-list-table.php:1220 -#: wp-admin/includes/class-wp-terms-list-table.php:449 -msgid "Quick Edit" -msgstr "Hurtigredigering" - -#. translators: manage posts column name -#: wp-admin/includes/class-wp-posts-list-table.php:533 -msgctxt "column name" -msgid "Title" -msgstr "Tittel" - -#. translators: column name -#: wp-admin/includes/class-wp-media-list-table.php:278 -msgctxt "column name" -msgid "File" -msgstr "Fil" - -#. translators: column name -#: wp-admin/includes/class-wp-media-list-table.php:313 -msgctxt "column name" +#: wp-admin/custom-header.php:804 +msgid "Choose the part of the image you want to use as your header." +msgstr "Velg den delen av bildet du ønsker å bruke som toppbilde." + +#: wp-admin/custom-header.php:787 wp-admin/custom-header.php:923 +msgid "Image Processing Error" +msgstr "Bildebehandlingsfeil" + +#: wp-admin/custom-header.php:473 +msgid "Header updated. Visit your site to see how it looks." +msgstr "Sidetopp oppdatert. Besøk nettstedet ditt for å se hvordan det ser ut." + +#: wp-admin/custom-header.php:456 wp-admin/includes/theme.php:252 +msgid "Custom Header" +msgstr "Egendefinert sidetopp" + +#: wp-admin/includes/template.php:1948 wp-admin/nav-menus.php:657 +#: wp-admin/options.php:300 +msgid "Save Changes" +msgstr "Lagre endringene" + +#: wp-admin/custom-background.php:324 wp-admin/custom-header.php:579 +#: wp-admin/includes/class-wp-theme-install-list-table.php:63 +#: wp-admin/includes/media.php:1951 wp-admin/includes/media.php:1953 +msgid "Upload" +msgstr "Last opp" + +#: wp-admin/custom-background.php:320 wp-admin/custom-header.php:575 +msgid "Choose an image from your computer:" +msgstr "Velg et bilde fra maskinen din:" + +#: wp-admin/custom-background.php:242 +msgid "Background updated. Visit your site to see how it looks." +msgstr "Bakgrunn oppdatert. Besøk nettstedet ditt for å se hvordan det ser ut." + +#: wp-admin/custom-background.php:225 wp-admin/includes/theme.php:250 +msgid "Custom Background" +msgstr "Egendefinert bakgrunn" + +#: wp-admin/comment.php:329 +msgid "Unknown action." +msgstr "Ukjent handling" + +#: wp-admin/comment.php:127 +msgid "Approve Comment" +msgstr "Godkjenn kommentar" + +#: wp-admin/comment.php:126 +msgid "You are about to approve the following comment:" +msgstr "Du er i ferd med å godkjenne følgende kommentar:" + +#: wp-admin/comment.php:123 +msgid "Permanently Delete Comment" +msgstr "Slett kommentar permanent" + +#: wp-admin/comment.php:122 +msgid "You are about to delete the following comment:" +msgstr "Du er i ferd med å slette følgende kommentar:" + +#: wp-admin/comment.php:118 +msgid "You are about to move the following comment to the Trash:" +msgstr "Du er i ferd med å flytte følgende kommentar til papirkurven:" + +#: wp-admin/comment.php:114 +msgid "You are about to mark the following comment as spam:" +msgstr "Du er i ferd med å merke følgende kommentar som spam:" + +#: wp-admin/comment.php:67 +msgid "This comment is in the Trash. Please move it out of the Trash if you want to edit it." +msgstr "Denne kommentaren ligger i papirkurven. Vennligst flytt den ut hvis du vil endre den." + +#: wp-admin/comment.php:257 wp-admin/edit-comments.php:229 +#: wp-admin/includes/comment.php:49 +msgid "Sorry, you are not allowed to edit comments on this post." +msgstr "Beklager, du har ikke lov til å redigere kommentarene til dette innlegget." + +#: wp-admin/comment.php:61 wp-admin/comment.php:255 +#: wp-admin/includes/post.php:1561 +msgid "Go back" +msgstr "Gå tilbake" + +#: wp-admin/comment.php:39 wp-admin/edit-form-comment.php:16 +#: wp-admin/includes/template.php:396 +msgid "Edit Comment" +msgstr "Rediger kommentar" + +#: wp-admin/admin.php:285 wp-admin/import.php:18 wp-admin/menu.php:241 +msgid "Import" +msgstr "Importer" + +#: wp-admin/admin.php:228 +msgid "Cannot load %s." +msgstr "Kan ikke laste %s." + +#: wp-admin/admin.php:225 +msgid "Invalid plugin page" +msgstr "Ugyldig utvidelsesside" + +#: wp-admin/includes/ajax-actions.php:1785 +#: wp-admin/includes/class-wp-posts-list-table.php:1000 +#: wp-admin/includes/class-wp-posts-list-table.php:1633 +#: wp-admin/includes/meta-boxes.php:88 wp-admin/includes/meta-boxes.php:112 +#: wp-admin/includes/template.php:1712 +msgid "Scheduled" +msgstr "Planlagte" + +#: wp-admin/edit-form-comment.php:76 wp-admin/includes/ajax-actions.php:1773 +#: wp-admin/includes/class-wp-posts-list-table.php:1626 +msgid "Status" +msgstr "Status" + +#: wp-admin/includes/ajax-actions.php:1773 +#: wp-admin/includes/class-wp-posts-list-table.php:577 +#: wp-admin/includes/class-wp-posts-list-table.php:1414 msgid "Date" msgstr "Dato" -#: wp-admin/includes/class-wp-comments-list-table.php:398 -#: wp-admin/includes/class-wp-post-comments-list-table.php:28 -msgctxt "column name" -msgid "Comment" -msgstr "Kommentar" +#: wp-admin/includes/ajax-actions.php:1727 +#: wp-admin/includes/ajax-actions.php:1732 +#: wp-admin/includes/edit-tag-messages.php:18 +msgid "Item not updated." +msgstr "Saken ble ikke oppdatert." -#: wp-admin/includes/class-wp-links-list-table.php:131 -msgid "Relationship" -msgstr "Forhold" +#: wp-admin/includes/ajax-actions.php:1621 +msgid "Saving is disabled: %s is currently editing this post." +msgstr "Lagring er deaktivert: %s redigerer dette innlegget nå." -#: wp-admin/includes/class-wp-links-list-table.php:132 -msgid "Visible" -msgstr "Synlig" +#: wp-admin/includes/ajax-actions.php:1621 +msgid "Saving is disabled: %s is currently editing this page." +msgstr "Lagring er deaktivert: %s redigerer denne siden nå." -#: wp-admin/includes/class-wp-posts-list-table.php:1371 -msgid "Bulk Edit" -msgstr "Masserediger" - -#: wp-admin/includes/class-wp-posts-list-table.php:1418 -#: wp-admin/includes/class-wp-posts-list-table.php:1498 -#: wp-admin/includes/class-wp-posts-list-table.php:1534 -#: wp-admin/includes/class-wp-posts-list-table.php:1572 -#: wp-admin/includes/class-wp-posts-list-table.php:1581 -#: wp-admin/includes/class-wp-posts-list-table.php:1613 -#: wp-admin/includes/class-wp-posts-list-table.php:1634 -#: wp-admin/includes/class-wp-posts-list-table.php:1662 -msgid "— No Change —" -msgstr "— Ingen endring —" - -#. translators: Between password field and private checkbox on post quick edit -#. interface -#: wp-admin/includes/class-wp-posts-list-table.php:1444 -msgid "–OR–" -msgstr "–ELLER–" - -#: wp-admin/includes/class-wp-posts-list-table.php:1573 -#: wp-admin/includes/class-wp-posts-list-table.php:1582 -msgid "Allow" -msgstr "Tillat" - -#: wp-admin/includes/class-wp-posts-list-table.php:1574 -#: wp-admin/includes/class-wp-posts-list-table.php:1583 -msgid "Do not allow" -msgstr "Ikke tillat" - -#: wp-admin/includes/class-wp-posts-list-table.php:1595 -msgid "Allow Comments" -msgstr "Tillat kommentarer" - -#: wp-admin/includes/class-wp-posts-list-table.php:1600 -msgid "Allow Pings" -msgstr "Tillat ping" - -#: wp-admin/includes/class-wp-posts-list-table.php:1632 -#: wp-admin/includes/class-wp-posts-list-table.php:1635 -#: wp-admin/includes/template.php:1706 -msgid "Sticky" -msgstr "Klebrig" - -#: wp-admin/includes/class-wp-posts-list-table.php:1636 -msgid "Not Sticky" -msgstr "Ikke klebrig" - -#: wp-admin/includes/class-wp-posts-list-table.php:1644 -msgid "Make this post sticky" -msgstr "Gjør dette innlegget klebrig" - -#: wp-admin/includes/class-wp-posts-list-table.php:982 -msgid "Missed schedule" -msgstr "Mistet planlegging" - -#: wp-admin/includes/class-wp-posts-list-table.php:987 -msgid "Last Modified" -msgstr "Sist endret" - -#: wp-admin/includes/template.php:396 -msgid "Reply to Comment" -msgstr "Svar på kommentar" - -#: wp-admin/includes/template.php:429 -msgid "Submit Reply" -msgstr "Send svar" - -#: wp-admin/includes/template.php:465 -msgid "Comment by %s moved to the trash." -msgstr "Kommentar av %s flyttet til papirkurven." - -#: wp-admin/includes/template.php:468 -msgid "Comment by %s marked as spam." -msgstr "Kommentar av %s merket som spam." - -#: wp-admin/includes/template.php:488 wp-admin/includes/template.php:503 -#: wp-admin/includes/template.php:567 wp-admin/includes/template.php:628 -msgid "Value" -msgstr "Verdi" - -#: wp-admin/includes/template.php:557 -msgid "Key" -msgstr "Nøkkel" - -#: wp-admin/includes/template.php:623 -msgid "Add New Custom Field:" -msgstr "Legg til nytt tilpasset felt:" - -#: wp-admin/includes/template.php:649 -msgid "Enter new" -msgstr "Skriv ny" - -#: wp-admin/includes/template.php:660 -msgid "Add Custom Field" -msgstr "Legg til tilpasset felt" - -#: wp-admin/includes/template.php:858 -msgid "Before you can upload your import file, you will need to fix the following error:" -msgstr "Før du kan laste opp din importfil må du rette følgende feil:" - -#: wp-admin/includes/template.php:864 -msgid "Choose a file from your computer:" -msgstr "Velg en fil fra maskinen din:" - -#: wp-admin/includes/template.php:864 -msgid "Maximum size: %s" -msgstr "Maksstørrelse: %s" - -#: wp-admin/includes/template.php:869 -msgid "Upload file and import" -msgstr "Last opp fil og importer" - -#: wp-admin/update.php:231 -msgid "Install Themes" -msgstr "Installer temaer" - -#: wp-admin/themes.php:67 -msgid "Manage Themes" -msgstr "Håndter temaer" - -#: wp-admin/includes/class-wp-screen.php:918 -msgid "Enable accessibility mode" -msgstr "Aktiver tilgjengelighetstilstand." - -#: wp-admin/includes/class-wp-screen.php:918 -msgid "Disable accessibility mode" -msgstr "Deaktiver tilgjengelighetstilstand." - -#: wp-admin/includes/media.php:2442 wp-admin/includes/nav-menu.php:353 -#: wp-admin/includes/nav-menu.php:637 -msgid "«" -msgstr "«" - -#: wp-admin/includes/media.php:2443 wp-admin/includes/nav-menu.php:354 -#: wp-admin/includes/nav-menu.php:638 -msgid "»" -msgstr "»" - -#: wp-admin/includes/ajax-actions.php:758 -msgid "Comment %d does not exist" -msgstr "Kommentar %d finnes ikke." - -#: wp-admin/includes/taxonomy.php:116 -msgid "You did not enter a category name." -msgstr "Du skrev ikke inn navnet på kategorien." - -#: wp-admin/includes/ajax-actions.php:1031 -msgid "Sorry, you must be logged in to reply to a comment." -msgstr "Beklager, du må være innlogget for å kunne svare på en kommentar." - -#: wp-admin/includes/ajax-actions.php:1273 -#: wp-admin/includes/ajax-actions.php:1278 -#: wp-admin/includes/ajax-actions.php:1298 -msgid "Please provide a custom field value." -msgstr "Vennligst angi en verdi for tilpasset felt" - -#. translators: draft saved date format, see https://secure.php.net/date -#: wp-admin/includes/misc.php:885 -msgid "g:i:s a" -msgstr "H:i:s" +#: wp-admin/includes/ajax-actions.php:1620 +msgid "Someone" +msgstr "Noen" #. translators: %s: date and time #: wp-admin/includes/misc.php:887 msgid "Draft saved at %s." msgstr "Kladd lagret %s." -#: wp-admin/includes/ajax-actions.php:1632 -msgid "Someone" -msgstr "Noen" +#. translators: draft saved date format, see https://secure.php.net/date +#: wp-admin/includes/misc.php:885 +msgid "g:i:s a" +msgstr "H:i:s" -#: wp-admin/includes/ajax-actions.php:1633 -msgid "Saving is disabled: %s is currently editing this page." -msgstr "Lagring er deaktivert: %s redigerer denne siden nå." +#: wp-admin/includes/ajax-actions.php:1265 +#: wp-admin/includes/ajax-actions.php:1270 +#: wp-admin/includes/ajax-actions.php:1290 +msgid "Please provide a custom field value." +msgstr "Vennligst angi en verdi for tilpasset felt" -#: wp-admin/includes/ajax-actions.php:1633 -msgid "Saving is disabled: %s is currently editing this post." -msgstr "Lagring er deaktivert: %s redigerer dette innlegget nå." +#: wp-admin/includes/ajax-actions.php:1026 +msgid "Sorry, you must be logged in to reply to a comment." +msgstr "Beklager, du må være innlogget for å kunne svare på en kommentar." -#: wp-admin/includes/ajax-actions.php:1741 -#: wp-admin/includes/ajax-actions.php:1746 -#: wp-admin/includes/edit-tag-messages.php:18 -msgid "Item not updated." -msgstr "Saken ble ikke oppdatert." +#: wp-admin/includes/taxonomy.php:116 +msgid "You did not enter a category name." +msgstr "Du skrev ikke inn navnet på kategorien." -#: wp-admin/includes/ajax-actions.php:1787 -#: wp-admin/includes/class-wp-posts-list-table.php:571 -#: wp-admin/includes/class-wp-posts-list-table.php:1398 -msgid "Date" -msgstr "Dato" +#: wp-admin/includes/ajax-actions.php:755 +msgid "Comment %d does not exist" +msgstr "Kommentar %d finnes ikke." -#: wp-admin/edit-form-comment.php:76 wp-admin/includes/ajax-actions.php:1787 -#: wp-admin/includes/class-wp-posts-list-table.php:1610 -msgid "Status" -msgstr "Status" +#: wp-admin/includes/media.php:2451 wp-admin/includes/nav-menu.php:362 +#: wp-admin/includes/nav-menu.php:647 +msgid "»" +msgstr "»" -#: wp-admin/includes/ajax-actions.php:1799 -#: wp-admin/includes/class-wp-posts-list-table.php:984 -#: wp-admin/includes/class-wp-posts-list-table.php:1617 -#: wp-admin/includes/meta-boxes.php:88 wp-admin/includes/meta-boxes.php:111 -#: wp-admin/includes/template.php:1709 -msgid "Scheduled" -msgstr "Planlagte" - -#: wp-admin/admin.php:225 -msgid "Invalid plugin page" -msgstr "Ugyldig utvidelsesside" - -#: wp-admin/admin.php:228 -msgid "Cannot load %s." -msgstr "Kan ikke laste %s." - -#: wp-admin/admin.php:285 wp-admin/import.php:18 wp-admin/menu.php:241 -msgid "Import" -msgstr "Importer" - -#: wp-admin/comment.php:39 wp-admin/edit-form-comment.php:16 -#: wp-admin/includes/template.php:395 -msgid "Edit Comment" -msgstr "Rediger kommentar" - -#: wp-admin/comment.php:61 wp-admin/comment.php:255 -#: wp-admin/includes/post.php:1527 -msgid "Go back" -msgstr "Gå tilbake" - -#: wp-admin/comment.php:257 wp-admin/edit-comments.php:213 -#: wp-admin/includes/comment.php:49 -msgid "Sorry, you are not allowed to edit comments on this post." -msgstr "Beklager, du har ikke lov til å redigere kommentarene til dette innlegget." - -#: wp-admin/comment.php:67 -msgid "This comment is in the Trash. Please move it out of the Trash if you want to edit it." -msgstr "Denne kommentaren ligger i papirkurven. Vennligst flytt den ut hvis du vil endre den." - -#: wp-admin/comment.php:114 -msgid "You are about to mark the following comment as spam:" -msgstr "Du er i ferd med å merke følgende kommentar som spam:" - -#: wp-admin/comment.php:118 -msgid "You are about to move the following comment to the Trash:" -msgstr "Du er i ferd med å flytte følgende kommentar til papirkurven:" - -#: wp-admin/comment.php:122 -msgid "You are about to delete the following comment:" -msgstr "Du er i ferd med å slette følgende kommentar:" +#: wp-admin/includes/media.php:2450 wp-admin/includes/nav-menu.php:361 +#: wp-admin/includes/nav-menu.php:646 +msgid "«" +msgstr "«" \ No newline at end of file diff --git a/wp/wp-content/languages/admin-network-nb_NO.mo b/wp/wp-content/languages/admin-network-nb_NO.mo index 65ccc787f50194338a3b5e2c197209c22a756f98..e4b0c38bd2ceb03fa64b0f329651469cdbac5072 100644 GIT binary patch delta 6739 zcmY+|2V9ob9>DQ~f(#Lm@v>xzh%5m?G;n~53kPmR5l~)+0})Wu)VH+jq#RF{rIni7 zoMdK>s}&6`%}g7nIX>QNscE6t)wsVu=b_KN=kxjdJ?Fg7IM4r_^Sm#9`>4^L2aT4; z+8mTphXRyx!sFNqPhe}jW40}UN{ywRhB^2emg0T1VqObvEf&*`2~ui28aNIgU>4>C zD`l}$YBTo0BO%JB#!zV#rqo>y$ZM%of6NY7>M48!UGZCNhSzaF)}ah|8>1EXVL2W` z?xkWQl-i1YaTL~}JV1Y*id(3+u_>NzZBxpb$^|;a>*$MjFc%#om5M_v#-f2Scnsyn zx6IG)oBiQ!lyaeeAbMjC$^%Tn7jQO8#$2LwCd+M9;^{bv^5joYp0rQ2QY1x=P?^Y+UrGBjw}mx0zL3o(?%&|fwmXQfO?}maSqB_DMrbJ zf%2fcQ8M)ndUJnuiOM>xLkqstL8(yOf$S9ZIm(pWM0xT$bVtXIT3?hWk3<sh)vjglG49WZsd}xZxDcT;W!MzF4!5zVs94Z zT9nm&J&mklRwv#W^e;upz$YB+jn}Y0KI}~Xhf?X;h0);}l#DoXwyf5L*c5+3AAF4d z=#j3C#$&X5pk&4&L+^io^rPJY3oskqa39KX$59^aT!u}l0aUJ=2PCrvBsJYpQa21G zwc}AnJ{@HsOVJnCqh#bD$`hV2+y6qj&I6PiId@ko0R2%0l8ln!?lvlN!2za)C?lVR zasdOG6}1Uj9_kXtqfZZ|*g+~2$-1h-INXgg*B8xx&rCgl{wVj!MR}k~l+4-|P#H#L zC62@!7+|MVMo)dCF};*x`cyUM;AhA?M73gz$N&c6NBAtB!^}SVg%sFVuYq!u^Y>sV z-bVJla?3LJe=Li1FH~a{lWwo89a)XYGDBJJjZ2gA2h-?7Wcn}K=J7YP{!{u0qf8q0k zc`J%TNGoQrq7UGH9D$QbFFRJ%BFjwufs&D~!;$-|*;Lpu>L8}$eN4g>&VCUmpuAEa zp{(A<%#*wie9;|4OyjXR?XLJI4#H5(9;IJgQ&AT6YO}o=ZA_c`f{LWX!UX$Z1o~kb zdXf5}C>JgntylXjjHJC3ov;Qg@Gvs{Dt?UapNVO-=V3e^#S8cg%0N!!l7Cr^-{$H? zbra{&_8Y5I6t2PPSc@{CPI-EYhGA>klQ04eY=Z|;=KLzkB6ZByYbqIKO;}O-m!s^K zBl$M{Bsb}h6TJ%bF6fBWv{&Ft3}%JNs@;oS@HBQsxAFS?0oaN5bR-F?220SrP*2&@ zD4DHBxy}ZZj2^R5kyLzzGMAT8=K3zOpw(k!Bd9)By>C~c9KRLi_;*o``xxbdK1KTT zNR-dpqhvS}+cK3SQI1Qil2BZDcdK->FnTjHm0WHB6xDmUPy5pEZ+hG>JX0R8^18hY<+=G$$8K&W{ zI2q$elN+u<7u=3ES1S9d$OS(@xsd&Ay$D@VKDXd-496&(g|ap_qBovIIqx#cg>Rs& z@;a0oHlL#(FcjtZN({k8bI5-?DqHDz4KH9DoIY1);7ydd{tzSZ9JatGC>QV}eKNp~ zC~F}TSKu&|Mf-331hbyisrP!0w;%24SU(l>IN&lJ74wu@hC}8PcnxK>cX(d^_FIOs z7Jfoc^kYJOFa|qd272L4lqY@xJL6gm!tXH=AEGlxFVH{llWkNs(lHz@_yi-+bD>Ug zN0h~uhq4w*P%<(P<@lG({vGH`yVmT#h?0?en1=R?^nOprP})7Q721law5L*yz3f;6 z=t0|MiC#>BC>KsfnY(`25(_XLpGO<#)#41=nbrD+M^N_pBMhW}*o%6=Q!$(NA{@i1 z>N_eE=tv>|&*FMy=c$&<^%J~;^5k1kE_57am0v_VZtx%T^M_1)IQ^b0^%JIG4($;r z+i)Ms`Nz-`f50Ny|98xe;f8*~Qj`?WMY+*(490C{`%{djeFbG;t}p3b(Hg^OXQM3A z3JkzyD5>6#UU(Ya@EQhjfAt%cQ1n=(FOZ0`xQ3v-I!iGfYfu*3J$wpdU)DcNim*NH z9oQAGU@r`NMZb_r(L#F~`d~G>;0Ck}qq39A2yD#WXirKL`PjJT?&c!Wj^_NoP*Y)3&gE5Z&RTzmMVhrAVo&1lZ;`@f)93{*(_V}A_#t}Wrzola4rLqO*udQ! z?3e;NWUe2+rT2OBjXK5Y*oppGI28{d>r6#$Vn=Y^A-qWY?q>bN<-WlWi@v|S;d(s10RX9 zXs2RF1~wmM(H`EZzqBr(eD2Cc6EGOF(Ke8ZJC$`9gnLX+VP`IM3nkUjd$ip!opug7 z;~JDH+k|~EVz2I>g7QE!u?v2NSI}vnzTeLnAg4a262}KVHGI=yca*t1h2?l3WdKF* z=nTw7Sv;#ukE5J_8>29AKW{h8G_A&D+GjBuo!-^I6Ou4lhMrGFw$mz<)q5J3W6S}* z^YJi-V2}6o)D)u3;TDvE-oXxNIjH}GVE|5|y$fZE0^ir~gSO~KI}4>hN7|CQ$y8i$ zHcCntqNHqv>6hqA+x?K9`xfX#I~pbBN!T3cn4d30x!&vOh+C1Ftp8?}Ov%n_C_xsp zMwZoa!k#0exXBg{L{YER9fzODbM2DX7p;i#o3{~hIxy@^8N646issF2S3zxEsY zWN6KZ_QV%N2%Dz#Eon(f)Tksr`GNXxL_6vYMRsIENum--OeAEz6%ev)o)A*n z5{rppga^@3=9rb67{j&ysdJ{+N>?MpC)_5hESB)+<7k2frrgmBQ-~5mN*cj_uP=Y{ zuY3zhN#NLEf_H>UMJcQ$^)Vsy_K+AsQx76m*Z1guZWx_?eS^l+I7^%+ zUMAWRQpOT_##G;!D4+Va-YHV`<2vz#>^LdEYLvfG>l+y{)NC2ZHmrYjUN!sbaEH{5 z=6-=TdD}{vOjwCx;&b9_qBYn52BkbhxYyV8-#I^SLuidh# zYP>>@IJ;z2RaKOZn^tA5tU2B0mVM24ac+%j>=O<&srf3!n&6h07?+q3n%FTlIVm+E z*~l#3;GfhsA+BIjc}amwzk;&jX$8gB)X=hVc>@L-cZ+?ZM@*?G%&xFjR))rf_OMR3 zPMT6a*;-abE2D67X<2DyRYgHn>6Eh2IK#dq!b3k!nYF5_vdUU$tuP`=b{a!UJ&k)M z1C6UCo<^5R&PG{j|G(=q7d12LN;B)*ITLdJ?*DOuK4!qg+`s$IPwZ*d2h^;cRO`~T f;bE(+6*c)YdO6hWpPksK=GNSijy0nf%t`q#f@DPf3W|z??90Q)rXrw-xFI0mlA1fXAhf4}FPd*8X|{?9r0J=}B8`Lkb~ zm&G_Dlu}0mm1>TcQR?-Alq$s-EW|Z96 zDb=ExQr$7ds#Ffn303Mg=P!pThw4Y+Ot?~=u^D%7gjwj0dAJ{|us*hm)V9NN>Pg5w z)h^tICov1Fc$!i85r$!G3#A(3KyIFC?Km?^sS$V`+hAHNRr|mbP#*BOg96!5r_ckxN3vRb*BDY| z;qGmz_F*)c_!QQ|Gw6kXN0O&*q1?ce(dA(pN`Ko>GISUl;RSTZYnYCXI~1hD_N}$a z*noNu9E1artg21OL#g*sI`{!y@c~LoUAa5UM0udxCb6>B)RG+@}LfN zjlxvHHthp$wepixGUD1n^U1-lh$-vSSJ(WALAN4m=$bTk<##~*5dOclEHQ9+^s)_UFHS9 zqok%`H=Q~Q%9BTRKrBm@1h03{={P@ZswS$_?spW`SuI)j0D1!W+=qhz?Dqr2|V z*E9xYn&#c=O_d4>8bA%iSj^Q zupv77Qy4;F1P;eN80f^FenQ_Uf-S*xs!SY#%aM1D`VM6P0lk%a2YcZ;bnl~IR9BH% zRGrw1^7$!f#r-H#bYAOFKT*h~p=n>G;&3v`KHY}Xumvk6n*nV?){Xju`3l420opM* zmiio&8(zm&*nFV=G8=?0)F)vRd7NMK0wlx&Kpo1)?xQzM{e1Ls3c$P~^3qh?_$ z9>aF{2QI;Q=0#qyZ=tN-lPK?lODIqDPt$uSYo=ZnpTz*QqCfN296O^sjxp<{=wKSv zN(z#aFVP2Yp+DBi=7yv`7^UO59KG7pQQl-3SRbcj1wM@|19i`APaCNptPi%KeI8!K z11JMoF^c>*rLbX?UQ{(WoBCyp!f~USH(ZP|pt@u96j@N7C;=le8(ZQmjKCczi}WgQ2D@5>5K z!W1M~YC7iQ1(YdEwd>4gqV!XUlFj3LVm6lNox^`Jr48ibJtAM&VqPwXqu|mFH1DcN3-K zAJKw;pu9(dtM!vcqg-E&&Co!}L=C#&^=k6}B8Bg0Xo>SlhpfsyD0BWPM&fl0#zr%B zM^PvP?Ts?0LvcCgAv;pt#}k+{OHW0_Y^7eHJ|AUjtaFsQjC1DD@lp!8PxCgzpKuuV zVj{C}1In8C6`NwzJU!=0=tDgNJ7NKP;YO4U?8jt$2PHGk^YzboE4oo1jG>t0ps<-j zHOgWNU!b2j5t~yVgY|Jf2H-N3%dXYAtc@6S!F;r0DMp}U zDFs>W`|t@T_A`1=kAGG#vTi6H=b+4G6^7wLOvP8x!RKz_Wa=f0^$ov9+4rGK^e>|s zq*(^M8VBMY%#r=?v`qhzISOZT;%``meVEWDcpT-)Ph$|?Kw14RE7(fhAOz*S)zE7v z5v|lmA>U)lf$sP@%ICj9naaA)$!|>N-;aVcRHHX8M^D^}a-%~Sf@jS7ZEQu|ZKb|( z0!C5qkD)jPWwE}9fp`!l)t{gj-a}a<4WDOiaDNp@!HS(wI>W~oY)rFhWcUl zW(wZGJZ!l}{}^40vbx{L57Bk4ey5+sZ0e`i=`W?|_4<#@X&6iUF>HZ1F&e#IBLA`< zyS}8i$0n4Fe2T0OmAQeJ4+FY}sniQM=~VATKkDbO1aDy?X1}a&^gPP$c?av_P4vLq zD5-bathb@ZX71*~4FYNK=Y(~O-tV2UGxdB-!c8~Nz-g|Va z2k+GuVk+0oMmPK`%9Nc#S*-nD*X^rt0QHTSfafsJ0Uc+Wsd{|G-B9u8ijWSTbzvyk5f}^QV!eTs+O|jb%{XQ6qviK@d z+Gk5$Qn!*q1Kf;~(%mR2J8XI%8&U6gRL^~PtWSL~O3Jg*6StV>52Ez|3~$cz9U6%@PZ{_NdF1QF1lMK_k>V$o?dyI<r`~few&Y-q*DmHrEF$_5 zV+dI`zY%iCQdvk0CUy`Hj~Qm+CbDVOah)^$9!fIOe8L@3G|P$!;MT1O7Nlx|lIwQF zctVa&#M;`D{<|yGEXQ$e2vI;i5g#7!QIG|6pBPHy5bPdxl90F6GsM^YTDs~JAb-5p zewlb+6QYWEn}{I(_XwtcUmE03_pRoM6Uc5;p|m9t=O_ml{d~hM;gp6D50Bv#+Hpl7 z);AXWhKI_6mo+4R{>d8i!1FkbkmHnb#y8wmmiq{0{OTJP>RQ{Z{|C*Ri!HVYU#!@;TWM+uQj&h;Ul+=;#6;pK;bzzZf}EBZ zGXne^iPQ@TIofiq9Hm4U(USTNY2c7Ym_szAtuJ;Ynw!@@pd3Lt3+tF|eJH08augHa z5Z#FSocBRLTqR%OXQ&J!1`sb3a`JXBxY{gtKnD@c`DCMCV6>$LHTnG_hkQHB z5pMd5u`)2qI2E|Lv9-!pG2UL495#Avv8~i73mVnr|C@@8xR7SX&7gjdw08{7f23{w zW7=FSk6u@78UM&3=bhxfTPq8u*{ubo)}n&qvawS+Ay+(^UNfN05!c4{5?evB)s~xE zVXv%gUE|cDG_G-6r`Wi**0%A937r$;EcfA$aYm_l|9#9QL}w|yt4~UMd>x4&&aCR*dAM6R#|1M&8EF|O{=-{I{XLLwKS9f diff --git a/wp/wp-content/languages/admin-network-nb_NO.po b/wp/wp-content/languages/admin-network-nb_NO.po index b0eb655a..3064b219 100644 --- a/wp/wp-content/languages/admin-network-nb_NO.po +++ b/wp/wp-content/languages/admin-network-nb_NO.po @@ -1,57 +1,80 @@ -# Translation of Network Admin in Norwegian (Bokmål) -# This file is distributed under the same license as the Network Admin package. +# Translation of WordPress - Development - Administration - Network Admin in Norwegian (Bokmål) +# This file is distributed under the same license as the WordPress - Development - Administration - Network Admin package. msgid "" msgstr "" -"PO-Revision-Date: 2016-08-01 12:49:20+0000\n" +"PO-Revision-Date: 2016-11-10 18:43:04+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: GlotPress/2.1.0-alpha\n" -"Project-Id-Version: Network Admin\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: nb_NO\n" +"Project-Id-Version: WordPress - Development - Administration - Network Admin\n" + +#: wp-admin/network/index.php:51 wp-admin/network/site-info.php:31 +#: wp-admin/network/site-new.php:30 wp-admin/network/site-settings.php:30 +#: wp-admin/network/site-themes.php:30 wp-admin/network/site-users.php:33 +#: wp-admin/network/sites.php:43 wp-admin/network/user-new.php:27 +#: wp-admin/network/users.php:180 +msgid "Support Forums" +msgstr "Supportforum" + +#: wp-admin/network/site-info.php:194 +msgid "Attributes" +msgstr "Attributter" + +#. translators: %s: File size in kilobytes +#: wp-admin/network/settings.php:312 +msgid "%s KB" +msgstr "%s KB" + +#. translators: %s: Default network name +#: wp-admin/includes/network.php:151 +msgid "%s Sites" +msgstr "%s nettsteder" #. translators: %s: theme name -#: wp-admin/includes/class-wp-ms-themes-list-table.php:475 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:476 msgctxt "theme" msgid "Delete %s" msgstr "Slett %s" -#: wp-admin/network/sites.php:240 +#: wp-admin/network/sites.php:245 msgid "Sorry, you are not allowed to delete that site." msgstr "Beklager, du har ikke lov til å slette det nettstedet." -#: wp-admin/network/themes.php:17 +#: wp-admin/network/themes.php:14 msgid "Sorry, you are not allowed to manage network themes." msgstr "Beklager, du har ikke lov til å håndtere temaer i nettverket." -#: wp-admin/network/themes.php:93 +#: wp-admin/network/themes.php:90 msgid "Sorry, you are not allowed to delete themes for this site." msgstr "Beklager, du har ikke lov til å slette temaer for dette nettstedet." -#: wp-admin/network/site-info.php:18 wp-admin/network/site-settings.php:17 -#: wp-admin/network/site-users.php:17 +#: wp-admin/network/site-info.php:14 wp-admin/network/site-settings.php:14 +#: wp-admin/network/site-users.php:14 msgid "Sorry, you are not allowed to edit this site." msgstr "Beklager, du har ikke lov til å redigere nettstedet." -#: wp-admin/network/site-new.php:20 +#: wp-admin/network/site-new.php:17 msgid "Sorry, you are not allowed to add sites to this network." msgstr "Beklager, du har ikke lov til å legge til nettsteder i dette nettverket." -#: wp-admin/network/site-themes.php:17 +#: wp-admin/network/site-themes.php:14 msgid "Sorry, you are not allowed to manage themes for this site." msgstr "Beklager, du har ikke lov til å håndtere temaer på dette nettstedet." -#: wp-admin/network/settings.php:269 +#: wp-admin/network/settings.php:266 msgid "First Comment Email" msgstr "E-post for første kommentar" -#: wp-admin/network/settings.php:273 +#: wp-admin/network/settings.php:270 msgid "The email address of the first comment author on a new site." msgstr "E-postadressen til den første kommentaren på det nye nettstedet." #. translators: 1: wp-config.php 2: location of wp-config file, 3: translated #. version of "That's all, stop editing! Happy blogging." -#: wp-admin/includes/network.php:409 +#: wp-admin/includes/network.php:419 msgid "Add the following to your %1$s file in %2$s above the line reading %3$s:" msgstr "Legg til disse linjene i din %1$s-fil i %2$s over linjen som sier %3$s:" @@ -59,77 +82,77 @@ msgstr "Legg til disse linjene i din %1$s-fil i %2$s over linje #. is localized. You can check the localized release package or #. https://i18n.svn.wordpress.org//branches//dist/wp-config-sample.php -#: wp-admin/includes/network.php:417 +#: wp-admin/includes/network.php:427 msgid "That’s all, stop editing! Happy blogging." msgstr "That’s all, stop editing! Happy blogging." #. translators: 1: theme name, 2: theme author -#: wp-admin/network/themes.php:141 +#: wp-admin/network/themes.php:138 msgctxt "theme" msgid "%1$s by %2$s" msgstr "%1$s av %2$s" #. translators: %s: edit page url -#: wp-admin/network/user-new.php:83 +#: wp-admin/network/user-new.php:80 msgid "User added. Edit user" msgstr "Bruker lagt til. Rediger bruker" #. translators: 1: wp-config.php -#: wp-admin/includes/network.php:454 +#: wp-admin/includes/network.php:464 msgid "This unique authentication key is also missing from your %s file." msgstr "Denne unike autentiseringsnøkkelen mangler også fra din %s." #. translators: 1: wp-config.php -#: wp-admin/includes/network.php:460 +#: wp-admin/includes/network.php:470 msgid "These unique authentication keys are also missing from your %s file." msgstr "Disse unike autentiseringsnøklene mangler også fra din %s." -#: wp-admin/network/site-new.php:154 +#: wp-admin/network/site-new.php:155 msgctxt "email \"From\" field" msgid "Site Admin" msgstr "Nettstedsadmin" -#: wp-admin/network/site-new.php:204 +#: wp-admin/network/site-new.php:205 msgid "Only lowercase letters (a-z), numbers, and hyphens are allowed." msgstr "Kun små bokstaver (a-z), tall og bindestreker er tillatte." #. translators: 1: site url 2: host name 3. www -#: wp-admin/includes/network.php:227 +#: wp-admin/includes/network.php:237 msgid "We recommend you change your siteurl to %1$s before enabling the network feature. It will still be possible to visit your site using the %3$s prefix with an address like %2$s but any links will not have the %3$s prefix." msgstr "Vi anbefaler at du endrer din siteurl til %1$s før du aktiverer nettverksfunksjonen. Det vil fortsatt være mulig å besøke nettstedet med %3$s-prefikset med en adresse som %2$s, men andre lenker vil ikke ha %3$s-prefikset." #. translators: %s: host name -#: wp-admin/includes/network.php:238 wp-admin/includes/network.php:287 +#: wp-admin/includes/network.php:248 wp-admin/includes/network.php:297 msgid "The internet address of your network will be %s." msgstr "Internettadressen til ditt nettverk vil være %s." #. translators: 1: localhost 2: localhost.localdomain -#: wp-admin/includes/network.php:254 +#: wp-admin/includes/network.php:264 msgid "Because you are using %1$s, the sites in your WordPress network must use sub-directories. Consider using %2$s if you wish to use sub-domains." msgstr "Fordi du bruker %1$s, må nettstedene i ditt WordPress-nettverk bruke undermapper. Vurder å bruke %2$s hvis du vil bruke subdomener." #. translators: 1: wp-config.php 2: .htaccess #. translators: 1: wp-config.php 2: web.config -#: wp-admin/includes/network.php:382 wp-admin/includes/network.php:390 +#: wp-admin/includes/network.php:392 wp-admin/includes/network.php:400 msgid "We recommend you back up your existing %1$s and %2$s files." msgstr "Vi anbefaler at du sikkerhetskopierer dine eksisterende %1$s- og og %2$s-filer." #. translators: 1: wp-config.php -#: wp-admin/includes/network.php:398 +#: wp-admin/includes/network.php:408 msgid "We recommend you back up your existing %s file." msgstr "Vi anbefaler at du sikkerhetskopierer din eksisterende %s-fil." -#: wp-admin/includes/network.php:193 +#: wp-admin/includes/network.php:203 msgid "You cannot change this later." msgstr "Du kan ikke endre dette senere." -#: wp-admin/includes/network.php:192 +#: wp-admin/includes/network.php:202 msgid "Please choose whether you would like sites in your WordPress network to use sub-domains or sub-directories." msgstr "Vennligst velg om du vil at nettstedene i ditt WordPress-nettverk skal bruke subdomener eller undermapper." #. translators: 1: mod_rewrite, 2: mod_rewrite documentation URL, 3: Google #. search for mod_rewrite -#: wp-admin/includes/network.php:181 +#: wp-admin/includes/network.php:191 msgid "If %1$s is disabled, ask your administrator to enable that module, or look at the Apache documentation or elsewhere for help setting it up." msgstr "Hvis %1$s er deaktivert, spør din administrator om å aktivere den modulen, eller se Dokumentasjon for Apache eller andre steder for hjelp til å sette det opp." @@ -139,33 +162,33 @@ msgid "You cannot use port numbers such as %s." msgstr "Du kan ikke bruke port-nummere som %s." #. translators: %s: mod_rewrite -#: wp-admin/includes/network.php:165 +#: wp-admin/includes/network.php:175 msgid "Please make sure the Apache %s module is installed as it will be used at the end of this installation." msgstr "Vennligst forsikre deg om at Apache-modulen %s er installert, siden det vil bli brukt på slutten av installasjonen." #. translators: %s: mod_rewrite -#: wp-admin/includes/network.php:172 +#: wp-admin/includes/network.php:182 msgid "It looks like the Apache %s module is not installed." msgstr "Det ser ut til at Apache-modulen %s ikke er installert." #: wp-admin/includes/class-wp-ms-sites-list-table.php:231 -#: wp-admin/network/site-info.php:180 +#: wp-admin/network/site-info.php:177 msgctxt "site" msgid "Registered" msgstr "Registrert" #: wp-admin/includes/class-wp-ms-sites-list-table.php:230 -#: wp-admin/network/site-info.php:184 +#: wp-admin/network/site-info.php:181 msgid "Last Updated" msgstr "Sist oppdatert" #: wp-admin/includes/class-wp-ms-sites-list-table.php:41 -#: wp-admin/network/site-info.php:190 +#: wp-admin/network/site-info.php:187 msgid "Archived" msgstr "Arkivert" #: wp-admin/includes/class-wp-ms-sites-list-table.php:43 -#: wp-admin/network/site-info.php:192 +#: wp-admin/network/site-info.php:189 msgid "Deleted" msgstr "Slettet" @@ -186,8 +209,8 @@ msgstr "Aldri" msgid "No sites found." msgstr "Ingen nettsteder funnet." -#: wp-admin/includes/class-wp-ms-themes-list-table.php:332 -#: wp-admin/includes/class-wp-ms-themes-list-table.php:424 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:333 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:425 msgid "Enable" msgstr "Aktiver" @@ -196,7 +219,7 @@ msgctxt "user" msgid "Registered" msgstr "Registrert" -#: wp-admin/includes/class-wp-ms-themes-list-table.php:289 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:290 msgctxt "themes" msgid "All (%s)" msgid_plural "All (%s)" @@ -216,51 +239,51 @@ msgstr "Ikke useriøst" #: wp-admin/includes/class-wp-ms-sites-list-table.php:42 #: wp-admin/includes/class-wp-ms-sites-list-table.php:537 -#: wp-admin/network/site-info.php:191 +#: wp-admin/network/site-info.php:188 msgctxt "site" msgid "Spam" msgstr "Useriøst" #: wp-admin/includes/class-wp-ms-sites-list-table.php:44 -#: wp-admin/network/site-info.php:194 +#: wp-admin/network/site-info.php:191 msgid "Mature" msgstr "Støtende" -#: wp-admin/includes/class-wp-ms-themes-list-table.php:233 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:234 msgid "No themes found." msgstr "Ingen temaer funnet." -#: wp-admin/includes/class-wp-ms-themes-list-table.php:235 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:236 msgid "You do not appear to have any themes available at this time." msgstr "Du ser ikke ut til å ha noen temaer tilgjengelige nå." -#: wp-admin/includes/class-wp-ms-themes-list-table.php:246 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:247 msgid "Theme" msgstr "Tema" -#: wp-admin/includes/class-wp-ms-themes-list-table.php:292 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:293 msgid "Enabled (%s)" msgid_plural "Enabled (%s)" msgstr[0] "Aktivert (%s)" msgstr[1] "Aktiverte (%s)" -#: wp-admin/includes/class-wp-ms-themes-list-table.php:295 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:296 msgid "Disabled (%s)" msgid_plural "Disabled (%s)" msgstr[0] "Deaktivert (%s)" msgstr[1] "Deaktiverte (%s)" -#: wp-admin/includes/class-wp-ms-themes-list-table.php:334 -#: wp-admin/includes/class-wp-ms-themes-list-table.php:446 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:335 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:447 msgid "Disable" msgstr "Deaktiver" -#: wp-admin/includes/class-wp-ms-themes-list-table.php:334 -#: wp-admin/includes/class-wp-ms-themes-list-table.php:446 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:335 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:447 msgid "Network Disable" msgstr "Deaktiver for nettverk" -#: wp-admin/includes/class-wp-ms-themes-list-table.php:572 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:573 msgid "Visit Theme Site" msgstr "Besøk temaets nettsted" @@ -280,11 +303,11 @@ msgid_plural "Super Admins (%s)" msgstr[0] "Superadmin (%s)" msgstr[1] "Superadminer (%s)" -#: wp-admin/includes/class-wp-ms-themes-list-table.php:540 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:541 msgid "Broken Theme:" msgstr "Ødelagt tema:" -#: wp-admin/includes/class-wp-ms-themes-list-table.php:301 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:302 msgid "Broken (%s)" msgid_plural "Broken (%s)" msgstr[0] "Ødelagt (%s)" @@ -296,61 +319,61 @@ msgid "%1$s – %2$s" msgstr "%1$s – %2$s" #. translators: %s: theme name -#: wp-admin/includes/class-wp-ms-themes-list-table.php:415 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:416 msgid "Enable %s" msgstr "Aktiver %s" #. translators: %s: theme name -#: wp-admin/includes/class-wp-ms-themes-list-table.php:437 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:438 msgid "Disable %s" msgstr "Deaktiver %s" #. translators: %s: theme name -#: wp-admin/includes/class-wp-ms-themes-list-table.php:418 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:419 msgid "Network Enable %s" msgstr "Aktiver %s i nettverket" #. translators: %s: theme name -#: wp-admin/includes/class-wp-ms-themes-list-table.php:567 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:568 msgid "Visit %s homepage" msgstr "Besøk nettsiden til %s" #. translators: %s: theme name -#: wp-admin/includes/class-wp-ms-themes-list-table.php:440 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:441 msgid "Network Disable %s" msgstr "Deaktiver %s i nettverket" #. translators: %s: theme name -#: wp-admin/includes/class-wp-ms-themes-list-table.php:456 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:457 msgid "Open %s in the Theme Editor" msgstr "Åpne %s i temaredigeringen" -#: wp-admin/network/site-users.php:321 wp-admin/network/user-new.php:120 +#: wp-admin/network/site-users.php:332 wp-admin/network/user-new.php:117 msgid "A password reset link will be sent to the user via email." msgstr "En lenke for å skifte passord vil bli sendt til brukeren med e-post." #. translators: 1: NOBLOGREDIRECT 2: wp-config.php -#: wp-admin/network/settings.php:143 +#: wp-admin/network/settings.php:140 msgid "If registration is disabled, please set %1$s in %2$s to a URL you will redirect visitors to if they visit a non-existent site." msgstr "Hvis registrering er deaktivert, vennligst sett %1$s i %2$s til en URL som du vil vise til besøkere hvis de prøver å nå et nettsted som ikke finnes." -#: wp-admin/network/site-users.php:41 +#: wp-admin/network/site-users.php:38 msgid "Site users list navigation" msgstr "Listenavigasjon for nettstedsbrukere" -#: wp-admin/network/site-users.php:42 +#: wp-admin/network/site-users.php:39 msgid "Site users list" msgstr "Liste med nettstedsbrukere" -#: wp-admin/network/sites.php:50 +#: wp-admin/network/sites.php:47 msgid "Sites list navigation" msgstr "Navigasjon for nettstedsliste" -#: wp-admin/network/sites.php:51 +#: wp-admin/network/sites.php:48 msgid "Sites list" msgstr "Nettstedsliste" -#: wp-admin/network/themes.php:224 +#: wp-admin/network/themes.php:235 msgid "Themes list navigation" msgstr "Navigasjon for temaliste" @@ -359,260 +382,252 @@ msgstr "Navigasjon for temaliste" msgid "You must define the %1$s constant as true in your %2$s file to allow creation of a Network." msgstr "Du må definere konstanten %1$s som true i din %2$s-fil for å tillate opprettelse av nettverk." -#: wp-admin/network/site-new.php:109 +#: wp-admin/network/site-new.php:110 msgid "The domain or path entered conflicts with an existing username." msgstr "Domenen eller stien du skrev inn er i konflikt med et eksisterende brukernavn." -#: wp-admin/network/site-themes.php:37 +#: wp-admin/network/site-themes.php:34 msgid "Filter site themes list" msgstr "Filtrer listen med temaer for nettsteder" -#: wp-admin/network/site-themes.php:38 +#: wp-admin/network/site-themes.php:35 msgid "Site themes list navigation" msgstr "Navigasjon for listen med nettstedstemaer" -#: wp-admin/network/site-themes.php:39 +#: wp-admin/network/site-themes.php:36 msgid "Site themes list" msgstr "Liste med nettstedstemaer" -#: wp-admin/network/site-users.php:40 +#: wp-admin/network/site-users.php:37 msgid "Filter site users list" msgstr "Filtrer listen med nettstedsbrukere" -#: wp-admin/network/sites.php:78 +#: wp-admin/network/sites.php:75 msgid "The requested action is not valid." msgstr "Den forespurte handlingen er ikke gyldig." -#: wp-admin/network/sites.php:70 +#: wp-admin/network/sites.php:67 msgid "You are about to mark the site %s as not mature." msgstr "Du er i ferd med å markere nettstedet %s som passende for alle aldre." -#: wp-admin/network/sites.php:69 +#: wp-admin/network/sites.php:66 msgid "You are about to mark the site %s as mature." msgstr "Du er i ferd med å markere nettstedet %s som passende kun for voksne." -#: wp-admin/network/sites.php:68 +#: wp-admin/network/sites.php:65 msgid "You are about to delete the site %s." msgstr "Du er i ferd med å slette nettstedet %s." -#: wp-admin/network/sites.php:67 +#: wp-admin/network/sites.php:64 msgid "You are about to mark the site %s as spam." msgstr "Du er i ferd med å merke nettstedet %s som søppel." -#: wp-admin/network/sites.php:66 +#: wp-admin/network/sites.php:63 msgid "You are about to unspam the site %s." msgstr "Du er i ferd med å merke nettstedet %s som ikke søppel." -#: wp-admin/network/sites.php:65 +#: wp-admin/network/sites.php:62 msgid "You are about to archive the site %s." msgstr "Du er i ferd med å arkivere nettstedet %s." -#: wp-admin/network/sites.php:64 +#: wp-admin/network/sites.php:61 msgid "You are about to unarchive the site %s." msgstr "Du er i ferd med å hente nettstedet %s fra arkivet." -#: wp-admin/network/sites.php:63 +#: wp-admin/network/sites.php:60 msgid "You are about to deactivate the site %s." msgstr "Du er i ferd med å deaktivere nettstedet %s." -#: wp-admin/network/sites.php:62 +#: wp-admin/network/sites.php:59 msgid "You are about to activate the site %s." msgstr "Du er i ferd med å aktivere nettstedet %s." -#: wp-admin/network/site-info.php:46 wp-admin/network/site-settings.php:43 -#: wp-admin/network/site-themes.php:66 wp-admin/network/site-users.php:59 +#: wp-admin/network/site-info.php:42 wp-admin/network/site-settings.php:40 +#: wp-admin/network/site-themes.php:63 wp-admin/network/site-users.php:56 msgid "The requested site does not exist." msgstr "Nettstedet finnes ikke." -#: wp-admin/network/upgrade.php:32 -msgid "Documentation on Upgrade Network" -msgstr "Dokumentasjon om oppgradering av nettverk" +#: wp-admin/network/upgrade.php:29 +msgid "Documentation on Upgrade Network" +msgstr "Dokumentasjon om oppgradering av nettverk" -#: wp-admin/network/user-new.php:29 wp-admin/network/users.php:171 -msgid "Documentation on Network Users" -msgstr "Dokumentasjon om nettverksbrukere" +#: wp-admin/network/user-new.php:26 wp-admin/network/users.php:179 +msgid "Documentation on Network Users" +msgstr "Dokumentasjon om nettverksbrukere" #: wp-admin/network.php:67 wp-admin/network.php:78 -msgid "Documentation on the Network Screen" -msgstr "Dokumentasjon om nettverksskjermen" +msgid "Documentation on the Network Screen" +msgstr "Dokumentasjon om nettverksskjermen" -#: wp-admin/network/index.php:53 -msgid "Documentation on the Network Admin" -msgstr "Dokumentasjon om nettverksadmin" +#: wp-admin/network/index.php:50 +msgid "Documentation on the Network Admin" +msgstr "Dokumentasjon om nettverksadmin" -#: wp-admin/network/site-info.php:34 wp-admin/network/site-new.php:32 -#: wp-admin/network/site-settings.php:32 wp-admin/network/site-themes.php:32 -#: wp-admin/network/site-users.php:35 wp-admin/network/sites.php:45 -msgid "Documentation on Site Management" -msgstr "Dokumentasjon om nettstedshåndtering" +#: wp-admin/network/site-info.php:30 wp-admin/network/site-new.php:29 +#: wp-admin/network/site-settings.php:29 wp-admin/network/site-themes.php:29 +#: wp-admin/network/site-users.php:32 wp-admin/network/sites.php:42 +msgid "Documentation on Site Management" +msgstr "Dokumentasjon om nettstedshåndtering" #: wp-admin/network.php:66 wp-admin/network.php:77 -msgid "Documentation on Creating a Network" -msgstr "Dokumentasjon om det å lage et nettverk" +msgid "Documentation on Creating a Network" +msgstr "Dokumentasjon om det å lage et nettverk" -#: wp-admin/network/themes.php:218 -msgid "Documentation on Network Themes" -msgstr "Dokumentasjon om nettverkstemaer" +#: wp-admin/network/themes.php:229 +msgid "Documentation on Network Themes" +msgstr "Dokumentasjon om nettverkstemaer" -#: wp-admin/network/settings.php:43 -msgid "Documentation on Network Settings" -msgstr "Dokumentasjon om nettverksinnstillinger" +#: wp-admin/network/settings.php:40 +msgid "Documentation on Network Settings" +msgstr "Dokumentasjon om nettverksinnstillinger" #. translators: 1: site url, 2: server error message -#: wp-admin/network/upgrade.php:80 +#: wp-admin/network/upgrade.php:87 msgid "Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: %2$s" msgstr "Advarsel! Kunne ikke oppdatere %1$s. Tjeneren din kan muligens ikke koble til nettsteder som kjører på den. Feilmelding: %2$s" -#: wp-admin/network/themes.php:269 +#: wp-admin/network/themes.php:280 msgid "%s theme deleted." msgid_plural "%s themes deleted." msgstr[0] "%s tema slettet." msgstr[1] "%s temaer slettet." -#: wp-admin/network/themes.php:134 +#: wp-admin/network/themes.php:131 msgid "You are about to remove the following themes:" msgstr "Du er i ferd med å fjerne følgende temaer:" -#: wp-admin/network/themes.php:133 +#: wp-admin/network/themes.php:130 msgid "These themes may be active on other sites in the network." msgstr "Disse temaene kan være aktive andre steder i nettverket." -#: wp-admin/network/themes.php:149 +#: wp-admin/network/themes.php:146 msgid "Are you sure you wish to delete this theme?" msgstr "Er du sikker på at du vil slette dette temaet?" -#: wp-admin/network/site-themes.php:172 wp-admin/network/themes.php:261 +#: wp-admin/network/site-themes.php:193 wp-admin/network/themes.php:272 msgid "%s theme disabled." msgid_plural "%s themes disabled." msgstr[0] "%s tema deaktivert." msgstr[1] "%s temaer deaktiverte." -#: wp-admin/network/site-themes.php:164 wp-admin/network/themes.php:253 +#: wp-admin/network/site-themes.php:185 wp-admin/network/themes.php:264 msgid "%s theme enabled." msgid_plural "%s themes enabled." msgstr[0] "%s tema aktivert." msgstr[1] "%s temaer aktiverte." -#: wp-admin/network/themes.php:166 +#: wp-admin/network/themes.php:163 msgid "Yes, delete these themes" msgstr "Ja, slett disse temaene" -#: wp-admin/network/themes.php:132 +#: wp-admin/network/themes.php:129 msgid "Delete Themes" msgstr "Slett temaer" -#: wp-admin/network/settings.php:135 +#: wp-admin/network/settings.php:132 msgid "New registrations settings" msgstr "Innstillinger for nye registreringer" -#: wp-admin/network/settings.php:314 +#: wp-admin/network/settings.php:317 msgid "Size in kilobytes" msgstr "Størrelse i kilobyte" -#: wp-admin/network/settings.php:304 +#: wp-admin/network/settings.php:301 msgid "Allowed file types. Separate types by spaces." msgstr "Tillate filtyper. Separer typer med mellomrom." -#: wp-admin/network/settings.php:377 +#: wp-admin/network/settings.php:380 msgid "Enable menus" msgstr "Aktiver menyer" -#: wp-admin/network/site-info.php:200 +#: wp-admin/network/site-info.php:197 msgid "Set site attributes" msgstr "Bestem nettstedsattributter" #. translators: 1: a filename like .htaccess. 2: a file path. -#: wp-admin/includes/network.php:529 wp-admin/includes/network.php:569 +#: wp-admin/includes/network.php:539 wp-admin/includes/network.php:579 msgid "Add the following to your %1$s file in %2$s, replacing other WordPress rules:" msgstr "Legg til følgende i din %1$s-fil i %2$s, som erstatning for andre WordPress-regler:" -#: wp-admin/network/index.php:54 wp-admin/network/site-info.php:35 -#: wp-admin/network/site-new.php:33 wp-admin/network/site-settings.php:33 -#: wp-admin/network/site-themes.php:33 wp-admin/network/site-users.php:36 -#: wp-admin/network/sites.php:46 wp-admin/network/user-new.php:30 -#: wp-admin/network/users.php:172 -msgid "Support Forums" -msgstr "Supportforum" - -#: wp-admin/network/sites.php:103 +#: wp-admin/network/sites.php:100 msgid "Confirm your action" msgstr "Bekreft denne handlingen" -#: wp-admin/network/settings.php:119 +#: wp-admin/network/settings.php:116 msgid "This email address will receive notifications. Registration and support emails will also come from this address." msgstr "Denne e-postadressen vil få varslinger. E-post med registreringer og support vil også komme fra denne adressen." -#: wp-admin/network/users.php:162 +#: wp-admin/network/users.php:170 msgid "Hover over any user on the list to make the edit links appear. The Edit link on the left will take you to their Edit User profile page; the Edit link on the right by any site name goes to an Edit Site screen for that site." msgstr "Hold musen over en bruker i listen for å vise rediger-lenken. Rediger-lenken til venstre vil ta deg til en redigeringsskjerm for det nettstedet." -#: wp-admin/network/index.php:39 +#: wp-admin/network/index.php:36 msgid "To add a new user, click Create a New User." msgstr "For å legge til en ny bruker, klikk Lag ny bruker." -#: wp-admin/network/index.php:40 +#: wp-admin/network/index.php:37 msgid "To add a new site, click Create a New Site." msgstr "For å lage et nytt nettsted, klikk Lag nytt nettsted." -#: wp-admin/network/index.php:42 +#: wp-admin/network/index.php:39 msgid "To search for a user, enter an email address or username. Use a wildcard to search for a partial username, such as user*." msgstr "For å søke etter en bruker, skriv inn en e-postadresse eller et brukernavn. Bruk et jokertegn for å søke etter deler av brukernavn, slik som bruker*." -#: wp-admin/network/index.php:43 +#: wp-admin/network/index.php:40 msgid "To search for a site, enter the path or domain." msgstr "For å søke etter et nettsted, skriv inn stien eller domenet." -#: wp-admin/network/index.php:25 +#: wp-admin/network/index.php:22 msgid "Welcome to your Network Admin. This area of the Administration Screens is used for managing all aspects of your Multisite Network." msgstr "Velkommen til Nettverksadmin. Dette området av administrasjonsområdet brukes for å håndtere alle aspektene ved ditt nettstedsnettverk." -#: wp-admin/network/index.php:26 +#: wp-admin/network/index.php:23 msgid "From here you can:" msgstr "Herifra kan du:" -#: wp-admin/network/index.php:27 +#: wp-admin/network/index.php:24 msgid "Add and manage sites or users" msgstr "Legge til og håndtere nettsteder og brukere" -#: wp-admin/network/index.php:28 +#: wp-admin/network/index.php:25 msgid "Install and activate themes or plugins" msgstr "Installere og aktivere temaer eller utvidelser" -#: wp-admin/network/index.php:29 +#: wp-admin/network/index.php:26 msgid "Update your network" msgstr "Oppdater ditt nettverk" -#: wp-admin/network/index.php:30 +#: wp-admin/network/index.php:27 msgid "Modify global network settings" msgstr "Rediger globale nettverksinnstillinger" -#: wp-admin/network/index.php:38 +#: wp-admin/network/index.php:35 msgid "The Right Now widget on this screen provides current user and site counts on your network." msgstr "Akkurat nå-widgeten på denne skjermen gir deg oppdaterte bruker- og nettstedstall på ditt nettverk." -#: wp-admin/network/index.php:41 +#: wp-admin/network/index.php:38 msgid "To search for a user or site, use the search boxes." msgstr "For å søke etter en bruker eller et nettsted, bruk søkefeltene." -#: wp-admin/network/index.php:47 +#: wp-admin/network/index.php:44 msgid "Quick Tasks" msgstr "Kjappe oppgaver" -#: wp-admin/network/upgrade.php:119 +#: wp-admin/network/upgrade.php:126 msgid "WordPress has been updated! Before we send you on your way, we need to individually upgrade the sites in your network." msgstr "WordPress har blitt oppdatert! Før vi sender deg av gårde, må vi oppgradere alle nettstedene i ditt nettverk." -#: wp-admin/network/menu.php:22 wp-admin/network/upgrade.php:18 -#: wp-admin/network/upgrade.php:42 wp-admin/network/upgrade.php:123 +#: wp-admin/network/menu.php:22 wp-admin/network/upgrade.php:15 +#: wp-admin/network/upgrade.php:39 wp-admin/network/upgrade.php:130 msgid "Upgrade Network" msgstr "Oppgrader nettverk" -#: wp-admin/network/upgrade.php:25 +#: wp-admin/network/upgrade.php:22 msgid "Only use this screen once you have updated to a new version of WordPress through Updates/Available Updates (via the Network Administration navigation menu or the Toolbar). Clicking the Upgrade Network button will step through each site in the network, five at a time, and make sure any database updates are applied." msgstr "Bruk kun denne skjermen når du har oppdatert til en ny versjon av WordPress via Oppdateringer/Tilgjengelige oppdateringer (via nettverksadministrasjonen eller verktøylinjen). Når du klikker på Oppgrader nettverk-knappen, vil vi gå gjennom alle nettstedene i nettverket, fem om gangen, og forsikre oss om at databaseoppdateringer blir utført." #. translators: 1: user login, 2: site url, 3: site name/title -#: wp-admin/network/site-new.php:144 +#: wp-admin/network/site-new.php:145 msgid "" "New site created by %1$s\n" "\n" @@ -628,161 +643,162 @@ msgstr "" msgid "Add the designated lines of code to wp-config.php (just before /*...stop editing...*/) and .htaccess (replacing the existing WordPress rules)." msgstr "Legg til de angitte kodelinjene til wp-config.php (rett før /*…stop editing…*/) og .htaccess (istedenfor de eksisterende WordPress-reglene)." -#: wp-admin/includes/network.php:219 wp-admin/includes/network.php:535 -#: wp-admin/includes/network.php:575 +#: wp-admin/includes/network.php:229 wp-admin/includes/network.php:545 +#: wp-admin/includes/network.php:585 msgid "Subdirectory networks may not be fully compatible with custom wp-content directories." msgstr "Nettverk basert på undermapper kan ha problemer med egendefinerte wp-content-mapper." -#: wp-admin/network/user-new.php:23 +#: wp-admin/network/user-new.php:20 msgid "Add User will set up a new user account on the network and send that person an email with username and password." msgstr "Legg til bruker vil sette opp en ny brukerkonto på nettverket og sende denne personen en e-post med brukernavn og passord." -#: wp-admin/network/user-new.php:52 +#: wp-admin/network/user-new.php:49 msgid "Cannot add user." msgstr "Kan ikke legge til bruker" -#: wp-admin/network/site-users.php:289 wp-admin/network/user-new.php:132 +#: wp-admin/network/site-users.php:300 wp-admin/network/user-new.php:129 msgid "Add User" msgstr "Legg til bruker" -#: wp-admin/network/themes.php:128 +#: wp-admin/network/themes.php:125 msgid "Delete Theme" msgstr "Slett tema" -#: wp-admin/network/themes.php:129 +#: wp-admin/network/themes.php:126 msgid "This theme may be active on other sites in the network." msgstr "Dette temaet kan være aktivt på andre nettsteder i nettverket." -#: wp-admin/network/themes.php:130 +#: wp-admin/network/themes.php:127 msgid "You are about to remove the following theme:" msgstr "Du er i ferd med å fjerne følgende tema:" -#: wp-admin/network/themes.php:151 +#: wp-admin/network/themes.php:148 msgid "Are you sure you wish to delete these themes?" msgstr "Er du sikker på at du vil slette disse temaene?" -#: wp-admin/network/themes.php:164 +#: wp-admin/network/themes.php:161 msgid "Yes, delete this theme" msgstr "Ja, slett dette temaet" -#: wp-admin/network/themes.php:174 +#: wp-admin/network/themes.php:171 msgid "No, return me to the theme list" msgstr "Nei, ta meg tilbake til temalisten" -#: wp-admin/network/themes.php:213 +#: wp-admin/network/themes.php:224 msgid "Themes can be enabled on a site by site basis by the network admin on the Edit Site screen (which has a Themes tab); get there via the Edit action link on the All Sites screen. Only network admins are able to install or edit themes." msgstr "Temaer kan aktiveres på et for hvert enkelt nettsted på nettverket via Rediger nettsted-skjermen (som har en Temaer-fane); du kommer dit via Rediger-lenken på Alle nettsteder-skjermen. Bare nettverksadminer er i stand til å installere eller redigere temaer." -#: wp-admin/network/menu.php:41 wp-admin/network/themes.php:239 +#: wp-admin/network/menu.php:41 wp-admin/network/themes.php:250 msgctxt "theme" msgid "Add New" msgstr "Legg til nytt" -#: wp-admin/network/site-themes.php:162 wp-admin/network/themes.php:251 +#: wp-admin/network/site-themes.php:183 wp-admin/network/themes.php:262 msgid "Theme enabled." msgstr "Tema aktivert." -#: wp-admin/network/site-themes.php:170 wp-admin/network/themes.php:259 +#: wp-admin/network/site-themes.php:191 wp-admin/network/themes.php:270 msgid "Theme disabled." msgstr "Tema deaktivert." -#: wp-admin/network/site-themes.php:176 wp-admin/network/themes.php:273 +#: wp-admin/network/site-themes.php:197 wp-admin/network/themes.php:284 msgid "No theme selected." msgstr "Ikke noe tema er valgt." -#: wp-admin/network/themes.php:275 +#: wp-admin/network/themes.php:286 msgid "You cannot delete a theme while it is active on the main site." msgstr "Du kan ikke slette et tema mens det er aktivt på hovednettstedet." -#: wp-admin/network/site-info.php:25 wp-admin/network/site-settings.php:23 -#: wp-admin/network/site-themes.php:23 wp-admin/network/site-users.php:26 +#: wp-admin/network/site-info.php:21 wp-admin/network/site-settings.php:20 +#: wp-admin/network/site-themes.php:20 wp-admin/network/site-users.php:23 msgid "The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable." msgstr "Menyen er for redigering av informasjon som er spesifikk for enkelte nettsteder, spesielt hvis admin-området på et nettsted er utilgjengelig." -#: wp-admin/network/site-info.php:41 wp-admin/network/site-settings.php:39 -#: wp-admin/network/site-themes.php:60 wp-admin/network/site-users.php:55 +#: wp-admin/network/site-info.php:37 wp-admin/network/site-settings.php:36 +#: wp-admin/network/site-themes.php:57 wp-admin/network/site-users.php:52 msgid "Invalid site ID." msgstr "Ugyldig nettsteds-ID." -#: wp-admin/network/site-info.php:134 wp-admin/network/site-settings.php:86 -#: wp-admin/network/site-themes.php:142 wp-admin/network/site-users.php:182 +#. translators: %s: site name +#: wp-admin/network/site-info.php:131 wp-admin/network/site-settings.php:84 +#: wp-admin/network/site-themes.php:163 wp-admin/network/site-users.php:193 msgid "Edit Site: %s" msgstr "Rediger nettsted: %s" -#: wp-admin/network/site-users.php:220 +#: wp-admin/network/site-users.php:231 msgid "User is already a member of this site." msgstr "Brukeren er allerede medlem av dette nettstedet." -#: wp-admin/network/site-users.php:223 +#: wp-admin/network/site-users.php:234 msgid "Enter the username of an existing user." msgstr "Skriv inn brukernavnet til en eksisterende bruker." -#: wp-admin/network/site-users.php:229 +#: wp-admin/network/site-users.php:240 msgid "Select a user to change role." msgstr "Velg en bruker for å endre rollen." -#: wp-admin/network/site-users.php:235 +#: wp-admin/network/site-users.php:246 msgid "Select a user to remove." msgstr "Velg en bruker som skal fjernes." -#: wp-admin/network/site-users.php:238 +#: wp-admin/network/site-users.php:249 msgid "User created." msgstr "Bruker opprettet." -#: wp-admin/network/site-users.php:241 +#: wp-admin/network/site-users.php:252 msgid "Enter the username and email." msgstr "Skriv inn brukernavn og e-post." -#: wp-admin/network/site-settings.php:83 +#: wp-admin/network/site-settings.php:80 msgid "Site options updated." msgstr "Nettstedsvalg oppdatert." -#: wp-admin/network/site-new.php:26 +#: wp-admin/network/site-new.php:23 msgid "This screen is for Super Admins to add new sites to the network. This is not affected by the registration settings." msgstr "Denne skjermen lar superadmin legge til nye områder i nettverket. Denne siden berøres ikke av innstillingene for registreringer." #. translators: 1: dashboard url, 2: network admin edit url -#: wp-admin/network/site-new.php:171 +#: wp-admin/network/site-new.php:172 msgid "Site added. Visit Dashboard or Edit Site" msgstr "Nettsted lagt til. Besøk kontrollpanelet eller Rediger nettsted" -#: wp-admin/network/site-new.php:177 wp-admin/network/site-new.php:187 +#: wp-admin/network/site-new.php:178 wp-admin/network/site-new.php:188 msgid "Add New Site" msgstr "Legg til nytt nettsted" -#: wp-admin/network/sites.php:34 +#: wp-admin/network/sites.php:31 msgid "An Edit link to a separate Edit Site screen." msgstr "En Rediger-lenke til en egen Rediger nettsted-skjerm." -#: wp-admin/network/sites.php:35 +#: wp-admin/network/sites.php:32 msgid "Dashboard leads to the Dashboard for that site." msgstr "Kontrollpanel leder til kontrollpanelet for det nettstedet." -#: wp-admin/network/sites.php:37 +#: wp-admin/network/sites.php:34 msgid "Delete which is a permanent action after the confirmation screens." msgstr "Slette, som er en permanent handling etter bekreftelsesskjermene." -#: wp-admin/network/sites.php:40 +#: wp-admin/network/sites.php:37 msgid "Clicking on bold headings can re-sort this table." msgstr "Ved å klikke på overskriftene kan du re-sortere denne tabellen." -#: wp-admin/network/menu.php:55 wp-admin/network/settings.php:22 +#: wp-admin/network/menu.php:55 wp-admin/network/settings.php:19 msgid "Network Settings" msgstr "Nettverksinnstillinger" -#: wp-admin/network/settings.php:38 +#: wp-admin/network/settings.php:35 msgid "Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges." msgstr "Superadministratorer kan ikke lenger legges til på Valg-skjermen. Du må nå gå til listen med eksisterende brukere i Nettverksadmin > Brukere og klikke på brukernavnet eller Rediger-lenken under navnet til brukeren. Dette tar deg til en side for brukerredigering der du kan tildele superadmin-privilegier." -#: wp-admin/network/settings.php:167 +#: wp-admin/network/settings.php:164 msgid "Allow site administrators to add new users to their site via the \"Users → Add New\" page." msgstr "Tillat nettstedsadmin å legge til nye brukere til deres nettsted via siden Brukere → Legg til ny." -#: wp-admin/network/settings.php:325 +#: wp-admin/network/settings.php:328 msgid "Language Settings" msgstr "Språkinnstillinger" -#: wp-admin/network/site-info.php:130 +#: wp-admin/network/site-info.php:126 msgid "Site info updated." msgstr "Nettstedsinfo oppdatert." @@ -802,35 +818,35 @@ msgstr "Installerte temaer" msgid "Updates" msgstr "Oppdateringer" -#: wp-admin/network/site-themes.php:179 +#: wp-admin/network/site-themes.php:200 msgid "Network enabled themes are not shown on this screen." msgstr "Nettverksaktiverte temaer er vises ikke på denne skjermen." -#: wp-admin/network/site-info.php:26 wp-admin/network/site-settings.php:24 -#: wp-admin/network/site-themes.php:24 wp-admin/network/site-users.php:27 +#: wp-admin/network/site-info.php:22 wp-admin/network/site-settings.php:21 +#: wp-admin/network/site-themes.php:21 wp-admin/network/site-users.php:24 msgid "Info — The site URL is rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable." msgstr "Info – Domenet og banen redigeres sjeldent, da dette kan føre til at nettstedet ikke fungerer ordentlig. «Registrert dato» og «Sist oppdatert dato» vises. Nettverksadmin kan merke et område som arkiverert, useriøst, slettet og støtende, for å fjerne det fra offentlige oppføringer eller å deaktivere det." -#: wp-admin/network/site-info.php:27 wp-admin/network/site-settings.php:25 -#: wp-admin/network/site-themes.php:25 wp-admin/network/site-users.php:28 +#: wp-admin/network/site-info.php:23 wp-admin/network/site-settings.php:22 +#: wp-admin/network/site-themes.php:22 wp-admin/network/site-users.php:25 msgid "Users — This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network." msgstr "Brukere – Dette viser brukerne som er knyttet til dette nettstedet. Du kan også endre deres roller, tilbakestille passordet, eller fjerne dem fra nettstedet. Fjerning av brukeren fra nettstedet fjerner ikke brukeren fra nettverket." -#: wp-admin/network/site-info.php:28 wp-admin/network/site-settings.php:26 -#: wp-admin/network/site-themes.php:26 wp-admin/network/site-users.php:29 +#: wp-admin/network/site-info.php:24 wp-admin/network/site-settings.php:23 +#: wp-admin/network/site-themes.php:23 wp-admin/network/site-users.php:26 msgid "Themes — This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the Network Themes screen." msgstr "Temaer – Dette området viser temaer som ikke allerede er aktivert i nettverket. Aktivering av et tema i denne menyen gjør det tilgjengelig for dette nettstedet. Det aktiverer ikke temaet, men gjør at det vises i nettstedets meny for Utseende. For å aktivere et tema for hele nettverket, se skjermen Nettverkstemaer." -#: wp-admin/network/site-info.php:29 wp-admin/network/site-settings.php:27 -#: wp-admin/network/site-themes.php:27 wp-admin/network/site-users.php:30 +#: wp-admin/network/site-info.php:25 wp-admin/network/site-settings.php:24 +#: wp-admin/network/site-themes.php:24 wp-admin/network/site-users.php:27 msgid "Settings — This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database." msgstr "Innstillinger – Denne siden viser en liste over alle innstillinger knyttet til dette nettstedet. Noen er laget av WordPress og andre er laget av utvidelser du aktiverer. Merk at enkelte felt er nedtonet, og det står «serialisert data». Du kan ikke endre disse verdiene på grunn av måten innstillingen er lagret i databasen." -#: wp-admin/network/sites.php:147 +#: wp-admin/network/sites.php:144 msgid "Sorry, you are not allowed to delete the site." msgstr "Beklager, du har ikke lov til å slette dette nettstedet." -#: wp-admin/network/sites.php:31 +#: wp-admin/network/sites.php:28 msgid "Add New takes you to the Add New Site screen. You can search for a site by Name, ID number, or IP address. Screen Options allows you to choose how many sites to display on one page." msgstr "«Legg til» tar deg til skjermen Legg til nytt nettsted. Du kan søke etter nettsted basert på navn, ID-nummer, eller IP-adresse. I skjerminnstillingene kan du velge hvor mange nettsteder som skal vises på hver side." @@ -838,8 +854,8 @@ msgstr "«Legg til» tar deg til skjermen Legg til nytt nettsted. Du kan søke e msgid "The constant DO_NOT_UPGRADE_GLOBAL_TABLES cannot be defined when creating a network." msgstr "Konstanten DO_NOT_UPGRADE_GLOBAL_TABLES kan ikke være definert når du lager ett nettverk." -#: wp-admin/includes/network.php:113 wp-admin/includes/network.php:363 -#: wp-admin/includes/network.php:535 wp-admin/includes/network.php:575 +#: wp-admin/includes/network.php:113 wp-admin/includes/network.php:373 +#: wp-admin/includes/network.php:545 wp-admin/includes/network.php:585 msgid "Warning:" msgstr "Advarsel:" @@ -855,119 +871,114 @@ msgstr "Tilbake til kontrollpanel" msgid "ERROR: The network could not be created." msgstr "FEIL: Nettverket kunne ikke opprettes." -#: wp-admin/includes/network.php:170 wp-admin/includes/network.php:219 -#: wp-admin/includes/network.php:260 wp-admin/includes/network.php:270 +#: wp-admin/includes/network.php:180 wp-admin/includes/network.php:229 +#: wp-admin/includes/network.php:270 wp-admin/includes/network.php:280 msgid "Warning!" msgstr "Advarsel!" -#: wp-admin/includes/network.php:147 -msgctxt "Default network name" -msgid "%s Sites" -msgstr "%s nettsteder" - -#: wp-admin/includes/network.php:150 +#: wp-admin/includes/network.php:160 msgid "Welcome to the Network installation process!" msgstr "Velkommen til nettverksinstallsjonsprosessen!" -#: wp-admin/includes/network.php:151 +#: wp-admin/includes/network.php:161 msgid "Fill in the information below and you’ll be on your way to creating a network of WordPress sites. We will create configuration files in the next step." msgstr "Fyll inn informasjonen nedenfor og du er på god vei til å lage ditt eget nettverk av WordPress-nettsteder. Vi vil lage konfigurasjonsfiler i neste steg." -#: wp-admin/includes/network.php:191 +#: wp-admin/includes/network.php:201 msgid "Addresses of Sites in your Network" msgstr "Adresser til nettsteder i ditt nettverk" -#: wp-admin/includes/network.php:194 +#: wp-admin/includes/network.php:204 msgid "You will need a wildcard DNS record if you are going to use the virtual host (sub-domain) functionality." msgstr "Du trenger en DNS-oppføring med jokertegn hvis du skal bruke funksjonaliteten virtuell tjener (subdomener)." -#: wp-admin/includes/network.php:198 +#: wp-admin/includes/network.php:208 msgid "Sub-domains" msgstr "Subdomener" #. translators: 1: hostname -#: wp-admin/includes/network.php:201 +#: wp-admin/includes/network.php:211 msgctxt "subdomain examples" msgid "like site1.%1$s and site2.%1$s" msgstr "som nettsted1.%1$s og nettsted2.%1$s" -#: wp-admin/includes/network.php:206 +#: wp-admin/includes/network.php:216 msgid "Sub-directories" msgstr "Undermapper" #. translators: 1: hostname -#: wp-admin/includes/network.php:209 +#: wp-admin/includes/network.php:219 msgctxt "subdirectory examples" msgid "like %1$s/site1 and %1$s/site2" msgstr "som %1$s/nettsted1 og %1$s/nettsted2" -#: wp-admin/includes/network.php:224 wp-admin/includes/network.php:234 -#: wp-admin/includes/network.php:283 +#: wp-admin/includes/network.php:234 wp-admin/includes/network.php:244 +#: wp-admin/includes/network.php:293 msgid "Server Address" msgstr "Serveradresse" -#: wp-admin/includes/network.php:246 +#: wp-admin/includes/network.php:256 msgid "Network Details" msgstr "Nettverksdetaljer" -#: wp-admin/includes/network.php:250 wp-admin/includes/network.php:265 +#: wp-admin/includes/network.php:260 wp-admin/includes/network.php:275 msgid "Sub-directory Install" msgstr "Undermappeinstallasjon" -#: wp-admin/includes/network.php:260 wp-admin/includes/network.php:270 -#: wp-admin/includes/network.php:277 +#: wp-admin/includes/network.php:270 wp-admin/includes/network.php:280 +#: wp-admin/includes/network.php:287 msgid "The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links." msgstr "Hovednettstedet i en undermappe-installasjon må bruke en modifisert permalenkestruktur, noe som kan bryte eksisterende lenker." -#: wp-admin/includes/network.php:267 +#: wp-admin/includes/network.php:277 msgid "Because your install is in a directory, the sites in your WordPress network must use sub-directories." msgstr "Fordi din installasjon er i en mappe, må nettstedene i ditt WordPress-nettverk bruke undermapper." -#: wp-admin/includes/network.php:275 +#: wp-admin/includes/network.php:285 msgid "Sub-domain Install" msgstr "Subdomeneinstallering" -#: wp-admin/includes/network.php:276 +#: wp-admin/includes/network.php:286 msgid "Because your install is not new, the sites in your WordPress network must use sub-domains." msgstr "Fordi din installasjon ikke er ny, må nettstedene i ditt WordPress-nettverk bruke subdomener." -#: wp-admin/includes/network.php:294 wp-admin/network/settings.php:108 +#: wp-admin/includes/network.php:304 wp-admin/network/settings.php:105 msgid "Network Title" msgstr "Nettverkstittel" -#: wp-admin/includes/network.php:298 +#: wp-admin/includes/network.php:308 msgid "What would you like to call your network?" msgstr "Hva vil du at ditt nettverk skal hete?" -#: wp-admin/includes/network.php:307 +#: wp-admin/includes/network.php:317 msgid "Your email address." msgstr "Din e-postadresse." -#: wp-admin/includes/network.php:358 +#: wp-admin/includes/network.php:368 msgid "The original configuration steps are shown here for reference." msgstr "De opprinnelige konfigurasjonsstegene er vist her som referanse." -#: wp-admin/includes/network.php:363 +#: wp-admin/includes/network.php:373 msgid "An existing WordPress network was detected." msgstr "Et eksisterende WordPress-nettverk ble oppdaget." -#: wp-admin/includes/network.php:364 +#: wp-admin/includes/network.php:374 msgid "Please complete the configuration steps. To create a new network, you will need to empty or remove the network database tables." msgstr "Vennligst fullfør konfigurasjonsstegene. For å lage et nytt nettverk, må du tømme eller slette nettverkets databasetabeller." -#: wp-admin/includes/network.php:375 +#: wp-admin/includes/network.php:385 msgid "Enabling the Network" msgstr "Aktiverer nettverket" -#: wp-admin/includes/network.php:376 +#: wp-admin/includes/network.php:386 msgid "Complete the following steps to enable the features for creating a network of sites." msgstr "Fullfør de følgende stegene for å aktivere funksjonene for å lage et nettverk av nettsteder." -#: wp-admin/includes/network.php:465 +#: wp-admin/includes/network.php:475 msgid "To make your installation more secure, you should also add:" msgstr "For å gjøre din installasjon mer sikker, bør du også legge til:" -#: wp-admin/includes/network.php:584 +#: wp-admin/includes/network.php:594 msgid "Once you complete these steps, your network is enabled and configured. You will have to log in again." msgstr "Når du har fullført disse stegene, er ditt nettverk aktivert og konfigurert. Du kommer til å måtte logge inn igjen." @@ -1011,377 +1022,368 @@ msgstr "Når nettverket er opprettet, kan du reaktivere dine utvidelser." msgid "Please deactivate your plugins before enabling the Network feature." msgstr "Vennligst deaktiver utvidelsene dine før du aktiverer nettverksfunksjonen." -#: wp-admin/network/users.php:73 +#: wp-admin/network/users.php:70 msgid "Warning! User cannot be modified. The user %s is a network administrator." msgstr "Advarsel! Bruker kan ikke bli redigert. Brukeren %s er en nettverksadmin." -#: wp-admin/network/site-new.php:27 +#: wp-admin/network/site-new.php:24 msgid "If the admin email for the new site does not exist in the database, a new user will also be created." msgstr "Hvis e-postadressen til administratoren ikke finnes i databasen, vil en ny bruker også opprettes." -#: wp-admin/network/sites.php:39 +#: wp-admin/network/sites.php:36 msgid "The site ID is used internally, and is not shown on the front end of the site or to users/viewers." msgstr "Nettstedets ID brukes internt, og vises ikke på den synlige delen av nettstedet eller for brukere/besøkere." -#: wp-admin/network/sites.php:33 +#: wp-admin/network/sites.php:30 msgid "Hovering over each site reveals seven options (three for the primary site):" msgstr "Når du fører pekeren over hvert nettsted, vil du se sju valgmuligheter (tre for hovednettstedet):" -#: wp-admin/network/sites.php:36 +#: wp-admin/network/sites.php:33 msgid "Deactivate, Archive, and Spam which lead to confirmation screens. These actions can be reversed later." msgstr "Deaktiver, arkiver og useriøs fører deg til bekreftelsesskjermer. Disse handlingene kan bli omgjort senere." -#: wp-admin/network/settings.php:32 +#: wp-admin/network/settings.php:29 msgid "Operational settings has fields for the network’s name and admin email." msgstr "Operasjoneller valg har felter for nettverkets navn og e-post til administrator." -#: wp-admin/network/users.php:163 +#: wp-admin/network/users.php:171 msgid "You can also go to the user’s profile page by clicking on the individual username." msgstr "Du kan også gå til brukernes profilsider ved å klikke på de individuelle brukernavnene." -#: wp-admin/network/settings.php:35 +#: wp-admin/network/settings.php:32 msgid "Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only)." msgstr "Innstillinger for opplastinger kontrollerer størrelsen til opplastede filer og mengden plass som skal være tilgjengelig for hvert nettsted. Du kan endre standardverdiene til individuelle nettsteder når du redigerer det enkelte nettsted. Tilgjengelige filtyper er også listet opp (separert kun med mellomrom)." -#: wp-admin/network/users.php:165 +#: wp-admin/network/users.php:173 msgid "The bulk action will permanently delete selected users, or mark/unmark those selected as spam. Spam users will have posts removed and will be unable to sign up again with the same email addresses." msgstr "Massehandlingene vil permanent slette valgte brukere, eller merke/avmerke dem som useriøse. Useriøse brukeres innlegg vil slettes, og de vil ikke kunne registrere seg igjen med den samme e-postadressen." -#: wp-admin/network/sites.php:38 +#: wp-admin/network/sites.php:35 msgid "Visit to go to the front-end site live." msgstr "«Gå til» for å gå til forsiden til det aktuelle nettstedet." -#: wp-admin/network/settings.php:34 +#: wp-admin/network/settings.php:31 msgid "New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what᾿s put in the first post, page, comment, comment author, and comment URL." msgstr "Innstillingene for nye nettsteder settes til standardinnstillingene når nye nettsteder lages i nettverket. Disse inkluderer din velkomste-post for når nye nettsteder eller brukerkontoer registreres, og hva som blir innholdet i nettstedets første innlegg, side og kommentar, i tillegg til kommentarforfatter og kommentar-URL." -#: wp-admin/network/themes.php:211 +#: wp-admin/network/themes.php:222 msgid "This screen enables and disables the inclusion of themes available to choose in the Appearance menu for each site. It does not activate or deactivate which theme a site is currently using." msgstr "Denne skjermen aktiverer og deaktiverer inkluderingen av tilgjengelige temaer som kan velges i Utseende-menyen på hvert enkelt nettsted. Den aktiverer eller deaktiverer ikke temaene som nettstedet bruker for øyeblikket." -#: wp-admin/network/settings.php:31 +#: wp-admin/network/settings.php:28 msgid "This screen sets and changes options for the network as a whole. The first site is the main site in the network and network options are pulled from that original site’s options." msgstr "Denne skjermen bestemmer og endrer valgene for nettverket som helhet. Det første nettstedet er hovednettstedet i nettverket, og nettverksvalgene blir hentet fra dette originale nettstedets innstillinger." -#: wp-admin/network/sites.php:32 +#: wp-admin/network/sites.php:29 msgid "This is the main table of all sites on this network. Switch between list and excerpt views by using the icons above the right side of the table." msgstr "Dette er hovedlisten over alle nettstedene i nettverket. Bytt mellom liste- og utdragsvisningene ved å bruke ikonene over høyresiden av listen." -#: wp-admin/network/user-new.php:24 +#: wp-admin/network/user-new.php:21 msgid "Users who are signed up to the network without a site are added as subscribers to the main or primary dashboard site, giving them profile pages to manage their accounts. These users will only see Dashboard and My Sites in the main navigation until a site is created for them." msgstr "Brukere som er registrerte på nettverket uten et eget nettsted blir lagt til som abonnenter på hovednettstedet eller et designert kontrollpanelnettsted, slik at de kan komme til sine profilsider. Disse brukerne vil kun se Kontrollpanelet og Mine nettsteder i navigasjonsmenyen inntil et nettsted blir laget til dem." -#: wp-admin/network/upgrade.php:27 +#: wp-admin/network/upgrade.php:24 msgid "If this process fails for any reason, users logging in to their sites will force the same update." msgstr "Hvis denne prosessen mislykkes av en eller annen grunn, vil brukere som logger inn på nettstedene sine tvinge gjennom den samme oppdateringen." -#: wp-admin/network/upgrade.php:26 +#: wp-admin/network/upgrade.php:23 msgid "If a version update to core has not happened, clicking this button won’t affect anything." msgstr "Hvis en versjonsoppdatering ikke har skjedd, vil ingenting skje når du klikker på denne knappen." -#: wp-admin/network/users.php:161 +#: wp-admin/network/users.php:169 msgid "This table shows all users across the network and the sites to which they are assigned." msgstr "Denne listen viser alle brukere over hele nettverket og nettstedene som de er registrerte på." -#: wp-admin/network/themes.php:212 +#: wp-admin/network/themes.php:223 msgid "If the network admin disables a theme that is in use, it can still remain selected on that site. If another theme is chosen, the disabled theme will not appear in the site’s Appearance > Themes screen." msgstr "Hvis nettverksadmin deaktiverer et tema som er i bruk, kan det fortsatt være valgt på det nettstedet. Hvis et annet tema blir valgt, vil det deaktiverte temaet ikke være synlig i nettstedets Utseende → Temaer-skjerm." -#: wp-admin/network/users.php:166 +#: wp-admin/network/users.php:174 msgid "You can make an existing user an additional super admin by going to the Edit User profile page and checking the box to grant that privilege." msgstr "Du kan gjøre en eksisterende bruker til nok en superadmin ved å gå til profilsiden til brukeren og sjekke for boksen som gir det privilegiet." -#: wp-admin/network/settings.php:33 +#: wp-admin/network/settings.php:30 msgid "Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network." msgstr "Registreringsinnstillinger kan deaktivere/aktivere åpne brukerregistreringer. Hvis du lar andre registrere seg på et nettsted, installer antisøppel-utvidelse. Mellomrom, ikke kommaer, skal separere navn som er forbudt som nettsteder på dette nettverket." -#: wp-admin/network/settings.php:37 +#: wp-admin/network/settings.php:34 msgid "Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins." msgstr "Menyinnstillinger aktiverer/deaktiverer utvidelsesmenyen for ikke-superadminer, slik at kun superadmin, ikke nettstedsadmin, har tilgang til å aktivere utvidelser." -#: wp-admin/network/users.php:164 +#: wp-admin/network/users.php:172 msgid "You can sort the table by clicking on any of the table headings and switch between list and excerpt views by using the icons above the users list." msgstr "Du kan sortere listen ved å klikke på en av overskriftene og veksle mellom liste- og utdragsvisning ved å bruke ikonene over listen." #. translators: %s: reserved names list -#: wp-admin/network/site-new.php:54 +#: wp-admin/network/site-new.php:51 msgid "The following words are reserved for use by WordPress functions and cannot be used as blog names: %s" msgstr "De følgende ordene er reservert til WordPress-funksjoner og kan ikke brukes som nettstedsnavn: %s" -#: wp-admin/network/site-new.php:40 +#: wp-admin/network/site-new.php:37 msgid "Can’t create an empty site." msgstr "Kan ikke opprette et tomt nettsted." -#: wp-admin/network/settings.php:189 +#: wp-admin/network/settings.php:186 msgid "If you want to limit site registrations to certain domains. One domain per line." msgstr "Hvis du vil begrense nettstedsregistreringer til noen få domener. Et domene per linje." -#: wp-admin/network/settings.php:200 +#: wp-admin/network/settings.php:197 msgid "If you want to ban domains from site registrations. One domain per line." msgstr "Hvis du vil forby enkelte domener fra nettstedsregistreringer. Et domene per linje." -#: wp-admin/network/upgrade.php:104 +#: wp-admin/network/upgrade.php:111 msgid "If your browser doesn’t start loading the next page automatically, click this link:" msgstr "Hvis din nettleser ikke begynner å laste den neste siden automatisk, klikk denne lenken:" -#: wp-admin/network/sites.php:228 +#: wp-admin/network/sites.php:233 msgid "Sites removed from spam." msgstr "Nettsted merket som ikke søppel." -#: wp-admin/network/users.php:195 +#: wp-admin/network/users.php:203 msgid "Users removed from spam." msgstr "Brukere hentet ut fra søpla." -#: wp-admin/network/sites.php:258 +#: wp-admin/network/sites.php:263 msgid "Site marked as spam." msgstr "Nettsted merket som useriøst." -#: wp-admin/network/sites.php:231 +#: wp-admin/network/sites.php:236 msgid "Sites marked as spam." msgstr "Nettsteder merket som useriøse." -#: wp-admin/network/sites.php:255 +#: wp-admin/network/sites.php:260 msgid "Site removed from spam." msgstr "Nettsted ikke lengre merket som useriøst." -#: wp-admin/network/sites.php:234 +#: wp-admin/network/sites.php:239 msgid "Sites deleted." msgstr "Nettsteder slettet." -#: wp-admin/network/sites.php:237 +#: wp-admin/network/sites.php:242 msgid "Site deleted." msgstr "Nettsted slettet." -#: wp-admin/network/sites.php:243 +#: wp-admin/network/sites.php:248 msgid "Site archived." msgstr "Nettsted arkivert." -#: wp-admin/network/sites.php:246 +#: wp-admin/network/sites.php:251 msgid "Site unarchived." msgstr "Nettsted gjenopprettet fra arkiv." -#: wp-admin/network/sites.php:249 +#: wp-admin/network/sites.php:254 msgid "Site activated." msgstr "Nettsted aktivert." -#: wp-admin/network/sites.php:252 +#: wp-admin/network/sites.php:257 msgid "Site deactivated." msgstr "Nettsted deaktivert." -#: wp-admin/network/users.php:192 +#: wp-admin/network/users.php:200 msgid "Users marked as spam." msgstr "Brukere markerte som søppel." -#: wp-admin/network/users.php:198 +#: wp-admin/network/users.php:206 msgid "Users deleted." msgstr "Bruker slettet." -#: wp-admin/network/site-new.php:84 -msgid "Invalid email address." -msgstr "Ugyldig e-postadresse." - -#: wp-admin/network/site-new.php:114 +#: wp-admin/network/site-new.php:115 msgid "There was an error creating the user." msgstr "Det skjedde en feil ved opprettelse av bruker." -#: wp-admin/network/sites.php:94 wp-admin/network/sites.php:160 +#: wp-admin/network/sites.php:91 wp-admin/network/sites.php:157 msgid "Sorry, you are not allowed to change the current site." msgstr "Beklager, du har ikke lov til å endre det gjeldende nettstedet." -#: wp-admin/network/settings.php:312 -msgctxt "File size in kilobytes" -msgid "%s KB" -msgstr "%s kB" - -#: wp-admin/network/settings.php:300 +#: wp-admin/network/settings.php:297 msgid "Upload file types" msgstr "Tillatte filtyper" -#: wp-admin/network/settings.php:292 +#: wp-admin/network/settings.php:289 msgid "Limit total size of files uploaded to %s MB" msgstr "Begrens den totale størrelsen til opplastede filer til %s MB" -#: wp-admin/network/settings.php:235 +#: wp-admin/network/settings.php:232 msgid "The first post on a new site." msgstr "Det første innlegget på et nytt nettsted." -#: wp-admin/network/settings.php:245 +#: wp-admin/network/settings.php:242 msgid "The first page on a new site." msgstr "Den første siden på et nytt nettsted." -#: wp-admin/network/settings.php:255 +#: wp-admin/network/settings.php:252 msgid "The first comment on a new site." msgstr "Den første kommentaren på et nytt nettsted." -#: wp-admin/network/settings.php:264 +#: wp-admin/network/settings.php:261 msgid "The author of the first comment on a new site." msgstr "Forfatteren til den første kommentaren på et nytt nettsted." -#: wp-admin/network/settings.php:282 +#: wp-admin/network/settings.php:279 msgid "The URL for the first comment on a new site." msgstr "URL-en for den første kommentaren på et nytt nettsted." -#: wp-admin/network/upgrade.php:60 +#: wp-admin/network/upgrade.php:67 msgid "All done!" msgstr "Ferdig!" -#: wp-admin/network/settings.php:136 +#: wp-admin/network/settings.php:133 msgid "Registration is disabled." msgstr "Registrering er deaktivert." -#: wp-admin/network/settings.php:137 +#: wp-admin/network/settings.php:134 msgid "User accounts may be registered." msgstr "Brukerkontoer kan registreres." -#: wp-admin/network/settings.php:138 +#: wp-admin/network/settings.php:135 msgid "Logged in users may register new sites." msgstr "Innloggede brukere kan registrere nye nettsteder." -#: wp-admin/network/settings.php:139 +#: wp-admin/network/settings.php:136 msgid "Both sites and user accounts can be registered." msgstr "Både nettsteder og brukerkontoer kan registreres." -#: wp-admin/network/settings.php:105 +#: wp-admin/network/settings.php:102 msgid "Operational Settings" msgstr "Nettverksinnstillinger" -#: wp-admin/network/settings.php:124 +#: wp-admin/network/settings.php:121 msgid "Registration Settings" msgstr "Registreringsinstillinger" -#: wp-admin/network/settings.php:206 +#: wp-admin/network/settings.php:203 msgid "New Site Settings" msgstr "Innstillinger for nye nettsteder" -#: wp-admin/network/settings.php:287 +#: wp-admin/network/settings.php:284 msgid "Upload Settings" msgstr "Opplastingsinnstillinger" -#: wp-admin/network/settings.php:355 +#: wp-admin/network/settings.php:358 msgid "Enable administration menus" msgstr "Aktiver administrasjonsmenyer" -#: wp-admin/network/site-new.php:76 +#: wp-admin/network/site-new.php:77 msgid "Missing or invalid site address." msgstr "Feil eller manglende nettstedadresse." -#: wp-admin/network/site-new.php:79 +#: wp-admin/network/site-new.php:80 msgid "Missing email address." msgstr "Mangler e-postadresse." #. translators: %s: network name -#: wp-admin/network/site-new.php:139 +#: wp-admin/network/site-new.php:140 msgid "[%s] New Site Created" msgstr "[%s] Nytt nettsted opprettet" -#: wp-admin/network/settings.php:176 +#: wp-admin/network/settings.php:173 msgid "Users are not allowed to register these sites. Separate names by spaces." msgstr "Du har ikke lov til å registrere disse nettstedene. Separer navn med mellomrom." -#: wp-admin/network/settings.php:215 +#: wp-admin/network/settings.php:212 msgid "The welcome email sent to new site owners." msgstr "Velkomst-e-post sendt til nye nettstedseiere." -#: wp-admin/network/settings.php:290 +#: wp-admin/network/settings.php:287 msgid "Site upload space" msgstr "Lagringsplass for nettsteder" -#: wp-admin/network/upgrade.php:104 +#: wp-admin/network/upgrade.php:111 msgid "Next Sites" msgstr "Neste nettsteder" -#: wp-admin/includes/network.php:303 wp-admin/network/settings.php:115 +#: wp-admin/includes/network.php:313 wp-admin/network/settings.php:112 msgid "Network Admin Email" msgstr "E-post til nettverksadmin" -#: wp-admin/network/settings.php:160 +#: wp-admin/network/settings.php:157 msgid "Send the network admin an email notification every time someone registers a site or user account." msgstr "Send nettverksadmin en e-post hver gang noen registrerer et nettsted eller en brukerkonto." -#: wp-admin/network/sites.php:110 +#: wp-admin/network/sites.php:107 msgid "Confirm" msgstr "Bekreft" -#: wp-admin/network/user-new.php:40 +#: wp-admin/network/user-new.php:37 msgid "Cannot create an empty user." msgstr "Kan ikke lage en tom bruker." -#: wp-admin/network/site-users.php:244 +#: wp-admin/network/site-users.php:255 msgid "Duplicated username or email address." msgstr "Duplisert brukernavn eller e-postadresse." -#: wp-admin/network/settings.php:127 +#: wp-admin/network/settings.php:124 msgid "Allow new registrations" msgstr "Tillat nye registreringer" -#: wp-admin/network/settings.php:154 +#: wp-admin/network/settings.php:151 msgid "Registration notification" msgstr "Registreringsbekreftelse" -#: wp-admin/network/settings.php:165 +#: wp-admin/network/settings.php:162 msgid "Add New Users" msgstr "Legg til nye brukere" -#: wp-admin/network/settings.php:172 +#: wp-admin/network/settings.php:169 msgid "Banned Names" msgstr "Forbudte navn" -#: wp-admin/network/settings.php:182 +#: wp-admin/network/settings.php:179 msgid "Limited Email Registrations" msgstr "Begrense e-postregistreringer" -#: wp-admin/network/settings.php:195 +#: wp-admin/network/settings.php:192 msgid "Banned Email Domains" msgstr "Forbudte e-postdomener" -#: wp-admin/network/settings.php:210 +#: wp-admin/network/settings.php:207 msgid "Welcome Email" msgstr "Velkomst-e-post" -#: wp-admin/network/settings.php:220 +#: wp-admin/network/settings.php:217 msgid "Welcome User Email" msgstr "Velkomst-e-post til bruker" -#: wp-admin/network/settings.php:225 +#: wp-admin/network/settings.php:222 msgid "The welcome email sent to new users." msgstr "Velkomst-e-post sendt til nye brukere." -#: wp-admin/network/settings.php:240 +#: wp-admin/network/settings.php:237 msgid "First Page" msgstr "Første side" -#: wp-admin/network/settings.php:250 +#: wp-admin/network/settings.php:247 msgid "First Comment" msgstr "Første kommentar" -#: wp-admin/network/settings.php:260 +#: wp-admin/network/settings.php:257 msgid "First Comment Author" msgstr "Forfatter til den første kommentaren" -#: wp-admin/network/settings.php:278 +#: wp-admin/network/settings.php:275 msgid "First Comment URL" msgstr "URL for den første kommentaren" -#: wp-admin/network/settings.php:310 +#: wp-admin/network/settings.php:307 msgid "Max upload file size" msgstr "Maks filstørrelse ved opplasting" -#: wp-admin/network/settings.php:328 +#: wp-admin/network/settings.php:331 msgid "Default Language" msgstr "Standardspråk" -#: wp-admin/network/site-new.php:258 +#: wp-admin/network/site-new.php:259 msgid "Add Site" msgstr "Legg til nettsted" -#: wp-admin/network/site-new.php:242 +#: wp-admin/network/site-new.php:243 msgid "Admin Email" msgstr "Administrator e-post" -#: wp-admin/network/site-new.php:246 +#: wp-admin/network/site-new.php:247 msgid "A new user will be created if the above email address is not in the database." msgstr "En ny bruker vil bli laget hvis e-postadressen over ikke finnes i databasen." -#: wp-admin/network/site-new.php:246 +#: wp-admin/network/site-new.php:247 msgid "The username and password will be mailed to this email address." -msgstr "Brukernavn og passord vil sendes til denne e-postadressen." +msgstr "Brukernavn og passord vil sendes til denne e-postadressen." \ No newline at end of file diff --git a/wp/wp-content/languages/continents-cities-nb_NO.mo b/wp/wp-content/languages/continents-cities-nb_NO.mo index d25c7a0d15071ac816aaefae7692e44345df207c..9a7100bb34cf4b771ce46f1f6af194b83526f24b 100644 GIT binary patch delta 4230 zcmXxlc~F&Q6vy$GgbRWTTG?n?*L2iMNL#clNCQ+1!m?blNilB}Are?=+iTOPGmciH zWT9CR=1iK6TjjLqShQG~Ss7z#jT+gc*+QG6E#KdLfBp4&&w0*s&hxzYUfBP1%7SN7 z*58yJ_DKnXm#+wdc0myA%?pBb+>dG4im7-6v+!rkz?06WVn4l)}x=mFH=hf$3eI<9xT0#*0C zRG)3A{muDd^zfkzK1Cg5p9@U?v*H%*HCXd+|GjreT;gQ zEiO2K8uUG?@EGbNIf42v#D+)vx}xGUQ8((3dK0;*`XQ+PBT#+Dpyo_K@?lWUg9cS% z^0P+0;@PMT^X*bpqi0cdFQ5i&aQuejW>mjjs6l&B_1~Zlco_8&9K$r`2W>oP&~en@ z*obJuX{ZK0QG@!S8V^R@c&OJ4Q2R<9Pe#=xP<3~p4sZ{4#SnFoCCW2DSiyq^G@%;3 zqy>D#`DVwvP&a6C{I%onPy>IoZKwgqQ5QSqs;F;g)c#(m`o0({aUKsU9PEO8)B%c6 zg{7!hHV)NzqAf@5uSC_|>G&ShxBfv?{bJMwmpN`k)vvjV_pevH-V3jxUfJ8I{4VGB zqW(Y~L~Z;IHTWp1aU1Hu|2U2nLemfbcMhs=4(eb-3x-Ay!%4IwQH;qO+i|Et zlk8Mmv2^?CXNIbr>&p3dkzHb+v`^brsE%vw2D`;>v+tt%@3f!Uz4n^|-kl0soj78D zv45gIw7*ezJ*6oHBsl?q;8_q%v zIv0~)Z`1+uoiDPb*pB=SsDn;&ewwXB&8fBbqxyvNomh+-@C2&CD%3&NVH$2kZP?;? z8|r57pboklbzO^YVbj? zAI2E*�UJiCRw?73E{7!5vZSJx~Ygi<$b{Ifw^+n=eN-D%Jvybv)VeG}J+6*gCJz zK{cL>>A2AOC5{_V2WoVFHR@vPF!{Ih6&}>!P1Jz*FdcWI4z$PavxhL9{12#ozdAnY zICXS%fljFX-BERMd!F+bkLLZW(d8sEumBa8*y~XnZ*qLA<7!mn*{C-aI=|5QdelW$ zUIPM)U&S2M&vF4~;xg0$8Xd1g9dwKHTTuf(aQ<`5B>vL*R@DBVFkQd@ z6Fg{OyQ`y(*{B2cu)R?yAAq{aVAO!iP_MKAGjTMk&p6cnsa~%@?W?l0P=9ak$Jjs~ z7W1G1^{AVy)B-l42CZ>^^V0HOr*_n+kH~0L%hHE>of_&b{o&fwlBicFdj_7(dK}ez zxbq`z8LHz%)T~>u1I|F5;a=3fhftSYfE{oVs=lFwSEvItk&qj_unl#o9rjcEmDj&T z4L*i?JI9?*DUJGMp$^d9#%+I_i`sWdDIcK<^GIl5p)Ga6c+4Vyv*Svy*P?E4A8P+R zuP;K~xE{4{x$~=0{a-@Wzv_5v$b&Y#XLq6+e}+2Ye%oq)MAiR}dZj0v53Y&w8JPT= zV!L8T>bjxcSYLYqYEC%Ji9*!L%20#HqfUIYtw0T~L2bMn)p)M+kD%)7Q3qRzs(TLA z??uO(QFFE;Zzv4j@xpE|e1&RoFe(TRqZ+q4e-d?*l(MLC2h{p$wwLq$Y%Z#P22QPC=clBDui-e$+wk^?JCeA%3XmsEcw3<&;;|+*Y1hQeItgS9wKZ zSiE}LlxxZ|$JWlQOx!Xnr+9kK_(W~p?K7)~#V5?Hoj$fUQCAnwi5DjBPE^gTnUScT M70=n!kk{PhKlY!`q5uE@ delta 4204 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≧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⁢hs^Ff8RI108-D=ntjie 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 E2U!=k{{R30 delta 45890 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 XEzgt&(a}t)y*QsKjRzWSmy~}4xzTnM diff --git a/wp/wp-content/languages/nb_NO.po b/wp/wp-content/languages/nb_NO.po index 2a6fefca..7f8623ab 100644 --- a/wp/wp-content/languages/nb_NO.po +++ b/wp/wp-content/languages/nb_NO.po @@ -1,14 +1,15 @@ -# Translation of 4.6.x in Norwegian (Bokmål) -# This file is distributed under the same license as the 4.6.x package. +# Translation of WordPress - Development in Norwegian (Bokmål) +# This file is distributed under the same license as the WordPress - Development package. msgid "" msgstr "" -"PO-Revision-Date: 2016-08-09 14:38:13+0000\n" +"PO-Revision-Date: 2016-12-05 22:24:43+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: GlotPress/2.1.0-alpha\n" -"Project-Id-Version: 4.6.x\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: nb_NO\n" +"Project-Id-Version: WordPress - Development\n" #. translators: Translate this to the correct language tag for your locale, see #. https://www.w3.org/International/articles/language-tags/ for reference. Do @@ -18,30 +19,1939 @@ msgid "html_lang_attribute" msgstr "nb-NO" #. translators: 'rtl' or 'ltr'. This sets the text direction for WordPress. -#: wp-includes/class-wp-locale.php:223 +#: wp-includes/class-wp-locale.php:230 msgctxt "text direction" msgid "ltr" msgstr "ltr" #. translators: $dec_point argument for https://secure.php.net/number_format, #. default is . -#: wp-includes/class-wp-locale.php:215 +#: wp-includes/class-wp-locale.php:222 msgid "number_format_decimal_point" msgstr "," #. translators: $thousands_sep argument for #. https://secure.php.net/number_format, default is , -#: wp-includes/class-wp-locale.php:202 +#: wp-includes/class-wp-locale.php:209 msgid "number_format_thousands_sep" msgstr " " +#: wp-includes/option.php:1762 +msgid "This address is used for admin purposes, like new user notification." +msgstr "Denne adressen benyttes til administrasjonsformål, slik som varsling av nye brukere." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:809 +msgid "Unique identifier for the term." +msgstr "Unik indentifikator for termen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php:268 +msgid "An alphanumeric identifier for the taxonomy." +msgstr "En alfanumerisk identifikator for taksonomien." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php:225 +msgid "Human-readable labels for the post type for various contexts." +msgstr "Brukervennlig etikett for innleggstypen for forskjellige kontekster." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php:213 +msgid "A human-readable description of the post type." +msgstr "En brukervennlig beskrivelse av innleggstypen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php:237 +msgid "An alphanumeric identifier for the post type." +msgstr "En alfanumerisk identifikator for innleggstypen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:121 +msgid "Required to be true, as terms do not support trashing." +msgstr "Påkreved å være sann, ettersom termer ikke kan legges i papirkurven." + +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:100 +msgid "Required to be true, as revisions do not support trashing." +msgstr "Påkreved å være sann, ettersom revisjoner ikke kan legges i papirkurven." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php:207 +msgid "All capabilities used by the post type." +msgstr "Alle rettigheter brukt av innleggstypen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php:219 +msgid "Whether or not the post type should have children." +msgstr "Hvorvidt innleggstypen skal ha døtre." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php:252 +msgid "REST base route for the post type." +msgstr "REST-grunnrute for innleggstypen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php:287 +msgid "An alphanumeric identifier for the status." +msgstr "En alfanumerisk identifikator for statusen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1323 +msgid "Limit response to comments published before a given ISO8601 compliant date." +msgstr "Begrens svar til kommentarer publisert før en gitt dato formatert i henhold til ISO8601." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1294 +msgid "Limit response to comments published after a given ISO8601 compliant date." +msgstr "Begrens svar til kommentarer publisert etter en gitt dato formatert i henhold til ISO8601." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1261 +msgid "Avatar URLs for the user." +msgstr "Avatar-URLer for brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1214 +msgid "Roles assigned to the user." +msgstr "Roller tilordnet brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1191 +msgid "The nickname for the user." +msgstr "Kallenavnet til brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1185 +msgid "Locale for the user." +msgstr "Spåket til brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1178 +msgid "Author URL of the user." +msgstr "Forfatter-URLen til brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1173 +msgid "Description of the user." +msgstr "Beskrivelse av brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1167 +msgid "URL of the user." +msgstr "URL til brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1152 +msgid "Last name for the user." +msgstr "Etternavnet til brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1136 +msgid "Display name for the user." +msgstr "Visningsnavnet til brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1144 +msgid "First name for the user." +msgstr "Fornavnet til brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1127 +msgid "Login name for the user." +msgstr "Innloggingsnavnet til brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:706 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:740 +msgid "The user cannot be deleted." +msgstr "Brukeren kan ikke slettes." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:472 +msgid "Error creating new user." +msgstr "Feil under opprettelse av ny bruker." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:863 +msgid "The parent term ID." +msgstr "ID til foreldretermen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:833 +msgid "HTML title for the term." +msgstr "HTML-tittel for termen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:826 +msgid "URL of the term." +msgstr "URL til termen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:582 +msgid "The term cannot be deleted." +msgstr "Termen kan ikke slettes." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:377 +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:484 +msgid "Parent term doesn't exist." +msgstr "Foreldretermen eksisterer ikke." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:371 +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:478 +msgid "Can not set parent term, taxonomy is not hierarchical." +msgstr "Kan ikke sette foreldreterm. Taksonomien er ikke hierarkisk." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:324 +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:456 +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:545 +msgid "Term doesn't exist." +msgstr "Termen eksisterer ikke." + +#: wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php:262 +msgid "The title for the taxonomy." +msgstr "Tittelen for taksonomien." + +#: wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php:280 +msgid "Types associated with the taxonomy." +msgstr "Typer knyttet til taksonomien." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php:231 +msgid "The title for the post type." +msgstr "Tittelen for innleggstypen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php:126 +msgid "Cannot view post type." +msgstr "Kan ikke vise denne innleggstypen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php:251 +msgid "The title for the status." +msgstr "Tittelen på statusen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php:134 +msgid "Cannot view status." +msgstr "Kan ikke vise status." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php:128 +#: wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php:180 +msgid "Invalid status." +msgstr "Ugyldig status." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:463 +msgid "URL to the original attachment file." +msgstr "URL til den originale vedleggsfilen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:443 +msgid "The attachment MIME type." +msgstr "MIME-typen for vedlegget." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:435 +msgid "Attachment type." +msgstr "Vedleggstype." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:413 +msgid "The attachment description." +msgstr "Vedleggsbeskrivelsen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:391 +msgid "The attachment caption." +msgstr "Bildeteksten for vedlegget." + +#: wp-includes/option.php:1811 +msgid "Default post category." +msgstr "Standard innleggskategori." + +#: wp-includes/option.php:1737 +msgid "Site tagline." +msgstr "Sidens slagord." + +#. translators: Theme author name +#: wp-includes/customize/class-wp-customize-theme-control.php:92 +msgctxt "theme author" +msgid "By %s" +msgstr "Av %s" + +#. translators: New user notification email subject. 1: Network name, 2: New +#. user login +#: wp-includes/ms-functions.php:944 +msgctxt "New user notification email subject" +msgid "[%1$s] Activate %2$s" +msgstr "[%1$s] Aktiver %2$s" + +#. translators: New site notification email subject. 1: Network name, 2: New +#. site URL +#: wp-includes/ms-functions.php:850 +msgctxt "New site notification email subject" +msgid "[%1$s] Activate %2$s" +msgstr "[%1$s] Aktiver %2$s" + +#: wp-includes/widgets.php:1236 wp-includes/widgets.php:1345 +msgid "RSS Error:" +msgstr "RSS-feil:" + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:471 +msgid "Cannot create a comment with that type." +msgstr "Kan ikke opprette en kommentar av den typen." + +#: wp-includes/post.php:3131 wp-includes/rest-api.php:1043 +msgid "Invalid date." +msgstr "Ugyldig dato." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:486 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:680 +msgid "Invalid comment content." +msgstr "Ugyldig kommentarinnhold." + +#: wp-includes/rest-api/class-wp-rest-server.php:288 +msgid "Invalid JSONP callback function." +msgstr "Ugyldig JSONP-tilbakekallingsfunksjon." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:576 +#: wp-includes/rest-api.php:1053 +msgid "Invalid email address." +msgstr "Ugyldig e-post adresse." + +#: wp-includes/post.php:3411 +msgid "Invalid page template." +msgstr "Ugyldig sidemal." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:584 +msgid "Invalid slug." +msgstr "Ugyldig permalenke." + +#: wp-includes/theme.php:1388 +msgid "Video is playing." +msgstr "Videoen spilles." + +#: wp-includes/theme.php:1387 +msgid "Video is paused." +msgstr "Videoen er satt på pause." + +#: wp-includes/theme.php:1946 +msgctxt "Theme starter content" +msgid "Archives" +msgstr "Arkiver" + +#: wp-includes/theme.php:2063 +msgctxt "Theme starter content" +msgid "This is an example of a homepage section. Homepage sections can be any page other than the homepage itself, including the page that shows your latest blog posts." +msgstr "Dette er et eksempel på en forsideseksjon. Forsideseksjoner kan være en hvilken som helst side unntatt selve forsiden, inkludert siden som viser de siste blogginnleggene." + +#: wp-includes/theme.php:2057 +msgctxt "Theme starter content" +msgid "News" +msgstr "Nyheter" + +#: wp-includes/theme.php:2044 +msgctxt "Theme starter content" +msgid "You might be an artist who would like to introduce yourself and your work here or maybe you’re a business with a mission to describe." +msgstr "Du kan være en kunstner som ønsker å introdusere deg selv og ditt arbeid her, eller kanskje du er et selskap med et mål å beskrive." + +#: wp-includes/theme.php:2049 +msgctxt "Theme starter content" +msgid "This is a page with some basic contact information, such as an address and phone number. You might also try a plugin to add a contact form." +msgstr "Dette er en side med noe grunnleggende kontaktinformasjon, slik som en adresse og et telefonnummer. Du kan også prøve en utvidelse for å legge til et kontaktskjema." + +#: wp-includes/theme.php:1961 +msgctxt "Theme starter content" +msgid "Recent Posts" +msgstr "Nylige innlegg" + +#: wp-includes/theme.php:1958 +msgctxt "Theme starter content" +msgid "Recent Comments" +msgstr "Nylige kommentarer" + +#: wp-includes/theme.php:2039 +msgctxt "Theme starter content" +msgid "Welcome to your site! This is your homepage, which is what most visitors will see when they come to your site for the first time." +msgstr "Velkommen til siden! Dette er hjemmesiden, som er det de fleste besøkende vil se når de kommer til siden din for første gang." + +#: wp-includes/theme.php:1949 +msgctxt "Theme starter content" +msgid "Calendar" +msgstr "Kalender" + +#: wp-includes/theme.php:1955 +msgctxt "Theme starter content" +msgid "Meta" +msgstr "Meta" + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:658 +msgid "Sorry, you are not allowed to change the comment type." +msgstr "Beklager, du har ikke lov til å endre kommentartypen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1034 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1044 +msgid "Sorry, you are not allowed to give users that role." +msgstr "Beklager, du har ikke lov til å gi brukere den rollen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:184 +msgid "Sorry, you are not allowed to order users by this parameter." +msgstr "Beklager, du har ikke lov til å sortere brukere etter dette parameteret." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:176 +msgid "Sorry, you are not allowed to filter users by role." +msgstr "Beklager, du har ikke lov til å filtrere brukere etter rolle." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:748 +msgid "Sorry, you are not allowed to delete this comment." +msgstr "Beklager, du har ikke lov til å slette denne kommentaren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:353 +msgid "Sorry, you are not allowed to create new terms." +msgstr "Beklager, du har ikke lov til å opprette nye termer." + +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:126 +msgid "Sorry, you are not allowed to view revisions of this post." +msgstr "Beklager, du har ikke lov til å se revisjoner for dette innlegget." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:437 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:441 +msgid "Sorry, you are not allowed to create a comment on this post." +msgstr "Beklager, du har ikke lov til å opprette kommentarer for dette innlegget." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:428 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:433 +msgid "Sorry, you are not allowed to create this comment without a post." +msgstr "Beklager, du har ikke lov til å opprette denne kommentaren uten et innlegg." + +#. translators: %s: request parameter +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:404 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:413 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:422 +msgid "Sorry, you are not allowed to edit '%s' for comments." +msgstr "Beklager, du har ikke lov til å redigere «%s» for kommentarer." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:120 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:331 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:445 +msgid "Sorry, you are not allowed to read the post for this comment." +msgstr "Beklager, du har ikke lov til å lese innlegget for denne kommentaren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:327 +msgid "Sorry, you are not allowed to read this comment." +msgstr "Beklager, du har ikke lov til å lese denne kommentaren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:122 +msgid "Sorry, you are not allowed to read comments without a post." +msgstr "Beklager, du har ikke lov til å lese kommentaren uten et innlegg." + +#: wp-includes/theme.php:2031 +msgctxt "Theme starter content" +msgid "YouTube" +msgstr "YouTube" + +#: wp-includes/theme.php:2019 +msgctxt "Theme starter content" +msgid "Pinterest" +msgstr "Pinterest" + +#: wp-includes/theme.php:2003 +msgctxt "Theme starter content" +msgid "Foursquare" +msgstr "Foursquare" + +#: wp-includes/theme.php:2015 +msgctxt "Theme starter content" +msgid "LinkedIn" +msgstr "LinkedIn" + +#: wp-includes/theme.php:2007 +msgctxt "Theme starter content" +msgid "GitHub" +msgstr "GitHub" + +#: wp-includes/theme.php:1942 +msgctxt "Theme starter content" +msgid "About This Site" +msgstr "Om dette nettstedet" + +#: wp-includes/theme.php:1943 +msgctxt "Theme starter content" +msgid "This may be a good place to introduce yourself and your site or include some credits." +msgstr "Dette kan være et godt sted å introdusere deg selv og ditt nettsted." + +#. translators: %s: custom field key +#: wp-includes/rest-api/fields/class-wp-rest-meta-fields.php:183 +#: wp-includes/rest-api/fields/class-wp-rest-meta-fields.php:219 +#: wp-includes/rest-api/fields/class-wp-rest-meta-fields.php:291 +msgid "Sorry, you are not allowed to edit the %s custom field." +msgstr "Beklager, du har ikke lov til å redigere det egendefinerte feltet %s." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:470 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:607 +msgid "Sorry, you are not allowed to assign the provided terms." +msgstr "Beklager, du har ikke lov til å tilordne de oppgitte termene." + +#: wp-includes/class-wp-xmlrpc-server.php:1273 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:462 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:603 +msgid "Sorry, you are not allowed to make posts sticky." +msgstr "Beklager, du har ikke lov til å gjøre innlegg klebrige." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:94 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:129 +msgid "Reassign the deleted user's posts and links to this user ID." +msgstr "Tilordne den slettede brukerens innlegg og lenker til denne bruker-IDen." + +#: wp-includes/class-wp-customize-manager.php:3843 +msgid "This theme doesn't support video headers on this page. Navigate to the front page or another page that supports video headers." +msgstr "Dette temaet støtter ikke toppvideoer på denne siden. Naviger til forsiden eller en annen side som har støtte for toppvideoer." + +#: wp-includes/class-wp-customize-manager.php:3923 +#: wp-includes/class-wp-customize-manager.php:3926 +msgid "Select Video" +msgstr "Velg video" + +#: wp-includes/class-wp-customize-manager.php:3924 +msgid "Change Video" +msgstr "Endre video" + +#: wp-includes/class-wp-customize-manager.php:3925 +msgid "No video selected" +msgstr "Ingen video valgt" + +#: wp-includes/class-wp-customize-manager.php:3927 +msgid "Choose Video" +msgstr "Velg video" + +#: wp-includes/theme.php:2062 +msgctxt "Theme starter content" +msgid "A homepage section" +msgstr "En forsideseksjon" + +#: wp-includes/theme.php:2048 +msgctxt "Theme starter content" +msgid "Contact" +msgstr "Kontakt oss" + +#: wp-includes/theme.php:2043 +msgctxt "Theme starter content" +msgid "About" +msgstr "Om oss" + +#: wp-includes/theme.php:2011 +msgctxt "Theme starter content" +msgid "Instagram" +msgstr "Instagram" + +#: wp-includes/theme.php:2053 +msgctxt "Theme starter content" +msgid "Blog" +msgstr "Blogg" + +#: wp-includes/theme.php:2038 +msgctxt "Theme starter content" +msgid "Home" +msgstr "Hjem" + +#: wp-includes/theme.php:1995 +msgctxt "Theme starter content" +msgid "Email" +msgstr "E-post" + +#: wp-includes/theme.php:2023 +msgctxt "Theme starter content" +msgid "Twitter" +msgstr "Twitter" + +#: wp-includes/theme.php:1999 +msgctxt "Theme starter content" +msgid "Facebook" +msgstr "Facebook" + +#: wp-includes/theme.php:2027 +msgctxt "Theme starter content" +msgid "Yelp" +msgstr "Yelp" + +#: wp-includes/theme.php:1936 +msgctxt "Theme starter content" +msgid "123 Main Street" +msgstr "Hovedgata 123" + +#: wp-includes/theme.php:1938 +msgctxt "Theme starter content" +msgid "Saturday & Sunday: 11:00AM–3:00PM" +msgstr "Lørdag & søndag: 11:00–15:00" + +#: wp-includes/theme.php:1952 +msgctxt "Theme starter content" +msgid "Categories" +msgstr "Kategorier" + +#: wp-includes/theme.php:1964 +msgctxt "Theme starter content" +msgid "Search" +msgstr "Søk" + +#: wp-includes/theme.php:1937 +msgctxt "Theme starter content" +msgid "Hours" +msgstr "Åpningstider" + +#: wp-includes/theme.php:1936 +msgctxt "Theme starter content" +msgid "New York, NY 10001" +msgstr "1234 Poststedet" + +#: wp-includes/theme.php:1938 +msgctxt "Theme starter content" +msgid "Monday—Friday: 9:00AM–5:00PM" +msgstr "Mandag–fredag: 09:00–17:00" + +#: wp-includes/theme.php:1935 +msgctxt "Theme starter content" +msgid "Address" +msgstr "Adresse" + +#: wp-includes/theme.php:1933 +msgctxt "Theme starter content" +msgid "Find Us" +msgstr "Finn oss" + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1096 +msgid "Passwords cannot be empty." +msgstr "Passord kan ikke være tomme." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1100 +msgid "Passwords cannot contain the \"\\\" character." +msgstr "Passord kan ikke inneholde tegnet \"\\\"." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1067 +msgid "Username contains invalid characters." +msgstr "Brukernavn inneholder ugyldige tegn." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:161 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:455 +msgid "Invalid user parameter(s)." +msgstr "Ugyldige brukerparametere." + +#: wp-includes/script-loader.php:472 +msgctxt "label for hide controls button without length constraints" +msgid "Show Controls" +msgstr "Vis kontroller" + +#: wp-includes/script-loader.php:471 +msgctxt "label for hide controls button without length constraints" +msgid "Hide Controls" +msgstr "Skjul kontroller" + +#: wp-includes/media-template.php:329 +msgid "Document Preview" +msgstr "Dokumentforhåndsvisning" + +#: wp-includes/class-wp-customize-manager.php:3838 +msgid "Header Media" +msgstr "Toppmedia" + +#. translators: %s: add new page label +#: wp-includes/class-wp-customize-control.php:593 +msgid "+ %s" +msgstr "+ %s" + +#: wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php:289 +msgid "REST base route for the taxonomy." +msgstr "REST baserute for taksonomien." + +#: wp-includes/l10n.php:1198 +msgctxt "default site language" +msgid "Site Default" +msgstr "Standard for nettstedet" + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:421 +msgid "Description for the object, as it exists in the database." +msgstr "Beskrivelse av objektet, slik det eksisterer i databasen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:426 +msgid "HTML description for the object, transformed for display." +msgstr "HTML-beskrivelse for objektet, tilpasset for visning." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:404 +msgid "HTML caption for the attachment, transformed for display." +msgstr "HTML-beskrivelse for vedlegget, omgjort for visning." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:399 +msgid "Caption for the attachment, as it exists in the database." +msgstr "Beskrivelse for vedlegget, slik det eksisterer i databasen." + +#: wp-includes/class-wp-customize-manager.php:4119 +msgid "CSS allows you to customize the appearance and layout of your site with code. Separate CSS is saved for each of your themes. In the editing area the Tab key enters a tab character. To move below this area by pressing Tab, press the Esc key followed by the Tab key." +msgstr "CSS lar deg tilpasse utseende og layout for siden din med kode. CSS er lagret individuelt for hvert av dine temaer. I redigeringsområdet vil tabulatortasten sette inn et tabulatortegn. For å bevege deg ut av området ved å bruke tabulatortasten, trykk på Esc-tasten før tabulatortasten." + +#: wp-includes/class-wp-customize-manager.php:4308 +msgid "Please enter a valid YouTube URL." +msgstr "Vennligst legg inn en gyldig YouTube-URL." + +#: wp-includes/class-wp-customize-manager.php:3935 +msgid "Or, enter a YouTube URL:" +msgstr "Eller, legg inn en YouTube-URL:" + +#: wp-includes/script-loader.php:82 +msgid "Collapse Main menu" +msgstr "Kollaps hovedmeny" + +#: wp-includes/script-loader.php:83 +msgid "Expand Main menu" +msgstr "Utvid hovedmeny" + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:570 +msgid "Terms do not support trashing. Set force=true to delete." +msgstr "Termer kan ikke legges i papirkurven. Sett force=true for å slette." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:778 +msgid "The post does not support trashing. Set force=true to delete." +msgstr " Innlegget kunne ikke legges i papirkurven. Sett force=true for å slette." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:794 +msgid "The comment does not support trashing. Set force=true to delete." +msgstr "Kommentaren kunne ikke legges i papirkurven. Sett force=true for å slette." + +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:232 +msgid "Revisions do not support trashing. Set force=true to delete." +msgstr "Revisjoner kan ikke legges i papirkurven. Sett force=true for å slette." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:715 +msgid "Users do not support trashing. Set force=true to delete." +msgstr "Brukere kan ikke legges i papirkurven. Sett force=true for å slette." + +#: wp-includes/rest-api/class-wp-rest-request.php:692 +msgid "Invalid JSON body passed." +msgstr "Ugyldig JSON body sendt." + +#. translators: %s: taxonomy name +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2126 +msgid "Limit result set to all items except those that have the specified term assigned in the %s taxonomy." +msgstr "Begrens resultatsett til alle elementer unnatt de som har dette spesifikke begrepet tilknyttet i taksonomien %s." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:531 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:688 +msgid "Comment field exceeds maximum length allowed." +msgstr "Kommentarens innhold overgår maksimum tillatt lengde." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2100 +msgid "Limit result set to posts assigned one or more statuses." +msgstr "Begrens resultatsett til innlegg tilknyttet en eller flere statuser." + +#: wp-includes/customize/class-wp-customize-nav-menu-control.php:67 +msgid "Display Location" +msgstr "Vis plassering" + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php:243 +msgid "Taxonomies associated with post type." +msgstr "Taksonomier assosiert med innleggstype." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2090 +msgid "Limit result set to posts with one or more specific slugs." +msgstr "Begrens resultatsett til innlegg med en eller flere spesifikke permalenker." + +#: wp-includes/class-wp-xmlrpc-server.php:3557 +msgid "Comment is required." +msgstr "Kommentar er påkrevd." + +#: wp-includes/class-wp-customize-nav-menus.php:797 +msgid "Status is forbidden" +msgstr "Status er ikke tillatt" + +#: wp-includes/class-wp-customize-nav-menus.php:794 +msgid "Empty title" +msgstr "Tom tittel" + +#: wp-trackback.php:125 +msgid "We already have a ping from that URL for this post." +msgstr "Vi har allerede et ping fra denne URLen for dette innlegget." + +#: wp-trackback.php:85 +msgid "I really need an ID for this to work." +msgstr "Jeg behøver virkelig en ID for at dette skal fungere." + +#: wp-trackback.php:111 +msgid "Sorry, trackbacks are closed for this item." +msgstr "Beklager, tilbakesporinger er stengt for dette elementet." + +#: wp-includes/script-loader.php:549 +msgid "Term removed." +msgstr "Term fjernet." + +#: wp-includes/script-loader.php:548 +msgid "Term added." +msgstr "Term lagt til." + +#: wp-includes/script-loader.php:547 +msgid "Term selected." +msgstr "Term valgt." + +#: wp-includes/script-loader.php:546 +msgid "Remove term:" +msgstr "Fjern term:" + +#: wp-includes/script-loader.php:239 +msgid "Item selected." +msgstr "Element valgt." + +#. translators: %s: IP address +#: wp-includes/rest-api.php:1059 +msgid "%s is not a valid IP address." +msgstr "%s er ikke en gyldig IP-adresse." + +#. translators: 1: parameter, 2: minimum number, 3: maximum number +#: wp-includes/rest-api.php:1096 +msgid "%1$s must be between %2$d (exclusive) and %3$d (inclusive)" +msgstr "%1$s må være mellom %2$d (ekskludert) og %3$d (inkludert)" + +#. translators: 1: parameter, 2: minimum number, 3: maximum number +#: wp-includes/rest-api.php:1091 +msgid "%1$s must be between %2$d (inclusive) and %3$d (exclusive)" +msgstr "%1$s må være mellom %2$d (inkludert) og %3$d (ekskludert)" + +#. translators: 1: parameter, 2: minimum number, 3: maximum number +#: wp-includes/rest-api.php:1086 +msgid "%1$s must be between %2$d (exclusive) and %3$d (exclusive)" +msgstr "%1$s må være mellom %2$d (ekskludert) og %3$d (ekskludert)" + +#. translators: 1: parameter, 2: maximum number +#: wp-includes/rest-api.php:1077 +msgid "%1$s must be less than %2$d (exclusive)" +msgstr "%1$s må være mindre enn %2$d (ekskludert)" + +#. translators: 1: parameter, 2: maximum number +#: wp-includes/rest-api.php:1080 +msgid "%1$s must be less than %2$d (inclusive)" +msgstr "%1$s må være mindre enn %2$d (inkludert)" + +#. translators: 1: parameter, 2: minimum number +#: wp-includes/rest-api.php:1072 +msgid "%1$s must be greater than %2$d (inclusive)" +msgstr "%1$s må være mer enn %2$d (inkludert)" + +#. translators: 1: parameter, 2: minimum number +#: wp-includes/rest-api.php:1069 +msgid "%1$s must be greater than %2$d (exclusive)" +msgstr "%1$s må være mer enn %2$d (ekskludert)" + +#. translators: 1: parameter, 2: minimum number, 3: maximum number +#: wp-includes/rest-api.php:1101 +msgid "%1$s must be between %2$d (inclusive) and %3$d (inclusive)" +msgstr "%1$s må være mellom %2$d (inkludert) og %3$d (inkludert)" + +#: wp-includes/rest-api/fields/class-wp-rest-meta-fields.php:390 +msgid "Meta fields." +msgstr "Metafelt." + +#: wp-includes/rest-api/fields/class-wp-rest-meta-fields.php:254 +#: wp-includes/rest-api/fields/class-wp-rest-meta-fields.php:264 +#: wp-includes/rest-api/fields/class-wp-rest-meta-fields.php:311 +msgid "Could not update meta value in database." +msgstr "Kunne ikke oppdatere metaverdien i databasen." + +#: wp-includes/rest-api/fields/class-wp-rest-meta-fields.php:191 +msgid "Could not delete meta value from database." +msgstr "Kunne ikke slette metaverdien i databasen." + +#. translators: 1: parameter, 2: type name +#: wp-includes/rest-api.php:1003 wp-includes/rest-api.php:1021 +#: wp-includes/rest-api.php:1026 wp-includes/rest-api.php:1031 +#: wp-includes/rest-api.php:1036 +msgid "%1$s is not of type %2$s." +msgstr "%1$s er ikke av typen %2$s." + +#. translators: 1: parameter, 2: list of valid values +#: wp-includes/rest-api.php:1015 +msgid "%1$s is not one of %2$s." +msgstr "%1$s finnes ikke i %2$s" + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1237 +msgid "Any extra capabilities assigned to the user." +msgstr "Ekstra rettigheter som er tildelt brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1338 +msgid "Limit result set to users matching at least one specific role provided. Accepts csv list or single role." +msgstr "Begrens resultatsettet til brukere som har minst en av de oppgitte rollene. Aksepterer CSV-liste eller enkeltrolle." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1222 +msgid "Password for the user (never included)." +msgstr "Passord for brukeren (aldri inkludert)." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1207 +msgid "Registration date for the user." +msgstr "Registreringsdato for brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1160 +msgid "The email address for the user." +msgstr "E-postadressen til brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1231 +msgid "All capabilities assigned to the user." +msgstr "Alle rettigheter som er tildelt brukeren." + +#. translators: %s: role key +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1020 +msgid "The role %s does not exist." +msgstr "Rollen %s eksisterer ikke." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:580 +msgid "Username isn't editable." +msgstr "Brukernavn kan ikke redigeres." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:688 +msgid "Sorry, you are not allowed to delete this user." +msgstr "Beklager, du har ikke lov til å slette denne brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:726 +msgid "Invalid user ID for reassignment." +msgstr "Ugyldig bruker-ID for ny tildeling." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:396 +msgid "You are not currently logged in." +msgstr "Du er ikke innlogget." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:436 +msgid "Cannot create existing user." +msgstr "Kan ikke lage eksisterende ressurs." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:552 +msgid "Sorry, you are not allowed to edit roles of this user." +msgstr "Beklager, du har ikke lov til å redigere roller for denne brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:958 +msgid "Limit result set to terms with a specific slug." +msgstr "Begrens resultatsett til ressurser med en spesifikk permalenke." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:952 +msgid "Limit result set to terms assigned to a specific post." +msgstr "Begrens resultatsett til ressurser tilknyttet et spesifikt innlegg." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:946 +msgid "Limit result set to terms assigned to a specific parent." +msgstr "Begrens resultatsett til ressurser tilknyttet en spesifikk forelder." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:939 +msgid "Whether to hide terms not assigned to any posts." +msgstr "Hvorvidt ressurser som er tilknyttet et innlegg skal, eller ikke skal, vises." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:842 +msgid "An alphanumeric identifier for the term unique to its type." +msgstr "Den alfanumeriske identifikatoren til en ressurs som er unik for sin type." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:924 +msgid "Sort collection by term attribute." +msgstr "Sorter samling etter termattributt." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:850 +msgid "Type attribution for the term." +msgstr "Type-attribusjon for termen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1121 +msgid "Unique identifier for the user." +msgstr "Unik identifikator for brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:815 +msgid "Number of published posts for the term." +msgstr "Antall publiserte innlegg for termen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:821 +msgid "HTML description of the term." +msgstr "HTML-beskrivelse av termen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:187 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:212 +msgid "Invalid revision ID." +msgstr "Ugyldig revisjons-ID." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2192 +msgid "Status is forbidden." +msgstr "Status er forbudt." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2137 +msgid "Limit result set to items that are sticky." +msgstr "Begrens resultatsettet til elementer som er klebrige." + +#: wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php:203 +msgid "The %s property has an invalid stored value, and cannot be updated to null." +msgstr "Egenskapen %s har en ugyldig lagret verdi, og kan ikke endres til null." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:90 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:125 +msgid "Required to be true, as users do not support trashing." +msgstr "Påkreved å være sann, ettersom brukere ikke kan legges i papirkurven." + +#: wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php:311 +msgid "Limit results to taxonomies associated with a specific post type." +msgstr "Begrens resultater til taksonomier assosiert med en spesifikk innleggstype." + +#: wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php:274 +msgid "Whether or not the term cloud should be displayed." +msgstr "Hvorvidt ordskyen for termene skal vises eller ikke." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2072 +msgid "Limit result set to those of particular parent IDs." +msgstr "Begrens resultatsettet til de som tilhører bestemte foreldre-IDer" + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1990 +msgid "Limit result set to posts assigned to specific authors." +msgstr "Begrens resultatsett til innlegg tilknyttet spesifikke forfattere." + +#. translators: %s: taxonomy name +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2116 +msgid "Limit result set to all items that have the specified term assigned in the %s taxonomy." +msgstr "Begrens resultatsettet til alle elementer som har en bestemt term tildelt i taknosomien %s." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2033 +msgid "Limit result set to posts with a specific menu_order value." +msgstr "Begrens resultatsett til innlegg med en spesifikk verdi for menu_order." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1347 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2039 +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:908 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1306 +msgid "Offset the result set by a specific number of items." +msgstr "Forskyv resultatsettet med et bestemt antall elementer." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1998 +msgid "Ensure result set excludes posts assigned to specific authors." +msgstr "Forsikre at resultatsettet ekskluderer innlegg tilordnet spesifikke forfattere." + +#. translators: %s: taxonomy name +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1957 +msgid "The terms assigned to the object in the %s taxonomy." +msgstr "Termene tilordnet objektet i taksonomien %s." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1333 +msgid "Limit result set to users with a specific slug." +msgstr "Begrens resultatsett til brukere med spesifikk permalenke." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2080 +msgid "Limit result set to all items except those of a particular parent ID." +msgstr "Begrens resultatsett til alle elementer unntatt de med en spesifikk foreldre-ID." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1923 +msgid "The format for the object." +msgstr "Formatet for objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1905 +msgid "Whether or not the object can be pinged." +msgstr "Hvorvidt objektet kan pinges." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1946 +msgid "The theme file to use to display the object." +msgstr "Temafilen som skal brukes for å vise objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1728 +msgid "A password to protect access to the content and excerpt." +msgstr "Et passord for å beskytte tilgangen til innholdet og utdraget." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1914 +msgid "The order of the object in relation to other object of its type." +msgstr "Rekkefølgen for objektet i forhold til andre objekter av samme type." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1939 +msgid "Whether or not the object should be treated as sticky." +msgstr "Hvorvidt objektet skal behandles som klebrig eller ikke." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1874 +msgid "HTML excerpt for the object, transformed for display." +msgstr "HTML-utdrag for objektet, omgjort for visning." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1891 +msgid "The ID of the featured media for the object." +msgstr "ID-en for det fremhevede mediet for objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1880 +msgid "Whether the excerpt is protected with a password." +msgstr "Hvorvidt utdraget er passordbeskyttet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1899 +msgid "Whether or not comments are open on the object." +msgstr "Hvorvidt objektet er åpent for kommentarer." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1799 +msgid "The title for the object." +msgstr "Tittelen på objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1861 +msgid "The excerpt for the object." +msgstr "Utdraget for objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1807 +msgid "Title for the object, as it exists in the database." +msgstr "Tittelen for objektet, som den eksisterer i databasen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1722 +msgid "Type of Post for the object." +msgstr "Innleggstype for objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1716 +msgid "A named status for the object." +msgstr "En navngitt status for objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1869 +msgid "Excerpt for the object, as it exists in the database." +msgstr "Utdrag for objektet, som det eksisterer i databasen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1842 +msgid "Whether the content is protected with a password." +msgstr "Hvorvidt innholdet er passordbeskyttet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1853 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:402 +msgid "The ID for the author of the object." +msgstr "ID-en til objektforfatteren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1812 +msgid "HTML title for the object, transformed for display." +msgstr "HTML-tittelen til objektet, omgjort for visning." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1708 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:446 +msgid "An alphanumeric identifier for the object unique to its type." +msgstr "En alfanumerisk identifikator for objektet, unik for dens type." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1211 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1655 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:413 +msgid "The date the object was published, as GMT." +msgstr "Datoen objektet ble publisert, som GMT." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1701 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:435 +msgid "The date the object was last modified, as GMT." +msgstr "Datoen objektet sist ble endret, som GMT." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1205 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1649 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:407 +msgid "The date the object was published, in the site's timezone." +msgstr "Datoen objektet ble publisert, i nettstedets tidssone." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1694 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:429 +msgid "The date the object was last modified, in the site's timezone." +msgstr "Datoen objektet sist ble endret, i nettstedets tidssone." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1667 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:419 +msgid "GUID for the object, as it exists in the database." +msgstr "GUID for objektet, som den eksisterer i databasen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1661 +msgid "The globally unique identifier for the object." +msgstr "Den globalt unike identifikatoren for objektet," + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1017 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:144 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:182 +msgid "Invalid post parent ID." +msgstr "Ugyldig foreldreinnlegg-id" + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:999 +msgid "A sticky post can not be password protected." +msgstr "Et klebrig innlegg kan ikke passordbeskyttes." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1006 +msgid "A password protected post can not be set to sticky." +msgstr "Et passordbeskyttet innlegg kan ikke gjøres klebrig." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1673 +msgid "GUID for the object, transformed for display." +msgstr "GUID for objektet, omgjort for visning." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1108 +msgid "Invalid featured media ID." +msgstr "Ugyldig ID for fremhevet media." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:995 +msgid "A post can not be sticky and have a password." +msgstr "Et innlegg kan ikke være klebrig og ha et passord." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:487 +msgid "Cannot create existing post." +msgstr "Kan ikke opprette eksisterende innlegg." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:783 +msgid "The post has already been deleted." +msgstr "Innlegget har allerede blitt slettet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:419 +msgid "Sorry, you are not allowed to create new users." +msgstr "Beklager, du har ikke lov til å opprette nye brukere." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:128 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:321 +msgid "Sorry, you are not allowed to edit comments." +msgstr "Beklager, du har ikke lov til å redigere kommentarer." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:73 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:95 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1420 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:88 +msgid "The password for the post if it is password protected." +msgstr "Passordet for innlegget hvis det er passordbeskyttet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:368 +msgid "Incorrect post password." +msgstr "Feil innleggspassord." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:148 +msgid "You need to define a search term to order by relevance." +msgstr "Du må definere et søkeord for å sortere etter relevans." + +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1199 +msgid "An alphanumeric identifier for the user." +msgstr "En alfanumerisk identifikator for brukeren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php:238 +msgid "All capabilities used by the taxonomy." +msgstr "Alle rettigheter som er brukt av taksonomien." + +#: wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php:244 +msgid "A human-readable description of the taxonomy." +msgstr "En brukervennlig beskrivelse av taksonomien." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php:263 +msgid "Whether posts with this status should be protected." +msgstr "Hvorvidt innlegg med denne statusen skal være beskyttet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php:275 +msgid "Whether posts with this status should be publicly-queryable." +msgstr "Hvorvidt innlegg med denne statusen skal være offentlig tilgjengelig." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php:281 +msgid "Whether to include posts in the edit listing for their post type." +msgstr "Hvorvidt innlegg skal inkluderes i redigeringsoppføringen for deres innleggstype." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php:269 +msgid "Whether posts of this status should be shown in the front end of the site." +msgstr "Hvorvidt innlegg med denne statusen skal vises på nettstedet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php:250 +msgid "Whether or not the taxonomy should have children." +msgstr "Hvorvidt taksonomien skal ha døtre." + +#: wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php:256 +msgid "Human-readable labels for the taxonomy for various contexts." +msgstr "Brukervennlige etiketter for taksonomien for forskjellige kontekster." + +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:325 +msgid "Maximum number of items to be returned in result set." +msgstr "Maksimalt antall elementer returnert i resultatsettet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:317 +msgid "Current page of the collection." +msgstr "Gjeldende side for samlingen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:334 +msgid "Limit results to those matching a string." +msgstr "Begrens resultater til de som samsvarer med en streng." + +#: wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php:257 +msgid "Whether posts with this status should be private." +msgstr "Hvorvidt innlegg med denne statusen skal være private." + +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:55 +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:68 +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:81 +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:94 +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:107 +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:120 +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:133 +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:146 +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:159 +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:172 +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:185 +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:199 +msgid "Method '%s' not implemented. Must be overridden in subclass." +msgstr "Metoden «%s» er ikke implementert. Den må overstyres i en subklasse." + +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:355 +msgid "Scope under which the request is made; determines fields present in response." +msgstr "Virkeområdet hvor forespørselen gjøres. Avgjør felt i reponsen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1413 +msgid "Limit result set to comments assigned a specific type. Requires authorization." +msgstr "Begrens resultatsett til kommentarer tilknyttet en spesifikk type. Krever tilgang." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1405 +msgid "Limit result set to comments assigned a specific status. Requires authorization." +msgstr "Begrens resultatsett til kommentarer tilknyttet en spesifikk status. Krever tilgang." + +#: wp-includes/rest-api/endpoints/class-wp-rest-controller.php:42 +msgid "The register_routes() method must be overridden" +msgstr "Metoden register_routes() må overstyres" + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1396 +msgid "Limit result set to comments assigned to specific post IDs." +msgstr "Begrens resultatsett til kommentarer tilordnet spesifikke innleggs-IDer." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1387 +msgid "Ensure result set excludes specific parent IDs." +msgstr "Forsikre at resultatsettet ekskluderer spesifikke foreldre-IDer." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1378 +msgid "Limit result set to comments of specific parent IDs." +msgstr "Begrens resultatsett til kommentarer med spesifikke foreldre-IDer." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1362 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2051 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1319 +msgid "Sort collection by object attribute." +msgstr "Sorter samling etter objektattributt." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1352 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2044 +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:914 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1312 +msgid "Order sort attribute ascending or descending." +msgstr "Sorter attributter i stigende eller synkende rekkefølge." + +#. translators: %d: avatar image size in pixels +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1259 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1253 +msgid "Avatar URL with image size of %d pixels." +msgstr "Avatar-URL med en bildestørrelse på %d piksler." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1244 +msgid "Type of Comment for the object." +msgstr "Type kommentar for objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1267 +msgid "Avatar URLs for the object author." +msgstr "Avatar-URLer for objektforfatteren." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1338 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2023 +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:898 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1297 +msgid "Limit result set to specific IDs." +msgstr "Begrens resultatsett til spesifikke ID-er." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1317 +msgid "Limit result set to that from a specific author email. Requires authorization." +msgstr "Begrens resultatsett til de fra en spesifikk forfatters e-postadresse. Krever tilgang." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1300 +msgid "Limit result set to comments assigned to specific user IDs. Requires authorization." +msgstr "Begrens resultatsett til kommentarer tilknyttet spesifikke bruker-ID-er. Krever tilgang." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2008 +msgid "Limit response to posts published before a given ISO8601 compliant date." +msgstr "Begrens svar til innlegg publisert før en gitt dato formatert i henhold til ISO8601." + +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1983 +msgid "Limit response to posts published after a given ISO8601 compliant date." +msgstr "Begrens svar til innlegg publisert etter en gitt dato formatert i henhold til ISO8601." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1329 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:2014 +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:889 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:1288 +msgid "Ensure result set excludes specific IDs." +msgstr "Forsikre at resultatsettet ekskluderer spesifikke ID-er." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1308 +msgid "Ensure result set excludes comments assigned to specific user IDs. Requires authorization." +msgstr "Forsikre at resultatsett ekskluderer kommentarer tilordnet spesifikke bruker-IDer. Krever tilgang." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1217 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1687 +msgid "URL to the object." +msgstr "URL til objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1184 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1823 +msgid "The content for the object." +msgstr "Innholdet for objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1197 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1836 +msgid "HTML content for the object, transformed for display." +msgstr "HTML-innhold for objektet, tilpasset for visning." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1192 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1831 +msgid "Content for the object, as it exists in the database." +msgstr "Innhold for objektet, slik det eksisterer i databasen." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1224 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1739 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:441 +msgid "The ID for the parent of the object." +msgstr "ID-en til dette objektets forelder." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1230 +msgid "The ID of the associated post object." +msgstr "ID-en til det assosierte innleggsobjektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1236 +msgid "State of the object." +msgstr "Status for objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1176 +msgid "User agent for the object author." +msgstr "Brukeragent for objektets forfatter." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1170 +msgid "URL for the object author." +msgstr "URL for objektets forfatter." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1063 +msgid "Invalid comment author ID." +msgstr "Ugyldig ID for kommentarforfatter." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:807 +msgid "The comment cannot be deleted." +msgstr "Kommentaren kan ikke slettes." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:798 +msgid "The comment has already been trashed." +msgstr "Kommentaren har allerede blitt lagt i papirkurven." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1162 +msgid "Display name for the object author." +msgstr "Vis navnet til objektets forfatter." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1156 +msgid "IP address for the object author." +msgstr "IP-adresse til objektets forfatter." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1146 +msgid "Email address for the object author." +msgstr "E-postadresse til objektets forfatter." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1141 +msgid "The ID of the user object, if author was a user." +msgstr "ID-en til brukerobjektet, hvis forfatter var en bruker." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:1135 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:1681 +#: wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php:424 +msgid "Unique identifier for the object." +msgstr "Unik identifikator til objektet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:694 +msgid "Updating comment failed." +msgstr "Oppdatering av kommentar feilet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:672 +msgid "Updating comment status failed." +msgstr "Oppdatering av kommentarstatus feilet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:466 +msgid "Cannot create existing comment." +msgstr "Kan ikke opprette eksisterende kommentar." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:566 +msgid "Creating comment failed." +msgstr "En feil oppsto under opprettelse av kommentar." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:512 +msgid "Creating a comment requires valid author name and email values." +msgstr "Opprettelse av en kommentar krever gyldige verdier for forfatternavn og e-post." + +#: wp-includes/comment.php:3062 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:379 +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:396 +msgid "Sorry, you must be logged in to comment." +msgstr "Beklager, du må være innlogget for å kommentere." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:150 +msgid "Query parameter not permitted: %s" +msgstr "Søkeargumentet er ikke tillatt: %s" + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:491 +msgid "No Content-Type supplied." +msgstr "Ingen Content-Type oppgitt." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:487 +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:687 +msgid "No data supplied." +msgstr "Ingen data oppgitt." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:495 +msgid "No Content-Disposition supplied." +msgstr "Ingen Content-Disposition oppgitt." + +#: wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php:92 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:107 +msgid "Whether to bypass trash and force deletion." +msgstr "Hvorvidt man skal hoppe over papirkurven og tvinge sletting." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:649 +msgid "Limit result set to attachments of a particular MIME type." +msgstr "Begrens resultatsett til vedlegg av en spesifikk MIME-type." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:642 +msgid "Limit result set to attachments of a particular media type." +msgstr "Begrens resultatsett til vedlegg av en spesifikk media-type." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:457 +msgid "The ID for the associated post of the attachment." +msgstr "ID-en for vedleggets tilknyttede innlegg." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:526 +msgid "Could not open file handle." +msgstr "Kunne ikke åpne filhåndtak." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:510 +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:697 +msgid "Content hash did not match expected." +msgstr "Innholds-hash matchet ikke det som var forventet." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:501 +msgid "Invalid Content-Disposition supplied. Content-Disposition needs to be formatted as `attachment; filename=\"image.png\"` or similar." +msgstr "Ugyldig innholdsdisposisjon gitt. Innholdsdisposisjonen må være formatert som `attachment; filename=\"bilde.png\"` eller liknende." + +#: wp-includes/post.php:1384 +msgid "Page Attributes" +msgstr "Sideattributter" + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:70 +msgid "Sorry, you are not allowed to upload media on this site." +msgstr "Beklager, du har ikke lov til å laste opp mediefiler til dette nettstedet." + +#: wp-includes/rest-api/class-wp-rest-server.php:267 +msgid "The REST API can no longer be completely disabled, the rest_authentication_errors can be used to restrict access to the API, instead." +msgstr "REST API-et kan ikke lenger bli deaktivert helt. Istedet kan man bruke rest_authentication_errors for å begrense tilgang." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:98 +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:205 +msgid "Invalid parent type." +msgstr "Ugyldig foreldretype." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:79 +msgid "Sorry, you are not allowed to upload media to this post." +msgstr "Beklager, du har ikke lov til å laste opp mediefiler til dette innlegget." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:382 +msgid "Alternative text to display when attachment is not displayed." +msgstr "Alternativ visningstekst når vedlegget ikke vises." + +#: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:450 +msgid "Details about the media file, specific to its type." +msgstr "Detaljer om mediefilen, spesifikk for dens type." + +#: wp-includes/post.php:1377 +msgid "View Pages" +msgstr "Vis sider" + +#: wp-includes/post.php:160 +msgid "Add New Changeset" +msgstr "Legg til nytt endringssett" + +#: wp-includes/post.php:163 +msgid "View Changeset" +msgstr "Vis endringssett" + +#: wp-includes/post.php:166 +msgid "No changesets found." +msgstr "Ingen endringssett funnet." + +#: wp-includes/post.php:161 +msgid "New Changeset" +msgstr "Nytt endringssett" + +#: wp-includes/post.php:165 +msgid "Search Changesets" +msgstr "Søk i endringssett" + +#: wp-includes/post.php:167 +msgid "No changesets found in Trash." +msgstr "Ingen endringssett funnet i papirkurven." + +#: wp-includes/post.php:164 +msgid "All Changesets" +msgstr "Alle endringssett" + +#: wp-includes/post.php:162 +msgid "Edit Changeset" +msgstr "Rediger endringssett" + +#: wp-includes/post.php:1377 +msgid "View Posts" +msgstr "Vis innlegg" + +#: wp-includes/post.php:1384 +msgid "Post Attributes" +msgstr "Innleggsattributter" + +#: wp-includes/post.php:158 +msgctxt "add new on admin bar" +msgid "Changeset" +msgstr "Endringssett" + +#: wp-includes/post.php:156 +msgctxt "post type singular name" +msgid "Changeset" +msgstr "Endringssett" + +#: wp-includes/post.php:157 +msgctxt "admin menu" +msgid "Changesets" +msgstr "Endringssett" + +#: wp-includes/post.php:155 +msgctxt "post type general name" +msgid "Changesets" +msgstr "Endringssett" + +#: wp-includes/post.php:159 +msgctxt "Customize Changeset" +msgid "Add New" +msgstr "Legg til nytt" + +#: wp-includes/post.php:69 +msgid "Attachment Attributes" +msgstr "Vedleggsattributter" + +#: wp-includes/post.php:126 wp-includes/post.php:127 +msgid "Custom CSS" +msgstr "Tilpasset CSS" + +#. translators: post revision title: 1: author avatar, 2: author name, 3: time +#. ago, 4: date +#: wp-includes/post-template.php:1742 +msgid "%1$s %2$s, %3$s ago (%4$s)" +msgstr "%1$s %2$s, %3$s siden (%4$s)" + +#: wp-includes/option.php:1844 +msgid "Allow people to post comments on new articles." +msgstr "Tillat besøkende å kommentere på nye artikler." + +#: wp-includes/option.php:1957 +msgid "$sanitize_callback is deprecated. The callback from register_setting() is used instead." +msgstr "$sanitize_callback er utgått. Callback fra register_setting() blir brukt istedenfor." + +#: wp-includes/option.php:1907 wp-includes/option.php:1912 +#: wp-includes/option.php:1943 wp-includes/option.php:1948 +msgid "The \"%s\" options group has been removed. Use another settings group." +msgstr "Gruppen for valg med navnet \"%s\" har blitt fjernet. Bruk en annen gruppe med innstillinger." + +#: wp-includes/option.php:1777 +msgid "A date format for all date strings." +msgstr "Et datoformat for alle datostrenger." + +#: wp-includes/option.php:1817 +msgid "Default post format." +msgstr "Standard innleggsformat." + +#: wp-includes/option.php:1804 +msgid "Convert emoticons like :-) and :-P to graphics on display." +msgstr "Konverter emotikon som :-) og :-P til grafikk når de vises." + +#: wp-includes/option.php:1797 +msgid "WordPress locale code." +msgstr "Språkkode for WordPress." + +#: wp-includes/option.php:1823 +msgid "Blog pages show at most." +msgstr "Blogg-sider viser på det meste." + +#: wp-includes/option.php:1789 +msgid "A day number of the week that the week should start on." +msgstr "Et nummer tilsvarende ukedagen som uka skal starte på." + +#: wp-includes/option.php:1783 +msgid "A time format for all time strings." +msgstr "Et tidsformat for alle tids-strenger." + +#: wp-includes/option.php:1834 +msgid "Allow link notifications from other blogs (pingbacks and trackbacks) on new articles." +msgstr "Tillat lenkevarslinger fra andre blogger (tilbakesporinger og tilbaketråkk) på nye artikler." + +#: wp-includes/option.php:1771 +msgid "A city in the same timezone as you." +msgstr "En by i samme tidssone som deg." + +#: wp-includes/general-template.php:408 wp-login.php:535 wp-login.php:899 +msgid "Username or Email Address" +msgstr "Brukernavn eller e-postadresse" + +#: wp-includes/link-template.php:2534 +msgctxt "previous set of posts" +msgid "Previous" +msgstr "Forrige" + +#: wp-includes/media.php:3450 +msgid "Search media items..." +msgstr "Søk i medieelementer..." + +#: wp-includes/option.php:1729 +msgid "Site title." +msgstr "Nettstedstittel." + +#: wp-includes/link-template.php:2535 +msgctxt "next set of posts" +msgid "Next" +msgstr "Neste" + +#: wp-includes/functions.php:1225 +msgid "ERROR: This is not a valid feed." +msgstr "FEIL: Dette er ikke en gyldig feed." + +#: wp-includes/customize/class-wp-customize-selective-refresh.php:190 +msgid "Click to edit this element." +msgstr "Klikk for å redigere dette elementet." + +#: wp-includes/customize/class-wp-customize-selective-refresh.php:189 +msgid "Click to edit the site title." +msgstr "Klikk for å redigere nettstedstittelen." + +#: wp-includes/customize/class-wp-customize-selective-refresh.php:187 +msgid "Click to edit this menu." +msgstr "Klikk for å redigere denne menyen." + +#: wp-includes/customize/class-wp-customize-selective-refresh.php:188 +msgid "Click to edit this widget." +msgstr "Klikk for å redigere denne widgeten." + +#: wp-includes/customize/class-wp-customize-header-image-control.php:176 +msgid "While you can crop images to your liking after clicking Add new image, we recommend matching the size of your video." +msgstr "Selv om du kan beskjære bilder som du vil etter å klikke Legg til bilde, anbefaler vi at du matcher størrelsen til videoen din." + +#: wp-includes/customize/class-wp-customize-custom-css-setting.php:225 +msgid "Imbalanced/unclosed character errors can be caused by content: \"\"; declarations. You may need to remove this or add it to a custom CSS file." +msgstr "Ikke-balanserte og ikke-lukkede tegn-feil kan forårsakes av content: \"\";-deklarasjoner. Du må kanskje fjerne dette eller legge det til i en tilpasset CSS-fil." + +#: wp-includes/customize/class-wp-customize-custom-css-setting.php:221 +msgid "There is an extra */, indicating an end to a comment. Be sure that there is an opening /* for every closing */." +msgstr "Det er en ekstra */, som betyr slutten på en kommentar. Forsikre deg om at det er en åpnende /* for hver lukkende */." + +#: wp-includes/customize/class-wp-customize-custom-css-setting.php:218 +msgid "There is %s unclosed code comment. Close each comment with */." +msgid_plural "There are %s unclosed code comments. Close each comment with */." +msgstr[0] "Det er %s ikke-lukket kodekommentar. Lukk hver kommentar med */." +msgstr[1] "Det er %s ikke-lukkede kodekommentarer. Lukk hver kommentar med */." + +#: wp-includes/customize/class-wp-customize-custom-css-setting.php:202 +msgid "Your double quotes \" are uneven. Make sure there is a closing \" for every opening \"." +msgstr "Dine doble hermetegn \" er ikke balanserte. Forsikre deg om at det er en lukkende \" for hver åpnende \"." + +#: wp-includes/customize/class-wp-customize-custom-css-setting.php:196 +msgid "Your single quotes ' are uneven. Make sure there is a closing ' for every opening '." +msgstr "Dine enkle hermetegn ' er ikke balanserte. Forsikre deg om at det er en lukkende ' for hver åpnende */." + +#: wp-includes/customize/class-wp-customize-custom-css-setting.php:171 +msgid "Markup is not allowed in CSS." +msgstr "Markup er ikke tillatt i CSS." + +#: wp-includes/customize/class-wp-customize-custom-css-setting.php:190 +msgid "Your parentheses () are imbalanced. Make sure there is a closing ) for every opening (." +msgstr "Dine paranteser () er ikke balanserte. Forsikre deg om at det er en lukkende ) for hver åpnende (." + +#: wp-includes/customize/class-wp-customize-custom-css-setting.php:184 +msgid "Your brackets [] are imbalanced. Make sure there is a closing ] for every opening [." +msgstr "Dine klammer [] er ikke balanserte. Forsikre deg om at det er en lukkende ] for hver åpnende [." + +#: wp-includes/customize/class-wp-customize-custom-css-setting.php:178 +msgid "Your curly brackets {} are imbalanced. Make sure there is a closing } for every opening {." +msgstr "Dine krølleparanteser {} er ikke balanserte. Forsikre deg om at det er en lukkende } for hver åpnende {." + +#: wp-includes/class-wp-xmlrpc-server.php:5427 +msgid "Sorry, your entry could not be edited." +msgstr "Beklager, oppføringen din kunne ikke redigeres." + +#: wp-includes/class-wp-xmlrpc-server.php:2495 +msgid "Invalid role." +msgstr "Ugyldig rolle." + +#: wp-includes/class-wp-xmlrpc-server.php:3477 +msgid "Sorry, the comment could not be edited." +msgstr "Beklager, kommentaren kunne ikke redigeres." + +#: wp-includes/class-wp-xmlrpc-server.php:1921 +msgid "Sorry, your term could not be created." +msgstr "Beklager, termen kunne ikke opprettes." + +#: wp-includes/class-wp-xmlrpc-server.php:2145 +msgid "Sorry, you are not allowed to assign this term." +msgstr "Beklager, du har ikke lov til å tilordne denne termen." + +#: wp-includes/class-wp-xmlrpc-server.php:2073 +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:549 +msgid "Sorry, you are not allowed to delete this term." +msgstr "Beklager, du har ikke lov til å slette denne termen." + +#: wp-includes/class-wp-xmlrpc-server.php:1982 +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:305 +#: wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php:460 +msgid "Sorry, you are not allowed to edit this term." +msgstr "Beklager, du har ikke lov til å redigere denne termen." + +#: wp-includes/class-wp-xmlrpc-server.php:1526 +#: wp-includes/class-wp-xmlrpc-server.php:4647 +#: wp-includes/class-wp-xmlrpc-server.php:5106 +msgid "Sorry, your entry could not be posted." +msgstr "Beklager, oppføringen din kunne ikke publiseres." + +#: wp-includes/class-wp-customize-widgets.php:739 +msgid "Number of widgets found: %d" +msgstr "Antall widgeter funnet: %d" + +#: wp-includes/class-wp-customize-nav-menus.php:879 +msgid "Post" +msgstr "Innlegg" + +#: wp-includes/class-wp-customize-widgets.php:740 +#: wp-includes/class-wp-customize-widgets.php:795 +msgid "No widgets found." +msgstr "Ingen widgeter funnet." + +#: wp-includes/class-wp-customize-widgets.php:735 +msgid "There are no widget areas on the page shown, however other pages in this theme do have them." +msgstr "Det er ingen widget-områder på denne siden, men andre sider i dette temaet har widgeter." + +#. translators: %1$s is the post type name and %2$s is the error message. +#: wp-includes/class-wp-customize-nav-menus.php:884 +msgid "%1$s could not be created: %2$s" +msgstr "%1$s kunne ikke opprettes: %2$s" + +#. translators: 1: .mp4, 2: .mov +#: wp-includes/class-wp-customize-manager.php:4284 +msgid "Only %1$s or %2$s files may be used for header video. Please convert your video file and try again, or, upload your video to YouTube and link it with the option below." +msgstr "Kun %1$s- eller %2$s-filer kan brukes for toppvideo. Vennligst konverter videofilen og prøv igjen, eller last opp videoen til YouTube og lenk til den med valget nedenfor." + +#: wp-includes/class-wp-customize-manager.php:4278 +msgid "This video file is too large to use as a header video. Try a shorter video or optimize the compression settings and re-upload a file that is less than 8MB. Or, upload your video to YouTube and link it with the option below." +msgstr "Denne videoen er for stor for å brukes som header-video. Prøv en kortere video eller optimaliser komprimeringen og last opp en fil igjen som er mindre enn 8MB. Eller, last opp din video til YouTube og lenk til den med valgene nedenfor." + +#: wp-includes/class-wp-customize-manager.php:4238 +msgid "Unrecognized background setting." +msgstr "Ugjenkjent bakgrunnsinnstilling." + +#: wp-includes/class-wp-customize-manager.php:4122 +msgid "(link opens in a new window)" +msgstr "(lenke åpnes i et nytt vindu)" + +#: wp-includes/class-wp-customize-manager.php:4229 +#: wp-includes/class-wp-customize-manager.php:4233 +msgid "Invalid value for background size." +msgstr "Ugyldig verdi for bakgrunnsstørrelse." + +#: wp-includes/class-wp-customize-manager.php:4121 +msgid "Learn more about CSS" +msgstr "Lær mer om CSS" + +#: wp-includes/class-wp-customize-manager.php:4225 +msgid "Invalid value for background position Y." +msgstr "Ugyldig verdi for bakgrunnsposisjon Y." + +#: wp-includes/class-wp-customize-manager.php:4221 +msgid "Invalid value for background position X." +msgstr "Ugyldig verdi for bakgrunnsposisjon X." + +#: wp-includes/class-wp-customize-manager.php:4217 +msgid "Invalid value for background attachment." +msgstr "Ugyldig verdi for festing av bakgrunnsbilde." + +#: wp-includes/class-wp-customize-manager.php:4213 +msgid "Invalid value for background repeat." +msgstr "Ugyldig verdi for repetisjon av bakgrunnsbilde." + +#: wp-includes/class-wp-customize-manager.php:4115 +msgid "Additional CSS" +msgstr "Ekstra CSS" + +#: wp-includes/class-wp-customize-manager.php:4128 +msgid "" +"You can add your own CSS here.\n" +"\n" +"Click the help icon above to learn more." +msgstr "" +"Du kan legge til din egen CSS her.\n" +"\n" +"Klikk hjelp-ikonet over for å lære mer." + +#: wp-includes/class-wp-customize-manager.php:4021 +msgid "Original" +msgstr "Original" + +#: wp-includes/class-wp-customize-manager.php:4034 +msgid "Repeat Background Image" +msgstr "Gjenta bakgrunnsbilde" + +#: wp-includes/class-wp-customize-manager.php:4002 +#: wp-includes/customize/class-wp-customize-background-position-control.php:69 +msgid "Image Position" +msgstr "Bildeposisjon" + +#: wp-includes/class-wp-customize-manager.php:3983 +#: wp-includes/class-wp-customize-manager.php:4022 +msgid "Fit to Screen" +msgstr "Tilpass til skjermen" + +#: wp-includes/class-wp-customize-manager.php:4017 +msgid "Image Size" +msgstr "Bildestørrelse" + +#: wp-includes/class-wp-customize-manager.php:3984 +msgctxt "Repeat Image" +msgid "Repeat" +msgstr "Gjenta" + +#: wp-includes/class-wp-customize-manager.php:4046 +msgid "Scroll with Page" +msgstr "Rull med side" + +#: wp-includes/class-wp-customize-manager.php:3985 +msgctxt "Custom Preset" +msgid "Custom" +msgstr "Tilpasset" + +#: wp-includes/class-wp-customize-manager.php:3981 +msgctxt "Default Preset" +msgid "Default" +msgstr "Standard" + +#: wp-includes/class-wp-customize-manager.php:3977 +msgctxt "Background Preset" +msgid "Preset" +msgstr "Mal" + +#. translators: 1: .mp4, 2: header height in pixels +#: wp-includes/class-wp-customize-manager.php:3864 +msgid "Upload your video in %1$s format and minimize its file size for best results. Your theme recommends a height of %2$s pixels." +msgstr "Last opp din video i %1$s-format og minimer filens størrelse for best resultat. Temaet ditt anbefaler en høyde på %2$s piksler." + +#. translators: 1: .mp4, 2: header width in pixels +#: wp-includes/class-wp-customize-manager.php:3857 +msgid "Upload your video in %1$s format and minimize its file size for best results. Your theme recommends a width of %2$s pixels." +msgstr "Last opp din video i %1$s-format og minimer filens størrelse for best resultat. Temaet ditt anbefaler en bredde på %2$s piksler." + +#: wp-includes/class-wp-customize-manager.php:3917 +msgid "Header Video" +msgstr "Toppvideo" + +#. translators: 1: .mp4, 2: header size in pixels +#: wp-includes/class-wp-customize-manager.php:3850 +msgid "Upload your video in %1$s format and minimize its file size for best results. Your theme recommends dimensions of %2$s pixels." +msgstr "Last opp din video i %1$s-format og minimer filens størrelse for beste resultat. Temaet ditt anbefaler at den er %2$s piksler." + +#: wp-includes/class-wp-customize-manager.php:3839 +msgid "If you add a video, the image will be used as a fallback while the video loads." +msgstr "Hvis du legger til en video, vil bildet brukes som en erstatning mens videoen lastes." + +#: wp-includes/class-wp-customize-manager.php:1984 +msgid "Setting does not exist or is unrecognized." +msgstr "Innstillingen eksisterer ikke eller kjennes ikke igjen." + +#: wp-includes/class-wp-customize-manager.php:1989 +msgid "Unauthorized to modify setting due to capability." +msgstr "Ikke autorisert til å endre på grunn av rettigheter." + +#: wp-includes/class-wp-customize-manager.php:493 +msgid "Non-existent changeset UUID." +msgstr "Ikke-eksisterende UUID for endringssett." + +#: wp-includes/class-wp-customize-manager.php:484 +msgid "Invalid changeset UUID" +msgstr "Ugyldig UUID for endringssett" + +#: wp-includes/class-wp-customize-control.php:597 +msgid "New page title…" +msgstr "Ny sidetittel…" + +#: wp-includes/class-wp-customize-control.php:596 +msgid "New page title" +msgstr "Ny sidetittel" + +#: wp-includes/class-wp-customize-manager.php:1564 +msgid "Unauthorized. You may remove the customize_messenger_channel param to preview as frontend." +msgstr "Uautorisert. Du kan fjerne customize_messenger_channel-parameteret for å forhåndsvise som frontend." + +#: wp-includes/IXR/class-IXR-message.php:48 wp-includes/atomlib.php:125 +#: wp-includes/feed.php:542 +msgid "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML extension." +msgstr "PHPs XML-utvidelse er ikke tilgjengelig. Vennligst kontakt din webhotell-leverandør for å aktivere PHPs XML-utvidelse." + +#: wp-includes/class-wp-customize-manager.php:1806 +msgid "This form is not live-previewable." +msgstr "Dette skjemaet kan ikke forhåndsvises live." + +#: wp-includes/class-wp-customize-manager.php:1805 +msgid "This link is not live-previewable." +msgstr "Denne lenken kan ikke forhåndsvises live." + +#. translators: %s: current user's display name +#: wp-includes/admin-bar.php:217 +msgid "Howdy, %s" +msgstr "Hei, %s" + #. translators: %s: Plugin name and version -#: wp-includes/script-loader.php:620 +#: wp-includes/script-loader.php:644 msgid "Update %s now" msgstr "Oppdater %s nå" #. translators: %s: Plugin name -#: wp-includes/script-loader.php:639 +#: wp-includes/script-loader.php:663 msgid "Install %s now" msgstr "Installér %s nå" @@ -49,52 +1959,52 @@ msgstr "Installér %s nå" msgid "Edit selected menu" msgstr "Rediger valgt meny" -#: wp-includes/class-wp-editor.php:1068 +#: wp-includes/class-wp-editor.php:1073 msgid "Warning: the link has been inserted but may have errors. Please test it." msgstr "Advarsel: lenken er satt inn, men kan inneholde feil. Vennligst test den." -#: wp-includes/script-loader.php:612 +#: wp-includes/script-loader.php:636 msgid "Search Results" msgstr "Søkeresultater" -#: wp-includes/class-wp-editor.php:1027 +#: wp-includes/class-wp-editor.php:1032 msgid "Rich Text Area. Press Control-Option-H for help." msgstr "Område for rik tekst. Trykk ctrl-alt-H for hjelp." -#: wp-includes/script-loader.php:362 +#: wp-includes/script-loader.php:371 msgid "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds." msgstr "Bruk venstre- og høyre-piltastene for å hoppe ett sekund, opp- og ned-piltastene for å hoppe ti sekunder." -#: wp-includes/script-loader.php:349 +#: wp-includes/script-loader.php:358 wp-includes/theme.php:1385 msgid "Pause" msgstr "Pause" -#: wp-includes/script-loader.php:357 +#: wp-includes/script-loader.php:366 msgid "Volume Slider" msgstr "Volumkontroll" -#: wp-includes/script-loader.php:348 +#: wp-includes/script-loader.php:357 wp-includes/theme.php:1386 msgid "Play" msgstr "Spill av" #. translators: %1: number of seconds (30 by default) -#: wp-includes/script-loader.php:354 +#: wp-includes/script-loader.php:363 msgid "Skip back %1 seconds" msgstr "Hopp tilbake %1 sekunder" -#: wp-includes/script-loader.php:356 +#: wp-includes/script-loader.php:365 msgid "Audio Player" msgstr "Lydavspiller" -#: wp-includes/script-loader.php:355 +#: wp-includes/script-loader.php:364 msgid "Video Player" msgstr "Videoavspiller" -#: wp-includes/script-loader.php:352 +#: wp-includes/script-loader.php:361 msgid "Time Slider" msgstr "Tidsskyver" -#: wp-includes/script-loader.php:361 +#: wp-includes/script-loader.php:370 msgid "Use Up/Down Arrow keys to increase or decrease volume." msgstr "Bruk opp- og ned-piltastene for å øke eller redusere lyden." @@ -102,101 +2012,102 @@ msgstr "Bruk opp- og ned-piltastene for å øke eller redusere lyden." msgid "Inexistent terms." msgstr "Ikke-eksisterende begreper." -#: wp-includes/taxonomy.php:2248 wp-includes/taxonomy.php:2849 +#: wp-includes/taxonomy.php:1977 wp-includes/taxonomy.php:2599 msgid "A name is required for this term." msgstr "Et navn er nødvendig for dette begrepet." -#: wp-includes/script-loader.php:678 +#: wp-includes/script-loader.php:702 msgid "Run Importer" msgstr "Kjør import" #. translators: %s: Activation URL -#: wp-includes/script-loader.php:660 +#: wp-includes/script-loader.php:684 msgid "Importer installed successfully. Run importer" msgstr "Installasjon av importør var vellykket. Kjør importør" #. translators: %s: Importer name -#: wp-includes/script-loader.php:680 +#: wp-includes/script-loader.php:704 msgid "Run %s" msgstr "Kjør %s" -#: wp-includes/script-loader.php:677 +#: wp-includes/script-loader.php:701 msgctxt "theme" msgid "Activate %s" msgstr "Aktiver %s" -#: wp-includes/script-loader.php:675 +#: wp-includes/script-loader.php:699 msgctxt "plugin" msgid "Activate %s" msgstr "Aktiver %s" #. translators: %s: Plugin name -#: wp-includes/script-loader.php:675 +#: wp-includes/script-loader.php:699 msgctxt "plugin" msgid "Network Activate %s" msgstr "Nettverksaktiver %s" #. translators: %s: Theme name -#: wp-includes/script-loader.php:677 +#: wp-includes/script-loader.php:701 msgctxt "theme" msgid "Network Activate %s" msgstr "Nettverksaktiver %s" #. translators: %s: Plugin name and version -#: wp-includes/script-loader.php:650 +#: wp-includes/script-loader.php:674 msgctxt "plugin" msgid "%s installed!" msgstr "%s installert!" #. translators: %s: Theme name and version -#: wp-includes/script-loader.php:652 +#: wp-includes/script-loader.php:676 msgctxt "theme" msgid "%s installed!" msgstr "%s installert!" #. translators: %s: Plugin name and version -#: wp-includes/script-loader.php:654 +#: wp-includes/script-loader.php:678 msgctxt "plugin" msgid "%s installation failed" msgstr "%s installasjon feilet" #. translators: %s: Theme name and version -#: wp-includes/script-loader.php:656 +#: wp-includes/script-loader.php:680 msgctxt "theme" msgid "%s installation failed" msgstr "%s installasjon feilet" #. translators: %s: Plugin name and version -#: wp-includes/script-loader.php:646 +#: wp-includes/script-loader.php:670 msgctxt "plugin" msgid "Installing %s..." msgstr "Installerer %s..." #. translators: %s: Theme name and version -#: wp-includes/script-loader.php:648 +#: wp-includes/script-loader.php:672 msgctxt "theme" msgid "Installing %s..." msgstr "Installerer %s..." -#: wp-includes/class-wp-xmlrpc-server.php:4415 +#: wp-includes/class-wp-xmlrpc-server.php:4434 msgid "Sorry, you are not allowed to access user data on this site." msgstr "Beklager, du har ikke tilgang til å se brukerdata på dette nettstedet." -#: wp-includes/script-loader.php:684 +#: wp-includes/script-loader.php:708 msgid "Number of plugins found: %d" msgstr "Antall utvidelser funnet: %d" -#: wp-includes/class-wp-xmlrpc-server.php:2418 +#: wp-includes/class-wp-xmlrpc-server.php:2421 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:548 msgid "Sorry, you are not allowed to edit this user." msgstr "Beklager, du har ikke lov til å redigere denne brukeren." -#: wp-includes/class-wp-xmlrpc-server.php:2549 -#: wp-includes/class-wp-xmlrpc-server.php:2595 +#: wp-includes/class-wp-xmlrpc-server.php:2552 +#: wp-includes/class-wp-xmlrpc-server.php:2598 msgid "Sorry, you are not allowed to edit your profile." msgstr "Beklager, du har ikke lov til å redigere profilen din." -#: wp-includes/class-wp-xmlrpc-server.php:2706 -#: wp-includes/class-wp-xmlrpc-server.php:2908 +#: wp-includes/class-wp-xmlrpc-server.php:2709 +#: wp-includes/class-wp-xmlrpc-server.php:2911 msgid "Sorry, you are not allowed to edit pages." msgstr "Beklager, du har ikke lov til å redigere sider." @@ -207,76 +2118,79 @@ msgctxt "Comment number declension: on or off" msgid "off" msgstr "off" -#: wp-includes/class-wp-theme.php:786 +#: wp-includes/class-wp-theme.php:787 msgid "Dark" msgstr "Mørk" -#: wp-includes/class-wp-theme.php:785 +#: wp-includes/class-wp-theme.php:786 msgid "Tan" msgstr "Brun" -#: wp-includes/class-wp-theme.php:789 +#: wp-includes/class-wp-theme.php:790 msgid "Photoblogging" msgstr "Fotoblogging" -#: wp-includes/class-wp-theme.php:787 +#: wp-includes/class-wp-theme.php:788 msgid "Fixed Layout" msgstr "Fast (fixed) layout" -#: wp-includes/class-wp-theme.php:787 +#: wp-includes/class-wp-theme.php:788 msgid "Fluid Layout" msgstr "Flytende (fluid) layout" -#: wp-includes/class-wp-theme.php:788 +#: wp-includes/class-wp-theme.php:789 msgid "Responsive Layout" msgstr "Responsiv layout" -#: wp-includes/class-wp-theme.php:789 +#: wp-includes/class-wp-theme.php:790 msgid "Seasonal" msgstr "Sesong" #. translators: %s: Error string for a failed installation -#: wp-includes/script-loader.php:644 +#: wp-includes/script-loader.php:668 msgid "Installation failed: %s" msgstr "Installering feilet: %s" #: wp-includes/class-wp-xmlrpc-server.php:1640 -#: wp-includes/class-wp-xmlrpc-server.php:4758 +#: wp-includes/class-wp-xmlrpc-server.php:4777 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:717 +#: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:763 msgid "Sorry, you are not allowed to delete this post." msgstr "Beklager, du har ikke lov til å slette dette innlegget." -#: wp-includes/class-wp-xmlrpc-server.php:2800 +#: wp-includes/class-wp-xmlrpc-server.php:2803 msgid "Sorry, you are not allowed to delete this page." msgstr "Beklager, du har ikke lov til å slette denne siden." -#: wp-includes/class-wp-xmlrpc-server.php:2665 -#: wp-includes/class-wp-xmlrpc-server.php:2862 +#: wp-includes/class-wp-xmlrpc-server.php:2668 +#: wp-includes/class-wp-xmlrpc-server.php:2865 msgid "Sorry, you are not allowed to edit this page." msgstr "Beklager, du har ikke lov til å redigere denne siden." #. translators: %s: Plugin name -#: wp-includes/script-loader.php:664 +#: wp-includes/script-loader.php:688 msgid "Are you sure you want to delete %s and its data?" msgstr "Er du sikker på at du vil slette %s og alt innholdet?" -#: wp-includes/script-loader.php:667 +#: wp-includes/script-loader.php:691 msgid "Deleting..." msgstr "Sletter..." #. translators: %s: Error string for a failed deletion -#: wp-includes/script-loader.php:669 +#: wp-includes/script-loader.php:693 msgid "Deletion failed: %s" msgstr "Sletting feilet: %s" -#: wp-includes/script-loader.php:670 +#: wp-includes/script-loader.php:694 msgid "Deleted!" msgstr "Slettet!" -#: wp-includes/script-loader.php:681 +#: wp-includes/class-wp-xmlrpc-server.php:3608 +#: wp-includes/script-loader.php:705 msgid "An unknown error occurred" msgstr "En ukjent feil har oppstått" -#: wp-includes/script-loader.php:952 +#: wp-includes/script-loader.php:976 msgid "Today" msgstr "I dag" @@ -285,74 +2199,70 @@ msgstr "I dag" msgid "Edit Menu" msgstr "Rediger meny" -#: wp-includes/wp-db.php:1792 wp-includes/wp-db.php:1798 +#: wp-includes/wp-db.php:1801 wp-includes/wp-db.php:1807 msgid "Unable to retrieve the error message from MySQL" msgstr "Greier ikke å hente feilmeldingen fra MySQL" #. translators: %s: site title -#: wp-login.php:233 +#: wp-login.php:230 msgctxt "site" msgid "← Back to %s" msgstr "← Tilbake til %s" -#: wp-includes/script-loader.php:666 +#: wp-includes/script-loader.php:690 msgid "Caution: These themes may be active on other sites in the network. Are you sure you want to proceed?" msgstr "Forsiktig: Disse temaene kan være aktive på andre nettsteder i nettverket. Er du helt sikker på at du vil fortsette?" -#: wp-includes/script-loader.php:665 +#: wp-includes/script-loader.php:689 msgid "Are you sure you want to delete the selected plugins and their data?" msgstr "Er du sikker på at du vil slette valgte utvidelser og deres data?" -#: wp-includes/script-loader.php:672 +#: wp-includes/script-loader.php:696 msgid "Network Activate" msgstr "Aktiver for nettverk" -#: wp-includes/script-loader.php:642 +#: wp-includes/script-loader.php:666 msgid "Install Failed!" msgstr "Installasjonen feilet!" #. translators: %s: Theme name -#: wp-includes/script-loader.php:662 +#: wp-includes/script-loader.php:686 msgid "Are you sure you want to delete %s?" msgstr "Er du sikker på at du vil slette %s?" -#: wp-includes/script-loader.php:403 -msgid "Confirm use of weak password." -msgstr "Bekreft bruk av svakt passord." - -#: wp-includes/script-loader.php:392 +#: wp-includes/script-loader.php:401 msgctxt "password strength" msgid "Password strength unknown" msgstr "Passordstyrken er ukjent" #. translators: %s: Search string -#: wp-includes/script-loader.php:611 +#: wp-includes/script-loader.php:635 msgid "Search results for “%s”" msgstr "Søkeresultat for «%s»" -#: wp-includes/script-loader.php:613 +#: wp-includes/script-loader.php:637 msgid "You do not appear to have any plugins available at this time." msgstr "Det virker ikke som at du har noen tilgjengelige utvidelser nå." -#: wp-includes/script-loader.php:614 +#: wp-includes/script-loader.php:638 msgid "Please select at least one item to perform this action on." msgstr "Vennligst velg minst én ting å gjennomføre valgte oppgave på." #. translators: %s: user name -#: wp-includes/pluggable.php:1680 +#: wp-includes/pluggable.php:1715 msgid "Password changed for user: %s" msgstr "Passordet er endret for bruker: %s" #. translators: %s: site title -#: wp-includes/pluggable.php:1685 +#: wp-includes/pluggable.php:1720 msgid "[%s] Password Changed" msgstr "[%s] Passord er endret" -#: wp-includes/script-loader.php:618 +#: wp-includes/script-loader.php:642 msgid "Update Now" msgstr "Oppdater nå" -#: wp-includes/script-loader.php:510 +#: wp-includes/script-loader.php:528 msgid "" "Are you sure you want to do this?\n" "The comment changes you made will be lost." @@ -360,123 +2270,126 @@ msgstr "" "Er du sikker på du vil gjøre dette?\n" "Alle kommentarendringene du har gjort vil bli mistet." -#: wp-includes/revision.php:549 +#: wp-includes/revision.php:550 msgid "Sorry, you are not allowed to preview drafts." msgstr "Beklager, du har ikke lov til å forhåndsvise utkast." -#: wp-includes/rest-api/class-wp-rest-server.php:882 -#: wp-includes/script-loader.php:127 wp-includes/script-loader.php:499 +#: wp-includes/rest-api/class-wp-rest-server.php:902 +#: wp-includes/script-loader.php:132 wp-includes/script-loader.php:517 msgid "Sorry, you are not allowed to do that." msgstr "Beklager, du har ikke lov til å gjøre dette." +#: wp-includes/script-loader.php:412 +msgid "Confirm use of weak password" +msgstr "Bekreft bruk av svakt passord" + #. translators: %s: Codex URL -#: wp-includes/formatting.php:4228 +#: wp-includes/formatting.php:4244 msgid "A structure tag is required when using custom permalinks. Learn more" msgstr "En struktur-tagg kreves når du bruker tilpassede permalenker. Lær mer" -#: wp-includes/formatting.php:4229 +#: wp-includes/formatting.php:4245 msgid "https://codex.wordpress.org/Using_Permalinks#Choosing_your_permalink_structure" msgstr "https://codex.wordpress.org/Using_Permalinks#Choosing_your_permalink_structure" -#: wp-includes/media-template.php:1235 +#: wp-includes/media-template.php:1239 msgid "Image crop area preview. Requires mouse interaction." msgstr "Forhåndsvisning av bildebeskjæring. Krever mus-interaksjon." -#: wp-includes/class-wp-xmlrpc-server.php:3926 -#: wp-includes/class-wp-xmlrpc-server.php:3974 -#: wp-includes/class-wp-xmlrpc-server.php:5796 +#: wp-includes/class-wp-xmlrpc-server.php:3940 +#: wp-includes/class-wp-xmlrpc-server.php:3988 +#: wp-includes/class-wp-xmlrpc-server.php:5815 msgid "Sorry, you are not allowed to upload files." msgstr "Beklager, du har ikke lov til å laste opp filer." -#: wp-includes/class-wp-xmlrpc-server.php:3059 +#: wp-includes/class-wp-xmlrpc-server.php:3062 msgid "Sorry, you are not allowed to add a category." msgstr "Beklager, du har ikke lov til å legge til kategorier." -#: wp-includes/class-wp-xmlrpc-server.php:2476 -msgid "Sorry, you are not allowed to browse users." -msgstr "Beklager, du har ikke lov til å se på brukere." +#: wp-includes/class-wp-xmlrpc-server.php:2479 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:180 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:352 +#: wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:354 +msgid "Sorry, you are not allowed to list users." +msgstr "Beklager, du har ikke lov til å liste ut brukere." -#: wp-includes/class-wp-customize-manager.php:1024 -#: wp-includes/class-wp-customize-setting.php:547 +#: wp-includes/class-wp-customize-manager.php:2012 +#: wp-includes/class-wp-customize-setting.php:549 msgid "Invalid value." msgstr "Ugyldig verdi." -#: wp-includes/class-wp-customize-manager.php:1103 +#: wp-includes/class-wp-customize-manager.php:2341 msgid "There is %s invalid setting." msgid_plural "There are %s invalid settings." msgstr[0] "Det er %s ugyldig innstilling." msgstr[1] "Det er %s ugyldige innstillinger." #. translators: URL to the widgets panel of the customizer -#: wp-includes/class-wp-customize-nav-menus.php:523 +#: wp-includes/class-wp-customize-nav-menus.php:586 msgid "You can also place menus in widget areas with the “Custom Menu” widget." msgstr "Du kan også plassere menyer i widget-områder med «Egendefinert meny»-widgeten." -#: wp-includes/class-wp-customize-manager.php:390 -#: wp-includes/script-loader.php:459 +#: wp-includes/class-wp-customize-manager.php:476 +#: wp-includes/script-loader.php:468 msgid "Sorry, you are not allowed to customize this site." msgstr "Beklager, du har ikke lov til å redigere dette nettstedet." #. translators: 1: + doing_ajax() || isset( $_POST['customized'] ) ) { return '_ajax_wp_die_handler'; } @@ -375,24 +464,43 @@ final class WP_Customize_Manager { * @since 3.4.0 */ public function setup_theme() { - send_origin_headers(); + global $pagenow; - $doing_ajax_or_is_customized = ( $this->doing_ajax() || isset( $_POST['customized'] ) ); - if ( is_admin() && ! $doing_ajax_or_is_customized ) { - auth_redirect(); - } elseif ( $doing_ajax_or_is_customized && ! is_user_logged_in() ) { - $this->wp_die( 0, __( 'You must be logged in to complete this action.' ) ); + // Check permissions for customize.php access since this method is called before customize.php can run any code, + if ( 'customize.php' === $pagenow && ! current_user_can( 'customize' ) ) { + if ( ! is_user_logged_in() ) { + auth_redirect(); + } else { + wp_die( + '

      + -
        -
        -
        - -
        - - - -

        - - - - -

        -
        +
          available_item_types() as $available_item_type ) { - $id = sprintf( 'available-menu-items-%s-%s', $available_item_type['type'], $available_item_type['object'] ); - ?> -
          - -
            -
            - available_item_types(); + $page_item_type = null; + foreach ( $item_types as $i => $item_type ) { + if ( isset( $item_type['object'] ) && 'page' === $item_type['object'] ) { + $page_item_type = $item_type; + unset( $item_types[ $i ] ); + } + } + + $this->print_custom_links_available_menu_item(); + if ( $page_item_type ) { + $this->print_post_type_container( $page_item_type ); + } + // Containers for per-post-type item browsing; items are added with JS. + foreach ( $item_types as $item_type ) { + $this->print_post_type_container( $item_type ); } ?>
            +
            + +
            + + + cap->create_posts ) && current_user_can( $post_type_obj->cap->publish_posts ) ) : ?> +
            + + +
            + + +
              +
              +
              + +
              + +
              + + + +

              + + + + +

              +
              +
              + protected = true; + } + + /** + * Sanitize post IDs for auto-draft posts created for nav menu items to be published. + * + * @since 4.7.0 + * @access public + * + * @param array $value Post IDs. + * @returns array Post IDs. + */ + public function sanitize_nav_menus_created_posts( $value ) { + $post_ids = array(); + foreach ( wp_parse_id_list( $value ) as $post_id ) { + if ( empty( $post_id ) ) { + continue; + } + $post = get_post( $post_id ); + if ( 'auto-draft' !== $post->post_status ) { + continue; + } + $post_type_obj = get_post_type_object( $post->post_type ); + if ( ! $post_type_obj ) { + continue; + } + if ( ! current_user_can( $post_type_obj->cap->publish_posts ) || ! current_user_can( $post_type_obj->cap->edit_post, $post_id ) ) { + continue; + } + $post_ids[] = $post->ID; + } + return $post_ids; + } + + /** + * Publish the auto-draft posts that were created for nav menu items. + * + * The post IDs will have been sanitized by already by + * `WP_Customize_Nav_Menu_Items::sanitize_nav_menus_created_posts()` to + * remove any post IDs for which the user cannot publish or for which the + * post is not an auto-draft. + * + * @since 4.7.0 + * @access public + * + * @param WP_Customize_Setting $setting Customizer setting object. + */ + public function save_nav_menus_created_posts( $setting ) { + $post_ids = $setting->post_value(); + if ( ! empty( $post_ids ) ) { + foreach ( $post_ids as $post_id ) { + $target_status = 'attachment' === get_post_type( $post_id ) ? 'inherit' : 'publish'; + $args = array( + 'ID' => $post_id, + 'post_status' => $target_status, + ); + $post_name = get_post_meta( $post_id, '_customize_draft_post_name', true ); + if ( $post_name ) { + $args['post_name'] = $post_name; + } + + // Note that wp_publish_post() cannot be used because unique slugs need to be assigned. + wp_update_post( wp_slash( $args ) ); + + delete_post_meta( $post_id, '_customize_draft_post_name' ); + } + } + } + /** * Keep track of the arguments that are being passed to wp_nav_menu(). * diff --git a/wp/wp-includes/class-wp-customize-section.php b/wp/wp-includes/class-wp-customize-section.php index 0a916f2f..68d67713 100644 --- a/wp/wp-includes/class-wp-customize-section.php +++ b/wp/wp-includes/class-wp-customize-section.php @@ -145,6 +145,18 @@ class WP_Customize_Section { */ public $active_callback = ''; + /** + * Show the description or hide it behind the help icon. + * + * @since 4.7.0 + * @access public + * + * @var bool Indicates whether the Section's description should be + * hidden behind a help icon ("?") in the Section header, + * similar to how help icons are displayed on Panels. + */ + public $description_hidden = false; + /** * Constructor. * @@ -223,7 +235,7 @@ class WP_Customize_Section { * @return array The array to be exported to the client as JSON. */ public function json() { - $array = wp_array_slice_assoc( (array) $this, array( 'id', 'description', 'priority', 'panel', 'type' ) ); + $array = wp_array_slice_assoc( (array) $this, array( 'id', 'description', 'priority', 'panel', 'type', 'description_hidden' ) ); $array['title'] = html_entity_decode( $this->title, ENT_QUOTES, get_bloginfo( 'charset' ) ); $array['content'] = $this->get_content(); $array['active'] = $this->active(); @@ -324,11 +336,11 @@ class WP_Customize_Section { * @see WP_Customize_Manager::render_template() */ public function print_template() { - ?> + ?> -
                -
              • +
              - +
              ' ); @@ -729,11 +732,12 @@ final class WP_Customize_Widgets { 'error' => __( 'An error has occurred. Please reload the page and try again.' ), 'widgetMovedUp' => __( 'Widget moved up' ), 'widgetMovedDown' => __( 'Widget moved down' ), - 'noAreasRendered' => __( 'There are no widget areas currently rendered in the preview. Navigate in the preview to a template that makes use of a widget area in order to access its widgets here.' ), + 'noAreasRendered' => __( 'There are no widget areas on the page shown, however other pages in this theme do have them.' ), 'reorderModeOn' => __( 'Reorder mode enabled' ), 'reorderModeOff' => __( 'Reorder mode closed' ), 'reorderLabelOn' => esc_attr__( 'Reorder widgets' ), - 'reorderLabelOff' => esc_attr__( 'Close reorder mode' ), + 'widgetsFound' => __( 'Number of widgets found: %d' ), + 'noWidgetsFound' => __( 'No widgets found.' ), ), 'tpl' => array( 'widgetReorderNav' => $widget_reorder_nav_tpl, @@ -777,7 +781,10 @@ final class WP_Customize_Widgets {
              - + + + +

              get_available_widgets() as $available_widget ): ?> @@ -785,6 +792,7 @@ final class WP_Customize_Widgets {
              +

              diff --git a/wp/wp-includes/class-wp-dependency.php b/wp/wp-includes/class-wp-dependency.php new file mode 100644 index 00000000..92c54561 --- /dev/null +++ b/wp/wp-includes/class-wp-dependency.php @@ -0,0 +1,104 @@ +handle, $this->src, $this->deps, $this->ver, $this->args ) = func_get_args(); + if ( ! is_array($this->deps) ) + $this->deps = array(); + } + + /** + * Add handle data. + * + * @access public + * @since 2.6.0 + * + * @param string $name The data key to add. + * @param mixed $data The data value to add. + * @return bool False if not scalar, true otherwise. + */ + public function add_data( $name, $data ) { + if ( !is_scalar($name) ) + return false; + $this->extra[$name] = $data; + return true; + } + +} diff --git a/wp/wp-includes/class-wp-editor.php b/wp/wp-includes/class-wp-editor.php index f7137f83..916be4d9 100644 --- a/wp/wp-includes/class-wp-editor.php +++ b/wp/wp-includes/class-wp-editor.php @@ -26,6 +26,7 @@ final class _WP_Editors { private static $editor_buttons_css = true; private static $drag_drop_upload = false; private static $old_dfw_compat = false; + private static $translation; private function __construct() {} @@ -296,14 +297,13 @@ final class _WP_Editors { /** * @static * - * @global string $wp_version * @global string $tinymce_version * * @param string $editor_id * @param array $set */ public static function editor_settings($editor_id, $set) { - global $wp_version, $tinymce_version; + global $tinymce_version; if ( empty(self::$first_init) ) { if ( is_admin() ) { @@ -352,12 +352,19 @@ final class _WP_Editors { if ( empty( self::$first_init ) ) { self::$baseurl = includes_url( 'js/tinymce' ); - $mce_locale = get_locale(); + $mce_locale = get_user_locale(); self::$mce_locale = $mce_locale = empty( $mce_locale ) ? 'en' : strtolower( substr( $mce_locale, 0, 2 ) ); // ISO 639-1 /** This filter is documented in wp-admin/includes/media.php */ $no_captions = (bool) apply_filters( 'disable_captions', '' ); $ext_plugins = ''; + $shortcut_labels = array(); + + foreach ( self::get_translation() as $name => $value ) { + if ( is_array( $value ) ) { + $shortcut_labels[$name] = $value[1]; + } + } if ( $set['teeny'] ) { @@ -551,7 +558,8 @@ final class _WP_Editors { 'wpeditimage_disable_captions' => $no_captions, 'wpeditimage_html5_captions' => current_theme_supports( 'html5', 'caption' ), 'plugins' => implode( ',', $plugins ), - 'wp_lang_attr' => get_bloginfo( 'language' ) + 'wp_lang_attr' => get_bloginfo( 'language' ), + 'wp_shortcut_labels' => wp_json_encode( $shortcut_labels ), ); if ( ! empty( $mce_external_plugins ) ) { @@ -559,7 +567,7 @@ final class _WP_Editors { } $suffix = SCRIPT_DEBUG ? '' : '.min'; - $version = 'ver=' . $wp_version; + $version = 'ver=' . get_bloginfo( 'version' ); $dashicons = includes_url( "css/dashicons$suffix.css?$version" ); // WordPress default stylesheet and dashicons @@ -601,7 +609,7 @@ final class _WP_Editors { $mce_buttons = apply_filters( 'teeny_mce_buttons', array('bold', 'italic', 'underline', 'blockquote', 'strikethrough', 'bullist', 'numlist', 'alignleft', 'aligncenter', 'alignright', 'undo', 'redo', 'link', 'unlink', 'fullscreen'), $editor_id ); $mce_buttons_2 = $mce_buttons_3 = $mce_buttons_4 = array(); } else { - $mce_buttons = array( 'bold', 'italic', 'strikethrough', 'bullist', 'numlist', 'blockquote', 'hr', 'alignleft', 'aligncenter', 'alignright', 'link', 'unlink', 'wp_more', 'spellchecker' ); + $mce_buttons = array( 'formatselect', 'bold', 'italic', 'bullist', 'numlist', 'blockquote', 'alignleft', 'aligncenter', 'alignright', 'link', 'unlink', 'wp_more', 'spellchecker' ); if ( ! wp_is_mobile() ) { if ( $set['_content_editor_dfw'] ) { @@ -623,7 +631,7 @@ final class _WP_Editors { */ $mce_buttons = apply_filters( 'mce_buttons', $mce_buttons, $editor_id ); - $mce_buttons_2 = array( 'formatselect', 'underline', 'alignjustify', 'forecolor', 'pastetext', 'removeformat', 'charmap', 'outdent', 'indent', 'undo', 'redo' ); + $mce_buttons_2 = array( 'strikethrough', 'hr', 'forecolor', 'pastetext', 'removeformat', 'charmap', 'outdent', 'indent', 'undo', 'redo' ); if ( ! wp_is_mobile() ) { $mce_buttons_2[] = 'wp_help'; @@ -664,6 +672,7 @@ final class _WP_Editors { if ( $post = get_post() ) { $body_class .= ' post-type-' . sanitize_html_class( $post->post_type ) . ' post-status-' . sanitize_html_class( $post->post_status ); + if ( post_type_supports( $post->post_type, 'post-formats' ) ) { $post_format = get_post_format( $post ); if ( $post_format && ! is_wp_error( $post_format ) ) @@ -671,9 +680,14 @@ final class _WP_Editors { else $body_class .= ' post-format-standard'; } + + if ( $page_template = get_page_template_slug( $post ) ) { + $page_template = str_replace( '.', '-', basename( $page_template, '.php' ) ); + $body_class .= ' page-template-' . sanitize_html_class( $page_template ); + } } - $body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) ); + $body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_user_locale() ) ) ); if ( !empty($set['tinymce']['body_class']) ) { $body_class .= ' ' . $set['tinymce']['body_class']; @@ -807,73 +821,64 @@ final class _WP_Editors { ) ); } - /** - * Translates the default TinyMCE strings and returns them as JSON encoded object ready to be loaded with tinymce.addI18n(). - * Can be used directly (_WP_Editors::wp_mce_translation()) by passing the same locale as set in the TinyMCE init object. - * - * @static - * @param string $mce_locale The locale used for the editor. - * @param bool $json_only optional Whether to include the JavaScript calls to tinymce.addI18n() and tinymce.ScriptLoader.markDone(). - * @return string Translation object, JSON encoded. - */ - public static function wp_mce_translation( $mce_locale = '', $json_only = false ) { - - $mce_translation = array( + private static function get_translation() { + if ( empty( self::$translation ) ) { + self::$translation = array( // Default TinyMCE strings 'New document' => __( 'New document' ), 'Formats' => _x( 'Formats', 'TinyMCE' ), 'Headings' => _x( 'Headings', 'TinyMCE' ), - 'Heading 1' => __( 'Heading 1' ), - 'Heading 2' => __( 'Heading 2' ), - 'Heading 3' => __( 'Heading 3' ), - 'Heading 4' => __( 'Heading 4' ), - 'Heading 5' => __( 'Heading 5' ), - 'Heading 6' => __( 'Heading 6' ), + 'Heading 1' => array( __( 'Heading 1' ), 'access1' ), + 'Heading 2' => array( __( 'Heading 2' ), 'access2' ), + 'Heading 3' => array( __( 'Heading 3' ), 'access3' ), + 'Heading 4' => array( __( 'Heading 4' ), 'access4' ), + 'Heading 5' => array( __( 'Heading 5' ), 'access5' ), + 'Heading 6' => array( __( 'Heading 6' ), 'access6' ), /* translators: block tags */ 'Blocks' => _x( 'Blocks', 'TinyMCE' ), - 'Paragraph' => __( 'Paragraph' ), - 'Blockquote' => __( 'Blockquote' ), + 'Paragraph' => array( __( 'Paragraph' ), 'access7' ), + 'Blockquote' => array( __( 'Blockquote' ), 'accessQ' ), 'Div' => _x( 'Div', 'HTML tag' ), 'Pre' => _x( 'Pre', 'HTML tag' ), 'Preformatted' => _x( 'Preformatted', 'HTML tag' ), 'Address' => _x( 'Address', 'HTML tag' ), 'Inline' => _x( 'Inline', 'HTML elements' ), - 'Underline' => __( 'Underline' ), - 'Strikethrough' => __( 'Strikethrough' ), + 'Underline' => array( __( 'Underline' ), 'metaU' ), + 'Strikethrough' => array( __( 'Strikethrough' ), 'accessD' ), 'Subscript' => __( 'Subscript' ), 'Superscript' => __( 'Superscript' ), 'Clear formatting' => __( 'Clear formatting' ), - 'Bold' => __( 'Bold' ), - 'Italic' => __( 'Italic' ), - 'Code' => __( 'Code' ), + 'Bold' => array( __( 'Bold' ), 'metaB' ), + 'Italic' => array( __( 'Italic' ), 'metaI' ), + 'Code' => array( __( 'Code' ), 'accessX' ), 'Source code' => __( 'Source code' ), 'Font Family' => __( 'Font Family' ), 'Font Sizes' => __( 'Font Sizes' ), - 'Align center' => __( 'Align center' ), - 'Align right' => __( 'Align right' ), - 'Align left' => __( 'Align left' ), - 'Justify' => __( 'Justify' ), + 'Align center' => array( __( 'Align center' ), 'accessC' ), + 'Align right' => array( __( 'Align right' ), 'accessR' ), + 'Align left' => array( __( 'Align left' ), 'accessL' ), + 'Justify' => array( __( 'Justify' ), 'accessJ' ), 'Increase indent' => __( 'Increase indent' ), 'Decrease indent' => __( 'Decrease indent' ), - 'Cut' => __( 'Cut' ), - 'Copy' => __( 'Copy' ), - 'Paste' => __( 'Paste' ), - 'Select all' => __( 'Select all' ), - 'Undo' => __( 'Undo' ), - 'Redo' => __( 'Redo' ), + 'Cut' => array( __( 'Cut' ), 'metaX' ), + 'Copy' => array( __( 'Copy' ), 'metaC' ), + 'Paste' => array( __( 'Paste' ), 'metaV' ), + 'Select all' => array( __( 'Select all' ), 'metaA' ), + 'Undo' => array( __( 'Undo' ), 'metaZ' ), + 'Redo' => array( __( 'Redo' ), 'metaY' ), 'Ok' => __( 'OK' ), 'Cancel' => __( 'Cancel' ), 'Close' => __( 'Close' ), 'Visual aids' => __( 'Visual aids' ), - 'Bullet list' => __( 'Bulleted list' ), - 'Numbered list' => __( 'Numbered list' ), + 'Bullet list' => array( __( 'Bulleted list' ), 'accessU' ), + 'Numbered list' => array( __( 'Numbered list' ), 'accessO' ), 'Square' => _x( 'Square', 'list style' ), 'Default' => _x( 'Default', 'list style' ), 'Circle' => _x( 'Circle', 'list style' ), @@ -899,7 +904,7 @@ final class _WP_Editors { 'Author' => __( 'Author' ), // Media, image plugins - 'Insert/edit image' => __( 'Insert/edit image' ), + 'Insert/edit image' => array( __( 'Insert/edit image' ), 'accessM' ), 'General' => __( 'General' ), 'Advanced' => __( 'Advanced' ), 'Source' => __( 'Source' ), @@ -933,8 +938,8 @@ final class _WP_Editors { 'Horizontal line' => __( 'Horizontal line' ), 'Horizontal space' => __( 'Horizontal space' ), 'Restore last draft' => __( 'Restore last draft' ), - 'Insert/edit link' => __( 'Insert/edit link' ), - 'Remove link' => __( 'Remove link' ), + 'Insert/edit link' => array( __( 'Insert/edit link' ), 'metaK' ), + 'Remove link' => array( __( 'Remove link' ), 'accessS' ), 'Color' => __( 'Color' ), 'Custom color' => __( 'Custom color' ), @@ -1038,11 +1043,11 @@ final class _WP_Editors { 'Format' => _x( 'Format', 'TinyMCE menu' ), // WordPress strings - 'Toolbar Toggle' => __( 'Toolbar Toggle' ), - 'Insert Read More tag' => __( 'Insert Read More tag' ), - 'Insert Page Break tag' => __( 'Insert Page Break tag' ), + 'Toolbar Toggle' => array( __( 'Toolbar Toggle' ), 'accessZ' ), + 'Insert Read More tag' => array( __( 'Insert Read More tag' ), 'accessT' ), + 'Insert Page Break tag' => array( __( 'Insert Page Break tag' ), 'accessP' ), 'Read more...' => __( 'Read more...' ), // Title on the placeholder inside the editor (no ellipsis) - 'Distraction-free writing mode' => __( 'Distraction-free writing mode' ), + 'Distraction-free writing mode' => array( __( 'Distraction-free writing mode' ), 'accessW' ), 'No alignment' => __( 'No alignment' ), // Tooltip for the 'alignnone' button in the image toolbar 'Remove' => __( 'Remove' ), // Tooltip for the 'remove' button in the image toolbar 'Edit ' => __( 'Edit' ), // Tooltip for the 'edit' button in the image toolbar @@ -1051,7 +1056,7 @@ final class _WP_Editors { 'Link options' => __( 'Link options' ), // Tooltip for the 'link options' button in the inline link dialog // Shortcuts help modal - 'Keyboard Shortcuts' => __( 'Keyboard Shortcuts' ), + 'Keyboard Shortcuts' => array( __( 'Keyboard Shortcuts' ), 'accessH' ), 'Default shortcuts,' => __( 'Default shortcuts,' ), 'Additional shortcuts,' => __( 'Additional shortcuts,' ), 'Focus shortcuts:' => __( 'Focus shortcuts:' ), @@ -1074,7 +1079,8 @@ final class _WP_Editors { __( 'The following formatting shortcuts are replaced when pressing Enter. Press Escape or the Undo button to undo.' ), 'The next group of formatting shortcuts are applied as you type or when you insert them around plain text in the same paragraph. Press Escape or the Undo button to undo.' => __( 'The next group of formatting shortcuts are applied as you type or when you insert them around plain text in the same paragraph. Press Escape or the Undo button to undo.' ), - ); + ); + } /** * Link plugin (not included): @@ -1087,10 +1093,31 @@ final class _WP_Editors { * Url */ + return self::$translation; + } + + /** + * Translates the default TinyMCE strings and returns them as JSON encoded object ready to be loaded with tinymce.addI18n(). + * Can be used directly (_WP_Editors::wp_mce_translation()) by passing the same locale as set in the TinyMCE init object. + * + * @static + * @param string $mce_locale The locale used for the editor. + * @param bool $json_only optional Whether to include the JavaScript calls to tinymce.addI18n() and tinymce.ScriptLoader.markDone(). + * @return string Translation object, JSON encoded. + */ + public static function wp_mce_translation( $mce_locale = '', $json_only = false ) { if ( ! $mce_locale ) { $mce_locale = self::$mce_locale; } + $mce_translation = self::get_translation(); + + foreach ( $mce_translation as $name => $value ) { + if ( is_array( $value ) ) { + $mce_translation[$name] = $value[0]; + } + } + /** * Filters translated strings prepared for TinyMCE. * @@ -1131,13 +1158,12 @@ final class _WP_Editors { /** * * @static - * @global string $wp_version * @global string $tinymce_version * @global bool $concatenate_scripts * @global bool $compress_scripts */ public static function editor_js() { - global $wp_version, $tinymce_version, $concatenate_scripts, $compress_scripts; + global $tinymce_version, $concatenate_scripts, $compress_scripts; /** * Filters "tiny_mce_version" is deprecated @@ -1215,7 +1241,7 @@ final class _WP_Editors { $baseurl = self::$baseurl; // Load tinymce.js when running from /src, else load wp-tinymce.js.gz (production) or tinymce.min.js (SCRIPT_DEBUG) - $mce_suffix = false !== strpos( $wp_version, '-src' ) ? '' : '.min'; + $mce_suffix = false !== strpos( get_bloginfo( 'version' ), '-src' ) ? '' : '.min'; if ( $tmce_on ) { if ( $compressed ) { @@ -1259,14 +1285,6 @@ final class _WP_Editors { var init, id, $wrap; if ( typeof tinymce !== 'undefined' ) { - // Fix RTL - tinymce.on( 'addeditor', function( event ) { - event.editor.rtl = event.editor.settings.rtl_ui || - ( event.editor.editorManager && - event.editor.editorManager.i18n && - event.editor.editorManager.i18n.rtl ); - }, true ); - for ( id in tinyMCEPreInit.mceInit ) { init = tinyMCEPreInit.mceInit[id]; $wrap = tinymce.$( '#wp-' + id + '-wrap' ); diff --git a/wp/wp-includes/class-wp-embed.php b/wp/wp-includes/class-wp-embed.php index 17a976f2..a8ce4d6c 100644 --- a/wp/wp-includes/class-wp-embed.php +++ b/wp/wp-includes/class-wp-embed.php @@ -384,4 +384,3 @@ class WP_Embed { return apply_filters( 'embed_maybe_make_link', $output, $url ); } } -$GLOBALS['wp_embed'] = new WP_Embed(); diff --git a/wp/wp-includes/class-wp-error.php b/wp/wp-includes/class-wp-error.php index 1010adb0..22273f89 100644 --- a/wp/wp-includes/class-wp-error.php +++ b/wp/wp-includes/class-wp-error.php @@ -202,17 +202,3 @@ class WP_Error { unset( $this->error_data[ $code ] ); } } - -/** - * Check whether variable is a WordPress Error. - * - * Returns true if $thing is an object of the WP_Error class. - * - * @since 2.1.0 - * - * @param mixed $thing Check if unknown variable is a WP_Error object. - * @return bool True, if WP_Error. False, if not WP_Error. - */ -function is_wp_error( $thing ) { - return ( $thing instanceof WP_Error ); -} diff --git a/wp/wp-includes/class-wp-feed-cache-transient.php b/wp/wp-includes/class-wp-feed-cache-transient.php new file mode 100644 index 00000000..1b5be477 --- /dev/null +++ b/wp/wp-includes/class-wp-feed-cache-transient.php @@ -0,0 +1,141 @@ +name = 'feed_' . $filename; + $this->mod_name = 'feed_mod_' . $filename; + + $lifetime = $this->lifetime; + /** + * Filters the transient lifetime of the feed cache. + * + * @since 2.8.0 + * + * @param int $lifetime Cache duration in seconds. Default is 43200 seconds (12 hours). + * @param string $filename Unique identifier for the cache object. + */ + $this->lifetime = apply_filters( 'wp_feed_cache_transient_lifetime', $lifetime, $filename); + } + + /** + * Sets the transient. + * + * @since 2.8.0 + * @access public + * + * @param SimplePie $data Data to save. + * @return true Always true. + */ + public function save($data) { + if ( $data instanceof SimplePie ) { + $data = $data->data; + } + + set_transient($this->name, $data, $this->lifetime); + set_transient($this->mod_name, time(), $this->lifetime); + return true; + } + + /** + * Gets the transient. + * + * @since 2.8.0 + * @access public + * + * @return mixed Transient value. + */ + public function load() { + return get_transient($this->name); + } + + /** + * Gets mod transient. + * + * @since 2.8.0 + * @access public + * + * @return mixed Transient value. + */ + public function mtime() { + return get_transient($this->mod_name); + } + + /** + * Sets mod transient. + * + * @since 2.8.0 + * @access public + * + * @return bool False if value was not set and true if value was set. + */ + public function touch() { + return set_transient($this->mod_name, time(), $this->lifetime); + } + + /** + * Deletes transients. + * + * @since 2.8.0 + * @access public + * + * @return true Always true. + */ + public function unlink() { + delete_transient($this->name); + delete_transient($this->mod_name); + return true; + } +} diff --git a/wp/wp-includes/class-wp-feed-cache.php b/wp/wp-includes/class-wp-feed-cache.php new file mode 100644 index 00000000..337d3f3e --- /dev/null +++ b/wp/wp-includes/class-wp-feed-cache.php @@ -0,0 +1,33 @@ +callbacks[ $priority ] ); + + $this->callbacks[ $priority ][ $idx ] = array( + 'function' => $function_to_add, + 'accepted_args' => $accepted_args + ); + + // if we're adding a new priority to the list, put them back in sorted order + if ( ! $priority_existed && count( $this->callbacks ) > 1 ) { + ksort( $this->callbacks, SORT_NUMERIC ); + } + + if ( $this->nesting_level > 0 ) { + $this->resort_active_iterations( $priority, $priority_existed ); + } + } + + /** + * Handles reseting callback priority keys mid-iteration. + * + * @since 4.7.0 + * @access private + * + * @param bool|int $new_priority Optional. The priority of the new filter being added. Default false, + * for no priority being added. + * @param bool $priority_existed Optional. Flag for whether the priority already existed before the new + * filter was added. Default false. + */ + private function resort_active_iterations( $new_priority = false, $priority_existed = false ) { + $new_priorities = array_keys( $this->callbacks ); + + // If there are no remaining hooks, clear out all running iterations. + if ( ! $new_priorities ) { + foreach ( $this->iterations as $index => $iteration ) { + $this->iterations[ $index ] = $new_priorities; + } + return; + } + + $min = min( $new_priorities ); + foreach ( $this->iterations as $index => &$iteration ) { + $current = current( $iteration ); + // If we're already at the end of this iteration, just leave the array pointer where it is. + if ( false === $current ) { + continue; + } + + $iteration = $new_priorities; + + if ( $current < $min ) { + array_unshift( $iteration, $current ); + continue; + } + + while ( current( $iteration ) < $current ) { + if ( false === next( $iteration ) ) { + break; + } + } + + // If we have a new priority that didn't exist, but ::apply_filters() or ::do_action() thinks it's the current priority... + if ( $new_priority === $this->current_priority[ $index ] && ! $priority_existed ) { + /* + * ... and the new priority is the same as what $this->iterations thinks is the previous + * priority, we need to move back to it. + */ + + if ( false === current( $iteration ) ) { + // If we've already moved off the end of the array, go back to the last element. + $prev = end( $iteration ); + } else { + // Otherwise, just go back to the previous element. + $prev = prev( $iteration ); + } + if ( false === $prev ) { + // Start of the array. Reset, and go about our day. + reset( $iteration ); + } elseif ( $new_priority !== $prev ) { + // Previous wasn't the same. Move forward again. + next( $iteration ); + } + } + } + unset( $iteration ); + } + + /** + * Unhooks a function or method from a specific filter action. + * + * @since 4.7.0 + * @access public + * + * @param string $tag The filter hook to which the function to be removed is hooked. Used + * for building the callback ID when SPL is not available. + * @param callable $function_to_remove The callback to be removed from running when the filter is applied. + * @param int $priority The exact priority used when adding the original filter callback. + * @return bool Whether the callback existed before it was removed. + */ + public function remove_filter( $tag, $function_to_remove, $priority ) { + $function_key = _wp_filter_build_unique_id( $tag, $function_to_remove, $priority ); + + $exists = isset( $this->callbacks[ $priority ][ $function_key ] ); + if ( $exists ) { + unset( $this->callbacks[ $priority ][ $function_key ] ); + if ( ! $this->callbacks[ $priority ] ) { + unset( $this->callbacks[ $priority ] ); + if ( $this->nesting_level > 0 ) { + $this->resort_active_iterations(); + } + } + } + return $exists; + } + + /** + * Checks if a specific action has been registered for this hook. + * + * @since 4.7.0 + * @access public + * + * @param callable|bool $function_to_check Optional. The callback to check for. Default false. + * @param string $tag Optional. The name of the filter hook. Used for building + * the callback ID when SPL is not available. Default empty. + * @return bool|int The priority of that hook is returned, or false if the function is not attached. + */ + public function has_filter( $tag = '', $function_to_check = false ) { + if ( false === $function_to_check ) { + return $this->has_filters(); + } + + $function_key = _wp_filter_build_unique_id( $tag, $function_to_check, false ); + if ( ! $function_key ) { + return false; + } + + foreach ( $this->callbacks as $priority => $callbacks ) { + if ( isset( $callbacks[ $function_key ] ) ) { + return $priority; + } + } + + return false; + } + + /** + * Checks if any callbacks have been registered for this hook. + * + * @since 4.7.0 + * @access public + * + * @return bool True if callbacks have been registered for the current hook, otherwise false. + */ + public function has_filters() { + foreach ( $this->callbacks as $callbacks ) { + if ( $callbacks ) { + return true; + } + } + return false; + } + + /** + * Removes all callbacks from the current filter. + * + * @since 4.7.0 + * @access public + * + * @param int|bool $priority Optional. The priority number to remove. Default false. + */ + public function remove_all_filters( $priority = false ) { + if ( ! $this->callbacks ) { + return; + } + + if ( false === $priority ) { + $this->callbacks = array(); + } else if ( isset( $this->callbacks[ $priority ] ) ) { + unset( $this->callbacks[ $priority ] ); + } + + if ( $this->nesting_level > 0 ) { + $this->resort_active_iterations(); + } + } + + /** + * Calls the callback functions added to a filter hook. + * + * @since 4.7.0 + * @access public + * + * @param mixed $value The value to filter. + * @param array $args Arguments to pass to callbacks. + * @return mixed The filtered value after all hooked functions are applied to it. + */ + public function apply_filters( $value, $args ) { + if ( ! $this->callbacks ) { + return $value; + } + + $nesting_level = $this->nesting_level++; + + $this->iterations[ $nesting_level ] = array_keys( $this->callbacks ); + $num_args = count( $args ); + + do { + $this->current_priority[ $nesting_level ] = $priority = current( $this->iterations[ $nesting_level ] ); + + foreach ( $this->callbacks[ $priority ] as $the_ ) { + if( ! $this->doing_action ) { + $args[ 0 ] = $value; + } + + // Avoid the array_slice if possible. + if ( $the_['accepted_args'] == 0 ) { + $value = call_user_func_array( $the_['function'], array() ); + } elseif ( $the_['accepted_args'] >= $num_args ) { + $value = call_user_func_array( $the_['function'], $args ); + } else { + $value = call_user_func_array( $the_['function'], array_slice( $args, 0, (int)$the_['accepted_args'] ) ); + } + } + } while ( false !== next( $this->iterations[ $nesting_level ] ) ); + + unset( $this->iterations[ $nesting_level ] ); + unset( $this->current_priority[ $nesting_level ] ); + + $this->nesting_level--; + + return $value; + } + + /** + * Executes the callback functions hooked on a specific action hook. + * + * @since 4.7.0 + * @access public + * + * @param mixed $args Arguments to pass to the hook callbacks. + */ + public function do_action( $args ) { + $this->doing_action = true; + $this->apply_filters( '', $args ); + + // If there are recursive calls to the current action, we haven't finished it until we get to the last one. + if ( ! $this->nesting_level ) { + $this->doing_action = false; + } + } + + /** + * Processes the functions hooked into the 'all' hook. + * + * @since 4.7.0 + * @access public + * + * @param array $args Arguments to pass to the hook callbacks. Passed by reference. + */ + public function do_all_hook( &$args ) { + $nesting_level = $this->nesting_level++; + $this->iterations[ $nesting_level ] = array_keys( $this->callbacks ); + + do { + $priority = current( $this->iterations[ $nesting_level ] ); + foreach ( $this->callbacks[ $priority ] as $the_ ) { + call_user_func_array( $the_['function'], $args ); + } + } while ( false !== next( $this->iterations[ $nesting_level ] ) ); + + unset( $this->iterations[ $nesting_level ] ); + $this->nesting_level--; + } + + /** + * Return the current priority level of the currently running iteration of the hook. + * + * @since 4.7.0 + * @access public + * + * @return int|false If the hook is running, return the current priority level. If it isn't running, return false. + */ + public function current_priority() { + if ( false === current( $this->iterations ) ) { + return false; + } + + return current( current( $this->iterations ) ); + } + + /** + * Normalizes filters set up before WordPress has initialized to WP_Hook objects. + * + * @since 4.7.0 + * @access public + * @static + * + * @param array $filters Filters to normalize. + * @return WP_Hook[] Array of normalized filters. + */ + public static function build_preinitialized_hooks( $filters ) { + /** @var WP_Hook[] $normalized */ + $normalized = array(); + + foreach ( $filters as $tag => $callback_groups ) { + if ( is_object( $callback_groups ) && $callback_groups instanceof WP_Hook ) { + $normalized[ $tag ] = $callback_groups; + continue; + } + $hook = new WP_Hook(); + + // Loop through callback groups. + foreach ( $callback_groups as $priority => $callbacks ) { + + // Loop through callbacks. + foreach ( $callbacks as $cb ) { + $hook->add_filter( $tag, $cb['function'], $priority, $cb['accepted_args'] ); + } + } + $normalized[ $tag ] = $hook; + } + return $normalized; + } + + /** + * Determines whether an offset value exists. + * + * @since 4.7.0 + * @access public + * + * @link http://php.net/manual/en/arrayaccess.offsetexists.php + * + * @param mixed $offset An offset to check for. + * @return bool True if the offset exists, false otherwise. + */ + public function offsetExists( $offset ) { + return isset( $this->callbacks[ $offset ] ); + } + + /** + * Retrieves a value at a specified offset. + * + * @since 4.7.0 + * @access public + * + * @link http://php.net/manual/en/arrayaccess.offsetget.php + * + * @param mixed $offset The offset to retrieve. + * @return mixed If set, the value at the specified offset, null otherwise. + */ + public function offsetGet( $offset ) { + return isset( $this->callbacks[ $offset ] ) ? $this->callbacks[ $offset ] : null; + } + + /** + * Sets a value at a specified offset. + * + * @since 4.7.0 + * @access public + * + * @link http://php.net/manual/en/arrayaccess.offsetset.php + * + * @param mixed $offset The offset to assign the value to. + * @param mixed $value The value to set. + */ + public function offsetSet( $offset, $value ) { + if ( is_null( $offset ) ) { + $this->callbacks[] = $value; + } else { + $this->callbacks[ $offset ] = $value; + } + } + + /** + * Unsets a specified offset. + * + * @since 4.7.0 + * @access public + * + * @link http://php.net/manual/en/arrayaccess.offsetunset.php + * + * @param mixed $offset The offset to unset. + */ + public function offsetUnset( $offset ) { + unset( $this->callbacks[ $offset ] ); + } + + /** + * Returns the current element. + * + * @since 4.7.0 + * @access public + * + * @link http://php.net/manual/en/iterator.current.php + * + * @return array Of callbacks at current priority. + */ + public function current() { + return current( $this->callbacks ); + } + + /** + * Moves forward to the next element. + * + * @since 4.7.0 + * @access public + * + * @link http://php.net/manual/en/iterator.next.php + * + * @return array Of callbacks at next priority. + */ + public function next() { + return next( $this->callbacks ); + } + + /** + * Returns the key of the current element. + * + * @since 4.7.0 + * @access public + * + * @link http://php.net/manual/en/iterator.key.php + * + * @return mixed Returns current priority on success, or NULL on failure + */ + public function key() { + return key( $this->callbacks ); + } + + /** + * Checks if current position is valid. + * + * @since 4.7.0 + * @access public + * + * @link http://php.net/manual/en/iterator.valid.php + * + * @return boolean + */ + public function valid() { + return key( $this->callbacks ) !== null; + } + + /** + * Rewinds the Iterator to the first element. + * + * @since 4.7.0 + * @access public + * + * @link http://php.net/manual/en/iterator.rewind.php + */ + public function rewind() { + reset( $this->callbacks ); + } + +} diff --git a/wp/wp-includes/class-wp-http-requests-hooks.php b/wp/wp-includes/class-wp-http-requests-hooks.php new file mode 100644 index 00000000..108fae8c --- /dev/null +++ b/wp/wp-includes/class-wp-http-requests-hooks.php @@ -0,0 +1,76 @@ +url = $url; + $this->request = $request; + } + + /** + * Dispatch a Requests hook to a native WordPress action. + * + * @param string $hook Hook name. + * @param array $parameters Parameters to pass to callbacks. + * @return boolean True if hooks were run, false if nothing was hooked. + */ + public function dispatch( $hook, $parameters = array() ) { + $result = parent::dispatch( $hook, $parameters ); + + // Handle back-compat actions + switch ( $hook ) { + case 'curl.before_send': + /** This action is documented in wp-includes/class-wp-http-curl.php */ + do_action_ref_array( 'http_api_curl', array( $parameters[0], $this->request, $this->url ) ); + break; + } + + /** + * Transforms a native Request hook to a WordPress actions. + * + * This action maps Requests internal hook to a native WordPress action. + * + * @see https://github.com/rmccue/Requests/blob/master/docs/hooks.md + * + * @param array $parameters Parameters from Requests internal hook. + * @param array $request Request data in WP_Http format. + * @param string $url URL to request. + */ + do_action_ref_array( "requests-{$hook}", $parameters, $this->request, $this->url ); + + return $result; + } +} diff --git a/wp/wp-includes/class-wp-http-requests-response.php b/wp/wp-includes/class-wp-http-requests-response.php index ab0a5cc0..66083191 100644 --- a/wp/wp-includes/class-wp-http-requests-response.php +++ b/wp/wp-includes/class-wp-http-requests-response.php @@ -65,17 +65,18 @@ class WP_HTTP_Requests_Response extends WP_HTTP_Response { * @since 4.6.0 * @access public * - * @return array Map of header name to header value. + * @see \Requests_Utility_CaseInsensitiveDictionary + * + * @return \Requests_Utility_CaseInsensitiveDictionary Map of header name to header value. */ public function get_headers() { - // Ensure headers remain case-insensitive + // Ensure headers remain case-insensitive. $converted = new Requests_Utility_CaseInsensitiveDictionary(); foreach ( $this->response->headers->getAll() as $key => $value ) { if ( count( $value ) === 1 ) { $converted[ $key ] = $value[0]; - } - else { + } else { $converted[ $key ] = $value; } } diff --git a/wp/wp-includes/class-wp-http-response.php b/wp/wp-includes/class-wp-http-response.php index e46b01e0..da83de1d 100644 --- a/wp/wp-includes/class-wp-http-response.php +++ b/wp/wp-includes/class-wp-http-response.php @@ -28,7 +28,7 @@ class WP_HTTP_Response { * * @since 4.4.0 * @access public - * @var int + * @var array */ public $headers; @@ -37,7 +37,7 @@ class WP_HTTP_Response { * * @since 4.4.0 * @access public - * @var array + * @var int */ public $status; diff --git a/wp/wp-includes/class-wp-image-editor-imagick.php b/wp/wp-includes/class-wp-image-editor-imagick.php index 82b872d7..fc6fc933 100644 --- a/wp/wp-includes/class-wp-image-editor-imagick.php +++ b/wp/wp-includes/class-wp-image-editor-imagick.php @@ -73,6 +73,7 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor { 'rotateimage', 'flipimage', 'flopimage', + 'readimage', ); // Now, test for deep requirements within Imagick. @@ -144,7 +145,17 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor { wp_raise_memory_limit( 'image' ); try { - $this->image = new Imagick( $this->file ); + $this->image = new Imagick(); + $file_parts = pathinfo( $this->file ); + $filename = $this->file; + + if ( 'pdf' == strtolower( $file_parts['extension'] ) ) { + $filename = $this->pdf_setup(); + } + + // Reading image after Imagick instantiation because `setResolution` + // only applies correctly before the image is read. + $this->image->readImage( $filename ); if ( ! $this->image->valid() ) return new WP_Error( 'invalid_image', __('File is not an image.'), $this->file); @@ -727,4 +738,27 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor { return true; } + /** + * Sets up Imagick for PDF processing. + * Increases rendering DPI and only loads first page. + * + * @since 4.7.0 + * @access protected + * + * @return string|WP_Error File to load or WP_Error on failure. + */ + protected function pdf_setup() { + try { + // By default, PDFs are rendered in a very low resolution. + // We want the thumbnail to be readable, so increase the rendering DPI. + $this->image->setResolution( 128, 128 ); + + // Only load the first page. + return $this->file . '[0]'; + } + catch ( Exception $e ) { + return new WP_Error( 'pdf_setup_failed', $e->getMessage(), $this->file ); + } + } + } diff --git a/wp/wp-includes/class-wp-image-editor.php b/wp/wp-includes/class-wp-image-editor.php index c046823e..cc991eb8 100644 --- a/wp/wp-includes/class-wp-image-editor.php +++ b/wp/wp-includes/class-wp-image-editor.php @@ -346,12 +346,8 @@ abstract class WP_Image_Editor { } if ( $filename ) { - $ext = ''; - $info = pathinfo( $filename ); - $dir = $info['dirname']; - - if ( isset( $info['extension'] ) ) - $ext = $info['extension']; + $dir = pathinfo( $filename, PATHINFO_DIRNAME ); + $ext = pathinfo( $filename, PATHINFO_EXTENSION ); $filename = trailingslashit( $dir ) . wp_basename( $filename, ".$ext" ) . ".{$new_ext}"; } @@ -375,9 +371,8 @@ abstract class WP_Image_Editor { if ( ! $suffix ) $suffix = $this->get_suffix(); - $info = pathinfo( $this->file ); - $dir = $info['dirname']; - $ext = $info['extension']; + $dir = pathinfo( $this->file, PATHINFO_DIRNAME ); + $ext = pathinfo( $this->file, PATHINFO_EXTENSION ); $name = wp_basename( $this->file, ".$ext" ); $new_ext = strtolower( $extension ? $extension : $ext ); diff --git a/wp/wp-includes/class-wp-list-util.php b/wp/wp-includes/class-wp-list-util.php new file mode 100644 index 00000000..4af814d5 --- /dev/null +++ b/wp/wp-includes/class-wp-list-util.php @@ -0,0 +1,267 @@ +output = $this->input = $input; + } + + /** + * Returns the original input array. + * + * @since 4.7.0 + * @access public + * + * @return array The input array. + */ + public function get_input() { + return $this->input; + } + + /** + * Returns the output array. + * + * @since 4.7.0 + * @access public + * + * @return array The output array. + */ + public function get_output() { + return $this->output; + } + + /** + * Filters the list, based on a set of key => value arguments. + * + * @since 4.7.0 + * + * @param array $args Optional. An array of key => value arguments to match + * against each object. Default empty array. + * @param string $operator Optional. The logical operation to perform. 'AND' means + * all elements from the array must match. 'OR' means only + * one element needs to match. 'NOT' means no elements may + * match. Default 'AND'. + * @return array Array of found values. + */ + public function filter( $args = array(), $operator = 'AND' ) { + if ( empty( $args ) ) { + return $this->output; + } + + $operator = strtoupper( $operator ); + + if ( ! in_array( $operator, array( 'AND', 'OR', 'NOT' ), true ) ) { + return array(); + } + + $count = count( $args ); + $filtered = array(); + + foreach ( $this->output as $key => $obj ) { + $to_match = (array) $obj; + + $matched = 0; + foreach ( $args as $m_key => $m_value ) { + if ( array_key_exists( $m_key, $to_match ) && $m_value == $to_match[ $m_key ] ) { + $matched++; + } + } + + if ( + ( 'AND' == $operator && $matched == $count ) || + ( 'OR' == $operator && $matched > 0 ) || + ( 'NOT' == $operator && 0 == $matched ) + ) { + $filtered[$key] = $obj; + } + } + + $this->output = $filtered; + + return $this->output; + } + + /** + * Plucks a certain field out of each object in the list. + * + * This has the same functionality and prototype of + * array_column() (PHP 5.5) but also supports objects. + * + * @since 4.7.0 + * + * @param int|string $field Field from the object to place instead of the entire object + * @param int|string $index_key Optional. Field from the object to use as keys for the new array. + * Default null. + * @return array Array of found values. If `$index_key` is set, an array of found values with keys + * corresponding to `$index_key`. If `$index_key` is null, array keys from the original + * `$list` will be preserved in the results. + */ + public function pluck( $field, $index_key = null ) { + if ( ! $index_key ) { + /* + * This is simple. Could at some point wrap array_column() + * if we knew we had an array of arrays. + */ + foreach ( $this->output as $key => $value ) { + if ( is_object( $value ) ) { + $this->output[ $key ] = $value->$field; + } else { + $this->output[ $key ] = $value[ $field ]; + } + } + return $this->output; + } + + /* + * When index_key is not set for a particular item, push the value + * to the end of the stack. This is how array_column() behaves. + */ + $newlist = array(); + foreach ( $this->output as $value ) { + if ( is_object( $value ) ) { + if ( isset( $value->$index_key ) ) { + $newlist[ $value->$index_key ] = $value->$field; + } else { + $newlist[] = $value->$field; + } + } else { + if ( isset( $value[ $index_key ] ) ) { + $newlist[ $value[ $index_key ] ] = $value[ $field ]; + } else { + $newlist[] = $value[ $field ]; + } + } + } + + $this->output = $newlist; + + return $this->output; + } + + /** + * Sorts the list, based on one or more orderby arguments. + * + * @since 4.7.0 + * + * @param string|array $orderby Optional. Either the field name to order by or an array + * of multiple orderby fields as $orderby => $order. + * @param string $order Optional. Either 'ASC' or 'DESC'. Only used if $orderby + * is a string. + * @param bool $preserve_keys Optional. Whether to preserve keys. Default false. + * @return array The sorted array. + */ + public function sort( $orderby = array(), $order = 'ASC', $preserve_keys = false ) { + if ( empty( $orderby ) ) { + return $this->output; + } + + if ( is_string( $orderby ) ) { + $orderby = array( $orderby => $order ); + } + + foreach ( $orderby as $field => $direction ) { + $orderby[ $field ] = 'DESC' === strtoupper( $direction ) ? 'DESC' : 'ASC'; + } + + $this->orderby = $orderby; + + if ( $preserve_keys ) { + uasort( $this->output, array( $this, 'sort_callback' ) ); + } else { + usort( $this->output, array( $this, 'sort_callback' ) ); + } + + $this->orderby = array(); + + return $this->output; + } + + /** + * Callback to sort the list by specific fields. + * + * @since 4.7.0 + * @access private + * + * @see WP_List_Util::sort() + * + * @param object|array $a One object to compare. + * @param object|array $b The other object to compare. + * @return int 0 if both objects equal. -1 if second object should come first, 1 otherwise. + */ + private function sort_callback( $a, $b ) { + if ( empty( $this->orderby ) ) { + return 0; + } + + $a = (array) $a; + $b = (array) $b; + + foreach ( $this->orderby as $field => $direction ) { + if ( ! isset( $a[ $field ] ) || ! isset( $b[ $field ] ) ) { + continue; + } + + if ( $a[ $field ] == $b[ $field ] ) { + continue; + } + + $results = 'DESC' === $direction ? array( 1, -1 ) : array( -1, 1 ); + + if ( is_numeric( $a[ $field ] ) && is_numeric( $b[ $field ] ) ) { + return ( $a[ $field ] < $b[ $field ] ) ? $results[0] : $results[1]; + } + + return 0 > strcmp( $a[ $field ], $b[ $field ] ) ? $results[0] : $results[1]; + } + + return 0; + } +} diff --git a/wp/wp-includes/class-wp-locale-switcher.php b/wp/wp-includes/class-wp-locale-switcher.php new file mode 100644 index 00000000..2b0638d2 --- /dev/null +++ b/wp/wp-includes/class-wp-locale-switcher.php @@ -0,0 +1,240 @@ +original_locale = is_admin() ? get_user_locale() : get_locale(); + $this->available_languages = array_merge( array( 'en_US' ), get_available_languages() ); + } + + /** + * Initializes the locale switcher. + * + * Hooks into the {@see 'locale'} filter to change the locale on the fly. + */ + public function init() { + add_filter( 'locale', array( $this, 'filter_locale' ) ); + } + + /** + * Switches the translations according to the given locale. + * + * @since 4.7.0 + * + * @param string $locale The locale to switch to. + * @return bool True on success, false on failure. + */ + public function switch_to_locale( $locale ) { + $current_locale = is_admin() ? get_user_locale() : get_locale(); + if ( $current_locale === $locale ) { + return false; + } + + if ( ! in_array( $locale, $this->available_languages, true ) ) { + return false; + } + + $this->locales[] = $locale; + + $this->change_locale( $locale ); + + /** + * Fires when the locale is switched. + * + * @since 4.7.0 + * + * @param string $locale The new locale. + */ + do_action( 'switch_locale', $locale ); + + return true; + } + + /** + * Restores the translations according to the previous locale. + * + * @since 4.7.0 + * + * @return string|false Locale on success, false on failure. + */ + public function restore_previous_locale() { + $previous_locale = array_pop( $this->locales ); + + if ( null === $previous_locale ) { + // The stack is empty, bail. + return false; + } + + $locale = end( $this->locales ); + + if ( ! $locale ) { + // There's nothing left in the stack: go back to the original locale. + $locale = $this->original_locale; + } + + $this->change_locale( $locale ); + + /** + * Fires when the locale is restored to the previous one. + * + * @since 4.7.0 + * + * @param string $locale The new locale. + * @param string $previous_locale The previous locale. + */ + do_action( 'restore_previous_locale', $locale, $previous_locale ); + + return $locale; + } + + /** + * Restores the translations according to the original locale. + * + * @since 4.7.0 + * + * @return string|false Locale on success, false on failure. + */ + public function restore_current_locale() { + if ( empty( $this->locales ) ) { + return false; + } + + $this->locales = array( $this->original_locale ); + + return $this->restore_previous_locale(); + } + + /** + * Whether switch_to_locale() is in effect. + * + * @since 4.7.0 + * + * @return bool True if the locale has been switched, false otherwise. + */ + public function is_switched() { + return ! empty( $this->locales ); + } + + /** + * Filters the WordPress install's locale. + * + * @since 4.7.0 + * + * @param string $locale The WordPress install's locale. + * @return string The locale currently being switched to. + */ + public function filter_locale( $locale ) { + $switched_locale = end( $this->locales ); + + if ( $switched_locale ) { + return $switched_locale; + } + + return $locale; + } + + /** + * Load translations for a given locale. + * + * When switching to a locale, translations for this locale must be loaded from scratch. + * + * @since 4.7.0 + * @access private + * + * @global Mo[] $l10n An array of all currently loaded text domains. + * + * @param string $locale The locale to load translations for. + */ + private function load_translations( $locale ) { + global $l10n; + + $domains = $l10n ? array_keys( $l10n ) : array(); + + load_default_textdomain( $locale ); + + foreach ( $domains as $domain ) { + if ( 'default' === $domain ) { + continue; + } + + unload_textdomain( $domain ); + get_translations_for_domain( $domain ); + } + } + + /** + * Changes the site's locale to the given one. + * + * Loads the translations, changes the global `$wp_locale` object and updates + * all post type labels. + * + * @since 4.7.0 + * @access private + * + * @global WP_Locale $wp_locale The WordPress date and time locale object. + * + * @param string $locale The locale to change to. + */ + private function change_locale( $locale ) { + // Reset translation availability information. + _get_path_to_translation( null, true ); + + $this->load_translations( $locale ); + + $GLOBALS['wp_locale'] = new WP_Locale(); + + /** + * Fires when the locale is switched to or restored. + * + * @since 4.7.0 + * + * @param string $locale The new locale. + */ + do_action( 'change_locale', $locale ); + } +} diff --git a/wp/wp-includes/class-wp-locale.php b/wp/wp-includes/class-wp-locale.php index e8dcfc64..2cc6afaa 100644 --- a/wp/wp-includes/class-wp-locale.php +++ b/wp/wp-includes/class-wp-locale.php @@ -59,6 +59,14 @@ class WP_Locale { */ public $month; + /** + * Stores the translated strings for the month names in genitive case, if the locale specifies. + * + * @since 4.4.0 + * @var array + */ + public $month_genitive; + /** * Stores the translated strings for the abbreviated month names. * @@ -117,7 +125,6 @@ class WP_Locale { * @access private * * @global string $text_direction - * @global string $wp_version */ public function init() { // The Weekdays @@ -223,7 +230,7 @@ class WP_Locale { elseif ( 'rtl' == _x( 'ltr', 'text direction' ) ) $this->text_direction = 'rtl'; - if ( 'rtl' === $this->text_direction && strpos( $GLOBALS['wp_version'], '-src' ) ) { + if ( 'rtl' === $this->text_direction && strpos( get_bloginfo( 'version' ), '-src' ) ) { $this->text_direction = 'ltr'; add_action( 'all_admin_notices', array( $this, 'rtl_src_admin_notice' ) ); } diff --git a/wp/wp-includes/class-wp-matchesmapregex.php b/wp/wp-includes/class-wp-matchesmapregex.php new file mode 100644 index 00000000..86ebb252 --- /dev/null +++ b/wp/wp-includes/class-wp-matchesmapregex.php @@ -0,0 +1,97 @@ +_subject = $subject; + $this->_matches = $matches; + $this->output = $this->_map(); + } + + /** + * Substitute substring matches in subject. + * + * static helper function to ease use + * + * @static + * @access public + * + * @param string $subject subject + * @param array $matches data used for substitution + * @return string + */ + public static function apply($subject, $matches) { + $oSelf = new WP_MatchesMapRegex($subject, $matches); + return $oSelf->output; + } + + /** + * do the actual mapping + * + * @access private + * @return string + */ + private function _map() { + $callback = array($this, 'callback'); + return preg_replace_callback($this->_pattern, $callback, $this->_subject); + } + + /** + * preg_replace_callback hook + * + * @access public + * @param array $matches preg_replace regexp matches + * @return string + */ + public function callback($matches) { + $index = intval(substr($matches[0], 9, -1)); + return ( isset( $this->_matches[$index] ) ? urlencode($this->_matches[$index]) : '' ); + } +} diff --git a/wp/wp-includes/class-wp-network-query.php b/wp/wp-includes/class-wp-network-query.php index 7f8954ca..1bf38ad7 100644 --- a/wp/wp-includes/class-wp-network-query.php +++ b/wp/wp-includes/class-wp-network-query.php @@ -103,7 +103,7 @@ class WP_Network_Query { * Default false. * @type string $fields Network fields to return. Accepts 'ids' (returns an array of network IDs) * or empty (returns an array of complete network objects). Default empty. - * @type int $number Maximum number of networks to retrieve. Default null (no limit). + * @type int $number Maximum number of networks to retrieve. Default empty (no limit). * @type int $offset Number of networks to offset the query. Used to build LIMIT clause. * Default 0. * @type bool $no_found_rows Whether to disable the `SQL_CALC_FOUND_ROWS` query. Default true. @@ -111,12 +111,10 @@ class WP_Network_Query { * 'domain_length', 'path_length' and 'network__in'. Also accepts false, * an empty array, or 'none' to disable `ORDER BY` clause. Default 'id'. * @type string $order How to order retrieved networks. Accepts 'ASC', 'DESC'. Default 'ASC'. - * @type string $domain Limit results to those affiliated with a given network ID. - * Default current network ID. + * @type string $domain Limit results to those affiliated with a given domain. Default empty. * @type array $domain__in Array of domains to include affiliated networks for. Default empty. * @type array $domain__not_in Array of domains to exclude affiliated networks for. Default empty. - * @type string $path Limit results to those affiliated with a given network ID. - * Default current network ID. + * @type string $path Limit results to those affiliated with a given path. Default empty. * @type array $path__in Array of paths to include affiliated networks for. Default empty. * @type array $path__not_in Array of paths to exclude affiliated networks for. Default empty. * @type string $search Search term(s) to retrieve matching networks for. Default empty. @@ -211,11 +209,7 @@ class WP_Network_Query { // $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', 'networks' ); - if ( ! $last_changed ) { - $last_changed = microtime(); - wp_cache_set( 'last_changed', $last_changed, 'networks' ); - } + $last_changed = wp_cache_get_last_changed( 'networks' ); $cache_key = "get_network_ids:$key:$last_changed"; $cache_value = wp_cache_get( $cache_key, 'networks' ); diff --git a/wp/wp-includes/class-wp-post-type.php b/wp/wp-includes/class-wp-post-type.php index c08ca5e5..0b1d3c00 100644 --- a/wp/wp-includes/class-wp-post-type.php +++ b/wp/wp-includes/class-wp-post-type.php @@ -366,7 +366,7 @@ final class WP_Post_Type { $args = wp_parse_args( $args ); /** - * Filter the arguments for registering a post type. + * Filters the arguments for registering a post type. * * @since 4.4.0 * diff --git a/wp/wp-includes/class-wp-post.php b/wp/wp-includes/class-wp-post.php index 5904e588..c9669348 100644 --- a/wp/wp-includes/class-wp-post.php +++ b/wp/wp-includes/class-wp-post.php @@ -210,9 +210,11 @@ final class WP_Post { public static function get_instance( $post_id ) { global $wpdb; - $post_id = (int) $post_id; - if ( ! $post_id ) + if ( ! is_numeric( $post_id ) || $post_id != floor( $post_id ) || ! $post_id ) { return false; + } + + $post_id = (int) $post_id; $_post = wp_cache_get( $post_id, 'posts' ); @@ -252,7 +254,7 @@ final class WP_Post { return true; if ( 'page_template' == $key ) - return ( 'page' == $this->post_type ); + return true; if ( 'post_category' == $key ) return true; diff --git a/wp/wp-includes/class-wp-query.php b/wp/wp-includes/class-wp-query.php new file mode 100644 index 00000000..7f3c22a7 --- /dev/null +++ b/wp/wp-includes/class-wp-query.php @@ -0,0 +1,4107 @@ +query_vars state like md5(serialize( $this->query_vars ) ) so we know + * whether we have to re-parse because something has changed + * + * @since 3.1.0 + * @access private + * @var bool|string + */ + private $query_vars_hash = false; + + /** + * Whether query vars have changed since the initial parse_query() call. Used to catch modifications to query vars made + * via pre_get_posts hooks. + * + * @since 3.1.1 + * @access private + */ + private $query_vars_changed = true; + + /** + * Set if post thumbnails are cached + * + * @since 3.2.0 + * @access public + * @var bool + */ + public $thumbnails_cached = false; + + /** + * Cached list of search stopwords. + * + * @since 3.7.0 + * @var array + */ + private $stopwords; + + private $compat_fields = array( 'query_vars_hash', 'query_vars_changed' ); + + private $compat_methods = array( 'init_query_flags', 'parse_tax_query' ); + + /** + * Resets query flags to false. + * + * The query flags are what page info WordPress was able to figure out. + * + * @since 2.0.0 + * @access private + */ + private function init_query_flags() { + $this->is_single = false; + $this->is_preview = false; + $this->is_page = false; + $this->is_archive = false; + $this->is_date = false; + $this->is_year = false; + $this->is_month = false; + $this->is_day = false; + $this->is_time = false; + $this->is_author = false; + $this->is_category = false; + $this->is_tag = false; + $this->is_tax = false; + $this->is_search = false; + $this->is_feed = false; + $this->is_comment_feed = false; + $this->is_trackback = false; + $this->is_home = false; + $this->is_404 = false; + $this->is_paged = false; + $this->is_admin = false; + $this->is_attachment = false; + $this->is_singular = false; + $this->is_robots = false; + $this->is_posts_page = false; + $this->is_post_type_archive = false; + } + + /** + * Initiates object properties and sets default values. + * + * @since 1.5.0 + * @access public + */ + public function init() { + unset($this->posts); + unset($this->query); + $this->query_vars = array(); + unset($this->queried_object); + unset($this->queried_object_id); + $this->post_count = 0; + $this->current_post = -1; + $this->in_the_loop = false; + unset( $this->request ); + unset( $this->post ); + unset( $this->comments ); + unset( $this->comment ); + $this->comment_count = 0; + $this->current_comment = -1; + $this->found_posts = 0; + $this->max_num_pages = 0; + $this->max_num_comment_pages = 0; + + $this->init_query_flags(); + } + + /** + * Reparse the query vars. + * + * @since 1.5.0 + * @access public + */ + public function parse_query_vars() { + $this->parse_query(); + } + + /** + * Fills in the query variables, which do not exist within the parameter. + * + * @since 2.1.0 + * @since 4.4.0 Removed the `comments_popup` public query variable. + * @access public + * + * @param array $array Defined query variables. + * @return array Complete query variables with undefined ones filled in empty. + */ + public function fill_query_vars($array) { + $keys = array( + 'error' + , 'm' + , 'p' + , 'post_parent' + , 'subpost' + , 'subpost_id' + , 'attachment' + , 'attachment_id' + , 'name' + , 'static' + , 'pagename' + , 'page_id' + , 'second' + , 'minute' + , 'hour' + , 'day' + , 'monthnum' + , 'year' + , 'w' + , 'category_name' + , 'tag' + , 'cat' + , 'tag_id' + , 'author' + , 'author_name' + , 'feed' + , 'tb' + , 'paged' + , 'meta_key' + , 'meta_value' + , 'preview' + , 's' + , 'sentence' + , 'title' + , 'fields' + , 'menu_order' + , 'embed' + ); + + foreach ( $keys as $key ) { + if ( !isset($array[$key]) ) + $array[$key] = ''; + } + + $array_keys = array( 'category__in', 'category__not_in', 'category__and', 'post__in', 'post__not_in', 'post_name__in', + 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'post_parent__in', 'post_parent__not_in', + 'author__in', 'author__not_in' ); + + foreach ( $array_keys as $key ) { + if ( !isset($array[$key]) ) + $array[$key] = array(); + } + return $array; + } + + /** + * Parse a query string and set query type booleans. + * + * @since 1.5.0 + * @since 4.2.0 Introduced the ability to order by specific clauses of a `$meta_query`, by passing the clause's + * array key to `$orderby`. + * @since 4.4.0 Introduced `$post_name__in` and `$title` parameters. `$s` was updated to support excluded + * search terms, by prepending a hyphen. + * @since 4.5.0 Removed the `$comments_popup` parameter. + * Introduced the `$comment_status` and `$ping_status` parameters. + * Introduced `RAND(x)` syntax for `$orderby`, which allows an integer seed value to random sorts. + * @since 4.6.0 Added 'post_name__in' support for `$orderby`. Introduced the `$lazy_load_term_meta` argument. + * @access public + * + * @param string|array $query { + * Optional. Array or string of Query parameters. + * + * @type int $attachment_id Attachment post ID. Used for 'attachment' post_type. + * @type int|string $author Author ID, or comma-separated list of IDs. + * @type string $author_name User 'user_nicename'. + * @type array $author__in An array of author IDs to query from. + * @type array $author__not_in An array of author IDs not to query from. + * @type bool $cache_results Whether to cache post information. Default true. + * @type int|string $cat Category ID or comma-separated list of IDs (this or any children). + * @type array $category__and An array of category IDs (AND in). + * @type array $category__in An array of category IDs (OR in, no children). + * @type array $category__not_in An array of category IDs (NOT in). + * @type string $category_name Use category slug (not name, this or any children). + * @type string $comment_status Comment status. + * @type int $comments_per_page The number of comments to return per page. + * Default 'comments_per_page' option. + * @type array $date_query An associative array of WP_Date_Query arguments. + * See WP_Date_Query::__construct(). + * @type int $day Day of the month. Default empty. Accepts numbers 1-31. + * @type bool $exact Whether to search by exact keyword. Default false. + * @type string|array $fields Which fields to return. Single field or all fields (string), + * or array of fields. 'id=>parent' uses 'id' and 'post_parent'. + * Default all fields. Accepts 'ids', 'id=>parent'. + * @type int $hour Hour of the day. Default empty. Accepts numbers 0-23. + * @type int|bool $ignore_sticky_posts Whether to ignore sticky posts or not. Setting this to false + * excludes stickies from 'post__in'. Accepts 1|true, 0|false. + * Default 0|false. + * @type int $m Combination YearMonth. Accepts any four-digit year and month + * numbers 1-12. Default empty. + * @type string $meta_compare Comparison operator to test the 'meta_value'. + * @type string $meta_key Custom field key. + * @type array $meta_query An associative array of WP_Meta_Query arguments. See WP_Meta_Query. + * @type string $meta_value Custom field value. + * @type int $meta_value_num Custom field value number. + * @type int $menu_order The menu order of the posts. + * @type int $monthnum The two-digit month. Default empty. Accepts numbers 1-12. + * @type string $name Post slug. + * @type bool $nopaging Show all posts (true) or paginate (false). Default false. + * @type bool $no_found_rows Whether to skip counting the total rows found. Enabling can improve + * performance. Default false. + * @type int $offset The number of posts to offset before retrieval. + * @type string $order Designates ascending or descending order of posts. Default 'DESC'. + * Accepts 'ASC', 'DESC'. + * @type string|array $orderby Sort retrieved posts by parameter. One or more options may be + * passed. To use 'meta_value', or 'meta_value_num', + * 'meta_key=keyname' must be also be defined. To sort by a + * specific `$meta_query` clause, use that clause's array key. + * Default 'date'. Accepts 'none', 'name', 'author', 'date', + * 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', + * 'RAND(x)' (where 'x' is an integer seed value), + * 'comment_count', 'meta_value', 'meta_value_num', 'post__in', + * 'post_name__in', 'post_parent__in', and the array keys + * of `$meta_query`. + * @type int $p Post ID. + * @type int $page Show the number of posts that would show up on page X of a + * static front page. + * @type int $paged The number of the current page. + * @type int $page_id Page ID. + * @type string $pagename Page slug. + * @type string $perm Show posts if user has the appropriate capability. + * @type string $ping_status Ping status. + * @type array $post__in An array of post IDs to retrieve, sticky posts will be included + * @type string $post_mime_type The mime type of the post. Used for 'attachment' post_type. + * @type array $post__not_in An array of post IDs not to retrieve. Note: a string of comma- + * separated IDs will NOT work. + * @type int $post_parent Page ID to retrieve child pages for. Use 0 to only retrieve + * top-level pages. + * @type array $post_parent__in An array containing parent page IDs to query child pages from. + * @type array $post_parent__not_in An array containing parent page IDs not to query child pages from. + * @type string|array $post_type A post type slug (string) or array of post type slugs. + * Default 'any' if using 'tax_query'. + * @type string|array $post_status A post status (string) or array of post statuses. + * @type int $posts_per_page The number of posts to query for. Use -1 to request all posts. + * @type int $posts_per_archive_page The number of posts to query for by archive page. Overrides + * 'posts_per_page' when is_archive(), or is_search() are true. + * @type array $post_name__in An array of post slugs that results must match. + * @type string $s Search keyword(s). Prepending a term with a hyphen will + * exclude posts matching that term. Eg, 'pillow -sofa' will + * return posts containing 'pillow' but not 'sofa'. The + * character used for exclusion can be modified using the + * the 'wp_query_search_exclusion_prefix' filter. + * @type int $second Second of the minute. Default empty. Accepts numbers 0-60. + * @type bool $sentence Whether to search by phrase. Default false. + * @type bool $suppress_filters Whether to suppress filters. Default false. + * @type string $tag Tag slug. Comma-separated (either), Plus-separated (all). + * @type array $tag__and An array of tag ids (AND in). + * @type array $tag__in An array of tag ids (OR in). + * @type array $tag__not_in An array of tag ids (NOT in). + * @type int $tag_id Tag id or comma-separated list of IDs. + * @type array $tag_slug__and An array of tag slugs (AND in). + * @type array $tag_slug__in An array of tag slugs (OR in). unless 'ignore_sticky_posts' is + * true. Note: a string of comma-separated IDs will NOT work. + * @type array $tax_query An associative array of WP_Tax_Query arguments. + * See WP_Tax_Query->queries. + * @type string $title Post title. + * @type bool $update_post_meta_cache Whether to update the post meta cache. Default true. + * @type bool $update_post_term_cache Whether to update the post term cache. Default true. + * @type bool $lazy_load_term_meta Whether to lazy-load term meta. Setting to false will + * disable cache priming for term meta, so that each + * get_term_meta() call will hit the database. + * Defaults to the value of `$update_post_term_cache`. + * @type int $w The week number of the year. Default empty. Accepts numbers 0-53. + * @type int $year The four-digit year. Default empty. Accepts any four-digit year. + * } + */ + public function parse_query( $query = '' ) { + if ( ! empty( $query ) ) { + $this->init(); + $this->query = $this->query_vars = wp_parse_args( $query ); + } elseif ( ! isset( $this->query ) ) { + $this->query = $this->query_vars; + } + + $this->query_vars = $this->fill_query_vars($this->query_vars); + $qv = &$this->query_vars; + $this->query_vars_changed = true; + + if ( ! empty($qv['robots']) ) + $this->is_robots = true; + + if ( ! is_scalar( $qv['p'] ) || $qv['p'] < 0 ) { + $qv['p'] = 0; + $qv['error'] = '404'; + } else { + $qv['p'] = intval( $qv['p'] ); + } + + $qv['page_id'] = absint($qv['page_id']); + $qv['year'] = absint($qv['year']); + $qv['monthnum'] = absint($qv['monthnum']); + $qv['day'] = absint($qv['day']); + $qv['w'] = absint($qv['w']); + $qv['m'] = is_scalar( $qv['m'] ) ? preg_replace( '|[^0-9]|', '', $qv['m'] ) : ''; + $qv['paged'] = absint($qv['paged']); + $qv['cat'] = preg_replace( '|[^0-9,-]|', '', $qv['cat'] ); // comma separated list of positive or negative integers + $qv['author'] = preg_replace( '|[^0-9,-]|', '', $qv['author'] ); // comma separated list of positive or negative integers + $qv['pagename'] = trim( $qv['pagename'] ); + $qv['name'] = trim( $qv['name'] ); + $qv['title'] = trim( $qv['title'] ); + if ( '' !== $qv['hour'] ) $qv['hour'] = absint($qv['hour']); + if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']); + if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']); + if ( '' !== $qv['menu_order'] ) $qv['menu_order'] = absint($qv['menu_order']); + + // Fairly insane upper bound for search string lengths. + if ( ! is_scalar( $qv['s'] ) || ( ! empty( $qv['s'] ) && strlen( $qv['s'] ) > 1600 ) ) { + $qv['s'] = ''; + } + + // Compat. Map subpost to attachment. + if ( '' != $qv['subpost'] ) + $qv['attachment'] = $qv['subpost']; + if ( '' != $qv['subpost_id'] ) + $qv['attachment_id'] = $qv['subpost_id']; + + $qv['attachment_id'] = absint($qv['attachment_id']); + + if ( ('' != $qv['attachment']) || !empty($qv['attachment_id']) ) { + $this->is_single = true; + $this->is_attachment = true; + } elseif ( '' != $qv['name'] ) { + $this->is_single = true; + } elseif ( $qv['p'] ) { + $this->is_single = true; + } elseif ( ('' !== $qv['hour']) && ('' !== $qv['minute']) &&('' !== $qv['second']) && ('' != $qv['year']) && ('' != $qv['monthnum']) && ('' != $qv['day']) ) { + // If year, month, day, hour, minute, and second are set, a single + // post is being queried. + $this->is_single = true; + } elseif ( '' != $qv['static'] || '' != $qv['pagename'] || !empty($qv['page_id']) ) { + $this->is_page = true; + $this->is_single = false; + } else { + // Look for archive queries. Dates, categories, authors, search, post type archives. + + if ( isset( $this->query['s'] ) ) { + $this->is_search = true; + } + + if ( '' !== $qv['second'] ) { + $this->is_time = true; + $this->is_date = true; + } + + if ( '' !== $qv['minute'] ) { + $this->is_time = true; + $this->is_date = true; + } + + if ( '' !== $qv['hour'] ) { + $this->is_time = true; + $this->is_date = true; + } + + if ( $qv['day'] ) { + if ( ! $this->is_date ) { + $date = sprintf( '%04d-%02d-%02d', $qv['year'], $qv['monthnum'], $qv['day'] ); + if ( $qv['monthnum'] && $qv['year'] && ! wp_checkdate( $qv['monthnum'], $qv['day'], $qv['year'], $date ) ) { + $qv['error'] = '404'; + } else { + $this->is_day = true; + $this->is_date = true; + } + } + } + + if ( $qv['monthnum'] ) { + if ( ! $this->is_date ) { + if ( 12 < $qv['monthnum'] ) { + $qv['error'] = '404'; + } else { + $this->is_month = true; + $this->is_date = true; + } + } + } + + if ( $qv['year'] ) { + if ( ! $this->is_date ) { + $this->is_year = true; + $this->is_date = true; + } + } + + if ( $qv['m'] ) { + $this->is_date = true; + if ( strlen($qv['m']) > 9 ) { + $this->is_time = true; + } elseif ( strlen( $qv['m'] ) > 7 ) { + $this->is_day = true; + } elseif ( strlen( $qv['m'] ) > 5 ) { + $this->is_month = true; + } else { + $this->is_year = true; + } + } + + if ( '' != $qv['w'] ) { + $this->is_date = true; + } + + $this->query_vars_hash = false; + $this->parse_tax_query( $qv ); + + foreach ( $this->tax_query->queries as $tax_query ) { + if ( ! is_array( $tax_query ) ) { + continue; + } + + if ( isset( $tax_query['operator'] ) && 'NOT IN' != $tax_query['operator'] ) { + switch ( $tax_query['taxonomy'] ) { + case 'category': + $this->is_category = true; + break; + case 'post_tag': + $this->is_tag = true; + break; + default: + $this->is_tax = true; + } + } + } + unset( $tax_query ); + + if ( empty($qv['author']) || ($qv['author'] == '0') ) { + $this->is_author = false; + } else { + $this->is_author = true; + } + + if ( '' != $qv['author_name'] ) + $this->is_author = true; + + if ( !empty( $qv['post_type'] ) && ! is_array( $qv['post_type'] ) ) { + $post_type_obj = get_post_type_object( $qv['post_type'] ); + if ( ! empty( $post_type_obj->has_archive ) ) + $this->is_post_type_archive = true; + } + + if ( $this->is_post_type_archive || $this->is_date || $this->is_author || $this->is_category || $this->is_tag || $this->is_tax ) + $this->is_archive = true; + } + + if ( '' != $qv['feed'] ) + $this->is_feed = true; + + if ( '' != $qv['embed'] ) { + $this->is_embed = true; + } + + if ( '' != $qv['tb'] ) + $this->is_trackback = true; + + if ( '' != $qv['paged'] && ( intval($qv['paged']) > 1 ) ) + $this->is_paged = true; + + // if we're previewing inside the write screen + if ( '' != $qv['preview'] ) + $this->is_preview = true; + + if ( is_admin() ) + $this->is_admin = true; + + if ( false !== strpos($qv['feed'], 'comments-') ) { + $qv['feed'] = str_replace('comments-', '', $qv['feed']); + $qv['withcomments'] = 1; + } + + $this->is_singular = $this->is_single || $this->is_page || $this->is_attachment; + + if ( $this->is_feed && ( !empty($qv['withcomments']) || ( empty($qv['withoutcomments']) && $this->is_singular ) ) ) + $this->is_comment_feed = true; + + if ( !( $this->is_singular || $this->is_archive || $this->is_search || $this->is_feed || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || $this->is_trackback || $this->is_404 || $this->is_admin || $this->is_robots ) ) + $this->is_home = true; + + // Correct is_* for page_on_front and page_for_posts + if ( $this->is_home && 'page' == get_option('show_on_front') && get_option('page_on_front') ) { + $_query = wp_parse_args($this->query); + // pagename can be set and empty depending on matched rewrite rules. Ignore an empty pagename. + if ( isset($_query['pagename']) && '' == $_query['pagename'] ) + unset($_query['pagename']); + + unset( $_query['embed'] ); + + if ( empty($_query) || !array_diff( array_keys($_query), array('preview', 'page', 'paged', 'cpage') ) ) { + $this->is_page = true; + $this->is_home = false; + $qv['page_id'] = get_option('page_on_front'); + // Correct for page_on_front + if ( !empty($qv['paged']) ) { + $qv['page'] = $qv['paged']; + unset($qv['paged']); + } + } + } + + if ( '' != $qv['pagename'] ) { + $this->queried_object = get_page_by_path( $qv['pagename'] ); + + if ( $this->queried_object && 'attachment' == $this->queried_object->post_type ) { + if ( preg_match( "/^[^%]*%(?:postname)%/", get_option( 'permalink_structure' ) ) ) { + // See if we also have a post with the same slug + $post = get_page_by_path( $qv['pagename'], OBJECT, 'post' ); + if ( $post ) { + $this->queried_object = $post; + $this->is_page = false; + $this->is_single = true; + } + } + } + + if ( ! empty( $this->queried_object ) ) { + $this->queried_object_id = (int) $this->queried_object->ID; + } else { + unset( $this->queried_object ); + } + + if ( 'page' == get_option('show_on_front') && isset($this->queried_object_id) && $this->queried_object_id == get_option('page_for_posts') ) { + $this->is_page = false; + $this->is_home = true; + $this->is_posts_page = true; + } + } + + if ( $qv['page_id'] ) { + if ( 'page' == get_option('show_on_front') && $qv['page_id'] == get_option('page_for_posts') ) { + $this->is_page = false; + $this->is_home = true; + $this->is_posts_page = true; + } + } + + if ( !empty($qv['post_type']) ) { + if ( is_array($qv['post_type']) ) + $qv['post_type'] = array_map('sanitize_key', $qv['post_type']); + else + $qv['post_type'] = sanitize_key($qv['post_type']); + } + + if ( ! empty( $qv['post_status'] ) ) { + if ( is_array( $qv['post_status'] ) ) + $qv['post_status'] = array_map('sanitize_key', $qv['post_status']); + else + $qv['post_status'] = preg_replace('|[^a-z0-9_,-]|', '', $qv['post_status']); + } + + if ( $this->is_posts_page && ( ! isset($qv['withcomments']) || ! $qv['withcomments'] ) ) + $this->is_comment_feed = false; + + $this->is_singular = $this->is_single || $this->is_page || $this->is_attachment; + // Done correcting is_* for page_on_front and page_for_posts + + if ( '404' == $qv['error'] ) + $this->set_404(); + + $this->is_embed = $this->is_embed && ( $this->is_singular || $this->is_404 ); + + $this->query_vars_hash = md5( serialize( $this->query_vars ) ); + $this->query_vars_changed = false; + + /** + * Fires after the main query vars have been parsed. + * + * @since 1.5.0 + * + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + do_action_ref_array( 'parse_query', array( &$this ) ); + } + + /** + * Parses various taxonomy related query vars. + * + * For BC, this method is not marked as protected. See [28987]. + * + * @access protected + * @since 3.1.0 + * + * @param array $q The query variables. Passed by reference. + */ + public function parse_tax_query( &$q ) { + if ( ! empty( $q['tax_query'] ) && is_array( $q['tax_query'] ) ) { + $tax_query = $q['tax_query']; + } else { + $tax_query = array(); + } + + if ( !empty($q['taxonomy']) && !empty($q['term']) ) { + $tax_query[] = array( + 'taxonomy' => $q['taxonomy'], + 'terms' => array( $q['term'] ), + 'field' => 'slug', + ); + } + + foreach ( get_taxonomies( array() , 'objects' ) as $taxonomy => $t ) { + if ( 'post_tag' == $taxonomy ) + continue; // Handled further down in the $q['tag'] block + + if ( $t->query_var && !empty( $q[$t->query_var] ) ) { + $tax_query_defaults = array( + 'taxonomy' => $taxonomy, + 'field' => 'slug', + ); + + if ( isset( $t->rewrite['hierarchical'] ) && $t->rewrite['hierarchical'] ) { + $q[$t->query_var] = wp_basename( $q[$t->query_var] ); + } + + $term = $q[$t->query_var]; + + if ( is_array( $term ) ) { + $term = implode( ',', $term ); + } + + if ( strpos($term, '+') !== false ) { + $terms = preg_split( '/[+]+/', $term ); + foreach ( $terms as $term ) { + $tax_query[] = array_merge( $tax_query_defaults, array( + 'terms' => array( $term ) + ) ); + } + } else { + $tax_query[] = array_merge( $tax_query_defaults, array( + 'terms' => preg_split( '/[,]+/', $term ) + ) ); + } + } + } + + // If querystring 'cat' is an array, implode it. + if ( is_array( $q['cat'] ) ) { + $q['cat'] = implode( ',', $q['cat'] ); + } + + // Category stuff + if ( ! empty( $q['cat'] ) && ! $this->is_singular ) { + $cat_in = $cat_not_in = array(); + + $cat_array = preg_split( '/[,\s]+/', urldecode( $q['cat'] ) ); + $cat_array = array_map( 'intval', $cat_array ); + $q['cat'] = implode( ',', $cat_array ); + + foreach ( $cat_array as $cat ) { + if ( $cat > 0 ) + $cat_in[] = $cat; + elseif ( $cat < 0 ) + $cat_not_in[] = abs( $cat ); + } + + if ( ! empty( $cat_in ) ) { + $tax_query[] = array( + 'taxonomy' => 'category', + 'terms' => $cat_in, + 'field' => 'term_id', + 'include_children' => true + ); + } + + if ( ! empty( $cat_not_in ) ) { + $tax_query[] = array( + 'taxonomy' => 'category', + 'terms' => $cat_not_in, + 'field' => 'term_id', + 'operator' => 'NOT IN', + 'include_children' => true + ); + } + unset( $cat_array, $cat_in, $cat_not_in ); + } + + if ( ! empty( $q['category__and'] ) && 1 === count( (array) $q['category__and'] ) ) { + $q['category__and'] = (array) $q['category__and']; + if ( ! isset( $q['category__in'] ) ) + $q['category__in'] = array(); + $q['category__in'][] = absint( reset( $q['category__and'] ) ); + unset( $q['category__and'] ); + } + + if ( ! empty( $q['category__in'] ) ) { + $q['category__in'] = array_map( 'absint', array_unique( (array) $q['category__in'] ) ); + $tax_query[] = array( + 'taxonomy' => 'category', + 'terms' => $q['category__in'], + 'field' => 'term_id', + 'include_children' => false + ); + } + + if ( ! empty($q['category__not_in']) ) { + $q['category__not_in'] = array_map( 'absint', array_unique( (array) $q['category__not_in'] ) ); + $tax_query[] = array( + 'taxonomy' => 'category', + 'terms' => $q['category__not_in'], + 'operator' => 'NOT IN', + 'include_children' => false + ); + } + + if ( ! empty($q['category__and']) ) { + $q['category__and'] = array_map( 'absint', array_unique( (array) $q['category__and'] ) ); + $tax_query[] = array( + 'taxonomy' => 'category', + 'terms' => $q['category__and'], + 'field' => 'term_id', + 'operator' => 'AND', + 'include_children' => false + ); + } + + // If querystring 'tag' is array, implode it. + if ( is_array( $q['tag'] ) ) { + $q['tag'] = implode( ',', $q['tag'] ); + } + + // Tag stuff + if ( '' != $q['tag'] && !$this->is_singular && $this->query_vars_changed ) { + if ( strpos($q['tag'], ',') !== false ) { + $tags = preg_split('/[,\r\n\t ]+/', $q['tag']); + foreach ( (array) $tags as $tag ) { + $tag = sanitize_term_field('slug', $tag, 0, 'post_tag', 'db'); + $q['tag_slug__in'][] = $tag; + } + } elseif ( preg_match('/[+\r\n\t ]+/', $q['tag'] ) || ! empty( $q['cat'] ) ) { + $tags = preg_split('/[+\r\n\t ]+/', $q['tag']); + foreach ( (array) $tags as $tag ) { + $tag = sanitize_term_field('slug', $tag, 0, 'post_tag', 'db'); + $q['tag_slug__and'][] = $tag; + } + } else { + $q['tag'] = sanitize_term_field('slug', $q['tag'], 0, 'post_tag', 'db'); + $q['tag_slug__in'][] = $q['tag']; + } + } + + if ( !empty($q['tag_id']) ) { + $q['tag_id'] = absint( $q['tag_id'] ); + $tax_query[] = array( + 'taxonomy' => 'post_tag', + 'terms' => $q['tag_id'] + ); + } + + if ( !empty($q['tag__in']) ) { + $q['tag__in'] = array_map('absint', array_unique( (array) $q['tag__in'] ) ); + $tax_query[] = array( + 'taxonomy' => 'post_tag', + 'terms' => $q['tag__in'] + ); + } + + if ( !empty($q['tag__not_in']) ) { + $q['tag__not_in'] = array_map('absint', array_unique( (array) $q['tag__not_in'] ) ); + $tax_query[] = array( + 'taxonomy' => 'post_tag', + 'terms' => $q['tag__not_in'], + 'operator' => 'NOT IN' + ); + } + + if ( !empty($q['tag__and']) ) { + $q['tag__and'] = array_map('absint', array_unique( (array) $q['tag__and'] ) ); + $tax_query[] = array( + 'taxonomy' => 'post_tag', + 'terms' => $q['tag__and'], + 'operator' => 'AND' + ); + } + + if ( !empty($q['tag_slug__in']) ) { + $q['tag_slug__in'] = array_map('sanitize_title_for_query', array_unique( (array) $q['tag_slug__in'] ) ); + $tax_query[] = array( + 'taxonomy' => 'post_tag', + 'terms' => $q['tag_slug__in'], + 'field' => 'slug' + ); + } + + if ( !empty($q['tag_slug__and']) ) { + $q['tag_slug__and'] = array_map('sanitize_title_for_query', array_unique( (array) $q['tag_slug__and'] ) ); + $tax_query[] = array( + 'taxonomy' => 'post_tag', + 'terms' => $q['tag_slug__and'], + 'field' => 'slug', + 'operator' => 'AND' + ); + } + + $this->tax_query = new WP_Tax_Query( $tax_query ); + + /** + * Fires after taxonomy-related query vars have been parsed. + * + * @since 3.7.0 + * + * @param WP_Query $this The WP_Query instance. + */ + do_action( 'parse_tax_query', $this ); + } + + /** + * Generate SQL for the WHERE clause based on passed search terms. + * + * @since 3.7.0 + * + * @param array $q Query variables. + * @return string WHERE clause. + */ + protected function parse_search( &$q ) { + global $wpdb; + + $search = ''; + + // added slashes screw with quote grouping when done early, so done later + $q['s'] = stripslashes( $q['s'] ); + if ( empty( $_GET['s'] ) && $this->is_main_query() ) + $q['s'] = urldecode( $q['s'] ); + // there are no line breaks in fields + $q['s'] = str_replace( array( "\r", "\n" ), '', $q['s'] ); + $q['search_terms_count'] = 1; + if ( ! empty( $q['sentence'] ) ) { + $q['search_terms'] = array( $q['s'] ); + } else { + if ( preg_match_all( '/".*?("|$)|((?<=[\t ",+])|^)[^\t ",+]+/', $q['s'], $matches ) ) { + $q['search_terms_count'] = count( $matches[0] ); + $q['search_terms'] = $this->parse_search_terms( $matches[0] ); + // if the search string has only short terms or stopwords, or is 10+ terms long, match it as sentence + if ( empty( $q['search_terms'] ) || count( $q['search_terms'] ) > 9 ) + $q['search_terms'] = array( $q['s'] ); + } else { + $q['search_terms'] = array( $q['s'] ); + } + } + + $n = ! empty( $q['exact'] ) ? '' : '%'; + $searchand = ''; + $q['search_orderby_title'] = array(); + + /** + * Filters the prefix that indicates that a search term should be excluded from results. + * + * @since 4.7.0 + * + * @param string $exclusion_prefix The prefix. Default '-'. Returning + * an empty value disables exclusions. + */ + $exclusion_prefix = apply_filters( 'wp_query_search_exclusion_prefix', '-' ); + + foreach ( $q['search_terms'] as $term ) { + // If there is an $exclusion_prefix, terms prefixed with it should be excluded. + $exclude = $exclusion_prefix && ( $exclusion_prefix === substr( $term, 0, 1 ) ); + if ( $exclude ) { + $like_op = 'NOT LIKE'; + $andor_op = 'AND'; + $term = substr( $term, 1 ); + } else { + $like_op = 'LIKE'; + $andor_op = 'OR'; + } + + if ( $n && ! $exclude ) { + $like = '%' . $wpdb->esc_like( $term ) . '%'; + $q['search_orderby_title'][] = $wpdb->prepare( "{$wpdb->posts}.post_title LIKE %s", $like ); + } + + $like = $n . $wpdb->esc_like( $term ) . $n; + $search .= $wpdb->prepare( "{$searchand}(({$wpdb->posts}.post_title $like_op %s) $andor_op ({$wpdb->posts}.post_excerpt $like_op %s) $andor_op ({$wpdb->posts}.post_content $like_op %s))", $like, $like, $like ); + $searchand = ' AND '; + } + + if ( ! empty( $search ) ) { + $search = " AND ({$search}) "; + if ( ! is_user_logged_in() ) { + $search .= " AND ({$wpdb->posts}.post_password = '') "; + } + } + + return $search; + } + + /** + * Check if the terms are suitable for searching. + * + * Uses an array of stopwords (terms) that are excluded from the separate + * term matching when searching for posts. The list of English stopwords is + * the approximate search engines list, and is translatable. + * + * @since 3.7.0 + * + * @param array $terms Terms to check. + * @return array Terms that are not stopwords. + */ + protected function parse_search_terms( $terms ) { + $strtolower = function_exists( 'mb_strtolower' ) ? 'mb_strtolower' : 'strtolower'; + $checked = array(); + + $stopwords = $this->get_search_stopwords(); + + foreach ( $terms as $term ) { + // keep before/after spaces when term is for exact match + if ( preg_match( '/^".+"$/', $term ) ) + $term = trim( $term, "\"'" ); + else + $term = trim( $term, "\"' " ); + + // Avoid single A-Z and single dashes. + if ( ! $term || ( 1 === strlen( $term ) && preg_match( '/^[a-z\-]$/i', $term ) ) ) + continue; + + if ( in_array( call_user_func( $strtolower, $term ), $stopwords, true ) ) + continue; + + $checked[] = $term; + } + + return $checked; + } + + /** + * Retrieve stopwords used when parsing search terms. + * + * @since 3.7.0 + * + * @return array Stopwords. + */ + protected function get_search_stopwords() { + if ( isset( $this->stopwords ) ) + return $this->stopwords; + + /* translators: This is a comma-separated list of very common words that should be excluded from a search, + * like a, an, and the. These are usually called "stopwords". You should not simply translate these individual + * words into your language. Instead, look for and provide commonly accepted stopwords in your language. + */ + $words = explode( ',', _x( 'about,an,are,as,at,be,by,com,for,from,how,in,is,it,of,on,or,that,the,this,to,was,what,when,where,who,will,with,www', + 'Comma-separated list of search stopwords in your language' ) ); + + $stopwords = array(); + foreach ( $words as $word ) { + $word = trim( $word, "\r\n\t " ); + if ( $word ) + $stopwords[] = $word; + } + + /** + * Filters stopwords used when parsing search terms. + * + * @since 3.7.0 + * + * @param array $stopwords Stopwords. + */ + $this->stopwords = apply_filters( 'wp_search_stopwords', $stopwords ); + return $this->stopwords; + } + + /** + * Generate SQL for the ORDER BY condition based on passed search terms. + * + * @param array $q Query variables. + * @return string ORDER BY clause. + */ + protected function parse_search_order( &$q ) { + global $wpdb; + + if ( $q['search_terms_count'] > 1 ) { + $num_terms = count( $q['search_orderby_title'] ); + + // If the search terms contain negative queries, don't bother ordering by sentence matches. + $like = ''; + if ( ! preg_match( '/(?:\s|^)\-/', $q['s'] ) ) { + $like = '%' . $wpdb->esc_like( $q['s'] ) . '%'; + } + + $search_orderby = ''; + + // sentence match in 'post_title' + if ( $like ) { + $search_orderby .= $wpdb->prepare( "WHEN {$wpdb->posts}.post_title LIKE %s THEN 1 ", $like ); + } + + // sanity limit, sort as sentence when more than 6 terms + // (few searches are longer than 6 terms and most titles are not) + if ( $num_terms < 7 ) { + // all words in title + $search_orderby .= 'WHEN ' . implode( ' AND ', $q['search_orderby_title'] ) . ' THEN 2 '; + // any word in title, not needed when $num_terms == 1 + if ( $num_terms > 1 ) + $search_orderby .= 'WHEN ' . implode( ' OR ', $q['search_orderby_title'] ) . ' THEN 3 '; + } + + // Sentence match in 'post_content' and 'post_excerpt'. + if ( $like ) { + $search_orderby .= $wpdb->prepare( "WHEN {$wpdb->posts}.post_excerpt LIKE %s THEN 4 ", $like ); + $search_orderby .= $wpdb->prepare( "WHEN {$wpdb->posts}.post_content LIKE %s THEN 5 ", $like ); + } + + if ( $search_orderby ) { + $search_orderby = '(CASE ' . $search_orderby . 'ELSE 6 END)'; + } + } else { + // single word or sentence search + $search_orderby = reset( $q['search_orderby_title'] ) . ' DESC'; + } + + return $search_orderby; + } + + /** + * If the passed orderby value is allowed, convert the alias to a + * properly-prefixed orderby value. + * + * @since 4.0.0 + * @access protected + * + * @param string $orderby Alias for the field to order by. + * @return string|false Table-prefixed value to used in the ORDER clause. False otherwise. + */ + protected function parse_orderby( $orderby ) { + global $wpdb; + + // Used to filter values. + $allowed_keys = array( + 'post_name', 'post_author', 'post_date', 'post_title', 'post_modified', + 'post_parent', 'post_type', 'name', 'author', 'date', 'title', 'modified', + 'parent', 'type', 'ID', 'menu_order', 'comment_count', 'rand', + ); + + $primary_meta_key = ''; + $primary_meta_query = false; + $meta_clauses = $this->meta_query->get_clauses(); + if ( ! empty( $meta_clauses ) ) { + $primary_meta_query = reset( $meta_clauses ); + + if ( ! empty( $primary_meta_query['key'] ) ) { + $primary_meta_key = $primary_meta_query['key']; + $allowed_keys[] = $primary_meta_key; + } + + $allowed_keys[] = 'meta_value'; + $allowed_keys[] = 'meta_value_num'; + $allowed_keys = array_merge( $allowed_keys, array_keys( $meta_clauses ) ); + } + + // If RAND() contains a seed value, sanitize and add to allowed keys. + $rand_with_seed = false; + if ( preg_match( '/RAND\(([0-9]+)\)/i', $orderby, $matches ) ) { + $orderby = sprintf( 'RAND(%s)', intval( $matches[1] ) ); + $allowed_keys[] = $orderby; + $rand_with_seed = true; + } + + if ( ! in_array( $orderby, $allowed_keys, true ) ) { + return false; + } + + switch ( $orderby ) { + case 'post_name': + case 'post_author': + case 'post_date': + case 'post_title': + case 'post_modified': + case 'post_parent': + case 'post_type': + case 'ID': + case 'menu_order': + case 'comment_count': + $orderby_clause = "{$wpdb->posts}.{$orderby}"; + break; + case 'rand': + $orderby_clause = 'RAND()'; + break; + case $primary_meta_key: + case 'meta_value': + if ( ! empty( $primary_meta_query['type'] ) ) { + $orderby_clause = "CAST({$primary_meta_query['alias']}.meta_value AS {$primary_meta_query['cast']})"; + } else { + $orderby_clause = "{$primary_meta_query['alias']}.meta_value"; + } + break; + case 'meta_value_num': + $orderby_clause = "{$primary_meta_query['alias']}.meta_value+0"; + break; + default: + if ( array_key_exists( $orderby, $meta_clauses ) ) { + // $orderby corresponds to a meta_query clause. + $meta_clause = $meta_clauses[ $orderby ]; + $orderby_clause = "CAST({$meta_clause['alias']}.meta_value AS {$meta_clause['cast']})"; + } elseif ( $rand_with_seed ) { + $orderby_clause = $orderby; + } else { + // Default: order by post field. + $orderby_clause = "{$wpdb->posts}.post_" . sanitize_key( $orderby ); + } + + break; + } + + return $orderby_clause; + } + + /** + * Parse an 'order' query variable and cast it to ASC or DESC as necessary. + * + * @since 4.0.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'; + } + } + + /** + * Sets the 404 property and saves whether query is feed. + * + * @since 2.0.0 + * @access public + */ + public function set_404() { + $is_feed = $this->is_feed; + + $this->init_query_flags(); + $this->is_404 = true; + + $this->is_feed = $is_feed; + } + + /** + * Retrieve query variable. + * + * @since 1.5.0 + * @since 3.9.0 The `$default` argument was introduced. + * + * @access public + * + * @param string $query_var Query variable key. + * @param mixed $default Optional. Value to return if the query variable is not set. Default empty. + * @return mixed Contents of the query variable. + */ + public function get( $query_var, $default = '' ) { + if ( isset( $this->query_vars[ $query_var ] ) ) { + return $this->query_vars[ $query_var ]; + } + + return $default; + } + + /** + * Set query variable. + * + * @since 1.5.0 + * @access public + * + * @param string $query_var Query variable key. + * @param mixed $value Query variable value. + */ + public function set($query_var, $value) { + $this->query_vars[$query_var] = $value; + } + + /** + * Retrieve the posts based on query variables. + * + * There are a few filters and actions that can be used to modify the post + * database query. + * + * @since 1.5.0 + * @access public + * + * @return array List of posts. + */ + public function get_posts() { + global $wpdb; + + $this->parse_query(); + + /** + * Fires after the query variable object is created, but before the actual query is run. + * + * Note: If using conditional tags, use the method versions within the passed instance + * (e.g. $this->is_main_query() instead of is_main_query()). This is because the functions + * like is_main_query() test against the global $wp_query instance, not the passed one. + * + * @since 2.0.0 + * + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + do_action_ref_array( 'pre_get_posts', array( &$this ) ); + + // Shorthand. + $q = &$this->query_vars; + + // Fill again in case pre_get_posts unset some vars. + $q = $this->fill_query_vars($q); + + // Parse meta query + $this->meta_query = new WP_Meta_Query(); + $this->meta_query->parse_query_vars( $q ); + + // Set a flag if a pre_get_posts hook changed the query vars. + $hash = md5( serialize( $this->query_vars ) ); + if ( $hash != $this->query_vars_hash ) { + $this->query_vars_changed = true; + $this->query_vars_hash = $hash; + } + unset($hash); + + // First let's clear some variables + $distinct = ''; + $whichauthor = ''; + $whichmimetype = ''; + $where = ''; + $limits = ''; + $join = ''; + $search = ''; + $groupby = ''; + $post_status_join = false; + $page = 1; + + if ( isset( $q['caller_get_posts'] ) ) { + _deprecated_argument( 'WP_Query', '3.1.0', __( '"caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead.' ) ); + if ( !isset( $q['ignore_sticky_posts'] ) ) + $q['ignore_sticky_posts'] = $q['caller_get_posts']; + } + + if ( !isset( $q['ignore_sticky_posts'] ) ) + $q['ignore_sticky_posts'] = false; + + if ( !isset($q['suppress_filters']) ) + $q['suppress_filters'] = false; + + if ( !isset($q['cache_results']) ) { + if ( wp_using_ext_object_cache() ) + $q['cache_results'] = false; + else + $q['cache_results'] = true; + } + + if ( !isset($q['update_post_term_cache']) ) + $q['update_post_term_cache'] = true; + + if ( ! isset( $q['lazy_load_term_meta'] ) ) { + $q['lazy_load_term_meta'] = $q['update_post_term_cache']; + } + + if ( !isset($q['update_post_meta_cache']) ) + $q['update_post_meta_cache'] = true; + + if ( !isset($q['post_type']) ) { + if ( $this->is_search ) + $q['post_type'] = 'any'; + else + $q['post_type'] = ''; + } + $post_type = $q['post_type']; + if ( empty( $q['posts_per_page'] ) ) { + $q['posts_per_page'] = get_option( 'posts_per_page' ); + } + if ( isset($q['showposts']) && $q['showposts'] ) { + $q['showposts'] = (int) $q['showposts']; + $q['posts_per_page'] = $q['showposts']; + } + if ( (isset($q['posts_per_archive_page']) && $q['posts_per_archive_page'] != 0) && ($this->is_archive || $this->is_search) ) + $q['posts_per_page'] = $q['posts_per_archive_page']; + if ( !isset($q['nopaging']) ) { + if ( $q['posts_per_page'] == -1 ) { + $q['nopaging'] = true; + } else { + $q['nopaging'] = false; + } + } + + if ( $this->is_feed ) { + // This overrides posts_per_page. + if ( ! empty( $q['posts_per_rss'] ) ) { + $q['posts_per_page'] = $q['posts_per_rss']; + } else { + $q['posts_per_page'] = get_option( 'posts_per_rss' ); + } + $q['nopaging'] = false; + } + $q['posts_per_page'] = (int) $q['posts_per_page']; + if ( $q['posts_per_page'] < -1 ) + $q['posts_per_page'] = abs($q['posts_per_page']); + elseif ( $q['posts_per_page'] == 0 ) + $q['posts_per_page'] = 1; + + if ( !isset($q['comments_per_page']) || $q['comments_per_page'] == 0 ) + $q['comments_per_page'] = get_option('comments_per_page'); + + if ( $this->is_home && (empty($this->query) || $q['preview'] == 'true') && ( 'page' == get_option('show_on_front') ) && get_option('page_on_front') ) { + $this->is_page = true; + $this->is_home = false; + $q['page_id'] = get_option('page_on_front'); + } + + if ( isset($q['page']) ) { + $q['page'] = trim($q['page'], '/'); + $q['page'] = absint($q['page']); + } + + // If true, forcibly turns off SQL_CALC_FOUND_ROWS even when limits are present. + if ( isset($q['no_found_rows']) ) + $q['no_found_rows'] = (bool) $q['no_found_rows']; + else + $q['no_found_rows'] = false; + + switch ( $q['fields'] ) { + case 'ids': + $fields = "{$wpdb->posts}.ID"; + break; + case 'id=>parent': + $fields = "{$wpdb->posts}.ID, {$wpdb->posts}.post_parent"; + break; + default: + $fields = "{$wpdb->posts}.*"; + } + + if ( '' !== $q['menu_order'] ) { + $where .= " AND {$wpdb->posts}.menu_order = " . $q['menu_order']; + } + // The "m" parameter is meant for months but accepts datetimes of varying specificity + if ( $q['m'] ) { + $where .= " AND YEAR({$wpdb->posts}.post_date)=" . substr($q['m'], 0, 4); + if ( strlen($q['m']) > 5 ) { + $where .= " AND MONTH({$wpdb->posts}.post_date)=" . substr($q['m'], 4, 2); + } + if ( strlen($q['m']) > 7 ) { + $where .= " AND DAYOFMONTH({$wpdb->posts}.post_date)=" . substr($q['m'], 6, 2); + } + if ( strlen($q['m']) > 9 ) { + $where .= " AND HOUR({$wpdb->posts}.post_date)=" . substr($q['m'], 8, 2); + } + if ( strlen($q['m']) > 11 ) { + $where .= " AND MINUTE({$wpdb->posts}.post_date)=" . substr($q['m'], 10, 2); + } + if ( strlen($q['m']) > 13 ) { + $where .= " AND SECOND({$wpdb->posts}.post_date)=" . substr($q['m'], 12, 2); + } + } + + // Handle the other individual date parameters + $date_parameters = array(); + + if ( '' !== $q['hour'] ) + $date_parameters['hour'] = $q['hour']; + + if ( '' !== $q['minute'] ) + $date_parameters['minute'] = $q['minute']; + + if ( '' !== $q['second'] ) + $date_parameters['second'] = $q['second']; + + if ( $q['year'] ) + $date_parameters['year'] = $q['year']; + + if ( $q['monthnum'] ) + $date_parameters['monthnum'] = $q['monthnum']; + + if ( $q['w'] ) + $date_parameters['week'] = $q['w']; + + if ( $q['day'] ) + $date_parameters['day'] = $q['day']; + + if ( $date_parameters ) { + $date_query = new WP_Date_Query( array( $date_parameters ) ); + $where .= $date_query->get_sql(); + } + unset( $date_parameters, $date_query ); + + // Handle complex date queries + if ( ! empty( $q['date_query'] ) ) { + $this->date_query = new WP_Date_Query( $q['date_query'] ); + $where .= $this->date_query->get_sql(); + } + + + // If we've got a post_type AND it's not "any" post_type. + if ( !empty($q['post_type']) && 'any' != $q['post_type'] ) { + foreach ( (array)$q['post_type'] as $_post_type ) { + $ptype_obj = get_post_type_object($_post_type); + if ( !$ptype_obj || !$ptype_obj->query_var || empty($q[ $ptype_obj->query_var ]) ) + continue; + + if ( ! $ptype_obj->hierarchical ) { + // Non-hierarchical post types can directly use 'name'. + $q['name'] = $q[ $ptype_obj->query_var ]; + } else { + // Hierarchical post types will operate through 'pagename'. + $q['pagename'] = $q[ $ptype_obj->query_var ]; + $q['name'] = ''; + } + + // Only one request for a slug is possible, this is why name & pagename are overwritten above. + break; + } //end foreach + unset($ptype_obj); + } + + if ( '' !== $q['title'] ) { + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_title = %s", stripslashes( $q['title'] ) ); + } + + // Parameters related to 'post_name'. + if ( '' != $q['name'] ) { + $q['name'] = sanitize_title_for_query( $q['name'] ); + $where .= " AND {$wpdb->posts}.post_name = '" . $q['name'] . "'"; + } elseif ( '' != $q['pagename'] ) { + if ( isset($this->queried_object_id) ) { + $reqpage = $this->queried_object_id; + } else { + if ( 'page' != $q['post_type'] ) { + foreach ( (array)$q['post_type'] as $_post_type ) { + $ptype_obj = get_post_type_object($_post_type); + if ( !$ptype_obj || !$ptype_obj->hierarchical ) + continue; + + $reqpage = get_page_by_path($q['pagename'], OBJECT, $_post_type); + if ( $reqpage ) + break; + } + unset($ptype_obj); + } else { + $reqpage = get_page_by_path($q['pagename']); + } + if ( !empty($reqpage) ) + $reqpage = $reqpage->ID; + else + $reqpage = 0; + } + + $page_for_posts = get_option('page_for_posts'); + if ( ('page' != get_option('show_on_front') ) || empty($page_for_posts) || ( $reqpage != $page_for_posts ) ) { + $q['pagename'] = sanitize_title_for_query( wp_basename( $q['pagename'] ) ); + $q['name'] = $q['pagename']; + $where .= " AND ({$wpdb->posts}.ID = '$reqpage')"; + $reqpage_obj = get_post( $reqpage ); + if ( is_object($reqpage_obj) && 'attachment' == $reqpage_obj->post_type ) { + $this->is_attachment = true; + $post_type = $q['post_type'] = 'attachment'; + $this->is_page = true; + $q['attachment_id'] = $reqpage; + } + } + } elseif ( '' != $q['attachment'] ) { + $q['attachment'] = sanitize_title_for_query( wp_basename( $q['attachment'] ) ); + $q['name'] = $q['attachment']; + $where .= " AND {$wpdb->posts}.post_name = '" . $q['attachment'] . "'"; + } elseif ( is_array( $q['post_name__in'] ) && ! empty( $q['post_name__in'] ) ) { + $q['post_name__in'] = array_map( 'sanitize_title_for_query', $q['post_name__in'] ); + $post_name__in = "'" . implode( "','", $q['post_name__in'] ) . "'"; + $where .= " AND {$wpdb->posts}.post_name IN ($post_name__in)"; + } + + // If an attachment is requested by number, let it supersede any post number. + if ( $q['attachment_id'] ) + $q['p'] = absint($q['attachment_id']); + + // If a post number is specified, load that post + if ( $q['p'] ) { + $where .= " AND {$wpdb->posts}.ID = " . $q['p']; + } elseif ( $q['post__in'] ) { + $post__in = implode(',', array_map( 'absint', $q['post__in'] )); + $where .= " AND {$wpdb->posts}.ID IN ($post__in)"; + } elseif ( $q['post__not_in'] ) { + $post__not_in = implode(',', array_map( 'absint', $q['post__not_in'] )); + $where .= " AND {$wpdb->posts}.ID NOT IN ($post__not_in)"; + } + + if ( is_numeric( $q['post_parent'] ) ) { + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_parent = %d ", $q['post_parent'] ); + } elseif ( $q['post_parent__in'] ) { + $post_parent__in = implode( ',', array_map( 'absint', $q['post_parent__in'] ) ); + $where .= " AND {$wpdb->posts}.post_parent IN ($post_parent__in)"; + } elseif ( $q['post_parent__not_in'] ) { + $post_parent__not_in = implode( ',', array_map( 'absint', $q['post_parent__not_in'] ) ); + $where .= " AND {$wpdb->posts}.post_parent NOT IN ($post_parent__not_in)"; + } + + if ( $q['page_id'] ) { + if ( ('page' != get_option('show_on_front') ) || ( $q['page_id'] != get_option('page_for_posts') ) ) { + $q['p'] = $q['page_id']; + $where = " AND {$wpdb->posts}.ID = " . $q['page_id']; + } + } + + // If a search pattern is specified, load the posts that match. + if ( strlen( $q['s'] ) ) { + $search = $this->parse_search( $q ); + } + + if ( ! $q['suppress_filters'] ) { + /** + * Filters the search SQL that is used in the WHERE clause of WP_Query. + * + * @since 3.0.0 + * + * @param string $search Search SQL for WHERE clause. + * @param WP_Query $this The current WP_Query object. + */ + $search = apply_filters_ref_array( 'posts_search', array( $search, &$this ) ); + } + + // Taxonomies + if ( !$this->is_singular ) { + $this->parse_tax_query( $q ); + + $clauses = $this->tax_query->get_sql( $wpdb->posts, 'ID' ); + + $join .= $clauses['join']; + $where .= $clauses['where']; + } + + if ( $this->is_tax ) { + if ( empty($post_type) ) { + // Do a fully inclusive search for currently registered post types of queried taxonomies + $post_type = array(); + $taxonomies = array_keys( $this->tax_query->queried_terms ); + foreach ( get_post_types( array( 'exclude_from_search' => false ) ) as $pt ) { + $object_taxonomies = $pt === 'attachment' ? get_taxonomies_for_attachments() : get_object_taxonomies( $pt ); + if ( array_intersect( $taxonomies, $object_taxonomies ) ) + $post_type[] = $pt; + } + if ( ! $post_type ) + $post_type = 'any'; + elseif ( count( $post_type ) == 1 ) + $post_type = $post_type[0]; + + $post_status_join = true; + } elseif ( in_array('attachment', (array) $post_type) ) { + $post_status_join = true; + } + } + + /* + * Ensure that 'taxonomy', 'term', 'term_id', 'cat', and + * 'category_name' vars are set for backward compatibility. + */ + if ( ! empty( $this->tax_query->queried_terms ) ) { + + /* + * Set 'taxonomy', 'term', and 'term_id' to the + * first taxonomy other than 'post_tag' or 'category'. + */ + if ( ! isset( $q['taxonomy'] ) ) { + foreach ( $this->tax_query->queried_terms as $queried_taxonomy => $queried_items ) { + if ( empty( $queried_items['terms'][0] ) ) { + continue; + } + + if ( ! in_array( $queried_taxonomy, array( 'category', 'post_tag' ) ) ) { + $q['taxonomy'] = $queried_taxonomy; + + if ( 'slug' === $queried_items['field'] ) { + $q['term'] = $queried_items['terms'][0]; + } else { + $q['term_id'] = $queried_items['terms'][0]; + } + + // Take the first one we find. + break; + } + } + } + + // 'cat', 'category_name', 'tag_id' + foreach ( $this->tax_query->queried_terms as $queried_taxonomy => $queried_items ) { + if ( empty( $queried_items['terms'][0] ) ) { + continue; + } + + if ( 'category' === $queried_taxonomy ) { + $the_cat = get_term_by( $queried_items['field'], $queried_items['terms'][0], 'category' ); + if ( $the_cat ) { + $this->set( 'cat', $the_cat->term_id ); + $this->set( 'category_name', $the_cat->slug ); + } + unset( $the_cat ); + } + + if ( 'post_tag' === $queried_taxonomy ) { + $the_tag = get_term_by( $queried_items['field'], $queried_items['terms'][0], 'post_tag' ); + if ( $the_tag ) { + $this->set( 'tag_id', $the_tag->term_id ); + } + unset( $the_tag ); + } + } + } + + if ( !empty( $this->tax_query->queries ) || !empty( $this->meta_query->queries ) ) { + $groupby = "{$wpdb->posts}.ID"; + } + + // Author/user stuff + + if ( ! empty( $q['author'] ) && $q['author'] != '0' ) { + $q['author'] = addslashes_gpc( '' . urldecode( $q['author'] ) ); + $authors = array_unique( array_map( 'intval', preg_split( '/[,\s]+/', $q['author'] ) ) ); + foreach ( $authors as $author ) { + $key = $author > 0 ? 'author__in' : 'author__not_in'; + $q[$key][] = abs( $author ); + } + $q['author'] = implode( ',', $authors ); + } + + if ( ! empty( $q['author__not_in'] ) ) { + $author__not_in = implode( ',', array_map( 'absint', array_unique( (array) $q['author__not_in'] ) ) ); + $where .= " AND {$wpdb->posts}.post_author NOT IN ($author__not_in) "; + } elseif ( ! empty( $q['author__in'] ) ) { + $author__in = implode( ',', array_map( 'absint', array_unique( (array) $q['author__in'] ) ) ); + $where .= " AND {$wpdb->posts}.post_author IN ($author__in) "; + } + + // Author stuff for nice URLs + + if ( '' != $q['author_name'] ) { + if ( strpos($q['author_name'], '/') !== false ) { + $q['author_name'] = explode('/', $q['author_name']); + if ( $q['author_name'][ count($q['author_name'])-1 ] ) { + $q['author_name'] = $q['author_name'][count($q['author_name'])-1]; // no trailing slash + } else { + $q['author_name'] = $q['author_name'][count($q['author_name'])-2]; // there was a trailing slash + } + } + $q['author_name'] = sanitize_title_for_query( $q['author_name'] ); + $q['author'] = get_user_by('slug', $q['author_name']); + if ( $q['author'] ) + $q['author'] = $q['author']->ID; + $whichauthor .= " AND ({$wpdb->posts}.post_author = " . absint($q['author']) . ')'; + } + + // MIME-Type stuff for attachment browsing + + if ( isset( $q['post_mime_type'] ) && '' != $q['post_mime_type'] ) { + $whichmimetype = wp_post_mime_type_where( $q['post_mime_type'], $wpdb->posts ); + } + $where .= $search . $whichauthor . $whichmimetype; + + if ( ! empty( $this->meta_query->queries ) ) { + $clauses = $this->meta_query->get_sql( 'post', $wpdb->posts, 'ID', $this ); + $join .= $clauses['join']; + $where .= $clauses['where']; + } + + $rand = ( isset( $q['orderby'] ) && 'rand' === $q['orderby'] ); + if ( ! isset( $q['order'] ) ) { + $q['order'] = $rand ? '' : 'DESC'; + } else { + $q['order'] = $rand ? '' : $this->parse_order( $q['order'] ); + } + + // Order by. + if ( empty( $q['orderby'] ) ) { + /* + * Boolean false or empty array blanks out ORDER BY, + * while leaving the value unset or otherwise empty sets the default. + */ + if ( isset( $q['orderby'] ) && ( is_array( $q['orderby'] ) || false === $q['orderby'] ) ) { + $orderby = ''; + } else { + $orderby = "{$wpdb->posts}.post_date " . $q['order']; + } + } elseif ( 'none' == $q['orderby'] ) { + $orderby = ''; + } elseif ( $q['orderby'] == 'post__in' && ! empty( $post__in ) ) { + $orderby = "FIELD( {$wpdb->posts}.ID, $post__in )"; + } elseif ( $q['orderby'] == 'post_parent__in' && ! empty( $post_parent__in ) ) { + $orderby = "FIELD( {$wpdb->posts}.post_parent, $post_parent__in )"; + } elseif ( $q['orderby'] == 'post_name__in' && ! empty( $post_name__in ) ) { + $orderby = "FIELD( {$wpdb->posts}.post_name, $post_name__in )"; + } else { + $orderby_array = array(); + if ( is_array( $q['orderby'] ) ) { + foreach ( $q['orderby'] as $_orderby => $order ) { + $orderby = addslashes_gpc( urldecode( $_orderby ) ); + $parsed = $this->parse_orderby( $orderby ); + + if ( ! $parsed ) { + continue; + } + + $orderby_array[] = $parsed . ' ' . $this->parse_order( $order ); + } + $orderby = implode( ', ', $orderby_array ); + + } else { + $q['orderby'] = urldecode( $q['orderby'] ); + $q['orderby'] = addslashes_gpc( $q['orderby'] ); + + foreach ( explode( ' ', $q['orderby'] ) as $i => $orderby ) { + $parsed = $this->parse_orderby( $orderby ); + // Only allow certain values for safety. + if ( ! $parsed ) { + continue; + } + + $orderby_array[] = $parsed; + } + $orderby = implode( ' ' . $q['order'] . ', ', $orderby_array ); + + if ( empty( $orderby ) ) { + $orderby = "{$wpdb->posts}.post_date " . $q['order']; + } elseif ( ! empty( $q['order'] ) ) { + $orderby .= " {$q['order']}"; + } + } + } + + // Order search results by relevance only when another "orderby" is not specified in the query. + if ( ! empty( $q['s'] ) ) { + $search_orderby = ''; + if ( ! empty( $q['search_orderby_title'] ) && ( empty( $q['orderby'] ) && ! $this->is_feed ) || ( isset( $q['orderby'] ) && 'relevance' === $q['orderby'] ) ) + $search_orderby = $this->parse_search_order( $q ); + + if ( ! $q['suppress_filters'] ) { + /** + * Filters the ORDER BY used when ordering search results. + * + * @since 3.7.0 + * + * @param string $search_orderby The ORDER BY clause. + * @param WP_Query $this The current WP_Query instance. + */ + $search_orderby = apply_filters( 'posts_search_orderby', $search_orderby, $this ); + } + + if ( $search_orderby ) + $orderby = $orderby ? $search_orderby . ', ' . $orderby : $search_orderby; + } + + if ( is_array( $post_type ) && count( $post_type ) > 1 ) { + $post_type_cap = 'multiple_post_type'; + } else { + if ( is_array( $post_type ) ) + $post_type = reset( $post_type ); + $post_type_object = get_post_type_object( $post_type ); + if ( empty( $post_type_object ) ) + $post_type_cap = $post_type; + } + + if ( isset( $q['post_password'] ) ) { + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_password = %s", $q['post_password'] ); + if ( empty( $q['perm'] ) ) { + $q['perm'] = 'readable'; + } + } elseif ( isset( $q['has_password'] ) ) { + $where .= sprintf( " AND {$wpdb->posts}.post_password %s ''", $q['has_password'] ? '!=' : '=' ); + } + + if ( ! empty( $q['comment_status'] ) ) { + $where .= $wpdb->prepare( " AND {$wpdb->posts}.comment_status = %s ", $q['comment_status'] ); + } + + if ( ! empty( $q['ping_status'] ) ) { + $where .= $wpdb->prepare( " AND {$wpdb->posts}.ping_status = %s ", $q['ping_status'] ); + } + + if ( 'any' == $post_type ) { + $in_search_post_types = get_post_types( array('exclude_from_search' => false) ); + if ( empty( $in_search_post_types ) ) { + $where .= ' AND 1=0 '; + } else { + $where .= " AND {$wpdb->posts}.post_type IN ('" . join("', '", $in_search_post_types ) . "')"; + } + } elseif ( !empty( $post_type ) && is_array( $post_type ) ) { + $where .= " AND {$wpdb->posts}.post_type IN ('" . join("', '", $post_type) . "')"; + } elseif ( ! empty( $post_type ) ) { + $where .= " AND {$wpdb->posts}.post_type = '$post_type'"; + $post_type_object = get_post_type_object ( $post_type ); + } elseif ( $this->is_attachment ) { + $where .= " AND {$wpdb->posts}.post_type = 'attachment'"; + $post_type_object = get_post_type_object ( 'attachment' ); + } elseif ( $this->is_page ) { + $where .= " AND {$wpdb->posts}.post_type = 'page'"; + $post_type_object = get_post_type_object ( 'page' ); + } else { + $where .= " AND {$wpdb->posts}.post_type = 'post'"; + $post_type_object = get_post_type_object ( 'post' ); + } + + $edit_cap = 'edit_post'; + $read_cap = 'read_post'; + + if ( ! empty( $post_type_object ) ) { + $edit_others_cap = $post_type_object->cap->edit_others_posts; + $read_private_cap = $post_type_object->cap->read_private_posts; + } else { + $edit_others_cap = 'edit_others_' . $post_type_cap . 's'; + $read_private_cap = 'read_private_' . $post_type_cap . 's'; + } + + $user_id = get_current_user_id(); + + $q_status = array(); + if ( ! empty( $q['post_status'] ) ) { + $statuswheres = array(); + $q_status = $q['post_status']; + if ( ! is_array( $q_status ) ) + $q_status = explode(',', $q_status); + $r_status = array(); + $p_status = array(); + $e_status = array(); + if ( in_array( 'any', $q_status ) ) { + foreach ( get_post_stati( array( 'exclude_from_search' => true ) ) as $status ) { + if ( ! in_array( $status, $q_status ) ) { + $e_status[] = "{$wpdb->posts}.post_status <> '$status'"; + } + } + } else { + foreach ( get_post_stati() as $status ) { + if ( in_array( $status, $q_status ) ) { + if ( 'private' == $status ) { + $p_status[] = "{$wpdb->posts}.post_status = '$status'"; + } else { + $r_status[] = "{$wpdb->posts}.post_status = '$status'"; + } + } + } + } + + if ( empty($q['perm'] ) || 'readable' != $q['perm'] ) { + $r_status = array_merge($r_status, $p_status); + unset($p_status); + } + + if ( !empty($e_status) ) { + $statuswheres[] = "(" . join( ' AND ', $e_status ) . ")"; + } + if ( !empty($r_status) ) { + if ( !empty($q['perm'] ) && 'editable' == $q['perm'] && !current_user_can($edit_others_cap) ) { + $statuswheres[] = "({$wpdb->posts}.post_author = $user_id " . "AND (" . join( ' OR ', $r_status ) . "))"; + } else { + $statuswheres[] = "(" . join( ' OR ', $r_status ) . ")"; + } + } + if ( !empty($p_status) ) { + if ( !empty($q['perm'] ) && 'readable' == $q['perm'] && !current_user_can($read_private_cap) ) { + $statuswheres[] = "({$wpdb->posts}.post_author = $user_id " . "AND (" . join( ' OR ', $p_status ) . "))"; + } else { + $statuswheres[] = "(" . join( ' OR ', $p_status ) . ")"; + } + } + if ( $post_status_join ) { + $join .= " LEFT JOIN {$wpdb->posts} AS p2 ON ({$wpdb->posts}.post_parent = p2.ID) "; + foreach ( $statuswheres as $index => $statuswhere ) { + $statuswheres[$index] = "($statuswhere OR ({$wpdb->posts}.post_status = 'inherit' AND " . str_replace( $wpdb->posts, 'p2', $statuswhere ) . "))"; + } + } + $where_status = implode( ' OR ', $statuswheres ); + if ( ! empty( $where_status ) ) { + $where .= " AND ($where_status)"; + } + } elseif ( !$this->is_singular ) { + $where .= " AND ({$wpdb->posts}.post_status = 'publish'"; + + // Add public states. + $public_states = get_post_stati( array('public' => true) ); + foreach ( (array) $public_states as $state ) { + if ( 'publish' == $state ) // Publish is hard-coded above. + continue; + $where .= " OR {$wpdb->posts}.post_status = '$state'"; + } + + if ( $this->is_admin ) { + // Add protected states that should show in the admin all list. + $admin_all_states = get_post_stati( array('protected' => true, 'show_in_admin_all_list' => true) ); + foreach ( (array) $admin_all_states as $state ) { + $where .= " OR {$wpdb->posts}.post_status = '$state'"; + } + } + + if ( is_user_logged_in() ) { + // Add private states that are limited to viewing by the author of a post or someone who has caps to read private states. + $private_states = get_post_stati( array('private' => true) ); + foreach ( (array) $private_states as $state ) { + $where .= current_user_can( $read_private_cap ) ? " OR {$wpdb->posts}.post_status = '$state'" : " OR {$wpdb->posts}.post_author = $user_id AND {$wpdb->posts}.post_status = '$state'"; + } + } + + $where .= ')'; + } + + /* + * Apply filters on where and join prior to paging so that any + * manipulations to them are reflected in the paging by day queries. + */ + if ( !$q['suppress_filters'] ) { + /** + * Filters the WHERE clause of the query. + * + * @since 1.5.0 + * + * @param string $where The WHERE clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $where = apply_filters_ref_array( 'posts_where', array( $where, &$this ) ); + + /** + * Filters the JOIN clause of the query. + * + * @since 1.5.0 + * + * @param string $where The JOIN clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $join = apply_filters_ref_array( 'posts_join', array( $join, &$this ) ); + } + + // Paging + if ( empty($q['nopaging']) && !$this->is_singular ) { + $page = absint($q['paged']); + if ( !$page ) + $page = 1; + + // If 'offset' is provided, it takes precedence over 'paged'. + if ( isset( $q['offset'] ) && is_numeric( $q['offset'] ) ) { + $q['offset'] = absint( $q['offset'] ); + $pgstrt = $q['offset'] . ', '; + } else { + $pgstrt = absint( ( $page - 1 ) * $q['posts_per_page'] ) . ', '; + } + $limits = 'LIMIT ' . $pgstrt . $q['posts_per_page']; + } + + // Comments feeds + if ( $this->is_comment_feed && ! $this->is_singular ) { + if ( $this->is_archive || $this->is_search ) { + $cjoin = "JOIN {$wpdb->posts} ON ({$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID) $join "; + $cwhere = "WHERE comment_approved = '1' $where"; + $cgroupby = "{$wpdb->comments}.comment_id"; + } else { // Other non singular e.g. front + $cjoin = "JOIN {$wpdb->posts} ON ( {$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID )"; + $cwhere = "WHERE ( post_status = 'publish' OR ( post_status = 'inherit' AND post_type = 'attachment' ) ) AND comment_approved = '1'"; + $cgroupby = ''; + } + + if ( !$q['suppress_filters'] ) { + /** + * Filters the JOIN clause of the comments feed query before sending. + * + * @since 2.2.0 + * + * @param string $cjoin The JOIN clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $cjoin = apply_filters_ref_array( 'comment_feed_join', array( $cjoin, &$this ) ); + + /** + * Filters the WHERE clause of the comments feed query before sending. + * + * @since 2.2.0 + * + * @param string $cwhere The WHERE clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $cwhere = apply_filters_ref_array( 'comment_feed_where', array( $cwhere, &$this ) ); + + /** + * Filters the GROUP BY clause of the comments feed query before sending. + * + * @since 2.2.0 + * + * @param string $cgroupby The GROUP BY clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $cgroupby = apply_filters_ref_array( 'comment_feed_groupby', array( $cgroupby, &$this ) ); + + /** + * Filters the ORDER BY clause of the comments feed query before sending. + * + * @since 2.8.0 + * + * @param string $corderby The ORDER BY clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $corderby = apply_filters_ref_array( 'comment_feed_orderby', array( 'comment_date_gmt DESC', &$this ) ); + + /** + * Filters the LIMIT clause of the comments feed query before sending. + * + * @since 2.8.0 + * + * @param string $climits The JOIN clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $climits = apply_filters_ref_array( 'comment_feed_limits', array( 'LIMIT ' . get_option('posts_per_rss'), &$this ) ); + } + $cgroupby = ( ! empty( $cgroupby ) ) ? 'GROUP BY ' . $cgroupby : ''; + $corderby = ( ! empty( $corderby ) ) ? 'ORDER BY ' . $corderby : ''; + + $comments = (array) $wpdb->get_results("SELECT $distinct {$wpdb->comments}.* FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits"); + // Convert to WP_Comment + $this->comments = array_map( 'get_comment', $comments ); + $this->comment_count = count($this->comments); + + $post_ids = array(); + + foreach ( $this->comments as $comment ) + $post_ids[] = (int) $comment->comment_post_ID; + + $post_ids = join(',', $post_ids); + $join = ''; + if ( $post_ids ) { + $where = "AND {$wpdb->posts}.ID IN ($post_ids) "; + } else { + $where = "AND 0"; + } + } + + $pieces = array( 'where', 'groupby', 'join', 'orderby', 'distinct', 'fields', 'limits' ); + + /* + * Apply post-paging filters on where and join. Only plugins that + * manipulate paging queries should use these hooks. + */ + if ( !$q['suppress_filters'] ) { + /** + * Filters the WHERE clause of the query. + * + * Specifically for manipulating paging queries. + * + * @since 1.5.0 + * + * @param string $where The WHERE clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $where = apply_filters_ref_array( 'posts_where_paged', array( $where, &$this ) ); + + /** + * Filters the GROUP BY clause of the query. + * + * @since 2.0.0 + * + * @param string $groupby The GROUP BY clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $groupby = apply_filters_ref_array( 'posts_groupby', array( $groupby, &$this ) ); + + /** + * Filters the JOIN clause of the query. + * + * Specifically for manipulating paging queries. + * + * @since 1.5.0 + * + * @param string $join The JOIN clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $join = apply_filters_ref_array( 'posts_join_paged', array( $join, &$this ) ); + + /** + * Filters the ORDER BY clause of the query. + * + * @since 1.5.1 + * + * @param string $orderby The ORDER BY clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $orderby = apply_filters_ref_array( 'posts_orderby', array( $orderby, &$this ) ); + + /** + * Filters the DISTINCT clause of the query. + * + * @since 2.1.0 + * + * @param string $distinct The DISTINCT clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $distinct = apply_filters_ref_array( 'posts_distinct', array( $distinct, &$this ) ); + + /** + * Filters the LIMIT clause of the query. + * + * @since 2.1.0 + * + * @param string $limits The LIMIT clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $limits = apply_filters_ref_array( 'post_limits', array( $limits, &$this ) ); + + /** + * Filters the SELECT clause of the query. + * + * @since 2.1.0 + * + * @param string $fields The SELECT clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $fields = apply_filters_ref_array( 'posts_fields', array( $fields, &$this ) ); + + /** + * Filters all query clauses at once, for convenience. + * + * Covers the WHERE, GROUP BY, JOIN, ORDER BY, DISTINCT, + * fields (SELECT), and LIMITS clauses. + * + * @since 3.1.0 + * + * @param array $clauses The list of clauses for the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $clauses = (array) apply_filters_ref_array( 'posts_clauses', array( compact( $pieces ), &$this ) ); + + $where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where' ] : ''; + $groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : ''; + $join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : ''; + $orderby = isset( $clauses[ 'orderby' ] ) ? $clauses[ 'orderby' ] : ''; + $distinct = isset( $clauses[ 'distinct' ] ) ? $clauses[ 'distinct' ] : ''; + $fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : ''; + $limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : ''; + } + + /** + * Fires to announce the query's current selection parameters. + * + * For use by caching plugins. + * + * @since 2.3.0 + * + * @param string $selection The assembled selection query. + */ + do_action( 'posts_selection', $where . $groupby . $orderby . $limits . $join ); + + /* + * Filters again for the benefit of caching plugins. + * Regular plugins should use the hooks above. + */ + if ( !$q['suppress_filters'] ) { + /** + * Filters the WHERE clause of the query. + * + * For use by caching plugins. + * + * @since 2.5.0 + * + * @param string $where The WHERE clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $where = apply_filters_ref_array( 'posts_where_request', array( $where, &$this ) ); + + /** + * Filters the GROUP BY clause of the query. + * + * For use by caching plugins. + * + * @since 2.5.0 + * + * @param string $groupby The GROUP BY clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $groupby = apply_filters_ref_array( 'posts_groupby_request', array( $groupby, &$this ) ); + + /** + * Filters the JOIN clause of the query. + * + * For use by caching plugins. + * + * @since 2.5.0 + * + * @param string $join The JOIN clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $join = apply_filters_ref_array( 'posts_join_request', array( $join, &$this ) ); + + /** + * Filters the ORDER BY clause of the query. + * + * For use by caching plugins. + * + * @since 2.5.0 + * + * @param string $orderby The ORDER BY clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $orderby = apply_filters_ref_array( 'posts_orderby_request', array( $orderby, &$this ) ); + + /** + * Filters the DISTINCT clause of the query. + * + * For use by caching plugins. + * + * @since 2.5.0 + * + * @param string $distinct The DISTINCT clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $distinct = apply_filters_ref_array( 'posts_distinct_request', array( $distinct, &$this ) ); + + /** + * Filters the SELECT clause of the query. + * + * For use by caching plugins. + * + * @since 2.5.0 + * + * @param string $fields The SELECT clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $fields = apply_filters_ref_array( 'posts_fields_request', array( $fields, &$this ) ); + + /** + * Filters the LIMIT clause of the query. + * + * For use by caching plugins. + * + * @since 2.5.0 + * + * @param string $limits The LIMIT clause of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $limits = apply_filters_ref_array( 'post_limits_request', array( $limits, &$this ) ); + + /** + * Filters all query clauses at once, for convenience. + * + * For use by caching plugins. + * + * Covers the WHERE, GROUP BY, JOIN, ORDER BY, DISTINCT, + * fields (SELECT), and LIMITS clauses. + * + * @since 3.1.0 + * + * @param array $pieces The pieces of the query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $clauses = (array) apply_filters_ref_array( 'posts_clauses_request', array( compact( $pieces ), &$this ) ); + + $where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where' ] : ''; + $groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : ''; + $join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : ''; + $orderby = isset( $clauses[ 'orderby' ] ) ? $clauses[ 'orderby' ] : ''; + $distinct = isset( $clauses[ 'distinct' ] ) ? $clauses[ 'distinct' ] : ''; + $fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : ''; + $limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : ''; + } + + if ( ! empty($groupby) ) + $groupby = 'GROUP BY ' . $groupby; + if ( !empty( $orderby ) ) + $orderby = 'ORDER BY ' . $orderby; + + $found_rows = ''; + if ( !$q['no_found_rows'] && !empty($limits) ) + $found_rows = 'SQL_CALC_FOUND_ROWS'; + + $this->request = $old_request = "SELECT $found_rows $distinct $fields FROM {$wpdb->posts} $join WHERE 1=1 $where $groupby $orderby $limits"; + + if ( !$q['suppress_filters'] ) { + /** + * Filters the completed SQL query before sending. + * + * @since 2.0.0 + * + * @param string $request The complete SQL query. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $this->request = apply_filters_ref_array( 'posts_request', array( $this->request, &$this ) ); + } + + /** + * Filters the posts array before the query takes place. + * + * Return a non-null value to bypass WordPress's default post queries. + * + * Filtering functions that require pagination information are encouraged to set + * the `found_posts` and `max_num_pages` properties of the WP_Query object, + * passed to the filter by reference. If WP_Query does not perform a database + * query, it will not have enough information to generate these values itself. + * + * @since 4.6.0 + * + * @param array|null $posts Return an array of post data to short-circuit WP's query, + * or null to allow WP to run its normal queries. + * @param WP_Query $this The WP_Query instance, passed by reference. + */ + $this->posts = apply_filters_ref_array( 'posts_pre_query', array( null, &$this ) ); + + if ( 'ids' == $q['fields'] ) { + if ( null === $this->posts ) { + $this->posts = $wpdb->get_col( $this->request ); + } + + $this->posts = array_map( 'intval', $this->posts ); + $this->post_count = count( $this->posts ); + $this->set_found_posts( $q, $limits ); + + return $this->posts; + } + + if ( 'id=>parent' == $q['fields'] ) { + if ( null === $this->posts ) { + $this->posts = $wpdb->get_results( $this->request ); + } + + $this->post_count = count( $this->posts ); + $this->set_found_posts( $q, $limits ); + + $r = array(); + foreach ( $this->posts as $key => $post ) { + $this->posts[ $key ]->ID = (int) $post->ID; + $this->posts[ $key ]->post_parent = (int) $post->post_parent; + + $r[ (int) $post->ID ] = (int) $post->post_parent; + } + + return $r; + } + + if ( null === $this->posts ) { + $split_the_query = ( $old_request == $this->request && "{$wpdb->posts}.*" == $fields && !empty( $limits ) && $q['posts_per_page'] < 500 ); + + /** + * Filters whether to split the query. + * + * Splitting the query will cause it to fetch just the IDs of the found posts + * (and then individually fetch each post by ID), rather than fetching every + * complete row at once. One massive result vs. many small results. + * + * @since 3.4.0 + * + * @param bool $split_the_query Whether or not to split the query. + * @param WP_Query $this The WP_Query instance. + */ + $split_the_query = apply_filters( 'split_the_query', $split_the_query, $this ); + + if ( $split_the_query ) { + // First get the IDs and then fill in the objects + + $this->request = "SELECT $found_rows $distinct {$wpdb->posts}.ID FROM {$wpdb->posts} $join WHERE 1=1 $where $groupby $orderby $limits"; + + /** + * Filters the Post IDs SQL request before sending. + * + * @since 3.4.0 + * + * @param string $request The post ID request. + * @param WP_Query $this The WP_Query instance. + */ + $this->request = apply_filters( 'posts_request_ids', $this->request, $this ); + + $ids = $wpdb->get_col( $this->request ); + + if ( $ids ) { + $this->posts = $ids; + $this->set_found_posts( $q, $limits ); + _prime_post_caches( $ids, $q['update_post_term_cache'], $q['update_post_meta_cache'] ); + } else { + $this->posts = array(); + } + } else { + $this->posts = $wpdb->get_results( $this->request ); + $this->set_found_posts( $q, $limits ); + } + } + + // Convert to WP_Post objects. + if ( $this->posts ) { + $this->posts = array_map( 'get_post', $this->posts ); + } + + if ( ! $q['suppress_filters'] ) { + /** + * Filters the raw post results array, prior to status checks. + * + * @since 2.3.0 + * + * @param array $posts The post results array. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $this->posts = apply_filters_ref_array( 'posts_results', array( $this->posts, &$this ) ); + } + + if ( !empty($this->posts) && $this->is_comment_feed && $this->is_singular ) { + /** This filter is documented in wp-includes/query.php */ + $cjoin = apply_filters_ref_array( 'comment_feed_join', array( '', &$this ) ); + + /** This filter is documented in wp-includes/query.php */ + $cwhere = apply_filters_ref_array( 'comment_feed_where', array( "WHERE comment_post_ID = '{$this->posts[0]->ID}' AND comment_approved = '1'", &$this ) ); + + /** This filter is documented in wp-includes/query.php */ + $cgroupby = apply_filters_ref_array( 'comment_feed_groupby', array( '', &$this ) ); + $cgroupby = ( ! empty( $cgroupby ) ) ? 'GROUP BY ' . $cgroupby : ''; + + /** This filter is documented in wp-includes/query.php */ + $corderby = apply_filters_ref_array( 'comment_feed_orderby', array( 'comment_date_gmt DESC', &$this ) ); + $corderby = ( ! empty( $corderby ) ) ? 'ORDER BY ' . $corderby : ''; + + /** This filter is documented in wp-includes/query.php */ + $climits = apply_filters_ref_array( 'comment_feed_limits', array( 'LIMIT ' . get_option('posts_per_rss'), &$this ) ); + + $comments_request = "SELECT {$wpdb->comments}.* FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits"; + $comments = $wpdb->get_results($comments_request); + // Convert to WP_Comment + $this->comments = array_map( 'get_comment', $comments ); + $this->comment_count = count($this->comments); + } + + // Check post status to determine if post should be displayed. + if ( !empty($this->posts) && ($this->is_single || $this->is_page) ) { + $status = get_post_status($this->posts[0]); + if ( 'attachment' === $this->posts[0]->post_type && 0 === (int) $this->posts[0]->post_parent ) { + $this->is_page = false; + $this->is_single = true; + $this->is_attachment = true; + } + $post_status_obj = get_post_status_object($status); + + // If the post_status was specifically requested, let it pass through. + if ( !$post_status_obj->public && ! in_array( $status, $q_status ) ) { + + if ( ! is_user_logged_in() ) { + // User must be logged in to view unpublished posts. + $this->posts = array(); + } else { + if ( $post_status_obj->protected ) { + // User must have edit permissions on the draft to preview. + if ( ! current_user_can($edit_cap, $this->posts[0]->ID) ) { + $this->posts = array(); + } else { + $this->is_preview = true; + if ( 'future' != $status ) + $this->posts[0]->post_date = current_time('mysql'); + } + } elseif ( $post_status_obj->private ) { + if ( ! current_user_can($read_cap, $this->posts[0]->ID) ) + $this->posts = array(); + } else { + $this->posts = array(); + } + } + } + + if ( $this->is_preview && $this->posts && current_user_can( $edit_cap, $this->posts[0]->ID ) ) { + /** + * Filters the single post for preview mode. + * + * @since 2.7.0 + * + * @param WP_Post $post_preview The Post object. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $this->posts[0] = get_post( apply_filters_ref_array( 'the_preview', array( $this->posts[0], &$this ) ) ); + } + } + + // Put sticky posts at the top of the posts array + $sticky_posts = get_option('sticky_posts'); + if ( $this->is_home && $page <= 1 && is_array($sticky_posts) && !empty($sticky_posts) && !$q['ignore_sticky_posts'] ) { + $num_posts = count($this->posts); + $sticky_offset = 0; + // Loop over posts and relocate stickies to the front. + for ( $i = 0; $i < $num_posts; $i++ ) { + if ( in_array($this->posts[$i]->ID, $sticky_posts) ) { + $sticky_post = $this->posts[$i]; + // Remove sticky from current position + array_splice($this->posts, $i, 1); + // Move to front, after other stickies + array_splice($this->posts, $sticky_offset, 0, array($sticky_post)); + // Increment the sticky offset. The next sticky will be placed at this offset. + $sticky_offset++; + // Remove post from sticky posts array + $offset = array_search($sticky_post->ID, $sticky_posts); + unset( $sticky_posts[$offset] ); + } + } + + // If any posts have been excluded specifically, Ignore those that are sticky. + if ( !empty($sticky_posts) && !empty($q['post__not_in']) ) + $sticky_posts = array_diff($sticky_posts, $q['post__not_in']); + + // Fetch sticky posts that weren't in the query results + if ( !empty($sticky_posts) ) { + $stickies = get_posts( array( + 'post__in' => $sticky_posts, + 'post_type' => $post_type, + 'post_status' => 'publish', + 'nopaging' => true + ) ); + + foreach ( $stickies as $sticky_post ) { + array_splice( $this->posts, $sticky_offset, 0, array( $sticky_post ) ); + $sticky_offset++; + } + } + } + + // If comments have been fetched as part of the query, make sure comment meta lazy-loading is set up. + if ( ! empty( $this->comments ) ) { + wp_queue_comments_for_comment_meta_lazyload( $this->comments ); + } + + if ( ! $q['suppress_filters'] ) { + /** + * Filters the array of retrieved posts after they've been fetched and + * internally processed. + * + * @since 1.5.0 + * + * @param array $posts The array of retrieved posts. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $this->posts = apply_filters_ref_array( 'the_posts', array( $this->posts, &$this ) ); + } + + // Ensure that any posts added/modified via one of the filters above are + // of the type WP_Post and are filtered. + if ( $this->posts ) { + $this->post_count = count( $this->posts ); + + $this->posts = array_map( 'get_post', $this->posts ); + + if ( $q['cache_results'] ) + update_post_caches($this->posts, $post_type, $q['update_post_term_cache'], $q['update_post_meta_cache']); + + $this->post = reset( $this->posts ); + } else { + $this->post_count = 0; + $this->posts = array(); + } + + if ( $q['lazy_load_term_meta'] ) { + wp_queue_posts_for_term_meta_lazyload( $this->posts ); + } + + return $this->posts; + } + + /** + * Set up the amount of found posts and the number of pages (if limit clause was used) + * for the current query. + * + * @since 3.5.0 + * @access private + * + * @param array $q Query variables. + * @param string $limits LIMIT clauses of the query. + */ + private function set_found_posts( $q, $limits ) { + global $wpdb; + // Bail if posts is an empty array. Continue if posts is an empty string, + // null, or false to accommodate caching plugins that fill posts later. + if ( $q['no_found_rows'] || ( is_array( $this->posts ) && ! $this->posts ) ) + return; + + if ( ! empty( $limits ) ) { + /** + * Filters the query to run for retrieving the found posts. + * + * @since 2.1.0 + * + * @param string $found_posts The query to run to find the found posts. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $this->found_posts = $wpdb->get_var( apply_filters_ref_array( 'found_posts_query', array( 'SELECT FOUND_ROWS()', &$this ) ) ); + } else { + $this->found_posts = count( $this->posts ); + } + + /** + * Filters the number of found posts for the query. + * + * @since 2.1.0 + * + * @param int $found_posts The number of posts found. + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + $this->found_posts = apply_filters_ref_array( 'found_posts', array( $this->found_posts, &$this ) ); + + if ( ! empty( $limits ) ) + $this->max_num_pages = ceil( $this->found_posts / $q['posts_per_page'] ); + } + + /** + * Set up the next post and iterate current post index. + * + * @since 1.5.0 + * @access public + * + * @return WP_Post Next post. + */ + public function next_post() { + + $this->current_post++; + + $this->post = $this->posts[$this->current_post]; + return $this->post; + } + + /** + * Sets up the current post. + * + * Retrieves the next post, sets up the post, sets the 'in the loop' + * property to true. + * + * @since 1.5.0 + * @access public + * + * @global WP_Post $post + */ + public function the_post() { + global $post; + $this->in_the_loop = true; + + if ( $this->current_post == -1 ) // loop has just started + /** + * Fires once the loop is started. + * + * @since 2.0.0 + * + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + do_action_ref_array( 'loop_start', array( &$this ) ); + + $post = $this->next_post(); + $this->setup_postdata( $post ); + } + + /** + * Determines whether there are more posts available in the loop. + * + * Calls the {@see 'loop_end'} action when the loop is complete. + * + * @since 1.5.0 + * @access public + * + * @return bool True if posts are available, false if end of loop. + */ + public function have_posts() { + if ( $this->current_post + 1 < $this->post_count ) { + return true; + } elseif ( $this->current_post + 1 == $this->post_count && $this->post_count > 0 ) { + /** + * Fires once the loop has ended. + * + * @since 2.0.0 + * + * @param WP_Query &$this The WP_Query instance (passed by reference). + */ + do_action_ref_array( 'loop_end', array( &$this ) ); + // Do some cleaning up after the loop + $this->rewind_posts(); + } + + $this->in_the_loop = false; + return false; + } + + /** + * Rewind the posts and reset post index. + * + * @since 1.5.0 + * @access public + */ + public function rewind_posts() { + $this->current_post = -1; + if ( $this->post_count > 0 ) { + $this->post = $this->posts[0]; + } + } + + /** + * Iterate current comment index and return WP_Comment object. + * + * @since 2.2.0 + * @access public + * + * @return WP_Comment Comment object. + */ + public function next_comment() { + $this->current_comment++; + + $this->comment = $this->comments[$this->current_comment]; + return $this->comment; + } + + /** + * Sets up the current comment. + * + * @since 2.2.0 + * @access public + * @global WP_Comment $comment Current comment. + */ + public function the_comment() { + global $comment; + + $comment = $this->next_comment(); + + if ( $this->current_comment == 0 ) { + /** + * Fires once the comment loop is started. + * + * @since 2.2.0 + */ + do_action( 'comment_loop_start' ); + } + } + + /** + * Whether there are more comments available. + * + * Automatically rewinds comments when finished. + * + * @since 2.2.0 + * @access public + * + * @return bool True, if more comments. False, if no more posts. + */ + public function have_comments() { + if ( $this->current_comment + 1 < $this->comment_count ) { + return true; + } elseif ( $this->current_comment + 1 == $this->comment_count ) { + $this->rewind_comments(); + } + + return false; + } + + /** + * Rewind the comments, resets the comment index and comment to first. + * + * @since 2.2.0 + * @access public + */ + public function rewind_comments() { + $this->current_comment = -1; + if ( $this->comment_count > 0 ) { + $this->comment = $this->comments[0]; + } + } + + /** + * Sets up the WordPress query by parsing query string. + * + * @since 1.5.0 + * @access public + * + * @param string $query URL query string. + * @return array List of posts. + */ + public function query( $query ) { + $this->init(); + $this->query = $this->query_vars = wp_parse_args( $query ); + return $this->get_posts(); + } + + /** + * Retrieve queried object. + * + * If queried object is not set, then the queried object will be set from + * the category, tag, taxonomy, posts page, single post, page, or author + * query variable. After it is set up, it will be returned. + * + * @since 1.5.0 + * @access public + * + * @return object + */ + public function get_queried_object() { + if ( isset($this->queried_object) ) + return $this->queried_object; + + $this->queried_object = null; + $this->queried_object_id = null; + + if ( $this->is_category || $this->is_tag || $this->is_tax ) { + if ( $this->is_category ) { + if ( $this->get( 'cat' ) ) { + $term = get_term( $this->get( 'cat' ), 'category' ); + } elseif ( $this->get( 'category_name' ) ) { + $term = get_term_by( 'slug', $this->get( 'category_name' ), 'category' ); + } + } elseif ( $this->is_tag ) { + if ( $this->get( 'tag_id' ) ) { + $term = get_term( $this->get( 'tag_id' ), 'post_tag' ); + } elseif ( $this->get( 'tag' ) ) { + $term = get_term_by( 'slug', $this->get( 'tag' ), 'post_tag' ); + } + } else { + // For other tax queries, grab the first term from the first clause. + if ( ! empty( $this->tax_query->queried_terms ) ) { + $queried_taxonomies = array_keys( $this->tax_query->queried_terms ); + $matched_taxonomy = reset( $queried_taxonomies ); + $query = $this->tax_query->queried_terms[ $matched_taxonomy ]; + + if ( ! empty( $query['terms'] ) ) { + if ( 'term_id' == $query['field'] ) { + $term = get_term( reset( $query['terms'] ), $matched_taxonomy ); + } else { + $term = get_term_by( $query['field'], reset( $query['terms'] ), $matched_taxonomy ); + } + } + } + } + + if ( ! empty( $term ) && ! is_wp_error( $term ) ) { + $this->queried_object = $term; + $this->queried_object_id = (int) $term->term_id; + + if ( $this->is_category && 'category' === $this->queried_object->taxonomy ) + _make_cat_compat( $this->queried_object ); + } + } elseif ( $this->is_post_type_archive ) { + $post_type = $this->get( 'post_type' ); + if ( is_array( $post_type ) ) + $post_type = reset( $post_type ); + $this->queried_object = get_post_type_object( $post_type ); + } elseif ( $this->is_posts_page ) { + $page_for_posts = get_option('page_for_posts'); + $this->queried_object = get_post( $page_for_posts ); + $this->queried_object_id = (int) $this->queried_object->ID; + } elseif ( $this->is_singular && ! empty( $this->post ) ) { + $this->queried_object = $this->post; + $this->queried_object_id = (int) $this->post->ID; + } elseif ( $this->is_author ) { + $this->queried_object_id = (int) $this->get('author'); + $this->queried_object = get_userdata( $this->queried_object_id ); + } + + return $this->queried_object; + } + + /** + * Retrieve ID of the current queried object. + * + * @since 1.5.0 + * @access public + * + * @return int + */ + public function get_queried_object_id() { + $this->get_queried_object(); + + if ( isset($this->queried_object_id) ) { + return $this->queried_object_id; + } + + return 0; + } + + /** + * Constructor. + * + * Sets up the WordPress query, if parameter is not empty. + * + * @since 1.5.0 + * @access public + * + * @param string|array $query URL query string or array of vars. + */ + public function __construct( $query = '' ) { + if ( ! empty( $query ) ) { + $this->query( $query ); + } + } + + /** + * Make private properties readable for backward 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 checkable for backward 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/protected methods readable for backward 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 ( in_array( $name, $this->compat_methods ) ) { + return call_user_func_array( array( $this, $name ), $arguments ); + } + return false; + } + + /** + * Is the query for an existing archive page? + * + * Month, Year, Category, Author, Post Type archive... + * + * @since 3.1.0 + * + * @return bool + */ + public function is_archive() { + return (bool) $this->is_archive; + } + + /** + * Is the query for an existing post type archive page? + * + * @since 3.1.0 + * + * @param mixed $post_types Optional. Post type or array of posts types to check against. + * @return bool + */ + public function is_post_type_archive( $post_types = '' ) { + if ( empty( $post_types ) || ! $this->is_post_type_archive ) + return (bool) $this->is_post_type_archive; + + $post_type = $this->get( 'post_type' ); + if ( is_array( $post_type ) ) + $post_type = reset( $post_type ); + $post_type_object = get_post_type_object( $post_type ); + + return in_array( $post_type_object->name, (array) $post_types ); + } + + /** + * Is the query for an existing attachment page? + * + * @since 3.1.0 + * + * @param mixed $attachment Attachment ID, title, slug, or array of such. + * @return bool + */ + public function is_attachment( $attachment = '' ) { + if ( ! $this->is_attachment ) { + return false; + } + + if ( empty( $attachment ) ) { + return true; + } + + $attachment = array_map( 'strval', (array) $attachment ); + + $post_obj = $this->get_queried_object(); + + if ( in_array( (string) $post_obj->ID, $attachment ) ) { + return true; + } elseif ( in_array( $post_obj->post_title, $attachment ) ) { + return true; + } elseif ( in_array( $post_obj->post_name, $attachment ) ) { + return true; + } + return false; + } + + /** + * Is the query for an existing author archive page? + * + * If the $author parameter is specified, this function will additionally + * check if the query is for one of the authors specified. + * + * @since 3.1.0 + * + * @param mixed $author Optional. User ID, nickname, nicename, or array of User IDs, nicknames, and nicenames + * @return bool + */ + public function is_author( $author = '' ) { + if ( !$this->is_author ) + return false; + + if ( empty($author) ) + return true; + + $author_obj = $this->get_queried_object(); + + $author = array_map( 'strval', (array) $author ); + + if ( in_array( (string) $author_obj->ID, $author ) ) + return true; + elseif ( in_array( $author_obj->nickname, $author ) ) + return true; + elseif ( in_array( $author_obj->user_nicename, $author ) ) + return true; + + return false; + } + + /** + * Is the query for an existing category archive page? + * + * If the $category parameter is specified, this function will additionally + * check if the query is for one of the categories specified. + * + * @since 3.1.0 + * + * @param mixed $category Optional. Category ID, name, slug, or array of Category IDs, names, and slugs. + * @return bool + */ + public function is_category( $category = '' ) { + if ( !$this->is_category ) + return false; + + if ( empty($category) ) + return true; + + $cat_obj = $this->get_queried_object(); + + $category = array_map( 'strval', (array) $category ); + + if ( in_array( (string) $cat_obj->term_id, $category ) ) + return true; + elseif ( in_array( $cat_obj->name, $category ) ) + return true; + elseif ( in_array( $cat_obj->slug, $category ) ) + return true; + + return false; + } + + /** + * Is the query for an existing tag archive page? + * + * If the $tag parameter is specified, this function will additionally + * check if the query is for one of the tags specified. + * + * @since 3.1.0 + * + * @param mixed $tag Optional. Tag ID, name, slug, or array of Tag IDs, names, and slugs. + * @return bool + */ + public function is_tag( $tag = '' ) { + if ( ! $this->is_tag ) + return false; + + if ( empty( $tag ) ) + return true; + + $tag_obj = $this->get_queried_object(); + + $tag = array_map( 'strval', (array) $tag ); + + if ( in_array( (string) $tag_obj->term_id, $tag ) ) + return true; + elseif ( in_array( $tag_obj->name, $tag ) ) + return true; + elseif ( in_array( $tag_obj->slug, $tag ) ) + return true; + + return false; + } + + /** + * Is the query for an existing custom taxonomy archive page? + * + * If the $taxonomy parameter is specified, this function will additionally + * check if the query is for that specific $taxonomy. + * + * If the $term parameter is specified in addition to the $taxonomy parameter, + * this function will additionally check if the query is for one of the terms + * specified. + * + * @since 3.1.0 + * + * @global array $wp_taxonomies + * + * @param mixed $taxonomy Optional. Taxonomy slug or slugs. + * @param mixed $term Optional. Term ID, name, slug or array of Term IDs, names, and slugs. + * @return bool True for custom taxonomy archive pages, false for built-in taxonomies (category and tag archives). + */ + public function is_tax( $taxonomy = '', $term = '' ) { + global $wp_taxonomies; + + if ( !$this->is_tax ) + return false; + + if ( empty( $taxonomy ) ) + return true; + + $queried_object = $this->get_queried_object(); + $tax_array = array_intersect( array_keys( $wp_taxonomies ), (array) $taxonomy ); + $term_array = (array) $term; + + // Check that the taxonomy matches. + if ( ! ( isset( $queried_object->taxonomy ) && count( $tax_array ) && in_array( $queried_object->taxonomy, $tax_array ) ) ) + return false; + + // Only a Taxonomy provided. + if ( empty( $term ) ) + return true; + + return isset( $queried_object->term_id ) && + count( array_intersect( + array( $queried_object->term_id, $queried_object->name, $queried_object->slug ), + $term_array + ) ); + } + + /** + * Whether the current URL is within the comments popup window. + * + * @since 3.1.0 + * @deprecated 4.5.0 + * + * @return bool + */ + public function is_comments_popup() { + _deprecated_function( __FUNCTION__, '4.5.0' ); + + return false; + } + + /** + * Is the query for an existing date archive? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_date() { + return (bool) $this->is_date; + } + + /** + * Is the query for an existing day archive? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_day() { + return (bool) $this->is_day; + } + + /** + * Is the query for a feed? + * + * @since 3.1.0 + * + * @param string|array $feeds Optional feed types to check. + * @return bool + */ + public function is_feed( $feeds = '' ) { + if ( empty( $feeds ) || ! $this->is_feed ) + return (bool) $this->is_feed; + $qv = $this->get( 'feed' ); + if ( 'feed' == $qv ) + $qv = get_default_feed(); + return in_array( $qv, (array) $feeds ); + } + + /** + * Is the query for a comments feed? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_comment_feed() { + return (bool) $this->is_comment_feed; + } + + /** + * Is the query for the front page of the site? + * + * This is for what is displayed at your site's main URL. + * + * Depends on the site's "Front page displays" Reading Settings 'show_on_front' and 'page_on_front'. + * + * If you set a static page for the front page of your site, this function will return + * true when viewing that page. + * + * Otherwise the same as @see WP_Query::is_home() + * + * @since 3.1.0 + * + * @return bool True, if front of site. + */ + public function is_front_page() { + // most likely case + if ( 'posts' == get_option( 'show_on_front') && $this->is_home() ) + return true; + elseif ( 'page' == get_option( 'show_on_front') && get_option( 'page_on_front' ) && $this->is_page( get_option( 'page_on_front' ) ) ) + return true; + else + return false; + } + + /** + * Is the query for the blog homepage? + * + * This is the page which shows the time based blog content of your site. + * + * Depends on the site's "Front page displays" Reading Settings 'show_on_front' and 'page_for_posts'. + * + * If you set a static page for the front page of your site, this function will return + * true only on the page you set as the "Posts page". + * + * @see WP_Query::is_front_page() + * + * @since 3.1.0 + * + * @return bool True if blog view homepage. + */ + public function is_home() { + return (bool) $this->is_home; + } + + /** + * Is the query for an existing month archive? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_month() { + return (bool) $this->is_month; + } + + /** + * Is the query for an existing single page? + * + * If the $page parameter is specified, this function will additionally + * check if the query is for one of the pages specified. + * + * @see WP_Query::is_single() + * @see WP_Query::is_singular() + * + * @since 3.1.0 + * + * @param int|string|array $page Optional. Page ID, title, slug, path, or array of such. Default empty. + * @return bool Whether the query is for an existing single page. + */ + public function is_page( $page = '' ) { + if ( !$this->is_page ) + return false; + + if ( empty( $page ) ) + return true; + + $page_obj = $this->get_queried_object(); + + $page = array_map( 'strval', (array) $page ); + + if ( in_array( (string) $page_obj->ID, $page ) ) { + return true; + } elseif ( in_array( $page_obj->post_title, $page ) ) { + return true; + } elseif ( in_array( $page_obj->post_name, $page ) ) { + return true; + } else { + foreach ( $page as $pagepath ) { + if ( ! strpos( $pagepath, '/' ) ) { + continue; + } + $pagepath_obj = get_page_by_path( $pagepath ); + + if ( $pagepath_obj && ( $pagepath_obj->ID == $page_obj->ID ) ) { + return true; + } + } + } + + return false; + } + + /** + * Is the query for paged result and not for the first page? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_paged() { + return (bool) $this->is_paged; + } + + /** + * Is the query for a post or page preview? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_preview() { + return (bool) $this->is_preview; + } + + /** + * Is the query for the robots file? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_robots() { + return (bool) $this->is_robots; + } + + /** + * Is the query for a search? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_search() { + return (bool) $this->is_search; + } + + /** + * Is the query for an existing single post? + * + * Works for any post type excluding pages. + * + * If the $post parameter is specified, this function will additionally + * check if the query is for one of the Posts specified. + * + * @see WP_Query::is_page() + * @see WP_Query::is_singular() + * + * @since 3.1.0 + * + * @param int|string|array $post Optional. Post ID, title, slug, path, or array of such. Default empty. + * @return bool Whether the query is for an existing single post. + */ + public function is_single( $post = '' ) { + if ( !$this->is_single ) + return false; + + if ( empty($post) ) + return true; + + $post_obj = $this->get_queried_object(); + + $post = array_map( 'strval', (array) $post ); + + if ( in_array( (string) $post_obj->ID, $post ) ) { + return true; + } elseif ( in_array( $post_obj->post_title, $post ) ) { + return true; + } elseif ( in_array( $post_obj->post_name, $post ) ) { + return true; + } else { + foreach ( $post as $postpath ) { + if ( ! strpos( $postpath, '/' ) ) { + continue; + } + $postpath_obj = get_page_by_path( $postpath, OBJECT, $post_obj->post_type ); + + if ( $postpath_obj && ( $postpath_obj->ID == $post_obj->ID ) ) { + return true; + } + } + } + return false; + } + + /** + * Is the query for an existing single post of any post type (post, attachment, page, ... )? + * + * If the $post_types parameter is specified, this function will additionally + * check if the query is for one of the Posts Types specified. + * + * @see WP_Query::is_page() + * @see WP_Query::is_single() + * + * @since 3.1.0 + * + * @param string|array $post_types Optional. Post type or array of post types. Default empty. + * @return bool Whether the query is for an existing single post of any of the given post types. + */ + public function is_singular( $post_types = '' ) { + if ( empty( $post_types ) || !$this->is_singular ) + return (bool) $this->is_singular; + + $post_obj = $this->get_queried_object(); + + return in_array( $post_obj->post_type, (array) $post_types ); + } + + /** + * Is the query for a specific time? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_time() { + return (bool) $this->is_time; + } + + /** + * Is the query for a trackback endpoint call? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_trackback() { + return (bool) $this->is_trackback; + } + + /** + * Is the query for an existing year archive? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_year() { + return (bool) $this->is_year; + } + + /** + * Is the query a 404 (returns no results)? + * + * @since 3.1.0 + * + * @return bool + */ + public function is_404() { + return (bool) $this->is_404; + } + + /** + * Is the query for an embedded post? + * + * @since 4.4.0 + * + * @return bool + */ + public function is_embed() { + return (bool) $this->is_embed; + } + + /** + * Is the query the main query? + * + * @since 3.3.0 + * + * @global WP_Query $wp_query Global WP_Query instance. + * + * @return bool + */ + public function is_main_query() { + global $wp_the_query; + return $wp_the_query === $this; + } + + /** + * Set up global post data. + * + * @since 4.1.0 + * @since 4.4.0 Added the ability to pass a post ID to `$post`. + * + * @global int $id + * @global WP_User $authordata + * @global string|int|bool $currentday + * @global string|int|bool $currentmonth + * @global int $page + * @global array $pages + * @global int $multipage + * @global int $more + * @global int $numpages + * + * @param WP_Post|object|int $post WP_Post instance or Post ID/object. + * @return true True when finished. + */ + public function setup_postdata( $post ) { + global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages; + + if ( ! ( $post instanceof WP_Post ) ) { + $post = get_post( $post ); + } + + if ( ! $post ) { + return; + } + + $id = (int) $post->ID; + + $authordata = get_userdata($post->post_author); + + $currentday = mysql2date('d.m.y', $post->post_date, false); + $currentmonth = mysql2date('m', $post->post_date, false); + $numpages = 1; + $multipage = 0; + $page = $this->get( 'page' ); + if ( ! $page ) + $page = 1; + + /* + * Force full post content when viewing the permalink for the $post, + * or when on an RSS feed. Otherwise respect the 'more' tag. + */ + if ( $post->ID === get_queried_object_id() && ( $this->is_page() || $this->is_single() ) ) { + $more = 1; + } elseif ( $this->is_feed() ) { + $more = 1; + } else { + $more = 0; + } + + $content = $post->post_content; + if ( false !== strpos( $content, '' ) ) { + $content = str_replace( "\n\n", '', $content ); + $content = str_replace( "\n", '', $content ); + $content = str_replace( "\n", '', $content ); + + // Ignore nextpage at the beginning of the content. + if ( 0 === strpos( $content, '' ) ) + $content = substr( $content, 15 ); + + $pages = explode('', $content); + } else { + $pages = array( $post->post_content ); + } + + /** + * Filters the "pages" derived from splitting the post content. + * + * "Pages" are determined by splitting the post content based on the presence + * of `` tags. + * + * @since 4.4.0 + * + * @param array $pages Array of "pages" derived from the post content. + * of `` tags.. + * @param WP_Post $post Current post object. + */ + $pages = apply_filters( 'content_pagination', $pages, $post ); + + $numpages = count( $pages ); + + if ( $numpages > 1 ) { + if ( $page > 1 ) { + $more = 1; + } + $multipage = 1; + } else { + $multipage = 0; + } + + /** + * Fires once the post data has been setup. + * + * @since 2.8.0 + * @since 4.1.0 Introduced `$this` parameter. + * + * @param WP_Post &$post The Post object (passed by reference). + * @param WP_Query &$this The current Query object (passed by reference). + */ + do_action_ref_array( 'the_post', array( &$post, &$this ) ); + + return true; + } + /** + * After looping through a nested query, this function + * restores the $post global to the current post in this query. + * + * @since 3.7.0 + * + * @global WP_Post $post + */ + public function reset_postdata() { + if ( ! empty( $this->post ) ) { + $GLOBALS['post'] = $this->post; + $this->setup_postdata( $this->post ); + } + } + + /** + * Lazyload term meta for posts in the loop. + * + * @since 4.4.0 + * @deprecated 4.5.0 See wp_queue_posts_for_term_meta_lazyload(). + * + * @param mixed $check + * @param int $term_id + * @return mixed + */ + public function lazyload_term_meta( $check, $term_id ) { + _deprecated_function( __METHOD__, '4.5.0' ); + return $check; + } + + /** + * Lazyload comment meta for comments in the loop. + * + * @since 4.4.0 + * @deprecated 4.5.0 See wp_queue_comments_for_comment_meta_lazyload(). + * + * @param mixed $check + * @param int $comment_id + * @return mixed + */ + public function lazyload_comment_meta( $check, $comment_id ) { + _deprecated_function( __METHOD__, '4.5.0' ); + return $check; + } +} diff --git a/wp/wp-includes/class-wp-rewrite.php b/wp/wp-includes/class-wp-rewrite.php index 2c576156..17c58b90 100644 --- a/wp/wp-includes/class-wp-rewrite.php +++ b/wp/wp-includes/class-wp-rewrite.php @@ -1413,7 +1413,7 @@ class WP_Rewrite { * * @param array $rules The rewrite rules generated for the current permastruct. */ - $rules = apply_filters( $permastructname . '_rewrite_rules', $rules ); + $rules = apply_filters( "{$permastructname}_rewrite_rules", $rules ); if ( 'post_tag' == $permastructname ) { /** @@ -1475,6 +1475,10 @@ class WP_Rewrite { if ( empty($this->rules) ) { $this->matches = 'matches'; $this->rewrite_rules(); + if ( ! did_action( 'wp_loaded' ) ) { + add_action( 'wp_loaded', array( $this, 'flush_rules' ) ); + return $this->rules; + } update_option('rewrite_rules', $this->rules); } diff --git a/wp/wp-includes/class-wp-roles.php b/wp/wp-includes/class-wp-roles.php index ff733e22..23e05d7b 100644 --- a/wp/wp-includes/class-wp-roles.php +++ b/wp/wp-includes/class-wp-roles.php @@ -105,11 +105,11 @@ class WP_Roles { * @since 2.1.0 * @access protected * - * @global wpdb $wpdb WordPress database abstraction object. * @global array $wp_user_roles Used to set the 'roles' property value. */ protected function _init() { - global $wpdb, $wp_user_roles; + global $wp_user_roles, $wpdb; + $this->role_key = $wpdb->get_blog_prefix() . 'user_roles'; if ( ! empty( $wp_user_roles ) ) { $this->roles = $wp_user_roles; @@ -127,6 +127,15 @@ class WP_Roles { $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] ); $this->role_names[$role] = $this->roles[$role]['name']; } + + /** + * After the roles have been initialized, allow plugins to add their own roles. + * + * @since 4.7.0 + * + * @param WP_Roles $this A reference to the WP_Roles object. + */ + do_action( 'wp_roles_init', $this ); } /** @@ -136,29 +145,12 @@ class WP_Roles { * after switching wpdb to a new site ID. * * @since 3.5.0 + * @deprecated 4.7.0 Use new WP_Roles() * @access public - * - * @global wpdb $wpdb WordPress database abstraction object. */ public function reinit() { - // There is no need to reinit if using the wp_user_roles global. - if ( ! $this->use_db ) - return; - - global $wpdb; - - // Duplicated from _init() to avoid an extra function call. - $this->role_key = $wpdb->get_blog_prefix() . 'user_roles'; - $this->roles = get_option( $this->role_key ); - if ( empty( $this->roles ) ) - return; - - $this->role_objects = array(); - $this->role_names = array(); - foreach ( array_keys( $this->roles ) as $role ) { - $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] ); - $this->role_names[$role] = $this->roles[$role]['name']; - } + _deprecated_function( __METHOD__, '4.7.0', 'new WP_Roles()' ); + $this->_init(); } /** diff --git a/wp/wp-includes/class-wp-session-tokens.php b/wp/wp-includes/class-wp-session-tokens.php new file mode 100644 index 00000000..2f498b84 --- /dev/null +++ b/wp/wp-includes/class-wp-session-tokens.php @@ -0,0 +1,317 @@ +user_id = $user_id; + } + + /** + * Get a session token manager instance for a user. + * + * This method contains a filter that allows a plugin to swap out + * the session manager for a subclass of WP_Session_Tokens. + * + * @since 4.0.0 + * @access public + * @static + * + * @param int $user_id User whose session to manage. + */ + final public static function get_instance( $user_id ) { + /** + * Filters the session token manager used. + * + * @since 4.0.0 + * + * @param string $session Name of class to use as the manager. + * Default 'WP_User_Meta_Session_Tokens'. + */ + $manager = apply_filters( 'session_token_manager', 'WP_User_Meta_Session_Tokens' ); + return new $manager( $user_id ); + } + + /** + * Hashes a session token for storage. + * + * @since 4.0.0 + * @access private + * + * @param string $token Session token to hash. + * @return string A hash of the session token (a verifier). + */ + final private function hash_token( $token ) { + // If ext/hash is not present, use sha1() instead. + if ( function_exists( 'hash' ) ) { + return hash( 'sha256', $token ); + } else { + return sha1( $token ); + } + } + + /** + * Get a user's session. + * + * @since 4.0.0 + * @access public + * + * @param string $token Session token + * @return array User session + */ + final public function get( $token ) { + $verifier = $this->hash_token( $token ); + return $this->get_session( $verifier ); + } + + /** + * Validate a user's session token as authentic. + * + * Checks that the given token is present and hasn't expired. + * + * @since 4.0.0 + * @access public + * + * @param string $token Token to verify. + * @return bool Whether the token is valid for the user. + */ + final public function verify( $token ) { + $verifier = $this->hash_token( $token ); + return (bool) $this->get_session( $verifier ); + } + + /** + * Generate a session token and attach session information to it. + * + * A session token is a long, random string. It is used in a cookie + * link that cookie to an expiration time and to ensure the cookie + * becomes invalidated upon logout. + * + * This function generates a token and stores it with the associated + * expiration time (and potentially other session information via the + * {@see 'attach_session_information'} filter). + * + * @since 4.0.0 + * @access public + * + * @param int $expiration Session expiration timestamp. + * @return string Session token. + */ + final public function create( $expiration ) { + /** + * Filters the information attached to the newly created session. + * + * Could be used in the future to attach information such as + * IP address or user agent to a session. + * + * @since 4.0.0 + * + * @param array $session Array of extra data. + * @param int $user_id User ID. + */ + $session = apply_filters( 'attach_session_information', array(), $this->user_id ); + $session['expiration'] = $expiration; + + // IP address. + if ( !empty( $_SERVER['REMOTE_ADDR'] ) ) { + $session['ip'] = $_SERVER['REMOTE_ADDR']; + } + + // User-agent. + if ( ! empty( $_SERVER['HTTP_USER_AGENT'] ) ) { + $session['ua'] = wp_unslash( $_SERVER['HTTP_USER_AGENT'] ); + } + + // Timestamp + $session['login'] = time(); + + $token = wp_generate_password( 43, false, false ); + + $this->update( $token, $session ); + + return $token; + } + + /** + * Update a session token. + * + * @since 4.0.0 + * @access public + * + * @param string $token Session token to update. + * @param array $session Session information. + */ + final public function update( $token, $session ) { + $verifier = $this->hash_token( $token ); + $this->update_session( $verifier, $session ); + } + + /** + * Destroy a session token. + * + * @since 4.0.0 + * @access public + * + * @param string $token Session token to destroy. + */ + final public function destroy( $token ) { + $verifier = $this->hash_token( $token ); + $this->update_session( $verifier, null ); + } + + /** + * Destroy all session tokens for this user, + * except a single token, presumably the one in use. + * + * @since 4.0.0 + * @access public + * + * @param string $token_to_keep Session token to keep. + */ + final public function destroy_others( $token_to_keep ) { + $verifier = $this->hash_token( $token_to_keep ); + $session = $this->get_session( $verifier ); + if ( $session ) { + $this->destroy_other_sessions( $verifier ); + } else { + $this->destroy_all_sessions(); + } + } + + /** + * Determine whether a session token is still valid, + * based on expiration. + * + * @since 4.0.0 + * @access protected + * + * @param array $session Session to check. + * @return bool Whether session is valid. + */ + final protected function is_still_valid( $session ) { + return $session['expiration'] >= time(); + } + + /** + * Destroy all session tokens for a user. + * + * @since 4.0.0 + * @access public + */ + final public function destroy_all() { + $this->destroy_all_sessions(); + } + + /** + * Destroy all session tokens for all users. + * + * @since 4.0.0 + * @access public + * @static + */ + final public static function destroy_all_for_all_users() { + $manager = apply_filters( 'session_token_manager', 'WP_User_Meta_Session_Tokens' ); + call_user_func( array( $manager, 'drop_sessions' ) ); + } + + /** + * Retrieve all sessions of a user. + * + * @since 4.0.0 + * @access public + * + * @return array Sessions of a user. + */ + final public function get_all() { + return array_values( $this->get_sessions() ); + } + + /** + * This method should retrieve all sessions of a user, keyed by verifier. + * + * @since 4.0.0 + * @access protected + * + * @return array Sessions of a user, keyed by verifier. + */ + abstract protected function get_sessions(); + + /** + * This method should look up a session by its verifier (token hash). + * + * @since 4.0.0 + * @access protected + * + * @param string $verifier Verifier of the session to retrieve. + * @return array|null The session, or null if it does not exist. + */ + abstract protected function get_session( $verifier ); + + /** + * This method should update a session by its verifier. + * + * Omitting the second argument should destroy the session. + * + * @since 4.0.0 + * @access protected + * + * @param string $verifier Verifier of the session to update. + * @param array $session Optional. Session. Omitting this argument destroys the session. + */ + abstract protected function update_session( $verifier, $session = null ); + + /** + * This method should destroy all session tokens for this user, + * except a single session passed. + * + * @since 4.0.0 + * @access protected + * + * @param string $verifier Verifier of the session to keep. + */ + abstract protected function destroy_other_sessions( $verifier ); + + /** + * This method should destroy all sessions for a user. + * + * @since 4.0.0 + * @access protected + */ + abstract protected function destroy_all_sessions(); + + /** + * This static method should destroy all session tokens for all users. + * + * @since 4.0.0 + * @access public + * @static + */ + public static function drop_sessions() {} +} diff --git a/wp/wp-includes/class-wp-simplepie-file.php b/wp/wp-includes/class-wp-simplepie-file.php new file mode 100644 index 00000000..b87df7d9 --- /dev/null +++ b/wp/wp-includes/class-wp-simplepie-file.php @@ -0,0 +1,72 @@ +url = $url; + $this->timeout = $timeout; + $this->redirects = $redirects; + $this->headers = $headers; + $this->useragent = $useragent; + + $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE; + + if ( preg_match('/^http(s)?:\/\//i', $url) ) { + $args = array( + 'timeout' => $this->timeout, + 'redirection' => $this->redirects, + ); + + if ( !empty($this->headers) ) + $args['headers'] = $this->headers; + + if ( SIMPLEPIE_USERAGENT != $this->useragent ) //Use default WP user agent unless custom has been specified + $args['user-agent'] = $this->useragent; + + $res = wp_safe_remote_request($url, $args); + + if ( is_wp_error($res) ) { + $this->error = 'WP HTTP Error: ' . $res->get_error_message(); + $this->success = false; + } else { + $this->headers = wp_remote_retrieve_headers( $res ); + $this->body = wp_remote_retrieve_body( $res ); + $this->status_code = wp_remote_retrieve_response_code( $res ); + } + } else { + $this->error = ''; + $this->success = false; + } + } +} diff --git a/wp/wp-includes/class-wp-simplepie-sanitize-kses.php b/wp/wp-includes/class-wp-simplepie-sanitize-kses.php new file mode 100644 index 00000000..dce5edce --- /dev/null +++ b/wp/wp-includes/class-wp-simplepie-sanitize-kses.php @@ -0,0 +1,59 @@ +)/', $data)) { + $type |= SIMPLEPIE_CONSTRUCT_HTML; + } + else { + $type |= SIMPLEPIE_CONSTRUCT_TEXT; + } + } + if ( $type & SIMPLEPIE_CONSTRUCT_BASE64 ) { + $data = base64_decode( $data ); + } + if ( $type & ( SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML ) ) { + $data = wp_kses_post( $data ); + if ( $this->output_encoding !== 'UTF-8' ) { + $data = $this->registry->call( 'Misc', 'change_encoding', array( $data, 'UTF-8', $this->output_encoding ) ); + } + return $data; + } else { + return parent::sanitize( $data, $type, $base ); + } + } +} diff --git a/wp/wp-includes/class-wp-site-query.php b/wp/wp-includes/class-wp-site-query.php index cbffd664..8f52372d 100644 --- a/wp/wp-includes/class-wp-site-query.php +++ b/wp/wp-includes/class-wp-site-query.php @@ -113,7 +113,7 @@ class WP_Site_Query { * @type string $fields Site fields to return. Accepts 'ids' (returns an array of site IDs) * or empty (returns an array of complete site objects). Default empty. * @type int $ID A site ID to only return that site. Default empty. - * @type int $number Maximum number of sites to retrieve. Default null (no limit). + * @type int $number Maximum number of sites to retrieve. Default 100. * @type int $offset Number of sites to offset the query. Used to build LIMIT clause. * Default 0. * @type bool $no_found_rows Whether to disable the `SQL_CALC_FOUND_ROWS` query. Default true. @@ -127,12 +127,10 @@ class WP_Site_Query { * include all networks. Default 0. * @type array $network__in Array of network IDs to include affiliated sites for. Default empty. * @type array $network__not_in Array of network IDs to exclude affiliated sites for. Default empty. - * @type string $domain Limit results to those affiliated with a given domain. - * Default empty. + * @type string $domain Limit results to those affiliated with a given domain. Default empty. * @type array $domain__in Array of domains to include affiliated sites for. Default empty. * @type array $domain__not_in Array of domains to exclude affiliated sites for. Default empty. - * @type string $path Limit results to those affiliated with a given path. - * Default empty. + * @type string $path Limit results to those affiliated with a given path. Default empty. * @type array $path__in Array of paths to include affiliated sites for. Default empty. * @type array $path__not_in Array of paths to exclude affiliated sites for. Default empty. * @type int $public Limit results to public sites. Accepts '1' or '0'. Default empty. @@ -247,11 +245,7 @@ class WP_Site_Query { // $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', 'sites' ); - if ( ! $last_changed ) { - $last_changed = microtime(); - wp_cache_set( 'last_changed', $last_changed, 'sites' ); - } + $last_changed = wp_cache_get_last_changed( 'sites' ); $cache_key = "get_sites:$key:$last_changed"; $cache_value = wp_cache_get( $cache_key, 'sites' ); @@ -511,6 +505,8 @@ class WP_Site_Query { $this->sql_clauses['where']['date_query'] = preg_replace( '/^\s*AND\s*/', '', $this->date_query->get_sql() ); } + $join = ''; + $where = implode( ' AND ', $this->sql_clauses['where'] ); $pieces = array( 'fields', 'join', 'where', 'orderby', 'limits', 'groupby' ); diff --git a/wp/wp-includes/class-wp-site.php b/wp/wp-includes/class-wp-site.php index a250c8d0..53529fe9 100644 --- a/wp/wp-includes/class-wp-site.php +++ b/wp/wp-includes/class-wp-site.php @@ -15,8 +15,12 @@ * * @since 4.5.0 * - * @property int $id - * @property int $network_id + * @property int $id + * @property int $network_id + * @property string $blogname + * @property string $siteurl + * @property int $post_count + * @property string $home */ final class WP_Site { @@ -310,7 +314,7 @@ final class WP_Site { * * @see WP_Site::__get() * - * @return object A raw site object with all details included. + * @return stdClass A raw site object with all details included. */ private function get_details() { $details = wp_cache_get( $this->blog_id, 'site-details' ); @@ -342,12 +346,15 @@ final class WP_Site { } } + /** This filter is documented in wp-includes/ms-blogs.php */ + $details = apply_filters_deprecated( 'blog_details', array( $details ), '4.7.0', 'site_details' ); + /** * Filters a site's extended properties. * * @since 4.6.0 * - * @param object $details The site details. + * @param stdClass $details The site details. */ $details = apply_filters( 'site_details', $details ); diff --git a/wp/wp-includes/class-wp-taxonomy.php b/wp/wp-includes/class-wp-taxonomy.php new file mode 100644 index 00000000..4611ce97 --- /dev/null +++ b/wp/wp-includes/class-wp-taxonomy.php @@ -0,0 +1,416 @@ +name = $taxonomy; + + $this->set_props( $object_type, $args ); + } + + /** + * Sets taxonomy properties. + * + * @since 4.7.0 + * @access public + * + * @param array|string $object_type Name of the object type for the taxonomy object. + * @param array|string $args Array or query string of arguments for registering a taxonomy. + */ + public function set_props( $object_type, $args ) { + $args = wp_parse_args( $args ); + + /** + * Filters the arguments for registering a taxonomy. + * + * @since 4.4.0 + * + * @param array $args Array of arguments for registering a taxonomy. + * @param string $taxonomy Taxonomy key. + * @param array $object_type Array of names of object types for the taxonomy. + */ + $args = apply_filters( 'register_taxonomy_args', $args, $this->name, (array) $object_type ); + + $defaults = array( + 'labels' => array(), + 'description' => '', + 'public' => true, + 'publicly_queryable' => null, + 'hierarchical' => false, + 'show_ui' => null, + 'show_in_menu' => null, + 'show_in_nav_menus' => null, + 'show_tagcloud' => null, + 'show_in_quick_edit' => null, + 'show_admin_column' => false, + 'meta_box_cb' => null, + 'capabilities' => array(), + 'rewrite' => true, + 'query_var' => $this->name, + 'update_count_callback' => '', + '_builtin' => false, + ); + + $args = array_merge( $defaults, $args ); + + // If not set, default to the setting for public. + if ( null === $args['publicly_queryable'] ) { + $args['publicly_queryable'] = $args['public']; + } + + if ( false !== $args['query_var'] && ( is_admin() || false !== $args['publicly_queryable'] ) ) { + if ( true === $args['query_var'] ) { + $args['query_var'] = $this->name; + } else { + $args['query_var'] = sanitize_title_with_dashes( $args['query_var'] ); + } + } else { + // Force query_var to false for non-public taxonomies. + $args['query_var'] = false; + } + + if ( false !== $args['rewrite'] && ( is_admin() || '' != get_option( 'permalink_structure' ) ) ) { + $args['rewrite'] = wp_parse_args( $args['rewrite'], array( + 'with_front' => true, + 'hierarchical' => false, + 'ep_mask' => EP_NONE, + ) ); + + if ( empty( $args['rewrite']['slug'] ) ) { + $args['rewrite']['slug'] = sanitize_title_with_dashes( $this->name ); + } + } + + // If not set, default to the setting for public. + if ( null === $args['show_ui'] ) { + $args['show_ui'] = $args['public']; + } + + // If not set, default to the setting for show_ui. + if ( null === $args['show_in_menu'] || ! $args['show_ui'] ) { + $args['show_in_menu'] = $args['show_ui']; + } + + // If not set, default to the setting for public. + if ( null === $args['show_in_nav_menus'] ) { + $args['show_in_nav_menus'] = $args['public']; + } + + // If not set, default to the setting for show_ui. + if ( null === $args['show_tagcloud'] ) { + $args['show_tagcloud'] = $args['show_ui']; + } + + // If not set, default to the setting for show_ui. + if ( null === $args['show_in_quick_edit'] ) { + $args['show_in_quick_edit'] = $args['show_ui']; + } + + $default_caps = array( + 'manage_terms' => 'manage_categories', + 'edit_terms' => 'manage_categories', + 'delete_terms' => 'manage_categories', + 'assign_terms' => 'edit_posts', + ); + + $args['cap'] = (object) array_merge( $default_caps, $args['capabilities'] ); + unset( $args['capabilities'] ); + + $args['object_type'] = array_unique( (array) $object_type ); + + // If not set, use the default meta box + if ( null === $args['meta_box_cb'] ) { + if ( $args['hierarchical'] ) { + $args['meta_box_cb'] = 'post_categories_meta_box'; + } else { + $args['meta_box_cb'] = 'post_tags_meta_box'; + } + } + + foreach ( $args as $property_name => $property_value ) { + $this->$property_name = $property_value; + } + + $this->labels = get_taxonomy_labels( $this ); + $this->label = $this->labels->name; + } + + /** + * Adds the necessary rewrite rules for the taxonomy. + * + * @since 4.7.0 + * @access public + * + * @global WP $wp Current WordPress environment instance. + */ + public function add_rewrite_rules() { + /* @var WP $wp */ + global $wp; + + // Non-publicly queryable taxonomies should not register query vars, except in the admin. + if ( false !== $this->query_var && $wp ) { + $wp->add_query_var( $this->query_var ); + } + + if ( false !== $this->rewrite && ( is_admin() || '' != get_option( 'permalink_structure' ) ) ) { + if ( $this->hierarchical && $this->rewrite['hierarchical'] ) { + $tag = '(.+?)'; + } else { + $tag = '([^/]+)'; + } + + add_rewrite_tag( "%$this->name%", $tag, $this->query_var ? "{$this->query_var}=" : "taxonomy=$this->name&term=" ); + add_permastruct( $this->name, "{$this->rewrite['slug']}/%$this->name%", $this->rewrite ); + } + } + + /** + * Removes any rewrite rules, permastructs, and rules for the taxonomy. + * + * @since 4.7.0 + * @access public + * + * @global WP $wp Current WordPress environment instance. + */ + public function remove_rewrite_rules() { + /* @var WP $wp */ + global $wp; + + // Remove query var. + if ( false !== $this->query_var ) { + $wp->remove_query_var( $this->query_var ); + } + + // Remove rewrite tags and permastructs. + if ( false !== $this->rewrite ) { + remove_rewrite_tag( "%$this->name%" ); + remove_permastruct( $this->name ); + } + } + + /** + * Registers the ajax callback for the meta box. + * + * @since 4.7.0 + * @access public + */ + public function add_hooks() { + add_filter( 'wp_ajax_add-' . $this->name, '_wp_ajax_add_hierarchical_term' ); + } + + /** + * Removes the ajax callback for the meta box. + * + * @since 4.7.0 + * @access public + */ + public function remove_hooks() { + remove_filter( 'wp_ajax_add-' . $this->name, '_wp_ajax_add_hierarchical_term' ); + } +} diff --git a/wp/wp-includes/class-wp-term-query.php b/wp/wp-includes/class-wp-term-query.php index 38977f45..434d810d 100644 --- a/wp/wp-includes/class-wp-term-query.php +++ b/wp/wp-includes/class-wp-term-query.php @@ -93,6 +93,7 @@ class WP_Term_Query { * * @since 4.6.0 * @since 4.6.0 Introduced 'term_taxonomy_id' parameter. + * @since 4.7.0 Introduced 'object_ids' parameter. * @access public * * @param string|array $query { @@ -100,6 +101,8 @@ class WP_Term_Query { * * @type string|array $taxonomy Taxonomy name, or array of taxonomies, to which results should * be limited. + * @type int|array $object_ids Optional. Object ID, or array of object IDs. Results will be + * limited to terms associated with these objects. * @type string $orderby Field(s) to order terms by. Accepts term fields ('name', * 'slug', 'term_group', 'term_id', 'id', 'description'), * 'count' for term taxonomy count, 'include' to match the @@ -123,13 +126,17 @@ class WP_Term_Query { * positive number. Default ''|0 (all). * @type int $offset The number by which to offset the terms query. Default empty. * @type string $fields Term fields to query for. Accepts 'all' (returns an array of - * complete term objects), 'ids' (returns an array of ids), - * 'id=>parent' (returns an associative array with ids as keys, - * parent term IDs as values), 'names' (returns an array of term - * names), 'count' (returns the number of matching terms), - * 'id=>name' (returns an associative array with ids as keys, - * term names as values), or 'id=>slug' (returns an associative - * array with ids as keys, term slugs as values). Default 'all'. + * complete term objects), 'all_with_object_id' (returns an + * array of term objects with the 'object_id' param; only works + * when the `$fields` parameter is 'object_ids' ), 'ids' + * (returns an array of ids), 'tt_ids' (returns an array of + * term taxonomy ids), 'id=>parent' (returns an associative + * array with ids as keys, parent term IDs as values), 'names' + * (returns an array of term names), 'count' (returns the number + * of matching terms), 'id=>name' (returns an associative array + * with ids as keys, term names as values), or 'id=>slug' + * (returns an associative array with ids as keys, term slugs + * as values). Default 'all'. * @type bool $count Whether to return a term count (true) or array of term objects * (false). Will take precedence over `$fields` if true. * Default false. @@ -174,6 +181,7 @@ class WP_Term_Query { public function __construct( $query = '' ) { $this->query_var_defaults = array( 'taxonomy' => null, + 'object_ids' => null, 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => true, @@ -199,6 +207,10 @@ class WP_Term_Query { 'cache_domain' => 'core', 'update_term_meta_cache' => true, 'meta_query' => '', + 'meta_key' => '', + 'meta_value' => '', + 'meta_type' => '', + 'meta_compare' => '', ); if ( ! empty( $query ) ) { @@ -253,15 +265,7 @@ class WP_Term_Query { $query['taxonomy'] = $taxonomies; - /** - * Filters the terms query arguments. - * - * @since 3.1.0 - * - * @param array $args An array of get_terms() arguments. - * @param array $taxonomies An array of taxonomies. - */ - $this->query_vars = apply_filters( 'get_terms_args', $query, $taxonomies ); + $this->query_vars = $query; /** * Fires after term query vars have been parsed. @@ -383,7 +387,13 @@ class WP_Term_Query { } } - $orderby = $this->parse_orderby( $this->query_vars['orderby'] ); + // 'term_order' is a legal sort order only when joining the relationship table. + $_orderby = $this->query_vars['orderby']; + if ( 'term_order' === $_orderby && empty( $this->query_vars['object_ids'] ) ) { + $_orderby = 'term_id'; + } + $orderby = $this->parse_orderby( $_orderby ); + if ( $orderby ) { $orderby = "ORDER BY $orderby"; } @@ -498,6 +508,24 @@ class WP_Term_Query { $this->sql_clauses['where']['description__like'] = $wpdb->prepare( "tt.description LIKE %s", '%' . $wpdb->esc_like( $args['description__like'] ) . '%' ); } + if ( ! empty( $args['object_ids'] ) ) { + $object_ids = $args['object_ids']; + if ( ! is_array( $object_ids ) ) { + $object_ids = array( $object_ids ); + } + + $object_ids = implode( ', ', array_map( 'intval', $object_ids ) ); + $this->sql_clauses['where']['object_ids'] = "tr.object_id IN ($object_ids)"; + } + + /* + * When querying for object relationships, the 'count > 0' check + * added by 'hide_empty' is superfluous. + */ + if ( ! empty( $args['object_ids'] ) ) { + $args['hide_empty'] = false; + } + if ( '' !== $parent ) { $parent = (int) $parent; $this->sql_clauses['where']['parent'] = "tt.parent = '$parent'"; @@ -549,7 +577,13 @@ class WP_Term_Query { $selects = array(); switch ( $args['fields'] ) { case 'all': + case 'all_with_object_id' : + case 'tt_ids' : + case 'slugs' : $selects = array( 't.*', 'tt.*' ); + if ( 'all_with_object_id' === $args['fields'] && ! empty( $args['object_ids'] ) ) { + $selects[] = 'tr.object_id'; + } break; case 'ids': case 'id=>parent': @@ -593,9 +627,11 @@ class WP_Term_Query { $join .= " INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id"; - $where = implode( ' AND ', $this->sql_clauses['where'] ); + if ( ! empty( $this->query_vars['object_ids'] ) ) { + $join .= " INNER JOIN {$wpdb->term_relationships} AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id"; + } - $pieces = array( 'fields', 'join', 'where', 'distinct', 'orderby', 'order', 'limits' ); + $where = implode( ' AND ', $this->sql_clauses['where'] ); /** * Filters the terms query SQL clauses. @@ -606,7 +642,7 @@ class WP_Term_Query { * @param array $taxonomies An array of taxonomies. * @param array $args An array of terms query arguments. */ - $clauses = apply_filters( 'terms_clauses', compact( $pieces ), $taxonomies, $args ); + $clauses = apply_filters( 'terms_clauses', compact( 'fields', 'join', 'where', 'distinct', 'orderby', 'order', 'limits' ), $taxonomies, $args ); $fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : ''; $join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : ''; @@ -629,11 +665,7 @@ class WP_Term_Query { // $args can be anything. Only use the args defined in defaults to compute the key. $key = md5( serialize( wp_array_slice_assoc( $args, array_keys( $this->query_var_defaults ) ) ) . serialize( $taxonomies ) . $this->request ); - $last_changed = wp_cache_get( 'last_changed', 'terms' ); - if ( ! $last_changed ) { - $last_changed = microtime(); - wp_cache_set( 'last_changed', $last_changed, 'terms' ); - } + $last_changed = wp_cache_get_last_changed( 'terms' ); $cache_key = "get_terms:$key:$last_changed"; $cache = wp_cache_get( $cache_key, 'terms' ); if ( false !== $cache ) { @@ -646,11 +678,13 @@ class WP_Term_Query { } if ( 'count' == $_fields ) { - return $wpdb->get_var( $this->request ); + $count = $wpdb->get_var( $this->request ); + wp_cache_set( $cache_key, $count, 'terms' ); + return $count; } $terms = $wpdb->get_results( $this->request ); - if ( 'all' == $_fields ) { + if ( 'all' == $_fields || 'all_with_object_id' === $_fields ) { update_term_cache( $terms ); } @@ -701,6 +735,26 @@ class WP_Term_Query { } } + /* + * When querying for terms connected to objects, we may get + * duplicate results. The duplicates should be preserved if + * `$fields` is 'all_with_object_id', but should otherwise be + * removed. + */ + if ( ! empty( $args['object_ids'] ) && 'all_with_object_id' != $_fields ) { + $_tt_ids = $_terms = array(); + foreach ( $terms as $term ) { + if ( isset( $_tt_ids[ $term->term_id ] ) ) { + continue; + } + + $_tt_ids[ $term->term_id ] = 1; + $_terms[] = $term; + } + + $terms = $_terms; + } + $_terms = array(); if ( 'id=>parent' == $_fields ) { foreach ( $terms as $term ) { @@ -708,12 +762,20 @@ class WP_Term_Query { } } elseif ( 'ids' == $_fields ) { foreach ( $terms as $term ) { - $_terms[] = $term->term_id; + $_terms[] = (int) $term->term_id; + } + } elseif ( 'tt_ids' == $_fields ) { + foreach ( $terms as $term ) { + $_terms[] = (int) $term->term_taxonomy_id; } } elseif ( 'names' == $_fields ) { foreach ( $terms as $term ) { $_terms[] = $term->name; } + } elseif ( 'slugs' == $_fields ) { + foreach ( $terms as $term ) { + $_terms[] = $term->slug; + } } elseif ( 'id=>name' == $_fields ) { foreach ( $terms as $term ) { $_terms[ $term->term_id ] = $term->name; @@ -739,7 +801,7 @@ class WP_Term_Query { wp_cache_add( $cache_key, $terms, 'terms', DAY_IN_SECONDS ); - if ( 'all' === $_fields ) { + if ( 'all' === $_fields || 'all_with_object_id' === $_fields ) { $terms = array_map( 'get_term', $terms ); } @@ -761,19 +823,16 @@ class WP_Term_Query { protected function parse_orderby( $orderby_raw ) { $_orderby = strtolower( $orderby_raw ); $maybe_orderby_meta = false; - if ( 'count' == $_orderby ) { - $orderby = 'tt.count'; - } elseif ( 'name' == $_orderby ) { - $orderby = 't.name'; - } elseif ( 'slug' == $_orderby ) { - $orderby = 't.slug'; + + if ( in_array( $_orderby, array( 'term_id', 'name', 'slug', 'term_group' ), true ) ) { + $orderby = "t.$_orderby"; + } elseif ( in_array( $_orderby, array( 'count', 'parent', 'taxonomy', 'term_taxonomy_id', 'description' ), true ) ) { + $orderby = "tt.$_orderby"; + } elseif ( 'term_order' === $_orderby ) { + $orderby = 'tr.term_order'; } elseif ( 'include' == $_orderby && ! empty( $this->query_vars['include'] ) ) { - $include = implode( ',', array_map( 'absint', $this->query_vars['include'] ) ); + $include = implode( ',', wp_parse_id_list( $this->query_vars['include'] ) ); $orderby = "FIELD( t.term_id, $include )"; - } elseif ( 'term_group' == $_orderby ) { - $orderby = 't.term_group'; - } elseif ( 'description' == $_orderby ) { - $orderby = 'tt.description'; } elseif ( 'none' == $_orderby ) { $orderby = ''; } elseif ( empty( $_orderby ) || 'id' == $_orderby || 'term_id' === $_orderby ) { diff --git a/wp/wp-includes/class-wp-term.php b/wp/wp-includes/class-wp-term.php index 3b4931a0..6cb4a15b 100644 --- a/wp/wp-includes/class-wp-term.php +++ b/wp/wp-includes/class-wp-term.php @@ -125,11 +125,12 @@ final class WP_Term { public static function get_instance( $term_id, $taxonomy = null ) { global $wpdb; - $term_id = (int) $term_id; - if ( ! $term_id ) { + if ( ! is_numeric( $term_id ) || $term_id != floor( $term_id ) || ! $term_id ) { return false; } + $term_id = (int) $term_id; + $_term = wp_cache_get( $term_id, 'terms' ); // If there isn't a cached version, hit the database. @@ -250,7 +251,6 @@ final class WP_Term { } return sanitize_term( $data, $data->taxonomy, 'raw' ); - break; } } } diff --git a/wp/wp-includes/class-wp-text-diff-renderer-inline.php b/wp/wp-includes/class-wp-text-diff-renderer-inline.php new file mode 100644 index 00000000..236e388b --- /dev/null +++ b/wp/wp-includes/class-wp-text-diff-renderer-inline.php @@ -0,0 +1,33 @@ +_show_split_view = $params[ 'show_split_view' ]; + } + + /** + * @ignore + * + * @param string $header + * @return string + */ + public function _startBlock( $header ) { + return ''; + } + + /** + * @ignore + * + * @param array $lines + * @param string $prefix + */ + public function _lines( $lines, $prefix=' ' ) { + } + + /** + * @ignore + * + * @param string $line HTML-escape the value. + * @return string + */ + public function addedLine( $line ) { + return "{$line}"; + + } + + /** + * @ignore + * + * @param string $line HTML-escape the value. + * @return string + */ + public function deletedLine( $line ) { + return "{$line}"; + } + + /** + * @ignore + * + * @param string $line HTML-escape the value. + * @return string + */ + public function contextLine( $line ) { + return "{$line}"; + } + + /** + * @ignore + * + * @return string + */ + public function emptyLine() { + return ' '; + } + + /** + * @ignore + * @access public + * + * @param array $lines + * @param bool $encode + * @return string + */ + public function _added( $lines, $encode = true ) { + $r = ''; + foreach ($lines as $line) { + if ( $encode ) { + $processed_line = htmlspecialchars( $line ); + + /** + * Contextually filters a diffed line. + * + * Filters TextDiff processing of diffed line. By default, diffs are processed with + * htmlspecialchars. Use this filter to remove or change the processing. Passes a context + * indicating if the line is added, deleted or unchanged. + * + * @since 4.1.0 + * + * @param String $processed_line The processed diffed line. + * @param String $line The unprocessed diffed line. + * @param string null The line context. Values are 'added', 'deleted' or 'unchanged'. + */ + $line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'added' ); + } + + if ( $this->_show_split_view ) { + $r .= '' . $this->emptyLine() . $this->emptyLine() . $this->addedLine( $line ) . "\n"; + } else { + $r .= '' . $this->addedLine( $line ) . "\n"; + } + } + return $r; + } + + /** + * @ignore + * @access public + * + * @param array $lines + * @param bool $encode + * @return string + */ + public function _deleted( $lines, $encode = true ) { + $r = ''; + foreach ($lines as $line) { + if ( $encode ) { + $processed_line = htmlspecialchars( $line ); + + /** This filter is documented in wp-includes/wp-diff.php */ + $line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'deleted' ); + } + if ( $this->_show_split_view ) { + $r .= '' . $this->deletedLine( $line ) . $this->emptyLine() . $this->emptyLine() . "\n"; + } else { + $r .= '' . $this->deletedLine( $line ) . "\n"; + } + + } + return $r; + } + + /** + * @ignore + * @access public + * + * @param array $lines + * @param bool $encode + * @return string + */ + public function _context( $lines, $encode = true ) { + $r = ''; + foreach ($lines as $line) { + if ( $encode ) { + $processed_line = htmlspecialchars( $line ); + + /** This filter is documented in wp-includes/wp-diff.php */ + $line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'unchanged' ); + } + if ( $this->_show_split_view ) { + $r .= '' . $this->contextLine( $line ) . $this->emptyLine() . $this->contextLine( $line ) . "\n"; + } else { + $r .= '' . $this->contextLine( $line ) . "\n"; + } + } + return $r; + } + + /** + * Process changed lines to do word-by-word diffs for extra highlighting. + * + * (TRAC style) sometimes these lines can actually be deleted or added rows. + * We do additional processing to figure that out + * + * @access public + * @since 2.6.0 + * + * @param array $orig + * @param array $final + * @return string + */ + public function _changed( $orig, $final ) { + $r = ''; + + // Does the aforementioned additional processing + // *_matches tell what rows are "the same" in orig and final. Those pairs will be diffed to get word changes + // match is numeric: an index in other column + // match is 'X': no match. It is a new row + // *_rows are column vectors for the orig column and the final column. + // row >= 0: an indix of the $orig or $final array + // row < 0: a blank row for that column + list($orig_matches, $final_matches, $orig_rows, $final_rows) = $this->interleave_changed_lines( $orig, $final ); + + // These will hold the word changes as determined by an inline diff + $orig_diffs = array(); + $final_diffs = array(); + + // Compute word diffs for each matched pair using the inline diff + foreach ( $orig_matches as $o => $f ) { + if ( is_numeric($o) && is_numeric($f) ) { + $text_diff = new Text_Diff( 'auto', array( array($orig[$o]), array($final[$f]) ) ); + $renderer = new $this->inline_diff_renderer; + $diff = $renderer->render( $text_diff ); + + // If they're too different, don't include any or + if ( preg_match_all( '!(.*?|.*?)!', $diff, $diff_matches ) ) { + // length of all text between or + $stripped_matches = strlen(strip_tags( join(' ', $diff_matches[0]) )); + // since we count lengith of text between or (instead of picking just one), + // we double the length of chars not in those tags. + $stripped_diff = strlen(strip_tags( $diff )) * 2 - $stripped_matches; + $diff_ratio = $stripped_matches / $stripped_diff; + if ( $diff_ratio > $this->_diff_threshold ) + continue; // Too different. Don't save diffs. + } + + // Un-inline the diffs by removing del or ins + $orig_diffs[$o] = preg_replace( '|.*?|', '', $diff ); + $final_diffs[$f] = preg_replace( '|.*?|', '', $diff ); + } + } + + foreach ( array_keys($orig_rows) as $row ) { + // Both columns have blanks. Ignore them. + if ( $orig_rows[$row] < 0 && $final_rows[$row] < 0 ) + continue; + + // If we have a word based diff, use it. Otherwise, use the normal line. + if ( isset( $orig_diffs[$orig_rows[$row]] ) ) + $orig_line = $orig_diffs[$orig_rows[$row]]; + elseif ( isset( $orig[$orig_rows[$row]] ) ) + $orig_line = htmlspecialchars($orig[$orig_rows[$row]]); + else + $orig_line = ''; + + if ( isset( $final_diffs[$final_rows[$row]] ) ) + $final_line = $final_diffs[$final_rows[$row]]; + elseif ( isset( $final[$final_rows[$row]] ) ) + $final_line = htmlspecialchars($final[$final_rows[$row]]); + else + $final_line = ''; + + if ( $orig_rows[$row] < 0 ) { // Orig is blank. This is really an added row. + $r .= $this->_added( array($final_line), false ); + } elseif ( $final_rows[$row] < 0 ) { // Final is blank. This is really a deleted row. + $r .= $this->_deleted( array($orig_line), false ); + } else { // A true changed row. + if ( $this->_show_split_view ) { + $r .= '' . $this->deletedLine( $orig_line ) . $this->emptyLine() . $this->addedLine( $final_line ) . "\n"; + } else { + $r .= '' . $this->deletedLine( $orig_line ) . "" . $this->addedLine( $final_line ) . "\n"; + } + } + } + + return $r; + } + + /** + * Takes changed blocks and matches which rows in orig turned into which rows in final. + * + * Returns + * *_matches ( which rows match with which ) + * *_rows ( order of rows in each column interleaved with blank rows as + * necessary ) + * + * @since 2.6.0 + * + * @param array $orig + * @param array $final + * @return array + */ + public function interleave_changed_lines( $orig, $final ) { + + // Contains all pairwise string comparisons. Keys are such that this need only be a one dimensional array. + $matches = array(); + foreach ( array_keys($orig) as $o ) { + foreach ( array_keys($final) as $f ) { + $matches["$o,$f"] = $this->compute_string_distance( $orig[$o], $final[$f] ); + } + } + asort($matches); // Order by string distance. + + $orig_matches = array(); + $final_matches = array(); + + foreach ( $matches as $keys => $difference ) { + list($o, $f) = explode(',', $keys); + $o = (int) $o; + $f = (int) $f; + + // Already have better matches for these guys + if ( isset($orig_matches[$o]) && isset($final_matches[$f]) ) + continue; + + // First match for these guys. Must be best match + if ( !isset($orig_matches[$o]) && !isset($final_matches[$f]) ) { + $orig_matches[$o] = $f; + $final_matches[$f] = $o; + continue; + } + + // Best match of this final is already taken? Must mean this final is a new row. + if ( isset($orig_matches[$o]) ) + $final_matches[$f] = 'x'; + + // Best match of this orig is already taken? Must mean this orig is a deleted row. + elseif ( isset($final_matches[$f]) ) + $orig_matches[$o] = 'x'; + } + + // We read the text in this order + ksort($orig_matches); + ksort($final_matches); + + // Stores rows and blanks for each column. + $orig_rows = $orig_rows_copy = array_keys($orig_matches); + $final_rows = array_keys($final_matches); + + // Interleaves rows with blanks to keep matches aligned. + // We may end up with some extraneous blank rows, but we'll just ignore them later. + foreach ( $orig_rows_copy as $orig_row ) { + $final_pos = array_search($orig_matches[$orig_row], $final_rows, true); + $orig_pos = (int) array_search($orig_row, $orig_rows, true); + + if ( false === $final_pos ) { // This orig is paired with a blank final. + array_splice( $final_rows, $orig_pos, 0, -1 ); + } elseif ( $final_pos < $orig_pos ) { // This orig's match is up a ways. Pad final with blank rows. + $diff_pos = $final_pos - $orig_pos; + while ( $diff_pos < 0 ) + array_splice( $final_rows, $orig_pos, 0, $diff_pos++ ); + } elseif ( $final_pos > $orig_pos ) { // This orig's match is down a ways. Pad orig with blank rows. + $diff_pos = $orig_pos - $final_pos; + while ( $diff_pos < 0 ) + array_splice( $orig_rows, $orig_pos, 0, $diff_pos++ ); + } + } + + // Pad the ends with blank rows if the columns aren't the same length + $diff_count = count($orig_rows) - count($final_rows); + if ( $diff_count < 0 ) { + while ( $diff_count < 0 ) + array_push($orig_rows, $diff_count++); + } elseif ( $diff_count > 0 ) { + $diff_count = -1 * $diff_count; + while ( $diff_count < 0 ) + array_push($final_rows, $diff_count++); + } + + return array($orig_matches, $final_matches, $orig_rows, $final_rows); + } + + /** + * Computes a number that is intended to reflect the "distance" between two strings. + * + * @since 2.6.0 + * + * @param string $string1 + * @param string $string2 + * @return int + */ + public function compute_string_distance( $string1, $string2 ) { + // Vectors containing character frequency for all chars in each string + $chars1 = count_chars($string1); + $chars2 = count_chars($string2); + + // L1-norm of difference vector. + $difference = array_sum( array_map( array($this, 'difference'), $chars1, $chars2 ) ); + + // $string1 has zero length? Odd. Give huge penalty by not dividing. + if ( !$string1 ) + return $difference; + + // Return distance per character (of string1). + return $difference / strlen($string1); + } + + /** + * @ignore + * @since 2.6.0 + * + * @param int $a + * @param int $b + * @return int + */ + public function difference( $a, $b ) { + return abs( $a - $b ); + } + + /** + * Make private properties readable for backward 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 backward 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 backward 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 backward 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 ); + } + } +} diff --git a/wp/wp-includes/class-wp-theme.php b/wp/wp-includes/class-wp-theme.php index 40af39df..f161a631 100644 --- a/wp/wp-includes/class-wp-theme.php +++ b/wp/wp-includes/class-wp-theme.php @@ -48,15 +48,16 @@ final class WP_Theme implements ArrayAccess { * @var array */ private static $default_themes = array( - 'classic' => 'WordPress Classic', - 'default' => 'WordPress Default', - 'twentyten' => 'Twenty Ten', - 'twentyeleven' => 'Twenty Eleven', - 'twentytwelve' => 'Twenty Twelve', - 'twentythirteen' => 'Twenty Thirteen', - 'twentyfourteen' => 'Twenty Fourteen', - 'twentyfifteen' => 'Twenty Fifteen', - 'twentysixteen' => 'Twenty Sixteen', + 'classic' => 'WordPress Classic', + 'default' => 'WordPress Default', + 'twentyten' => 'Twenty Ten', + 'twentyeleven' => 'Twenty Eleven', + 'twentytwelve' => 'Twenty Twelve', + 'twentythirteen' => 'Twenty Thirteen', + 'twentyfourteen' => 'Twenty Fourteen', + 'twentyfifteen' => 'Twenty Fifteen', + 'twentysixteen' => 'Twenty Sixteen', + 'twentyseventeen' => 'Twenty Seventeen', ); /** @@ -537,7 +538,7 @@ final class WP_Theme implements ArrayAccess { * @since 3.4.0 * @access private * - * @param string $key Type of data to store (theme, screenshot, headers, page_templates) + * @param string $key Type of data to store (theme, screenshot, headers, post_templates) * @param string $data Data to store * @return bool Return value from wp_cache_add() */ @@ -553,7 +554,7 @@ final class WP_Theme implements ArrayAccess { * @since 3.4.0 * @access private * - * @param string $key Type of data to retrieve (theme, screenshot, headers, page_templates) + * @param string $key Type of data to retrieve (theme, screenshot, headers, post_templates) * @return mixed Retrieved data */ private function cache_get( $key ) { @@ -567,7 +568,7 @@ final class WP_Theme implements ArrayAccess { * @access public */ public function cache_delete() { - foreach ( array( 'theme', 'screenshot', 'headers', 'page_templates' ) as $key ) + foreach ( array( 'theme', 'screenshot', 'headers', 'post_templates' ) as $key ) wp_cache_delete( $key . '-' . $this->cache_hash, 'themes' ); $this->template = $this->textdomain_loaded = $this->theme_root_uri = $this->parent = $this->errors = $this->headers_sanitized = $this->name_translated = null; $this->headers = array(); @@ -1005,56 +1006,101 @@ final class WP_Theme implements ArrayAccess { } /** - * Returns the theme's page templates. + * Returns the theme's post templates. * - * @since 3.4.0 + * @since 4.7.0 * @access public * - * @param WP_Post|null $post Optional. The post being edited, provided for context. - * @return array Array of page templates, keyed by filename, with the value of the translated header name. + * @return array Array of page templates, keyed by filename and post type, + * with the value of the translated header name. */ - public function get_page_templates( $post = null ) { + public function get_post_templates() { // If you screw up your current theme and we invalidate your parent, most things still work. Let it slide. - if ( $this->errors() && $this->errors()->get_error_codes() !== array( 'theme_parent_invalid' ) ) + if ( $this->errors() && $this->errors()->get_error_codes() !== array( 'theme_parent_invalid' ) ) { return array(); + } - $page_templates = $this->cache_get( 'page_templates' ); + $post_templates = $this->cache_get( 'post_templates' ); - if ( ! is_array( $page_templates ) ) { - $page_templates = array(); + if ( ! is_array( $post_templates ) ) { + $post_templates = array(); $files = (array) $this->get_files( 'php', 1 ); foreach ( $files as $file => $full_path ) { - if ( ! preg_match( '|Template Name:(.*)$|mi', file_get_contents( $full_path ), $header ) ) + if ( ! preg_match( '|Template Name:(.*)$|mi', file_get_contents( $full_path ), $header ) ) { continue; - $page_templates[ $file ] = _cleanup_header_comment( $header[1] ); + } + + $types = array( 'page' ); + if ( preg_match( '|Template Post Type:(.*)$|mi', file_get_contents( $full_path ), $type ) ) { + $types = explode( ',', _cleanup_header_comment( $type[1] ) ); + } + + foreach ( $types as $type ) { + $type = sanitize_key( $type ); + if ( ! isset( $post_templates[ $type ] ) ) { + $post_templates[ $type ] = array(); + } + + $post_templates[ $type ][ $file ] = _cleanup_header_comment( $header[1] ); + } } - $this->cache_add( 'page_templates', $page_templates ); + $this->cache_add( 'post_templates', $post_templates ); } if ( $this->load_textdomain() ) { - foreach ( $page_templates as &$page_template ) { - $page_template = $this->translate_header( 'Template Name', $page_template ); + foreach ( $post_templates as &$post_type ) { + foreach ( $post_type as &$post_template ) { + $post_template = $this->translate_header( 'Template Name', $post_template ); + } } } - if ( $this->parent() ) - $page_templates += $this->parent()->get_page_templates( $post ); + return $post_templates; + } + + /** + * Returns the theme's post templates for a given post type. + * + * @since 3.4.0 + * @since 4.7.0 Added the `$post_type` parameter. + * @access public + * + * @param WP_Post|null $post Optional. The post being edited, provided for context. + * @param string $post_type Optional. Post type to get the templates for. Default 'page'. + * If a post is provided, its post type is used. + * @return array Array of page templates, keyed by filename, with the value of the translated header name. + */ + public function get_page_templates( $post = null, $post_type = 'page' ) { + if ( $post ) { + $post_type = get_post_type( $post ); + } + + $post_templates = $this->get_post_templates(); + $post_templates = isset( $post_templates[ $post_type ] ) ? $post_templates[ $post_type ] : array(); + + if ( $this->parent() ) { + $post_templates += $this->parent()->get_page_templates( $post, $post_type ); + } /** * Filters list of page templates for a theme. * + * The dynamic portion of the hook name, `$post_type`, refers to the post type. + * * @since 3.9.0 * @since 4.4.0 Converted to allow complete control over the `$page_templates` array. + * @since 4.7.0 Added the `$post_type` parameter. * - * @param array $page_templates Array of page templates. Keys are filenames, + * @param array $post_templates Array of page templates. Keys are filenames, * values are translated names. * @param WP_Theme $this The theme object. * @param WP_Post|null $post The post being edited, provided for context, or null. + * @param string $post_type Post type to get the templates for. */ - return (array) apply_filters( 'theme_page_templates', $page_templates, $this, $post ); + return (array) apply_filters( "theme_{$post_type}_templates", $post_templates, $this, $post, $post_type ); } /** @@ -1395,7 +1441,7 @@ final class WP_Theme implements ArrayAccess { * @param array $themes Array of themes to sort, passed by reference. */ public static function sort_by_name( &$themes ) { - if ( 0 === strpos( get_locale(), 'en_' ) ) { + if ( 0 === strpos( get_user_locale(), 'en_' ) ) { uasort( $themes, array( 'WP_Theme', '_name_sort' ) ); } else { uasort( $themes, array( 'WP_Theme', '_name_sort_i18n' ) ); diff --git a/wp/wp-includes/class-wp-user-meta-session-tokens.php b/wp/wp-includes/class-wp-user-meta-session-tokens.php new file mode 100644 index 00000000..a01ebff6 --- /dev/null +++ b/wp/wp-includes/class-wp-user-meta-session-tokens.php @@ -0,0 +1,139 @@ +user_id, 'session_tokens', true ); + + if ( ! is_array( $sessions ) ) { + return array(); + } + + $sessions = array_map( array( $this, 'prepare_session' ), $sessions ); + return array_filter( $sessions, array( $this, 'is_still_valid' ) ); + } + + /** + * Converts an expiration to an array of session information. + * + * @param mixed $session Session or expiration. + * @return array Session. + */ + protected function prepare_session( $session ) { + if ( is_int( $session ) ) { + return array( 'expiration' => $session ); + } + + return $session; + } + + /** + * Retrieve a session by its verifier (token hash). + * + * @since 4.0.0 + * @access protected + * + * @param string $verifier Verifier of the session to retrieve. + * @return array|null The session, or null if it does not exist + */ + protected function get_session( $verifier ) { + $sessions = $this->get_sessions(); + + if ( isset( $sessions[ $verifier ] ) ) { + return $sessions[ $verifier ]; + } + + return null; + } + + /** + * Update a session by its verifier. + * + * @since 4.0.0 + * @access protected + * + * @param string $verifier Verifier of the session to update. + * @param array $session Optional. Session. Omitting this argument destroys the session. + */ + protected function update_session( $verifier, $session = null ) { + $sessions = $this->get_sessions(); + + if ( $session ) { + $sessions[ $verifier ] = $session; + } else { + unset( $sessions[ $verifier ] ); + } + + $this->update_sessions( $sessions ); + } + + /** + * Update a user's sessions in the usermeta table. + * + * @since 4.0.0 + * @access protected + * + * @param array $sessions Sessions. + */ + protected function update_sessions( $sessions ) { + if ( $sessions ) { + update_user_meta( $this->user_id, 'session_tokens', $sessions ); + } else { + delete_user_meta( $this->user_id, 'session_tokens' ); + } + } + + /** + * Destroy all session tokens for a user, except a single session passed. + * + * @since 4.0.0 + * @access protected + * + * @param string $verifier Verifier of the session to keep. + */ + protected function destroy_other_sessions( $verifier ) { + $session = $this->get_session( $verifier ); + $this->update_sessions( array( $verifier => $session ) ); + } + + /** + * Destroy all session tokens for a user. + * + * @since 4.0.0 + * @access protected + */ + protected function destroy_all_sessions() { + $this->update_sessions( array() ); + } + + /** + * Destroy all session tokens for all users. + * + * @since 4.0.0 + * @access public + * @static + */ + public static function drop_sessions() { + delete_metadata( 'user', 0, 'session_tokens', false, true ); + } +} diff --git a/wp/wp-includes/class-wp-user-query.php b/wp/wp-includes/class-wp-user-query.php index 84cdcf6b..0c3e1052 100644 --- a/wp/wp-includes/class-wp-user-query.php +++ b/wp/wp-includes/class-wp-user-query.php @@ -95,7 +95,7 @@ class WP_User_Query { */ public static function fill_query_vars( $args ) { $defaults = array( - 'blog_id' => $GLOBALS['blog_id'], + 'blog_id' => get_current_blog_id(), 'role' => '', 'role__in' => array(), 'role__not_in' => array(), @@ -115,6 +115,12 @@ class WP_User_Query { 'fields' => 'all', 'who' => '', 'has_published_posts' => null, + 'nicename' => '', + 'nicename__in' => array(), + 'nicename__not_in' => array(), + 'login' => '', + 'login__in' => array(), + 'login__not_in' => array() ); return wp_parse_args( $args, $defaults ); @@ -131,6 +137,8 @@ class WP_User_Query { * @since 4.4.0 Added 'paged', 'role__in', and 'role__not_in' parameters. The 'role' parameter was updated to * permit an array or comma-separated list of values. The 'number' parameter was updated to support * querying for all users with using -1. + * @since 4.7.0 Added 'nicename', 'nicename__in', 'nicename__not_in', 'login', 'login__in', + * and 'login__not_in' parameters. * * @access public * @@ -165,12 +173,12 @@ class WP_User_Query { * an array of values, or a multi-dimensional array with fields as * keys and orders ('ASC' or 'DESC') as values. Accepted values are * 'ID', 'display_name' (or 'name'), 'include', 'user_login' - * (or 'login'), 'user_nicename' (or 'nicename'), 'user_email' - * (or 'email'), 'user_url' (or 'url'), 'user_registered' - * or 'registered'), 'post_count', 'meta_value', 'meta_value_num', - * the value of `$meta_key`, or an array key of `$meta_query`. To use - * 'meta_value' or 'meta_value_num', `$meta_key` must be also be - * defined. Default 'user_login'. + * (or 'login'), 'login__in', 'user_nicename' (or 'nicename'), + * 'nicename__in', 'user_email (or 'email'), 'user_url' (or 'url'), + * 'user_registered' (or 'registered'), 'post_count', 'meta_value', + * 'meta_value_num', the value of `$meta_key`, or an array key of + * `$meta_query`. To use 'meta_value' or 'meta_value_num', `$meta_key` + * must be also be defined. Default 'user_login'. * @type string $order Designates ascending or descending order of users. Order values * passed as part of an `$orderby` array take precedence over this * parameter. Accepts 'ASC', 'DESC'. Default 'ASC'. @@ -195,6 +203,16 @@ class WP_User_Query { * @type bool|array $has_published_posts Pass an array of post types to filter results to users who have * published posts in those post types. `true` is an alias for all * public post types. + * @type string $nicename The user nicename. Default empty. + * @type array $nicename__in An array of nicenames to include. Users matching one of these + * nicenames will be included in results. Default empty array. + * @type array $nicename__not_in An array of nicenames to exclude. Users matching one of these + * nicenames will not be included in results. Default empty array. + * @type string $login The user login. Default empty. + * @type array $login__in An array of logins to include. Users matching one of these + * logins will be included in results. Default empty array. + * @type array $login__not_in An array of logins to exclude. Users matching one of these + * logins will not be included in results. Default empty array. * } */ public function prepare_query( $query = array() ) { @@ -270,6 +288,40 @@ class WP_User_Query { $this->query_where .= " AND $wpdb->users.ID IN ( SELECT DISTINCT $posts_table.post_author FROM $posts_table WHERE $posts_table.post_status = 'publish' AND $posts_table.post_type IN ( " . join( ", ", $post_types ) . " ) )"; } + // nicename + if ( '' !== $qv['nicename']) { + $this->query_where .= $wpdb->prepare( ' AND user_nicename = %s', $qv['nicename'] ); + } + + if ( ! empty( $qv['nicename__in'] ) ) { + $sanitized_nicename__in = array_map( 'esc_sql', $qv['nicename__in'] ); + $nicename__in = implode( "','", $sanitized_nicename__in ); + $this->query_where .= " AND user_nicename IN ( '$nicename__in' )"; + } + + if ( ! empty( $qv['nicename__not_in'] ) ) { + $sanitized_nicename__not_in = array_map( 'esc_sql', $qv['nicename__not_in'] ); + $nicename__not_in = implode( "','", $sanitized_nicename__not_in ); + $this->query_where .= " AND user_nicename NOT IN ( '$nicename__not_in' )"; + } + + // login + if ( '' !== $qv['login']) { + $this->query_where .= $wpdb->prepare( ' AND user_login = %s', $qv['login'] ); + } + + if ( ! empty( $qv['login__in'] ) ) { + $sanitized_login__in = array_map( 'esc_sql', $qv['login__in'] ); + $login__in = implode( "','", $sanitized_login__in ); + $this->query_where .= " AND user_login IN ( '$login__in' )"; + } + + if ( ! empty( $qv['login__not_in'] ) ) { + $sanitized_login__not_in = array_map( 'esc_sql', $qv['login__not_in'] ); + $login__not_in = implode( "','", $sanitized_login__not_in ); + $this->query_where .= " AND user_login NOT IN ( '$login__not_in' )"; + } + // Meta query. $this->meta_query = new WP_Meta_Query(); $this->meta_query->parse_query_vars( $qv ); @@ -428,7 +480,11 @@ class WP_User_Query { continue; } - $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order ); + if ( 'nicename__in' === $_orderby || 'login__in' === $_orderby ) { + $orderby_array[] = $parsed; + } else { + $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order ); + } } // If no valid clauses were found, order by user_login. @@ -706,6 +762,14 @@ class WP_User_Query { $include = wp_parse_id_list( $this->query_vars['include'] ); $include_sql = implode( ',', $include ); $_orderby = "FIELD( $wpdb->users.ID, $include_sql )"; + } elseif ( 'nicename__in' === $orderby ) { + $sanitized_nicename__in = array_map( 'esc_sql', $this->query_vars['nicename__in'] ); + $nicename__in = implode( "','", $sanitized_nicename__in ); + $_orderby = "FIELD( user_nicename, '$nicename__in' )"; + } elseif ( 'login__in' === $orderby ) { + $sanitized_login__in = array_map( 'esc_sql', $this->query_vars['login__in'] ); + $login__in = implode( "','", $sanitized_login__in ); + $_orderby = "FIELD( user_login, '$login__in' )"; } elseif ( isset( $meta_query_clauses[ $orderby ] ) ) { $meta_clause = $meta_query_clauses[ $orderby ]; $_orderby = sprintf( "CAST(%s.meta_value AS %s)", esc_sql( $meta_clause['alias'] ), esc_sql( $meta_clause['cast'] ) ); diff --git a/wp/wp-includes/class-wp-user.php b/wp/wp-includes/class-wp-user.php index 0f5ee105..328fb6a5 100644 --- a/wp/wp-includes/class-wp-user.php +++ b/wp/wp-includes/class-wp-user.php @@ -27,9 +27,11 @@ * @property string $user_registered * @property string $user_activation_key * @property string $user_status + * @property int $user_level * @property string $display_name * @property string $spam * @property string $deleted + * @property string $locale */ class WP_User { /** diff --git a/wp/wp-includes/class-wp-widget.php b/wp/wp-includes/class-wp-widget.php index 44f3686d..b69b219c 100644 --- a/wp/wp-includes/class-wp-widget.php +++ b/wp/wp-includes/class-wp-widget.php @@ -10,7 +10,7 @@ /** * Core base class extended to register widgets. * - * This class must be extended for each widget, and WP_Widget::widget() must be overriden. + * This class must be extended for each widget, and WP_Widget::widget() must be overridden. * * If adding widget options, WP_Widget::update() and WP_Widget::form() should also be overridden. * @@ -37,6 +37,24 @@ class WP_Widget { */ public $name; + /** + * Option name for this widget type. + * + * @since 2.8.0 + * @access public + * @var string + */ + public $option_name; + + /** + * Alt option name for this widget type. + * + * @since 2.8.0 + * @access public + * @var string + */ + public $alt_option_name; + /** * Option array passed to wp_register_sidebar_widget(). * @@ -86,7 +104,7 @@ class WP_Widget { public $updated = false; // - // Member functions that must be overriden by subclasses. + // Member functions that must be overridden by subclasses. // /** diff --git a/wp/wp-includes/class-wp-xmlrpc-server.php b/wp/wp-includes/class-wp-xmlrpc-server.php index be2d3edb..5084da65 100644 --- a/wp/wp-includes/class-wp-xmlrpc-server.php +++ b/wp/wp-includes/class-wp-xmlrpc-server.php @@ -404,12 +404,8 @@ class wp_xmlrpc_server extends IXR_Server { * Passes property through {@see 'xmlrpc_blog_options'} filter. * * @since 2.6.0 - * - * @global string $wp_version */ public function initialise_blog_option_info() { - global $wp_version; - $this->blog_options = array( // Read only options 'software_name' => array( @@ -420,7 +416,7 @@ class wp_xmlrpc_server extends IXR_Server { 'software_version' => array( 'desc' => __( 'Software Version' ), 'readonly' => true, - 'value' => $wp_version + 'value' => get_bloginfo( 'version' ) ), 'blog_url' => array( 'desc' => __( 'WordPress Address (URL)' ), @@ -591,6 +587,10 @@ class wp_xmlrpc_server extends IXR_Server { * - 'xmlrpc' - url of xmlrpc endpoint */ public function wp_getUsersBlogs( $args ) { + if ( ! $this->minimum_args( $args, 2 ) ) { + return $this->error; + } + // If this isn't on WPMU then just use blogger_getUsersBlogs if ( !is_multisite() ) { array_unshift( $args, 1 ); @@ -628,7 +628,7 @@ class wp_xmlrpc_server extends IXR_Server { foreach ( $blogs as $blog ) { // Don't include blogs that aren't hosted at this site. - if ( $blog->site_id != get_current_site()->id ) + if ( $blog->site_id != get_current_network_id() ) continue; $blog_id = $blog->userblog_id; @@ -708,9 +708,9 @@ class wp_xmlrpc_server extends IXR_Server { * * @since 3.4.0 * - * @param array $_taxonomy An array of taxonomy data. - * @param object $taxonomy Taxonomy object. - * @param array $fields The subset of taxonomy fields to return. + * @param array $_taxonomy An array of taxonomy data. + * @param WP_Taxonomy $taxonomy Taxonomy object. + * @param array $fields The subset of taxonomy fields to return. */ return apply_filters( 'xmlrpc_prepare_taxonomy', $_taxonomy, $taxonomy, $fields ); } @@ -1270,7 +1270,7 @@ class wp_xmlrpc_server extends IXR_Server { } } elseif ( isset( $post_data['sticky'] ) ) { if ( ! current_user_can( $post_type->cap->edit_others_posts ) ) { - return new IXR_Error( 401, __( 'Sorry, you are not allowed to stick this post.' ) ); + return new IXR_Error( 401, __( 'Sorry, you are not allowed to make posts sticky.' ) ); } $sticky = wp_validate_boolean( $post_data['sticky'] ); @@ -1324,12 +1324,12 @@ class wp_xmlrpc_server extends IXR_Server { break; case 'private': if ( ! current_user_can( $post_type->cap->publish_posts ) ) - return new IXR_Error( 401, __( 'Sorry, you are not allowed to create private posts in this post type' ) ); + return new IXR_Error( 401, __( 'Sorry, you are not allowed to create private posts in this post type.' ) ); break; case 'publish': case 'future': if ( ! current_user_can( $post_type->cap->publish_posts ) ) - return new IXR_Error( 401, __( 'Sorry, you are not allowed to publish posts in this post type' ) ); + return new IXR_Error( 401, __( 'Sorry, you are not allowed to publish posts in this post type.' ) ); break; default: if ( ! get_post_status_object( $post_data['post_status'] ) ) @@ -1338,7 +1338,7 @@ class wp_xmlrpc_server extends IXR_Server { } if ( ! empty( $post_data['post_password'] ) && ! current_user_can( $post_type->cap->publish_posts ) ) - return new IXR_Error( 401, __( 'Sorry, you are not allowed to create password protected posts in this post type' ) ); + return new IXR_Error( 401, __( 'Sorry, you are not allowed to create password protected posts in this post type.' ) ); $post_data['post_author'] = absint( $post_data['post_author'] ); if ( ! empty( $post_data['post_author'] ) && $post_data['post_author'] != $user->ID ) { @@ -1523,7 +1523,7 @@ class wp_xmlrpc_server extends IXR_Server { return new IXR_Error( 500, $post_ID->get_error_message() ); if ( ! $post_ID ) - return new IXR_Error( 401, __( 'Sorry, your entry could not be posted. Something wrong happened.' ) ); + return new IXR_Error( 401, __( 'Sorry, your entry could not be posted.' ) ); return strval( $post_ID ); } @@ -1789,13 +1789,13 @@ class wp_xmlrpc_server extends IXR_Server { if ( isset( $filter['post_type'] ) ) { $post_type = get_post_type_object( $filter['post_type'] ); if ( ! ( (bool) $post_type ) ) - return new IXR_Error( 403, __( 'The post type specified is not valid' ) ); + return new IXR_Error( 403, __( 'Invalid post type.' ) ); } else { $post_type = get_post_type_object( 'post' ); } if ( ! current_user_can( $post_type->cap->edit_posts ) ) - return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts in this post type.' )); + return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts in this post type.' ) ); $query['post_type'] = $post_type->name; @@ -1877,8 +1877,9 @@ class wp_xmlrpc_server extends IXR_Server { $taxonomy = get_taxonomy( $content_struct['taxonomy'] ); - if ( ! current_user_can( $taxonomy->cap->manage_terms ) ) + if ( ! current_user_can( $taxonomy->cap->edit_terms ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to create terms in this taxonomy.' ) ); + } $taxonomy = (array) $taxonomy; @@ -1917,7 +1918,7 @@ class wp_xmlrpc_server extends IXR_Server { return new IXR_Error( 500, $term->get_error_message() ); if ( ! $term ) - return new IXR_Error( 500, __( 'Sorry, your term could not be created. Something wrong happened.' ) ); + return new IXR_Error( 500, __( 'Sorry, your term could not be created.' ) ); return strval( $term['term_id'] ); } @@ -1964,9 +1965,6 @@ class wp_xmlrpc_server extends IXR_Server { $taxonomy = get_taxonomy( $content_struct['taxonomy'] ); - if ( ! current_user_can( $taxonomy->cap->edit_terms ) ) - return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit terms in this taxonomy.' ) ); - $taxonomy = (array) $taxonomy; // hold the data of the term @@ -1980,6 +1978,10 @@ class wp_xmlrpc_server extends IXR_Server { if ( ! $term ) return new IXR_Error( 404, __( 'Invalid term ID.' ) ); + if ( ! current_user_can( 'edit_term', $term_id ) ) { + return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this term.' ) ); + } + if ( isset( $content_struct['name'] ) ) { $term_data['name'] = trim( $content_struct['name'] ); @@ -2059,10 +2061,6 @@ class wp_xmlrpc_server extends IXR_Server { return new IXR_Error( 403, __( 'Invalid taxonomy.' ) ); $taxonomy = get_taxonomy( $taxonomy ); - - if ( ! current_user_can( $taxonomy->cap->delete_terms ) ) - return new IXR_Error( 401, __( 'Sorry, you are not allowed to delete terms in this taxonomy.' ) ); - $term = get_term( $term_id, $taxonomy->name ); if ( is_wp_error( $term ) ) @@ -2071,6 +2069,10 @@ class wp_xmlrpc_server extends IXR_Server { if ( ! $term ) return new IXR_Error( 404, __( 'Invalid term ID.' ) ); + if ( ! current_user_can( 'delete_term', $term_id ) ) { + return new IXR_Error( 401, __( 'Sorry, you are not allowed to delete this term.' ) ); + } + $result = wp_delete_term( $term_id, $taxonomy->name ); if ( is_wp_error( $result ) ) @@ -2131,9 +2133,6 @@ class wp_xmlrpc_server extends IXR_Server { $taxonomy = get_taxonomy( $taxonomy ); - if ( ! current_user_can( $taxonomy->cap->assign_terms ) ) - return new IXR_Error( 401, __( 'Sorry, you are not allowed to assign terms in this taxonomy.' ) ); - $term = get_term( $term_id , $taxonomy->name, ARRAY_A ); if ( is_wp_error( $term ) ) @@ -2142,6 +2141,10 @@ class wp_xmlrpc_server extends IXR_Server { if ( ! $term ) return new IXR_Error( 404, __( 'Invalid term ID.' ) ); + if ( ! current_user_can( 'assign_term', $term_id ) ) { + return new IXR_Error( 401, __( 'Sorry, you are not allowed to assign this term.' ) ); + } + return $this->_prepare_term( $term ); } @@ -2473,7 +2476,7 @@ class wp_xmlrpc_server extends IXR_Server { do_action( 'xmlrpc_call', 'wp.getUsers' ); if ( ! current_user_can( 'list_users' ) ) - return new IXR_Error( 401, __( 'Sorry, you are not allowed to browse users.' ) ); + return new IXR_Error( 401, __( 'Sorry, you are not allowed to list users.' ) ); $query = array( 'fields' => 'all_with_meta' ); @@ -2489,7 +2492,7 @@ class wp_xmlrpc_server extends IXR_Server { if ( isset( $filter['role'] ) ) { if ( get_role( $filter['role'] ) === null ) - return new IXR_Error( 403, __( 'The role specified is not valid' ) ); + return new IXR_Error( 403, __( 'Invalid role.' ) ); $query['role'] = $filter['role']; } @@ -3471,7 +3474,7 @@ class wp_xmlrpc_server extends IXR_Server { return new IXR_Error(500, $result->get_error_message()); if ( !$result ) - return new IXR_Error(500, __('Sorry, the comment could not be edited. Something wrong happened.')); + return new IXR_Error(500, __('Sorry, the comment could not be edited.')); /** * Fires after a comment has been successfully updated via XML-RPC. @@ -3525,7 +3528,7 @@ class wp_xmlrpc_server extends IXR_Server { if ( !$user ) { $logged_in = false; if ( $allow_anon && get_option('comment_registration') ) { - return new IXR_Error( 403, __( 'You must be registered to comment' ) ); + return new IXR_Error( 403, __( 'You must be registered to comment.' ) ); } elseif ( ! $allow_anon ) { return $this->error; } @@ -3550,8 +3553,14 @@ class wp_xmlrpc_server extends IXR_Server { return new IXR_Error( 403, __( 'Sorry, comments are closed for this item.' ) ); } - $comment = array(); - $comment['comment_post_ID'] = $post_id; + if ( empty( $content_struct['content'] ) ) { + return new IXR_Error( 403, __( 'Comment is required.' ) ); + } + + $comment = array( + 'comment_post_ID' => $post_id, + 'comment_content' => $content_struct['content'], + ); if ( $logged_in ) { $display_name = $user->display_name; @@ -3579,20 +3588,25 @@ class wp_xmlrpc_server extends IXR_Server { if ( get_option('require_name_email') ) { if ( 6 > strlen($comment['comment_author_email']) || '' == $comment['comment_author'] ) - return new IXR_Error( 403, __( 'Comment author name and email are required' ) ); + return new IXR_Error( 403, __( 'Comment author name and email are required.' ) ); elseif ( !is_email($comment['comment_author_email']) ) - return new IXR_Error( 403, __( 'A valid email address is required' ) ); + return new IXR_Error( 403, __( 'A valid email address is required.' ) ); } } $comment['comment_parent'] = isset($content_struct['comment_parent']) ? absint($content_struct['comment_parent']) : 0; - $comment['comment_content'] = isset($content_struct['content']) ? $content_struct['content'] : null; - /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ do_action( 'xmlrpc_call', 'wp.newComment' ); - $comment_ID = wp_new_comment( $comment ); + $comment_ID = wp_new_comment( $comment, true ); + if ( is_wp_error( $comment_ID ) ) { + return new IXR_Error( 403, $comment_ID->get_error_message() ); + } + + if ( ! $comment_ID ) { + return new IXR_Error( 403, __( 'An unknown error occurred' ) ); + } /** * Fires after a new comment has been successfully created via XML-RPC. @@ -4103,7 +4117,7 @@ class wp_xmlrpc_server extends IXR_Server { $post_type = get_post_type_object( $post_type_name ); if ( ! current_user_can( $post_type->cap->edit_posts ) ) - return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post type.' ) ); + return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts in this post type.' ) ); return $this->_prepare_post_type( $post_type, $fields ); } @@ -4321,8 +4335,13 @@ class wp_xmlrpc_server extends IXR_Server { * @return array|IXR_Error */ public function blogger_getUsersBlogs($args) { - if ( is_multisite() ) + if ( ! $this->minimum_args( $args, 3 ) ) { + return $this->error; + } + + if ( is_multisite() ) { return $this->_multisite_getUsersBlogs($args); + } $this->escape($args); @@ -4363,7 +4382,7 @@ class wp_xmlrpc_server extends IXR_Server { * @return array|IXR_Error */ protected function _multisite_getUsersBlogs( $args ) { - $current_blog = get_blog_details(); + $current_blog = get_site(); $domain = $current_blog->domain; $path = $current_blog->path . 'xmlrpc.php'; @@ -4625,7 +4644,7 @@ class wp_xmlrpc_server extends IXR_Server { return new IXR_Error(500, $post_ID->get_error_message()); if ( !$post_ID ) - return new IXR_Error(500, __('Sorry, your entry could not be posted. Something wrong happened.')); + return new IXR_Error(500, __('Sorry, your entry could not be posted.')); $this->attach_uploads( $post_ID, $post_content ); @@ -4879,7 +4898,7 @@ class wp_xmlrpc_server extends IXR_Server { if ( isset( $content_struct['wp_post_format'] ) ) { $content_struct['wp_post_format'] = sanitize_key( $content_struct['wp_post_format'] ); if ( !array_key_exists( $content_struct['wp_post_format'], get_post_format_strings() ) ) { - return new IXR_Error( 404, __( 'Invalid post format' ) ); + return new IXR_Error( 404, __( 'Invalid post format.' ) ); } } @@ -5084,7 +5103,7 @@ class wp_xmlrpc_server extends IXR_Server { return new IXR_Error(500, $post_ID->get_error_message()); if ( !$post_ID ) - return new IXR_Error(500, __('Sorry, your entry could not be posted. Something wrong happened.')); + return new IXR_Error(500, __('Sorry, your entry could not be posted.')); /** * Fires after a new post has been successfully created via the XML-RPC MovableType API. @@ -5203,7 +5222,7 @@ class wp_xmlrpc_server extends IXR_Server { if ( isset( $content_struct['wp_post_format'] ) ) { $content_struct['wp_post_format'] = sanitize_key( $content_struct['wp_post_format'] ); if ( !array_key_exists( $content_struct['wp_post_format'], get_post_format_strings() ) ) { - return new IXR_Error( 404, __( 'Invalid post format' ) ); + return new IXR_Error( 404, __( 'Invalid post format.' ) ); } } @@ -5405,7 +5424,7 @@ class wp_xmlrpc_server extends IXR_Server { return new IXR_Error(500, $result->get_error_message()); if ( !$result ) - return new IXR_Error(500, __('Sorry, your entry could not be edited. Something wrong happened.')); + return new IXR_Error(500, __('Sorry, your entry could not be edited.')); // Only posts can be sticky if ( $post_type == 'post' && isset( $content_struct['sticky'] ) ) { @@ -5818,8 +5837,9 @@ class wp_xmlrpc_server extends IXR_Server { $upload = wp_upload_bits($name, null, $bits); if ( ! empty($upload['error']) ) { - $errorString = sprintf(__('Could not write file %1$s (%2$s)'), $name, $upload['error']); - return new IXR_Error(500, $errorString); + /* translators: 1: file name, 2: error message */ + $errorString = sprintf( __( 'Could not write file %1$s (%2$s).' ), $name, $upload['error'] ); + return new IXR_Error( 500, $errorString ); } // Construct the attachment array $post_id = 0; @@ -6192,9 +6212,6 @@ class wp_xmlrpc_server extends IXR_Server { * * @since 1.5.0 * - * @global wpdb $wpdb WordPress database abstraction object. - * @global string $wp_version - * * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * @@ -6204,7 +6221,7 @@ class wp_xmlrpc_server extends IXR_Server { * @return string|IXR_Error */ public function pingback_ping( $args ) { - global $wpdb, $wp_version; + global $wpdb; /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ do_action( 'xmlrpc_call', 'pingback.ping' ); @@ -6292,7 +6309,7 @@ class wp_xmlrpc_server extends IXR_Server { $remote_ip = preg_replace( '/[^0-9a-fA-F:., ]/', '', $_SERVER['REMOTE_ADDR'] ); /** This filter is documented in wp-includes/class-http.php */ - $user_agent = apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); + $user_agent = apply_filters( 'http_headers_useragent', 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ) ); // Let's check the remote site $http_api_args = array( @@ -6328,9 +6345,10 @@ class wp_xmlrpc_server extends IXR_Server { $remote_source = preg_replace( "/<\/*(h1|h2|h3|h4|h5|h6|p|th|td|li|dt|dd|pre|caption|input|textarea|button|body)[^>]*>/", "\n\n", $remote_source ); preg_match( '|([^<]*?)|is', $remote_source, $matchtitle ); - $title = $matchtitle[1]; - if ( empty( $title ) ) - return $this->pingback_error( 32, __('We cannot find a title on that page.' ) ); + $title = isset( $matchtitle[1] ) ? $matchtitle[1] : ''; + if ( empty( $title ) ) { + return $this->pingback_error( 32, __( 'We cannot find a title on that page.' ) ); + } $remote_source = strip_tags( $remote_source, '' ); // just keep the tag we need @@ -6398,7 +6416,8 @@ class wp_xmlrpc_server extends IXR_Server { */ do_action( 'pingback_post', $comment_ID ); - return sprintf(__('Pingback from %1$s to %2$s registered. Keep the web talking! :-)'), $pagelinkedfrom, $pagelinkedto); + /* translators: 1: URL of the page linked from, 2: URL of the page linked to */ + return sprintf( __( 'Pingback from %1$s to %2$s registered. Keep the web talking! :-)' ), $pagelinkedfrom, $pagelinkedto ); } /** diff --git a/wp/wp-includes/class-wp.php b/wp/wp-includes/class-wp.php index 4a971836..c62d7908 100644 --- a/wp/wp-includes/class-wp.php +++ b/wp/wp-includes/class-wp.php @@ -26,7 +26,7 @@ class WP { * @access public * @var array */ - public $private_query_vars = array( 'offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in', 'post_parent', 'post_parent__in', 'post_parent__not_in', 'title' ); + public $private_query_vars = array( 'offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in', 'post_parent', 'post_parent__in', 'post_parent__not_in', 'title', 'fields' ); /** * Extra query variables set by the user. @@ -422,22 +422,30 @@ class WP { } $headers['Content-Type'] = feed_content_type( $type ) . '; charset=' . get_option( 'blog_charset' ); - // We're showing a feed, so WP is indeed the only thing that last changed - if ( !empty($this->query_vars['withcomments']) - || false !== strpos( $this->query_vars['feed'], 'comments-' ) - || ( empty($this->query_vars['withoutcomments']) - && ( !empty($this->query_vars['p']) - || !empty($this->query_vars['name']) - || !empty($this->query_vars['page_id']) - || !empty($this->query_vars['pagename']) - || !empty($this->query_vars['attachment']) - || !empty($this->query_vars['attachment_id']) - ) - ) - ) - $wp_last_modified = mysql2date('D, d M Y H:i:s', get_lastcommentmodified('GMT'), 0).' GMT'; - else - $wp_last_modified = mysql2date('D, d M Y H:i:s', get_lastpostmodified('GMT'), 0).' GMT'; + // We're showing a feed, so WP is indeed the only thing that last changed. + if ( ! empty( $this->query_vars['withcomments'] ) + || false !== strpos( $this->query_vars['feed'], 'comments-' ) + || ( empty( $this->query_vars['withoutcomments'] ) + && ( ! empty( $this->query_vars['p'] ) + || ! empty( $this->query_vars['name'] ) + || ! empty( $this->query_vars['page_id'] ) + || ! empty( $this->query_vars['pagename'] ) + || ! empty( $this->query_vars['attachment'] ) + || ! empty( $this->query_vars['attachment_id'] ) + ) + ) + ) { + $wp_last_modified = mysql2date( 'D, d M Y H:i:s', get_lastcommentmodified( 'GMT' ), false ); + } else { + $wp_last_modified = mysql2date( 'D, d M Y H:i:s', get_lastpostmodified( 'GMT' ), false ); + } + + if ( ! $wp_last_modified ) { + $wp_last_modified = date( 'D, d M Y H:i:s' ); + } + + $wp_last_modified .= ' GMT'; + $wp_etag = '"' . md5($wp_last_modified) . '"'; $headers['Last-Modified'] = $wp_last_modified; $headers['ETag'] = $wp_etag; @@ -662,7 +670,7 @@ class WP { // Only set X-Pingback for single posts that allow pings. if ( $p && pings_open( $p ) ) { - @header( 'X-Pingback: ' . get_bloginfo( 'pingback_url' ) ); + @header( 'X-Pingback: ' . get_bloginfo( 'pingback_url', 'display' ) ); } // check for paged content that exceeds the max number of pages @@ -738,93 +746,3 @@ class WP { do_action_ref_array( 'wp', array( &$this ) ); } } - -/** - * Helper class to remove the need to use eval to replace $matches[] in query strings. - * - * @since 2.9.0 - */ -class WP_MatchesMapRegex { - /** - * store for matches - * - * @access private - * @var array - */ - private $_matches; - - /** - * store for mapping result - * - * @access public - * @var string - */ - public $output; - - /** - * subject to perform mapping on (query string containing $matches[] references - * - * @access private - * @var string - */ - private $_subject; - - /** - * regexp pattern to match $matches[] references - * - * @var string - */ - public $_pattern = '(\$matches\[[1-9]+[0-9]*\])'; // magic number - - /** - * constructor - * - * @param string $subject subject if regex - * @param array $matches data to use in map - */ - public function __construct($subject, $matches) { - $this->_subject = $subject; - $this->_matches = $matches; - $this->output = $this->_map(); - } - - /** - * Substitute substring matches in subject. - * - * static helper function to ease use - * - * @static - * @access public - * - * @param string $subject subject - * @param array $matches data used for substitution - * @return string - */ - public static function apply($subject, $matches) { - $oSelf = new WP_MatchesMapRegex($subject, $matches); - return $oSelf->output; - } - - /** - * do the actual mapping - * - * @access private - * @return string - */ - private function _map() { - $callback = array($this, 'callback'); - return preg_replace_callback($this->_pattern, $callback, $this->_subject); - } - - /** - * preg_replace_callback hook - * - * @access public - * @param array $matches preg_replace regexp matches - * @return string - */ - public function callback($matches) { - $index = intval(substr($matches[0], 9, -1)); - return ( isset( $this->_matches[$index] ) ? urlencode($this->_matches[$index]) : '' ); - } -} diff --git a/wp/wp-includes/class.wp-dependencies.php b/wp/wp-includes/class.wp-dependencies.php index 03484181..13ff04fa 100644 --- a/wp/wp-includes/class.wp-dependencies.php +++ b/wp/wp-includes/class.wp-dependencies.php @@ -211,7 +211,7 @@ class WP_Dependencies { * as a query string for cache busting purposes. If version is set to false, a version * number is automatically added equal to current installed WordPress version. * If set to null, no version is added. - * @param mixed $args Optional. Custom property of the item. NOT the class property $args. Examples: $media, $in_footer. + * @param mixed $args Optional. Custom property of the item. NOT the class property $args. Examples: $media, $in_footer. * @return bool Whether the item has been registered. True on success, false on failure. */ public function add( $handle, $src, $deps = array(), $ver = false, $args = null ) { @@ -411,99 +411,4 @@ class WP_Dependencies { return true; } -} // WP_Dependencies - -/** - * Class _WP_Dependency - * - * Helper class to register a handle and associated data. - * - * @access private - * @since 2.6.0 - */ -class _WP_Dependency { - /** - * The handle name. - * - * @access public - * @since 2.6.0 - * @var null - */ - public $handle; - - /** - * The handle source. - * - * @access public - * @since 2.6.0 - * @var null - */ - public $src; - - /** - * An array of handle dependencies. - * - * @access public - * @since 2.6.0 - * @var array - */ - public $deps = array(); - - /** - * The handle version. - * - * Used for cache-busting. - * - * @access public - * @since 2.6.0 - * @var bool|string - */ - public $ver = false; - - /** - * Additional arguments for the handle. - * - * @access public - * @since 2.6.0 - * @var null - */ - public $args = null; // Custom property, such as $in_footer or $media. - - /** - * Extra data to supply to the handle. - * - * @access public - * @since 2.6.0 - * @var array - */ - public $extra = array(); - - /** - * Setup dependencies. - * - * @since 2.6.0 - */ - public function __construct() { - @list( $this->handle, $this->src, $this->deps, $this->ver, $this->args ) = func_get_args(); - if ( ! is_array($this->deps) ) - $this->deps = array(); - } - - /** - * Add handle data. - * - * @access public - * @since 2.6.0 - * - * @param string $name The data key to add. - * @param mixed $data The data value to add. - * @return bool False if not scalar, true otherwise. - */ - public function add_data( $name, $data ) { - if ( !is_scalar($name) ) - return false; - $this->extra[$name] = $data; - return true; - } - -} // _WP_Dependencies +} diff --git a/wp/wp-includes/comment-template.php b/wp/wp-includes/comment-template.php index 42ebd41e..c914796c 100644 --- a/wp/wp-includes/comment-template.php +++ b/wp/wp-includes/comment-template.php @@ -1576,7 +1576,8 @@ function comments_popup_link( $zero = false, $one = false, $more = false, $css_c * Default 'respond'. * @type string $reply_text The text of the Reply link. Default 'Reply'. * @type string $login_text The text of the link to reply if logged out. Default 'Log in to Reply'. - * @type int $depth' The depth of the new comment. Must be greater than 0 and less than the value + * @type int $max_depth The max depth of the comment tree. Default 0. + * @type int $depth The depth of the new comment. Must be greater than 0 and less than the value * of the 'thread_comments_depth' option set in Settings > Discussion. Default 0. * @type string $before The text or HTML to add before the reply link. Default empty. * @type string $after The text or HTML to add after the reply link. Default empty. @@ -1591,8 +1592,10 @@ function get_comment_reply_link( $args = array(), $comment = null, $post = null 'add_below' => 'comment', 'respond_id' => 'respond', 'reply_text' => __( 'Reply' ), + /* translators: Comment reply button text. 1: Comment author name */ 'reply_to_text' => __( 'Reply to %s' ), 'login_text' => __( 'Log in to Reply' ), + 'max_depth' => 0, 'depth' => 0, 'before' => '', 'after' => '' @@ -1908,7 +1911,7 @@ function comment_form_title( $noreplytext = false, $replytext = false, $linktopa * @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_top_level Ordering of the listed comments. If true, will display newest comments first. * @type bool $reverse_children Whether to reverse child comments in the list. Default null. * @type string $format How to format the comments list. * Default 'html5' if the theme supports it. Accepts 'html5', 'xhtml'. @@ -2165,6 +2168,18 @@ function comment_form( $args = array(), $post_id = null ) { if ( null === $post_id ) $post_id = get_the_ID(); + // Exit the function when comments for the post are closed. + if ( ! comments_open( $post_id ) ) { + /** + * Fires after the comment form if comments are closed. + * + * @since 3.0.0 + */ + do_action( 'comment_form_comments_closed' ); + + return; + } + $commenter = wp_get_current_commenter(); $user = wp_get_current_user(); $user_identity = $user->exists() ? $user->display_name : ''; @@ -2250,209 +2265,200 @@ function comment_form( $args = array(), $post_id = null ) { // Ensure that the filtered args contain all required default values. $args = array_merge( $defaults, $args ); - if ( comments_open( $post_id ) ) : ?> + /** + * Fires before the comment form. + * + * @since 3.0.0 + */ + do_action( 'comment_form_before' ); + ?> +
              -
              - +
              > + - > - $args['comment_field'] ) + (array) $args['fields']; + echo apply_filters( 'comment_form_logged_in', $args['logged_in_as'], $commenter, $user_identity ); /** - * Filters the comment form fields, including the textarea. + * Fires after the is_user_logged_in() check in the comment form. * - * @since 4.4.0 + * @since 3.0.0 * - * @param array $comment_fields The comment fields. + * @param array $commenter An array containing the comment author's + * username, email, and URL. + * @param string $user_identity If the commenter is a registered user, + * the display name, blank otherwise. */ - $comment_fields = apply_filters( 'comment_form_fields', $comment_fields ); + do_action( 'comment_form_logged_in_after', $commenter, $user_identity ); - // Get an array of field names, excluding the textarea - $comment_field_keys = array_diff( array_keys( $comment_fields ), array( 'comment' ) ); + else : - // Get the first and the last field name, excluding the textarea - $first_field = reset( $comment_field_keys ); - $last_field = end( $comment_field_keys ); + echo $args['comment_notes_before']; - foreach ( $comment_fields as $name => $field ) { + endif; - if ( 'comment' === $name ) { + // Prepare an array of all fields, including the textarea + $comment_fields = array( 'comment' => $args['comment_field'] ) + (array) $args['fields']; + /** + * Filters the comment form fields, including the textarea. + * + * @since 4.4.0 + * + * @param array $comment_fields The comment fields. + */ + $comment_fields = apply_filters( 'comment_form_fields', $comment_fields ); + + // Get an array of field names, excluding the textarea + $comment_field_keys = array_diff( array_keys( $comment_fields ), array( 'comment' ) ); + + // Get the first and the last field name, excluding the textarea + $first_field = reset( $comment_field_keys ); + $last_field = end( $comment_field_keys ); + + foreach ( $comment_fields as $name => $field ) { + + if ( 'comment' === $name ) { + + /** + * Filters the content of the comment textarea field for display. + * + * @since 3.0.0 + * + * @param string $args_comment_field The content of the comment textarea field. + */ + echo apply_filters( 'comment_form_field_comment', $field ); + + echo $args['comment_notes_after']; + + } elseif ( ! is_user_logged_in() ) { + + if ( $first_field === $name ) { /** - * Filters the content of the comment textarea field for display. + * Fires before the comment fields in the comment form, excluding the textarea. * * @since 3.0.0 - * - * @param string $args_comment_field The content of the comment textarea field. */ - echo apply_filters( 'comment_form_field_comment', $field ); + do_action( 'comment_form_before_fields' ); + } - echo $args['comment_notes_after']; - - } elseif ( ! is_user_logged_in() ) { - - if ( $first_field === $name ) { - /** - * Fires before the comment fields in the comment form, excluding the textarea. - * - * @since 3.0.0 - */ - do_action( 'comment_form_before_fields' ); - } + /** + * Filters a comment form field for display. + * + * The dynamic portion of the filter hook, `$name`, refers to the name + * of the comment form field. Such as 'author', 'email', or 'url'. + * + * @since 3.0.0 + * + * @param string $field The HTML-formatted output of the comment form field. + */ + echo apply_filters( "comment_form_field_{$name}", $field ) . "\n"; + if ( $last_field === $name ) { /** - * Filters a comment form field for display. - * - * The dynamic portion of the filter hook, `$name`, refers to the name - * of the comment form field. Such as 'author', 'email', or 'url'. + * Fires after the comment fields in the comment form, excluding the textarea. * * @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"; - - if ( $last_field === $name ) { - /** - * Fires after the comment fields in the comment form, excluding the textarea. - * - * @since 3.0.0 - */ - do_action( 'comment_form_after_fields' ); - } + do_action( 'comment_form_after_fields' ); } } + } - $submit_button = sprintf( - $args['submit_button'], - esc_attr( $args['name_submit'] ), - esc_attr( $args['id_submit'] ), - esc_attr( $args['class_submit'] ), - esc_attr( $args['label_submit'] ) - ); + $submit_button = sprintf( + $args['submit_button'], + esc_attr( $args['name_submit'] ), + esc_attr( $args['id_submit'] ), + esc_attr( $args['class_submit'] ), + esc_attr( $args['label_submit'] ) + ); - /** - * Filters the submit button for the comment form to display. - * - * @since 4.2.0 - * - * @param string $submit_button HTML markup for the submit button. - * @param array $args Arguments passed to `comment_form()`. - */ - $submit_button = apply_filters( 'comment_form_submit_button', $submit_button, $args ); + /** + * Filters the submit button for the comment form to display. + * + * @since 4.2.0 + * + * @param string $submit_button HTML markup for the submit button. + * @param array $args Arguments passed to `comment_form()`. + */ + $submit_button = apply_filters( 'comment_form_submit_button', $submit_button, $args ); - $submit_field = sprintf( - $args['submit_field'], - $submit_button, - get_comment_id_fields( $post_id ) - ); + $submit_field = sprintf( + $args['submit_field'], + $submit_button, + get_comment_id_fields( $post_id ) + ); - /** - * Filters the submit field for the comment form to display. - * - * The submit field includes the submit button, hidden fields for the - * comment form, and any wrapper markup. - * - * @since 4.2.0 - * - * @param string $submit_field HTML markup for the submit field. - * @param array $args Arguments passed to comment_form(). - */ - echo apply_filters( 'comment_form_submit_field', $submit_field, $args ); + /** + * Filters the submit field for the comment form to display. + * + * The submit field includes the submit button, hidden fields for the + * comment form, and any wrapper markup. + * + * @since 4.2.0 + * + * @param string $submit_field HTML markup for the submit field. + * @param array $args Arguments passed to comment_form(). + */ + echo apply_filters( 'comment_form_submit_field', $submit_field, $args ); - /** - * Fires at the bottom of the comment form, inside the closing
              tag. - * - * @since 1.5.0 - * - * @param int $post_id The post ID. - */ - do_action( 'comment_form', $post_id ); - ?> - - -
              - tag. + * + * @since 1.5.0 + * + * @param int $post_id The post ID. + */ + do_action( 'comment_form', $post_id ); + ?> + + +
              + get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$author' AND comment_author_email = '$email' and comment_approved = '1' LIMIT 1"); + $comment_user = get_user_by( 'email', wp_unslash( $email ) ); + if ( ! empty( $comment_user->ID ) ) { + $ok_to_comment = $wpdb->get_var( $wpdb->prepare( "SELECT comment_approved FROM $wpdb->comments WHERE user_id = %d AND comment_approved = '1' LIMIT 1", $comment_user->ID ) ); + } else { + // expected_slashed ($author, $email) + $ok_to_comment = $wpdb->get_var( $wpdb->prepare( "SELECT comment_approved FROM $wpdb->comments WHERE comment_author = %s AND comment_author_email = %s and comment_approved = '1' LIMIT 1", $author, $email ) ); + } if ( ( 1 == $ok_to_comment ) && ( empty($mod_keys) || false === strpos( $email, $mod_keys) ) ) return true; @@ -163,7 +170,8 @@ function get_approved_comments( $post_id, $args = array() ) { * @global WP_Comment $comment * * @param WP_Comment|string|int $comment Comment to retrieve. - * @param string $output Optional. OBJECT or ARRAY_A or ARRAY_N constants. + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * a WP_Comment object, an associative array, or a numeric array, respectively. Default OBJECT. * @return WP_Comment|array|null Depends on $output value. */ function get_comment( &$comment = null, $output = OBJECT ) { @@ -286,38 +294,46 @@ function get_default_comment_status( $post_type = 'post', $comment_type = 'comme * The date the last comment was modified. * * @since 1.5.0 + * @since 4.7.0 Replaced caching the modified date in a local static variable + * with the Object Cache API. * * @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. + * @param string $timezone Which timezone to use in reference to 'gmt', 'blog', or 'server' locations. + * @return string|false Last comment modified date on success, false on failure. */ -function get_lastcommentmodified($timezone = 'server') { +function get_lastcommentmodified( $timezone = 'server' ) { global $wpdb; - static $cache_lastcommentmodified = array(); - if ( isset($cache_lastcommentmodified[$timezone]) ) - return $cache_lastcommentmodified[$timezone]; + $timezone = strtolower( $timezone ); + $key = "lastcommentmodified:$timezone"; - $add_seconds_server = date('Z'); + $comment_modified_date = wp_cache_get( $key, 'timeinfo' ); + if ( false !== $comment_modified_date ) { + return $comment_modified_date; + } - switch ( strtolower($timezone)) { + switch ( $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"); + $comment_modified_date = $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"); + $comment_modified_date = $wpdb->get_var( "SELECT comment_date FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1" ); break; case 'server': - $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)); + $add_seconds_server = date( 'Z' ); + + $comment_modified_date = $wpdb->get_var( $wpdb->prepare( "SELECT DATE_ADD(comment_date_gmt, INTERVAL %s SECOND) FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1", $add_seconds_server ) ); break; } - $cache_lastcommentmodified[$timezone] = $lastcommentmodified; + if ( $comment_modified_date ) { + wp_cache_set( $key, $comment_modified_date, 'timeinfo' ); - return $lastcommentmodified; + return $comment_modified_date; + } + + return false; } /** @@ -581,13 +597,19 @@ function sanitize_comment_cookies() { * Validates whether this comment is allowed to be made. * * @since 2.0.0 + * @since 4.7.0 The `$avoid_die` parameter was added, allowing the function to + * return a WP_Error object instead of dying. * * @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') + * @param array $commentdata Contains information on the comment. + * @param bool $avoid_die When true, a disallowed comment will result in the function + * returning a WP_Error object, rather than executing wp_die(). + * Default false. + * @return int|string|WP_Error Allowed comments return the approval status (0|1|'spam'). + * If `$avoid_die` is true, disallowed comments return a WP_Error. */ -function wp_allow_comment( $commentdata ) { +function wp_allow_comment( $commentdata, $avoid_die = false ) { global $wpdb; // Simple duplicate check @@ -632,10 +654,15 @@ function wp_allow_comment( $commentdata ) { * @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!') ); + if ( true === $avoid_die ) { + return new WP_Error( 'comment_duplicate', __( 'Duplicate comment detected; it looks as though you’ve already said that!' ), 409 ); + } else { + if ( wp_doing_ajax() ) { + die( __('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 ); } - wp_die( __( 'Duplicate comment detected; it looks as though you’ve already said that!' ), 409 ); } /** @@ -644,18 +671,49 @@ function wp_allow_comment( $commentdata ) { * Allows checking for comment flooding. * * @since 2.3.0 + * @since 4.7.0 The `$avoid_die` parameter was added. * * @param string $comment_author_IP Comment author's IP address. * @param string $comment_author_email Comment author's email. * @param string $comment_date_gmt GMT date the comment was posted. + * @param bool $avoid_die Whether to prevent executing wp_die() + * or die() if a comment flood is occurring. */ do_action( 'check_comment_flood', $commentdata['comment_author_IP'], $commentdata['comment_author_email'], - $commentdata['comment_date_gmt'] + $commentdata['comment_date_gmt'], + $avoid_die ); + /** + * Filters whether a comment is part of a comment flood. + * + * The default check is wp_check_comment_flood(). See check_comment_flood_db(). + * + * @since 4.7.0 + * + * @param bool $is_flood Is a comment flooding occurring? Default false. + * @param string $comment_author_IP Comment author's IP address. + * @param string $comment_author_email Comment author's email. + * @param string $comment_date_gmt GMT date the comment was posted. + * @param bool $avoid_die Whether to prevent executing wp_die() + * or die() if a comment flood is occurring. + */ + $is_flood = apply_filters( + 'wp_is_comment_flood', + false, + $commentdata['comment_author_IP'], + $commentdata['comment_author_email'], + $commentdata['comment_date_gmt'], + $avoid_die + ); + + if ( $is_flood ) { + return new WP_Error( 'comment_flood', __( 'You are posting comments too quickly. Slow down.' ), 429 ); + } + if ( ! empty( $commentdata['user_id'] ) ) { $user = get_userdata( $commentdata['user_id'] ); $post_author = $wpdb->get_var( $wpdb->prepare( @@ -708,24 +766,50 @@ function wp_allow_comment( $commentdata ) { } /** - * Check whether comment flooding is occurring. + * Hooks WP's native database-based comment-flood check. + * + * This wrapper maintains backward compatibility with plugins that expect to + * be able to unhook the legacy check_comment_flood_db() function from + * 'check_comment_flood' using remove_action(). + * + * @since 2.3.0 + * @since 4.7.0 Converted to be an add_filter() wrapper. + */ +function check_comment_flood_db() { + add_filter( 'wp_is_comment_flood', 'wp_check_comment_flood', 10, 5 ); +} + +/** + * Checks whether comment flooding is occurring. * * Won't run, if current user can manage options, so to not block * administrators. * - * @since 2.3.0 + * @since 4.7.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. + * @param bool $is_flood Is a comment flooding occurring? + * @param string $ip Comment IP. + * @param string $email Comment author email address. + * @param string $date MySQL time string. + * @param bool $avoid_die When true, a disallowed comment will result in the function + * returning a WP_Error object, rather than executing wp_die(). + * Default false. + * @return bool Whether comment flooding is occurring. */ -function check_comment_flood_db( $ip, $email, $date ) { +function wp_check_comment_flood( $is_flood, $ip, $email, $date, $avoid_die = false ) { + global $wpdb; + + // Another callback has declared a flood. Trust it. + if ( true === $is_flood ) { + return $is_flood; + } + // don't throttle admins or moderators if ( current_user_can( 'manage_options' ) || current_user_can( 'moderate_comments' ) ) { - return; + return false; } $hour_ago = gmdate( 'Y-m-d H:i:s', time() - HOUR_IN_SECONDS ); @@ -767,13 +851,19 @@ function check_comment_flood_db( $ip, $email, $date ) { * @param int $time_newcomment Timestamp of when the new comment was posted. */ do_action( 'comment_flood_trigger', $time_lastcomment, $time_newcomment ); + if ( true === $avoid_die ) { + return true; + } else { + if ( wp_doing_ajax() ) { + die( __('You are posting comments too quickly. Slow down.') ); + } - if ( defined('DOING_AJAX') ) - die( __('You are posting comments too quickly. Slow down.') ); - - wp_die( __( 'You are posting comments too quickly. Slow down.' ), 429 ); + wp_die( __( 'You are posting comments too quickly. Slow down.' ), 429 ); + } } } + + return false; } /** @@ -913,6 +1003,12 @@ function get_page_of_comment( $comment_ID, $args = array() ) { if ( $args['max_depth'] > 1 && 0 != $comment->comment_parent ) return get_page_of_comment( $comment->comment_parent, $args ); + if ( 'desc' === get_option( 'comment_order' ) ) { + $compare = 'after'; + } else { + $compare = 'before'; + } + $comment_args = array( 'type' => $args['type'], 'post_id' => $comment->comment_post_ID, @@ -923,7 +1019,7 @@ function get_page_of_comment( $comment_ID, $args = array() ) { 'date_query' => array( array( 'column' => "$wpdb->comments.comment_date_gmt", - 'before' => $comment->comment_date_gmt, + $compare => $comment->comment_date_gmt, ) ), ); @@ -945,6 +1041,7 @@ function get_page_of_comment( $comment_ID, $args = array() ) { * Filters the calculated page on which a comment appears. * * @since 4.4.0 + * @since 4.7.0 Introduced the `$comment_ID` parameter. * * @param int $page Comment page. * @param array $args { @@ -965,8 +1062,9 @@ function get_page_of_comment( $comment_ID, $args = array() ) { * @type int $per_page Number of comments per page. * @type int $max_depth Maximum comment threading depth allowed. * } + * @param int $comment_ID ID of the comment. */ - return apply_filters( 'get_page_of_comment', (int) $page, $args, $original_args ); + return apply_filters( 'get_page_of_comment', (int) $page, $args, $original_args, $comment_ID ); } /** @@ -1024,6 +1122,37 @@ function wp_get_comment_fields_max_lengths() { return apply_filters( 'wp_get_comment_fields_max_lengths', $lengths ); } +/** + * Compares the lengths of comment data against the maximum character limits. + * + * @since 4.7.0 + * + * @param array $comment_data Array of arguments for inserting a comment. + * @return WP_Error|true WP_Error when a comment field exceeds the limit, + * otherwise true. + */ +function wp_check_comment_data_max_lengths( $comment_data ) { + $max_lengths = wp_get_comment_fields_max_lengths(); + + if ( isset( $comment_data['comment_author'] ) && mb_strlen( $comment_data['comment_author'], '8bit' ) > $max_lengths['comment_author'] ) { + return new WP_Error( 'comment_author_column_length', __( 'ERROR: your name is too long.' ), 200 ); + } + + if ( isset( $comment_data['comment_author_email'] ) && strlen( $comment_data['comment_author_email'] ) > $max_lengths['comment_author_email'] ) { + return new WP_Error( 'comment_author_email_column_length', __( 'ERROR: your email address is too long.' ), 200 ); + } + + if ( isset( $comment_data['comment_author_url'] ) && strlen( $comment_data['comment_author_url'] ) > $max_lengths['comment_author_url'] ) { + return new WP_Error( 'comment_author_url_column_length', __( 'ERROR: your url is too long.' ), 200 ); + } + + if ( isset( $comment_data['comment_content'] ) && mb_strlen( $comment_data['comment_content'], '8bit' ) > $max_lengths['comment_content'] ) { + return new WP_Error( 'comment_content_column_length', __( 'ERROR: your comment is too long.' ), 200 ); + } + + return true; +} + /** * Does comment contain blacklisted characters or words. * @@ -1483,6 +1612,26 @@ function wp_transition_comment_status($new_status, $old_status, $comment) { do_action( "comment_{$new_status}_{$comment->comment_type}", $comment->comment_ID, $comment ); } +/** + * Clear the lastcommentmodified cached value when a comment status is changed. + * + * Deletes the lastcommentmodified cache key when a comment enters or leaves + * 'approved' status. + * + * @since 4.7.0 + * @access private + * + * @param string $new_status The new comment status. + * @param string $old_status The old comment status. + */ +function _clear_modified_cache_on_transition_comment_status( $new_status, $old_status ) { + if ( 'approved' === $new_status || 'approved' === $old_status ) { + foreach ( array( 'server', 'gmt', 'blog' ) as $timezone ) { + wp_cache_delete( "lastcommentmodified:$timezone", 'timeinfo' ); + } + } +} + /** * Get current commenter's name, email, and URL. * @@ -1592,6 +1741,10 @@ function wp_insert_comment( $commentdata ) { if ( $comment_approved == 1 ) { wp_update_comment_count( $comment_post_ID ); + + foreach ( array( 'server', 'gmt', 'blog' ) as $timezone ) { + wp_cache_delete( "lastcommentmodified:$timezone", 'timeinfo' ); + } } clean_comment_cache( $id ); @@ -1715,6 +1868,8 @@ function wp_throttle_comment_flood($block, $time_lastcomment, $time_newcomment) * * @since 1.5.0 * @since 4.3.0 'comment_agent' and 'comment_author_IP' can be set via `$commentdata`. + * @since 4.7.0 The `$avoid_die` parameter was added, allowing the function to + * return a WP_Error object instead of dying. * * @see wp_insert_comment() * @global wpdb $wpdb WordPress database abstraction object. @@ -1738,9 +1893,11 @@ function wp_throttle_comment_flood($block, $time_lastcomment, $time_newcomment) * @type string $comment_author_IP Comment author IP address in IPv4 format. Default is the value of * 'REMOTE_ADDR' in the `$_SERVER` superglobal sent in the original request. * } - * @return int|false The ID of the comment on success, false on failure. + * @param bool $avoid_die Should errors be returned as WP_Error objects instead of + * executing wp_die()? Default false. + * @return int|false|WP_Error The ID of the comment on success, false or WP_Error on failure. */ -function wp_new_comment( $commentdata ) { +function wp_new_comment( $commentdata, $avoid_die = false ) { global $wpdb; if ( isset( $commentdata['user_ID'] ) ) { @@ -1789,7 +1946,10 @@ function wp_new_comment( $commentdata ) { $commentdata = wp_filter_comment($commentdata); - $commentdata['comment_approved'] = wp_allow_comment($commentdata); + $commentdata['comment_approved'] = wp_allow_comment( $commentdata, $avoid_die ); + if ( is_wp_error( $commentdata['comment_approved'] ) ) { + return $commentdata['comment_approved']; + } $comment_ID = wp_insert_comment($commentdata); if ( ! $comment_ID ) { @@ -1803,7 +1963,10 @@ function wp_new_comment( $commentdata ) { $commentdata = wp_filter_comment( $commentdata ); - $commentdata['comment_approved'] = wp_allow_comment( $commentdata ); + $commentdata['comment_approved'] = wp_allow_comment( $commentdata, $avoid_die ); + if ( is_wp_error( $commentdata['comment_approved'] ) ) { + return $commentdata['comment_approved']; + } $comment_ID = wp_insert_comment( $commentdata ); if ( ! $comment_ID ) { @@ -2025,6 +2188,20 @@ function wp_update_comment($commentarr) { $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', 'comment_agent', 'comment_author_IP' ); $data = wp_array_slice_assoc( $data, $keys ); + + /** + * Filters the comment data immediately before it is updated in the database. + * + * Note: data being passed to the filter is already unslashed. + * + * @since 4.7.0 + * + * @param array $data The new, processed comment data. + * @param array $comment The old, unslashed comment data. + * @param array $commentarr The new, raw comment data. + */ + $data = apply_filters( 'wp_update_comment_data', $data, $comment, $commentarr ); + $rval = $wpdb->update( $wpdb->comments, $data, compact( 'comment_ID' ) ); clean_comment_cache( $comment_ID ); @@ -2292,19 +2469,23 @@ function do_all_pings() { * Perform trackbacks. * * @since 1.5.0 + * @since 4.7.0 $post_id can be a WP_Post object. * * @global wpdb $wpdb WordPress database abstraction object. * - * @param int $post_id Post ID to do trackbacks on. + * @param int|WP_Post $post_id Post object or ID to do trackbacks on. */ -function do_trackbacks($post_id) { +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) ); + if ( ! $post ) { + return false; + } + + $to_ping = get_to_ping( $post ); + $pinged = get_pung( $post ); + if ( empty( $to_ping ) ) { + $wpdb->update($wpdb->posts, array( 'to_ping' => '' ), array( 'ID' => $post->ID ) ); return; } @@ -2327,10 +2508,11 @@ function do_trackbacks($post_id) { 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); + 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) ); + $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s, + '')) WHERE ID = %d", $tb_ping, $post->ID ) ); } } } @@ -2361,21 +2543,28 @@ function generic_ping( $post_id = 0 ) { * Pings back the links found in a post. * * @since 0.71 + * @since 4.7.0 $post_id can be a WP_Post object. * - * @global string $wp_version - * - * @param string $content Post content to check for links. - * @param int $post_ID Post ID. + * @param string $content Post content to check for links. If empty will retrieve from post. + * @param int|WP_Post $post_id Post Object or ID. */ -function pingback($content, $post_ID) { - global $wp_version; - include_once(ABSPATH . WPINC . '/class-IXR.php'); - include_once(ABSPATH . WPINC . '/class-wp-http-ixr-client.php'); +function pingback( $content, $post_id ) { + include_once( ABSPATH . WPINC . '/class-IXR.php' ); + include_once( ABSPATH . WPINC . '/class-wp-http-ixr-client.php' ); // original code by Mort (http://mort.mine.nu:8080) $post_links = array(); - $pung = get_pung($post_ID); + $post = get_post( $post_id ); + if ( ! $post ) { + return; + } + + $pung = get_pung( $post ); + + if ( empty( $content ) ) { + $content = $post->post_content; + } // Step 1 // Parsing the post, external links (if any) are stored in the $post_links array @@ -2391,7 +2580,7 @@ function pingback($content, $post_ID) { // 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 + 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']) ) @@ -2412,7 +2601,7 @@ function pingback($content, $post_ID) { * @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 ) ); + 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 ); @@ -2420,7 +2609,7 @@ function pingback($content, $post_ID) { if ( $pingback_server_url ) { @ set_time_limit( 60 ); // Now, the RPC call - $pagelinkedfrom = get_permalink($post_ID); + $pagelinkedfrom = get_permalink( $post ); // using a timeout of 3 seconds should be enough to cover slow servers $client = new WP_HTTP_IXR_Client($pingback_server_url); @@ -2437,12 +2626,12 @@ function pingback($content, $post_ID) { * @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 ); + $client->useragent = apply_filters( 'pingback_useragent', $client->useragent . ' -- WordPress/' . get_bloginfo( 'version' ), $client->useragent, $pingback_server_url, $pagelinkedto, $pagelinkedfrom ); // when set to true, this outputs debug messages by itself $client->debug = false; if ( $client->query('pingback.ping', $pagelinkedfrom, $pagelinkedto) || ( isset($client->error->code) && 48 == $client->error->code ) ) // Already registered - add_ping( $post_ID, $pagelinkedto ); + add_ping( $post, $pagelinkedto ); } } } @@ -2506,20 +2695,17 @@ function trackback($trackback_url, $title, $excerpt, $ID) { * * @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'); + 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; + $client->useragent .= ' -- WordPress/' . get_bloginfo( 'version' ); // when set to true, this outputs debug messages by itself $client->debug = false; @@ -2741,7 +2927,7 @@ function _close_comments_for_old_post( $open, $post_id ) { function wp_handle_comment_submission( $comment_data ) { $comment_post_ID = $comment_parent = 0; - $comment_author = $comment_author_email = $comment_author_url = $comment_content = $_wp_unfiltered_html_comment = null; + $comment_author = $comment_author_email = $comment_author_url = $comment_content = null; if ( isset( $comment_data['comment_post_ID'] ) ) { $comment_post_ID = (int) $comment_data['comment_post_ID']; @@ -2761,9 +2947,6 @@ function wp_handle_comment_submission( $comment_data ) { if ( isset( $comment_data['comment_parent'] ) ) { $comment_parent = absint( $comment_data['comment_parent'] ); } - if ( isset( $comment_data['_wp_unfiltered_html_comment'] ) && is_string( $comment_data['_wp_unfiltered_html_comment'] ) ) { - $_wp_unfiltered_html_comment = trim( $comment_data['_wp_unfiltered_html_comment'] ); - } $post = get_post( $comment_post_ID ); @@ -2876,12 +3059,11 @@ function wp_handle_comment_submission( $comment_data ) { } } else { if ( get_option( 'comment_registration' ) ) { - return new WP_Error( 'not_logged_in', __( 'Sorry, you must be logged in to post a comment.' ), 403 ); + return new WP_Error( 'not_logged_in', __( 'Sorry, you must be logged in to comment.' ), 403 ); } } $comment_type = ''; - $max_lengths = wp_get_comment_fields_max_lengths(); if ( get_option( 'require_name_email' ) && ! $user->exists() ) { if ( 6 > strlen( $comment_author_email ) || '' == $comment_author ) { @@ -2891,22 +3073,8 @@ function wp_handle_comment_submission( $comment_data ) { } } - if ( isset( $comment_author ) && $max_lengths['comment_author'] < mb_strlen( $comment_author, '8bit' ) ) { - return new WP_Error( 'comment_author_column_length', __( 'ERROR: your name is too long.' ), 200 ); - } - - if ( isset( $comment_author_email ) && $max_lengths['comment_author_email'] < strlen( $comment_author_email ) ) { - return new WP_Error( 'comment_author_email_column_length', __( 'ERROR: your email address is too long.' ), 200 ); - } - - if ( isset( $comment_author_url ) && $max_lengths['comment_author_url'] < strlen( $comment_author_url ) ) { - return new WP_Error( 'comment_author_url_column_length', __( 'ERROR: your url is too long.' ), 200 ); - } - if ( '' == $comment_content ) { return new WP_Error( 'require_valid_comment', __( 'ERROR: please type a comment.' ), 200 ); - } elseif ( $max_lengths['comment_content'] < mb_strlen( $comment_content, '8bit' ) ) { - return new WP_Error( 'comment_content_column_length', __( 'ERROR: your comment is too long.' ), 200 ); } $commentdata = compact( @@ -2920,11 +3088,19 @@ function wp_handle_comment_submission( $comment_data ) { 'user_ID' ); - $comment_id = wp_new_comment( wp_slash( $commentdata ) ); + $check_max_lengths = wp_check_comment_data_max_lengths( $commentdata ); + if ( is_wp_error( $check_max_lengths ) ) { + return $check_max_lengths; + } + + $comment_id = wp_new_comment( wp_slash( $commentdata ), true ); + if ( is_wp_error( $comment_id ) ) { + return $comment_id; + } + if ( ! $comment_id ) { return new WP_Error( 'comment_save_error', __( 'ERROR: The comment could not be saved. Please try again later.' ), 500 ); } return get_comment( $comment_id ); - } diff --git a/wp/wp-includes/compat.php b/wp/wp-includes/compat.php index 696e2b8e..0ccee2d4 100644 --- a/wp/wp-includes/compat.php +++ b/wp/wp-includes/compat.php @@ -450,7 +450,7 @@ if ( ! function_exists( 'array_replace_recursive' ) ) : * * @since 4.5.3 * - * @see http://php.net/manual/en/function.array-replace-recursive.php#109390 + * @see https://secure.php.net/manual/en/function.array-replace-recursive.php#109390 * * @param array $base Array with keys needing to be replaced. * @param array $replacements Array with the replaced keys. diff --git a/wp/wp-includes/cron.php b/wp/wp-includes/cron.php index a4d160f7..f7e444b8 100644 --- a/wp/wp-includes/cron.php +++ b/wp/wp-includes/cron.php @@ -1,28 +1,28 @@ #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-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",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 .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:600}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:26px;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar .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 .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:focus,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus: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:"\f141";color:inherit}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{padding-right:2em;padding-left:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:1px;right:6px;content:"\f139"}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;left:auto;margin:0;-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:600;-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:#a0a5aa;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #82878c;background:#eee;line-height:24px;vertical-align:middle;margin:-4px 6px 0 0;float:none;display:inline}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>a img{width:auto}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .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 .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#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:"\f541";top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:"\f540";top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:"\f464";top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-left:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:"\f101";top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:"\f132";top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:"\f463";top:2px}#wpadminbar.ie8 #wp-admin-bar-search{display:block;min-width:32px}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;right:5px;z-index:20;font: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-size:13px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:24px;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:.4s;transition-duration:.4s;-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-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:600;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;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 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-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:32px}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:46px;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;padding:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .ab-label{display:none}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar #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:8px 16px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{padding:0;width:52px;height:46px;text-align:center;vertical-align:top}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{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:#a0a5aa;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-left:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font: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 .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-search{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:53px;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon: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 +#wpadminbar,#wpadminbar *{font-size:13px;font-weight:400;line-height:32px}#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",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 .ab-empty-item{cursor:default;outline:0}#wpadminbar .ab-empty-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#eee}#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wpadminbar ul li:after,#wpadminbar ul li:before{content:normal}#wpadminbar a,#wpadminbar a img,#wpadminbar a img:hover,#wpadminbar a:hover{outline:0;border:none;text-decoration:none;background:0 0}#wpadminbar a:active,#wpadminbar a:focus,#wpadminbar div,#wpadminbar input[type=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-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",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 .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:600}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:26px;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar .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 .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:focus,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#00b9eb}#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#b4b9be}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#00b9eb}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before,#wpadminbar .menupop .menupop>.ab-item:before{position:absolute;font: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:"\f141";color:inherit}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{padding-right:2em;padding-left:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:1px;right:6px;content:"\f139"}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;left:auto;margin:0;-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:600;-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:#a0a5aa;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #82878c;background:#eee;line-height:24px;vertical-align:middle;margin:-4px 6px 0 0;float:none;display:inline}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>a img{width:auto}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .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 .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#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:"\f541";top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:"\f540";top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:"\f464";top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-left:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:"\f101";top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:"\f132";top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:"\f463";top:2px}#wpadminbar.ie8 #wp-admin-bar-search{display:block;min-width:32px}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;right:5px;z-index:20;font: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-size:13px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:24px;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:.4s;transition-duration:.4s;-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-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:600;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;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 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-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:32px}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:46px;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;padding:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .ab-label{display:none}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar #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:8px 16px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{padding:0;width:52px;height:46px;text-align:center;vertical-align:top}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{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:#a0a5aa;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-left:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font: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 .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-search{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:53px;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon: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/wp-includes/css/admin-bar.css b/wp/wp-includes/css/admin-bar.css index 573ff8d8..e108a8e6 100644 --- a/wp/wp-includes/css/admin-bar.css +++ b/wp/wp-includes/css/admin-bar.css @@ -294,6 +294,7 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar li:hover .ab-item:before, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, diff --git a/wp/wp-includes/css/admin-bar.min.css b/wp/wp-includes/css/admin-bar.min.css index abb1b4d8..68665fc6 100644 --- a/wp/wp-includes/css/admin-bar.min.css +++ b/wp/wp-includes/css/admin-bar.min.css @@ -1 +1 @@ -#wpadminbar,#wpadminbar *{font-size:13px;font-weight:400;line-height:32px}#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",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 .ab-empty-item{cursor:default;outline:0}#wpadminbar .ab-empty-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#eee}#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wpadminbar ul li:after,#wpadminbar ul li:before{content:normal}#wpadminbar a,#wpadminbar a img,#wpadminbar a img:hover,#wpadminbar a:hover{outline:0;border:none;text-decoration:none;background:0 0}#wpadminbar a:active,#wpadminbar a:focus,#wpadminbar div,#wpadminbar input[type=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-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",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 .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:600}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:26px;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar .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 .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:focus,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus: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:1px;left:6px;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:600;-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:#a0a5aa;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #82878c;background:#eee;line-height:24px;vertical-align:middle;margin:-4px 0 0 6px;float:none;display:inline}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>a img{width:auto}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .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 .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#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:"\f541";top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:"\f540";top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:"\f464";top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-right:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:"\f101";top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:"\f132";top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:"\f463";top:2px}#wpadminbar.ie8 #wp-admin-bar-search{display:block;min-width:32px}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;left:5px;z-index:20;font: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-size:13px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:24px;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:.4s;transition-duration:.4s;-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-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:600;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;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 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-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:32px}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:46px;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;padding:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .ab-label{display:none}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar #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:8px 16px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{padding:0;width:52px;height:46px;text-align:center;vertical-align:top}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{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:#a0a5aa;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-right:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font: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 .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-search{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:53px;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon: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 +#wpadminbar,#wpadminbar *{font-size:13px;font-weight:400;line-height:32px}#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",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 .ab-empty-item{cursor:default;outline:0}#wpadminbar .ab-empty-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#eee}#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wpadminbar ul li:after,#wpadminbar ul li:before{content:normal}#wpadminbar a,#wpadminbar a img,#wpadminbar a img:hover,#wpadminbar a:hover{outline:0;border:none;text-decoration:none;background:0 0}#wpadminbar a:active,#wpadminbar a:focus,#wpadminbar div,#wpadminbar input[type=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-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",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 .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:600}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:26px;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar .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 .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:focus,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#00b9eb}#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#b4b9be}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#00b9eb}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before,#wpadminbar .menupop .menupop>.ab-item:before{position:absolute;font: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:1px;left:6px;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:600;-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:#a0a5aa;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #82878c;background:#eee;line-height:24px;vertical-align:middle;margin:-4px 0 0 6px;float:none;display:inline}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>a img{width:auto}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .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 .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#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:"\f541";top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:"\f540";top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:"\f464";top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-right:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:"\f101";top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:"\f132";top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:"\f463";top:2px}#wpadminbar.ie8 #wp-admin-bar-search{display:block;min-width:32px}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;left:5px;z-index:20;font: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-size:13px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:24px;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:.4s;transition-duration:.4s;-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-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:600;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;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 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-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:32px}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:46px;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;padding:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .ab-label{display:none}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar #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:8px 16px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{padding:0;width:52px;height:46px;text-align:center;vertical-align:top}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{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:#a0a5aa;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-right:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font: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 .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-search{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:53px;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon: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/wp-includes/css/customize-preview-rtl.css b/wp/wp-includes/css/customize-preview-rtl.css new file mode 100644 index 00000000..cce4e4e1 --- /dev/null +++ b/wp/wp-includes/css/customize-preview-rtl.css @@ -0,0 +1,267 @@ +.customize-partial-refreshing { + opacity: 0.25; + -webkit-transition: opacity 0.25s; + transition: opacity 0.25s; + cursor: progress; +} + +/* Override highlight when refreshing */ +.customize-partial-refreshing.widget-customizer-highlighted-widget { + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Make shortcut buttons essentially invisible */ +.widget .customize-partial-edit-shortcut, +.customize-partial-edit-shortcut { + position: absolute; + float: right; + width: 1px; /* required to have a size to be focusable in Safari */ + height: 1px; + padding: 0; + margin: -1px -1px 0 0; + border: 0; + background: transparent; + color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + outline: none; + z-index: 5; +} + +/** + * Styles for the actual shortcut + * + * Note that some properties are overly verbose to prevent theme interference. + */ +.widget .customize-partial-edit-shortcut button, +.customize-partial-edit-shortcut button { + position: absolute; + right: -30px; + top: 2px; + color: #fff; + width: 30px; + height: 30px; + min-width: 30px; + min-height: 30px; + line-height: 1em !important; + font-size: 18px; + z-index: 5; + background: #0085ba !important; + -webkit-border-radius: 50%; + border-radius: 50%; + border: 2px solid #fff; + -webkit-box-shadow: 0 2px 1px rgba(46,68,83,0.15); + box-shadow: 0 2px 1px rgba(46,68,83,0.15); + text-align: center; + cursor: pointer; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 3px; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .4s; + animation-duration: .4s; + opacity: 0; + pointer-events: none; + text-shadow: 0 -1px 1px #006799, + -1px 0 1px #006799, + 0 1px 1px #006799, + 1px 0 1px #006799; +} +.wp-custom-header .customize-partial-edit-shortcut button { + right: 2px +} + +.customize-partial-edit-shortcut button svg { + fill: #fff; + min-width: 20px; + min-height: 20px; + width: 20px; + height: 20px; + margin: auto; +} + +.customize-partial-edit-shortcut button:hover { + background: #008ec2 !important; /* matches primary buttons */ +} + +.customize-partial-edit-shortcut button:focus { + -webkit-box-shadow: 0 0 0 2px #008ec2; + box-shadow: 0 0 0 2px #008ec2; +} + +body.customize-partial-edit-shortcuts-shown .customize-partial-edit-shortcut button { + -webkit-animation-name: customize-partial-edit-shortcut-bounce-appear; + animation-name: customize-partial-edit-shortcut-bounce-appear; + pointer-events: auto; +} +body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut button { + -webkit-animation-name: customize-partial-edit-shortcut-bounce-disappear; + animation-name: customize-partial-edit-shortcut-bounce-disappear; + pointer-events: none; +} + +.page-sidebar-collapsed .customize-partial-edit-shortcut button, +.customize-partial-edit-shortcut-hidden .customize-partial-edit-shortcut button { + visibility: hidden; +} + +@-webkit-keyframes customize-partial-edit-shortcut-bounce-appear { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + 40% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + 80% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes customize-partial-edit-shortcut-bounce-appear { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + 40% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + 80% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@-webkit-keyframes customize-partial-edit-shortcut-bounce-disappear { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + 0% { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 20% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + 40% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + 60% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + to { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } +} + +@keyframes customize-partial-edit-shortcut-bounce-disappear { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + 0% { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 20% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + 40% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + 60% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + to { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } +} + +@media screen and (max-width:800px) { + .widget .customize-partial-edit-shortcut button, + .customize-partial-edit-shortcut button { + right: -32px; + } +} + +@media screen and (max-width:320px) { + body.customize-partial-edit-shortcuts-shown .site-title { + padding-right: 10px; + } + + body.customize-partial-edit-shortcuts-shown .widget-area .widget { + padding-right: 10px; + } + + .widget .customize-partial-edit-shortcut button, + .customize-partial-edit-shortcut button { + right: -30px; + } +} diff --git a/wp/wp-includes/css/customize-preview-rtl.min.css b/wp/wp-includes/css/customize-preview-rtl.min.css new file mode 100644 index 00000000..8f8c4219 --- /dev/null +++ b/wp/wp-includes/css/customize-preview-rtl.min.css @@ -0,0 +1 @@ +.customize-partial-refreshing{opacity:.25;-webkit-transition:opacity .25s;transition:opacity .25s;cursor:progress}.customize-partial-refreshing.widget-customizer-highlighted-widget{-webkit-box-shadow:none;box-shadow:none}.customize-partial-edit-shortcut,.widget .customize-partial-edit-shortcut{position:absolute;float:right;width:1px;height:1px;padding:0;margin:-1px -1px 0 0;border:0;background:0 0;color:transparent;-webkit-box-shadow:none;box-shadow:none;outline:0;z-index:5}.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{position:absolute;right:-30px;top:2px;color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;line-height:1em!important;font-size:18px;z-index:5;background:#0085ba!important;-webkit-border-radius:50%;border-radius:50%;border:2px solid #fff;-webkit-box-shadow:0 2px 1px rgba(46,68,83,.15);box-shadow:0 2px 1px rgba(46,68,83,.15);text-align:center;cursor:pointer;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:3px;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.4s;animation-duration:.4s;opacity:0;pointer-events:none;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.wp-custom-header .customize-partial-edit-shortcut button{right:2px}.customize-partial-edit-shortcut button svg{fill:#fff;min-width:20px;min-height:20px;width:20px;height:20px;margin:auto}.customize-partial-edit-shortcut button:hover{background:#008ec2!important}.customize-partial-edit-shortcut button:focus{-webkit-box-shadow:0 0 0 2px #008ec2;box-shadow:0 0 0 2px #008ec2}body.customize-partial-edit-shortcuts-shown .customize-partial-edit-shortcut button{-webkit-animation-name:customize-partial-edit-shortcut-bounce-appear;animation-name:customize-partial-edit-shortcut-bounce-appear;pointer-events:auto}body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut button{-webkit-animation-name:customize-partial-edit-shortcut-bounce-disappear;animation-name:customize-partial-edit-shortcut-bounce-disappear;pointer-events:none}.customize-partial-edit-shortcut-hidden .customize-partial-edit-shortcut button,.page-sidebar-collapsed .customize-partial-edit-shortcut button{visibility:hidden}@-webkit-keyframes customize-partial-edit-shortcut-bounce-appear{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes customize-partial-edit-shortcut-bounce-appear{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes customize-partial-edit-shortcut-bounce-disappear{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}20%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}40%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}80%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes customize-partial-edit-shortcut-bounce-disappear{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}20%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}40%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}80%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@media screen and (max-width:800px){.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{right:-32px}}@media screen and (max-width:320px){body.customize-partial-edit-shortcuts-shown .site-title,body.customize-partial-edit-shortcuts-shown .widget-area .widget{padding-right:10px}.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{right:-30px}} \ No newline at end of file diff --git a/wp/wp-includes/css/customize-preview.css b/wp/wp-includes/css/customize-preview.css index 75251ea9..1a5067ff 100644 --- a/wp/wp-includes/css/customize-preview.css +++ b/wp/wp-includes/css/customize-preview.css @@ -10,3 +10,258 @@ -webkit-box-shadow: none; box-shadow: none; } + +/* Make shortcut buttons essentially invisible */ +.widget .customize-partial-edit-shortcut, +.customize-partial-edit-shortcut { + position: absolute; + float: left; + width: 1px; /* required to have a size to be focusable in Safari */ + height: 1px; + padding: 0; + margin: -1px 0 0 -1px; + border: 0; + background: transparent; + color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + outline: none; + z-index: 5; +} + +/** + * Styles for the actual shortcut + * + * Note that some properties are overly verbose to prevent theme interference. + */ +.widget .customize-partial-edit-shortcut button, +.customize-partial-edit-shortcut button { + position: absolute; + left: -30px; + top: 2px; + color: #fff; + width: 30px; + height: 30px; + min-width: 30px; + min-height: 30px; + line-height: 1em !important; + font-size: 18px; + z-index: 5; + background: #0085ba !important; + -webkit-border-radius: 50%; + border-radius: 50%; + border: 2px solid #fff; + -webkit-box-shadow: 0 2px 1px rgba(46,68,83,0.15); + box-shadow: 0 2px 1px rgba(46,68,83,0.15); + text-align: center; + cursor: pointer; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 3px; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .4s; + animation-duration: .4s; + opacity: 0; + pointer-events: none; + text-shadow: 0 -1px 1px #006799, + 1px 0 1px #006799, + 0 1px 1px #006799, + -1px 0 1px #006799; +} +.wp-custom-header .customize-partial-edit-shortcut button { + left: 2px +} + +.customize-partial-edit-shortcut button svg { + fill: #fff; + min-width: 20px; + min-height: 20px; + width: 20px; + height: 20px; + margin: auto; +} + +.customize-partial-edit-shortcut button:hover { + background: #008ec2 !important; /* matches primary buttons */ +} + +.customize-partial-edit-shortcut button:focus { + -webkit-box-shadow: 0 0 0 2px #008ec2; + box-shadow: 0 0 0 2px #008ec2; +} + +body.customize-partial-edit-shortcuts-shown .customize-partial-edit-shortcut button { + -webkit-animation-name: customize-partial-edit-shortcut-bounce-appear; + animation-name: customize-partial-edit-shortcut-bounce-appear; + pointer-events: auto; +} +body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut button { + -webkit-animation-name: customize-partial-edit-shortcut-bounce-disappear; + animation-name: customize-partial-edit-shortcut-bounce-disappear; + pointer-events: none; +} + +.page-sidebar-collapsed .customize-partial-edit-shortcut button, +.customize-partial-edit-shortcut-hidden .customize-partial-edit-shortcut button { + visibility: hidden; +} + +@-webkit-keyframes customize-partial-edit-shortcut-bounce-appear { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + 40% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + 80% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes customize-partial-edit-shortcut-bounce-appear { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + 40% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + 80% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@-webkit-keyframes customize-partial-edit-shortcut-bounce-disappear { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + 0% { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 20% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + 40% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + 60% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + to { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } +} + +@keyframes customize-partial-edit-shortcut-bounce-disappear { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + 0% { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 20% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + 40% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + 60% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + to { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } +} + +@media screen and (max-width:800px) { + .widget .customize-partial-edit-shortcut button, + .customize-partial-edit-shortcut button { + left: -32px; + } +} + +@media screen and (max-width:320px) { + body.customize-partial-edit-shortcuts-shown .site-title { + padding-left: 10px; + } + + body.customize-partial-edit-shortcuts-shown .widget-area .widget { + padding-left: 10px; + } + + .widget .customize-partial-edit-shortcut button, + .customize-partial-edit-shortcut button { + left: -30px; + } +} diff --git a/wp/wp-includes/css/customize-preview.min.css b/wp/wp-includes/css/customize-preview.min.css index f2613499..529d443a 100644 --- a/wp/wp-includes/css/customize-preview.min.css +++ b/wp/wp-includes/css/customize-preview.min.css @@ -1 +1 @@ -.customize-partial-refreshing{opacity:.25;-webkit-transition:opacity .25s;transition:opacity .25s;cursor:progress}.customize-partial-refreshing.widget-customizer-highlighted-widget{-webkit-box-shadow:none;box-shadow:none} \ No newline at end of file +.customize-partial-refreshing{opacity:.25;-webkit-transition:opacity .25s;transition:opacity .25s;cursor:progress}.customize-partial-refreshing.widget-customizer-highlighted-widget{-webkit-box-shadow:none;box-shadow:none}.customize-partial-edit-shortcut,.widget .customize-partial-edit-shortcut{position:absolute;float:left;width:1px;height:1px;padding:0;margin:-1px 0 0 -1px;border:0;background:0 0;color:transparent;-webkit-box-shadow:none;box-shadow:none;outline:0;z-index:5}.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{position:absolute;left:-30px;top:2px;color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;line-height:1em!important;font-size:18px;z-index:5;background:#0085ba!important;-webkit-border-radius:50%;border-radius:50%;border:2px solid #fff;-webkit-box-shadow:0 2px 1px rgba(46,68,83,.15);box-shadow:0 2px 1px rgba(46,68,83,.15);text-align:center;cursor:pointer;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:3px;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.4s;animation-duration:.4s;opacity:0;pointer-events:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.wp-custom-header .customize-partial-edit-shortcut button{left:2px}.customize-partial-edit-shortcut button svg{fill:#fff;min-width:20px;min-height:20px;width:20px;height:20px;margin:auto}.customize-partial-edit-shortcut button:hover{background:#008ec2!important}.customize-partial-edit-shortcut button:focus{-webkit-box-shadow:0 0 0 2px #008ec2;box-shadow:0 0 0 2px #008ec2}body.customize-partial-edit-shortcuts-shown .customize-partial-edit-shortcut button{-webkit-animation-name:customize-partial-edit-shortcut-bounce-appear;animation-name:customize-partial-edit-shortcut-bounce-appear;pointer-events:auto}body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut button{-webkit-animation-name:customize-partial-edit-shortcut-bounce-disappear;animation-name:customize-partial-edit-shortcut-bounce-disappear;pointer-events:none}.customize-partial-edit-shortcut-hidden .customize-partial-edit-shortcut button,.page-sidebar-collapsed .customize-partial-edit-shortcut button{visibility:hidden}@-webkit-keyframes customize-partial-edit-shortcut-bounce-appear{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes customize-partial-edit-shortcut-bounce-appear{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes customize-partial-edit-shortcut-bounce-disappear{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}20%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}40%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}80%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes customize-partial-edit-shortcut-bounce-disappear{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}20%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}40%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}80%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@media screen and (max-width:800px){.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{left:-32px}}@media screen and (max-width:320px){body.customize-partial-edit-shortcuts-shown .site-title,body.customize-partial-edit-shortcuts-shown .widget-area .widget{padding-left:10px}.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{left:-30px}} \ No newline at end of file diff --git a/wp/wp-includes/css/editor-rtl.css b/wp/wp-includes/css/editor-rtl.css index e57805ff..99dda5e7 100644 --- a/wp/wp-includes/css/editor-rtl.css +++ b/wp/wp-includes/css/editor-rtl.css @@ -12,6 +12,13 @@ font-family: inherit; } +.mce-container .mce-monospace, +.mce-widget .mce-monospace { + font-family: Consolas, Monaco, monospace; + font-size: 13px; + line-height: 150%; +} + /* TinyMCE windows */ #mce-modal-block, #mce-modal-block.mce-fade { @@ -581,6 +588,7 @@ div.mce-path { .mce-menu .mce-menu-item-normal.mce-active, .mce-menu .mce-menu-item-preview.mce-active { background: #0073aa; /* See color scheme. */ + color: #fff; } .mce-menu .mce-menu-item-preview.mce-active { @@ -643,6 +651,16 @@ div.mce-menu .mce-menu-item-sep, margin-right: -2px; } +/* Keyboard shortcuts position */ +.mce-menu.mce-menu-align .mce-menu-item-normal { + position: relative; +} + +.mce-menu.mce-menu-align .mce-menu-shortcut { + bottom: 0.6em; + font-size: 0.9em; +} + /* Buttons in modals */ .mce-primary button, .mce-primary button i { @@ -840,6 +858,11 @@ div.mce-menu .mce-menu-item-sep, border-right-color: #23282d; } +div.mce-notification { + right: 10% !important; + left: 10%; +} + .mce-notification button.mce-close { left: 6px; top: 3px; @@ -1147,7 +1170,7 @@ i.mce-i-wp_code:before { } .js .tmce-active .wp-editor-area { - color: white; + color: #fff; } .tmce-active .quicktags-toolbar { @@ -1304,7 +1327,7 @@ i.mce-i-wp_code:before { @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. */ + /* .button-small is normally 11px, but a bit too small for these buttons. */ font-size: 12px; height: 26px; line-height: 24px; diff --git a/wp/wp-includes/css/editor-rtl.min.css b/wp/wp-includes/css/editor-rtl.min.css index 0c84b677..21b6a6ef 100644 --- a/wp/wp-includes/css/editor-rtl.min.css +++ b/wp/wp-includes/css/editor-rtl.min.css @@ -1 +1 @@ -#wp-link-wrap,.mce-window{-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3)}.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;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 #ddd;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#444;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 16px 0 36px}.mce-window .mce-window-head .mce-close,.mce-window-head .mce-close .mce-i-remove{color:transparent;top:0;left:0;width:36px;height:36px;padding:0;line-height:36px;text-align:center}.mce-window-head .mce-close .mce-i-remove:before{font:400 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window-head .mce-close:focus .mce-i-remove:before,.mce-window-head .mce-close:hover .mce-i-remove:before{color:#00a0d2}.mce-window-head .mce-close:focus .mce-i-remove,div.mce-tab:focus{-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-window-head .mce-dragh{width:-webkit-calc(100% - 36px);width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #ddd}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;-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 table.wp-help-single{margin:0 8px 20px}.mce-window .wp-editor-help table.fixed{table-layout:fixed}.mce-window .wp-editor-help table.fixed td:nth-child(odd),.mce-window .wp-editor-help table.fixed th:nth-child(odd){width:12%}.mce-window .wp-editor-help table.fixed td:nth-child(even),.mce-window .wp-editor-help table.fixed th:nth-child(even){width:38%}.mce-window .wp-editor-help table.fixed th:nth-child(odd){padding:5px 0 0}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:600;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:600;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);-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 #ddd;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);-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}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:""}.quicktags-toolbar,.wp-editor-tools,.wp-editor-wrap,.wp-switch-editor{position:relative}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a0a5aa;border-width:0 9px 9px;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a0a5aa;border-width:9px 9px 0;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f5f5f5;border-width:0 8px 8px;margin-right:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f5f5f5;border-width:8px 8px 0;margin-right:-8px}div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{right:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-full{left:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:32px}.mce-toolbar .mce-btn-group{margin:0}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px;margin:0}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;cursor:pointer}.mce-btn .mce-txt{direction:inherit;text-align:inherit}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;-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:#555d66;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:#555d66;-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:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#23282d}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a0a5aa;background:0 0;border-color:#ddd;text-shadow:0 1px 0 #fff;-webkit-box-shadow:none;box-shadow:none}.mce-menu .mce-menu-item-preview.mce-active .mce-text,.mce-toolbar .mce-btn-group .mce-btn.mce-primary .mce-ico{color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus{border-color:#555d66}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:20px;padding-right:6px;padding-left:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-left:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;right:3px;height:3px;width:20px;background:#555d66}.mce-toolbar .mce-btn-group .mce-btn.mce-primary{min-width:0;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:2px 3px 1px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus{-webkit-box-shadow:0 0 1px 1px #33b3db;box-shadow:0 0 1px 1px #33b3db}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799}.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:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #555d66;margin-right:2px;margin-left:2px}.mce-listbox i.mce-caret{left:4px}.mce-panel .mce-btn:focus i.mce-caret,.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#23282d}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #23282d;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-left-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item-normal.mce-active,.mce-menu .mce-menu-item-preview.mce-active,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#0073aa}.mce-menu .mce-menu-item-preview.mce-active{border-right:none}.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:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc}.mce-window .mce-btn::-moz-focus-inner{border-width:0;border-style:none;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;-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);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.mce-window .mce-btn.mce-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;-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.mce-window .mce-btn.mce-primary{background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-window .mce-btn.mce-primary:focus{-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.mce-window .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#66c6e4!important;background:#008ec2!important;border-color:#007cb2!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.mce-toolbar .mce-ico,.qt-dfw{text-shadow:none;text-align:center}.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:#ddd;cursor:pointer}.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:#555d66;line-height:20px;width:20px;height:20px;margin:0;padding:0}.qt-dfw{color:#555d66;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:#23282d}.mce-notification button.mce-close{left:6px;top:3px;font-weight:400;color:#555d66}.mce-notification button.mce-close:focus,.mce-notification button.mce-close:hover{color:#000}i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-remove,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font: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"}i.mce-i-remove:before{content:"\f158"}i.mce-i-wp_code:before{content:"\f475"}.rtl i.mce-i-outdent:before{content:"\f222"}.rtl i.mce-i-indent:before{content:"\f221"}.wp-editor-tools{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;-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;top:1px;background:#ebebeb;color:#666;cursor:pointer;font-size:13px;line-height:19px;height:20px;margin:5px 5px 0 0;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{-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:#444;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:18px;height:18px;vertical-align:text-top;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f104"}.quicktags-toolbar{padding:3px;border-bottom:1px solid #ddd;background:#f5f5f5;min-height:30px}.has-dfw .quicktags-toolbar{padding-left:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.quicktags-toolbar input[value=link]{text-decoration:underline}.quicktags-toolbar input[value=del]{text-decoration:line-through}.quicktags-toolbar input[value="i"]{font-style:italic}.quicktags-toolbar input[value="b"]{font-weight:600}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;left:0;margin:5px 0 0 5px}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:6px 7px 5px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 0 0 4px}.mce-toolbar .mce-colorbutton .mce-preview{right:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;height:26px;line-height:24px}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-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;box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-right:-250px;position:fixed;top:50%;right:50%;z-index:100105;-webkit-transition:height .2s,margin-top .2s;transition:height .2s,margin-top .2s;height:500px;margin-top:-250px}#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 .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fcfcfc;border-bottom:1px solid #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 16px 0 36px}#wp-link-close{color:#666;padding:0;position:absolute;top:0;left:0;width:36px;height:36px;text-align:center;background:0 0;border:none;cursor:pointer}#wp-link-close:before{font:400 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:36px;height:36px;content:"\f158"}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;-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-link-wrap #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:37px;right:0;left:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type=text]{-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 0 12px;background:#fff;overflow:auto;position:absolute;right:16px;left:16px;bottom:0;top:166px}.has-text-field #wp-link .query-results{top:200px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 10px 4px 6px;cursor:pointer;position:relative}#wp-link .query-notice,#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:600}#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 .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #ddd;position:absolute;bottom:0;right:0;left:0}#wp-link-cancel{line-height:25px;float:right}#wp-link-update{line-height:23px;float:left}#wp-link-submit{float:left}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap .query-results{top:195px}#wp-link-wrap.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}#wp-link .link-target{padding-top:10px}#wp-link .submitbox .button{margin-bottom:0}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-right:0;right:10px;left:10px;max-width:500px}}@media screen and (max-height:520px){#wp-link-wrap{-webkit-transition:none;transition:none;height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto}#search-panel .query-results{position:static}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:-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}div.wp-link-preview a.wplink-url-error{color:#dc3232}div.wp-link-input{float:right;margin:2px;max-width:694px}div.wp-link-input input{width:300px;padding:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mce-toolbar div.wp-link-input~.mce-btn,.mce-toolbar div.wp-link-preview~.mce-btn{margin:2px 1px}.mce-inline-toolbar-grp .mce-btn-group .mce-btn:last-child{margin-left:2px}.ui-autocomplete.wplink-autocomplete{z-index:100110;max-height:200px;overflow-y:auto;padding:0;margin:0;list-style:none;position:absolute;border:1px solid #5b9dd9;-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.wplink-autocomplete li{margin-bottom:0;padding:4px 10px;clear:both;white-space:normal;text-align:right}.ui-autocomplete.wplink-autocomplete li .wp-editor-float-right{float:left}.ui-autocomplete.wplink-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}@media screen and (max-width:782px){div.wp-link-input,div.wp-link-preview{max-width:70%;max-width:-webkit-calc(100% - 86px);max-width:calc(100% - 86px)}div.wp-link-preview{margin:8px 5px 8px 0}div.wp-link-input{width:300px}div.wp-link-input input{width:100%;font-size:16px;padding:5px}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}} \ No newline at end of file +#wp-link-wrap,.mce-window{-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3)}.mce-window .mce-wp-help *,div.mce-inline-toolbar-grp{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}.mce-container .mce-monospace,.mce-widget .mce-monospace{font-family:Consolas,Monaco,monospace;font-size:13px;line-height:150%}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);-webkit-transition:none;transition:none}.mce-window{-webkit-border-radius:0;border-radius:0;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 #ddd;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#444;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 16px 0 36px}.mce-window .mce-window-head .mce-close,.mce-window-head .mce-close .mce-i-remove{color:transparent;top:0;left:0;width:36px;height:36px;padding:0;line-height:36px;text-align:center}.mce-window-head .mce-close .mce-i-remove:before{font:400 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window-head .mce-close:focus .mce-i-remove:before,.mce-window-head .mce-close:hover .mce-i-remove:before{color:#00a0d2}.mce-window-head .mce-close:focus .mce-i-remove,div.mce-tab:focus{-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-window-head .mce-dragh{width:-webkit-calc(100% - 36px);width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #ddd}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;-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 *{box-sizing:border-box}.mce-window .mce-wp-help>.mce-container-body{width:auto!important}.mce-window .wp-editor-help{padding:10px 20px 0 10px}.mce-window .wp-editor-help h2,.mce-window .wp-editor-help p{margin:8px 0;white-space:normal;font-size:14px;font-weight:400}.mce-window .wp-editor-help table{width:100%;margin-bottom:20px}.mce-window .wp-editor-help table.wp-help-single{margin:0 8px 20px}.mce-window .wp-editor-help table.fixed{table-layout:fixed}.mce-window .wp-editor-help table.fixed td:nth-child(odd),.mce-window .wp-editor-help table.fixed th:nth-child(odd){width:12%}.mce-window .wp-editor-help table.fixed td:nth-child(even),.mce-window .wp-editor-help table.fixed th:nth-child(even){width:38%}.mce-window .wp-editor-help table.fixed th:nth-child(odd){padding:5px 0 0}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:600;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:600;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);-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 #ddd;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}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:""}.mce-menu.mce-menu-align .mce-menu-item-normal,.quicktags-toolbar,.wp-editor-tools,.wp-editor-wrap,.wp-switch-editor{position:relative}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a0a5aa;border-width:0 9px 9px;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a0a5aa;border-width:9px 9px 0;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f5f5f5;border-width:0 8px 8px;margin-right:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f5f5f5;border-width:8px 8px 0;margin-right:-8px}div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{right:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-full{left:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:32px}.mce-toolbar .mce-btn-group{margin:0}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px;margin:0}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;cursor:pointer}.mce-btn .mce-txt{direction:inherit;text-align:inherit}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;-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:#555d66;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:#555d66;-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:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#23282d}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a0a5aa;background:0 0;border-color:#ddd;text-shadow:0 1px 0 #fff;-webkit-box-shadow:none;box-shadow:none}.mce-menu .mce-menu-item-preview.mce-active .mce-text,.mce-toolbar .mce-btn-group .mce-btn.mce-primary .mce-ico{color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus{border-color:#555d66}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:20px;padding-right:6px;padding-left:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-left:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;right:3px;height:3px;width:20px;background:#555d66}.mce-toolbar .mce-btn-group .mce-btn.mce-primary{min-width:0;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:2px 3px 1px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus{-webkit-box-shadow:0 0 1px 1px #33b3db;box-shadow:0 0 1px 1px #33b3db}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799}.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:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #555d66;margin-right:2px;margin-left:2px}.mce-listbox i.mce-caret{left:4px}.mce-panel .mce-btn:focus i.mce-caret,.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#23282d}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #23282d;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-left-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item-normal.mce-active,.mce-menu .mce-menu-item-preview.mce-active,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#0073aa;color:#fff}.mce-menu .mce-menu-item-preview.mce-active{border-right:none}.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-menu.mce-menu-align .mce-menu-shortcut{bottom:.6em;font-size:.9em}.mce-primary button,.mce-primary button i{text-align:center;color:#fff;text-shadow:none;padding:0;line-height:26px}.mce-window .mce-btn{color:#555;background:#f7f7f7;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0;cursor:pointer;border:1px solid #ccc;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc}.mce-window .mce-btn::-moz-focus-inner{border-width:0;border-style:none;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;-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);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.mce-window .mce-btn.mce-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;-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.mce-window .mce-btn.mce-primary{background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-window .mce-btn.mce-primary:focus{-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.mce-window .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#66c6e4!important;background:#008ec2!important;border-color:#007cb2!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.mce-toolbar .mce-ico,.qt-dfw{text-shadow:none;text-align:center}.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:#ddd;cursor:pointer}.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:#555d66;line-height:20px;width:20px;height:20px;margin:0;padding:0}.qt-dfw{color:#555d66;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:#23282d}div.mce-notification{right:10%!important;left:10%}.mce-notification button.mce-close{left:6px;top:3px;font-weight:400;color:#555d66}.mce-notification button.mce-close:focus,.mce-notification button.mce-close:hover{color:#000}i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-remove,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font: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"}i.mce-i-remove:before{content:"\f158"}i.mce-i-wp_code:before{content:"\f475"}.rtl i.mce-i-outdent:before{content:"\f222"}.rtl i.mce-i-indent:before{content:"\f221"}.wp-editor-tools{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;-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;top:1px;background:#ebebeb;color:#666;cursor:pointer;font-size:13px;line-height:19px;height:20px;margin:5px 5px 0 0;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{-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:#444;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:18px;height:18px;vertical-align:text-top;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f104"}.quicktags-toolbar{padding:3px;border-bottom:1px solid #ddd;background:#f5f5f5;min-height:30px}.has-dfw .quicktags-toolbar{padding-left:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.quicktags-toolbar input[value=link]{text-decoration:underline}.quicktags-toolbar input[value=del]{text-decoration:line-through}.quicktags-toolbar input[value="i"]{font-style:italic}.quicktags-toolbar input[value="b"]{font-weight:600}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;left:0;margin:5px 0 0 5px}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:6px 7px 5px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 0 0 4px}.mce-toolbar .mce-colorbutton .mce-preview{right:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;height:26px;line-height:24px}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-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;box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-right:-250px;position:fixed;top:50%;right:50%;z-index:100105;-webkit-transition:height .2s,margin-top .2s;transition:height .2s,margin-top .2s;height:500px;margin-top:-250px}#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 .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fcfcfc;border-bottom:1px solid #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 16px 0 36px}#wp-link-close{color:#666;padding:0;position:absolute;top:0;left:0;width:36px;height:36px;text-align:center;background:0 0;border:none;cursor:pointer}#wp-link-close:before{font:400 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:36px;height:36px;content:"\f158"}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;-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-link-wrap #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:37px;right:0;left:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type=text]{-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 0 12px;background:#fff;overflow:auto;position:absolute;right:16px;left:16px;bottom:0;top:166px}.has-text-field #wp-link .query-results{top:200px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 10px 4px 6px;cursor:pointer;position:relative}#wp-link .query-notice,#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:600}#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 .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #ddd;position:absolute;bottom:0;right:0;left:0}#wp-link-cancel{line-height:25px;float:right}#wp-link-update{line-height:23px;float:left}#wp-link-submit{float:left}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap .query-results{top:195px}#wp-link-wrap.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}#wp-link .link-target{padding-top:10px}#wp-link .submitbox .button{margin-bottom:0}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-right:0;right:10px;left:10px;max-width:500px}}@media screen and (max-height:520px){#wp-link-wrap{-webkit-transition:none;transition:none;height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto}#search-panel .query-results{position:static}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:-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}div.wp-link-preview a.wplink-url-error{color:#dc3232}div.wp-link-input{float:right;margin:2px;max-width:694px}div.wp-link-input input{width:300px;padding:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mce-toolbar div.wp-link-input~.mce-btn,.mce-toolbar div.wp-link-preview~.mce-btn{margin:2px 1px}.mce-inline-toolbar-grp .mce-btn-group .mce-btn:last-child{margin-left:2px}.ui-autocomplete.wplink-autocomplete{z-index:100110;max-height:200px;overflow-y:auto;padding:0;margin:0;list-style:none;position:absolute;border:1px solid #5b9dd9;-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.wplink-autocomplete li{margin-bottom:0;padding:4px 10px;clear:both;white-space:normal;text-align:right}.ui-autocomplete.wplink-autocomplete li .wp-editor-float-right{float:left}.ui-autocomplete.wplink-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}@media screen and (max-width:782px){div.wp-link-input,div.wp-link-preview{max-width:70%;max-width:-webkit-calc(100% - 86px);max-width:calc(100% - 86px)}div.wp-link-preview{margin:8px 5px 8px 0}div.wp-link-input{width:300px}div.wp-link-input input{width:100%;font-size:16px;padding:5px}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}} \ No newline at end of file diff --git a/wp/wp-includes/css/editor.css b/wp/wp-includes/css/editor.css index fa5e71a7..e04317ec 100644 --- a/wp/wp-includes/css/editor.css +++ b/wp/wp-includes/css/editor.css @@ -12,6 +12,13 @@ font-family: inherit; } +.mce-container .mce-monospace, +.mce-widget .mce-monospace { + font-family: Consolas, Monaco, monospace; + font-size: 13px; + line-height: 150%; +} + /* TinyMCE windows */ #mce-modal-block, #mce-modal-block.mce-fade { @@ -581,6 +588,7 @@ div.mce-path { .mce-menu .mce-menu-item-normal.mce-active, .mce-menu .mce-menu-item-preview.mce-active { background: #0073aa; /* See color scheme. */ + color: #fff; } .mce-menu .mce-menu-item-preview.mce-active { @@ -643,6 +651,16 @@ div.mce-menu .mce-menu-item-sep, margin-left: -2px; } +/* Keyboard shortcuts position */ +.mce-menu.mce-menu-align .mce-menu-item-normal { + position: relative; +} + +.mce-menu.mce-menu-align .mce-menu-shortcut { + bottom: 0.6em; + font-size: 0.9em; +} + /* Buttons in modals */ .mce-primary button, .mce-primary button i { @@ -840,6 +858,11 @@ div.mce-menu .mce-menu-item-sep, border-left-color: #23282d; } +div.mce-notification { + left: 10% !important; + right: 10%; +} + .mce-notification button.mce-close { right: 6px; top: 3px; @@ -1147,7 +1170,7 @@ i.mce-i-wp_code:before { } .js .tmce-active .wp-editor-area { - color: white; + color: #fff; } .tmce-active .quicktags-toolbar { @@ -1304,7 +1327,7 @@ i.mce-i-wp_code:before { @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. */ + /* .button-small is normally 11px, but a bit too small for these buttons. */ font-size: 12px; height: 26px; line-height: 24px; diff --git a/wp/wp-includes/css/editor.min.css b/wp/wp-includes/css/editor.min.css index 40d0e127..396001be 100644 --- a/wp/wp-includes/css/editor.min.css +++ b/wp/wp-includes/css/editor.min.css @@ -1 +1 @@ -#wp-link-wrap,.mce-window{-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3)}.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;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 #ddd;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#444;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}.mce-window .mce-window-head .mce-close,.mce-window-head .mce-close .mce-i-remove{color:transparent;top:0;right:0;width:36px;height:36px;padding:0;line-height:36px;text-align:center}.mce-window-head .mce-close .mce-i-remove:before{font:400 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window-head .mce-close:focus .mce-i-remove:before,.mce-window-head .mce-close:hover .mce-i-remove:before{color:#00a0d2}.mce-window-head .mce-close:focus .mce-i-remove,div.mce-tab:focus{-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-window-head .mce-dragh{width:-webkit-calc(100% - 36px);width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #ddd}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;-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 table.wp-help-single{margin:0 8px 20px}.mce-window .wp-editor-help table.fixed{table-layout:fixed}.mce-window .wp-editor-help table.fixed td:nth-child(odd),.mce-window .wp-editor-help table.fixed th:nth-child(odd){width:12%}.mce-window .wp-editor-help table.fixed td:nth-child(even),.mce-window .wp-editor-help table.fixed th:nth-child(even){width:38%}.mce-window .wp-editor-help table.fixed th:nth-child(odd){padding:5px 0 0}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:600;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:600;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);-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 #ddd;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);-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}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:""}.quicktags-toolbar,.wp-editor-tools,.wp-editor-wrap,.wp-switch-editor{position:relative}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a0a5aa;border-width:0 9px 9px;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a0a5aa;border-width:9px 9px 0;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f5f5f5;border-width:0 8px 8px;margin-left:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f5f5f5;border-width:8px 8px 0;margin-left:-8px}div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{left:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-full{right:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:32px}.mce-toolbar .mce-btn-group{margin:0}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px;margin:0}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;cursor:pointer}.mce-btn .mce-txt{direction:inherit;text-align:inherit}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;-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:#555d66;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:#555d66;-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:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#23282d}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a0a5aa;background:0 0;border-color:#ddd;text-shadow:0 1px 0 #fff;-webkit-box-shadow:none;box-shadow:none}.mce-menu .mce-menu-item-preview.mce-active .mce-text,.mce-toolbar .mce-btn-group .mce-btn.mce-primary .mce-ico{color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus{border-color:#555d66}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:20px;padding-left:6px;padding-right:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-right:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;left:3px;height:3px;width:20px;background:#555d66}.mce-toolbar .mce-btn-group .mce-btn.mce-primary{min-width:0;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:2px 3px 1px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus{-webkit-box-shadow:0 0 1px 1px #33b3db;box-shadow:0 0 1px 1px #33b3db}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799}.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:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #555d66;margin-left:2px;margin-right:2px}.mce-listbox i.mce-caret{right:4px}.mce-panel .mce-btn:focus i.mce-caret,.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#23282d}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #23282d;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-right-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item-normal.mce-active,.mce-menu .mce-menu-item-preview.mce-active,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#0073aa}.mce-menu .mce-menu-item-preview.mce-active{border-left:none}.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:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc}.mce-window .mce-btn::-moz-focus-inner{border-width:0;border-style:none;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;-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);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.mce-window .mce-btn.mce-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;-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.mce-window .mce-btn.mce-primary{background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-window .mce-btn.mce-primary:focus{-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.mce-window .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#66c6e4!important;background:#008ec2!important;border-color:#007cb2!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.mce-toolbar .mce-ico,.qt-dfw{text-shadow:none;text-align:center}.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:#ddd;cursor:pointer}.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:#555d66;line-height:20px;width:20px;height:20px;margin:0;padding:0}.qt-dfw{color:#555d66;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:#23282d}.mce-notification button.mce-close{right:6px;top:3px;font-weight:400;color:#555d66}.mce-notification button.mce-close:focus,.mce-notification button.mce-close:hover{color:#000}i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-remove,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font: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"}i.mce-i-remove:before{content:"\f158"}i.mce-i-wp_code:before{content:"\f475"}.rtl i.mce-i-outdent:before{content:"\f222"}.rtl i.mce-i-indent:before{content:"\f221"}.wp-editor-tools{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;-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;top:1px;background:#ebebeb;color:#666;cursor:pointer;font-size:13px;line-height:19px;height:20px;margin:5px 0 0 5px;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{-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:#444;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:18px;height:18px;vertical-align:text-top;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f104"}.quicktags-toolbar{padding:3px;border-bottom:1px solid #ddd;background:#f5f5f5;min-height:30px}.has-dfw .quicktags-toolbar{padding-right:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.quicktags-toolbar input[value=link]{text-decoration:underline}.quicktags-toolbar input[value=del]{text-decoration:line-through}.quicktags-toolbar input[value="i"]{font-style:italic}.quicktags-toolbar input[value="b"]{font-weight:600}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;right:0;margin:5px 5px 0 0}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:6px 7px 5px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 4px 0 0}.mce-toolbar .mce-colorbutton .mce-preview{left:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;height:26px;line-height:24px}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-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;box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-left:-250px;position:fixed;top:50%;left:50%;z-index:100105;-webkit-transition:height .2s,margin-top .2s;transition:height .2s,margin-top .2s;height:500px;margin-top:-250px}#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 .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fcfcfc;border-bottom:1px solid #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}#wp-link-close{color:#666;padding:0;position:absolute;top:0;right:0;width:36px;height:36px;text-align:center;background:0 0;border:none;cursor:pointer}#wp-link-close:before{font:400 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:36px;height:36px;content:"\f158"}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;-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-link-wrap #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:37px;left:0;right:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type=text]{-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 0 12px;background:#fff;overflow:auto;position:absolute;left:16px;right:16px;bottom:0;top:166px}.has-text-field #wp-link .query-results{top:200px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 6px 4px 10px;cursor:pointer;position:relative}#wp-link .query-notice,#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:600}#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 .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #ddd;position:absolute;bottom:0;left:0;right:0}#wp-link-cancel{line-height:25px;float:left}#wp-link-update{line-height:23px;float:right}#wp-link-submit{float:right}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap .query-results{top:195px}#wp-link-wrap.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}#wp-link .link-target{padding-top:10px}#wp-link .submitbox .button{margin-bottom:0}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-left:0;left:10px;right:10px;max-width:500px}}@media screen and (max-height:520px){#wp-link-wrap{-webkit-transition:none;transition:none;height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto}#search-panel .query-results{position:static}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:-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}div.wp-link-preview a.wplink-url-error{color:#dc3232}div.wp-link-input{float:left;margin:2px;max-width:694px}div.wp-link-input input{width:300px;padding:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mce-toolbar div.wp-link-input~.mce-btn,.mce-toolbar div.wp-link-preview~.mce-btn{margin:2px 1px}.mce-inline-toolbar-grp .mce-btn-group .mce-btn:last-child{margin-right:2px}.ui-autocomplete.wplink-autocomplete{z-index:100110;max-height:200px;overflow-y:auto;padding:0;margin:0;list-style:none;position:absolute;border:1px solid #5b9dd9;-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.wplink-autocomplete li{margin-bottom:0;padding:4px 10px;clear:both;white-space:normal;text-align:left}.ui-autocomplete.wplink-autocomplete li .wp-editor-float-right{float:right}.ui-autocomplete.wplink-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}@media screen and (max-width:782px){div.wp-link-input,div.wp-link-preview{max-width:70%;max-width:-webkit-calc(100% - 86px);max-width:calc(100% - 86px)}div.wp-link-preview{margin:8px 0 8px 5px}div.wp-link-input{width:300px}div.wp-link-input input{width:100%;font-size:16px;padding:5px}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}} \ No newline at end of file +#wp-link-wrap,.mce-window{-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3)}.mce-window .mce-wp-help *,div.mce-inline-toolbar-grp{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}.mce-container .mce-monospace,.mce-widget .mce-monospace{font-family:Consolas,Monaco,monospace;font-size:13px;line-height:150%}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);-webkit-transition:none;transition:none}.mce-window{-webkit-border-radius:0;border-radius:0;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 #ddd;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#444;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}.mce-window .mce-window-head .mce-close,.mce-window-head .mce-close .mce-i-remove{color:transparent;top:0;right:0;width:36px;height:36px;padding:0;line-height:36px;text-align:center}.mce-window-head .mce-close .mce-i-remove:before{font:400 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window-head .mce-close:focus .mce-i-remove:before,.mce-window-head .mce-close:hover .mce-i-remove:before{color:#00a0d2}.mce-window-head .mce-close:focus .mce-i-remove,div.mce-tab:focus{-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-window-head .mce-dragh{width:-webkit-calc(100% - 36px);width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #ddd}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;-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 *{box-sizing:border-box}.mce-window .mce-wp-help>.mce-container-body{width:auto!important}.mce-window .wp-editor-help{padding:10px 10px 0 20px}.mce-window .wp-editor-help h2,.mce-window .wp-editor-help p{margin:8px 0;white-space:normal;font-size:14px;font-weight:400}.mce-window .wp-editor-help table{width:100%;margin-bottom:20px}.mce-window .wp-editor-help table.wp-help-single{margin:0 8px 20px}.mce-window .wp-editor-help table.fixed{table-layout:fixed}.mce-window .wp-editor-help table.fixed td:nth-child(odd),.mce-window .wp-editor-help table.fixed th:nth-child(odd){width:12%}.mce-window .wp-editor-help table.fixed td:nth-child(even),.mce-window .wp-editor-help table.fixed th:nth-child(even){width:38%}.mce-window .wp-editor-help table.fixed th:nth-child(odd){padding:5px 0 0}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:600;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:600;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);-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 #ddd;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}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:""}.mce-menu.mce-menu-align .mce-menu-item-normal,.quicktags-toolbar,.wp-editor-tools,.wp-editor-wrap,.wp-switch-editor{position:relative}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a0a5aa;border-width:0 9px 9px;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a0a5aa;border-width:9px 9px 0;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f5f5f5;border-width:0 8px 8px;margin-left:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f5f5f5;border-width:8px 8px 0;margin-left:-8px}div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{left:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-full{right:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:32px}.mce-toolbar .mce-btn-group{margin:0}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px;margin:0}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;cursor:pointer}.mce-btn .mce-txt{direction:inherit;text-align:inherit}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;-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:#555d66;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:#555d66;-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:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#23282d}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a0a5aa;background:0 0;border-color:#ddd;text-shadow:0 1px 0 #fff;-webkit-box-shadow:none;box-shadow:none}.mce-menu .mce-menu-item-preview.mce-active .mce-text,.mce-toolbar .mce-btn-group .mce-btn.mce-primary .mce-ico{color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus{border-color:#555d66}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:20px;padding-left:6px;padding-right:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-right:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;left:3px;height:3px;width:20px;background:#555d66}.mce-toolbar .mce-btn-group .mce-btn.mce-primary{min-width:0;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:2px 3px 1px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus{-webkit-box-shadow:0 0 1px 1px #33b3db;box-shadow:0 0 1px 1px #33b3db}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799}.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:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #555d66;margin-left:2px;margin-right:2px}.mce-listbox i.mce-caret{right:4px}.mce-panel .mce-btn:focus i.mce-caret,.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#23282d}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #23282d;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-right-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item-normal.mce-active,.mce-menu .mce-menu-item-preview.mce-active,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#0073aa;color:#fff}.mce-menu .mce-menu-item-preview.mce-active{border-left:none}.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-menu.mce-menu-align .mce-menu-shortcut{bottom:.6em;font-size:.9em}.mce-primary button,.mce-primary button i{text-align:center;color:#fff;text-shadow:none;padding:0;line-height:26px}.mce-window .mce-btn{color:#555;background:#f7f7f7;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0;cursor:pointer;border:1px solid #ccc;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc}.mce-window .mce-btn::-moz-focus-inner{border-width:0;border-style:none;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;-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);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.mce-window .mce-btn.mce-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;-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.mce-window .mce-btn.mce-primary{background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-window .mce-btn.mce-primary:focus{-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.mce-window .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#66c6e4!important;background:#008ec2!important;border-color:#007cb2!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.mce-toolbar .mce-ico,.qt-dfw{text-shadow:none;text-align:center}.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:#ddd;cursor:pointer}.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:#555d66;line-height:20px;width:20px;height:20px;margin:0;padding:0}.qt-dfw{color:#555d66;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:#23282d}div.mce-notification{left:10%!important;right:10%}.mce-notification button.mce-close{right:6px;top:3px;font-weight:400;color:#555d66}.mce-notification button.mce-close:focus,.mce-notification button.mce-close:hover{color:#000}i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-remove,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font: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"}i.mce-i-remove:before{content:"\f158"}i.mce-i-wp_code:before{content:"\f475"}.rtl i.mce-i-outdent:before{content:"\f222"}.rtl i.mce-i-indent:before{content:"\f221"}.wp-editor-tools{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;-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;top:1px;background:#ebebeb;color:#666;cursor:pointer;font-size:13px;line-height:19px;height:20px;margin:5px 0 0 5px;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{-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:#444;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:18px;height:18px;vertical-align:text-top;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f104"}.quicktags-toolbar{padding:3px;border-bottom:1px solid #ddd;background:#f5f5f5;min-height:30px}.has-dfw .quicktags-toolbar{padding-right:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.quicktags-toolbar input[value=link]{text-decoration:underline}.quicktags-toolbar input[value=del]{text-decoration:line-through}.quicktags-toolbar input[value="i"]{font-style:italic}.quicktags-toolbar input[value="b"]{font-weight:600}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;right:0;margin:5px 5px 0 0}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:6px 7px 5px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 4px 0 0}.mce-toolbar .mce-colorbutton .mce-preview{left:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;height:26px;line-height:24px}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-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;box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-left:-250px;position:fixed;top:50%;left:50%;z-index:100105;-webkit-transition:height .2s,margin-top .2s;transition:height .2s,margin-top .2s;height:500px;margin-top:-250px}#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 .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fcfcfc;border-bottom:1px solid #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}#wp-link-close{color:#666;padding:0;position:absolute;top:0;right:0;width:36px;height:36px;text-align:center;background:0 0;border:none;cursor:pointer}#wp-link-close:before{font:400 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:36px;height:36px;content:"\f158"}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;-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-link-wrap #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:37px;left:0;right:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type=text]{-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 0 12px;background:#fff;overflow:auto;position:absolute;left:16px;right:16px;bottom:0;top:166px}.has-text-field #wp-link .query-results{top:200px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 6px 4px 10px;cursor:pointer;position:relative}#wp-link .query-notice,#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:600}#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 .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #ddd;position:absolute;bottom:0;left:0;right:0}#wp-link-cancel{line-height:25px;float:left}#wp-link-update{line-height:23px;float:right}#wp-link-submit{float:right}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap .query-results{top:195px}#wp-link-wrap.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}#wp-link .link-target{padding-top:10px}#wp-link .submitbox .button{margin-bottom:0}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-left:0;left:10px;right:10px;max-width:500px}}@media screen and (max-height:520px){#wp-link-wrap{-webkit-transition:none;transition:none;height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto}#search-panel .query-results{position:static}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:-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}div.wp-link-preview a.wplink-url-error{color:#dc3232}div.wp-link-input{float:left;margin:2px;max-width:694px}div.wp-link-input input{width:300px;padding:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mce-toolbar div.wp-link-input~.mce-btn,.mce-toolbar div.wp-link-preview~.mce-btn{margin:2px 1px}.mce-inline-toolbar-grp .mce-btn-group .mce-btn:last-child{margin-right:2px}.ui-autocomplete.wplink-autocomplete{z-index:100110;max-height:200px;overflow-y:auto;padding:0;margin:0;list-style:none;position:absolute;border:1px solid #5b9dd9;-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.wplink-autocomplete li{margin-bottom:0;padding:4px 10px;clear:both;white-space:normal;text-align:left}.ui-autocomplete.wplink-autocomplete li .wp-editor-float-right{float:right}.ui-autocomplete.wplink-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}@media screen and (max-width:782px){div.wp-link-input,div.wp-link-preview{max-width:70%;max-width:-webkit-calc(100% - 86px);max-width:calc(100% - 86px)}div.wp-link-preview{margin:8px 0 8px 5px}div.wp-link-input{width:300px}div.wp-link-input input{width:100%;font-size:16px;padding:5px}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}} \ No newline at end of file diff --git a/wp/wp-includes/css/wp-embed-template.css b/wp/wp-includes/css/wp-embed-template.css index 10ff56ef..28e437c4 100644 --- a/wp/wp-includes/css/wp-embed-template.css +++ b/wp/wp-includes/css/wp-embed-template.css @@ -64,7 +64,7 @@ body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; line-height: 1.5; color: #82878c; - background: white; + background: #fff; border: 1px solid #e5e5e5; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); box-shadow: 0 1px 1px rgba(0, 0, 0, .05); diff --git a/wp/wp-includes/customize/class-wp-customize-background-image-control.php b/wp/wp-includes/customize/class-wp-customize-background-image-control.php index 588e32a9..50956f85 100644 --- a/wp/wp-includes/customize/class-wp-customize-background-image-control.php +++ b/wp/wp-includes/customize/class-wp-customize-background-image-control.php @@ -40,7 +40,9 @@ class WP_Customize_Background_Image_Control extends WP_Customize_Image_Control { public function enqueue() { parent::enqueue(); + $custom_background = get_theme_support( 'custom-background' ); wp_localize_script( 'customize-controls', '_wpCustomizeBackground', array( + 'defaults' => ! empty( $custom_background[0] ) ? $custom_background[0] : array(), 'nonces' => array( 'add' => wp_create_nonce( 'background-add' ), ), diff --git a/wp/wp-includes/customize/class-wp-customize-background-position-control.php b/wp/wp-includes/customize/class-wp-customize-background-position-control.php new file mode 100644 index 00000000..475a01a5 --- /dev/null +++ b/wp/wp-includes/customize/class-wp-customize-background-position-control.php @@ -0,0 +1,87 @@ + array( 'label' => __( 'Top Left' ), 'icon' => 'dashicons dashicons-arrow-left-alt' ), + 'center top' => array( 'label' => __( 'Top' ), 'icon' => 'dashicons dashicons-arrow-up-alt' ), + 'right top' => array( 'label' => __( 'Top Right' ), 'icon' => 'dashicons dashicons-arrow-right-alt' ), + ), + array( + 'left center' => array( 'label' => __( 'Left' ), 'icon' => 'dashicons dashicons-arrow-left-alt' ), + 'center center' => array( 'label' => __( 'Center' ), 'icon' => 'background-position-center-icon' ), + 'right center' => array( 'label' => __( 'Right' ), 'icon' => 'dashicons dashicons-arrow-right-alt' ), + ), + array( + 'left bottom' => array( 'label' => __( 'Bottom Left' ), 'icon' => 'dashicons dashicons-arrow-left-alt' ), + 'center bottom' => array( 'label' => __( 'Bottom' ), 'icon' => 'dashicons dashicons-arrow-down-alt' ), + 'right bottom' => array( 'label' => __( 'Bottom Right' ), 'icon' => 'dashicons dashicons-arrow-right-alt' ), + ), + ); + ?> + <# if ( data.label ) { #> + {{{ data.label }}} + <# } #> + <# if ( data.description ) { #> + {{{ data.description }}} + <# } #> +
              +
              + +
              + +
              + $input ) : ?> + + +
              + +
              +
              +
              + json['statuses'] = $this->statuses; $this->json['defaultValue'] = $this->setting->default; + $this->json['mode'] = $this->mode; } /** @@ -78,8 +92,10 @@ class WP_Customize_Color_Control extends WP_Customize_Control { */ public function content_template() { ?> - <# var defaultValue = ''; - if ( data.defaultValue ) { + <# var defaultValue = '', + isHueSlider = data.mode === 'hue'; + + if ( data.defaultValue && ! isHueSlider ) { if ( '#' !== data.defaultValue.substring( 0, 1 ) ) { defaultValue = '#' + data.defaultValue; } else { @@ -95,7 +111,11 @@ class WP_Customize_Color_Control extends WP_Customize_Control { {{{ data.description }}} <# } #>
              - + <# if ( isHueSlider ) { #> + + <# } else { #> + + <# } #>
              id_data['base'] ) { + throw new Exception( 'Expected custom_css id_base.' ); + } + if ( 1 !== count( $this->id_data['keys'] ) || empty( $this->id_data['keys'][0] ) ) { + throw new Exception( 'Expected single stylesheet key.' ); + } + $this->stylesheet = $this->id_data['keys'][0]; + } + + /** + * Add filter to preview post value. + * + * @since 4.7.9 + * @access public + * + * @return bool False when preview short-circuits due no change needing to be previewed. + */ + public function preview() { + if ( $this->is_previewed ) { + return false; + } + $this->is_previewed = true; + add_filter( 'wp_get_custom_css', array( $this, 'filter_previewed_wp_get_custom_css' ), 9, 2 ); + return true; + } + + /** + * Filter `wp_get_custom_css` for applying the customized value. + * + * This is used in the preview when `wp_get_custom_css()` is called for rendering the styles. + * + * @since 4.7.0 + * @access private + * @see wp_get_custom_css() + * + * @param string $css Original CSS. + * @param string $stylesheet Current stylesheet. + * @return string CSS. + */ + public function filter_previewed_wp_get_custom_css( $css, $stylesheet ) { + if ( $stylesheet === $this->stylesheet ) { + $customized_value = $this->post_value( null ); + if ( ! is_null( $customized_value ) ) { + $css = $customized_value; + } + } + return $css; + } + + /** + * Fetch the value of the setting. Will return the previewed value when `preview()` is called. + * + * @since 4.7.0 + * @access public + * @see WP_Customize_Setting::value() + * + * @return string + */ + public function value() { + if ( $this->is_previewed ) { + $post_value = $this->post_value( null ); + if ( null !== $post_value ) { + return $post_value; + } + } + $id_base = $this->id_data['base']; + $value = ''; + $post = wp_get_custom_css_post( $this->stylesheet ); + if ( $post ) { + $value = $post->post_content; + } + if ( empty( $value ) ) { + $value = $this->default; + } + + /** This filter is documented in wp-includes/class-wp-customize-setting.php */ + $value = apply_filters( "customize_value_{$id_base}", $value, $this ); + + return $value; + } + + /** + * Validate CSS. + * + * Checks for imbalanced braces, brackets, and comments. + * Notifications are rendered when the customizer state is saved. + * + * @todo There are cases where valid CSS can be incorrectly marked as invalid when strings or comments include balancing characters. To fix, CSS tokenization needs to be used. + * + * @since 4.7.0 + * @access public + * + * @param string $css The input string. + * @return true|WP_Error True if the input was validated, otherwise WP_Error. + */ + public function validate( $css ) { + $validity = new WP_Error(); + + if ( preg_match( '#add( 'illegal_markup', __( 'Markup is not allowed in CSS.' ) ); + } + + $imbalanced = false; + + // Make sure that there is a closing brace for each opening brace. + if ( ! $this->validate_balanced_characters( '{', '}', $css ) ) { + $validity->add( 'imbalanced_curly_brackets', __( 'Your curly brackets {} are imbalanced. Make sure there is a closing } for every opening {.' ) ); + $imbalanced = true; + } + + // Ensure brackets are balanced. + if ( ! $this->validate_balanced_characters( '[', ']', $css ) ) { + $validity->add( 'imbalanced_braces', __( 'Your brackets [] are imbalanced. Make sure there is a closing ] for every opening [.' ) ); + $imbalanced = true; + } + + // Ensure parentheses are balanced. + if ( ! $this->validate_balanced_characters( '(', ')', $css ) ) { + $validity->add( 'imbalanced_parentheses', __( 'Your parentheses () are imbalanced. Make sure there is a closing ) for every opening (.' ) ); + $imbalanced = true; + } + + // Ensure single quotes are equal. + if ( ! $this->validate_equal_characters( '\'', $css ) ) { + $validity->add( 'unequal_single_quotes', __( 'Your single quotes \' are uneven. Make sure there is a closing \' for every opening \'.' ) ); + $imbalanced = true; + } + + // Ensure single quotes are equal. + if ( ! $this->validate_equal_characters( '"', $css ) ) { + $validity->add( 'unequal_double_quotes', __( 'Your double quotes " are uneven. Make sure there is a closing " for every opening ".' ) ); + $imbalanced = true; + } + + /* + * Make sure any code comments are closed properly. + * + * The first check could miss stray an unpaired comment closing figure, so if + * The number appears to be balanced, then check for equal numbers + * of opening/closing comment figures. + * + * Although it may initially appear redundant, we use the first method + * to give more specific feedback to the user. + */ + $unclosed_comment_count = $this->validate_count_unclosed_comments( $css ); + if ( 0 < $unclosed_comment_count ) { + $validity->add( 'unclosed_comment', sprintf( _n( 'There is %s unclosed code comment. Close each comment with */.', 'There are %s unclosed code comments. Close each comment with */.', $unclosed_comment_count ), $unclosed_comment_count ) ); + $imbalanced = true; + } elseif ( ! $this->validate_balanced_characters( '/*', '*/', $css ) ) { + $validity->add( 'imbalanced_comments', __( 'There is an extra */, indicating an end to a comment. Be sure that there is an opening /* for every closing */.' ) ); + $imbalanced = true; + } + if ( $imbalanced && $this->is_possible_content_error( $css ) ) { + $validity->add( 'possible_false_positive', __( 'Imbalanced/unclosed character errors can be caused by content: ""; declarations. You may need to remove this or add it to a custom CSS file.' ) ); + } + + if ( empty( $validity->errors ) ) { + $validity = parent::validate( $css ); + } + return $validity; + } + + /** + * Store the CSS setting value in the custom_css custom post type for the stylesheet. + * + * @since 4.7.0 + * @access public + * + * @param string $css The input value. + * @return int|false The post ID or false if the value could not be saved. + */ + public function update( $css ) { + if ( empty( $css ) ) { + $css = ''; + } + + $r = wp_update_custom_css_post( $css, array( + 'stylesheet' => $this->stylesheet, + ) ); + + if ( $r instanceof WP_Error ) { + return false; + } + $post_id = $r->ID; + + // Cache post ID in theme mod for performance to avoid additional DB query. + if ( $this->manager->get_stylesheet() === $this->stylesheet ) { + set_theme_mod( 'custom_css_post_id', $post_id ); + } + + return $post_id; + } + + /** + * Ensure there are a balanced number of paired characters. + * + * This is used to check that the number of opening and closing + * characters is equal. + * + * For instance, there should be an equal number of braces ("{", "}") + * in the CSS. + * + * @since 4.7.0 + * @access private + * + * @param string $opening_char The opening character. + * @param string $closing_char The closing character. + * @param string $css The CSS input string. + * + * @return bool + */ + private function validate_balanced_characters( $opening_char, $closing_char, $css ) { + return substr_count( $css, $opening_char ) === substr_count( $css, $closing_char ); + } + + /** + * Ensure there are an even number of paired characters. + * + * This is used to check that the number of a specific + * character is even. + * + * For instance, there should be an even number of double quotes + * in the CSS. + * + * @since 4.7.0 + * @access private + * + * @param string $char A character. + * @param string $css The CSS input string. + * @return bool Equality. + */ + private function validate_equal_characters( $char, $css ) { + $char_count = substr_count( $css, $char ); + return ( 0 === $char_count % 2 ); + } + + /** + * Count unclosed CSS Comments. + * + * Used during validation. + * + * @see self::validate() + * + * @since 4.7.0 + * @access private + * + * @param string $css The CSS input string. + * @return int Count. + */ + private function validate_count_unclosed_comments( $css ) { + $count = 0; + $comments = explode( '/*', $css ); + + if ( ! is_array( $comments ) || ( 1 >= count( $comments ) ) ) { + return $count; + } + + unset( $comments[0] ); // The first item is before the first comment. + foreach ( $comments as $comment ) { + if ( false === strpos( $comment, '*/' ) ) { + $count++; + } + } + return $count; + } + + /** + * Find "content:" within a string. + * + * Imbalanced/Unclosed validation errors may be caused + * when a character is used in a "content:" declaration. + * + * This function is used to detect if this is a possible + * cause of the validation error, so that if it is, + * a notification may be added to the Validation Errors. + * + * Example: + * .element::before { + * content: "(\""; + * } + * .element::after { + * content: "\")"; + * } + * + * Using ! empty() because strpos() may return non-boolean values + * that evaluate to false. This would be problematic when + * using a strict "false === strpos()" comparison. + * + * @since 4.7.0 + * @access private + * + * @param string $css The CSS input string. + * @return bool + */ + private function is_possible_content_error( $css ) { + $found = preg_match( '/\bcontent\s*:/', $css ); + if ( ! empty( $found ) ) { + return true; + } + return false; + } +} diff --git a/wp/wp-includes/customize/class-wp-customize-header-image-control.php b/wp/wp-includes/customize/class-wp-customize-header-image-control.php index 9852de6d..b87a7bb3 100644 --- a/wp/wp-includes/customize/class-wp-customize-header-image-control.php +++ b/wp/wp-includes/customize/class-wp-customize-header-image-control.php @@ -102,10 +102,6 @@ class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control { <# } else { #> - <# if (data.type === 'uploaded') { #> - - <# } #> - + <# if ( data.type === 'uploaded' ) { #> + + <# } #> + <# } #> @@ -131,7 +131,7 @@ class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control { <# } else { #> - {{{data.header.alt_text || data.header.description}}} + {{{data.header.alt_text || data.header.description}}} <# } #> <# } else { #> @@ -166,9 +166,15 @@ class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control { $height = absint( get_theme_support( 'custom-header', 'height' ) ); ?>
              -

              + ' . $this->label . ''; + } ?> +

              +

              Add new image, we recommend matching the size of your video.' ); + } elseif ( $width && $height ) { /* translators: %s: header size in pixels */ printf( __( 'While you can crop images to your liking after clicking Add new image, your theme recommends a header size of %s pixels.' ), sprintf( '%s × %s', $width, $height ) diff --git a/wp/wp-includes/customize/class-wp-customize-header-image-setting.php b/wp/wp-includes/customize/class-wp-customize-header-image-setting.php index 98b79aed..af5c5162 100644 --- a/wp/wp-includes/customize/class-wp-customize-header-image-setting.php +++ b/wp/wp-includes/customize/class-wp-customize-header-image-setting.php @@ -29,6 +29,15 @@ final class WP_Customize_Header_Image_Setting extends WP_Customize_Setting { public function update( $value ) { global $custom_image_header; + // If _custom_header_background_just_in_time() fails to initialize $custom_image_header when not is_admin(). + if ( empty( $custom_image_header ) ) { + require_once( ABSPATH . 'wp-admin/custom-header.php' ); + $args = get_theme_support( 'custom-header' ); + $admin_head_callback = isset( $args[0]['admin-head-callback'] ) ? $args[0]['admin-head-callback'] : null; + $admin_preview_callback = isset( $args[0]['admin-preview-callback'] ) ? $args[0]['admin-preview-callback'] : null; + $custom_image_header = new Custom_Image_Header( $admin_head_callback, $admin_preview_callback ); + } + // If the value doesn't exist (removed or random), // use the header_image value. if ( ! $value ) diff --git a/wp/wp-includes/customize/class-wp-customize-nav-menu-control.php b/wp/wp-includes/customize/class-wp-customize-nav-menu-control.php index 7dfd1872..6b00a915 100644 --- a/wp/wp-includes/customize/class-wp-customize-nav-menu-control.php +++ b/wp/wp-includes/customize/class-wp-customize-nav-menu-control.php @@ -48,7 +48,7 @@ class WP_Customize_Nav_Menu_Control extends WP_Customize_Control { */ public function content_template() { ?> -

                diff --git a/wp/wp-includes/customize/class-wp-customize-selective-refresh.php b/wp/wp-includes/customize/class-wp-customize-selective-refresh.php index 245d32a2..2342aef9 100644 --- a/wp/wp-includes/customize/class-wp-customize-selective-refresh.php +++ b/wp/wp-includes/customize/class-wp-customize-selective-refresh.php @@ -184,6 +184,10 @@ final class WP_Customize_Selective_Refresh { 'renderQueryVar' => self::RENDER_QUERY_VAR, 'l10n' => array( 'shiftClickToEdit' => __( 'Shift-click to edit this element.' ), + 'clickEditMenu' => __( 'Click to edit this menu.' ), + 'clickEditWidget' => __( 'Click to edit this widget.' ), + 'clickEditTitle' => __( 'Click to edit the site title.' ), + 'clickEditMisc' => __( 'Click to edit this element.' ), /* translators: %s: document.write() */ 'badDocumentWrite' => sprintf( __( '%s is forbidden' ), 'document.write()' ), ), @@ -307,19 +311,15 @@ final class WP_Customize_Selective_Refresh { return; } - $this->manager->remove_preview_signature(); - /* * Note that is_customize_preview() returning true will entail that the * user passed the 'customize' capability check and the nonce check, since * WP_Customize_Manager::setup_theme() is where the previewing flag is set. */ if ( ! is_customize_preview() ) { - status_header( 403 ); - wp_send_json_error( 'expected_customize_preview' ); + wp_send_json_error( 'expected_customize_preview', 403 ); } else if ( ! isset( $_POST['partials'] ) ) { - status_header( 400 ); - wp_send_json_error( 'missing_partials' ); + wp_send_json_error( 'missing_partials', 400 ); } $partials = json_decode( wp_unslash( $_POST['partials'] ), true ); diff --git a/wp/wp-includes/customize/class-wp-customize-theme-control.php b/wp/wp-includes/customize/class-wp-customize-theme-control.php index e6966872..5187d022 100644 --- a/wp/wp-includes/customize/class-wp-customize-theme-control.php +++ b/wp/wp-includes/customize/class-wp-customize-theme-control.php @@ -63,8 +63,8 @@ class WP_Customize_Theme_Control extends WP_Customize_Control { */ public function content_template() { $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); - $active_url = esc_url( remove_query_arg( 'theme', $current_url ) ); - $preview_url = esc_url( add_query_arg( 'theme', '__THEME__', $current_url ) ); // Token because esc_url() strips curly braces. + $active_url = esc_url( remove_query_arg( 'customize_theme', $current_url ) ); + $preview_url = esc_url( add_query_arg( 'customize_theme', '__THEME__', $current_url ) ); // Token because esc_url() strips curly braces. $preview_url = str_replace( '__THEME__', '{{ data.theme.id }}', $preview_url ); ?> <# if ( data.theme.isActiveTheme ) { #> @@ -87,7 +87,10 @@ class WP_Customize_Theme_Control extends WP_Customize_Control { <# } #> -
                +
                <# if ( data.theme.isActiveTheme ) { #>

                diff --git a/wp/wp-includes/customize/class-wp-widget-area-customize-control.php b/wp/wp-includes/customize/class-wp-widget-area-customize-control.php index 298aece9..8f76169c 100644 --- a/wp/wp-includes/customize/class-wp-widget-area-customize-control.php +++ b/wp/wp-includes/customize/class-wp-widget-area-customize-control.php @@ -57,7 +57,7 @@ class WP_Widget_Area_Customize_Control extends WP_Customize_Control { public function render_content() { $id = 'reorder-widgets-desc-' . str_replace( array( '[', ']' ), array( '-', '' ), $this->id ); ?> - '),e.progressBar&&(i=e.progressBar.renderHtml()),'"},postRender:function(){var e=this;return r.setTimeout(function(){e.$el.addClass(e.classPrefix+"in")}),e._super()},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().childNodes[1].innerHTML=t.value}),e.progressBar&&e.progressBar.bindStates(),e._super()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||e.remove(),e},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Pe,[Me,u],function(e,t){return function(n){function r(){return l.length?l[l.length-1]:void 0}function i(){t.requestAnimationFrame(function(){o(),a()})}function o(){for(var e=0;e0){var e=l.slice(0,1)[0],t=n.inline?n.getElement():n.getContentAreaContainer();if(e.moveRel(t,"tc-tc"),l.length>1)for(var r=1;r0&&(r.timer=setTimeout(function(){r.close()},t.timeout)),r.on("close",function(){var e=l.length;for(r.timer&&n.getWin().clearTimeout(r.timer);e--;)l[e]===r&&l.splice(e,1);a()}),r.renderTo(),a(),r},s.close=function(){r()&&r().close()},s.getNotifications=function(){return l},n.on("SkinLoaded",function(){var e=n.settings.service_message;e&&n.notificationManager.open({text:e,type:"warning",timeout:0,icon:""})})}}),r(He,[w],function(e){function t(t,n,r){for(var i=[];n&&n!=t;n=n.parentNode)i.push(e.nodeIndex(n,r));return i}function n(e,t){var n,r,i;for(r=e,n=t.length-1;n>=0;n--){if(i=r.childNodes,t[n]>i.length-1)return null;r=i[t[n]]}return r}return{create:t,resolve:n}}),r(Oe,[I,T,y,He,A,C,d,m,u,k,$,ne],function(e,t,n,r,i,o,a,s,l,c,u,d){return function(f){function h(e,t){try{f.getDoc().execCommand(e,!1,t)}catch(n){}}function p(){var e=f.getDoc().documentMode;return e?e:6}function m(e){return e.isDefaultPrevented()}function g(e){var t,n;e.dataTransfer&&(f.selection.isCollapsed()&&"IMG"==e.target.tagName&&re.select(e.target),t=f.selection.getContent(),t.length>0&&(n=ue+escape(f.id)+","+escape(t),e.dataTransfer.setData(de,n)))}function v(e){var t;return e.dataTransfer&&(t=e.dataTransfer.getData(de),t&&t.indexOf(ue)>=0)?(t=t.substr(ue.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}function y(e){f.queryCommandSupported("mceInsertClipboardContent")?f.execCommand("mceInsertClipboardContent",!1,{content:e}):f.execCommand("mceInsertContent",!1,e)}function b(){function i(e){var t=C.schema.getBlockElements(),n=f.getBody();if("BR"!=e.nodeName)return!1;for(;e!=n&&!t[e.nodeName];e=e.parentNode)if(e.nextSibling)return!1;return!0}function o(e,t){var n;for(n=e.nextSibling;n&&n!=t;n=n.nextSibling)if((3!=n.nodeType||0!==Z.trim(n.data).length)&&n!==t)return!1;return n===t}function a(e,t,r){var o,a,s;for(s=C.schema.getNonEmptyElements(),o=new n(r||e,e);a=o[t?"next":"prev"]();){if(s[a.nodeName]&&!i(a))return a;if(3==a.nodeType&&a.data.length>0)return a}}function c(e){var n,r,i,o,s;if(!e.collapsed&&(n=C.getParent(t.getNode(e.startContainer,e.startOffset),C.isBlock),r=C.getParent(t.getNode(e.endContainer,e.endOffset),C.isBlock),s=f.schema.getTextBlockElements(),n!=r&&s[n.nodeName]&&s[r.nodeName]&&"false"!==C.getContentEditable(n)&&"false"!==C.getContentEditable(r)))return e.deleteContents(), -i=a(n,!1),o=a(r,!0),C.isEmpty(r)||Z(n).append(r.childNodes),Z(r).remove(),i?1==i.nodeType?"BR"==i.nodeName?(e.setStartBefore(i),e.setEndBefore(i)):(e.setStartAfter(i),e.setEndAfter(i)):(e.setStart(i,i.data.length),e.setEnd(i,i.data.length)):o&&(1==o.nodeType?(e.setStartBefore(o),e.setEndBefore(o)):(e.setStart(o,0),e.setEnd(o,0))),x.setRng(e),!0}function u(e,n){var r,i,s,l,c,u;if(!e.collapsed)return e;if(c=e.startContainer,u=e.startOffset,3==c.nodeType)if(n){if(u0)return e;if(r=t.getNode(e.startContainer,e.startOffset),s=C.getParent(r,C.isBlock),i=a(f.getBody(),n,r),l=C.getParent(i,C.isBlock),!r||!i)return e;if(l&&s!=l)if(n){if(!o(s,l))return e;1==r.nodeType?"BR"==r.nodeName?e.setStartBefore(r):e.setStartAfter(r):e.setStart(r,r.data.length),1==i.nodeType?e.setEnd(i,0):e.setEndBefore(i)}else{if(!o(l,s))return e;1==i.nodeType?"BR"==i.nodeName?e.setStartBefore(i):e.setStartAfter(i):e.setStart(i,i.data.length),1==r.nodeType?e.setEnd(r,0):e.setEndBefore(r)}return e}function d(e){var t=x.getRng();return t=u(t,e),c(t)?!0:void 0}function h(e,t){function n(e,n){return m=Z(n).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),l=e.cloneNode(!1),m=s.map(m,function(e){return e=e.cloneNode(!1),l.hasChildNodes()?(e.appendChild(l.firstChild),l.appendChild(e)):l.appendChild(e),l.appendChild(e),e}),m.length?(p=C.create("br"),m[0].appendChild(p),C.replace(l,e),t.setStartBefore(p),t.setEndBefore(p),f.selection.setRng(t),p):null}function i(e){return e&&f.schema.getTextBlockElements()[e.tagName]}var o,a,l,c,u,d,h,p,m;if(t.collapsed&&(d=t.startContainer,h=t.startOffset,a=C.getParent(d,C.isBlock),i(a)))if(1==d.nodeType){if(d=d.childNodes[h],d&&"BR"!=d.tagName)return;if(u=e?a.nextSibling:a.previousSibling,C.isEmpty(a)&&i(u)&&C.isEmpty(u)&&n(a,d))return C.remove(u),!0}else if(3==d.nodeType){if(o=r.create(a,d),c=a.cloneNode(!0),d=r.resolve(c,o),e){if(h>=d.data.length)return;d.deleteData(h,1)}else{if(0>=h)return;d.deleteData(h-1,1)}if(C.isEmpty(c))return n(a,d)}}function p(e){var t,n,r;d(e)||(s.each(f.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&f.dom.setAttrib(e,"style",f.dom.getAttrib(e,"style"))}),t=new w(function(){}),t.observe(f.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),f.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null),n=f.selection.getRng(),r=n.startContainer.parentNode,s.each(t.takeRecords(),function(e){if(C.isChildOf(e.target,f.getBody())){if("style"==e.attributeName){var t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style")}s.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var t,i;e==r&&(t=n.startOffset,i=e.firstChild),C.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),f.selection.setRng(n))}})}}),t.disconnect(),s.each(f.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")}))}var b=f.getDoc(),C=f.dom,x=f.selection,w=window.MutationObserver,N,E;w||(N=!0,w=function(){function e(e){var t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function t(e){var t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMSubtreeModified",e,!1),r.removeEventListener("DOMNodeInsertedIntoDocument",e,!1),r.removeEventListener("DOMNodeInserted",e,!1),r.removeEventListener("DOMAttrModified",t,!1)},this.takeRecords=function(){return n}}),f.on("keydown",function(e){var t=e.keyCode==te,n=e.ctrlKey||e.metaKey;if(!m(e)&&(t||e.keyCode==ee)){var r=f.selection.getRng(),i=r.startContainer,o=r.startOffset;if(t&&e.shiftKey)return;if(h(t,r))return void e.preventDefault();if(!n&&r.collapsed&&3==i.nodeType&&(t?o0))return;e.preventDefault(),n&&f.selection.getSel().modify("extend",t?"forward":"backward",e.metaKey?"lineboundary":"word"),p(t)}}),f.on("keypress",function(t){if(!m(t)&&!x.isCollapsed()&&t.charCode>31&&!e.metaKeyPressed(t)){var n,r,i,o,a,s;n=f.selection.getRng(),s=String.fromCharCode(t.charCode),t.preventDefault(),r=Z(n.startContainer).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),p(!0),r=r.filter(function(e,t){return!Z.contains(f.getBody(),t)}),r.length?(i=C.createFragment(),r.each(function(e,t){t=t.cloneNode(!1),i.hasChildNodes()?(t.appendChild(i.firstChild),i.appendChild(t)):(a=t,i.appendChild(t)),i.appendChild(t)}),a.appendChild(f.getDoc().createTextNode(s)),o=C.getParent(n.startContainer,C.isBlock),C.isEmpty(o)?Z(o).empty().append(i):n.insertNode(i),n.setStart(a.firstChild,1),n.setEnd(a.firstChild,1),f.selection.setRng(n)):f.selection.setContent(s)}}),f.addCommand("Delete",function(){p()}),f.addCommand("ForwardDelete",function(){p(!0)}),N||(f.on("dragstart",function(e){E=x.getRng(),g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);n&&(e.preventDefault(),l.setEditorTimeout(f,function(){var r=t.getCaretRangeFromPoint(e.x,e.y,b);E&&(x.setRng(E),E=null),p(),x.setRng(r),y(n.html)}))}}),f.on("cut",function(e){m(e)||!e.clipboardData||f.selection.isCollapsed()||(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",f.selection.getContent()),e.clipboardData.setData("text/plain",f.selection.getContent({format:"text"})),l.setEditorTimeout(f,function(){p(!0)}))}))}function C(){function e(e){var t=ne.create("body"),n=e.cloneContents();return t.appendChild(n),re.serializer.serialize(t,{format:"html"})}function n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return r.moveToElementText(f.getBody()),t.compareRanges(n,r)}var i=e(n),o=ne.createRng();o.selectNode(f.getBody());var a=e(o);return i===a}f.on("keydown",function(e){var t=e.keyCode,r,i;if(!m(e)&&(t==te||t==ee)){if(r=f.selection.isCollapsed(),i=f.getBody(),r&&!ne.isEmpty(i))return;if(!r&&!n(f.selection.getRng()))return;e.preventDefault(),f.setContent(""),i.firstChild&&ne.isBlock(i.firstChild)?f.selection.setCursorLocation(i.firstChild,0):f.selection.setCursorLocation(i,0),f.nodeChanged()}})}function x(){f.shortcuts.add("meta+a",null,"SelectAll")}function w(){f.settings.content_editable||ne.bind(f.getDoc(),"mousedown mouseup",function(e){var t;if(e.target==f.getDoc().documentElement)if(t=re.getRng(),f.getBody().focus(),"mousedown"==e.type){if(c.isCaretContainer(t.startContainer))return;re.placeCaretAt(e.clientX,e.clientY)}else re.setRng(t)})}function N(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee){if(!f.getBody().getElementsByTagName("hr").length)return;if(re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return ne.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(ne.remove(n),e.preventDefault())}}})}function E(){window.Range.prototype.getClientRects||f.on("mousedown",function(e){if(!m(e)&&"HTML"===e.target.nodeName){var t=f.getBody();t.blur(),l.setEditorTimeout(f,function(){t.focus()})}})}function _(){f.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==ne.getContentEditableParent(t)&&(e.preventDefault(),re.getSel().setBaseAndExtent(t,0,t,1),f.nodeChanged()),"A"==t.nodeName&&ne.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),re.select(t))})}function S(){function e(){var e=ne.getAttribs(re.getStart().cloneNode(!1));return function(){var t=re.getStart();t!==f.getBody()&&(ne.setAttrib(t,"style",null),Q(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!re.isCollapsed()&&ne.getParent(re.getStart(),ne.isBlock)!=ne.getParent(re.getEnd(),ne.isBlock)}f.on("keypress",function(n){var r;return m(n)||8!=n.keyCode&&46!=n.keyCode||!t()?void 0:(r=e(),f.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1)}),ne.bind(f.getDoc(),"cut",function(n){var r;!m(n)&&t()&&(r=e(),l.setEditorTimeout(f,function(){r()}))})}function k(){document.body.setAttribute("role","application")}function T(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee&&re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function R(){p()>7||(h("RespectVisibilityInDesign",!0),f.contentStyles.push(".mceHideBrInPre pre br {display: none}"),ne.addClass(f.getBody(),"mceHideBrInPre"),oe.addNodeFilter("pre",function(e){for(var t=e.length,n,r,o,a;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)o=n[r],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new i("#text",3),o,!0).value="\n"}),ae.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function A(){ne.bind(f.getBody(),"mouseup",function(){var e,t=re.getNode();"IMG"==t.nodeName&&((e=ne.getStyle(t,"width"))&&(ne.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"width","")),(e=ne.getStyle(t,"height"))&&(ne.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"height","")))})}function B(){f.on("keydown",function(t){var n,r,i,o,a;if(!m(t)&&t.keyCode==e.BACKSPACE&&(n=re.getRng(),r=n.startContainer,i=n.startOffset,o=ne.getRoot(),a=r,n.collapsed&&0===i)){for(;a&&a.parentNode&&a.parentNode.firstChild==a&&a.parentNode!=o;)a=a.parentNode;"BLOCKQUOTE"===a.tagName&&(f.formatter.toggle("blockquote",null,a),n=ne.createRng(),n.setStart(r,0),n.setEnd(r,0),re.setRng(n))}})}function D(){function e(){K(),h("StyleWithCSS",!1),h("enableInlineTableEditing",!1),ie.object_resizing||h("enableObjectResizing",!1)}ie.readonly||f.on("BeforeExecCommand MouseDown",e)}function L(){function e(){Q(ne.select("a"),function(e){var t=e.parentNode,n=ne.getRoot();if(t.lastChild===e){for(;t&&!ne.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}ne.add(t,"br",{"data-mce-bogus":1})}})}f.on("SetContent ExecCommand",function(t){"setcontent"!=t.type&&"mceInsertLink"!==t.command||e()})}function M(){ie.forced_root_block&&f.on("init",function(){h("DefaultParagraphSeparator",ie.forced_root_block)})}function P(){f.on("keydown",function(e){var t;m(e)||e.keyCode!=ee||(t=f.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),f.undoManager.beforeChange(),ne.remove(t.item(0)),f.undoManager.add()))})}function H(){var e;p()>=10&&(e="",Q("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),f.contentStyles.push(e+"{padding-right: 1px !important}"))}function O(){p()<9&&(oe.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),ae.addNodeFilter("noscript",function(e){for(var t=e.length,n,r,a;t--;)n=e[t],r=e[t].firstChild,r?r.value=o.decode(r.value):(a=n.attributes.map["data-mce-innertext"],a&&(n.attr("data-mce-innertext",null),r=new i("#text",3),r.value=a,r.raw=!0,n.append(r)))}))}function I(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),ne.unbind(r,"mouseup",n),ne.unbind(r,"mousemove",t),a=o=0}var r=ne.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,ne.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(ne.bind(r,"mouseup",n),ne.bind(r,"mousemove",t),ne.getRoot().focus(),a.select())}})}function F(){f.on("keyup focusin mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||re.normalize()},!0)}function z(){f.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function U(){f.inline||f.on("keydown",function(){document.activeElement==document.body&&f.getWin().focus()})}function W(){f.inline||(f.contentStyles.push("body {min-height: 150px}"),f.on("click",function(e){var t;if("HTML"==e.target.nodeName){if(a.ie>11)return void f.getBody().focus();t=f.selection.getRng(),f.getBody().focus(),f.selection.setRng(t),f.selection.normalize(),f.nodeChanged()}}))}function V(){a.mac&&f.on("keydown",function(t){!e.metaKeyPressed(t)||t.shiftKey||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),f.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","lineboundary"))})}function $(){h("AutoUrlDetect",!1)}function q(){f.on("click",function(e){var t=e.target;do if("A"===t.tagName)return void e.preventDefault();while(t=t.parentNode)}),f.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function j(){f.on("init",function(){f.dom.bind(f.getBody(),"submit",function(e){e.preventDefault()})})}function Y(){oe.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"==e[t].attr("class")&&e[t].remove()})}function X(){f.on("dragstart",function(e){g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);if(n&&n.id!=f.id){e.preventDefault();var r=t.getCaretRangeFromPoint(e.x,e.y,f.getDoc());re.setRng(r),y(n.html)}}})}function K(){var e,t;G()&&(e=f.getBody(),t=e.parentNode,t.removeChild(e),t.appendChild(e),e.focus())}function G(){var e;return se?(e=f.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}function J(){function t(e){var t=new d(e.getBody()),n=e.selection.getRng(),r=u.fromRangeStart(n),i=u.fromRangeEnd(n);return!e.selection.isCollapsed()&&!t.prev(r)&&!t.next(i)}f.on("keypress",function(n){!m(n)&&!re.isCollapsed()&&n.charCode>31&&!e.metaKeyPressed(n)&&t(f)&&(n.preventDefault(),f.setContent(String.fromCharCode(n.charCode)),f.selection.select(f.getBody(),!0),f.selection.collapse(!1),f.nodeChanged())}),f.on("keydown",function(e){var n=e.keyCode;m(e)||n!=te&&n!=ee||t(f)&&(e.preventDefault(),f.setContent(""),f.nodeChanged())})}var Q=s.each,Z=f.$,ee=e.BACKSPACE,te=e.DELETE,ne=f.dom,re=f.selection,ie=f.settings,oe=f.parser,ae=f.serializer,se=a.gecko,le=a.ie,ce=a.webkit,ue="data:text/mce-internal,",de=le?"Text":"URL";return B(),C(),a.windowsPhone||F(),ce&&(J(),b(),w(),_(),M(),j(),T(),Y(),a.iOS?(U(),W(),q()):x()),le&&a.ie<11&&(N(),k(),R(),A(),P(),H(),O(),I()),a.ie>=11&&(W(),T()),a.ie&&(x(),$(),X()),se&&(J(),N(),E(),S(),D(),L(),z(),V(),T()),{refreshContentEditable:K,isHidden:G}}}),r(Ie,[ue,w,m],function(e,t,n){function r(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=o.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function i(e,t){function n(e){return!e.hidden&&!e.readonly}var i=r(e,t),s;if(e.delegates||(e.delegates={}),!e.delegates[t])if(e.settings.event_root){if(a||(a={},e.editorManager.on("removeEditor",function(){var t;if(!e.editorManager.activeEditor&&a){for(t in a)e.dom.unbind(r(e,t));a=null}})),a[t])return;s=function(r){for(var i=r.target,a=e.editorManager.editors,s=a.length;s--;){var l=a[s].getBody();(l===i||o.isChildOf(i,l))&&n(a[s])&&a[s].fire(t,r)}},a[t]=s,o.bind(i,t,s)}else s=function(r){n(e)&&e.fire(t,r)},o.bind(i,t,s),e.delegates[t]=s}var o=t.DOM,a,s={bindPendingEventDelegates:function(){var e=this;n.each(e._pendingNativeEvents,function(t){i(e,t)})},toggleNativeEvent:function(e,t){var n=this;"focus"!=e&&"blur"!=e&&(t?n.initialized?i(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(r(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e=this,t;if(e.delegates){for(t in e.delegates)e.dom.unbind(r(e,t),t,e.delegates[t]);delete e.delegates}e.inline||(e.getBody().onload=null,e.dom.unbind(e.getWin()),e.dom.unbind(e.getDoc())),e.dom.unbind(e.getBody()),e.dom.unbind(e.getContainer())}};return s=n.extend({},e,s)}),r(Fe,[],function(){function e(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}}function t(e){var t,n;return t=e.getBody(),n=function(t){e.dom.getParents(t.target,"a").length>0&&t.preventDefault()},e.dom.bind(t,"click",n),{unbind:function(){e.dom.unbind(t,"click",n)}}}function n(n,r){n._clickBlocker&&(n._clickBlocker.unbind(),n._clickBlocker=null),r?(n._clickBlocker=t(n),n.selection.controlSelection.hideResizeRect(),n.readonly=!0,n.getBody().contentEditable=!1):(n.readonly=!1,n.getBody().contentEditable=!0,e(n,"StyleWithCSS",!1),e(n,"enableInlineTableEditing",!1),e(n,"enableObjectResizing",!1),n.focus(),n.nodeChanged())}function r(e,t){var r=e.readonly?"readonly":"design";t!=r&&(e.initialized?n(e,"readonly"==t):e.on("init",function(){n(e,"readonly"==t)}),e.fire("SwitchMode",{mode:t}))}return{setMode:r}}),r(ze,[m,d],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122},o=e.makeMap("alt,ctrl,shift,meta,access");return function(a){function s(e){var a,s,l={};n(r(e,"+"),function(e){e in o?l[e]=!0:/^[0-9]{2,}$/.test(e)?l.keyCode=parseInt(e,10):(l.charCode=e.charCodeAt(0),l.keyCode=i[e]||e.toUpperCase().charCodeAt(0))}),a=[l.keyCode];for(s in o)l[s]?a.push(s):l[s]=!1;return l.id=a.join(","),l.access&&(l.alt=!0,t.mac?l.ctrl=!0:l.shift=!0),l.meta&&(t.mac?l.meta=!0:(l.ctrl=!0,l.meta=!1)),l}function l(t,n,i,o){var l;return l=e.map(r(t,">"),s),l[l.length-1]=e.extend(l[l.length-1],{func:i,scope:o||a}),e.extend(l[0],{desc:a.translate(n),subpatterns:l.slice(1)})}function c(e){return e.altKey||e.ctrlKey||e.metaKey}function u(e){return e.keyCode>=112&&e.keyCode<=123}function d(e,t){return t?t.ctrl!=e.ctrlKey||t.meta!=e.metaKey?!1:t.alt!=e.altKey||t.shift!=e.shiftKey?!1:e.keyCode==t.keyCode||e.charCode&&e.charCode==t.charCode?(e.preventDefault(),!0):!1:!1}function f(e){return e.func?e.func.call(e.scope):null}var h=this,p={},m=[];a.on("keyup keypress keydown",function(e){!c(e)&&!u(e)||e.isDefaultPrevented()||(n(p,function(t){return d(e,t)?(m=t.subpatterns.slice(0),"keydown"==e.type&&f(t),!0):void 0}),d(e,m[0])&&(1===m.length&&"keydown"==e.type&&f(m[0]),m.shift()))}),h.add=function(t,i,o,s){var c;return c=o,"string"==typeof o?o=function(){a.execCommand(c,!1,null)}:e.isArray(c)&&(o=function(){a.execCommand(c[0],c[1],c[2])}),n(r(e.trim(t.toLowerCase())),function(e){var t=l(e,i,o,s);p[t.id]=t}),!0},h.remove=function(e){var t=l(e);return p[t.id]?(delete p[t.id],!0):!1}}}),r(Ue,[c,m,z],function(e,t,n){return function(r,i){function o(e){var t,n;return n={"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"},t=n[e.blob().type.toLowerCase()]||"dat",e.id()+"."+t}function a(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}function s(e){return{id:e.id,blob:e.blob,base64:e.base64,filename:n.constant(o(e))}}function l(e,t,n,r){var s,l;s=new XMLHttpRequest,s.open("POST",i.url),s.withCredentials=i.credentials,s.upload.onprogress=function(e){r(e.loaded/e.total*100)},s.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+s.status)},s.onload=function(){var e;return 200!=s.status?void n("HTTP Error: "+s.status):(e=JSON.parse(s.responseText),e&&"string"==typeof e.location?void t(a(i.basePath,e.location)):void n("Invalid JSON: "+s.responseText))},l=new FormData,l.append("file",e.blob(),o(e)),s.send(l)}function c(){return new e(function(e){e([])})}function u(e,t){return{url:t,blobInfo:e,status:!0}}function d(e,t){return{url:"",blobInfo:e,status:!1,error:t}}function f(e,n){t.each(y[e],function(e){e(n)}),delete y[e]}function h(t,n,i){return r.markPending(t.blobUri()),new e(function(e){var o,a,l=function(){};try{var c=function(){o&&(o.close(),a=l)},h=function(n){c(),r.markUploaded(t.blobUri(),n),f(t.blobUri(),u(t,n)),e(u(t,n))},p=function(){c(),r.removeFailed(t.blobUri()),f(t.blobUri(),d(t,p)),e(d(t,p))};a=function(e){0>e||e>100||(o||(o=i()),o.progressBar.value(e))},n(s(t),h,p,a)}catch(m){e(d(t,m.message))}})}function p(e){return e===l}function m(t){var n=t.blobUri();return new e(function(e){y[n]=y[n]||[],y[n].push(e)})}function g(n,o){return n=t.grep(n,function(e){return!r.isUploaded(e.blobUri())}),e.all(t.map(n,function(e){return r.isPending(e.blobUri())?m(e):h(e,i.handler,o)}))}function v(e,t){return!i.url&&p(i.handler)?c():g(e,t)}var y={};return i=t.extend({credentials:!1,handler:l},i),{upload:v}}}),r(We,[c],function(e){function t(t){return new e(function(e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(){200==this.status&&e(this.response)},n.send()})}function n(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}}function r(t){return new e(function(e){var r,i,o;t=n(t);try{r=atob(t.data)}catch(a){return void e(new Blob([]))}for(i=new Uint8Array(r.length),o=0;o0&&(n&&(l*=-1),r.left+=l,r.right+=l),r}function l(){var n,r,o,a,s;for(n=i("*[contentEditable=false]",t),a=0;a

                ').css(l).appendTo(t),o&&m.addClass("mce-visual-caret-before"),d(),c=a.ownerDocument.createRange(),f=g.firstChild,c.setStart(f,0),c.setEnd(f,1),c):(g=e.insertInline(a,o),c=a.ownerDocument.createRange(),s(g.nextSibling)?(c.setStart(g,0),c.setEnd(g,0)):(c.setStart(g,1),c.setEnd(g,1)),c)}function u(){l(),g&&(e.remove(g),g=null),m&&(m.remove(),m=null),clearInterval(p)}function d(){p=a.setInterval(function(){i("div.mce-visual-caret",t).toggleClass("mce-visual-caret-hidden")},500)}function f(){a.clearInterval(p)}function h(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"}var p,m,g;return{show:c,hide:u,getCss:h,destroy:f}}}),r(Xe,[p,_,W],function(e,t,n){function r(i){function o(t){return e.map(t,function(e){return e=n.clone(e),e.node=i,e})}if(e.isArray(i))return e.reduce(i,function(e,t){return e.concat(r(t))},[]);if(t.isElement(i))return o(i.getClientRects());if(t.isText(i)){var a=i.ownerDocument.createRange();return a.setStart(i,0),a.setEnd(i,i.data.length),o(a.getClientRects())}}return{getClientRects:r}}),r(Ke,[z,p,Xe,U,te,ne,$,W],function(e,t,n,r,i,o,a,s){function l(e,t,n,o){for(;o=i.findNode(o,e,r.isEditableCaretCandidate,t);)if(n(o))return}function c(e,r,i,o,a,s){function c(o){var s,l,c;for(c=n.getClientRects(o),-1==e&&(c=c.reverse()),s=0;s0&&r(l,t.last(f))&&u++,l.line=u,a(l))return!0;f.push(l)}}var u=0,d,f=[],h;return(h=t.last(s.getClientRects()))?(d=s.getNode(),c(d),l(e,o,c,d),f):f}function u(e,t){return t.line>e}function d(e,t){return t.line===e}function f(e,n,r,i){function l(n){return 1==e?t.last(n.getClientRects()):t.last(n.getClientRects())}var c=new o(n),u,d,f,h,p=[],m=0,g,v;1==e?(u=c.next,d=s.isBelow,f=s.isAbove,h=a.after(i)):(u=c.prev,d=s.isAbove,f=s.isBelow,h=a.before(i)),v=l(h);do if(h.isVisible()&&(g=l(h),!f(g,v))){if(p.length>0&&d(g,t.last(p))&&m++,g=s.clone(g),g.position=h,g.line=m,r(g))return p;p.push(g)}while(h=u(h));return p}var h=e.curry,p=h(c,-1,s.isAbove,s.isBelow),m=h(c,1,s.isBelow,s.isAbove);return{upUntil:p,downUntil:m,positionsUntil:f,isAboveLine:h(u),isLine:h(d)}}),r(Ge,[z,p,_,Xe,W,te,U],function(e,t,n,r,i,o,a){function s(e,t){return Math.abs(e.left-t)}function l(e,t){return Math.abs(e.right-t)}function c(e,n){function r(e,t){return e>=t.left&&e<=t.right}return t.reduce(e,function(e,t){var i,o;return i=Math.min(s(e,n),l(e,n)),o=Math.min(s(t,n),l(t,n)),r(n,t)?t:r(n,e)?e:o==i&&m(t.node)?t:i>o?t:e})}function u(e,t,n,r){for(;r=g(r,e,a.isEditableCaretCandidate,t);)if(n(r))return}function d(e,n){function o(e,i){var o;return o=t.filter(r.getClientRects(i),function(t){return!e(t,n)}),a=a.concat(o),0===o.length}var a=[];return a.push(n),u(-1,e,v(o,i.isAbove),n.node),u(1,e,v(o,i.isBelow),n.node),a}function f(e){return t.filter(t.toArray(e.getElementsByTagName("*")),m)}function h(e,t){return{node:e.node,before:s(e,t)=e.top&&i<=e.bottom}),a=c(o,n),a&&(a=c(d(e,a),n),a&&m(a.node))?h(a,n):null}var m=n.isContentEditableFalse,g=o.findNode,v=e.curry;return{findClosestClientRect:c,findLineNodeRects:d,closestCaret:p}}),r(Je,[_,p,z],function(e,t,n){function r(e){function r(e){return i(e)}function a(t){f(e.getBody()).css("cursor",t)}function s(t){return t==g.element||e.dom.isChildOf(t,g.element)?!1:!i(t)}function l(t){var n,r,i,o,s=0,l=0,c,u,d,h;0===t.button&&(n=t.screenX-g.screenX,r=t.screenY-g.screenY,c=Math.max(Math.abs(n),Math.abs(r)),!g.dragging&&c>10&&(g.dragging=!0,a("default"),g.clone=g.element.cloneNode(!0),i=m.getPos(g.element),g.relX=g.clientX-i.x,g.relY=g.clientY-i.y,g.width=g.element.offsetWidth,g.height=g.element.offsetHeight,f(g.clone).css({width:g.width,height:g.height}).removeAttr("data-mce-selected"),g.ghost=f("
                ").css({position:"absolute",opacity:.5,overflow:"hidden",width:g.width,height:g.height}).attr({"data-mce-bogus":"all",unselectable:"on",contenteditable:"false"}).addClass("mce-drag-container mce-reset").append(g.clone).appendTo(e.getBody())[0],o=e.dom.getViewPort(e.getWin()),g.maxX=o.w,g.maxY=o.h),g.dragging&&(e._selectionOverrides.hideFakeCaret(),e.selection.placeCaretAt(t.clientX,t.clientY),u=g.clientX+n-g.relX,d=g.clientY+r+5,u+g.width>g.maxX&&(s=u+g.width-g.maxX),d+g.height>g.maxY&&(l=d+g.height-g.maxY),h="BODY"!=e.getBody().nodeName?e.getBody().getBoundingClientRect():{left:0,top:0},f(g.ghost).css({left:u-h.left,top:d-h.top,width:g.width-s,height:g.height-l})))}function c(t){var n;if(g.dragging&&(e.selection.setRng(e.selection.getSel().getRangeAt(0)),s(e.selection.getNode()))){var r=g.element;if(n=e.fire("drop",{targetClone:r,clientX:t.clientX,clientY:t.clientY}),n.isDefaultPrevented())return;r=n.targetClone,e.undoManager.transact(function(){e.insertContent(m.getOuterHTML(r)),f(g.element).remove()})}d()}function u(a){var s,u;if(d(),0===a.button&&(s=t.find(e.dom.getParents(a.target),n.or(i,o)),r(s))){if(u=e.fire("dragstart",{target:s}),u.isDefaultPrevented())return;e.on("mousemove",l),e.on("mouseup",c),h!=p&&(m.bind(h,"mousemove",l),m.bind(h,"mouseup",c)),g={screenX:a.screenX,screenY:a.screenY,clientX:a.clientX,clientY:a.clientY,element:s -}}}function d(){f(g.ghost).remove(),a(null),e.off("mousemove",l),e.off("mouseup",d),h!=p&&(m.unbind(h,"mousemove",l),m.unbind(h,"mouseup",d)),g={}}var f=e.$,h=document,p=e.getDoc(),m=e.dom,g={};e.on("mousedown",u),e.on("drop",function(t){var n="undefined"!=typeof t.clientX?e.getDoc().elementFromPoint(t.clientX,t.clientY):null;(i(n)||i(e.dom.getContentEditableParent(n)))&&t.preventDefault()})}var i=e.isContentEditableFalse,o=e.isContentEditableTrue;return{init:r}}),r(Qe,[d,ne,$,k,te,Ye,Ke,Ge,_,T,W,I,z,p,u,Je,S],function(e,t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g){function v(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function y(c){function y(e){return c.dom.isBlock(e)}function S(e){e&&c.selection.setRng(e)}function k(){return c.selection.getRng()}function T(e,t){c.selection.scrollIntoView(e,t)}function R(e,t,n){var r;return r=c.fire("ShowCaret",{target:t,direction:e,before:n}),r.isDefaultPrevented()?null:(T(t,-1===e),ie.show(n,t))}function A(e){var t;return ie.hide(),t=c.fire("BeforeObjectSelected",{target:e}),t.isDefaultPrevented()?null:B(e)}function B(e){var t=e.ownerDocument.createRange();return t.selectNode(e),t}function D(e,t){var n=i.isInSameBlock(e,t);return!n&&l.isBr(e.getNode())?!0:n}function L(e,t){return t=i.normalizeRange(e,ee,t),-1==e?n.fromRangeStart(t):n.fromRangeEnd(t)}function M(e){return r.isCaretContainerBlock(e.startContainer)}function P(e,t,n,r){var i,o,a,s;return!r.collapsed&&(i=_(r),x(i))?R(e,i,-1==e):(s=M(r),o=L(e,r),n(o)?A(o.getNode(-1==e)):(o=t(o))?n(o)?R(e,o.getNode(-1==e),1==e):(a=t(o),n(a)&&D(o,a)?R(e,a.getNode(-1==e),1==e):s?V(o.toRange()):null):s?r:null)}function H(e,t,n){var r,i,o,l,c,u,d,f,p;if(p=_(n),r=L(e,n),i=t(ee,a.isAboveLine(1),r),o=h.filter(i,a.isLine(1)),c=h.last(r.getClientRects()),E(r)&&(p=r.getNode()),N(r)&&(p=r.getNode(!0)),!c)return null;if(u=c.left,l=s.findClosestClientRect(o,u),l&&x(l.node))return d=Math.abs(u-l.left),f=Math.abs(u-l.right),R(e,l.node,f>d);if(p){var m=a.positionsUntil(e,ee,a.isAboveLine(1),p);if(l=s.findClosestClientRect(h.filter(m,a.isLine(1)),u))return V(l.position.toRange());if(l=h.last(h.filter(m,a.isLine(0))))return V(l.position.toRange())}}function O(t,r){function i(){var t=c.dom.create(c.settings.forced_root_block);return(!e.ie||e.ie>=11)&&(t.innerHTML='
                '),t}var o,a,s;if(r.collapsed&&c.settings.forced_root_block){if(o=c.dom.getParent(r.startContainer,"PRE"),!o)return;a=1==t?ne(n.fromRangeStart(r)):re(n.fromRangeStart(r)),a||(s=i(),1==t?c.$(o).after(s):c.$(o).before(s),c.selection.select(s,!0),c.selection.collapse())}}function I(e,t,n,r){var i;return(i=P(e,t,n,r))?i:(i=O(e,r),i?i:null)}function F(e,t,n){var r;return(r=H(e,t,n))?r:(r=O(e,n),r?r:null)}function z(){return se("*[data-mce-caret]")[0]}function U(e){e=se(e),e.attr("data-mce-caret")&&(ie.hide(),e.removeAttr("data-mce-caret"),e.removeAttr("data-mce-bogus"),e.removeAttr("style"),S(k()),T(e[0]))}function W(e){var t,r;return e=i.normalizeRange(1,ee,e),t=n.fromRangeStart(e),x(t.getNode())?R(1,t.getNode(),!t.isAtEnd()):x(t.getNode(!0))?R(1,t.getNode(!0),!1):(r=c.dom.getParent(t.getNode(),f.or(x,C)),x(r)?R(1,r,!1):(ie.hide(),null))}function V(e){var t;return e&&e.collapsed?(t=W(e),t?t:e):e}function $(e){var t,i,o,a;return x(e)?(x(e.previousSibling)&&(o=e.previousSibling),i=re(n.before(e)),i||(t=ne(n.after(e))),t&&w(t.getNode())&&(a=t.getNode()),r.remove(e.previousSibling),r.remove(e.nextSibling),c.dom.remove(e),J(),c.dom.isEmpty(c.getBody())?(c.setContent(""),void c.focus()):o?n.after(o).toRange():a?n.before(a).toRange():i?i.toRange():t?t.toRange():null):null}function q(e,t,n){var r=c.dom,i,o,a,s;if(-1===e){if(N(n)&&y(n.getNode(!0)))return $(n.getNode(!0))}else if(E(t)&&y(t.getNode()))return $(t.getNode());if(s=c.schema.getTextBlockElements(),i=r.getParent(t.getNode(),r.isBlock),o=r.getParent(n.getNode(),r.isBlock),i===o||!s[i.nodeName]||!s[o.nodeName])return null;for(;a=i.firstChild;)o.appendChild(a);return c.dom.remove(i),n.toRange()}function j(e,t,n,i){var o,a,s,l;return!i.collapsed&&(o=_(i),x(o))?V($(o)):(a=L(e,i),n(a)&&r.isCaretContainerBlock(i.startContainer)?(l=-1==e?te.prev(a):te.next(a),l?V(l.toRange()):i):t(a)?V($(a.getNode(-1==e))):(s=-1==e?te.prev(a):te.next(a),t(s)?-1===e?q(e,a,s):q(e,s,a):void 0))}function Y(){function e(e,t){var n=t(k());n&&!e.isDefaultPrevented()&&(e.preventDefault(),S(n))}function r(e){for(var t=c.getBody();e&&e!=t;){if(C(e)||x(e))return e;e=e.parentNode}return null}function i(e,t,n){return n.collapsed?!1:h.reduce(n.getClientRects(),function(n,r){return n||u.containsXY(r,e,t)},!1)}function o(e){var t=!1;e.on("touchstart",function(){t=!1}),e.on("touchmove",function(){t=!0}),e.on("touchend",function(e){var n=r(e.target);x(n)?t||(e.preventDefault(),G(A(n))):J()})}function l(){var e,t=r(c.selection.getNode());C(t)&&y(t)&&c.dom.isEmpty(t)&&(e=c.dom.create("br",{"data-mce-bogus":"1"}),c.$(t).empty().append(e),c.selection.setRng(n.before(e).toRange()))}function f(e){var t=z();if(t)return"compositionstart"==e.type?(e.preventDefault(),e.stopPropagation(),void U(t)):void(" "!=t.innerHTML&&U(t))}function g(e){var t;switch(e.keyCode){case d.DELETE:t=l();break;case d.BACKSPACE:t=l()}t&&e.preventDefault()}var v=b(I,1,ne,E),w=b(I,-1,re,N),_=b(j,1,E,N),T=b(j,-1,N,E),B=b(F,-1,a.upUntil),D=b(F,1,a.downUntil);c.on("mouseup",function(){var e=k();e.collapsed&&S(W(e))}),c.on("click",function(e){var t;t=r(e.target),t&&x(t)&&e.preventDefault()});var L=function(e){var r=new t(e);if(!e.firstChild)return!1;var i=n.before(e.firstChild),o=r.next(i);return o&&!E(o)&&!N(o)},M=function(e,t){var n=c.dom.getParent(e,c.dom.isBlock),r=c.dom.getParent(t,c.dom.isBlock);return n===r},P=function(e,t){var n=c.dom.getParent(e,c.dom.isBlock),r=c.dom.getParent(t,c.dom.isBlock);return n&&!M(n,r)&&L(n)};o(c),c.on("mousedown",function(e){var t;if(t=r(e.target))x(t)?(e.preventDefault(),G(A(t))):(J(),i(e.clientX,e.clientY,c.selection.getRng())||c.selection.placeCaretAt(e.clientX,e.clientY));else{J(),ie.hide();var n=s.closestCaret(ee,e.clientX,e.clientY);n&&(P(e.target,n.node)||(e.preventDefault(),c.getBody().focus(),S(R(1,n.node,n.before))))}}),c.on("keydown",function(t){if(!d.modifierPressed(t))switch(t.keyCode){case d.RIGHT:e(t,v);break;case d.DOWN:e(t,D);break;case d.LEFT:e(t,w);break;case d.UP:e(t,B);break;case d.DELETE:e(t,_);break;case d.BACKSPACE:e(t,T);break;default:x(c.selection.getNode())&&t.preventDefault()}}),c.on("keyup compositionstart",function(e){f(e),g(e)},!0),c.on("cut",function(){var e=c.selection.getNode();x(e)&&p.setEditorTimeout(c,function(){S(V($(e)))})}),c.on("getSelectionRange",function(e){var t=e.range;if(ae){if(!ae.parentNode)return void(ae=null);t=t.cloneRange(),t.selectNode(ae),e.range=t}}),c.on("setSelectionRange",function(e){var t;t=G(e.range),t&&(e.range=t)}),c.on("focus",function(){p.setEditorTimeout(c,function(){c.selection.setRng(V(c.selection.getRng()))},0)}),m.init(c)}function X(){var e=c.contentStyles,t=".mce-content-body";e.push(ie.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;width: 100px;height: 100px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")}function K(e){return r.isCaretContainer(e.startContainer)||r.isCaretContainer(e.endContainer)}function G(t){var n,r=c.$,i=c.dom,o,a,s,l,u,d,f,h,p;if(!t)return J(),null;if(t.collapsed){if(J(),!K(t)){if(f=L(1,t),x(f.getNode()))return R(1,f.getNode(),!f.isAtEnd());if(x(f.getNode(!0)))return R(1,f.getNode(!0),!1)}return null}return s=t.startContainer,l=t.startOffset,u=t.endOffset,3==s.nodeType&&0==l&&x(s.parentNode)&&(s=s.parentNode,l=i.nodeIndex(s),s=s.parentNode),1!=s.nodeType?(J(),null):(u==l+1&&(n=s.childNodes[l]),x(n)?(h=p=n.cloneNode(!0),d=c.fire("ObjectSelected",{target:n,targetClone:h}),d.isDefaultPrevented()?(J(),null):(h=d.targetClone,o=r("#"+oe),0===o.length&&(o=r('
                ').attr("id",oe),o.appendTo(c.getBody())),t=c.dom.createRng(),h===p&&e.ie?(o.empty().append(g.ZWSP).append(h).append(g.ZWSP),t.setStart(o[0].firstChild,0),t.setEnd(o[0].lastChild,1)):(o.empty().append("\xa0").append(h).append("\xa0"),t.setStart(o[0].firstChild,1),t.setEnd(o[0].lastChild,0)),o.css({top:i.getPos(n,c.getBody()).y}),o[0].focus(),a=c.selection.getSel(),a.removeAllRanges(),a.addRange(t),c.$("*[data-mce-selected]").removeAttr("data-mce-selected"),n.setAttribute("data-mce-selected",1),ae=n,t)):(J(),null))}function J(){ae&&(ae.removeAttribute("data-mce-selected"),c.$("#"+oe).remove(),ae=null)}function Q(){ie.destroy(),ae=null}function Z(){ie.hide()}var ee=c.getBody(),te=new t(ee),ne=b(v,te.next),re=b(v,te.prev),ie=new o(c.getBody(),y),oe="sel-"+c.dom.uniqueId(),ae,se=c.$;return e.ceFalse&&(Y(),X()),{showBlockCaretContainer:U,hideFakeCaret:Z,destroy:Q}}var b=f.curry,C=l.isContentEditableTrue,x=l.isContentEditableFalse,w=l.isElement,N=i.isAfterContentEditableFalse,E=i.isBeforeContentEditableFalse,_=c.getSelectedNode;return y}),r(Ze,[],function(){var e=0,t=function(){var e=function(){return Math.round(4294967295*Math.random()).toString(36)},t=(new Date).getTime();return"s"+t.toString(36)+e()+e()+e()},n=function(n){return n+e++ +t()};return{uuid:n}}),r(et,[w,g,E,R,A,H,P,Y,J,Q,Z,ee,oe,ae,N,f,Ae,Pe,B,L,Oe,d,m,u,Ie,Fe,ze,je,Qe,Ze],function(e,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,C,x,w,N,E,_,S,k,T,R,A){function B(e,t,i){var o=this,a,s,l;a=o.documentBaseUrl=i.documentBaseURL,s=i.baseURI,l=i.defaultSettings,t=P({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:a,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:o.convertURL,url_converter_scope:o,ie7_compat:!0},l,t),l&&l.external_plugins&&t.external_plugins&&(t.external_plugins=P({},l.external_plugins,t.external_plugins)),o.settings=t,r.language=t.language||"en",r.languageLoad=t.language_load,r.baseURL=i.baseURL,o.id=t.id=e,o.setDirty(!1),o.plugins={},o.documentBaseURI=new p(t.document_base_url||a,{base_uri:s}),o.baseURI=s,o.contentCSS=[],o.contentStyles=[],o.shortcuts=new k(o),o.loadedCSS={},o.editorCommands=new h(o),t.target&&(o.targetElm=t.target),o.suffix=i.suffix,o.editorManager=i,o.inline=t.inline,o.settings.content_editable=o.inline,t.cache_suffix&&(w.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),t.override_viewport===!1&&(w.overrideViewPort=!1),i.fire("SetupEditor",o),o.execCallback("setup",o),o.$=n.overrideDefaults(function(){return{context:o.inline?o.getBody():o.getDoc(),element:o.getBody()}})}var D=e.DOM,L=r.ThemeManager,M=r.PluginManager,P=N.extend,H=N.each,O=N.explode,I=N.inArray,F=N.trim,z=N.resolve,U=g.Event,W=w.gecko,V=w.ie;return B.prototype={render:function(){function e(){D.unbind(window,"ready",e),n.render()}function t(){var e=m.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof r.theme&&"-"!=r.theme.charAt(0)&&!L.urls[r.theme]){var t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",L.load(r.theme,t)}N.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),H(r.external_plugins,function(e,t){M.load(t,e),r.plugins+=" "+t}),H(r.plugins.split(/[ ,]/),function(e){if(e=F(e),e&&!M.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=M.dependencies(e);H(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=M.createUrl(t,e),M.load(e.resource,e)})}else M.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()})}var n=this,r=n.settings,i=n.id,o=n.suffix;if(!U.domLoaded)return void D.bind(window,"ready",e);if(n.getElement()&&w.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var a=n.getElement().form||D.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(D.insertAfter(D.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},D.bind(a,"submit reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return n.editorManager.triggerSave(),n.setDirty(!1),a._mceOldSubmit(a)})),n.windowManager=new v(n),n.notificationManager=new y(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=D.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),n.editorManager.add(n),t()}},init:function(){function e(n){var r=M.get(n),i,o;if(i=M.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=F(n),r&&-1===I(m,n)){if(H(M.dependencies(n),function(t){e(t)}),t.plugins[n])return;o=new r(t,i,t.$),t.plugins[n]=o,o.init&&(o.init(t,i),m.push(n))}}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,c,u,d,f,h,p,m=[];if(this.editorManager.i18n.setCode(n.language),t.rtl=n.rtl_ui||this.editorManager.i18n.rtl,n.aria_label=n.aria_label||D.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),c=L.get(n.theme),t.theme=new c(t,L.urls[n.theme]),t.theme.init&&t.theme.init(t,L.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""),t.$)):t.theme=n.theme),H(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,h=/^[0-9\.]+(|px)$/i,h.test(""+i)&&(i=Math.max(parseInt(i,10),100)),h.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),a>o&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer=l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer=l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&H(O(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return r=s=l=null,t.initContentBody();if(t.iframeHTML=n.doctype+"",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+=''),!w.caretAfter&&n.ie7_compat&&(t.iframeHTML+=''),t.iframeHTML+='',!/#$/.test(document.location.href))for(p=0;p',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",-1!=d.indexOf("=")&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",-1!=f.indexOf("=")&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),n.content_security_policy&&(t.iframeHTML+=''),t.iframeHTML+='
                ';var v='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';document.domain!=location.hostname&&w.ie&&w.ie<12&&(u=v);var y=D.create("iframe",{id:t.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}});if(y.onload=function(){y.onload=null,t.fire("load")},D.setAttrib(y,"src",u||'javascript:""'),t.contentAreaContainer=l.iframeContainer,t.iframeElement=y,s=D.add(l.iframeContainer,y),V)try{t.getDoc()}catch(b){s.src=u=v}l.editorContainer&&(D.get(l.editorContainer).style.display=t.orgDisplay,t.hidden=D.isHidden(l.editorContainer)),t.getElement().style.display="none",D.setAttrib(t.id,"aria-hidden",!0),u||t.initContentBody(),r=s=l=null},initContentBody:function(t){var n=this,r=n.settings,s=n.getElement(),h=n.getDoc(),p,m;r.inline||(n.getElement().style.visibility=n.orgVisibility),t||r.content_editable||(h.open(),h.write(n.iframeHTML),h.close()),r.content_editable&&(n.on("remove",function(){var e=this.getBody();D.removeClass(e,"mce-content-body"),D.removeClass(e,"mce-edit-focus"),D.setAttrib(e,"contentEditable",null)}),D.addClass(s,"mce-content-body"),n.contentDocument=h=r.content_document||document,n.contentWindow=r.content_window||window,n.bodyElement=s,r.content_document=r.content_window=null,r.root_name=s.nodeName.toLowerCase()),p=n.getBody(),p.disabled=!0,n.readonly=r.readonly,n.readonly||(n.inline&&"static"==D.getStyle(p,"position",!0)&&(p.style.position="relative"),p.contentEditable=n.getParam("content_editable_state",!0)),p.disabled=!1,n.editorUpload=new T(n),n.schema=new b(r),n.dom=new e(h,{keep_values:!0,url_converter:n.convertURL,url_converter_scope:n,hex_colors:r.force_hex_style_colors,class_filter:r.class_filter,update_styles:!0,root_element:n.inline?n.getBody():null,collect:r.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new C(r,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var r=e.length,i,o=n.dom,a,s;r--;)if(i=e[r],a=i.attr(t),s="data-mce-"+t,!i.attributes.map[s]){if(0===a.indexOf("data:")||0===a.indexOf("blob:"))continue;"style"===t?(a=o.serializeStyle(o.parseStyle(a),i.name),a.length||(a=null),i.attr(s,a),i.attr(t,a)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name))}}),n.parser.addNodeFilter("script",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("type")||"no/type",0!==r.indexOf("mce-")&&n.attr("type","mce-"+r)}),n.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,r,i=n.schema.getNonEmptyElements();t--;)r=e[t],r.isEmpty(i)&&(r.append(new o("br",1)).shortEnded=!0)}),n.serializer=new a(r,n),n.selection=new l(n.dom,n.getWin(),n.serializer,n),n.formatter=new c(n),n.undoManager=new u(n),n.forceBlocks=new f(n),n.enterKey=new d(n),n._nodeChangeDispatcher=new i(n),n._selectionOverrides=new R(n),n.fire("PreInit"),r.browser_spellcheck||r.gecko_spellcheck||(h.body.spellcheck=!1,D.setAttrib(p,"spellcheck","false")),n.quirks=new x(n),n.fire("PostRender"),r.directionality&&(p.dir=r.directionality),r.nowrap&&(p.style.whiteSpace="nowrap"),r.protect&&n.on("BeforeSetContent",function(e){H(r.protect,function(t){e.content=e.content.replace(t,function(e){return""})})}),n.on("SetContent",function(){n.addVisual(n.getBody())}),r.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
                [\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,n.bindPendingEventDelegates(),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.on("compositionstart compositionend",function(e){n.composing="compositionstart"===e.type}),n.contentStyles.length>0&&(m="",H(n.contentStyles,function(e){m+=e+"\r\n"}),n.dom.addStyle(m)),H(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),r.auto_focus&&E.setEditorTimeout(n,function(){var e;e=r.auto_focus===!0?n:n.editorManager.get(r.auto_focus),e.destroyed||e.focus()},100),s=h=p=null},focus:function(e){function t(e){return n.dom.getParent(e,function(e){return"true"===n.dom.getContentEditable(e)})}var n=this,r=n.selection,i=n.settings.content_editable,o,a,s=n.getDoc(),l=n.getBody(),c;if(!e){if(o=r.getRng(),o.item&&(a=o.item(0)),n.quirks.refreshContentEditable(),c=t(r.getNode()),n.$.contains(l,c))return c.focus(),r.normalize(),void n.editorManager.setActive(n);if(i||(w.opera||n.getBody().focus(),n.getWin().focus()),W||i){if(l.setActive)try{l.setActive()}catch(u){l.focus()}else l.focus();i&&r.normalize()}a&&a.ownerDocument==s&&(o=s.body.createControlRange(),o.addElement(a),o.select())}n.editorManager.setActive(n)},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?z(r):0,n=z(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?(e=n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n.data[t+"."+r]||"{#"+r+"}"}),this.editorManager.translate(e)):""},getLang:function(e,n){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?H(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(e){e=e.split("="),e.length>1?i[F(e[0])]=F(e[1]):i[F(e[0])]=F(e)}):i=r,i):r},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addContextToolbar:function(e,t){var n=this,r;n.contextToolbars=n.contextToolbars||[],"string"==typeof e&&(r=e,e=function(e){return n.dom.is(e,r)}),n.contextToolbars.push({id:A.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){var e=this;e.hidden&&(e.hidden=!1,e.inline?e.getBody().contentEditable=!0:(D.show(e.getContainer()),D.hide(e.id)),e.load(),e.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(V&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e==e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(D.hide(e.getContainer()),D.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;return r?(e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i):void 0},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),"raw"==e.format&&t.fire("RawSaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=D.getParent(t.id,"form"))&&H(i.elements,function(e){return e.name==t.id?(e.value=r,!1):void 0})),e.element=n=null,e.set_dirty!==!1&&t.setDirty(!1),r},setContent:function(e,t){var n=this,r=n.getBody(),i,o;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(o=V&&11>V?"":'
                ',"TABLE"==r.nodeName?e=""+o+"":/^(UL|OL)$/.test(r.nodeName)&&(e="
              • "+o+"
              • "),i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=o,e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):V||e||(e='
                '),n.dom.setHTML(r,e),n.fire("SetContent",t)):("raw"!==t.format&&(e=new s({validate:n.validate},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=F(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?t.serializer.getTrimmedContent():"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),"text"!=e.format?e.content=F(n):e.content=n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e,t){t&&(e=P({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!=t&&this.fire("dirty")},setMode:function(e){S.setMode(this,e)},getContainer:function(){var e=this;return e.container||(e.container=D.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=D.get(this.id)),this.targetElm},getWin:function(){var e=this,t;return e.contentWindow||(t=e.iframeElement,t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),H(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||!n.hasVisual?i.removeClass(e,o):i.addClass(e,o));case"A":return void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&n.hasVisual?i.addClass(e,o):i.removeClass(e,o)))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this;e.removed||(e.save(),e.removed=1,e.unbindAllNativeEvents(),e.hasHiddenInput&&D.remove(e.getElement().nextSibling),e.inline||(V&&10>V&&e.getDoc().execCommand("SelectAll",!1,null),D.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null),e.fire("remove"),e.editorManager.remove(e),D.remove(e.getContainer()),e._selectionOverrides.destroy(),e.editorUpload.destroy(),e.destroy())},destroy:function(e){var t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void t.remove();e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),D.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.bodyElement=t.contentDocument=t.contentWindow=null,t.iframeElement=t.targetElm=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()}},P(B.prototype,_),B}),r(tt,[],function(){var e={},t="en";return{setCode:function(e){e&&(t=e,this.rtl=this.data[e]?"rtl"===this.data[e]._dir:!1)},getCode:function(){return t},rtl:!1,add:function(t,n){var r=e[t];r||(e[t]=r={});for(var i in n)r[i]=n[i];this.setCode(t)},translate:function(n){var r;if(r=e[t],r||(r={}),"undefined"==typeof n)return n;if("string"!=typeof n&&n.raw)return n.raw;if(n.push){var i=n.slice(1);n=(r[n[0]]||n[0]).replace(/\{([0-9]+)\}/g,function(e,t){return i[t]})}return(r[n]||n).replace(/{context:\w+}$/,"")},data:e}}),r(nt,[w,u,d],function(e,t,n){function r(e){function l(){try{return document.activeElement}catch(e){return document.body}}function c(e,t){if(t&&t.startContainer){if(!e.isChildOf(t.startContainer,e.getRoot())||!e.isChildOf(t.endContainer,e.getRoot()))return;return{startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset}}return t}function u(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function d(e){return!!s.getParent(e,r.isEditorUIElement)}function f(r){var f=r.editor;f.on("init",function(){(f.inline||n.ie)&&("onbeforedeactivate"in document&&n.ie<9?f.dom.bind(f.getBody(),"beforedeactivate",function(e){if(e.target==f.getBody())try{f.lastRng=f.selection.getRng()}catch(t){}}):f.on("nodechange mouseup keyup",function(e){var t=l();"nodechange"==e.type&&e.selectionChange||(t&&t.id==f.id+"_ifr"&&(t=f.getBody()),f.dom.isChildOf(t,f.getBody())&&(f.lastRng=f.selection.getRng()))}),n.webkit&&!i&&(i=function(){var t=e.activeEditor;if(t&&t.selection){var n=t.selection.getRng();n&&!n.collapsed&&(f.lastRng=n)}},s.bind(document,"selectionchange",i)))}),f.on("setcontent",function(){f.lastRng=null}),f.on("mousedown",function(){f.selection.lastFocusBookmark=null}),f.on("focusin",function(){var t=e.focusedEditor,n;f.selection.lastFocusBookmark&&(n=u(f,f.selection.lastFocusBookmark),f.selection.lastFocusBookmark=null,f.selection.setRng(n)),t!=f&&(t&&t.fire("blur",{focusedEditor:f}),e.setActive(f),e.focusedEditor=f,f.fire("focus",{blurredEditor:t}),f.focus(!0)),f.lastRng=null}),f.on("focusout",function(){t.setEditorTimeout(f,function(){var t=e.focusedEditor;d(l())||t!=f||(f.fire("blur",{focusedEditor:null}),e.focusedEditor=null,f.selection&&(f.selection.lastFocusBookmark=null))})}),o||(o=function(t){var n=e.activeEditor,r;r=t.target,n&&r.ownerDocument==document&&(n.selection&&r!=n.getBody()&&(n.selection.lastFocusBookmark=c(n.dom,n.lastRng)),r==document.body||d(r)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},s.bind(document,"focusin",o)),f.inline&&!a&&(a=function(t){var n=e.activeEditor,r=n.dom;if(n.inline&&r&&!r.isChildOf(t.target,n.getBody())){var i=n.selection.getRng();i.collapsed||(n.lastRng=i)}},s.bind(document,"mouseup",a))}function h(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(s.unbind(document,"selectionchange",i), -s.unbind(document,"focusin",o),s.unbind(document,"mouseup",a),i=o=a=null)}e.on("AddEditor",f),e.on("RemoveEditor",h)}var i,o,a,s=e.DOM;return r.isEditorUIElement=function(e){return-1!==e.className.toString().indexOf("mce-")},r}),r(rt,[et,g,w,ae,d,m,c,ue,tt,nt],function(e,t,n,r,i,o,a,s,l,c){function u(e){g(C.editors,function(t){"scroll"===e.type?t.fire("ScrollWindow",e):t.fire("ResizeWindow",e)})}function d(e,n){n!==x&&(n?t(window).on("resize scroll",u):t(window).off("resize scroll",u),x=n)}function f(e){var t=C.editors,n;delete t[e.id];for(var r=0;r0&&g(m(t),function(e){var t;(t=p.get(e))?n.push(t):g(document.forms,function(t){g(t.elements,function(t){t.name===e&&(e="mce_editor_"+y++,p.setAttrib(t,"id",e),n.push(t))})})});break;case"textareas":case"specific_textareas":g(p.select("textarea"),function(t){e.editor_deselector&&c(t,e.editor_deselector)||e.editor_selector&&!c(t,e.editor_selector)||n.push(t)})}return n}function d(){function a(t,n,r){var i=new e(t,n,f);m.push(i),i.on("init",function(){++c===y.length&&x(m)}),i.targetElm=i.targetElm||r,i.render()}var c=0,m=[],y;return p.unbind(window,"ready",d),l("onpageload"),y=t.unique(u(n)),n.types?void g(n.types,function(e){o.each(y,function(t){return p.is(t,e.selector)?(a(s(t),v({},n,e),t),!1):!0})}):(o.each(y,function(e){h(f.get(e.id))}),y=o.grep(y,function(e){return!f.get(e.id)}),void g(y,function(e){r(n,e)?i("Could not initialize inline editor on invalid inline target element",e):a(s(e),n,e)}))}var f=this,b,C;C=o.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu"," ");var x=function(e){b=e};return f.settings=n,p.bind(window,"ready",d),new a(function(e){b?e(b):x=function(t){e(t)}})},get:function(e){return arguments.length?e in this.editors?this.editors[e]:null:this.editors},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),d(n,!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),b||(b=function(){t.fire("BeforeUnload")},p.bind(window,"beforeunload",b)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i;{if(e)return"string"==typeof e?(e=e.selector||e,void g(p.select(e),function(e){i=r[e.id],i&&t.remove(i)})):(i=e,r[i.id]?(f(i)&&t.fire("RemoveEditor",{editor:i}),r.length||p.unbind(window,"beforeunload",b),i.remove(),d(r,r.length>0),i):null);for(n=r.length-1;n>=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return i.activeEditor?i.activeEditor.execCommand(t,n,r):!1},triggerSave:function(){g(this.editors,function(e){e.save()})},addI18n:function(e,t){l.add(e,t)},translate:function(e){return l.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!=e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},v(C,s),C.setup(),window.tinymce=window.tinyMCE=C,C}),r(it,[rt,m],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(n,r){"html4"===t.settings.schema&&e(r,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(ot,[ue,m],function(e,t){var n={send:function(e){function r(){!e.async||4==i.readyState||o++>1e4?(e.success&&1e4>o&&200==i.status?e.success.call(e.success_scope,""+i.responseText,i,e):e.error&&e.error.call(e.error_scope,o>1e4?"TIMED_OUT":"GENERAL",i,e),i=null):setTimeout(r,10)}var i,o=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async!==!1,e.data=e.data||"",n.fire("beforeInitialize",{settings:e}),i=new XMLHttpRequest){if(i.overrideMimeType&&i.overrideMimeType(e.content_type),i.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(i.withCredentials=!0),e.content_type&&i.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&t.each(e.requestheaders,function(e){i.setRequestHeader(e.key,e.value)}),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i=n.fire("beforeSend",{xhr:i,settings:e}).xhr,i.send(e.data),!e.async)return r();setTimeout(r,10)}}};return t.extend(n,e),n}),r(at,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb t\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(st,[at,ot,m],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(lt,[w],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(ct,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?u+e:i.indexOf(",",u),-1===r||r>i.length?null:(n=i.substring(u,r),u=r+1,n)}var r,i,s,u=0;if(a={},c){o.load(l),i=o.getAttribute(l)||"";do{var d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function r(){var t,n="";if(c){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var i,o,a,s,l,c;try{if(window.localStorage)return localStorage}catch(u){}return l="tinymce",o=document.documentElement,c=!!o.addBehavior,c&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i}),r(ut,[w,f,N,E,m,d],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each(i,function(e,t){a[t]=e}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(dt,[se,m],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t=this,n=t.settings,r,i,o,a;r=n.firstControlClass,i=n.lastControlClass,e.each(function(e){e.classes.remove(r).remove(i).add(n.controlClass),e.visible()&&(o||(o=e),a=e)}),o&&o.classes.add(r),a&&a.classes.add(i)},renderHtml:function(e){var t=this,n="";return t.applyClasses(e.items()),e.items().each(function(e){n+=e.renderHtml()}),n},recalc:function(){},postRender:function(){},isNative:function(){return!1}})}),r(ft,[dt],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'
                '+this._super(e)}})}),r(ht,[De],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t._super(e),e=t.settings,n=t.settings.size,t.on("click mousedown",function(e){e.preventDefault()}),t.on("touchstart",function(e){t.fire("click",e),e.preventDefault()}),e.subtype&&t.classes.add(e.subtype),n&&t.classes.add("btn-"+n),e.icon&&t.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e=this.getEl().firstChild,t;e&&(t=e.style,t.width=t.height="100%"),this._super()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("icon"),i,o=e.state.get("text"),a="";return i=e.settings.image,i?(r="none","string"!=typeof i&&(i=window.getSelection?i[0]:i[1]),i=" style=\"background-image: url('"+i+"')\""):i="",o&&(e.classes.add("btn-has-text"),a=''+e.encode(o)+""),r=e.settings.icon?n+"ico "+n+"i-"+r:"",'
                "},bindStates:function(){function e(e){var i=n("span."+r,t.getEl());e?(i[0]||(n("button:first",t.getEl()).append(''),i=n("span."+r,t.getEl())),i.html(t.encode(e))):i.remove(),t.classes.toggle("btn-has-text",!!e)}var t=this,n=t.$,r=t.classPrefix+"txt";return t.state.on("change:text",function(t){e(t.value)}),t.state.on("change:icon",function(n){var r=n.value,i=t.classPrefix;t.settings.icon=r,r=r?i+"ico "+i+"i-"+t.settings.icon:"";var o=t.getEl().firstChild,a=o.getElementsByTagName("i")[0];r?(a&&a==o.firstChild||(a=document.createElement("i"),o.insertBefore(a,o.firstChild)),a.className=r):a&&o.removeChild(a),e(t.state.get("text"))}),t._super()}})}),r(pt,[xe],function(e){return e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'
                '+(e.settings.html||"")+t.renderHtml(e)+"
                "}})}),r(mt,[De],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'
                '+e.encode(e.state.get("text"))+"
                "},bindStates:function(){function e(e){t.classes.toggle("checked",e),t.aria("checked",e)}var t=this;return t.state.on("change:text",function(e){t.getEl("al").firstChild.data=t.translate(e.value)}),t.state.on("change:checked change:value",function(n){t.fire("change"),e(n.value)}),t.state.on("change:icon",function(e){var n=e.value,r=t.classPrefix;if("undefined"==typeof n)return t.settings.icon;t.settings.icon=n,n=n?r+"ico "+r+"i-"+t.settings.icon:"";var i=t.getEl().firstChild,o=i.getElementsByTagName("i")[0];n?(o&&o==i.firstChild||(o=document.createElement("i"),i.insertBefore(o,i.firstChild)),o.className=n):o&&i.removeChild(o)}),t.state.get("checked")&&e(!0),t._super()}})}),r(gt,[De,be,pe,g],function(e,t,n,r){return e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.classes.add("combobox"),t.subinput=!0,t.ariaTarget="inp",e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){var i=n.target,o=t.getEl();if(r.contains(o,i)||i==o)for(;i&&i!=o;)i.id&&-1!=i.id.indexOf("-open")&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),i=i.parentNode}),t.on("keydown",function(e){"INPUT"==e.target.nodeName&&13==e.keyCode&&t.parents().reverse().each(function(n){var r=t.state.get("value"),i=t.getEl("inp").value;return e.preventDefault(),t.state.set("value",i),r!=i&&t.fire("change"),n.hasEventListeners("submit")&&n.toJSON?(n.fire("submit",{data:n.toJSON()}),!1):void 0})}),t.on("keyup",function(e){"INPUT"==e.target.nodeName&&t.state.set("value",e.target.value)})},showMenu:function(){var e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,t=e.getEl(),i=e.getEl("open"),o=e.layoutRect(),a,s;a=i?o.w-n.getSize(i).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(s=e.layoutRect().h-2+"px"),r(t.firstChild).css({width:a,lineHeight:s}),e._super(),e},postRender:function(){var e=this;return r(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=e.state.get("value")||"",o,a,s="",l="";return"spellcheck"in n&&(l+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+=' maxlength="'+n.maxLength+'"'),n.size&&(l+=' size="'+n.size+'"'),n.subtype&&(l+=' type="'+n.subtype+'"'),e.disabled()&&(l+=' disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico "+r+"i-"+n.icon),a=e.state.get("text"),(o||a)&&(s='
                ",e.classes.add("has-open")),'
                '+s+"
                "},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl("inp").value!=t.value&&(e.getEl("inp").value=t.value)}),e.state.on("change:disabled",function(t){e.getEl("inp").disabled=t.value}),e._super()},remove:function(){r(this.getEl("inp")).off(),this._super()}})}),r(vt,[gt],function(e){return e.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl().getElementsByTagName("i")[0];if(t)try{t.style.background=e}catch(n){}},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}})}),r(yt,[ht,ke],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}})}),r(bt,[yt,w],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("text"),i=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"",a="";return r&&(e.classes.add("btn-has-text"),a=''+e.encode(r)+""),'
                '},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(Ct,[],function(){function e(e){function i(e,i,o){var a,s,l,c,u,d;return a=0,s=0,l=0,e/=255,i/=255,o/=255,u=t(e,t(i,o)),d=n(e,n(i,o)),u==d?(l=u,{h:0,s:0,v:100*l}):(c=e==u?i-o:o==u?e-i:o-e,a=e==u?3:o==u?1:5,a=60*(a-c/(d-u)),s=(d-u)/d,l=d,{h:r(a),s:r(100*s),v:r(100*l)})}function o(e,i,o){var a,s,l,c;if(e=(parseInt(e,10)||0)%360,i=parseInt(i,10)/100,o=parseInt(o,10)/100,i=n(0,t(i,1)),o=n(0,t(o,1)),0===i)return void(d=f=h=r(255*o));switch(a=e/60,s=o*i,l=s*(1-Math.abs(a%2-1)),c=o-s,Math.floor(a)){case 0:d=s,f=l,h=0;break;case 1:d=l,f=s,h=0;break;case 2:d=0,f=s,h=l;break;case 3:d=0,f=l,h=s;break;case 4:d=l,f=0,h=s;break;case 5:d=s,f=0,h=l;break;default:d=f=h=0}d=r(255*(d+c)),f=r(255*(f+c)),h=r(255*(h+c))}function a(){function e(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+e(d)+e(f)+e(h)}function s(){return{r:d,g:f,b:h}}function l(){return i(d,f,h)}function c(e){var t;return"object"==typeof e?"r"in e?(d=e.r,f=e.g,h=e.b):"v"in e&&o(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(d=parseInt(t[1],10),f=parseInt(t[2],10),h=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(d=parseInt(t[1],16),f=parseInt(t[2],16),h=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(d=parseInt(t[1]+t[1],16),f=parseInt(t[2]+t[2],16),h=parseInt(t[3]+t[3],16)),d=0>d?0:d>255?255:d,f=0>f?0:f>255?255:f,h=0>h?0:h>255?255:h,u}var u=this,d=0,f=0,h=0;e&&c(e),u.toRgb=s,u.toHsv=l,u.toHex=a,u.parse=c}var t=Math.min,n=Math.max,r=Math.round;return e}),r(xt,[De,we,pe,Ct],function(e,t,n,r){return e.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){function e(e,t){var r=n.getPos(e),i,o;return i=t.pageX-r.x,o=t.pageY-r.y,i=Math.max(0,Math.min(i/e.clientWidth,1)),o=Math.max(0,Math.min(o/e.clientHeight,1)),{x:i,y:o}}function i(e,t){var i=(360-e.h)/360;n.css(d,{top:100*i+"%"}),t||n.css(h,{left:e.s+"%",top:100-e.v+"%"}),f.style.background=new r({s:100,v:100,h:e.h}).toHex(),s.color().parse({s:e.s,v:e.v,h:e.h})}function o(t){var n;n=e(f,t),c.s=100*n.x,c.v=100*(1-n.y),i(c),s.fire("change")}function a(t){var n;n=e(u,t),c=l.toHsv(),c.h=360*(1-n.y),i(c,!0),s.fire("change")}var s=this,l=s.color(),c,u,d,f,h;u=s.getEl("h"),d=s.getEl("hp"),f=s.getEl("sv"),h=s.getEl("svp"),s._repaint=function(){c=l.toHsv(),i(c)},s._super(),s._svdraghelper=new t(s._id+"-sv",{start:o,drag:o}),s._hdraghelper=new t(s._id+"-h",{start:a,drag:a}),s._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){var t=this;return arguments.length?(t.color().parse(e),void(t._rendered&&t._repaint())):t.color().toHex()},color:function(){return this._color||(this._color=new r),this._color},renderHtml:function(){function e(){var e,t,n="",i,a;for(i="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",a=o.split(","),e=0,t=a.length-1;t>e;e++)n+='
                ';return n}var t=this,n=t._id,r=t.classPrefix,i,o="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000",a="background: -ms-linear-gradient(top,"+o+");background: linear-gradient(to bottom,"+o+");";return i='
                '+e()+'
                ','
                '+i+"
                "}})}),r(wt,[De],function(e){return e.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.classes.add("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.row()[n],index:n})}),t.row(t.settings.row)},focus:function(){var e=this;return e.getEl().firstChild.focus(),e},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){var e=this;return'
                '+e._getDataPathHtml(e.state.get("row"))+"
                "},bindStates:function(){var e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(e){var t=this,n=e||[],r,i,o="",a=t.classPrefix;for(r=0,i=n.length;i>r;r++)o+=(r>0?'":"")+'
                '+n[r].name+"
                ";return o||(o='
                \xa0
                '),o}})}),r(Nt,[wt],function(e){return e.extend({postRender:function(){function e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var t=this,n=t.settings.editor;return n.settings.elementpath!==!1&&(t.on("select",function(e){n.focus(),n.selection.select(this.row()[e.index].element),n.nodeChanged()}),n.on("nodeChange",function(r){for(var i=[],o=r.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=n.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});if(s.isDefaultPrevented()||i.push({name:s.name,element:o[a]}),s.isPropagationStopped())break}t.row(i)})),t._super()}})}),r(Et,[xe],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'
                '+(e.settings.title?'
                '+e.settings.title+"
                ":"")+'
                '+(e.settings.html||"")+t.renderHtml(e)+"
                "}})}),r(_t,[xe,Et,m],function(e,t,n){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,r=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),r.each(function(r){var i,o=r.settings.label;o&&(i=new t(n.extend({items:{type:"label",id:r._id+"-l",text:o,flex:0,forId:r._id,disabled:r.disabled()}},e.settings.formItemDefaults)),i.type="formitem",r.aria("labelledby",r._id+"-l"),"undefined"==typeof r.settings.flex&&(r.settings.flex=1),e.replace(r,i),i.add(r))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.fromJSON(e.settings.data)},bindStates:function(){function e(){var e=0,n=[],r,i,o;if(t.settings.labelGapCalc!==!1)for(o="children"==t.settings.labelGapCalc?t.find("formitem"):t.items(),o.filter("formitem").each(function(t){var r=t.items()[0],i=r.getEl().clientWidth;e=i>e?i:e,n.push(r)}),i=t.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=e+i}var t=this;t._super(),t.on("show",e),e()}})}),r(St,[_t],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'
                '+(e.settings.title?''+e.settings.title+"":"")+'
                '+(e.settings.html||"")+t.renderHtml(e)+"
                "}})}),r(kt,[gt,m],function(e,t){return e.extend({init:function(e){var n=this,r=tinymce.activeEditor,i=r.settings,o,a,s;e.spellcheck=!1,s=i.file_picker_types||i.file_browser_callback_types,s&&(s=t.makeMap(s,/[, ]/)),s&&!s[e.filetype]||(a=i.file_picker_callback,!a||s&&!s[e.filetype]?(a=i.file_browser_callback,!a||s&&!s[e.filetype]||(o=function(){a(n.getEl("inp").id,n.value(),e.filetype,window)})):o=function(){var i=n.fire("beforecall").meta;i=t.extend({filetype:e.filetype},i),a.call(r,function(e,t){n.value(e).fire("change",{meta:t})},n.value(),i)}),o&&(e.icon="browse",e.onaction=o),n._super(e)}})}),r(Tt,[ft],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(Rt,[ft],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v=[],y,b,C,x,w,N,E,_,S,k,T,R,A,B,D,L,M,P,H,O,I,F,z=Math.max,U=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e.paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,c=a.spacing||0,"row-reversed"!=f&&"column-reverse"!=f||(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(S="y",E="h",_="minH",k="maxH",R="innerH",T="top",A="deltaH",B="contentH",H="left",M="w",D="x",L="innerW",P="minW",O="right",I="deltaW",F="contentW"):(S="x",E="w",_="minW",k="maxW",R="innerW",T="left",A="deltaW",B="contentW",H="top",M="h",D="y",L="innerH",P="minH",O="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],N=u=0,t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),m=h.settings,g=m.flex,d-=n-1>t?c:0,g>0&&(u+=g,p[k]&&v.push(h),p.flex=g),d-=p[_],y=o[H]+p[P]+o[O],y>N&&(N=y);if(x={},0>d?x[_]=i[_]-d+i[A]:x[_]=i[R]-d+i[A],x[P]=N+i[I],x[B]=i[R]-d,x[F]=N,x.minW=U(x.minW,i.maxW),x.minH=U(x.minH,i.maxH),x.minW=z(x.minW,i.startMinWidth),x.minH=z(x.minH,i.startMinHeight),!i.autoResize||x.minW==i.minW&&x.minH==i.minH){for(C=d/u,t=0,n=v.length;n>t;t++)h=v[t],p=h.layoutRect(),b=p[k],y=p[_]+p.flex*C,y>b?(d-=p[k]-p[_],u-=p.flex,p.flex=0,p.maxFlexSize=b):p.maxFlexSize=0;for(C=d/u,w=o[T],x={},0===u&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],0>w&&(w=o[T])):"justify"==l&&(w=o[T],c=Math.floor(d/(r.length-1)))),x[D]=o[H],t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),y=p.maxFlexSize||p[_],"center"===s?x[D]=Math.round(i[L]/2-p[M]/2):"stretch"===s?(x[M]=z(p[P]||0,i[L]-o[H]-o[O]),x[D]=o[H]):"end"===s&&(x[D]=i[L]-p[M]-o.top),p.flex>0&&(y+=p.flex*C),x[E]=y,x[S]=w,h.layoutRect(x),h.recalc&&h.recalc(),w+=y+c}else if(x.w=x.minW,x.h=x.minH,e.layoutRect(x),this.recalc(e),null===e._lastRect){var W=e.parent();W&&(W._lastRect=null,W.recalc())}}})}),r(At,[dt],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}})}),r(Bt,[ye,De,ke,m,rt,d],function(e,t,n,r,i,o){function a(e){function t(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;s(i.parents,function(e){return s(t,function(t){return n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a?!1:void 0}),a?!1:void 0}),r.value(a)})}}function r(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function i(){function t(e){var n=[];if(e)return s(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{ -var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a,o.cmd=e.cmd}n.push(o)}),n}function n(){var n;return n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var r=0,i=[],o=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return e.on("init",function(){s(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){return this.settings.format?e.formatter.getCssText(this.settings.format):void 0},onPostRender:function(){var t=this;t.parent().on("show",function(){var n,r;n=t.settings.format,n&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),r=t.settings.cmd,r&&t.active(e.queryCommandState(r))})},onclick:function(){this.settings.format&&c(this.settings.format),this.settings.cmd&&e.execCommand(this.settings.cmd)}}}}function o(t){return function(){var n=this;e.formatter?e.formatter.formatChanged(t,function(e){n.active(e)}):e.on("init",function(){e.formatter.formatChanged(t,function(e){n.active(e)})})}}function a(t){return function(){function n(){return e.undoManager?e.undoManager[t]():!1}var r=this;t="redo"==t?"hasRedo":"hasUndo",r.disabled(!n()),e.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){r.disabled(e.readonly||!n())})}}function l(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function c(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}var u;u=i(),s({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:o(n),onclick:function(){c(n)}})}),s({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),s({blockquote:["Blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:o(n)})}),e.addButton("undo",{tooltip:"Undo",onPostRender:a("undo"),cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:a("redo"),cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:a("undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:a("redo"),cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:l,cmd:"mceToggleVisualAid"}),e.addButton("remove",{tooltip:"Remove",icon:"remove",cmd:"Delete"}),s({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:u}),e.addButton("formatselect",function(){var n=[],i=r(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");return s(i,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:i[0][0],values:n,fixedWidth:!0,onselect:c,onPostRender:t(n)}}),e.addButton("fontselect",function(){var n="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",i=[],o=r(e.settings.font_formats||n);return s(o,function(e){i.push({text:{raw:e[0]},value:e[1],textStyle:-1==e[1].indexOf("dings")?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:i,fixedWidth:!0,onPostRender:t(i,"fontname"),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var n=[],r="8pt 10pt 12pt 14pt 18pt 24pt 36pt",i=e.settings.fontsize_formats||r;return s(i.split(" "),function(e){var t=e,r=e,i=e.split("=");i.length>1&&(t=i[0],r=i[1]),n.push({text:t,value:r})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:n,fixedWidth:!0,onPostRender:t(n,"fontsize"),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:u})}var s=r.each;i.on("AddEditor",function(t){t.editor.rtl&&(e.rtl=!0),a(t.editor)}),e.translate=function(e){return i.translate(e)},t.tooltips=!o.iOS}),r(Dt,[ft],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,C,x,w,N,E=[],_=[],S,k,T,R,A,B;t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,C=t.alignH||t.align,x=t.alignV||t.align,g=e.paddingBox,A="reverseRows"in t?t.reverseRows:e.isRtl(),C&&"string"==typeof C&&(C=[C]),x&&"string"==typeof x&&(x=[x]);for(d=0;r>d;d++)E.push(0);for(f=0;n>f;f++)_.push(0);for(f=0;n>f;f++)for(d=0;r>d&&(u=i[f*r+d],u);d++)c=u.layoutRect(),S=c.minW,k=c.minH,E[d]=S>E[d]?S:E[d],_[f]=k>_[f]?k:_[f];for(T=o.innerW-g.left-g.right,w=0,d=0;r>d;d++)w+=E[d]+(d>0?y:0),T-=(d>0?y:0)+E[d];for(R=o.innerH-g.top-g.bottom,N=0,f=0;n>f;f++)N+=_[f]+(f>0?b:0),R-=(f>0?b:0)+_[f];if(w+=g.left+g.right,N+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=N+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var D;D="start"==t.packV?0:R>0?Math.floor(R/n):0;var L=0,M=t.flexWidths;if(M)for(d=0;dd;d++)E[d]+=M?M[d]*P:P;for(p=g.top,f=0;n>f;f++){for(h=g.left,s=_[f]+D,d=0;r>d&&(B=A?f*r+r-1-d:f*r+d,u=i[B],u);d++)m=u.settings,c=u.layoutRect(),a=Math.max(E[d],c.startMinWidth),c.x=h,c.y=p,v=m.alignH||(C?C[d]||C[0]:null),"center"==v?c.x=h+a/2-c.w/2:"right"==v?c.x=h+a-c.w:"stretch"==v&&(c.w=a),v=m.alignV||(x?x[d]||x[0]:null),"center"==v?c.y=p+s/2-c.h/2:"bottom"==v?c.y=p+s-c.h:"stretch"==v&&(c.h=s),u.layoutRect(c),h+=a+y,u.recalc&&u.recalc();p+=s+b}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var H=e.parent();H&&(H._lastRect=null,H.recalc())}}})}),r(Lt,[De,u],function(e,t){return e.extend({renderHtml:function(){var e=this;return e.classes.add("iframe"),e.canFocus=!1,''},src:function(e){this.getEl().src=e},html:function(e,n){var r=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=e,n&&n()):t.setTimeout(function(){r.html(e)}),this}})}),r(Mt,[De],function(e){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("infobox"),t.canFocus=!1},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},help:function(e){this.state.set("help",e)},renderHtml:function(){var e=this,t=e.classPrefix;return'
                '+e.encode(e.state.get("text"))+'
                '},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl("body").firstChild.data=e.encode(t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e.state.on("change:help",function(t){e.classes.toggle("has-help",t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r(Pt,[De,pe],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var e=this,n=e._super();if(e.settings.multiline){var r=t.getSize(e.getEl());r.width>n.maxW&&(n.minW=n.maxW,e.classes.add("multiline")),e.getEl().style.width=n.minW+"px",n.startMinH=n.h=n.minH=Math.min(n.maxH,t.getSize(e.getEl()).height)}return n},repaint:function(){var e=this;return e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},renderHtml:function(){var e=this,t,n,r=e.settings.forId;return!r&&(n=e.settings.forName)&&(t=e.getRoot().find("#"+n)[0],t&&(r=t._id)),r?'":''+e.encode(e.state.get("text"))+""},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value)),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r(Ht,[xe],function(e){return e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var t=this;t._super(e),t.classes.add("toolbar")},postRender:function(){var e=this;return e.items().each(function(e){e.classes.add("toolbar-item")}),e._super()}})}),r(Ot,[Ht],function(e){return e.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}})}),r(It,[ht,be,Ot],function(e,t,n){function r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var i=e.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(){var e=this,n;return e.menu&&e.menu.visible()?e.hideMenu():(e.menu||(n=e.state.get("menu")||[],n.length?n={type:"menu",items:n}:n.type=n.type||"menu",n.renderTo?e.menu=n.parent(e).show().renderTo():e.menu=t.create(n).parent(e).renderTo(),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control.parent()===e.menu&&(t.stopPropagation(),e.focus(),e.hideMenu())}),e.menu.on("select",function(){e.focus()}),e.menu.on("show hide",function(t){t.control==e.menu&&e.activeMenu("show"==t.type),e.aria("expanded","show"==t.type)}).fire("show")),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),void e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]))},hideMenu:function(){var e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var e=this,t=e._id,r=e.classPrefix,i=e.settings.icon,o,a=e.state.get("text"),s="";return o=e.settings.image,o?(i="none","string"!=typeof o&&(o=window.getSelection?o[0]:o[1]),o=" style=\"background-image: url('"+o+"')\""):o="",a&&(e.classes.add("btn-has-text"),s=''+e.encode(a)+""),i=e.settings.icon?r+"ico "+r+"i-"+i:"",e.aria("role",e.parent()instanceof n?"menuitem":"button"),'
                '},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.showMenu(),t.aria&&e.menu.items()[0].focus())}),e.on("mouseenter",function(t){var n=t.control,r=e.parent(),o;n&&r&&n instanceof i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},bindStates:function(){var e=this;return e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}});return i}),r(Ft,[De,be,d,u],function(e,t,n,r){return e.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t=this,n;t._super(e),e=t.settings,t.classes.add("menu-item"),e.menu&&t.classes.add("menu-item-expand"),e.preview&&t.classes.add("menu-item-preview"),n=t.state.get("text"),"-"!==n&&"|"!==n||(t.classes.add("menu-item-sep"),t.aria("role","separator"),t.state.set("text","-")),e.selectable&&(t.aria("role","menuitemcheckbox"),t.classes.add("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||t.classes.add("menu-item-normal"),t.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&t.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e=this,n=e.settings,r,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){r=e.menu,r?r.show():(r=n.menu,r.length?r={type:"menu",items:r}:r.type=r.type||"menu",i.settings.itemDefaults&&(r.itemDefaults=i.settings.itemDefaults),r=e.menu=t.create(r).parent(e).renderTo(),r.reflow(),r.on("cancel",function(t){t.stopPropagation(),e.focus(),r.hide()}),r.on("show hide",function(e){e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),r.on("hide",function(t){t.control===r&&e.classes.remove("selected")}),r.submenu=!0),r._parentMenu=i,r.classes.add("menu-sub");var o=r.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);r.moveRel(e.getEl(),o),r.rel=o,o="menu-sub-"+o,r.classes.remove(r._lastRel).add(o),r._lastRel=o,e.classes.add("selected"),e.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){function e(e){var t,r,i={};for(i=n.mac?{alt:"⌥",ctrl:"⌘",shift:"⇧",meta:"⌘"}:{meta:"Ctrl"},e=e.split("+"),t=0;t'+("-"!==a?'\xa0":"")+("-"!==a?''+a+"":"")+(c?'
                '+c+"
                ":"")+(i.menu?'
                ':"")+"
                "},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var i=e.getEl("text");i&&i.setAttribute("style",n)}return e.on("mouseenter click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),r.requestAnimationFrame(function(){e.parent().hideAll()})))}),e._super(),e},hover:function(){var e=this;return e.parent().items().each(function(e){e.classes.remove("selected")}),e.classes.toggle("selected",!0),e},active:function(e){return"undefined"!=typeof e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r(zt,[g,ye,u],function(e,t,n){return function(r,i){var o=this,a,s=t.classPrefix,l;o.show=function(t,c){function u(){a&&(e(r).append('
                '),c&&c())}return o.hide(),a=!0,t?l=n.setTimeout(u,t):u(),o},o.hide=function(){var e=r.lastChild;return n.clearTimeout(l),e&&-1!=e.className.indexOf("throbber")&&e.parentNode.removeChild(e),a=!1,o}}}),r(Ut,[ke,Ft,zt,m],function(e,t,n,r){return e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){var t=this;if(e.autohide=!0,e.constrainToViewport=!0,"function"==typeof e.items&&(e.itemsFactory=e.items,e.items=[]),e.itemDefaults)for(var n=e.items,i=n.length;i--;)n[i]=r.extend({},e.itemDefaults,n[i]);t._super(e),t.classes.add("menu")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var e=this;e.hideAll(),e.fire("select")},load:function(){function e(){t.throbber&&(t.throbber.hide(),t.throbber=null)}var t=this,r,i;i=t.settings.itemsFactory,i&&(t.throbber||(t.throbber=new n(t.getEl("body"),!0),0===t.items().length?(t.throbber.show(),t.fire("loading")):t.throbber.show(100,function(){t.items().remove(),t.fire("loading")}),t.on("hide close",e)),t.requestTime=r=(new Date).getTime(),t.settings.itemsFactory(function(n){return 0===n.length?void t.hide():void(t.requestTime===r&&(t.getEl().style.width="",t.getEl("body").style.width="",e(),t.items().remove(),t.getEl("body").innerHTML="",t.add(n),t.renderNew(),t.fire("loaded")))}))},hideAll:function(){var e=this;return this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;return n.icon||n.image||n.selectable?(e._hasIcons=!0,!1):void 0}),e.settings.itemsFactory&&e.on("postrender",function(){e.settings.itemsFactory&&e.load()}),e._super()}})}),r(Wt,[It,Ut],function(e,t){return e.extend({init:function(e){function t(r){for(var a=0;a0&&(o=r[0].text,n.state.set("value",r[0].value)),n.state.set("menu",r)),n.state.set("text",e.text||o),n.classes.add("listbox"),n.on("select",function(t){var r=t.control;a&&(t.lastControl=a),e.multiple?r.active(!r.active()):n.value(t.control.value()),a=r})},bindStates:function(){function e(e,n){e instanceof t&&e.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}function n(e,t){var r;if(e)for(var i=0;i'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),r(qt,[De],function(e){function t(e){var t="";if(e)for(var n=0;n'+e[n]+"";return t}return e.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var t=this;t._super(e),t.settings.size&&(t.size=t.settings.size),t.settings.options&&(t._options=t.settings.options),t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){return e.toJSON?(n=e,!1):void 0}),t.fire("submit",{data:n.toJSON()}))})},options:function(e){return arguments.length?(this.state.set("options",e),this):this.state.get("options")},renderHtml:function(){var e=this,n,r="";return n=t(e._options),e.size&&(r=' size = "'+e.size+'"'),'"},bindStates:function(){var e=this;return e.state.on("change:options",function(n){e.getEl().innerHTML=t(n.value)}),e._super()}})}),r(jt,[De,we,pe],function(e,t,n){function r(e,t,n){return t>e&&(e=t),e>n&&(e=n),e}function i(e,t,n){e.setAttribute("aria-"+t,n)}function o(e,t){var r,o,a,s,l,c;"v"==e.settings.orientation?(s="top",a="height",o="h"):(s="left",a="width",o="w"),c=e.getEl("handle"),r=(e.layoutRect()[o]||100)-n.getSize(c)[a],l=r*((t-e._minValue)/(e._maxValue-e._minValue))+"px",c.style[s]=l,c.style.height=e.layoutRect().h+"px",i(c,"valuenow",t),i(c,"valuetext",""+e.settings.previewFilter(t)),i(c,"valuemin",e._minValue),i(c,"valuemax",e._maxValue)}return e.extend({init:function(e){var t=this;e.previewFilter||(e.previewFilter=function(e){return Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"==e.orientation&&t.classes.add("vertical"),t._minValue=e.minValue||0,t._maxValue=e.maxValue||100,t._initValue=t.state.get("value")},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'
                '},reset:function(){this.value(this._initValue).repaint()},postRender:function(){function e(e,t,n){return(n+e)/(t-e)}function i(e,t,n){return n*(t-e)-e}function o(t,n){function o(o){var a;a=s.value(),a=i(t,n,e(t,n,a)+.05*o),a=r(a,t,n),s.value(a),s.fire("dragstart",{value:a}),s.fire("drag",{value:a}),s.fire("dragend",{value:a})}s.on("keydown",function(e){switch(e.keyCode){case 37:case 38:o(-1);break;case 39:case 40:o(1)}})}function a(e,i,o){var a,l,c,p,m;s._dragHelper=new t(s._id,{handle:s._id+"-handle",start:function(e){a=e[u],l=parseInt(s.getEl("handle").style[d],10),c=(s.layoutRect()[h]||100)-n.getSize(o)[f],s.fire("dragstart",{value:m})},drag:function(t){var n=t[u]-a;p=r(l+n,0,c),o.style[d]=p+"px",m=e+p/c*(i-e),s.value(m),s.tooltip().text(""+s.settings.previewFilter(m)).show().moveRel(o,"bc tc"),s.fire("drag",{value:m})},stop:function(){s.tooltip().hide(),s.fire("dragend",{value:m})}})}var s=this,l,c,u,d,f,h;l=s._minValue,c=s._maxValue,"v"==s.settings.orientation?(u="screenY",d="top",f="height",h="h"):(u="screenX",d="left",f="width",h="w"),s._super(),o(l,c,s.getEl("handle")),a(l,c,s.getEl("handle"))},repaint:function(){this._super(),o(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){o(e,t.value)}),e._super()}})}),r(Yt,[De],function(e){return e.extend({renderHtml:function(){var e=this;return e.classes.add("spacer"),e.canFocus=!1,'
                '}})}),r(Xt,[It,pe,g],function(e,t,n){return e.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e=this,r=e.getEl(),i=e.layoutRect(),o,a;return e._super(),o=r.firstChild,a=r.lastChild,n(o).css({width:i.w-t.getSize(a).width,height:i.h-2}),n(a).css({height:i.h-2}),e},activeMenu:function(e){var t=this;n(t.getEl().lastChild).toggleClass(t.classPrefix+"active",e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r,i=e.state.get("icon"),o=e.state.get("text"),a="";return r=e.settings.image,r?(i="none","string"!=typeof r&&(r=window.getSelection?r[0]:r[1]),r=" style=\"background-image: url('"+r+"')\""):r="",i=e.settings.icon?n+"ico "+n+"i-"+i:"",o&&(e.classes.add("btn-has-text"),a=''+e.encode(o)+""),'
                '},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(e){var n=e.target;if(e.control==this)for(;n;){if(e.aria&&"down"!=e.aria.key||"BUTTON"==n.nodeName&&-1==n.className.indexOf("open"))return e.stopImmediatePropagation(),void(t&&t.call(this,e));n=n.parentNode}}),delete e.settings.onclick,e._super()}})}),r(Kt,[At],function(e){return e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}})}),r(Gt,[Ee,g,pe],function(e,t,n){return e.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var n;this.activeTabId&&(n=this.getEl(this.activeTabId),t(n).removeClass(this.classPrefix+"active"),n.setAttribute("aria-selected","false")),this.activeTabId="t"+e,n=this.getEl("t"+e),n.setAttribute("aria-selected","true"),t(n).addClass(this.classPrefix+"active"),this.items()[e].show().fire("showtab"),this.reflow(),this.items().each(function(t,n){e!=n&&t.hide()})},renderHtml:function(){var e=this,t=e._layout,n="",r=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,i){var o=e._id+"-t"+i;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='"}),'
                '+n+'
                '+t.renderHtml(e)+"
                "},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(t.target.parentNode.id==e._id+"-head")for(var r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var e=this,t,r,i;r=n.getSize(e.getEl("head")).width,r=0>r?0:r,i=0,e.items().each(function(e){r=Math.max(r,e.layoutRect().minW),i=Math.max(i,e.layoutRect().minH)}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=r,e.settings.h=i,e.layoutRect({x:0,y:0,w:r,h:i})});var o=n.getSize(e.getEl("head")).height;return e.settings.minWidth=r,e.settings.minHeight=i+o,t=e._super(),t.deltaH+=o,t.innerH=t.h-t.deltaH,t}})}),r(Jt,[De,m,pe],function(e,t,n){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("textbox"),e.multiline?t.classes.add("multiline"):(t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){return e.toJSON?(n=e,!1):void 0}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){t.state.set("value",e.target.value)}))},repaint:function(){var e=this,t,n,r,i,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e.borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var e=this,r=e.settings,i,o;return i={id:e._id,hidefocus:"1"},t.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(e){i[e]=r[e]}),e.disabled()&&(i.disabled="disabled"),r.subtype&&(i.type=r.subtype),o=n.create(r.multiline?"textarea":"input",i),o.value=e.state.get("value"),o.className=e.classes,o.outerHTML},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var e=this;e.getEl().value=e.state.get("value"),e._super(),e.$el.on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)})},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl().value!=t.value&&(e.getEl().value=t.value)}),e.state.on("change:disabled",function(t){e.getEl().disabled=t.value}),e._super()},remove:function(){this.$el.off(),this._super()}})}),r(Qt,[],function(){var e=this||window,t=function(){return e.tinymce};return"function"==typeof e.define&&(e.define.amd||e.define("ephox/tinymce",[],t)),{}}),a([l,c,u,d,f,h,m,g,v,y,C,w,N,E,T,A,B,D,L,M,P,H,I,F,j,Y,J,Q,oe,ae,se,le,ue,fe,he,ve,ye,be,Ce,xe,we,Ne,Ee,_e,Se,ke,Te,Re,Ae,Be,De,Le,Me,Pe,Ie,ze,et,tt,nt,rt,ot,at,st,lt,ct,ut,dt,ft,ht,pt,mt,gt,vt,yt,bt,Ct,xt,wt,Nt,Et,_t,St,kt,Tt,Rt,At,Bt,Dt,Lt,Mt,Pt,Ht,Ot,It,Ft,zt,Ut,Wt,Vt,$t,qt,jt,Yt,Xt,Kt,Gt,Jt])}(this); \ No newline at end of file +// 4.4.3 (2016-09-01) +!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i=r.x&&o.x+o.w<=r.w+r.x&&o.y>=r.y&&o.y+o.h<=r.h+r.y)return i[a];return null}function n(e,t,n){return o(e.x-t,e.y-n,e.w+2*t,e.h+2*n)}function r(e,t){var n,r,i,a;return n=l(e.x,t.x),r=l(e.y,t.y),i=s(e.x+e.w,t.x+t.w),a=s(e.y+e.h,t.y+t.h),0>i-n||0>a-r?null:o(n,r,i-n,a-r)}function i(e,t,n){var r,i,a,s,c,u,d,f,h,p;return c=e.x,u=e.y,d=e.x+e.w,f=e.y+e.h,h=t.x+t.w,p=t.y+t.h,r=l(0,t.x-c),i=l(0,t.y-u),a=l(0,d-h),s=l(0,f-p),c+=r,u+=i,n&&(d+=r,f+=i,c-=a,u-=s),d-=a,f-=s,o(c,u,d-c,f-u)}function o(e,t,n,r){return{x:e,y:t,w:n,h:r}}function a(e){return o(e.left,e.top,e.width,e.height)}var s=Math.min,l=Math.max,c=Math.round;return{inflate:n,relativePosition:e,findBestRelativePosition:t,intersect:r,clamp:i,create:o,fromClientRect:a}}),r(c,[],function(){function e(e,t){return function(){e.apply(t,arguments)}}function t(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],s(t,e(r,this),e(i,this))}function n(e){var t=this;return null===this._state?void this._deferreds.push(e):void l(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function r(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void s(e(n,t),e(r,this),e(i,this))}this._state=!0,this._value=t,o.call(this)}catch(a){i.call(this,a)}}function i(e){this._state=!1,this._value=e,o.call(this)}function o(){for(var e=0,t=this._deferreds.length;t>e;e++)n.call(this,this._deferreds[e]);this._deferreds=null}function a(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function s(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}if(window.Promise)return window.Promise;var l=t.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)},c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return t.prototype["catch"]=function(e){return this.then(null,e)},t.prototype.then=function(e,r){var i=this;return new t(function(t,o){n.call(i,new a(e,r,t,o))})},t.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&c(arguments[0])?arguments[0]:arguments);return new t(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(l){n(l)}}if(0===e.length)return t([]);for(var i=e.length,o=0;or;r++)e[r].then(t,n)})},t}),r(u,[c],function(e){function t(e,t){function n(e){window.setTimeout(e,0)}var r,i=window.requestAnimationFrame,o=["ms","moz","webkit"];for(r=0;r=534;return{opera:r,webkit:i,ie:o,gecko:l,mac:c,iOS:u,android:d,contentEditable:g,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!=o,range:window.getSelection&&"Range"in window,documentMode:o&&!s?document.documentMode||7:10,fileApi:f,ceFalse:o===!1||o>8,canHaveCSP:o===!1||o>11,desktop:!h&&!p,windowsPhone:m}}),r(f,[u,d],function(e,t){function n(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function r(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function i(e,t){var n,r=t;return n=e.path,n&&n.length>0&&(r=n[0]),e.deepPath&&(n=e.deepPath(),n&&n.length>0&&(r=n[0])),r}function o(e,n){function r(){return!1}function o(){return!0}var a,s=n||{},l;for(a in e)u[a]||(s[a]=e[a]);if(s.target||(s.target=s.srcElement||document),t.experimentalShadowDom&&(s.target=i(e,s.target)),e&&c.test(e.type)&&e.pageX===l&&e.clientX!==l){var d=s.target.ownerDocument||document,f=d.documentElement,h=d.body;s.pageX=e.clientX+(f&&f.scrollLeft||h&&h.scrollLeft||0)-(f&&f.clientLeft||h&&h.clientLeft||0),s.pageY=e.clientY+(f&&f.scrollTop||h&&h.scrollTop||0)-(f&&f.clientTop||h&&h.clientTop||0)}return s.preventDefault=function(){s.isDefaultPrevented=o,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},s.stopPropagation=function(){s.isPropagationStopped=o,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},s.stopImmediatePropagation=function(){s.isImmediatePropagationStopped=o,s.stopPropagation()},s.isDefaultPrevented||(s.isDefaultPrevented=r,s.isPropagationStopped=r,s.isImmediatePropagationStopped=r),"undefined"==typeof s.metaKey&&(s.metaKey=!1),s}function a(t,i,o){function a(){o.domLoaded||(o.domLoaded=!0,i(u))}function s(){("complete"===c.readyState||"interactive"===c.readyState&&c.body)&&(r(c,"readystatechange",s),a())}function l(){try{c.documentElement.doScroll("left")}catch(t){return void e.setTimeout(l)}a()}var c=t.document,u={type:"ready"};return o.domLoaded?void i(u):(c.addEventListener?"complete"===c.readyState?a():n(t,"DOMContentLoaded",a):(n(c,"readystatechange",s),c.documentElement.doScroll&&t.self===t.top&&l()),void n(t,"load",a))}function s(){function e(e,t){var n,r,o,a,s=i[t];if(n=s&&s[e.type])for(r=0,o=n.length;o>r;r++)if(a=n[r],a&&a.func.call(a.scope,e)===!1&&e.preventDefault(),e.isImmediatePropagationStopped())return}var t=this,i={},s,c,u,d,f;c=l+(+new Date).toString(32),d="onmouseenter"in document.documentElement,u="onfocusin"in document.documentElement,f={mouseenter:"mouseover",mouseleave:"mouseout"},s=1,t.domLoaded=!1,t.events=i,t.bind=function(r,l,h,p){function m(t){e(o(t||N.event),g)}var g,v,y,b,C,x,w,N=window;if(r&&3!==r.nodeType&&8!==r.nodeType){for(r[c]?g=r[c]:(g=s++,r[c]=g,i[g]={}),p=p||r,l=l.split(" "),y=l.length;y--;)b=l[y],x=m,C=w=!1,"DOMContentLoaded"===b&&(b="ready"),t.domLoaded&&"ready"===b&&"complete"==r.readyState?h.call(p,o({type:b})):(d||(C=f[b],C&&(x=function(t){var n,r;if(n=t.currentTarget,r=t.relatedTarget,r&&n.contains)r=n.contains(r);else for(;r&&r!==n;)r=r.parentNode;r||(t=o(t||N.event),t.type="mouseout"===t.type?"mouseleave":"mouseenter",t.target=n,e(t,g))})),u||"focusin"!==b&&"focusout"!==b||(w=!0,C="focusin"===b?"focus":"blur",x=function(t){t=o(t||N.event),t.type="focus"===t.type?"focusin":"focusout",e(t,g)}),v=i[g][b],v?"ready"===b&&t.domLoaded?h({type:b}):v.push({func:h,scope:p}):(i[g][b]=v=[{func:h,scope:p}],v.fakeName=C,v.capture=w,v.nativeHandler=x,"ready"===b?a(r,x,t):n(r,C||b,x,w)));return r=v=0,h}},t.unbind=function(e,n,o){var a,s,l,u,d,f;if(!e||3===e.nodeType||8===e.nodeType)return t;if(a=e[c]){if(f=i[a],n){for(n=n.split(" "),l=n.length;l--;)if(d=n[l],s=f[d]){if(o)for(u=s.length;u--;)if(s[u].func===o){var h=s.nativeHandler,p=s.fakeName,m=s.capture;s=s.slice(0,u).concat(s.slice(u+1)),s.nativeHandler=h,s.fakeName=p,s.capture=m,f[d]=s}o&&0!==s.length||(delete f[d],r(e,s.fakeName||d,s.nativeHandler,s.capture))}}else{for(d in f)s=f[d],r(e,s.fakeName||d,s.nativeHandler,s.capture);f={}}for(d in f)return t;delete i[a];try{delete e[c]}catch(g){e[c]=null}}return t},t.fire=function(n,r,i){var a;if(!n||3===n.nodeType||8===n.nodeType)return t;i=o(null,i),i.type=r,i.target=n;do a=n[c],a&&e(i,a),n=n.parentNode||n.ownerDocument||n.defaultView||n.parentWindow;while(n&&!i.isPropagationStopped());return t},t.clean=function(e){var n,r,i=t.unbind;if(!e||3===e.nodeType||8===e.nodeType)return t;if(e[c]&&i(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(i(e),r=e.getElementsByTagName("*"),n=r.length;n--;)e=r[n],e[c]&&i(e);return t},t.destroy=function(){i={}},t.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}}var l="mce-data-",c=/^(?:mouse|contextmenu)|click/,u={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1};return s.Event=new s,s.Event.bind(window,"ready",function(){}),s}),r(h,[],function(){function e(e,t,n,r){var i,o,a,s,l,c,d,h,p,m;if((t?t.ownerDocument||t:z)!==D&&B(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(M&&!r){if(i=ve.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&I(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return Z.apply(n,t.getElementsByTagName(e)),n;if((a=i[3])&&x.getElementsByClassName)return Z.apply(n,t.getElementsByClassName(a)),n}if(x.qsa&&(!P||!P.test(e))){if(h=d=F,p=t,m=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(c=_(e),(d=t.getAttribute("id"))?h=d.replace(be,"\\$&"):t.setAttribute("id",h),h="[id='"+h+"'] ",l=c.length;l--;)c[l]=h+f(c[l]);p=ye.test(e)&&u(t.parentNode)||t,m=c.join(",")}if(m)try{return Z.apply(n,p.querySelectorAll(m)),n}catch(g){}finally{d||t.removeAttribute("id")}}}return k(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[F]=!0,e}function i(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=e.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function u(e){return e&&typeof e.getElementsByTagName!==Y&&e}function d(){}function f(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function h(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=W++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,l,c=[U,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[F]||(t[F]={}),(s=l[r])&&s[0]===U&&s[1]===o)return c[2]=s[2];if(l[r]=c,c[2]=e(t,n,a))return!0}}}function p(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(t,n,r){for(var i=0,o=n.length;o>i;i++)e(t,n[i],r);return r}function g(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),c&&t.push(s)));return a}function v(e,t,n,i,o,a){return i&&!i[F]&&(i=v(i)),o&&!o[F]&&(o=v(o,a)),r(function(r,a,s,l){var c,u,d,f=[],h=[],p=a.length,v=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?v:g(v,f,e,s,l),b=n?o||(r?e:p||i)?[]:a:y;if(n&&n(y,b,s,l),i)for(c=g(b,h),i(c,[],s,l),u=c.length;u--;)(d=c[u])&&(b[h[u]]=!(y[h[u]]=d));if(r){if(o||e){if(o){for(c=[],u=b.length;u--;)(d=b[u])&&c.push(y[u]=d);o(null,b=[],c,l)}for(u=b.length;u--;)(d=b[u])&&(c=o?te.call(r,d):f[u])>-1&&(r[c]=!(a[c]=d))}}else b=g(b===a?b.splice(p,b.length):b),o?o(null,a,b,l):Z.apply(a,b)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,l=h(function(e){return e===t},a,!0),c=h(function(e){return te.call(t,e)>-1},a,!0),u=[function(e,n,r){return!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):c(e,n,r))}];i>s;s++)if(n=w.relative[e[s].type])u=[h(p(u),n)];else{if(n=w.filter[e[s].type].apply(null,e[s].matches),n[F]){for(r=++s;i>r&&!w.relative[e[r].type];r++);return v(s>1&&p(u),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&f(e))}u.push(n)}return p(u)}function b(t,n){var i=n.length>0,o=t.length>0,a=function(r,a,s,l,c){var u,d,f,h=0,p="0",m=r&&[],v=[],y=T,b=r||o&&w.find.TAG("*",c),C=U+=null==y?1:Math.random()||.1,x=b.length;for(c&&(T=a!==D&&a);p!==x&&null!=(u=b[p]);p++){if(o&&u){for(d=0;f=t[d++];)if(f(u,a,s)){l.push(u);break}c&&(U=C)}i&&((u=!f&&u)&&h--,r&&m.push(u))}if(h+=p,i&&p!==h){for(d=0;f=n[d++];)f(m,v,a,s);if(r){if(h>0)for(;p--;)m[p]||v[p]||(v[p]=J.call(l));v=g(v)}Z.apply(l,v),c&&!r&&v.length>0&&h+n.length>1&&e.uniqueSort(l)}return c&&(U=C,T=y),m};return i?r(a):a}var C,x,w,N,E,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F="sizzle"+-new Date,z=window.document,U=0,W=0,V=n(),$=n(),q=n(),j=function(e,t){return e===t&&(A=!0),0},Y=typeof t,X=1<<31,K={}.hasOwnProperty,G=[],J=G.pop,Q=G.push,Z=G.push,ee=G.slice,te=G.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},ne="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",re="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",oe="\\["+re+"*("+ie+")(?:"+re+"*([*^$|!~]?=)"+re+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+re+"*\\]",ae=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+oe+")*)|.*)\\)|)",se=new RegExp("^"+re+"+|((?:^|[^\\\\])(?:\\\\.)*)"+re+"+$","g"),le=new RegExp("^"+re+"*,"+re+"*"),ce=new RegExp("^"+re+"*([>+~]|"+re+")"+re+"*"),ue=new RegExp("="+re+"*([^\\]'\"]*?)"+re+"*\\]","g"),de=new RegExp(ae),fe=new RegExp("^"+ie+"$"),he={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ae),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+re+"*(even|odd|(([+-]|)(\\d*)n|)"+re+"*(?:([+-]|)"+re+"*(\\d+)|))"+re+"*\\)|)","i"),bool:new RegExp("^(?:"+ne+")$","i"),needsContext:new RegExp("^"+re+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+re+"*((?:-\\d)?\\d*)"+re+"*\\)|)(?=[^-]|$)","i")},pe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,Ce=new RegExp("\\\\([\\da-f]{1,6}"+re+"?|("+re+")|.)","ig"),xe=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{Z.apply(G=ee.call(z.childNodes),z.childNodes),G[z.childNodes.length].nodeType}catch(we){Z={apply:G.length?function(e,t){Q.apply(e,ee.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}x=e.support={},E=e.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},B=e.setDocument=function(e){function t(e){try{return e.top}catch(t){}return null}var n,r=e?e.ownerDocument||e:z,o=r.defaultView;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,L=r.documentElement,M=!E(r),o&&o!==t(o)&&(o.addEventListener?o.addEventListener("unload",function(){B()},!1):o.attachEvent&&o.attachEvent("onunload",function(){B()})),x.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),x.getElementsByTagName=i(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),x.getElementsByClassName=ge.test(r.getElementsByClassName),x.getById=i(function(e){return L.appendChild(e).id=F,!r.getElementsByName||!r.getElementsByName(F).length}),x.getById?(w.find.ID=function(e,t){if(typeof t.getElementById!==Y&&M){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},w.filter.ID=function(e){var t=e.replace(Ce,xe);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(Ce,xe);return function(e){var n=typeof e.getAttributeNode!==Y&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=x.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==Y?t.getElementsByTagName(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=x.getElementsByClassName&&function(e,t){return M?t.getElementsByClassName(e):void 0},O=[],P=[],(x.qsa=ge.test(r.querySelectorAll))&&(i(function(e){e.innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&P.push("[*^$]="+re+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||P.push("\\["+re+"*(?:value|"+ne+")"),e.querySelectorAll(":checked").length||P.push(":checked")}),i(function(e){var t=r.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&P.push("name"+re+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||P.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),P.push(",.*:")})),(x.matchesSelector=ge.test(H=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(e){x.disconnectedMatch=H.call(e,"div"),H.call(e,"[s!='']:x"),O.push("!=",ae)}),P=P.length&&new RegExp(P.join("|")),O=O.length&&new RegExp(O.join("|")),n=ge.test(L.compareDocumentPosition),I=n||ge.test(L.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},j=n?function(e,t){if(e===t)return A=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!x.sortDetached&&t.compareDocumentPosition(e)===n?e===r||e.ownerDocument===z&&I(z,e)?-1:t===r||t.ownerDocument===z&&I(z,t)?1:R?te.call(R,e)-te.call(R,t):0:4&n?-1:1)}:function(e,t){if(e===t)return A=!0,0;var n,i=0,o=e.parentNode,s=t.parentNode,l=[e],c=[t];if(!o||!s)return e===r?-1:t===r?1:o?-1:s?1:R?te.call(R,e)-te.call(R,t):0;if(o===s)return a(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)c.unshift(n);for(;l[i]===c[i];)i++;return i?a(l[i],c[i]):l[i]===z?-1:c[i]===z?1:0},r):D},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==D&&B(t),n=n.replace(ue,"='$1']"),x.matchesSelector&&M&&(!O||!O.test(n))&&(!P||!P.test(n)))try{var r=H.call(t,n);if(r||x.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(i){}return e(n,D,null,[t]).length>0},e.contains=function(e,t){return(e.ownerDocument||e)!==D&&B(e),I(e,t)},e.attr=function(e,n){(e.ownerDocument||e)!==D&&B(e);var r=w.attrHandle[n.toLowerCase()],i=r&&K.call(w.attrHandle,n.toLowerCase())?r(e,n,!M):t;return i!==t?i:x.attributes||!M?e.getAttribute(n):(i=e.getAttributeNode(n))&&i.specified?i.value:null},e.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},e.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!x.detectDuplicates,R=!x.sortStable&&e.slice(0),e.sort(j),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return R=null,e},N=e.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=N(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=N(t);return n},w=e.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Ce,xe),e[3]=(e[3]||e[4]||e[5]||"").replace(Ce,xe),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&de.test(n)&&(t=_(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Ce,xe).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=V[e+" "];return t||(t=new RegExp("(^|"+re+")"+e+"("+re+"|$)"))&&V(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Y&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:n?(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o+" ").indexOf(r)>-1:"|="===n?o===r||o.slice(0,r.length+1)===r+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var c,u,d,f,h,p,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;p=m="only"===e&&!p&&"nextSibling"}return!0}if(p=[a?g.firstChild:g.lastChild],a&&y){for(u=g[F]||(g[F]={}),c=u[e]||[],h=c[0]===U&&c[1],f=c[0]===U&&c[2],d=h&&g.childNodes[h];d=++h&&d&&d[m]||(f=h=0)||p.pop();)if(1===d.nodeType&&++f&&d===t){u[e]=[U,h,f];break}}else if(y&&(c=(t[F]||(t[F]={}))[e])&&c[0]===U)f=c[1];else for(;(d=++h&&d&&d[m]||(f=h=0)||p.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[F]||(d[F]={}))[e]=[U,f]),d!==t)););return f-=i,f===r||f%r===0&&f/r>=0}}},PSEUDO:function(t,n){var i,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(i=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=te.call(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=S(e.replace(se,"$1"));return i[F]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(e){return e=e.replace(Ce,xe),function(t){return(t.textContent||t.innerText||N(t)).indexOf(e)>-1}}),lang:r(function(t){return fe.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(Ce,xe).toLowerCase(),function(e){var n;do if(n=M?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===L},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return pe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r2&&"ID"===(a=o[0]).type&&x.getById&&9===t.nodeType&&M&&w.relative[o[1].type]){if(t=(w.find.ID(a.matches[0].replace(Ce,xe),t)||[])[0], +!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=he.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(Ce,xe),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&f(o),!e)return Z.apply(n,r),n;break}}return(c||S(e,d))(r,t,!M,n,ye.test(e)&&u(t.parentNode)||t),n},x.sortStable=F.split("").sort(j).join("")===F,x.detectDuplicates=!!A,B(),x.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),x.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(ne,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),e}),r(p,[],function(){function e(e){var t=e,n,r;if(!u(e))for(t=[],n=0,r=e.length;r>n;n++)t[n]=e[n];return t}function n(e,n,r){var i,o;if(!e)return 0;if(r=r||e,e.length!==t){for(i=0,o=e.length;o>i;i++)if(n.call(r,e[i],i,e)===!1)return 0}else for(i in e)if(e.hasOwnProperty(i)&&n.call(r,e[i],i,e)===!1)return 0;return 1}function r(e,t){var r=[];return n(e,function(n,i){r.push(t(n,i,e))}),r}function i(e,t){var r=[];return n(e,function(n,i){t&&!t(n,i,e)||r.push(n)}),r}function o(e,t){var n,r;if(e)for(n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1}function a(e,t,n,r){var i=0;for(arguments.length<3&&(n=e[0]);ir;r++)if(t.call(n,e[r],r,e))return r;return-1}function l(e,n,r){var i=s(e,n,r);return-1!==i?e[i]:t}function c(e){return e[e.length-1]}var u=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return{isArray:u,toArray:e,each:n,map:r,filter:i,indexOf:o,reduce:a,findIndex:s,find:l,last:c}}),r(m,[d,p],function(e,n){function r(e){return null===e||e===t?"":(""+e).replace(h,"")}function i(e,r){return r?"array"==r&&n.isArray(e)?!0:typeof e==r:e!==t}function o(e,t,n){var r;for(e=e||[],t=t||",","string"==typeof e&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n}function a(e,t,n){var r=this,i,o,a,s,l,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),a=e[3].match(/(^|\.)(\w+)$/i)[2],o=r.createNS(e[3].replace(/\.\w+$/,""),n),!o[a]){if("static"==e[2])return o[a]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[a]));t[a]||(t[a]=function(){},c=1),o[a]=t[a],r.extend(o[a].prototype,t),e[5]&&(i=r.resolve(e[5]).prototype,s=e[5].match(/\.(\w+)$/i)[1],l=o[a],c?o[a]=function(){return i[s].apply(this,arguments)}:o[a]=function(){return this.parent=i[s],l.apply(this,arguments)},o[a].prototype[a]=o[a],r.each(i,function(e,t){o[a].prototype[t]=i[t]}),r.each(t,function(e,t){i[t]?o[a].prototype[t]=function(){return this.parent=i[t],e.apply(this,arguments)}:t!=a&&(o[a].prototype[t]=e)})),r.each(t["static"],function(e,t){o[a][t]=e})}}function s(e,n){var r,i,o,a=arguments,s;for(r=1,i=a.length;i>r;r++){n=a[r];for(o in n)n.hasOwnProperty(o)&&(s=n[o],s!==t&&(e[o]=s))}return e}function l(e,t,r,i){i=i||this,e&&(r&&(e=e[r]),n.each(e,function(e,n){return t.call(i,e,n,r)===!1?!1:void l(e,t,r,i)}))}function c(e,t){var n,r;for(t=t||window,e=e.split("."),n=0;nn&&(t=t[e[n]],t);n++);return t}function d(e,t){return!e||i(e,"array")?e:n.map(e.split(t||","),r)}function f(t){var n=e.cacheSuffix;return n&&(t+=(-1===t.indexOf("?")?"?":"&")+n),t}var h=/^\s*|\s*$/g;return{trim:r,isArray:n.isArray,is:i,toArray:n.toArray,makeMap:o,each:n.each,map:n.map,grep:n.filter,inArray:n.indexOf,extend:s,create:a,walk:l,createNS:c,resolve:u,explode:d,_addCacheSuffix:f}}),r(g,[f,h,m,d],function(e,n,r,i){function o(e){return"undefined"!=typeof e}function a(e){return"string"==typeof e}function s(e){return e&&e==e.window}function l(e,t){var n,r,i;for(t=t||w,i=t.createElement("div"),n=t.createDocumentFragment(),i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return n}function c(e,t,n,r){var i;if(a(t))t=l(t,v(e[0]));else if(t.length&&!t.nodeType){if(t=f.makeArray(t),r)for(i=t.length-1;i>=0;i--)c(e,t[i],n,r);else for(i=0;ii&&(a=e[i],t.call(a,i,a)!==!1);i++);return e}function g(e,t){var n=[];return m(e,function(e,r){t(r,e)&&n.push(r)}),n}function v(e){return e?9==e.nodeType?e:e.ownerDocument:w}function y(e,n,r){var i=[],o=e[n];for("string"!=typeof r&&r instanceof f&&(r=r[0]);o&&9!==o.nodeType;){if(r!==t){if(o===r)break;if("string"==typeof r&&f(o).is(r))break}1===o.nodeType&&i.push(o),o=o[n]}return i}function b(e,n,r,i){var o=[];for(i instanceof f&&(i=i[0]);e;e=e[n])if(!r||e.nodeType===r){if(i!==t){if(e===i)break;if("string"==typeof i&&f(e).is(i))break}o.push(e)}return o}function C(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType==n)return e;return null}function x(e,t,n){m(n,function(n,r){e[n]=e[n]||{},e[n][t]=r})}var w=document,N=Array.prototype.push,E=Array.prototype.slice,_=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,S=e.Event,k,T=r.makeMap("children,contents,next,prev"),R=r.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),A=r.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),B={"for":"htmlFor","class":"className",readonly:"readOnly"},D={"float":"cssFloat"},L={},M={},P=/^\s*|\s*$/g;return f.fn=f.prototype={constructor:f,selector:"",context:null,length:0,init:function(e,t){var n=this,r,i;if(!e)return n;if(e.nodeType)return n.context=n[0]=e,n.length=1,n;if(t&&t.nodeType)n.context=t;else{if(t)return f(e).attr(t);n.context=t=document}if(a(e)){if(n.selector=e,r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:_.exec(e),!r)return f(t).find(e);if(r[1])for(i=l(e,v(t)).firstChild;i;)N.call(n,i),i=i.nextSibling;else{if(i=v(t).getElementById(r[2]),!i)return n;if(i.id!==r[2])return n.find(e);n.length=1,n[0]=i}}else this.add(e,!1);return n},toArray:function(){return r.toArray(this)},add:function(e,t){var n=this,r,i;if(a(e))return n.add(f(e));if(t!==!1)for(r=f.unique(n.toArray().concat(f.makeArray(e))),n.length=r.length,i=0;it;t++)f.find(e,this[t],r);return f(r)},filter:function(e){return f("function"==typeof e?g(this.toArray(),function(t,n){return e(n,t)}):f.filter(e,this.toArray()))},closest:function(e){var t=[];return e instanceof f&&(e=e[0]),this.each(function(n,r){for(;r;){if("string"==typeof e&&f(r).is(e)){t.push(r);break}if(r==e){t.push(r);break}r=r.parentNode}}),f(t)},offset:function(e){var t,n,r,i=0,o=0,a;return e?this.css(e):(t=this[0],t&&(n=t.ownerDocument,r=n.documentElement,t.getBoundingClientRect&&(a=t.getBoundingClientRect(),i=a.left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,o=a.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:o})},push:N,sort:[].sort,splice:[].splice},r.extend(f,{extend:r.extend,makeArray:function(e){return s(e)||e.nodeType?[e]:r.toArray(e)},inArray:h,isArray:r.isArray,each:m,trim:p,grep:g,find:n,expr:n.selectors,unique:n.uniqueSort,text:n.getText,contains:n.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!=t[r].nodeType&&t.splice(r,1);return t=1===t.length?f.find.matchesSelector(t[0],e)?[t[0]]:[]:f.find.matches(e,t)}}),m({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return y(e,"parentNode")},next:function(e){return C(e,"nextSibling",1)},prev:function(e){return C(e,"previousSibling",1)},children:function(e){return b(e.firstChild,"nextSibling",1)},contents:function(e){return r.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,t){f.fn[e]=function(n){var r=this,i=[];return r.each(function(){var e=t.call(i,this,n,i);e&&(f.isArray(e)?i.push.apply(i,e):i.push(e))}),this.length>1&&(T[e]||(i=f.unique(i)),0===e.indexOf("parents")&&(i=i.reverse())),i=f(i),n?i.filter(n):i}}),m({parentsUntil:function(e,t){return y(e,"parentNode",t)},nextUntil:function(e,t){return b(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return b(e,"previousSibling",1,t).slice(1)}},function(e,t){f.fn[e]=function(n,r){var i=this,o=[];return i.each(function(){var e=t.call(o,this,n,o);e&&(f.isArray(e)?o.push.apply(o,e):o.push(e))}),this.length>1&&(o=f.unique(o),0!==e.indexOf("parents")&&"prevUntil"!==e||(o=o.reverse())),o=f(o),r?o.filter(r):o}}),f.fn.is=function(e){return!!e&&this.filter(e).length>0},f.fn.init.prototype=f.fn,f.overrideDefaults=function(e){function t(r,i){return n=n||e(),0===arguments.length&&(r=n.element),i||(i=n.context),new t.fn.init(r,i)}var n;return f.extend(t,this),t},i.ie&&i.ie<8&&(x(L,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?k:t},size:function(e){var t=e.size;return 20===t?k:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?k:t}}),x(L,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),i.ie&&i.ie<9&&(D["float"]="styleFloat",x(M,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),f.attrHooks=L,f.cssHooks=M,f}),r(v,[],function(){return function(e,t){function n(e,t,n,r){function i(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+i(t)+i(n)+i(r)}var r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,i=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,o=/\s*([^:]+):\s*([^;]+);?/g,a=/\s+$/,s,l,c={},u,d,f,h="\ufeff";for(e=e||{},t&&(d=t.getValidStyles(),f=t.getInvalidStyles()),u=("\\\" \\' \\; \\: ; : "+h).split(" "),l=0;l-1&&n||(m[e+t]=-1==l?s[0]:s.join(" "),delete m[e+"-top"+t],delete m[e+"-right"+t],delete m[e+"-bottom"+t],delete m[e+"-left"+t])}}function u(e){var t=m[e],n;if(t){for(t=t.split(" "),n=t.length;n--;)if(t[n]!==t[0])return!1;return m[e]=t[0],!0}}function d(e,t,n,r){u(t)&&u(n)&&u(r)&&(m[e]=m[t]+" "+m[n]+" "+m[r],delete m[t],delete m[n],delete m[r])}function f(e){return b=!0,c[e]}function h(e,t){return b&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return c[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function p(t,n,r,i,o,a){if(o=o||a)return o=h(o),"'"+o.replace(/\'/g,"\\'")+"'";if(n=h(n||r||i),!e.allow_script_urls){var s=n.replace(/[\s\r\n]+/,"");if(/(java|vb)script:/i.test(s))return"";if(!e.allow_svg_data_urls&&/^data:image\/svg/i.test(s))return""}return C&&(n=C.call(x,n,"style")),"url('"+n.replace(/\'/g,"\\'")+"')"}var m={},g,v,y,b,C=e.url_converter,x=e.url_converter_scope||this;if(t){for(t=t.replace(/[\u0000-\u001F]/g,""),t=t.replace(/\\[\"\';:\uFEFF]/g,f).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,f)});g=o.exec(t);){if(v=g[1].replace(a,"").toLowerCase(),y=g[2].replace(a,""),y=y.replace(/\\[0-9a-f]+/g,function(e){return String.fromCharCode(parseInt(e.substr(1),16))}),v&&y.length>0){if(!e.allow_script_urls&&("behavior"==v||/expression\s*\(|\/\*|\*\//.test(y)))continue;"font-weight"===v&&"700"===y?y="bold":"color"!==v&&"background-color"!==v||(y=y.toLowerCase()),y=y.replace(r,n),y=y.replace(i,p),m[v]=b?h(y,!0):y}o.lastIndex=g.index+g[0].length}s("border","",!0),s("border","-width"),s("border","-color"),s("border","-style"),s("padding",""),s("margin",""),d("border","border-width","border-style","border-color"),"medium none"===m.border&&delete m.border,"none"===m["border-image"]&&delete m["border-image"]}return m},serialize:function(e,t){function n(t){var n,r,o,a;if(n=d[t])for(r=0,o=n.length;o>r;r++)t=n[r],a=e[t],a!==s&&a.length>0&&(i+=(i.length>0?" ":"")+t+": "+a+";")}function r(e,t){var n;return n=f["*"],n&&n[e]?!1:(n=f[t],!n||!n[e])}var i="",o,a;if(t&&d)n("*"),n(t);else for(o in e)a=e[o],a!==s&&a.length>0&&(f&&!r(o,t)||(i+=(i.length>0?" ":"")+o+": "+a+";"));return i}}}}),r(y,[],function(){return function(e,t){function n(e,n,r,i){var o,a;if(e){if(!i&&e[n])return e[n];if(e!=t){if(o=e[r])return o;for(a=e.parentNode;a&&a!=t;a=a.parentNode)if(o=a[r])return o}}}function r(e,n,r,i){var o,a,s;if(e){if(o=e[r],t&&o===t)return;if(o){if(!i)for(s=o[n];s;s=s[n])if(!s[n])return s;return o}if(a=e.parentNode,a&&a!==t)return a}}var i=e;this.current=function(){return i},this.next=function(e){return i=n(i,"firstChild","nextSibling",e)},this.prev=function(e){return i=n(i,"lastChild","previousSibling",e)},this.prev2=function(e){return i=r(i,"lastChild","previousSibling",e)}}}),r(b,[m],function(e){function t(n){function r(){return P.createDocumentFragment()}function i(e,t){N(F,e,t)}function o(e,t){N(z,e,t)}function a(e){i(e.parentNode,j(e))}function s(e){i(e.parentNode,j(e)+1)}function l(e){o(e.parentNode,j(e))}function c(e){o(e.parentNode,j(e)+1)}function u(e){e?(M[V]=M[W],M[$]=M[U]):(M[W]=M[V],M[U]=M[$]),M.collapsed=F}function d(e){a(e),c(e)}function f(e){i(e,0),o(e,1===e.nodeType?e.childNodes.length:e.nodeValue.length)}function h(e,t){var n=M[W],r=M[U],i=M[V],o=M[$],a=t.startContainer,s=t.startOffset,l=t.endContainer,c=t.endOffset;return 0===e?w(n,r,a,s):1===e?w(i,o,a,s):2===e?w(i,o,l,c):3===e?w(n,r,l,c):void 0}function p(){E(I)}function m(){return E(O)}function g(){return E(H)}function v(e){var t=this[W],r=this[U],i,o;3!==t.nodeType&&4!==t.nodeType||!t.nodeValue?(t.childNodes.length>0&&(o=t.childNodes[r]),o?t.insertBefore(e,o):3==t.nodeType?n.insertAfter(e,t):t.appendChild(e)):r?r>=t.nodeValue.length?n.insertAfter(e,t):(i=t.splitText(r),t.parentNode.insertBefore(e,i)):t.parentNode.insertBefore(e,t)}function y(e){var t=M.extractContents();M.insertNode(e),e.appendChild(t),M.selectNode(e)}function b(){return q(new t(n),{startContainer:M[W],startOffset:M[U],endContainer:M[V],endOffset:M[$],collapsed:M.collapsed,commonAncestorContainer:M.commonAncestorContainer})}function C(e,t){var n;if(3==e.nodeType)return e;if(0>t)return e;for(n=e.firstChild;n&&t>0;)--t,n=n.nextSibling;return n?n:e}function x(){return M[W]==M[V]&&M[U]==M[$]}function w(e,t,r,i){var o,a,s,l,c,u;if(e==r)return t==i?0:i>t?-1:1;for(o=r;o&&o.parentNode!=e;)o=o.parentNode;if(o){for(a=0,s=e.firstChild;s!=o&&t>a;)a++,s=s.nextSibling;return a>=t?-1:1}for(o=e;o&&o.parentNode!=r;)o=o.parentNode;if(o){for(a=0,s=r.firstChild;s!=o&&i>a;)a++,s=s.nextSibling;return i>a?-1:1}for(l=n.findCommonAncestor(e,r),c=e;c&&c.parentNode!=l;)c=c.parentNode;for(c||(c=l),u=r;u&&u.parentNode!=l;)u=u.parentNode;if(u||(u=l),c==u)return 0;for(s=l.firstChild;s;){if(s==c)return-1;if(s==u)return 1;s=s.nextSibling}}function N(e,t,r){var i,o;for(e?(M[W]=t,M[U]=r):(M[V]=t,M[$]=r),i=M[V];i.parentNode;)i=i.parentNode;for(o=M[W];o.parentNode;)o=o.parentNode;o==i?w(M[W],M[U],M[V],M[$])>0&&M.collapse(e):M.collapse(e),M.collapsed=x(),M.commonAncestorContainer=n.findCommonAncestor(M[W],M[V])}function E(e){var t,n=0,r=0,i,o,a,s,l,c;if(M[W]==M[V])return _(e);for(t=M[V],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[W])return S(t,e);++n}for(t=M[W],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[V])return k(t,e);++r}for(o=r-n,a=M[W];o>0;)a=a.parentNode,o--;for(s=M[V];0>o;)s=s.parentNode,o++;for(l=a.parentNode,c=s.parentNode;l!=c;l=l.parentNode,c=c.parentNode)a=l,s=c;return T(a,s,e)}function _(e){var t,n,i,o,a,s,l,c,u;if(e!=I&&(t=r()),M[U]==M[$])return t;if(3==M[W].nodeType){if(n=M[W].nodeValue,i=n.substring(M[U],M[$]),e!=H&&(o=M[W],c=M[U],u=M[$]-M[U],0===c&&u>=o.nodeValue.length-1?o.parentNode.removeChild(o):o.deleteData(c,u),M.collapse(F)),e==I)return;return i.length>0&&t.appendChild(P.createTextNode(i)),t}for(o=C(M[W],M[U]),a=M[$]-M[U];o&&a>0;)s=o.nextSibling,l=D(o,e),t&&t.appendChild(l),--a,o=s;return e!=H&&M.collapse(F),t}function S(e,t){var n,i,o,a,s,l;if(t!=I&&(n=r()),i=R(e,t),n&&n.appendChild(i),o=j(e),a=o-M[U],0>=a)return t!=H&&(M.setEndBefore(e),M.collapse(z)),n;for(i=e.previousSibling;a>0;)s=i.previousSibling,l=D(i,t),n&&n.insertBefore(l,n.firstChild),--a,i=s;return t!=H&&(M.setEndBefore(e),M.collapse(z)),n}function k(e,t){var n,i,o,a,s,l;for(t!=I&&(n=r()),o=A(e,t),n&&n.appendChild(o),i=j(e),++i,a=M[$]-i,o=e.nextSibling;o&&a>0;)s=o.nextSibling,l=D(o,t),n&&n.appendChild(l),--a,o=s;return t!=H&&(M.setStartAfter(e),M.collapse(F)),n}function T(e,t,n){var i,o,a,s,l,c,u;for(n!=I&&(o=r()),i=A(e,n),o&&o.appendChild(i),a=j(e),s=j(t),++a,l=s-a,c=e.nextSibling;l>0;)u=c.nextSibling,i=D(c,n),o&&o.appendChild(i),c=u,--l;return i=R(t,n),o&&o.appendChild(i),n!=H&&(M.setStartAfter(e),M.collapse(F)),o}function R(e,t){var n=C(M[V],M[$]-1),r,i,o,a,s,l=n!=M[V];if(n==e)return B(n,l,z,t);for(r=n.parentNode,i=B(r,z,z,t);r;){for(;n;)o=n.previousSibling,a=B(n,l,z,t),t!=I&&i.insertBefore(a,i.firstChild),l=F,n=o;if(r==e)return i;n=r.previousSibling,r=r.parentNode,s=B(r,z,z,t),t!=I&&s.appendChild(i),i=s}}function A(e,t){var n=C(M[W],M[U]),r=n!=M[W],i,o,a,s,l;if(n==e)return B(n,r,F,t);for(i=n.parentNode,o=B(i,z,F,t);i;){for(;n;)a=n.nextSibling,s=B(n,r,F,t),t!=I&&o.appendChild(s),r=F,n=a;if(i==e)return o;n=i.nextSibling,i=i.parentNode,l=B(i,z,F,t),t!=I&&l.appendChild(o),o=l}}function B(e,t,r,i){var o,a,s,l,c;if(t)return D(e,i);if(3==e.nodeType){if(o=e.nodeValue,r?(l=M[U],a=o.substring(l),s=o.substring(0,l)):(l=M[$],a=o.substring(0,l),s=o.substring(l)),i!=H&&(e.nodeValue=s),i==I)return;return c=n.clone(e,z),c.nodeValue=a,c}if(i!=I)return n.clone(e,z)}function D(e,t){return t!=I?t==H?n.clone(e,F):e:void e.parentNode.removeChild(e)}function L(){return n.create("body",null,g()).outerText}var M=this,P=n.doc,O=0,H=1,I=2,F=!0,z=!1,U="startOffset",W="startContainer",V="endContainer",$="endOffset",q=e.extend,j=n.nodeIndex;return q(M,{startContainer:P,startOffset:0,endContainer:P,endOffset:0,collapsed:F,commonAncestorContainer:P,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:i,setEnd:o,setStartBefore:a,setStartAfter:s,setEndBefore:l,setEndAfter:c,collapse:u,selectNode:d,selectNodeContents:f,compareBoundaryPoints:h,deleteContents:p,extractContents:m,cloneContents:g,insertNode:v,surroundContents:y,cloneRange:b,toStringIE:L}),M}return t.prototype.toString=function(){return this.toStringIE()},t}),r(C,[m],function(e){function t(e){var t;return t=document.createElement("div"),t.innerHTML=e,t.textContent||t.innerText||e}function n(e,t){var n,r,i,a={};if(e){for(e=e.split(","),t=t||10,n=0;n\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=/[<>&\"\']/g,u=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,d={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};o={'"':""","'":"'","<":"<",">":">","&":"&","`":"`"},a={"<":"<",">":">","&":"&",""":'"',"'":"'"},i=n("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var f={encodeRaw:function(e,t){return e.replace(t?s:l,function(e){return o[e]||e})},encodeAllRaw:function(e){return(""+e).replace(c,function(e){return o[e]||e})},encodeNumeric:function(e,t){return e.replace(t?s:l,function(e){return e.length>1?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":o[e]||"&#"+e.charCodeAt(0)+";"})},encodeNamed:function(e,t,n){return n=n||i,e.replace(t?s:l,function(e){return o[e]||n[e]||e})},getEncodeFunc:function(e,t){function a(e,n){return e.replace(n?s:l,function(e){return o[e]||t[e]||"&#"+e.charCodeAt(0)+";"||e})}function c(e,n){return f.encodeNamed(e,n,t)}return t=n(t)||i,e=r(e.replace(/\+/g,",")),e.named&&e.numeric?a:e.named?t?c:f.encodeNamed:e.numeric?f.encodeNumeric:f.encodeRaw},decode:function(e){return e.replace(u,function(e,n){return n?(n="x"===n.charAt(0).toLowerCase()?parseInt(n.substr(1),16):parseInt(n,10),n>65535?(n-=65536,String.fromCharCode(55296+(n>>10),56320+(1023&n))):d[n]||String.fromCharCode(n)):a[e]||i[e]||t(e)})}};return f}),r(x,[m,u],function(e,t){return function(n,r){function i(e){n.getElementsByTagName("head")[0].appendChild(e)}function o(r,o,c){function u(){for(var e=b.passed,t=e.length;t--;)e[t]();b.status=2,b.passed=[],b.failed=[]}function d(){for(var e=b.failed,t=e.length;t--;)e[t]();b.status=3,b.passed=[],b.failed=[]}function f(){var e=navigator.userAgent.match(/WebKit\/(\d*)/);return!!(e&&e[1]<536)}function h(e,n){e()||((new Date).getTime()-y0)return v=n.createElement("style"),v.textContent='@import "'+r+'"',m(),void i(v);p()}i(g),g.href=r}}var a=0,s={},l;r=r||{},l=r.maxLoadTime||5e3,this.load=o}}),r(w,[h,g,v,f,y,b,C,d,m,x],function(e,n,r,i,o,a,s,l,c,u){function d(e,t){var n={},r=t.keep_values,i;return i={set:function(n,r,i){t.url_converter&&(r=t.url_converter.call(t.url_converter_scope||e,r,i,n[0])),n.attr("data-mce-"+i,r).attr(i,r)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},n={style:{set:function(e,t){return null!==t&&"object"==typeof t?void e.css(t):(r&&e.attr("data-mce-style",t),void e.attr("style",t))},get:function(t){var n=t.attr("data-mce-style")||t.attr("style");return n=e.serializeStyle(e.parseStyle(n),t[0].nodeName)}}},r&&(n.href=n.src=i),n}function f(e,t){var n=t.attr("style");n=e.serializeStyle(e.parseStyle(n),t[0].nodeName),n||(n=null),t.attr("data-mce-style",n)}function h(e,t){var n=0,r,i;if(e)for(r=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)i=e.nodeType,(!t||3!=i||i!=r&&e.nodeValue.length)&&(n++,r=i);return n}function p(e,t){var o=this,a;o.doc=e,o.win=window,o.files={},o.counter=0,o.stdMode=!b||e.documentMode>=8,o.boxModel=!b||"CSS1Compat"==e.compatMode||o.stdMode,o.styleSheetLoader=new u(e),o.boundEvents=[],o.settings=t=t||{},o.schema=t.schema,o.styles=new r({url_converter:t.url_converter,url_converter_scope:t.url_converter_scope},t.schema),o.fixDoc(e),o.events=t.ownEvents?new i(t.proxy):i.Event,o.attrHooks=d(o,t),a=t.schema?t.schema.getBlockElements():{},o.$=n.overrideDefaults(function(){return{context:e,element:o.getRoot()}}),o.isBlock=function(e){if(!e)return!1;var t=e.nodeType;return t?!(1!==t||!a[e.nodeName]):!!a[e]}}var m=c.each,g=c.is,v=c.grep,y=c.trim,b=l.ie,C=/^([a-z0-9],?)+$/i,x=/^[ \t\r\n]*$/;return p.prototype={$$:function(e){return"string"==typeof e&&(e=this.get(e)),this.$(e)},root:null,fixDoc:function(e){var t=this.settings,n;if(b&&t.schema){"abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video".replace(/\w+/g,function(t){e.createElement(t)});for(n in t.schema.getCustomElements())e.createElement(n)}},clone:function(e,t){var n=this,r,i;return!b||1!==e.nodeType||t?e.cloneNode(t):(i=n.doc,t?r.firstChild:(r=i.createElement(e.nodeName),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),r))},getRoot:function(){var e=this;return e.settings.root_element||e.doc.body},getViewPort:function(e){var t,n;return e=e?e:this.win,t=e.document,n=this.boxModel?t.documentElement:t.body,{x:e.pageXOffset||n.scrollLeft,y:e.pageYOffset||n.scrollTop,w:e.innerWidth||n.clientWidth,h:e.innerHeight||n.clientHeight}},getRect:function(e){var t=this,n,r;return e=t.get(e),n=t.getPos(e),r=t.getSize(e),{x:n.x,y:n.y,w:r.w,h:r.h}},getSize:function(e){var t=this,n,r;return e=t.get(e),n=t.getStyle(e,"width"),r=t.getStyle(e,"height"),-1===n.indexOf("px")&&(n=0),-1===r.indexOf("px")&&(r=0),{w:parseInt(n,10)||e.offsetWidth||e.clientWidth,h:parseInt(r,10)||e.offsetHeight||e.clientHeight}},getParent:function(e,t,n){return this.getParents(e,t,n,!1)},getParents:function(e,n,r,i){var o=this,a,s=[];for(e=o.get(e),i=i===t,r=r||("BODY"!=o.getRoot().nodeName?o.getRoot().parentNode:null),g(n,"string")&&(a=n, +n="*"===n?function(e){return 1==e.nodeType}:function(e){return o.is(e,a)});e&&e!=r&&e.nodeType&&9!==e.nodeType;){if(!n||n(e)){if(!i)return e;s.push(e)}e=e.parentNode}return i?s:null},get:function(e){var t;return e&&this.doc&&"string"==typeof e&&(t=e,e=this.doc.getElementById(e),e&&e.id!==t)?this.doc.getElementsByName(t)[1]:e},getNext:function(e,t){return this._findSib(e,t,"nextSibling")},getPrev:function(e,t){return this._findSib(e,t,"previousSibling")},select:function(t,n){var r=this;return e(t,r.get(n)||r.settings.root_element||r.doc,[])},is:function(n,r){var i;if(n.length===t){if("*"===r)return 1==n.nodeType;if(C.test(r)){for(r=r.toLowerCase().split(/,/),n=n.nodeName.toLowerCase(),i=r.length-1;i>=0;i--)if(r[i]==n)return!0;return!1}}if(n.nodeType&&1!=n.nodeType)return!1;var o=n.nodeType?[n]:n;return e(r,o[0].ownerDocument||o[0],null,o).length>0},add:function(e,t,n,r,i){var o=this;return this.run(e,function(e){var a;return a=g(t,"string")?o.doc.createElement(t):t,o.setAttribs(a,n),r&&(r.nodeType?a.appendChild(r):o.setHTML(a,r)),i?a:e.appendChild(a)})},create:function(e,t,n){return this.add(this.doc.createElement(e),e,t,n,1)},createHTML:function(e,t,n){var r="",i;r+="<"+e;for(i in t)t.hasOwnProperty(i)&&null!==t[i]&&"undefined"!=typeof t[i]&&(r+=" "+i+'="'+this.encode(t[i])+'"');return"undefined"!=typeof n?r+">"+n+"":r+" />"},createFragment:function(e){var t,n,r=this.doc,i;for(i=r.createElement("div"),t=r.createDocumentFragment(),e&&(i.innerHTML=e);n=i.firstChild;)t.appendChild(n);return t},remove:function(e,t){return e=this.$$(e),t?e.each(function(){for(var e;e=this.firstChild;)3==e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():e.remove(),e.length>1?e.toArray():e[0]},setStyle:function(e,t,n){e=this.$$(e).css(t,n),this.settings.update_styles&&f(this,e)},getStyle:function(e,n,r){return e=this.$$(e),r?e.css(n):(n=n.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),"float"==n&&(n=l.ie&&l.ie<12?"styleFloat":"cssFloat"),e[0]&&e[0].style?e[0].style[n]:t)},setStyles:function(e,t){e=this.$$(e).css(t),this.settings.update_styles&&f(this,e)},removeAllAttribs:function(e){return this.run(e,function(e){var t,n=e.attributes;for(t=n.length-1;t>=0;t--)e.removeAttributeNode(n.item(t))})},setAttrib:function(e,t,n){var r=this,i,o,a=r.settings;""===n&&(n=null),e=r.$$(e),i=e.attr(t),e.length&&(o=r.attrHooks[t],o&&o.set?o.set(e,n,t):e.attr(t,n),i!=n&&a.onSetAttrib&&a.onSetAttrib({attrElm:e,attrName:t,attrValue:n}))},setAttribs:function(e,t){var n=this;n.$$(e).each(function(e,r){m(t,function(e,t){n.setAttrib(r,t,e)})})},getAttrib:function(e,t,n){var r=this,i,o;return e=r.$$(e),e.length&&(i=r.attrHooks[t],o=i&&i.get?i.get(e,t):e.attr(t)),"undefined"==typeof o&&(o=n||""),o},getPos:function(e,t){var r=this,i=0,o=0,a,s=r.doc,l=s.body,c;if(e=r.get(e),t=t||l,e){if(t===l&&e.getBoundingClientRect&&"static"===n(l).css("position"))return c=e.getBoundingClientRect(),t=r.boxModel?s.documentElement:l,i=c.left+(s.documentElement.scrollLeft||l.scrollLeft)-t.clientLeft,o=c.top+(s.documentElement.scrollTop||l.scrollTop)-t.clientTop,{x:i,y:o};for(a=e;a&&a!=t&&a.nodeType;)i+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=e.parentNode;a&&a!=t&&a.nodeType;)i-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode}return{x:i,y:o}},parseStyle:function(e){return this.styles.parse(e)},serializeStyle:function(e,t){return this.styles.serialize(e,t)},addStyle:function(e){var t=this,n=t.doc,r,i;if(t!==p.DOM&&n===document){var o=p.DOM.addedStyles;if(o=o||[],o[e])return;o[e]=!0,p.DOM.addedStyles=o}i=n.getElementById("mceDefaultStyles"),i||(i=n.createElement("style"),i.id="mceDefaultStyles",i.type="text/css",r=n.getElementsByTagName("head")[0],r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i)),i.styleSheet?i.styleSheet.cssText+=e:i.appendChild(n.createTextNode(e))},loadCSS:function(e){var t=this,n=t.doc,r;return t!==p.DOM&&n===document?void p.DOM.loadCSS(e):(e||(e=""),r=n.getElementsByTagName("head")[0],void m(e.split(","),function(e){var i;e=c._addCacheSuffix(e),t.files[e]||(t.files[e]=!0,i=t.create("link",{rel:"stylesheet",href:e}),b&&n.documentMode&&n.recalc&&(i.onload=function(){n.recalc&&n.recalc(),i.onload=null}),r.appendChild(i))}))},addClass:function(e,t){this.$$(e).addClass(t)},removeClass:function(e,t){this.toggleClass(e,t,!1)},hasClass:function(e,t){return this.$$(e).hasClass(t)},toggleClass:function(e,t,r){this.$$(e).toggleClass(t,r).each(function(){""===this.className&&n(this).attr("class",null)})},show:function(e){this.$$(e).show()},hide:function(e){this.$$(e).hide()},isHidden:function(e){return"none"==this.$$(e).css("display")},uniqueId:function(e){return(e?e:"mce_")+this.counter++},setHTML:function(e,t){e=this.$$(e),b?e.each(function(e,r){if(r.canHaveHTML!==!1){for(;r.firstChild;)r.removeChild(r.firstChild);try{r.innerHTML="
                "+t,r.removeChild(r.firstChild)}catch(i){n("
                ").html("
                "+t).contents().slice(1).appendTo(r)}return t}}):e.html(t)},getOuterHTML:function(e){return e=this.get(e),1==e.nodeType&&"outerHTML"in e?e.outerHTML:n("
                ").append(n(e).clone()).html()},setOuterHTML:function(e,t){var r=this;r.$$(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}r.remove(n(this).html(t),!0)})},decode:s.decode,encode:s.encodeAllRaw,insertAfter:function(e,t){return t=this.get(t),this.run(e,function(e){var n,r;return n=t.parentNode,r=t.nextSibling,r?n.insertBefore(e,r):n.appendChild(e),e})},replace:function(e,t,n){var r=this;return r.run(t,function(t){return g(t,"array")&&(e=e.cloneNode(!0)),n&&m(v(t.childNodes),function(t){e.appendChild(t)}),t.parentNode.replaceChild(e,t)})},rename:function(e,t){var n=this,r;return e.nodeName!=t.toUpperCase()&&(r=n.create(t),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),n.replace(r,e,1)),r||e},findCommonAncestor:function(e,t){for(var n=e,r;n;){for(r=t;r&&n!=r;)r=r.parentNode;if(n==r)break;n=n.parentNode}return!n&&e.ownerDocument?e.ownerDocument.documentElement:n},toHex:function(e){return this.styles.toHex(c.trim(e))},run:function(e,t,n){var r=this,i;return"string"==typeof e&&(e=r.get(e)),e?(n=n||this,e.nodeType||!e.length&&0!==e.length?t.call(n,e):(i=[],m(e,function(e,o){e&&("string"==typeof e&&(e=r.get(e)),i.push(t.call(n,e,o)))}),i)):!1},getAttribs:function(e){var t;if(e=this.get(e),!e)return[];if(b){if(t=[],"OBJECT"==e.nodeName)return e.attributes;"OPTION"===e.nodeName&&this.getAttrib(e,"selected")&&t.push({specified:1,nodeName:"selected"});var n=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;return e.cloneNode(!1).outerHTML.replace(n,"").replace(/[\w:\-]+/gi,function(e){t.push({specified:1,nodeName:e})}),t}return e.attributes},isEmpty:function(e,t){var n=this,r,i,a,s,l,c=0;if(e=e.firstChild){s=new o(e,e.parentNode),t=t||(n.schema?n.schema.getNonEmptyElements():null);do{if(a=e.nodeType,1===a){if(e.getAttribute("data-mce-bogus"))continue;if(l=e.nodeName.toLowerCase(),t&&t[l]){if("br"===l){c++;continue}return!1}for(i=n.getAttribs(e),r=i.length;r--;)if(l=i[r].nodeName,"name"===l||"data-mce-bookmark"===l)return!1}if(8==a)return!1;if(3===a&&!x.test(e.nodeValue))return!1}while(e=s.next())}return 1>=c},createRng:function(){var e=this.doc;return e.createRange?e.createRange():new a(this)},nodeIndex:h,split:function(e,t,n){function r(e){function t(e){var t=e.previousSibling&&"SPAN"==e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"==e.nextSibling.nodeName;return t&&n}var n,o=e.childNodes,a=e.nodeType;if(1!=a||"bookmark"!=e.getAttribute("data-mce-type")){for(n=o.length-1;n>=0;n--)r(o[n]);if(9!=a){if(3==a&&e.nodeValue.length>0){var s=y(e.nodeValue).length;if(!i.isBlock(e.parentNode)||s>0||0===s&&t(e))return}else if(1==a&&(o=e.childNodes,1==o.length&&o[0]&&1==o[0].nodeType&&"bookmark"==o[0].getAttribute("data-mce-type")&&e.parentNode.insertBefore(o[0],e),o.length||/^(br|hr|input|img)$/i.test(e.nodeName)))return;i.remove(e)}return e}}var i=this,o=i.createRng(),a,s,l;return e&&t?(o.setStart(e.parentNode,i.nodeIndex(e)),o.setEnd(t.parentNode,i.nodeIndex(t)),a=o.extractContents(),o=i.createRng(),o.setStart(t.parentNode,i.nodeIndex(t)+1),o.setEnd(e.parentNode,i.nodeIndex(e)+1),s=o.extractContents(),l=e.parentNode,l.insertBefore(r(a),e),n?l.insertBefore(n,e):l.insertBefore(t,e),l.insertBefore(r(s),e),i.remove(e),n||t):void 0},bind:function(e,t,n,r){var i=this;if(c.isArray(e)){for(var o=e.length;o--;)e[o]=i.bind(e[o],t,n,r);return e}return!i.settings.collect||e!==i.doc&&e!==i.win||i.boundEvents.push([e,t,n,r]),i.events.bind(e,t,n,r||i)},unbind:function(e,t,n){var r=this,i;if(c.isArray(e)){for(i=e.length;i--;)e[i]=r.unbind(e[i],t,n);return e}if(r.boundEvents&&(e===r.doc||e===r.win))for(i=r.boundEvents.length;i--;){var o=r.boundEvents[i];e!=o[0]||t&&t!=o[1]||n&&n!=o[2]||this.events.unbind(o[0],o[1],o[2])}return this.events.unbind(e,t,n)},fire:function(e,t,n){return this.events.fire(e,t,n)},getContentEditable:function(e){var t;return e&&1==e.nodeType?(t=e.getAttribute("data-mce-contenteditable"),t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null):null},getContentEditableParent:function(e){for(var t=this.getRoot(),n=null;e&&e!==t&&(n=this.getContentEditable(e),null===n);e=e.parentNode);return n},destroy:function(){var t=this;if(t.boundEvents){for(var n=t.boundEvents.length;n--;){var r=t.boundEvents[n];this.events.unbind(r[0],r[1],r[2])}t.boundEvents=null}e.setDocument&&e.setDocument(),t.win=t.doc=t.root=t.events=t.frag=null},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset},_findSib:function(e,t,n){var r=this,i=t;if(e)for("string"==typeof i&&(i=function(e){return r.is(e,t)}),e=e[n];e;e=e[n])if(i(e))return e;return null}},p.DOM=new p(document),p.nodeIndex=h,p}),r(N,[w,m],function(e,t){function n(){function e(e,n){function i(){a.remove(l),s&&(s.onreadystatechange=s.onload=s=null),n()}function o(){"undefined"!=typeof console&&console.log&&console.log("Failed to load: "+e)}var a=r,s,l;l=a.uniqueId(),s=document.createElement("script"),s.id=l,s.type="text/javascript",s.src=t._addCacheSuffix(e),"onreadystatechange"in s?s.onreadystatechange=function(){/loaded|complete/.test(s.readyState)&&i()}:s.onload=i,s.onerror=o,(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}var n=0,a=1,s=2,l={},c=[],u={},d=[],f=0,h;this.isDone=function(e){return l[e]==s},this.markDone=function(e){l[e]=s},this.add=this.load=function(e,t,r){var i=l[e];i==h&&(c.push(e),l[e]=n),t&&(u[e]||(u[e]=[]),u[e].push({func:t,scope:r||this}))},this.remove=function(e){delete l[e],delete u[e]},this.loadQueue=function(e,t){this.loadScripts(c,e,t)},this.loadScripts=function(t,n,r){function c(e){i(u[e],function(e){e.func.call(e.scope)}),u[e]=h}var p;d.push({func:n,scope:r||this}),(p=function(){var n=o(t);t.length=0,i(n,function(t){return l[t]==s?void c(t):void(l[t]!=a&&(l[t]=a,f++,e(t,function(){l[t]=s,f--,c(t),p()})))}),f||(i(d,function(e){e.func.call(e.scope)}),d.length=0)})()}}var r=e.DOM,i=t.each,o=t.grep;return n.ScriptLoader=new n,n}),r(E,[N,m],function(e,n){function r(){var e=this;e.items=[],e.urls={},e.lookup={}}var i=n.each;return r.prototype={get:function(e){return this.lookup[e]?this.lookup[e].instance:t},dependencies:function(e){var t;return this.lookup[e]&&(t=this.lookup[e].dependencies),t||[]},requireLangPack:function(t,n){var i=r.language;if(i&&r.languageLoad!==!1){if(n)if(n=","+n+",",-1!=n.indexOf(","+i.substr(0,2)+","))i=i.substr(0,2);else if(-1==n.indexOf(","+i+","))return;e.ScriptLoader.add(this.urls[t]+"/langs/"+i+".js")}},add:function(e,t,n){return this.items.push(t),this.lookup[e]={instance:t,dependencies:n},t},remove:function(e){delete this.urls[e],delete this.lookup[e]},createUrl:function(e,t){return"object"==typeof t?t:{prefix:e.prefix,resource:t,suffix:e.suffix}},addComponents:function(t,n){var r=this.urls[t];i(n,function(t){e.ScriptLoader.add(r+"/"+t)})},load:function(n,o,a,s){function l(){var r=c.dependencies(n);i(r,function(e){var n=c.createUrl(o,e);c.load(n.resource,n,t,t)}),a&&(s?a.call(s):a.call(e))}var c=this,u=o;c.urls[n]||("object"==typeof o&&(u=o.prefix+o.resource+o.suffix),0!==u.indexOf("/")&&-1==u.indexOf("://")&&(u=r.baseURL+"/"+u),c.urls[n]=u.substring(0,u.lastIndexOf("/")),c.lookup[n]?l():e.ScriptLoader.add(u,l,s))}},r.PluginManager=new r,r.ThemeManager=new r,r}),r(_,[],function(){function e(e){return function(t){return!!t&&t.nodeType==e}}function t(e){return e=e.toLowerCase().split(" "),function(t){var n,r;if(t&&t.nodeType)for(r=t.nodeName.toLowerCase(),n=0;nn.length-1?t=n.length-1:0>t&&(t=0),n[t]||e}function a(e){this.walk=function(t,n){function r(e){var t;return t=e[0],3===t.nodeType&&t===c&&u>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===f&&e.length>0&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e}function i(e,t,n){for(var r=[];e&&e!=n;e=e[t])r.push(e);return r}function a(e,t){do{if(e.parentNode==t)return e;e=e.parentNode}while(e)}function s(e,t,o){var a=o?"nextSibling":"previousSibling";for(g=e,v=g.parentNode;g&&g!=t;g=v)v=g.parentNode,y=i(g==e?g:g[a],a),y.length&&(o||y.reverse(),n(r(y)))}var c=t.startContainer,u=t.startOffset,d=t.endContainer,f=t.endOffset,h,p,m,g,v,y,b;if(b=e.select("td[data-mce-selected],th[data-mce-selected]"),b.length>0)return void l(b,function(e){n([e])});if(1==c.nodeType&&c.hasChildNodes()&&(c=c.childNodes[u]),1==d.nodeType&&d.hasChildNodes()&&(d=o(d,f)),c==d)return n(r([c]));for(h=e.findCommonAncestor(c,d),g=c;g;g=g.parentNode){if(g===d)return s(c,h,!0);if(g===h)break}for(g=d;g;g=g.parentNode){if(g===c)return s(d,h);if(g===h)break}p=a(c,h)||c,m=a(d,h)||d,s(c,p,!0),y=i(p==c?p:p.nextSibling,"nextSibling",m==d?m.nextSibling:m),y.length&&n(r(y)),s(d,m)},this.split=function(e){function t(e,t){return e.splitText(t)}var n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset;return n==i&&3==n.nodeType?r>0&&rr?(o-=r,n=i=t(i,o).previousSibling,o=i.nodeValue.length,r=0):o=0):(3==n.nodeType&&r>0&&r0&&o0)return h=v,p=n?v.nodeValue.length:0,void(i=!0);if(e.isBlock(v)||y[v.nodeName.toLowerCase()])return;s=v}o&&s&&(h=s,i=!0,p=0)}var h,p,m,g=e.getRoot(),v,y,b,C;if(h=n[(r?"start":"end")+"Container"],p=n[(r?"start":"end")+"Offset"],C=1==h.nodeType&&p===h.childNodes.length,y=e.schema.getNonEmptyElements(),b=r,!u(h)){if(1==h.nodeType&&p>h.childNodes.length-1&&(b=!1),9===h.nodeType&&(h=e.getRoot(),p=0),h===g){if(b&&(v=h.childNodes[p>0?p-1:0])){if(u(v))return;if(y[v.nodeName]||"TABLE"==v.nodeName)return}if(h.hasChildNodes()){if(p=Math.min(!b&&p>0?p-1:p,h.childNodes.length-1),h=h.childNodes[p],p=0,!o&&h===g.lastChild&&"TABLE"===h.nodeName)return;if(l(h)||u(h))return;if(h.hasChildNodes()&&!/TABLE/.test(h.nodeName)){v=h,m=new t(h,g);do{if(c(v)||u(v)){i=!1;break}if(3===v.nodeType&&v.nodeValue.length>0){p=b?0:v.nodeValue.length,h=v,i=!0;break}if(y[v.nodeName.toLowerCase()]&&!a(v)){p=e.nodeIndex(v),h=v.parentNode,"IMG"!=v.nodeName||b||p++,i=!0;break}}while(v=b?m.next():m.prev())}}}o&&(3===h.nodeType&&0===p&&f(!0),1===h.nodeType&&(v=h.childNodes[p],v||(v=h.childNodes[p-1]),!v||"BR"!==v.nodeName||d(v,"A")||s(v)||s(v,!0)||f(!0,v))),b&&!o&&3===h.nodeType&&p===h.nodeValue.length&&f(!1),i&&n["set"+(r?"Start":"End")](h,p)}}var i,o;return o=n.collapsed,r(!0),o||r(),i&&o&&n.collapse(!0),i}}function s(t,n,r){var i,o,a;if(i=r.elementFromPoint(t,n),o=r.body.createTextRange(),i&&"HTML"!=i.tagName||(i=r.body),o.moveToElementText(i),a=e.toArray(o.getClientRects()),a=a.sort(function(e,t){return e=Math.abs(Math.max(e.top-n,e.bottom-n)),t=Math.abs(Math.max(t.top-n,t.bottom-n)),e-t}),a.length>0){n=(a[0].bottom+a[0].top)/2;try{return o.moveToPoint(t,n),o.collapse(!0),o}catch(s){}}return null}var l=e.each,c=n.isContentEditableFalse,u=i.isCaretContainer;return a.compareRanges=function(e,t){if(e&&t){if(!e.item&&!e.duplicate)return e.startContainer==t.startContainer&&e.startOffset==t.startOffset;if(e.item&&t.item&&e.item(0)===t.item(0))return!0;if(e.isEqual&&t.isEqual&&t.isEqual(e))return!0}return!1},a.getCaretRangeFromPoint=function(e,t,n){var r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),r.setStart(i.offsetNode,i.offset),r.collapse(!0);else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r=s(e,t,n)}}return r},a.getSelectedNode=function(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset==n+1?t.childNodes[n]:null},a.getNode=function(e,t){return 1==e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},a}),r(R,[T,d,u],function(e,t,n){return function(r){function i(e){var t,n;if(n=r.$(e).parentsUntil(r.getBody()).add(e),n.length===a.length){for(t=n.length;t>=0&&n[t]===a[t];t--);if(-1===t)return a=n,!0}return a=n,!1}var o,a=[];"onselectionchange"in r.getDoc()||r.on("NodeChange Click MouseUp KeyUp Focus",function(t){var n,i;n=r.selection.getRng(),i={startContainer:n.startContainer,startOffset:n.startOffset,endContainer:n.endContainer,endOffset:n.endOffset},"nodechange"!=t.type&&e.compareRanges(i,o)||r.fire("SelectionChange"),o=i}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var e=r.selection.getStart(!0);!t.range&&r.selection.isCollapsed()||!i(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("MouseUp",function(e){e.isDefaultPrevented()||("IMG"==r.selection.getNode().nodeName?n.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())}),this.nodeChanged=function(e){var t=r.selection,n,i,o;r.initialized&&t&&!r.settings.disable_nodechange&&!r.readonly&&(o=r.getBody(),n=t.getStart()||o,n.ownerDocument==r.getDoc()&&r.dom.isChildOf(n,o)||(n=o),"IMG"==n.nodeName&&t.isCollapsed()&&(n=n.parentNode),i=[],r.dom.getParent(n,function(e){return e===o?!0:void i.push(e)}),e=e||{},e.element=n,e.parents=i,r.fire("NodeChange",e))}}}),r(A,[],function(){function e(e,t,n){var r,i,o=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[o])return e[o];if(e!==t){if(r=e[a])return r;for(i=e.parent;i&&i!==t;i=i.parent)if(r=i[a])return r}}function t(e,t){this.name=e,this.type=t,1===t&&(this.attributes=[],this.attributes.map={})}var n=/^[ \t\r\n]*$/,r={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};return t.prototype={replace:function(e){var t=this;return e.parent&&e.remove(),t.insert(e,t),t.remove(),t},attr:function(e,t){var n=this,r,i,o;if("string"!=typeof e){for(i in e)n.attr(i,e[i]);return n}if(r=n.attributes){if(t!==o){if(null===t){if(e in r.map)for(delete r.map[e],i=r.length;i--;)if(r[i].name===e)return r=r.splice(i,1),n;return n}if(e in r.map){for(i=r.length;i--;)if(r[i].name===e){r[i].value=t;break}}else r.push({name:e,value:t});return r.map[e]=t,n}return r.map[e]}},clone:function(){var e=this,n=new t(e.name,e.type),r,i,o,a,s;if(o=e.attributes){for(s=[],s.map={},r=0,i=o.length;i>r;r++)a=o[r],"id"!==a.name&&(s[s.length]={name:a.name,value:a.value},s.map[a.name]=a.value);n.attributes=s}return n.value=e.value,n.shortEnded=e.shortEnded,n},wrap:function(e){var t=this;return t.parent.insert(e,t),e.append(t),t},unwrap:function(){var e=this,t,n;for(t=e.firstChild;t;)n=t.next,e.insert(t,e,!0),t=n;e.remove()},remove:function(){var e=this,t=e.parent,n=e.next,r=e.prev;return t&&(t.firstChild===e?(t.firstChild=n,n&&(n.prev=null)):r.next=n,t.lastChild===e?(t.lastChild=r,r&&(r.next=null)):n.prev=r,e.parent=e.next=e.prev=null),e},append:function(e){var t=this,n;return e.parent&&e.remove(),n=t.lastChild,n?(n.next=e,e.prev=n,t.lastChild=e):t.lastChild=t.firstChild=e,e.parent=t,e},insert:function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,e.next=t,t.prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,e.prev=t,t.next=e),e.parent=r,e},getAll:function(t){var n=this,r,i=[];for(r=n.firstChild;r;r=e(r,n))r.name===t&&i.push(r);return i},empty:function(){var t=this,n,r,i;if(t.firstChild){for(n=[],i=t.firstChild;i;i=e(i,t))n.push(i);for(r=n.length;r--;)i=n[r],i.parent=i.firstChild=i.lastChild=i.next=i.prev=null}return t.firstChild=t.lastChild=null,t},isEmpty:function(t){var r=this,i=r.firstChild,o,a;if(i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(t[i.name])return!1;for(o=i.attributes.length;o--;)if(a=i.attributes[o].name,"name"===a||0===a.indexOf("data-mce-bookmark"))return!1}if(8===i.type)return!1;if(3===i.type&&!n.test(i.value))return!1}while(i=e(i,r));return!0},walk:function(t){return e(this,null,t)}},t.create=function(e,n){var i,o;if(i=new t(e,r[e]||1),n)for(o in n)i.attr(o,n[o]);return i},t}),r(B,[m],function(e){function t(e,t){return e?e.split(t||" "):[]}function n(e){function n(e,n,r){function i(e,t){var n={},r,i;for(r=0,i=e.length;i>r;r++)n[e[r]]=t||{};return n}var s,c,u,d=arguments;for(r=r||[],n=n||"","string"==typeof r&&(r=t(r)),c=3;co;o++)i.attributes[n[o]]={},i.attributesOrder.push(n[o])}var a={},l,c,u,d,f,h;return i[e]?i[e]:(l=t("id accesskey class dir lang style tabindex title"),c=t("address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"),u=t("a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment"),"html4"!=e&&(l.push.apply(l,t("contenteditable contextmenu draggable dropzone hidden spellcheck translate")),c.push.apply(c,t("article aside details dialog figure header footer hgroup section nav")),u.push.apply(u,t("audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"))),"html5-strict"!=e&&(l.push("xml:lang"),h=t("acronym applet basefont big font strike tt"),u.push.apply(u,h),s(h,function(e){n(e,"",u)}),f=t("center dir isindex noframes"),c.push.apply(c,f),d=[].concat(c,u),s(f,function(e){n(e,"",d)})),d=d||[].concat(c,u),n("html","manifest","head body"),n("head","","base command link meta noscript script style title"),n("title hr noscript br"),n("base","href target"),n("link","href rel media hreflang type sizes hreflang"),n("meta","name http-equiv content charset"),n("style","media type scoped"),n("script","src async defer type charset"),n("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",d),n("address dt dd div caption","",d),n("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",u),n("blockquote","cite",d),n("ol","reversed start type","li"),n("ul","","li"),n("li","value",d),n("dl","","dt dd"),n("a","href target rel media hreflang type",u),n("q","cite",u),n("ins del","cite datetime",d),n("img","src sizes srcset alt usemap ismap width height"),n("iframe","src name width height",d),n("embed","src type width height"),n("object","data type typemustmatch name usemap form width height",d,"param"),n("param","name value"),n("map","name",d,"area"),n("area","alt coords shape href target rel media hreflang type"),n("table","border","caption colgroup thead tfoot tbody tr"+("html4"==e?" col":"")),n("colgroup","span","col"),n("col","span"),n("tbody thead tfoot","","tr"),n("tr","","td th"),n("td","colspan rowspan headers",d),n("th","colspan rowspan headers scope abbr",d),n("form","accept-charset action autocomplete enctype method name novalidate target",d),n("fieldset","disabled form name",d,"legend"),n("label","form for",u),n("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),n("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"==e?d:u),n("select","disabled form multiple name required size","option optgroup"),n("optgroup","disabled label","option"),n("option","disabled label selected value"),n("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),n("menu","type label",d,"li"),n("noscript","",d),"html4"!=e&&(n("wbr"),n("ruby","",u,"rt rp"),n("figcaption","",d),n("mark rt rp summary bdi","",u),n("canvas","width height",d),n("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",d,"track source"),n("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",d,"track source"),n("picture","","img source"),n("source","src srcset type media sizes"),n("track","kind src srclang label default"),n("datalist","",u,"option"),n("article section nav aside header footer","",d),n("hgroup","","h1 h2 h3 h4 h5 h6"),n("figure","",d,"figcaption"),n("time","datetime",u),n("dialog","open",d),n("command","type label icon disabled checked radiogroup command"),n("output","for form name",u),n("progress","value max",u),n("meter","value min max low high optimum",u),n("details","open",d,"summary"),n("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!=e&&(r("script","language xml:space"),r("style","xml:space"),r("object","declare classid code codebase codetype archive standby align border hspace vspace"),r("embed","align name hspace vspace"),r("param","valuetype type"),r("a","charset name rev shape coords"),r("br","clear"),r("applet","codebase archive code object alt name width height align hspace vspace"),r("img","name longdesc align border hspace vspace"),r("iframe","longdesc frameborder marginwidth marginheight scrolling align"),r("font basefont","size color face"),r("input","usemap align"),r("select","onchange"),r("textarea"),r("h1 h2 h3 h4 h5 h6 div p legend caption","align"),r("ul","type compact"),r("li","type"),r("ol dl menu dir","compact"),r("pre","width xml:space"),r("hr","align noshade size width"),r("isindex","prompt"),r("table","summary width frame rules cellspacing cellpadding align bgcolor"),r("col","width align char charoff valign"),r("colgroup","width align char charoff valign"),r("thead","align char charoff valign"),r("tr","align char charoff valign bgcolor"),r("th","axis align char charoff valign nowrap bgcolor width height"),r("form","accept"),r("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),r("tfoot","align char charoff valign"),r("tbody","align char charoff valign"),r("area","nohref"),r("body","background bgcolor text link vlink alink")),"html4"!=e&&(r("input button select textarea","autofocus"),r("input textarea","placeholder"),r("a","download"),r("link script img","crossorigin"),r("iframe","sandbox seamless allowfullscreen")),s(t("a form meter progress dfn"),function(e){a[e]&&delete a[e].children[e]}),delete a.caption.children.table,delete a.script,i[e]=a,a)}function r(e,t){var n;return e&&(n={},"string"==typeof e&&(e={"*":e}),s(e,function(e,r){n[r]=n[r.toUpperCase()]="map"==t?a(e,/[, ]/):c(e,/[, ]/)})),n}var i={},o={},a=e.makeMap,s=e.each,l=e.extend,c=e.explode,u=e.inArray;return function(e){function o(t,n,r){var o=e[t];return o?o=a(o,/[, ]/,a(o.toUpperCase(),/[, ]/)):(o=i[t],o||(o=a(n," ",a(n.toUpperCase()," ")),o=l(o,r),i[t]=o)),o}function d(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function f(e){var n,r,i,o,s,l,c,f,h,p,m,g,v,b,x,w,N,E,_,S=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,k=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,T=/[*?+]/;if(e)for(e=t(e,","),y["@"]&&(w=y["@"].attributes,N=y["@"].attributesOrder),n=0,r=e.length;r>n;n++)if(s=S.exec(e[n])){if(b=s[1],h=s[2],x=s[3],f=s[5],g={},v=[],l={attributes:g,attributesOrder:v},"#"===b&&(l.paddEmpty=!0),"-"===b&&(l.removeEmpty=!0),"!"===s[4]&&(l.removeEmptyAttrs=!0),w){for(E in w)g[E]=w[E];v.push.apply(v,N)}if(f)for(f=t(f,"|"),i=0,o=f.length;o>i;i++)if(s=k.exec(f[i])){if(c={},m=s[1],p=s[2].replace(/::/g,":"),b=s[3],_=s[4],"!"===m&&(l.attributesRequired=l.attributesRequired||[],l.attributesRequired.push(p),c.required=!0),"-"===m){delete g[p],v.splice(u(v,p),1);continue}b&&("="===b&&(l.attributesDefault=l.attributesDefault||[],l.attributesDefault.push({name:p,value:_}),c.defaultValue=_),":"===b&&(l.attributesForced=l.attributesForced||[],l.attributesForced.push({name:p,value:_}),c.forcedValue=_),"<"===b&&(c.validValues=a(_,"?"))), +T.test(p)?(l.attributePatterns=l.attributePatterns||[],c.pattern=d(p),l.attributePatterns.push(c)):(g[p]||v.push(p),g[p]=c)}w||"@"!=h||(w=g,N=v),x&&(l.outputName=h,y[x]=l),T.test(h)?(l.pattern=d(h),C.push(l)):y[h]=l}}function h(e){y={},C=[],f(e),s(N,function(e,t){b[t]=e.children})}function p(e){var n=/^(~)?(.+)$/;e&&(i.text_block_elements=i.block_elements=null,s(t(e,","),function(e){var t=n.exec(e),r="~"===t[1],i=r?"span":"div",o=t[2];if(b[o]=b[i],M[o]=i,r||(R[o.toUpperCase()]={},R[o]={}),!y[o]){var a=y[i];a=l({},a),delete a.removeEmptyAttrs,delete a.removeEmpty,y[o]=a}s(b,function(e,t){e[i]&&(b[t]=e=l({},b[t]),e[o]=e[i])})}))}function m(n){var r=/^([+\-]?)(\w+)\[([^\]]+)\]$/;i[e.schema]=null,n&&s(t(n,","),function(e){var n=r.exec(e),i,o;n&&(o=n[1],i=o?b[n[2]]:b[n[2]]={"#comment":{}},i=b[n[2]],s(t(n[3],"|"),function(e){"-"===o?delete i[e]:i[e]={}}))})}function g(e){var t=y[e],n;if(t)return t;for(n=C.length;n--;)if(t=C[n],t.pattern.test(e))return t}var v=this,y={},b={},C=[],x,w,N,E,_,S,k,T,R,A,B,D,L,M={},P={};e=e||{},N=n(e.schema),e.verify_html===!1&&(e.valid_elements="*[*]"),x=r(e.valid_styles),w=r(e.invalid_styles,"map"),T=r(e.valid_classes,"map"),E=o("whitespace_elements","pre script noscript style textarea video audio iframe object"),_=o("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),S=o("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),k=o("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),A=o("non_empty_elements","td th iframe video audio object script",S),B=o("move_caret_before_on_enter_elements","table",A),D=o("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"),R=o("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption",D),L=o("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),s((e.special||"script noscript style textarea").split(" "),function(e){P[e]=new RegExp("]*>","gi")}),e.valid_elements?h(e.valid_elements):(s(N,function(e,t){y[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},b[t]=e.children}),"html5"!=e.schema&&s(t("strong/b em/i"),function(e){e=t(e,"/"),y[e[1]].outputName=e[0]}),s(t("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){y[e]&&(y[e].removeEmpty=!0)}),s(t("p h1 h2 h3 h4 h5 h6 th td pre div address caption"),function(e){y[e].paddEmpty=!0}),s(t("span"),function(e){y[e].removeEmptyAttrs=!0})),p(e.custom_elements),m(e.valid_children),f(e.extended_valid_elements),m("+ol[ul|ol],+ul[ul|ol]"),e.invalid_elements&&s(c(e.invalid_elements),function(e){y[e]&&delete y[e]}),g("span")||f("span[!data-mce-type|*]"),v.children=b,v.getValidStyles=function(){return x},v.getInvalidStyles=function(){return w},v.getValidClasses=function(){return T},v.getBoolAttrs=function(){return k},v.getBlockElements=function(){return R},v.getTextBlockElements=function(){return D},v.getTextInlineElements=function(){return L},v.getShortEndedElements=function(){return S},v.getSelfClosingElements=function(){return _},v.getNonEmptyElements=function(){return A},v.getMoveCaretBeforeOnEnterElements=function(){return B},v.getWhiteSpaceElements=function(){return E},v.getSpecialElements=function(){return P},v.isValidChild=function(e,t){var n=b[e];return!(!n||!n[t])},v.isValid=function(e,t){var n,r,i=g(e);if(i){if(!t)return!0;if(i.attributes[t])return!0;if(n=i.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},v.getElementRule=g,v.getCustomElements=function(){return M},v.addValidElements=f,v.setValidElements=h,v.addCustomElements=p,v.addValidChildren=m,v.elements=y}}),r(D,[B,C,m],function(e,t,n){function r(e,t,n){var r=1,i,o,a,s;for(s=e.getShortEndedElements(),a=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g,a.lastIndex=i=n;o=a.exec(t);){if(i=a.lastIndex,"/"===o[1])r--;else if(!o[1]){if(o[2]in s)continue;r++}if(0===r)break}return i}function i(i,a){function s(){}var l=this;i=i||{},l.schema=a=a||new e,i.fix_self_closing!==!1&&(i.fix_self_closing=!0),o("comment cdata text start end pi doctype".split(" "),function(e){e&&(l[e]=i[e]||s)}),l.parse=function(e){function o(e){var t,n;for(t=h.length;t--&&h[t].name!==e;);if(t>=0){for(n=h.length-1;n>=t;n--)e=h[n],e.valid&&l.end(e.name);h.length=t}}function s(e,t,n,r,o){var a,s,l=/[\s\u0000-\u001F]+/g;if(t=t.toLowerCase(),n=t in x?t:z(n||r||o||""),N&&!y&&0!==t.indexOf("data-")){if(a=T[t],!a&&R){for(s=R.length;s--&&(a=R[s],!a.pattern.test(t)););-1===s&&(a=null)}if(!a)return;if(a.validValues&&!(n in a.validValues))return}if(W[t]&&!i.allow_script_urls){var c=n.replace(l,"");try{c=decodeURIComponent(c)}catch(u){c=unescape(c)}if(V.test(c))return;if(!i.allow_html_data_urls&&$.test(c)&&!/^data:image\//i.test(c))return}p.map[t]=n,p.push({name:t,value:n})}var l=this,c,u=0,d,f,h=[],p,m,g,v,y,b,C,x,w,N,E,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F=0,z=t.decode,U,W=n.makeMap("src,href,data,background,formaction,poster"),V=/((java|vb)script|mhtml):/i,$=/^data:/i;for(P=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),O=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,C=a.getShortEndedElements(),M=i.self_closing_elements||a.getSelfClosingElements(),x=a.getBoolAttrs(),N=i.validate,b=i.remove_internals,U=i.fix_self_closing,H=a.getSpecialElements();c=P.exec(e);){if(u0&&h[h.length-1].name===d&&o(d),!N||(E=a.getElementRule(d))){if(_=!0,N&&(T=E.attributes,R=E.attributePatterns),(k=c[8])?(y=-1!==k.indexOf("data-mce-type"),y&&b&&(_=!1),p=[],p.map={},k.replace(O,s)):(p=[],p.map={}),N&&!y){if(A=E.attributesRequired,B=E.attributesDefault,D=E.attributesForced,L=E.removeEmptyAttrs,L&&!p.length&&(_=!1),D)for(m=D.length;m--;)S=D[m],v=S.name,I=S.value,"{$uid}"===I&&(I="mce_"+F++),p.map[v]=I,p.push({name:v,value:I});if(B)for(m=B.length;m--;)S=B[m],v=S.name,v in p.map||(I=S.value,"{$uid}"===I&&(I="mce_"+F++),p.map[v]=I,p.push({name:v,value:I}));if(A){for(m=A.length;m--&&!(A[m]in p.map););-1===m&&(_=!1)}if(S=p.map["data-mce-bogus"]){if("all"===S){u=r(a,e,P.lastIndex),P.lastIndex=u;continue}_=!1}}_&&l.start(d,p,w)}else _=!1;if(f=H[d]){f.lastIndex=u=c.index+c[0].length,(c=f.exec(e))?(_&&(g=e.substr(u,c.index-u)),u=c.index+c[0].length):(g=e.substr(u),u=e.length),_&&(g.length>0&&l.text(g,!0),l.end(d)),P.lastIndex=u;continue}w||(k&&k.indexOf("/")==k.length-1?_&&l.end(d):h.push({name:d,valid:_}))}else(d=c[1])?(">"===d.charAt(0)&&(d=" "+d),i.allow_conditional_comments||"[if"!==d.substr(0,3)||(d=" "+d),l.comment(d)):(d=c[2])?l.cdata(d):(d=c[3])?l.doctype(d):(d=c[4])&&l.pi(d,c[5]);u=c.index+c[0].length}for(u=0;m--)d=h[m],d.valid&&l.end(d.name)}}var o=n.each;return i.findEndTag=r,i}),r(L,[A,B,D,m],function(e,t,n,r){var i=r.makeMap,o=r.each,a=r.explode,s=r.extend;return function(r,l){function c(t){var n,r,o,a,s,c,d,f,h,p,m,g,v,y,b;for(m=i("tr,td,th,tbody,thead,tfoot,table"),p=l.getNonEmptyElements(),g=l.getTextBlockElements(),v=l.getSpecialElements(),n=0;n1){for(a.reverse(),s=c=u.filterNode(a[0].clone()),h=0;h0)return void(t.value=r);if(n=t.next){if(3==n.type&&n.value.length){t=t.prev;continue}if(!o[n.name]&&"script"!=n.name&&"style"!=n.name){t=t.prev;continue}}i=t.prev,t.remove(),t=i}}function g(e){var t,n={};for(t in e)"li"!==t&&"p"!=t&&(n[t]=e[t]);return n}var v,y,b,C,x,w,N,E,_,S,k,T,R,A=[],B,D,L,M,P,O,H,I;if(o=o||{},h={},p={},T=s(i("script,style,head,html,body,title,meta,param"),l.getBlockElements()),H=l.getNonEmptyElements(),O=l.children,k=r.validate,I="forced_root_block"in o?o.forced_root_block:r.forced_root_block,P=l.getWhiteSpaceElements(),R=/^[ \t\r\n]+/,D=/[ \t\r\n]+$/,L=/[ \t\r\n]+/g,M=/^[ \t\r\n]+$/,v=new n({validate:k,allow_script_urls:r.allow_script_urls,allow_conditional_comments:r.allow_conditional_comments,self_closing_elements:g(l.getSelfClosingElements()),cdata:function(e){b.append(u("#cdata",4)).value=e},text:function(e,t){var n;B||(e=e.replace(L," "),b.lastChild&&T[b.lastChild.name]&&(e=e.replace(R,""))),0!==e.length&&(n=u("#text",3),n.raw=!!t,b.append(n).value=e)},comment:function(e){b.append(u("#comment",8)).value=e},pi:function(e,t){b.append(u(e,7)).value=t,m(b)},doctype:function(e){var t;t=b.append(u("#doctype",10)),t.value=e,m(b)},start:function(e,t,n){var r,i,o,a,s;if(o=k?l.getElementRule(e):{}){for(r=u(o.outputName||e,1),r.attributes=t,r.shortEnded=n,b.append(r),s=O[b.name],s&&O[r.name]&&!s[r.name]&&A.push(r),i=f.length;i--;)a=f[i].name,a in t.map&&(_=p[a],_?_.push(r):p[a]=[r]);T[e]&&m(r),n||(b=r),!B&&P[e]&&(B=!0)}},end:function(t){var n,r,i,o,a;if(r=k?l.getElementRule(t):{}){if(T[t]&&!B){if(n=b.firstChild,n&&3===n.type)if(i=n.value.replace(R,""),i.length>0)n.value=i,n=n.next;else for(o=n.next,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.next,(0===i.length||M.test(i))&&(n.remove(),n=o),n=o;if(n=b.lastChild,n&&3===n.type)if(i=n.value.replace(D,""),i.length>0)n.value=i,n=n.prev;else for(o=n.prev,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.prev,(0===i.length||M.test(i))&&(n.remove(),n=o),n=o}if(B&&P[t]&&(B=!1),(r.removeEmpty||r.paddEmpty)&&b.isEmpty(H))if(r.paddEmpty)b.empty().append(new e("#text","3")).value="\xa0";else if(!b.attributes.map.name&&!b.attributes.map.id)return a=b.parent,T[b.name]?b.empty().remove():b.unwrap(),void(b=a);b=b.parent}}},l),y=b=new e(o.context||r.root_name,11),v.parse(t),k&&A.length&&(o.context?o.invalid=!0:c(A)),I&&("body"==y.name||o.isRootContent)&&a(),!o.invalid){for(S in h){for(_=d[S],C=h[S],N=C.length;N--;)C[N].parent||C.splice(N,1);for(x=0,w=_.length;w>x;x++)_[x](C,S,o)}for(x=0,w=f.length;w>x;x++)if(_=f[x],_.name in p){for(C=p[_.name],N=C.length;N--;)C[N].parent||C.splice(N,1);for(N=0,E=_.callbacks.length;E>N;N++)_.callbacks[N](C,_.name,o)}}return y},r.remove_trailing_brs&&u.addNodeFilter("br",function(t){var n,r=t.length,i,o=s({},l.getBlockElements()),a=l.getNonEmptyElements(),c,u,d,f,h,p;for(o.body=1,n=0;r>n;n++)if(i=t[n],c=i.parent,o[i.parent.name]&&i===c.lastChild){for(d=i.prev;d;){if(f=d.name,"span"!==f||"bookmark"!==d.attr("data-mce-type")){if("br"!==f)break;if("br"===f){i=null;break}}d=d.prev}i&&(i.remove(),c.isEmpty(a)&&(h=l.getElementRule(c.name),h&&(h.removeEmpty?c.remove():h.paddEmpty&&(c.empty().append(new e("#text",3)).value="\xa0"))))}else{for(u=i;c&&c.firstChild===u&&c.lastChild===u&&(u=c,!o[c.name]);)c=c.parent;u===c&&(p=new e("#text",3),p.value="\xa0",i.replace(p))}}),r.allow_html_in_named_anchor||u.addAttributeFilter("id,name",function(e){for(var t=e.length,n,r,i,o;t--;)if(o=e[t],"a"===o.name&&o.firstChild&&!o.attr("href")){i=o.parent,n=o.lastChild;do r=n.prev,i.insert(n,o),n=r;while(n)}}),r.validate&&l.getValidClasses()&&u.addAttributeFilter("class",function(e){for(var t=e.length,n,r,i,o,a,s=l.getValidClasses(),c,u;t--;){for(n=e[t],r=n.attr("class").split(" "),a="",i=0;i0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n")),r.push("<",e),t)for(c=0,u=t.length;u>c;c++)d=t[c],r.push(" ",d.name,'="',s(d.value,!0),'"');!n||l?r[r.length]=">":r[r.length]=" />",n&&i&&a[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n"))},end:function(e){var t;r.push(""),i&&a[e]&&r.length>0&&(t=r[r.length-1],t.length>0&&"\n"!==t&&r.push("\n"))},text:function(e,t){e.length>0&&(r[r.length]=t?e:s(e))},cdata:function(e){r.push("")},comment:function(e){r.push("")},pi:function(e,t){t?r.push(""):r.push(""),i&&r.push("\n")},doctype:function(e){r.push("",i?"\n":"")},reset:function(){r.length=0},getContent:function(){return r.join("").replace(/\n$/,"")}}}}),r(P,[M,B],function(e,t){return function(n,r){var i=this,o=new e(n);n=n||{},n.validate="validate"in n?n.validate:!0,i.schema=r=r||new t,i.writer=o,i.serialize=function(e){function t(e){var n=i[e.type],s,l,c,u,d,f,h,p,m;if(n)n(e);else{if(s=e.name,l=e.shortEnded,c=e.attributes,a&&c&&c.length>1&&(f=[],f.map={},m=r.getElementRule(e.name))){for(h=0,p=m.attributesOrder.length;p>h;h++)u=m.attributesOrder[h],u in c.map&&(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));for(h=0,p=c.length;p>h;h++)u=c[h].name,u in f.map||(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));c=f}if(o.start(e.name,c,l),!l){if(e=e.firstChild)do t(e);while(e=e.next);o.end(s)}}}var i,a;return a=n.validate,i={3:function(e){o.text(e.value,e.raw)},8:function(e){o.comment(e.value)},7:function(e){o.pi(e.name,e.value)},10:function(e){o.doctype(e.value)},4:function(e){o.cdata(e.value)},11:function(e){if(e=e.firstChild)do t(e);while(e=e.next)}},o.reset(),1!=e.type||n.inner?i[11](e):t(e),o.getContent()}}}),r(O,[w,L,D,C,P,A,B,d,m,S],function(e,t,n,r,i,o,a,s,l,c){function u(e){function t(e){return e&&"br"===e.name}var n,r;n=e.lastChild,t(n)&&(r=n.prev,t(r)&&(n.remove(),r.remove()))}var d=l.each,f=l.trim,h=e.DOM,p=["data-mce-selected"];return function(e,o){function m(e){var t=new RegExp(["]+data-mce-bogus[^>]+>[\u200b\ufeff]+<\\/span>","\\s?("+p.join("|")+')="[^"]+"'].join("|"),"gi");return e=c.trim(e.replace(t,""))}function g(){var e=o.getBody().innerHTML,t=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,r,i,a,s,l,c=o.schema;for(e=m(e),l=c.getShortEndedElements();s=t.exec(e);)i=t.lastIndex,a=s[0].length,r=l[s[1]]?i:n.findEndTag(c,e,i),e=e.substring(0,i-a)+e.substring(r),t.lastIndex=i-a;return f(e)}function v(e){-1===l.inArray(p,e)&&(C.addAttributeFilter(e,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),p.push(e))}var y,b,C;return o&&(y=o.dom,b=o.schema),y=y||h,b=b||new a(e),e.entity_encoding=e.entity_encoding||"named",e.remove_trailing_brs="remove_trailing_brs"in e?e.remove_trailing_brs:!0,C=new t(e,b),C.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n=e.length,r;n--;)r=e[n],r.attr("tabindex",r.attributes.map["data-mce-tabindex"]),r.attr(t,null)}),C.addAttributeFilter("src,href,style",function(t,n){for(var r=t.length,i,o,a="data-mce-"+n,s=e.url_converter,l=e.url_converter_scope,c;r--;)i=t[r],o=i.attributes.map[a],o!==c?(i.attr(n,o.length>0?o:null),i.attr(a,null)):(o=i.attributes.map[n],"style"===n?o=y.serializeStyle(y.parseStyle(o),i.name):s&&(o=s.call(l,o,n,i.name)),i.attr(n,o.length>0?o:null))}),C.addAttributeFilter("class",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("class"),r&&(r=n.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),n.attr("class",r.length>0?r:null))}),C.addAttributeFilter("data-mce-type",function(e,t,n){for(var r=e.length,i;r--;)i=e[r],"bookmark"!==i.attributes.map["data-mce-type"]||n.cleanup||i.remove()}),C.addNodeFilter("noscript",function(e){for(var t=e.length,n;t--;)n=e[t].firstChild,n&&(n.value=r.decode(n.value))}),C.addNodeFilter("script,style",function(e,t){function n(e){return e.replace(/()/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*(()?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}for(var r=e.length,i,o,a;r--;)i=e[r],o=i.firstChild?i.firstChild.value:"","script"===t?(a=i.attr("type"),a&&i.attr("type","mce-no/type"==a?null:a.replace(/^mce\-/,"")),o.length>0&&(i.firstChild.value="// ")):o.length>0&&(i.firstChild.value="")}),C.addNodeFilter("#comment",function(e){for(var t=e.length,n;t--;)n=e[t],0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=n.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===n.value.indexOf("mce:protected ")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}),C.addNodeFilter("xml:namespace,input",function(e,t){for(var n=e.length,r;n--;)r=e[n],7===r.type?r.remove():1===r.type&&("input"!==t||"type"in r.attributes.map||r.attr("type","text"))}),e.fix_list_elements&&C.addNodeFilter("ul,ol",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.parent,"ul"!==r.name&&"ol"!==r.name||n.prev&&"li"===n.prev.name&&n.prev.append(n)}),C.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),{schema:b,addNodeFilter:C.addNodeFilter,addAttributeFilter:C.addAttributeFilter,serialize:function(t,n){var r=this,o,a,l,h,p,m;return s.ie&&y.select("script,style,select,map").length>0?(p=t.innerHTML,t=t.cloneNode(!1),y.setHTML(t,p)):t=t.cloneNode(!0),o=document.implementation,o.createHTMLDocument&&(a=o.createHTMLDocument(""),d("BODY"==t.nodeName?t.childNodes:[t],function(e){a.body.appendChild(a.importNode(e,!0))}),t="BODY"!=t.nodeName?a.body.firstChild:a.body,l=y.doc,y.doc=a),n=n||{},n.format=n.format||"html",n.selection&&(n.forced_root_block=""),n.no_events||(n.node=t,r.onPreProcess(n)),m=C.parse(f(n.getInner?t.innerHTML:y.getOuterHTML(t)),n),u(m),h=new i(e,b),n.content=h.serialize(m),n.cleanup||(n.content=c.trim(n.content),n.content=n.content.replace(/\uFEFF/g,"")),n.no_events||r.onPostProcess(n),l&&(y.doc=l),n.node=null,n.content},addRules:function(e){b.addValidElements(e)},setRules:function(e){b.setValidElements(e)},onPreProcess:function(e){o&&o.fire("PreProcess",e)},onPostProcess:function(e){o&&o.fire("PostProcess",e)},addTempAttr:v,trimHtml:m,getTrimmedContent:g}}}),r(H,[],function(){function e(e){function t(t,n){var r,i=0,o,a,s,l,c,u,d=-1,f;if(r=t.duplicate(),r.collapse(n),f=r.parentElement(),f.ownerDocument===e.dom.doc){for(;"false"===f.contentEditable;)f=f.parentNode;if(!f.hasChildNodes())return{node:f,inside:1};for(s=f.children,o=s.length-1;o>=i;)if(u=Math.floor((i+o)/2),l=s[u],r.moveToElementText(l),d=r.compareEndPoints(n?"StartToStart":"EndToEnd",t),d>0)o=u-1;else{if(!(0>d))return{node:l};i=u+1}if(0>d)for(l?r.collapse(!1):(r.moveToElementText(f),r.collapse(!0),l=f,a=!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",1)&&f==r.parentElement();)c++;else for(r.collapse(!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",-1)&&f==r.parentElement();)c++;return{node:l,position:d,offset:c,inside:a}}}function n(){function n(e){var n=t(o,e),r,i,s=0,l,c,u;if(r=n.node,i=n.offset,n.inside&&!r.hasChildNodes())return void a[e?"setStart":"setEnd"](r,0);if(i===c)return void a[e?"setStartBefore":"setEndAfter"](r);if(n.position<0){if(l=n.inside?r.firstChild:r.nextSibling,!l)return void a[e?"setStartAfter":"setEndAfter"](r);if(!i)return void(3==l.nodeType?a[e?"setStart":"setEnd"](l,0):a[e?"setStartBefore":"setEndBefore"](l));for(;l;){if(3==l.nodeType&&(u=l.nodeValue,s+=u.length,s>=i)){r=l,s-=i,s=u.length-s;break}l=l.nextSibling}}else{if(l=r.previousSibling,!l)return a[e?"setStartBefore":"setEndBefore"](r);if(!i)return void(3==r.nodeType?a[e?"setStart":"setEnd"](l,r.nodeValue.length):a[e?"setStartAfter":"setEndAfter"](l));for(;l;){if(3==l.nodeType&&(s+=l.nodeValue.length,s>=i)){r=l,s-=i;break}l=l.previousSibling}}a[e?"setStart":"setEnd"](r,s)}var o=e.getRng(),a=i.createRng(),s,l,c,u,d;if(s=o.item?o.item(0):o.parentElement(),s.ownerDocument!=i.doc)return a;if(l=e.isCollapsed(),o.item)return a.setStart(s.parentNode,i.nodeIndex(s)),a.setEnd(a.startContainer,a.startOffset+1),a;try{n(!0),l||n()}catch(f){if(-2147024809!=f.number)throw f;d=r.getBookmark(2),c=o.duplicate(),c.collapse(!0),s=c.parentElement(),l||(c=o.duplicate(),c.collapse(!1),u=c.parentElement(),u.innerHTML=u.innerHTML),s.innerHTML=s.innerHTML,r.moveToBookmark(d),o=e.getRng(),n(!0),l||n()}return a}var r=this,i=e.dom,o=!1;this.getBookmark=function(n){function r(e){var t,n,r,o,a=[];for(t=e.parentNode,n=i.getRoot().parentNode;t!=n&&9!==t.nodeType;){for(r=t.children,o=r.length;o--;)if(e===r[o]){a.push(o);break}e=t,t=t.parentNode}return a}function o(e){var n;return n=t(a,e),n?{position:n.position,offset:n.offset,indexes:r(n.node),inside:n.inside}:void 0}var a=e.getRng(),s={};return 2===n&&(a.item?s.start={ctrl:!0,indexes:r(a.item(0))}:(s.start=o(!0),e.isCollapsed()||(s.end=o()))),s},this.moveToBookmark=function(e){function t(e){var t,n,r,o;for(t=i.getRoot(),n=e.length-1;n>=0;n--)o=t.children,r=e[n],r<=o.length-1&&(t=o[r]);return t}function n(n){var i=e[n?"start":"end"],a,s,l,c;i&&(a=i.position>0,s=o.createTextRange(),s.moveToElementText(t(i.indexes)),c=i.offset,c!==l?(s.collapse(i.inside||a),s.moveStart("character",a?-c:c)):s.collapse(n),r.setEndPoint(n?"StartToStart":"EndToStart",s),n&&r.collapse(!0))}var r,o=i.doc.body;e.start&&(e.start.ctrl?(r=o.createControlRange(),r.addElement(t(e.start.indexes)),r.select()):(r=o.createTextRange(),n(!0),n(),r.select()))},this.addRange=function(t){function n(e){var t,n,a,d,p;a=i.create("a"),t=e?s:c,n=e?l:u,d=r.duplicate(),t!=f&&t!=f.documentElement||(t=h,n=0),3==t.nodeType?(t.parentNode.insertBefore(a,t),d.moveToElementText(a),d.moveStart("character",n),i.remove(a),r.setEndPoint(e?"StartToStart":"EndToEnd",d)):(p=t.childNodes,p.length?(n>=p.length?i.insertAfter(a,p[p.length-1]):t.insertBefore(a,p[n]),d.moveToElementText(a)):t.canHaveHTML&&(t.innerHTML="",a=t.firstChild,d.moveToElementText(a),d.collapse(o)),r.setEndPoint(e?"StartToStart":"EndToEnd",d),i.remove(a))}var r,a,s,l,c,u,d,f=e.dom.doc,h=f.body,p,m;if(s=t.startContainer,l=t.startOffset,c=t.endContainer,u=t.endOffset,r=h.createTextRange(),s==c&&1==s.nodeType){if(l==u&&!s.hasChildNodes()){if(s.canHaveHTML)return d=s.previousSibling,d&&!d.hasChildNodes()&&i.isBlock(d)?d.innerHTML="":d=null,s.innerHTML="",r.moveToElementText(s.lastChild),r.select(),i.doc.selection.clear(),s.innerHTML="",void(d&&(d.innerHTML=""));l=i.nodeIndex(s),s=s.parentNode}if(l==u-1)try{if(m=s.childNodes[l],a=h.createControlRange(),a.addElement(m),a.select(),p=e.getRng(),p.item&&m===p.item(0))return}catch(g){}}n(!0),n(),r.select()},this.getRangeAt=n}return e}),r(I,[d],function(e){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(t){return e.mac?t.metaKey:t.ctrlKey&&!t.altKey}}}),r(F,[I,m,u,d,_],function(e,t,n,r,i){function o(e,t){for(;t&&t!=e;){if(s(t)||a(t))return t;t=t.parentNode}return null}var a=i.isContentEditableFalse,s=i.isContentEditableTrue;return function(i,s){function l(e){var t=s.settings.object_resizing;return t===!1||r.iOS?!1:("string"!=typeof t&&(t="table,img,div"),"false"===e.getAttribute("data-mce-resize")?!1:e==s.getBody()?!1:s.dom.is(e,t))}function c(t){var n,r,i,o,a;n=t.screenX-L,r=t.screenY-M,U=n*B[2]+H,W=r*B[3]+I,U=5>U?5:U,W=5>W?5:W,i="IMG"==k.nodeName&&s.settings.resize_img_proportional!==!1?!e.modifierPressed(t):e.modifierPressed(t)||"IMG"==k.nodeName&&B[2]*B[3]!==0,i&&(j(n)>j(r)?(W=Y(U*F),U=Y(W/F)):(U=Y(W/F),W=Y(U*F))),_.setStyles(T,{width:U,height:W}),o=B.startPos.x+n,a=B.startPos.y+r,o=o>0?o:0,a=a>0?a:0,_.setStyles(R,{left:o,top:a,display:"block"}),R.innerHTML=U+" × "+W,B[2]<0&&T.clientWidth<=U&&_.setStyle(T,"left",P+(H-U)),B[3]<0&&T.clientHeight<=W&&_.setStyle(T,"top",O+(I-W)),n=X.scrollWidth-K,r=X.scrollHeight-G,n+r!==0&&_.setStyles(R,{left:o-n,top:a-r}),z||(s.fire("ObjectResizeStart",{target:k,width:H,height:I}),z=!0)}function u(){function e(e,t){t&&(k.style[e]||!s.schema.isValid(k.nodeName.toLowerCase(),e)?_.setStyle(k,e,t):_.setAttrib(k,e,t))}z=!1,e("width",U),e("height",W),_.unbind(V,"mousemove",c),_.unbind(V,"mouseup",u),$!=V&&(_.unbind($,"mousemove",c),_.unbind($,"mouseup",u)),_.remove(T),_.remove(R),q&&"TABLE"!=k.nodeName||d(k),s.fire("ObjectResized",{target:k,width:U,height:W}),_.setAttrib(k,"style",_.getAttrib(k,"style")),s.nodeChanged()}function d(e,t,n){var i,o,a,d,h;f(),x(),i=_.getPos(e,X),P=i.x,O=i.y,h=e.getBoundingClientRect(),o=h.width||h.right-h.left,a=h.height||h.bottom-h.top,k!=e&&(C(),k=e,U=W=0),d=s.fire("ObjectSelected",{target:e}),l(e)&&!d.isDefaultPrevented()?S(A,function(e,i){function s(t){L=t.screenX,M=t.screenY,H=k.clientWidth,I=k.clientHeight,F=I/H,B=e,e.startPos={x:o*e[0]+P,y:a*e[1]+O},K=X.scrollWidth,G=X.scrollHeight,T=k.cloneNode(!0),_.addClass(T,"mce-clonedresizable"),_.setAttrib(T,"data-mce-bogus","all"),T.contentEditable=!1,T.unSelectabe=!0,_.setStyles(T,{left:P,top:O,margin:0}),T.removeAttribute("data-mce-selected"),X.appendChild(T),_.bind(V,"mousemove",c),_.bind(V,"mouseup",u),$!=V&&(_.bind($,"mousemove",c),_.bind($,"mouseup",u)),R=_.add(X,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},H+" × "+I)}var l;return t?void(i==t&&s(n)):(l=_.get("mceResizeHandle"+i),l&&_.remove(l),l=_.add(X,"div",{id:"mceResizeHandle"+i,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+i+"-resize; margin:0; padding:0"}),r.ie&&(l.contentEditable=!1),_.bind(l,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),s(e)}),e.elm=l,void _.setStyles(l,{left:o*e[0]+P-l.offsetWidth/2,top:a*e[1]+O-l.offsetHeight/2}))}):f(),k.setAttribute("data-mce-selected","1")}function f(){var e,t;x(),k&&k.removeAttribute("data-mce-selected");for(e in A)t=_.get("mceResizeHandle"+e),t&&(_.unbind(t),_.remove(t))}function h(e){function t(e,t){if(e)do if(e===t)return!0;while(e=e.parentNode)}var n,r;if(!z&&!s.removed)return S(_.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),r="mousedown"==e.type?e.target:i.getNode(),r=_.$(r).closest(q?"table":"table,img,hr")[0],t(r,X)&&(w(),n=i.getStart(!0),t(n,r)&&t(i.getEnd(!0),r)&&(!q||r!=n&&"IMG"!==n.nodeName))?void d(r):void f()}function p(e,t,n){e&&e.attachEvent&&e.attachEvent("on"+t,n)}function m(e,t,n){e&&e.detachEvent&&e.detachEvent("on"+t,n)}function g(e){var t=e.srcElement,n,r,i,o,a,l,c;n=t.getBoundingClientRect(),l=D.clientX-n.left,c=D.clientY-n.top;for(r in A)if(i=A[r],o=t.offsetWidth*i[0],a=t.offsetHeight*i[1],j(o-l)<8&&j(a-c)<8){B=i;break}z=!0,s.fire("ObjectResizeStart",{target:k,width:k.clientWidth,height:k.clientHeight}),s.getDoc().selection.empty(),d(t,r,D)}function v(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function y(e){return a(o(s.getBody(),e))}function b(e){var t=e.srcElement;if(y(t))return void v(e);if(t!=k){if(s.fire("ObjectSelected",{target:t}),C(),0===t.id.indexOf("mceResizeHandle"))return void(e.returnValue=!1);"IMG"!=t.nodeName&&"TABLE"!=t.nodeName||(f(),k=t,p(t,"resizestart",g))}}function C(){m(k,"resizestart",g)}function x(){for(var e in A){var t=A[e];t.elm&&(_.unbind(t.elm),delete t.elm)}}function w(){try{s.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}}function N(e){var t;if(q){t=V.body.createControlRange();try{return t.addElement(e),t.select(),!0}catch(n){}}}function E(){k=T=null,q&&(C(),m(X,"controlselect",b))}var _=s.dom,S=t.each,k,T,R,A,B,D,L,M,P,O,H,I,F,z,U,W,V=s.getDoc(),$=document,q=r.ie&&r.ie<11,j=Math.abs,Y=Math.round,X=s.getBody(),K,G;A={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var J=".mce-content-body";return s.contentStyles.push(J+" div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: box-sizing;background: #FFF;width: 7px;height: 7px;z-index: 10000}"+J+" .mce-resizehandle:hover {background: #000}"+J+" img[data-mce-selected],"+J+" hr[data-mce-selected] {outline: 1px solid black;resize: none}"+J+" .mce-clonedresizable {position: absolute;"+(r.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+J+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}"),s.on("init",function(){q?(s.on("ObjectResized",function(e){"TABLE"!=e.target.nodeName&&(f(),N(e.target))}),p(X,"controlselect",b),s.on("mousedown",function(e){D=e})):(w(),r.ie>=11&&(s.on("mousedown click",function(e){var t=e.target,n=t.nodeName;z||!/^(TABLE|IMG|HR)$/.test(n)||y(t)||(s.selection.select(t,"TABLE"==n),"mousedown"==e.type&&s.nodeChanged())}),s.dom.bind(X,"mscontrolselect",function(e){function t(e){n.setEditorTimeout(s,function(){s.selection.select(e)})}return y(e.target)?(e.preventDefault(),void t(e.target)):void(/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"==e.target.tagName&&t(e.target)))})));var e=n.throttle(function(e){s.composing||h(e)});s.on("nodechange ResizeEditor ResizeWindow drop",e),s.on("keyup compositionend",function(t){k&&"TABLE"==k.nodeName&&e(t)}),s.on("hide blur",f)}),s.on("remove",x),{isResizable:l,showResizeRect:d,hideResizeRect:f,updateResizeRect:h,controlSelect:N,destroy:E}}}),r(z,[],function(){function e(e){return function(){return e}}function t(e){return function(t){return!e(t)}}function n(e,t){return function(n){return e(t(n))}}function r(){var e=a.call(arguments);return function(t){for(var n=0;n=e.length?e.apply(this,t.slice(1)):function(){var e=t.concat([].slice.call(arguments));return o.apply(this,e)}}var a=[].slice;return{constant:e,negate:t,and:i,or:r,curry:o,compose:n}}),r(U,[_,p,k],function(e,t,n){function r(e){return m(e)?!1:d(e)?!f(e.parentNode):h(e)||u(e)||p(e)||c(e)}function i(e,t){for(e=e.parentNode;e&&e!=t;e=e.parentNode){if(c(e))return!1;if(l(e))return!0}return!0}function o(e){return c(e)?t.reduce(e.getElementsByTagName("*"),function(e,t){return e||l(t)},!1)!==!0:!1}function a(e){return h(e)||o(e)}function s(e,t){return r(e)&&i(e,t)}var l=e.isContentEditableTrue,c=e.isContentEditableFalse,u=e.isBr,d=e.isText,f=e.matchNodeNames("script style textarea"),h=e.matchNodeNames("img input textarea hr iframe video audio object"),p=e.matchNodeNames("table"),m=n.isCaretContainer;return{isCaretCandidate:r,isInEditable:i,isAtomic:a,isEditableCaretCandidate:s}}),r(W,[],function(){function e(e){return e?{left:u(e.left),top:u(e.top),bottom:u(e.bottom),right:u(e.right),width:u(e.width),height:u(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}}function t(t,n){return t=e(t),n?t.right=t.left:(t.left=t.left+t.width,t.right=t.left),t.width=0,t}function n(e,t){return e.left===t.left&&e.top===t.top&&e.bottom===t.bottom&&e.right===t.right}function r(e,t,n){return e>=0&&e<=Math.min(t.height,n.height)/2}function i(e,t){return e.bottomt.bottom?!1:r(t.top-e.bottom,e,t)}function o(e,t){return e.top>t.bottom?!0:e.bottomt.right}function l(e,t){return i(e,t)?-1:o(e,t)?1:a(e,t)?-1:s(e,t)?1:0}function c(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom}var u=Math.round;return{clone:e,collapse:t,isEqual:n,isAbove:i,isBelow:o,isLeft:a,isRight:s,compare:l,containsXY:c}}),r(V,[],function(){function e(e){return"string"==typeof e&&e.charCodeAt(0)>=768&&t.test(e)}var t=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]");return{isExtendingChar:e}}),r($,[z,_,w,T,U,W,V],function(e,t,n,r,i,o,a){function s(e){return"createRange"in e?e.createRange():n.DOM.createRng()}function l(e){return e&&/[\r\n\t ]/.test(e)}function c(e){var t=e.startContainer,n=e.startOffset,r;return!!(l(e.toString())&&v(t.parentNode)&&(r=t.data,l(r[n-1])||l(r[n+1])))}function u(e){function t(e){var t=e.ownerDocument,n=s(t),r=t.createTextNode("\xa0"),i=e.parentNode,a;return i.insertBefore(r,e),n.setStart(r,0),n.setEnd(r,1),a=o.clone(n.getBoundingClientRect()),i.removeChild(r),a}function n(e){var n,r;return r=e.getClientRects(),n=r.length>0?o.clone(r[0]):o.clone(e.getBoundingClientRect()),b(e)&&0===n.left?t(e):n}function r(e,t){return e=o.collapse(e,t),e.width=1,e.right=e.left+1,e}function i(e){0!==e.height&&(u.length>0&&o.isEqual(e,u[u.length-1])||u.push(e))}function l(e,t){var o=s(e.ownerDocument);if(t0&&(o.setStart(e,t-1),o.setEnd(e,t),c(o)||i(r(n(o),!1))),t=t.data.length:n>=t.childNodes.length}function a(){var e;return e=s(t.ownerDocument),e.setStart(t,n),e.setEnd(t,n),e}function l(){return r||(r=u(new d(t,n))),r}function c(){return l().length>0}function f(e){return e&&t===e.container()&&n===e.offset()}function h(e){return x(t,e?n-1:n)}return{container:e.constant(t),offset:e.constant(n),toRange:a,getClientRects:l,isVisible:c,isAtStart:i,isAtEnd:o,isEqual:f,getNode:h}}var f=t.isElement,h=i.isCaretCandidate,p=t.matchStyleValues("display","block table"),m=t.matchStyleValues("float","left right"),g=e.and(f,h,e.negate(m)),v=e.negate(t.matchStyleValues("white-space","pre pre-line pre-wrap")),y=t.isText,b=t.isBr,C=n.nodeIndex,x=r.getNode;return d.fromRangeStart=function(e){return new d(e.startContainer,e.startOffset)},d.fromRangeEnd=function(e){return new d(e.endContainer,e.endOffset)},d.after=function(e){return new d(e.parentNode,C(e)+1)},d.before=function(e){return new d(e.parentNode,C(e))},d}),r(q,[_,w,z,p,$],function(e,t,n,r,i){function o(e){var t=e.parentNode;return v(t)?o(t):t}function a(e){return e?r.reduce(e.childNodes,function(e,t){return v(t)&&"BR"!=t.nodeName?e=e.concat(a(t)):e.push(t),e},[]):[]}function s(e,t){for(;(e=e.previousSibling)&&g(e);)t+=e.data.length;return t}function l(e){return function(t){return e===t}}function c(t){var n,i,s;return n=a(o(t)),i=r.findIndex(n,l(t),t),n=n.slice(0,i+1),s=r.reduce(n,function(e,t,r){return g(t)&&g(n[r-1])&&e++,e},0),n=r.filter(n,e.matchNodeNames(t.nodeName)),i=r.findIndex(n,l(t),t),i-s}function u(e){var t;return t=g(e)?"text()":e.nodeName.toLowerCase(),t+"["+c(e)+"]"}function d(e,t,n){var r=[];for(t=t.parentNode;t!=e&&(!n||!n(t));t=t.parentNode)r.push(t);return r}function f(t,i){var o,a,l=[],c,f,h;return o=i.container(),a=i.offset(),g(o)?c=s(o,a):(f=o.childNodes,a>=f.length?(c="after",a=f.length-1):c="before",o=f[a]),l.push(u(o)),h=d(t,o),h=r.filter(h,n.negate(e.isBogus)),l=l.concat(r.map(h,function(e){return u(e)})),l.reverse().join("/")+","+c}function h(t,n,i){var o=a(t);return o=r.filter(o,function(e,t){return!g(e)||!g(o[t-1])}),o=r.filter(o,e.matchNodeNames(n)),o[i]}function p(e,t){for(var n=e,r=0,o;g(n);){if(o=n.data.length,t>=r&&r+o>=t){e=n,t-=r;break}if(!g(n.nextSibling)){e=n,t=o;break}r+=o,n=n.nextSibling}return t>e.data.length&&(t=e.data.length),new i(e,t)}function m(e,t){var n,o,a;return t?(n=t.split(","),t=n[0].split("/"),a=n.length>1?n[1]:"before",o=r.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),h(e,t[1],parseInt(t[2],10))):null},e),o?g(o)?p(o,parseInt(a,10)):(a="after"===a?y(o)+1:y(o),new i(o.parentNode,a)):null):null}var g=e.isText,v=e.isBogus,y=t.nodeIndex;return{create:f,resolve:m}}),r(j,[d,m,k,q,$,_],function(e,t,n,r,i,o){function a(a){var l=a.dom;this.getBookmark=function(e,c){function u(e,n){var r=0;return t.each(l.select(e),function(e){return"all"!==e.getAttribute("data-mce-bogus")?e==n?!1:void r++:void 0}),r}function d(e){function t(t){var n,r,i,o=t?"start":"end";n=e[o+"Container"],r=e[o+"Offset"],1==n.nodeType&&"TR"==n.nodeName&&(i=n.childNodes,n=i[Math.min(t?r:r-1,i.length-1)],n&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r)))}return t(!0),t(),e}function f(e){function t(e,t){var r=e[t?"startContainer":"endContainer"],i=e[t?"startOffset":"endOffset"],o=[],a,s,u=0;if(3==r.nodeType){if(c)for(a=r.previousSibling;a&&3==a.nodeType;a=a.previousSibling)i+=a.nodeValue.length;o.push(i)}else s=r.childNodes,i>=s.length&&s.length&&(u=1,i=Math.max(0,s.length-1)),o.push(l.nodeIndex(s[i],c)+u);for(;r&&r!=n;r=r.parentNode)o.push(l.nodeIndex(r,c));return o}var n=l.getRoot(),r={};return r.start=t(e,!0),a.isCollapsed()||(r.end=t(e)),r}function h(e){function t(e){var t;if(n.isCaretContainer(e)){if(o.isText(e)&&n.isCaretContainerBlock(e)&&(e=e.parentNode),t=e.previousSibling,s(t))return t;if(t=e.nextSibling,s(t))return t}}return t(e.startContainer)||t(e.endContainer)}var p,m,g,v,y,b,C="",x;if(2==e)return b=a.getNode(),y=b?b.nodeName:null,p=a.getRng(),s(b)||"IMG"==y?{name:y,index:u(y,b)}:a.tridentSel?a.tridentSel.getBookmark(e):(b=h(p),b?(y=b.tagName,{name:y,index:u(y,b)}):f(p));if(3==e)return p=a.getRng(),{start:r.create(l.getRoot(),i.fromRangeStart(p)),end:r.create(l.getRoot(),i.fromRangeEnd(p))};if(e)return{rng:a.getRng()};if(p=a.getRng(),g=l.uniqueId(),v=a.isCollapsed(),x="overflow:hidden;line-height:0px",p.duplicate||p.item){if(p.item)return b=p.item(0),y=b.nodeName,{name:y,index:u(y,b)};m=p.duplicate();try{p.collapse(),p.pasteHTML(''+C+""),v||(m.collapse(!1),p.moveToElementText(m.parentElement()),0===p.compareEndPoints("StartToEnd",m)&&m.move("character",-1),m.pasteHTML(''+C+""))}catch(w){return null}}else{if(b=a.getNode(),y=b.nodeName,"IMG"==y)return{name:y,index:u(y,b)};m=d(p.cloneRange()),v||(m.collapse(!1),m.insertNode(l.create("span",{"data-mce-type":"bookmark",id:g+"_end",style:x},C))),p=d(p),p.collapse(!0),p.insertNode(l.create("span",{"data-mce-type":"bookmark",id:g+"_start",style:x},C))}return a.moveToBookmark({id:g,keep:1}),{id:g}},this.moveToBookmark=function(n){function i(e){var t=n[e?"start":"end"],r,i,o,a;if(t){for(o=t[0],i=d,r=t.length-1;r>=1;r--){if(a=i.childNodes,t[r]>a.length-1)return;i=a[t[r]]}3===i.nodeType&&(o=Math.min(t[0],i.nodeValue.length)),1===i.nodeType&&(o=Math.min(t[0],i.childNodes.length)),e?u.setStart(i,o):u.setEnd(i,o)}return!0}function o(r){var i=l.get(n.id+"_"+r),o,a,s,c,u=n.keep;if(i&&(o=i.parentNode,"start"==r?(u?(o=i.firstChild,a=1):a=l.nodeIndex(i),f=h=o,p=m=a):(u?(o=i.firstChild,a=1):a=l.nodeIndex(i),h=o,m=a),!u)){for(c=i.previousSibling,s=i.nextSibling,t.each(t.grep(i.childNodes),function(e){3==e.nodeType&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});i=l.get(n.id+"_"+r);)l.remove(i,1);c&&s&&c.nodeType==s.nodeType&&3==c.nodeType&&!e.opera&&(a=c.nodeValue.length,c.appendData(s.nodeValue),l.remove(s),"start"==r?(f=h=c,p=m=a):(h=c,m=a))}}function s(t){return!l.isBlock(t)||t.innerHTML||e.ie||(t.innerHTML='
                '),t}function c(){var e,t;return e=l.createRng(),t=r.resolve(l.getRoot(),n.start),e.setStart(t.container(),t.offset()),t=r.resolve(l.getRoot(),n.end),e.setEnd(t.container(),t.offset()),e}var u,d,f,h,p,m;if(n)if(t.isArray(n.start)){if(u=l.createRng(),d=l.getRoot(),a.tridentSel)return a.tridentSel.moveToBookmark(n);i(!0)&&i()&&a.setRng(u)}else"string"==typeof n.start?a.setRng(c(n)):n.id?(o("start"),o("end"),f&&(u=l.createRng(),u.setStart(s(f),p),u.setEnd(s(h),m),a.setRng(u))):n.name?a.select(l.select(n.name)[n.index]):n.rng&&a.setRng(n.rng)}}var s=o.isContentEditableFalse;return a.isBookmarkNode=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},a}),r(Y,[y,H,F,T,j,_,d,m,$],function(e,n,r,i,o,a,s,l,c){function u(e,t,i,a){var s=this;s.dom=e,s.win=t,s.serializer=i,s.editor=a,s.bookmarkManager=new o(s),s.controlSelection=new r(s,a),s.win.getSelection||(s.tridentSel=new n(s))}var d=l.each,f=l.trim,h=s.ie;return u.prototype={setCursorLocation:function(e,t){var n=this,r=n.dom.createRng();e?(r.setStart(e,t),r.setEnd(e,t),n.setRng(r),n.collapse(!1)):(n._moveEndPoint(r,n.editor.getBody(),!0),n.setRng(r))},getContent:function(e){var n=this,r=n.getRng(),i=n.dom.create("body"),o=n.getSel(),a,s,l;return e=e||{},a=s="",e.get=!0,e.format=e.format||"html",e.selection=!0,n.editor.fire("BeforeGetContent",e),"text"==e.format?n.isCollapsed()?"":r.text||(o.toString?o.toString():""):(r.cloneContents?(l=r.cloneContents(),l&&i.appendChild(l)):r.item!==t||r.htmlText!==t?(i.innerHTML="
                "+(r.item?r.item(0).outerHTML:r.htmlText),i.removeChild(i.firstChild)):i.innerHTML=r.toString(),/^\s/.test(i.innerHTML)&&(a=" "),/\s+$/.test(i.innerHTML)&&(s=" "),e.getInner=!0,e.content=n.isCollapsed()?"":a+n.serializer.serialize(i,e)+s,n.editor.fire("GetContent",e),e.content)},setContent:function(e,t){var n=this,r=n.getRng(),i,o=n.win.document,a,s;if(t=t||{format:"html"},t.set=!0,t.selection=!0,t.content=e,t.no_events||n.editor.fire("BeforeSetContent",t),e=t.content,r.insertNode){e+='_',r.startContainer==o&&r.endContainer==o?o.body.innerHTML=e:(r.deleteContents(),0===o.body.childNodes.length?o.body.innerHTML=e:r.createContextualFragment?r.insertNode(r.createContextualFragment(e)):(a=o.createDocumentFragment(),s=o.createElement("div"),a.appendChild(s),s.outerHTML=e,r.insertNode(a))),i=n.dom.get("__caret"),r=o.createRange(),r.setStartBefore(i),r.setEndBefore(i),n.setRng(r),n.dom.remove("__caret");try{n.setRng(r)}catch(l){}}else r.item&&(o.execCommand("Delete",!1,null),r=n.getRng()),/^\s+/.test(e)?(r.pasteHTML('_'+e),n.dom.remove("__mce_tmp")):r.pasteHTML(e);t.no_events||n.editor.fire("SetContent",t)},getStart:function(e){var t=this,n=t.getRng(),r,i,o,a;if(n.duplicate||n.item){if(n.item)return n.item(0);for(o=n.duplicate(),o.collapse(1),r=o.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),i=a=n.parentElement();a=a.parentNode;)if(a==r){r=i;break}return r}return r=n.startContainer,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[Math.min(r.childNodes.length-1,n.startOffset)])),r&&3==r.nodeType?r.parentNode:r},getEnd:function(e){var t=this,n=t.getRng(),r,i;return n.duplicate||n.item?n.item?n.item(0):(n=n.duplicate(),n.collapse(0),r=n.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),r&&"BODY"==r.nodeName?r.lastChild||r:r):(r=n.endContainer,i=n.endOffset,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[i>0?i-1:i])),r&&3==r.nodeType?r.parentNode:r)},getBookmark:function(e,t){return this.bookmarkManager.getBookmark(e,t)},moveToBookmark:function(e){return this.bookmarkManager.moveToBookmark(e)},select:function(e,t){var n=this,r=n.dom,i=r.createRng(),o;if(n.lastFocusBookmark=null,e){if(!t&&n.controlSelection.controlSelect(e))return;o=r.nodeIndex(e),i.setStart(e.parentNode,o),i.setEnd(e.parentNode,o+1),t&&(n._moveEndPoint(i,e,!0),n._moveEndPoint(i,e)),n.setRng(i)}return e},isCollapsed:function(){var e=this,t=e.getRng(),n=e.getSel();return!t||t.item?!1:t.compareEndPoints?0===t.compareEndPoints("StartToEnd",t):!n||t.collapsed},collapse:function(e){var t=this,n=t.getRng(),r;n.item&&(r=n.item(0),n=t.win.document.body.createTextRange(),n.moveToElementText(r)),n.collapse(!!e),t.setRng(n)},getSel:function(){var e=this.win;return e.getSelection?e.getSelection():e.document.selection},getRng:function(e){function t(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var n=this,r,i,o,a,s,l;if(!n.win)return null;if(a=n.win.document,!e&&n.lastFocusBookmark){var c=n.lastFocusBookmark;return c.startContainer?(i=a.createRange(),i.setStart(c.startContainer,c.startOffset),i.setEnd(c.endContainer,c.endOffset)):i=c,i}if(e&&n.tridentSel)return n.tridentSel.getRangeAt(0);try{(r=n.getSel())&&(i=r.rangeCount>0?r.getRangeAt(0):r.createRange?r.createRange():a.createRange())}catch(u){}if(l=n.editor.fire("GetSelectionRange",{range:i}),l.range!==i)return l.range;if(h&&i&&i.setStart&&a.selection){try{s=a.selection.createRange()}catch(u){}s&&s.item&&(o=s.item(0),i=a.createRange(),i.setStartBefore(o),i.setEndAfter(o))}return i||(i=a.createRange?a.createRange():a.body.createTextRange()),i.setStart&&9===i.startContainer.nodeType&&i.collapsed&&(o=n.dom.getRoot(),i.setStart(o,0),i.setEnd(o,0)),n.selectedRange&&n.explicitRange&&(0===t(i.START_TO_START,i,n.selectedRange)&&0===t(i.END_TO_END,i,n.selectedRange)?i=n.explicitRange:(n.selectedRange=null,n.explicitRange=null)),i},setRng:function(e,t){var n=this,r,i,o;if(e)if(e.select){n.explicitRange=null;try{e.select()}catch(a){}}else if(n.tridentSel){if(e.cloneRange)try{n.tridentSel.addRange(e)}catch(a){}}else{if(r=n.getSel(),o=n.editor.fire("SetSelectionRange",{range:e}),e=o.range,r){n.explicitRange=e;try{r.removeAllRanges(),r.addRange(e)}catch(a){}t===!1&&r.extend&&(r.collapse(e.endContainer,e.endOffset),r.extend(e.startContainer,e.startOffset)),n.selectedRange=r.rangeCount>0?r.getRangeAt(0):null}e.collapsed||e.startContainer!=e.endContainer||!r.setBaseAndExtent||s.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(i=e.startContainer.childNodes[e.startOffset],i&&"IMG"==i.tagName&&n.getSel().setBaseAndExtent(i,0,i,1))}},setNode:function(e){var t=this;return t.setContent(t.dom.getOuterHTML(e)),e},getNode:function(){function e(e,t){for(var n=e;e&&3===e.nodeType&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}var t=this,n=t.getRng(),r,i,o,a,s,l=t.dom.getRoot();return n?(i=n.startContainer,o=n.endContainer,a=n.startOffset,s=n.endOffset,n.setStart?(r=n.commonAncestorContainer,!n.collapsed&&(i==o&&2>s-a&&i.hasChildNodes()&&(r=i.childNodes[a]),3===i.nodeType&&3===o.nodeType&&(i=i.length===a?e(i.nextSibling,!0):i.parentNode,o=0===s?e(o.previousSibling,!1):o.parentNode,i&&i===o))?i:r&&3==r.nodeType?r.parentNode:r):(r=n.item?n.item(0):n.parentElement(),r.ownerDocument!==t.win.document&&(r=l),r)):l},getSelectedBlocks:function(t,n){var r=this,i=r.dom,o,a,s=[];if(a=i.getRoot(),t=i.getParent(t||r.getStart(),i.isBlock),n=i.getParent(n||r.getEnd(),i.isBlock),t&&t!=a&&s.push(t),t&&n&&t!=n){o=t;for(var l=new e(t,a);(o=l.next())&&o!=n;)i.isBlock(o)&&s.push(o)}return n&&t!=n&&n!=a&&s.push(n),s},isForward:function(){var e=this.dom,t=this.getSel(),n,r;return t&&t.anchorNode&&t.focusNode?(n=e.createRng(),n.setStart(t.anchorNode,t.anchorOffset),n.collapse(!0),r=e.createRng(),r.setStart(t.focusNode,t.focusOffset),r.collapse(!0),n.compareBoundaryPoints(n.START_TO_START,r)<=0):!0},normalize:function(){var e=this,t=e.getRng();return s.range&&new i(e.dom).normalize(t)&&e.setRng(t,e.isForward()),t},selectorChanged:function(e,t){var n=this,r;return n.selectorChangedData||(n.selectorChangedData={},r={},n.editor.on("NodeChange",function(e){var t=e.element,i=n.dom,o=i.getParents(t,null,i.getRoot()),a={};d(n.selectorChangedData,function(e,t){d(o,function(n){return i.is(n,t)?(r[t]||(d(e,function(e){e(!0,{node:n,selector:t,parents:o})}),r[t]=e),a[t]=e,!1):void 0})}),d(r,function(e,n){a[n]||(delete r[n],d(e,function(e){e(!1,{node:t,selector:n,parents:o})}))})})),n.selectorChangedData[e]||(n.selectorChangedData[e]=[]),n.selectorChangedData[e].push(t),n},getScrollContainer:function(){for(var e,t=this.dom.getRoot();t&&"BODY"!=t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){function n(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}}var r,i,o=this,s=o.dom,l=s.getRoot(),c,u,d=0;if(a.isElement(e)){if(t===!1&&(d=e.offsetHeight),"BODY"!=l.nodeName){var f=o.getScrollContainer();if(f)return r=n(e).y-n(f).y+d,u=f.clientHeight,c=f.scrollTop,void((c>r||r+25>c+u)&&(f.scrollTop=c>r?r:r-u+25))}i=s.getViewPort(o.editor.getWin()),r=s.getPos(e).y+d,c=i.y,u=i.h,(rc+u)&&o.editor.getWin().scrollTo(0,c>r?r:r-u+25)}},placeCaretAt:function(e,t){this.setRng(i.getCaretRangeFromPoint(e,t,this.editor.getDoc()))},_moveEndPoint:function(t,n,r){var i=n,o=new e(n,i),a=this.dom.schema.getNonEmptyElements();do{if(3==n.nodeType&&0!==f(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"==n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(s.ie&&s.ie<11&&this.dom.isBlock(n)&&this.dom.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?o.next():o.prev());"BODY"==i.nodeName&&(r?t.setStart(i,0):t.setEnd(i,i.childNodes.length))},getBoundingClientRect:function(){var e=this.getRng();return e.collapsed?c.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){this.win=null,this.controlSelection.destroy()}},u}),r(X,[j,m],function(e,t){function n(t){this.compare=function(n,i){function o(e){var n={};return r(t.getAttribs(e),function(r){var i=r.nodeName.toLowerCase();0!==i.indexOf("_")&&"style"!==i&&0!==i.indexOf("data-")&&(n[i]=t.getAttrib(e,i))}),n}function a(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(n=t[r],"undefined"==typeof n)return!1;if(e[r]!=n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0}return n.nodeName!=i.nodeName?!1:a(o(n),o(i))&&a(t.parseStyle(t.getAttrib(n,"style")),t.parseStyle(t.getAttrib(i,"style")))?!e.isBookmarkNode(n)&&!e.isBookmarkNode(i):!1}}var r=t.each;return n}),r(K,[m],function(e){function t(e,t){function r(e){return e.replace(/%(\w+)/g,"")}var i,o,a=e.dom,s="",l,c;if(c=e.settings.preview_styles,c===!1)return"";if(c||(c="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"),"string"==typeof t){if(t=e.formatter.get(t),!t)return;t=t[0]}return i=t.block||t.inline||"span",o=a.create(i),n(t.styles,function(e,t){e=r(e),e&&a.setStyle(o,t,e)}),n(t.attributes,function(e,t){e=r(e),e&&a.setAttrib(o,t,e)}),n(t.classes,function(e){e=r(e),a.hasClass(o,e)||a.addClass(o,e)}),e.fire("PreviewFormats"),a.setStyles(o,{position:"absolute",left:-65535}),e.getBody().appendChild(o),l=a.getStyle(e.getBody(),"fontSize",!0),l=/px$/.test(l)?parseInt(l,10):0,n(c.split(" "),function(t){var n=a.getStyle(o,t,!0);if(!("background-color"==t&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(n)&&(n=a.getStyle(e.getBody(),t,!0),"#ffffff"==a.toHex(n).toLowerCase())||"color"==t&&"#000000"==a.toHex(n).toLowerCase())){if("font-size"==t&&/em|%$/.test(n)){if(0===l)return;n=parseFloat(n,10)/(/%$/.test(n)?100:1),n=n*l+"px"}"border"==t&&n&&(s+="padding:0 2px;"),s+=t+":"+n+";"}}),e.fire("AfterPreviewFormats"),a.remove(o),s}var n=e.each;return{getCssText:t}}),r(G,[p,_,g],function(e,t,n){function r(e,t){var n=o[e];n||(o[e]=n=[]),o[e].push(t)}function i(e,t){s(o[e],function(e){e(t)})}var o=[],a=e.filter,s=e.each;return r("pre",function(r){function i(t){return c(t.previousSibling)&&-1!=e.indexOf(u,t.previousSibling)}function o(e,t){n(t).remove(),n(e).append("

                ").append(t.childNodes)}var l=r.selection.getRng(),c,u;c=t.matchNodeNames("pre"),l.collapsed||(u=r.selection.getSelectedBlocks(),s(a(a(u,c),i),function(e){o(e.previousSibling,e)}))}),{postProcess:i}}),r(J,[y,T,j,X,m,K,G],function(e,t,n,r,i,o,a){return function(s){function l(e){return e.nodeType&&(e=e.nodeName),!!s.schema.getTextBlockElements()[e.toLowerCase()]}function c(e){return/^(TH|TD)$/.test(e.nodeName)}function u(e){return e&&/^(IMG)$/.test(e.nodeName)}function d(e,t){return Y.getParents(e,t,Y.getRoot())}function f(e){return 1===e.nodeType&&"_mce_caret"===e.id}function h(){g({valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"}}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(e,t,n){ue(n,function(t,n){Y.setAttrib(e,n,t)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]}),ue("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){g(e,{block:e,remove:"all"})}),g(s.settings.formats)}function p(){s.addShortcut("meta+b","bold_desc","Bold"),s.addShortcut("meta+i","italic_desc","Italic"),s.addShortcut("meta+u","underline_desc","Underline");for(var e=1;6>=e;e++)s.addShortcut("access+"+e,"",["FormatBlock",!1,"h"+e]);s.addShortcut("access+7","",["FormatBlock",!1,"p"]),s.addShortcut("access+8","",["FormatBlock",!1,"div"]),s.addShortcut("access+9","",["FormatBlock",!1,"address"])}function m(e){return e?j[e]:j}function g(e,t){e&&("string"!=typeof e?ue(e,function(e,t){g(t,e)}):(t=t.length?t:[t],ue(t,function(e){e.deep===oe&&(e.deep=!e.selector),e.split===oe&&(e.split=!e.selector||e.inline),e.remove===oe&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),j[e]=t))}function v(e){return e&&j[e]&&delete j[e],j}function y(e,t){var n=m(t);if(n)for(var r=0;r0)return r;if(r.childNodes.length>1||r==t||"BR"==r.tagName)return r}}var n=s.selection.getRng(),i=n.startContainer,o=n.endContainer;if(i!=o&&0===n.endOffset){var a=t(i,o),l=3==a.nodeType?a.data.length:a.childNodes.length;n.setEnd(a,l)}return n}function c(e,r,o){var a=[],s,c,h=!0;s=d.inline||d.block,c=Y.create(s),i(c),K.walk(e,function(e){function r(e){var m,v,y,b,C;return C=h,m=e.nodeName.toLowerCase(),v=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&ae(e)&&(C=h,h="true"===ae(e),b=!0),B(m,"br")?(p=0,void(d.block&&Y.remove(e))):d.wrapper&&E(e,t,n)?void(p=0):h&&!b&&d.block&&!d.wrapper&&l(m)&&G(v,s)?(e=Y.rename(e,s),i(e),a.push(e),void(p=0)):d.selector&&(ue(u,function(t){return"collapsed"in t&&t.collapsed!==g?void 0:Y.is(e,t.selector)&&!f(e)?(i(e,t),y=!0,!1):void 0}),!d.inline||y)?void(p=0):void(!h||b||!G(s,m)||!G(v,s)||!o&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||f(e)||d.inline&&J(e)?(p=0,ue(de(e.childNodes),r),b&&(h=C),p=0):(p||(p=Y.clone(c,ne),e.parentNode.insertBefore(p,e),a.push(p)),p.appendChild(e)))}var p;ue(e,r)}),d.links===!0&&ue(a,function(e){function t(e){"A"===e.nodeName&&i(e,d),ue(de(e.childNodes),t)}t(e)}),ue(a,function(e){function r(e){var t=0;return ue(e.childNodes,function(e){P(e)||ce(e)||t++}),t}function o(e){var t,n;return ue(e.childNodes,function(e){return 1!=e.nodeType||ce(e)||f(e)?void 0:(t=e,ne)}),t&&!ce(t)&&A(t,d)&&(n=Y.clone(t,ne),i(n),Y.replace(n,e,re),Y.remove(t,1)),n||e}var s;if(s=r(e),(a.length>1||!J(e))&&0===s)return void Y.remove(e,1);if(d.inline||d.wrapper){if(d.exact||1!==s||(e=o(e)),ue(u,function(t){ue(Y.select(t.inline,e),function(e){ce(e)||F(t,n,e,t.exact?e:null)})}),E(e.parentNode,t,n))return Y.remove(e,1),e=0,re;d.merge_with_parents&&Y.getParent(e.parentNode,function(r){return E(r,t,n)?(Y.remove(e,1),e=0,re):void 0}),e&&d.merge_siblings!==!1&&(e=W(U(e),e),e=W(e,U(e,re)))}})}var u=m(t),d=u[0],h,p,g=!r&&X.isCollapsed();if("false"!==ae(X.getNode())){if(d){if(r)r.nodeType?(p=Y.createRng(),p.setStartBefore(r),p.setEndAfter(r),c(H(p,u),null,!0)):c(r,null,!0);else if(g&&d.inline&&!Y.select("td[data-mce-selected],th[data-mce-selected]").length)$("apply",t,n);else{var v=s.selection.getNode();Q||!u[0].defaultBlock||Y.getParent(v,Y.isBlock)||x(u[0].defaultBlock),s.selection.setRng(o()),h=X.getBookmark(),c(H(X.getRng(re),u),h),d.styles&&(d.styles.color||d.styles.textDecoration)&&(fe(v,C,"childNodes"),C(v)),X.moveToBookmark(h),q(X.getRng(re)),s.nodeChanged()}a.postProcess(t,s)}}else{r=X.getNode();for(var y=0,b=u.length;b>y;y++)if(u[y].ceFalseOverride&&Y.is(r,u[y].selector))return void i(r,u[y])}}function w(e,t,n,r){function i(e){var n,r,o,a,s;if(1===e.nodeType&&ae(e)&&(a=y,y="true"===ae(e),s=!0),n=de(e.childNodes),y&&!s)for(r=0,o=h.length;o>r&&!F(h[r],t,e,e);r++);if(p.deep&&n.length){for(r=0,o=n.length;o>r;r++)i(n[r]);s&&(y=a)}}function o(n){var i;return ue(d(n.parentNode).reverse(),function(n){var o;i||"_start"==n.id||"_end"==n.id||(o=E(n,e,t,r),o&&o.split!==!1&&(i=n))}),i}function a(e,n,r,i){var o,a,s,l,c,u;if(e){for(u=e.parentNode, +o=n.parentNode;o&&o!=u;o=o.parentNode){for(a=Y.clone(o,ne),c=0;cC&&(!h[C].ceFalseOverride||!F(h[C],t,n,n));C++);}}function N(e,t,n){var r=m(e);!_(e,t,n)||"toggle"in r[0]&&!r[0].toggle?x(e,t,n):w(e,t,n)}function E(e,t,n,r){function i(e,t,i){var o,a,s=t[i],l;if(t.onmatch)return t.onmatch(e,t,i);if(s)if(s.length===oe){for(o in s)if(s.hasOwnProperty(o)){if(a="attributes"===i?Y.getAttrib(e,o):D(e,o),r&&!a&&!t.exact)return;if((!r||t.exact)&&!B(a,L(M(s[o],n),o)))return}}else for(l=0;l=0;o--){if(a=t[o].selector,!a||t[o].defaultBlock)return re;for(i=r.length-1;i>=0;i--)if(Y.is(r[i],a))return re}return ne}function T(e,t,n){var r;return ie||(ie={},r={},s.on("NodeChange",function(e){var t=d(e.element),n={};t=i.grep(t,function(e){return 1==e.nodeType&&!e.getAttribute("data-mce-bogus")}),ue(ie,function(e,i){ue(t,function(o){return E(o,i,{},e.similar)?(r[i]||(ue(e,function(e){e(!0,{node:o,format:i,parents:t})}),r[i]=e),n[i]=e,!1):y(o,i)?!1:void 0})}),ue(r,function(i,o){n[o]||(delete r[o],ue(i,function(n){n(!1,{node:e.element,format:o,parents:t})}))})})),ue(e.split(","),function(e){ie[e]||(ie[e]=[],ie[e].similar=n),ie[e].push(t)}),this}function R(e){return o.getCssText(s,e)}function A(e,t){return B(e,t.inline)?re:B(e,t.block)?re:t.selector?1==e.nodeType&&Y.is(e,t.selector):void 0}function B(e,t){return e=e||"",t=t||"",e=""+(e.nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()==t.toLowerCase()}function D(e,t){return L(Y.getStyle(e,t),t)}function L(e,t){return"color"!=t&&"backgroundColor"!=t||(e=Y.toHex(e)),"fontWeight"==t&&700==e&&(e="bold"),"fontFamily"==t&&(e=e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+e}function M(e,t){return"string"!=typeof e?e=e(t):t&&(e=e.replace(/%(\w+)/g,function(e,n){return t[n]||e})),e}function P(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)}function O(e,t,n){var r=Y.create(t,n);return e.parentNode.insertBefore(r,e),r.appendChild(e),r}function H(t,n,r){function i(e){function t(e){return"BR"==e.nodeName&&e.getAttribute("data-mce-bogus")&&!e.nextSibling}var r,i,o,a,s;if(r=i=e?g:y,a=e?"previousSibling":"nextSibling",s=Y.getRoot(),3==r.nodeType&&!P(r)&&(e?v>0:bo?n:o,-1===n||r||n++):(n=a.indexOf(" ",t),o=a.indexOf("\xa0",t),n=-1!==n&&(-1===o||o>n)?n:o),n}var a,l,c,u;if(3===t.nodeType){if(c=o(t,n),-1!==c)return{container:t,offset:c};u=t}for(a=new e(t,Y.getParent(t,J)||s.getBody());l=a[i?"prev":"next"]();)if(3===l.nodeType){if(u=l,c=o(l),-1!==c)return{container:l,offset:c}}else if(J(l))break;return u?(n=i?0:u.length,{container:u,offset:n}):void 0}function u(e,r){var i,o,a,s;for(3==e.nodeType&&0===e.nodeValue.length&&e[r]&&(e=e[r]),i=d(e),o=0;oh?h:v],3==g.nodeType&&(v=0)),1==y.nodeType&&y.hasChildNodes()&&(h=y.childNodes.length-1,y=y.childNodes[b>h?h:b-1],3==y.nodeType&&(b=y.nodeValue.length)),g=a(g),y=a(y),(ce(g.parentNode)||ce(g))&&(g=ce(g)?g:g.parentNode,g=g.nextSibling||g,3==g.nodeType&&(v=0)),(ce(y.parentNode)||ce(y))&&(y=ce(y)?y:y.parentNode,y=y.previousSibling||y,3==y.nodeType&&(b=y.length)),n[0].inline&&(t.collapsed&&(m=c(g,v,!0),m&&(g=m.container,v=m.offset),m=c(y,b),m&&(y=m.container,b=m.offset)),p=o(y,b),p.node)){for(;p.node&&0===p.offset&&p.node.previousSibling;)p=o(p.node.previousSibling);p.node&&p.offset>0&&3===p.node.nodeType&&" "===p.node.nodeValue.charAt(p.offset-1)&&p.offset>1&&(y=p.node,y.splitText(p.offset-1))}return(n[0].inline||n[0].block_expand)&&(n[0].inline&&3==g.nodeType&&0!==v||(g=i(!0)),n[0].inline&&3==y.nodeType&&b!==y.nodeValue.length||(y=i())),n[0].selector&&n[0].expand!==ne&&!n[0].inline&&(g=u(g,"previousSibling"),y=u(y,"nextSibling")),(n[0].block||n[0].selector)&&(g=f(g,"previousSibling"),y=f(y,"nextSibling"),n[0].block&&(J(g)||(g=i(!0)),J(y)||(y=i()))),1==g.nodeType&&(v=Z(g),g=g.parentNode),1==y.nodeType&&(b=Z(y)+1,y=y.parentNode),{startContainer:g,startOffset:v,endContainer:y,endOffset:b}}function I(e,t){return t.links&&"A"==e.tagName}function F(e,t,n,r){var i,o,a;if(!A(n,e)&&!I(n,e))return ne;if("all"!=e.remove)for(ue(e.styles,function(i,o){i=L(M(i,t),o),"number"==typeof o&&(o=i,r=0),(e.remove_similar||!r||B(D(r,o),i))&&Y.setStyle(n,o,""),a=1}),a&&""===Y.getAttrib(n,"style")&&(n.removeAttribute("style"),n.removeAttribute("data-mce-style")),ue(e.attributes,function(e,i){var o;if(e=M(e,t),"number"==typeof i&&(i=e,r=0),!r||B(Y.getAttrib(r,i),e)){if("class"==i&&(e=Y.getAttrib(n,i),e&&(o="",ue(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(o+=(o?" ":"")+e)}),o)))return void Y.setAttrib(n,i,o);"class"==i&&n.removeAttribute("className"),te.test(i)&&n.removeAttribute("data-mce-"+i),n.removeAttribute(i)}}),ue(e.classes,function(e){e=M(e,t),r&&!Y.hasClass(r,e)||Y.removeClass(n,e)}),o=Y.getAttribs(n),i=0;io?o:i]),3===r.nodeType&&n&&i>=r.nodeValue.length&&(r=new e(r,s.getBody()).next()||r),3!==r.nodeType||n||0!==i||(r=new e(r,s.getBody()).prev()||r),r}function $(t,n,r,i){function o(e){var t=Y.create("span",{id:g,"data-mce-bogus":!0,style:v?"color:red":""});return e&&t.appendChild(s.getDoc().createTextNode(ee)),t}function a(e,t){for(;e;){if(3===e.nodeType&&e.nodeValue!==ee||e.childNodes.length>1)return!1;t&&1===e.nodeType&&t.push(e),e=e.firstChild}return!0}function c(e){for(;e;){if(e.id===g)return e;e=e.parentNode}}function u(t){var n;if(t)for(n=new e(t,t),t=n.current();t;t=n.next())if(3===t.nodeType)return t}function d(e,t){var n,r;if(e)r=X.getRng(!0),a(e)?(t!==!1&&(r.setStartBefore(e),r.setEndBefore(e)),Y.remove(e)):(n=u(e),n.nodeValue.charAt(0)===ee&&(n.deleteData(0,1),r.startContainer==n&&r.startOffset>0&&r.setStart(n,r.startOffset-1),r.endContainer==n&&r.endOffset>0&&r.setEnd(n,r.endOffset-1)),Y.remove(e,1)),X.setRng(r);else if(e=c(X.getStart()),!e)for(;e=Y.get(g);)d(e,!1)}function f(){var e,t,i,a,s,l,d;e=X.getRng(!0),a=e.startOffset,l=e.startContainer,d=l.nodeValue,t=c(X.getStart()),t&&(i=u(t)),d&&a>0&&a=0;h--)u.appendChild(Y.clone(f[h],!1)),u=u.firstChild;u.appendChild(Y.doc.createTextNode(ee)),u=u.firstChild;var g=Y.getParent(d,l);g&&Y.isEmpty(g)?d.parentNode.replaceChild(p,d):Y.insertAfter(p,d),X.setCursorLocation(u,1),Y.isEmpty(d)&&Y.remove(d)}}function p(){var e;e=c(X.getStart()),e&&!Y.isEmpty(e)&&fe(e,function(e){1!=e.nodeType||e.id===g||Y.isEmpty(e)||Y.setAttrib(e,"data-mce-bogus",null)},"childNodes")}var g="_mce_caret",v=s.settings.caret_debug;s._hasCaretEvents||(le=function(){var e=[],t;if(a(c(X.getStart()),e))for(t=e.length;t--;)Y.setAttrib(e[t],"data-mce-bogus","1")},se=function(e){var t=e.keyCode;d(),8==t&&X.isCollapsed()&&X.getStart().innerHTML==ee&&d(c(X.getStart())),37!=t&&39!=t||d(c(X.getStart())),p()},s.on("SetContent",function(e){e.selection&&p()}),s._hasCaretEvents=!0),"apply"==t?f():h()}function q(t){var n=t.startContainer,r=t.startOffset,i,o,a,s,l;if((t.startContainer!=t.endContainer||!u(t.startContainer.childNodes[t.startOffset]))&&(3==n.nodeType&&r>=n.nodeValue.length&&(r=Z(n),n=n.parentNode,i=!0),1==n.nodeType))for(s=n.childNodes,n=s[Math.min(r,s.length-1)],o=new e(n,Y.getParent(n,Y.isBlock)),(r>s.length-1||i)&&o.next(),a=o.current();a;a=o.next())if(3==a.nodeType&&!P(a))return l=Y.create("a",{"data-mce-bogus":"all"},ee),a.parentNode.insertBefore(l,a),t.setStart(a,0),X.setRng(t),void Y.remove(l)}var j={},Y=s.dom,X=s.selection,K=new t(Y),G=s.schema.isValidChild,J=Y.isBlock,Q=s.settings.forced_root_block,Z=Y.nodeIndex,ee="\ufeff",te=/^(src|href|style)$/,ne=!1,re=!0,ie,oe,ae=Y.getContentEditable,se,le,ce=n.isBookmarkNode,ue=i.each,de=i.grep,fe=i.walk,he=i.extend;he(this,{get:m,register:g,unregister:v,apply:x,remove:w,toggle:N,match:_,matchAll:S,matchNode:E,canApply:k,formatChanged:T,getCssText:R}),h(),p(),s.on("BeforeGetContent",function(e){le&&"raw"!=e.format&&le()}),s.on("mouseup keydown",function(e){se&&se(e)})}}),r(Q,[I,d],function(e,t){return function(e){function n(){return e.serializer.getTrimmedContent()}function r(t){e.setDirty(t)}function i(e){o.typing=!1,o.add({},e)}var o=this,a=0,s=[],l,c,u=0;return e.on("init",function(){o.add()}),e.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&o.beforeChange()}),e.on("ExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&i(e)}),e.on("ObjectResizeStart Cut",function(){o.beforeChange()}),e.on("SaveContent ObjectResized blur",i),e.on("DragEnd",i),e.on("KeyUp",function(a){var l=a.keyCode;a.isDefaultPrevented()||((l>=33&&36>=l||l>=37&&40>=l||45==l||13==l||a.ctrlKey)&&(i(),e.nodeChanged()),(46==l||8==l||t.mac&&(91==l||93==l))&&e.nodeChanged(),c&&o.typing&&(e.isDirty()||(r(s[0]&&n()!=s[0].content),e.isDirty()&&e.fire("change",{level:s[0],lastLevel:null})),e.fire("TypingUndo"),c=!1,e.nodeChanged()))}),e.on("KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented()){if(t>=33&&36>=t||t>=37&&40>=t||45==t)return void(o.typing&&i(e));var n=e.ctrlKey&&!e.altKey||e.metaKey;!(16>t||t>20)||224==t||91==t||o.typing||n||(o.beforeChange(),o.typing=!0,o.add({},e),c=!0)}}),e.on("MouseDown",function(e){o.typing&&i(e)}),e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo"),e.on("AddUndo Undo Redo ClearUndos",function(t){t.isDefaultPrevented()||e.nodeChanged()}),o={data:s,typing:!1,beforeChange:function(){u||(l=e.selection.getBookmark(2,!0))},add:function(t,i){var o,c=e.settings,d;if(t=t||{},t.content=n(),u||e.removed)return null;if(d=s[a],e.fire("BeforeAddUndo",{level:t,lastLevel:d,originalEvent:i}).isDefaultPrevented())return null;if(d&&d.content==t.content)return null;if(s[a]&&(s[a].beforeBookmark=l),c.custom_undo_redo_levels&&s.length>c.custom_undo_redo_levels){for(o=0;o0&&(r(!0),e.fire("change",f)),t},undo:function(){var t;return o.typing&&(o.add(),o.typing=!1),a>0&&(t=s[--a],e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(t.beforeBookmark),r(!0),e.fire("undo",{level:t})),t},redo:function(){var t;return a0||o.typing&&s[0]&&n()!=s[0].content},hasRedo:function(){return aP)&&(u=a.create("br"),t.parentNode.insertBefore(u,t)),l.setStartBefore(t),l.setEndBefore(t)):(l.setStartAfter(t),l.setEndAfter(t)):(l.setStart(t,0),l.setEnd(t,0));s.setRng(l),a.remove(u),s.scrollIntoView(t)}}function y(e){var t=l.forced_root_block;t&&t.toLowerCase()===e.tagName.toLowerCase()&&a.setAttribs(e,l.forced_root_block_attrs)}function b(e){e.innerHTML=r?"":'
                '}function C(e){var t=D,n,i,o,s=u.getTextInlineElements();if(e||"TABLE"==z?(n=a.create(e||W),y(n)):n=M.cloneNode(!1),o=n,l.keep_styles!==!1)do if(s[t.nodeName]){if("_mce_caret"==t.id)continue;i=t.cloneNode(!1),a.setAttrib(i,"id",""),n.hasChildNodes()?(i.appendChild(n.firstChild),n.appendChild(i)):(o=i,n.appendChild(i))}while((t=t.parentNode)&&t!=B);return r||(o.innerHTML='
                '),n}function x(t){var n,r,i;if(3==D.nodeType&&(t?L>0:LD.childNodes.length-1,D=D.childNodes[Math.min(L,D.childNodes.length-1)]||D,L=V&&3==D.nodeType?D.nodeValue.length:0),B=S(D)){if(c.beforeChange(),!a.isBlock(B)&&B!=a.getRoot())return void(W&&!O||E());if((W&&!O||!W&&O)&&(D=w(D,L)),M=a.getParent(D,a.isBlock),F=M?a.getParent(M.parentNode,a.isBlock):null,z=M?M.nodeName.toUpperCase():"",U=F?F.nodeName.toUpperCase():"","LI"!=U||o.ctrlKey||(M=F,z=U),/^(LI|DT|DD)$/.test(z)){if(!W&&O)return void E();if(a.isEmpty(M))return void N()}if("PRE"==z&&l.br_in_pre!==!1){if(!O)return void E()}else if(!W&&!O&&"LI"!=z||W&&O)return void E();W&&M===i.getBody()||(W=W||"P",x()?T():x(!0)?(H=M.parentNode.insertBefore(C(),M),m(H),v(M)):(A=R.cloneRange(),A.setEndAfter(M),I=A.extractContents(),_(I),H=I.firstChild,a.insertAfter(I,M),g(H),k(M),a.isEmpty(M)&&b(M),H.normalize(),a.isEmpty(H)?(a.remove(H),T()):v(H)),a.setAttrib(H,"id",""),i.fire("NewBlock",{newBlock:H}),c.add())}}}var a=i.dom,s=i.selection,l=i.settings,c=i.undoManager,u=i.schema,d=u.getNonEmptyElements(),f=u.getMoveCaretBeforeOnEnterElements();i.on("keydown",function(e){13==e.keyCode&&o(e)!==!1&&e.preventDefault()})}}),r(ee,[],function(){return function(e){function t(){var t=i.getStart(),s=e.getBody(),l,c,u,d,f,h,p,m=-16777215,g,v,y,b,C;if(C=n.forced_root_block,t&&1===t.nodeType&&C){for(;t&&t!=s;){if(a[t.nodeName])return;t=t.parentNode}if(l=i.getRng(),l.setStart){c=l.startContainer,u=l.startOffset,d=l.endContainer,f=l.endOffset;try{v=e.getDoc().activeElement===s}catch(x){}}else l.item&&(t=l.item(0),l=e.getDoc().body.createTextRange(),l.moveToElementText(t)),v=l.parentElement().ownerDocument===e.getDoc(),y=l.duplicate(),y.collapse(!0),u=-1*y.move("character",m),y.collapsed||(y=l.duplicate(),y.collapse(!1),f=-1*y.move("character",m)-u);for(t=s.firstChild,b=s.nodeName.toLowerCase();t;)if((3===t.nodeType||1==t.nodeType&&!a[t.nodeName])&&o.isValidChild(b,C.toLowerCase())){if(3===t.nodeType&&0===t.nodeValue.length){p=t,t=t.nextSibling,r.remove(p);continue}h||(h=r.create(C,e.settings.forced_root_block_attrs),t.parentNode.insertBefore(h,t),g=!0),p=t,t=t.nextSibling,h.appendChild(p)}else h=null,t=t.nextSibling;if(g&&v){if(l.setStart)l.setStart(c,u),l.setEnd(d,f),i.setRng(l);else try{l=e.getDoc().body.createTextRange(),l.moveToElementText(s),l.collapse(!0),l.moveStart("character",u),f>0&&l.moveEnd("character",f),l.select()}catch(x){}e.nodeChanged()}}}var n=e.settings,r=e.dom,i=e.selection,o=e.schema,a=o.getBlockElements();n.forced_root_block&&e.on("NodeChange",t)}}),r(te,[z,y,_,$,k,U],function(e,t,n,r,i,o){function a(e){return e>0}function s(e){return 0>e}function l(e,n,r,i,o){var l=new t(e,i);if(s(n)){if(C(e)&&(e=l.prev(!0),r(e)))return e;for(;e=l.prev(o);)if(r(e))return e}if(a(n)){if(C(e)&&(e=l.next(!0),r(e)))return e;for(;e=l.next(o);)if(r(e))return e}return null}function c(e,t){for(e=e.parentNode;e&&e!=t;e=e.parentNode)if(b(e))return e;return t}function u(e,t){for(;e&&e!=t;){if(x(e))return e;e=e.parentNode}return null}function d(e,t,n){return u(e.container(),n)==u(t.container(),n)}function f(e,t,n){return c(e.container(),n)==c(t.container(),n)}function h(e,t){var n,r;return t?(n=t.container(),r=t.offset(),E(n)?n.childNodes[r+e]:null):null}function p(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n}function m(e,t,n){return u(t,e)==u(n,e)}function g(e,t,n){var r,i;for(i=e?"previousSibling":"nextSibling";n&&n!=t;){if(r=n[i],w(r)&&(r=r[i]),C(r)){if(m(t,r,n))return r;break}if(_(r))break;n=n.parentNode}return null}function v(e,t,r){var o,a,s,l,c=N(g,!0,t),u=N(g,!1,t);if(a=r.startContainer,s=r.startOffset,i.isCaretContainerBlock(a)){if(E(a)||(a=a.parentNode),l=a.getAttribute("data-mce-caret"),"before"==l&&(o=a.nextSibling,C(o)))return S(o);if("after"==l&&(o=a.previousSibling,C(o)))return k(o)}if(!r.collapsed)return r;if(n.isText(a)){if(w(a)){if(1===e){if(o=u(a))return S(o);if(o=c(a))return k(o)}if(-1===e){if(o=c(a))return k(o);if(o=u(a))return S(o)}return r}if(i.endsWithCaretContainer(a)&&s>=a.data.length-1)return 1===e&&(o=u(a))?S(o):r;if(i.startsWithCaretContainer(a)&&1>=s)return-1===e&&(o=c(a))?k(o):r;if(s===a.data.length)return o=u(a),o?S(o):r;if(0===s)return o=c(a),o?k(o):r}return r}function y(e,t){return C(h(e,t))}var b=n.isContentEditableTrue,C=n.isContentEditableFalse,x=n.matchStyleValues("display","block table table-cell table-caption"),w=i.isCaretContainer,N=e.curry,E=n.isElement,_=o.isCaretCandidate,S=N(p,!0),k=N(p,!1);return{isForwards:a,isBackwards:s,findNode:l,getEditingHost:c,getParentBlock:u,isInSameBlock:d,isInSameEditingHost:f,isBeforeContentEditableFalse:N(y,0),isAfterContentEditableFalse:N(y,-1),normalizeRange:v}}),r(ne,[_,U,$,te,p,z],function(e,t,n,r,i,o){function a(e,t){for(var n=[];e&&e!=t;)n.push(e),e=e.parentNode;return n}function s(e,t){return e.hasChildNodes()&&t0)return n(C,--x);if(m(e)&&x0&&(N=s(C,x-1),v(N)))return!y(N)&&(E=r.findNode(N,e,b,N))?f(E)?n(E,E.data.length):n.after(E):f(N)?n(N,N.data.length):n.before(N);if(m(e)&&x0&&s(e[e.length-1])?e.slice(0,-1):e},c=function(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null},u=function(e,t){return!!c(e,t)},d=function(e,t){var n=t.cloneRange(),r=t.cloneRange();return n.setStartBefore(e),r.setEndAfter(e),[n.cloneContents(),r.cloneContents()]},f=function(e,r){var i=n.before(e),o=new t(r),a=o.next(i);return a?a.toRange():null},h=function(e,r){var i=n.after(e),o=new t(r),a=o.prev(i);return a?a.toRange():null},p=function(t,n,r,i){var o=d(t,i),a=t.parentNode;return a.insertBefore(o[0],t),e.each(n,function(e){a.insertBefore(e,t)}),a.insertBefore(o[1],t),a.removeChild(t),h(n[n.length-1],r)},m=function(t,n,r){var i=t.parentNode;return e.each(n,function(e){i.insertBefore(e,t)}),f(t,r)},g=function(e,t,n,r){return r.insertAfter(t.reverse(),e),h(t[0],n)},v=function(e,r,i,s){var u=o(r,e,s),d=c(r,i.startContainer),f=l(a(u.firstChild)),h=1,v=2,y=r.getRoot(),b=function(e){var o=n.fromRangeStart(i),a=new t(r.getRoot()),s=e===h?a.prev(o):a.next(o);return s?c(r,s.getNode())!==d:!0};return b(h)?m(d,f,y):b(v)?g(d,f,y,r):p(d,f,y,i)};return{isListFragment:r,insertAtCaret:v,isParentBlockLi:u,trimListItems:l,listItems:a}}),r(ie,[d,m,P,ne,$,X,_,re],function(e,t,n,r,i,o,a,s){var l=a.matchNodeNames("td th"),c=function(a,c,u){function d(e){function t(e){return r[e]&&3==r[e].nodeType}var n,r,i;return n=D.getRng(!0),r=n.startContainer,i=n.startOffset,3==r.nodeType&&(i>0?e=e.replace(/^ /," "):t("previousSibling")||(e=e.replace(/^ /," ")),i|)$/," "):t("nextSibling")||(e=e.replace(/( | )(
                |)$/," "))),e}function f(){var e,t,n;e=D.getRng(!0),t=e.startContainer,n=e.startOffset,3==t.nodeType&&e.collapsed&&("\xa0"===t.data[n]?(t.deleteData(n,1),/[\u00a0| ]$/.test(c)||(c+=" ")):"\xa0"===t.data[n-1]&&(t.deleteData(n-1,1),/[\u00a0| ]$/.test(c)||(c=" "+c)))}function h(){if(A){var e=a.getBody(),n=new o(L);t.each(L.select("*[data-mce-fragment]"),function(t){for(var r=t.parentNode;r&&r!=e;r=r.parentNode)B[t.nodeName.toLowerCase()]&&n.compare(r,t)&&L.remove(t,!0)})}}function p(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}function m(e){t.each(e.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")})}function g(e){return!!e.getAttribute("data-mce-fragment")}function v(e){return e&&!a.schema.getShortEndedElements()[e.nodeName]}function y(t){function n(e){for(var t=a.getBody();e&&e!==t;e=e.parentNode)if("false"===a.dom.getContentEditable(e))return e;return null}function o(e){var t=i.fromRangeStart(e),n=new r(a.getBody());return t=n.next(t),t?t.toRange():void 0}var s,c,u;if(t){if(D.scrollIntoView(t),s=n(t))return L.remove(t),void D.select(s);S=L.createRng(),k=t.previousSibling,k&&3==k.nodeType?(S.setStart(k,k.nodeValue.length),e.ie||(T=t.nextSibling,T&&3==T.nodeType&&(k.appendData(T.data),T.parentNode.removeChild(T)))):(S.setStartBefore(t),S.setEndBefore(t)),c=L.getParent(t,L.isBlock),L.remove(t),c&&L.isEmpty(c)&&(a.$(c).empty(),S.setStart(c,0),S.setEnd(c,0),l(c)||g(c)||!(u=o(S))?L.add(c,L.create("br",{"data-mce-bogus":"1"})):(S=u,L.remove(c))),D.setRng(S)}}var b,C,x,w,N,E,_,S,k,T,R,A,B=a.schema.getTextInlineElements(),D=a.selection,L=a.dom;/^ | $/.test(c)&&(c=d(c)),b=a.parser,A=u.merge,C=new n({validate:a.settings.validate},a.schema),R='​',E={content:c,format:"html",selection:!0},a.fire("BeforeSetContent",E),c=E.content,-1==c.indexOf("{$caret}")&&(c+="{$caret}"),c=c.replace(/\{\$caret\}/,R),S=D.getRng();var M=S.startContainer||(S.parentElement?S.parentElement():null),P=a.getBody();M===P&&D.isCollapsed()&&L.isBlock(P.firstChild)&&v(P.firstChild)&&L.isEmpty(P.firstChild)&&(S=L.createRng(),S.setStart(P.firstChild,0),S.setEnd(P.firstChild,0),D.setRng(S)),D.isCollapsed()||(a.selection.setRng(a.selection.getRng()),a.getDoc().execCommand("Delete",!1,null), +f()),x=D.getNode();var O={context:x.nodeName.toLowerCase(),data:u.data};if(N=b.parse(c,O),u.paste===!0&&s.isListFragment(N)&&s.isParentBlockLi(L,x))return S=s.insertAtCaret(C,L,a.selection.getRng(!0),N),a.selection.setRng(S),void a.fire("SetContent",E);if(p(N),k=N.lastChild,"mce_marker"==k.attr("id"))for(_=k,k=k.prev;k;k=k.walk(!0))if(3==k.type||!L.isBlock(k.name)){a.schema.isValidChild(k.parent.name,"span")&&k.parent.insert(_,k,"br"===k.name);break}if(a._selectionOverrides.showBlockCaretContainer(x),O.invalid){for(D.setContent(R),x=D.getNode(),w=a.getBody(),9==x.nodeType?x=k=w:k=x;k!==w;)x=k,k=k.parentNode;c=x==w?w.innerHTML:L.getOuterHTML(x),c=C.serialize(b.parse(c.replace(//i,function(){return C.serialize(N)}))),x==w?L.setHTML(w,c):L.setOuterHTML(x,c)}else c=C.serialize(N),k=x.firstChild,T=x.lastChild,!k||k===T&&"BR"===k.nodeName?L.setHTML(x,c):D.setContent(c);h(),y(L.get("mce_marker")),m(a.getBody()),a.fire("SetContent",E),a.addVisual()},u=function(e){var n;return"string"!=typeof e?(n=t.extend({paste:e.paste,data:{paste:e.paste}},e),{content:e.content,details:n}):{content:e,details:{}}},d=function(e,t){var n=u(t);c(e,n.content,n.details)};return{insertAtCaret:d}}),r(oe,[d,m,T,y,ie],function(e,n,r,i,o){var a=n.each,s=n.extend,l=n.map,c=n.inArray,u=n.explode,d=e.ie&&e.ie<11,f=!0,h=!1;return function(n){function p(e,t,r,i){var o,s,l=0;if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||i&&i.skip_focus||n.focus(),i=n.fire("BeforeExecCommand",{command:e,ui:t,value:r}),i.isDefaultPrevented())return!1;if(s=e.toLowerCase(),o=B.exec[s])return o(s,t,r),n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;if(a(n.plugins,function(i){return i.execCommand&&i.execCommand(e,t,r)?(n.fire("ExecCommand",{command:e,ui:t,value:r}),l=!0,!1):void 0}),l)return l;if(n.theme&&n.theme.execCommand&&n.theme.execCommand(e,t,r))return n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;try{l=n.getDoc().execCommand(e,t,r)}catch(c){}return l?(n.fire("ExecCommand",{command:e,ui:t,value:r}),!0):!1}function m(e){var t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=B.state[e])return t(e);try{return n.getDoc().queryCommandState(e)}catch(r){}return!1}}function g(e){var t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=B.value[e])return t(e);try{return n.getDoc().queryCommandValue(e)}catch(r){}}}function v(e,t){t=t||"exec",a(e,function(e,n){a(n.toLowerCase().split(","),function(n){B[t][n]=e})})}function y(e,t,r){e=e.toLowerCase(),B.exec[e]=function(e,i,o,a){return t.call(r||n,i,o,a)}}function b(e){if(e=e.toLowerCase(),B.exec[e])return!0;try{return n.getDoc().queryCommandSupported(e)}catch(t){}return!1}function C(e,t,r){e=e.toLowerCase(),B.state[e]=function(){return t.call(r||n)}}function x(e,t,r){e=e.toLowerCase(),B.value[e]=function(){return t.call(r||n)}}function w(e){return e=e.toLowerCase(),!!B.exec[e]}function N(e,r,i){return r===t&&(r=h),i===t&&(i=null),n.getDoc().execCommand(e,r,i)}function E(e){return A.match(e)}function _(e,r){A.toggle(e,r?{value:r}:t),n.nodeChanged()}function S(e){L=R.getBookmark(e)}function k(){R.moveToBookmark(L)}var T,R,A,B={state:{},exec:{},value:{}},D=n.settings,L;n.on("PreInit",function(){T=n.dom,R=n.selection,D=n.settings,A=n.formatter}),s(this,{execCommand:p,queryCommandState:m,queryCommandValue:g,queryCommandSupported:b,addCommands:v,addCommand:y,addQueryStateHandler:C,addQueryValueHandler:x,hasCustomCommand:w}),v({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(t){var r=n.getDoc(),i;try{N(t)}catch(o){i=f}if("paste"!==t||r.queryCommandEnabled(t)||(i=!0),i||!r.queryCommandSupported(t)){var a=n.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");e.mac&&(a=a.replace(/Ctrl\+/g,"\u2318+")),n.notificationManager.open({text:a,type:"error"})}},unlink:function(){if(R.isCollapsed()){var e=R.getNode();return void("A"==e.tagName&&n.dom.remove(e,!0))}A.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"==t&&(t="justify"),a("left,center,right,justify".split(","),function(e){t!=e&&A.remove("align"+e)}),"none"!=t&&_("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;N(e),t=T.getParent(R.getNode(),"ol,ul"),t&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(S(),T.split(n,t),k()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){_(e)},"ForeColor,HiliteColor,FontName":function(e,t,n){_(e,n)},FontSize:function(e,t,n){var r,i;n>=1&&7>=n&&(i=u(D.font_size_style_values),r=u(D.font_size_classes),n=r?r[n-1]||n:i[n-1]||n),_(e,n)},RemoveFormat:function(e){A.remove(e)},mceBlockQuote:function(){_("blockquote")},FormatBlock:function(e,t,n){return _(n||"p")},mceCleanup:function(){var e=R.getBookmark();n.setContent(n.getContent({cleanup:f}),{cleanup:f}),R.moveToBookmark(e)},mceRemoveNode:function(e,t,r){var i=r||R.getNode();i!=n.getBody()&&(S(),n.dom.remove(i,f),k())},mceSelectNodeDepth:function(e,t,r){var i=0;T.getParent(R.getNode(),function(e){return 1==e.nodeType&&i++==r?(R.select(e),h):void 0},n.getBody())},mceSelectNode:function(e,t,n){R.select(n)},mceInsertContent:function(e,t,r){o.insertAtCaret(n,r)},mceInsertRawHTML:function(e,t,r){R.setContent("tiny_mce_marker"),n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return r}))},mceToggleFormat:function(e,t,n){_(n)},mceSetContent:function(e,t,r){n.setContent(r)},"Indent,Outdent":function(e){var t,r,i;t=D.indentation,r=/[a-z%]+$/i.exec(t),t=parseInt(t,10),m("InsertUnorderedList")||m("InsertOrderedList")?N(e):(D.forced_root_block||T.getParent(R.getNode(),T.isBlock)||A.apply("div"),a(R.getSelectedBlocks(),function(o){if("false"!==T.getContentEditable(o)&&"LI"!=o.nodeName){var a=n.getParam("indent_use_margin",!1)?"margin":"padding";a+="rtl"==T.getStyle(o,"direction",!0)?"Right":"Left","outdent"==e?(i=Math.max(0,parseInt(o.style[a]||0,10)-t),T.setStyle(o,a,i?i+r:"")):(i=parseInt(o.style[a]||0,10)+t+r,T.setStyle(o,a,i))}}))},mceRepaint:function(){},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",!1,"
                ")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual,n.addVisual()},mceReplaceContent:function(e,t,r){n.execCommand("mceInsertContent",!1,r.replace(/\{\$selection\}/g,R.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=T.getParent(R.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||A.remove("link"),n.href&&A.apply("link",n,r)},selectAll:function(){var e=T.getRoot(),t;R.getRng().setStart?(t=T.createRng(),t.setStart(e,0),t.setEnd(e,e.childNodes.length),R.setRng(t)):(t=R.getRng(),t.item||(t.moveToElementText(e),t.select()))},"delete":function(){N("Delete");var e=n.getBody();T.isEmpty(e)&&(n.setContent(""),e.firstChild&&T.isBlock(e.firstChild)?n.selection.setCursorLocation(e.firstChild,0):n.selection.setCursorLocation(e,0))},mceNewDocument:function(){n.setContent("")},InsertLineBreak:function(e,t,o){function a(){for(var e=new i(m,v),t,r=n.schema.getNonEmptyElements();t=e.next();)if(r[t.nodeName.toLowerCase()]||t.length>0)return!0}var s=o,l,c,u,h=R.getRng(!0);new r(T).normalize(h);var p=h.startOffset,m=h.startContainer;if(1==m.nodeType&&m.hasChildNodes()){var g=p>m.childNodes.length-1;m=m.childNodes[Math.min(p,m.childNodes.length-1)]||m,p=g&&3==m.nodeType?m.nodeValue.length:0}var v=T.getParent(m,T.isBlock),y=v?v.nodeName.toUpperCase():"",b=v?T.getParent(v.parentNode,T.isBlock):null,C=b?b.nodeName.toUpperCase():"",x=s&&s.ctrlKey;"LI"!=C||x||(v=b,y=C),m&&3==m.nodeType&&p>=m.nodeValue.length&&(d||a()||(l=T.create("br"),h.insertNode(l),h.setStartAfter(l),h.setEndAfter(l),c=!0)),l=T.create("br"),h.insertNode(l);var w=T.doc.documentMode;return d&&"PRE"==y&&(!w||8>w)&&l.parentNode.insertBefore(T.doc.createTextNode("\r"),l),u=T.create("span",{}," "),l.parentNode.insertBefore(u,l),R.scrollIntoView(u),T.remove(u),c?(h.setStartBefore(l),h.setEndBefore(l)):(h.setStartAfter(l),h.setEndAfter(l)),R.setRng(h),n.undoManager.add(),f}}),v({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t="align"+e.substring(7),n=R.isCollapsed()?[T.getParent(R.getNode(),T.isBlock)]:R.getSelectedBlocks(),r=l(n,function(e){return!!A.matchNode(e,t)});return-1!==c(r,f)},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return E(e)},mceBlockQuote:function(){return E("blockquote")},Outdent:function(){var e;if(D.inline_styles){if((e=T.getParent(R.getStart(),T.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return f;if((e=T.getParent(R.getEnd(),T.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return f}return m("InsertUnorderedList")||m("InsertOrderedList")||!D.inline_styles&&!!T.getParent(R.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=T.getParent(R.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),v({"FontSize,FontName":function(e){var t=0,n;return(n=T.getParent(R.getNode(),"span"))&&(t="fontsize"==e?n.style.fontSize:n.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()),t}},"value"),v({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}),r(ae,[m],function(e){function t(e,o){var a=this,s,l;if(e=r(e),o=a.settings=o||{},s=o.base_uri,/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))return void(a.source=e);var c=0===e.indexOf("//");0!==e.indexOf("/")||c||(e=(s?s.protocol||"http":"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(l=o.base_uri?o.base_uri.path:new t(location.href).directory,""===o.base_uri.protocol?e="//mce_host"+a.toAbsPath(l,e):(e=/([^#?]*)([#?]?.*)/.exec(e),e=(s&&s.protocol||"http")+"://mce_host"+a.toAbsPath(l,e[1])+e[2])),e=e.replace(/@@/g,"(mce_at)"),e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),n(i,function(t,n){var r=e[n];r&&(r=r.replace(/\(mce_at\)/g,"@@")),a[t]=r}),s&&(a.protocol||(a.protocol=s.protocol),a.userInfo||(a.userInfo=s.userInfo),a.port||"mce_host"!==a.host||(a.port=s.port),a.host&&"mce_host"!==a.host||(a.host=s.host),a.source=""),c&&(a.protocol="")}var n=e.each,r=e.trim,i="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),o={ftp:21,http:80,https:443,mailto:25};return t.prototype={setPath:function(e){var t=this;e=/^(.*?)\/?(\w+)?$/.exec(e),t.path=e[0],t.directory=e[1],t.file=e[2],t.source="",t.getURI()},toRelative:function(e){var n=this,r;if("./"===e)return e;if(e=new t(e,{base_uri:n}),"mce_host"!=e.host&&n.host!=e.host&&e.host||n.port!=e.port||n.protocol!=e.protocol&&""!==e.protocol)return e.getURI();var i=n.getURI(),o=e.getURI();return i==o||"/"==i.charAt(i.length-1)&&i.substr(0,i.length-1)==o?i:(r=n.toRelPath(n.path,e.path),e.query&&(r+="?"+e.query),e.anchor&&(r+="#"+e.anchor),r)},toAbsolute:function(e,n){return e=new t(e,{base_uri:this}),e.getURI(n&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=o[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r=0,i="",o,a;if(e=e.substring(0,e.lastIndexOf("/")),e=e.split("/"),n=t.split("/"),e.length>=n.length)for(o=0,a=e.length;a>o;o++)if(o>=n.length||e[o]!=n[o]){r=o+1;break}if(e.lengtho;o++)if(o>=e.length||e[o]!=n[o]){r=o+1;break}if(1===r)return t;for(o=0,a=e.length-(r-1);a>o;o++)i+="../";for(o=r-1,a=n.length;a>o;o++)i+=o!=r-1?"/"+n[o]:n[o];return i},toAbsPath:function(e,t){var r,i=0,o=[],a,s;for(a=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),n(e,function(e){e&&o.push(e)}),e=o,r=t.length-1,o=[];r>=0;r--)0!==t[r].length&&"."!==t[r]&&(".."!==t[r]?i>0?i--:o.push(t[r]):i++);return r=e.length-i,s=0>=r?o.reverse().join("/"):e.slice(0,r).join("/")+"/"+o.reverse().join("/"),0!==s.indexOf("/")&&(s="/"+s),a&&s.lastIndexOf("/")!==s.length-1&&(s+=a),s},getURI:function(e){var t,n=this;return n.source&&!e||(t="",e||(t+=n.protocol?n.protocol+"://":"//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},t.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}},t.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t},t}),r(se,[m],function(e){function t(){}var n=e.each,r=e.extend,i,o;return t.extend=i=function(e){function t(){var e,t,n,r=this;if(!o&&(r.init&&r.init.apply(r,arguments),t=r.Mixins))for(e=t.length;e--;)n=t[e],n.init&&n.init.apply(r,arguments)}function a(){return this}function s(e,t){return function(){var n=this,r=n._super,i;return n._super=c[e],i=t.apply(n,arguments),n._super=r,i}}var l=this,c=l.prototype,u,d,f;o=!0,u=new l,o=!1,e.Mixins&&(n(e.Mixins,function(t){for(var n in t)"init"!==n&&(e[n]=t[n])}),c.Mixins&&(e.Mixins=c.Mixins.concat(e.Mixins))),e.Methods&&n(e.Methods.split(","),function(t){e[t]=a}),e.Properties&&n(e.Properties.split(","),function(t){var n="_"+t;e[t]=function(e){var t=this,r;return e!==r?(t[n]=e,t):t[n]}}),e.Statics&&n(e.Statics,function(e,n){t[n]=e}),e.Defaults&&c.Defaults&&(e.Defaults=r({},c.Defaults,e.Defaults));for(d in e)f=e[d],"function"==typeof f&&c[d]?u[d]=s(d,f):u[d]=f;return t.prototype=u,t.constructor=t,t.extend=i,t},t}),r(le,[m],function(e){function t(t){function n(){return!1}function r(){return!0}function i(e,i){var o,s,l,c;if(e=e.toLowerCase(),i=i||{},i.type=e,i.target||(i.target=u),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=r},i.stopPropagation=function(){i.isPropagationStopped=r},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=r},i.isDefaultPrevented=n,i.isPropagationStopped=n,i.isImmediatePropagationStopped=n),t.beforeFire&&t.beforeFire(i),o=d[e])for(s=0,l=o.length;l>s;s++){if(c=o[s],c.once&&a(e,c.func),i.isImmediatePropagationStopped())return i.stopPropagation(),i;if(c.func.call(u,i)===!1)return i.preventDefault(),i}return i}function o(t,r,i,o){var a,s,l;if(r===!1&&(r=n),r)for(r={func:r},o&&e.extend(r,o),s=t.toLowerCase().split(" "),l=s.length;l--;)t=s[l],a=d[t],a||(a=d[t]=[],f(t,!0)),i?a.unshift(r):a.push(r);return c}function a(e,t){var n,r,i,o,a;if(e)for(o=e.toLowerCase().split(" "),n=o.length;n--;){if(e=o[n],r=d[e],!e){for(i in d)f(i,!1),delete d[i];return c}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),d[e]=r);else r.length=0;r.length||(f(e,!1),delete d[e])}}else{for(e in d)f(e,!1);d={}}return c}function s(e,t,n){return o(e,t,n,{once:!0})}function l(e){return e=e.toLowerCase(),!(!d[e]||0===d[e].length)}var c=this,u,d={},f;t=t||{},u=t.scope||c,f=t.toggleEvent||n,c.fire=i,c.on=o,c.off=a,c.once=s,c.has=l}var n=e.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend"," ");return t.isNative=function(e){return!!n[e.toLowerCase()]},t}),r(ce,[],function(){function e(e){this.create=e.create}return e.create=function(t,n){return new e({create:function(e,r){function i(t){e.set(r,t.value)}function o(e){t.set(n,e.value)}var a;return e.on("change:"+r,o),t.on("change:"+n,i),a=e._bindings,a||(a=e._bindings=[],e.on("destroy",function(){for(var e=a.length;e--;)a[e]()})),a.push(function(){t.off("change:"+n,i)}),t.get(n)}})},e}),r(ue,[le],function(e){function t(t){return t._eventDispatcher||(t._eventDispatcher=new e({scope:t,toggleEvent:function(n,r){e.isNative(n)&&t.toggleNativeEvent&&t.toggleNativeEvent(n,r)}})),t._eventDispatcher}return{fire:function(e,n,r){var i=this;if(i.removed&&"remove"!==e)return n;if(n=t(i).fire(e,n,r),r!==!1&&i.parent)for(var o=i.parent();o&&!n.isPropagationStopped();)o.fire(e,n,!1),o=o.parent();return n},on:function(e,n,r){return t(this).on(e,n,r)},off:function(e,n){return t(this).off(e,n)},once:function(e,n){return t(this).once(e,n)},hasEventListeners:function(e){return t(this).has(e)}}}),r(de,[ce,ue,se,m],function(e,t,n,r){function i(e){return e.nodeType>0}function o(e,t){var n,a;if(e===t)return!0;if(null===e||null===t)return e===t;if("object"!=typeof e||"object"!=typeof t)return e===t;if(r.isArray(t)){if(e.length!==t.length)return!1;for(n=e.length;n--;)if(!o(e[n],t[n]))return!1}if(i(e)||i(t))return e===t;a={};for(n in t){if(!o(e[n],t[n]))return!1;a[n]=!0}for(n in e)if(!a[n]&&!o(e[n],t[n]))return!1;return!0}return n.extend({Mixins:[t],init:function(t){var n,r;t=t||{};for(n in t)r=t[n],r instanceof e&&(t[n]=r.create(this,n));this.data=t},set:function(t,n){var r,i,a=this.data[t];if(n instanceof e&&(n=n.create(this,t)),"object"==typeof t){for(r in t)this.set(r,t[r]);return this}return o(a,n)||(this.data[t]=n,i={target:this,name:t,value:n,oldValue:a},this.fire("change:"+t,i),this.fire("change",i)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:function(t){return e.create(this,t)},destroy:function(){this.fire("destroy")}})}),r(fe,[se],function(e){function t(e){for(var t=[],n=e.length,r;n--;)r=e[n],r.__checked||(t.push(r),r.__checked=1);for(n=t.length;n--;)delete t[n].__checked;return t}var n=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i=/^\s*|\s*$/g,o,a=e.extend({init:function(e){function t(e){return e?(e=e.toLowerCase(),function(t){return"*"===e||t.type===e}):void 0}function o(e){return e?function(t){return t._name===e}:void 0}function a(e){return e?(e=e.split("."),function(t){for(var n=e.length;n--;)if(!t.classes.contains(e[n]))return!1;return!0}):void 0}function s(e,t,n){return e?function(r){var i=r[e]?r[e]():"";return t?"="===t?i===n:"*="===t?i.indexOf(n)>=0:"~="===t?(" "+i+" ").indexOf(" "+n+" ")>=0:"!="===t?i!=n:"^="===t?0===i.indexOf(n):"$="===t?i.substr(i.length-n.length)===n:!1:!!n}:void 0}function l(e){var t;return e?(e=/(?:not\((.+)\))|(.+)/i.exec(e),e[1]?(t=u(e[1],[]),function(e){return!d(e,t)}):(e=e[2],function(t,n,r){return"first"===e?0===n:"last"===e?n===r-1:"even"===e?n%2===0:"odd"===e?n%2===1:t[e]?t[e]():!1})):void 0}function c(e,r,c){function u(e){e&&r.push(e)}var d;return d=n.exec(e.replace(i,"")),u(t(d[1])),u(o(d[2])),u(a(d[3])),u(s(d[4],d[5],d[6])),u(l(d[7])),r.pseudo=!!d[7],r.direct=c,r}function u(e,t){var n=[],i,o,a;do if(r.exec(""),o=r.exec(e),o&&(e=o[3],n.push(o[1]),o[2])){i=o[3];break}while(o);for(i&&u(i,t),e=[],a=0;a"!=n[a]&&e.push(c(n[a],[],">"===n[a-1]));return t.push(e),t}var d=this.match;this._selectors=u(e,[])},match:function(e,t){var n,r,i,o,a,s,l,c,u,d,f,h,p;for(t=t||this._selectors,n=0,r=t.length;r>n;n++){for(a=t[n],o=a.length,p=e,h=0,i=o-1;i>=0;i--)for(c=a[i];p;){if(c.pseudo)for(f=p.parent().items(),u=d=f.length;u--&&f[u]!==p;);for(s=0,l=c.length;l>s;s++)if(!c[s](p,u,d)){s=l+1;break}if(s===l){h++;break}if(i===o-1)break;p=p.parent()}if(h===o)return!0}return!1},find:function(e){function n(e,t,i){var o,a,s,l,c,u=t[i];for(o=0,a=e.length;a>o;o++){for(c=e[o],s=0,l=u.length;l>s;s++)if(!u[s](c,o,a)){s=l+1;break}if(s===l)i==t.length-1?r.push(c):c.items&&n(c.items(),t,i+1);else if(u.direct)return;c.items&&n(c.items(),t,i)}}var r=[],i,s,l=this._selectors;if(e.items){for(i=0,s=l.length;s>i;i++)n(e.items(),l[i],0);s>1&&(r=t(r))}return o||(o=a.Collection),new o(r)}});return a}),r(he,[m,fe,se],function(e,t,n){var r,i,o=Array.prototype.push,a=Array.prototype.slice;return i={length:0,init:function(e){e&&this.add(e)},add:function(t){var n=this;return e.isArray(t)?o.apply(n,t):t instanceof r?n.add(t.toArray()):o.call(n,t),n},set:function(e){var t=this,n=t.length,r;for(t.length=0,t.add(e),r=t.length;n>r;r++)delete t[r];return t},filter:function(e){var n=this,i,o,a=[],s,l;for("string"==typeof e?(e=new t(e),l=function(t){return e.match(t)}):l=e,i=0,o=n.length;o>i;i++)s=n[i],l(s)&&a.push(s);return new r(a)},slice:function(){return new r(a.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(t){return e.each(this,t),this},toArray:function(){return e.toArray(this)},indexOf:function(e){for(var t=this,n=t.length;n--&&t[n]!==e;);return n},reverse:function(){return new r(e.toArray(this).reverse())},hasClass:function(e){return this[0]?this[0].classes.contains(e):!1},prop:function(e,t){var n=this,r,i;return t!==r?(n.each(function(n){n[e]&&n[e](t)}),n):(i=n[0],i&&i[e]?i[e]():void 0)},exec:function(t){var n=this,r=e.toArray(arguments).slice(1);return n.each(function(e){e[t]&&e[t].apply(e,r)}),n},remove:function(){for(var e=this.length;e--;)this[e].remove();return this},addClass:function(e){return this.each(function(t){t.classes.add(e)})},removeClass:function(e){return this.each(function(t){t.classes.remove(e)})}},e.each("fire on off show hide append prepend before after reflow".split(" "),function(t){i[t]=function(){var n=e.toArray(arguments);return this.each(function(e){t in e&&e[t].apply(e,n)}),this}}),e.each("text name disabled active selected checked visible parent value data".split(" "),function(e){i[e]=function(t){return this.prop(e,t)}}),r=n.extend(i),t.Collection=r,r}),r(pe,[d,m,w],function(e,t,n){var r=0,i={id:function(){return"mceu_"+r++},create:function(e,r,i){var o=document.createElement(e);return n.DOM.setAttribs(o,r),"string"==typeof i?o.innerHTML=i:t.each(i,function(e){e.nodeType&&o.appendChild(e)}),o},createFragment:function(e){return n.DOM.createFragment(e)},getWindowSize:function(){return n.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var r=e.getBoundingClientRect();t=Math.max(r.width||r.right-r.left,e.offsetWidth),n=Math.max(r.height||r.bottom-r.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,t){return n.DOM.getPos(e,t||i.getContainer())},getContainer:function(){return e.container?e.container:document.body},getViewPort:function(e){return n.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,t){return n.DOM.addClass(e,t)},removeClass:function(e,t){return n.DOM.removeClass(e,t)},hasClass:function(e,t){return n.DOM.hasClass(e,t)},toggleClass:function(e,t,r){return n.DOM.toggleClass(e,t,r)},css:function(e,t,r){return n.DOM.setStyle(e,t,r)},getRuntimeStyle:function(e,t){return n.DOM.getStyle(e,t,!0)},on:function(e,t,r,i){return n.DOM.bind(e,t,r,i)},off:function(e,t,r){return n.DOM.unbind(e,t,r)},fire:function(e,t,r){return n.DOM.fire(e,t,r)},innerHtml:function(e,t){n.DOM.setHTML(e,t)}};return i}),r(me,[],function(){return{parseBox:function(e){var t,n=10;if(e)return"number"==typeof e?(e=e||0,{top:e,left:e,bottom:e,right:e}):(e=e.split(" "),t=e.length,1===t?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],n)||0,right:parseInt(e[1],n)||0,bottom:parseInt(e[2],n)||0,left:parseInt(e[3],n)||0})},measureBox:function(e,t){function n(t){var n=document.defaultView;return n?(t=t.replace(/[A-Z]/g,function(e){return"-"+e}),n.getComputedStyle(e,null).getPropertyValue(t)):e.currentStyle[t]}function r(e){var t=parseFloat(n(e),10);return isNaN(t)?0:t}return{top:r(t+"TopWidth"),right:r(t+"RightWidth"),bottom:r(t+"BottomWidth"),left:r(t+"LeftWidth")}}}}),r(ge,[m],function(e){function t(){}function n(e){this.cls=[],this.cls._map={},this.onchange=e||t,this.prefix=""}return e.extend(n.prototype,{add:function(e){return e&&!this.contains(e)&&(this.cls._map[e]=!0,this.cls.push(e),this._change()),this},remove:function(e){if(this.contains(e)){for(var t=0;t0&&(e+=" "),e+=this.prefix+this.cls[t];return e},n}),r(ve,[u],function(e){var t={},n;return{add:function(r){var i=r.parent();if(i){if(!i._layout||i._layout.isNative())return;t[i._id]||(t[i._id]=i),n||(n=!0,e.requestAnimationFrame(function(){var e,r;n=!1;for(e in t)r=t[e],r.state.get("rendered")&&r.reflow();t={}},document.body))}},remove:function(e){t[e._id]&&delete t[e._id]}}}),r(ye,[se,m,le,de,he,pe,g,me,ge,ve],function(e,t,n,r,i,o,a,s,l,c){function u(e){return e._eventDispatcher||(e._eventDispatcher=new n({scope:e,toggleEvent:function(t,r){r&&n.isNative(t)&&(e._nativeEvents||(e._nativeEvents={}),e._nativeEvents[t]=!0,e.state.get("rendered")&&d(e))}})),e._eventDispatcher}function d(e){function t(t){var n=e.getParentCtrl(t.target);n&&n.fire(t.type,t)}function n(){var e=c._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),c._lastHoverCtrl=null)}function r(t){var n=e.getParentCtrl(t.target),r=c._lastHoverCtrl,i=0,o,a,s;if(n!==r){if(c._lastHoverCtrl=n,a=n.parents().toArray().reverse(),a.push(n),r){for(s=r.parents().toArray().reverse(),s.push(r),i=0;i=i;o--)r=s[o],r.fire("mouseleave",{target:r.getEl()})}for(o=i;oo;o++)c=l[o]._eventsRoot;for(c||(c=l[l.length-1]||e),e._eventsRoot=c,s=o,o=0;s>o;o++)l[o]._eventsRoot=c;var p=c._delegates;p||(p=c._delegates={});for(d in u){if(!u)return!1;"wheel"!==d||h?("mouseenter"===d||"mouseleave"===d?c._hasMouseEnter||(a(c.getEl()).on("mouseleave",n).on("mouseover",r),c._hasMouseEnter=1):p[d]||(a(c.getEl()).on(d,t),p[d]=!0),u[d]=!1):f?a(e.getEl()).on("mousewheel",i):a(e.getEl()).on("DOMMouseScroll",i)}}}var f="onmousewheel"in document,h=!1,p="mce-",m,g=0,v={Statics:{classPrefix:p},isRtl:function(){return m.rtl},classPrefix:p,init:function(e){function n(e){var t;for(e=e.split(" "),t=0;tn.maxW?n.maxW:i,n.w=i,n.innerW=i-o),i=e.h,i!==s&&(i=in.maxH?n.maxH:i,n.h=i,n.innerH=i-a),i=e.innerW,i!==s&&(i=in.maxW-o?n.maxW-o:i,n.innerW=i,n.w=i+o),i=e.innerH,i!==s&&(i=in.maxH-a?n.maxH-a:i,n.innerH=i,n.h=i+a),e.contentW!==s&&(n.contentW=e.contentW),e.contentH!==s&&(n.contentH=e.contentH),r=t._lastLayoutRect,r.x===n.x&&r.y===n.y&&r.w===n.w&&r.h===n.h||(l=m.repaintControls,l&&l.map&&!l.map[t._id]&&(l.push(t),l.map[t._id]=!0),r.x=n.x,r.y=n.y,r.w=n.w,r.h=n.h),t):n},repaint:function(){var e=this,t,n,r,i,o,a,s,l,c,u;c=document.createRange?function(e){return e}:Math.round,t=e.getEl().style,i=e._layoutRect,l=e._lastRepaintRect||{},o=e.borderBox,a=o.left+o.right,s=o.top+o.bottom,i.x!==l.x&&(t.left=c(i.x)+"px",l.x=i.x),i.y!==l.y&&(t.top=c(i.y)+"px",l.y=i.y),i.w!==l.w&&(u=c(i.w-a),t.width=(u>=0?u:0)+"px",l.w=i.w),i.h!==l.h&&(u=c(i.h-s),t.height=(u>=0?u:0)+"px",l.h=i.h),e._hasBody&&i.innerW!==l.innerW&&(u=c(i.innerW),r=e.getEl("body"),r&&(n=r.style,n.width=(u>=0?u:0)+"px"),l.innerW=i.innerW),e._hasBody&&i.innerH!==l.innerH&&(u=c(i.innerH),r=r||e.getEl("body"),r&&(n=n||r.style,n.height=(u>=0?u:0)+"px"),l.innerH=i.innerH),e._lastRepaintRect=l,e.fire("repaint",{},!1)},updateLayoutRect:function(){var e=this;e.parent()._lastRect=null,o.css(e.getEl(),{width:"",height:""}),e._layoutRect=e._lastRepaintRect=e._lastLayoutRect=null,e.initLayoutRect()},on:function(e,t){function n(e){var t,n;return"string"!=typeof e?e:function(i){return t||r.parentsAndSelf().each(function(r){var i=r.settings.callbacks;return i&&(t=i[e])?(n=r,!1):void 0}),t?t.call(n,i):(i.action=e,void this.fire("execute",i))}}var r=this;return u(r).on(e,n(t)),r},off:function(e,t){return u(this).off(e,t),this},fire:function(e,t,n){var r=this;if(t=t||{},t.control||(t.control=r),t=u(r).fire(e,t),n!==!1&&r.parent)for(var i=r.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return u(this).has(e)},parents:function(e){var t=this,n,r=new i;for(n=t.parent();n;n=n.parent())r.add(n);return e&&(r=r.filter(e)),r},parentsAndSelf:function(e){return new i(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=a("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,r=n.getEl(n.ariaTarget);return"undefined"==typeof t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered")&&r.setAttribute("role"==e?e:"aria-"+e,t),n)},encode:function(e,t){return t!==!1&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return m.translate?m.translate(e):e},before:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t),!0),t},after:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t)),t},remove:function(){var e=this,t=e.getEl(),n=e.parent(),r,i; +if(e.items){var o=e.items().toArray();for(i=o.length;i--;)o[i].remove()}n&&n.items&&(r=[],n.items().each(function(t){t!==e&&r.push(t)}),n.items().set(r),n._lastRect=null),e._eventsRoot&&e._eventsRoot==e&&a(t).off();var s=e.getRoot().controlIdLookup;return s&&delete s[e._id],t&&t.parentNode&&t.parentNode.removeChild(t),e.state.set("rendered",!1),e.state.destroy(),e.fire("remove"),e},renderBefore:function(e){return a(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return a(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'
                '},postRender:function(){var e=this,t=e.settings,n,r,i,o,s;e.$el=a(e.getEl()),e.state.set("rendered",!0);for(o in t)0===o.indexOf("on")&&e.on(o.substr(2),t[o]);if(e._eventsRoot){for(i=e.parent();!s&&i;i=i.parent())s=i._eventsRoot;if(s)for(o in s._nativeEvents)e._nativeEvents[o]=!0}d(e),t.style&&(n=e.getEl(),n&&(n.setAttribute("style",t.style),n.style.cssText=t.style)),e.settings.border&&(r=e.borderBox,e.$el.css({"border-top-width":r.top,"border-right-width":r.right,"border-bottom-width":r.bottom,"border-left-width":r.left}));var l=e.getRoot();l.controlIdLookup||(l.controlIdLookup={}),l.controlIdLookup[e._id]=e;for(var u in e._aria)e.aria(u,e._aria[u]);e.state.get("visible")===!1&&(e.getEl().style.display="none"),e.bindStates(),e.state.on("change:visible",function(t){var n=t.value,r;e.state.get("rendered")&&(e.getEl().style.display=n===!1?"none":"",e.getEl().getBoundingClientRect()),r=e.parent(),r&&(r._lastRect=null),e.fire(n?"show":"hide"),c.add(e)}),e.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){function t(e,t){var n,r,i=e;for(n=r=0;i&&i!=t&&i.nodeType;)n+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{x:n,y:r}}var n=this.getEl(),r=n.parentNode,i,o,a,s,l,c,u=t(n,r);return i=u.x,o=u.y,a=n.offsetWidth,s=n.offsetHeight,l=r.clientWidth,c=r.clientHeight,"end"==e?(i-=l-a,o-=c-s):"center"==e&&(i-=l/2-a/2,o-=c/2-s/2),r.scrollLeft=i,r.scrollTop=o,this},getRoot:function(){for(var e=this,t,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),t=e,e=e.parent()}t||(t=this);for(var r=n.length;r--;)n[r].rootControl=t;return t},reflow:function(){c.remove(this);var e=this.parent();return e._layout&&!e._layout.isNative()&&e.reflow(),this}};return t.each("text title visible disabled active value".split(" "),function(e){v[e]=function(t){return 0===arguments.length?this.state.get(e):("undefined"!=typeof t&&this.state.set(e,t),this)}}),m=e.extend(v)}),r(be,[],function(){var e={},t;return{add:function(t,n){e[t.toLowerCase()]=n},has:function(t){return!!e[t.toLowerCase()]},create:function(n,r){var i,o,a;if(!t){a=tinymce.ui;for(o in a)e[o.toLowerCase()]=a[o];t=!0}if("string"==typeof n?(r=r||{},r.type=n):(r=n,n=r.type),n=n.toLowerCase(),i=e[n],!i)throw new Error("Could not find control by type: "+n);return i=new i(r),i.type=n,i}}}),r(Ce,[],function(){return function(e){function t(e){return e&&1===e.nodeType}function n(e){return e=e||C,t(e)?e.getAttribute("role"):null}function r(e){for(var t,r=e||C;r=r.parentNode;)if(t=n(r))return t}function i(e){var n=C;return t(n)?n.getAttribute("aria-"+e):void 0}function o(e){var t=e.tagName.toUpperCase();return"INPUT"==t||"TEXTAREA"==t||"SELECT"==t}function a(e){return o(e)&&!e.hidden?!0:!!/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(n(e))}function s(e){function t(e){if(1==e.nodeType&&"none"!=e.style.display){a(e)&&n.push(e);for(var r=0;re?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function d(e,t){var n=-1,r=l();t=t||s(r.getEl());for(var i=0;i=0&&(n=t.getEl(),n&&n.parentNode.removeChild(n),n=e.getEl(),n&&n.parentNode.removeChild(n)),t.parent(this)},create:function(t){var n=this,i,a=[];return o.isArray(t)||(t=[t]),o.each(t,function(t){t&&(t instanceof e||("string"==typeof t&&(t={type:t}),i=o.extend({},n.settings.defaults,t),t.type=i.type=i.type||t.type||n.settings.defaultType||(i.defaults?i.defaults.type:null),t=r.create(i)),a.push(t))}),a},renderNew:function(){var e=this;return e.items().each(function(t,n){var r;t.parent(e),t.state.get("rendered")||(r=e.getEl("body"),r.hasChildNodes()&&n<=r.childNodes.length-1?a(r.childNodes[n]).before(t.renderHtml()):a(r).append(t.renderHtml()),t.postRender(),l.add(t))}),e._layout.applyClasses(e.items().filter(":visible")),e._lastRect=null,e},append:function(e){return this.add(e).renderNew()},prepend:function(e){var t=this;return t.items().set(t.create(e).concat(t.items().toArray())),t.renderNew()},insert:function(e,t,n){var r=this,i,o,a;return e=r.create(e),i=r.items(),!n&&t=0&&t
                '+(e.settings.html||"")+t.renderHtml(e)+"
                "},postRender:function(){var e=this,t;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e.state.set("rendered",!0),e.settings.style&&e.$el.css(e.settings.style),e.settings.border&&(t=e.borderBox,e.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=new i({root:e})),e},initLayoutRect:function(){var e=this,t=e._super();return e._layout.recalc(e),t},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;return n&&n.w==t.w&&n.h==t.h?void 0:(e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0)},reflow:function(){var t;if(l.remove(this),this.visible()){for(e.repaintControls=[],e.repaintControls.map={},this.recalc(),t=e.repaintControls.length;t--;)e.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),e.repaintControls=[]}return this}})}),r(we,[g],function(e){function t(e){var t,n,r,i,o,a,s,l,c=Math.max;return t=e.documentElement,n=e.body,r=c(t.scrollWidth,n.scrollWidth),i=c(t.clientWidth,n.clientWidth),o=c(t.offsetWidth,n.offsetWidth),a=c(t.scrollHeight,n.scrollHeight),s=c(t.clientHeight,n.clientHeight),l=c(t.offsetHeight,n.offsetHeight),{width:o>r?i:r,height:l>a?s:a}}function n(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n").css({position:"absolute",top:0,left:0,width:c.width,height:c.height,zIndex:2147483647,opacity:1e-4,cursor:m}).appendTo(s.body),e(s).on("mousemove touchmove",d).on("mouseup touchend",u),i.start(r)},d=function(e){return n(e),e.button!==l?u(e):(e.deltaX=e.screenX-f,e.deltaY=e.screenY-h,e.preventDefault(),void i.drag(e))},u=function(t){n(t),e(s).off("mousemove touchmove",d).off("mouseup touchend",u),a.remove(),i.stop&&i.stop(t)},this.destroy=function(){e(o()).off()},e(o()).on("mousedown touchstart",c)}}),r(Ne,[g,we],function(e,t){return{init:function(){var e=this;e.on("repaint",e.renderScroll)},renderScroll:function(){function n(){function t(t,a,s,l,c,u){var d,f,h,p,m,g,v,y,b;if(f=i.getEl("scroll"+t)){if(y=a.toLowerCase(),b=s.toLowerCase(),e(i.getEl("absend")).css(y,i.layoutRect()[l]-1),!c)return void e(f).css("display","none");e(f).css("display","block"),d=i.getEl("body"),h=i.getEl("scroll"+t+"t"),p=d["client"+s]-2*o,p-=n&&r?f["client"+u]:0,m=d["scroll"+s],g=p/m,v={},v[y]=d["offset"+a]+o,v[b]=p,e(f).css(v),v={},v[y]=d["scroll"+a]*g,v[b]=p*g,e(h).css(v)}}var n,r,a;a=i.getEl("body"),n=a.scrollWidth>a.clientWidth,r=a.scrollHeight>a.clientHeight,t("h","Left","Width","contentW",n,"Height"),t("v","Top","Height","contentH",r,"Width")}function r(){function n(n,r,a,s,l){var c,u=i._id+"-scroll"+n,d=i.classPrefix;e(i.getEl()).append('
                '),i.draghelper=new t(u+"t",{start:function(){c=i.getEl("body")["scroll"+r],e("#"+u).addClass(d+"active")},drag:function(e){var t,u,d,f,h=i.layoutRect();u=h.contentW>h.innerW,d=h.contentH>h.innerH,f=i.getEl("body")["client"+a]-2*o,f-=u&&d?i.getEl("scroll"+n)["client"+l]:0,t=f/i.getEl("body")["scroll"+a],i.getEl("body")["scroll"+r]=c+e["delta"+s]/t},stop:function(){e("#"+u).removeClass(d+"active")}})}i.classes.add("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}var i=this,o=2;i.settings.autoScroll&&(i._hasScroll||(i._hasScroll=!0,r(),i.on("wheel",function(e){var t=i.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),e(i.getEl("body")).on("scroll",n)),n())}}}),r(Ee,[xe,Ne],function(e,t){return e.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[t],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),"undefined"==typeof n?n='
                '+t.renderHtml(e)+"
                ":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'
                '+(e._preBodyHtml||"")+n+"
                "}})}),r(_e,[pe],function(e){function t(t,n,r){var i,o,a,s,l,c,u,d,f,h;return f=e.getViewPort(),o=e.getPos(n),a=o.x,s=o.y,t.state.get("fixed")&&"static"==e.getRuntimeStyle(document.body,"position")&&(a-=f.x,s-=f.y),i=t.getEl(),h=e.getSize(i),l=h.width,c=h.height,h=e.getSize(n),u=h.width,d=h.height,r=(r||"").split(""),"b"===r[0]&&(s+=d),"r"===r[1]&&(a+=u),"c"===r[0]&&(s+=Math.round(d/2)),"c"===r[1]&&(a+=Math.round(u/2)),"b"===r[3]&&(s-=c),"r"===r[4]&&(a-=l),"c"===r[3]&&(s-=Math.round(c/2)),"c"===r[4]&&(a-=Math.round(l/2)),{x:a,y:s,w:l,h:c}}return{testMoveRel:function(n,r){for(var i=e.getViewPort(),o=0;o0&&a.x+a.w0&&a.y+a.hi.x&&a.x+a.wi.y&&a.y+a.he?0:e+n>t?(e=t-n,0>e?0:e):e}var i=this;if(i.settings.constrainToViewport){var o=e.getViewPort(window),a=i.layoutRect();t=r(t,o.w+o.x,a.w),n=r(n,o.h+o.y,a.h)}return i.state.get("rendered")?i.layoutRect({x:t,y:n}).repaint():(i.settings.x=t,i.settings.y=n),i.fire("move",{x:t,y:n}),i}}}),r(Se,[pe],function(e){return{resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,n){if(1>=t||1>=n){var r=e.getWindowSize();t=1>=t?t*r.w:t,n=1>=n?n*r.h:n}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:n,w:t,h:n}).reflow()},resizeBy:function(e,t){var n=this,r=n.layoutRect();return n.resizeTo(r.w+e,r.h+t)}}}),r(ke,[Ee,_e,Se,pe,g,u],function(e,t,n,r,i,o){function a(e,t){for(;e;){if(e==t)return!0;e=e.parent()}}function s(e){for(var t=v.length;t--;){var n=v[t],r=n.getParentCtrl(e.target);if(n.settings.autohide){if(r&&(a(r,n)||n.parent()===r))continue;e=n.fire("autohide",{target:e.target}),e.isDefaultPrevented()||n.hide()}}}function l(){p||(p=function(e){2!=e.button&&s(e)},i(document).on("click touchstart",p))}function c(){m||(m=function(){var e;for(e=v.length;e--;)d(v[e])},i(window).on("scroll",m))}function u(){if(!g){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;g=function(){document.all&&t==e.clientWidth&&n==e.clientHeight||(t=e.clientWidth,n=e.clientHeight,C.hideAll())},i(window).on("resize",g)}}function d(e){function t(t,n){for(var r,i=0;in&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),t(!1,e._autoFixY-n)):(e._autoFixY=e.layoutRect().y,e._autoFixY
                ').appendTo(t.getContainerElm())),o.setTimeout(function(){n.addClass(r+"in"),i(t.getEl()).addClass(r+"in")}),b=!0),f(!0,t)}}),t.on("show",function(){t.parents().each(function(e){return e.state.get("fixed")?(t.fixed(!0),!1):void 0})}),e.popover&&(t._preBodyHtml='
                ',t.classes.add("popover").add("bottom").add(t.isRtl()?"end":"start")),t.aria("label",e.ariaLabel),t.aria("labelledby",t._id),t.aria("describedby",t.describedBy||t._id+"-none")},fixed:function(e){var t=this;if(t.state.get("fixed")!=e){if(t.state.get("rendered")){var n=r.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("fixed",e)}return t},show:function(){var e=this,t,n=e._super();for(t=v.length;t--&&v[t]!==e;);return-1===t&&v.push(e),n},hide:function(){return h(this),f(!1,this),this._super()},hideAll:function(){C.hideAll()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||(e.remove(),f(!1,e)),e},remove:function(){h(this),this._super()},postRender:function(){var e=this;return e.settings.bodyRole&&this.getEl("body").setAttribute("role",e.settings.bodyRole),e._super()}});return C.hideAll=function(){for(var e=v.length;e--;){var t=v[e];t&&t.settings.autohide&&(t.hide(),v.splice(e,1))}},C}),r(Te,[ke,Ee,pe,g,we,me,d,u],function(e,t,n,r,i,o,a,s){function l(e){var t="width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0",n=r("meta[name=viewport]")[0],i;a.overrideViewPort!==!1&&(n||(n=document.createElement("meta"),n.setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),i=n.getAttribute("content"),i&&"undefined"!=typeof f&&(f=i),n.setAttribute("content",e?t:f))}function c(e){for(var t=0;tr.w&&(o=r.x-Math.max(0,i/2),e.layoutRect({w:i,x:o}),a=!0)),t&&(t.layoutRect({w:e.layoutRect().innerW}).recalc(),i=t.layoutRect().minW+r.deltaW,i>r.w&&(o=r.x-Math.max(0,i-r.w),e.layoutRect({w:i,x:o}),a=!0)),a&&e.recalc()},initLayoutRect:function(){var e=this,t=e._super(),r=0,i;if(e.settings.title&&!e._fullscreen){i=e.getEl("head");var o=n.getSize(i);t.headerW=o.width,t.headerH=o.height,r+=t.headerH}e.statusbar&&(r+=e.statusbar.layoutRect().h),t.deltaH+=r,t.minH+=r,t.h+=r;var a=n.getWindowSize();return t.x=e.settings.x||Math.max(0,a.w/2-t.w/2),t.y=e.settings.y||Math.max(0,a.h/2-t.h/2),t},renderHtml:function(){var e=this,t=e._layout,n=e._id,r=e.classPrefix,i=e.settings,o="",a="",s=i.html;return e.preRender(),t.preRender(e),i.title&&(o='
                '+e.encode(i.title)+'
                '),i.url&&(s=''),"undefined"==typeof s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'
                '+o+'
                '+s+"
                "+a+"
                "},fullscreen:function(e){var t=this,i=document.documentElement,a,l=t.classPrefix,c;if(e!=t._fullscreen)if(r(window).on("resize",function(){var e;if(t._fullscreen)if(a)t._timer||(t._timer=s.setTimeout(function(){var e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new Date).getTime();var r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new Date).getTime()-e>50&&(a=!0)}}),c=t.layoutRect(),t._fullscreen=e,e){t._initial={x:c.x,y:c.y,w:c.w,h:c.h},t.borderBox=o.parseBox("0"),t.getEl("head").style.display="none",c.deltaH-=c.headerH+2,r([i,document.body]).addClass(l+"fullscreen"),t.classes.add("fullscreen");var u=n.getWindowSize();t.moveTo(0,0).resizeTo(u.w,u.h)}else t.borderBox=o.parseBox(t.settings.border),t.getEl("head").style.display="",c.deltaH+=c.headerH,r([i,document.body]).removeClass(l+"fullscreen"),t.classes.remove("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return t.reflow()},postRender:function(){var e=this,t;setTimeout(function(){e.classes.add("in"),e.fire("open")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new i(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()}),d.push(e),l(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e=this,t;for(e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),t=d.length;t--;)d[t]===e&&d.splice(t,1);l(d.length>0),c(e.classPrefix)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});return u(),h}),r(Re,[Te],function(e){var t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){function r(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),o(t)}}}var i,o=n.callback||function(){};switch(n.buttons){case t.OK_CANCEL:i=[r("Ok",!0,!0),r("Cancel",!1)];break;case t.YES_NO:case t.YES_NO_CANCEL:i=[r("Yes",1,!0),r("No",0)],n.buttons==t.YES_NO_CANCEL&&i.push(r("Cancel",-1));break;default:i=[r("Ok",!0,!0)]}return new e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:i,title:n.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:n.onClose,onCancel:function(){o(!1)}}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return t}),r(Ae,[Te,Re],function(e,t){return function(n){function r(){return s.length?s[s.length-1]:void 0}function i(e){n.fire("OpenWindow",{win:e})}function o(e){n.fire("CloseWindow",{win:e})}var a=this,s=[];a.windows=s,n.on("remove",function(){for(var e=s.length;e--;)s[e].close()}),a.open=function(t,r){var a;return n.editorManager.setActive(n),t.title=t.title||" ",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body,data:t.data,callbacks:t.commands}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){a.find("form")[0].submit()}},{text:"Cancel",onclick:function(){a.close()}}]),a=new e(t),s.push(a),a.on("close",function(){for(var e=s.length;e--;)s[e]===a&&s.splice(e,1);s.length||n.focus(),o(a)}),t.data&&a.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),a.features=t||{},a.params=r||{},1===s.length&&n.nodeChanged(),a=a.renderTo().reflow(),i(a),a},a.alert=function(e,r,a){var s;s=t.alert(e,function(){r?r.call(a||this):n.focus()}),s.on("close",function(){o(s)}),i(s)},a.confirm=function(e,n,r){var a;a=t.confirm(e,function(e){n.call(r||this,e)}),a.on("close",function(){o(a)}),i(a)},a.close=function(){r()&&r().close()},a.getParams=function(){return r()?r().params:null},a.setParams=function(e){r()&&(r().params=e)},a.getWindows=function(){return s}}}),r(Be,[ye,_e],function(e,t){return e.extend({Mixins:[t],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}),e._super()},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(De,[ye,Be],function(e,t){var n,r=e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&(t.on("mouseenter",function(n){var r=t.tooltip().moveTo(-65535);if(n.control==t){var i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.classes.toggle("tooltip-n","bc-tc"==i),r.classes.toggle("tooltip-nw","bc-tl"==i),r.classes.toggle("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else r.hide()}),t.on("mouseleave mousedown click",function(){t.tooltip().hide()})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return n||(n=new t({type:"tooltip"}),n.renderTo()),n},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){function e(e){n.aria("disabled",e),n.classes.toggle("disabled",e)}function t(e){n.aria("pressed",e),n.classes.toggle("active",e)}var n=this;return n.state.on("change:disabled",function(t){e(t.value)}),n.state.on("change:active",function(e){t(e.value)}),n.state.get("disabled")&&e(!0),n.state.get("active")&&t(!0),n._super()},remove:function(){this._super(),n&&(n.remove(),n=null)}});return r}),r(Le,[De],function(e){return e.extend({Defaults:{value:0},init:function(e){var t=this;t._super(e),t.classes.add("progress"),t.settings.filter||(t.settings.filter=function(e){return Math.round(e)})},renderHtml:function(){var e=this,t=e._id,n=this.classPrefix;return'
                0%
                '},postRender:function(){var e=this;return e._super(),e.value(e.settings.value),e},bindStates:function(){function e(e){e=t.settings.filter(e),t.getEl().lastChild.innerHTML=e+"%",t.getEl().firstChild.firstChild.style.width=e+"%"}var t=this;return t.state.on("change:value",function(t){e(t.value)}),e(t.state.get("value")),t._super()}})}),r(Me,[ye,_e,Le,u],function(e,t,n,r){return e.extend({Mixins:[t],Defaults:{classes:"widget notification"},init:function(e){var t=this;t._super(e),e.text&&t.text(e.text),e.icon&&(t.icon=e.icon),e.color&&(t.color=e.color),e.type&&t.classes.add("notification-"+e.type),e.timeout&&(e.timeout<0||e.timeout>0)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new n),t.on("click",function(e){-1!=e.target.className.indexOf(t.classPrefix+"close")&&t.close()})},renderHtml:function(){var e=this,t=e.classPrefix,n="",r="",i="",o="";return e.icon&&(n=''),e.color&&(o=' style="background-color: '+e.color+'"'),e.closeButton&&(r=''),e.progressBar&&(i=e.progressBar.renderHtml()),'"},postRender:function(){var e=this;return r.setTimeout(function(){e.$el.addClass(e.classPrefix+"in")}),e._super()},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().childNodes[1].innerHTML=t.value}),e.progressBar&&e.progressBar.bindStates(),e._super()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||e.remove(),e},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Pe,[Me,u],function(e,t){return function(n){function r(){return l.length?l[l.length-1]:void 0}function i(){t.requestAnimationFrame(function(){o(),a()})}function o(){for(var e=0;e0){var e=l.slice(0,1)[0],t=n.inline?n.getElement():n.getContentAreaContainer();if(e.moveRel(t,"tc-tc"),l.length>1)for(var r=1;r0&&(r.timer=setTimeout(function(){r.close()},t.timeout)),r.on("close",function(){var e=l.length;for(r.timer&&n.getWin().clearTimeout(r.timer);e--;)l[e]===r&&l.splice(e,1);a()}),r.renderTo(),a(),r},s.close=function(){r()&&r().close()},s.getNotifications=function(){return l},n.on("SkinLoaded",function(){var e=n.settings.service_message;e&&n.notificationManager.open({text:e,type:"warning",timeout:0,icon:""})})}}),r(Oe,[w],function(e){function t(t,n,r){for(var i=[];n&&n!=t;n=n.parentNode)i.push(e.nodeIndex(n,r));return i}function n(e,t){var n,r,i;for(r=e,n=t.length-1;n>=0;n--){if(i=r.childNodes,t[n]>i.length-1)return null;r=i[t[n]]}return r}return{create:t,resolve:n}}),r(He,[I,T,y,Oe,A,C,d,m,u,k,$,ne],function(e,t,n,r,i,o,a,s,l,c,u,d){return function(f){function h(e,t){try{f.getDoc().execCommand(e,!1,t)}catch(n){}}function p(){var e=f.getDoc().documentMode;return e?e:6}function m(e){return e.isDefaultPrevented()}function g(e){var t,n;e.dataTransfer&&(f.selection.isCollapsed()&&"IMG"==e.target.tagName&&re.select(e.target),t=f.selection.getContent(),t.length>0&&(n=ue+escape(f.id)+","+escape(t),e.dataTransfer.setData(de,n)))}function v(e){var t;return e.dataTransfer&&(t=e.dataTransfer.getData(de),t&&t.indexOf(ue)>=0)?(t=t.substr(ue.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}function y(e){f.queryCommandSupported("mceInsertClipboardContent")?f.execCommand("mceInsertClipboardContent",!1,{content:e}):f.execCommand("mceInsertContent",!1,e)}function b(){function i(e){var t=C.schema.getBlockElements(),n=f.getBody();if("BR"!=e.nodeName)return!1;for(;e!=n&&!t[e.nodeName];e=e.parentNode)if(e.nextSibling)return!1;return!0}function o(e,t){var n;for(n=e.nextSibling;n&&n!=t;n=n.nextSibling)if((3!=n.nodeType||0!==Z.trim(n.data).length)&&n!==t)return!1;return n===t}function a(e,t,r){var o,a,s;for(s=C.schema.getNonEmptyElements(),o=new n(r||e,e);a=o[t?"next":"prev"]();){if(s[a.nodeName]&&!i(a))return a;if(3==a.nodeType&&a.data.length>0)return a}}function c(e){var n,r,i,o,s;if(!e.collapsed&&(n=C.getParent(t.getNode(e.startContainer,e.startOffset),C.isBlock), +r=C.getParent(t.getNode(e.endContainer,e.endOffset),C.isBlock),s=f.schema.getTextBlockElements(),n!=r&&s[n.nodeName]&&s[r.nodeName]&&"false"!==C.getContentEditable(n)&&"false"!==C.getContentEditable(r)))return e.deleteContents(),i=a(n,!1),o=a(r,!0),C.isEmpty(r)||Z(n).append(r.childNodes),Z(r).remove(),i?1==i.nodeType?"BR"==i.nodeName?(e.setStartBefore(i),e.setEndBefore(i)):(e.setStartAfter(i),e.setEndAfter(i)):(e.setStart(i,i.data.length),e.setEnd(i,i.data.length)):o&&(1==o.nodeType?(e.setStartBefore(o),e.setEndBefore(o)):(e.setStart(o,0),e.setEnd(o,0))),x.setRng(e),!0}function u(e,n){var r,i,s,l,c,u;if(!e.collapsed)return e;if(c=e.startContainer,u=e.startOffset,3==c.nodeType)if(n){if(u0)return e;if(r=t.getNode(e.startContainer,e.startOffset),s=C.getParent(r,C.isBlock),i=a(f.getBody(),n,r),l=C.getParent(i,C.isBlock),!r||!i)return e;if(l&&s!=l)if(n){if(!o(s,l))return e;1==r.nodeType?"BR"==r.nodeName?e.setStartBefore(r):e.setStartAfter(r):e.setStart(r,r.data.length),1==i.nodeType?e.setEnd(i,0):e.setEndBefore(i)}else{if(!o(l,s))return e;1==i.nodeType?"BR"==i.nodeName?e.setStartBefore(i):e.setStartAfter(i):e.setStart(i,i.data.length),1==r.nodeType?e.setEnd(r,0):e.setEndBefore(r)}return e}function d(e){var t=x.getRng();return t=u(t,e),c(t)?!0:void 0}function h(e,t){function n(e,n){return m=Z(n).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),l=e.cloneNode(!1),m=s.map(m,function(e){return e=e.cloneNode(!1),l.hasChildNodes()?(e.appendChild(l.firstChild),l.appendChild(e)):l.appendChild(e),l.appendChild(e),e}),m.length?(p=C.create("br"),m[0].appendChild(p),C.replace(l,e),t.setStartBefore(p),t.setEndBefore(p),f.selection.setRng(t),p):null}function i(e){return e&&f.schema.getTextBlockElements()[e.tagName]}var o,a,l,c,u,d,h,p,m;if(t.collapsed&&(d=t.startContainer,h=t.startOffset,a=C.getParent(d,C.isBlock),i(a)))if(1==d.nodeType){if(d=d.childNodes[h],d&&"BR"!=d.tagName)return;if(u=e?a.nextSibling:a.previousSibling,C.isEmpty(a)&&i(u)&&C.isEmpty(u)&&n(a,d))return C.remove(u),!0}else if(3==d.nodeType){if(o=r.create(a,d),c=a.cloneNode(!0),d=r.resolve(c,o),e){if(h>=d.data.length)return;d.deleteData(h,1)}else{if(0>=h)return;d.deleteData(h-1,1)}if(C.isEmpty(c))return n(a,d)}}function p(e){var t,n,r;d(e)||(s.each(f.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&f.dom.setAttrib(e,"style",f.dom.getAttrib(e,"style"))}),t=new w(function(){}),t.observe(f.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),f.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null),n=f.selection.getRng(),r=n.startContainer.parentNode,s.each(t.takeRecords(),function(e){if(C.isChildOf(e.target,f.getBody())){if("style"==e.attributeName){var t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style")}s.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var t,i;e==r&&(t=n.startOffset,i=e.firstChild),C.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),f.selection.setRng(n))}})}}),t.disconnect(),s.each(f.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")}))}var b=f.getDoc(),C=f.dom,x=f.selection,w=window.MutationObserver,N,E;w||(N=!0,w=function(){function e(e){var t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function t(e){var t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMSubtreeModified",e,!1),r.removeEventListener("DOMNodeInsertedIntoDocument",e,!1),r.removeEventListener("DOMNodeInserted",e,!1),r.removeEventListener("DOMAttrModified",t,!1)},this.takeRecords=function(){return n}}),f.on("keydown",function(e){var t=e.keyCode==te,n=e.ctrlKey||e.metaKey;if(!m(e)&&(t||e.keyCode==ee)){var r=f.selection.getRng(),i=r.startContainer,o=r.startOffset;if(t&&e.shiftKey)return;if(h(t,r))return void e.preventDefault();if(!n&&r.collapsed&&3==i.nodeType&&(t?o0))return;e.preventDefault(),n&&f.selection.getSel().modify("extend",t?"forward":"backward",e.metaKey?"lineboundary":"word"),p(t)}}),f.on("keypress",function(t){if(!m(t)&&!x.isCollapsed()&&t.charCode>31&&!e.metaKeyPressed(t)){var n,r,i,o,a,s;n=f.selection.getRng(),s=String.fromCharCode(t.charCode),t.preventDefault(),r=Z(n.startContainer).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),p(!0),r=r.filter(function(e,t){return!Z.contains(f.getBody(),t)}),r.length?(i=C.createFragment(),r.each(function(e,t){t=t.cloneNode(!1),i.hasChildNodes()?(t.appendChild(i.firstChild),i.appendChild(t)):(a=t,i.appendChild(t)),i.appendChild(t)}),a.appendChild(f.getDoc().createTextNode(s)),o=C.getParent(n.startContainer,C.isBlock),C.isEmpty(o)?Z(o).empty().append(i):n.insertNode(i),n.setStart(a.firstChild,1),n.setEnd(a.firstChild,1),f.selection.setRng(n)):f.selection.setContent(s)}}),f.addCommand("Delete",function(){p()}),f.addCommand("ForwardDelete",function(){p(!0)}),N||(f.on("dragstart",function(e){E=x.getRng(),g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);n&&(e.preventDefault(),l.setEditorTimeout(f,function(){var r=t.getCaretRangeFromPoint(e.x,e.y,b);E&&(x.setRng(E),E=null),p(),x.setRng(r),y(n.html)}))}}),f.on("cut",function(e){m(e)||!e.clipboardData||f.selection.isCollapsed()||(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",f.selection.getContent()),e.clipboardData.setData("text/plain",f.selection.getContent({format:"text"})),l.setEditorTimeout(f,function(){p(!0)}))}))}function C(){function e(e){var t=ne.create("body"),n=e.cloneContents();return t.appendChild(n),re.serializer.serialize(t,{format:"html"})}function n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return r.moveToElementText(f.getBody()),t.compareRanges(n,r)}var i=e(n),o=ne.createRng();o.selectNode(f.getBody());var a=e(o);return i===a}f.on("keydown",function(e){var t=e.keyCode,r,i;if(!m(e)&&(t==te||t==ee)){if(r=f.selection.isCollapsed(),i=f.getBody(),r&&!ne.isEmpty(i))return;if(!r&&!n(f.selection.getRng()))return;e.preventDefault(),f.setContent(""),i.firstChild&&ne.isBlock(i.firstChild)?f.selection.setCursorLocation(i.firstChild,0):f.selection.setCursorLocation(i,0),f.nodeChanged()}})}function x(){f.shortcuts.add("meta+a",null,"SelectAll")}function w(){f.settings.content_editable||ne.bind(f.getDoc(),"mousedown mouseup",function(e){var t;if(e.target==f.getDoc().documentElement)if(t=re.getRng(),f.getBody().focus(),"mousedown"==e.type){if(c.isCaretContainer(t.startContainer))return;re.placeCaretAt(e.clientX,e.clientY)}else re.setRng(t)})}function N(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee){if(!f.getBody().getElementsByTagName("hr").length)return;if(re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return ne.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(ne.remove(n),e.preventDefault())}}})}function E(){window.Range.prototype.getClientRects||f.on("mousedown",function(e){if(!m(e)&&"HTML"===e.target.nodeName){var t=f.getBody();t.blur(),l.setEditorTimeout(f,function(){t.focus()})}})}function _(){f.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==ne.getContentEditableParent(t)&&(e.preventDefault(),re.getSel().setBaseAndExtent(t,0,t,1),f.nodeChanged()),"A"==t.nodeName&&ne.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),re.select(t))})}function S(){function e(){var e=ne.getAttribs(re.getStart().cloneNode(!1));return function(){var t=re.getStart();t!==f.getBody()&&(ne.setAttrib(t,"style",null),Q(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!re.isCollapsed()&&ne.getParent(re.getStart(),ne.isBlock)!=ne.getParent(re.getEnd(),ne.isBlock)}f.on("keypress",function(n){var r;return m(n)||8!=n.keyCode&&46!=n.keyCode||!t()?void 0:(r=e(),f.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1)}),ne.bind(f.getDoc(),"cut",function(n){var r;!m(n)&&t()&&(r=e(),l.setEditorTimeout(f,function(){r()}))})}function k(){document.body.setAttribute("role","application")}function T(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee&&re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function R(){p()>7||(h("RespectVisibilityInDesign",!0),f.contentStyles.push(".mceHideBrInPre pre br {display: none}"),ne.addClass(f.getBody(),"mceHideBrInPre"),oe.addNodeFilter("pre",function(e){for(var t=e.length,n,r,o,a;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)o=n[r],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new i("#text",3),o,!0).value="\n"}),ae.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function A(){ne.bind(f.getBody(),"mouseup",function(){var e,t=re.getNode();"IMG"==t.nodeName&&((e=ne.getStyle(t,"width"))&&(ne.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"width","")),(e=ne.getStyle(t,"height"))&&(ne.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"height","")))})}function B(){f.on("keydown",function(t){var n,r,i,o,a;if(!m(t)&&t.keyCode==e.BACKSPACE&&(n=re.getRng(),r=n.startContainer,i=n.startOffset,o=ne.getRoot(),a=r,n.collapsed&&0===i)){for(;a&&a.parentNode&&a.parentNode.firstChild==a&&a.parentNode!=o;)a=a.parentNode;"BLOCKQUOTE"===a.tagName&&(f.formatter.toggle("blockquote",null,a),n=ne.createRng(),n.setStart(r,0),n.setEnd(r,0),re.setRng(n))}})}function D(){function e(){K(),h("StyleWithCSS",!1),h("enableInlineTableEditing",!1),ie.object_resizing||h("enableObjectResizing",!1)}ie.readonly||f.on("BeforeExecCommand MouseDown",e)}function L(){function e(){Q(ne.select("a"),function(e){var t=e.parentNode,n=ne.getRoot();if(t.lastChild===e){for(;t&&!ne.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}ne.add(t,"br",{"data-mce-bogus":1})}})}f.on("SetContent ExecCommand",function(t){"setcontent"!=t.type&&"mceInsertLink"!==t.command||e()})}function M(){ie.forced_root_block&&f.on("init",function(){h("DefaultParagraphSeparator",ie.forced_root_block)})}function P(){f.on("keydown",function(e){var t;m(e)||e.keyCode!=ee||(t=f.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),f.undoManager.beforeChange(),ne.remove(t.item(0)),f.undoManager.add()))})}function O(){var e;p()>=10&&(e="",Q("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),f.contentStyles.push(e+"{padding-right: 1px !important}"))}function H(){p()<9&&(oe.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),ae.addNodeFilter("noscript",function(e){for(var t=e.length,n,r,a;t--;)n=e[t],r=e[t].firstChild,r?r.value=o.decode(r.value):(a=n.attributes.map["data-mce-innertext"],a&&(n.attr("data-mce-innertext",null),r=new i("#text",3),r.value=a,r.raw=!0,n.append(r)))}))}function I(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),ne.unbind(r,"mouseup",n),ne.unbind(r,"mousemove",t),a=o=0}var r=ne.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,ne.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(ne.bind(r,"mouseup",n),ne.bind(r,"mousemove",t),ne.getRoot().focus(),a.select())}})}function F(){f.on("keyup focusin mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||re.normalize()},!0)}function z(){f.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function U(){f.inline||f.on("keydown",function(){document.activeElement==document.body&&f.getWin().focus()})}function W(){f.inline||(f.contentStyles.push("body {min-height: 150px}"),f.on("click",function(e){var t;if("HTML"==e.target.nodeName){if(a.ie>11)return void f.getBody().focus();t=f.selection.getRng(),f.getBody().focus(),f.selection.setRng(t),f.selection.normalize(),f.nodeChanged()}}))}function V(){a.mac&&f.on("keydown",function(t){!e.metaKeyPressed(t)||t.shiftKey||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),f.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","lineboundary"))})}function $(){h("AutoUrlDetect",!1)}function q(){f.on("click",function(e){var t=e.target;do if("A"===t.tagName)return void e.preventDefault();while(t=t.parentNode)}),f.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function j(){f.on("init",function(){f.dom.bind(f.getBody(),"submit",function(e){e.preventDefault()})})}function Y(){oe.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"==e[t].attr("class")&&e[t].remove()})}function X(){f.on("dragstart",function(e){g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);if(n&&n.id!=f.id){e.preventDefault();var r=t.getCaretRangeFromPoint(e.x,e.y,f.getDoc());re.setRng(r),y(n.html)}}})}function K(){var e,t;G()&&(e=f.getBody(),t=e.parentNode,t.removeChild(e),t.appendChild(e),e.focus())}function G(){var e;return se?(e=f.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}function J(){function t(e){var t=new d(e.getBody()),n=e.selection.getRng(),r=u.fromRangeStart(n),i=u.fromRangeEnd(n);return!e.selection.isCollapsed()&&!t.prev(r)&&!t.next(i)}f.on("keypress",function(n){!m(n)&&!re.isCollapsed()&&n.charCode>31&&!e.metaKeyPressed(n)&&t(f)&&(n.preventDefault(),f.setContent(String.fromCharCode(n.charCode)),f.selection.select(f.getBody(),!0),f.selection.collapse(!1),f.nodeChanged())}),f.on("keydown",function(e){var n=e.keyCode;m(e)||n!=te&&n!=ee||t(f)&&(e.preventDefault(),f.setContent(""),f.nodeChanged())})}var Q=s.each,Z=f.$,ee=e.BACKSPACE,te=e.DELETE,ne=f.dom,re=f.selection,ie=f.settings,oe=f.parser,ae=f.serializer,se=a.gecko,le=a.ie,ce=a.webkit,ue="data:text/mce-internal,",de=le?"Text":"URL";return B(),C(),a.windowsPhone||F(),ce&&(J(),b(),w(),_(),M(),j(),T(),Y(),a.iOS?(U(),W(),q()):x()),le&&a.ie<11&&(N(),k(),R(),A(),P(),O(),H(),I()),a.ie>=11&&(W(),T()),a.ie&&(x(),$(),X()),se&&(J(),N(),E(),S(),D(),L(),z(),V(),T()),{refreshContentEditable:K,isHidden:G}}}),r(Ie,[ue,w,m],function(e,t,n){function r(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=o.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function i(e,t){function n(e){return!e.hidden&&!e.readonly}var i=r(e,t),s;if(e.delegates||(e.delegates={}),!e.delegates[t])if(e.settings.event_root){if(a||(a={},e.editorManager.on("removeEditor",function(){var t;if(!e.editorManager.activeEditor&&a){for(t in a)e.dom.unbind(r(e,t));a=null}})),a[t])return;s=function(r){for(var i=r.target,a=e.editorManager.editors,s=a.length;s--;){var l=a[s].getBody();(l===i||o.isChildOf(i,l))&&n(a[s])&&a[s].fire(t,r)}},a[t]=s,o.bind(i,t,s)}else s=function(r){n(e)&&e.fire(t,r)},o.bind(i,t,s),e.delegates[t]=s}var o=t.DOM,a,s={bindPendingEventDelegates:function(){var e=this;n.each(e._pendingNativeEvents,function(t){i(e,t)})},toggleNativeEvent:function(e,t){var n=this;"focus"!=e&&"blur"!=e&&(t?n.initialized?i(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(r(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e=this,t;if(e.delegates){for(t in e.delegates)e.dom.unbind(r(e,t),t,e.delegates[t]);delete e.delegates}e.inline||(e.getBody().onload=null,e.dom.unbind(e.getWin()),e.dom.unbind(e.getDoc())),e.dom.unbind(e.getBody()),e.dom.unbind(e.getContainer())}};return s=n.extend({},e,s)}),r(Fe,[],function(){function e(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}}function t(e){var t,n;return t=e.getBody(),n=function(t){e.dom.getParents(t.target,"a").length>0&&t.preventDefault()},e.dom.bind(t,"click",n),{unbind:function(){e.dom.unbind(t,"click",n)}}}function n(n,r){n._clickBlocker&&(n._clickBlocker.unbind(),n._clickBlocker=null),r?(n._clickBlocker=t(n),n.selection.controlSelection.hideResizeRect(),n.readonly=!0,n.getBody().contentEditable=!1):(n.readonly=!1,n.getBody().contentEditable=!0,e(n,"StyleWithCSS",!1),e(n,"enableInlineTableEditing",!1),e(n,"enableObjectResizing",!1),n.focus(),n.nodeChanged())}function r(e,t){var r=e.readonly?"readonly":"design";t!=r&&(e.initialized?n(e,"readonly"==t):e.on("init",function(){n(e,"readonly"==t)}),e.fire("SwitchMode",{mode:t}))}return{setMode:r}}),r(ze,[m,d],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122},o=e.makeMap("alt,ctrl,shift,meta,access");return function(a){function s(e){var a,s,l={};n(r(e,"+"),function(e){e in o?l[e]=!0:/^[0-9]{2,}$/.test(e)?l.keyCode=parseInt(e,10):(l.charCode=e.charCodeAt(0),l.keyCode=i[e]||e.toUpperCase().charCodeAt(0))}),a=[l.keyCode];for(s in o)l[s]?a.push(s):l[s]=!1;return l.id=a.join(","),l.access&&(l.alt=!0,t.mac?l.ctrl=!0:l.shift=!0),l.meta&&(t.mac?l.meta=!0:(l.ctrl=!0,l.meta=!1)),l}function l(t,n,i,o){var l;return l=e.map(r(t,">"),s),l[l.length-1]=e.extend(l[l.length-1],{func:i,scope:o||a}),e.extend(l[0],{desc:a.translate(n),subpatterns:l.slice(1)})}function c(e){return e.altKey||e.ctrlKey||e.metaKey}function u(e){return e.keyCode>=112&&e.keyCode<=123}function d(e,t){return t?t.ctrl!=e.ctrlKey||t.meta!=e.metaKey?!1:t.alt!=e.altKey||t.shift!=e.shiftKey?!1:e.keyCode==t.keyCode||e.charCode&&e.charCode==t.charCode?(e.preventDefault(),!0):!1:!1}function f(e){return e.func?e.func.call(e.scope):null}var h=this,p={},m=[];a.on("keyup keypress keydown",function(e){!c(e)&&!u(e)||e.isDefaultPrevented()||(n(p,function(t){return d(e,t)?(m=t.subpatterns.slice(0),"keydown"==e.type&&f(t),!0):void 0}),d(e,m[0])&&(1===m.length&&"keydown"==e.type&&f(m[0]),m.shift()))}),h.add=function(t,i,o,s){var c;return c=o,"string"==typeof o?o=function(){a.execCommand(c,!1,null)}:e.isArray(c)&&(o=function(){a.execCommand(c[0],c[1],c[2])}),n(r(e.trim(t.toLowerCase())),function(e){var t=l(e,i,o,s);p[t.id]=t}),!0},h.remove=function(e){var t=l(e);return p[t.id]?(delete p[t.id],!0):!1}}}),r(Ue,[c,m,z],function(e,t,n){return function(r,i){function o(e){var t,n;return n={"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"},t=n[e.blob().type.toLowerCase()]||"dat",e.id()+"."+t}function a(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}function s(e){return{id:e.id,blob:e.blob,base64:e.base64,filename:n.constant(o(e))}}function l(e,t,n,r){var s,l;s=new XMLHttpRequest,s.open("POST",i.url),s.withCredentials=i.credentials,s.upload.onprogress=function(e){r(e.loaded/e.total*100)},s.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+s.status)},s.onload=function(){var e;return 200!=s.status?void n("HTTP Error: "+s.status):(e=JSON.parse(s.responseText),e&&"string"==typeof e.location?void t(a(i.basePath,e.location)):void n("Invalid JSON: "+s.responseText))},l=new FormData,l.append("file",e.blob(),o(e)),s.send(l)}function c(){return new e(function(e){e([])})}function u(e,t){return{url:t,blobInfo:e,status:!0}}function d(e,t){return{url:"",blobInfo:e,status:!1,error:t}}function f(e,n){t.each(y[e],function(e){e(n)}),delete y[e]}function h(t,n,i){return r.markPending(t.blobUri()),new e(function(e){var o,a,l=function(){};try{var c=function(){o&&(o.close(),a=l)},h=function(n){c(),r.markUploaded(t.blobUri(),n),f(t.blobUri(),u(t,n)),e(u(t,n))},p=function(){c(),r.removeFailed(t.blobUri()),f(t.blobUri(),d(t,p)),e(d(t,p))};a=function(e){0>e||e>100||(o||(o=i()),o.progressBar.value(e))},n(s(t),h,p,a)}catch(m){e(d(t,m.message))}})}function p(e){return e===l}function m(t){var n=t.blobUri();return new e(function(e){y[n]=y[n]||[],y[n].push(e)})}function g(n,o){return n=t.grep(n,function(e){return!r.isUploaded(e.blobUri())}),e.all(t.map(n,function(e){return r.isPending(e.blobUri())?m(e):h(e,i.handler,o)}))}function v(e,t){return!i.url&&p(i.handler)?c():g(e,t)}var y={};return i=t.extend({credentials:!1,handler:l},i),{upload:v}}}),r(We,[c],function(e){function t(t){return new e(function(e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(){200==this.status&&e(this.response)},n.send()})}function n(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}}function r(t){return new e(function(e){var r,i,o;t=n(t);try{r=atob(t.data)}catch(a){return void e(new Blob([]))}for(i=new Uint8Array(r.length),o=0;o0&&(n&&(l*=-1),r.left+=l,r.right+=l),r}function l(){var n,r,o,a,s;for(n=i("*[contentEditable=false]",t),a=0;a').css(l).appendTo(t),o&&m.addClass("mce-visual-caret-before"),d(),c=a.ownerDocument.createRange(),f=g.firstChild,c.setStart(f,0),c.setEnd(f,1),c):(g=e.insertInline(a,o),c=a.ownerDocument.createRange(),s(g.nextSibling)?(c.setStart(g,0),c.setEnd(g,0)):(c.setStart(g,1),c.setEnd(g,1)),c)}function u(){l(),g&&(e.remove(g),g=null),m&&(m.remove(),m=null),clearInterval(p)}function d(){p=a.setInterval(function(){i("div.mce-visual-caret",t).toggleClass("mce-visual-caret-hidden")},500)}function f(){a.clearInterval(p)}function h(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"}var p,m,g;return{show:c,hide:u,getCss:h,destroy:f}}}),r(Xe,[p,_,W],function(e,t,n){function r(i){function o(t){return e.map(t,function(e){return e=n.clone(e),e.node=i,e})}if(e.isArray(i))return e.reduce(i,function(e,t){return e.concat(r(t))},[]);if(t.isElement(i))return o(i.getClientRects());if(t.isText(i)){var a=i.ownerDocument.createRange();return a.setStart(i,0),a.setEnd(i,i.data.length),o(a.getClientRects())}}return{getClientRects:r}}),r(Ke,[z,p,Xe,U,te,ne,$,W],function(e,t,n,r,i,o,a,s){function l(e,t,n,o){for(;o=i.findNode(o,e,r.isEditableCaretCandidate,t);)if(n(o))return}function c(e,r,i,o,a,s){function c(o){var s,l,c;for(c=n.getClientRects(o),-1==e&&(c=c.reverse()),s=0;s0&&r(l,t.last(f))&&u++,l.line=u,a(l))return!0;f.push(l)}}var u=0,d,f=[],h;return(h=t.last(s.getClientRects()))?(d=s.getNode(),c(d),l(e,o,c,d),f):f}function u(e,t){return t.line>e}function d(e,t){return t.line===e}function f(e,n,r,i){function l(n){return 1==e?t.last(n.getClientRects()):t.last(n.getClientRects())}var c=new o(n),u,d,f,h,p=[],m=0,g,v;1==e?(u=c.next,d=s.isBelow,f=s.isAbove,h=a.after(i)):(u=c.prev,d=s.isAbove,f=s.isBelow,h=a.before(i)),v=l(h);do if(h.isVisible()&&(g=l(h),!f(g,v))){if(p.length>0&&d(g,t.last(p))&&m++,g=s.clone(g),g.position=h,g.line=m,r(g))return p;p.push(g)}while(h=u(h));return p}var h=e.curry,p=h(c,-1,s.isAbove,s.isBelow),m=h(c,1,s.isBelow,s.isAbove);return{upUntil:p,downUntil:m,positionsUntil:f,isAboveLine:h(u),isLine:h(d)}}),r(Ge,[z,p,_,Xe,W,te,U],function(e,t,n,r,i,o,a){function s(e,t){return Math.abs(e.left-t)}function l(e,t){return Math.abs(e.right-t)}function c(e,n){function r(e,t){return e>=t.left&&e<=t.right}return t.reduce(e,function(e,t){var i,o;return i=Math.min(s(e,n),l(e,n)),o=Math.min(s(t,n),l(t,n)),r(n,t)?t:r(n,e)?e:o==i&&m(t.node)?t:i>o?t:e})}function u(e,t,n,r){for(;r=g(r,e,a.isEditableCaretCandidate,t);)if(n(r))return}function d(e,n){function o(e,i){var o;return o=t.filter(r.getClientRects(i),function(t){return!e(t,n)}),a=a.concat(o),0===o.length}var a=[];return a.push(n),u(-1,e,v(o,i.isAbove),n.node),u(1,e,v(o,i.isBelow),n.node),a}function f(e){return t.filter(t.toArray(e.getElementsByTagName("*")),m)}function h(e,t){return{node:e.node,before:s(e,t)=e.top&&i<=e.bottom}),a=c(o,n),a&&(a=c(d(e,a),n),a&&m(a.node))?h(a,n):null}var m=n.isContentEditableFalse,g=o.findNode,v=e.curry;return{findClosestClientRect:c,findLineNodeRects:d,closestCaret:p}}),r(Je,[],function(){var e=function(e){var t,n,r,i;return i=e.getBoundingClientRect(),t=e.ownerDocument,n=t.documentElement,r=t.defaultView,{top:i.top+r.pageYOffset-n.clientTop,left:i.left+r.pageXOffset-n.clientLeft}},t=function(t){return t.inline?e(t.getBody()):{left:0,top:0}},n=function(e){var t=e.getBody();return e.inline?{left:t.scrollLeft,top:t.scrollTop}:{left:0,top:0}},r=function(e){var t=e.getBody(),n=e.getDoc().documentElement,r={left:t.scrollLeft,top:t.scrollTop},i={left:t.scrollLeft||n.scrollLeft,top:t.scrollTop||n.scrollTop};return e.inline?r:i},i=function(t,n){if(n.target.ownerDocument!==t.getDoc()){var i=e(t.getContentAreaContainer()),o=r(t);return{left:n.pageX-i.left+o.left,top:n.pageY-i.top+o.top}}return{left:n.pageX,top:n.pageY}},o=function(e,t,n){return{pageX:n.left-e.left+t.left,pageY:n.top-e.top+t.top}},a=function(e,r){return o(t(e),n(e),i(e,r))};return{calc:a}}),r(Qe,[_,p,z,u,w,Je],function(e,t,n,r,i,o){var a=e.isContentEditableFalse,s=e.isContentEditableTrue,l=function(e){return a(e)},c=function(e,t,n){return t===n||e.dom.isChildOf(t,n)?!1:!a(t)},u=function(e){var t=e.cloneNode(!0);return t.removeAttribute("data-mce-selected"),t},d=function(e,t,n,r){var i=t.cloneNode(!0);e.dom.setStyles(i,{width:n,height:r}),e.dom.setAttrib(i,"data-mce-selected",null);var o=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(o,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(i,{margin:0,boxSizing:"border-box"}),o.appendChild(i),o},f=function(e,t){e.parentNode!==t&&t.appendChild(e)},h=function(e,t,n,r,i,o){var a=0,s=0;e.style.left=t.pageX+"px",e.style.top=t.pageY+"px",t.pageX+n>i&&(a=t.pageX+n-i), +t.pageY+r>o&&(s=t.pageY+r-o),e.style.width=n-a+"px",e.style.height=r-s+"px"},p=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},m=function(e){return 0===e.button},g=function(e){return e.element},v=function(e,t){return{pageX:t.pageX-e.relX,pageY:t.pageY+5}},y=function(e,r){return function(i){if(m(i)){var o=t.find(r.dom.getParents(i.target),n.or(a,s));if(l(o)){var c=r.dom.getPos(o),u=r.getBody(),f=r.getDoc().documentElement;e.element=o,e.screenX=i.screenX,e.screenY=i.screenY,e.maxX=(r.inline?u.scrollWidth:f.offsetWidth)-2,e.maxY=(r.inline?u.scrollHeight:f.offsetHeight)-2,e.relX=i.pageX-c.x,e.relY=i.pageY-c.y,e.width=o.offsetWidth,e.height=o.offsetHeight,e.ghost=d(r,o,e.width,e.height)}}}},b=function(e,t){var n=r.throttle(function(e,n){t._selectionOverrides.hideFakeCaret(),t.selection.placeCaretAt(e,n)},0);return function(r){var i=Math.max(Math.abs(r.screenX-e.screenX),Math.abs(r.screenY-e.screenY));if(g(e)&&!e.dragging&&i>10){var a=t.fire("dragstart",{target:e.element});if(a.isDefaultPrevented())return;e.dragging=!0,t.focus()}if(e.dragging){var s=v(e,o.calc(t,r));f(e.ghost,t.getBody()),h(e.ghost,s,e.width,e.height,e.maxX,e.maxY),n(r.clientX,r.clientY)}}},C=function(e,t){return function(n){if(e.dragging&&c(t,t.selection.getNode(),e.element)){var r=u(e.element),i=t.fire("drop",{targetClone:r,clientX:n.clientX,clientY:n.clientY});i.isDefaultPrevented()||(r=i.targetClone,t.undoManager.transact(function(){p(e.element),t.insertContent(t.dom.getOuterHTML(r)),t._selectionOverrides.hideFakeCaret()}))}w(e)}},x=function(e,t){return function(){w(e),e.dragging&&t.fire("dragend")}},w=function(e){e.dragging=!1,e.element=null,p(e.ghost)},N=function(e){var t={},n,r,o,a,s,l;n=i.DOM,l=document,r=y(t,e),o=b(t,e),a=C(t,e),s=x(t,e),e.on("mousedown",r),e.on("mousemove",o),e.on("mouseup",a),n.bind(l,"mousemove",o),n.bind(l,"mouseup",s),e.on("remove",function(){n.unbind(l,"mousemove",o),n.unbind(l,"mouseup",s)})},E=function(e){e.on("drop",function(t){var n="undefined"!=typeof t.clientX?e.getDoc().elementFromPoint(t.clientX,t.clientY):null;(a(n)||a(e.dom.getContentEditableParent(n)))&&t.preventDefault()})},_=function(e){N(e),E(e)};return{init:_}}),r(Ze,[d,ne,$,k,te,Ye,Ke,Ge,_,T,W,I,z,p,u,Qe,S],function(e,t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g){function v(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function y(c){function y(){var e=c.dom.get(le);return e?e.getElementsByTagName("*")[0]:e}function S(e){return c.dom.isBlock(e)}function k(e){e&&c.selection.setRng(e)}function T(){return c.selection.getRng()}function R(e,t){c.selection.scrollIntoView(e,t)}function A(e,t,n){var r;return r=c.fire("ShowCaret",{target:t,direction:e,before:n}),r.isDefaultPrevented()?null:(R(t,-1===e),se.show(n,t))}function B(e){var t;return se.hide(),t=c.fire("BeforeObjectSelected",{target:e}),t.isDefaultPrevented()?null:D(e)}function D(e){var t=e.ownerDocument.createRange();return t.selectNode(e),t}function L(e,t){var n=i.isInSameBlock(e,t);return!n&&l.isBr(e.getNode())?!0:n}function M(e,t){return t=i.normalizeRange(e,re,t),-1==e?n.fromRangeStart(t):n.fromRangeEnd(t)}function P(e){return r.isCaretContainerBlock(e.startContainer)}function O(e,t,n,r){var i,o,a,s;return!r.collapsed&&(i=_(r),x(i))?A(e,i,-1==e):(s=P(r),o=M(e,r),n(o)?B(o.getNode(-1==e)):(o=t(o))?n(o)?A(e,o.getNode(-1==e),1==e):(a=t(o),n(a)&&L(o,a)?A(e,a.getNode(-1==e),1==e):s?$(o.toRange()):null):s?r:null)}function H(e,t,n){var r,i,o,l,c,u,d,f,p;if(p=_(n),r=M(e,n),i=t(re,a.isAboveLine(1),r),o=h.filter(i,a.isLine(1)),c=h.last(r.getClientRects()),E(r)&&(p=r.getNode()),N(r)&&(p=r.getNode(!0)),!c)return null;if(u=c.left,l=s.findClosestClientRect(o,u),l&&x(l.node))return d=Math.abs(u-l.left),f=Math.abs(u-l.right),A(e,l.node,f>d);if(p){var m=a.positionsUntil(e,re,a.isAboveLine(1),p);if(l=s.findClosestClientRect(h.filter(m,a.isLine(1)),u))return $(l.position.toRange());if(l=h.last(h.filter(m,a.isLine(0))))return $(l.position.toRange())}}function I(t,r){function i(){var t=c.dom.create(c.settings.forced_root_block);return(!e.ie||e.ie>=11)&&(t.innerHTML='
                '),t}var o,a,s;if(r.collapsed&&c.settings.forced_root_block){if(o=c.dom.getParent(r.startContainer,"PRE"),!o)return;a=1==t?oe(n.fromRangeStart(r)):ae(n.fromRangeStart(r)),a||(s=i(),1==t?c.$(o).after(s):c.$(o).before(s),c.selection.select(s,!0),c.selection.collapse())}}function F(e,t,n,r){var i;return(i=O(e,t,n,r))?i:(i=I(e,r),i?i:null)}function z(e,t,n){var r;return(r=H(e,t,n))?r:(r=I(e,n),r?r:null)}function U(){return ue("*[data-mce-caret]")[0]}function W(e){e=ue(e),e.attr("data-mce-caret")&&(se.hide(),e.removeAttr("data-mce-caret"),e.removeAttr("data-mce-bogus"),e.removeAttr("style"),k(T()),R(e[0]))}function V(e){var t,r;return e=i.normalizeRange(1,re,e),t=n.fromRangeStart(e),x(t.getNode())?A(1,t.getNode(),!t.isAtEnd()):x(t.getNode(!0))?A(1,t.getNode(!0),!1):(r=c.dom.getParent(t.getNode(),f.or(x,C)),x(r)?A(1,r,!1):(se.hide(),null))}function $(e){var t;return e&&e.collapsed?(t=V(e),t?t:e):e}function q(e){var t,i,o,a;return x(e)?(x(e.previousSibling)&&(o=e.previousSibling),i=ae(n.before(e)),i||(t=oe(n.after(e))),t&&w(t.getNode())&&(a=t.getNode()),r.remove(e.previousSibling),r.remove(e.nextSibling),c.dom.remove(e),ee(),c.dom.isEmpty(c.getBody())?(c.setContent(""),void c.focus()):o?n.after(o).toRange():a?n.before(a).toRange():i?i.toRange():t?t.toRange():null):null}function j(e){var t=c.schema.getTextBlockElements();return e.nodeName in t}function Y(e){return c.dom.isEmpty(e)}function X(e,t,r){var i=c.dom,o,a,s,l;if(o=i.getParent(t.getNode(),i.isBlock),a=i.getParent(r.getNode(),i.isBlock),-1===e){if(l=r.getNode(!0),N(r)&&S(l))return j(o)?(Y(o)&&i.remove(o),n.after(l).toRange()):q(r.getNode(!0))}else if(l=t.getNode(),E(t)&&S(l))return j(a)?(Y(a)&&i.remove(a),n.before(l).toRange()):q(t.getNode());if(o===a||!j(o)||!j(a))return null;for(;s=o.firstChild;)a.appendChild(s);return c.dom.remove(o),r.toRange()}function K(e,t,n,i){var o,a,s,l;return!i.collapsed&&(o=_(i),x(o))?$(q(o)):(a=M(e,i),n(a)&&r.isCaretContainerBlock(i.startContainer)?(l=-1==e?ie.prev(a):ie.next(a),l?$(l.toRange()):i):t(a)?$(q(a.getNode(-1==e))):(s=-1==e?ie.prev(a):ie.next(a),t(s)?-1===e?X(e,a,s):X(e,s,a):void 0))}function G(){function r(e,t){var n=t(T());n&&!e.isDefaultPrevented()&&(e.preventDefault(),k(n))}function i(e){for(var t=c.getBody();e&&e!=t;){if(C(e)||x(e))return e;e=e.parentNode}return null}function o(e,t,n){return n.collapsed?!1:h.reduce(n.getClientRects(),function(n,r){return n||u.containsXY(r,e,t)},!1)}function l(e){var t=!1;e.on("touchstart",function(){t=!1}),e.on("touchmove",function(){t=!0}),e.on("touchend",function(e){var n=i(e.target);x(n)?t||(e.preventDefault(),Z(B(n))):ee()})}function f(){var e,t=i(c.selection.getNode());C(t)&&S(t)&&c.dom.isEmpty(t)&&(e=c.dom.create("br",{"data-mce-bogus":"1"}),c.$(t).empty().append(e),c.selection.setRng(n.before(e).toRange()))}function g(e){var t=U();if(t)return"compositionstart"==e.type?(e.preventDefault(),e.stopPropagation(),void W(t)):void(" "!=t.innerHTML&&W(t))}function v(e){var t;switch(e.keyCode){case d.DELETE:t=f();break;case d.BACKSPACE:t=f()}t&&e.preventDefault()}var w=b(F,1,oe,E),_=b(F,-1,ae,N),R=b(K,1,E,N),D=b(K,-1,N,E),L=b(z,-1,a.upUntil),M=b(z,1,a.downUntil);c.on("mouseup",function(){var e=T();e.collapsed&&k(V(e))}),c.on("click",function(e){var t;t=i(e.target),t&&x(t)&&(e.preventDefault(),c.focus())});var P=function(e){var r=new t(e);if(!e.firstChild)return!1;var i=n.before(e.firstChild),o=r.next(i);return o&&!E(o)&&!N(o)},O=function(e,t){var n=c.dom.getParent(e,c.dom.isBlock),r=c.dom.getParent(t,c.dom.isBlock);return n===r},H=function(e,t){var n=c.dom.getParent(e,c.dom.isBlock),r=c.dom.getParent(t,c.dom.isBlock);return n&&!O(n,r)&&P(n)};l(c),c.on("mousedown",function(e){var t;if(t=i(e.target))x(t)?(e.preventDefault(),Z(B(t))):(ee(),o(e.clientX,e.clientY,c.selection.getRng())||c.selection.placeCaretAt(e.clientX,e.clientY));else{ee(),se.hide();var n=s.closestCaret(re,e.clientX,e.clientY);n&&(H(e.target,n.node)||(e.preventDefault(),c.getBody().focus(),k(A(1,n.node,n.before))))}}),c.on("keydown",function(e){if(!d.modifierPressed(e))switch(e.keyCode){case d.RIGHT:r(e,w);break;case d.DOWN:r(e,M);break;case d.LEFT:r(e,_);break;case d.UP:r(e,L);break;case d.DELETE:r(e,R);break;case d.BACKSPACE:r(e,D);break;default:x(c.selection.getNode())&&e.preventDefault()}}),c.on("keyup compositionstart",function(e){g(e),v(e)},!0),c.on("cut",function(){var e=c.selection.getNode();x(e)&&p.setEditorTimeout(c,function(){k($(q(e)))})}),c.on("getSelectionRange",function(e){var t=e.range;if(ce){if(!ce.parentNode)return void(ce=null);t=t.cloneRange(),t.selectNode(ce),e.range=t}}),c.on("setSelectionRange",function(e){var t;t=Z(e.range),t&&(e.range=t)}),c.on("focus",function(){p.setEditorTimeout(c,function(){c.selection.setRng($(c.selection.getRng()))},0)}),c.on("copy",function(t){var n=t.clipboardData;if(!t.isDefaultPrevented()&&t.clipboardData&&!e.ie){var r=y();r&&(t.preventDefault(),n.clearData(),n.setData("text/html",r.outerHTML),n.setData("text/plain",r.outerText))}}),m.init(c)}function J(){var e=c.contentStyles,t=".mce-content-body";e.push(se.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")}function Q(e){return r.isCaretContainer(e.startContainer)||r.isCaretContainer(e.endContainer)}function Z(t){var n,r=c.$,i=c.dom,o,a,s,l,u,d,f,h,p;if(!t)return ee(),null;if(t.collapsed){if(ee(),!Q(t)){if(f=M(1,t),x(f.getNode()))return A(1,f.getNode(),!f.isAtEnd());if(x(f.getNode(!0)))return A(1,f.getNode(!0),!1)}return null}return s=t.startContainer,l=t.startOffset,u=t.endOffset,3==s.nodeType&&0==l&&x(s.parentNode)&&(s=s.parentNode,l=i.nodeIndex(s),s=s.parentNode),1!=s.nodeType?(ee(),null):(u==l+1&&(n=s.childNodes[l]),x(n)?(h=p=n.cloneNode(!0),d=c.fire("ObjectSelected",{target:n,targetClone:h}),d.isDefaultPrevented()?(ee(),null):(h=d.targetClone,o=r("#"+le),0===o.length&&(o=r('
                ').attr("id",le),o.appendTo(c.getBody())),t=c.dom.createRng(),h===p&&e.ie?(o.empty().append(g.ZWSP).append(h).append(g.ZWSP),t.setStart(o[0].firstChild,0),t.setEnd(o[0].lastChild,1)):(o.empty().append("\xa0").append(h).append("\xa0"),t.setStart(o[0].firstChild,1),t.setEnd(o[0].lastChild,0)),o.css({top:i.getPos(n,c.getBody()).y}),o[0].focus(),a=c.selection.getSel(),a.removeAllRanges(),a.addRange(t),c.$("*[data-mce-selected]").removeAttr("data-mce-selected"),n.setAttribute("data-mce-selected",1),ce=n,t)):(ee(),null))}function ee(){ce&&(ce.removeAttribute("data-mce-selected"),c.$("#"+le).remove(),ce=null)}function te(){se.destroy(),ce=null}function ne(){se.hide()}var re=c.getBody(),ie=new t(re),oe=b(v,ie.next),ae=b(v,ie.prev),se=new o(c.getBody(),S),le="sel-"+c.dom.uniqueId(),ce,ue=c.$;return e.ceFalse&&(G(),J()),{showBlockCaretContainer:W,hideFakeCaret:ne,destroy:te}}var b=f.curry,C=l.isContentEditableTrue,x=l.isContentEditableFalse,w=l.isElement,N=i.isAfterContentEditableFalse,E=i.isBeforeContentEditableFalse,_=c.getSelectedNode;return y}),r(et,[],function(){var e=0,t=function(){var e=function(){return Math.round(4294967295*Math.random()).toString(36)},t=(new Date).getTime();return"s"+t.toString(36)+e()+e()+e()},n=function(n){return n+e++ +t()};return{uuid:n}}),r(tt,[w,g,E,R,A,O,P,Y,J,Q,Z,ee,oe,ae,N,f,Ae,Pe,B,L,He,d,m,u,Ie,Fe,ze,je,Ze,et],function(e,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,C,x,w,N,E,_,S,k,T,R,A){function B(e,t,i){var o=this,a,s,l;a=o.documentBaseUrl=i.documentBaseURL,s=i.baseURI,l=i.defaultSettings,t=P({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:a,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:o.convertURL,url_converter_scope:o,ie7_compat:!0},l,t),l&&l.external_plugins&&t.external_plugins&&(t.external_plugins=P({},l.external_plugins,t.external_plugins)),o.settings=t,r.language=t.language||"en",r.languageLoad=t.language_load,r.baseURL=i.baseURL,o.id=t.id=e,o.setDirty(!1),o.plugins={},o.documentBaseURI=new p(t.document_base_url||a,{base_uri:s}),o.baseURI=s,o.contentCSS=[],o.contentStyles=[],o.shortcuts=new k(o),o.loadedCSS={},o.editorCommands=new h(o),t.target&&(o.targetElm=t.target),o.suffix=i.suffix,o.editorManager=i,o.inline=t.inline,o.settings.content_editable=o.inline,t.cache_suffix&&(w.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),t.override_viewport===!1&&(w.overrideViewPort=!1),i.fire("SetupEditor",o),o.execCallback("setup",o),o.$=n.overrideDefaults(function(){return{context:o.inline?o.getBody():o.getDoc(),element:o.getBody()}})}var D=e.DOM,L=r.ThemeManager,M=r.PluginManager,P=N.extend,O=N.each,H=N.explode,I=N.inArray,F=N.trim,z=N.resolve,U=g.Event,W=w.gecko,V=w.ie;return B.prototype={render:function(){function e(){D.unbind(window,"ready",e),n.render()}function t(){var e=m.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof r.theme&&"-"!=r.theme.charAt(0)&&!L.urls[r.theme]){var t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",L.load(r.theme,t)}N.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),O(r.external_plugins,function(e,t){M.load(t,e),r.plugins+=" "+t}),O(r.plugins.split(/[ ,]/),function(e){if(e=F(e),e&&!M.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=M.dependencies(e);O(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=M.createUrl(t,e),M.load(e.resource,e)})}else M.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()})}var n=this,r=n.settings,i=n.id,o=n.suffix;if(!U.domLoaded)return void D.bind(window,"ready",e);if(n.getElement()&&w.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var a=n.getElement().form||D.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(D.insertAfter(D.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},D.bind(a,"submit reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return n.editorManager.triggerSave(),n.setDirty(!1),a._mceOldSubmit(a)})),n.windowManager=new v(n),n.notificationManager=new y(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=D.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),n.editorManager.add(n),t()}},init:function(){function e(n){var r=M.get(n),i,o;if(i=M.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=F(n),r&&-1===I(m,n)){if(O(M.dependencies(n),function(t){e(t)}),t.plugins[n])return;o=new r(t,i,t.$),t.plugins[n]=o,o.init&&(o.init(t,i),m.push(n))}}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,c,u,d,f,h,p,m=[];if(t.rtl=n.rtl_ui||t.editorManager.i18n.rtl,t.editorManager.i18n.setCode(n.language),n.aria_label=n.aria_label||D.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),t.fire("ScriptsLoaded"),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),c=L.get(n.theme),t.theme=new c(t,L.urls[n.theme]),t.theme.init&&t.theme.init(t,L.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""),t.$)):t.theme=n.theme),O(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,h=/^[0-9\.]+(|px)$/i,h.test(""+i)&&(i=Math.max(parseInt(i,10),100)),h.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),a>o&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer=l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer=l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&O(H(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return r=s=l=null,t.initContentBody();if(t.iframeHTML=n.doctype+"",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+=''),!w.caretAfter&&n.ie7_compat&&(t.iframeHTML+=''),t.iframeHTML+='',!/#$/.test(document.location.href))for(p=0;p',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",-1!=d.indexOf("=")&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",-1!=f.indexOf("=")&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),n.content_security_policy&&(t.iframeHTML+=''),t.iframeHTML+='
                ';var v='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';document.domain!=location.hostname&&w.ie&&w.ie<12&&(u=v);var y=D.create("iframe",{id:t.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}});if(y.onload=function(){y.onload=null,t.fire("load")},D.setAttrib(y,"src",u||'javascript:""'),t.contentAreaContainer=l.iframeContainer,t.iframeElement=y,s=D.add(l.iframeContainer,y),V)try{t.getDoc()}catch(b){s.src=u=v}l.editorContainer&&(D.get(l.editorContainer).style.display=t.orgDisplay,t.hidden=D.isHidden(l.editorContainer)),t.getElement().style.display="none",D.setAttrib(t.id,"aria-hidden",!0),u||t.initContentBody(),r=s=l=null},initContentBody:function(t){var n=this,r=n.settings,s=n.getElement(),h=n.getDoc(),p,m;r.inline||(n.getElement().style.visibility=n.orgVisibility),t||r.content_editable||(h.open(),h.write(n.iframeHTML),h.close()),r.content_editable&&(n.on("remove",function(){var e=this.getBody();D.removeClass(e,"mce-content-body"),D.removeClass(e,"mce-edit-focus"),D.setAttrib(e,"contentEditable",null)}),D.addClass(s,"mce-content-body"),n.contentDocument=h=r.content_document||document,n.contentWindow=r.content_window||window,n.bodyElement=s,r.content_document=r.content_window=null,r.root_name=s.nodeName.toLowerCase()),p=n.getBody(),p.disabled=!0,n.readonly=r.readonly,n.readonly||(n.inline&&"static"==D.getStyle(p,"position",!0)&&(p.style.position="relative"),p.contentEditable=n.getParam("content_editable_state",!0)),p.disabled=!1,n.editorUpload=new T(n),n.schema=new b(r),n.dom=new e(h,{keep_values:!0,url_converter:n.convertURL,url_converter_scope:n,hex_colors:r.force_hex_style_colors,class_filter:r.class_filter,update_styles:!0,root_element:n.inline?n.getBody():null,collect:r.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new C(r,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var r=e.length,i,o=n.dom,a,s;r--;)if(i=e[r],a=i.attr(t),s="data-mce-"+t,!i.attributes.map[s]){if(0===a.indexOf("data:")||0===a.indexOf("blob:"))continue;"style"===t?(a=o.serializeStyle(o.parseStyle(a),i.name),a.length||(a=null),i.attr(s,a),i.attr(t,a)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name))}}),n.parser.addNodeFilter("script",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("type")||"no/type",0!==r.indexOf("mce-")&&n.attr("type","mce-"+r)}),n.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,r,i=n.schema.getNonEmptyElements();t--;)r=e[t],r.isEmpty(i)&&(r.append(new o("br",1)).shortEnded=!0)}),n.serializer=new a(r,n),n.selection=new l(n.dom,n.getWin(),n.serializer,n),n.formatter=new c(n),n.undoManager=new u(n),n.forceBlocks=new f(n),n.enterKey=new d(n),n._nodeChangeDispatcher=new i(n),n._selectionOverrides=new R(n),n.fire("PreInit"),r.browser_spellcheck||r.gecko_spellcheck||(h.body.spellcheck=!1,D.setAttrib(p,"spellcheck","false")),n.quirks=new x(n),n.fire("PostRender"),r.directionality&&(p.dir=r.directionality),r.nowrap&&(p.style.whiteSpace="nowrap"),r.protect&&n.on("BeforeSetContent",function(e){O(r.protect,function(t){e.content=e.content.replace(t,function(e){return""})})}),n.on("SetContent",function(){n.addVisual(n.getBody())}),r.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
                [\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,n.bindPendingEventDelegates(),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.on("compositionstart compositionend",function(e){n.composing="compositionstart"===e.type}),n.contentStyles.length>0&&(m="",O(n.contentStyles,function(e){m+=e+"\r\n"}),n.dom.addStyle(m)),O(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),r.auto_focus&&E.setEditorTimeout(n,function(){var e;e=r.auto_focus===!0?n:n.editorManager.get(r.auto_focus),e.destroyed||e.focus()},100),s=h=p=null},focus:function(e){function t(e){return n.dom.getParent(e,function(e){return"true"===n.dom.getContentEditable(e)})}var n=this,r=n.selection,i=n.settings.content_editable,o,a,s=n.getDoc(),l=n.getBody(),c;if(!e){if(o=r.getRng(),o.item&&(a=o.item(0)),n.quirks.refreshContentEditable(),c=t(r.getNode()),n.$.contains(l,c))return c.focus(),r.normalize(),void n.editorManager.setActive(n);if(i||(w.opera||n.getBody().focus(),n.getWin().focus()),W||i){if(l.setActive)try{l.setActive()}catch(u){l.focus()}else l.focus();i&&r.normalize()}a&&a.ownerDocument==s&&(o=s.body.createControlRange(),o.addElement(a),o.select())}n.editorManager.setActive(n)},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?z(r):0,n=z(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?(e=n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n.data[t+"."+r]||"{#"+r+"}"}),this.editorManager.translate(e)):""},getLang:function(e,n){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?O(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(e){e=e.split("="),e.length>1?i[F(e[0])]=F(e[1]):i[F(e[0])]=F(e)}):i=r,i):r},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addContextToolbar:function(e,t){var n=this,r;n.contextToolbars=n.contextToolbars||[],"string"==typeof e&&(r=e,e=function(e){return n.dom.is(e,r)}),n.contextToolbars.push({id:A.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){var e=this;e.hidden&&(e.hidden=!1,e.inline?e.getBody().contentEditable=!0:(D.show(e.getContainer()),D.hide(e.id)),e.load(),e.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(V&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e==e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(D.hide(e.getContainer()),D.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;return r?(e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i):void 0},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),"raw"==e.format&&t.fire("RawSaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=D.getParent(t.id,"form"))&&O(i.elements,function(e){return e.name==t.id?(e.value=r,!1):void 0})),e.element=n=null,e.set_dirty!==!1&&t.setDirty(!1),r},setContent:function(e,t){var n=this,r=n.getBody(),i,o;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(o=V&&11>V?"":'
                ',"TABLE"==r.nodeName?e=""+o+"":/^(UL|OL)$/.test(r.nodeName)&&(e="
              • "+o+"
              • "),i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=o,e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):V||e||(e='
                '),n.dom.setHTML(r,e),n.fire("SetContent",t)):("raw"!==t.format&&(e=new s({validate:n.validate},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=F(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?t.serializer.getTrimmedContent():"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),"text"!=e.format?e.content=F(n):e.content=n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e,t){t&&(e=P({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!=t&&this.fire("dirty")},setMode:function(e){S.setMode(this,e)},getContainer:function(){var e=this;return e.container||(e.container=D.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=D.get(this.id)),this.targetElm},getWin:function(){var e=this,t;return e.contentWindow||(t=e.iframeElement,t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),O(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||!n.hasVisual?i.removeClass(e,o):i.addClass(e,o));case"A":return void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&n.hasVisual?i.addClass(e,o):i.removeClass(e,o)))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this;e.removed||(e.save(),e.removed=1,e.unbindAllNativeEvents(),e.hasHiddenInput&&D.remove(e.getElement().nextSibling),e.inline||(V&&10>V&&e.getDoc().execCommand("SelectAll",!1,null),D.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null),e.fire("remove"),e.editorManager.remove(e),D.remove(e.getContainer()),e._selectionOverrides.destroy(),e.editorUpload.destroy(),e.destroy())},destroy:function(e){var t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void t.remove();e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),D.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.bodyElement=t.contentDocument=t.contentWindow=null,t.iframeElement=t.targetElm=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()}},P(B.prototype,_),B}),r(nt,[],function(){var e={},t="en";return{setCode:function(e){e&&(t=e,this.rtl=this.data[e]?"rtl"===this.data[e]._dir:!1)},getCode:function(){return t},rtl:!1,add:function(t,n){var r=e[t];r||(e[t]=r={});for(var i in n)r[i]=n[i];this.setCode(t)},translate:function(n){var r;if(r=e[t],r||(r={}),"undefined"==typeof n)return n;if("string"!=typeof n&&n.raw)return n.raw;if(n.push){var i=n.slice(1);n=(r[n[0]]||n[0]).replace(/\{([0-9]+)\}/g,function(e,t){return i[t]})}return(r[n]||n).replace(/{context:\w+}$/,"")},data:e}}),r(rt,[w,u,d],function(e,t,n){function r(e){function l(){try{return document.activeElement}catch(e){return document.body}}function c(e,t){if(t&&t.startContainer){if(!e.isChildOf(t.startContainer,e.getRoot())||!e.isChildOf(t.endContainer,e.getRoot()))return;return{startContainer:t.startContainer, +startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset}}return t}function u(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function d(e){return!!s.getParent(e,r.isEditorUIElement)}function f(r){var f=r.editor;f.on("init",function(){(f.inline||n.ie)&&("onbeforedeactivate"in document&&n.ie<9?f.dom.bind(f.getBody(),"beforedeactivate",function(e){if(e.target==f.getBody())try{f.lastRng=f.selection.getRng()}catch(t){}}):f.on("nodechange mouseup keyup",function(e){var t=l();"nodechange"==e.type&&e.selectionChange||(t&&t.id==f.id+"_ifr"&&(t=f.getBody()),f.dom.isChildOf(t,f.getBody())&&(f.lastRng=f.selection.getRng()))}),n.webkit&&!i&&(i=function(){var t=e.activeEditor;if(t&&t.selection){var n=t.selection.getRng();n&&!n.collapsed&&(f.lastRng=n)}},s.bind(document,"selectionchange",i)))}),f.on("setcontent",function(){f.lastRng=null}),f.on("mousedown",function(){f.selection.lastFocusBookmark=null}),f.on("focusin",function(){var t=e.focusedEditor,n;f.selection.lastFocusBookmark&&(n=u(f,f.selection.lastFocusBookmark),f.selection.lastFocusBookmark=null,f.selection.setRng(n)),t!=f&&(t&&t.fire("blur",{focusedEditor:f}),e.setActive(f),e.focusedEditor=f,f.fire("focus",{blurredEditor:t}),f.focus(!0)),f.lastRng=null}),f.on("focusout",function(){t.setEditorTimeout(f,function(){var t=e.focusedEditor;d(l())||t!=f||(f.fire("blur",{focusedEditor:null}),e.focusedEditor=null,f.selection&&(f.selection.lastFocusBookmark=null))})}),o||(o=function(t){var n=e.activeEditor,r;r=t.target,n&&r.ownerDocument==document&&(n.selection&&r!=n.getBody()&&(n.selection.lastFocusBookmark=c(n.dom,n.lastRng)),r==document.body||d(r)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},s.bind(document,"focusin",o)),f.inline&&!a&&(a=function(t){var n=e.activeEditor,r=n.dom;if(n.inline&&r&&!r.isChildOf(t.target,n.getBody())){var i=n.selection.getRng();i.collapsed||(n.lastRng=i)}},s.bind(document,"mouseup",a))}function h(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(s.unbind(document,"selectionchange",i),s.unbind(document,"focusin",o),s.unbind(document,"mouseup",a),i=o=a=null)}e.on("AddEditor",f),e.on("RemoveEditor",h)}var i,o,a,s=e.DOM;return r.isEditorUIElement=function(e){return-1!==e.className.toString().indexOf("mce-")},r}),r(it,[tt,g,w,ae,d,m,c,ue,nt,rt],function(e,t,n,r,i,o,a,s,l,c){function u(e){g(C.editors,function(t){"scroll"===e.type?t.fire("ScrollWindow",e):t.fire("ResizeWindow",e)})}function d(e,n){n!==x&&(n?t(window).on("resize scroll",u):t(window).off("resize scroll",u),x=n)}function f(e){var t=C.editors,n;delete t[e.id];for(var r=0;r0&&g(m(t),function(e){var t;(t=p.get(e))?n.push(t):g(document.forms,function(t){g(t.elements,function(t){t.name===e&&(e="mce_editor_"+y++,p.setAttrib(t,"id",e),n.push(t))})})});break;case"textareas":case"specific_textareas":g(p.select("textarea"),function(t){e.editor_deselector&&c(t,e.editor_deselector)||e.editor_selector&&!c(t,e.editor_selector)||n.push(t)})}return n}function d(){function a(t,n,r){var i=new e(t,n,f);m.push(i),i.on("init",function(){++c===y.length&&x(m)}),i.targetElm=i.targetElm||r,i.render()}var c=0,m=[],y;return p.unbind(window,"ready",d),l("onpageload"),y=t.unique(u(n)),n.types?void g(n.types,function(e){o.each(y,function(t){return p.is(t,e.selector)?(a(s(t),v({},n,e),t),!1):!0})}):(o.each(y,function(e){h(f.get(e.id))}),y=o.grep(y,function(e){return!f.get(e.id)}),void g(y,function(e){r(n,e)?i("Could not initialize inline editor on invalid inline target element",e):a(s(e),n,e)}))}var f=this,b,C;C=o.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu"," ");var x=function(e){b=e};return f.settings=n,p.bind(window,"ready",d),new a(function(e){b?e(b):x=function(t){e(t)}})},get:function(e){return arguments.length?e in this.editors?this.editors[e]:null:this.editors},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),d(n,!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),b||(b=function(){t.fire("BeforeUnload")},p.bind(window,"beforeunload",b)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i;{if(e)return"string"==typeof e?(e=e.selector||e,void g(p.select(e),function(e){i=r[e.id],i&&t.remove(i)})):(i=e,r[i.id]?(f(i)&&t.fire("RemoveEditor",{editor:i}),r.length||p.unbind(window,"beforeunload",b),i.remove(),d(r,r.length>0),i):null);for(n=r.length-1;n>=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return i.activeEditor?i.activeEditor.execCommand(t,n,r):!1},triggerSave:function(){g(this.editors,function(e){e.save()})},addI18n:function(e,t){l.add(e,t)},translate:function(e){return l.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!=e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},v(C,s),C.setup(),window.tinymce=window.tinyMCE=C,C}),r(ot,[it,m],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(n,r){"html4"===t.settings.schema&&e(r,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(at,[ue,m],function(e,t){var n={send:function(e){function r(){!e.async||4==i.readyState||o++>1e4?(e.success&&1e4>o&&200==i.status?e.success.call(e.success_scope,""+i.responseText,i,e):e.error&&e.error.call(e.error_scope,o>1e4?"TIMED_OUT":"GENERAL",i,e),i=null):setTimeout(r,10)}var i,o=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async!==!1,e.data=e.data||"",n.fire("beforeInitialize",{settings:e}),i=new XMLHttpRequest){if(i.overrideMimeType&&i.overrideMimeType(e.content_type),i.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(i.withCredentials=!0),e.content_type&&i.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&t.each(e.requestheaders,function(e){i.setRequestHeader(e.key,e.value)}),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i=n.fire("beforeSend",{xhr:i,settings:e}).xhr,i.send(e.data),!e.async)return r();setTimeout(r,10)}}};return t.extend(n,e),n}),r(st,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb t\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(lt,[st,at,m],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(ct,[w],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(ut,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?u+e:i.indexOf(",",u),-1===r||r>i.length?null:(n=i.substring(u,r),u=r+1,n)}var r,i,s,u=0;if(a={},c){o.load(l),i=o.getAttribute(l)||"";do{var d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function r(){var t,n="";if(c){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var i,o,a,s,l,c;try{if(window.localStorage)return localStorage}catch(u){}return l="tinymce",o=document.documentElement,c=!!o.addBehavior,c&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i}),r(dt,[w,f,N,E,m,d],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each(i,function(e,t){a[t]=e}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(ft,[se,m],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t=this,n=t.settings,r,i,o,a;r=n.firstControlClass,i=n.lastControlClass,e.each(function(e){e.classes.remove(r).remove(i).add(n.controlClass),e.visible()&&(o||(o=e),a=e)}),o&&o.classes.add(r),a&&a.classes.add(i)},renderHtml:function(e){var t=this,n="";return t.applyClasses(e.items()),e.items().each(function(e){n+=e.renderHtml()}),n},recalc:function(){},postRender:function(){},isNative:function(){return!1}})}),r(ht,[ft],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'
                '+this._super(e)}})}),r(pt,[De],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t._super(e),e=t.settings,n=t.settings.size,t.on("click mousedown",function(e){e.preventDefault()}),t.on("touchstart",function(e){t.fire("click",e),e.preventDefault()}),e.subtype&&t.classes.add(e.subtype),n&&t.classes.add("btn-"+n),e.icon&&t.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e=this.getEl().firstChild,t;e&&(t=e.style,t.width=t.height="100%"),this._super()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("icon"),i,o=e.state.get("text"),a="";return i=e.settings.image,i?(r="none","string"!=typeof i&&(i=window.getSelection?i[0]:i[1]),i=" style=\"background-image: url('"+i+"')\""):i="",o&&(e.classes.add("btn-has-text"),a=''+e.encode(o)+""),r=e.settings.icon?n+"ico "+n+"i-"+r:"",'
                "},bindStates:function(){function e(e){var i=n("span."+r,t.getEl());e?(i[0]||(n("button:first",t.getEl()).append(''),i=n("span."+r,t.getEl())),i.html(t.encode(e))):i.remove(),t.classes.toggle("btn-has-text",!!e)}var t=this,n=t.$,r=t.classPrefix+"txt";return t.state.on("change:text",function(t){e(t.value)}),t.state.on("change:icon",function(n){var r=n.value,i=t.classPrefix;t.settings.icon=r,r=r?i+"ico "+i+"i-"+t.settings.icon:"";var o=t.getEl().firstChild,a=o.getElementsByTagName("i")[0];r?(a&&a==o.firstChild||(a=document.createElement("i"),o.insertBefore(a,o.firstChild)),a.className=r):a&&o.removeChild(a),e(t.state.get("text"))}),t._super()}})}),r(mt,[xe],function(e){return e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'
                '+(e.settings.html||"")+t.renderHtml(e)+"
                "}})}),r(gt,[De],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'
                '+e.encode(e.state.get("text"))+"
                "},bindStates:function(){function e(e){t.classes.toggle("checked",e),t.aria("checked",e)}var t=this;return t.state.on("change:text",function(e){t.getEl("al").firstChild.data=t.translate(e.value)}),t.state.on("change:checked change:value",function(n){t.fire("change"),e(n.value)}),t.state.on("change:icon",function(e){var n=e.value,r=t.classPrefix;if("undefined"==typeof n)return t.settings.icon;t.settings.icon=n,n=n?r+"ico "+r+"i-"+t.settings.icon:"";var i=t.getEl().firstChild,o=i.getElementsByTagName("i")[0];n?(o&&o==i.firstChild||(o=document.createElement("i"),i.insertBefore(o,i.firstChild)),o.className=n):o&&i.removeChild(o)}),t.state.get("checked")&&e(!0),t._super()}})}),r(vt,[De,be,pe,g],function(e,t,n,r){return e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.classes.add("combobox"),t.subinput=!0,t.ariaTarget="inp",e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){var i=n.target,o=t.getEl();if(r.contains(o,i)||i==o)for(;i&&i!=o;)i.id&&-1!=i.id.indexOf("-open")&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),i=i.parentNode}),t.on("keydown",function(e){"INPUT"==e.target.nodeName&&13==e.keyCode&&t.parents().reverse().each(function(n){var r=t.state.get("value"),i=t.getEl("inp").value;return e.preventDefault(),t.state.set("value",i),r!=i&&t.fire("change"),n.hasEventListeners("submit")&&n.toJSON?(n.fire("submit",{data:n.toJSON()}),!1):void 0})}),t.on("keyup",function(e){"INPUT"==e.target.nodeName&&t.state.set("value",e.target.value)})},showMenu:function(){var e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,t=e.getEl(),i=e.getEl("open"),o=e.layoutRect(),a,s;a=i?o.w-n.getSize(i).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(s=e.layoutRect().h-2+"px"),r(t.firstChild).css({width:a,lineHeight:s}),e._super(),e},postRender:function(){var e=this;return r(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=e.state.get("value")||"",o,a,s="",l="";return"spellcheck"in n&&(l+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+=' maxlength="'+n.maxLength+'"'),n.size&&(l+=' size="'+n.size+'"'),n.subtype&&(l+=' type="'+n.subtype+'"'),e.disabled()&&(l+=' disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico "+r+"i-"+n.icon),a=e.state.get("text"),(o||a)&&(s='
                ",e.classes.add("has-open")),'
                '+s+"
                "},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl("inp").value!=t.value&&(e.getEl("inp").value=t.value)}),e.state.on("change:disabled",function(t){e.getEl("inp").disabled=t.value}),e._super()},remove:function(){r(this.getEl("inp")).off(),this._super()}})}),r(yt,[vt],function(e){return e.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl().getElementsByTagName("i")[0];if(t)try{t.style.background=e}catch(n){}},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}})}),r(bt,[pt,ke],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}})}),r(Ct,[bt,w],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("text"),i=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"",a="";return r&&(e.classes.add("btn-has-text"),a=''+e.encode(r)+""),'
                '},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(xt,[],function(){function e(e){function i(e,i,o){var a,s,l,c,u,d;return a=0,s=0,l=0,e/=255,i/=255,o/=255,u=t(e,t(i,o)),d=n(e,n(i,o)),u==d?(l=u,{h:0,s:0,v:100*l}):(c=e==u?i-o:o==u?e-i:o-e,a=e==u?3:o==u?1:5,a=60*(a-c/(d-u)),s=(d-u)/d,l=d,{h:r(a),s:r(100*s),v:r(100*l)})}function o(e,i,o){var a,s,l,c;if(e=(parseInt(e,10)||0)%360,i=parseInt(i,10)/100,o=parseInt(o,10)/100,i=n(0,t(i,1)),o=n(0,t(o,1)),0===i)return void(d=f=h=r(255*o));switch(a=e/60,s=o*i,l=s*(1-Math.abs(a%2-1)),c=o-s,Math.floor(a)){case 0:d=s,f=l,h=0;break;case 1:d=l,f=s,h=0;break;case 2:d=0,f=s,h=l;break;case 3:d=0,f=l,h=s;break;case 4:d=l,f=0,h=s;break;case 5:d=s,f=0,h=l;break;default:d=f=h=0}d=r(255*(d+c)),f=r(255*(f+c)),h=r(255*(h+c))}function a(){function e(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+e(d)+e(f)+e(h)}function s(){return{r:d,g:f,b:h}}function l(){return i(d,f,h)}function c(e){var t;return"object"==typeof e?"r"in e?(d=e.r,f=e.g,h=e.b):"v"in e&&o(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(d=parseInt(t[1],10),f=parseInt(t[2],10),h=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(d=parseInt(t[1],16),f=parseInt(t[2],16),h=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(d=parseInt(t[1]+t[1],16),f=parseInt(t[2]+t[2],16),h=parseInt(t[3]+t[3],16)),d=0>d?0:d>255?255:d,f=0>f?0:f>255?255:f,h=0>h?0:h>255?255:h,u}var u=this,d=0,f=0,h=0;e&&c(e),u.toRgb=s,u.toHsv=l,u.toHex=a,u.parse=c}var t=Math.min,n=Math.max,r=Math.round;return e}),r(wt,[De,we,pe,xt],function(e,t,n,r){return e.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){function e(e,t){var r=n.getPos(e),i,o;return i=t.pageX-r.x,o=t.pageY-r.y,i=Math.max(0,Math.min(i/e.clientWidth,1)),o=Math.max(0,Math.min(o/e.clientHeight,1)),{x:i,y:o}}function i(e,t){var i=(360-e.h)/360;n.css(d,{top:100*i+"%"}),t||n.css(h,{left:e.s+"%",top:100-e.v+"%"}),f.style.background=new r({s:100,v:100,h:e.h}).toHex(),s.color().parse({s:e.s,v:e.v,h:e.h})}function o(t){var n;n=e(f,t),c.s=100*n.x,c.v=100*(1-n.y),i(c),s.fire("change")}function a(t){var n;n=e(u,t),c=l.toHsv(),c.h=360*(1-n.y),i(c,!0),s.fire("change")}var s=this,l=s.color(),c,u,d,f,h;u=s.getEl("h"),d=s.getEl("hp"),f=s.getEl("sv"),h=s.getEl("svp"),s._repaint=function(){c=l.toHsv(),i(c)},s._super(),s._svdraghelper=new t(s._id+"-sv",{start:o,drag:o}),s._hdraghelper=new t(s._id+"-h",{start:a,drag:a}),s._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){var t=this;return arguments.length?(t.color().parse(e),void(t._rendered&&t._repaint())):t.color().toHex()},color:function(){return this._color||(this._color=new r),this._color},renderHtml:function(){function e(){var e,t,n="",i,a;for(i="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",a=o.split(","),e=0,t=a.length-1;t>e;e++)n+='
                ';return n}var t=this,n=t._id,r=t.classPrefix,i,o="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000",a="background: -ms-linear-gradient(top,"+o+");background: linear-gradient(to bottom,"+o+");";return i='
                '+e()+'
                ','
                '+i+"
                "}})}),r(Nt,[De],function(e){return e.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.classes.add("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.row()[n],index:n})}),t.row(t.settings.row)},focus:function(){var e=this;return e.getEl().firstChild.focus(),e},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){var e=this;return'
                '+e._getDataPathHtml(e.state.get("row"))+"
                "},bindStates:function(){var e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(e){var t=this,n=e||[],r,i,o="",a=t.classPrefix;for(r=0,i=n.length;i>r;r++)o+=(r>0?'":"")+'
                '+n[r].name+"
                ";return o||(o='
                \xa0
                '),o}})}),r(Et,[Nt],function(e){return e.extend({postRender:function(){function e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var t=this,n=t.settings.editor;return n.settings.elementpath!==!1&&(t.on("select",function(e){n.focus(),n.selection.select(this.row()[e.index].element),n.nodeChanged()}),n.on("nodeChange",function(r){for(var i=[],o=r.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=n.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});if(s.isDefaultPrevented()||i.push({name:s.name,element:o[a]}),s.isPropagationStopped())break}t.row(i)})),t._super()}})}),r(_t,[xe],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'
                '+(e.settings.title?'
                '+e.settings.title+"
                ":"")+'
                '+(e.settings.html||"")+t.renderHtml(e)+"
                "}})}),r(St,[xe,_t,m],function(e,t,n){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,r=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),r.each(function(r){var i,o=r.settings.label;o&&(i=new t(n.extend({items:{type:"label",id:r._id+"-l",text:o,flex:0,forId:r._id,disabled:r.disabled()}},e.settings.formItemDefaults)),i.type="formitem",r.aria("labelledby",r._id+"-l"),"undefined"==typeof r.settings.flex&&(r.settings.flex=1),e.replace(r,i),i.add(r))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.fromJSON(e.settings.data)},bindStates:function(){function e(){var e=0,n=[],r,i,o;if(t.settings.labelGapCalc!==!1)for(o="children"==t.settings.labelGapCalc?t.find("formitem"):t.items(),o.filter("formitem").each(function(t){var r=t.items()[0],i=r.getEl().clientWidth;e=i>e?i:e,n.push(r)}),i=t.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=e+i}var t=this;t._super(),t.on("show",e),e()}})}),r(kt,[St],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'
                '+(e.settings.title?''+e.settings.title+"":"")+'
                '+(e.settings.html||"")+t.renderHtml(e)+"
                "}})}),r(Tt,[vt,m],function(e,t){return e.extend({init:function(e){var n=this,r=tinymce.activeEditor,i=r.settings,o,a,s;e.spellcheck=!1,s=i.file_picker_types||i.file_browser_callback_types,s&&(s=t.makeMap(s,/[, ]/)),s&&!s[e.filetype]||(a=i.file_picker_callback,!a||s&&!s[e.filetype]?(a=i.file_browser_callback,!a||s&&!s[e.filetype]||(o=function(){a(n.getEl("inp").id,n.value(),e.filetype,window)})):o=function(){var i=n.fire("beforecall").meta;i=t.extend({filetype:e.filetype},i),a.call(r,function(e,t){n.value(e).fire("change",{meta:t})},n.value(),i)}),o&&(e.icon="browse",e.onaction=o),n._super(e)}})}),r(Rt,[ht],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(At,[ht],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v=[],y,b,C,x,w,N,E,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F,z=Math.max,U=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e.paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,c=a.spacing||0,"row-reversed"!=f&&"column-reverse"!=f||(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(S="y",E="h",_="minH",k="maxH",R="innerH",T="top",A="deltaH",B="contentH",O="left",M="w",D="x",L="innerW", +P="minW",H="right",I="deltaW",F="contentW"):(S="x",E="w",_="minW",k="maxW",R="innerW",T="left",A="deltaW",B="contentW",O="top",M="h",D="y",L="innerH",P="minH",H="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],N=u=0,t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),m=h.settings,g=m.flex,d-=n-1>t?c:0,g>0&&(u+=g,p[k]&&v.push(h),p.flex=g),d-=p[_],y=o[O]+p[P]+o[H],y>N&&(N=y);if(x={},0>d?x[_]=i[_]-d+i[A]:x[_]=i[R]-d+i[A],x[P]=N+i[I],x[B]=i[R]-d,x[F]=N,x.minW=U(x.minW,i.maxW),x.minH=U(x.minH,i.maxH),x.minW=z(x.minW,i.startMinWidth),x.minH=z(x.minH,i.startMinHeight),!i.autoResize||x.minW==i.minW&&x.minH==i.minH){for(C=d/u,t=0,n=v.length;n>t;t++)h=v[t],p=h.layoutRect(),b=p[k],y=p[_]+p.flex*C,y>b?(d-=p[k]-p[_],u-=p.flex,p.flex=0,p.maxFlexSize=b):p.maxFlexSize=0;for(C=d/u,w=o[T],x={},0===u&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],0>w&&(w=o[T])):"justify"==l&&(w=o[T],c=Math.floor(d/(r.length-1)))),x[D]=o[O],t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),y=p.maxFlexSize||p[_],"center"===s?x[D]=Math.round(i[L]/2-p[M]/2):"stretch"===s?(x[M]=z(p[P]||0,i[L]-o[O]-o[H]),x[D]=o[O]):"end"===s&&(x[D]=i[L]-p[M]-o.top),p.flex>0&&(y+=p.flex*C),x[E]=y,x[S]=w,h.layoutRect(x),h.recalc&&h.recalc(),w+=y+c}else if(x.w=x.minW,x.h=x.minH,e.layoutRect(x),this.recalc(e),null===e._lastRect){var W=e.parent();W&&(W._lastRect=null,W.recalc())}}})}),r(Bt,[ft],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}})}),r(Dt,[ye,De,ke,m,w,it,d],function(e,t,n,r,i,o,a){function s(e){e.settings.ui_container&&(a.container=i.DOM.select(e.settings.ui_container)[0])}function l(t){t.on("ScriptsLoaded",function(){t.rtl&&(e.rtl=!0)})}function c(e){function t(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;u(i.parents,function(e){return u(t,function(t){return n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a?!1:void 0}),a?!1:void 0}),r.value(a)})}}function r(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function i(){function t(e){var n=[];if(e)return u(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a,o.cmd=e.cmd}n.push(o)}),n}function n(){var n;return n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var r=0,i=[],o=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return e.on("init",function(){u(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){return this.settings.format?e.formatter.getCssText(this.settings.format):void 0},onPostRender:function(){var t=this;t.parent().on("show",function(){var n,r;n=t.settings.format,n&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),r=t.settings.cmd,r&&t.active(e.queryCommandState(r))})},onclick:function(){this.settings.format&&l(this.settings.format),this.settings.cmd&&e.execCommand(this.settings.cmd)}}}}function o(t){return function(){var n=this;e.formatter?e.formatter.formatChanged(t,function(e){n.active(e)}):e.on("init",function(){e.formatter.formatChanged(t,function(e){n.active(e)})})}}function a(t){return function(){function n(){return e.undoManager?e.undoManager[t]():!1}var r=this;t="redo"==t?"hasRedo":"hasUndo",r.disabled(!n()),e.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){r.disabled(e.readonly||!n())})}}function s(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function l(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}var c;c=i(),u({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:o(n),onclick:function(){l(n)}})}),u({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),u({blockquote:["Blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:o(n)})}),e.addButton("undo",{tooltip:"Undo",onPostRender:a("undo"),cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:a("redo"),cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:a("undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:a("redo"),cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:s,cmd:"mceToggleVisualAid"}),e.addButton("remove",{tooltip:"Remove",icon:"remove",cmd:"Delete"}),u({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:c}),e.addButton("formatselect",function(){var n=[],i=r(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");return u(i,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:i[0][0],values:n,fixedWidth:!0,onselect:l,onPostRender:t(n)}}),e.addButton("fontselect",function(){var n="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",i=[],o=r(e.settings.font_formats||n);return u(o,function(e){i.push({text:{raw:e[0]},value:e[1],textStyle:-1==e[1].indexOf("dings")?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:i,fixedWidth:!0,onPostRender:t(i,"fontname"),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var n=[],r="8pt 10pt 12pt 14pt 18pt 24pt 36pt",i=e.settings.fontsize_formats||r;return u(i.split(" "),function(e){var t=e,r=e,i=e.split("=");i.length>1&&(t=i[0],r=i[1]),n.push({text:t,value:r})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:n,fixedWidth:!0,onPostRender:t(n,"fontsize"),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:c})}var u=r.each;o.on("AddEditor",function(e){var t=e.editor;l(t),c(t),s(t)}),e.translate=function(e){return o.translate(e)},t.tooltips=!a.iOS}),r(Lt,[ht],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,C,x,w,N,E=[],_=[],S,k,T,R,A,B;t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,C=t.alignH||t.align,x=t.alignV||t.align,g=e.paddingBox,A="reverseRows"in t?t.reverseRows:e.isRtl(),C&&"string"==typeof C&&(C=[C]),x&&"string"==typeof x&&(x=[x]);for(d=0;r>d;d++)E.push(0);for(f=0;n>f;f++)_.push(0);for(f=0;n>f;f++)for(d=0;r>d&&(u=i[f*r+d],u);d++)c=u.layoutRect(),S=c.minW,k=c.minH,E[d]=S>E[d]?S:E[d],_[f]=k>_[f]?k:_[f];for(T=o.innerW-g.left-g.right,w=0,d=0;r>d;d++)w+=E[d]+(d>0?y:0),T-=(d>0?y:0)+E[d];for(R=o.innerH-g.top-g.bottom,N=0,f=0;n>f;f++)N+=_[f]+(f>0?b:0),R-=(f>0?b:0)+_[f];if(w+=g.left+g.right,N+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=N+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var D;D="start"==t.packV?0:R>0?Math.floor(R/n):0;var L=0,M=t.flexWidths;if(M)for(d=0;dd;d++)E[d]+=M?M[d]*P:P;for(p=g.top,f=0;n>f;f++){for(h=g.left,s=_[f]+D,d=0;r>d&&(B=A?f*r+r-1-d:f*r+d,u=i[B],u);d++)m=u.settings,c=u.layoutRect(),a=Math.max(E[d],c.startMinWidth),c.x=h,c.y=p,v=m.alignH||(C?C[d]||C[0]:null),"center"==v?c.x=h+a/2-c.w/2:"right"==v?c.x=h+a-c.w:"stretch"==v&&(c.w=a),v=m.alignV||(x?x[d]||x[0]:null),"center"==v?c.y=p+s/2-c.h/2:"bottom"==v?c.y=p+s-c.h:"stretch"==v&&(c.h=s),u.layoutRect(c),h+=a+y,u.recalc&&u.recalc();p+=s+b}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var O=e.parent();O&&(O._lastRect=null,O.recalc())}}})}),r(Mt,[De,u],function(e,t){return e.extend({renderHtml:function(){var e=this;return e.classes.add("iframe"),e.canFocus=!1,''},src:function(e){this.getEl().src=e},html:function(e,n){var r=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=e,n&&n()):t.setTimeout(function(){r.html(e)}),this}})}),r(Pt,[De],function(e){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("infobox"),t.canFocus=!1},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},help:function(e){this.state.set("help",e)},renderHtml:function(){var e=this,t=e.classPrefix;return'
                '+e.encode(e.state.get("text"))+'
                '},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl("body").firstChild.data=e.encode(t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e.state.on("change:help",function(t){e.classes.toggle("has-help",t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r(Ot,[De,pe],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var e=this,n=e._super();if(e.settings.multiline){var r=t.getSize(e.getEl());r.width>n.maxW&&(n.minW=n.maxW,e.classes.add("multiline")),e.getEl().style.width=n.minW+"px",n.startMinH=n.h=n.minH=Math.min(n.maxH,t.getSize(e.getEl()).height)}return n},repaint:function(){var e=this;return e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},renderHtml:function(){var e=this,t,n,r=e.settings.forId;return!r&&(n=e.settings.forName)&&(t=e.getRoot().find("#"+n)[0],t&&(r=t._id)),r?'":''+e.encode(e.state.get("text"))+""},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value)),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r(Ht,[xe],function(e){return e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var t=this;t._super(e),t.classes.add("toolbar")},postRender:function(){var e=this;return e.items().each(function(e){e.classes.add("toolbar-item")}),e._super()}})}),r(It,[Ht],function(e){return e.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}})}),r(Ft,[pt,be,It],function(e,t,n){function r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var i=e.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(){var e=this,n;return e.menu&&e.menu.visible()?e.hideMenu():(e.menu||(n=e.state.get("menu")||[],n.length?n={type:"menu",items:n}:n.type=n.type||"menu",n.renderTo?e.menu=n.parent(e).show().renderTo():e.menu=t.create(n).parent(e).renderTo(),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control.parent()===e.menu&&(t.stopPropagation(),e.focus(),e.hideMenu())}),e.menu.on("select",function(){e.focus()}),e.menu.on("show hide",function(t){t.control==e.menu&&e.activeMenu("show"==t.type),e.aria("expanded","show"==t.type)}).fire("show")),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),void e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]))},hideMenu:function(){var e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var e=this,t=e._id,r=e.classPrefix,i=e.settings.icon,o,a=e.state.get("text"),s="";return o=e.settings.image,o?(i="none","string"!=typeof o&&(o=window.getSelection?o[0]:o[1]),o=" style=\"background-image: url('"+o+"')\""):o="",a&&(e.classes.add("btn-has-text"),s=''+e.encode(a)+""),i=e.settings.icon?r+"ico "+r+"i-"+i:"",e.aria("role",e.parent()instanceof n?"menuitem":"button"),'
                '},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.showMenu(),t.aria&&e.menu.items()[0].focus())}),e.on("mouseenter",function(t){var n=t.control,r=e.parent(),o;n&&r&&n instanceof i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},bindStates:function(){var e=this;return e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}});return i}),r(zt,[De,be,d,u],function(e,t,n,r){return e.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t=this,n;t._super(e),e=t.settings,t.classes.add("menu-item"),e.menu&&t.classes.add("menu-item-expand"),e.preview&&t.classes.add("menu-item-preview"),n=t.state.get("text"),"-"!==n&&"|"!==n||(t.classes.add("menu-item-sep"),t.aria("role","separator"),t.state.set("text","-")),e.selectable&&(t.aria("role","menuitemcheckbox"),t.classes.add("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||t.classes.add("menu-item-normal"),t.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&t.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e=this,n=e.settings,r,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){r=e.menu,r?r.show():(r=n.menu,r.length?r={type:"menu",items:r}:r.type=r.type||"menu",i.settings.itemDefaults&&(r.itemDefaults=i.settings.itemDefaults),r=e.menu=t.create(r).parent(e).renderTo(),r.reflow(),r.on("cancel",function(t){t.stopPropagation(),e.focus(),r.hide()}),r.on("show hide",function(e){e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),r.on("hide",function(t){t.control===r&&e.classes.remove("selected")}),r.submenu=!0),r._parentMenu=i,r.classes.add("menu-sub");var o=r.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);r.moveRel(e.getEl(),o),r.rel=o,o="menu-sub-"+o,r.classes.remove(r._lastRel).add(o),r._lastRel=o,e.classes.add("selected"),e.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){function e(e){var t,r,i={};for(i=n.mac?{alt:"⌥",ctrl:"⌘",shift:"⇧",meta:"⌘"}:{meta:"Ctrl"},e=e.split("+"),t=0;t'+("-"!==a?'\xa0":"")+("-"!==a?''+a+"":"")+(c?'
                '+c+"
                ":"")+(i.menu?'
                ':"")+""},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var i=e.getEl("text");i&&i.setAttribute("style",n)}return e.on("mouseenter click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),r.requestAnimationFrame(function(){e.parent().hideAll()})))}),e._super(),e},hover:function(){var e=this;return e.parent().items().each(function(e){e.classes.remove("selected")}),e.classes.toggle("selected",!0),e},active:function(e){return"undefined"!=typeof e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r(Ut,[g,ye,u],function(e,t,n){return function(r,i){var o=this,a,s=t.classPrefix,l;o.show=function(t,c){function u(){a&&(e(r).append('
                '),c&&c())}return o.hide(),a=!0,t?l=n.setTimeout(u,t):u(),o},o.hide=function(){var e=r.lastChild;return n.clearTimeout(l),e&&-1!=e.className.indexOf("throbber")&&e.parentNode.removeChild(e),a=!1,o}}}),r(Wt,[ke,zt,Ut,m],function(e,t,n,r){return e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){var t=this;if(e.autohide=!0,e.constrainToViewport=!0,"function"==typeof e.items&&(e.itemsFactory=e.items,e.items=[]),e.itemDefaults)for(var n=e.items,i=n.length;i--;)n[i]=r.extend({},e.itemDefaults,n[i]);t._super(e),t.classes.add("menu")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var e=this;e.hideAll(),e.fire("select")},load:function(){function e(){t.throbber&&(t.throbber.hide(),t.throbber=null)}var t=this,r,i;i=t.settings.itemsFactory,i&&(t.throbber||(t.throbber=new n(t.getEl("body"),!0),0===t.items().length?(t.throbber.show(),t.fire("loading")):t.throbber.show(100,function(){t.items().remove(),t.fire("loading")}),t.on("hide close",e)),t.requestTime=r=(new Date).getTime(),t.settings.itemsFactory(function(n){return 0===n.length?void t.hide():void(t.requestTime===r&&(t.getEl().style.width="",t.getEl("body").style.width="",e(),t.items().remove(),t.getEl("body").innerHTML="",t.add(n),t.renderNew(),t.fire("loaded")))}))},hideAll:function(){var e=this;return this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;return n.icon||n.image||n.selectable?(e._hasIcons=!0,!1):void 0}),e.settings.itemsFactory&&e.on("postrender",function(){e.settings.itemsFactory&&e.load()}),e._super()}})}),r(Vt,[Ft,Wt],function(e,t){return e.extend({init:function(e){function t(r){for(var a=0;a0&&(o=r[0].text,n.state.set("value",r[0].value)),n.state.set("menu",r)),n.state.set("text",e.text||o),n.classes.add("listbox"),n.on("select",function(t){var r=t.control;a&&(t.lastControl=a),e.multiple?r.active(!r.active()):n.value(t.control.value()),a=r})},bindStates:function(){function e(e,n){e instanceof t&&e.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}function n(e,t){var r;if(e)for(var i=0;i'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),r(jt,[De],function(e){function t(e){var t="";if(e)for(var n=0;n'+e[n]+"";return t}return e.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var t=this;t._super(e),t.settings.size&&(t.size=t.settings.size),t.settings.options&&(t._options=t.settings.options),t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){return e.toJSON?(n=e,!1):void 0}),t.fire("submit",{data:n.toJSON()}))})},options:function(e){return arguments.length?(this.state.set("options",e),this):this.state.get("options")},renderHtml:function(){var e=this,n,r="";return n=t(e._options),e.size&&(r=' size = "'+e.size+'"'),'"},bindStates:function(){var e=this;return e.state.on("change:options",function(n){e.getEl().innerHTML=t(n.value)}),e._super()}})}),r(Yt,[De,we,pe],function(e,t,n){function r(e,t,n){return t>e&&(e=t),e>n&&(e=n),e}function i(e,t,n){e.setAttribute("aria-"+t,n)}function o(e,t){var r,o,a,s,l,c;"v"==e.settings.orientation?(s="top",a="height",o="h"):(s="left",a="width",o="w"),c=e.getEl("handle"),r=(e.layoutRect()[o]||100)-n.getSize(c)[a],l=r*((t-e._minValue)/(e._maxValue-e._minValue))+"px",c.style[s]=l,c.style.height=e.layoutRect().h+"px",i(c,"valuenow",t),i(c,"valuetext",""+e.settings.previewFilter(t)),i(c,"valuemin",e._minValue),i(c,"valuemax",e._maxValue)}return e.extend({init:function(e){var t=this;e.previewFilter||(e.previewFilter=function(e){return Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"==e.orientation&&t.classes.add("vertical"),t._minValue=e.minValue||0,t._maxValue=e.maxValue||100,t._initValue=t.state.get("value")},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'
                '},reset:function(){this.value(this._initValue).repaint()},postRender:function(){function e(e,t,n){return(n+e)/(t-e)}function i(e,t,n){return n*(t-e)-e}function o(t,n){function o(o){var a;a=s.value(),a=i(t,n,e(t,n,a)+.05*o),a=r(a,t,n),s.value(a),s.fire("dragstart",{value:a}),s.fire("drag",{value:a}),s.fire("dragend",{value:a})}s.on("keydown",function(e){switch(e.keyCode){case 37:case 38:o(-1);break;case 39:case 40:o(1)}})}function a(e,i,o){var a,l,c,p,m;s._dragHelper=new t(s._id,{handle:s._id+"-handle",start:function(e){a=e[u],l=parseInt(s.getEl("handle").style[d],10),c=(s.layoutRect()[h]||100)-n.getSize(o)[f],s.fire("dragstart",{value:m})},drag:function(t){var n=t[u]-a;p=r(l+n,0,c),o.style[d]=p+"px",m=e+p/c*(i-e),s.value(m),s.tooltip().text(""+s.settings.previewFilter(m)).show().moveRel(o,"bc tc"),s.fire("drag",{value:m})},stop:function(){s.tooltip().hide(),s.fire("dragend",{value:m})}})}var s=this,l,c,u,d,f,h;l=s._minValue,c=s._maxValue,"v"==s.settings.orientation?(u="screenY",d="top",f="height",h="h"):(u="screenX",d="left",f="width",h="w"),s._super(),o(l,c,s.getEl("handle")),a(l,c,s.getEl("handle"))},repaint:function(){this._super(),o(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){o(e,t.value)}),e._super()}})}),r(Xt,[De],function(e){return e.extend({renderHtml:function(){var e=this;return e.classes.add("spacer"),e.canFocus=!1,'
                '}})}),r(Kt,[Ft,pe,g],function(e,t,n){return e.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e=this,r=e.getEl(),i=e.layoutRect(),o,a;return e._super(),o=r.firstChild,a=r.lastChild,n(o).css({width:i.w-t.getSize(a).width,height:i.h-2}),n(a).css({height:i.h-2}),e},activeMenu:function(e){var t=this;n(t.getEl().lastChild).toggleClass(t.classPrefix+"active",e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r,i=e.state.get("icon"),o=e.state.get("text"),a="";return r=e.settings.image,r?(i="none","string"!=typeof r&&(r=window.getSelection?r[0]:r[1]),r=" style=\"background-image: url('"+r+"')\""):r="",i=e.settings.icon?n+"ico "+n+"i-"+i:"",o&&(e.classes.add("btn-has-text"),a=''+e.encode(o)+""),'
                '},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(e){var n=e.target;if(e.control==this)for(;n;){if(e.aria&&"down"!=e.aria.key||"BUTTON"==n.nodeName&&-1==n.className.indexOf("open"))return e.stopImmediatePropagation(),void(t&&t.call(this,e));n=n.parentNode}}),delete e.settings.onclick,e._super()}})}),r(Gt,[Bt],function(e){return e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}})}),r(Jt,[Ee,g,pe],function(e,t,n){return e.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var n;this.activeTabId&&(n=this.getEl(this.activeTabId),t(n).removeClass(this.classPrefix+"active"),n.setAttribute("aria-selected","false")),this.activeTabId="t"+e,n=this.getEl("t"+e),n.setAttribute("aria-selected","true"),t(n).addClass(this.classPrefix+"active"),this.items()[e].show().fire("showtab"),this.reflow(),this.items().each(function(t,n){e!=n&&t.hide()})},renderHtml:function(){var e=this,t=e._layout,n="",r=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,i){var o=e._id+"-t"+i;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='"}),'
                '+n+'
                '+t.renderHtml(e)+"
                "},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(t.target.parentNode.id==e._id+"-head")for(var r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var e=this,t,r,i;r=n.getSize(e.getEl("head")).width,r=0>r?0:r,i=0,e.items().each(function(e){r=Math.max(r,e.layoutRect().minW),i=Math.max(i,e.layoutRect().minH)}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=r,e.settings.h=i,e.layoutRect({x:0,y:0,w:r,h:i})});var o=n.getSize(e.getEl("head")).height;return e.settings.minWidth=r,e.settings.minHeight=i+o,t=e._super(),t.deltaH+=o,t.innerH=t.h-t.deltaH,t}})}),r(Qt,[De,m,pe],function(e,t,n){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("textbox"),e.multiline?t.classes.add("multiline"):(t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){return e.toJSON?(n=e,!1):void 0}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){t.state.set("value",e.target.value)}))},repaint:function(){var e=this,t,n,r,i,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e.borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var e=this,r=e.settings,i,o;return i={id:e._id,hidefocus:"1"},t.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(e){i[e]=r[e]}),e.disabled()&&(i.disabled="disabled"),r.subtype&&(i.type=r.subtype),o=n.create(r.multiline?"textarea":"input",i),o.value=e.state.get("value"),o.className=e.classes,o.outerHTML},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var e=this;e.getEl().value=e.state.get("value"),e._super(),e.$el.on("change",function(t){ +e.state.set("value",t.target.value),e.fire("change",t)})},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl().value!=t.value&&(e.getEl().value=t.value)}),e.state.on("change:disabled",function(t){e.getEl().disabled=t.value}),e._super()},remove:function(){this.$el.off(),this._super()}})}),r(Zt,[],function(){var e=this||window,t=function(){return e.tinymce};return"function"==typeof e.define&&(e.define.amd||e.define("ephox/tinymce",[],t)),{}}),a([l,c,u,d,f,h,m,g,v,y,C,w,N,E,T,A,B,D,L,M,P,O,I,F,j,Y,J,Q,oe,ae,se,le,ue,fe,he,ve,ye,be,Ce,xe,we,Ne,Ee,_e,Se,ke,Te,Re,Ae,Be,De,Le,Me,Pe,Ie,ze,tt,nt,rt,it,at,st,lt,ct,ut,dt,ft,ht,pt,mt,gt,vt,yt,bt,Ct,xt,wt,Nt,Et,_t,St,kt,Tt,Rt,At,Bt,Dt,Lt,Mt,Pt,Ot,Ht,It,Ft,zt,Ut,Wt,Vt,$t,qt,jt,Yt,Xt,Kt,Gt,Jt,Qt])}(this); \ No newline at end of file diff --git a/wp/wp-includes/js/tinymce/wp-tinymce.js.gz b/wp/wp-includes/js/tinymce/wp-tinymce.js.gz index 20d22c43dc4fe82a5715d371d80b7c78190785c5..4d5ca926beeeee8d56b508b394d9709a65f4d206 100644 GIT binary patch literal 171848 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­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

                81e39K);|gcS>zX^Y}6l*fmJ|Lnr$rg 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ʏE8^Ibn-3x~v#18+ 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 literal 170397 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 z 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 BhTQ-F diff --git a/wp/wp-includes/js/twemoji.js b/wp/wp-includes/js/twemoji.js index b268d7e4..9033d7f6 100644 --- a/wp/wp-includes/js/twemoji.js +++ b/wp/wp-includes/js/twemoji.js @@ -225,7 +225,7 @@ var twemoji = (function ( // RegExp based on emoji's official Unicode standards // http://www.unicode.org/Public/UNIDATA/EmojiSources.txt - re = /\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|(?:[\u0023\u002a\u0030-\u0039])\ufe0f?\u20e3|(?:(?:\ud83c\udfcb|\ud83d[\udd75\udd90]|[\u261d\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0]|\ud83e[\udd18-\udd1e\udd26\udd30\udd33-\udd39\udd3c-\udd3e]|[\u270a\u270b])(?:\ud83c[\udffb-\udfff]|)|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\udecc\uded0-\uded2\udeeb\udeec\udef4-\udef6]|\ud83e[\udd10-\udd17\udd20-\udd25\udd27\udd3a\udd40-\udd45\udd47-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]|[\u23e9-\u23ec\u23f0\u23f3\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a]|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcc-\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd74\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u00a9\u00ae\u203c\u2049\u2122\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2694\u2696\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f7\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))/g, + re = /\ud83d[\udc68-\udc69](?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92])|(?:\ud83c[\udfcb\udfcc]|\ud83d\udd75|\u26f9)(?:\ufe0f|\ud83c[\udffb-\udfff])\u200d[\u2640\u2642]\ufe0f|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd37-\udd39\udd3d\udd3e])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|(?:[\u0023\u002a\u0030-\u0039])\ufe0f?\u20e3|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd18-\udd1c\udd1e\udd26\udd30\udd33-\udd39\udd3d\udd3e]|[\u270a\u270b])(?:\ud83c[\udffb-\udfff]|)|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud800\udc00|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\udeeb\udeec\udef4-\udef6]|\ud83e[\udd10-\udd17\udd1d\udd20-\udd25\udd27\udd3a\udd3c\udd40-\udd45\udd47-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]|[\u23e9-\u23ec\u23f0\u23f3\u2640\u2642\u2695\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a]|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u00a9\u00ae\u203c\u2049\u2122\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2694\u2696\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))/g, // avoid runtime RegExp creation for not so smart, // not JIT based, and old browsers / engines diff --git a/wp/wp-includes/js/twemoji.min.js b/wp/wp-includes/js/twemoji.min.js index 78c0f6a6..5fe4fe5e 100644 --- a/wp/wp-includes/js/twemoji.min.js +++ b/wp/wp-includes/js/twemoji.min.js @@ -1 +1 @@ -var twemoji=function(){"use strict";function a(a){return document.createTextNode(a)}function b(a){return a.replace(u,h)}function c(a,b){return"".concat(b.base,b.size,"/",a,b.ext)}function d(a,b){for(var c,e,f=a.childNodes,g=f.length;g--;)c=f[g],e=c.nodeType,3===e?b.push(c):1!==e||v.test(c.nodeName)||d(c,b);return b}function e(a){return o(a.indexOf(t)<0?a.replace(s,""):a)}function f(b,c){for(var f,g,h,i,j,k,l,m,n,o,p,q,s,t=d(b,[]),u=t.length;u--;){for(h=!1,i=document.createDocumentFragment(),j=t[u],k=j.nodeValue,m=0;l=r.exec(k);){if(n=l.index,n!==m&&i.appendChild(a(k.slice(m,n))),p=l[0],q=e(p),m=n+p.length,s=c.callback(q,c)){o=new Image,o.onerror=c.onerror,o.setAttribute("draggable","false"),f=c.attributes(p,q);for(g in f)f.hasOwnProperty(g)&&0!==g.indexOf("on")&&!o.hasAttribute(g)&&o.setAttribute(g,f[g]);o.className=c.className,o.alt=p,o.src=s,h=!0,i.appendChild(o)}o||i.appendChild(a(p)),o=null}h&&(m")}return g})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return b<65536?w(b):(b-=65536,w(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className,onerror:b.onerror||p.onerror})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f":">","'":"'",'"':"""},r=/\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|(?:[\u0023\u002a\u0030-\u0039])\ufe0f?\u20e3|(?:(?:\ud83c\udfcb|\ud83d[\udd75\udd90]|[\u261d\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0]|\ud83e[\udd18-\udd1e\udd26\udd30\udd33-\udd39\udd3c-\udd3e]|[\u270a\u270b])(?:\ud83c[\udffb-\udfff]|)|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\udecc\uded0-\uded2\udeeb\udeec\udef4-\udef6]|\ud83e[\udd10-\udd17\udd20-\udd25\udd27\udd3a\udd40-\udd45\udd47-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]|[\u23e9-\u23ec\u23f0\u23f3\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a]|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcc-\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd74\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u00a9\u00ae\u203c\u2049\u2122\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2694\u2696\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f7\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))/g,s=/\uFE0F/g,t=String.fromCharCode(8205),u=/[&<>'"]/g,v=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,w=String.fromCharCode;return p}(); \ No newline at end of file +var twemoji=function(){"use strict";function a(a){return document.createTextNode(a)}function b(a){return a.replace(u,h)}function c(a,b){return"".concat(b.base,b.size,"/",a,b.ext)}function d(a,b){for(var c,e,f=a.childNodes,g=f.length;g--;)c=f[g],e=c.nodeType,3===e?b.push(c):1!==e||v.test(c.nodeName)||d(c,b);return b}function e(a){return o(a.indexOf(t)<0?a.replace(s,""):a)}function f(b,c){for(var f,g,h,i,j,k,l,m,n,o,p,q,s,t=d(b,[]),u=t.length;u--;){for(h=!1,i=document.createDocumentFragment(),j=t[u],k=j.nodeValue,m=0;l=r.exec(k);){if(n=l.index,n!==m&&i.appendChild(a(k.slice(m,n))),p=l[0],q=e(p),m=n+p.length,s=c.callback(q,c)){o=new Image,o.onerror=c.onerror,o.setAttribute("draggable","false"),f=c.attributes(p,q);for(g in f)f.hasOwnProperty(g)&&0!==g.indexOf("on")&&!o.hasAttribute(g)&&o.setAttribute(g,f[g]);o.className=c.className,o.alt=p,o.src=s,h=!0,i.appendChild(o)}o||i.appendChild(a(p)),o=null}h&&(m")}return g})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return b<65536?w(b):(b-=65536,w(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className,onerror:b.onerror||p.onerror})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f":">","'":"'",'"':"""},r=/\ud83d[\udc68-\udc69](?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92])|(?:\ud83c[\udfcb\udfcc]|\ud83d\udd75|\u26f9)(?:\ufe0f|\ud83c[\udffb-\udfff])\u200d[\u2640\u2642]\ufe0f|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd37-\udd39\udd3d\udd3e])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|(?:[\u0023\u002a\u0030-\u0039])\ufe0f?\u20e3|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd18-\udd1c\udd1e\udd26\udd30\udd33-\udd39\udd3d\udd3e]|[\u270a\u270b])(?:\ud83c[\udffb-\udfff]|)|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud800\udc00|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\udeeb\udeec\udef4-\udef6]|\ud83e[\udd10-\udd17\udd1d\udd20-\udd25\udd27\udd3a\udd3c\udd40-\udd45\udd47-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]|[\u23e9-\u23ec\u23f0\u23f3\u2640\u2642\u2695\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a]|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u00a9\u00ae\u203c\u2049\u2122\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2694\u2696\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))/g,s=/\uFE0F/g,t=String.fromCharCode(8205),u=/[&<>'"]/g,v=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,w=String.fromCharCode;return p}(); \ No newline at end of file diff --git a/wp/wp-includes/js/utils.js b/wp/wp-includes/js/utils.js index 60c27462..d8fa7d8d 100644 --- a/wp/wp-includes/js/utils.js +++ b/wp/wp-includes/js/utils.js @@ -110,7 +110,7 @@ var wpCookies = { if ( typeof( expires ) === 'object' && expires.toGMTString ) { expires = expires.toGMTString(); } else if ( parseInt( expires, 10 ) ) { - d.setTime( d.getTime() + ( parseInt( expires, 10 ) * 1000 ) ); // time must be in miliseconds + d.setTime( d.getTime() + ( parseInt( expires, 10 ) * 1000 ) ); // time must be in milliseconds expires = d.toGMTString(); } else { expires = ''; diff --git a/wp/wp-includes/js/wp-ajax-response.js b/wp/wp-includes/js/wp-ajax-response.js index d3563210..50c66525 100644 --- a/wp/wp-includes/js/wp-ajax-response.js +++ b/wp/wp-includes/js/wp-ajax-response.js @@ -56,7 +56,7 @@ var wpAjax = jQuery.extend( { selector = jQuery( selector ); return !wpAjax.invalidateForm( selector.find('.form-required').filter( function() { return jQuery('input:visible', this).val() === ''; } ) ).length; } -}, wpAjax || { noPerm: 'You do not have permission to do that.', broken: 'An unidentified error has occurred.' } ); +}, wpAjax || { noPerm: 'Sorry, you are not allowed to do that.', broken: 'An unidentified error has occurred.' } ); // Basic form validation jQuery(document).ready( function($){ diff --git a/wp/wp-includes/js/wp-ajax-response.min.js b/wp/wp-includes/js/wp-ajax-response.min.js index 51a3503c..5f1ed664 100644 --- a/wp/wp-includes/js/wp-ajax-response.min.js +++ b/wp/wp-includes/js/wp-ajax-response.min.js @@ -1 +1 @@ -var wpAjax=jQuery.extend({unserialize:function(a){var b,c,d,e,f={};if(!a)return f;b=a.split("?"),b[1]&&(a=b[1]),c=a.split("&");for(d in c)jQuery.isFunction(c.hasOwnProperty)&&!c.hasOwnProperty(d)||(e=c[d].split("="),f[e[0]]=e[1]);return f},parseAjaxResponse:function(a,b,c){var d={},e=jQuery("#"+b).empty(),f="";return a&&"object"==typeof a&&a.getElementsByTagName("wp_ajax")?(d.responses=[],d.errors=!1,jQuery("response",a).each(function(){var b,e=jQuery(this),g=jQuery(this.firstChild);b={action:e.attr("action"),what:g.get(0).nodeName,id:g.attr("id"),oldId:g.attr("old_id"),position:g.attr("position")},b.data=jQuery("response_data",g).text(),b.supplemental={},jQuery("supplemental",g).children().each(function(){b.supplemental[this.nodeName]=jQuery(this).text()}).length||(b.supplemental=!1),b.errors=[],jQuery("wp_error",g).each(function(){var e,g,h,i=jQuery(this).attr("code");e={code:i,message:this.firstChild.nodeValue,data:!1},g=jQuery('wp_error_data[code="'+i+'"]',a),g&&(e.data=g.get()),h=jQuery("form-field",g).text(),h&&(i=h),c&&wpAjax.invalidateForm(jQuery("#"+c+' :input[name="'+i+'"]').parents(".form-field:first")),f+="

                "+e.message+"

                ",b.errors.push(e),d.errors=!0}).length||(b.errors=!1),d.responses.push(b)}),f.length&&e.html('
                '+f+"
                "),d):isNaN(a)?!e.html('

                '+a+"

                "):(a=parseInt(a,10),-1==a?!e.html('

                '+wpAjax.noPerm+"

                "):0!==a||!e.html('

                '+wpAjax.broken+"

                "))},invalidateForm:function(a){return jQuery(a).addClass("form-invalid").find("input").one("change wp-check-valid-field",function(){jQuery(this).closest(".form-invalid").removeClass("form-invalid")})},validateForm:function(a){return a=jQuery(a),!wpAjax.invalidateForm(a.find(".form-required").filter(function(){return""===jQuery("input:visible",this).val()})).length}},wpAjax||{noPerm:"You do not have permission to do that.",broken:"An unidentified error has occurred."});jQuery(document).ready(function(a){a("form.validate").submit(function(){return wpAjax.validateForm(a(this))})}); \ No newline at end of file +var wpAjax=jQuery.extend({unserialize:function(a){var b,c,d,e,f={};if(!a)return f;b=a.split("?"),b[1]&&(a=b[1]),c=a.split("&");for(d in c)jQuery.isFunction(c.hasOwnProperty)&&!c.hasOwnProperty(d)||(e=c[d].split("="),f[e[0]]=e[1]);return f},parseAjaxResponse:function(a,b,c){var d={},e=jQuery("#"+b).empty(),f="";return a&&"object"==typeof a&&a.getElementsByTagName("wp_ajax")?(d.responses=[],d.errors=!1,jQuery("response",a).each(function(){var b,e=jQuery(this),g=jQuery(this.firstChild);b={action:e.attr("action"),what:g.get(0).nodeName,id:g.attr("id"),oldId:g.attr("old_id"),position:g.attr("position")},b.data=jQuery("response_data",g).text(),b.supplemental={},jQuery("supplemental",g).children().each(function(){b.supplemental[this.nodeName]=jQuery(this).text()}).length||(b.supplemental=!1),b.errors=[],jQuery("wp_error",g).each(function(){var e,g,h,i=jQuery(this).attr("code");e={code:i,message:this.firstChild.nodeValue,data:!1},g=jQuery('wp_error_data[code="'+i+'"]',a),g&&(e.data=g.get()),h=jQuery("form-field",g).text(),h&&(i=h),c&&wpAjax.invalidateForm(jQuery("#"+c+' :input[name="'+i+'"]').parents(".form-field:first")),f+="

                "+e.message+"

                ",b.errors.push(e),d.errors=!0}).length||(b.errors=!1),d.responses.push(b)}),f.length&&e.html('
                '+f+"
                "),d):isNaN(a)?!e.html('

                '+a+"

                "):(a=parseInt(a,10),-1==a?!e.html('

                '+wpAjax.noPerm+"

                "):0!==a||!e.html('

                '+wpAjax.broken+"

                "))},invalidateForm:function(a){return jQuery(a).addClass("form-invalid").find("input").one("change wp-check-valid-field",function(){jQuery(this).closest(".form-invalid").removeClass("form-invalid")})},validateForm:function(a){return a=jQuery(a),!wpAjax.invalidateForm(a.find(".form-required").filter(function(){return""===jQuery("input:visible",this).val()})).length}},wpAjax||{noPerm:"Sorry, you are not allowed to do that.",broken:"An unidentified error has occurred."});jQuery(document).ready(function(a){a("form.validate").submit(function(){return wpAjax.validateForm(a(this))})}); \ No newline at end of file diff --git a/wp/wp-includes/js/wp-api.js b/wp/wp-includes/js/wp-api.js new file mode 100644 index 00000000..a14d21fa --- /dev/null +++ b/wp/wp-includes/js/wp-api.js @@ -0,0 +1,1337 @@ +(function( window, undefined ) { + + 'use strict'; + + /** + * Initialise the WP_API. + */ + function WP_API() { + this.models = {}; + this.collections = {}; + this.views = {}; + } + + window.wp = window.wp || {}; + wp.api = wp.api || new WP_API(); + wp.api.versionString = wp.api.versionString || 'wp/v2/'; + + // Alias _includes to _.contains, ensuring it is available if lodash is used. + if ( ! _.isFunction( _.includes ) && _.isFunction( _.contains ) ) { + _.includes = _.contains; + } + +})( window ); + +(function( window, undefined ) { + + 'use strict'; + + var pad, r; + + window.wp = window.wp || {}; + wp.api = wp.api || {}; + wp.api.utils = wp.api.utils || {}; + + /** + * ECMAScript 5 shim, adapted from MDN. + * @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString + */ + if ( ! Date.prototype.toISOString ) { + pad = function( number ) { + r = String( number ); + if ( 1 === r.length ) { + r = '0' + r; + } + + return r; + }; + + Date.prototype.toISOString = function() { + return this.getUTCFullYear() + + '-' + pad( this.getUTCMonth() + 1 ) + + '-' + pad( this.getUTCDate() ) + + 'T' + pad( this.getUTCHours() ) + + ':' + pad( this.getUTCMinutes() ) + + ':' + pad( this.getUTCSeconds() ) + + '.' + String( ( this.getUTCMilliseconds() / 1000 ).toFixed( 3 ) ).slice( 2, 5 ) + + 'Z'; + }; + } + + /** + * Parse date into ISO8601 format. + * + * @param {Date} date. + */ + wp.api.utils.parseISO8601 = function( date ) { + var timestamp, struct, i, k, + minutesOffset = 0, + numericKeys = [ 1, 4, 5, 6, 7, 10, 11 ]; + + // ES5 §15.9.4.2 states that the string should attempt to be parsed as a Date Time String Format string + // before falling back to any implementation-specific date parsing, so that’s what we do, even if native + // implementations could be faster. + // 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm + if ( ( struct = /^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec( date ) ) ) { + + // Avoid NaN timestamps caused by “undefined” values being passed to Date.UTC. + for ( i = 0; ( k = numericKeys[i] ); ++i ) { + struct[k] = +struct[k] || 0; + } + + // Allow undefined days and months. + struct[2] = ( +struct[2] || 1 ) - 1; + struct[3] = +struct[3] || 1; + + if ( 'Z' !== struct[8] && undefined !== struct[9] ) { + minutesOffset = struct[10] * 60 + struct[11]; + + if ( '+' === struct[9] ) { + minutesOffset = 0 - minutesOffset; + } + } + + timestamp = Date.UTC( struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7] ); + } else { + timestamp = Date.parse ? Date.parse( date ) : NaN; + } + + return timestamp; + }; + + /** + * Helper function for getting the root URL. + * @return {[type]} [description] + */ + wp.api.utils.getRootUrl = function() { + return window.location.origin ? + window.location.origin + '/' : + window.location.protocol + '/' + window.location.host + '/'; + }; + + /** + * Helper for capitalizing strings. + */ + wp.api.utils.capitalize = function( str ) { + if ( _.isUndefined( str ) ) { + return str; + } + return str.charAt( 0 ).toUpperCase() + str.slice( 1 ); + }; + + /** + * Extract a route part based on negative index. + * + * @param {string} route The endpoint route. + * @param {int} part The number of parts from the end of the route to retrieve. Default 1. + * Example route `/a/b/c`: part 1 is `c`, part 2 is `b`, part 3 is `a`. + */ + wp.api.utils.extractRoutePart = function( route, part ) { + var routeParts; + + part = part || 1; + + // Remove versions string from route to avoid returning it. + route = route.replace( wp.api.versionString, '' ); + routeParts = route.split( '/' ).reverse(); + if ( _.isUndefined( routeParts[ --part ] ) ) { + return ''; + } + return routeParts[ part ]; + }; + + /** + * Extract a parent name from a passed route. + * + * @param {string} route The route to extract a name from. + */ + wp.api.utils.extractParentName = function( route ) { + var name, + lastSlash = route.lastIndexOf( '_id>[\\d]+)/' ); + + if ( lastSlash < 0 ) { + return ''; + } + name = route.substr( 0, lastSlash - 1 ); + name = name.split( '/' ); + name.pop(); + name = name.pop(); + return name; + }; + + /** + * Add args and options to a model prototype from a route's endpoints. + * + * @param {array} routeEndpoints Array of route endpoints. + * @param {Object} modelInstance An instance of the model (or collection) + * to add the args to. + */ + wp.api.utils.decorateFromRoute = function( routeEndpoints, modelInstance ) { + + /** + * Build the args based on route endpoint data. + */ + _.each( routeEndpoints, function( routeEndpoint ) { + + // Add post and edit endpoints as model args. + if ( _.includes( routeEndpoint.methods, 'POST' ) || _.includes( routeEndpoint.methods, 'PUT' ) ) { + + // Add any non empty args, merging them into the args object. + if ( ! _.isEmpty( routeEndpoint.args ) ) { + + // Set as default if no args yet. + if ( _.isEmpty( modelInstance.prototype.args ) ) { + modelInstance.prototype.args = routeEndpoint.args; + } else { + + // We already have args, merge these new args in. + modelInstance.prototype.args = _.union( routeEndpoint.args, modelInstance.prototype.defaults ); + } + } + } else { + + // Add GET method as model options. + if ( _.includes( routeEndpoint.methods, 'GET' ) ) { + + // Add any non empty args, merging them into the defaults object. + if ( ! _.isEmpty( routeEndpoint.args ) ) { + + // Set as default if no defaults yet. + if ( _.isEmpty( modelInstance.prototype.options ) ) { + modelInstance.prototype.options = routeEndpoint.args; + } else { + + // We already have options, merge these new args in. + modelInstance.prototype.options = _.union( routeEndpoint.args, modelInstance.prototype.options ); + } + } + + } + } + + } ); + + }; + + /** + * Add mixins and helpers to models depending on their defaults. + * + * @param {Backbone Model} model The model to attach helpers and mixins to. + * @param {string} modelClassName The classname of the constructed model. + * @param {Object} loadingObjects An object containing the models and collections we are building. + */ + wp.api.utils.addMixinsAndHelpers = function( model, modelClassName, loadingObjects ) { + + var hasDate = false, + + /** + * Array of parseable dates. + * + * @type {string[]}. + */ + parseableDates = [ 'date', 'modified', 'date_gmt', 'modified_gmt' ], + + /** + * Mixin for all content that is time stamped. + * + * This mixin converts between mysql timestamps and JavaScript Dates when syncing a model + * to or from the server. For example, a date stored as `2015-12-27T21:22:24` on the server + * gets expanded to `Sun Dec 27 2015 14:22:24 GMT-0700 (MST)` when the model is fetched. + * + * @type {{toJSON: toJSON, parse: parse}}. + */ + TimeStampedMixin = { + + /** + * Prepare a JavaScript Date for transmitting to the server. + * + * This helper function accepts a field and Date object. It converts the passed Date + * to an ISO string and sets that on the model field. + * + * @param {Date} date A JavaScript date object. WordPress expects dates in UTC. + * @param {string} field The date field to set. One of 'date', 'date_gmt', 'date_modified' + * or 'date_modified_gmt'. Optional, defaults to 'date'. + */ + setDate: function( date, field ) { + var theField = field || 'date'; + + // Don't alter non parsable date fields. + if ( _.indexOf( parseableDates, theField ) < 0 ) { + return false; + } + + this.set( theField, date.toISOString() ); + }, + + /** + * Get a JavaScript Date from the passed field. + * + * WordPress returns 'date' and 'date_modified' in the timezone of the server as well as + * UTC dates as 'date_gmt' and 'date_modified_gmt'. Draft posts do not include UTC dates. + * + * @param {string} field The date field to set. One of 'date', 'date_gmt', 'date_modified' + * or 'date_modified_gmt'. Optional, defaults to 'date'. + */ + getDate: function( field ) { + var theField = field || 'date', + theISODate = this.get( theField ); + + // Only get date fields and non null values. + if ( _.indexOf( parseableDates, theField ) < 0 || _.isNull( theISODate ) ) { + return false; + } + + return new Date( wp.api.utils.parseISO8601( theISODate ) ); + } + }, + + /** + * Build a helper function to retrieve related model. + * + * @param {string} parentModel The parent model. + * @param {int} modelId The model ID if the object to request + * @param {string} modelName The model name to use when constructing the model. + * @param {string} embedSourcePoint Where to check the embedds object for _embed data. + * @param {string} embedCheckField Which model field to check to see if the model has data. + * + * @return {Deferred.promise} A promise which resolves to the constructed model. + */ + buildModelGetter = function( parentModel, modelId, modelName, embedSourcePoint, embedCheckField ) { + var getModel, embeddeds, attributes, deferred; + + deferred = jQuery.Deferred(); + embeddeds = parentModel.get( '_embedded' ) || {}; + + // Verify that we have a valid object id. + if ( ! _.isNumber( modelId ) || 0 === modelId ) { + deferred.reject(); + return deferred; + } + + // If we have embedded object data, use that when constructing the getModel. + if ( embeddeds[ embedSourcePoint ] ) { + attributes = _.findWhere( embeddeds[ embedSourcePoint ], { id: modelId } ); + } + + // Otherwise use the modelId. + if ( ! attributes ) { + attributes = { id: modelId }; + } + + // Create the new getModel model. + getModel = new wp.api.models[ modelName ]( attributes ); + + // If we didn’t have an embedded getModel, fetch the getModel data. + if ( ! getModel.get( embedCheckField ) ) { + getModel.fetch( { success: function( getModel ) { + deferred.resolve( getModel ); + } } ); + } else { + deferred.resolve( getModel ); + } + + // Return a promise. + return deferred.promise(); + }, + + /** + * Build a helper to retrieve a collection. + * + * @param {string} parentModel The parent model. + * @param {string} collectionName The name to use when constructing the collection. + * @param {string} embedSourcePoint Where to check the embedds object for _embed data. + * @param {string} embedIndex An addiitonal optional index for the _embed data. + * + * @return {Deferred.promise} A promise which resolves to the constructed collection. + */ + buildCollectionGetter = function( parentModel, collectionName, embedSourcePoint, embedIndex ) { + /** + * Returns a promise that resolves to the requested collection + * + * Uses the embedded data if available, otherwises fetches the + * data from the server. + * + * @return {Deferred.promise} promise Resolves to a wp.api.collections[ collectionName ] + * collection. + */ + var postId, embeddeds, getObjects, + classProperties = '', + properties = '', + deferred = jQuery.Deferred(); + + postId = parentModel.get( 'id' ); + embeddeds = parentModel.get( '_embedded' ) || {}; + + // Verify that we have a valid post id. + if ( ! _.isNumber( postId ) || 0 === postId ) { + deferred.reject(); + return deferred; + } + + // If we have embedded getObjects data, use that when constructing the getObjects. + if ( ! _.isUndefined( embedSourcePoint ) && ! _.isUndefined( embeddeds[ embedSourcePoint ] ) ) { + + // Some embeds also include an index offset, check for that. + if ( _.isUndefined( embedIndex ) ) { + + // Use the embed source point directly. + properties = embeddeds[ embedSourcePoint ]; + } else { + + // Add the index to the embed source point. + properties = embeddeds[ embedSourcePoint ][ embedIndex ]; + } + } else { + + // Otherwise use the postId. + classProperties = { parent: postId }; + } + + // Create the new getObjects collection. + getObjects = new wp.api.collections[ collectionName ]( properties, classProperties ); + + // If we didn’t have embedded getObjects, fetch the getObjects data. + if ( _.isUndefined( getObjects.models[0] ) ) { + getObjects.fetch( { success: function( getObjects ) { + + // Add a helper 'parent_post' attribute onto the model. + setHelperParentPost( getObjects, postId ); + deferred.resolve( getObjects ); + } } ); + } else { + + // Add a helper 'parent_post' attribute onto the model. + setHelperParentPost( getObjects, postId ); + deferred.resolve( getObjects ); + } + + // Return a promise. + return deferred.promise(); + + }, + + /** + * Set the model post parent. + */ + setHelperParentPost = function( collection, postId ) { + + // Attach post_parent id to the collection. + _.each( collection.models, function( model ) { + model.set( 'parent_post', postId ); + } ); + }, + + /** + * Add a helper function to handle post Meta. + */ + MetaMixin = { + getMeta: function() { + return buildCollectionGetter( this, 'PostMeta', 'https://api.w.org/meta' ); + } + }, + + /** + * Add a helper function to handle post Revisions. + */ + RevisionsMixin = { + getRevisions: function() { + return buildCollectionGetter( this, 'PostRevisions' ); + } + }, + + /** + * Add a helper function to handle post Tags. + */ + TagsMixin = { + + /** + * Get the tags for a post. + * + * @return {Deferred.promise} promise Resolves to an array of tags. + */ + getTags: function() { + var tagIds = this.get( 'tags' ), + tags = new wp.api.collections.Tags(); + + // Resolve with an empty array if no tags. + if ( _.isEmpty( tagIds ) ) { + return jQuery.Deferred().resolve( [] ); + } + + return tags.fetch( { data: { include: tagIds } } ); + }, + + /** + * Set the tags for a post. + * + * Accepts an array of tag slugs, or a Tags collection. + * + * @param {array|Backbone.Collection} tags The tags to set on the post. + * + */ + setTags: function( tags ) { + var allTags, newTag, + self = this, + newTags = []; + + if ( _.isString( tags ) ) { + return false; + } + + // If this is an array of slugs, build a collection. + if ( _.isArray( tags ) ) { + + // Get all the tags. + allTags = new wp.api.collections.Tags(); + allTags.fetch( { + data: { per_page: 100 }, + success: function( alltags ) { + + // Find the passed tags and set them up. + _.each( tags, function( tag ) { + newTag = new wp.api.models.Tag( alltags.findWhere( { slug: tag } ) ); + + // Tie the new tag to the post. + newTag.set( 'parent_post', self.get( 'id' ) ); + + // Add the new tag to the collection. + newTags.push( newTag ); + } ); + tags = new wp.api.collections.Tags( newTags ); + self.setTagsWithCollection( tags ); + } + } ); + + } else { + this.setTagsWithCollection( tags ); + } + }, + + /** + * Set the tags for a post. + * + * Accepts a Tags collection. + * + * @param {array|Backbone.Collection} tags The tags to set on the post. + * + */ + setTagsWithCollection: function( tags ) { + + // Pluck out the category ids. + this.set( 'tags', tags.pluck( 'id' ) ); + return this.save(); + } + }, + + /** + * Add a helper function to handle post Categories. + */ + CategoriesMixin = { + + /** + * Get a the categories for a post. + * + * @return {Deferred.promise} promise Resolves to an array of categories. + */ + getCategories: function() { + var categoryIds = this.get( 'categories' ), + categories = new wp.api.collections.Categories(); + + // Resolve with an empty array if no categories. + if ( _.isEmpty( categoryIds ) ) { + return jQuery.Deferred().resolve( [] ); + } + + return categories.fetch( { data: { include: categoryIds } } ); + }, + + /** + * Set the categories for a post. + * + * Accepts an array of category slugs, or a Categories collection. + * + * @param {array|Backbone.Collection} categories The categories to set on the post. + * + */ + setCategories: function( categories ) { + var allCategories, newCategory, + self = this, + newCategories = []; + + if ( _.isString( categories ) ) { + return false; + } + + // If this is an array of slugs, build a collection. + if ( _.isArray( categories ) ) { + + // Get all the categories. + allCategories = new wp.api.collections.Categories(); + allCategories.fetch( { + data: { per_page: 100 }, + success: function( allcats ) { + + // Find the passed categories and set them up. + _.each( categories, function( category ) { + newCategory = new wp.api.models.Category( allcats.findWhere( { slug: category } ) ); + + // Tie the new category to the post. + newCategory.set( 'parent_post', self.get( 'id' ) ); + + // Add the new category to the collection. + newCategories.push( newCategory ); + } ); + categories = new wp.api.collections.Categories( newCategories ); + self.setCategoriesWithCollection( categories ); + } + } ); + + } else { + this.setCategoriesWithCollection( categories ); + } + + }, + + /** + * Set the categories for a post. + * + * Accepts Categories collection. + * + * @param {array|Backbone.Collection} categories The categories to set on the post. + * + */ + setCategoriesWithCollection: function( categories ) { + + // Pluck out the category ids. + this.set( 'categories', categories.pluck( 'id' ) ); + return this.save(); + } + }, + + /** + * Add a helper function to retrieve the author user model. + */ + AuthorMixin = { + getAuthorUser: function() { + return buildModelGetter( this, this.get( 'author' ), 'User', 'author', 'name' ); + } + }, + + /** + * Add a helper function to retrieve the featured media. + */ + FeaturedMediaMixin = { + getFeaturedMedia: function() { + return buildModelGetter( this, this.get( 'featured_media' ), 'Media', 'wp:featuredmedia', 'source_url' ); + } + }; + + // Exit if we don't have valid model defaults. + if ( _.isUndefined( model.prototype.args ) ) { + return model; + } + + // Go thru the parsable date fields, if our model contains any of them it gets the TimeStampedMixin. + _.each( parseableDates, function( theDateKey ) { + if ( ! _.isUndefined( model.prototype.args[ theDateKey ] ) ) { + hasDate = true; + } + } ); + + // Add the TimeStampedMixin for models that contain a date field. + if ( hasDate ) { + model = model.extend( TimeStampedMixin ); + } + + // Add the AuthorMixin for models that contain an author. + if ( ! _.isUndefined( model.prototype.args.author ) ) { + model = model.extend( AuthorMixin ); + } + + // Add the FeaturedMediaMixin for models that contain a featured_media. + if ( ! _.isUndefined( model.prototype.args.featured_media ) ) { + model = model.extend( FeaturedMediaMixin ); + } + + // Add the CategoriesMixin for models that support categories collections. + if ( ! _.isUndefined( model.prototype.args.categories ) ) { + model = model.extend( CategoriesMixin ); + } + + // Add the MetaMixin for models that support meta collections. + if ( ! _.isUndefined( loadingObjects.collections[ modelClassName + 'Meta' ] ) ) { + model = model.extend( MetaMixin ); + } + + // Add the TagsMixin for models that support tags collections. + if ( ! _.isUndefined( model.prototype.args.tags ) ) { + model = model.extend( TagsMixin ); + } + + // Add the RevisionsMixin for models that support revisions collections. + if ( ! _.isUndefined( loadingObjects.collections[ modelClassName + 'Revisions' ] ) ) { + model = model.extend( RevisionsMixin ); + } + + return model; + }; + +})( window ); + +/* global wpApiSettings:false */ + +// Suppress warning about parse function's unused "options" argument: +/* jshint unused:false */ +(function() { + + 'use strict'; + + var wpApiSettings = window.wpApiSettings || {}; + + /** + * Backbone base model for all models. + */ + wp.api.WPApiBaseModel = Backbone.Model.extend( + /** @lends WPApiBaseModel.prototype */ + { + /** + * Set nonce header before every Backbone sync. + * + * @param {string} method. + * @param {Backbone.Model} model. + * @param {{beforeSend}, *} options. + * @returns {*}. + */ + sync: function( method, model, options ) { + var beforeSend; + + options = options || {}; + + // Remove date_gmt if null. + if ( _.isNull( model.get( 'date_gmt' ) ) ) { + model.unset( 'date_gmt' ); + } + + // Remove slug if empty. + if ( _.isEmpty( model.get( 'slug' ) ) ) { + model.unset( 'slug' ); + } + + if ( ! _.isUndefined( wpApiSettings.nonce ) && ! _.isNull( wpApiSettings.nonce ) ) { + beforeSend = options.beforeSend; + + // @todo enable option for jsonp endpoints + // options.dataType = 'jsonp'; + + options.beforeSend = function( xhr ) { + xhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce ); + + if ( beforeSend ) { + return beforeSend.apply( this, arguments ); + } + }; + } + + // Add '?force=true' to use delete method when required. + if ( this.requireForceForDelete && 'delete' === method ) { + model.url = model.url() + '?force=true'; + } + return Backbone.sync( method, model, options ); + }, + + /** + * Save is only allowed when the PUT OR POST methods are available for the endpoint. + */ + save: function( attrs, options ) { + + // Do we have the put method, then execute the save. + if ( _.includes( this.methods, 'PUT' ) || _.includes( this.methods, 'POST' ) ) { + + // Proxy the call to the original save function. + return Backbone.Model.prototype.save.call( this, attrs, options ); + } else { + + // Otherwise bail, disallowing action. + return false; + } + }, + + /** + * Delete is only allowed when the DELETE method is available for the endpoint. + */ + destroy: function( options ) { + + // Do we have the DELETE method, then execute the destroy. + if ( _.includes( this.methods, 'DELETE' ) ) { + + // Proxy the call to the original save function. + return Backbone.Model.prototype.destroy.call( this, options ); + } else { + + // Otherwise bail, disallowing action. + return false; + } + } + + } + ); + + /** + * API Schema model. Contains meta information about the API. + */ + wp.api.models.Schema = wp.api.WPApiBaseModel.extend( + /** @lends Schema.prototype */ + { + defaults: { + _links: {}, + namespace: null, + routes: {} + }, + + initialize: function( attributes, options ) { + var model = this; + options = options || {}; + + wp.api.WPApiBaseModel.prototype.initialize.call( model, attributes, options ); + + model.apiRoot = options.apiRoot || wpApiSettings.root; + model.versionString = options.versionString || wpApiSettings.versionString; + }, + + url: function() { + return this.apiRoot + this.versionString; + } + } + ); +})(); + +( function() { + + 'use strict'; + + var wpApiSettings = window.wpApiSettings || {}; + + /** + * Contains basic collection functionality such as pagination. + */ + wp.api.WPApiBaseCollection = Backbone.Collection.extend( + /** @lends BaseCollection.prototype */ + { + + /** + * Setup default state. + */ + initialize: function( models, options ) { + this.state = { + data: {}, + currentPage: null, + totalPages: null, + totalObjects: null + }; + if ( _.isUndefined( options ) ) { + this.parent = ''; + } else { + this.parent = options.parent; + } + }, + + /** + * Extend Backbone.Collection.sync to add nince and pagination support. + * + * Set nonce header before every Backbone sync. + * + * @param {string} method. + * @param {Backbone.Model} model. + * @param {{success}, *} options. + * @returns {*}. + */ + sync: function( method, model, options ) { + var beforeSend, success, + self = this; + + options = options || {}; + beforeSend = options.beforeSend; + + // If we have a localized nonce, pass that along with each sync. + if ( 'undefined' !== typeof wpApiSettings.nonce ) { + options.beforeSend = function( xhr ) { + xhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce ); + + if ( beforeSend ) { + return beforeSend.apply( self, arguments ); + } + }; + } + + // When reading, add pagination data. + if ( 'read' === method ) { + if ( options.data ) { + self.state.data = _.clone( options.data ); + + delete self.state.data.page; + } else { + self.state.data = options.data = {}; + } + + if ( 'undefined' === typeof options.data.page ) { + self.state.currentPage = null; + self.state.totalPages = null; + self.state.totalObjects = null; + } else { + self.state.currentPage = options.data.page - 1; + } + + success = options.success; + options.success = function( data, textStatus, request ) { + if ( ! _.isUndefined( request ) ) { + self.state.totalPages = parseInt( request.getResponseHeader( 'x-wp-totalpages' ), 10 ); + self.state.totalObjects = parseInt( request.getResponseHeader( 'x-wp-total' ), 10 ); + } + + if ( null === self.state.currentPage ) { + self.state.currentPage = 1; + } else { + self.state.currentPage++; + } + + if ( success ) { + return success.apply( this, arguments ); + } + }; + } + + // Continue by calling Bacckbone's sync. + return Backbone.sync( method, model, options ); + }, + + /** + * Fetches the next page of objects if a new page exists. + * + * @param {data: {page}} options. + * @returns {*}. + */ + more: function( options ) { + options = options || {}; + options.data = options.data || {}; + + _.extend( options.data, this.state.data ); + + if ( 'undefined' === typeof options.data.page ) { + if ( ! this.hasMore() ) { + return false; + } + + if ( null === this.state.currentPage || this.state.currentPage <= 1 ) { + options.data.page = 2; + } else { + options.data.page = this.state.currentPage + 1; + } + } + + return this.fetch( options ); + }, + + /** + * Returns true if there are more pages of objects available. + * + * @returns null|boolean. + */ + hasMore: function() { + if ( null === this.state.totalPages || + null === this.state.totalObjects || + null === this.state.currentPage ) { + return null; + } else { + return ( this.state.currentPage < this.state.totalPages ); + } + } + } + ); + +} )(); + +( function() { + + 'use strict'; + + var Endpoint, initializedDeferreds = {}, + wpApiSettings = window.wpApiSettings || {}; + window.wp = window.wp || {}; + wp.api = wp.api || {}; + + // If wpApiSettings is unavailable, try the default. + if ( _.isEmpty( wpApiSettings ) ) { + wpApiSettings.root = window.location.origin + '/wp-json/'; + } + + Endpoint = Backbone.Model.extend( { + defaults: { + apiRoot: wpApiSettings.root, + versionString: wp.api.versionString, + schema: null, + models: {}, + collections: {} + }, + + /** + * Initialize the Endpoint model. + */ + initialize: function() { + var model = this, deferred; + + Backbone.Model.prototype.initialize.apply( model, arguments ); + + deferred = jQuery.Deferred(); + model.schemaConstructed = deferred.promise(); + + model.schemaModel = new wp.api.models.Schema( null, { + apiRoot: model.get( 'apiRoot' ), + versionString: model.get( 'versionString' ) + } ); + + // When the model loads, resolve the promise. + model.schemaModel.once( 'change', function() { + model.constructFromSchema(); + deferred.resolve( model ); + } ); + + if ( model.get( 'schema' ) ) { + + // Use schema supplied as model attribute. + model.schemaModel.set( model.schemaModel.parse( model.get( 'schema' ) ) ); + } else if ( + ! _.isUndefined( sessionStorage ) && + ( _.isUndefined( wpApiSettings.cacheSchema ) || wpApiSettings.cacheSchema ) && + sessionStorage.getItem( 'wp-api-schema-model' + model.get( 'apiRoot' ) + model.get( 'versionString' ) ) + ) { + + // Used a cached copy of the schema model if available. + model.schemaModel.set( model.schemaModel.parse( JSON.parse( sessionStorage.getItem( 'wp-api-schema-model' + model.get( 'apiRoot' ) + model.get( 'versionString' ) ) ) ) ); + } else { + model.schemaModel.fetch( { + /** + * When the server returns the schema model data, store the data in a sessionCache so we don't + * have to retrieve it again for this session. Then, construct the models and collections based + * on the schema model data. + */ + success: function( newSchemaModel ) { + + // Store a copy of the schema model in the session cache if available. + if ( ! _.isUndefined( sessionStorage ) && ( _.isUndefined( wpApiSettings.cacheSchema ) || wpApiSettings.cacheSchema ) ) { + try { + sessionStorage.setItem( 'wp-api-schema-model' + model.get( 'apiRoot' ) + model.get( 'versionString' ), JSON.stringify( newSchemaModel ) ); + } catch ( error ) { + + // Fail silently, fixes errors in safari private mode. + } + } + }, + + // Log the error condition. + error: function( err ) { + window.console.log( err ); + } + } ); + } + }, + + constructFromSchema: function() { + var routeModel = this, modelRoutes, collectionRoutes, schemaRoot, loadingObjects, + + /** + * Set up the model and collection name mapping options. As the schema is built, the + * model and collection names will be adjusted if they are found in the mapping object. + * + * Localizing a variable wpApiSettings.mapping will over-ride the default mapping options. + * + */ + mapping = wpApiSettings.mapping || { + models: { + 'Categories': 'Category', + 'Comments': 'Comment', + 'Pages': 'Page', + 'PagesMeta': 'PageMeta', + 'PagesRevisions': 'PageRevision', + 'Posts': 'Post', + 'PostsCategories': 'PostCategory', + 'PostsRevisions': 'PostRevision', + 'PostsTags': 'PostTag', + 'Schema': 'Schema', + 'Statuses': 'Status', + 'Tags': 'Tag', + 'Taxonomies': 'Taxonomy', + 'Types': 'Type', + 'Users': 'User' + }, + collections: { + 'PagesMeta': 'PageMeta', + 'PagesRevisions': 'PageRevisions', + 'PostsCategories': 'PostCategories', + 'PostsMeta': 'PostMeta', + 'PostsRevisions': 'PostRevisions', + 'PostsTags': 'PostTags' + } + }; + + /** + * Iterate thru the routes, picking up models and collections to build. Builds two arrays, + * one for models and one for collections. + */ + modelRoutes = []; + collectionRoutes = []; + schemaRoot = routeModel.get( 'apiRoot' ).replace( wp.api.utils.getRootUrl(), '' ); + loadingObjects = {}; + + /** + * Tracking objects for models and collections. + */ + loadingObjects.models = routeModel.get( 'models' ); + loadingObjects.collections = routeModel.get( 'collections' ); + + _.each( routeModel.schemaModel.get( 'routes' ), function( route, index ) { + + // Skip the schema root if included in the schema. + if ( index !== routeModel.get( ' versionString' ) && + index !== schemaRoot && + index !== ( '/' + routeModel.get( 'versionString' ).slice( 0, -1 ) ) + ) { + + // Single items end with a regex (or the special case 'me'). + if ( /(?:.*[+)]|\/me)$/.test( index ) ) { + modelRoutes.push( { index: index, route: route } ); + } else { + + // Collections end in a name. + collectionRoutes.push( { index: index, route: route } ); + } + } + } ); + + /** + * Construct the models. + * + * Base the class name on the route endpoint. + */ + _.each( modelRoutes, function( modelRoute ) { + + // Extract the name and any parent from the route. + var modelClassName, + routeName = wp.api.utils.extractRoutePart( modelRoute.index, 2 ), + parentName = wp.api.utils.extractRoutePart( modelRoute.index, 4 ), + routeEnd = wp.api.utils.extractRoutePart( modelRoute.index, 1 ); + + // Handle the special case of the 'me' route. + if ( 'me' === routeEnd ) { + routeName = 'me'; + } + + // If the model has a parent in its route, add that to its class name. + if ( '' !== parentName && parentName !== routeName ) { + modelClassName = wp.api.utils.capitalize( parentName ) + wp.api.utils.capitalize( routeName ); + modelClassName = mapping.models[ modelClassName ] || modelClassName; + loadingObjects.models[ modelClassName ] = wp.api.WPApiBaseModel.extend( { + + // Return a constructed url based on the parent and id. + url: function() { + var url = routeModel.get( 'apiRoot' ) + routeModel.get( 'versionString' ) + + parentName + '/' + + ( ( _.isUndefined( this.get( 'parent' ) ) || 0 === this.get( 'parent' ) ) ? + this.get( 'parent_post' ) : + this.get( 'parent' ) ) + '/' + + routeName; + if ( ! _.isUndefined( this.get( 'id' ) ) ) { + url += '/' + this.get( 'id' ); + } + return url; + }, + + // Include a reference to the original route object. + route: modelRoute, + + // Include a reference to the original class name. + name: modelClassName, + + // Include the array of route methods for easy reference. + methods: modelRoute.route.methods, + + initialize: function() { + + /** + * Posts and pages support trashing, other types don't support a trash + * and require that you pass ?force=true to actually delete them. + * + * @todo we should be getting trashability from the Schema, not hard coding types here. + */ + if ( + 'Posts' !== this.name && + 'Pages' !== this.name && + _.includes( this.methods, 'DELETE' ) + ) { + this.requireForceForDelete = true; + } + } + } ); + } else { + + // This is a model without a parent in its route + modelClassName = wp.api.utils.capitalize( routeName ); + modelClassName = mapping.models[ modelClassName ] || modelClassName; + loadingObjects.models[ modelClassName ] = wp.api.WPApiBaseModel.extend( { + + // Function that returns a constructed url based on the id. + url: function() { + var url = routeModel.get( 'apiRoot' ) + + routeModel.get( 'versionString' ) + + ( ( 'me' === routeName ) ? 'users/me' : routeName ); + + if ( ! _.isUndefined( this.get( 'id' ) ) ) { + url += '/' + this.get( 'id' ); + } + return url; + }, + + // Include a reference to the original route object. + route: modelRoute, + + // Include a reference to the original class name. + name: modelClassName, + + // Include the array of route methods for easy reference. + methods: modelRoute.route.methods + } ); + } + + // Add defaults to the new model, pulled form the endpoint. + wp.api.utils.decorateFromRoute( modelRoute.route.endpoints, loadingObjects.models[ modelClassName ] ); + + } ); + + /** + * Construct the collections. + * + * Base the class name on the route endpoint. + */ + _.each( collectionRoutes, function( collectionRoute ) { + + // Extract the name and any parent from the route. + var collectionClassName, modelClassName, + routeName = collectionRoute.index.slice( collectionRoute.index.lastIndexOf( '/' ) + 1 ), + parentName = wp.api.utils.extractRoutePart( collectionRoute.index, 3 ); + + // If the collection has a parent in its route, add that to its class name. + if ( '' !== parentName && parentName !== routeName ) { + + collectionClassName = wp.api.utils.capitalize( parentName ) + wp.api.utils.capitalize( routeName ); + modelClassName = mapping.models[ collectionClassName ] || collectionClassName; + collectionClassName = mapping.collections[ collectionClassName ] || collectionClassName; + loadingObjects.collections[ collectionClassName ] = wp.api.WPApiBaseCollection.extend( { + + // Function that returns a constructed url passed on the parent. + url: function() { + return routeModel.get( 'apiRoot' ) + routeModel.get( 'versionString' ) + + parentName + '/' + this.parent + '/' + + routeName; + }, + + // Specify the model that this collection contains. + model: loadingObjects.models[ modelClassName ], + + // Include a reference to the original class name. + name: collectionClassName, + + // Include a reference to the original route object. + route: collectionRoute, + + // Include the array of route methods for easy reference. + methods: collectionRoute.route.methods + } ); + } else { + + // This is a collection without a parent in its route. + collectionClassName = wp.api.utils.capitalize( routeName ); + modelClassName = mapping.models[ collectionClassName ] || collectionClassName; + collectionClassName = mapping.collections[ collectionClassName ] || collectionClassName; + loadingObjects.collections[ collectionClassName ] = wp.api.WPApiBaseCollection.extend( { + + // For the url of a root level collection, use a string. + url: routeModel.get( 'apiRoot' ) + routeModel.get( 'versionString' ) + routeName, + + // Specify the model that this collection contains. + model: loadingObjects.models[ modelClassName ], + + // Include a reference to the original class name. + name: collectionClassName, + + // Include a reference to the original route object. + route: collectionRoute, + + // Include the array of route methods for easy reference. + methods: collectionRoute.route.methods + } ); + } + + // Add defaults to the new model, pulled form the endpoint. + wp.api.utils.decorateFromRoute( collectionRoute.route.endpoints, loadingObjects.collections[ collectionClassName ] ); + } ); + + // Add mixins and helpers for each of the models. + _.each( loadingObjects.models, function( model, index ) { + loadingObjects.models[ index ] = wp.api.utils.addMixinsAndHelpers( model, index, loadingObjects ); + } ); + + } + + } ); + + wp.api.endpoints = new Backbone.Collection( { + model: Endpoint + } ); + + /** + * Initialize the wp-api, optionally passing the API root. + * + * @param {object} [args] + * @param {string} [args.apiRoot] The api root. Optional, defaults to wpApiSettings.root. + * @param {string} [args.versionString] The version string. Optional, defaults to wpApiSettings.root. + * @param {object} [args.schema] The schema. Optional, will be fetched from API if not provided. + */ + wp.api.init = function( args ) { + var endpoint, attributes = {}, deferred, promise; + + args = args || {}; + attributes.apiRoot = args.apiRoot || wpApiSettings.root; + attributes.versionString = args.versionString || wpApiSettings.versionString; + attributes.schema = args.schema || null; + if ( ! attributes.schema && attributes.apiRoot === wpApiSettings.root && attributes.versionString === wpApiSettings.versionString ) { + attributes.schema = wpApiSettings.schema; + } + + if ( ! initializedDeferreds[ attributes.apiRoot + attributes.versionString ] ) { + endpoint = wp.api.endpoints.findWhere( { apiRoot: attributes.apiRoot, versionString: attributes.versionString } ); + if ( ! endpoint ) { + endpoint = new Endpoint( attributes ); + wp.api.endpoints.add( endpoint ); + } + deferred = jQuery.Deferred(); + promise = deferred.promise(); + + endpoint.schemaConstructed.done( function( endpoint ) { + + // Map the default endpoints, extending any already present items (including Schema model). + wp.api.models = _.extend( endpoint.get( 'models' ), wp.api.models ); + wp.api.collections = _.extend( endpoint.get( 'collections' ), wp.api.collections ); + deferred.resolveWith( wp.api, [ endpoint ] ); + } ); + initializedDeferreds[ attributes.apiRoot + attributes.versionString ] = promise; + } + return initializedDeferreds[ attributes.apiRoot + attributes.versionString ]; + }; + + /** + * Construct the default endpoints and add to an endpoints collection. + */ + + // The wp.api.init function returns a promise that will resolve with the endpoint once it is ready. + wp.api.loadPromise = wp.api.init(); + +} )(); diff --git a/wp/wp-includes/js/wp-api.min.js b/wp/wp-includes/js/wp-api.min.js new file mode 100644 index 00000000..8231d1a3 --- /dev/null +++ b/wp/wp-includes/js/wp-api.min.js @@ -0,0 +1 @@ +!function(a,b){"use strict";function c(){this.models={},this.collections={},this.views={}}a.wp=a.wp||{},wp.api=wp.api||new c,wp.api.versionString=wp.api.versionString||"wp/v2/",!_.isFunction(_.includes)&&_.isFunction(_.contains)&&(_.includes=_.contains)}(window),function(a,b){"use strict";var c,d;a.wp=a.wp||{},wp.api=wp.api||{},wp.api.utils=wp.api.utils||{},Date.prototype.toISOString||(c=function(a){return d=String(a),1===d.length&&(d="0"+d),d},Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+c(this.getUTCMonth()+1)+"-"+c(this.getUTCDate())+"T"+c(this.getUTCHours())+":"+c(this.getUTCMinutes())+":"+c(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1e3).toFixed(3)).slice(2,5)+"Z"}),wp.api.utils.parseISO8601=function(a){var c,d,e,f,g=0,h=[1,4,5,6,7,10,11];if(d=/^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(a)){for(e=0;f=h[e];++e)d[f]=+d[f]||0;d[2]=(+d[2]||1)-1,d[3]=+d[3]||1,"Z"!==d[8]&&b!==d[9]&&(g=60*d[10]+d[11],"+"===d[9]&&(g=0-g)),c=Date.UTC(d[1],d[2],d[3],d[4],d[5]+g,d[6],d[7])}else c=Date.parse?Date.parse(a):NaN;return c},wp.api.utils.getRootUrl=function(){return a.location.origin?a.location.origin+"/":a.location.protocol+"/"+a.location.host+"/"},wp.api.utils.capitalize=function(a){return _.isUndefined(a)?a:a.charAt(0).toUpperCase()+a.slice(1)},wp.api.utils.extractRoutePart=function(a,b){var c;return b=b||1,a=a.replace(wp.api.versionString,""),c=a.split("/").reverse(),_.isUndefined(c[--b])?"":c[b]},wp.api.utils.extractParentName=function(a){var b,c=a.lastIndexOf("_id>[\\d]+)/");return c<0?"":(b=a.substr(0,c-1),b=b.split("/"),b.pop(),b=b.pop())},wp.api.utils.decorateFromRoute=function(a,b){_.each(a,function(a){_.includes(a.methods,"POST")||_.includes(a.methods,"PUT")?_.isEmpty(a.args)||(_.isEmpty(b.prototype.args)?b.prototype.args=a.args:b.prototype.args=_.union(a.args,b.prototype.defaults)):_.includes(a.methods,"GET")&&(_.isEmpty(a.args)||(_.isEmpty(b.prototype.options)?b.prototype.options=a.args:b.prototype.options=_.union(a.args,b.prototype.options)))})},wp.api.utils.addMixinsAndHelpers=function(a,b,c){var d=!1,e=["date","modified","date_gmt","modified_gmt"],f={setDate:function(a,b){var c=b||"date";return!(_.indexOf(e,c)<0)&&void this.set(c,a.toISOString())},getDate:function(a){var b=a||"date",c=this.get(b);return!(_.indexOf(e,b)<0||_.isNull(c))&&new Date(wp.api.utils.parseISO8601(c))}},g=function(a,b,c,d,e){var f,g,h,i;return i=jQuery.Deferred(),g=a.get("_embedded")||{},_.isNumber(b)&&0!==b?(g[d]&&(h=_.findWhere(g[d],{id:b})),h||(h={id:b}),f=new wp.api.models[c](h),f.get(e)?i.resolve(f):f.fetch({success:function(a){i.resolve(a)}}),i.promise()):(i.reject(),i)},h=function(a,b,c,d){var e,f,g,h="",j="",k=jQuery.Deferred();return e=a.get("id"),f=a.get("_embedded")||{},_.isNumber(e)&&0!==e?(_.isUndefined(c)||_.isUndefined(f[c])?h={parent:e}:j=_.isUndefined(d)?f[c]:f[c][d],g=new wp.api.collections[b](j,h),_.isUndefined(g.models[0])?g.fetch({success:function(a){i(a,e),k.resolve(a)}}):(i(g,e),k.resolve(g)),k.promise()):(k.reject(),k)},i=function(a,b){_.each(a.models,function(a){a.set("parent_post",b)})},j={getMeta:function(){return h(this,"PostMeta","https://api.w.org/meta")}},k={getRevisions:function(){return h(this,"PostRevisions")}},l={getTags:function(){var a=this.get("tags"),b=new wp.api.collections.Tags;return _.isEmpty(a)?jQuery.Deferred().resolve([]):b.fetch({data:{include:a}})},setTags:function(a){var b,c,d=this,e=[];return!_.isString(a)&&void(_.isArray(a)?(b=new wp.api.collections.Tags,b.fetch({data:{per_page:100},success:function(b){_.each(a,function(a){c=new wp.api.models.Tag(b.findWhere({slug:a})),c.set("parent_post",d.get("id")),e.push(c)}),a=new wp.api.collections.Tags(e),d.setTagsWithCollection(a)}})):this.setTagsWithCollection(a))},setTagsWithCollection:function(a){return this.set("tags",a.pluck("id")),this.save()}},m={getCategories:function(){var a=this.get("categories"),b=new wp.api.collections.Categories;return _.isEmpty(a)?jQuery.Deferred().resolve([]):b.fetch({data:{include:a}})},setCategories:function(a){var b,c,d=this,e=[];return!_.isString(a)&&void(_.isArray(a)?(b=new wp.api.collections.Categories,b.fetch({data:{per_page:100},success:function(b){_.each(a,function(a){c=new wp.api.models.Category(b.findWhere({slug:a})),c.set("parent_post",d.get("id")),e.push(c)}),a=new wp.api.collections.Categories(e),d.setCategoriesWithCollection(a)}})):this.setCategoriesWithCollection(a))},setCategoriesWithCollection:function(a){return this.set("categories",a.pluck("id")),this.save()}},n={getAuthorUser:function(){return g(this,this.get("author"),"User","author","name")}},o={getFeaturedMedia:function(){return g(this,this.get("featured_media"),"Media","wp:featuredmedia","source_url")}};return _.isUndefined(a.prototype.args)?a:(_.each(e,function(b){_.isUndefined(a.prototype.args[b])||(d=!0)}),d&&(a=a.extend(f)),_.isUndefined(a.prototype.args.author)||(a=a.extend(n)),_.isUndefined(a.prototype.args.featured_media)||(a=a.extend(o)),_.isUndefined(a.prototype.args.categories)||(a=a.extend(m)),_.isUndefined(c.collections[b+"Meta"])||(a=a.extend(j)),_.isUndefined(a.prototype.args.tags)||(a=a.extend(l)),_.isUndefined(c.collections[b+"Revisions"])||(a=a.extend(k)),a)}}(window),function(){"use strict";var a=window.wpApiSettings||{};wp.api.WPApiBaseModel=Backbone.Model.extend({sync:function(b,c,d){var e;return d=d||{},_.isNull(c.get("date_gmt"))&&c.unset("date_gmt"),_.isEmpty(c.get("slug"))&&c.unset("slug"),_.isUndefined(a.nonce)||_.isNull(a.nonce)||(e=d.beforeSend,d.beforeSend=function(b){if(b.setRequestHeader("X-WP-Nonce",a.nonce),e)return e.apply(this,arguments)}),this.requireForceForDelete&&"delete"===b&&(c.url=c.url()+"?force=true"),Backbone.sync(b,c,d)},save:function(a,b){return!(!_.includes(this.methods,"PUT")&&!_.includes(this.methods,"POST"))&&Backbone.Model.prototype.save.call(this,a,b)},destroy:function(a){return!!_.includes(this.methods,"DELETE")&&Backbone.Model.prototype.destroy.call(this,a)}}),wp.api.models.Schema=wp.api.WPApiBaseModel.extend({defaults:{_links:{},namespace:null,routes:{}},initialize:function(b,c){var d=this;c=c||{},wp.api.WPApiBaseModel.prototype.initialize.call(d,b,c),d.apiRoot=c.apiRoot||a.root,d.versionString=c.versionString||a.versionString},url:function(){return this.apiRoot+this.versionString}})}(),function(){"use strict";var a=window.wpApiSettings||{};wp.api.WPApiBaseCollection=Backbone.Collection.extend({initialize:function(a,b){this.state={data:{},currentPage:null,totalPages:null,totalObjects:null},_.isUndefined(b)?this.parent="":this.parent=b.parent},sync:function(b,c,d){var e,f,g=this;return d=d||{},e=d.beforeSend,"undefined"!=typeof a.nonce&&(d.beforeSend=function(b){if(b.setRequestHeader("X-WP-Nonce",a.nonce),e)return e.apply(g,arguments)}),"read"===b&&(d.data?(g.state.data=_.clone(d.data),delete g.state.data.page):g.state.data=d.data={},"undefined"==typeof d.data.page?(g.state.currentPage=null,g.state.totalPages=null,g.state.totalObjects=null):g.state.currentPage=d.data.page-1,f=d.success,d.success=function(a,b,c){if(_.isUndefined(c)||(g.state.totalPages=parseInt(c.getResponseHeader("x-wp-totalpages"),10),g.state.totalObjects=parseInt(c.getResponseHeader("x-wp-total"),10)),null===g.state.currentPage?g.state.currentPage=1:g.state.currentPage++,f)return f.apply(this,arguments)}),Backbone.sync(b,c,d)},more:function(a){if(a=a||{},a.data=a.data||{},_.extend(a.data,this.state.data),"undefined"==typeof a.data.page){if(!this.hasMore())return!1;null===this.state.currentPage||this.state.currentPage<=1?a.data.page=2:a.data.page=this.state.currentPage+1}return this.fetch(a)},hasMore:function(){return null===this.state.totalPages||null===this.state.totalObjects||null===this.state.currentPage?null:this.state.currentPage1e3)g=1e3;else if(~~g<200)g=200;f.height=g}if("link"===d.message)if(h=b.createElement("a"),i=b.createElement("a"),h.href=f.getAttribute("src"),i.href=d.value,i.host===h.host)if(b.activeElement===f)a.top.location.href=d.value}else;}},d)a.addEventListener("message",a.wp.receiveEmbedMessage,!1),b.addEventListener("DOMContentLoaded",c,!1),a.addEventListener("load",c,!1)}(window,document); \ No newline at end of file +!function(a,b){"use strict";function c(){if(!e){e=!0;var a,c,d,f,g=-1!==navigator.appVersion.indexOf("MSIE 10"),h=!!navigator.userAgent.match(/Trident.*rv:11\./),i=b.querySelectorAll("iframe.wp-embedded-content");for(c=0;c1e3)g=1e3;else if(~~g<200)g=200;f.height=g}if("link"===d.message)if(h=b.createElement("a"),i=b.createElement("a"),h.href=f.getAttribute("src"),i.href=d.value,i.host===h.host)if(b.activeElement===f)a.top.location.href=d.value}else;}},d)a.addEventListener("message",a.wp.receiveEmbedMessage,!1),b.addEventListener("DOMContentLoaded",c,!1),a.addEventListener("load",c,!1)}(window,document); \ No newline at end of file diff --git a/wp/wp-includes/js/wp-emoji-loader.js b/wp/wp-includes/js/wp-emoji-loader.js index ff73a885..0b474f83 100644 --- a/wp/wp-includes/js/wp-emoji-loader.js +++ b/wp/wp-includes/js/wp-emoji-loader.js @@ -1,25 +1,33 @@ ( function( window, document, settings ) { var src, ready, ii, tests; + /* + * Create a canvas element for testing native browser support + * of emoji. + */ + var canvas = document.createElement( 'canvas' ); + var context = canvas.getContext && canvas.getContext( '2d' ); + /** * Detect if the browser supports rendering emoji or flag emoji. Flag emoji are a single glyph * made of two characters, so some browsers (notably, Firefox OS X) don't support them. * * @since 4.2.0 * - * @param type {String} Whether to test for support of "simple", "flag", "diversity" or "unicode8" emoji. + * @param type {String} Whether to test for support of "flag" or "emoji4" emoji. * @return {Boolean} True if the browser can render emoji, false if it cannot. */ function browserSupportsEmoji( type ) { - var canvas = document.createElement( 'canvas' ), - context = canvas.getContext && canvas.getContext( '2d' ), - stringFromCharCode = String.fromCharCode, - flag, flag2, tonedata, tone, tone2; + var stringFromCharCode = String.fromCharCode, + flag, flag2, technologist, technologist2; if ( ! context || ! context.fillText ) { return false; } + // Cleanup from previous test. + context.clearRect( 0, 0, canvas.width, canvas.height ); + /* * Chrome on OS X added native emoji rendering in M41. Unfortunately, * it doesn't work when the font is bolder than 500 weight. So, we @@ -33,13 +41,13 @@ /* * This works because the image will be one of three things: * - Two empty squares, if the browser doesn't render emoji - * - Two squares with 'A' and 'U' in them, if the browser doesn't render flag emoji - * - The Australian flag + * - Two squares with 'U' and 'N' in them, if the browser doesn't render flag emoji + * - The United Nations flag * * The first two will encode to small images (1-2KB data URLs), the third will encode * to a larger image (4-5KB data URL). */ - context.fillText( stringFromCharCode( 55356, 56806, 55356, 56826 ), 0, 0 ); + context.fillText( stringFromCharCode( 55356, 56826, 55356, 56819 ), 0, 0 ); if ( canvas.toDataURL().length < 3000 ) { return false; } @@ -63,45 +71,23 @@ flag2 = canvas.toDataURL(); return flag !== flag2; - case 'diversity': + case 'emoji4': /* - * This tests if the browser supports the Emoji Diversity specification, by rendering an - * emoji with no skin tone specified (in this case, Santa). It then adds a skin tone, and - * compares if the emoji rendering has changed. + * Emoji 4 has the best technologists. So does WordPress! + * + * To test for support, try to render a new emoji (woman technologist: medium skin tone), + * then compare it to how it would look if the browser doesn't render it correctly + * (woman technologist: medium skin tone + personal computer). */ - context.fillText( stringFromCharCode( 55356, 57221 ), 0, 0 ); - tonedata = context.getImageData( 16, 16, 1, 1 ).data; - tone = tonedata[0] + ',' + tonedata[1] + ',' + tonedata[2] + ',' + tonedata[3]; + context.fillText( stringFromCharCode( 55357, 56425, 55356, 57341, 8205, 55357, 56507), 0, 0 ); + technologist = canvas.toDataURL(); - context.fillText( stringFromCharCode( 55356, 57221, 55356, 57343 ), 0, 0 ); - // Chrome has issues comparing arrays, and Safari has issues converting arrays to strings. - // So, we create our own string and compare that, instead. - tonedata = context.getImageData( 16, 16, 1, 1 ).data; - tone2 = tonedata[0] + ',' + tonedata[1] + ',' + tonedata[2] + ',' + tonedata[3]; + context.clearRect( 0, 0, canvas.width, canvas.height ); - return tone !== tone2; - case 'simple': - /* - * This creates a smiling emoji, and checks to see if there is any image data in the - * center pixel. In browsers that don't support emoji, the character will be rendered - * as an empty square, so the center pixel will be blank. - */ - context.fillText( stringFromCharCode( 55357, 56835 ), 0, 0 ); - return context.getImageData( 16, 16, 1, 1 ).data[0] !== 0; - case 'unicode8': - /* - * To check for Unicode 8 support, let's try rendering the most important advancement - * that the Unicode Consortium have made in years: the burrito. - */ - context.fillText( stringFromCharCode( 55356, 57135 ), 0, 0 ); - return context.getImageData( 16, 16, 1, 1 ).data[0] !== 0; - case 'unicode9': - /* - * Do Unicode 9 emoji render? - * ¯\_(ツ)_/¯ - */ - context.fillText( stringFromCharCode( 55358, 56631 ), 0, 0 ); - return context.getImageData( 16, 16, 1, 1 ).data[0] !== 0; + context.fillText( stringFromCharCode( 55357, 56425, 55356, 57341, 55357, 56507), 0, 0 ); + technologist2 = canvas.toDataURL(); + + return technologist !== technologist2; } return false; @@ -111,11 +97,11 @@ var script = document.createElement( 'script' ); script.src = src; - script.type = 'text/javascript'; + script.defer = script.type = 'text/javascript'; document.getElementsByTagName( 'head' )[0].appendChild( script ); } - tests = Array( 'simple', 'flag', 'unicode8', 'diversity', 'unicode9' ); + tests = Array( 'flag', 'emoji4' ); settings.supports = { everything: true, diff --git a/wp/wp-includes/js/wp-emoji-loader.min.js b/wp/wp-includes/js/wp-emoji-loader.min.js index 8ad29f71..86442dcd 100644 --- a/wp/wp-includes/js/wp-emoji-loader.min.js +++ b/wp/wp-includes/js/wp-emoji-loader.min.js @@ -1 +1 @@ -!function(a,b,c){function d(a){var c,d,e,f,g,h=b.createElement("canvas"),i=h.getContext&&h.getContext("2d"),j=String.fromCharCode;if(!i||!i.fillText)return!1;switch(i.textBaseline="top",i.font="600 32px Arial",a){case"flag":return i.fillText(j(55356,56806,55356,56826),0,0),!(h.toDataURL().length<3e3)&&(i.clearRect(0,0,h.width,h.height),i.fillText(j(55356,57331,65039,8205,55356,57096),0,0),c=h.toDataURL(),i.clearRect(0,0,h.width,h.height),i.fillText(j(55356,57331,55356,57096),0,0),d=h.toDataURL(),c!==d);case"diversity":return i.fillText(j(55356,57221),0,0),e=i.getImageData(16,16,1,1).data,f=e[0]+","+e[1]+","+e[2]+","+e[3],i.fillText(j(55356,57221,55356,57343),0,0),e=i.getImageData(16,16,1,1).data,g=e[0]+","+e[1]+","+e[2]+","+e[3],f!==g;case"simple":return i.fillText(j(55357,56835),0,0),0!==i.getImageData(16,16,1,1).data[0];case"unicode8":return i.fillText(j(55356,57135),0,0),0!==i.getImageData(16,16,1,1).data[0];case"unicode9":return i.fillText(j(55358,56631),0,0),0!==i.getImageData(16,16,1,1).data[0]}return!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g,h,i;for(i=Array("simple","flag","unicode8","diversity","unicode9"),c.supports={everything:!0,everythingExceptFlag:!0},h=0;h")}return g})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return b<65536?w(b):(b-=65536,w(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className,onerror:b.onerror||p.onerror})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f":">","'":"'",'"':"""},r=/\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|(?:[\u0023\u002a\u0030-\u0039])\ufe0f?\u20e3|(?:(?:\ud83c\udfcb|\ud83d[\udd75\udd90]|[\u261d\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0]|\ud83e[\udd18-\udd1e\udd26\udd30\udd33-\udd39\udd3c-\udd3e]|[\u270a\u270b])(?:\ud83c[\udffb-\udfff]|)|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\udecc\uded0-\uded2\udeeb\udeec\udef4-\udef6]|\ud83e[\udd10-\udd17\udd20-\udd25\udd27\udd3a\udd40-\udd45\udd47-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]|[\u23e9-\u23ec\u23f0\u23f3\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a]|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcc-\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd74\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u00a9\u00ae\u203c\u2049\u2122\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2694\u2696\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f7\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))/g,s=/\uFE0F/g,t=String.fromCharCode(8205),u=/[&<>'"]/g,v=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,w=String.fromCharCode;return p}(); +var twemoji=function(){"use strict";function a(a){return document.createTextNode(a)}function b(a){return a.replace(u,h)}function c(a,b){return"".concat(b.base,b.size,"/",a,b.ext)}function d(a,b){for(var c,e,f=a.childNodes,g=f.length;g--;)c=f[g],e=c.nodeType,3===e?b.push(c):1!==e||v.test(c.nodeName)||d(c,b);return b}function e(a){return o(a.indexOf(t)<0?a.replace(s,""):a)}function f(b,c){for(var f,g,h,i,j,k,l,m,n,o,p,q,s,t=d(b,[]),u=t.length;u--;){for(h=!1,i=document.createDocumentFragment(),j=t[u],k=j.nodeValue,m=0;l=r.exec(k);){if(n=l.index,n!==m&&i.appendChild(a(k.slice(m,n))),p=l[0],q=e(p),m=n+p.length,s=c.callback(q,c)){o=new Image,o.onerror=c.onerror,o.setAttribute("draggable","false"),f=c.attributes(p,q);for(g in f)f.hasOwnProperty(g)&&0!==g.indexOf("on")&&!o.hasAttribute(g)&&o.setAttribute(g,f[g]);o.className=c.className,o.alt=p,o.src=s,h=!0,i.appendChild(o)}o||i.appendChild(a(p)),o=null}h&&(m")}return g})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return b<65536?w(b):(b-=65536,w(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className,onerror:b.onerror||p.onerror})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f":">","'":"'",'"':"""},r=/\ud83d[\udc68-\udc69](?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92])|(?:\ud83c[\udfcb\udfcc]|\ud83d\udd75|\u26f9)(?:\ufe0f|\ud83c[\udffb-\udfff])\u200d[\u2640\u2642]\ufe0f|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd37-\udd39\udd3d\udd3e])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|(?:[\u0023\u002a\u0030-\u0039])\ufe0f?\u20e3|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd18-\udd1c\udd1e\udd26\udd30\udd33-\udd39\udd3d\udd3e]|[\u270a\u270b])(?:\ud83c[\udffb-\udfff]|)|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud800\udc00|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\udeeb\udeec\udef4-\udef6]|\ud83e[\udd10-\udd17\udd1d\udd20-\udd25\udd27\udd3a\udd3c\udd40-\udd45\udd47-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]|[\u23e9-\u23ec\u23f0\u23f3\u2640\u2642\u2695\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a]|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u00a9\u00ae\u203c\u2049\u2122\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2694\u2696\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))/g,s=/\uFE0F/g,t=String.fromCharCode(8205),u=/[&<>'"]/g,v=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,w=String.fromCharCode;return p}(); // Source: wp-includes/js/wp-emoji.min.js !function(a,b){function c(){function c(){return!j.implementation.hasFeature||j.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1")}function d(){if(!k){if("undefined"==typeof a.twemoji){if(l>600)return;return a.clearTimeout(h),h=a.setTimeout(d,50),void l++}g=a.twemoji,k=!0,i&&new i(function(a){for(var b,c,d,g,h=a.length;h--;){if(b=a[h].addedNodes,c=a[h].removedNodes,d=b.length,1===d&&1===c.length&&3===b[0].nodeType&&"IMG"===c[0].nodeName&&b[0].data===c[0].alt&&"load-failed"===c[0].getAttribute("data-error"))return;for(;d--;){if(g=b[d],3===g.nodeType){if(!g.parentNode)continue;if(m)for(;g.nextSibling&&3===g.nextSibling.nodeType;)g.nodeValue=g.nodeValue+g.nextSibling.nodeValue,g.parentNode.removeChild(g.nextSibling);g=g.parentNode}!g||1!==g.nodeType||g.className&&"string"==typeof g.className&&g.className.indexOf("wp-exclude-emoji")!==-1||e(g.textContent)&&f(g)}}}).observe(j.body,{childList:!0,subtree:!0}),f(j.body)}}function e(a){var b=/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/,c=/[\uDC00-\uDFFF]/;return!!a&&(c.test(a)||b.test(a))}function f(a,d){var e;return!b.supports.everything&&g&&a&&("string"==typeof a||a.childNodes&&a.childNodes.length)?(d=d||{},e={base:c()?b.svgUrl:b.baseUrl,ext:c()?b.svgExt:b.ext,className:d.className||"emoji",callback:function(a,c){switch(a){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return!(b.supports.everythingExceptFlag&&!/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(a)&&!/^(1f3f3-fe0f-200d-1f308|1f3f4-200d-2620-fe0f)$/.test(a))&&"".concat(c.base,a,c.ext)},onerror:function(){g.parentNode&&(this.setAttribute("data-error","load-failed"),g.parentNode.replaceChild(j.createTextNode(g.alt),g))}},"object"==typeof d.imgAttr&&(e.attributes=function(){return d.imgAttr}),g.parse(a,e)):a}var g,h,i=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,j=a.document,k=!1,l=0,m=a.navigator.userAgent.indexOf("Trident/7.0")>0;return b&&(b.DOMReady?d():b.readyCallback=d),{parse:f,test:e}}a.wp=a.wp||{},a.wp.emoji=new c}(window,window._wpemojiSettings); \ No newline at end of file diff --git a/wp/wp-includes/js/wp-lists.js b/wp/wp-includes/js/wp-lists.js index 2b8e5133..c73471db 100644 --- a/wp/wp-includes/js/wp-lists.js +++ b/wp/wp-includes/js/wp-lists.js @@ -1,501 +1,854 @@ /* global ajaxurl, wpAjax */ -(function($) { -var fs = {add:'ajaxAdd',del:'ajaxDel',dim:'ajaxDim',process:'process',recolor:'recolor'}, wpList; +/** + * @param {jQuery} $ jQuery object. + */ +( function( $ ) { +var functions = { + add: 'ajaxAdd', + del: 'ajaxDel', + dim: 'ajaxDim', + process: 'process', + recolor: 'recolor' +}, wpList; + +/** + * @namespace + */ wpList = { + + /** + * @member {object} + */ settings: { - url: ajaxurl, type: 'POST', + + /** + * URL for Ajax requests. + * + * @member {string} + */ + url: ajaxurl, + + /** + * The HTTP method to use for Ajax requests. + * + * @member {string} + */ + type: 'POST', + + /** + * ID of the element the parsed Ajax response will be stored in. + * + * @member {string} + */ response: 'ajax-response', + /** + * The type of list. + * + * @member {string} + */ what: '', - alt: 'alternate', altOffset: 0, - addColor: null, delColor: null, dimAddColor: null, dimDelColor: null, + /** + * CSS class name for alternate styling. + * + * @member {string} + */ + alt: 'alternate', + + /** + * Offset to start alternate styling from. + * + * @member {number} + */ + altOffset: 0, + + /** + * Color used in animation when adding an element. + * + * Can be 'none' to disable the animation. + * + * @member {string} + */ + addColor: '#ffff33', + + /** + * Color used in animation when deleting an element. + * + * Can be 'none' to disable the animation. + * + * @member {string} + */ + delColor: '#faafaa', + + /** + * Color used in dim add animation. + * + * Can be 'none' to disable the animation. + * + * @member {string} + */ + dimAddColor: '#ffff33', + + /** + * Color used in dim delete animation. + * + * Can be 'none' to disable the animation. + * + * @member {string} + */ + dimDelColor: '#ff3333', + + /** + * Callback that's run before a request is made. + * + * @callback wpList~confirm + * @param {object} this + * @param {HTMLElement} list The list DOM element. + * @param {object} settings Settings for the current list. + * @param {string} action The type of action to perform: 'add', 'delete', or 'dim'. + * @param {string} backgroundColor Background color of the list's DOM element. + * @returns {boolean} Whether to proceed with the action or not. + */ confirm: null, - addBefore: null, addAfter: null, - delBefore: null, delAfter: null, - dimBefore: null, dimAfter: null + + /** + * Callback that's run before an item gets added to the list. + * + * Allows to cancel the request. + * + * @callback wpList~addBefore + * @param {object} settings Settings for the Ajax request. + * @returns {object|boolean} Settings for the Ajax request or false to abort. + */ + addBefore: null, + + /** + * Callback that's run after an item got added to the list. + * + * @callback wpList~addAfter + * @param {XML} returnedResponse Raw response returned from the server. + * @param {object} settings Settings for the Ajax request. + * @param {jqXHR} settings.xml jQuery XMLHttpRequest object. + * @param {string} settings.status Status of the request: 'success', 'notmodified', 'nocontent', 'error', + * 'timeout', 'abort', or 'parsererror'. + * @param {object} settings.parsed Parsed response object. + */ + addAfter: null, + + /** + * Callback that's run before an item gets deleted from the list. + * + * Allows to cancel the request. + * + * @callback wpList~delBefore + * @param {object} settings Settings for the Ajax request. + * @param {HTMLElement} list The list DOM element. + * @returns {object|boolean} Settings for the Ajax request or false to abort. + */ + delBefore: null, + + /** + * Callback that's run after an item got deleted from the list. + * + * @callback wpList~delAfter + * @param {XML} returnedResponse Raw response returned from the server. + * @param {object} settings Settings for the Ajax request. + * @param {jqXHR} settings.xml jQuery XMLHttpRequest object. + * @param {string} settings.status Status of the request: 'success', 'notmodified', 'nocontent', 'error', + * 'timeout', 'abort', or 'parsererror'. + * @param {object} settings.parsed Parsed response object. + */ + delAfter: null, + + /** + * Callback that's run before an item gets dim'd. + * + * Allows to cancel the request. + * + * @callback wpList~dimBefore + * @param {object} settings Settings for the Ajax request. + * @returns {object|boolean} Settings for the Ajax request or false to abort. + */ + dimBefore: null, + + /** + * Callback that's run after an item got dim'd. + * + * @callback wpList~dimAfter + * @param {XML} returnedResponse Raw response returned from the server. + * @param {object} settings Settings for the Ajax request. + * @param {jqXHR} settings.xml jQuery XMLHttpRequest object. + * @param {string} settings.status Status of the request: 'success', 'notmodified', 'nocontent', 'error', + * 'timeout', 'abort', or 'parsererror'. + * @param {object} settings.parsed Parsed response object. + */ + dimAfter: null }, - nonce: function(e,s) { - var url = wpAjax.unserialize(e.attr('href')); - return s.nonce || url._ajax_nonce || $('#' + s.element + ' input[name="_ajax_nonce"]').val() || url._wpnonce || $('#' + s.element + ' input[name="_wpnonce"]').val() || 0; + /** + * Finds a nonce. + * + * 1. Nonce in settings. + * 2. `_ajax_nonce` value in element's href attribute. + * 3. `_ajax_nonce` input field that is a descendant of element. + * 4. `_wpnonce` value in element's href attribute. + * 5. `_wpnonce` input field that is a descendant of element. + * 6. 0 if none can be found. + * + * @param {jQuery} element Element that triggered the request. + * @param {object} settings Settings for the Ajax request. + * @returns {string|number} Nonce + */ + nonce: function( element, settings ) { + var url = wpAjax.unserialize( element.attr( 'href' ) ), + $element = $( '#' + settings.element ); + + return settings.nonce || url._ajax_nonce || $element.find( 'input[name="_ajax_nonce"]' ).val() || url._wpnonce || $element.find( 'input[name="_wpnonce"]' ).val() || 0; }, /** * Extract list item data from a DOM element. * - * @param {HTMLElement} e The DOM element. - * @param {string} t - * @return {array} + * Example 1: data-wp-lists="delete:the-comment-list:comment-{comment_ID}:66cc66:unspam=1" + * Example 2: data-wp-lists="dim:the-comment-list:comment-{comment_ID}:unapproved:e7e7d3:e7e7d3:new=approved" + * + * Returns an unassociated array with the following data: + * data[0] - Data identifier: 'list', 'add', 'delete', or 'dim'. + * data[1] - ID of the corresponding list. If data[0] is 'list', the type of list ('comment', 'category', etc). + * data[2] - ID of the parent element of all inputs necessary for the request. + * data[3] - Hex color to be used in this request. If data[0] is 'dim', dim class. + * data[4] - Additional arguments in query syntax that are added to the request. Example: 'post_id=1234'. + * If data[0] is 'dim', dim add color. + * data[5] - Only available if data[0] is 'dim', dim delete color. + * data[6] - Only available if data[0] is 'dim', additional arguments in query syntax that are added to the request. + * + * Result for Example 1: + * data[0] - delete + * data[1] - the-comment-list + * data[2] - comment-{comment_ID} + * data[3] - 66cc66 + * data[4] - unspam=1 + * + * @param {HTMLElement} element The DOM element. + * @param {string} type The type of data to look for: 'list', 'add', 'delete', or 'dim'. + * @returns {Array} Extracted list item data. */ - parseData: function(e,t) { - var d = [], wpListsData; + parseData: function( element, type ) { + var data = [], wpListsData; try { - wpListsData = $(e).attr('data-wp-lists') || ''; - wpListsData = wpListsData.match(new RegExp(t+':[\\S]+')); + wpListsData = $( element ).data( 'wp-lists' ) || ''; + wpListsData = wpListsData.match( new RegExp( type + ':[\\S]+' ) ); - if ( wpListsData ) - d = wpListsData[0].split(':'); - } catch(r) {} - - return d; - }, - - pre: function(e,s,a) { - var bg, r; - - s = $.extend( {}, this.wpList.settings, { - element: null, - nonce: 0, - target: e.get(0) - }, s || {} ); - - if ( $.isFunction( s.confirm ) ) { - if ( 'add' != a ) { - bg = $('#' + s.element).css('backgroundColor'); - $('#' + s.element).css('backgroundColor', '#FF9966'); + if ( wpListsData ) { + data = wpListsData[0].split( ':' ); } - r = s.confirm.call(this, e, s, a, bg); + } catch ( error ) {} - if ( 'add' != a ) - $('#' + s.element).css('backgroundColor', bg ); - - if ( !r ) - return false; - } - - return s; + return data; }, - ajaxAdd: function( e, s ) { - e = $(e); - s = s || {}; - var list = this, data = wpList.parseData(e,'add'), es, valid, formData, res, rres; + /** + * Calls a confirm callback to verify the action that is about to be performed. + * + * @param {HTMLElement} list The DOM element. + * @param {object} settings Settings for this list. + * @param {string} action The type of action to perform: 'add', 'delete', or 'dim'. + * @returns {object|boolean} Settings if confirmed, false if not. + */ + pre: function( list, settings, action ) { + var $element, backgroundColor, confirmed; - s = wpList.pre.call( list, e, s, 'add' ); + settings = $.extend( {}, this.wpList.settings, { + element: null, + nonce: 0, + target: list.get( 0 ) + }, settings || {} ); - s.element = data[2] || e.attr( 'id' ) || s.element || null; + if ( $.isFunction( settings.confirm ) ) { + $element = $( '#' + settings.element ); - if ( data[3] ) - s.addColor = '#' + data[3]; - else - s.addColor = s.addColor || '#FFFF33'; + if ( 'add' !== action ) { + backgroundColor = $element.css( 'backgroundColor' ); + $element.css( 'backgroundColor', '#ff9966' ); + } - if ( !s ) - return false; + confirmed = settings.confirm.call( this, list, settings, action, backgroundColor ); - if ( !e.is('[id="' + s.element + '-submit"]') ) - return !wpList.add.call( list, e, s ); + if ( 'add' !== action ) { + $element.css( 'backgroundColor', backgroundColor ); + } - if ( !s.element ) - return true; - - s.action = 'add-' + s.what; - - s.nonce = wpList.nonce(e,s); - - es = $('#' + s.element + ' :input').not('[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]'); - valid = wpAjax.validateForm( '#' + s.element ); - - if ( !valid ) - return false; - - s.data = $.param( $.extend( { _ajax_nonce: s.nonce, action: s.action }, wpAjax.unserialize( data[4] || '' ) ) ); - formData = $.isFunction(es.fieldSerialize) ? es.fieldSerialize() : es.serialize(); - - if ( formData ) - s.data += '&' + formData; - - if ( $.isFunction(s.addBefore) ) { - s = s.addBefore( s ); - if ( !s ) - return true; + if ( ! confirmed ) { + return false; + } } - if ( !s.data.match(/_ajax_nonce=[a-f0-9]+/) ) + return settings; + }, + + /** + * Adds an item to the list via AJAX. + * + * @param {HTMLElement} element The DOM element. + * @param {object} settings Settings for this list. + * @returns {boolean} Whether the item was added. + */ + ajaxAdd: function( element, settings ) { + var list = this, + $element = $( element ), + data = wpList.parseData( $element, 'add' ), + formValues, formData, parsedResponse, returnedResponse; + + settings = settings || {}; + settings = wpList.pre.call( list, $element, settings, 'add' ); + + settings.element = data[2] || $element.prop( 'id' ) || settings.element || null; + settings.addColor = data[3] ? '#' + data[3] : settings.addColor; + + if ( ! settings ) { + return false; + } + + if ( ! $element.is( '[id="' + settings.element + '-submit"]' ) ) { + return ! wpList.add.call( list, $element, settings ); + } + + if ( ! settings.element ) { return true; + } - s.success = function(r) { - res = wpAjax.parseAjaxResponse(r, s.response, s.element); + settings.action = 'add-' + settings.what; + settings.nonce = wpList.nonce( $element, settings ); - rres = r; + if ( ! wpAjax.validateForm( '#' + settings.element ) ) { + return false; + } - if ( !res || res.errors ) - return false; + settings.data = $.param( $.extend( { + _ajax_nonce: settings.nonce, + action: settings.action + }, wpAjax.unserialize( data[4] || '' ) ) ); - if ( true === res ) + formValues = $( '#' + settings.element + ' :input' ).not( '[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]' ); + formData = $.isFunction( formValues.fieldSerialize ) ? formValues.fieldSerialize() : formValues.serialize(); + + if ( formData ) { + settings.data += '&' + formData; + } + + if ( $.isFunction( settings.addBefore ) ) { + settings = settings.addBefore( settings ); + + if ( ! settings ) { return true; + } + } - jQuery.each( res.responses, function() { - wpList.add.call( list, this.data, $.extend( {}, s, { // this.firstChild.nodevalue - pos: this.position || 0, - id: this.id || 0, - oldId: this.oldId || null + if ( ! settings.data.match( /_ajax_nonce=[a-f0-9]+/ ) ) { + return true; + } + + settings.success = function( response ) { + parsedResponse = wpAjax.parseAjaxResponse( response, settings.response, settings.element ); + returnedResponse = response; + + if ( ! parsedResponse || parsedResponse.errors ) { + return false; + } + + if ( true === parsedResponse ) { + return true; + } + + $.each( parsedResponse.responses, function() { + wpList.add.call( list, this.data, $.extend( {}, settings, { // this.firstChild.nodevalue + position: this.position || 0, + id: this.id || 0, + oldId: this.oldId || null } ) ); } ); list.wpList.recolor(); - $(list).trigger( 'wpListAddEnd', [ s, list.wpList ] ); - wpList.clear.call(list,'#' + s.element); + $( list ).trigger( 'wpListAddEnd', [ settings, list.wpList ] ); + wpList.clear.call( list, '#' + settings.element ); }; - s.complete = function(x, st) { - if ( $.isFunction(s.addAfter) ) { - var _s = $.extend( { xml: x, status: st, parsed: res }, s ); - s.addAfter( rres, _s ); + settings.complete = function( jqXHR, status ) { + if ( $.isFunction( settings.addAfter ) ) { + settings.addAfter( returnedResponse, $.extend( { + xml: jqXHR, + status: status, + parsed: parsedResponse + }, settings ) ); } }; - $.ajax( s ); + $.ajax( settings ); + return false; }, /** * Delete an item in the list via AJAX. * - * @param {HTMLElement} e A DOM element containing item data. - * @param {Object} s - * @return {boolean} + * @param {HTMLElement} element A DOM element containing item data. + * @param {object} settings Settings for this list. + * @returns {boolean} Whether the item was deleted. */ - ajaxDel: function( e, s ) { - e = $(e); - s = s || {}; - var list = this, data = wpList.parseData(e,'delete'), element, res, rres; + ajaxDel: function( element, settings ) { + var list = this, + $element = $( element ), + data = wpList.parseData( $element, 'delete' ), + $eventTarget, parsedResponse, returnedResponse; - s = wpList.pre.call( list, e, s, 'delete' ); + settings = settings || {}; + settings = wpList.pre.call( list, $element, settings, 'delete' ); - s.element = data[2] || s.element || null; + settings.element = data[2] || settings.element || null; + settings.delColor = data[3] ? '#' + data[3] : settings.delColor; - if ( data[3] ) - s.delColor = '#' + data[3]; - else - s.delColor = s.delColor || '#faa'; - - if ( !s || !s.element ) + if ( ! settings || ! settings.element ) { return false; - - s.action = 'delete-' + s.what; - - s.nonce = wpList.nonce(e,s); - - s.data = $.extend( - { action: s.action, id: s.element.split('-').pop(), _ajax_nonce: s.nonce }, - wpAjax.unserialize( data[4] || '' ) - ); - - if ( $.isFunction(s.delBefore) ) { - s = s.delBefore( s, list ); - if ( !s ) - return true; } - if ( !s.data._ajax_nonce ) + settings.action = 'delete-' + settings.what; + settings.nonce = wpList.nonce( $element, settings ); + + settings.data = $.extend( { + _ajax_nonce: settings.nonce, + action: settings.action, + id: settings.element.split( '-' ).pop() + }, wpAjax.unserialize( data[4] || '' ) ); + + if ( $.isFunction( settings.delBefore ) ) { + settings = settings.delBefore( settings, list ); + + if ( ! settings ) { + return true; + } + } + + if ( ! settings.data._ajax_nonce ) { return true; + } - element = $('#' + s.element); + $eventTarget = $( '#' + settings.element ); - if ( 'none' != s.delColor ) { - element.css( 'backgroundColor', s.delColor ).fadeOut( 350, function(){ + if ( 'none' !== settings.delColor ) { + $eventTarget.css( 'backgroundColor', settings.delColor ).fadeOut( 350, function() { list.wpList.recolor(); - $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] ); - }); + $( list ).trigger( 'wpListDelEnd', [ settings, list.wpList ] ); + } ); } else { list.wpList.recolor(); - $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] ); + $( list ).trigger( 'wpListDelEnd', [ settings, list.wpList ] ); } - s.success = function(r) { - res = wpAjax.parseAjaxResponse(r, s.response, s.element); - rres = r; + settings.success = function( response ) { + parsedResponse = wpAjax.parseAjaxResponse( response, settings.response, settings.element ); + returnedResponse = response; + + if ( ! parsedResponse || parsedResponse.errors ) { + $eventTarget.stop().stop().css( 'backgroundColor', '#faa' ).show().queue( function() { + list.wpList.recolor(); + $( this ).dequeue(); + } ); - if ( !res || res.errors ) { - element.stop().stop().css( 'backgroundColor', '#faa' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } ); return false; } }; - s.complete = function(x, st) { - if ( $.isFunction(s.delAfter) ) { - element.queue( function() { - var _s = $.extend( { xml: x, status: st, parsed: res }, s ); - s.delAfter( rres, _s ); - }).dequeue(); + settings.complete = function( jqXHR, status ) { + if ( $.isFunction( settings.delAfter ) ) { + $eventTarget.queue( function() { + settings.delAfter( returnedResponse, $.extend( { + xml: jqXHR, + status: status, + parsed: parsedResponse + }, settings ) ); + } ).dequeue(); } }; - $.ajax( s ); + $.ajax( settings ); + return false; }, - ajaxDim: function( e, s ) { - if ( $(e).parent().css('display') == 'none' ) // Prevent hidden links from being clicked by hotkeys + /** + * Dim an item in the list via AJAX. + * + * @param {HTMLElement} element A DOM element containing item data. + * @param {object} settings Settings for this list. + * @returns {boolean} Whether the item was dim'ed. + */ + ajaxDim: function( element, settings ) { + var list = this, + $element = $( element ), + data = wpList.parseData( $element, 'dim' ), + $eventTarget, isClass, color, dimColor, parsedResponse, returnedResponse; + + // Prevent hidden links from being clicked by hotkeys. + if ( 'none' === $element.parent().css( 'display' ) ) { return false; + } - e = $(e); - s = s || {}; + settings = settings || {}; + settings = wpList.pre.call( list, $element, settings, 'dim' ); - var list = this, data = wpList.parseData(e,'dim'), element, isClass, color, dimColor, res, rres; + settings.element = data[2] || settings.element || null; + settings.dimClass = data[3] || settings.dimClass || null; + settings.dimAddColor = data[4] ? '#' + data[4] : settings.dimAddColor; + settings.dimDelColor = data[5] ? '#' + data[5] : settings.dimDelColor; - s = wpList.pre.call( list, e, s, 'dim' ); - - s.element = data[2] || s.element || null; - s.dimClass = data[3] || s.dimClass || null; - - if ( data[4] ) - s.dimAddColor = '#' + data[4]; - else - s.dimAddColor = s.dimAddColor || '#FFFF33'; - - if ( data[5] ) - s.dimDelColor = '#' + data[5]; - else - s.dimDelColor = s.dimDelColor || '#FF3333'; - - if ( !s || !s.element || !s.dimClass ) + if ( ! settings || ! settings.element || ! settings.dimClass ) { return true; + } - s.action = 'dim-' + s.what; + settings.action = 'dim-' + settings.what; + settings.nonce = wpList.nonce( $element, settings ); - s.nonce = wpList.nonce(e,s); + settings.data = $.extend( { + _ajax_nonce: settings.nonce, + action: settings.action, + id: settings.element.split( '-' ).pop(), + dimClass: settings.dimClass + }, wpAjax.unserialize( data[6] || '' ) ); - s.data = $.extend( - { action: s.action, id: s.element.split('-').pop(), dimClass: s.dimClass, _ajax_nonce : s.nonce }, - wpAjax.unserialize( data[6] || '' ) - ); + if ( $.isFunction( settings.dimBefore ) ) { + settings = settings.dimBefore( settings ); - if ( $.isFunction(s.dimBefore) ) { - s = s.dimBefore( s ); - if ( !s ) + if ( ! settings ) { return true; + } } - element = $('#' + s.element); - isClass = element.toggleClass(s.dimClass).is('.' + s.dimClass); - color = wpList.getColor( element ); - element.toggleClass( s.dimClass ); - dimColor = isClass ? s.dimAddColor : s.dimDelColor; + $eventTarget = $( '#' + settings.element ); + isClass = $eventTarget.toggleClass( settings.dimClass ).is( '.' + settings.dimClass ); + color = wpList.getColor( $eventTarget ); + dimColor = isClass ? settings.dimAddColor : settings.dimDelColor; + $eventTarget.toggleClass( settings.dimClass ); - if ( 'none' != dimColor ) { - element + if ( 'none' !== dimColor ) { + $eventTarget .animate( { backgroundColor: dimColor }, 'fast' ) - .queue( function() { element.toggleClass(s.dimClass); $(this).dequeue(); } ) - .animate( { backgroundColor: color }, { complete: function() { - $(this).css( 'backgroundColor', '' ); - $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] ); + .queue( function() { + $eventTarget.toggleClass( settings.dimClass ); + $( this ).dequeue(); + } ) + .animate( { backgroundColor: color }, { + complete: function() { + $( this ).css( 'backgroundColor', '' ); + $( list ).trigger( 'wpListDimEnd', [ settings, list.wpList ] ); } - }); + } ); } else { - $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] ); + $( list ).trigger( 'wpListDimEnd', [ settings, list.wpList ] ); } - if ( !s.data._ajax_nonce ) + if ( ! settings.data._ajax_nonce ) { return true; + } - s.success = function(r) { - res = wpAjax.parseAjaxResponse(r, s.response, s.element); - rres = r; + settings.success = function( response ) { + parsedResponse = wpAjax.parseAjaxResponse( response, settings.response, settings.element ); + returnedResponse = response; - if ( true === res ) { + if ( true === parsedResponse ) { return true; } - if ( ! res || res.errors ) { - element.stop().stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } ); + if ( ! parsedResponse || parsedResponse.errors ) { + $eventTarget.stop().stop().css( 'backgroundColor', '#ff3333' )[isClass ? 'removeClass' : 'addClass']( settings.dimClass ).show().queue( function() { + list.wpList.recolor(); + $( this ).dequeue(); + } ); + return false; } - if ( 'undefined' !== typeof res.responses[0].supplemental.comment_link ) { - var submittedOn = element.find( '.submitted-on' ), - commentLink = submittedOn.find( 'a' ); + /** @property {string} comment_link Link of the comment to be dimmed. */ + if ( 'undefined' !== typeof parsedResponse.responses[0].supplemental.comment_link ) { + var $submittedOn = $element.find( '.submitted-on' ), + $commentLink = $submittedOn.find( 'a' ); // Comment is approved; link the date field. - if ( '' !== res.responses[0].supplemental.comment_link ) { - submittedOn.html( $('
                ').text( submittedOn.text() ).prop( 'href', res.responses[0].supplemental.comment_link ) ); + if ( '' !== parsedResponse.responses[0].supplemental.comment_link ) { + $submittedOn.html( $('').text( $submittedOn.text() ).prop( 'href', parsedResponse.responses[0].supplemental.comment_link ) ); // Comment is not approved; unlink the date field. - } else if ( commentLink.length ) { - submittedOn.text( commentLink.text() ); + } else if ( $commentLink.length ) { + $submittedOn.text( $commentLink.text() ); } } }; - s.complete = function(x, st) { - if ( $.isFunction(s.dimAfter) ) { - element.queue( function() { - var _s = $.extend( { xml: x, status: st, parsed: res }, s ); - s.dimAfter( rres, _s ); - }).dequeue(); + settings.complete = function( jqXHR, status ) { + if ( $.isFunction( settings.dimAfter ) ) { + $eventTarget.queue( function() { + settings.dimAfter( returnedResponse, $.extend( { + xml: jqXHR, + status: status, + parsed: parsedResponse + }, settings ) ); + } ).dequeue(); } }; - $.ajax( s ); + $.ajax( settings ); + return false; }, - getColor: function( el ) { - var color = jQuery(el).css('backgroundColor'); - - return color || '#ffffff'; + /** + * Returns the background color of the passed element. + * + * @param {jQuery|string} element Element to check. + * @returns {string} Background color value in HEX. Default: '#ffffff'. + */ + getColor: function( element ) { + return $( element ).css( 'backgroundColor' ) || '#ffffff'; }, - add: function( e, s ) { - if ( 'string' == typeof e ) { - e = $( $.trim( e ) ); // Trim leading whitespaces - } else { - e = $( e ); + /** + * Adds something. + * + * @param {HTMLElement} element A DOM element containing item data. + * @param {object} settings Settings for this list. + * @returns {boolean} Whether the item was added. + */ + add: function( element, settings ) { + var $list = $( this ), + $element = $( element ), + old = false, + position, reference; + + if ( 'string' === typeof settings ) { + settings = { what: settings }; } - var list = $(this), old = false, _s = { pos: 0, id: 0, oldId: null }, ba, ref, color; + settings = $.extend( { position: 0, id: 0, oldId: null }, this.wpList.settings, settings ); - if ( 'string' == typeof s ) - s = { what: s }; - - s = $.extend(_s, this.wpList.settings, s); - - if ( !e.length || !s.what ) + if ( ! $element.length || ! settings.what ) { return false; + } - if ( s.oldId ) - old = $('#' + s.what + '-' + s.oldId); + if ( settings.oldId ) { + old = $( '#' + settings.what + '-' + settings.oldId ); + } - if ( s.id && ( s.id != s.oldId || !old || !old.length ) ) - $('#' + s.what + '-' + s.id).remove(); + if ( settings.id && ( settings.id !== settings.oldId || ! old || ! old.length ) ) { + $( '#' + settings.what + '-' + settings.id ).remove(); + } if ( old && old.length ) { - old.before(e); + old.before( $element ); old.remove(); - } else if ( isNaN(s.pos) ) { - ba = 'after'; - if ( '-' == s.pos.substr(0,1) ) { - s.pos = s.pos.substr(1); - ba = 'before'; + } else if ( isNaN( settings.position ) ) { + position = 'after'; + + if ( '-' === settings.position.substr( 0, 1 ) ) { + settings.position = settings.position.substr( 1 ); + position = 'before'; } - ref = list.find( '#' + s.pos ); + reference = $list.find( '#' + settings.position ); - if ( 1 === ref.length ) - ref[ba](e); - else - list.append(e); - - } else if ( 'comment' != s.what || 0 === $('#' + s.element).length ) { - if ( s.pos < 0 ) { - list.prepend(e); + if ( 1 === reference.length ) { + reference[position]( $element ); } else { - list.append(e); + $list.append( $element ); + } + + } else if ( 'comment' !== settings.what || 0 === $( '#' + settings.element ).length ) { + if ( settings.position < 0 ) { + $list.prepend( $element ); + } else { + $list.append( $element ); } } - if ( s.alt ) { - if ( ( list.children(':visible').index( e[0] ) + s.altOffset ) % 2 ) { e.removeClass( s.alt ); } - else { e.addClass( s.alt ); } + if ( settings.alt ) { + $element.toggleClass( settings.alt, ( $list.children( ':visible' ).index( $element[0] ) + settings.altOffset ) % 2 ); } - if ( 'none' != s.addColor ) { - color = wpList.getColor( e ); - e.css( 'backgroundColor', s.addColor ).animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); } } ); + if ( 'none' !== settings.addColor ) { + $element.css( 'backgroundColor', settings.addColor ).animate( { backgroundColor: wpList.getColor( $element ) }, { + complete: function() { + $( this ).css( 'backgroundColor', '' ); + } + } ); } - list.each( function() { this.wpList.process( e ); } ); - return e; + + // Add event handlers. + $list.each( function( index, list ) { + list.wpList.process( $element ); + } ); + + return $element; }, - clear: function(e) { - var list = this, t, tag; + /** + * Clears all input fields within the element passed. + * + * @param {string} elementId ID of the element to check, including leading #. + */ + clear: function( elementId ) { + var list = this, + $element = $( elementId ), + type, tagName; - e = $(e); - - if ( list.wpList && e.parents( '#' + list.id ).length ) + // Bail if we're within the list. + if ( list.wpList && $element.parents( '#' + list.id ).length ) { return; + } - e.find(':input').each( function() { - if ( $(this).parents('.form-no-clear').length ) + // Check each input field. + $element.find( ':input' ).each( function( index, input ) { + + // Bail if the form was marked to not to be cleared. + if ( $( input ).parents( '.form-no-clear' ).length ) { return; + } - t = this.type.toLowerCase(); - tag = this.tagName.toLowerCase(); + type = input.type.toLowerCase(); + tagName = input.tagName.toLowerCase(); - if ( 'text' == t || 'password' == t || 'textarea' == tag ) - this.value = ''; - else if ( 'checkbox' == t || 'radio' == t ) - this.checked = false; - else if ( 'select' == tag ) - this.selectedIndex = null; - }); + if ( 'text' === type || 'password' === type || 'textarea' === tagName ) { + input.value = ''; + + } else if ( 'checkbox' === type || 'radio' === type ) { + input.checked = false; + + } else if ( 'select' === tagName ) { + input.selectedIndex = null; + } + } ); }, - process: function(el) { - var list = this, - $el = $(el || document); + /** + * Registers event handlers to add, delete, and dim items. + * + * @param {string} elementId + */ + process: function( elementId ) { + var list = this, + $element = $( elementId || document ); - $el.delegate( 'form[data-wp-lists^="add:' + list.id + ':"]', 'submit', function(){ - return list.wpList.add(this); - }); + $element.on( 'submit', 'form[data-wp-lists^="add:' + list.id + ':"]', function() { + return list.wpList.add( this ); + } ); - $el.delegate( 'a[data-wp-lists^="add:' + list.id + ':"], input[data-wp-lists^="add:' + list.id + ':"]', 'click', function(){ - return list.wpList.add(this); - }); + $element.on( 'click', 'a[data-wp-lists^="add:' + list.id + ':"], input[data-wp-lists^="add:' + list.id + ':"]', function() { + return list.wpList.add( this ); + } ); - $el.delegate( '[data-wp-lists^="delete:' + list.id + ':"]', 'click', function(){ - return list.wpList.del(this); - }); + $element.on( 'click', '[data-wp-lists^="delete:' + list.id + ':"]', function() { + return list.wpList.del( this ); + } ); - $el.delegate( '[data-wp-lists^="dim:' + list.id + ':"]', 'click', function(){ - return list.wpList.dim(this); - }); + $element.on( 'click', '[data-wp-lists^="dim:' + list.id + ':"]', function() { + return list.wpList.dim( this ); + } ); }, + /** + * Updates list item background colors. + */ recolor: function() { - var list = this, items, eo; + var list = this, + evenOdd = [':even', ':odd'], + items; - if ( !list.wpList.settings.alt ) + // Bail if there is no alternate class name specified. + if ( ! list.wpList.settings.alt ) { return; + } - items = $('.list-item:visible', list); + items = $( '.list-item:visible', list ); - if ( !items.length ) - items = $(list).children(':visible'); + if ( ! items.length ) { + items = $( list ).children( ':visible' ); + } - eo = [':even',':odd']; + if ( list.wpList.settings.altOffset % 2 ) { + evenOdd.reverse(); + } - if ( list.wpList.settings.altOffset % 2 ) - eo.reverse(); - - items.filter(eo[0]).addClass(list.wpList.settings.alt).end().filter(eo[1]).removeClass(list.wpList.settings.alt); + items.filter( evenOdd[0] ).addClass( list.wpList.settings.alt ).end(); + items.filter( evenOdd[1] ).removeClass( list.wpList.settings.alt ); }, + /** + * Sets up `process()` and `recolor()` functions. + */ init: function() { - var lists = this; + var $list = this; - lists.wpList.process = function(a) { - lists.each( function() { - this.wpList.process(a); + $list.wpList.process = function( element ) { + $list.each( function() { + this.wpList.process( element ); } ); }; - lists.wpList.recolor = function() { - lists.each( function() { + $list.wpList.recolor = function() { + $list.each( function() { this.wpList.recolor(); } ); }; } }; +/** + * Initializes wpList object. + * + * @param {Object} settings + * @param {string} settings.url URL for ajax calls. Default: ajaxurl. + * @param {string} settings.type The HTTP method to use for Ajax requests. Default: 'POST'. + * @param {string} settings.response ID of the element the parsed ajax response will be stored in. + * Default: 'ajax-response'. + * + * @param {string} settings.what Default: ''. + * @param {string} settings.alt CSS class name for alternate styling. Default: 'alternate'. + * @param {number} settings.altOffset Offset to start alternate styling from. Default: 0. + * @param {string} settings.addColor Hex code or 'none' to disable animation. Default: '#ffff33'. + * @param {string} settings.delColor Hex code or 'none' to disable animation. Default: '#faafaa'. + * @param {string} settings.dimAddColor Hex code or 'none' to disable animation. Default: '#ffff33'. + * @param {string} settings.dimDelColor Hex code or 'none' to disable animation. Default: '#ff3333'. + * + * @param {wpList~confirm} settings.confirm Callback that's run before a request is made. Default: null. + * @param {wpList~addBefore} settings.addBefore Callback that's run before an item gets added to the list. + * Default: null. + * @param {wpList~addAfter} settings.addAfter Callback that's run after an item got added to the list. + * Default: null. + * @param {wpList~delBefore} settings.delBefore Callback that's run before an item gets deleted from the list. + * Default: null. + * @param {wpList~delAfter} settings.delAfter Callback that's run after an item got deleted from the list. + * Default: null. + * @param {wpList~dimBefore} settings.dimBefore Callback that's run before an item gets dim'd. Default: null. + * @param {wpList~dimAfter} settings.dimAfter Callback that's run after an item got dim'd. Default: null. + * @returns {$.fn} wpList API function. + */ $.fn.wpList = function( settings ) { - this.each( function() { - var _this = this; + this.each( function( index, list ) { + list.wpList = { + settings: $.extend( {}, wpList.settings, { what: wpList.parseData( list, 'list' )[1] || '' }, settings ) + }; - this.wpList = { settings: $.extend( {}, wpList.settings, { what: wpList.parseData(this,'list')[1] || '' }, settings ) }; - $.each( fs, function(i,f) { _this.wpList[i] = function( e, s ) { return wpList[f].call( _this, e, s ); }; } ); + $.each( functions, function( func, callback ) { + list.wpList[func] = function( element, setting ) { + return wpList[callback].call( list, element, setting ); + }; + } ); } ); - wpList.init.call(this); - + wpList.init.call( this ); this.wpList.process(); return this; }; - -})(jQuery); +} ) ( jQuery ); diff --git a/wp/wp-includes/js/wp-lists.min.js b/wp/wp-includes/js/wp-lists.min.js index 719aa1ae..4e8493a8 100644 --- a/wp/wp-includes/js/wp-lists.min.js +++ b/wp/wp-includes/js/wp-lists.min.js @@ -1 +1 @@ -!function(a){var b,c={add:"ajaxAdd",del:"ajaxDel",dim:"ajaxDim",process:"process",recolor:"recolor"};b={settings:{url:ajaxurl,type:"POST",response:"ajax-response",what:"",alt:"alternate",altOffset:0,addColor:null,delColor:null,dimAddColor:null,dimDelColor:null,confirm:null,addBefore:null,addAfter:null,delBefore:null,delAfter:null,dimBefore:null,dimAfter:null},nonce:function(b,c){var d=wpAjax.unserialize(b.attr("href"));return c.nonce||d._ajax_nonce||a("#"+c.element+' input[name="_ajax_nonce"]').val()||d._wpnonce||a("#"+c.element+' input[name="_wpnonce"]').val()||0},parseData:function(b,c){var d,e=[];try{d=a(b).attr("data-wp-lists")||"",d=d.match(new RegExp(c+":[\\S]+")),d&&(e=d[0].split(":"))}catch(f){}return e},pre:function(b,c,d){var e,f;return c=a.extend({},this.wpList.settings,{element:null,nonce:0,target:b.get(0)},c||{}),!(a.isFunction(c.confirm)&&("add"!=d&&(e=a("#"+c.element).css("backgroundColor"),a("#"+c.element).css("backgroundColor","#FF9966")),f=c.confirm.call(this,b,c,d,e),"add"!=d&&a("#"+c.element).css("backgroundColor",e),!f))&&c},ajaxAdd:function(c,d){c=a(c),d=d||{};var e,f,g,h,i,j=this,k=b.parseData(c,"add");return d=b.pre.call(j,c,d,"add"),d.element=k[2]||c.attr("id")||d.element||null,k[3]?d.addColor="#"+k[3]:d.addColor=d.addColor||"#FFFF33",!!d&&(c.is('[id="'+d.element+'-submit"]')?!d.element||(d.action="add-"+d.what,d.nonce=b.nonce(c,d),e=a("#"+d.element+" :input").not('[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]'),!!(f=wpAjax.validateForm("#"+d.element))&&(d.data=a.param(a.extend({_ajax_nonce:d.nonce,action:d.action},wpAjax.unserialize(k[4]||""))),g=a.isFunction(e.fieldSerialize)?e.fieldSerialize():e.serialize(),g&&(d.data+="&"+g),!(!a.isFunction(d.addBefore)||(d=d.addBefore(d)))||(!d.data.match(/_ajax_nonce=[a-f0-9]+/)||(d.success=function(c){return h=wpAjax.parseAjaxResponse(c,d.response,d.element),i=c,!(!h||h.errors)&&(!0===h||(jQuery.each(h.responses,function(){b.add.call(j,this.data,a.extend({},d,{pos:this.position||0,id:this.id||0,oldId:this.oldId||null}))}),j.wpList.recolor(),a(j).trigger("wpListAddEnd",[d,j.wpList]),void b.clear.call(j,"#"+d.element)))},d.complete=function(b,c){if(a.isFunction(d.addAfter)){var e=a.extend({xml:b,status:c,parsed:h},d);d.addAfter(i,e)}},a.ajax(d),!1)))):!b.add.call(j,c,d))},ajaxDel:function(c,d){c=a(c),d=d||{};var e,f,g,h=this,i=b.parseData(c,"delete");return d=b.pre.call(h,c,d,"delete"),d.element=i[2]||d.element||null,i[3]?d.delColor="#"+i[3]:d.delColor=d.delColor||"#faa",!(!d||!d.element)&&(d.action="delete-"+d.what,d.nonce=b.nonce(c,d),d.data=a.extend({action:d.action,id:d.element.split("-").pop(),_ajax_nonce:d.nonce},wpAjax.unserialize(i[4]||"")),!(!a.isFunction(d.delBefore)||(d=d.delBefore(d,h)))||(!d.data._ajax_nonce||(e=a("#"+d.element),"none"!=d.delColor?e.css("backgroundColor",d.delColor).fadeOut(350,function(){h.wpList.recolor(),a(h).trigger("wpListDelEnd",[d,h.wpList])}):(h.wpList.recolor(),a(h).trigger("wpListDelEnd",[d,h.wpList])),d.success=function(b){if(f=wpAjax.parseAjaxResponse(b,d.response,d.element),g=b,!f||f.errors)return e.stop().stop().css("backgroundColor","#faa").show().queue(function(){h.wpList.recolor(),a(this).dequeue()}),!1},d.complete=function(b,c){a.isFunction(d.delAfter)&&e.queue(function(){var e=a.extend({xml:b,status:c,parsed:f},d);d.delAfter(g,e)}).dequeue()},a.ajax(d),!1)))},ajaxDim:function(c,d){if("none"==a(c).parent().css("display"))return!1;c=a(c),d=d||{};var e,f,g,h,i,j,k=this,l=b.parseData(c,"dim");return d=b.pre.call(k,c,d,"dim"),d.element=l[2]||d.element||null,d.dimClass=l[3]||d.dimClass||null,l[4]?d.dimAddColor="#"+l[4]:d.dimAddColor=d.dimAddColor||"#FFFF33",l[5]?d.dimDelColor="#"+l[5]:d.dimDelColor=d.dimDelColor||"#FF3333",!(d&&d.element&&d.dimClass)||(d.action="dim-"+d.what,d.nonce=b.nonce(c,d),d.data=a.extend({action:d.action,id:d.element.split("-").pop(),dimClass:d.dimClass,_ajax_nonce:d.nonce},wpAjax.unserialize(l[6]||"")),!(!a.isFunction(d.dimBefore)||(d=d.dimBefore(d)))||(e=a("#"+d.element),f=e.toggleClass(d.dimClass).is("."+d.dimClass),g=b.getColor(e),e.toggleClass(d.dimClass),h=f?d.dimAddColor:d.dimDelColor,"none"!=h?e.animate({backgroundColor:h},"fast").queue(function(){e.toggleClass(d.dimClass),a(this).dequeue()}).animate({backgroundColor:g},{complete:function(){a(this).css("backgroundColor",""),a(k).trigger("wpListDimEnd",[d,k.wpList])}}):a(k).trigger("wpListDimEnd",[d,k.wpList]),!d.data._ajax_nonce||(d.success=function(b){if(i=wpAjax.parseAjaxResponse(b,d.response,d.element),j=b,!0===i)return!0;if(!i||i.errors)return e.stop().stop().css("backgroundColor","#FF3333")[f?"removeClass":"addClass"](d.dimClass).show().queue(function(){k.wpList.recolor(),a(this).dequeue()}),!1;if("undefined"!=typeof i.responses[0].supplemental.comment_link){var c=e.find(".submitted-on"),g=c.find("a");""!==i.responses[0].supplemental.comment_link?c.html(a("").text(c.text()).prop("href",i.responses[0].supplemental.comment_link)):g.length&&c.text(g.text())}},d.complete=function(b,c){a.isFunction(d.dimAfter)&&e.queue(function(){var e=a.extend({xml:b,status:c,parsed:i},d);d.dimAfter(j,e)}).dequeue()},a.ajax(d),!1)))},getColor:function(a){var b=jQuery(a).css("backgroundColor");return b||"#ffffff"},add:function(c,d){c=a("string"==typeof c?a.trim(c):c);var e,f,g,h=a(this),i=!1,j={pos:0,id:0,oldId:null};return"string"==typeof d&&(d={what:d}),d=a.extend(j,this.wpList.settings,d),!(!c.length||!d.what)&&(d.oldId&&(i=a("#"+d.what+"-"+d.oldId)),!d.id||d.id==d.oldId&&i&&i.length||a("#"+d.what+"-"+d.id).remove(),i&&i.length?(i.before(c),i.remove()):isNaN(d.pos)?(e="after","-"==d.pos.substr(0,1)&&(d.pos=d.pos.substr(1),e="before"),f=h.find("#"+d.pos),1===f.length?f[e](c):h.append(c)):"comment"==d.what&&0!==a("#"+d.element).length||(d.pos<0?h.prepend(c):h.append(c)),d.alt&&((h.children(":visible").index(c[0])+d.altOffset)%2?c.removeClass(d.alt):c.addClass(d.alt)),"none"!=d.addColor&&(g=b.getColor(c),c.css("backgroundColor",d.addColor).animate({backgroundColor:g},{complete:function(){a(this).css("backgroundColor","")}})),h.each(function(){this.wpList.process(c)}),c)},clear:function(b){var c,d,e=this;b=a(b),e.wpList&&b.parents("#"+e.id).length||b.find(":input").each(function(){a(this).parents(".form-no-clear").length||(c=this.type.toLowerCase(),d=this.tagName.toLowerCase(),"text"==c||"password"==c||"textarea"==d?this.value="":"checkbox"==c||"radio"==c?this.checked=!1:"select"==d&&(this.selectedIndex=null))})},process:function(b){var c=this,d=a(b||document);d.delegate('form[data-wp-lists^="add:'+c.id+':"]',"submit",function(){return c.wpList.add(this)}),d.delegate('a[data-wp-lists^="add:'+c.id+':"], input[data-wp-lists^="add:'+c.id+':"]',"click",function(){return c.wpList.add(this)}),d.delegate('[data-wp-lists^="delete:'+c.id+':"]',"click",function(){return c.wpList.del(this)}),d.delegate('[data-wp-lists^="dim:'+c.id+':"]',"click",function(){return c.wpList.dim(this)})},recolor:function(){var b,c,d=this;d.wpList.settings.alt&&(b=a(".list-item:visible",d),b.length||(b=a(d).children(":visible")),c=[":even",":odd"],d.wpList.settings.altOffset%2&&c.reverse(),b.filter(c[0]).addClass(d.wpList.settings.alt).end().filter(c[1]).removeClass(d.wpList.settings.alt))},init:function(){var a=this;a.wpList.process=function(b){a.each(function(){this.wpList.process(b)})},a.wpList.recolor=function(){a.each(function(){this.wpList.recolor()})}}},a.fn.wpList=function(d){return this.each(function(){var e=this;this.wpList={settings:a.extend({},b.settings,{what:b.parseData(this,"list")[1]||""},d)},a.each(c,function(a,c){e.wpList[a]=function(a,d){return b[c].call(e,a,d)}})}),b.init.call(this),this.wpList.process(),this}}(jQuery); \ No newline at end of file +!function(a){var b,c={add:"ajaxAdd",del:"ajaxDel",dim:"ajaxDim",process:"process",recolor:"recolor"};b={settings:{url:ajaxurl,type:"POST",response:"ajax-response",what:"",alt:"alternate",altOffset:0,addColor:"#ffff33",delColor:"#faafaa",dimAddColor:"#ffff33",dimDelColor:"#ff3333",confirm:null,addBefore:null,addAfter:null,delBefore:null,delAfter:null,dimBefore:null,dimAfter:null},nonce:function(b,c){var d=wpAjax.unserialize(b.attr("href")),e=a("#"+c.element);return c.nonce||d._ajax_nonce||e.find('input[name="_ajax_nonce"]').val()||d._wpnonce||e.find('input[name="_wpnonce"]').val()||0},parseData:function(b,c){var d,e=[];try{d=a(b).data("wp-lists")||"",d=d.match(new RegExp(c+":[\\S]+")),d&&(e=d[0].split(":"))}catch(f){}return e},pre:function(b,c,d){var e,f,g;return c=a.extend({},this.wpList.settings,{element:null,nonce:0,target:b.get(0)},c||{}),!(a.isFunction(c.confirm)&&(e=a("#"+c.element),"add"!==d&&(f=e.css("backgroundColor"),e.css("backgroundColor","#ff9966")),g=c.confirm.call(this,b,c,d,f),"add"!==d&&e.css("backgroundColor",f),!g))&&c},ajaxAdd:function(c,d){var e,f,g,h,i=this,j=a(c),k=b.parseData(j,"add");return d=d||{},d=b.pre.call(i,j,d,"add"),d.element=k[2]||j.prop("id")||d.element||null,d.addColor=k[3]?"#"+k[3]:d.addColor,!!d&&(j.is('[id="'+d.element+'-submit"]')?!d.element||(d.action="add-"+d.what,d.nonce=b.nonce(j,d),!!wpAjax.validateForm("#"+d.element)&&(d.data=a.param(a.extend({_ajax_nonce:d.nonce,action:d.action},wpAjax.unserialize(k[4]||""))),e=a("#"+d.element+" :input").not('[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]'),f=a.isFunction(e.fieldSerialize)?e.fieldSerialize():e.serialize(),f&&(d.data+="&"+f),!(!a.isFunction(d.addBefore)||(d=d.addBefore(d)))||(!d.data.match(/_ajax_nonce=[a-f0-9]+/)||(d.success=function(c){return g=wpAjax.parseAjaxResponse(c,d.response,d.element),h=c,!(!g||g.errors)&&(!0===g||(a.each(g.responses,function(){b.add.call(i,this.data,a.extend({},d,{position:this.position||0,id:this.id||0,oldId:this.oldId||null}))}),i.wpList.recolor(),a(i).trigger("wpListAddEnd",[d,i.wpList]),void b.clear.call(i,"#"+d.element)))},d.complete=function(b,c){a.isFunction(d.addAfter)&&d.addAfter(h,a.extend({xml:b,status:c,parsed:g},d))},a.ajax(d),!1)))):!b.add.call(i,j,d))},ajaxDel:function(c,d){var e,f,g,h=this,i=a(c),j=b.parseData(i,"delete");return d=d||{},d=b.pre.call(h,i,d,"delete"),d.element=j[2]||d.element||null,d.delColor=j[3]?"#"+j[3]:d.delColor,!(!d||!d.element)&&(d.action="delete-"+d.what,d.nonce=b.nonce(i,d),d.data=a.extend({_ajax_nonce:d.nonce,action:d.action,id:d.element.split("-").pop()},wpAjax.unserialize(j[4]||"")),!(!a.isFunction(d.delBefore)||(d=d.delBefore(d,h)))||(!d.data._ajax_nonce||(e=a("#"+d.element),"none"!==d.delColor?e.css("backgroundColor",d.delColor).fadeOut(350,function(){h.wpList.recolor(),a(h).trigger("wpListDelEnd",[d,h.wpList])}):(h.wpList.recolor(),a(h).trigger("wpListDelEnd",[d,h.wpList])),d.success=function(b){if(f=wpAjax.parseAjaxResponse(b,d.response,d.element),g=b,!f||f.errors)return e.stop().stop().css("backgroundColor","#faa").show().queue(function(){h.wpList.recolor(),a(this).dequeue()}),!1},d.complete=function(b,c){a.isFunction(d.delAfter)&&e.queue(function(){d.delAfter(g,a.extend({xml:b,status:c,parsed:f},d))}).dequeue()},a.ajax(d),!1)))},ajaxDim:function(c,d){var e,f,g,h,i,j,k=this,l=a(c),m=b.parseData(l,"dim");return"none"!==l.parent().css("display")&&(d=d||{},d=b.pre.call(k,l,d,"dim"),d.element=m[2]||d.element||null,d.dimClass=m[3]||d.dimClass||null,d.dimAddColor=m[4]?"#"+m[4]:d.dimAddColor,d.dimDelColor=m[5]?"#"+m[5]:d.dimDelColor,!(d&&d.element&&d.dimClass)||(d.action="dim-"+d.what,d.nonce=b.nonce(l,d),d.data=a.extend({_ajax_nonce:d.nonce,action:d.action,id:d.element.split("-").pop(),dimClass:d.dimClass},wpAjax.unserialize(m[6]||"")),!(!a.isFunction(d.dimBefore)||(d=d.dimBefore(d)))||(e=a("#"+d.element),f=e.toggleClass(d.dimClass).is("."+d.dimClass),g=b.getColor(e),h=f?d.dimAddColor:d.dimDelColor,e.toggleClass(d.dimClass),"none"!==h?e.animate({backgroundColor:h},"fast").queue(function(){e.toggleClass(d.dimClass),a(this).dequeue()}).animate({backgroundColor:g},{complete:function(){a(this).css("backgroundColor",""),a(k).trigger("wpListDimEnd",[d,k.wpList])}}):a(k).trigger("wpListDimEnd",[d,k.wpList]),!d.data._ajax_nonce||(d.success=function(b){if(i=wpAjax.parseAjaxResponse(b,d.response,d.element),j=b,!0===i)return!0;if(!i||i.errors)return e.stop().stop().css("backgroundColor","#ff3333")[f?"removeClass":"addClass"](d.dimClass).show().queue(function(){k.wpList.recolor(),a(this).dequeue()}),!1;if("undefined"!=typeof i.responses[0].supplemental.comment_link){var c=l.find(".submitted-on"),g=c.find("a");""!==i.responses[0].supplemental.comment_link?c.html(a("").text(c.text()).prop("href",i.responses[0].supplemental.comment_link)):g.length&&c.text(g.text())}},d.complete=function(b,c){a.isFunction(d.dimAfter)&&e.queue(function(){d.dimAfter(j,a.extend({xml:b,status:c,parsed:i},d))}).dequeue()},a.ajax(d),!1))))},getColor:function(b){return a(b).css("backgroundColor")||"#ffffff"},add:function(c,d){var e,f,g=a(this),h=a(c),i=!1;return"string"==typeof d&&(d={what:d}),d=a.extend({position:0,id:0,oldId:null},this.wpList.settings,d),!(!h.length||!d.what)&&(d.oldId&&(i=a("#"+d.what+"-"+d.oldId)),!d.id||d.id===d.oldId&&i&&i.length||a("#"+d.what+"-"+d.id).remove(),i&&i.length?(i.before(h),i.remove()):isNaN(d.position)?(e="after","-"===d.position.substr(0,1)&&(d.position=d.position.substr(1),e="before"),f=g.find("#"+d.position),1===f.length?f[e](h):g.append(h)):"comment"===d.what&&0!==a("#"+d.element).length||(d.position<0?g.prepend(h):g.append(h)),d.alt&&h.toggleClass(d.alt,(g.children(":visible").index(h[0])+d.altOffset)%2),"none"!==d.addColor&&h.css("backgroundColor",d.addColor).animate({backgroundColor:b.getColor(h)},{complete:function(){a(this).css("backgroundColor","")}}),g.each(function(a,b){b.wpList.process(h)}),h)},clear:function(b){var c,d,e=this,f=a(b);e.wpList&&f.parents("#"+e.id).length||f.find(":input").each(function(b,e){a(e).parents(".form-no-clear").length||(c=e.type.toLowerCase(),d=e.tagName.toLowerCase(),"text"===c||"password"===c||"textarea"===d?e.value="":"checkbox"===c||"radio"===c?e.checked=!1:"select"===d&&(e.selectedIndex=null))})},process:function(b){var c=this,d=a(b||document);d.on("submit",'form[data-wp-lists^="add:'+c.id+':"]',function(){return c.wpList.add(this)}),d.on("click",'a[data-wp-lists^="add:'+c.id+':"], input[data-wp-lists^="add:'+c.id+':"]',function(){return c.wpList.add(this)}),d.on("click",'[data-wp-lists^="delete:'+c.id+':"]',function(){return c.wpList.del(this)}),d.on("click",'[data-wp-lists^="dim:'+c.id+':"]',function(){return c.wpList.dim(this)})},recolor:function(){var b,c=this,d=[":even",":odd"];c.wpList.settings.alt&&(b=a(".list-item:visible",c),b.length||(b=a(c).children(":visible")),c.wpList.settings.altOffset%2&&d.reverse(),b.filter(d[0]).addClass(c.wpList.settings.alt).end(),b.filter(d[1]).removeClass(c.wpList.settings.alt))},init:function(){var a=this;a.wpList.process=function(b){a.each(function(){this.wpList.process(b)})},a.wpList.recolor=function(){a.each(function(){this.wpList.recolor()})}}},a.fn.wpList=function(d){return this.each(function(e,f){f.wpList={settings:a.extend({},b.settings,{what:b.parseData(f,"list")[1]||""},d)},a.each(c,function(a,c){f.wpList[a]=function(a,d){return b[c].call(f,a,d)}})}),b.init.call(this),this.wpList.process(),this}}(jQuery); \ No newline at end of file diff --git a/wp/wp-includes/js/wplink.js b/wp/wp-includes/js/wplink.js index db03036f..1318632c 100644 --- a/wp/wp-includes/js/wplink.js +++ b/wp/wp-includes/js/wplink.js @@ -125,10 +125,6 @@ var wpLink; } else { editor = null; } - - if ( editor && window.tinymce.isIE ) { - editor.windowManager.wplinkBookmark = editor.selection.getBookmark(); - } } if ( ! wpLink.isMCE() && document.selection ) { @@ -306,10 +302,15 @@ var wpLink; getAttrs: function() { wpLink.correctURL(); - return { - href: $.trim( inputs.url.val() ), - target: inputs.openInNewTab.prop( 'checked' ) ? '_blank' : '' + var attrs = { + href: $.trim( inputs.url.val() ) }; + + if ( inputs.openInNewTab.prop( 'checked' ) ) { + attrs.target = '_blank'; + } + + return attrs; }, buildHtml: function(attrs) { @@ -391,12 +392,7 @@ var wpLink; mceUpdate: function() { var attrs = wpLink.getAttrs(), - link, text; - - if ( window.tinymce.isIE && editor.windowManager.wplinkBookmark ) { - editor.selection.moveToBookmark( editor.windowManager.wplinkBookmark ); - editor.windowManager.wplinkBookmark = null; - } + $link, text, hasText, $mceCaret; if ( ! attrs.href ) { editor.execCommand( 'unlink' ); @@ -404,40 +400,54 @@ var wpLink; return; } - link = getLink(); + $link = editor.$( getLink() ); - if ( inputs.wrap.hasClass( 'has-text-field' ) ) { - text = inputs.text.val() || attrs.href; - } - - if ( link ) { - if ( text ) { - if ( 'innerText' in link ) { - link.innerText = text; - } else { - link.textContent = text; - } + editor.undoManager.transact( function() { + if ( ! $link.length ) { + editor.execCommand( 'mceInsertLink', false, { href: '_wp_link_placeholder', 'data-wp-temp-link': 1 } ); + $link = editor.$( 'a[data-wp-temp-link="1"]' ).removeAttr( 'data-wp-temp-link' ); + hasText = $.trim( $link.text() ); } - // Not editing any more - attrs['data-wplink-edit'] = null; - editor.dom.setAttribs( link, attrs ); - } else { - if ( text ) { - editor.selection.setNode( editor.dom.create( 'a', attrs, editor.dom.encode( text ) ) ); + if ( ! $link.length ) { + editor.execCommand( 'unlink' ); } else { - editor.execCommand( 'mceInsertLink', false, attrs ); + if ( inputs.wrap.hasClass( 'has-text-field' ) ) { + text = inputs.text.val(); + + if ( text ) { + $link.text( text ); + } else if ( ! hasText ) { + $link.text( attrs.href ); + } + } + + attrs['data-wplink-edit'] = null; + attrs['data-mce-href'] = null; // attrs.href + $link.attr( attrs ); } - } + } ); wpLink.close( 'noReset' ); editor.focus(); - editor.nodeChanged(); - if ( link && editor.plugins.wplink ) { - editor.plugins.wplink.checkLink( link ); + if ( $link.length ) { + $mceCaret = $link.parent( '#_mce_caret' ); + + if ( $mceCaret.length ) { + $mceCaret.before( $link.removeAttr( 'data-mce-bogus' ) ); + } + + editor.selection.select( $link[0] ); + editor.selection.collapse(); + + if ( editor.plugins.wplink ) { + editor.plugins.wplink.checkLink( $link[0] ); + } } + editor.nodeChanged(); + // Audible confirmation message when a link has been inserted in the Editor. wp.a11y.speak( wpLinkL10n.linkInserted ); }, diff --git a/wp/wp-includes/js/wplink.min.js b/wp/wp-includes/js/wplink.min.js index 327bcbd7..c93abca8 100644 --- a/wp/wp-includes/js/wplink.min.js +++ b/wp/wp-includes/js/wplink.min.js @@ -1 +1 @@ -var wpLink;!function(a,b,c){function d(){return j||e.dom.getParent(e.selection.getNode(),"a[href]")}var e,f,g,h,i,j,k=/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,63}$/i,l=/^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,63}[^ "]*$/i,m={},n={},o="ontouchend"in document;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",modalOpen:!1,init:function(){m.wrap=a("#wp-link-wrap"),m.dialog=a("#wp-link"),m.backdrop=a("#wp-link-backdrop"),m.submit=a("#wp-link-submit"),m.close=a("#wp-link-close"),m.text=a("#wp-link-text"),m.url=a("#wp-link-url"),m.nonce=a("#_ajax_linking_nonce"),m.openInNewTab=a("#wp-link-target"),m.search=a("#wp-link-search"),n.search=new g(a("#search-results")),n.recent=new g(a("#most-recent-results")),n.elements=m.dialog.find(".query-results"),m.queryNotice=a("#query-notice-message"),m.queryNoticeTextDefault=m.queryNotice.find(".query-notice-default"),m.queryNoticeTextHint=m.queryNotice.find(".query-notice-hint"),m.dialog.keydown(wpLink.keydown),m.dialog.keyup(wpLink.keyup),m.submit.click(function(a){a.preventDefault(),wpLink.update()}),m.close.add(m.backdrop).add("#wp-link-cancel button").click(function(a){a.preventDefault(),wpLink.close()}),n.elements.on("river-select",wpLink.updateFields),m.search.on("focus.wplink",function(){m.queryNoticeTextDefault.hide(),m.queryNoticeTextHint.removeClass("screen-reader-text").show()}).on("blur.wplink",function(){m.queryNoticeTextDefault.show(),m.queryNoticeTextHint.addClass("screen-reader-text").hide()}),m.search.on("keyup input",function(){window.clearTimeout(f),f=window.setTimeout(function(){wpLink.searchInternalLinks()},500)}),m.url.on("paste",function(){setTimeout(wpLink.correctURL,0)}),m.url.on("blur",wpLink.correctURL)},correctURL:function(){var b=a.trim(m.url.val());b&&i!==b&&!/^(?:[a-z]+:|#|\?|\.|\/)/.test(b)&&(m.url.val("http://"+b),i=b)},open:function(b,c,d,f){var g,h=a(document.body);h.addClass("modal-open"),wpLink.modalOpen=!0,j=f,wpLink.range=null,b&&(window.wpActiveEditor=b),window.wpActiveEditor&&(this.textarea=a("#"+window.wpActiveEditor).get(0),"undefined"!=typeof window.tinymce&&(h.append(m.backdrop,m.wrap),g=window.tinymce.get(window.wpActiveEditor),e=g&&!g.isHidden()?g:null,e&&window.tinymce.isIE&&(e.windowManager.wplinkBookmark=e.selection.getBookmark())),!wpLink.isMCE()&&document.selection&&(this.textarea.focus(),this.range=document.selection.createRange()),m.wrap.show(),m.backdrop.show(),wpLink.refresh(c,d),a(document).trigger("wplink-open",m.wrap))},isMCE:function(){return e&&!e.isHidden()},refresh:function(a,b){var c="";n.search.refresh(),n.recent.refresh(),wpLink.isMCE()?wpLink.mceRefresh(a,b):(m.wrap.hasClass("has-text-field")||m.wrap.addClass("has-text-field"),document.selection?c=document.selection.createRange().text||b||"":"undefined"!=typeof this.textarea.selectionStart&&this.textarea.selectionStart!==this.textarea.selectionEnd&&(b=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd)||b||""),m.text.val(b),wpLink.setDefaultValues()),o?m.url.focus().blur():window.setTimeout(function(){m.url[0].select(),m.url.focus()}),n.recent.ul.children().length||n.recent.ajax(),i=m.url.val().replace(/^http:\/\//,"")},hasSelectedText:function(a){var b,c,d,f=e.selection.getContent();if(/]+>[^<]+<\/a>$/.test(f)||f.indexOf("href=")===-1))return!1;if(a){if(c=a.childNodes,0===c.length)return!1;for(d=c.length-1;d>=0;d--)if(b=c[d],3!=b.nodeType&&!window.tinymce.dom.BookmarkManager.isBookmarkNode(b))return!1}return!0},mceRefresh:function(c,f){var g,h,i=d(),j=this.hasSelectedText(i);i?(g=i.textContent||i.innerText,h=e.dom.getAttrib(i,"href"),a.trim(g)||(g=f||""),c&&(l.test(c)||k.test(c))&&(h=c),"_wp_link_placeholder"!==h?(m.url.val(h),m.openInNewTab.prop("checked","_blank"===e.dom.getAttrib(i,"target")),m.submit.val(b.update)):this.setDefaultValues(g),c&&c!==h?m.search.val(c):m.search.val(""),window.setTimeout(function(){wpLink.searchInternalLinks()})):(g=e.selection.getContent({format:"text"})||f||"",this.setDefaultValues(g)),j?(m.text.val(g),m.wrap.addClass("has-text-field")):(m.text.val(""),m.wrap.removeClass("has-text-field"))},close:function(b){a(document.body).removeClass("modal-open"),wpLink.modalOpen=!1,"noReset"!==b&&(wpLink.isMCE()?(e.plugins.wplink&&e.plugins.wplink.close(),e.focus()):(wpLink.textarea.focus(),wpLink.range&&(wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select()))),m.backdrop.hide(),m.wrap.hide(),i=!1,a(document).trigger("wplink-close",m.wrap)},getAttrs:function(){return wpLink.correctURL(),{href:a.trim(m.url.val()),target:m.openInNewTab.prop("checked")?"_blank":""}},buildHtml:function(a){var b='"},update:function(){wpLink.isMCE()?wpLink.mceUpdate():wpLink.htmlUpdate()},htmlUpdate:function(){var a,d,e,f,g,h,i,j=wpLink.textarea;j&&(a=wpLink.getAttrs(),d=m.text.val(),a.href&&(e=wpLink.buildHtml(a),document.selection&&wpLink.range?(j.focus(),wpLink.range.text=e+(d||wpLink.range.text)+"",wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select(),wpLink.range=null):"undefined"!=typeof j.selectionStart&&(f=j.selectionStart,g=j.selectionEnd,i=d||j.value.substring(f,g),e=e+i+"",h=f+e.length,f!==g||i||(h-=4),j.value=j.value.substring(0,f)+e+j.value.substring(g,j.value.length),j.selectionStart=j.selectionEnd=h),wpLink.close(),j.focus(),c.a11y.speak(b.linkInserted)))},mceUpdate:function(){var a,f,g=wpLink.getAttrs();return window.tinymce.isIE&&e.windowManager.wplinkBookmark&&(e.selection.moveToBookmark(e.windowManager.wplinkBookmark),e.windowManager.wplinkBookmark=null),g.href?(a=d(),m.wrap.hasClass("has-text-field")&&(f=m.text.val()||g.href),a?(f&&("innerText"in a?a.innerText=f:a.textContent=f),g["data-wplink-edit"]=null,e.dom.setAttribs(a,g)):f?e.selection.setNode(e.dom.create("a",g,e.dom.encode(f))):e.execCommand("mceInsertLink",!1,g),wpLink.close("noReset"),e.focus(),e.nodeChanged(),a&&e.plugins.wplink&&e.plugins.wplink.checkLink(a),void c.a11y.speak(b.linkInserted)):(e.execCommand("unlink"),void wpLink.close())},updateFields:function(a,b){m.url.val(b.children(".item-permalink").val())},getUrlFromSelection:function(b){return b||(this.isMCE()?b=e.selection.getContent({format:"text"}):document.selection&&wpLink.range?b=wpLink.range.text:"undefined"!=typeof this.textarea.selectionStart&&(b=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd))),b=a.trim(b),b&&k.test(b)?"mailto:"+b:b&&l.test(b)?b.replace(/&|�?38;/gi,"&"):""},setDefaultValues:function(a){m.url.val(this.getUrlFromSelection(a)),m.search.val(""),wpLink.searchInternalLinks(),m.submit.val(b.save)},searchInternalLinks:function(){var a,b=m.search.val()||"";if(b.length>2){if(n.recent.hide(),n.search.show(),wpLink.lastSearch==b)return;wpLink.lastSearch=b,a=m.search.parent().find(".spinner").addClass("is-active"),n.search.change(b),n.search.ajax(function(){a.removeClass("is-active")})}else n.search.hide(),n.recent.show()},next:function(){n.search.next(),n.recent.next()},prev:function(){n.search.prev(),n.recent.prev()},keydown:function(a){var b,c;27===a.keyCode?(wpLink.close(),a.stopImmediatePropagation()):9===a.keyCode&&(c=a.target.id,"wp-link-submit"!==c||a.shiftKey?"wp-link-close"===c&&a.shiftKey&&(m.submit.focus(),a.preventDefault()):(m.close.focus(),a.preventDefault())),38!==a.keyCode&&40!==a.keyCode||(!document.activeElement||"link-title-field"!==document.activeElement.id&&"url-field"!==document.activeElement.id)&&(b=38===a.keyCode?"prev":"next",clearInterval(wpLink.keyInterval),wpLink[b](),wpLink.keyInterval=setInterval(wpLink[b],wpLink.keySensitivity),a.preventDefault())},keyup:function(a){38!==a.keyCode&&40!==a.keyCode||(clearInterval(wpLink.keyInterval),a.preventDefault())},delayedCallback:function(a,b){var c,d,e,f;return b?(setTimeout(function(){return d?a.apply(f,e):void(c=!0)},b),function(){return c?a.apply(this,arguments):(e=arguments,f=this,void(d=!0))}):a}},g=function(b,c){var d=this;this.element=b,this.ul=b.children("ul"),this.contentHeight=b.children("#link-selector-height"),this.waiting=b.find(".river-waiting"),this.change(c),this.refresh(),a("#wp-link .query-results, #wp-link #link-selector").scroll(function(){d.maybeLoad()}),b.on("click","li",function(b){d.select(a(this),b)})},a.extend(g.prototype,{refresh:function(){this.deselect(),this.visible=this.element.is(":visible")},show:function(){this.visible||(this.deselect(),this.element.show(),this.visible=!0)},hide:function(){this.element.hide(),this.visible=!1},select:function(a,b){var c,d,e,f;a.hasClass("unselectable")||a==this.selected||(this.deselect(),this.selected=a.addClass("selected"),c=a.outerHeight(),d=this.element.height(),e=a.position().top,f=this.element.scrollTop(),e<0?this.element.scrollTop(f+e):e+c>d&&this.element.scrollTop(f+e-d+c),this.element.trigger("river-select",[a,b,this]))},deselect:function(){this.selected&&this.selected.removeClass("selected"),this.selected=!1},prev:function(){if(this.visible){var a;this.selected&&(a=this.selected.prev("li"),a.length&&this.select(a))}},next:function(){if(this.visible){var b=this.selected?this.selected.next("li"):a("li:not(.unselectable):first",this.element);b.length&&this.select(b)}},ajax:function(a){var b=this,c=1==this.query.page?0:wpLink.minRiverAJAXDuration,d=wpLink.delayedCallback(function(c,d){b.process(c,d),a&&a(c,d)},c);this.query.ajax(d)},change:function(a){this.query&&this._search==a||(this._search=a,this.query=new h(a),this.element.scrollTop(0))},process:function(c,d){var e="",f=!0,g="",h=1==d.page;c?a.each(c,function(){g=f?"alternate":"",g+=this.title?"":" no-title",e+=g?'
              • ':"
              • ",e+='',e+='',e+=this.title?this.title:b.noTitle,e+=''+this.info+"
              • ",f=!f}):h&&(e+='
              • '+b.noMatchesFound+"
              • "),this.ul[h?"html":"append"](e)},maybeLoad:function(){var a=this,b=this.element,c=b.scrollTop()+b.height();!this.query.ready()||c]+>[^<]+<\/a>$/.test(f)||f.indexOf("href=")===-1))return!1;if(a){if(c=a.childNodes,0===c.length)return!1;for(d=c.length-1;d>=0;d--)if(b=c[d],3!=b.nodeType&&!window.tinymce.dom.BookmarkManager.isBookmarkNode(b))return!1}return!0},mceRefresh:function(c,f){var g,h,i=d(),j=this.hasSelectedText(i);i?(g=i.textContent||i.innerText,h=e.dom.getAttrib(i,"href"),a.trim(g)||(g=f||""),c&&(l.test(c)||k.test(c))&&(h=c),"_wp_link_placeholder"!==h?(m.url.val(h),m.openInNewTab.prop("checked","_blank"===e.dom.getAttrib(i,"target")),m.submit.val(b.update)):this.setDefaultValues(g),c&&c!==h?m.search.val(c):m.search.val(""),window.setTimeout(function(){wpLink.searchInternalLinks()})):(g=e.selection.getContent({format:"text"})||f||"",this.setDefaultValues(g)),j?(m.text.val(g),m.wrap.addClass("has-text-field")):(m.text.val(""),m.wrap.removeClass("has-text-field"))},close:function(b){a(document.body).removeClass("modal-open"),wpLink.modalOpen=!1,"noReset"!==b&&(wpLink.isMCE()?(e.plugins.wplink&&e.plugins.wplink.close(),e.focus()):(wpLink.textarea.focus(),wpLink.range&&(wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select()))),m.backdrop.hide(),m.wrap.hide(),i=!1,a(document).trigger("wplink-close",m.wrap)},getAttrs:function(){wpLink.correctURL();var b={href:a.trim(m.url.val())};return m.openInNewTab.prop("checked")&&(b.target="_blank"),b},buildHtml:function(a){var b='"},update:function(){wpLink.isMCE()?wpLink.mceUpdate():wpLink.htmlUpdate()},htmlUpdate:function(){var a,d,e,f,g,h,i,j=wpLink.textarea;j&&(a=wpLink.getAttrs(),d=m.text.val(),a.href&&(e=wpLink.buildHtml(a),document.selection&&wpLink.range?(j.focus(),wpLink.range.text=e+(d||wpLink.range.text)+"",wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select(),wpLink.range=null):"undefined"!=typeof j.selectionStart&&(f=j.selectionStart,g=j.selectionEnd,i=d||j.value.substring(f,g),e=e+i+"",h=f+e.length,f!==g||i||(h-=4),j.value=j.value.substring(0,f)+e+j.value.substring(g,j.value.length),j.selectionStart=j.selectionEnd=h),wpLink.close(),j.focus(),c.a11y.speak(b.linkInserted)))},mceUpdate:function(){var f,g,h,i,j=wpLink.getAttrs();return j.href?(f=e.$(d()),e.undoManager.transact(function(){f.length||(e.execCommand("mceInsertLink",!1,{href:"_wp_link_placeholder","data-wp-temp-link":1}),f=e.$('a[data-wp-temp-link="1"]').removeAttr("data-wp-temp-link"),h=a.trim(f.text())),f.length?(m.wrap.hasClass("has-text-field")&&(g=m.text.val(),g?f.text(g):h||f.text(j.href)),j["data-wplink-edit"]=null,j["data-mce-href"]=null,f.attr(j)):e.execCommand("unlink")}),wpLink.close("noReset"),e.focus(),f.length&&(i=f.parent("#_mce_caret"),i.length&&i.before(f.removeAttr("data-mce-bogus")),e.selection.select(f[0]),e.selection.collapse(),e.plugins.wplink&&e.plugins.wplink.checkLink(f[0])),e.nodeChanged(),void c.a11y.speak(b.linkInserted)):(e.execCommand("unlink"),void wpLink.close())},updateFields:function(a,b){m.url.val(b.children(".item-permalink").val())},getUrlFromSelection:function(b){return b||(this.isMCE()?b=e.selection.getContent({format:"text"}):document.selection&&wpLink.range?b=wpLink.range.text:"undefined"!=typeof this.textarea.selectionStart&&(b=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd))),b=a.trim(b),b&&k.test(b)?"mailto:"+b:b&&l.test(b)?b.replace(/&|�?38;/gi,"&"):""},setDefaultValues:function(a){m.url.val(this.getUrlFromSelection(a)),m.search.val(""),wpLink.searchInternalLinks(),m.submit.val(b.save)},searchInternalLinks:function(){var a,b=m.search.val()||"";if(b.length>2){if(n.recent.hide(),n.search.show(),wpLink.lastSearch==b)return;wpLink.lastSearch=b,a=m.search.parent().find(".spinner").addClass("is-active"),n.search.change(b),n.search.ajax(function(){a.removeClass("is-active")})}else n.search.hide(),n.recent.show()},next:function(){n.search.next(),n.recent.next()},prev:function(){n.search.prev(),n.recent.prev()},keydown:function(a){var b,c;27===a.keyCode?(wpLink.close(),a.stopImmediatePropagation()):9===a.keyCode&&(c=a.target.id,"wp-link-submit"!==c||a.shiftKey?"wp-link-close"===c&&a.shiftKey&&(m.submit.focus(),a.preventDefault()):(m.close.focus(),a.preventDefault())),38!==a.keyCode&&40!==a.keyCode||(!document.activeElement||"link-title-field"!==document.activeElement.id&&"url-field"!==document.activeElement.id)&&(b=38===a.keyCode?"prev":"next",clearInterval(wpLink.keyInterval),wpLink[b](),wpLink.keyInterval=setInterval(wpLink[b],wpLink.keySensitivity),a.preventDefault())},keyup:function(a){38!==a.keyCode&&40!==a.keyCode||(clearInterval(wpLink.keyInterval),a.preventDefault())},delayedCallback:function(a,b){var c,d,e,f;return b?(setTimeout(function(){return d?a.apply(f,e):void(c=!0)},b),function(){return c?a.apply(this,arguments):(e=arguments,f=this,void(d=!0))}):a}},g=function(b,c){var d=this;this.element=b,this.ul=b.children("ul"),this.contentHeight=b.children("#link-selector-height"),this.waiting=b.find(".river-waiting"),this.change(c),this.refresh(),a("#wp-link .query-results, #wp-link #link-selector").scroll(function(){d.maybeLoad()}),b.on("click","li",function(b){d.select(a(this),b)})},a.extend(g.prototype,{refresh:function(){this.deselect(),this.visible=this.element.is(":visible")},show:function(){this.visible||(this.deselect(),this.element.show(),this.visible=!0)},hide:function(){this.element.hide(),this.visible=!1},select:function(a,b){var c,d,e,f;a.hasClass("unselectable")||a==this.selected||(this.deselect(),this.selected=a.addClass("selected"),c=a.outerHeight(),d=this.element.height(),e=a.position().top,f=this.element.scrollTop(),e<0?this.element.scrollTop(f+e):e+c>d&&this.element.scrollTop(f+e-d+c),this.element.trigger("river-select",[a,b,this]))},deselect:function(){this.selected&&this.selected.removeClass("selected"),this.selected=!1},prev:function(){if(this.visible){var a;this.selected&&(a=this.selected.prev("li"),a.length&&this.select(a))}},next:function(){if(this.visible){var b=this.selected?this.selected.next("li"):a("li:not(.unselectable):first",this.element);b.length&&this.select(b)}},ajax:function(a){var b=this,c=1==this.query.page?0:wpLink.minRiverAJAXDuration,d=wpLink.delayedCallback(function(c,d){b.process(c,d),a&&a(c,d)},c);this.query.ajax(d)},change:function(a){this.query&&this._search==a||(this._search=a,this.query=new h(a),this.element.scrollTop(0))},process:function(c,d){var e="",f=!0,g="",h=1==d.page;c?a.each(c,function(){g=f?"alternate":"",g+=this.title?"":" no-title",e+=g?'
              • ':"
              • ",e+='',e+='',e+=this.title?this.title:b.noTitle,e+=''+this.info+"
              • ",f=!f}):h&&(e+='
              • '+b.noMatchesFound+"
              • "),this.ul[h?"html":"append"](e)},maybeLoad:function(){var a=this,b=this.element,c=b.scrollTop()+b.height();!this.query.ready()||c 'keep' ) ); - $string = wp_kses_js_entities($string); $string = wp_kses_normalize_entities($string); $string = wp_kses_hook($string, $allowed_html, $allowed_protocols); // WP changed the order of these funcs and added args to wp_kses_hook return wp_kses_split($string, $allowed_html, $allowed_protocols); @@ -550,7 +549,6 @@ function wp_kses_one_attr( $string, $element ) { $allowed_html = wp_kses_allowed_html( 'post' ); $allowed_protocols = wp_allowed_protocols(); $string = wp_kses_no_null( $string, array( 'slash_zero' => 'keep' ) ); - $string = wp_kses_js_entities( $string ); // Preserve leading and trailing whitespace. $matches = array(); @@ -781,7 +779,7 @@ function wp_kses_split2($string, $allowed_html, $allowed_protocols) { } // Allow HTML comments - if (!preg_match('%^<\s*(/\s*)?([a-zA-Z0-9]+)([^>]*)>?$%', $string, $matches)) + if (!preg_match('%^<\s*(/\s*)?([a-zA-Z0-9-]+)([^>]*)>?$%', $string, $matches)) return ''; // It's seriously malformed @@ -1295,18 +1293,6 @@ function wp_kses_array_lc($inarray) { return $outarray; } -/** - * Removes the HTML JavaScript entities found in early versions of Netscape 4. - * - * @since 1.0.0 - * - * @param string $string - * @return string - */ -function wp_kses_js_entities($string) { - return preg_replace('%&\s*\{[^}]*(\}\s*;?|$)%', '', $string); -} - /** * Handles parsing errors in wp_kses_hair(). * diff --git a/wp/wp-includes/l10n.php b/wp/wp-includes/l10n.php index c6377745..20a18f96 100644 --- a/wp/wp-includes/l10n.php +++ b/wp/wp-includes/l10n.php @@ -75,6 +75,35 @@ function get_locale() { return apply_filters( 'locale', $locale ); } +/** + * Retrieves the locale of a user. + * + * If the user has a locale set to a non-empty string then it will be + * returned. Otherwise it returns the locale of get_locale(). + * + * @since 4.7.0 + * + * @param int|WP_User $user_id User's ID or a WP_User object. Defaults to current user. + * @return string The locale of the user. + */ +function get_user_locale( $user_id = 0 ) { + $user = false; + if ( 0 === $user_id && function_exists( 'wp_get_current_user' ) ) { + $user = wp_get_current_user(); + } elseif ( $user_id instanceof WP_User ) { + $user = $user_id; + } elseif ( $user_id && is_numeric( $user_id ) ) { + $user = get_user_by( 'id', $user_id ); + } + + if ( ! $user ) { + return get_locale(); + } + + $locale = $user->locale; + return $locale ? $locale : get_locale(); +} + /** * Retrieve the translation of $text. * @@ -91,18 +120,18 @@ function get_locale() { */ function translate( $text, $domain = 'default' ) { $translations = get_translations_for_domain( $domain ); - $translations = $translations->translate( $text ); + $translation = $translations->translate( $text ); /** * Filters text with its translation. * * @since 2.0.11 * - * @param string $translations Translated text. + * @param string $translation Translated text. * @param string $text Text to translate. * @param string $domain Text domain. Unique identifier for retrieving translated strings. */ - return apply_filters( 'gettext', $translations, $text, $domain ); + return apply_filters( 'gettext', $translation, $text, $domain ); } /** @@ -143,18 +172,18 @@ function before_last_bar( $string ) { */ function translate_with_gettext_context( $text, $context, $domain = 'default' ) { $translations = get_translations_for_domain( $domain ); - $translations = $translations->translate( $text, $context ); + $translation = $translations->translate( $text, $context ); /** * Filters text with its translation based on context information. * * @since 2.8.0 * - * @param string $translations Translated text. + * @param string $translation Translated text. * @param string $text Text to translate. * @param string $context Context information for the translators. * @param string $domain Text domain. Unique identifier for retrieving translated strings. */ - return apply_filters( 'gettext_with_context', $translations, $text, $context, $domain ); + return apply_filters( 'gettext_with_context', $translation, $text, $context, $domain ); } /** @@ -318,7 +347,7 @@ function esc_html_x( $text, $context, $domain = 'default' ) { * * Example: * - * $people = sprintf( _n( '%s person', '%s people', $count, 'text-domain' ), number_format_i18n( $count ) ); + * printf( _n( '%s person', '%s people', $count, 'text-domain' ), number_format_i18n( $count ) ); * * @since 2.8.0 * @@ -331,7 +360,7 @@ function esc_html_x( $text, $context, $domain = 'default' ) { */ function _n( $single, $plural, $number, $domain = 'default' ) { $translations = get_translations_for_domain( $domain ); - $translation = $translations->translate_plural( $single, $plural, $number ); + $translation = $translations->translate_plural( $single, $plural, $number ); /** * Filters the singular or plural form of a string. @@ -355,9 +384,10 @@ function _n( $single, $plural, $number, $domain = 'default' ) { * Used when you want to use the appropriate form of a string with context based on whether a * number is singular or plural. * - * Example: + * Example of a generic phrase which is disambiguated via the context parameter: * - * $people = sprintf( _n( '%s person', '%s people', $count, 'context', 'text-domain' ), number_format_i18n( $count ) ); + * printf( _nx( '%s group', '%s groups', $people, 'group of people', 'text-domain' ), number_format_i18n( $people ) ); + * printf( _nx( '%s group', '%s groups', $animals, 'group of animals', 'text-domain' ), number_format_i18n( $animals ) ); * * @since 2.8.0 * @@ -371,7 +401,7 @@ function _n( $single, $plural, $number, $domain = 'default' ) { */ function _nx($single, $plural, $number, $context, $domain = 'default') { $translations = get_translations_for_domain( $domain ); - $translation = $translations->translate_plural( $single, $plural, $number, $context ); + $translation = $translations->translate_plural( $single, $plural, $number, $context ); /** * Filters the singular or plural form of a string with gettext context. @@ -396,13 +426,9 @@ function _nx($single, $plural, $number, $context, $domain = 'default') { * * Example: * - * $messages = array( - * 'post' => _n_noop( '%s post', '%s posts', 'text-domain' ), - * 'page' => _n_noop( '%s pages', '%s pages', 'text-domain' ), - * ); + * $message = _n_noop( '%s post', '%s posts', 'text-domain' ); * ... - * $message = $messages[ $type ]; - * $usable_text = sprintf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) ); + * printf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) ); * * @since 2.5.0 * @@ -431,15 +457,15 @@ function _n_noop( $singular, $plural, $domain = null ) { * Used when you want to keep structures with translatable plural * strings and use them later when the number is known. * - * Example: + * Example of a generic phrase which is disambiguated via the context parameter: * * $messages = array( - * 'post' => _n_noop( '%s post', '%s posts', 'context', 'text-domain' ), - * 'page' => _n_noop( '%s pages', '%s pages', 'context', 'text-domain' ), + * 'people' => _nx_noop( '%s group', '%s groups', 'people', 'text-domain' ), + * 'animals' => _nx_noop( '%s group', '%s groups', 'animals', 'text-domain' ), * ); * ... * $message = $messages[ $type ]; - * $usable_text = sprintf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) ); + * printf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) ); * * @since 2.8.0 * @@ -472,13 +498,9 @@ function _nx_noop( $singular, $plural, $context, $domain = null ) { * * Example: * - * $messages = array( - * 'post' => _n_noop( '%s post', '%s posts', 'text-domain' ), - * 'page' => _n_noop( '%s pages', '%s pages', 'text-domain' ), - * ); + * $message = _n_noop( '%s post', '%s posts', 'text-domain' ); * ... - * $message = $messages[ $type ]; - * $usable_text = sprintf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) ); + * printf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) ); * * @since 3.1.0 * @@ -640,7 +662,7 @@ function unload_textdomain( $domain ) { */ function load_default_textdomain( $locale = null ) { if ( null === $locale ) { - $locale = get_locale(); + $locale = is_admin() ? get_user_locale() : get_locale(); } // Unload previously loaded strings so we can switch translations. @@ -674,7 +696,7 @@ function load_default_textdomain( $locale = null ) { * @since 4.6.0 The function now tries to load the .mo file from the languages directory first. * * @param string $domain Unique identifier for retrieving translated strings - * @param string $deprecated Optional. Use the $plugin_rel_path parameter instead. Defaukt false. + * @param string $deprecated Optional. Use the $plugin_rel_path parameter instead. Default false. * @param string $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR where the .mo file resides. * Default false. * @return bool True when textdomain is successfully loaded, false otherwise. @@ -688,7 +710,7 @@ function load_plugin_textdomain( $domain, $deprecated = false, $plugin_rel_path * @param string $locale The plugin's current locale. * @param string $domain Text domain. Unique identifier for retrieving translated strings. */ - $locale = apply_filters( 'plugin_locale', get_locale(), $domain ); + $locale = apply_filters( 'plugin_locale', is_admin() ? get_user_locale() : get_locale(), $domain ); $mofile = $domain . '-' . $locale . '.mo'; @@ -722,7 +744,7 @@ function load_plugin_textdomain( $domain, $deprecated = false, $plugin_rel_path */ function load_muplugin_textdomain( $domain, $mu_plugin_rel_path = '' ) { /** This filter is documented in wp-includes/l10n.php */ - $locale = apply_filters( 'plugin_locale', get_locale(), $domain ); + $locale = apply_filters( 'plugin_locale', is_admin() ? get_user_locale() : get_locale(), $domain ); $mofile = $domain . '-' . $locale . '.mo'; @@ -761,7 +783,7 @@ function load_theme_textdomain( $domain, $path = false ) { * @param string $locale The theme's current locale. * @param string $domain Text domain. Unique identifier for retrieving translated strings. */ - $locale = apply_filters( 'theme_locale', get_locale(), $domain ); + $locale = apply_filters( 'theme_locale', is_admin() ? get_user_locale() : get_locale(), $domain ); $mofile = $domain . '-' . $locale . '.mo'; @@ -805,8 +827,6 @@ function load_child_theme_textdomain( $domain, $path = false ) { * the translation file from `wp-content/languages`, removing the need * to call load_plugin_texdomain() or load_theme_texdomain(). * - * Holds a cached list of available .mo files to improve performance. - * * @since 4.6.0 * @access private * @@ -821,13 +841,63 @@ function _load_textdomain_just_in_time( $domain ) { $l10n_unloaded = (array) $l10n_unloaded; - static $cached_mofiles = null; - // Short-circuit if domain is 'default' which is reserved for core. if ( 'default' === $domain || isset( $l10n_unloaded[ $domain ] ) ) { return false; } + $translation_path = _get_path_to_translation( $domain ); + if ( false === $translation_path ) { + return false; + } + + return load_textdomain( $domain, $translation_path ); +} + +/** + * Gets the path to a translation file for loading a textdomain just in time. + * + * Caches the retrieved results internally. + * + * @since 4.7.0 + * @access private + * + * @see _load_textdomain_just_in_time() + * + * @param string $domain Text domain. Unique identifier for retrieving translated strings. + * @param bool $reset Whether to reset the internal cache. Used by the switch to locale functionality. + * @return string|false The path to the translation file or false if no translation file was found. + */ +function _get_path_to_translation( $domain, $reset = false ) { + static $available_translations = array(); + + if ( true === $reset ) { + $available_translations = array(); + } + + if ( ! isset( $available_translations[ $domain ] ) ) { + $available_translations[ $domain ] = _get_path_to_translation_from_lang_dir( $domain ); + } + + return $available_translations[ $domain ]; +} + +/** + * Gets the path to a translation file in the languages directory for the current locale. + * + * Holds a cached list of available .mo files to improve performance. + * + * @since 4.7.0 + * @access private + * + * @see _get_path_to_translation() + * + * @param string $domain Text domain. Unique identifier for retrieving translated strings. + * @return string|false The path to the translation file or false if no translation file was found. + */ +function _get_path_to_translation_from_lang_dir( $domain ) { + static $cached_mofiles = null; + if ( null === $cached_mofiles ) { $cached_mofiles = array(); @@ -837,21 +907,24 @@ function _load_textdomain_just_in_time( $domain ) { ); foreach ( $locations as $location ) { - foreach ( get_available_languages( $location ) as $file ) { - $cached_mofiles[] = "{$location}/{$file}.mo"; + $mofiles = glob( $location . '/*.mo' ); + if ( $mofiles ) { + $cached_mofiles = array_merge( $cached_mofiles, $mofiles ); } } } - $locale = get_locale(); + $locale = is_admin() ? get_user_locale() : get_locale(); $mofile = "{$domain}-{$locale}.mo"; - if ( in_array( WP_LANG_DIR . '/plugins/' . $mofile, $cached_mofiles ) ) { - return load_textdomain( $domain, WP_LANG_DIR . '/plugins/' . $mofile ); + $path = WP_LANG_DIR . '/plugins/' . $mofile; + if ( in_array( $path, $cached_mofiles ) ) { + return $path; } - if ( in_array( WP_LANG_DIR . '/themes/' . $mofile, $cached_mofiles ) ) { - return load_textdomain( $domain, WP_LANG_DIR . '/themes/' . $mofile ); + $path = WP_LANG_DIR . '/themes/' . $mofile; + if ( in_array( $path, $cached_mofiles ) ) { + return $path; } return false; @@ -867,7 +940,7 @@ function _load_textdomain_just_in_time( $domain ) { * @global array $l10n * * @param string $domain Text domain. Unique identifier for retrieving translated strings. - * @return NOOP_Translations A Translations instance. + * @return Translations|NOOP_Translations A Translations instance. */ function get_translations_for_domain( $domain ) { global $l10n; @@ -925,6 +998,7 @@ function translate_user_role( $name ) { * The default directory is WP_LANG_DIR. * * @since 3.0.0 + * @since 4.7.0 The results are now filterable with the {@see 'get_available_languages'} filter. * * @param string $dir A directory to search for language files. * Default WP_LANG_DIR. @@ -933,7 +1007,7 @@ function translate_user_role( $name ) { function get_available_languages( $dir = null ) { $languages = array(); - $lang_files = glob( ( is_null( $dir) ? WP_LANG_DIR : $dir ) . '/*.mo' ); + $lang_files = glob( ( is_null( $dir ) ? WP_LANG_DIR : $dir ) . '/*.mo' ); if ( $lang_files ) { foreach ( $lang_files as $lang_file ) { $lang_file = basename( $lang_file, '.mo' ); @@ -944,7 +1018,15 @@ function get_available_languages( $dir = null ) { } } - return $languages; + /** + * Filters the list of available language codes. + * + * @since 4.7.0 + * + * @param array $languages An array of available language codes. + * @param string $dir The directory where the language files were found. + */ + return apply_filters( 'get_available_languages', $languages, $dir ); } /** @@ -1026,6 +1108,7 @@ function wp_get_pomo_file_data( $po_file ) { * * @since 4.0.0 * @since 4.3.0 Introduced the `echo` argument. + * @since 4.7.0 Introduced the `show_option_site_default` argument. * * @see get_available_languages() * @see wp_get_available_translations() @@ -1043,6 +1126,7 @@ function wp_get_pomo_file_data( $po_file ) { * @type bool|int $echo Whether to echo the generated markup. Accepts 0, 1, or their * boolean equivalents. Default 1. * @type bool $show_available_translations Whether to show available translations. Default true. + * @type bool $show_option_site_default Whether to show an option to fall back to the site's locale. Default false. * } * @return string HTML content */ @@ -1056,8 +1140,14 @@ function wp_dropdown_languages( $args = array() ) { 'selected' => '', 'echo' => 1, 'show_available_translations' => true, + 'show_option_site_default' => false, ) ); + // English (United States) uses an empty string for the value attribute. + if ( 'en_US' === $args['selected'] ) { + $args['selected'] = ''; + } + $translations = $args['translations']; if ( empty( $translations ) ) { require_once( ABSPATH . 'wp-admin/includes/translation-install.php' ); @@ -1100,7 +1190,20 @@ function wp_dropdown_languages( $args = array() ) { if ( $translations_available ) { $structure[] = ''; } - $structure[] = ''; + + if ( $args['show_option_site_default'] ) { + $structure[] = sprintf( + '', + selected( 'site-default', $args['selected'], false ), + _x( 'Site Default', 'default site language' ) + ); + } + + $structure[] = sprintf( + '', + selected( '', $args['selected'], false ) + ); + foreach ( $languages as $language ) { $structure[] = sprintf( '', @@ -1139,3 +1242,85 @@ function wp_dropdown_languages( $args = array() ) { return $output; } + +/** + * Checks if current locale is RTL. + * + * @since 3.0.0 + * + * @global WP_Locale $wp_locale + * + * @return bool Whether locale is RTL. + */ +function is_rtl() { + global $wp_locale; + if ( ! ( $wp_locale instanceof WP_Locale ) ) { + return false; + } + return $wp_locale->is_rtl(); +} + +/** + * Switches the translations according to the given locale. + * + * @since 4.7.0 + * + * @global WP_Locale_Switcher $wp_locale_switcher + * + * @param string $locale The locale. + * @return bool True on success, false on failure. + */ +function switch_to_locale( $locale ) { + /* @var WP_Locale_Switcher $wp_locale_switcher */ + global $wp_locale_switcher; + + return $wp_locale_switcher->switch_to_locale( $locale ); +} + +/** + * Restores the translations according to the previous locale. + * + * @since 4.7.0 + * + * @global WP_Locale_Switcher $wp_locale_switcher + * + * @return string|false Locale on success, false on error. + */ +function restore_previous_locale() { + /* @var WP_Locale_Switcher $wp_locale_switcher */ + global $wp_locale_switcher; + + return $wp_locale_switcher->restore_previous_locale(); +} + +/** + * Restores the translations according to the original locale. + * + * @since 4.7.0 + * + * @global WP_Locale_Switcher $wp_locale_switcher + * + * @return string|false Locale on success, false on error. + */ +function restore_current_locale() { + /* @var WP_Locale_Switcher $wp_locale_switcher */ + global $wp_locale_switcher; + + return $wp_locale_switcher->restore_current_locale(); +} + +/** + * Whether switch_to_locale() is in effect. + * + * @since 4.7.0 + * + * @global WP_Locale_Switcher $wp_locale_switcher + * + * @return bool True if the locale has been switched, false otherwise. + */ +function is_locale_switched() { + /* @var WP_Locale_Switcher $wp_locale_switcher */ + global $wp_locale_switcher; + + return $wp_locale_switcher->is_switched(); +} diff --git a/wp/wp-includes/link-template.php b/wp/wp-includes/link-template.php index 9d7a5f6c..009ed06c 100644 --- a/wp/wp-includes/link-template.php +++ b/wp/wp-includes/link-template.php @@ -58,8 +58,8 @@ function user_trailingslashit($string, $type_of_url = '') { * * @param string $string URL with or without a trailing slash. * @param string $type_of_url The type of URL being considered. Accepts 'single', 'single_trackback', - * 'single_feed', 'single_paged', 'feed', 'category', 'page', 'year', - * 'month', 'day', 'paged', 'post_type_archive'. + * 'single_feed', 'single_paged', 'commentpaged', 'paged', 'home', 'feed', + * 'category', 'page', 'year', 'month', 'day', 'post_type_archive'. */ return apply_filters( 'user_trailingslashit', $string, $type_of_url ); } @@ -169,15 +169,17 @@ function get_permalink( $post = 0, $leavename = false ) { if ( strpos($permalink, '%category%') !== false ) { $cats = get_the_category($post->ID); if ( $cats ) { - usort($cats, '_usort_terms_by_ID'); // order by ID + $cats = wp_list_sort( $cats, array( + 'term_id' => 'ASC', + ) ); /** * Filters the category that gets used in the %category% permalink token. * * @since 3.5.0 * - * @param stdClass $cat The category to use in the permalink. - * @param array $cats Array of all categories associated with the post. + * @param WP_Term $cat The category to use in the permalink. + * @param array $cats Array of all categories (WP_Term objects) associated with the post. * @param WP_Post $post The post in question. */ $category_object = apply_filters( 'post_link_category', $cats[0], $cats, $post ); @@ -930,7 +932,7 @@ function get_edit_term_link( $term_id, $taxonomy = '', $object_type = '' ) { } $tax = get_taxonomy( $term->taxonomy ); - if ( ! $tax || ! current_user_can( $tax->cap->edit_terms ) ) { + if ( ! $tax || ! current_user_can( 'edit_term', $term->term_id ) ) { return; } @@ -984,8 +986,9 @@ function edit_term_link( $link = '', $before = '', $after = '', $term = null, $e return; $tax = get_taxonomy( $term->taxonomy ); - if ( ! current_user_can( $tax->cap->edit_terms ) ) + if ( ! current_user_can( 'edit_term', $term->term_id ) ) { return; + } if ( empty( $link ) ) $link = __('Edit This'); @@ -2528,8 +2531,8 @@ function get_the_posts_pagination( $args = array() ) { if ( $GLOBALS['wp_query']->max_num_pages > 1 ) { $args = wp_parse_args( $args, array( 'mid_size' => 1, - 'prev_text' => _x( 'Previous', 'previous post' ), - 'next_text' => _x( 'Next', 'next post' ), + 'prev_text' => _x( 'Previous', 'previous set of posts' ), + 'next_text' => _x( 'Next', 'next set of posts' ), 'screen_reader_text' => __( 'Posts navigation' ), ) ); @@ -2897,20 +2900,13 @@ function the_comments_pagination( $args = array() ) { * * @since 2.6.0 * - * @global bool $is_IE Whether the browser matches an Internet Explorer user agent. - * @global string $wp_version WP version. - * - * @global bool $is_IE - * @global string $wp_version - * @global WP_Press_This $wp_press_this - * - * @return string The Press This bookmarklet link URL. + * @global bool $is_IE Whether the browser matches an Internet Explorer user agent. */ function get_shortcut_link() { - global $is_IE, $wp_version; + global $is_IE; include_once( ABSPATH . 'wp-admin/includes/class-wp-press-this.php' ); - $bookmarklet_version = $GLOBALS['wp_press_this']->version; + $link = ''; if ( $is_IE ) { @@ -2928,7 +2924,7 @@ function get_shortcut_link() { $link = 'javascript:var d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,' . 's=(e?e():(k)?k():(x?x.createRange().text:0)),f=' . $url . ',l=d.location,e=encodeURIComponent,' . - 'u=f+"?u="+e(l.href)+"&t="+e(d.title)+"&s="+e(s)+"&v=' . $bookmarklet_version . '";' . + 'u=f+"?u="+e(l.href)+"&t="+e(d.title)+"&s="+e(s)+"&v=' . WP_Press_This::VERSION . '";' . 'a=function(){if(!w.open(u,"t","toolbar=0,resizable=1,scrollbars=1,status=1,width=600,height=700"))l.href=u;};' . 'if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else a();void(0)'; } @@ -2938,7 +2934,7 @@ function get_shortcut_link() { $src = @file_get_contents( ABSPATH . 'wp-admin/js/bookmarklet.min.js' ); if ( $src ) { - $url = wp_json_encode( admin_url( 'press-this.php' ) . '?v=' . $bookmarklet_version ); + $url = wp_json_encode( admin_url( 'press-this.php' ) . '?v=' . WP_Press_This::VERSION ); $link = 'javascript:' . str_replace( 'window.pt_url', $url, $src ); } } @@ -2958,9 +2954,9 @@ function get_shortcut_link() { /** * Retrieves the URL for the current site where the front end is accessible. * - * Returns the 'home' option with the appropriate protocol, 'https' if - * is_ssl() and 'http' otherwise. If `$scheme` is 'http' or 'https', - * `is_ssl()` is overridden. + * Returns the 'home' option with the appropriate protocol. The protocol will be 'https' + * if is_ssl() evaluates to true; otherwise, it will be the same as the 'home' option. + * If `$scheme` is 'http' or 'https', is_ssl() is overridden. * * @since 3.0.0 * @@ -2976,9 +2972,9 @@ function home_url( $path = '', $scheme = null ) { /** * Retrieves the URL for a given site where the front end is accessible. * - * Returns the 'home' option with the appropriate protocol, 'https' if - * is_ssl() and 'http' otherwise. If `$scheme` is 'http' or 'https', - * `is_ssl()` is overridden. + * Returns the 'home' option with the appropriate protocol. The protocol will be 'https' + * if is_ssl() evaluates to true; otherwise, it will be the same as the 'home' option. + * If `$scheme` is 'http' or 'https', is_ssl() is overridden. * * @since 3.0.0 * @@ -3261,12 +3257,12 @@ function network_site_url( $path = '', $scheme = null ) { if ( ! is_multisite() ) return site_url($path, $scheme); - $current_site = get_current_site(); + $current_network = get_network(); if ( 'relative' == $scheme ) - $url = $current_site->path; + $url = $current_network->path; else - $url = set_url_scheme( 'http://' . $current_site->domain . $current_site->path, $scheme ); + $url = set_url_scheme( 'http://' . $current_network->domain . $current_network->path, $scheme ); if ( $path && is_string( $path ) ) $url .= ltrim( $path, '/' ); @@ -3303,16 +3299,16 @@ function network_home_url( $path = '', $scheme = null ) { if ( ! is_multisite() ) return home_url($path, $scheme); - $current_site = get_current_site(); + $current_network = get_network(); $orig_scheme = $scheme; if ( ! in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) $scheme = is_ssl() && ! is_admin() ? 'https' : 'http'; if ( 'relative' == $scheme ) - $url = $current_site->path; + $url = $current_network->path; else - $url = set_url_scheme( 'http://' . $current_site->domain . $current_site->path, $scheme ); + $url = set_url_scheme( 'http://' . $current_network->domain . $current_network->path, $scheme ); if ( $path && is_string( $path ) ) $url .= ltrim( $path, '/' ); @@ -4026,3 +4022,125 @@ function get_avatar_data( $id_or_email, $args = null ) { */ return apply_filters( 'get_avatar_data', $args, $id_or_email ); } + +/** + * Retrieves the URL of a file in the theme. + * + * Searches in the stylesheet directory before the template directory so themes + * which inherit from a parent theme can just override one file. + * + * @since 4.7.0 + * + * @param string $file Optional. File to search for in the stylesheet directory. + * @return string The URL of the file. + */ +function get_theme_file_uri( $file = '' ) { + $file = ltrim( $file, '/' ); + + if ( empty( $file ) ) { + $url = get_stylesheet_directory_uri(); + } elseif ( file_exists( get_stylesheet_directory() . '/' . $file ) ) { + $url = get_stylesheet_directory_uri() . '/' . $file; + } else { + $url = get_template_directory_uri() . '/' . $file; + } + + /** + * Filters the URL to a file in the theme. + * + * @since 4.7.0 + * + * @param string $url The file URL. + * @param string $file The requested file to search for. + */ + return apply_filters( 'theme_file_uri', $url, $file ); +} + +/** + * Retrieves the URL of a file in the parent theme. + * + * @since 4.7.0 + * + * @param string $file Optional. File to return the URL for in the template directory. + * @return string The URL of the file. + */ +function get_parent_theme_file_uri( $file = '' ) { + $file = ltrim( $file, '/' ); + + if ( empty( $file ) ) { + $url = get_template_directory_uri(); + } else { + $url = get_template_directory_uri() . '/' . $file; + } + + /** + * Filters the URL to a file in the parent theme. + * + * @since 4.7.0 + * + * @param string $url The file URL. + * @param string $file The requested file to search for. + */ + return apply_filters( 'parent_theme_file_uri', $url, $file ); +} + +/** + * Retrieves the path of a file in the theme. + * + * Searches in the stylesheet directory before the template directory so themes + * which inherit from a parent theme can just override one file. + * + * @since 4.7.0 + * + * @param string $file Optional. File to search for in the stylesheet directory. + * @return string The path of the file. + */ +function get_theme_file_path( $file = '' ) { + $file = ltrim( $file, '/' ); + + if ( empty( $file ) ) { + $path = get_stylesheet_directory(); + } elseif ( file_exists( get_stylesheet_directory() . '/' . $file ) ) { + $path = get_stylesheet_directory() . '/' . $file; + } else { + $path = get_template_directory() . '/' . $file; + } + + /** + * Filters the path to a file in the theme. + * + * @since 4.7.0 + * + * @param string $path The file path. + * @param string $file The requested file to search for. + */ + return apply_filters( 'theme_file_path', $path, $file ); +} + +/** + * Retrieves the path of a file in the parent theme. + * + * @since 4.7.0 + * + * @param string $file Optional. File to return the path for in the template directory. + * @return string The path of the file. + */ +function get_parent_theme_file_path( $file = '' ) { + $file = ltrim( $file, '/' ); + + if ( empty( $file ) ) { + $path = get_template_directory(); + } else { + $path = get_template_directory() . '/' . $file; + } + + /** + * Filters the path to a file in the parent theme. + * + * @since 4.7.0 + * + * @param string $path The file path. + * @param string $file The requested file to search for. + */ + return apply_filters( 'parent_theme_file_path', $path, $file ); +} diff --git a/wp/wp-includes/load.php b/wp/wp-includes/load.php index b69c0d5e..669cf65d 100644 --- a/wp/wp-includes/load.php +++ b/wp/wp-includes/load.php @@ -2,8 +2,6 @@ /** * These functions are needed to load WordPress. * - * @internal This file must be parsable by PHP4. - * * @package WordPress */ @@ -130,6 +128,7 @@ function wp_check_php_mysql_versions() { $protocol = wp_get_server_protocol(); header( sprintf( '%s 500 Internal Server Error', $protocol ), true, 500 ); header( 'Content-Type: text/html; charset=utf-8' ); + /* translators: 1: Current PHP version number, 2: WordPress version number, 3: Minimum required PHP version number */ die( sprintf( __( 'Your server is running PHP version %1$s but WordPress %2$s requires at least %3$s.' ), $php_version, $wp_version, $required_php_version ) ); } @@ -334,7 +333,7 @@ function wp_debug_mode() { error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR ); } - if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { + if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) { @ini_set( 'display_errors', 0 ); } } @@ -398,8 +397,9 @@ function require_wp_db() { if ( file_exists( WP_CONTENT_DIR . '/db.php' ) ) require_once( WP_CONTENT_DIR . '/db.php' ); - if ( isset( $wpdb ) ) + if ( isset( $wpdb ) ) { return; + } $wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST ); } @@ -470,18 +470,15 @@ function wp_using_ext_object_cache( $using = null ) { * * @since 3.0.0 * @access private - * - * @global int $blog_id Blog ID. */ function wp_start_object_cache() { - global $blog_id; - $first_init = false; if ( ! function_exists( 'wp_cache_init' ) ) { if ( file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) { require_once ( WP_CONTENT_DIR . '/object-cache.php' ); - if ( function_exists( 'wp_cache_init' ) ) + if ( function_exists( 'wp_cache_init' ) ) { wp_using_ext_object_cache( true ); + } } $first_init = true; @@ -495,18 +492,20 @@ function wp_start_object_cache() { wp_using_ext_object_cache( true ); } - if ( ! wp_using_ext_object_cache() ) + if ( ! wp_using_ext_object_cache() ) { require_once ( ABSPATH . WPINC . '/cache.php' ); + } /* * If cache supports reset, reset instead of init if already * initialized. Reset signals to the cache that global IDs * have changed and it may need to update keys and cleanup caches. */ - if ( ! $first_init && function_exists( 'wp_cache_switch_to_blog' ) ) - wp_cache_switch_to_blog( $blog_id ); - elseif ( function_exists( 'wp_cache_init' ) ) + if ( ! $first_init && function_exists( 'wp_cache_switch_to_blog' ) ) { + wp_cache_switch_to_blog( get_current_blog_id() ); + } elseif ( function_exists( 'wp_cache_init' ) ) { wp_cache_init(); + } if ( function_exists( 'wp_cache_add_global_groups' ) ) { wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'site-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites' ) ); @@ -814,8 +813,6 @@ function get_current_blog_id() { * * @since 4.6.0 * - * @global WP_Network $current_site The current network. - * * @return int The ID of the current network. */ function get_current_network_id() { @@ -823,13 +820,13 @@ function get_current_network_id() { return 1; } - $current_site = get_current_site(); + $current_network = get_network(); - if ( ! isset( $current_site->id ) ) { + if ( ! isset( $current_network->id ) ) { return get_main_network_id(); } - return absint( $current_site->id ); + return absint( $current_network->id ); } /** @@ -845,13 +842,12 @@ function get_current_network_id() { * @since 3.4.0 * @access private * - * @global string $text_direction - * @global WP_Locale $wp_locale The WordPress date and time locale object. + * @global WP_Locale $wp_locale The WordPress date and time locale object. * * @staticvar bool $loaded */ function wp_load_translations_early() { - global $text_direction, $wp_locale; + global $wp_locale; static $loaded = false; if ( $loaded ) @@ -867,7 +863,8 @@ function wp_load_translations_early() { // Translation and localization require_once ABSPATH . WPINC . '/pomo/mo.php'; require_once ABSPATH . WPINC . '/l10n.php'; - require_once ABSPATH . WPINC . '/locale.php'; + require_once ABSPATH . WPINC . '/class-wp-locale.php'; + require_once ABSPATH . WPINC . '/class-wp-locale-switcher.php'; // General libraries require_once ABSPATH . WPINC . '/plugin.php'; @@ -981,8 +978,8 @@ function is_ssl() { * @since 2.3.0 * @since 4.6.0 Moved from media.php to load.php. * - * @link http://php.net/manual/en/function.ini-get.php - * @link http://php.net/manual/en/faq.using.php#faq.using.shorthandbytes + * @link https://secure.php.net/manual/en/function.ini-get.php + * @link https://secure.php.net/manual/en/faq.using.php#faq.using.shorthandbytes * * @param string $value A (PHP ini) byte value, either shorthand or ordinary. * @return int An integer byte value. @@ -1008,7 +1005,7 @@ function wp_convert_hr_to_bytes( $value ) { * * @since 4.6.0 * - * @link http://php.net/manual/en/function.ini-get-all.php + * @link https://secure.php.net/manual/en/function.ini-get-all.php * * @param string $setting The name of the ini setting to check. * @return bool True if the value is changeable at runtime. False otherwise. @@ -1036,3 +1033,35 @@ function wp_is_ini_value_changeable( $setting ) { return false; } + +/** + * Determines whether the current request is a WordPress Ajax request. + * + * @since 4.7.0 + * + * @return bool True if it's a WordPress Ajax request, false otherwise. + */ +function wp_doing_ajax() { + /** + * Filters whether the current request is a WordPress Ajax request. + * + * @since 4.7.0 + * + * @param bool $wp_doing_ajax Whether the current request is a WordPress Ajax request. + */ + return apply_filters( 'wp_doing_ajax', defined( 'DOING_AJAX' ) && DOING_AJAX ); +} + +/** + * Check whether variable is a WordPress Error. + * + * Returns true if $thing is an object of the WP_Error class. + * + * @since 2.1.0 + * + * @param mixed $thing Check if unknown variable is a WP_Error object. + * @return bool True, if WP_Error. False, if not WP_Error. + */ +function is_wp_error( $thing ) { + return ( $thing instanceof WP_Error ); +} diff --git a/wp/wp-includes/locale.php b/wp/wp-includes/locale.php index b8ad4637..6a459e3e 100644 --- a/wp/wp-includes/locale.php +++ b/wp/wp-includes/locale.php @@ -7,19 +7,4 @@ * @since 1.2.0 */ -/** WP_Locale class */ -require_once ABSPATH . WPINC . '/class-wp-locale.php'; - -/** - * Checks if current locale is RTL. - * - * @since 3.0.0 - * - * @global WP_Locale $wp_locale - * - * @return bool Whether locale is RTL. - */ -function is_rtl() { - global $wp_locale; - return $wp_locale->is_rtl(); -} +_deprecated_file( basename( __FILE__ ), '4.7.0' ); diff --git a/wp/wp-includes/media-template.php b/wp/wp-includes/media-template.php index 7d2d2bf4..f12b11cf 100644 --- a/wp/wp-includes/media-template.php +++ b/wp/wp-includes/media-template.php @@ -290,9 +290,9 @@ function wp_print_media_templates() {
                <# if ( data.uploading ) { #>
                - <# } else if ( 'image' === data.type && data.sizes && data.sizes.large ) { #> + <# } else if ( data.sizes && data.sizes.large ) { #> - <# } else if ( 'image' === data.type && data.sizes && data.sizes.full ) { #> + <# } else if ( data.sizes && data.sizes.full ) { #> <# } else if ( -1 === jQuery.inArray( data.type, [ 'audio', 'video' ] ) ) { #> @@ -325,6 +325,8 @@ function wp_print_media_templates() {
                <# if ( 'image' === data.type && ! data.uploading && data.sizes && data.can.save ) { #> + <# } else if ( 'pdf' === data.subtype && data.sizes ) { #> + <# } #>
                @@ -454,6 +456,8 @@ function wp_print_media_templates() {
                <# if ( data.image && data.image.src && data.image.src !== data.icon ) { #> + <# } else if ( data.sizes && data.sizes.medium ) { #> + <# } else { #> <# } #> @@ -610,16 +614,16 @@ function wp_print_media_templates() { <# } #>> @@ -641,31 +645,31 @@ function wp_print_media_templates() { <# if ( data.model.canEmbed ) { #> <# if ( 'image' === data.type ) { #> <# } #> @@ -718,13 +722,13 @@ function wp_print_media_templates() { @@ -841,16 +845,16 @@ function wp_print_media_templates() {
                @@ -859,13 +863,13 @@ function wp_print_media_templates() {
                @@ -907,16 +911,16 @@ function wp_print_media_templates() {
                @@ -964,21 +968,21 @@ function wp_print_media_templates() { diff --git a/wp/wp-includes/media.php b/wp/wp-includes/media.php index bc7a90ce..ba525559 100644 --- a/wp/wp-includes/media.php +++ b/wp/wp-includes/media.php @@ -6,6 +6,23 @@ * @subpackage Media */ +/** + * Retrieve additional image sizes. + * + * @since 4.7.0 + * + * @global array $_wp_additional_image_sizes + * + * @return array Additional images size data. + */ +function wp_get_additional_image_sizes() { + global $_wp_additional_image_sizes; + if ( ! $_wp_additional_image_sizes ) { + $_wp_additional_image_sizes = array(); + } + return $_wp_additional_image_sizes; +} + /** * Scale down the default size of an image. * @@ -27,7 +44,6 @@ * @since 2.5.0 * * @global int $content_width - * @global array $_wp_additional_image_sizes * * @param int $width Width of the image in pixels. * @param int $height Height of the image in pixels. @@ -39,7 +55,9 @@ * @return array Width and height of what the result image should resize to. */ function image_constrain_size_for_editor( $width, $height, $size = 'medium', $context = null ) { - global $content_width, $_wp_additional_image_sizes; + global $content_width; + + $_wp_additional_image_sizes = wp_get_additional_image_sizes(); if ( ! $context ) $context = is_admin() ? 'edit' : 'display'; @@ -82,11 +100,13 @@ function image_constrain_size_for_editor( $width, $height, $size = 'medium', $co if ( intval($content_width) > 0 ) { $max_width = min( intval($content_width), $max_width ); } - } elseif ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) && in_array( $size, array_keys( $_wp_additional_image_sizes ) ) ) { + } elseif ( ! empty( $_wp_additional_image_sizes ) && in_array( $size, array_keys( $_wp_additional_image_sizes ) ) ) { $max_width = intval( $_wp_additional_image_sizes[$size]['width'] ); $max_height = intval( $_wp_additional_image_sizes[$size]['height'] ); - if ( intval($content_width) > 0 && 'edit' == $context ) // Only in admin. Assume that theme authors know what they're doing. - $max_width = min( intval($content_width), $max_width ); + // Only in admin. Assume that theme authors know what they're doing. + if ( intval( $content_width ) > 0 && 'edit' === $context ) { + $max_width = min( intval( $content_width ), $max_width ); + } } // $size == 'full' has no constraint else { @@ -163,9 +183,7 @@ function image_hwstring( $width, $height ) { * the image is an intermediate size. False on failure. */ function image_downsize( $id, $size = 'medium' ) { - - if ( !wp_attachment_is_image($id) ) - return false; + $is_image = wp_attachment_is_image( $id ); /** * Filters whether to preempt the output of image_downsize(). @@ -190,6 +208,19 @@ function image_downsize( $id, $size = 'medium' ) { $is_intermediate = false; $img_url_basename = wp_basename($img_url); + // If the file isn't an image, attempt to replace its URL with a rendered image from its meta. + // Otherwise, a non-image type could be returned. + if ( ! $is_image ) { + if ( ! empty( $meta['sizes'] ) ) { + $img_url = str_replace( $img_url_basename, $meta['sizes']['full']['file'], $img_url ); + $img_url_basename = $meta['sizes']['full']['file']; + $width = $meta['sizes']['full']['width']; + $height = $meta['sizes']['full']['height']; + } else { + return false; + } + } + // try for a new style intermediate size if ( $intermediate = image_get_intermediate_size($id, $size) ) { $img_url = str_replace($img_url_basename, $intermediate['file'], $img_url); @@ -258,15 +289,12 @@ function add_image_size( $name, $width = 0, $height = 0, $crop = false ) { * * @since 3.9.0 * - * @global array $_wp_additional_image_sizes - * * @param string $name The image size to check. * @return bool True if the image size exists, false if not. */ function has_image_size( $name ) { - global $_wp_additional_image_sizes; - - return isset( $_wp_additional_image_sizes[ $name ] ); + $sizes = wp_get_additional_image_sizes(); + return isset( $sizes[ $name ] ); } /** @@ -668,6 +696,11 @@ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) { if ( is_array( $size ) ) { $candidates = array(); + if ( ! isset( $imagedata['file'] ) && isset( $imagedata['sizes']['full'] ) ) { + $imagedata['height'] = $imagedata['sizes']['full']['height']; + $imagedata['width'] = $imagedata['sizes']['full']['width']; + } + foreach ( $imagedata['sizes'] as $_size => $data ) { // If there's an exact match to an existing image size, short circuit. if ( $data['width'] == $size[0] && $data['height'] == $size[1] ) { @@ -721,7 +754,7 @@ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) { } // include the full filesystem path of the intermediate file - if ( empty($data['path']) && !empty($data['file']) ) { + if ( empty( $data['path'] ) && ! empty( $data['file'] ) && ! empty( $imagedata['file'] ) ) { $file_url = wp_get_attachment_url($post_id); $data['path'] = path_join( dirname($imagedata['file']), $data['file'] ); $data['url'] = path_join( dirname($file_url), $data['file'] ); @@ -748,15 +781,14 @@ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) { * * @since 3.0.0 * - * @global array $_wp_additional_image_sizes - * * @return array Returns a filtered array of image size strings. */ function get_intermediate_image_sizes() { - global $_wp_additional_image_sizes; + $_wp_additional_image_sizes = wp_get_additional_image_sizes(); $image_sizes = array('thumbnail', 'medium', 'medium_large', 'large'); // Standard sizes - if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) ) + if ( ! empty( $_wp_additional_image_sizes ) ) { $image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) ); + } /** * Filters the list of intermediate image sizes. @@ -850,18 +882,14 @@ function wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = fa $default_attr = array( 'src' => $src, 'class' => "attachment-$size_class size-$size_class", - 'alt' => trim(strip_tags( get_post_meta($attachment_id, '_wp_attachment_image_alt', true) )), // Use Alt field first + 'alt' => trim( strip_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) ), ); - if ( empty($default_attr['alt']) ) - $default_attr['alt'] = trim(strip_tags( $attachment->post_excerpt )); // If not, Use the Caption - if ( empty($default_attr['alt']) ) - $default_attr['alt'] = trim(strip_tags( $attachment->post_title )); // Finally, use the title $attr = wp_parse_args( $attr, $default_attr ); // Generate 'srcset' and 'sizes' if not already present. if ( empty( $attr['srcset'] ) ) { - $image_meta = get_post_meta( $attachment_id, '_wp_attachment_metadata', true ); + $image_meta = wp_get_attachment_metadata( $attachment_id ); if ( is_array( $image_meta ) ) { $size_array = array( absint( $width ), absint( $height ) ); @@ -990,7 +1018,7 @@ function wp_get_attachment_image_srcset( $attachment_id, $size = 'medium', $imag } if ( ! is_array( $image_meta ) ) { - $image_meta = get_post_meta( $attachment_id, '_wp_attachment_metadata', true ); + $image_meta = wp_get_attachment_metadata( $attachment_id ); } $image_src = $image[0]; @@ -1206,7 +1234,7 @@ function wp_get_attachment_image_sizes( $attachment_id, $size = 'medium', $image } if ( ! is_array( $image_meta ) ) { - $image_meta = get_post_meta( $attachment_id, '_wp_attachment_metadata', true ); + $image_meta = wp_get_attachment_metadata( $attachment_id ); } $image_src = $image[0]; @@ -1239,7 +1267,7 @@ function wp_calculate_image_sizes( $size, $image_src = null, $image_meta = null, $width = absint( $size[0] ); } elseif ( is_string( $size ) ) { if ( ! $image_meta && $attachment_id ) { - $image_meta = get_post_meta( $attachment_id, '_wp_attachment_metadata', true ); + $image_meta = wp_get_attachment_metadata( $attachment_id ); } if ( is_array( $image_meta ) ) { @@ -1314,7 +1342,7 @@ function wp_make_content_images_responsive( $content ) { } foreach ( $selected_images as $image => $attachment_id ) { - $image_meta = get_post_meta( $attachment_id, '_wp_attachment_metadata', true ); + $image_meta = wp_get_attachment_metadata( $attachment_id ); $content = str_replace( $image, wp_image_add_srcset_and_sizes( $image, $image_meta, $attachment_id ), $content ); } @@ -1549,10 +1577,10 @@ function img_caption_shortcode( $attr, $content = null ) { $caption_width = apply_filters( 'img_caption_shortcode_width', $width, $atts, $content ); $style = ''; - if ( $caption_width ) + if ( $caption_width ) { $style = 'style="width: ' . (int) $caption_width . 'px" '; + } - $html = ''; if ( $html5 ) { $html = '
                ' . do_shortcode( $content ) . '
                ' . $atts['caption'] . '
                '; @@ -2587,7 +2615,7 @@ function wp_video_shortcode( $attr, $content = '' ) { $width_rule = ''; if ( ! empty( $atts['width'] ) ) { - $width_rule = sprintf( 'width: %dpx; ', $atts['width'] ); + $width_rule = sprintf( 'width: %dpx;', $atts['width'] ); } $output = sprintf( '
                %s
                ', $width_rule, $html ); @@ -2694,11 +2722,15 @@ function adjacent_image_link( $prev = true, $size = 'thumbnail', $text = false ) * Retrieves taxonomies attached to given the attachment. * * @since 2.5.0 + * @since 4.7.0 Introduced the `$output` parameter. * * @param int|array|object $attachment Attachment ID, data array, or data object. + * @param string $output Output type. 'names' to return an array of taxonomy names, + * or 'objects' to return an array of taxonomy objects. + * Default is 'names'. * @return array Empty array on failure. List of taxonomies on success. */ -function get_attachment_taxonomies( $attachment ) { +function get_attachment_taxonomies( $attachment, $output = 'names' ) { if ( is_int( $attachment ) ) { $attachment = get_post( $attachment ); } elseif ( is_array( $attachment ) ) { @@ -2723,11 +2755,17 @@ function get_attachment_taxonomies( $attachment ) { } $taxonomies = array(); - foreach ( $objects as $object ) - if ( $taxes = get_object_taxonomies($object) ) - $taxonomies = array_merge($taxonomies, $taxes); + foreach ( $objects as $object ) { + if ( $taxes = get_object_taxonomies( $object, $output ) ) { + $taxonomies = array_merge( $taxonomies, $taxes ); + } + } - return array_unique($taxonomies); + if ( 'names' === $output ) { + $taxonomies = array_unique( $taxonomies ); + } + + return $taxonomies; } /** @@ -2890,7 +2928,6 @@ function _wp_image_editor_choose( $args = array() ) { require_once ABSPATH . WPINC . '/class-wp-image-editor.php'; require_once ABSPATH . WPINC . '/class-wp-image-editor-gd.php'; require_once ABSPATH . WPINC . '/class-wp-image-editor-imagick.php'; - /** * Filters the list of image editing library classes. * @@ -3102,7 +3139,7 @@ function wp_prepare_attachment_for_js( $attachment ) { if ( current_user_can( 'delete_post', $attachment->ID ) ) $response['nonces']['delete'] = wp_create_nonce( 'delete-post_' . $attachment->ID ); - if ( $meta && 'image' === $type ) { + if ( $meta && ( 'image' === $type || ! empty( $meta['sizes'] ) ) ) { $sizes = array(); /** This filter is documented in wp-admin/includes/media.php */ @@ -3122,8 +3159,10 @@ function wp_prepare_attachment_for_js( $attachment ) { /** This filter is documented in wp-includes/media.php */ if ( $downsize = apply_filters( 'image_downsize', false, $attachment->ID, $size ) ) { - if ( ! $downsize[3] ) + if ( empty( $downsize[3] ) ) { continue; + } + $sizes[ $size ] = array( 'height' => $downsize[2], 'width' => $downsize[1], @@ -3150,16 +3189,29 @@ function wp_prepare_attachment_for_js( $attachment ) { } } - $sizes['full'] = array( 'url' => $attachment_url ); + if ( 'image' === $type ) { + $sizes['full'] = array( 'url' => $attachment_url ); - if ( isset( $meta['height'], $meta['width'] ) ) { - $sizes['full']['height'] = $meta['height']; - $sizes['full']['width'] = $meta['width']; - $sizes['full']['orientation'] = $meta['height'] > $meta['width'] ? 'portrait' : 'landscape'; + if ( isset( $meta['height'], $meta['width'] ) ) { + $sizes['full']['height'] = $meta['height']; + $sizes['full']['width'] = $meta['width']; + $sizes['full']['orientation'] = $meta['height'] > $meta['width'] ? 'portrait' : 'landscape'; + } + + $response = array_merge( $response, $sizes['full'] ); + } elseif ( $meta['sizes']['full']['file'] ) { + $sizes['full'] = array( + 'url' => $base_url . $meta['sizes']['full']['file'], + 'height' => $meta['sizes']['full']['height'], + 'width' => $meta['sizes']['full']['width'], + 'orientation' => $meta['sizes']['full']['height'] > $meta['sizes']['full']['width'] ? 'portrait' : 'landscape' + ); } - $response = array_merge( $response, array( 'sizes' => $sizes ), $sizes['full'] ); - } elseif ( $meta && 'video' === $type ) { + $response = array_merge( $response, array( 'sizes' => $sizes ) ); + } + + if ( $meta && 'video' === $type ) { if ( isset( $meta['width'] ) ) $response['width'] = (int) $meta['width']; if ( isset( $meta['height'] ) ) @@ -3395,6 +3447,7 @@ function wp_enqueue_media( $args = array() ) { 'filterByDate' => __( 'Filter by date' ), 'filterByType' => __( 'Filter by type' ), 'searchMediaLabel' => __( 'Search Media' ), + 'searchMediaPlaceholder' => __( 'Search media items...' ), // placeholder (no ellipsis) 'noMedia' => __( 'No media files found.' ), // Library Details @@ -3788,12 +3841,10 @@ function attachment_url_to_postid( $url ) { * * @since 4.0.0 * - * @global string $wp_version - * * @return array The relevant CSS file URLs. */ function wpview_media_sandbox_styles() { - $version = 'ver=' . $GLOBALS['wp_version']; + $version = 'ver=' . get_bloginfo( 'version' ); $mediaelement = includes_url( "js/mediaelement/mediaelementplayer.min.css?$version" ); $wpmediaelement = includes_url( "js/mediaelement/wp-mediaelement.css?$version" ); diff --git a/wp/wp-includes/meta.php b/wp/wp-includes/meta.php index 8833d3e9..cfb9d95a 100644 --- a/wp/wp-includes/meta.php +++ b/wp/wp-includes/meta.php @@ -567,12 +567,12 @@ function metadata_exists( $meta_type, $object_id, $meta_key ) { function get_metadata_by_mid( $meta_type, $meta_id ) { global $wpdb; - if ( ! $meta_type || ! is_numeric( $meta_id ) ) { + if ( ! $meta_type || ! is_numeric( $meta_id ) || floor( $meta_id ) != $meta_id ) { return false; } - $meta_id = absint( $meta_id ); - if ( ! $meta_id ) { + $meta_id = intval( $meta_id ); + if ( $meta_id <= 0 ) { return false; } @@ -611,12 +611,12 @@ function update_metadata_by_mid( $meta_type, $meta_id, $meta_value, $meta_key = global $wpdb; // Make sure everything is valid. - if ( ! $meta_type || ! is_numeric( $meta_id ) ) { + if ( ! $meta_type || ! is_numeric( $meta_id ) || floor( $meta_id ) != $meta_id ) { return false; } - $meta_id = absint( $meta_id ); - if ( ! $meta_id ) { + $meta_id = intval( $meta_id ); + if ( $meta_id <= 0 ) { return false; } @@ -702,12 +702,12 @@ function delete_metadata_by_mid( $meta_type, $meta_id ) { global $wpdb; // Make sure everything is valid. - if ( ! $meta_type || ! is_numeric( $meta_id ) ) { + if ( ! $meta_type || ! is_numeric( $meta_id ) || floor( $meta_id ) != $meta_id ) { return false; } - $meta_id = absint( $meta_id ); - if ( ! $meta_id ) { + $meta_id = intval( $meta_id ); + if ( $meta_id <= 0 ) { return false; } @@ -964,7 +964,7 @@ function sanitize_meta( $meta_key, $meta_value, $object_type ) { * Registers a meta key. * * @since 3.3.0 - * @since 4.6.0 {@link https://make.wordpress.org/core/2016/07/08/enhancing-register_meta-in-4-6/ Modified + * @since 4.6.0 {@link https://core.trac.wordpress.org/ticket/35658 Modified * to support an array of data to attach to registered meta keys}. Previous arguments for * `$sanitize_callback` and `$auth_callback` have been folded into this array. * diff --git a/wp/wp-includes/ms-blogs.php b/wp/wp-includes/ms-blogs.php index ccafd047..91887503 100644 --- a/wp/wp-includes/ms-blogs.php +++ b/wp/wp-includes/ms-blogs.php @@ -38,7 +38,7 @@ function wpmu_update_blogs_date() { * @return string Full URL of the blog if found. Empty string if not. */ function get_blogaddress_by_id( $blog_id ) { - $bloginfo = get_blog_details( (int) $blog_id ); + $bloginfo = get_site( (int) $blog_id ); if ( empty( $bloginfo ) ) { return ''; @@ -72,36 +72,38 @@ function get_blogaddress_by_name( $blogname ) { } /** - * Given a blog's (subdomain or directory) slug, retrieve its id. + * Retrieves a sites ID given its (subdomain or directory) slug. * * @since MU + * @since 4.7.0 Converted to use get_sites(). * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param string $slug - * @return int A blog id + * @param string $slug A site's slug. + * @return int|null The site ID, or null if no site is found for the given slug. */ function get_id_from_blogname( $slug ) { - global $wpdb; - - $current_site = get_current_site(); + $current_network = get_network(); $slug = trim( $slug, '/' ); - $blog_id = wp_cache_get( 'get_id_from_blogname_' . $slug, 'blog-details' ); - if ( $blog_id ) - return $blog_id; - if ( is_subdomain_install() ) { - $domain = $slug . '.' . $current_site->domain; - $path = $current_site->path; + $domain = $slug . '.' . preg_replace( '|^www\.|', '', $current_network->domain ); + $path = $current_network->path; } else { - $domain = $current_site->domain; - $path = $current_site->path . $slug . '/'; + $domain = $current_network->domain; + $path = $current_network->path . $slug . '/'; } - $blog_id = $wpdb->get_var( $wpdb->prepare("SELECT blog_id FROM {$wpdb->blogs} WHERE domain = %s AND path = %s", $domain, $path) ); - wp_cache_set( 'get_id_from_blogname_' . $slug, $blog_id, 'blog-details' ); - return $blog_id; + $site_ids = get_sites( array( + 'number' => 1, + 'fields' => 'ids', + 'domain' => $domain, + 'path' => $path, + ) ); + + if ( empty( $site_ids ) ) { + return null; + } + + return array_shift( $site_ids ); } /** @@ -238,10 +240,11 @@ function get_blog_details( $fields = null, $get_all = true ) { * Filters a blog's details. * * @since MU + * @deprecated 4.7.0 Use site_details * * @param object $details The blog details. */ - $details = apply_filters( 'blog_details', $details ); + $details = apply_filters_deprecated( 'blog_details', array( $details ), '4.7.0', 'site_details' ); wp_cache_set( $blog_id . $all, $details, 'blog-details' ); @@ -264,7 +267,7 @@ function refresh_blog_details( $blog_id = 0 ) { $blog_id = get_current_blog_id(); } - $details = get_blog_details( $blog_id, false ); + $details = get_site( $blog_id ); if ( ! $details ) { // Make sure clean_blog_cache() gets the blog ID // when the blog has been previously cached as @@ -308,7 +311,7 @@ function update_blog_details( $blog_id, $details = array() ) { if ( is_object($details) ) $details = get_object_vars($details); - $current_details = get_blog_details($blog_id, false); + $current_details = get_site( $blog_id ); if ( empty($current_details) ) return false; @@ -440,7 +443,7 @@ function update_blog_details( $blog_id, $details = array() ) { * * @since 3.5.0 * - * @param WP_Site $blog The blog details as returned from get_blog_details() + * @param WP_Site $blog The site object to be cleared from cache. */ function clean_blog_cache( $blog ) { $blog_id = $blog->blog_id; @@ -453,7 +456,6 @@ function clean_blog_cache( $blog ) { wp_cache_delete( $domain_path_key, 'blog-lookup' ); wp_cache_delete( 'current_blog_' . $blog->domain, 'site-options' ); wp_cache_delete( 'current_blog_' . $blog->domain . $blog->path, 'site-options' ); - wp_cache_delete( 'get_id_from_blogname_' . trim( $blog->path, '/' ), 'blog-details' ); wp_cache_delete( $domain_path_key, 'blog-id-cache' ); /** @@ -566,10 +568,10 @@ function update_site_cache( $sites ) { * Default false. * @type array $date_query Date query clauses to limit sites by. See WP_Date_Query. * Default null. - * @type string $fields Site fields to return. Accepts 'ids' for site IDs only or empty - * for all fields. Default empty. + * @type string $fields Site fields to return. Accepts 'ids' (returns an array of site IDs) + * or empty (returns an array of complete site objects). Default empty. * @type int $ID A site ID to only return that site. Default empty. - * @type int $number Maximum number of sites to retrieve. Default null (no limit). + * @type int $number Maximum number of sites to retrieve. Default 100. * @type int $offset Number of sites to offset the query. Used to build LIMIT clause. * Default 0. * @type bool $no_found_rows Whether to disable the `SQL_CALC_FOUND_ROWS` query. Default true. @@ -579,16 +581,14 @@ function update_site_cache( $sites ) { * an empty array, or 'none' to disable `ORDER BY` clause. * Default 'id'. * @type string $order How to order retrieved sites. Accepts 'ASC', 'DESC'. Default 'ASC'. - * @type int $network_id Limit results to those affiliated with a given network ID. - * Default current network ID. + * @type int $network_id Limit results to those affiliated with a given network ID. If 0, + * include all networks. Default 0. * @type array $network__in Array of network IDs to include affiliated sites for. Default empty. * @type array $network__not_in Array of network IDs to exclude affiliated sites for. Default empty. - * @type string $domain Limit results to those affiliated with a given domain. - * Default empty. + * @type string $domain Limit results to those affiliated with a given domain. Default empty. * @type array $domain__in Array of domains to include affiliated sites for. Default empty. * @type array $domain__not_in Array of domains to exclude affiliated sites for. Default empty. - * @type string $path Limit results to those affiliated with a given path. - * Default empty. + * @type string $path Limit results to those affiliated with a given path. Default empty. * @type array $path__in Array of paths to include affiliated sites for. Default empty. * @type array $path__not_in Array of paths to exclude affiliated sites for. Default empty. * @type int $public Limit results to public sites. Accepts '1' or '0'. Default empty. @@ -597,6 +597,8 @@ function update_site_cache( $sites ) { * @type int $spam Limit results to spam sites. Accepts '1' or '0'. Default empty. * @type int $deleted Limit results to deleted sites. Accepts '1' or '0'. Default empty. * @type string $search Search term(s) to retrieve matching sites for. Default empty. + * @type array $search_columns Array of column names to be searched. Accepts 'domain' and 'path'. + * Default empty array. * @type bool $update_site_cache Whether to prime the cache for found sites. Default false. * } * @return array List of sites. @@ -764,19 +766,21 @@ function update_blog_option( $id, $option, $value, $deprecated = null ) { * @return true Always returns True. */ function switch_to_blog( $new_blog, $deprecated = null ) { - global $wpdb; + global $wpdb, $wp_roles; - if ( empty( $new_blog ) ) - $new_blog = $GLOBALS['blog_id']; + $blog_id = get_current_blog_id(); + if ( empty( $new_blog ) ) { + $new_blog = $blog_id; + } - $GLOBALS['_wp_switched_stack'][] = $GLOBALS['blog_id']; + $GLOBALS['_wp_switched_stack'][] = $blog_id; /* * If we're switching to the same blog id that we're on, * set the right vars, do the associated actions, but skip * the extra unnecessary work */ - if ( $new_blog == $GLOBALS['blog_id'] ) { + if ( $new_blog == $blog_id ) { /** * Fires when the blog is switched. * @@ -792,7 +796,7 @@ function switch_to_blog( $new_blog, $deprecated = null ) { $wpdb->set_blog_id( $new_blog ); $GLOBALS['table_prefix'] = $wpdb->get_blog_prefix(); - $prev_blog_id = $GLOBALS['blog_id']; + $prev_blog_id = $blog_id; $GLOBALS['blog_id'] = $new_blog; if ( function_exists( 'wp_cache_switch_to_blog' ) ) { @@ -800,11 +804,11 @@ function switch_to_blog( $new_blog, $deprecated = null ) { } else { global $wp_object_cache; - if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) ) + if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) ) { $global_groups = $wp_object_cache->global_groups; - else + } else { $global_groups = false; - + } wp_cache_init(); if ( function_exists( 'wp_cache_add_global_groups' ) ) { @@ -818,7 +822,7 @@ function switch_to_blog( $new_blog, $deprecated = null ) { } if ( did_action( 'init' ) ) { - wp_roles()->reinit(); + $wp_roles = new WP_Roles(); $current_user = wp_get_current_user(); $current_user->for_blog( $new_blog ); } @@ -846,14 +850,16 @@ function switch_to_blog( $new_blog, $deprecated = null ) { * @return bool True on success, false if we're already on the current blog */ function restore_current_blog() { - global $wpdb; + global $wpdb, $wp_roles; - if ( empty( $GLOBALS['_wp_switched_stack'] ) ) + if ( empty( $GLOBALS['_wp_switched_stack'] ) ) { return false; + } $blog = array_pop( $GLOBALS['_wp_switched_stack'] ); + $blog_id = get_current_blog_id(); - if ( $GLOBALS['blog_id'] == $blog ) { + if ( $blog_id == $blog ) { /** This filter is documented in wp-includes/ms-blogs.php */ do_action( 'switch_blog', $blog, $blog ); // If we still have items in the switched stack, consider ourselves still 'switched' @@ -862,7 +868,7 @@ function restore_current_blog() { } $wpdb->set_blog_id( $blog ); - $prev_blog_id = $GLOBALS['blog_id']; + $prev_blog_id = $blog_id; $GLOBALS['blog_id'] = $blog; $GLOBALS['table_prefix'] = $wpdb->get_blog_prefix(); @@ -871,10 +877,11 @@ function restore_current_blog() { } else { global $wp_object_cache; - if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) ) + if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) ) { $global_groups = $wp_object_cache->global_groups; - else + } else { $global_groups = false; + } wp_cache_init(); @@ -889,7 +896,7 @@ function restore_current_blog() { } if ( did_action( 'init' ) ) { - wp_roles()->reinit(); + $wp_roles = new WP_Roles(); $current_user = wp_get_current_user(); $current_user->for_blog( $blog ); } @@ -1032,7 +1039,7 @@ function update_blog_status( $blog_id, $pref, $value, $deprecated = null ) { function get_blog_status( $id, $pref ) { global $wpdb; - $details = get_blog_details( $id, false ); + $details = get_site( $id ); if ( $details ) return $details->$pref; diff --git a/wp/wp-includes/ms-default-constants.php b/wp/wp-includes/ms-default-constants.php index 98719f8b..5a54b88d 100644 --- a/wp/wp-includes/ms-default-constants.php +++ b/wp/wp-includes/ms-default-constants.php @@ -47,19 +47,19 @@ function ms_upload_constants() { * @since 3.0.0 */ function ms_cookie_constants( ) { - $current_site = get_current_site(); + $current_network = get_network(); /** * @since 1.2.0 */ if ( !defined( 'COOKIEPATH' ) ) - define( 'COOKIEPATH', $current_site->path ); + define( 'COOKIEPATH', $current_network->path ); /** * @since 1.5.0 */ if ( !defined( 'SITECOOKIEPATH' ) ) - define( 'SITECOOKIEPATH', $current_site->path ); + define( 'SITECOOKIEPATH', $current_network->path ); /** * @since 2.6.0 @@ -76,10 +76,10 @@ function ms_cookie_constants( ) { * @since 2.0.0 */ if ( !defined('COOKIE_DOMAIN') && is_subdomain_install() ) { - if ( !empty( $current_site->cookie_domain ) ) - define('COOKIE_DOMAIN', '.' . $current_site->cookie_domain); + if ( !empty( $current_network->cookie_domain ) ) + define('COOKIE_DOMAIN', '.' . $current_network->cookie_domain); else - define('COOKIE_DOMAIN', '.' . $current_site->domain); + define('COOKIE_DOMAIN', '.' . $current_network->domain); } } diff --git a/wp/wp-includes/ms-deprecated.php b/wp/wp-includes/ms-deprecated.php index 7e43fccd..cd35f55c 100644 --- a/wp/wp-includes/ms-deprecated.php +++ b/wp/wp-includes/ms-deprecated.php @@ -18,17 +18,18 @@ * Dashboard blog functionality was removed in WordPress 3.1, replaced by the user admin. * * @since MU - * @deprecated 3.1.0 Use get_blog_details() - * @see get_blog_details() + * @deprecated 3.1.0 Use get_site() + * @see get_site() * - * @return int Current site ID. + * @return WP_Site Current site object. */ function get_dashboard_blog() { _deprecated_function( __FUNCTION__, '3.1.0' ); - if ( $blog = get_site_option( 'dashboard_blog' ) ) - return get_blog_details( $blog ); + if ( $blog = get_site_option( 'dashboard_blog' ) ) { + return get_site( $blog ); + } - return get_blog_details( $GLOBALS['current_site']->blog_id ); + return get_site( get_network()->site_id ); } /** diff --git a/wp/wp-includes/ms-files.php b/wp/wp-includes/ms-files.php index 87fa70f4..e5c1db3f 100644 --- a/wp/wp-includes/ms-files.php +++ b/wp/wp-includes/ms-files.php @@ -80,3 +80,4 @@ if ( ( $client_last_modified && $client_etag ) // If we made it this far, just serve the file readfile( $file ); +flush(); diff --git a/wp/wp-includes/ms-functions.php b/wp/wp-includes/ms-functions.php index a253a61d..2e9ca946 100644 --- a/wp/wp-includes/ms-functions.php +++ b/wp/wp-includes/ms-functions.php @@ -53,9 +53,9 @@ function get_active_blog_for_user( $user_id ) { if ( false !== $primary_blog ) { if ( ! isset( $blogs[ $primary_blog ] ) ) { update_user_meta( $user_id, 'primary_blog', $first_blog->userblog_id ); - $primary = get_blog_details( $first_blog->userblog_id ); + $primary = get_site( $first_blog->userblog_id ); } else { - $primary = get_blog_details( $primary_blog ); + $primary = get_site( $primary_blog ); } } else { //TODO Review this call to add_user_to_blog too - to get here the user must have a role on this blog? @@ -71,7 +71,7 @@ function get_active_blog_for_user( $user_id ) { foreach ( (array) $blogs as $blog_id => $blog ) { if ( $blog->site_id != $wpdb->siteid ) continue; - $details = get_blog_details( $blog_id ); + $details = get_site( $blog_id ); if ( is_object( $details ) && $details->archived == 0 && $details->spam == 0 && $details->deleted == 0 ) { $ret = $blog; if ( get_user_meta( $user_id , 'primary_blog', true ) != $blog_id ) @@ -161,8 +161,8 @@ function add_user_to_blog( $blog_id, $user_id, $role ) { if ( !get_user_meta($user_id, 'primary_blog', true) ) { update_user_meta($user_id, 'primary_blog', $blog_id); - $details = get_blog_details($blog_id); - update_user_meta($user_id, 'source_domain', $details->domain); + $site = get_site( $blog_id ); + update_user_meta( $user_id, 'source_domain', $site->domain ); } $user->set_role($role); @@ -546,8 +546,8 @@ function wpmu_validate_user_signup($user_name, $user_email) { function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) { global $wpdb, $domain; - $current_site = get_current_site(); - $base = $current_site->path; + $current_network = get_network(); + $base = $current_network->path; $blog_title = strip_tags( $blog_title ); @@ -580,7 +580,7 @@ function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) { $errors->add('blogname', __( 'Site name must be at least 4 characters.' ) ); // do not allow users to create a blog that conflicts with a page on the main blog. - if ( !is_subdomain_install() && $wpdb->get_var( $wpdb->prepare( "SELECT post_name FROM " . $wpdb->get_blog_prefix( $current_site->blog_id ) . "posts WHERE post_type = 'page' AND post_name = %s", $blogname ) ) ) + if ( !is_subdomain_install() && $wpdb->get_var( $wpdb->prepare( "SELECT post_name FROM " . $wpdb->get_blog_prefix( $current_network->site_id ) . "posts WHERE post_type = 'page' AND post_name = %s", $blogname ) ) ) $errors->add( 'blogname', __( 'Sorry, you may not use that site name.' ) ); // all numeric? @@ -612,7 +612,7 @@ function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) { $mydomain = "$domain"; $path = $base.$blogname.'/'; } - if ( domain_exists($mydomain, $path, $current_site->id) ) + if ( domain_exists($mydomain, $path, $current_network->id) ) $errors->add( 'blogname', __( 'Sorry, that site already exists!' ) ); if ( username_exists( $blogname ) ) { @@ -764,13 +764,13 @@ function wpmu_signup_user( $user, $user_email, $meta = array() ) { * @param string $domain The new blog domain. * @param string $path The new blog path. * @param string $title The site title. - * @param string $user The user's login name. + * @param string $user_login The user's login name. * @param string $user_email The user's email address. * @param string $key The activation key created in wpmu_signup_blog() * @param array $meta By default, contains the requested privacy setting and lang_id. * @return bool */ -function wpmu_signup_blog_notification( $domain, $path, $title, $user, $user_email, $key, $meta = array() ) { +function wpmu_signup_blog_notification( $domain, $path, $title, $user_login, $user_email, $key, $meta = array() ) { /** * Filters whether to bypass the new site email notification. * @@ -779,17 +779,17 @@ function wpmu_signup_blog_notification( $domain, $path, $title, $user, $user_ema * @param string|bool $domain Site domain. * @param string $path Site path. * @param string $title Site title. - * @param string $user User login name. + * @param string $user_login User login name. * @param string $user_email User email address. * @param string $key Activation key created in wpmu_signup_blog(). * @param array $meta By default, contains the requested privacy setting and lang_id. */ - if ( ! apply_filters( 'wpmu_signup_blog_notification', $domain, $path, $title, $user, $user_email, $key, $meta ) ) { + if ( ! apply_filters( 'wpmu_signup_blog_notification', $domain, $path, $title, $user_login, $user_email, $key, $meta ) ) { return false; } // Send email with activation link. - if ( !is_subdomain_install() || get_current_site()->id != 1 ) + if ( !is_subdomain_install() || get_current_network_id() != 1 ) $activate_url = network_site_url("wp-activate.php?key=$key"); else $activate_url = "http://{$domain}{$path}wp-activate.php?key=$key"; // @todo use *_url() API @@ -800,6 +800,10 @@ function wpmu_signup_blog_notification( $domain, $path, $title, $user, $user_ema $admin_email = 'support@' . $_SERVER['SERVER_NAME']; $from_name = get_site_option( 'site_name' ) == '' ? 'WordPress' : esc_html( get_site_option( 'site_name' ) ); $message_headers = "From: \"{$from_name}\" <{$admin_email}>\n" . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n"; + + $user = get_user_by( 'login', $user_login ); + $switched_locale = switch_to_locale( get_user_locale( $user ) ); + $message = sprintf( /** * Filters the message content of the new blog notification email. @@ -812,14 +816,14 @@ function wpmu_signup_blog_notification( $domain, $path, $title, $user, $user_ema * @param string $domain Site domain. * @param string $path Site path. * @param string $title Site title. - * @param string $user User login name. + * @param string $user_login User login name. * @param string $user_email User email address. * @param string $key Activation key created in wpmu_signup_blog(). * @param array $meta By default, contains the requested privacy setting and lang_id. */ apply_filters( 'wpmu_signup_blog_notification_email', __( "To activate your blog, please click the following link:\n\n%s\n\nAfter you activate, you will receive *another email* with your login.\n\nAfter you activate, you can visit your site here:\n\n%s" ), - $domain, $path, $title, $user, $user_email, $key, $meta + $domain, $path, $title, $user_login, $user_email, $key, $meta ), $activate_url, esc_url( "http://{$domain}{$path}" ), @@ -836,19 +840,25 @@ function wpmu_signup_blog_notification( $domain, $path, $title, $user, $user_ema * @param string $domain Site domain. * @param string $path Site path. * @param string $title Site title. - * @param string $user User login name. + * @param string $user_login User login name. * @param string $user_email User email address. * @param string $key Activation key created in wpmu_signup_blog(). * @param array $meta By default, contains the requested privacy setting and lang_id. */ apply_filters( 'wpmu_signup_blog_notification_subject', - __( '[%1$s] Activate %2$s' ), - $domain, $path, $title, $user, $user_email, $key, $meta + /* translators: New site notification email subject. 1: Network name, 2: New site URL */ + _x( '[%1$s] Activate %2$s', 'New site notification email subject' ), + $domain, $path, $title, $user_login, $user_email, $key, $meta ), $from_name, esc_url( 'http://' . $domain . $path ) ); wp_mail( $user_email, wp_specialchars_decode( $subject ), $message, $message_headers ); + + if ( $switched_locale ) { + restore_previous_locale(); + } + return true; } @@ -867,26 +877,29 @@ function wpmu_signup_blog_notification( $domain, $path, $title, $user, $user_ema * * @since MU * - * @param string $user The user's login name. + * @param string $user_login The user's login name. * @param string $user_email The user's email address. * @param string $key The activation key created in wpmu_signup_user() * @param array $meta By default, an empty array. * @return bool */ -function wpmu_signup_user_notification( $user, $user_email, $key, $meta = array() ) { +function wpmu_signup_user_notification( $user_login, $user_email, $key, $meta = array() ) { /** * Filters whether to bypass the email notification for new user sign-up. * * @since MU * - * @param string $user User login name. + * @param string $user_login User login name. * @param string $user_email User email address. * @param string $key Activation key created in wpmu_signup_user(). * @param array $meta Signup meta data. */ - if ( ! apply_filters( 'wpmu_signup_user_notification', $user, $user_email, $key, $meta ) ) + if ( ! apply_filters( 'wpmu_signup_user_notification', $user_login, $user_email, $key, $meta ) ) return false; + $user = get_user_by( 'login', $user_login ); + $switched_locale = switch_to_locale( get_user_locale( $user ) ); + // Send email with activation link. $admin_email = get_site_option( 'admin_email' ); if ( $admin_email == '' ) @@ -902,14 +915,14 @@ function wpmu_signup_user_notification( $user, $user_email, $key, $meta = array( * @since MU * * @param string $content Content of the notification email. - * @param string $user User login name. + * @param string $user_login User login name. * @param string $user_email User email address. * @param string $key Activation key created in wpmu_signup_user(). * @param array $meta Signup meta data. */ apply_filters( 'wpmu_signup_user_notification_email', __( "To activate your user, please click the following link:\n\n%s\n\nAfter you activate, you will receive *another email* with your login." ), - $user, $user_email, $key, $meta + $user_login, $user_email, $key, $meta ), site_url( "wp-activate.php?key=$key" ) ); @@ -921,19 +934,25 @@ function wpmu_signup_user_notification( $user, $user_email, $key, $meta = array( * @since MU * * @param string $subject Subject of the notification email. - * @param string $user User login name. + * @param string $user_login User login name. * @param string $user_email User email address. * @param string $key Activation key created in wpmu_signup_user(). * @param array $meta Signup meta data. */ apply_filters( 'wpmu_signup_user_notification_subject', - __( '[%1$s] Activate %2$s' ), - $user, $user_email, $key, $meta + /* translators: New user notification email subject. 1: Network name, 2: New user login */ + _x( '[%1$s] Activate %2$s', 'New user notification email subject' ), + $user_login, $user_email, $key, $meta ), $from_name, - $user + $user_login ); wp_mail( $user_email, wp_specialchars_decode( $subject ), $message, $message_headers ); + + if ( $switched_locale ) { + restore_previous_locale(); + } + return true; } @@ -1092,7 +1111,10 @@ function wpmu_create_user( $user_name, $password, $email ) { * @return int|WP_Error Returns WP_Error object on failure, int $blog_id on success */ function wpmu_create_blog( $domain, $path, $title, $user_id, $meta = array(), $site_id = 1 ) { - $defaults = array( 'public' => 0 ); + $defaults = array( + 'public' => 0, + 'WPLANG' => get_site_option( 'WPLANG' ), + ); $meta = wp_parse_args( $meta, $defaults ); $domain = preg_replace( '/\s+/', '', sanitize_user( $domain, true ) ); @@ -1130,7 +1152,6 @@ function wpmu_create_blog( $domain, $path, $title, $user_id, $meta = array(), $s update_option( $key, $value ); } - add_option( 'WPLANG', get_site_option( 'WPLANG' ) ); update_option( 'blog_public', (int) $meta['public'] ); if ( ! is_super_admin( $user_id ) && ! get_user_meta( $user_id, 'primary_blog', true ) ) @@ -1183,6 +1204,7 @@ function newblog_notify_siteadmin( $blog_id, $deprecated = '' ) { $siteurl = site_url(); restore_current_blog(); + /* translators: New site notification email. 1: Site URL, 2: User IP address, 3: Settings screen URL */ $msg = sprintf( __( 'New Site: %1$s URL: %2$s Remote IP: %3$s @@ -1225,6 +1247,7 @@ function newuser_notify_siteadmin( $user_id ) { $user = get_userdata( $user_id ); $options_site_url = esc_url(network_admin_url('settings.php')); + /* translators: New user notification email. 1: User login, 2: User IP address, 3: Settings screen URL */ $msg = sprintf(__('New User: %1$s Remote IP: %2$s @@ -1332,7 +1355,7 @@ function insert_blog($domain, $path, $site_id) { * @param string $blog_title The title of the new site. */ function install_blog( $blog_id, $blog_title = '' ) { - global $wpdb, $wp_roles, $current_site; + global $wpdb, $wp_roles; // Cast for security $blog_id = (int) $blog_id; @@ -1361,7 +1384,7 @@ function install_blog( $blog_id, $blog_title = '' ) { if ( 'https' === parse_url( get_site_option( 'siteurl' ), PHP_URL_SCHEME ) ) { $siteurl = set_url_scheme( $siteurl, 'https' ); } - if ( 'https' === parse_url( get_home_url( $current_site->blog_id ), PHP_URL_SCHEME ) ) { + if ( 'https' === parse_url( get_home_url( get_network()->site_id ), PHP_URL_SCHEME ) ) { $home = set_url_scheme( $home, 'https' ); } @@ -1373,7 +1396,7 @@ function install_blog( $blog_id, $blog_title = '' ) { if ( get_site_option( 'ms_files_rewriting' ) ) update_option( 'upload_path', UPLOADBLOGSDIR . "/$blog_id/files" ); else - update_option( 'upload_path', get_blog_option( get_current_site()->blog_id, 'upload_path' ) ); + update_option( 'upload_path', get_blog_option( get_network()->site_id, 'upload_path' ) ); update_option( 'blogname', wp_unslash( $blog_title ) ); update_option( 'admin_email', '' ); @@ -1428,7 +1451,7 @@ function install_blog_defaults($blog_id, $user_id) { * @return bool */ function wpmu_welcome_notification( $blog_id, $user_id, $password, $title, $meta = array() ) { - $current_site = get_current_site(); + $current_network = get_network(); /** * Filters whether to bypass the welcome email after site activation. @@ -1446,6 +1469,10 @@ function wpmu_welcome_notification( $blog_id, $user_id, $password, $title, $meta if ( ! apply_filters( 'wpmu_welcome_notification', $blog_id, $user_id, $password, $title, $meta ) ) return false; + $user = get_userdata( $user_id ); + + $switched_locale = switch_to_locale( get_user_locale( $user ) ); + $welcome_email = get_site_option( 'welcome_email' ); if ( $welcome_email == false ) { /* translators: Do not translate USERNAME, SITE_NAME, BLOG_URL, PASSWORD: those are placeholders. */ @@ -1466,9 +1493,8 @@ We hope you enjoy your new site. Thanks! } $url = get_blogaddress_by_id($blog_id); - $user = get_userdata( $user_id ); - $welcome_email = str_replace( 'SITE_NAME', $current_site->site_name, $welcome_email ); + $welcome_email = str_replace( 'SITE_NAME', $current_network->site_name, $welcome_email ); $welcome_email = str_replace( 'BLOG_TITLE', $title, $welcome_email ); $welcome_email = str_replace( 'BLOG_URL', $url, $welcome_email ); $welcome_email = str_replace( 'USERNAME', $user->user_login, $welcome_email ); @@ -1498,8 +1524,11 @@ We hope you enjoy your new site. Thanks! $message_headers = "From: \"{$from_name}\" <{$admin_email}>\n" . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n"; $message = $welcome_email; - if ( empty( $current_site->site_name ) ) - $current_site->site_name = 'WordPress'; + if ( empty( $current_network->site_name ) ) + $current_network->site_name = 'WordPress'; + + /* translators: New site notification email subject. 1: Network name, 2: New site name */ + $subject = __( 'New %1$s Site: %2$s' ); /** * Filters the subject of the welcome email after site activation. @@ -1508,8 +1537,13 @@ We hope you enjoy your new site. Thanks! * * @param string $subject Subject of the email. */ - $subject = apply_filters( 'update_welcome_subject', sprintf( __( 'New %1$s Site: %2$s' ), $current_site->site_name, wp_unslash( $title ) ) ); + $subject = apply_filters( 'update_welcome_subject', sprintf( $subject, $current_network->site_name, wp_unslash( $title ) ) ); wp_mail( $user->user_email, wp_specialchars_decode( $subject ), $message, $message_headers ); + + if ( $switched_locale ) { + restore_previous_locale(); + } + return true; } @@ -1529,7 +1563,7 @@ We hope you enjoy your new site. Thanks! * @return bool */ function wpmu_welcome_user_notification( $user_id, $password, $meta = array() ) { - $current_site = get_current_site(); + $current_network = get_network(); /** * Filters whether to bypass the welcome email after user activation. @@ -1549,6 +1583,8 @@ function wpmu_welcome_user_notification( $user_id, $password, $meta = array() ) $user = get_userdata( $user_id ); + $switched_locale = switch_to_locale( get_user_locale( $user ) ); + /** * Filters the content of the welcome email after user activation. * @@ -1562,7 +1598,7 @@ function wpmu_welcome_user_notification( $user_id, $password, $meta = array() ) * @param array $meta Signup meta data. */ $welcome_email = apply_filters( 'update_welcome_user_email', $welcome_email, $user_id, $password, $meta ); - $welcome_email = str_replace( 'SITE_NAME', $current_site->site_name, $welcome_email ); + $welcome_email = str_replace( 'SITE_NAME', $current_network->site_name, $welcome_email ); $welcome_email = str_replace( 'USERNAME', $user->user_login, $welcome_email ); $welcome_email = str_replace( 'PASSWORD', $password, $welcome_email ); $welcome_email = str_replace( 'LOGINLINK', wp_login_url(), $welcome_email ); @@ -1576,8 +1612,11 @@ function wpmu_welcome_user_notification( $user_id, $password, $meta = array() ) $message_headers = "From: \"{$from_name}\" <{$admin_email}>\n" . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n"; $message = $welcome_email; - if ( empty( $current_site->site_name ) ) - $current_site->site_name = 'WordPress'; + if ( empty( $current_network->site_name ) ) + $current_network->site_name = 'WordPress'; + + /* translators: New user notification email subject. 1: Network name, 2: New user login */ + $subject = __( 'New %1$s User: %2$s' ); /** * Filters the subject of the welcome email after user activation. @@ -1586,8 +1625,13 @@ function wpmu_welcome_user_notification( $user_id, $password, $meta = array() ) * * @param string $subject Subject of the email. */ - $subject = apply_filters( 'update_welcome_user_subject', sprintf( __( 'New %1$s User: %2$s' ), $current_site->site_name, $user->user_login) ); + $subject = apply_filters( 'update_welcome_user_subject', sprintf( $subject, $current_network->site_name, $user->user_login) ); wp_mail( $user->user_email, wp_specialchars_decode( $subject ), $message, $message_headers ); + + if ( $switched_locale ) { + restore_previous_locale(); + } + return true; } @@ -1760,8 +1804,8 @@ function check_upload_mimes( $mimes ) { * * WordPress MS stores a blog's post count as an option so as * to avoid extraneous COUNTs when a blog's details are fetched - * with get_blog_details(). This function is called when posts - * are published or unpublished to make sure the count stays current. + * with get_site(). This function is called when posts are published + * or unpublished to make sure the count stays current. * * @since MU * @@ -1875,7 +1919,7 @@ function global_terms( $term_id, $deprecated = '' ) { * @return array The current site's domain */ function redirect_this_site( $deprecated = '' ) { - return array( get_current_site()->domain ); + return array( get_network()->domain ); } /** @@ -1985,15 +2029,12 @@ function maybe_add_existing_user_to_blog() { * * @since MU * - * @global int $blog_id - * * @param array $details * @return true|WP_Error|void */ function add_existing_user_to_blog( $details = false ) { - global $blog_id; - if ( is_array( $details ) ) { + $blog_id = get_current_blog_id(); $result = add_user_to_blog( $blog_id, $details[ 'user_id' ], $details[ 'role' ] ); /** * Fires immediately after an existing user is added to a site. @@ -2025,7 +2066,7 @@ function add_new_user_to_blog( $user_id, $password, $meta ) { if ( !empty( $meta[ 'add_to_blog' ] ) ) { $blog_id = $meta[ 'add_to_blog' ]; $role = $meta[ 'new_role' ]; - remove_user_from_blog($user_id, get_current_site()->blog_id); // remove user from main blog. + remove_user_from_blog($user_id, get_network()->site_id); // remove user from main blog. add_user_to_blog( $blog_id, $user_id, $role ); update_user_meta( $user_id, 'primary_blog', $blog_id ); } @@ -2039,7 +2080,7 @@ function add_new_user_to_blog( $user_id, $password, $meta ) { * @param PHPMailer $phpmailer The PHPMailer instance, passed by reference. */ function fix_phpmailer_messageid( $phpmailer ) { - $phpmailer->Hostname = get_current_site()->domain; + $phpmailer->Hostname = get_network()->domain; } /** diff --git a/wp/wp-includes/ms-load.php b/wp/wp-includes/ms-load.php index 9fbaa5fa..cf564990 100644 --- a/wp/wp-includes/ms-load.php +++ b/wp/wp-includes/ms-load.php @@ -84,7 +84,7 @@ function ms_site_check() { if ( is_super_admin() ) return true; - $blog = get_blog_details(); + $blog = get_site(); if ( '1' == $blog->deleted ) { if ( file_exists( WP_CONTENT_DIR . '/blog-deleted.php' ) ) @@ -97,7 +97,7 @@ function ms_site_check() { if ( file_exists( WP_CONTENT_DIR . '/blog-inactive.php' ) ) { return WP_CONTENT_DIR . '/blog-inactive.php'; } else { - $admin_email = str_replace( '@', ' AT ', get_site_option( 'admin_email', 'support@' . get_current_site()->domain ) ); + $admin_email = str_replace( '@', ' AT ', get_site_option( 'admin_email', 'support@' . get_network()->domain ) ); wp_die( /* translators: %s: admin email link */ sprintf( __( 'This site has not been activated yet. If you are having problems activating your site, please contact %s.' ), @@ -134,35 +134,24 @@ function get_network_by_path( $domain, $path, $segments = null ) { } /** - * Retrieve an object containing information about the requested network. + * Retrieves the closest matching site object by its domain and path. + * + * This will not necessarily return an exact match for a domain and path. Instead, it + * breaks the domain and path into pieces that are then used to match the closest + * possibility from a query. * - * @since 3.9.0 - * - * @internal In 4.6.0, converted to use get_network() - * - * @param object|int $network The network's database row or ID. - * @return WP_Network|false Object containing network information if found, false if not. - */ -function wp_get_network( $network ) { - $network = get_network( $network ); - if ( null === $network ) { - return false; - } - - return $network; -} - -/** - * Retrieve a site object by its domain and path. + * The intent of this method is to match a site object during bootstrap for a + * requested site address * * @since 3.9.0 + * @since 4.7.0 Updated to always return a `WP_Site` object. * * @global wpdb $wpdb WordPress database abstraction object. * * @param string $domain Domain to check. * @param string $path Path to check. * @param int|null $segments Path segments to use. Defaults to null, or the full path. - * @return object|false Site object if successful. False when no site is found. + * @return WP_Site|false Site object if successful. False when no site is found. */ function get_site_by_path( $domain, $path, $segments = null ) { $path_segments = array_filter( explode( '/', trim( $path, '/' ) ) ); @@ -205,21 +194,24 @@ function get_site_by_path( $domain, $path, $segments = null ) { * * @since 3.9.0 * - * @param null|bool|object $site Site value to return by path. - * @param string $domain The requested domain. - * @param string $path The requested path, in full. - * @param int|null $segments The suggested number of paths to consult. - * Default null, meaning the entire path was to be consulted. - * @param array $paths The paths to search for, based on $path and $segments. + * @param null|bool|WP_Site $site Site value to return by path. + * @param string $domain The requested domain. + * @param string $path The requested path, in full. + * @param int|null $segments The suggested number of paths to consult. + * Default null, meaning the entire path was to be consulted. + * @param array $paths The paths to search for, based on $path and $segments. */ $pre = apply_filters( 'pre_get_site_by_path', null, $domain, $path, $segments, $paths ); if ( null !== $pre ) { + if ( false !== $pre && ! $pre instanceof WP_Site ) { + $pre = new WP_Site( $pre ); + } return $pre; } /* * @todo - * get_blog_details(), caching, etc. Consider alternative optimization routes, + * caching, etc. Consider alternative optimization routes, * perhaps as an opt-in for plugins, rather than using the pre_* filter. * For example: The segments filter can expand or ignore paths. * If persistent caching is enabled, we could query the DB for a path <> '/' @@ -251,7 +243,6 @@ function get_site_by_path( $domain, $path, $segments = null ) { $site = array_shift( $result ); if ( $site ) { - // @todo get_blog_details() return $site; } @@ -542,3 +533,26 @@ function wpmu_current_site() { _deprecated_function( __FUNCTION__, '3.9.0' ); return $current_site; } + +/** + * Retrieve an object containing information about the requested network. + * + * @since 3.9.0 + * @deprecated 4.7.0 Use `get_network()` + * @see get_network() + * + * @internal In 4.6.0, converted to use get_network() + * + * @param object|int $network The network's database row or ID. + * @return WP_Network|false Object containing network information if found, false if not. + */ +function wp_get_network( $network ) { + _deprecated_function( __FUNCTION__, '4.7.0', 'get_network()' ); + + $network = get_network( $network ); + if ( null === $network ) { + return false; + } + + return $network; +} diff --git a/wp/wp-includes/nav-menu-template.php b/wp/wp-includes/nav-menu-template.php index 62a66d39..88954769 100644 --- a/wp/wp-includes/nav-menu-template.php +++ b/wp/wp-includes/nav-menu-template.php @@ -14,32 +14,34 @@ require_once ABSPATH . WPINC . '/class-walker-nav-menu.php'; * Displays a navigation menu. * * @since 3.0.0 + * @since 4.7.0 Added the `item_spacing` argument. * * @staticvar array $menu_id_slugs * * @param array $args { * Optional. Array of nav menu arguments. * - * @type string $menu Desired menu. Accepts (matching in order) id, slug, name. Default empty. - * @type string $menu_class CSS class to use for the ul element which forms the menu. Default 'menu'. - * @type string $menu_id The ID that is applied to the ul element which forms the menu. - * Default is the menu slug, incremented. - * @type string $container Whether to wrap the ul, and what to wrap it with. Default 'div'. - * @type string $container_class Class that is applied to the container. Default 'menu-{menu slug}-container'. - * @type string $container_id The ID that is applied to the container. Default empty. - * @type callable|bool $fallback_cb If the menu doesn't exists, a callback function will fire. - * Default is 'wp_page_menu'. Set to false for no fallback. - * @type string $before Text before the link markup. Default empty. - * @type string $after Text after the link markup. Default empty. - * @type string $link_before Text before the link text. Default empty. - * @type string $link_after Text after the link text. Default empty. - * @type bool $echo Whether to echo the menu or return it. Default true. - * @type int $depth How many levels of the hierarchy are to be included. 0 means all. Default 0. - * @type object $walker Instance of a custom walker class. Default empty. - * @type string $theme_location Theme location to be used. Must be registered with register_nav_menu() - * in order to be selectable by the user. - * @type string $items_wrap How the list items should be wrapped. Default is a ul with an id and class. - * Uses printf() format with numbered placeholders. + * @type int|string|WP_Term $menu Desired menu. Accepts (matching in order) id, slug, name, menu object. Default empty. + * @type string $menu_class CSS class to use for the ul element which forms the menu. Default 'menu'. + * @type string $menu_id The ID that is applied to the ul element which forms the menu. + * Default is the menu slug, incremented. + * @type string $container Whether to wrap the ul, and what to wrap it with. Default 'div'. + * @type string $container_class Class that is applied to the container. Default 'menu-{menu slug}-container'. + * @type string $container_id The ID that is applied to the container. Default empty. + * @type callable|bool $fallback_cb If the menu doesn't exists, a callback function will fire. + * Default is 'wp_page_menu'. Set to false for no fallback. + * @type string $before Text before the link markup. Default empty. + * @type string $after Text after the link markup. Default empty. + * @type string $link_before Text before the link text. Default empty. + * @type string $link_after Text after the link text. Default empty. + * @type bool $echo Whether to echo the menu or return it. Default true. + * @type int $depth How many levels of the hierarchy are to be included. 0 means all. Default 0. + * @type object $walker Instance of a custom walker class. Default empty. + * @type string $theme_location Theme location to be used. Must be registered with register_nav_menu() + * in order to be selectable by the user. + * @type string $items_wrap How the list items should be wrapped. Default is a ul with an id and class. + * Uses printf() format with numbered placeholders. + * @type string $item_spacing Whether to preserve whitespace within the menu's HTML. Accepts 'preserve' or 'discard'. Default 'preserve'. * } * @return object|false|void Menu output if $echo is false, false if there are no items or no menu was found. */ @@ -47,10 +49,16 @@ function wp_nav_menu( $args = array() ) { static $menu_id_slugs = array(); $defaults = array( 'menu' => '', 'container' => 'div', 'container_class' => '', 'container_id' => '', 'menu_class' => 'menu', 'menu_id' => '', - 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '
                  %3$s
                ', + 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '
                  %3$s
                ', 'item_spacing' => 'preserve', 'depth' => 0, 'walker' => '', 'theme_location' => '' ); $args = wp_parse_args( $args, $defaults ); + + if ( ! in_array( $args['item_spacing'], array( 'preserve', 'discard' ), true ) ) { + // invalid value, fall back to default. + $args['item_spacing'] = $defaults['item_spacing']; + } + /** * Filters the arguments used to display a navigation menu. * @@ -75,7 +83,7 @@ function wp_nav_menu( $args = array() ) { * @see wp_nav_menu() * * @param string|null $output Nav menu output to short-circuit with. Default null. - * @param object $args An object containing wp_nav_menu() arguments. + * @param stdClass $args An object containing wp_nav_menu() arguments. */ $nav_menu = apply_filters( 'pre_wp_nav_menu', null, $args ); @@ -175,8 +183,8 @@ function wp_nav_menu( $args = array() ) { * * @since 3.1.0 * - * @param array $sorted_menu_items The menu items, sorted by each menu item's menu order. - * @param object $args An object containing wp_nav_menu() arguments. + * @param array $sorted_menu_items The menu items, sorted by each menu item's menu order. + * @param stdClass $args An object containing wp_nav_menu() arguments. */ $sorted_menu_items = apply_filters( 'wp_nav_menu_objects', $sorted_menu_items, $args ); @@ -206,8 +214,8 @@ function wp_nav_menu( $args = array() ) { * * @see wp_nav_menu() * - * @param string $items The HTML list content for the menu items. - * @param object $args An object containing wp_nav_menu() arguments. + * @param string $items The HTML list content for the menu items. + * @param stdClass $args An object containing wp_nav_menu() arguments. */ $items = apply_filters( 'wp_nav_menu_items', $items, $args ); /** @@ -217,8 +225,8 @@ function wp_nav_menu( $args = array() ) { * * @see wp_nav_menu() * - * @param string $items The HTML list content for the menu items. - * @param object $args An object containing wp_nav_menu() arguments. + * @param string $items The HTML list content for the menu items. + * @param stdClass $args An object containing wp_nav_menu() arguments. */ $items = apply_filters( "wp_nav_menu_{$menu->slug}_items", $items, $args ); @@ -239,8 +247,8 @@ function wp_nav_menu( $args = array() ) { * * @see wp_nav_menu() * - * @param string $nav_menu The HTML content for the navigation menu. - * @param object $args An object containing wp_nav_menu() arguments. + * @param string $nav_menu The HTML content for the navigation menu. + * @param stdClass $args An object containing wp_nav_menu() arguments. */ $nav_menu = apply_filters( 'wp_nav_menu', $nav_menu, $args ); @@ -326,6 +334,7 @@ function _wp_menu_item_classes_by_context( &$menu_items ) { $possible_object_parents = array_filter( $possible_object_parents ); $front_page_url = home_url(); + $front_page_id = (int) get_option( 'page_on_front' ); foreach ( (array) $menu_items as $key => $menu_item ) { @@ -336,6 +345,11 @@ function _wp_menu_item_classes_by_context( &$menu_items ) { $classes[] = 'menu-item-type-' . $menu_item->type; $classes[] = 'menu-item-object-' . $menu_item->object; + // This menu item is set as the 'Front Page'. + if ( 'post_type' === $menu_item->type && $front_page_id === (int) $menu_item->object_id ) { + $classes[] = 'menu-item-home'; + } + // if the menu item corresponds to a taxonomy term for the currently-queried non-hierarchical post object if ( $wp_query->is_singular && 'taxonomy' == $menu_item->type && in_array( $menu_item->object_id, $possible_object_parents ) ) { $active_parent_object_ids[] = (int) $menu_item->object_id; @@ -368,6 +382,7 @@ function _wp_menu_item_classes_by_context( &$menu_items ) { $classes[] = 'page-item-' . $menu_item->object_id; $classes[] = 'current_page_item'; } + $active_parent_item_ids[] = (int) $menu_item->menu_item_parent; $active_parent_object_ids[] = (int) $menu_item->post_parent; $active_object = $menu_item->object; @@ -488,10 +503,10 @@ function _wp_menu_item_classes_by_context( &$menu_items ) { * @uses Walker_Nav_Menu to create HTML list content. * @since 3.0.0 * - * @param array $items - * @param int $depth - * @param object $r - * @return string + * @param array $items The menu items, sorted by each menu item's menu order. + * @param int $depth Depth of the item in reference to parents. + * @param stdClass $r An object containing wp_nav_menu() arguments. + * @return string The HTML list content for the menu items. */ function walk_nav_menu_tree( $items, $depth, $r ) { $walker = ( empty($r->walker) ) ? new Walker_Nav_Menu : $r->walker; diff --git a/wp/wp-includes/nav-menu.php b/wp/wp-includes/nav-menu.php index ae573c5c..30039f42 100644 --- a/wp/wp-includes/nav-menu.php +++ b/wp/wp-includes/nav-menu.php @@ -12,8 +12,8 @@ * * @since 3.0.0 * - * @param string $menu Menu ID, slug, or name - or the menu object. - * @return object|false False if $menu param isn't supplied or term does not exist, menu object if successful. + * @param int|string|WP_Term $menu Menu ID, slug, or name - or the menu object. + * @return WP_Term|false False if $menu param isn't supplied or term does not exist, menu object if successful. */ function wp_get_nav_menu_object( $menu ) { $menu_obj = false; @@ -557,38 +557,6 @@ function wp_get_nav_menus( $args = array() ) { return apply_filters( 'wp_get_nav_menus', get_terms( 'nav_menu', $args), $args ); } -/** - * Sort menu items by the desired key. - * - * @since 3.0.0 - * @access private - * - * @global string $_menu_item_sort_prop - * - * @param object $a The first object to compare - * @param object $b The second object to compare - * @return int -1, 0, or 1 if $a is considered to be respectively less than, equal to, or greater than $b. - */ -function _sort_nav_menu_items( $a, $b ) { - global $_menu_item_sort_prop; - - if ( empty( $_menu_item_sort_prop ) ) - return 0; - - if ( ! isset( $a->$_menu_item_sort_prop ) || ! isset( $b->$_menu_item_sort_prop ) ) - return 0; - - $_a = (int) $a->$_menu_item_sort_prop; - $_b = (int) $b->$_menu_item_sort_prop; - - if ( $a->$_menu_item_sort_prop == $b->$_menu_item_sort_prop ) - return 0; - elseif ( $_a == $a->$_menu_item_sort_prop && $_b == $b->$_menu_item_sort_prop ) - return $_a < $_b ? -1 : 1; - else - return strcmp( $a->$_menu_item_sort_prop, $b->$_menu_item_sort_prop ); -} - /** * Return if a menu item is valid. * @@ -682,8 +650,9 @@ function wp_get_nav_menu_items( $menu, $args = array() ) { } if ( ARRAY_A == $args['output'] ) { - $GLOBALS['_menu_item_sort_prop'] = $args['output_key']; - usort($items, '_sort_nav_menu_items'); + $items = wp_list_sort( $items, array( + $args['output_key'] => 'ASC', + ) ); $i = 1; foreach ( $items as $k => $item ) { $items[$k]->{$args['output_key']} = $i++; @@ -747,6 +716,10 @@ function wp_setup_nav_menu_item( $menu_item ) { $menu_item->_invalid = true; } + if ( 'trash' === get_post_status( $menu_item->object_id ) ) { + $menu_item->_invalid = true; + } + $menu_item->url = get_permalink( $menu_item->object_id ); $original_object = get_post( $menu_item->object_id ); @@ -772,7 +745,7 @@ function wp_setup_nav_menu_item( $menu_item ) { $menu_item->type_label = __( 'Post Type Archive' ); $post_content = wp_trim_words( $menu_item->post_content, 200 ); - $post_type_description = '' == $post_content ? $post_type_description : $post_content; + $post_type_description = '' == $post_content ? $post_type_description : $post_content; $menu_item->url = get_post_type_archive_link( $menu_item->object ); } elseif ( 'taxonomy' == $menu_item->type ) { $object = get_taxonomy( $menu_item->object ); diff --git a/wp/wp-includes/option.php b/wp/wp-includes/option.php index 2f3cdd1e..ac17c2f5 100644 --- a/wp/wp-includes/option.php +++ b/wp/wp-includes/option.php @@ -49,13 +49,16 @@ function get_option( $option, $default = false ) { * Default false to skip it. * @param string $option Option name. */ - $pre = apply_filters( 'pre_option_' . $option, false, $option ); + $pre = apply_filters( "pre_option_{$option}", false, $option ); if ( false !== $pre ) return $pre; if ( defined( 'WP_SETUP_CONFIG' ) ) return false; + // Distinguish between `false` as a default, and not passing one. + $passed_default = func_num_args() > 1; + if ( ! wp_installing() ) { // prevent non-existent options from triggering multiple queries $notoptions = wp_cache_get( 'notoptions', 'options' ); @@ -67,12 +70,14 @@ function get_option( $option, $default = false ) { * * @since 3.4.0 * @since 4.4.0 The `$option` parameter was added. + * @since 4.7.0 The `$passed_default` parameter was added to distinguish between a `false` value and the default parameter value. * * @param mixed $default The default value to return if the option does not exist * in the database. * @param string $option Option name. + * @param bool $passed_default Was `get_option()` passed a default value? */ - return apply_filters( 'default_option_' . $option, $default, $option ); + return apply_filters( "default_option_{$option}", $default, $option, $passed_default ); } $alloptions = wp_load_alloptions(); @@ -97,7 +102,7 @@ function get_option( $option, $default = false ) { wp_cache_set( 'notoptions', $notoptions, 'options' ); /** This filter is documented in wp-includes/option.php */ - return apply_filters( 'default_option_' . $option, $default, $option ); + return apply_filters( 'default_option_' . $option, $default, $option, $passed_default ); } } } @@ -109,7 +114,7 @@ function get_option( $option, $default = false ) { $value = $row->option_value; } else { /** This filter is documented in wp-includes/option.php */ - return apply_filters( 'default_option_' . $option, $default, $option ); + return apply_filters( 'default_option_' . $option, $default, $option, $passed_default ); } } @@ -133,7 +138,7 @@ function get_option( $option, $default = false ) { * unserialized prior to being returned. * @param string $option Option name. */ - return apply_filters( 'option_' . $option, maybe_unserialize( $value ), $option ); + return apply_filters( "option_{$option}", maybe_unserialize( $value ), $option ); } /** @@ -277,7 +282,7 @@ function update_option( $option, $value, $autoload = null ) { * @param mixed $old_value The old option value. * @param string $option Option name. */ - $value = apply_filters( 'pre_update_option_' . $option, $value, $old_value, $option ); + $value = apply_filters( "pre_update_option_{$option}", $value, $old_value, $option ); /** * Filters an option before its value is (maybe) serialized and updated. @@ -295,7 +300,7 @@ function update_option( $option, $value, $autoload = null ) { return false; /** This filter is documented in wp-includes/option.php */ - if ( apply_filters( 'default_option_' . $option, false, $option ) === $old_value ) { + if ( apply_filters( 'default_option_' . $option, false, $option, false ) === $old_value ) { // Default setting for new options is 'yes'. if ( null === $autoload ) { $autoload = 'yes'; @@ -416,7 +421,7 @@ function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) $notoptions = wp_cache_get( 'notoptions', 'options' ); if ( !is_array( $notoptions ) || !isset( $notoptions[$option] ) ) /** This filter is documented in wp-includes/option.php */ - if ( apply_filters( 'default_option_' . $option, false, $option ) !== get_option( $option ) ) + if ( apply_filters( 'default_option_' . $option, false, $option, false ) !== get_option( $option ) ) return false; $serialized_value = maybe_serialize( $value ); @@ -534,7 +539,7 @@ function delete_option( $option ) { * * @param string $option Name of the deleted option. */ - do_action( "delete_option_$option", $option ); + do_action( "delete_option_{$option}", $option ); /** * Fires after an option has been deleted. @@ -568,7 +573,7 @@ function delete_transient( $transient ) { * * @param string $transient Transient name. */ - do_action( 'delete_transient_' . $transient, $transient ); + do_action( "delete_transient_{$transient}", $transient ); if ( wp_using_ext_object_cache() ) { $result = wp_cache_delete( $transient, 'transient' ); @@ -624,7 +629,7 @@ function get_transient( $transient ) { * of the transient, and return the returned value. * @param string $transient Transient name. */ - $pre = apply_filters( 'pre_transient_' . $transient, false, $transient ); + $pre = apply_filters( "pre_transient_{$transient}", false, $transient ); if ( false !== $pre ) return $pre; @@ -661,7 +666,7 @@ function get_transient( $transient ) { * @param mixed $value Value of transient. * @param string $transient Transient name. */ - return apply_filters( 'transient_' . $transient, $value, $transient ); + return apply_filters( "transient_{$transient}", $value, $transient ); } /** @@ -696,7 +701,7 @@ function set_transient( $transient, $value, $expiration = 0 ) { * @param int $expiration Time until expiration in seconds. * @param string $transient Transient name. */ - $value = apply_filters( 'pre_set_transient_' . $transient, $value, $expiration, $transient ); + $value = apply_filters( "pre_set_transient_{$transient}", $value, $expiration, $transient ); /** * Filters the expiration for a transient before its value is set. @@ -709,7 +714,7 @@ function set_transient( $transient, $value, $expiration = 0 ) { * @param mixed $value New value of transient. * @param string $transient Transient name. */ - $expiration = apply_filters( 'expiration_of_transient_' . $transient, $expiration, $value, $transient ); + $expiration = apply_filters( "expiration_of_transient_{$transient}", $expiration, $value, $transient ); if ( wp_using_ext_object_cache() ) { $result = wp_cache_set( $transient, $value, 'transient', $expiration ); @@ -758,7 +763,7 @@ function set_transient( $transient, $value, $expiration = 0 ) { * @param int $expiration Time until expiration in seconds. * @param string $transient The name of the transient. */ - do_action( 'set_transient_' . $transient, $value, $expiration, $transient ); + do_action( "set_transient_{$transient}", $value, $expiration, $transient ); /** * Fires after the value for a transient has been set. @@ -786,7 +791,7 @@ function set_transient( $transient, $value, $expiration = 0 ) { */ function wp_user_settings() { - if ( ! is_admin() || defined( 'DOING_AJAX' ) ) { + if ( ! is_admin() || wp_doing_ajax() ) { return; } @@ -1069,8 +1074,7 @@ function update_site_option( $option, $value ) { * * @see get_option() * - * @global wpdb $wpdb - * @global object $current_site + * @global wpdb $wpdb * * @param int $network_id ID of the network. Can be null to default to the current network ID. * @param string $option Name of option to retrieve. Expected to not be SQL-escaped. @@ -1078,7 +1082,7 @@ function update_site_option( $option, $value ) { * @return mixed Value set for the option. */ function get_network_option( $network_id, $option, $default = false ) { - global $wpdb, $current_site; + global $wpdb; if ( $network_id && ! is_numeric( $network_id ) ) { return false; @@ -1087,8 +1091,8 @@ function get_network_option( $network_id, $option, $default = false ) { $network_id = (int) $network_id; // Fallback to the current network if a network ID is not specified. - if ( ! $network_id && is_multisite() ) { - $network_id = $current_site->id; + if ( ! $network_id ) { + $network_id = get_current_network_id(); } /** @@ -1101,12 +1105,14 @@ function get_network_option( $network_id, $option, $default = false ) { * * @since 2.9.0 As 'pre_site_option_' . $key * @since 3.0.0 - * @since 4.4.0 The `$option` parameter was added + * @since 4.4.0 The `$option` parameter was added. + * @since 4.7.0 The `$network_id` parameter was added. * * @param mixed $pre_option The default value to return if the option does not exist. * @param string $option Option name. + * @param int $network_id ID of the network. */ - $pre = apply_filters( 'pre_site_option_' . $option, false, $option ); + $pre = apply_filters( "pre_site_option_{$option}", false, $option, $network_id ); if ( false !== $pre ) { return $pre; @@ -1125,17 +1131,19 @@ function get_network_option( $network_id, $option, $default = false ) { * * @since 3.4.0 * @since 4.4.0 The `$option` parameter was added. + * @since 4.7.0 The `$network_id` parameter was added. * - * @param mixed $default The value to return if the site option does not exist - * in the database. - * @param string $option Option name. + * @param mixed $default The value to return if the site option does not exist + * in the database. + * @param string $option Option name. + * @param int $network_id ID of the network. */ - return apply_filters( 'default_site_option_' . $option, $default, $option ); + return apply_filters( "default_site_option_{$option}", $default, $option, $network_id ); } if ( ! is_multisite() ) { /** This filter is documented in wp-includes/option.php */ - $default = apply_filters( 'default_site_option_' . $option, $default, $option ); + $default = apply_filters( 'default_site_option_' . $option, $default, $option, $network_id ); $value = get_option( $option, $default ); } else { $cache_key = "$network_id:$option"; @@ -1157,7 +1165,7 @@ function get_network_option( $network_id, $option, $default = false ) { wp_cache_set( $notoptions_key, $notoptions, 'site-options' ); /** This filter is documented in wp-includes/option.php */ - $value = apply_filters( 'default_site_option_' . $option, $default, $option ); + $value = apply_filters( 'default_site_option_' . $option, $default, $option, $network_id ); } } } @@ -1169,12 +1177,14 @@ function get_network_option( $network_id, $option, $default = false ) { * * @since 2.9.0 As 'site_option_' . $key * @since 3.0.0 - * @since 4.4.0 The `$option` parameter was added + * @since 4.4.0 The `$option` parameter was added. + * @since 4.7.0 The `$network_id` parameter was added. * - * @param mixed $value Value of network option. - * @param string $option Option name. + * @param mixed $value Value of network option. + * @param string $option Option name. + * @param int $network_id ID of the network. */ - return apply_filters( 'site_option_' . $option, $value, $option ); + return apply_filters( "site_option_{$option}", $value, $option, $network_id ); } /** @@ -1186,8 +1196,7 @@ function get_network_option( $network_id, $option, $default = false ) { * * @see add_option() * - * @global wpdb $wpdb - * @global object $current_site + * @global wpdb $wpdb * * @param int $network_id ID of the network. Can be null to default to the current network ID. * @param string $option Name of option to add. Expected to not be SQL-escaped. @@ -1195,7 +1204,7 @@ function get_network_option( $network_id, $option, $default = false ) { * @return bool False if option was not added and true if option was added. */ function add_network_option( $network_id, $option, $value ) { - global $wpdb, $current_site; + global $wpdb; if ( $network_id && ! is_numeric( $network_id ) ) { return false; @@ -1204,8 +1213,8 @@ function add_network_option( $network_id, $option, $value ) { $network_id = (int) $network_id; // Fallback to the current network if a network ID is not specified. - if ( ! $network_id && is_multisite() ) { - $network_id = $current_site->id; + if ( ! $network_id ) { + $network_id = get_current_network_id(); } wp_protect_special_option( $option ); @@ -1217,12 +1226,14 @@ function add_network_option( $network_id, $option, $value ) { * * @since 2.9.0 As 'pre_add_site_option_' . $key * @since 3.0.0 - * @since 4.4.0 The `$option` parameter was added + * @since 4.4.0 The `$option` parameter was added. + * @since 4.7.0 The `$network_id` parameter was added. * - * @param mixed $value Value of network option. - * @param string $option Option name. + * @param mixed $value Value of network option. + * @param string $option Option name. + * @param int $network_id ID of the network. */ - $value = apply_filters( 'pre_add_site_option_' . $option, $value, $option ); + $value = apply_filters( "pre_add_site_option_{$option}", $value, $option, $network_id ); $notoptions_key = "$network_id:notoptions"; @@ -1267,21 +1278,25 @@ function add_network_option( $network_id, $option, $value ) { * * @since 2.9.0 As "add_site_option_{$key}" * @since 3.0.0 + * @since 4.7.0 The `$network_id` parameter was added. * - * @param string $option Name of the network option. - * @param mixed $value Value of the network option. + * @param string $option Name of the network option. + * @param mixed $value Value of the network option. + * @param int $network_id ID of the network. */ - do_action( 'add_site_option_' . $option, $option, $value ); + do_action( "add_site_option_{$option}", $option, $value, $network_id ); /** * Fires after a network option has been successfully added. * * @since 3.0.0 + * @since 4.7.0 The `$network_id` parameter was added. * - * @param string $option Name of the network option. - * @param mixed $value Value of the network option. + * @param string $option Name of the network option. + * @param mixed $value Value of the network option. + * @param int $network_id ID of the network. */ - do_action( 'add_site_option', $option, $value ); + do_action( 'add_site_option', $option, $value, $network_id ); return true; } @@ -1296,15 +1311,14 @@ function add_network_option( $network_id, $option, $value ) { * * @see delete_option() * - * @global wpdb $wpdb - * @global object $current_site + * @global wpdb $wpdb * * @param int $network_id ID of the network. Can be null to default to the current network ID. * @param string $option Name of option to remove. Expected to not be SQL-escaped. * @return bool True, if succeed. False, if failure. */ function delete_network_option( $network_id, $option ) { - global $wpdb, $current_site; + global $wpdb; if ( $network_id && ! is_numeric( $network_id ) ) { return false; @@ -1313,8 +1327,8 @@ function delete_network_option( $network_id, $option ) { $network_id = (int) $network_id; // Fallback to the current network if a network ID is not specified. - if ( ! $network_id && is_multisite() ) { - $network_id = $current_site->id; + if ( ! $network_id ) { + $network_id = get_current_network_id(); } /** @@ -1323,11 +1337,13 @@ function delete_network_option( $network_id, $option ) { * The dynamic portion of the hook name, `$option`, refers to the option name. * * @since 3.0.0 - * @since 4.4.0 The `$option` parameter was added + * @since 4.4.0 The `$option` parameter was added. + * @since 4.7.0 The `$network_id` parameter was added. * - * @param string $option Option name. + * @param string $option Option name. + * @param int $network_id ID of the network. */ - do_action( 'pre_delete_site_option_' . $option, $option ); + do_action( "pre_delete_site_option_{$option}", $option, $network_id ); if ( ! is_multisite() ) { $result = delete_option( $option ); @@ -1351,19 +1367,23 @@ function delete_network_option( $network_id, $option ) { * * @since 2.9.0 As "delete_site_option_{$key}" * @since 3.0.0 + * @since 4.7.0 The `$network_id` parameter was added. * - * @param string $option Name of the network option. + * @param string $option Name of the network option. + * @param int $network_id ID of the network. */ - do_action( 'delete_site_option_' . $option, $option ); + do_action( "delete_site_option_{$option}", $option, $network_id ); /** * Fires after a network option has been deleted. * * @since 3.0.0 + * @since 4.7.0 The `$network_id` parameter was added. * - * @param string $option Name of the network option. + * @param string $option Name of the network option. + * @param int $network_id ID of the network. */ - do_action( 'delete_site_option', $option ); + do_action( 'delete_site_option', $option, $network_id ); return true; } @@ -1378,8 +1398,7 @@ function delete_network_option( $network_id, $option ) { * * @see update_option() * - * @global wpdb $wpdb - * @global object $current_site + * @global wpdb $wpdb * * @param int $network_id ID of the network. Can be null to default to the current network ID. * @param string $option Name of option. Expected to not be SQL-escaped. @@ -1387,7 +1406,7 @@ function delete_network_option( $network_id, $option ) { * @return bool False if value was not updated and true if value was updated. */ function update_network_option( $network_id, $option, $value ) { - global $wpdb, $current_site; + global $wpdb; if ( $network_id && ! is_numeric( $network_id ) ) { return false; @@ -1396,8 +1415,8 @@ function update_network_option( $network_id, $option, $value ) { $network_id = (int) $network_id; // Fallback to the current network if a network ID is not specified. - if ( ! $network_id && is_multisite() ) { - $network_id = $current_site->id; + if ( ! $network_id ) { + $network_id = get_current_network_id(); } wp_protect_special_option( $option ); @@ -1411,13 +1430,15 @@ function update_network_option( $network_id, $option, $value ) { * * @since 2.9.0 As 'pre_update_site_option_' . $key * @since 3.0.0 - * @since 4.4.0 The `$option` parameter was added + * @since 4.4.0 The `$option` parameter was added. + * @since 4.7.0 The `$network_id` parameter was added. * - * @param mixed $value New value of the network option. - * @param mixed $old_value Old value of the network option. - * @param string $option Option name. + * @param mixed $value New value of the network option. + * @param mixed $old_value Old value of the network option. + * @param string $option Option name. + * @param int $network_id ID of the network. */ - $value = apply_filters( 'pre_update_site_option_' . $option, $value, $old_value, $option ); + $value = apply_filters( "pre_update_site_option_{$option}", $value, $old_value, $option, $network_id ); if ( $value === $old_value ) { return false; @@ -1457,23 +1478,27 @@ function update_network_option( $network_id, $option, $value ) { * * @since 2.9.0 As "update_site_option_{$key}" * @since 3.0.0 + * @since 4.7.0 The `$network_id` parameter was added. * - * @param string $option Name of the network option. - * @param mixed $value Current value of the network option. - * @param mixed $old_value Old value of the network option. + * @param string $option Name of the network option. + * @param mixed $value Current value of the network option. + * @param mixed $old_value Old value of the network option. + * @param int $network_id ID of the network. */ - do_action( 'update_site_option_' . $option, $option, $value, $old_value ); + do_action( "update_site_option_{$option}", $option, $value, $old_value, $network_id ); /** * Fires after the value of a network option has been successfully updated. * * @since 3.0.0 + * @since 4.7.0 The `$network_id` parameter was added. * - * @param string $option Name of the network option. - * @param mixed $value Current value of the network option. - * @param mixed $old_value Old value of the network option. + * @param string $option Name of the network option. + * @param mixed $value Current value of the network option. + * @param mixed $old_value Old value of the network option. + * @param int $network_id ID of the network. */ - do_action( 'update_site_option', $option, $value, $old_value ); + do_action( 'update_site_option', $option, $value, $old_value, $network_id ); return true; } @@ -1500,7 +1525,7 @@ function delete_site_transient( $transient ) { * * @param string $transient Transient name. */ - do_action( 'delete_site_transient_' . $transient, $transient ); + do_action( "delete_site_transient_{$transient}", $transient ); if ( wp_using_ext_object_cache() ) { $result = wp_cache_delete( $transient, 'site-transient' ); @@ -1557,7 +1582,7 @@ function get_site_transient( $transient ) { * of the transient, and return the returned value. * @param string $transient Transient name. */ - $pre = apply_filters( 'pre_site_transient_' . $transient, false, $transient ); + $pre = apply_filters( "pre_site_transient_{$transient}", false, $transient ); if ( false !== $pre ) return $pre; @@ -1593,7 +1618,7 @@ function get_site_transient( $transient ) { * @param mixed $value Value of site transient. * @param string $transient Transient name. */ - return apply_filters( 'site_transient_' . $transient, $value, $transient ); + return apply_filters( "site_transient_{$transient}", $value, $transient ); } /** @@ -1625,7 +1650,7 @@ function set_site_transient( $transient, $value, $expiration = 0 ) { * @param mixed $value New value of site transient. * @param string $transient Transient name. */ - $value = apply_filters( 'pre_set_site_transient_' . $transient, $value, $transient ); + $value = apply_filters( "pre_set_site_transient_{$transient}", $value, $transient ); $expiration = (int) $expiration; @@ -1640,7 +1665,7 @@ function set_site_transient( $transient, $value, $expiration = 0 ) { * @param mixed $value New value of site transient. * @param string $transient Transient name. */ - $expiration = apply_filters( 'expiration_of_site_transient_' . $transient, $expiration, $value, $transient ); + $expiration = apply_filters( "expiration_of_site_transient_{$transient}", $expiration, $value, $transient ); if ( wp_using_ext_object_cache() ) { $result = wp_cache_set( $transient, $value, 'site-transient', $expiration ); @@ -1671,7 +1696,7 @@ function set_site_transient( $transient, $value, $expiration = 0 ) { * @param int $expiration Time until expiration in seconds. * @param string $transient Transient name. */ - do_action( 'set_site_transient_' . $transient, $value, $expiration, $transient ); + do_action( "set_site_transient_{$transient}", $value, $expiration, $transient ); /** * Fires after the value for a site transient has been set. @@ -1686,3 +1711,302 @@ function set_site_transient( $transient, $value, $expiration = 0 ) { } return $result; } + +/** + * Register default settings available in WordPress. + * + * The settings registered here are primarily useful for the REST API, so this + * does not encompass all settings available in WordPress. + * + * @since 4.7.0 + */ +function register_initial_settings() { + register_setting( 'general', 'blogname', array( + 'show_in_rest' => array( + 'name' => 'title', + ), + 'type' => 'string', + 'description' => __( 'Site title.' ), + ) ); + + register_setting( 'general', 'blogdescription', array( + 'show_in_rest' => array( + 'name' => 'description', + ), + 'type' => 'string', + 'description' => __( 'Site tagline.' ), + ) ); + + if ( ! is_multisite() ) { + register_setting( 'general', 'siteurl', array( + 'show_in_rest' => array( + 'name' => 'url', + 'schema' => array( + 'format' => 'uri', + ), + ), + 'type' => 'string', + 'description' => __( 'Site URL.' ), + ) ); + } + + if ( ! is_multisite() ) { + register_setting( 'general', 'admin_email', array( + 'show_in_rest' => array( + 'name' => 'email', + 'schema' => array( + 'format' => 'email', + ), + ), + 'type' => 'string', + 'description' => __( 'This address is used for admin purposes, like new user notification.' ), + ) ); + } + + register_setting( 'general', 'timezone_string', array( + 'show_in_rest' => array( + 'name' => 'timezone', + ), + 'type' => 'string', + 'description' => __( 'A city in the same timezone as you.' ), + ) ); + + register_setting( 'general', 'date_format', array( + 'show_in_rest' => true, + 'type' => 'string', + 'description' => __( 'A date format for all date strings.' ), + ) ); + + register_setting( 'general', 'time_format', array( + 'show_in_rest' => true, + 'type' => 'string', + 'description' => __( 'A time format for all time strings.' ), + ) ); + + register_setting( 'general', 'start_of_week', array( + 'show_in_rest' => true, + 'type' => 'integer', + 'description' => __( 'A day number of the week that the week should start on.' ), + ) ); + + register_setting( 'general', 'WPLANG', array( + 'show_in_rest' => array( + 'name' => 'language', + ), + 'type' => 'string', + 'description' => __( 'WordPress locale code.' ), + 'default' => 'en_US', + ) ); + + register_setting( 'writing', 'use_smilies', array( + 'show_in_rest' => true, + 'type' => 'boolean', + 'description' => __( 'Convert emoticons like :-) and :-P to graphics on display.' ), + 'default' => true, + ) ); + + register_setting( 'writing', 'default_category', array( + 'show_in_rest' => true, + 'type' => 'integer', + 'description' => __( 'Default post category.' ), + ) ); + + register_setting( 'writing', 'default_post_format', array( + 'show_in_rest' => true, + 'type' => 'string', + 'description' => __( 'Default post format.' ), + ) ); + + register_setting( 'reading', 'posts_per_page', array( + 'show_in_rest' => true, + 'type' => 'integer', + 'description' => __( 'Blog pages show at most.' ), + 'default' => 10, + ) ); + + register_setting( 'discussion', 'default_ping_status', array( + 'show_in_rest' => array( + 'schema' => array( + 'enum' => array( 'open', 'closed' ), + ), + ), + 'type' => 'string', + 'description' => __( 'Allow link notifications from other blogs (pingbacks and trackbacks) on new articles.' ), + ) ); + + register_setting( 'discussion', 'default_comment_status', array( + 'show_in_rest' => array( + 'schema' => array( + 'enum' => array( 'open', 'closed' ), + ), + ), + 'type' => 'string', + 'description' => __( 'Allow people to post comments on new articles.' ), + ) ); + +} + +/** + * Register a setting and its data. + * + * @since 2.7.0 + * @since 4.7.0 `$args` can be passed to set flags on the setting, similar to `register_meta()`. + * + * @global array $new_whitelist_options + * @global array $wp_registered_settings + * + * @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 array $args { + * Data used to describe the setting when registered. + * + * @type string $type The type of data associated with this setting. + * @type string $description A description of the data attached to this setting. + * @type callable $sanitize_callback A callback function that sanitizes the option's value. + * @type bool $show_in_rest Whether data associated with this setting should be included in the REST API. + * @type mixed $default Default value when calling `get_option()`. + * } + */ +function register_setting( $option_group, $option_name, $args = array() ) { + global $new_whitelist_options, $wp_registered_settings; + + $defaults = array( + 'type' => 'string', + 'group' => $option_group, + 'description' => '', + 'sanitize_callback' => null, + 'show_in_rest' => false, + ); + + // Back-compat: old sanitize callback is added. + if ( is_callable( $args ) ) { + $args = array( + 'sanitize_callback' => $args, + ); + } + + /** + * Filters the registration arguments when registering a setting. + * + * @since 4.7.0 + * + * @param array $args Array of setting registration arguments. + * @param array $defaults Array of default arguments. + * @param string $option_group Setting group. + * @param string $option_name Setting name. + */ + $args = apply_filters( 'register_setting_args', $args, $defaults, $option_group, $option_name ); + $args = wp_parse_args( $args, $defaults ); + + if ( ! is_array( $wp_registered_settings ) ) { + $wp_registered_settings = array(); + } + + if ( 'misc' == $option_group ) { + _deprecated_argument( __FUNCTION__, '3.0.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.0', sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'privacy' ) ); + $option_group = 'reading'; + } + + $new_whitelist_options[ $option_group ][] = $option_name; + if ( ! empty( $args['sanitize_callback'] ) ) { + add_filter( "sanitize_option_{$option_name}", $args['sanitize_callback'] ); + } + if ( array_key_exists( 'default', $args ) ) { + add_filter( "default_option_{$option_name}", 'filter_default_option', 10, 3 ); + } + + $wp_registered_settings[ $option_name ] = $args; +} + +/** + * Unregister a setting. + * + * @since 2.7.0 + * @since 4.7.0 `$sanitize_callback` was deprecated. The callback from `register_setting()` is now used instead. + * + * @global array $new_whitelist_options + * + * @param string $option_group The settings group name used during registration. + * @param string $option_name The name of the option to unregister. + * @param callable $deprecated Deprecated. + */ +function unregister_setting( $option_group, $option_name, $deprecated = '' ) { + global $new_whitelist_options, $wp_registered_settings; + + if ( 'misc' == $option_group ) { + _deprecated_argument( __FUNCTION__, '3.0.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.0', 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 ( '' !== $deprecated ) { + _deprecated_argument( __FUNCTION__, '4.7.0', __( '$sanitize_callback is deprecated. The callback from register_setting() is used instead.' ) ); + remove_filter( "sanitize_option_{$option_name}", $deprecated ); + } + + if ( isset( $wp_registered_settings[ $option_name ] ) ) { + // Remove the sanitize callback if one was set during registration. + if ( ! empty( $wp_registered_settings[ $option_name ]['sanitize_callback'] ) ) { + remove_filter( "sanitize_option_{$option_name}", $wp_registered_settings[ $option_name ]['sanitize_callback'] ); + } + + unset( $wp_registered_settings[ $option_name ] ); + } +} + +/** + * Retrieves an array of registered settings. + * + * @since 4.7.0 + * + * @return array List of registered settings, keyed by option name. + */ +function get_registered_settings() { + global $wp_registered_settings; + + if ( ! is_array( $wp_registered_settings ) ) { + return array(); + } + + return $wp_registered_settings; +} + +/** + * Filter the default value for the option. + * + * For settings which register a default setting in `register_setting()`, this + * function is added as a filter to `default_option_{$option}`. + * + * @since 4.7.0 + * + * @param mixed $default Existing default value to return. + * @param string $option Option name. + * @param bool $passed_default Was `get_option()` passed a default value? + * @return mixed Filtered default value. + */ +function filter_default_option( $default, $option, $passed_default ) { + if ( $passed_default ) { + return $default; + } + + $registered = get_registered_settings(); + if ( empty( $registered[ $option ] ) ) { + return $default; + } + + return $registered[ $option ]['default']; +} diff --git a/wp/wp-includes/pluggable.php b/wp/wp-includes/pluggable.php index 5c774777..0c510622 100644 --- a/wp/wp-includes/pluggable.php +++ b/wp/wp-includes/pluggable.php @@ -472,16 +472,17 @@ function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() } catch ( phpmailerException $e ) { $mail_error_data = compact( 'to', 'subject', 'message', 'headers', 'attachments' ); + $mail_error_data['phpmailer_exception_code'] = $e->getCode(); /** * Fires after a phpmailerException is caught. * * @since 4.4.0 * - * @param WP_Error $error A WP_Error object with the phpmailerException code, message, and an array + * @param WP_Error $error A WP_Error object with the phpmailerException message, and an array * containing the mail recipient, subject, message, headers, and attachments. */ - do_action( 'wp_mail_failed', new WP_Error( $e->getCode(), $e->getMessage(), $mail_error_data ) ); + do_action( 'wp_mail_failed', new WP_Error( 'wp_mail_failed', $e->getMessage(), $mail_error_data ) ); return false; } @@ -603,7 +604,7 @@ function wp_validate_auth_cookie($cookie = '', $scheme = '') { $expired = $expiration = $cookie_elements['expiration']; // Allow a grace period for POST and Ajax requests - if ( defined('DOING_AJAX') || 'POST' == $_SERVER['REQUEST_METHOD'] ) { + if ( wp_doing_ajax() || 'POST' == $_SERVER['REQUEST_METHOD'] ) { $expired += HOUR_IN_SECONDS; } @@ -1081,6 +1082,10 @@ if ( !function_exists('check_ajax_referer') ) : * 0-12 hours ago, 2 if the nonce is valid and generated between 12-24 hours ago. */ function check_ajax_referer( $action = -1, $query_arg = false, $die = true ) { + if ( -1 == $action ) { + _doing_it_wrong( __FUNCTION__, __( 'You should specify a nonce action to be verified by using the first parameter.' ), '4.7' ); + } + $nonce = ''; if ( $query_arg && isset( $_REQUEST[ $query_arg ] ) ) @@ -1104,8 +1109,8 @@ function check_ajax_referer( $action = -1, $query_arg = false, $die = true ) { do_action( 'check_ajax_referer', $action, $result ); if ( $die && false === $result ) { - if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { - wp_die( -1 ); + if ( wp_doing_ajax() ) { + wp_die( -1, 403 ); } else { die( '-1' ); } @@ -1128,7 +1133,7 @@ if ( !function_exists('wp_redirect') ) : * Exiting can also be selectively manipulated by using wp_redirect() as a conditional * in conjunction with the {@see 'wp_redirect'} and {@see 'wp_redirect_location'} hooks: * - * if ( wp_redirect( $url ) { + * if ( wp_redirect( $url ) ) { * exit; * } * @@ -1414,6 +1419,8 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) { $emails = array_flip( $emails ); } + $switched_locale = switch_to_locale( get_locale() ); + $comment_author_domain = @gethostbyaddr($comment->comment_author_IP); // The blogname option is escaped with esc_html on the way into the database in sanitize_option @@ -1423,8 +1430,9 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) { switch ( $comment->comment_type ) { case 'trackback': + /* translators: 1: Post title */ $notify_message = sprintf( __( 'New trackback on your post "%s"' ), $post->post_title ) . "\r\n"; - /* translators: 1: website name, 2: website IP, 3: website hostname */ + /* translators: 1: Trackback/pingback website name, 2: website IP, 3: website hostname */ $notify_message .= sprintf( __('Website: %1$s (IP: %2$s, %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n"; $notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "\r\n"; $notify_message .= sprintf( __( 'Comment: %s' ), "\r\n" . $comment_content ) . "\r\n\r\n"; @@ -1433,8 +1441,9 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) { $subject = sprintf( __('[%1$s] Trackback: "%2$s"'), $blogname, $post->post_title ); break; case 'pingback': + /* translators: 1: Post title */ $notify_message = sprintf( __( 'New pingback on your post "%s"' ), $post->post_title ) . "\r\n"; - /* translators: 1: website name, 2: website IP, 3: website hostname */ + /* translators: 1: Trackback/pingback website name, 2: website IP, 3: website hostname */ $notify_message .= sprintf( __('Website: %1$s (IP: %2$s, %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n"; $notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "\r\n"; $notify_message .= sprintf( __( 'Comment: %s' ), "\r\n" . $comment_content ) . "\r\n\r\n"; @@ -1518,6 +1527,10 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) { @wp_mail( $email, wp_specialchars_decode( $subject ), $notify_message, $message_headers ); } + if ( $switched_locale ) { + restore_previous_locale(); + } + return true; } endif; @@ -1565,6 +1578,8 @@ function wp_notify_moderator($comment_id) { $emails[] = $user->user_email; } + $switched_locale = switch_to_locale( get_locale() ); + $comment_author_domain = @gethostbyaddr($comment->comment_author_IP); $comments_waiting = $wpdb->get_var("SELECT count(comment_ID) FROM $wpdb->comments WHERE comment_approved = '0'"); @@ -1575,44 +1590,60 @@ function wp_notify_moderator($comment_id) { switch ( $comment->comment_type ) { case 'trackback': + /* translators: 1: Post title */ $notify_message = sprintf( __('A new trackback on the post "%s" is waiting for your approval'), $post->post_title ) . "\r\n"; $notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n"; - /* translators: 1: website name, 2: website IP, 3: website hostname */ + /* translators: 1: Trackback/pingback website name, 2: website IP, 3: website hostname */ $notify_message .= sprintf( __( 'Website: %1$s (IP: %2$s, %3$s)' ), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n"; + /* translators: 1: Trackback/pingback/comment author URL */ $notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "\r\n"; $notify_message .= __('Trackback excerpt: ') . "\r\n" . $comment_content . "\r\n\r\n"; break; case 'pingback': + /* translators: 1: Post title */ $notify_message = sprintf( __('A new pingback on the post "%s" is waiting for your approval'), $post->post_title ) . "\r\n"; $notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n"; - /* translators: 1: website name, 2: website IP, 3: website hostname */ + /* translators: 1: Trackback/pingback website name, 2: website IP, 3: website hostname */ $notify_message .= sprintf( __( 'Website: %1$s (IP: %2$s, %3$s)' ), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n"; + /* translators: 1: Trackback/pingback/comment author URL */ $notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "\r\n"; $notify_message .= __('Pingback excerpt: ') . "\r\n" . $comment_content . "\r\n\r\n"; break; default: // Comments + /* translators: 1: Post title */ $notify_message = sprintf( __('A new comment on the post "%s" is waiting for your approval'), $post->post_title ) . "\r\n"; $notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n"; + /* translators: 1: Comment author name, 2: comment author's IP, 3: comment author IP's hostname */ $notify_message .= sprintf( __( 'Author: %1$s (IP: %2$s, %3$s)' ), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n"; + /* translators: 1: Comment author URL */ $notify_message .= sprintf( __( 'Email: %s' ), $comment->comment_author_email ) . "\r\n"; + /* translators: 1: Trackback/pingback/comment author URL */ $notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "\r\n"; + /* translators: 1: Comment text */ $notify_message .= sprintf( __( 'Comment: %s' ), "\r\n" . $comment_content ) . "\r\n\r\n"; break; } + /* translators: Comment moderation. 1: Comment action URL */ $notify_message .= sprintf( __( 'Approve it: %s' ), admin_url( "comment.php?action=approve&c={$comment_id}#wpbody-content" ) ) . "\r\n"; - if ( EMPTY_TRASH_DAYS ) + if ( EMPTY_TRASH_DAYS ) { + /* translators: Comment moderation. 1: Comment action URL */ $notify_message .= sprintf( __( 'Trash it: %s' ), admin_url( "comment.php?action=trash&c={$comment_id}#wpbody-content" ) ) . "\r\n"; - else + } else { + /* translators: Comment moderation. 1: Comment action URL */ $notify_message .= sprintf( __( 'Delete it: %s' ), admin_url( "comment.php?action=delete&c={$comment_id}#wpbody-content" ) ) . "\r\n"; + } + /* translators: Comment moderation. 1: Comment action URL */ $notify_message .= sprintf( __( 'Spam it: %s' ), admin_url( "comment.php?action=spam&c={$comment_id}#wpbody-content" ) ) . "\r\n"; + /* translators: Comment moderation. 1: Number of comments awaiting approval */ $notify_message .= sprintf( _n('Currently %s comment is waiting for approval. Please visit the moderation panel:', 'Currently %s comments are waiting for approval. Please visit the moderation panel:', $comments_waiting), number_format_i18n($comments_waiting) ) . "\r\n"; $notify_message .= admin_url( "edit-comments.php?comment_status=moderated#wpbody-content" ) . "\r\n"; + /* translators: Comment moderation notification email subject. 1: Site name, 2: Post title */ $subject = sprintf( __('[%1$s] Please moderate: "%2$s"'), $blogname, $post->post_title ); $message_headers = ''; @@ -1660,6 +1691,10 @@ function wp_notify_moderator($comment_id) { @wp_mail( $email, wp_specialchars_decode( $subject ), $notify_message, $message_headers ); } + if ( $switched_locale ) { + restore_previous_locale(); + } + return true; } endif; @@ -1719,14 +1754,19 @@ function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' ) $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); if ( 'user' !== $notify ) { + $switched_locale = switch_to_locale( get_locale() ); $message = sprintf( __( 'New user registration on your site %s:' ), $blogname ) . "\r\n\r\n"; $message .= sprintf( __( 'Username: %s' ), $user->user_login ) . "\r\n\r\n"; $message .= sprintf( __( 'Email: %s' ), $user->user_email ) . "\r\n"; @wp_mail( get_option( 'admin_email' ), sprintf( __( '[%s] New User Registration' ), $blogname ), $message ); + + if ( $switched_locale ) { + restore_previous_locale(); + } } - // `$deprecated was pre-4.3 `$plaintext_pass`. An empty `$plaintext_pass` didn't sent a user notifcation. + // `$deprecated was pre-4.3 `$plaintext_pass`. An empty `$plaintext_pass` didn't sent a user notification. if ( 'admin' === $notify || ( empty( $deprecated ) && empty( $notify ) ) ) { return; } @@ -1739,12 +1779,13 @@ function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' ) // Now insert the key, hashed, into the DB. if ( empty( $wp_hasher ) ) { - require_once ABSPATH . WPINC . '/class-phpass.php'; $wp_hasher = new PasswordHash( 8, true ); } $hashed = time() . ':' . $wp_hasher->HashPassword( $key ); $wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user->user_login ) ); + $switched_locale = switch_to_locale( get_user_locale( $user ) ); + $message = sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n"; $message .= __('To set your password, visit the following address:') . "\r\n\r\n"; $message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n"; @@ -1752,6 +1793,10 @@ function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' ) $message .= wp_login_url() . "\r\n"; wp_mail($user->user_email, sprintf(__('[%s] Your username and password info'), $blogname), $message); + + if ( $switched_locale ) { + restore_previous_locale(); + } } endif; @@ -2014,7 +2059,6 @@ function wp_hash_password($password) { global $wp_hasher; if ( empty($wp_hasher) ) { - require_once( ABSPATH . WPINC . '/class-phpass.php'); // By default, use the portable hash from phpass $wp_hasher = new PasswordHash(8, true); } @@ -2074,7 +2118,6 @@ function wp_check_password($password, $hash, $user_id = '') { // If the stored hash is longer than an MD5, presume the // new style phpass portable hash. if ( empty($wp_hasher) ) { - require_once( ABSPATH . WPINC . '/class-phpass.php'); // By default, use the portable hash from phpass $wp_hasher = new PasswordHash(8, true); } diff --git a/wp/wp-includes/plugin.php b/wp/wp-includes/plugin.php index ca4985f1..86f1c3b3 100644 --- a/wp/wp-includes/plugin.php +++ b/wp/wp-includes/plugin.php @@ -14,23 +14,28 @@ * Also see the {@link https://codex.wordpress.org/Plugin_API Plugin API} for * more information and examples on how to use a lot of these functions. * + * This file should have no external dependencies. + * * @package WordPress * @subpackage Plugin * @since 1.5.0 */ // Initialize the filter globals. -global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; +require( dirname( __FILE__ ) . '/class-wp-hook.php' ); -if ( ! isset( $wp_filter ) ) +/** @var WP_Hook[] $wp_filter */ +global $wp_filter, $wp_actions, $wp_current_filter; + +if ( $wp_filter ) { + $wp_filter = WP_Hook::build_preinitialized_hooks( $wp_filter ); +} else { $wp_filter = array(); +} if ( ! isset( $wp_actions ) ) $wp_actions = array(); -if ( ! isset( $merged_filters ) ) - $merged_filters = array(); - if ( ! isset( $wp_current_filter ) ) $wp_current_filter = array(); @@ -87,8 +92,6 @@ if ( ! isset( $wp_current_filter ) ) * @since 0.71 * * @global array $wp_filter A multidimensional array of all hooks and the callbacks hooked to them. - * @global array $merged_filters Tracks the tags that need to be merged for later. If the hook is added, - * it doesn't need to run through that process. * * @param string $tag The name of the filter to hook the $function_to_add callback to. * @param callable $function_to_add The callback to be run when the filter is applied. @@ -101,11 +104,11 @@ if ( ! isset( $wp_current_filter ) ) * @return true */ function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) { - global $wp_filter, $merged_filters; - - $idx = _wp_filter_build_unique_id($tag, $function_to_add, $priority); - $wp_filter[$tag][$priority][$idx] = array('function' => $function_to_add, 'accepted_args' => $accepted_args); - unset( $merged_filters[ $tag ] ); + global $wp_filter; + if ( ! isset( $wp_filter[ $tag ] ) ) { + $wp_filter[ $tag ] = new WP_Hook(); + } + $wp_filter[ $tag ]->add_filter( $tag, $function_to_add, $priority, $accepted_args ); return true; } @@ -126,38 +129,13 @@ function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 * return value. */ function has_filter($tag, $function_to_check = false) { - // Don't reset the internal array pointer - $wp_filter = $GLOBALS['wp_filter']; + global $wp_filter; - $has = ! empty( $wp_filter[ $tag ] ); - - // Make sure at least one priority has a filter callback - if ( $has ) { - $exists = false; - foreach ( $wp_filter[ $tag ] as $callbacks ) { - if ( ! empty( $callbacks ) ) { - $exists = true; - break; - } - } - - if ( ! $exists ) { - $has = false; - } - } - - if ( false === $function_to_check || false === $has ) - return $has; - - if ( !$idx = _wp_filter_build_unique_id($tag, $function_to_check, false) ) + if ( ! isset( $wp_filter[ $tag ] ) ) { return false; - - foreach ( (array) array_keys($wp_filter[$tag]) as $priority ) { - if ( isset($wp_filter[$tag][$priority][$idx]) ) - return $priority; } - return false; + return $wp_filter[ $tag ]->has_filter( $tag, $function_to_check ); } /** @@ -188,7 +166,6 @@ function has_filter($tag, $function_to_check = false) { * @since 0.71 * * @global array $wp_filter Stores all of the filters. - * @global array $merged_filters Merges the filter hooks using this function. * @global array $wp_current_filter Stores the list of current filters with the current one last. * * @param string $tag The name of the filter hook. @@ -197,7 +174,7 @@ function has_filter($tag, $function_to_check = false) { * @return mixed The filtered value after all hooked functions are applied to it. */ function apply_filters( $tag, $value ) { - global $wp_filter, $merged_filters, $wp_current_filter; + global $wp_filter, $wp_current_filter; $args = array(); @@ -217,29 +194,17 @@ function apply_filters( $tag, $value ) { if ( !isset($wp_filter['all']) ) $wp_current_filter[] = $tag; - // Sort. - if ( !isset( $merged_filters[ $tag ] ) ) { - ksort($wp_filter[$tag]); - $merged_filters[ $tag ] = true; - } - - reset( $wp_filter[ $tag ] ); - if ( empty($args) ) $args = func_get_args(); - do { - foreach ( (array) current($wp_filter[$tag]) as $the_ ) - if ( !is_null($the_['function']) ){ - $args[1] = $value; - $value = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args'])); - } + // don't pass the tag name to WP_Hook + array_shift( $args ); - } while ( next($wp_filter[$tag]) !== false ); + $filtered = $wp_filter[ $tag ]->apply_filters( $value, $args ); array_pop( $wp_current_filter ); - return $value; + return $filtered; } /** @@ -251,7 +216,6 @@ function apply_filters( $tag, $value ) { * functions hooked to `$tag` are supplied using an array. * * @global array $wp_filter Stores all of the filters - * @global array $merged_filters Merges the filter hooks using this function. * @global array $wp_current_filter Stores the list of current filters with the current one last * * @param string $tag The name of the filter hook. @@ -259,7 +223,7 @@ function apply_filters( $tag, $value ) { * @return mixed The filtered value after all hooked functions are applied to it. */ function apply_filters_ref_array($tag, $args) { - global $wp_filter, $merged_filters, $wp_current_filter; + global $wp_filter, $wp_current_filter; // Do 'all' actions first if ( isset($wp_filter['all']) ) { @@ -277,24 +241,11 @@ function apply_filters_ref_array($tag, $args) { if ( !isset($wp_filter['all']) ) $wp_current_filter[] = $tag; - // Sort - if ( !isset( $merged_filters[ $tag ] ) ) { - ksort($wp_filter[$tag]); - $merged_filters[ $tag ] = true; - } - - reset( $wp_filter[ $tag ] ); - - do { - foreach ( (array) current($wp_filter[$tag]) as $the_ ) - if ( !is_null($the_['function']) ) - $args[0] = call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args'])); - - } while ( next($wp_filter[$tag]) !== false ); + $filtered = $wp_filter[ $tag ]->apply_filters( $args[0], $args ); array_pop( $wp_current_filter ); - return $args[0]; + return $filtered; } /** @@ -311,7 +262,6 @@ function apply_filters_ref_array($tag, $args) { * @since 1.2.0 * * @global array $wp_filter Stores all of the filters - * @global array $merged_filters Merges the filter hooks using this function. * * @param string $tag The filter hook to which the function to be removed is hooked. * @param callable $function_to_remove The name of the function which should be removed. @@ -319,19 +269,14 @@ function apply_filters_ref_array($tag, $args) { * @return bool Whether the function existed before it was removed. */ function remove_filter( $tag, $function_to_remove, $priority = 10 ) { - $function_to_remove = _wp_filter_build_unique_id( $tag, $function_to_remove, $priority ); + global $wp_filter; - $r = isset( $GLOBALS['wp_filter'][ $tag ][ $priority ][ $function_to_remove ] ); - - if ( true === $r ) { - unset( $GLOBALS['wp_filter'][ $tag ][ $priority ][ $function_to_remove ] ); - if ( empty( $GLOBALS['wp_filter'][ $tag ][ $priority ] ) ) { - unset( $GLOBALS['wp_filter'][ $tag ][ $priority ] ); + $r = false; + if ( isset( $wp_filter[ $tag ] ) ) { + $r = $wp_filter[ $tag ]->remove_filter( $tag, $function_to_remove, $priority ); + if ( ! $wp_filter[ $tag ]->callbacks ) { + unset( $wp_filter[ $tag ] ); } - if ( empty( $GLOBALS['wp_filter'][ $tag ] ) ) { - $GLOBALS['wp_filter'][ $tag ] = array(); - } - unset( $GLOBALS['merged_filters'][ $tag ] ); } return $r; @@ -342,26 +287,22 @@ function remove_filter( $tag, $function_to_remove, $priority = 10 ) { * * @since 2.7.0 * - * @global array $wp_filter Stores all of the filters - * @global array $merged_filters Merges the filter hooks using this function. + * @global array $wp_filter Stores all of the filters * * @param string $tag The filter to remove hooks from. * @param int|bool $priority Optional. The priority number to remove. Default false. * @return true True when finished. */ function remove_all_filters( $tag, $priority = false ) { - global $wp_filter, $merged_filters; + global $wp_filter; if ( isset( $wp_filter[ $tag ]) ) { - if ( false === $priority ) { - $wp_filter[ $tag ] = array(); - } elseif ( isset( $wp_filter[ $tag ][ $priority ] ) ) { - $wp_filter[ $tag ][ $priority ] = array(); + $wp_filter[ $tag ]->remove_all_filters( $priority ); + if ( ! $wp_filter[ $tag ]->has_filters() ) { + unset( $wp_filter[ $tag ] ); } } - unset( $merged_filters[ $tag ] ); - return true; } @@ -471,7 +412,6 @@ function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) * * @global array $wp_filter Stores all of the filters * @global array $wp_actions Increments the amount of times action was triggered. - * @global array $merged_filters Merges the filter hooks using this function. * @global array $wp_current_filter Stores the list of current filters with the current one last * * @param string $tag The name of the action to be executed. @@ -479,7 +419,7 @@ function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) * functions hooked to the action. Default empty. */ function do_action($tag, $arg = '') { - global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; + global $wp_filter, $wp_actions, $wp_current_filter; if ( ! isset($wp_actions[$tag]) ) $wp_actions[$tag] = 1; @@ -510,20 +450,7 @@ function do_action($tag, $arg = '') { for ( $a = 2, $num = func_num_args(); $a < $num; $a++ ) $args[] = func_get_arg($a); - // Sort - if ( !isset( $merged_filters[ $tag ] ) ) { - ksort($wp_filter[$tag]); - $merged_filters[ $tag ] = true; - } - - reset( $wp_filter[ $tag ] ); - - do { - foreach ( (array) current($wp_filter[$tag]) as $the_ ) - if ( !is_null($the_['function']) ) - call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args'])); - - } while ( next($wp_filter[$tag]) !== false ); + $wp_filter[ $tag ]->do_action( $args ); array_pop($wp_current_filter); } @@ -556,14 +483,13 @@ function did_action($tag) { * functions hooked to $tag< are supplied using an array. * @global array $wp_filter Stores all of the filters * @global array $wp_actions Increments the amount of times action was triggered. - * @global array $merged_filters Merges the filter hooks using this function. * @global array $wp_current_filter Stores the list of current filters with the current one last * * @param string $tag The name of the action to be executed. * @param array $args The arguments supplied to the functions hooked to `$tag`. */ function do_action_ref_array($tag, $args) { - global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; + global $wp_filter, $wp_actions, $wp_current_filter; if ( ! isset($wp_actions[$tag]) ) $wp_actions[$tag] = 1; @@ -586,20 +512,7 @@ function do_action_ref_array($tag, $args) { if ( !isset($wp_filter['all']) ) $wp_current_filter[] = $tag; - // Sort - if ( !isset( $merged_filters[ $tag ] ) ) { - ksort($wp_filter[$tag]); - $merged_filters[ $tag ] = true; - } - - reset( $wp_filter[ $tag ] ); - - do { - foreach ( (array) current($wp_filter[$tag]) as $the_ ) - if ( !is_null($the_['function']) ) - call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args'])); - - } while ( next($wp_filter[$tag]) !== false ); + $wp_filter[ $tag ]->do_action( $args ); array_pop($wp_current_filter); } @@ -921,13 +834,7 @@ function register_uninstall_hook( $file, $callback ) { function _wp_call_all_hook($args) { global $wp_filter; - reset( $wp_filter['all'] ); - do { - foreach ( (array) current($wp_filter['all']) as $the_ ) - if ( !is_null($the_['function']) ) - call_user_func_array($the_['function'], $args); - - } while ( next($wp_filter['all']) !== false ); + $wp_filter['all']->do_all_hook( $args ); } /** diff --git a/wp/wp-includes/pomo/mo.php b/wp/wp-includes/pomo/mo.php index 6bc44d61..47e9b6af 100644 --- a/wp/wp-includes/pomo/mo.php +++ b/wp/wp-includes/pomo/mo.php @@ -15,16 +15,37 @@ class MO extends Gettext_Translations { var $_nplurals = 2; + /** + * Loaded MO file. + * + * @var string + */ + private $filename = ''; + + /** + * Returns the loaded MO file. + * + * @return string The loaded MO file. + */ + public function get_filename() { + return $this->filename; + } + /** * Fills up with the entries from MO file $filename * * @param string $filename MO file to load */ function import_from_file($filename) { - $reader = new POMO_FileReader($filename); - if (!$reader->is_resource()) + $reader = new POMO_FileReader( $filename ); + + if ( ! $reader->is_resource() ) { return false; - return $this->import_from_reader($reader); + } + + $this->filename = (string) $filename; + + return $this->import_from_reader( $reader ); } /** @@ -299,4 +320,4 @@ class MO extends Gettext_Translations { return $this->_nplurals; } } -endif; \ No newline at end of file +endif; diff --git a/wp/wp-includes/pomo/translations.php b/wp/wp-includes/pomo/translations.php index 66971d95..6623a9f0 100644 --- a/wp/wp-includes/pomo/translations.php +++ b/wp/wp-includes/pomo/translations.php @@ -102,7 +102,7 @@ class Translations { * Here, in the base Translations class, the common logic for English is implemented: * 0 if there is one element, 1 otherwise * - * This function should be overrided by the sub-classes. For example MO/PO can derive the logic + * This function should be overridden by the sub-classes. For example MO/PO can derive the logic * from their headers. * * @param integer $count number of items diff --git a/wp/wp-includes/post-template.php b/wp/wp-includes/post-template.php index be152523..ac886433 100644 --- a/wp/wp-includes/post-template.php +++ b/wp/wp-includes/post-template.php @@ -30,14 +30,14 @@ function get_the_ID() { } /** - * Display or retrieve the current post title with optional content. + * Display or retrieve the current post title with optional markup. * * @since 0.71 * - * @param string $before Optional. Content to prepend to the title. - * @param string $after Optional. Content to append to the title. - * @param bool $echo Optional, default to true.Whether to display or return. - * @return string|void String if $echo parameter is false. + * @param string $before Optional. Markup to prepend to the title. Default empty. + * @param string $after Optional. Markup to append to the title. Default empty. + * @param bool $echo Optional. Whether to echo or return the title. Default true for echo. + * @return string|void Current post title if $echo is false. */ function the_title( $before = '', $after = '', $echo = true ) { $title = get_the_title(); @@ -247,11 +247,11 @@ function the_content( $more_link_text = null, $strip_teaser = false) { * * @since 0.71 * - * @global int $page - * @global int $more - * @global bool $preview - * @global array $pages - * @global int $multipage + * @global int $page Page number of a single post/page. + * @global int $more Boolean indicator for whether single post/page is being viewed. + * @global bool $preview Whether post/page is in preview mode. + * @global array $pages Array of all pages in post/page. Each array element contains part of the content separated by the tag. + * @global int $multipage Boolean indicator for whether multiple pages are in play. * * @param string $more_link_text Optional. Content for when there is more text. * @param bool $strip_teaser Optional. Strip teaser content before the more text. Default is false. @@ -594,23 +594,40 @@ function get_body_class( $class = '' ) { if ( is_404() ) $classes[] = 'error404'; - if ( is_single() ) { + if ( is_singular() ) { $post_id = $wp_query->get_queried_object_id(); $post = $wp_query->get_queried_object(); + $post_type = $post->post_type; - $classes[] = 'single'; - if ( isset( $post->post_type ) ) { - $classes[] = 'single-' . sanitize_html_class($post->post_type, $post_id); - $classes[] = 'postid-' . $post_id; + if ( is_page_template() ) { + $classes[] = "{$post_type}-template"; - // Post Format - if ( post_type_supports( $post->post_type, 'post-formats' ) ) { - $post_format = get_post_format( $post->ID ); + $template_slug = get_page_template_slug( $post_id ); + $template_parts = explode( '/', $template_slug ); - if ( $post_format && !is_wp_error($post_format) ) - $classes[] = 'single-format-' . sanitize_html_class( $post_format ); - else - $classes[] = 'single-format-standard'; + foreach ( $template_parts as $part ) { + $classes[] = "{$post_type}-template-" . sanitize_html_class( str_replace( array( '.', '/' ), '-', basename( $part, '.php' ) ) ); + } + $classes[] = "{$post_type}-template-" . sanitize_html_class( str_replace( '.', '-', $template_slug ) ); + } else { + $classes[] = "{$post_type}-template-default"; + } + + if ( is_single() ) { + $classes[] = 'single'; + if ( isset( $post->post_type ) ) { + $classes[] = 'single-' . sanitize_html_class( $post->post_type, $post_id ); + $classes[] = 'postid-' . $post_id; + + // Post Format + if ( post_type_supports( $post->post_type, 'post-formats' ) ) { + $post_format = get_post_format( $post->ID ); + + if ( $post_format && !is_wp_error($post_format) ) + $classes[] = 'single-format-' . sanitize_html_class( $post_format ); + else + $classes[] = 'single-format-standard'; + } } } @@ -619,6 +636,23 @@ function get_body_class( $class = '' ) { $mime_prefix = array( 'application/', 'image/', 'text/', 'audio/', 'video/', 'music/' ); $classes[] = 'attachmentid-' . $post_id; $classes[] = 'attachment-' . str_replace( $mime_prefix, '', $mime_type ); + } elseif ( is_page() ) { + $classes[] = 'page'; + + $page_id = $wp_query->get_queried_object_id(); + + $post = get_post($page_id); + + $classes[] = 'page-id-' . $page_id; + + if ( get_pages( array( 'parent' => $page_id, 'number' => 1 ) ) ) { + $classes[] = 'page-parent'; + } + + if ( $post->post_parent ) { + $classes[] = 'page-child'; + $classes[] = 'parent-pageid-' . $post->post_parent; + } } } elseif ( is_archive() ) { if ( is_post_type_archive() ) { @@ -671,36 +705,6 @@ function get_body_class( $class = '' ) { $classes[] = 'term-' . $term->term_id; } } - } elseif ( is_page() ) { - $classes[] = 'page'; - - $page_id = $wp_query->get_queried_object_id(); - - $post = get_post($page_id); - - $classes[] = 'page-id-' . $page_id; - - if ( get_pages( array( 'parent' => $page_id, 'number' => 1 ) ) ) { - $classes[] = 'page-parent'; - } - - if ( $post->post_parent ) { - $classes[] = 'page-child'; - $classes[] = 'parent-pageid-' . $post->post_parent; - } - if ( is_page_template() ) { - $classes[] = 'page-template'; - - $template_slug = get_page_template_slug( $page_id ); - $template_parts = explode( '/', $template_slug ); - - foreach ( $template_parts as $part ) { - $classes[] = 'page-template-' . sanitize_html_class( str_replace( array( '.', '/' ), '-', basename( $part, '.php' ) ) ); - } - $classes[] = 'page-template-' . sanitize_html_class( str_replace( '.', '-', $template_slug ) ); - } else { - $classes[] = 'page-template-default'; - } } if ( is_user_logged_in() ) @@ -779,20 +783,35 @@ function get_body_class( $class = '' ) { function post_password_required( $post = null ) { $post = get_post($post); - if ( empty( $post->post_password ) ) - return false; + if ( empty( $post->post_password ) ) { + /** This filter is documented in wp-includes/post.php */ + return apply_filters( 'post_password_required', false, $post ); + } - if ( ! isset( $_COOKIE['wp-postpass_' . COOKIEHASH] ) ) - return true; + if ( ! isset( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ) ) { + /** This filter is documented in wp-includes/post.php */ + return apply_filters( 'post_password_required', true, $post ); + } - require_once ABSPATH . WPINC . '/class-phpass.php'; $hasher = new PasswordHash( 8, true ); $hash = wp_unslash( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ); - if ( 0 !== strpos( $hash, '$P$B' ) ) - return true; + if ( 0 !== strpos( $hash, '$P$B' ) ) { + $required = true; + } else { + $required = ! $hasher->CheckPassword( $post->post_password, $hash ); + } - return ! $hasher->CheckPassword( $post->post_password, $hash ); + /** + * Filters whether a post requires the user to supply a password. + * + * @since 4.7.0 + * + * @param bool $required Whether the user needs to supply a password. True if password has not been + * provided or is incorrect, false if password has been supplied or is not required. + * @param WP_Post $post Post data. + */ + return apply_filters( 'post_password_required', $required, $post ); } // @@ -1110,6 +1129,7 @@ function wp_dropdown_pages( $args = '' ) { * Retrieve or display list of pages in list (li) format. * * @since 1.5.0 + * @since 4.7.0 Added the `item_spacing` argument. * * @see get_pages() * @@ -1118,43 +1138,57 @@ function wp_dropdown_pages( $args = '' ) { * @param array|string $args { * Array or string of arguments. Optional. * - * @type int $child_of Display only the sub-pages of a single page by ID. Default 0 (all pages). - * @type string $authors Comma-separated list of author IDs. Default empty (all authors). - * @type string $date_format PHP date format to use for the listed pages. Relies on the 'show_date' parameter. - * Default is the value of 'date_format' option. - * @type int $depth Number of levels in the hierarchy of pages to include in the generated list. - * Accepts -1 (any depth), 0 (all pages), 1 (top-level pages only), and n (pages to - * the given n depth). Default 0. - * @type bool $echo Whether or not to echo the list of pages. Default true. - * @type string $exclude Comma-separated list of page IDs to exclude. Default empty. - * @type array $include Comma-separated list of page IDs to include. Default empty. - * @type string $link_after Text or HTML to follow the page link label. Default null. - * @type string $link_before Text or HTML to precede the page link label. Default null. - * @type string $post_type Post type to query for. Default 'page'. - * @type string $post_status Comma-separated list of post statuses to include. Default 'publish'. - * @type string $show_date Whether to display the page publish or modified date for each page. Accepts - * 'modified' or any other value. An empty value hides the date. Default empty. - * @type string $sort_column Comma-separated list of column names to sort the pages by. Accepts 'post_author', - * 'post_date', 'post_title', 'post_name', 'post_modified', 'post_modified_gmt', - * 'menu_order', 'post_parent', 'ID', 'rand', or 'comment_count'. Default 'post_title'. - * @type string $title_li List heading. Passing a null or empty value will result in no heading, and the list - * will not be wrapped with unordered list `
                  ` tags. Default 'Pages'. - * @type Walker $walker Walker instance to use for listing pages. Default empty (Walker_Page). + * @type int $child_of Display only the sub-pages of a single page by ID. Default 0 (all pages). + * @type string $authors Comma-separated list of author IDs. Default empty (all authors). + * @type string $date_format PHP date format to use for the listed pages. Relies on the 'show_date' parameter. + * Default is the value of 'date_format' option. + * @type int $depth Number of levels in the hierarchy of pages to include in the generated list. + * Accepts -1 (any depth), 0 (all pages), 1 (top-level pages only), and n (pages to + * the given n depth). Default 0. + * @type bool $echo Whether or not to echo the list of pages. Default true. + * @type string $exclude Comma-separated list of page IDs to exclude. Default empty. + * @type array $include Comma-separated list of page IDs to include. Default empty. + * @type string $link_after Text or HTML to follow the page link label. Default null. + * @type string $link_before Text or HTML to precede the page link label. Default null. + * @type string $post_type Post type to query for. Default 'page'. + * @type string|array $post_status Comma-separated list or array of post statuses to include. Default 'publish'. + * @type string $show_date Whether to display the page publish or modified date for each page. Accepts + * 'modified' or any other value. An empty value hides the date. Default empty. + * @type string $sort_column Comma-separated list of column names to sort the pages by. Accepts 'post_author', + * 'post_date', 'post_title', 'post_name', 'post_modified', 'post_modified_gmt', + * 'menu_order', 'post_parent', 'ID', 'rand', or 'comment_count'. Default 'post_title'. + * @type string $title_li List heading. Passing a null or empty value will result in no heading, and the list + * will not be wrapped with unordered list `
                    ` tags. Default 'Pages'. + * @type string $item_spacing Whether to preserve whitespace within the menu's HTML. Accepts 'preserve' or 'discard'. + * Default 'preserve'. + * @type Walker $walker Walker instance to use for listing pages. Default empty (Walker_Page). * } * @return string|void HTML list of pages. */ function wp_list_pages( $args = '' ) { $defaults = array( - 'depth' => 0, 'show_date' => '', - 'date_format' => get_option( 'date_format' ), - 'child_of' => 0, 'exclude' => '', - 'title_li' => __( 'Pages' ), 'echo' => 1, - 'authors' => '', 'sort_column' => 'menu_order, post_title', - 'link_before' => '', 'link_after' => '', 'walker' => '', + 'depth' => 0, + 'show_date' => '', + 'date_format' => get_option( 'date_format' ), + 'child_of' => 0, + 'exclude' => '', + 'title_li' => __( 'Pages' ), + 'echo' => 1, + 'authors' => '', + 'sort_column' => 'menu_order, post_title', + 'link_before' => '', + 'link_after' => '', + 'item_spacing' => 'preserve', + 'walker' => '', ); $r = wp_parse_args( $args, $defaults ); + if ( ! in_array( $r['item_spacing'], array( 'preserve', 'discard' ), true ) ) { + // invalid value, fall back to default. + $r['item_spacing'] = $defaults['item_spacing']; + } + $output = ''; $current_page = 0; @@ -1227,42 +1261,58 @@ function wp_list_pages( $args = '' ) { * * @since 2.7.0 * @since 4.4.0 Added `menu_id`, `container`, `before`, `after`, and `walker` arguments. + * @since 4.7.0 Added the `item_spacing` argument. * * @param array|string $args { * Optional. Arguments to generate a page menu. See wp_list_pages() for additional arguments. * - * @type string $sort_column How to short the list of pages. Accepts post column names. - * Default 'menu_order, post_title'. - * @type string $menu_id ID for the div containing the page list. Default is empty string. - * @type string $menu_class Class to use for the element containing the page list. Default 'menu'. - * @type string $container Element to use for the element containing the page list. Default 'div'. - * @type bool $echo Whether to echo the list or return it. Accepts true (echo) or false (return). - * Default true. - * @type int|bool|string $show_home Whether to display the link to the home page. Can just enter the text - * you'd like shown for the home link. 1|true defaults to 'Home'. - * @type string $link_before The HTML or text to prepend to $show_home text. Default empty. - * @type string $link_after The HTML or text to append to $show_home text. Default empty. - * @type string $before The HTML or text to prepend to the menu. Default is '
                      '. - * @type string $after The HTML or text to append to the menu. Default is '
                    '. - * @type Walker $walker Walker instance to use for listing pages. Default empty (Walker_Page). + * @type string $sort_column How to short the list of pages. Accepts post column names. + * Default 'menu_order, post_title'. + * @type string $menu_id ID for the div containing the page list. Default is empty string. + * @type string $menu_class Class to use for the element containing the page list. Default 'menu'. + * @type string $container Element to use for the element containing the page list. Default 'div'. + * @type bool $echo Whether to echo the list or return it. Accepts true (echo) or false (return). + * Default true. + * @type int|bool|string $show_home Whether to display the link to the home page. Can just enter the text + * you'd like shown for the home link. 1|true defaults to 'Home'. + * @type string $link_before The HTML or text to prepend to $show_home text. Default empty. + * @type string $link_after The HTML or text to append to $show_home text. Default empty. + * @type string $before The HTML or text to prepend to the menu. Default is '
                      '. + * @type string $after The HTML or text to append to the menu. Default is '
                    '. + * @type string $item_spacing Whether to preserve whitespace within the menu's HTML. Accepts 'preserve' or 'discard'. Default 'discard'. + * @type Walker $walker Walker instance to use for listing pages. Default empty (Walker_Page). * } * @return string|void HTML menu */ function wp_page_menu( $args = array() ) { $defaults = array( - 'sort_column' => 'menu_order, post_title', - 'menu_id' => '', - 'menu_class' => 'menu', - 'container' => 'div', - 'echo' => true, - 'link_before' => '', - 'link_after' => '', - 'before' => '
                      ', - 'after' => '
                    ', - 'walker' => '', + 'sort_column' => 'menu_order, post_title', + 'menu_id' => '', + 'menu_class' => 'menu', + 'container' => 'div', + 'echo' => true, + 'link_before' => '', + 'link_after' => '', + 'before' => '
                      ', + 'after' => '
                    ', + 'item_spacing' => 'discard', + 'walker' => '', ); $args = wp_parse_args( $args, $defaults ); + if ( ! in_array( $args['item_spacing'], array( 'preserve', 'discard' ) ) ) { + // invalid value, fall back to default. + $args['item_spacing'] = $defaults['item_spacing']; + } + + if ( 'preserve' === $args['item_spacing'] ) { + $t = "\t"; + $n = "\n"; + } else { + $t = ''; + $n = ''; + } + /** * Filters the arguments used to generate a page-based menu. * @@ -1301,7 +1351,7 @@ function wp_page_menu( $args = array() ) { $list_args['echo'] = false; $list_args['title_li'] = ''; - $menu .= str_replace( array( "\r", "\n", "\t" ), '', wp_list_pages($list_args) ); + $menu .= wp_list_pages( $list_args ); $container = sanitize_text_field( $args['container'] ); @@ -1316,7 +1366,7 @@ function wp_page_menu( $args = array() ) { if ( isset( $args['fallback_cb'] ) && 'wp_page_menu' === $args['fallback_cb'] && 'ul' !== $container ) { - $args['before'] = '
                      '; + $args['before'] = "
                        {$n}"; $args['after'] = '
                      '; } @@ -1332,7 +1382,7 @@ function wp_page_menu( $args = array() ) { $attrs .= ' class="' . esc_attr( $args['menu_class'] ) . '"'; } - $menu = "<{$container}{$attrs}>" . $menu . "\n"; + $menu = "<{$container}{$attrs}>" . $menu . "{$n}"; /** * Filters the HTML output of a page-based menu. @@ -1445,11 +1495,13 @@ function the_attachment_link( $id = 0, $fullsize = false, $deprecated = false, $ function wp_get_attachment_link( $id = 0, $size = 'thumbnail', $permalink = false, $icon = false, $text = false, $attr = '' ) { $_post = get_post( $id ); - if ( empty( $_post ) || ( 'attachment' != $_post->post_type ) || ! $url = wp_get_attachment_url( $_post->ID ) ) + if ( empty( $_post ) || ( 'attachment' !== $_post->post_type ) || ! $url = wp_get_attachment_url( $_post->ID ) ) { return __( 'Missing Attachment' ); + } - if ( $permalink ) + if ( $permalink ) { $url = get_attachment_link( $_post->ID ); + } if ( $text ) { $link_text = $text; @@ -1459,9 +1511,13 @@ function wp_get_attachment_link( $id = 0, $size = 'thumbnail', $permalink = fals $link_text = ''; } - if ( trim( $link_text ) == '' ) + if ( '' === trim( $link_text ) ) { $link_text = $_post->post_title; + } + if ( '' === trim( $link_text ) ) { + $link_text = esc_html( pathinfo( get_attached_file( $_post->ID ), PATHINFO_FILENAME ) ); + } /** * Filters a retrieved attachment page link. * @@ -1569,14 +1625,12 @@ function get_the_password_form( $post = 0 ) { * * @since 2.5.0 * @since 4.2.0 The `$template` parameter was changed to also accept an array of page templates. + * @since 4.7.0 Now works with any post type, not just pages. * * @param string|array $template The specific template name or array of templates to match. * @return bool True on success, false on failure. */ function is_page_template( $template = '' ) { - if ( ! is_page() ) - return false; - $page_template = get_page_template_slug( get_queried_object_id() ); if ( empty( $template ) ) @@ -1597,21 +1651,28 @@ function is_page_template( $template = '' ) { } /** - * Get the specific template name for a page. + * Get the specific template name for a given post. * * @since 3.4.0 + * @since 4.7.0 Now works with any post type, not just pages. * - * @param int $post_id Optional. The page ID to check. Defaults to the current post, when used in the loop. + * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post. * @return string|false Page template filename. Returns an empty string when the default page template - * is in use. Returns false if the post is not a page. + * is in use. Returns false if the post does not exist. */ -function get_page_template_slug( $post_id = null ) { - $post = get_post( $post_id ); - if ( ! $post || 'page' != $post->post_type ) +function get_page_template_slug( $post = null ) { + $post = get_post( $post ); + + if ( ! $post ) { return false; + } + $template = get_post_meta( $post->ID, '_wp_page_template', true ); - if ( ! $template || 'default' == $template ) + + if ( ! $template || 'default' == $template ) { return ''; + } + return $template; } @@ -1633,10 +1694,10 @@ function wp_post_revision_title( $revision, $link = true ) { /* translators: revision date format, see https://secure.php.net/date */ $datef = _x( 'F j, Y @ H:i:s', 'revision date format' ); - /* translators: 1: date */ - $autosavef = _x( '%1$s [Autosave]', 'post revision title extra' ); - /* translators: 1: date */ - $currentf = _x( '%1$s [Current Revision]', 'post revision title extra' ); + /* translators: %s: revision date */ + $autosavef = __( '%s [Autosave]' ); + /* translators: %s: revision date */ + $currentf = __( '%s [Current Revision]' ); $date = date_i18n( $datef, strtotime( $revision->post_modified ) ); if ( $link && current_user_can( 'edit_post', $revision->ID ) && $link = get_edit_post_link( $revision->ID ) ) @@ -1678,15 +1739,17 @@ function wp_post_revision_title_expanded( $revision, $link = true ) { $revision_date_author = sprintf( /* translators: post revision title: 1: author avatar, 2: author name, 3: time ago, 4: date */ - _x( '%1$s %2$s, %3$s ago (%4$s)', 'post revision title' ), + __( '%1$s %2$s, %3$s ago (%4$s)' ), $gravatar, $author, human_time_diff( strtotime( $revision->post_modified ), current_time( 'timestamp' ) ), $date ); - $autosavef = __( '%1$s [Autosave]' ); - $currentf = __( '%1$s [Current Revision]' ); + /* translators: %s: revision date with author avatar */ + $autosavef = __( '%s [Autosave]' ); + /* translators: %s: revision date with author avatar */ + $currentf = __( '%s [Current Revision]' ); if ( !wp_is_post_revision( $revision ) ) $revision_date_author = sprintf( $currentf, $revision_date_author ); diff --git a/wp/wp-includes/post.php b/wp/wp-includes/post.php index d0331727..c81f5c58 100644 --- a/wp/wp-includes/post.php +++ b/wp/wp-includes/post.php @@ -20,7 +20,7 @@ function create_initial_post_types() { register_post_type( 'post', array( 'labels' => array( - 'name_admin_bar' => _x( 'Post', 'add new on admin bar' ), + 'name_admin_bar' => _x( 'Post', 'add new from admin bar' ), ), 'public' => true, '_builtin' => true, /* internal use only. don't use this when registering your own post type. */ @@ -33,11 +33,14 @@ function create_initial_post_types() { 'query_var' => false, 'delete_with_user' => true, 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ), + 'show_in_rest' => true, + 'rest_base' => 'posts', + 'rest_controller_class' => 'WP_REST_Posts_Controller', ) ); register_post_type( 'page', array( 'labels' => array( - 'name_admin_bar' => _x( 'Page', 'add new on admin bar' ), + 'name_admin_bar' => _x( 'Page', 'add new from admin bar' ), ), 'public' => true, 'publicly_queryable' => false, @@ -51,6 +54,9 @@ function create_initial_post_types() { 'query_var' => false, 'delete_with_user' => true, 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'page-attributes', 'custom-fields', 'comments', 'revisions' ), + 'show_in_rest' => true, + 'rest_base' => 'pages', + 'rest_controller_class' => 'WP_REST_Posts_Controller', ) ); register_post_type( 'attachment', array( @@ -60,6 +66,7 @@ function create_initial_post_types() { 'add_new' => _x( 'Add New', 'add new media' ), 'edit_item' => __( 'Edit Media' ), 'view_item' => __( 'View Attachment Page' ), + 'attributes' => __( 'Attachment Attributes' ), ), 'public' => true, 'show_ui' => true, @@ -76,6 +83,9 @@ function create_initial_post_types() { 'show_in_nav_menus' => false, 'delete_with_user' => true, 'supports' => array( 'title', 'author', 'comments' ), + 'show_in_rest' => true, + 'rest_base' => 'media', + 'rest_controller_class' => 'WP_REST_Attachments_Controller', ) ); add_post_type_support( 'attachment:audio', 'thumbnail' ); add_post_type_support( 'attachment:video', 'thumbnail' ); @@ -111,6 +121,80 @@ function create_initial_post_types() { 'query_var' => false, ) ); + register_post_type( 'custom_css', array( + 'labels' => array( + 'name' => __( 'Custom CSS' ), + 'singular_name' => __( 'Custom CSS' ), + ), + 'public' => false, + 'hierarchical' => false, + 'rewrite' => false, + 'query_var' => false, + 'delete_with_user' => false, + 'can_export' => true, + '_builtin' => true, /* internal use only. don't use this when registering your own post type. */ + 'supports' => array( 'title', 'revisions' ), + 'capabilities' => array( + 'delete_posts' => 'edit_theme_options', + 'delete_post' => 'edit_theme_options', + 'delete_published_posts' => 'edit_theme_options', + 'delete_private_posts' => 'edit_theme_options', + 'delete_others_posts' => 'edit_theme_options', + 'edit_post' => 'edit_css', + 'edit_posts' => 'edit_css', + 'edit_others_posts' => 'edit_css', + 'edit_published_posts' => 'edit_css', + 'read_post' => 'read', + 'read_private_posts' => 'read', + 'publish_posts' => 'edit_theme_options', + ), + ) ); + + register_post_type( 'customize_changeset', array( + 'labels' => array( + 'name' => _x( 'Changesets', 'post type general name' ), + 'singular_name' => _x( 'Changeset', 'post type singular name' ), + 'menu_name' => _x( 'Changesets', 'admin menu' ), + 'name_admin_bar' => _x( 'Changeset', 'add new on admin bar' ), + 'add_new' => _x( 'Add New', 'Customize Changeset' ), + 'add_new_item' => __( 'Add New Changeset' ), + 'new_item' => __( 'New Changeset' ), + 'edit_item' => __( 'Edit Changeset' ), + 'view_item' => __( 'View Changeset' ), + 'all_items' => __( 'All Changesets' ), + 'search_items' => __( 'Search Changesets' ), + 'not_found' => __( 'No changesets found.' ), + 'not_found_in_trash' => __( 'No changesets found in Trash.' ), + ), + 'public' => false, + '_builtin' => true, /* internal use only. don't use this when registering your own post type. */ + 'map_meta_cap' => true, + 'hierarchical' => false, + 'rewrite' => false, + 'query_var' => false, + 'can_export' => false, + 'delete_with_user' => false, + 'supports' => array( 'title', 'author' ), + 'capability_type' => 'customize_changeset', + 'capabilities' => array( + 'create_posts' => 'customize', + 'delete_others_posts' => 'customize', + 'delete_post' => 'customize', + 'delete_posts' => 'customize', + 'delete_private_posts' => 'customize', + 'delete_published_posts' => 'customize', + 'edit_others_posts' => 'customize', + 'edit_post' => 'customize', + 'edit_posts' => 'customize', + 'edit_private_posts' => 'customize', + 'edit_published_posts' => 'do_not_allow', + 'publish_posts' => 'customize', + 'read' => 'read', + 'read_post' => 'customize', + 'read_private_posts' => 'customize', + ), + ) ); + register_post_status( 'publish', array( 'label' => _x( 'Published', 'post status' ), 'public' => true, @@ -317,8 +401,8 @@ function _wp_relative_upload_path( $path ) { * @global WP_Post $post * * @param mixed $args Optional. User defined arguments for replacing the defaults. Default empty. - * @param string $output Optional. Constant for return type. Accepts OBJECT, ARRAY_A, ARRAY_N. - * Default OBJECT. + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * a WP_Post object, an associative array, or a numeric array, respectively. Default OBJECT. * @return array Array of children, where the type of each element is determined by $output parameter. * Empty array on failure. */ @@ -421,8 +505,8 @@ function get_extended( $post ) { * @global WP_Post $post * * @param int|WP_Post|null $post Optional. Post ID or post object. Defaults to global $post. - * @param string $output Optional, default is Object. Accepts OBJECT, ARRAY_A, or ARRAY_N. - * Default OBJECT. + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * a WP_Post object, an associative array, or a numeric array, respectively. Default OBJECT. * @param string $filter Optional. Type of filter to apply. Accepts 'raw', 'edit', 'db', * or 'display'. Default 'raw'. * @return WP_Post|array|null Type corresponding to $output on success or null on failure. @@ -901,6 +985,8 @@ function get_post_types( $args = array(), $output = 'names', $operator = 'and' ) * @since 4.4.0 The `show_ui` argument is now enforced on the post type listing * screen and post editing screen. * @since 4.6.0 Post type object returned is now an instance of WP_Post_Type. + * @since 4.7.0 Introduced `show_in_rest`, 'rest_base' and 'rest_controller_class' + * arguments to register the post type in REST API. * * @global array $wp_post_types List of post types. * @@ -910,76 +996,79 @@ function get_post_types( $args = array(), $output = 'names', $operator = 'and' ) * @param array|string $args { * Array or string of arguments for registering a post type. * - * @type string $label Name of the post type shown in the menu. Usually plural. - * Default is value of $labels['name']. - * @type array $labels An array of labels for this post type. If not set, post - * labels are inherited for non-hierarchical types and page - * labels for hierarchical ones. See get_post_type_labels() for a full - * list of supported labels. - * @type string $description A short descriptive summary of what the post type is. - * Default empty. - * @type bool $public Whether a post type is intended for use publicly either via - * the admin interface or by front-end users. While the default - * settings of $exclude_from_search, $publicly_queryable, $show_ui, - * and $show_in_nav_menus are inherited from public, each does not - * rely on this relationship and controls a very specific intention. - * Default false. - * @type bool $hierarchical Whether the post type is hierarchical (e.g. page). Default false. - * @type bool $exclude_from_search Whether to exclude posts with this post type from front end search - * results. Default is the opposite value of $public. - * @type bool $publicly_queryable Whether queries can be performed on the front end for the post type - * as part of parse_request(). Endpoints would include: - * * ?post_type={post_type_key} - * * ?{post_type_key}={single_post_slug} - * * ?{post_type_query_var}={single_post_slug} - * If not set, the default is inherited from $public. - * @type bool $show_ui Whether to generate and allow a UI for managing this post type in the - * admin. Default is value of $public. - * @type bool $show_in_menu Where to show the post type in the admin menu. To work, $show_ui - * must be true. If true, the post type is shown in its own top level - * menu. If false, no menu is shown. If a string of an existing top - * level menu (eg. 'tools.php' or 'edit.php?post_type=page'), the post - * type will be placed as a sub-menu of that. - * Default is value of $show_ui. - * @type bool $show_in_nav_menus Makes this post type available for selection in navigation menus. - * Default is value $public. - * @type bool $show_in_admin_bar Makes this post type available via the admin bar. Default is value - * of $show_in_menu. - * @type int $menu_position The position in the menu order the post type should appear. To work, - * $show_in_menu must be true. Default null (at the bottom). - * @type string $menu_icon 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. Defaults to use the posts icon. - * @type string $capability_type The string to use to build the read, edit, and delete capabilities. - * May be passed as an array to allow for alternative plurals when using - * this argument as a base to construct the capabilities, e.g. - * array('story', 'stories'). Default 'post'. - * @type array $capabilities Array of capabilities for this post type. $capability_type is used - * as a base to construct capabilities by default. - * See get_post_type_capabilities(). - * @type bool $map_meta_cap Whether to use the internal default meta capability handling. - * Default false. - * @type array $supports Core feature(s) the post type supports. Serves as an alias for calling - * add_post_type_support() directly. Core features include 'title', - * 'editor', 'comments', 'revisions', 'trackbacks', 'author', 'excerpt', - * 'page-attributes', 'thumbnail', 'custom-fields', and 'post-formats'. - * Additionally, the 'revisions' feature dictates whether the post type - * will store revisions, and the 'comments' feature dictates whether the - * comments count will show on the edit screen. Defaults is an array - * containing 'title' and 'editor'. - * @type callable $register_meta_box_cb Provide a callback function that sets up the meta boxes for the - * edit form. Do remove_meta_box() and add_meta_box() calls in the - * callback. Default null. - * @type array $taxonomies An array of taxonomy identifiers that will be registered for the - * post type. Taxonomies can be registered later with register_taxonomy() - * or register_taxonomy_for_object_type(). - * Default empty array. - * @type bool|string $has_archive Whether there should be post type archives, or if a string, the - * archive slug to use. Will generate the proper rewrite rules if - * $rewrite is enabled. Default false. + * @type string $label Name of the post type shown in the menu. Usually plural. + * Default is value of $labels['name']. + * @type array $labels An array of labels for this post type. If not set, post + * labels are inherited for non-hierarchical types and page + * labels for hierarchical ones. See get_post_type_labels() for a full + * list of supported labels. + * @type string $description A short descriptive summary of what the post type is. + * Default empty. + * @type bool $public Whether a post type is intended for use publicly either via + * the admin interface or by front-end users. While the default + * settings of $exclude_from_search, $publicly_queryable, $show_ui, + * and $show_in_nav_menus are inherited from public, each does not + * rely on this relationship and controls a very specific intention. + * Default false. + * @type bool $hierarchical Whether the post type is hierarchical (e.g. page). Default false. + * @type bool $exclude_from_search Whether to exclude posts with this post type from front end search + * results. Default is the opposite value of $public. + * @type bool $publicly_queryable Whether queries can be performed on the front end for the post type + * as part of parse_request(). Endpoints would include: + * * ?post_type={post_type_key} + * * ?{post_type_key}={single_post_slug} + * * ?{post_type_query_var}={single_post_slug} + * If not set, the default is inherited from $public. + * @type bool $show_ui Whether to generate and allow a UI for managing this post type in the + * admin. Default is value of $public. + * @type bool $show_in_menu Where to show the post type in the admin menu. To work, $show_ui + * must be true. If true, the post type is shown in its own top level + * menu. If false, no menu is shown. If a string of an existing top + * level menu (eg. 'tools.php' or 'edit.php?post_type=page'), the post + * type will be placed as a sub-menu of that. + * Default is value of $show_ui. + * @type bool $show_in_nav_menus Makes this post type available for selection in navigation menus. + * Default is value $public. + * @type bool $show_in_admin_bar Makes this post type available via the admin bar. Default is value + * of $show_in_menu. + * @type bool $show_in_rest Whether to add the post type route in the REST API 'wp/v2' namespace. + * @type string $rest_base To change the base url of REST API route. Default is $post_type. + * @type string $rest_controller_class REST API Controller class name. Default is 'WP_REST_Posts_Controller'. + * @type int $menu_position The position in the menu order the post type should appear. To work, + * $show_in_menu must be true. Default null (at the bottom). + * @type string $menu_icon 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. Defaults to use the posts icon. + * @type string $capability_type The string to use to build the read, edit, and delete capabilities. + * May be passed as an array to allow for alternative plurals when using + * this argument as a base to construct the capabilities, e.g. + * array('story', 'stories'). Default 'post'. + * @type array $capabilities Array of capabilities for this post type. $capability_type is used + * as a base to construct capabilities by default. + * See get_post_type_capabilities(). + * @type bool $map_meta_cap Whether to use the internal default meta capability handling. + * Default false. + * @type array $supports Core feature(s) the post type supports. Serves as an alias for calling + * add_post_type_support() directly. Core features include 'title', + * 'editor', 'comments', 'revisions', 'trackbacks', 'author', 'excerpt', + * 'page-attributes', 'thumbnail', 'custom-fields', and 'post-formats'. + * Additionally, the 'revisions' feature dictates whether the post type + * will store revisions, and the 'comments' feature dictates whether the + * comments count will show on the edit screen. Defaults is an array + * containing 'title' and 'editor'. + * @type callable $register_meta_box_cb Provide a callback function that sets up the meta boxes for the + * edit form. Do remove_meta_box() and add_meta_box() calls in the + * callback. Default null. + * @type array $taxonomies An array of taxonomy identifiers that will be registered for the + * post type. Taxonomies can be registered later with register_taxonomy() + * or register_taxonomy_for_object_type(). + * Default empty array. + * @type bool|string $has_archive Whether there should be post type archives, or if a string, the + * archive slug to use. Will generate the proper rewrite rules if + * $rewrite is enabled. Default false. * @type bool|array $rewrite { * Triggers the handling of rewrites for this post type. To prevent rewrite, set to false. * Defaults to true, using $post_type as slug. To specify rewrite rules, an array can be @@ -995,21 +1084,21 @@ function get_post_types( $args = array(), $output = 'names', $operator = 'and' ) * inherits from $permalink_epmask. If not specified and permalink_epmask * is not set, defaults to EP_PERMALINK. * } - * @type string|bool $query_var Sets the query_var key for this post type. Defaults to $post_type - * key. If false, a post type cannot be loaded at - * ?{query_var}={post_slug}. If specified as a string, the query - * ?{query_var_string}={post_slug} will be valid. - * @type bool $can_export Whether to allow this post type to be exported. Default true. - * @type bool $delete_with_user Whether to delete posts of this type when deleting a user. If true, - * posts of this type belonging to the user will be moved to trash - * when then user is deleted. If false, posts of this type belonging - * to the user will *not* be trashed or deleted. If not set (the default), - * posts are trashed if post_type_supports('author'). Otherwise posts - * are not trashed or deleted. Default null. - * @type bool $_builtin FOR INTERNAL USE ONLY! True if this post type is a native or - * "built-in" post_type. Default false. - * @type string $_edit_link FOR INTERNAL USE ONLY! URL segment to use for edit link of - * this post type. Default 'post.php?post=%d'. + * @type string|bool $query_var Sets the query_var key for this post type. Defaults to $post_type + * key. If false, a post type cannot be loaded at + * ?{query_var}={post_slug}. If specified as a string, the query + * ?{query_var_string}={post_slug} will be valid. + * @type bool $can_export Whether to allow this post type to be exported. Default true. + * @type bool $delete_with_user Whether to delete posts of this type when deleting a user. If true, + * posts of this type belonging to the user will be moved to trash + * when then user is deleted. If false, posts of this type belonging + * to the user will *not* be trashed or deleted. If not set (the default), + * posts are trashed if post_type_supports('author'). Otherwise posts + * are not trashed or deleted. Default null. + * @type bool $_builtin FOR INTERNAL USE ONLY! True if this post type is a native or + * "built-in" post_type. Default false. + * @type string $_edit_link FOR INTERNAL USE ONLY! URL segment to use for edit link of + * this post type. Default 'post.php?post=%d'. * } * @return WP_Post_Type|WP_Error The registered post type object, or an error object. */ @@ -1234,6 +1323,7 @@ function _post_type_meta_capabilities( $capabilities = null ) { * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'. * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'. * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'. + * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'. * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'. * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'. * - `not_found_in_trash` - Label used when no items are in the trash. Default is 'No posts found in Trash' / @@ -1242,6 +1332,7 @@ function _post_type_meta_capabilities( $capabilities = null ) { * post types. Default is 'Parent Page:'. * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'. * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'. + * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'. * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'. * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' / * 'Uploaded to this page'. @@ -1267,6 +1358,7 @@ function _post_type_meta_capabilities( $capabilities = null ) { * @since 4.4.0 Added the `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`, * `items_list_navigation`, and `items_list` labels. * @since 4.6.0 Converted the `$post_type` parameter to accept a WP_Post_Type object. + * @since 4.7.0 Added the `view_items` and `attributes` labels. * * @access private * @@ -1282,12 +1374,14 @@ function get_post_type_labels( $post_type_object ) { 'edit_item' => array( __('Edit Post'), __('Edit Page') ), 'new_item' => array( __('New Post'), __('New Page') ), 'view_item' => array( __('View Post'), __('View Page') ), + 'view_items' => array( __('View Posts'), __('View Pages') ), 'search_items' => array( __('Search Posts'), __('Search Pages') ), 'not_found' => array( __('No posts found.'), __('No pages found.') ), 'not_found_in_trash' => array( __('No posts found in Trash.'), __('No pages found in Trash.') ), 'parent_item_colon' => array( null, __('Parent Page:') ), 'all_items' => array( __( 'All Posts' ), __( 'All Pages' ) ), 'archives' => array( __( 'Post Archives' ), __( 'Page Archives' ) ), + 'attributes' => array( __( 'Post Attributes' ), __( 'Page Attributes' ) ), 'insert_into_item' => array( __( 'Insert into post' ), __( 'Insert into page' ) ), 'uploaded_to_this_item' => array( __( 'Uploaded to this post' ), __( 'Uploaded to this page' ) ), 'featured_image' => array( __( 'Featured Image' ), __( 'Featured Image' ) ), @@ -2773,9 +2867,11 @@ function wp_get_post_terms( $post_id = 0, $taxonomy = 'post_tag', $args = array( * * @see get_posts() * - * @param array $args Optional. Arguments to retrieve posts. Default empty array. - * @param string $output Optional. Type of output. Accepts ARRAY_A or ''. Default ARRAY_A. - * @return array|false Associative array if $output equals ARRAY_A, array or false if no results. + * @param array $args Optional. Arguments to retrieve posts. Default empty array. + * @param string $output Optional. The required return type. One of OBJECT or ARRAY_A, which correspond to + * a WP_Post object or an associative array, respectively. Default ARRAY_A. + * @return array|false Array of recent posts, where the type of each element is determined by $output parameter. + * Empty array on failure. */ function wp_get_recent_posts( $args = array(), $output = ARRAY_A ) { @@ -2866,7 +2962,7 @@ function wp_get_recent_posts( $args = array(), $output = ARRAY_A ) { * @type array $tax_input Array of taxonomy terms keyed by their taxonomy name. Default empty. * @type array $meta_input Array of post meta values keyed by their post meta key. Default empty. * } - * @param bool $wp_error Optional. Whether to allow return of WP_Error on failure. Default false. + * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @return int|WP_Error The post ID on success. The value 0 or WP_Error on failure. */ function wp_insert_post( $postarr, $wp_error = false ) { @@ -2967,7 +3063,7 @@ function wp_insert_post( $postarr, $wp_error = false ) { } $post_status = empty( $postarr['post_status'] ) ? 'draft' : $postarr['post_status']; - if ( 'attachment' === $post_type && ! in_array( $post_status, array( 'inherit', 'private', 'trash' ) ) ) { + if ( 'attachment' === $post_type && ! in_array( $post_status, array( 'inherit', 'private', 'trash', 'auto-draft' ), true ) ) { $post_status = 'inherit'; } @@ -3032,7 +3128,7 @@ function wp_insert_post( $postarr, $wp_error = false ) { $valid_date = wp_checkdate( $mm, $jj, $aa, $post_date ); if ( ! $valid_date ) { if ( $wp_error ) { - return new WP_Error( 'invalid_date', __( 'Whoops, the provided date is invalid.' ) ); + return new WP_Error( 'invalid_date', __( 'Invalid date.' ) ); } else { return 0; } @@ -3307,12 +3403,12 @@ function wp_insert_post( $postarr, $wp_error = false ) { $post = get_post( $post_ID ); - if ( ! empty( $postarr['page_template'] ) && 'page' == $data['post_type'] ) { + if ( ! empty( $postarr['page_template'] ) ) { $post->page_template = $postarr['page_template']; $page_templates = wp_get_theme()->get_page_templates( $post ); if ( 'default' != $postarr['page_template'] && ! isset( $page_templates[ $postarr['page_template'] ] ) ) { if ( $wp_error ) { - return new WP_Error('invalid_page_template', __('The page template is invalid.')); + return new WP_Error( 'invalid_page_template', __( 'Invalid page template.' ) ); } update_post_meta( $post_ID, '_wp_page_template', 'default' ); } else { @@ -3905,19 +4001,32 @@ function wp_transition_post_status( $new_status, $old_status, $post ) { * Add a URL to those already pinged. * * @since 1.5.0 + * @since 4.7.0 $post_id can be a WP_Post object. + * @since 4.7.0 $uri can be an array of URIs. * * @global wpdb $wpdb WordPress database abstraction object. * - * @param int $post_id Post ID. - * @param string $uri Ping URI. + * @param int|WP_Post $post_id Post object or ID. + * @param string|array $uri Ping URI or array of URIs. * @return int|false How many rows were updated. */ function add_ping( $post_id, $uri ) { global $wpdb; - $pung = $wpdb->get_var( $wpdb->prepare( "SELECT pinged FROM $wpdb->posts WHERE ID = %d", $post_id )); - $pung = trim($pung); - $pung = preg_split('/\s/', $pung); - $pung[] = $uri; + + $post = get_post( $post_id ); + if ( ! $post ) { + return false; + } + + $pung = trim( $post->pinged ); + $pung = preg_split( '/\s/', $pung ); + + if ( is_array( $uri ) ) { + $pung = array_merge( $pung, $uri ); + } + else { + $pung[] = $uri; + } $new = implode("\n", $pung); /** @@ -3929,9 +4038,9 @@ function add_ping( $post_id, $uri ) { */ $new = apply_filters( 'add_ping', $new ); - // expected_slashed ($new). - $new = wp_unslash($new); - return $wpdb->update( $wpdb->posts, array( 'pinged' => $new ), array( 'ID' => $post_id ) ); + $return = $wpdb->update( $wpdb->posts, array( 'pinged' => $new ), array( 'ID' => $post->ID ) ); + clean_post_cache( $post->ID ); + return $return; } /** @@ -3973,16 +4082,19 @@ function get_enclosed( $post_id ) { * * @since 1.5.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @since 4.7.0 $post_id can be a WP_Post object. * - * @param int $post_id Post ID. + * @param int|WP_Post $post_id Post ID or object. * @return array */ function get_pung( $post_id ) { - global $wpdb; - $pung = $wpdb->get_var( $wpdb->prepare( "SELECT pinged FROM $wpdb->posts WHERE ID = %d", $post_id )); - $pung = trim($pung); - $pung = preg_split('/\s/', $pung); + $post = get_post( $post_id ); + if ( ! $post ) { + return false; + } + + $pung = trim( $post->pinged ); + $pung = preg_split( '/\s/', $pung ); /** * Filters the list of already-pinged URLs for the given post. @@ -3998,16 +4110,19 @@ function get_pung( $post_id ) { * Retrieve URLs that need to be pinged. * * @since 1.5.0 + * @since 4.7.0 $post_id can be a WP_Post object. * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param int $post_id Post ID + * @param int|WP_Post $post_id Post Object or ID * @return array */ function get_to_ping( $post_id ) { - global $wpdb; - $to_ping = $wpdb->get_var( $wpdb->prepare( "SELECT to_ping FROM $wpdb->posts WHERE ID = %d", $post_id )); - $to_ping = sanitize_trackback_urls( $to_ping ); + $post = get_post( $post_id ); + + if ( ! $post ) { + return false; + } + + $to_ping = sanitize_trackback_urls( $post->to_ping ); $to_ping = preg_split('/\s/', $to_ping, -1, PREG_SPLIT_NO_EMPTY); /** @@ -4082,11 +4197,11 @@ function get_all_page_ids() { * @deprecated 3.5.0 Use get_post() * * @param mixed $page Page object or page ID. Passed by reference. - * @param string $output Optional. What to output. Accepts OBJECT, ARRAY_A, or ARRAY_N. - * Default OBJECT. + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * a WP_Post object, an associative array, or a numeric array, respectively. Default OBJECT. * @param string $filter Optional. How the return value should be filtered. Accepts 'raw', * 'edit', 'db', 'display'. Default 'raw'. - * @return WP_Post|array|null WP_Post on success or null on failure. + * @return WP_Post|array|null WP_Post (or array) on success, or null on failure. */ function get_page( $page, $output = OBJECT, $filter = 'raw') { return get_post( $page, $output, $filter ); @@ -4100,19 +4215,15 @@ function get_page( $page, $output = OBJECT, $filter = 'raw') { * @global wpdb $wpdb WordPress database abstraction object. * * @param string $page_path Page path. - * @param string $output Optional. Output type. Accepts OBJECT, ARRAY_N, or ARRAY_A. - * Default OBJECT. + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * a WP_Post object, an associative array, or a numeric array, respectively. Default OBJECT. * @param string|array $post_type Optional. Post type or array of post types. Default 'page'. - * @return WP_Post|array|void WP_Post on success. + * @return WP_Post|array|null WP_Post (or array) on success, or null on failure. */ function get_page_by_path( $page_path, $output = OBJECT, $post_type = 'page' ) { global $wpdb; - $last_changed = wp_cache_get( 'last_changed', 'posts' ); - if ( false === $last_changed ) { - $last_changed = microtime(); - wp_cache_set( 'last_changed', $last_changed, 'posts' ); - } + $last_changed = wp_cache_get_last_changed( 'posts' ); $hash = md5( $page_path . serialize( $post_type ) ); $cache_key = "get_page_by_path:$hash:$last_changed"; @@ -4196,10 +4307,10 @@ function get_page_by_path( $page_path, $output = OBJECT, $post_type = 'page' ) { * @global wpdb $wpdb WordPress database abstraction object. * * @param string $page_title Page title - * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A. - * Default OBJECT. + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * a WP_Post object, an associative array, or a numeric array, respectively. Default OBJECT. * @param string|array $post_type Optional. Post type or array of post types. Default 'page'. - * @return WP_Post|array|void WP_Post on success or null on failure + * @return WP_Post|array|null WP_Post (or array) on success, or null on failure. */ function get_page_by_title( $page_title, $output = OBJECT, $post_type = 'page' ) { global $wpdb; @@ -4396,7 +4507,7 @@ function get_page_uri( $page = 0 ) { * @type int $offset The number of pages to skip before returning. Requires `$number`. * Default 0. * @type string $post_type The post type to query. Default 'page'. - * @type string $post_status A comma-separated list of post status types to include. + * @type string|array $post_status A comma-separated list or array of post statuses to include. * Default 'publish'. * } * @return array|false List of pages matching defaults or `$args`. @@ -4405,13 +4516,21 @@ function get_pages( $args = array() ) { global $wpdb; $defaults = array( - 'child_of' => 0, 'sort_order' => 'ASC', - 'sort_column' => 'post_title', 'hierarchical' => 1, - 'exclude' => array(), 'include' => array(), - 'meta_key' => '', 'meta_value' => '', - 'authors' => '', 'parent' => -1, 'exclude_tree' => array(), - 'number' => '', 'offset' => 0, - 'post_type' => 'page', 'post_status' => 'publish', + 'child_of' => 0, + 'sort_order' => 'ASC', + 'sort_column' => 'post_title', + 'hierarchical' => 1, + 'exclude' => array(), + 'include' => array(), + 'meta_key' => '', + 'meta_value' => '', + 'authors' => '', + 'parent' => -1, + 'exclude_tree' => array(), + 'number' => '', + 'offset' => 0, + 'post_type' => 'page', + 'post_status' => 'publish', ); $r = wp_parse_args( $args, $defaults ); @@ -4446,11 +4565,7 @@ function get_pages( $args = array() ) { // $args can be whatever, only use the args defined in defaults to compute the key. $key = md5( serialize( wp_array_slice_assoc( $r, array_keys( $defaults ) ) ) ); - $last_changed = wp_cache_get( 'last_changed', 'posts' ); - if ( ! $last_changed ) { - $last_changed = microtime(); - wp_cache_set( 'last_changed', $last_changed, 'posts' ); - } + $last_changed = wp_cache_get_last_changed( 'posts' ); $cache_key = "get_pages:$key:$last_changed"; if ( $cache = wp_cache_get( $cache_key, 'posts' ) ) { @@ -4694,15 +4809,17 @@ function is_local_attachment($url) { * setting the value for the 'comment_status' key. * * @since 2.0.0 + * @since 4.7.0 Added the `$wp_error` parameter to allow a WP_Error to be returned on failure. * * @see wp_insert_post() * - * @param string|array $args Arguments for inserting an attachment. - * @param string $file Optional. Filename. - * @param int $parent Optional. Parent post ID. - * @return int Attachment ID. + * @param string|array $args Arguments for inserting an attachment. + * @param string $file Optional. Filename. + * @param int $parent Optional. Parent post ID. + * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. + * @return int|WP_Error The attachment ID on success. The value 0 or WP_Error on failure. */ -function wp_insert_attachment( $args, $file = false, $parent = 0 ) { +function wp_insert_attachment( $args, $file = false, $parent = 0, $wp_error = false ) { $defaults = array( 'file' => $file, 'post_parent' => 0 @@ -4716,7 +4833,7 @@ function wp_insert_attachment( $args, $file = false, $parent = 0 ) { $data['post_type'] = 'attachment'; - return wp_insert_post( $data ); + return wp_insert_post( $data, $wp_error ); } /** @@ -5505,35 +5622,38 @@ function _get_last_post_time( $timezone, $field, $post_type = 'any' ) { } $date = wp_cache_get( $key, 'timeinfo' ); - - if ( ! $date ) { - if ( 'any' === $post_type ) { - $post_types = get_post_types( array( 'public' => true ) ); - array_walk( $post_types, array( $wpdb, 'escape_by_ref' ) ); - $post_types = "'" . implode( "', '", $post_types ) . "'"; - } else { - $post_types = "'" . sanitize_key( $post_type ) . "'"; - } - - switch ( $timezone ) { - case 'gmt': - $date = $wpdb->get_var("SELECT post_{$field}_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt DESC LIMIT 1"); - break; - case 'blog': - $date = $wpdb->get_var("SELECT post_{$field} FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt DESC LIMIT 1"); - break; - case 'server': - $add_seconds_server = date( 'Z' ); - $date = $wpdb->get_var("SELECT DATE_ADD(post_{$field}_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt DESC LIMIT 1"); - break; - } - - if ( $date ) { - wp_cache_set( $key, $date, 'timeinfo' ); - } + if ( false !== $date ) { + return $date; } - return $date; + if ( 'any' === $post_type ) { + $post_types = get_post_types( array( 'public' => true ) ); + array_walk( $post_types, array( $wpdb, 'escape_by_ref' ) ); + $post_types = "'" . implode( "', '", $post_types ) . "'"; + } else { + $post_types = "'" . sanitize_key( $post_type ) . "'"; + } + + switch ( $timezone ) { + case 'gmt': + $date = $wpdb->get_var("SELECT post_{$field}_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt DESC LIMIT 1"); + break; + case 'blog': + $date = $wpdb->get_var("SELECT post_{$field} FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt DESC LIMIT 1"); + break; + case 'server': + $add_seconds_server = date( 'Z' ); + $date = $wpdb->get_var("SELECT DATE_ADD(post_{$field}_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt DESC LIMIT 1"); + break; + } + + if ( $date ) { + wp_cache_set( $key, $date, 'timeinfo' ); + + return $date; + } + + return false; } /** diff --git a/wp/wp-includes/query.php b/wp/wp-includes/query.php index c5c1ae65..744610f4 100644 --- a/wp/wp-includes/query.php +++ b/wp/wp-includes/query.php @@ -837,4089 +837,6 @@ function the_comment() { return $wp_query->the_comment(); } -/* - * WP_Query - */ - -/** - * The WordPress Query class. - * - * @link https://codex.wordpress.org/Function_Reference/WP_Query Codex page. - * - * @since 1.5.0 - * @since 4.5.0 Removed the `$comments_popup` property. - */ -class WP_Query { - - /** - * Query vars set by the user - * - * @since 1.5.0 - * @access public - * @var array - */ - public $query; - - /** - * Query vars, after parsing - * - * @since 1.5.0 - * @access public - * @var array - */ - public $query_vars = array(); - - /** - * Taxonomy query, as passed to get_tax_sql() - * - * @since 3.1.0 - * @access public - * @var object WP_Tax_Query - */ - public $tax_query; - - /** - * Metadata query container - * - * @since 3.2.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; - - /** - * Holds the data for a single object that is queried. - * - * Holds the contents of a post, page, category, attachment. - * - * @since 1.5.0 - * @access public - * @var object|array - */ - public $queried_object; - - /** - * The ID of the queried object. - * - * @since 1.5.0 - * @access public - * @var int - */ - public $queried_object_id; - - /** - * Get post database query. - * - * @since 2.0.1 - * @access public - * @var string - */ - public $request; - - /** - * List of posts. - * - * @since 1.5.0 - * @access public - * @var array - */ - public $posts; - - /** - * The amount of posts for the current query. - * - * @since 1.5.0 - * @access public - * @var int - */ - public $post_count = 0; - - /** - * Index of the current item in the loop. - * - * @since 1.5.0 - * @access public - * @var int - */ - public $current_post = -1; - - /** - * Whether the loop has started and the caller is in the loop. - * - * @since 2.0.0 - * @access public - * @var bool - */ - public $in_the_loop = false; - - /** - * The current post. - * - * @since 1.5.0 - * @access public - * @var WP_Post - */ - public $post; - - /** - * The list of comments for current post. - * - * @since 2.2.0 - * @access public - * @var array - */ - public $comments; - - /** - * The amount of comments for the posts. - * - * @since 2.2.0 - * @access public - * @var int - */ - public $comment_count = 0; - - /** - * The index of the comment in the comment loop. - * - * @since 2.2.0 - * @access public - * @var int - */ - public $current_comment = -1; - - /** - * Current comment ID. - * - * @since 2.2.0 - * @access public - * @var int - */ - public $comment; - - /** - * The amount of found posts for the current query. - * - * If limit clause was not used, equals $post_count. - * - * @since 2.1.0 - * @access public - * @var int - */ - public $found_posts = 0; - - /** - * The amount of pages. - * - * @since 2.1.0 - * @access public - * @var int - */ - public $max_num_pages = 0; - - /** - * The amount of comment pages. - * - * @since 2.7.0 - * @access public - * @var int - */ - public $max_num_comment_pages = 0; - - /** - * Set if query is single post. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_single = false; - - /** - * Set if query is preview of blog. - * - * @since 2.0.0 - * @access public - * @var bool - */ - public $is_preview = false; - - /** - * Set if query returns a page. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_page = false; - - /** - * Set if query is an archive list. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_archive = false; - - /** - * Set if query is part of a date. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_date = false; - - /** - * Set if query contains a year. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_year = false; - - /** - * Set if query contains a month. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_month = false; - - /** - * Set if query contains a day. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_day = false; - - /** - * Set if query contains time. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_time = false; - - /** - * Set if query contains an author. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_author = false; - - /** - * Set if query contains category. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_category = false; - - /** - * Set if query contains tag. - * - * @since 2.3.0 - * @access public - * @var bool - */ - public $is_tag = false; - - /** - * Set if query contains taxonomy. - * - * @since 2.5.0 - * @access public - * @var bool - */ - public $is_tax = false; - - /** - * Set if query was part of a search result. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_search = false; - - /** - * Set if query is feed display. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_feed = false; - - /** - * Set if query is comment feed display. - * - * @since 2.2.0 - * @access public - * @var bool - */ - public $is_comment_feed = false; - - /** - * Set if query is trackback. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_trackback = false; - - /** - * Set if query is blog homepage. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_home = false; - - /** - * Set if query couldn't found anything. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_404 = false; - - /** - * Set if query is embed. - * - * @since 4.4.0 - * @access public - * @var bool - */ - public $is_embed = false; - - /** - * Set if query is paged - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_paged = false; - - /** - * Set if query is part of administration page. - * - * @since 1.5.0 - * @access public - * @var bool - */ - public $is_admin = false; - - /** - * Set if query is an attachment. - * - * @since 2.0.0 - * @access public - * @var bool - */ - public $is_attachment = false; - - /** - * Set if is single, is a page, or is an attachment. - * - * @since 2.1.0 - * @access public - * @var bool - */ - public $is_singular = false; - - /** - * Set if query is for robots. - * - * @since 2.1.0 - * @access public - * @var bool - */ - public $is_robots = false; - - /** - * Set if query contains posts. - * - * Basically, the homepage if the option isn't set for the static homepage. - * - * @since 2.1.0 - * @access public - * @var bool - */ - public $is_posts_page = false; - - /** - * Set if query is for a post type archive. - * - * @since 3.1.0 - * @access public - * @var bool - */ - public $is_post_type_archive = false; - - /** - * Stores the ->query_vars state like md5(serialize( $this->query_vars ) ) so we know - * whether we have to re-parse because something has changed - * - * @since 3.1.0 - * @access private - * @var bool|string - */ - private $query_vars_hash = false; - - /** - * Whether query vars have changed since the initial parse_query() call. Used to catch modifications to query vars made - * via pre_get_posts hooks. - * - * @since 3.1.1 - * @access private - */ - private $query_vars_changed = true; - - /** - * Set if post thumbnails are cached - * - * @since 3.2.0 - * @access public - * @var bool - */ - public $thumbnails_cached = false; - - /** - * Cached list of search stopwords. - * - * @since 3.7.0 - * @var array - */ - private $stopwords; - - private $compat_fields = array( 'query_vars_hash', 'query_vars_changed' ); - - private $compat_methods = array( 'init_query_flags', 'parse_tax_query' ); - - /** - * Resets query flags to false. - * - * The query flags are what page info WordPress was able to figure out. - * - * @since 2.0.0 - * @access private - */ - private function init_query_flags() { - $this->is_single = false; - $this->is_preview = false; - $this->is_page = false; - $this->is_archive = false; - $this->is_date = false; - $this->is_year = false; - $this->is_month = false; - $this->is_day = false; - $this->is_time = false; - $this->is_author = false; - $this->is_category = false; - $this->is_tag = false; - $this->is_tax = false; - $this->is_search = false; - $this->is_feed = false; - $this->is_comment_feed = false; - $this->is_trackback = false; - $this->is_home = false; - $this->is_404 = false; - $this->is_paged = false; - $this->is_admin = false; - $this->is_attachment = false; - $this->is_singular = false; - $this->is_robots = false; - $this->is_posts_page = false; - $this->is_post_type_archive = false; - } - - /** - * Initiates object properties and sets default values. - * - * @since 1.5.0 - * @access public - */ - public function init() { - unset($this->posts); - unset($this->query); - $this->query_vars = array(); - unset($this->queried_object); - unset($this->queried_object_id); - $this->post_count = 0; - $this->current_post = -1; - $this->in_the_loop = false; - unset( $this->request ); - unset( $this->post ); - unset( $this->comments ); - unset( $this->comment ); - $this->comment_count = 0; - $this->current_comment = -1; - $this->found_posts = 0; - $this->max_num_pages = 0; - $this->max_num_comment_pages = 0; - - $this->init_query_flags(); - } - - /** - * Reparse the query vars. - * - * @since 1.5.0 - * @access public - */ - public function parse_query_vars() { - $this->parse_query(); - } - - /** - * Fills in the query variables, which do not exist within the parameter. - * - * @since 2.1.0 - * @since 4.4.0 Removed the `comments_popup` public query variable. - * @access public - * - * @param array $array Defined query variables. - * @return array Complete query variables with undefined ones filled in empty. - */ - public function fill_query_vars($array) { - $keys = array( - 'error' - , 'm' - , 'p' - , 'post_parent' - , 'subpost' - , 'subpost_id' - , 'attachment' - , 'attachment_id' - , 'name' - , 'static' - , 'pagename' - , 'page_id' - , 'second' - , 'minute' - , 'hour' - , 'day' - , 'monthnum' - , 'year' - , 'w' - , 'category_name' - , 'tag' - , 'cat' - , 'tag_id' - , 'author' - , 'author_name' - , 'feed' - , 'tb' - , 'paged' - , 'meta_key' - , 'meta_value' - , 'preview' - , 's' - , 'sentence' - , 'title' - , 'fields' - , 'menu_order' - , 'embed' - ); - - foreach ( $keys as $key ) { - if ( !isset($array[$key]) ) - $array[$key] = ''; - } - - $array_keys = array( 'category__in', 'category__not_in', 'category__and', 'post__in', 'post__not_in', 'post_name__in', - 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'post_parent__in', 'post_parent__not_in', - 'author__in', 'author__not_in' ); - - foreach ( $array_keys as $key ) { - if ( !isset($array[$key]) ) - $array[$key] = array(); - } - return $array; - } - - /** - * Parse a query string and set query type booleans. - * - * @since 1.5.0 - * @since 4.2.0 Introduced the ability to order by specific clauses of a `$meta_query`, by passing the clause's - * array key to `$orderby`. - * @since 4.4.0 Introduced `$post_name__in` and `$title` parameters. `$s` was updated to support excluded - * search terms, by prepending a hyphen. - * @since 4.5.0 Removed the `$comments_popup` parameter. - * Introduced the `$comment_status` and `$ping_status` parameters. - * Introduced `RAND(x)` syntax for `$orderby`, which allows an integer seed value to random sorts. - * @since 4.6.0 Added 'post_name__in' support for `$orderby`. Introduced the `$lazy_load_term_meta` argument. - * @access public - * - * @param string|array $query { - * Optional. Array or string of Query parameters. - * - * @type int $attachment_id Attachment post ID. Used for 'attachment' post_type. - * @type int|string $author Author ID, or comma-separated list of IDs. - * @type string $author_name User 'user_nicename'. - * @type array $author__in An array of author IDs to query from. - * @type array $author__not_in An array of author IDs not to query from. - * @type bool $cache_results Whether to cache post information. Default true. - * @type int|string $cat Category ID or comma-separated list of IDs (this or any children). - * @type array $category__and An array of category IDs (AND in). - * @type array $category__in An array of category IDs (OR in, no children). - * @type array $category__not_in An array of category IDs (NOT in). - * @type string $category_name Use category slug (not name, this or any children). - * @type string $comment_status Comment status. - * @type int $comments_per_page The number of comments to return per page. - * Default 'comments_per_page' option. - * @type array $date_query An associative array of WP_Date_Query arguments. - * See WP_Date_Query::__construct(). - * @type int $day Day of the month. Default empty. Accepts numbers 1-31. - * @type bool $exact Whether to search by exact keyword. Default false. - * @type string|array $fields Which fields to return. Single field or all fields (string), - * or array of fields. 'id=>parent' uses 'id' and 'post_parent'. - * Default all fields. Accepts 'ids', 'id=>parent'. - * @type int $hour Hour of the day. Default empty. Accepts numbers 0-23. - * @type int|bool $ignore_sticky_posts Whether to ignore sticky posts or not. Setting this to false - * excludes stickies from 'post__in'. Accepts 1|true, 0|false. - * Default 0|false. - * @type int $m Combination YearMonth. Accepts any four-digit year and month - * numbers 1-12. Default empty. - * @type string $meta_compare Comparison operator to test the 'meta_value'. - * @type string $meta_key Custom field key. - * @type array $meta_query An associative array of WP_Meta_Query arguments. See WP_Meta_Query. - * @type string $meta_value Custom field value. - * @type int $meta_value_num Custom field value number. - * @type int $menu_order The menu order of the posts. - * @type int $monthnum The two-digit month. Default empty. Accepts numbers 1-12. - * @type string $name Post slug. - * @type bool $nopaging Show all posts (true) or paginate (false). Default false. - * @type bool $no_found_rows Whether to skip counting the total rows found. Enabling can improve - * performance. Default false. - * @type int $offset The number of posts to offset before retrieval. - * @type string $order Designates ascending or descending order of posts. Default 'DESC'. - * Accepts 'ASC', 'DESC'. - * @type string|array $orderby Sort retrieved posts by parameter. One or more options may be - * passed. To use 'meta_value', or 'meta_value_num', - * 'meta_key=keyname' must be also be defined. To sort by a - * specific `$meta_query` clause, use that clause's array key. - * Default 'date'. Accepts 'none', 'name', 'author', 'date', - * 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', - * 'RAND(x)' (where 'x' is an integer seed value), - * 'comment_count', 'meta_value', 'meta_value_num', 'post__in', - * 'post_name__in', 'post_parent__in', and the array keys - * of `$meta_query`. - * @type int $p Post ID. - * @type int $page Show the number of posts that would show up on page X of a - * static front page. - * @type int $paged The number of the current page. - * @type int $page_id Page ID. - * @type string $pagename Page slug. - * @type string $perm Show posts if user has the appropriate capability. - * @type string $ping_status Ping status. - * @type array $post__in An array of post IDs to retrieve, sticky posts will be included - * @type string $post_mime_type The mime type of the post. Used for 'attachment' post_type. - * @type array $post__not_in An array of post IDs not to retrieve. Note: a string of comma- - * separated IDs will NOT work. - * @type int $post_parent Page ID to retrieve child pages for. Use 0 to only retrieve - * top-level pages. - * @type array $post_parent__in An array containing parent page IDs to query child pages from. - * @type array $post_parent__not_in An array containing parent page IDs not to query child pages from. - * @type string|array $post_type A post type slug (string) or array of post type slugs. - * Default 'any' if using 'tax_query'. - * @type string|array $post_status A post status (string) or array of post statuses. - * @type int $posts_per_page The number of posts to query for. Use -1 to request all posts. - * @type int $posts_per_archive_page The number of posts to query for by archive page. Overrides - * 'posts_per_page' when is_archive(), or is_search() are true. - * @type array $post_name__in An array of post slugs that results must match. - * @type string $s Search keyword(s). Prepending a term with a hyphen will - * exclude posts matching that term. Eg, 'pillow -sofa' will - * return posts containing 'pillow' but not 'sofa'. - * @type int $second Second of the minute. Default empty. Accepts numbers 0-60. - * @type bool $sentence Whether to search by phrase. Default false. - * @type bool $suppress_filters Whether to suppress filters. Default false. - * @type string $tag Tag slug. Comma-separated (either), Plus-separated (all). - * @type array $tag__and An array of tag ids (AND in). - * @type array $tag__in An array of tag ids (OR in). - * @type array $tag__not_in An array of tag ids (NOT in). - * @type int $tag_id Tag id or comma-separated list of IDs. - * @type array $tag_slug__and An array of tag slugs (AND in). - * @type array $tag_slug__in An array of tag slugs (OR in). unless 'ignore_sticky_posts' is - * true. Note: a string of comma-separated IDs will NOT work. - * @type array $tax_query An associative array of WP_Tax_Query arguments. - * See WP_Tax_Query->queries. - * @type string $title Post title. - * @type bool $update_post_meta_cache Whether to update the post meta cache. Default true. - * @type bool $update_post_term_cache Whether to update the post term cache. Default true. - * @type bool $lazy_load_term_meta Whether to lazy-load term meta. Setting to false will - * disable cache priming for term meta, so that each - * get_term_meta() call will hit the database. - * Defaults to the value of `$update_post_term_cache`. - * @type int $w The week number of the year. Default empty. Accepts numbers 0-53. - * @type int $year The four-digit year. Default empty. Accepts any four-digit year. - * } - */ - public function parse_query( $query = '' ) { - if ( ! empty( $query ) ) { - $this->init(); - $this->query = $this->query_vars = wp_parse_args( $query ); - } elseif ( ! isset( $this->query ) ) { - $this->query = $this->query_vars; - } - - $this->query_vars = $this->fill_query_vars($this->query_vars); - $qv = &$this->query_vars; - $this->query_vars_changed = true; - - if ( ! empty($qv['robots']) ) - $this->is_robots = true; - - $qv['p'] = absint($qv['p']); - $qv['page_id'] = absint($qv['page_id']); - $qv['year'] = absint($qv['year']); - $qv['monthnum'] = absint($qv['monthnum']); - $qv['day'] = absint($qv['day']); - $qv['w'] = absint($qv['w']); - $qv['m'] = is_scalar( $qv['m'] ) ? preg_replace( '|[^0-9]|', '', $qv['m'] ) : ''; - $qv['paged'] = absint($qv['paged']); - $qv['cat'] = preg_replace( '|[^0-9,-]|', '', $qv['cat'] ); // comma separated list of positive or negative integers - $qv['author'] = preg_replace( '|[^0-9,-]|', '', $qv['author'] ); // comma separated list of positive or negative integers - $qv['pagename'] = trim( $qv['pagename'] ); - $qv['name'] = trim( $qv['name'] ); - $qv['title'] = trim( $qv['title'] ); - if ( '' !== $qv['hour'] ) $qv['hour'] = absint($qv['hour']); - if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']); - if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']); - if ( '' !== $qv['menu_order'] ) $qv['menu_order'] = absint($qv['menu_order']); - - // Fairly insane upper bound for search string lengths. - if ( ! is_scalar( $qv['s'] ) || ( ! empty( $qv['s'] ) && strlen( $qv['s'] ) > 1600 ) ) { - $qv['s'] = ''; - } - - // Compat. Map subpost to attachment. - if ( '' != $qv['subpost'] ) - $qv['attachment'] = $qv['subpost']; - if ( '' != $qv['subpost_id'] ) - $qv['attachment_id'] = $qv['subpost_id']; - - $qv['attachment_id'] = absint($qv['attachment_id']); - - if ( ('' != $qv['attachment']) || !empty($qv['attachment_id']) ) { - $this->is_single = true; - $this->is_attachment = true; - } elseif ( '' != $qv['name'] ) { - $this->is_single = true; - } elseif ( $qv['p'] ) { - $this->is_single = true; - } elseif ( ('' !== $qv['hour']) && ('' !== $qv['minute']) &&('' !== $qv['second']) && ('' != $qv['year']) && ('' != $qv['monthnum']) && ('' != $qv['day']) ) { - // If year, month, day, hour, minute, and second are set, a single - // post is being queried. - $this->is_single = true; - } elseif ( '' != $qv['static'] || '' != $qv['pagename'] || !empty($qv['page_id']) ) { - $this->is_page = true; - $this->is_single = false; - } else { - // Look for archive queries. Dates, categories, authors, search, post type archives. - - if ( isset( $this->query['s'] ) ) { - $this->is_search = true; - } - - if ( '' !== $qv['second'] ) { - $this->is_time = true; - $this->is_date = true; - } - - if ( '' !== $qv['minute'] ) { - $this->is_time = true; - $this->is_date = true; - } - - if ( '' !== $qv['hour'] ) { - $this->is_time = true; - $this->is_date = true; - } - - if ( $qv['day'] ) { - if ( ! $this->is_date ) { - $date = sprintf( '%04d-%02d-%02d', $qv['year'], $qv['monthnum'], $qv['day'] ); - if ( $qv['monthnum'] && $qv['year'] && ! wp_checkdate( $qv['monthnum'], $qv['day'], $qv['year'], $date ) ) { - $qv['error'] = '404'; - } else { - $this->is_day = true; - $this->is_date = true; - } - } - } - - if ( $qv['monthnum'] ) { - if ( ! $this->is_date ) { - if ( 12 < $qv['monthnum'] ) { - $qv['error'] = '404'; - } else { - $this->is_month = true; - $this->is_date = true; - } - } - } - - if ( $qv['year'] ) { - if ( ! $this->is_date ) { - $this->is_year = true; - $this->is_date = true; - } - } - - if ( $qv['m'] ) { - $this->is_date = true; - if ( strlen($qv['m']) > 9 ) { - $this->is_time = true; - } elseif ( strlen( $qv['m'] ) > 7 ) { - $this->is_day = true; - } elseif ( strlen( $qv['m'] ) > 5 ) { - $this->is_month = true; - } else { - $this->is_year = true; - } - } - - if ( '' != $qv['w'] ) { - $this->is_date = true; - } - - $this->query_vars_hash = false; - $this->parse_tax_query( $qv ); - - foreach ( $this->tax_query->queries as $tax_query ) { - if ( ! is_array( $tax_query ) ) { - continue; - } - - if ( isset( $tax_query['operator'] ) && 'NOT IN' != $tax_query['operator'] ) { - switch ( $tax_query['taxonomy'] ) { - case 'category': - $this->is_category = true; - break; - case 'post_tag': - $this->is_tag = true; - break; - default: - $this->is_tax = true; - } - } - } - unset( $tax_query ); - - if ( empty($qv['author']) || ($qv['author'] == '0') ) { - $this->is_author = false; - } else { - $this->is_author = true; - } - - if ( '' != $qv['author_name'] ) - $this->is_author = true; - - if ( !empty( $qv['post_type'] ) && ! is_array( $qv['post_type'] ) ) { - $post_type_obj = get_post_type_object( $qv['post_type'] ); - if ( ! empty( $post_type_obj->has_archive ) ) - $this->is_post_type_archive = true; - } - - if ( $this->is_post_type_archive || $this->is_date || $this->is_author || $this->is_category || $this->is_tag || $this->is_tax ) - $this->is_archive = true; - } - - if ( '' != $qv['feed'] ) - $this->is_feed = true; - - if ( '' != $qv['embed'] ) { - $this->is_embed = true; - } - - if ( '' != $qv['tb'] ) - $this->is_trackback = true; - - if ( '' != $qv['paged'] && ( intval($qv['paged']) > 1 ) ) - $this->is_paged = true; - - // if we're previewing inside the write screen - if ( '' != $qv['preview'] ) - $this->is_preview = true; - - if ( is_admin() ) - $this->is_admin = true; - - if ( false !== strpos($qv['feed'], 'comments-') ) { - $qv['feed'] = str_replace('comments-', '', $qv['feed']); - $qv['withcomments'] = 1; - } - - $this->is_singular = $this->is_single || $this->is_page || $this->is_attachment; - - if ( $this->is_feed && ( !empty($qv['withcomments']) || ( empty($qv['withoutcomments']) && $this->is_singular ) ) ) - $this->is_comment_feed = true; - - if ( !( $this->is_singular || $this->is_archive || $this->is_search || $this->is_feed || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || $this->is_trackback || $this->is_404 || $this->is_admin || $this->is_robots ) ) - $this->is_home = true; - - // Correct is_* for page_on_front and page_for_posts - if ( $this->is_home && 'page' == get_option('show_on_front') && get_option('page_on_front') ) { - $_query = wp_parse_args($this->query); - // pagename can be set and empty depending on matched rewrite rules. Ignore an empty pagename. - if ( isset($_query['pagename']) && '' == $_query['pagename'] ) - unset($_query['pagename']); - - unset( $_query['embed'] ); - - if ( empty($_query) || !array_diff( array_keys($_query), array('preview', 'page', 'paged', 'cpage') ) ) { - $this->is_page = true; - $this->is_home = false; - $qv['page_id'] = get_option('page_on_front'); - // Correct for page_on_front - if ( !empty($qv['paged']) ) { - $qv['page'] = $qv['paged']; - unset($qv['paged']); - } - } - } - - if ( '' != $qv['pagename'] ) { - $this->queried_object = get_page_by_path( $qv['pagename'] ); - - if ( $this->queried_object && 'attachment' == $this->queried_object->post_type ) { - if ( preg_match( "/^[^%]*%(?:postname)%/", get_option( 'permalink_structure' ) ) ) { - // See if we also have a post with the same slug - $post = get_page_by_path( $qv['pagename'], OBJECT, 'post' ); - if ( $post ) { - $this->queried_object = $post; - $this->is_page = false; - $this->is_single = true; - } - } - } - - if ( ! empty( $this->queried_object ) ) { - $this->queried_object_id = (int) $this->queried_object->ID; - } else { - unset( $this->queried_object ); - } - - if ( 'page' == get_option('show_on_front') && isset($this->queried_object_id) && $this->queried_object_id == get_option('page_for_posts') ) { - $this->is_page = false; - $this->is_home = true; - $this->is_posts_page = true; - } - } - - if ( $qv['page_id'] ) { - if ( 'page' == get_option('show_on_front') && $qv['page_id'] == get_option('page_for_posts') ) { - $this->is_page = false; - $this->is_home = true; - $this->is_posts_page = true; - } - } - - if ( !empty($qv['post_type']) ) { - if ( is_array($qv['post_type']) ) - $qv['post_type'] = array_map('sanitize_key', $qv['post_type']); - else - $qv['post_type'] = sanitize_key($qv['post_type']); - } - - if ( ! empty( $qv['post_status'] ) ) { - if ( is_array( $qv['post_status'] ) ) - $qv['post_status'] = array_map('sanitize_key', $qv['post_status']); - else - $qv['post_status'] = preg_replace('|[^a-z0-9_,-]|', '', $qv['post_status']); - } - - if ( $this->is_posts_page && ( ! isset($qv['withcomments']) || ! $qv['withcomments'] ) ) - $this->is_comment_feed = false; - - $this->is_singular = $this->is_single || $this->is_page || $this->is_attachment; - // Done correcting is_* for page_on_front and page_for_posts - - if ( '404' == $qv['error'] ) - $this->set_404(); - - $this->is_embed = $this->is_embed && ( $this->is_singular || $this->is_404 ); - - $this->query_vars_hash = md5( serialize( $this->query_vars ) ); - $this->query_vars_changed = false; - - /** - * Fires after the main query vars have been parsed. - * - * @since 1.5.0 - * - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - do_action_ref_array( 'parse_query', array( &$this ) ); - } - - /** - * Parses various taxonomy related query vars. - * - * For BC, this method is not marked as protected. See [28987]. - * - * @access protected - * @since 3.1.0 - * - * @param array $q The query variables. Passed by reference. - */ - public function parse_tax_query( &$q ) { - if ( ! empty( $q['tax_query'] ) && is_array( $q['tax_query'] ) ) { - $tax_query = $q['tax_query']; - } else { - $tax_query = array(); - } - - if ( !empty($q['taxonomy']) && !empty($q['term']) ) { - $tax_query[] = array( - 'taxonomy' => $q['taxonomy'], - 'terms' => array( $q['term'] ), - 'field' => 'slug', - ); - } - - foreach ( get_taxonomies( array() , 'objects' ) as $taxonomy => $t ) { - if ( 'post_tag' == $taxonomy ) - continue; // Handled further down in the $q['tag'] block - - if ( $t->query_var && !empty( $q[$t->query_var] ) ) { - $tax_query_defaults = array( - 'taxonomy' => $taxonomy, - 'field' => 'slug', - ); - - if ( isset( $t->rewrite['hierarchical'] ) && $t->rewrite['hierarchical'] ) { - $q[$t->query_var] = wp_basename( $q[$t->query_var] ); - } - - $term = $q[$t->query_var]; - - if ( is_array( $term ) ) { - $term = implode( ',', $term ); - } - - if ( strpos($term, '+') !== false ) { - $terms = preg_split( '/[+]+/', $term ); - foreach ( $terms as $term ) { - $tax_query[] = array_merge( $tax_query_defaults, array( - 'terms' => array( $term ) - ) ); - } - } else { - $tax_query[] = array_merge( $tax_query_defaults, array( - 'terms' => preg_split( '/[,]+/', $term ) - ) ); - } - } - } - - // If querystring 'cat' is an array, implode it. - if ( is_array( $q['cat'] ) ) { - $q['cat'] = implode( ',', $q['cat'] ); - } - - // Category stuff - if ( ! empty( $q['cat'] ) && ! $this->is_singular ) { - $cat_in = $cat_not_in = array(); - - $cat_array = preg_split( '/[,\s]+/', urldecode( $q['cat'] ) ); - $cat_array = array_map( 'intval', $cat_array ); - $q['cat'] = implode( ',', $cat_array ); - - foreach ( $cat_array as $cat ) { - if ( $cat > 0 ) - $cat_in[] = $cat; - elseif ( $cat < 0 ) - $cat_not_in[] = abs( $cat ); - } - - if ( ! empty( $cat_in ) ) { - $tax_query[] = array( - 'taxonomy' => 'category', - 'terms' => $cat_in, - 'field' => 'term_id', - 'include_children' => true - ); - } - - if ( ! empty( $cat_not_in ) ) { - $tax_query[] = array( - 'taxonomy' => 'category', - 'terms' => $cat_not_in, - 'field' => 'term_id', - 'operator' => 'NOT IN', - 'include_children' => true - ); - } - unset( $cat_array, $cat_in, $cat_not_in ); - } - - if ( ! empty( $q['category__and'] ) && 1 === count( (array) $q['category__and'] ) ) { - $q['category__and'] = (array) $q['category__and']; - if ( ! isset( $q['category__in'] ) ) - $q['category__in'] = array(); - $q['category__in'][] = absint( reset( $q['category__and'] ) ); - unset( $q['category__and'] ); - } - - if ( ! empty( $q['category__in'] ) ) { - $q['category__in'] = array_map( 'absint', array_unique( (array) $q['category__in'] ) ); - $tax_query[] = array( - 'taxonomy' => 'category', - 'terms' => $q['category__in'], - 'field' => 'term_id', - 'include_children' => false - ); - } - - if ( ! empty($q['category__not_in']) ) { - $q['category__not_in'] = array_map( 'absint', array_unique( (array) $q['category__not_in'] ) ); - $tax_query[] = array( - 'taxonomy' => 'category', - 'terms' => $q['category__not_in'], - 'operator' => 'NOT IN', - 'include_children' => false - ); - } - - if ( ! empty($q['category__and']) ) { - $q['category__and'] = array_map( 'absint', array_unique( (array) $q['category__and'] ) ); - $tax_query[] = array( - 'taxonomy' => 'category', - 'terms' => $q['category__and'], - 'field' => 'term_id', - 'operator' => 'AND', - 'include_children' => false - ); - } - - // If querystring 'tag' is array, implode it. - if ( is_array( $q['tag'] ) ) { - $q['tag'] = implode( ',', $q['tag'] ); - } - - // Tag stuff - if ( '' != $q['tag'] && !$this->is_singular && $this->query_vars_changed ) { - if ( strpos($q['tag'], ',') !== false ) { - $tags = preg_split('/[,\r\n\t ]+/', $q['tag']); - foreach ( (array) $tags as $tag ) { - $tag = sanitize_term_field('slug', $tag, 0, 'post_tag', 'db'); - $q['tag_slug__in'][] = $tag; - } - } elseif ( preg_match('/[+\r\n\t ]+/', $q['tag'] ) || ! empty( $q['cat'] ) ) { - $tags = preg_split('/[+\r\n\t ]+/', $q['tag']); - foreach ( (array) $tags as $tag ) { - $tag = sanitize_term_field('slug', $tag, 0, 'post_tag', 'db'); - $q['tag_slug__and'][] = $tag; - } - } else { - $q['tag'] = sanitize_term_field('slug', $q['tag'], 0, 'post_tag', 'db'); - $q['tag_slug__in'][] = $q['tag']; - } - } - - if ( !empty($q['tag_id']) ) { - $q['tag_id'] = absint( $q['tag_id'] ); - $tax_query[] = array( - 'taxonomy' => 'post_tag', - 'terms' => $q['tag_id'] - ); - } - - if ( !empty($q['tag__in']) ) { - $q['tag__in'] = array_map('absint', array_unique( (array) $q['tag__in'] ) ); - $tax_query[] = array( - 'taxonomy' => 'post_tag', - 'terms' => $q['tag__in'] - ); - } - - if ( !empty($q['tag__not_in']) ) { - $q['tag__not_in'] = array_map('absint', array_unique( (array) $q['tag__not_in'] ) ); - $tax_query[] = array( - 'taxonomy' => 'post_tag', - 'terms' => $q['tag__not_in'], - 'operator' => 'NOT IN' - ); - } - - if ( !empty($q['tag__and']) ) { - $q['tag__and'] = array_map('absint', array_unique( (array) $q['tag__and'] ) ); - $tax_query[] = array( - 'taxonomy' => 'post_tag', - 'terms' => $q['tag__and'], - 'operator' => 'AND' - ); - } - - if ( !empty($q['tag_slug__in']) ) { - $q['tag_slug__in'] = array_map('sanitize_title_for_query', array_unique( (array) $q['tag_slug__in'] ) ); - $tax_query[] = array( - 'taxonomy' => 'post_tag', - 'terms' => $q['tag_slug__in'], - 'field' => 'slug' - ); - } - - if ( !empty($q['tag_slug__and']) ) { - $q['tag_slug__and'] = array_map('sanitize_title_for_query', array_unique( (array) $q['tag_slug__and'] ) ); - $tax_query[] = array( - 'taxonomy' => 'post_tag', - 'terms' => $q['tag_slug__and'], - 'field' => 'slug', - 'operator' => 'AND' - ); - } - - $this->tax_query = new WP_Tax_Query( $tax_query ); - - /** - * Fires after taxonomy-related query vars have been parsed. - * - * @since 3.7.0 - * - * @param WP_Query $this The WP_Query instance. - */ - do_action( 'parse_tax_query', $this ); - } - - /** - * Generate SQL for the WHERE clause based on passed search terms. - * - * @since 3.7.0 - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param array $q Query variables. - * @return string WHERE clause. - */ - protected function parse_search( &$q ) { - global $wpdb; - - $search = ''; - - // added slashes screw with quote grouping when done early, so done later - $q['s'] = stripslashes( $q['s'] ); - if ( empty( $_GET['s'] ) && $this->is_main_query() ) - $q['s'] = urldecode( $q['s'] ); - // there are no line breaks in fields - $q['s'] = str_replace( array( "\r", "\n" ), '', $q['s'] ); - $q['search_terms_count'] = 1; - if ( ! empty( $q['sentence'] ) ) { - $q['search_terms'] = array( $q['s'] ); - } else { - if ( preg_match_all( '/".*?("|$)|((?<=[\t ",+])|^)[^\t ",+]+/', $q['s'], $matches ) ) { - $q['search_terms_count'] = count( $matches[0] ); - $q['search_terms'] = $this->parse_search_terms( $matches[0] ); - // if the search string has only short terms or stopwords, or is 10+ terms long, match it as sentence - if ( empty( $q['search_terms'] ) || count( $q['search_terms'] ) > 9 ) - $q['search_terms'] = array( $q['s'] ); - } else { - $q['search_terms'] = array( $q['s'] ); - } - } - - $n = ! empty( $q['exact'] ) ? '' : '%'; - $searchand = ''; - $q['search_orderby_title'] = array(); - foreach ( $q['search_terms'] as $term ) { - // Terms prefixed with '-' should be excluded. - $include = '-' !== substr( $term, 0, 1 ); - if ( $include ) { - $like_op = 'LIKE'; - $andor_op = 'OR'; - } else { - $like_op = 'NOT LIKE'; - $andor_op = 'AND'; - $term = substr( $term, 1 ); - } - - if ( $n && $include ) { - $like = '%' . $wpdb->esc_like( $term ) . '%'; - $q['search_orderby_title'][] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $like ); - } - - $like = $n . $wpdb->esc_like( $term ) . $n; - $search .= $wpdb->prepare( "{$searchand}(($wpdb->posts.post_title $like_op %s) $andor_op ($wpdb->posts.post_excerpt $like_op %s) $andor_op ($wpdb->posts.post_content $like_op %s))", $like, $like, $like ); - $searchand = ' AND '; - } - - if ( ! empty( $search ) ) { - $search = " AND ({$search}) "; - if ( ! is_user_logged_in() ) - $search .= " AND ($wpdb->posts.post_password = '') "; - } - - return $search; - } - - /** - * Check if the terms are suitable for searching. - * - * Uses an array of stopwords (terms) that are excluded from the separate - * term matching when searching for posts. The list of English stopwords is - * the approximate search engines list, and is translatable. - * - * @since 3.7.0 - * - * @param array $terms Terms to check. - * @return array Terms that are not stopwords. - */ - protected function parse_search_terms( $terms ) { - $strtolower = function_exists( 'mb_strtolower' ) ? 'mb_strtolower' : 'strtolower'; - $checked = array(); - - $stopwords = $this->get_search_stopwords(); - - foreach ( $terms as $term ) { - // keep before/after spaces when term is for exact match - if ( preg_match( '/^".+"$/', $term ) ) - $term = trim( $term, "\"'" ); - else - $term = trim( $term, "\"' " ); - - // Avoid single A-Z and single dashes. - if ( ! $term || ( 1 === strlen( $term ) && preg_match( '/^[a-z\-]$/i', $term ) ) ) - continue; - - if ( in_array( call_user_func( $strtolower, $term ), $stopwords, true ) ) - continue; - - $checked[] = $term; - } - - return $checked; - } - - /** - * Retrieve stopwords used when parsing search terms. - * - * @since 3.7.0 - * - * @return array Stopwords. - */ - protected function get_search_stopwords() { - if ( isset( $this->stopwords ) ) - return $this->stopwords; - - /* translators: This is a comma-separated list of very common words that should be excluded from a search, - * like a, an, and the. These are usually called "stopwords". You should not simply translate these individual - * words into your language. Instead, look for and provide commonly accepted stopwords in your language. - */ - $words = explode( ',', _x( 'about,an,are,as,at,be,by,com,for,from,how,in,is,it,of,on,or,that,the,this,to,was,what,when,where,who,will,with,www', - 'Comma-separated list of search stopwords in your language' ) ); - - $stopwords = array(); - foreach ( $words as $word ) { - $word = trim( $word, "\r\n\t " ); - if ( $word ) - $stopwords[] = $word; - } - - /** - * Filters stopwords used when parsing search terms. - * - * @since 3.7.0 - * - * @param array $stopwords Stopwords. - */ - $this->stopwords = apply_filters( 'wp_search_stopwords', $stopwords ); - return $this->stopwords; - } - - /** - * Generate SQL for the ORDER BY condition based on passed search terms. - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param array $q Query variables. - * @return string ORDER BY clause. - */ - protected function parse_search_order( &$q ) { - global $wpdb; - - if ( $q['search_terms_count'] > 1 ) { - $num_terms = count( $q['search_orderby_title'] ); - - // If the search terms contain negative queries, don't bother ordering by sentence matches. - $like = ''; - if ( ! preg_match( '/(?:\s|^)\-/', $q['s'] ) ) { - $like = '%' . $wpdb->esc_like( $q['s'] ) . '%'; - } - - $search_orderby = ''; - - // sentence match in 'post_title' - if ( $like ) { - $search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_title LIKE %s THEN 1 ", $like ); - } - - // sanity limit, sort as sentence when more than 6 terms - // (few searches are longer than 6 terms and most titles are not) - if ( $num_terms < 7 ) { - // all words in title - $search_orderby .= 'WHEN ' . implode( ' AND ', $q['search_orderby_title'] ) . ' THEN 2 '; - // any word in title, not needed when $num_terms == 1 - if ( $num_terms > 1 ) - $search_orderby .= 'WHEN ' . implode( ' OR ', $q['search_orderby_title'] ) . ' THEN 3 '; - } - - // Sentence match in 'post_content' and 'post_excerpt'. - if ( $like ) { - $search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_excerpt LIKE %s THEN 4 ", $like ); - $search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_content LIKE %s THEN 5 ", $like ); - } - - if ( $search_orderby ) { - $search_orderby = '(CASE ' . $search_orderby . 'ELSE 6 END)'; - } - } else { - // single word or sentence search - $search_orderby = reset( $q['search_orderby_title'] ) . ' DESC'; - } - - return $search_orderby; - } - - /** - * If the passed orderby value is allowed, convert the alias to a - * properly-prefixed orderby value. - * - * @since 4.0.0 - * @access protected - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param string $orderby Alias for the field to order by. - * @return string|false Table-prefixed value to used in the ORDER clause. False otherwise. - */ - protected function parse_orderby( $orderby ) { - global $wpdb; - - // Used to filter values. - $allowed_keys = array( - 'post_name', 'post_author', 'post_date', 'post_title', 'post_modified', - 'post_parent', 'post_type', 'name', 'author', 'date', 'title', 'modified', - 'parent', 'type', 'ID', 'menu_order', 'comment_count', 'rand', - ); - - $primary_meta_key = ''; - $primary_meta_query = false; - $meta_clauses = $this->meta_query->get_clauses(); - if ( ! empty( $meta_clauses ) ) { - $primary_meta_query = reset( $meta_clauses ); - - if ( ! empty( $primary_meta_query['key'] ) ) { - $primary_meta_key = $primary_meta_query['key']; - $allowed_keys[] = $primary_meta_key; - } - - $allowed_keys[] = 'meta_value'; - $allowed_keys[] = 'meta_value_num'; - $allowed_keys = array_merge( $allowed_keys, array_keys( $meta_clauses ) ); - } - - // If RAND() contains a seed value, sanitize and add to allowed keys. - $rand_with_seed = false; - if ( preg_match( '/RAND\(([0-9]+)\)/i', $orderby, $matches ) ) { - $orderby = sprintf( 'RAND(%s)', intval( $matches[1] ) ); - $allowed_keys[] = $orderby; - $rand_with_seed = true; - } - - if ( ! in_array( $orderby, $allowed_keys, true ) ) { - return false; - } - - switch ( $orderby ) { - case 'post_name': - case 'post_author': - case 'post_date': - case 'post_title': - case 'post_modified': - case 'post_parent': - case 'post_type': - case 'ID': - case 'menu_order': - case 'comment_count': - $orderby_clause = "$wpdb->posts.{$orderby}"; - break; - case 'rand': - $orderby_clause = 'RAND()'; - break; - case $primary_meta_key: - case 'meta_value': - if ( ! empty( $primary_meta_query['type'] ) ) { - $orderby_clause = "CAST({$primary_meta_query['alias']}.meta_value AS {$primary_meta_query['cast']})"; - } else { - $orderby_clause = "{$primary_meta_query['alias']}.meta_value"; - } - break; - case 'meta_value_num': - $orderby_clause = "{$primary_meta_query['alias']}.meta_value+0"; - break; - default: - if ( array_key_exists( $orderby, $meta_clauses ) ) { - // $orderby corresponds to a meta_query clause. - $meta_clause = $meta_clauses[ $orderby ]; - $orderby_clause = "CAST({$meta_clause['alias']}.meta_value AS {$meta_clause['cast']})"; - } elseif ( $rand_with_seed ) { - $orderby_clause = $orderby; - } else { - // Default: order by post field. - $orderby_clause = "$wpdb->posts.post_" . sanitize_key( $orderby ); - } - - break; - } - - return $orderby_clause; - } - - /** - * Parse an 'order' query variable and cast it to ASC or DESC as necessary. - * - * @since 4.0.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'; - } - } - - /** - * Sets the 404 property and saves whether query is feed. - * - * @since 2.0.0 - * @access public - */ - public function set_404() { - $is_feed = $this->is_feed; - - $this->init_query_flags(); - $this->is_404 = true; - - $this->is_feed = $is_feed; - } - - /** - * Retrieve query variable. - * - * @since 1.5.0 - * @since 3.9.0 The `$default` argument was introduced. - * - * @access public - * - * @param string $query_var Query variable key. - * @param mixed $default Optional. Value to return if the query variable is not set. Default empty. - * @return mixed Contents of the query variable. - */ - public function get( $query_var, $default = '' ) { - if ( isset( $this->query_vars[ $query_var ] ) ) { - return $this->query_vars[ $query_var ]; - } - - return $default; - } - - /** - * Set query variable. - * - * @since 1.5.0 - * @access public - * - * @param string $query_var Query variable key. - * @param mixed $value Query variable value. - */ - public function set($query_var, $value) { - $this->query_vars[$query_var] = $value; - } - - /** - * Retrieve the posts based on query variables. - * - * There are a few filters and actions that can be used to modify the post - * database query. - * - * @since 1.5.0 - * @access public - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @return array List of posts. - */ - public function get_posts() { - global $wpdb; - - $this->parse_query(); - - /** - * Fires after the query variable object is created, but before the actual query is run. - * - * Note: If using conditional tags, use the method versions within the passed instance - * (e.g. $this->is_main_query() instead of is_main_query()). This is because the functions - * like is_main_query() test against the global $wp_query instance, not the passed one. - * - * @since 2.0.0 - * - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - do_action_ref_array( 'pre_get_posts', array( &$this ) ); - - // Shorthand. - $q = &$this->query_vars; - - // Fill again in case pre_get_posts unset some vars. - $q = $this->fill_query_vars($q); - - // Parse meta query - $this->meta_query = new WP_Meta_Query(); - $this->meta_query->parse_query_vars( $q ); - - // Set a flag if a pre_get_posts hook changed the query vars. - $hash = md5( serialize( $this->query_vars ) ); - if ( $hash != $this->query_vars_hash ) { - $this->query_vars_changed = true; - $this->query_vars_hash = $hash; - } - unset($hash); - - // First let's clear some variables - $distinct = ''; - $whichauthor = ''; - $whichmimetype = ''; - $where = ''; - $limits = ''; - $join = ''; - $search = ''; - $groupby = ''; - $post_status_join = false; - $page = 1; - - if ( isset( $q['caller_get_posts'] ) ) { - _deprecated_argument( 'WP_Query', '3.1.0', __( '"caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead.' ) ); - if ( !isset( $q['ignore_sticky_posts'] ) ) - $q['ignore_sticky_posts'] = $q['caller_get_posts']; - } - - if ( !isset( $q['ignore_sticky_posts'] ) ) - $q['ignore_sticky_posts'] = false; - - if ( !isset($q['suppress_filters']) ) - $q['suppress_filters'] = false; - - if ( !isset($q['cache_results']) ) { - if ( wp_using_ext_object_cache() ) - $q['cache_results'] = false; - else - $q['cache_results'] = true; - } - - if ( !isset($q['update_post_term_cache']) ) - $q['update_post_term_cache'] = true; - - if ( ! isset( $q['lazy_load_term_meta'] ) ) { - $q['lazy_load_term_meta'] = $q['update_post_term_cache']; - } - - if ( !isset($q['update_post_meta_cache']) ) - $q['update_post_meta_cache'] = true; - - if ( !isset($q['post_type']) ) { - if ( $this->is_search ) - $q['post_type'] = 'any'; - else - $q['post_type'] = ''; - } - $post_type = $q['post_type']; - if ( empty( $q['posts_per_page'] ) ) { - $q['posts_per_page'] = get_option( 'posts_per_page' ); - } - if ( isset($q['showposts']) && $q['showposts'] ) { - $q['showposts'] = (int) $q['showposts']; - $q['posts_per_page'] = $q['showposts']; - } - if ( (isset($q['posts_per_archive_page']) && $q['posts_per_archive_page'] != 0) && ($this->is_archive || $this->is_search) ) - $q['posts_per_page'] = $q['posts_per_archive_page']; - if ( !isset($q['nopaging']) ) { - if ( $q['posts_per_page'] == -1 ) { - $q['nopaging'] = true; - } else { - $q['nopaging'] = false; - } - } - - if ( $this->is_feed ) { - // This overrides posts_per_page. - if ( ! empty( $q['posts_per_rss'] ) ) { - $q['posts_per_page'] = $q['posts_per_rss']; - } else { - $q['posts_per_page'] = get_option( 'posts_per_rss' ); - } - $q['nopaging'] = false; - } - $q['posts_per_page'] = (int) $q['posts_per_page']; - if ( $q['posts_per_page'] < -1 ) - $q['posts_per_page'] = abs($q['posts_per_page']); - elseif ( $q['posts_per_page'] == 0 ) - $q['posts_per_page'] = 1; - - if ( !isset($q['comments_per_page']) || $q['comments_per_page'] == 0 ) - $q['comments_per_page'] = get_option('comments_per_page'); - - if ( $this->is_home && (empty($this->query) || $q['preview'] == 'true') && ( 'page' == get_option('show_on_front') ) && get_option('page_on_front') ) { - $this->is_page = true; - $this->is_home = false; - $q['page_id'] = get_option('page_on_front'); - } - - if ( isset($q['page']) ) { - $q['page'] = trim($q['page'], '/'); - $q['page'] = absint($q['page']); - } - - // If true, forcibly turns off SQL_CALC_FOUND_ROWS even when limits are present. - if ( isset($q['no_found_rows']) ) - $q['no_found_rows'] = (bool) $q['no_found_rows']; - else - $q['no_found_rows'] = false; - - switch ( $q['fields'] ) { - case 'ids': - $fields = "$wpdb->posts.ID"; - break; - case 'id=>parent': - $fields = "$wpdb->posts.ID, $wpdb->posts.post_parent"; - break; - default: - $fields = "$wpdb->posts.*"; - } - - if ( '' !== $q['menu_order'] ) - $where .= " AND $wpdb->posts.menu_order = " . $q['menu_order']; - - // The "m" parameter is meant for months but accepts datetimes of varying specificity - if ( $q['m'] ) { - $where .= " AND YEAR($wpdb->posts.post_date)=" . substr($q['m'], 0, 4); - if ( strlen($q['m']) > 5 ) - $where .= " AND MONTH($wpdb->posts.post_date)=" . substr($q['m'], 4, 2); - if ( strlen($q['m']) > 7 ) - $where .= " AND DAYOFMONTH($wpdb->posts.post_date)=" . substr($q['m'], 6, 2); - if ( strlen($q['m']) > 9 ) - $where .= " AND HOUR($wpdb->posts.post_date)=" . substr($q['m'], 8, 2); - if ( strlen($q['m']) > 11 ) - $where .= " AND MINUTE($wpdb->posts.post_date)=" . substr($q['m'], 10, 2); - if ( strlen($q['m']) > 13 ) - $where .= " AND SECOND($wpdb->posts.post_date)=" . substr($q['m'], 12, 2); - } - - // Handle the other individual date parameters - $date_parameters = array(); - - if ( '' !== $q['hour'] ) - $date_parameters['hour'] = $q['hour']; - - if ( '' !== $q['minute'] ) - $date_parameters['minute'] = $q['minute']; - - if ( '' !== $q['second'] ) - $date_parameters['second'] = $q['second']; - - if ( $q['year'] ) - $date_parameters['year'] = $q['year']; - - if ( $q['monthnum'] ) - $date_parameters['monthnum'] = $q['monthnum']; - - if ( $q['w'] ) - $date_parameters['week'] = $q['w']; - - if ( $q['day'] ) - $date_parameters['day'] = $q['day']; - - if ( $date_parameters ) { - $date_query = new WP_Date_Query( array( $date_parameters ) ); - $where .= $date_query->get_sql(); - } - unset( $date_parameters, $date_query ); - - // Handle complex date queries - if ( ! empty( $q['date_query'] ) ) { - $this->date_query = new WP_Date_Query( $q['date_query'] ); - $where .= $this->date_query->get_sql(); - } - - - // If we've got a post_type AND it's not "any" post_type. - if ( !empty($q['post_type']) && 'any' != $q['post_type'] ) { - foreach ( (array)$q['post_type'] as $_post_type ) { - $ptype_obj = get_post_type_object($_post_type); - if ( !$ptype_obj || !$ptype_obj->query_var || empty($q[ $ptype_obj->query_var ]) ) - continue; - - if ( ! $ptype_obj->hierarchical ) { - // Non-hierarchical post types can directly use 'name'. - $q['name'] = $q[ $ptype_obj->query_var ]; - } else { - // Hierarchical post types will operate through 'pagename'. - $q['pagename'] = $q[ $ptype_obj->query_var ]; - $q['name'] = ''; - } - - // Only one request for a slug is possible, this is why name & pagename are overwritten above. - break; - } //end foreach - unset($ptype_obj); - } - - if ( '' !== $q['title'] ) { - $where .= $wpdb->prepare( " AND $wpdb->posts.post_title = %s", stripslashes( $q['title'] ) ); - } - - // Parameters related to 'post_name'. - if ( '' != $q['name'] ) { - $q['name'] = sanitize_title_for_query( $q['name'] ); - $where .= " AND $wpdb->posts.post_name = '" . $q['name'] . "'"; - } elseif ( '' != $q['pagename'] ) { - if ( isset($this->queried_object_id) ) { - $reqpage = $this->queried_object_id; - } else { - if ( 'page' != $q['post_type'] ) { - foreach ( (array)$q['post_type'] as $_post_type ) { - $ptype_obj = get_post_type_object($_post_type); - if ( !$ptype_obj || !$ptype_obj->hierarchical ) - continue; - - $reqpage = get_page_by_path($q['pagename'], OBJECT, $_post_type); - if ( $reqpage ) - break; - } - unset($ptype_obj); - } else { - $reqpage = get_page_by_path($q['pagename']); - } - if ( !empty($reqpage) ) - $reqpage = $reqpage->ID; - else - $reqpage = 0; - } - - $page_for_posts = get_option('page_for_posts'); - if ( ('page' != get_option('show_on_front') ) || empty($page_for_posts) || ( $reqpage != $page_for_posts ) ) { - $q['pagename'] = sanitize_title_for_query( wp_basename( $q['pagename'] ) ); - $q['name'] = $q['pagename']; - $where .= " AND ($wpdb->posts.ID = '$reqpage')"; - $reqpage_obj = get_post( $reqpage ); - if ( is_object($reqpage_obj) && 'attachment' == $reqpage_obj->post_type ) { - $this->is_attachment = true; - $post_type = $q['post_type'] = 'attachment'; - $this->is_page = true; - $q['attachment_id'] = $reqpage; - } - } - } elseif ( '' != $q['attachment'] ) { - $q['attachment'] = sanitize_title_for_query( wp_basename( $q['attachment'] ) ); - $q['name'] = $q['attachment']; - $where .= " AND $wpdb->posts.post_name = '" . $q['attachment'] . "'"; - } elseif ( is_array( $q['post_name__in'] ) && ! empty( $q['post_name__in'] ) ) { - $q['post_name__in'] = array_map( 'sanitize_title_for_query', $q['post_name__in'] ); - $post_name__in = "'" . implode( "','", $q['post_name__in'] ) . "'"; - $where .= " AND $wpdb->posts.post_name IN ($post_name__in)"; - } - - // If an attachment is requested by number, let it supersede any post number. - if ( $q['attachment_id'] ) - $q['p'] = absint($q['attachment_id']); - - // If a post number is specified, load that post - if ( $q['p'] ) { - $where .= " AND {$wpdb->posts}.ID = " . $q['p']; - } elseif ( $q['post__in'] ) { - $post__in = implode(',', array_map( 'absint', $q['post__in'] )); - $where .= " AND {$wpdb->posts}.ID IN ($post__in)"; - } elseif ( $q['post__not_in'] ) { - $post__not_in = implode(',', array_map( 'absint', $q['post__not_in'] )); - $where .= " AND {$wpdb->posts}.ID NOT IN ($post__not_in)"; - } - - if ( is_numeric( $q['post_parent'] ) ) { - $where .= $wpdb->prepare( " AND $wpdb->posts.post_parent = %d ", $q['post_parent'] ); - } elseif ( $q['post_parent__in'] ) { - $post_parent__in = implode( ',', array_map( 'absint', $q['post_parent__in'] ) ); - $where .= " AND {$wpdb->posts}.post_parent IN ($post_parent__in)"; - } elseif ( $q['post_parent__not_in'] ) { - $post_parent__not_in = implode( ',', array_map( 'absint', $q['post_parent__not_in'] ) ); - $where .= " AND {$wpdb->posts}.post_parent NOT IN ($post_parent__not_in)"; - } - - if ( $q['page_id'] ) { - if ( ('page' != get_option('show_on_front') ) || ( $q['page_id'] != get_option('page_for_posts') ) ) { - $q['p'] = $q['page_id']; - $where = " AND {$wpdb->posts}.ID = " . $q['page_id']; - } - } - - // If a search pattern is specified, load the posts that match. - if ( strlen( $q['s'] ) ) { - $search = $this->parse_search( $q ); - } - - if ( ! $q['suppress_filters'] ) { - /** - * Filters the search SQL that is used in the WHERE clause of WP_Query. - * - * @since 3.0.0 - * - * @param string $search Search SQL for WHERE clause. - * @param WP_Query $this The current WP_Query object. - */ - $search = apply_filters_ref_array( 'posts_search', array( $search, &$this ) ); - } - - // Taxonomies - if ( !$this->is_singular ) { - $this->parse_tax_query( $q ); - - $clauses = $this->tax_query->get_sql( $wpdb->posts, 'ID' ); - - $join .= $clauses['join']; - $where .= $clauses['where']; - } - - if ( $this->is_tax ) { - if ( empty($post_type) ) { - // Do a fully inclusive search for currently registered post types of queried taxonomies - $post_type = array(); - $taxonomies = array_keys( $this->tax_query->queried_terms ); - foreach ( get_post_types( array( 'exclude_from_search' => false ) ) as $pt ) { - $object_taxonomies = $pt === 'attachment' ? get_taxonomies_for_attachments() : get_object_taxonomies( $pt ); - if ( array_intersect( $taxonomies, $object_taxonomies ) ) - $post_type[] = $pt; - } - if ( ! $post_type ) - $post_type = 'any'; - elseif ( count( $post_type ) == 1 ) - $post_type = $post_type[0]; - - $post_status_join = true; - } elseif ( in_array('attachment', (array) $post_type) ) { - $post_status_join = true; - } - } - - /* - * Ensure that 'taxonomy', 'term', 'term_id', 'cat', and - * 'category_name' vars are set for backward compatibility. - */ - if ( ! empty( $this->tax_query->queried_terms ) ) { - - /* - * Set 'taxonomy', 'term', and 'term_id' to the - * first taxonomy other than 'post_tag' or 'category'. - */ - if ( ! isset( $q['taxonomy'] ) ) { - foreach ( $this->tax_query->queried_terms as $queried_taxonomy => $queried_items ) { - if ( empty( $queried_items['terms'][0] ) ) { - continue; - } - - if ( ! in_array( $queried_taxonomy, array( 'category', 'post_tag' ) ) ) { - $q['taxonomy'] = $queried_taxonomy; - - if ( 'slug' === $queried_items['field'] ) { - $q['term'] = $queried_items['terms'][0]; - } else { - $q['term_id'] = $queried_items['terms'][0]; - } - - // Take the first one we find. - break; - } - } - } - - // 'cat', 'category_name', 'tag_id' - foreach ( $this->tax_query->queried_terms as $queried_taxonomy => $queried_items ) { - if ( empty( $queried_items['terms'][0] ) ) { - continue; - } - - if ( 'category' === $queried_taxonomy ) { - $the_cat = get_term_by( $queried_items['field'], $queried_items['terms'][0], 'category' ); - if ( $the_cat ) { - $this->set( 'cat', $the_cat->term_id ); - $this->set( 'category_name', $the_cat->slug ); - } - unset( $the_cat ); - } - - if ( 'post_tag' === $queried_taxonomy ) { - $the_tag = get_term_by( $queried_items['field'], $queried_items['terms'][0], 'post_tag' ); - if ( $the_tag ) { - $this->set( 'tag_id', $the_tag->term_id ); - } - unset( $the_tag ); - } - } - } - - if ( !empty( $this->tax_query->queries ) || !empty( $this->meta_query->queries ) ) { - $groupby = "{$wpdb->posts}.ID"; - } - - // Author/user stuff - - if ( ! empty( $q['author'] ) && $q['author'] != '0' ) { - $q['author'] = addslashes_gpc( '' . urldecode( $q['author'] ) ); - $authors = array_unique( array_map( 'intval', preg_split( '/[,\s]+/', $q['author'] ) ) ); - foreach ( $authors as $author ) { - $key = $author > 0 ? 'author__in' : 'author__not_in'; - $q[$key][] = abs( $author ); - } - $q['author'] = implode( ',', $authors ); - } - - if ( ! empty( $q['author__not_in'] ) ) { - $author__not_in = implode( ',', array_map( 'absint', array_unique( (array) $q['author__not_in'] ) ) ); - $where .= " AND {$wpdb->posts}.post_author NOT IN ($author__not_in) "; - } elseif ( ! empty( $q['author__in'] ) ) { - $author__in = implode( ',', array_map( 'absint', array_unique( (array) $q['author__in'] ) ) ); - $where .= " AND {$wpdb->posts}.post_author IN ($author__in) "; - } - - // Author stuff for nice URLs - - if ( '' != $q['author_name'] ) { - if ( strpos($q['author_name'], '/') !== false ) { - $q['author_name'] = explode('/', $q['author_name']); - if ( $q['author_name'][ count($q['author_name'])-1 ] ) { - $q['author_name'] = $q['author_name'][count($q['author_name'])-1]; // no trailing slash - } else { - $q['author_name'] = $q['author_name'][count($q['author_name'])-2]; // there was a trailing slash - } - } - $q['author_name'] = sanitize_title_for_query( $q['author_name'] ); - $q['author'] = get_user_by('slug', $q['author_name']); - if ( $q['author'] ) - $q['author'] = $q['author']->ID; - $whichauthor .= " AND ($wpdb->posts.post_author = " . absint($q['author']) . ')'; - } - - // MIME-Type stuff for attachment browsing - - if ( isset( $q['post_mime_type'] ) && '' != $q['post_mime_type'] ) - $whichmimetype = wp_post_mime_type_where( $q['post_mime_type'], $wpdb->posts ); - - $where .= $search . $whichauthor . $whichmimetype; - - if ( ! empty( $this->meta_query->queries ) ) { - $clauses = $this->meta_query->get_sql( 'post', $wpdb->posts, 'ID', $this ); - $join .= $clauses['join']; - $where .= $clauses['where']; - } - - $rand = ( isset( $q['orderby'] ) && 'rand' === $q['orderby'] ); - if ( ! isset( $q['order'] ) ) { - $q['order'] = $rand ? '' : 'DESC'; - } else { - $q['order'] = $rand ? '' : $this->parse_order( $q['order'] ); - } - - // Order by. - if ( empty( $q['orderby'] ) ) { - /* - * Boolean false or empty array blanks out ORDER BY, - * while leaving the value unset or otherwise empty sets the default. - */ - if ( isset( $q['orderby'] ) && ( is_array( $q['orderby'] ) || false === $q['orderby'] ) ) { - $orderby = ''; - } else { - $orderby = "$wpdb->posts.post_date " . $q['order']; - } - } elseif ( 'none' == $q['orderby'] ) { - $orderby = ''; - } elseif ( $q['orderby'] == 'post__in' && ! empty( $post__in ) ) { - $orderby = "FIELD( {$wpdb->posts}.ID, $post__in )"; - } elseif ( $q['orderby'] == 'post_parent__in' && ! empty( $post_parent__in ) ) { - $orderby = "FIELD( {$wpdb->posts}.post_parent, $post_parent__in )"; - } elseif ( $q['orderby'] == 'post_name__in' && ! empty( $post_name__in ) ) { - $orderby = "FIELD( {$wpdb->posts}.post_name, $post_name__in )"; - } else { - $orderby_array = array(); - if ( is_array( $q['orderby'] ) ) { - foreach ( $q['orderby'] as $_orderby => $order ) { - $orderby = addslashes_gpc( urldecode( $_orderby ) ); - $parsed = $this->parse_orderby( $orderby ); - - if ( ! $parsed ) { - continue; - } - - $orderby_array[] = $parsed . ' ' . $this->parse_order( $order ); - } - $orderby = implode( ', ', $orderby_array ); - - } else { - $q['orderby'] = urldecode( $q['orderby'] ); - $q['orderby'] = addslashes_gpc( $q['orderby'] ); - - foreach ( explode( ' ', $q['orderby'] ) as $i => $orderby ) { - $parsed = $this->parse_orderby( $orderby ); - // Only allow certain values for safety. - if ( ! $parsed ) { - continue; - } - - $orderby_array[] = $parsed; - } - $orderby = implode( ' ' . $q['order'] . ', ', $orderby_array ); - - if ( empty( $orderby ) ) { - $orderby = "$wpdb->posts.post_date " . $q['order']; - } elseif ( ! empty( $q['order'] ) ) { - $orderby .= " {$q['order']}"; - } - } - } - - // Order search results by relevance only when another "orderby" is not specified in the query. - if ( ! empty( $q['s'] ) ) { - $search_orderby = ''; - if ( ! empty( $q['search_orderby_title'] ) && ( empty( $q['orderby'] ) && ! $this->is_feed ) || ( isset( $q['orderby'] ) && 'relevance' === $q['orderby'] ) ) - $search_orderby = $this->parse_search_order( $q ); - - if ( ! $q['suppress_filters'] ) { - /** - * Filters the ORDER BY used when ordering search results. - * - * @since 3.7.0 - * - * @param string $search_orderby The ORDER BY clause. - * @param WP_Query $this The current WP_Query instance. - */ - $search_orderby = apply_filters( 'posts_search_orderby', $search_orderby, $this ); - } - - if ( $search_orderby ) - $orderby = $orderby ? $search_orderby . ', ' . $orderby : $search_orderby; - } - - if ( is_array( $post_type ) && count( $post_type ) > 1 ) { - $post_type_cap = 'multiple_post_type'; - } else { - if ( is_array( $post_type ) ) - $post_type = reset( $post_type ); - $post_type_object = get_post_type_object( $post_type ); - if ( empty( $post_type_object ) ) - $post_type_cap = $post_type; - } - - if ( isset( $q['post_password'] ) ) { - $where .= $wpdb->prepare( " AND $wpdb->posts.post_password = %s", $q['post_password'] ); - if ( empty( $q['perm'] ) ) { - $q['perm'] = 'readable'; - } - } elseif ( isset( $q['has_password'] ) ) { - $where .= sprintf( " AND $wpdb->posts.post_password %s ''", $q['has_password'] ? '!=' : '=' ); - } - - if ( ! empty( $q['comment_status'] ) ) { - $where .= $wpdb->prepare( " AND $wpdb->posts.comment_status = %s ", $q['comment_status'] ); - } - - if ( ! empty( $q['ping_status'] ) ) { - $where .= $wpdb->prepare( " AND $wpdb->posts.ping_status = %s ", $q['ping_status'] ); - } - - if ( 'any' == $post_type ) { - $in_search_post_types = get_post_types( array('exclude_from_search' => false) ); - if ( empty( $in_search_post_types ) ) - $where .= ' AND 1=0 '; - else - $where .= " AND $wpdb->posts.post_type IN ('" . join("', '", $in_search_post_types ) . "')"; - } elseif ( !empty( $post_type ) && is_array( $post_type ) ) { - $where .= " AND $wpdb->posts.post_type IN ('" . join("', '", $post_type) . "')"; - } elseif ( ! empty( $post_type ) ) { - $where .= " AND $wpdb->posts.post_type = '$post_type'"; - $post_type_object = get_post_type_object ( $post_type ); - } elseif ( $this->is_attachment ) { - $where .= " AND $wpdb->posts.post_type = 'attachment'"; - $post_type_object = get_post_type_object ( 'attachment' ); - } elseif ( $this->is_page ) { - $where .= " AND $wpdb->posts.post_type = 'page'"; - $post_type_object = get_post_type_object ( 'page' ); - } else { - $where .= " AND $wpdb->posts.post_type = 'post'"; - $post_type_object = get_post_type_object ( 'post' ); - } - - $edit_cap = 'edit_post'; - $read_cap = 'read_post'; - - if ( ! empty( $post_type_object ) ) { - $edit_others_cap = $post_type_object->cap->edit_others_posts; - $read_private_cap = $post_type_object->cap->read_private_posts; - } else { - $edit_others_cap = 'edit_others_' . $post_type_cap . 's'; - $read_private_cap = 'read_private_' . $post_type_cap . 's'; - } - - $user_id = get_current_user_id(); - - $q_status = array(); - if ( ! empty( $q['post_status'] ) ) { - $statuswheres = array(); - $q_status = $q['post_status']; - if ( ! is_array( $q_status ) ) - $q_status = explode(',', $q_status); - $r_status = array(); - $p_status = array(); - $e_status = array(); - if ( in_array( 'any', $q_status ) ) { - foreach ( get_post_stati( array( 'exclude_from_search' => true ) ) as $status ) { - if ( ! in_array( $status, $q_status ) ) { - $e_status[] = "$wpdb->posts.post_status <> '$status'"; - } - } - } else { - foreach ( get_post_stati() as $status ) { - if ( in_array( $status, $q_status ) ) { - if ( 'private' == $status ) - $p_status[] = "$wpdb->posts.post_status = '$status'"; - else - $r_status[] = "$wpdb->posts.post_status = '$status'"; - } - } - } - - if ( empty($q['perm'] ) || 'readable' != $q['perm'] ) { - $r_status = array_merge($r_status, $p_status); - unset($p_status); - } - - if ( !empty($e_status) ) { - $statuswheres[] = "(" . join( ' AND ', $e_status ) . ")"; - } - if ( !empty($r_status) ) { - if ( !empty($q['perm'] ) && 'editable' == $q['perm'] && !current_user_can($edit_others_cap) ) - $statuswheres[] = "($wpdb->posts.post_author = $user_id " . "AND (" . join( ' OR ', $r_status ) . "))"; - else - $statuswheres[] = "(" . join( ' OR ', $r_status ) . ")"; - } - if ( !empty($p_status) ) { - if ( !empty($q['perm'] ) && 'readable' == $q['perm'] && !current_user_can($read_private_cap) ) - $statuswheres[] = "($wpdb->posts.post_author = $user_id " . "AND (" . join( ' OR ', $p_status ) . "))"; - else - $statuswheres[] = "(" . join( ' OR ', $p_status ) . ")"; - } - if ( $post_status_join ) { - $join .= " LEFT JOIN $wpdb->posts AS p2 ON ($wpdb->posts.post_parent = p2.ID) "; - foreach ( $statuswheres as $index => $statuswhere ) - $statuswheres[$index] = "($statuswhere OR ($wpdb->posts.post_status = 'inherit' AND " . str_replace($wpdb->posts, 'p2', $statuswhere) . "))"; - } - $where_status = implode( ' OR ', $statuswheres ); - if ( ! empty( $where_status ) ) { - $where .= " AND ($where_status)"; - } - } elseif ( !$this->is_singular ) { - $where .= " AND ($wpdb->posts.post_status = 'publish'"; - - // Add public states. - $public_states = get_post_stati( array('public' => true) ); - foreach ( (array) $public_states as $state ) { - if ( 'publish' == $state ) // Publish is hard-coded above. - continue; - $where .= " OR $wpdb->posts.post_status = '$state'"; - } - - if ( $this->is_admin ) { - // Add protected states that should show in the admin all list. - $admin_all_states = get_post_stati( array('protected' => true, 'show_in_admin_all_list' => true) ); - foreach ( (array) $admin_all_states as $state ) - $where .= " OR $wpdb->posts.post_status = '$state'"; - } - - if ( is_user_logged_in() ) { - // Add private states that are limited to viewing by the author of a post or someone who has caps to read private states. - $private_states = get_post_stati( array('private' => true) ); - foreach ( (array) $private_states as $state ) - $where .= current_user_can( $read_private_cap ) ? " OR $wpdb->posts.post_status = '$state'" : " OR $wpdb->posts.post_author = $user_id AND $wpdb->posts.post_status = '$state'"; - } - - $where .= ')'; - } - - /* - * Apply filters on where and join prior to paging so that any - * manipulations to them are reflected in the paging by day queries. - */ - if ( !$q['suppress_filters'] ) { - /** - * Filters the WHERE clause of the query. - * - * @since 1.5.0 - * - * @param string $where The WHERE clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $where = apply_filters_ref_array( 'posts_where', array( $where, &$this ) ); - - /** - * Filters the JOIN clause of the query. - * - * @since 1.5.0 - * - * @param string $where The JOIN clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $join = apply_filters_ref_array( 'posts_join', array( $join, &$this ) ); - } - - // Paging - if ( empty($q['nopaging']) && !$this->is_singular ) { - $page = absint($q['paged']); - if ( !$page ) - $page = 1; - - // If 'offset' is provided, it takes precedence over 'paged'. - if ( isset( $q['offset'] ) && is_numeric( $q['offset'] ) ) { - $q['offset'] = absint( $q['offset'] ); - $pgstrt = $q['offset'] . ', '; - } else { - $pgstrt = absint( ( $page - 1 ) * $q['posts_per_page'] ) . ', '; - } - $limits = 'LIMIT ' . $pgstrt . $q['posts_per_page']; - } - - // Comments feeds - if ( $this->is_comment_feed && ! $this->is_singular ) { - if ( $this->is_archive || $this->is_search ) { - $cjoin = "JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) $join "; - $cwhere = "WHERE comment_approved = '1' $where"; - $cgroupby = "$wpdb->comments.comment_id"; - } else { // Other non singular e.g. front - $cjoin = "JOIN $wpdb->posts ON ( $wpdb->comments.comment_post_ID = $wpdb->posts.ID )"; - $cwhere = "WHERE ( post_status = 'publish' OR ( post_status = 'inherit' && post_type = 'attachment' ) ) AND comment_approved = '1'"; - $cgroupby = ''; - } - - if ( !$q['suppress_filters'] ) { - /** - * Filters the JOIN clause of the comments feed query before sending. - * - * @since 2.2.0 - * - * @param string $cjoin The JOIN clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $cjoin = apply_filters_ref_array( 'comment_feed_join', array( $cjoin, &$this ) ); - - /** - * Filters the WHERE clause of the comments feed query before sending. - * - * @since 2.2.0 - * - * @param string $cwhere The WHERE clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $cwhere = apply_filters_ref_array( 'comment_feed_where', array( $cwhere, &$this ) ); - - /** - * Filters the GROUP BY clause of the comments feed query before sending. - * - * @since 2.2.0 - * - * @param string $cgroupby The GROUP BY clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $cgroupby = apply_filters_ref_array( 'comment_feed_groupby', array( $cgroupby, &$this ) ); - - /** - * Filters the ORDER BY clause of the comments feed query before sending. - * - * @since 2.8.0 - * - * @param string $corderby The ORDER BY clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $corderby = apply_filters_ref_array( 'comment_feed_orderby', array( 'comment_date_gmt DESC', &$this ) ); - - /** - * Filters the LIMIT clause of the comments feed query before sending. - * - * @since 2.8.0 - * - * @param string $climits The JOIN clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $climits = apply_filters_ref_array( 'comment_feed_limits', array( 'LIMIT ' . get_option('posts_per_rss'), &$this ) ); - } - $cgroupby = ( ! empty( $cgroupby ) ) ? 'GROUP BY ' . $cgroupby : ''; - $corderby = ( ! empty( $corderby ) ) ? 'ORDER BY ' . $corderby : ''; - - $comments = (array) $wpdb->get_results("SELECT $distinct $wpdb->comments.* FROM $wpdb->comments $cjoin $cwhere $cgroupby $corderby $climits"); - // Convert to WP_Comment - $this->comments = array_map( 'get_comment', $comments ); - $this->comment_count = count($this->comments); - - $post_ids = array(); - - foreach ( $this->comments as $comment ) - $post_ids[] = (int) $comment->comment_post_ID; - - $post_ids = join(',', $post_ids); - $join = ''; - if ( $post_ids ) - $where = "AND $wpdb->posts.ID IN ($post_ids) "; - else - $where = "AND 0"; - } - - $pieces = array( 'where', 'groupby', 'join', 'orderby', 'distinct', 'fields', 'limits' ); - - /* - * Apply post-paging filters on where and join. Only plugins that - * manipulate paging queries should use these hooks. - */ - if ( !$q['suppress_filters'] ) { - /** - * Filters the WHERE clause of the query. - * - * Specifically for manipulating paging queries. - * - * @since 1.5.0 - * - * @param string $where The WHERE clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $where = apply_filters_ref_array( 'posts_where_paged', array( $where, &$this ) ); - - /** - * Filters the GROUP BY clause of the query. - * - * @since 2.0.0 - * - * @param string $groupby The GROUP BY clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $groupby = apply_filters_ref_array( 'posts_groupby', array( $groupby, &$this ) ); - - /** - * Filters the JOIN clause of the query. - * - * Specifically for manipulating paging queries. - * - * @since 1.5.0 - * - * @param string $join The JOIN clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $join = apply_filters_ref_array( 'posts_join_paged', array( $join, &$this ) ); - - /** - * Filters the ORDER BY clause of the query. - * - * @since 1.5.1 - * - * @param string $orderby The ORDER BY clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $orderby = apply_filters_ref_array( 'posts_orderby', array( $orderby, &$this ) ); - - /** - * Filters the DISTINCT clause of the query. - * - * @since 2.1.0 - * - * @param string $distinct The DISTINCT clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $distinct = apply_filters_ref_array( 'posts_distinct', array( $distinct, &$this ) ); - - /** - * Filters the LIMIT clause of the query. - * - * @since 2.1.0 - * - * @param string $limits The LIMIT clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $limits = apply_filters_ref_array( 'post_limits', array( $limits, &$this ) ); - - /** - * Filters the SELECT clause of the query. - * - * @since 2.1.0 - * - * @param string $fields The SELECT clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $fields = apply_filters_ref_array( 'posts_fields', array( $fields, &$this ) ); - - /** - * Filters all query clauses at once, for convenience. - * - * Covers the WHERE, GROUP BY, JOIN, ORDER BY, DISTINCT, - * fields (SELECT), and LIMITS clauses. - * - * @since 3.1.0 - * - * @param array $clauses The list of clauses for the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $clauses = (array) apply_filters_ref_array( 'posts_clauses', array( compact( $pieces ), &$this ) ); - - $where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where' ] : ''; - $groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : ''; - $join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : ''; - $orderby = isset( $clauses[ 'orderby' ] ) ? $clauses[ 'orderby' ] : ''; - $distinct = isset( $clauses[ 'distinct' ] ) ? $clauses[ 'distinct' ] : ''; - $fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : ''; - $limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : ''; - } - - /** - * Fires to announce the query's current selection parameters. - * - * For use by caching plugins. - * - * @since 2.3.0 - * - * @param string $selection The assembled selection query. - */ - do_action( 'posts_selection', $where . $groupby . $orderby . $limits . $join ); - - /* - * Filters again for the benefit of caching plugins. - * Regular plugins should use the hooks above. - */ - if ( !$q['suppress_filters'] ) { - /** - * Filters the WHERE clause of the query. - * - * For use by caching plugins. - * - * @since 2.5.0 - * - * @param string $where The WHERE clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $where = apply_filters_ref_array( 'posts_where_request', array( $where, &$this ) ); - - /** - * Filters the GROUP BY clause of the query. - * - * For use by caching plugins. - * - * @since 2.5.0 - * - * @param string $groupby The GROUP BY clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $groupby = apply_filters_ref_array( 'posts_groupby_request', array( $groupby, &$this ) ); - - /** - * Filters the JOIN clause of the query. - * - * For use by caching plugins. - * - * @since 2.5.0 - * - * @param string $join The JOIN clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $join = apply_filters_ref_array( 'posts_join_request', array( $join, &$this ) ); - - /** - * Filters the ORDER BY clause of the query. - * - * For use by caching plugins. - * - * @since 2.5.0 - * - * @param string $orderby The ORDER BY clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $orderby = apply_filters_ref_array( 'posts_orderby_request', array( $orderby, &$this ) ); - - /** - * Filters the DISTINCT clause of the query. - * - * For use by caching plugins. - * - * @since 2.5.0 - * - * @param string $distinct The DISTINCT clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $distinct = apply_filters_ref_array( 'posts_distinct_request', array( $distinct, &$this ) ); - - /** - * Filters the SELECT clause of the query. - * - * For use by caching plugins. - * - * @since 2.5.0 - * - * @param string $fields The SELECT clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $fields = apply_filters_ref_array( 'posts_fields_request', array( $fields, &$this ) ); - - /** - * Filters the LIMIT clause of the query. - * - * For use by caching plugins. - * - * @since 2.5.0 - * - * @param string $limits The LIMIT clause of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $limits = apply_filters_ref_array( 'post_limits_request', array( $limits, &$this ) ); - - /** - * Filters all query clauses at once, for convenience. - * - * For use by caching plugins. - * - * Covers the WHERE, GROUP BY, JOIN, ORDER BY, DISTINCT, - * fields (SELECT), and LIMITS clauses. - * - * @since 3.1.0 - * - * @param array $pieces The pieces of the query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $clauses = (array) apply_filters_ref_array( 'posts_clauses_request', array( compact( $pieces ), &$this ) ); - - $where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where' ] : ''; - $groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : ''; - $join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : ''; - $orderby = isset( $clauses[ 'orderby' ] ) ? $clauses[ 'orderby' ] : ''; - $distinct = isset( $clauses[ 'distinct' ] ) ? $clauses[ 'distinct' ] : ''; - $fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : ''; - $limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : ''; - } - - if ( ! empty($groupby) ) - $groupby = 'GROUP BY ' . $groupby; - if ( !empty( $orderby ) ) - $orderby = 'ORDER BY ' . $orderby; - - $found_rows = ''; - if ( !$q['no_found_rows'] && !empty($limits) ) - $found_rows = 'SQL_CALC_FOUND_ROWS'; - - $this->request = $old_request = "SELECT $found_rows $distinct $fields FROM $wpdb->posts $join WHERE 1=1 $where $groupby $orderby $limits"; - - if ( !$q['suppress_filters'] ) { - /** - * Filters the completed SQL query before sending. - * - * @since 2.0.0 - * - * @param string $request The complete SQL query. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $this->request = apply_filters_ref_array( 'posts_request', array( $this->request, &$this ) ); - } - - /** - * Filters the posts array before the query takes place. - * - * Return a non-null value to bypass WordPress's default post queries. - * - * Filtering functions that require pagination information are encouraged to set - * the `found_posts` and `max_num_pages` properties of the WP_Query object, - * passed to the filter by reference. If WP_Query does not perform a database - * query, it will not have enough information to generate these values itself. - * - * @since 4.6.0 - * - * @param array|null $posts Return an array of post data to short-circuit WP's query, - * or null to allow WP to run its normal queries. - * @param WP_Query $this The WP_Query instance, passed by reference. - */ - $this->posts = apply_filters_ref_array( 'posts_pre_query', array( null, &$this ) ); - - if ( 'ids' == $q['fields'] ) { - if ( null === $this->posts ) { - $this->posts = $wpdb->get_col( $this->request ); - } - - $this->posts = array_map( 'intval', $this->posts ); - $this->post_count = count( $this->posts ); - $this->set_found_posts( $q, $limits ); - - return $this->posts; - } - - if ( 'id=>parent' == $q['fields'] ) { - if ( null === $this->posts ) { - $this->posts = $wpdb->get_results( $this->request ); - } - - $this->post_count = count( $this->posts ); - $this->set_found_posts( $q, $limits ); - - $r = array(); - foreach ( $this->posts as $key => $post ) { - $this->posts[ $key ]->ID = (int) $post->ID; - $this->posts[ $key ]->post_parent = (int) $post->post_parent; - - $r[ (int) $post->ID ] = (int) $post->post_parent; - } - - return $r; - } - - if ( null === $this->posts ) { - $split_the_query = ( $old_request == $this->request && "$wpdb->posts.*" == $fields && !empty( $limits ) && $q['posts_per_page'] < 500 ); - - /** - * Filters whether to split the query. - * - * Splitting the query will cause it to fetch just the IDs of the found posts - * (and then individually fetch each post by ID), rather than fetching every - * complete row at once. One massive result vs. many small results. - * - * @since 3.4.0 - * - * @param bool $split_the_query Whether or not to split the query. - * @param WP_Query $this The WP_Query instance. - */ - $split_the_query = apply_filters( 'split_the_query', $split_the_query, $this ); - - if ( $split_the_query ) { - // First get the IDs and then fill in the objects - - $this->request = "SELECT $found_rows $distinct $wpdb->posts.ID FROM $wpdb->posts $join WHERE 1=1 $where $groupby $orderby $limits"; - - /** - * Filters the Post IDs SQL request before sending. - * - * @since 3.4.0 - * - * @param string $request The post ID request. - * @param WP_Query $this The WP_Query instance. - */ - $this->request = apply_filters( 'posts_request_ids', $this->request, $this ); - - $ids = $wpdb->get_col( $this->request ); - - if ( $ids ) { - $this->posts = $ids; - $this->set_found_posts( $q, $limits ); - _prime_post_caches( $ids, $q['update_post_term_cache'], $q['update_post_meta_cache'] ); - } else { - $this->posts = array(); - } - } else { - $this->posts = $wpdb->get_results( $this->request ); - $this->set_found_posts( $q, $limits ); - } - } - - // Convert to WP_Post objects. - if ( $this->posts ) { - $this->posts = array_map( 'get_post', $this->posts ); - } - - if ( ! $q['suppress_filters'] ) { - /** - * Filters the raw post results array, prior to status checks. - * - * @since 2.3.0 - * - * @param array $posts The post results array. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $this->posts = apply_filters_ref_array( 'posts_results', array( $this->posts, &$this ) ); - } - - if ( !empty($this->posts) && $this->is_comment_feed && $this->is_singular ) { - /** This filter is documented in wp-includes/query.php */ - $cjoin = apply_filters_ref_array( 'comment_feed_join', array( '', &$this ) ); - - /** This filter is documented in wp-includes/query.php */ - $cwhere = apply_filters_ref_array( 'comment_feed_where', array( "WHERE comment_post_ID = '{$this->posts[0]->ID}' AND comment_approved = '1'", &$this ) ); - - /** This filter is documented in wp-includes/query.php */ - $cgroupby = apply_filters_ref_array( 'comment_feed_groupby', array( '', &$this ) ); - $cgroupby = ( ! empty( $cgroupby ) ) ? 'GROUP BY ' . $cgroupby : ''; - - /** This filter is documented in wp-includes/query.php */ - $corderby = apply_filters_ref_array( 'comment_feed_orderby', array( 'comment_date_gmt DESC', &$this ) ); - $corderby = ( ! empty( $corderby ) ) ? 'ORDER BY ' . $corderby : ''; - - /** This filter is documented in wp-includes/query.php */ - $climits = apply_filters_ref_array( 'comment_feed_limits', array( 'LIMIT ' . get_option('posts_per_rss'), &$this ) ); - - $comments_request = "SELECT $wpdb->comments.* FROM $wpdb->comments $cjoin $cwhere $cgroupby $corderby $climits"; - $comments = $wpdb->get_results($comments_request); - // Convert to WP_Comment - $this->comments = array_map( 'get_comment', $comments ); - $this->comment_count = count($this->comments); - } - - // Check post status to determine if post should be displayed. - if ( !empty($this->posts) && ($this->is_single || $this->is_page) ) { - $status = get_post_status($this->posts[0]); - if ( 'attachment' === $this->posts[0]->post_type && 0 === (int) $this->posts[0]->post_parent ) { - $this->is_page = false; - $this->is_single = true; - $this->is_attachment = true; - } - $post_status_obj = get_post_status_object($status); - - // If the post_status was specifically requested, let it pass through. - if ( !$post_status_obj->public && ! in_array( $status, $q_status ) ) { - - if ( ! is_user_logged_in() ) { - // User must be logged in to view unpublished posts. - $this->posts = array(); - } else { - if ( $post_status_obj->protected ) { - // User must have edit permissions on the draft to preview. - if ( ! current_user_can($edit_cap, $this->posts[0]->ID) ) { - $this->posts = array(); - } else { - $this->is_preview = true; - if ( 'future' != $status ) - $this->posts[0]->post_date = current_time('mysql'); - } - } elseif ( $post_status_obj->private ) { - if ( ! current_user_can($read_cap, $this->posts[0]->ID) ) - $this->posts = array(); - } else { - $this->posts = array(); - } - } - } - - if ( $this->is_preview && $this->posts && current_user_can( $edit_cap, $this->posts[0]->ID ) ) { - /** - * Filters the single post for preview mode. - * - * @since 2.7.0 - * - * @param WP_Post $post_preview The Post object. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $this->posts[0] = get_post( apply_filters_ref_array( 'the_preview', array( $this->posts[0], &$this ) ) ); - } - } - - // Put sticky posts at the top of the posts array - $sticky_posts = get_option('sticky_posts'); - if ( $this->is_home && $page <= 1 && is_array($sticky_posts) && !empty($sticky_posts) && !$q['ignore_sticky_posts'] ) { - $num_posts = count($this->posts); - $sticky_offset = 0; - // Loop over posts and relocate stickies to the front. - for ( $i = 0; $i < $num_posts; $i++ ) { - if ( in_array($this->posts[$i]->ID, $sticky_posts) ) { - $sticky_post = $this->posts[$i]; - // Remove sticky from current position - array_splice($this->posts, $i, 1); - // Move to front, after other stickies - array_splice($this->posts, $sticky_offset, 0, array($sticky_post)); - // Increment the sticky offset. The next sticky will be placed at this offset. - $sticky_offset++; - // Remove post from sticky posts array - $offset = array_search($sticky_post->ID, $sticky_posts); - unset( $sticky_posts[$offset] ); - } - } - - // If any posts have been excluded specifically, Ignore those that are sticky. - if ( !empty($sticky_posts) && !empty($q['post__not_in']) ) - $sticky_posts = array_diff($sticky_posts, $q['post__not_in']); - - // Fetch sticky posts that weren't in the query results - if ( !empty($sticky_posts) ) { - $stickies = get_posts( array( - 'post__in' => $sticky_posts, - 'post_type' => $post_type, - 'post_status' => 'publish', - 'nopaging' => true - ) ); - - foreach ( $stickies as $sticky_post ) { - array_splice( $this->posts, $sticky_offset, 0, array( $sticky_post ) ); - $sticky_offset++; - } - } - } - - // If comments have been fetched as part of the query, make sure comment meta lazy-loading is set up. - if ( ! empty( $this->comments ) ) { - wp_queue_comments_for_comment_meta_lazyload( $this->comments ); - } - - if ( ! $q['suppress_filters'] ) { - /** - * Filters the array of retrieved posts after they've been fetched and - * internally processed. - * - * @since 1.5.0 - * - * @param array $posts The array of retrieved posts. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $this->posts = apply_filters_ref_array( 'the_posts', array( $this->posts, &$this ) ); - } - - // Ensure that any posts added/modified via one of the filters above are - // of the type WP_Post and are filtered. - if ( $this->posts ) { - $this->post_count = count( $this->posts ); - - $this->posts = array_map( 'get_post', $this->posts ); - - if ( $q['cache_results'] ) - update_post_caches($this->posts, $post_type, $q['update_post_term_cache'], $q['update_post_meta_cache']); - - $this->post = reset( $this->posts ); - } else { - $this->post_count = 0; - $this->posts = array(); - } - - if ( $q['lazy_load_term_meta'] ) { - wp_queue_posts_for_term_meta_lazyload( $this->posts ); - } - - return $this->posts; - } - - /** - * Set up the amount of found posts and the number of pages (if limit clause was used) - * for the current query. - * - * @since 3.5.0 - * @access private - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param array $q Query variables. - * @param string $limits LIMIT clauses of the query. - */ - private function set_found_posts( $q, $limits ) { - global $wpdb; - - // Bail if posts is an empty array. Continue if posts is an empty string, - // null, or false to accommodate caching plugins that fill posts later. - if ( $q['no_found_rows'] || ( is_array( $this->posts ) && ! $this->posts ) ) - return; - - if ( ! empty( $limits ) ) { - /** - * Filters the query to run for retrieving the found posts. - * - * @since 2.1.0 - * - * @param string $found_posts The query to run to find the found posts. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $this->found_posts = $wpdb->get_var( apply_filters_ref_array( 'found_posts_query', array( 'SELECT FOUND_ROWS()', &$this ) ) ); - } else { - $this->found_posts = count( $this->posts ); - } - - /** - * Filters the number of found posts for the query. - * - * @since 2.1.0 - * - * @param int $found_posts The number of posts found. - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - $this->found_posts = apply_filters_ref_array( 'found_posts', array( $this->found_posts, &$this ) ); - - if ( ! empty( $limits ) ) - $this->max_num_pages = ceil( $this->found_posts / $q['posts_per_page'] ); - } - - /** - * Set up the next post and iterate current post index. - * - * @since 1.5.0 - * @access public - * - * @return WP_Post Next post. - */ - public function next_post() { - - $this->current_post++; - - $this->post = $this->posts[$this->current_post]; - return $this->post; - } - - /** - * Sets up the current post. - * - * Retrieves the next post, sets up the post, sets the 'in the loop' - * property to true. - * - * @since 1.5.0 - * @access public - * - * @global WP_Post $post - */ - public function the_post() { - global $post; - $this->in_the_loop = true; - - if ( $this->current_post == -1 ) // loop has just started - /** - * Fires once the loop is started. - * - * @since 2.0.0 - * - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - do_action_ref_array( 'loop_start', array( &$this ) ); - - $post = $this->next_post(); - $this->setup_postdata( $post ); - } - - /** - * Determines whether there are more posts available in the loop. - * - * Calls the {@see 'loop_end'} action when the loop is complete. - * - * @since 1.5.0 - * @access public - * - * @return bool True if posts are available, false if end of loop. - */ - public function have_posts() { - if ( $this->current_post + 1 < $this->post_count ) { - return true; - } elseif ( $this->current_post + 1 == $this->post_count && $this->post_count > 0 ) { - /** - * Fires once the loop has ended. - * - * @since 2.0.0 - * - * @param WP_Query &$this The WP_Query instance (passed by reference). - */ - do_action_ref_array( 'loop_end', array( &$this ) ); - // Do some cleaning up after the loop - $this->rewind_posts(); - } - - $this->in_the_loop = false; - return false; - } - - /** - * Rewind the posts and reset post index. - * - * @since 1.5.0 - * @access public - */ - public function rewind_posts() { - $this->current_post = -1; - if ( $this->post_count > 0 ) { - $this->post = $this->posts[0]; - } - } - - /** - * Iterate current comment index and return WP_Comment object. - * - * @since 2.2.0 - * @access public - * - * @return WP_Comment Comment object. - */ - public function next_comment() { - $this->current_comment++; - - $this->comment = $this->comments[$this->current_comment]; - return $this->comment; - } - - /** - * Sets up the current comment. - * - * @since 2.2.0 - * @access public - * @global WP_Comment $comment Current comment. - */ - public function the_comment() { - global $comment; - - $comment = $this->next_comment(); - - if ( $this->current_comment == 0 ) { - /** - * Fires once the comment loop is started. - * - * @since 2.2.0 - */ - do_action( 'comment_loop_start' ); - } - } - - /** - * Whether there are more comments available. - * - * Automatically rewinds comments when finished. - * - * @since 2.2.0 - * @access public - * - * @return bool True, if more comments. False, if no more posts. - */ - public function have_comments() { - if ( $this->current_comment + 1 < $this->comment_count ) { - return true; - } elseif ( $this->current_comment + 1 == $this->comment_count ) { - $this->rewind_comments(); - } - - return false; - } - - /** - * Rewind the comments, resets the comment index and comment to first. - * - * @since 2.2.0 - * @access public - */ - public function rewind_comments() { - $this->current_comment = -1; - if ( $this->comment_count > 0 ) { - $this->comment = $this->comments[0]; - } - } - - /** - * Sets up the WordPress query by parsing query string. - * - * @since 1.5.0 - * @access public - * - * @param string $query URL query string. - * @return array List of posts. - */ - public function query( $query ) { - $this->init(); - $this->query = $this->query_vars = wp_parse_args( $query ); - return $this->get_posts(); - } - - /** - * Retrieve queried object. - * - * If queried object is not set, then the queried object will be set from - * the category, tag, taxonomy, posts page, single post, page, or author - * query variable. After it is set up, it will be returned. - * - * @since 1.5.0 - * @access public - * - * @return object - */ - public function get_queried_object() { - if ( isset($this->queried_object) ) - return $this->queried_object; - - $this->queried_object = null; - $this->queried_object_id = null; - - if ( $this->is_category || $this->is_tag || $this->is_tax ) { - if ( $this->is_category ) { - if ( $this->get( 'cat' ) ) { - $term = get_term( $this->get( 'cat' ), 'category' ); - } elseif ( $this->get( 'category_name' ) ) { - $term = get_term_by( 'slug', $this->get( 'category_name' ), 'category' ); - } - } elseif ( $this->is_tag ) { - if ( $this->get( 'tag_id' ) ) { - $term = get_term( $this->get( 'tag_id' ), 'post_tag' ); - } elseif ( $this->get( 'tag' ) ) { - $term = get_term_by( 'slug', $this->get( 'tag' ), 'post_tag' ); - } - } else { - // For other tax queries, grab the first term from the first clause. - $tax_query_in_and = wp_list_filter( $this->tax_query->queried_terms, array( 'operator' => 'NOT IN' ), 'NOT' ); - - if ( ! empty( $tax_query_in_and ) ) { - $queried_taxonomies = array_keys( $tax_query_in_and ); - $matched_taxonomy = reset( $queried_taxonomies ); - $query = $tax_query_in_and[ $matched_taxonomy ]; - - if ( $query['terms'] ) { - if ( 'term_id' == $query['field'] ) { - $term = get_term( reset( $query['terms'] ), $matched_taxonomy ); - } else { - $term = get_term_by( $query['field'], reset( $query['terms'] ), $matched_taxonomy ); - } - } - } - } - - if ( ! empty( $term ) && ! is_wp_error( $term ) ) { - $this->queried_object = $term; - $this->queried_object_id = (int) $term->term_id; - - if ( $this->is_category && 'category' === $this->queried_object->taxonomy ) - _make_cat_compat( $this->queried_object ); - } - } elseif ( $this->is_post_type_archive ) { - $post_type = $this->get( 'post_type' ); - if ( is_array( $post_type ) ) - $post_type = reset( $post_type ); - $this->queried_object = get_post_type_object( $post_type ); - } elseif ( $this->is_posts_page ) { - $page_for_posts = get_option('page_for_posts'); - $this->queried_object = get_post( $page_for_posts ); - $this->queried_object_id = (int) $this->queried_object->ID; - } elseif ( $this->is_singular && ! empty( $this->post ) ) { - $this->queried_object = $this->post; - $this->queried_object_id = (int) $this->post->ID; - } elseif ( $this->is_author ) { - $this->queried_object_id = (int) $this->get('author'); - $this->queried_object = get_userdata( $this->queried_object_id ); - } - - return $this->queried_object; - } - - /** - * Retrieve ID of the current queried object. - * - * @since 1.5.0 - * @access public - * - * @return int - */ - public function get_queried_object_id() { - $this->get_queried_object(); - - if ( isset($this->queried_object_id) ) { - return $this->queried_object_id; - } - - return 0; - } - - /** - * Constructor. - * - * Sets up the WordPress query, if parameter is not empty. - * - * @since 1.5.0 - * @access public - * - * @param string|array $query URL query string or array of vars. - */ - public function __construct($query = '') { - if ( ! empty($query) ) { - $this->query($query); - } - } - - /** - * Make private properties readable for backward 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 checkable for backward 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/protected methods readable for backward 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 ( in_array( $name, $this->compat_methods ) ) { - return call_user_func_array( array( $this, $name ), $arguments ); - } - return false; - } - - /** - * Is the query for an existing archive page? - * - * Month, Year, Category, Author, Post Type archive... - * - * @since 3.1.0 - * - * @return bool - */ - public function is_archive() { - return (bool) $this->is_archive; - } - - /** - * Is the query for an existing post type archive page? - * - * @since 3.1.0 - * - * @param mixed $post_types Optional. Post type or array of posts types to check against. - * @return bool - */ - public function is_post_type_archive( $post_types = '' ) { - if ( empty( $post_types ) || ! $this->is_post_type_archive ) - return (bool) $this->is_post_type_archive; - - $post_type = $this->get( 'post_type' ); - if ( is_array( $post_type ) ) - $post_type = reset( $post_type ); - $post_type_object = get_post_type_object( $post_type ); - - return in_array( $post_type_object->name, (array) $post_types ); - } - - /** - * Is the query for an existing attachment page? - * - * @since 3.1.0 - * - * @param mixed $attachment Attachment ID, title, slug, or array of such. - * @return bool - */ - public function is_attachment( $attachment = '' ) { - if ( ! $this->is_attachment ) { - return false; - } - - if ( empty( $attachment ) ) { - return true; - } - - $attachment = array_map( 'strval', (array) $attachment ); - - $post_obj = $this->get_queried_object(); - - if ( in_array( (string) $post_obj->ID, $attachment ) ) { - return true; - } elseif ( in_array( $post_obj->post_title, $attachment ) ) { - return true; - } elseif ( in_array( $post_obj->post_name, $attachment ) ) { - return true; - } - return false; - } - - /** - * Is the query for an existing author archive page? - * - * If the $author parameter is specified, this function will additionally - * check if the query is for one of the authors specified. - * - * @since 3.1.0 - * - * @param mixed $author Optional. User ID, nickname, nicename, or array of User IDs, nicknames, and nicenames - * @return bool - */ - public function is_author( $author = '' ) { - if ( !$this->is_author ) - return false; - - if ( empty($author) ) - return true; - - $author_obj = $this->get_queried_object(); - - $author = array_map( 'strval', (array) $author ); - - if ( in_array( (string) $author_obj->ID, $author ) ) - return true; - elseif ( in_array( $author_obj->nickname, $author ) ) - return true; - elseif ( in_array( $author_obj->user_nicename, $author ) ) - return true; - - return false; - } - - /** - * Is the query for an existing category archive page? - * - * If the $category parameter is specified, this function will additionally - * check if the query is for one of the categories specified. - * - * @since 3.1.0 - * - * @param mixed $category Optional. Category ID, name, slug, or array of Category IDs, names, and slugs. - * @return bool - */ - public function is_category( $category = '' ) { - if ( !$this->is_category ) - return false; - - if ( empty($category) ) - return true; - - $cat_obj = $this->get_queried_object(); - - $category = array_map( 'strval', (array) $category ); - - if ( in_array( (string) $cat_obj->term_id, $category ) ) - return true; - elseif ( in_array( $cat_obj->name, $category ) ) - return true; - elseif ( in_array( $cat_obj->slug, $category ) ) - return true; - - return false; - } - - /** - * Is the query for an existing tag archive page? - * - * If the $tag parameter is specified, this function will additionally - * check if the query is for one of the tags specified. - * - * @since 3.1.0 - * - * @param mixed $tag Optional. Tag ID, name, slug, or array of Tag IDs, names, and slugs. - * @return bool - */ - public function is_tag( $tag = '' ) { - if ( ! $this->is_tag ) - return false; - - if ( empty( $tag ) ) - return true; - - $tag_obj = $this->get_queried_object(); - - $tag = array_map( 'strval', (array) $tag ); - - if ( in_array( (string) $tag_obj->term_id, $tag ) ) - return true; - elseif ( in_array( $tag_obj->name, $tag ) ) - return true; - elseif ( in_array( $tag_obj->slug, $tag ) ) - return true; - - return false; - } - - /** - * Is the query for an existing custom taxonomy archive page? - * - * If the $taxonomy parameter is specified, this function will additionally - * check if the query is for that specific $taxonomy. - * - * If the $term parameter is specified in addition to the $taxonomy parameter, - * this function will additionally check if the query is for one of the terms - * specified. - * - * @since 3.1.0 - * - * @global array $wp_taxonomies - * - * @param mixed $taxonomy Optional. Taxonomy slug or slugs. - * @param mixed $term Optional. Term ID, name, slug or array of Term IDs, names, and slugs. - * @return bool True for custom taxonomy archive pages, false for built-in taxonomies (category and tag archives). - */ - public function is_tax( $taxonomy = '', $term = '' ) { - global $wp_taxonomies; - - if ( !$this->is_tax ) - return false; - - if ( empty( $taxonomy ) ) - return true; - - $queried_object = $this->get_queried_object(); - $tax_array = array_intersect( array_keys( $wp_taxonomies ), (array) $taxonomy ); - $term_array = (array) $term; - - // Check that the taxonomy matches. - if ( ! ( isset( $queried_object->taxonomy ) && count( $tax_array ) && in_array( $queried_object->taxonomy, $tax_array ) ) ) - return false; - - // Only a Taxonomy provided. - if ( empty( $term ) ) - return true; - - return isset( $queried_object->term_id ) && - count( array_intersect( - array( $queried_object->term_id, $queried_object->name, $queried_object->slug ), - $term_array - ) ); - } - - /** - * Whether the current URL is within the comments popup window. - * - * @since 3.1.0 - * @deprecated 4.5.0 - * - * @return bool - */ - public function is_comments_popup() { - _deprecated_function( __FUNCTION__, '4.5.0' ); - - return false; - } - - /** - * Is the query for an existing date archive? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_date() { - return (bool) $this->is_date; - } - - /** - * Is the query for an existing day archive? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_day() { - return (bool) $this->is_day; - } - - /** - * Is the query for a feed? - * - * @since 3.1.0 - * - * @param string|array $feeds Optional feed types to check. - * @return bool - */ - public function is_feed( $feeds = '' ) { - if ( empty( $feeds ) || ! $this->is_feed ) - return (bool) $this->is_feed; - $qv = $this->get( 'feed' ); - if ( 'feed' == $qv ) - $qv = get_default_feed(); - return in_array( $qv, (array) $feeds ); - } - - /** - * Is the query for a comments feed? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_comment_feed() { - return (bool) $this->is_comment_feed; - } - - /** - * Is the query for the front page of the site? - * - * This is for what is displayed at your site's main URL. - * - * Depends on the site's "Front page displays" Reading Settings 'show_on_front' and 'page_on_front'. - * - * If you set a static page for the front page of your site, this function will return - * true when viewing that page. - * - * Otherwise the same as @see WP_Query::is_home() - * - * @since 3.1.0 - * - * @return bool True, if front of site. - */ - public function is_front_page() { - // most likely case - if ( 'posts' == get_option( 'show_on_front') && $this->is_home() ) - return true; - elseif ( 'page' == get_option( 'show_on_front') && get_option( 'page_on_front' ) && $this->is_page( get_option( 'page_on_front' ) ) ) - return true; - else - return false; - } - - /** - * Is the query for the blog homepage? - * - * This is the page which shows the time based blog content of your site. - * - * Depends on the site's "Front page displays" Reading Settings 'show_on_front' and 'page_for_posts'. - * - * If you set a static page for the front page of your site, this function will return - * true only on the page you set as the "Posts page". - * - * @see WP_Query::is_front_page() - * - * @since 3.1.0 - * - * @return bool True if blog view homepage. - */ - public function is_home() { - return (bool) $this->is_home; - } - - /** - * Is the query for an existing month archive? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_month() { - return (bool) $this->is_month; - } - - /** - * Is the query for an existing single page? - * - * If the $page parameter is specified, this function will additionally - * check if the query is for one of the pages specified. - * - * @see WP_Query::is_single() - * @see WP_Query::is_singular() - * - * @since 3.1.0 - * - * @param int|string|array $page Optional. Page ID, title, slug, path, or array of such. Default empty. - * @return bool Whether the query is for an existing single page. - */ - public function is_page( $page = '' ) { - if ( !$this->is_page ) - return false; - - if ( empty( $page ) ) - return true; - - $page_obj = $this->get_queried_object(); - - $page = array_map( 'strval', (array) $page ); - - if ( in_array( (string) $page_obj->ID, $page ) ) { - return true; - } elseif ( in_array( $page_obj->post_title, $page ) ) { - return true; - } elseif ( in_array( $page_obj->post_name, $page ) ) { - return true; - } else { - foreach ( $page as $pagepath ) { - if ( ! strpos( $pagepath, '/' ) ) { - continue; - } - $pagepath_obj = get_page_by_path( $pagepath ); - - if ( $pagepath_obj && ( $pagepath_obj->ID == $page_obj->ID ) ) { - return true; - } - } - } - - return false; - } - - /** - * Is the query for paged result and not for the first page? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_paged() { - return (bool) $this->is_paged; - } - - /** - * Is the query for a post or page preview? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_preview() { - return (bool) $this->is_preview; - } - - /** - * Is the query for the robots file? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_robots() { - return (bool) $this->is_robots; - } - - /** - * Is the query for a search? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_search() { - return (bool) $this->is_search; - } - - /** - * Is the query for an existing single post? - * - * Works for any post type, except attachments and pages - * - * If the $post parameter is specified, this function will additionally - * check if the query is for one of the Posts specified. - * - * @see WP_Query::is_page() - * @see WP_Query::is_singular() - * - * @since 3.1.0 - * - * @param int|string|array $post Optional. Post ID, title, slug, path, or array of such. Default empty. - * @return bool Whether the query is for an existing single post. - */ - public function is_single( $post = '' ) { - if ( !$this->is_single ) - return false; - - if ( empty($post) ) - return true; - - $post_obj = $this->get_queried_object(); - - $post = array_map( 'strval', (array) $post ); - - if ( in_array( (string) $post_obj->ID, $post ) ) { - return true; - } elseif ( in_array( $post_obj->post_title, $post ) ) { - return true; - } elseif ( in_array( $post_obj->post_name, $post ) ) { - return true; - } else { - foreach ( $post as $postpath ) { - if ( ! strpos( $postpath, '/' ) ) { - continue; - } - $postpath_obj = get_page_by_path( $postpath, OBJECT, $post_obj->post_type ); - - if ( $postpath_obj && ( $postpath_obj->ID == $post_obj->ID ) ) { - return true; - } - } - } - return false; - } - - /** - * Is the query for an existing single post of any post type (post, attachment, page, ... )? - * - * If the $post_types parameter is specified, this function will additionally - * check if the query is for one of the Posts Types specified. - * - * @see WP_Query::is_page() - * @see WP_Query::is_single() - * - * @since 3.1.0 - * - * @param string|array $post_types Optional. Post type or array of post types. Default empty. - * @return bool Whether the query is for an existing single post of any of the given post types. - */ - public function is_singular( $post_types = '' ) { - if ( empty( $post_types ) || !$this->is_singular ) - return (bool) $this->is_singular; - - $post_obj = $this->get_queried_object(); - - return in_array( $post_obj->post_type, (array) $post_types ); - } - - /** - * Is the query for a specific time? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_time() { - return (bool) $this->is_time; - } - - /** - * Is the query for a trackback endpoint call? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_trackback() { - return (bool) $this->is_trackback; - } - - /** - * Is the query for an existing year archive? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_year() { - return (bool) $this->is_year; - } - - /** - * Is the query a 404 (returns no results)? - * - * @since 3.1.0 - * - * @return bool - */ - public function is_404() { - return (bool) $this->is_404; - } - - /** - * Is the query for an embedded post? - * - * @since 4.4.0 - * - * @return bool - */ - public function is_embed() { - return (bool) $this->is_embed; - } - - /** - * Is the query the main query? - * - * @since 3.3.0 - * - * @global WP_Query $wp_query Global WP_Query instance. - * - * @return bool - */ - public function is_main_query() { - global $wp_the_query; - return $wp_the_query === $this; - } - - /** - * Set up global post data. - * - * @since 4.1.0 - * @since 4.4.0 Added the ability to pass a post ID to `$post`. - * - * @global int $id - * @global WP_User $authordata - * @global string|int|bool $currentday - * @global string|int|bool $currentmonth - * @global int $page - * @global array $pages - * @global int $multipage - * @global int $more - * @global int $numpages - * - * @param WP_Post|object|int $post WP_Post instance or Post ID/object. - * @return true True when finished. - */ - public function setup_postdata( $post ) { - global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages; - - if ( ! ( $post instanceof WP_Post ) ) { - $post = get_post( $post ); - } - - if ( ! $post ) { - return; - } - - $id = (int) $post->ID; - - $authordata = get_userdata($post->post_author); - - $currentday = mysql2date('d.m.y', $post->post_date, false); - $currentmonth = mysql2date('m', $post->post_date, false); - $numpages = 1; - $multipage = 0; - $page = $this->get( 'page' ); - if ( ! $page ) - $page = 1; - - /* - * Force full post content when viewing the permalink for the $post, - * or when on an RSS feed. Otherwise respect the 'more' tag. - */ - if ( $post->ID === get_queried_object_id() && ( $this->is_page() || $this->is_single() ) ) { - $more = 1; - } elseif ( $this->is_feed() ) { - $more = 1; - } else { - $more = 0; - } - - $content = $post->post_content; - if ( false !== strpos( $content, '' ) ) { - $content = str_replace( "\n\n", '', $content ); - $content = str_replace( "\n", '', $content ); - $content = str_replace( "\n", '', $content ); - - // Ignore nextpage at the beginning of the content. - if ( 0 === strpos( $content, '' ) ) - $content = substr( $content, 15 ); - - $pages = explode('', $content); - } else { - $pages = array( $post->post_content ); - } - - /** - * Filters the "pages" derived from splitting the post content. - * - * "Pages" are determined by splitting the post content based on the presence - * of `` tags. - * - * @since 4.4.0 - * - * @param array $pages Array of "pages" derived from the post content. - * of `` tags.. - * @param WP_Post $post Current post object. - */ - $pages = apply_filters( 'content_pagination', $pages, $post ); - - $numpages = count( $pages ); - - if ( $numpages > 1 ) { - if ( $page > 1 ) { - $more = 1; - } - $multipage = 1; - } else { - $multipage = 0; - } - - /** - * Fires once the post data has been setup. - * - * @since 2.8.0 - * @since 4.1.0 Introduced `$this` parameter. - * - * @param WP_Post &$post The Post object (passed by reference). - * @param WP_Query &$this The current Query object (passed by reference). - */ - do_action_ref_array( 'the_post', array( &$post, &$this ) ); - - return true; - } - /** - * After looping through a nested query, this function - * restores the $post global to the current post in this query. - * - * @since 3.7.0 - * - * @global WP_Post $post - */ - public function reset_postdata() { - if ( ! empty( $this->post ) ) { - $GLOBALS['post'] = $this->post; - $this->setup_postdata( $this->post ); - } - } - - /** - * Lazyload term meta for posts in the loop. - * - * @since 4.4.0 - * @deprecated 4.5.0 See wp_queue_posts_for_term_meta_lazyload(). - * - * @param mixed $check - * @param int $term_id - * @return mixed - */ - public function lazyload_term_meta( $check, $term_id ) { - _deprecated_function( __METHOD__, '4.5.0' ); - return $check; - } - - /** - * Lazyload comment meta for comments in the loop. - * - * @since 4.4.0 - * @deprecated 4.5.0 See wp_queue_comments_for_comment_meta_lazyload(). - * - * @param mixed $check - * @param int $comment_id - * @return mixed - */ - public function lazyload_comment_meta( $check, $comment_id ) { - _deprecated_function( __METHOD__, '4.5.0' ); - return $check; - } -} - /** * Redirect old slugs to the correct permalink. * @@ -4927,13 +844,10 @@ class WP_Query { * * @since 2.1.0 * - * @global WP_Query $wp_query Global WP_Query instance. - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb WordPress database abstraction object. */ function wp_old_slug_redirect() { - global $wp_query; - - if ( is_404() && '' !== $wp_query->query_vars['name'] ) : + if ( is_404() && '' !== get_query_var( 'name' ) ) { global $wpdb; // Guess the current post_type based on the query vars. @@ -4941,42 +855,48 @@ function wp_old_slug_redirect() { $post_type = get_query_var( 'post_type' ); } elseif ( get_query_var( 'attachment' ) ) { $post_type = 'attachment'; - } elseif ( ! empty( $wp_query->query_vars['pagename'] ) ) { + } elseif ( get_query_var( 'pagename' ) ) { $post_type = 'page'; } else { $post_type = 'post'; } if ( is_array( $post_type ) ) { - if ( count( $post_type ) > 1 ) + if ( count( $post_type ) > 1 ) { return; + } $post_type = reset( $post_type ); } // Do not attempt redirect for hierarchical post types - if ( is_post_type_hierarchical( $post_type ) ) + if ( is_post_type_hierarchical( $post_type ) ) { return; + } - $query = $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta, $wpdb->posts WHERE ID = post_id AND post_type = %s AND meta_key = '_wp_old_slug' AND meta_value = %s", $post_type, $wp_query->query_vars['name']); + $query = $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta, $wpdb->posts WHERE ID = post_id AND post_type = %s AND meta_key = '_wp_old_slug' AND meta_value = %s", $post_type, get_query_var( 'name' ) ); // if year, monthnum, or day have been specified, make our query more precise // just in case there are multiple identical _wp_old_slug values - if ( '' != $wp_query->query_vars['year'] ) - $query .= $wpdb->prepare(" AND YEAR(post_date) = %d", $wp_query->query_vars['year']); - if ( '' != $wp_query->query_vars['monthnum'] ) - $query .= $wpdb->prepare(" AND MONTH(post_date) = %d", $wp_query->query_vars['monthnum']); - if ( '' != $wp_query->query_vars['day'] ) - $query .= $wpdb->prepare(" AND DAYOFMONTH(post_date) = %d", $wp_query->query_vars['day']); + if ( get_query_var( 'year' ) ) { + $query .= $wpdb->prepare(" AND YEAR(post_date) = %d", get_query_var( 'year' ) ); + } + if ( get_query_var( 'monthnum' ) ) { + $query .= $wpdb->prepare(" AND MONTH(post_date) = %d", get_query_var( 'monthnum' ) ); + } + if ( get_query_var( 'day' ) ) { + $query .= $wpdb->prepare(" AND DAYOFMONTH(post_date) = %d", get_query_var( 'day' ) ); + } - $id = (int) $wpdb->get_var($query); + $id = (int) $wpdb->get_var( $query ); - if ( ! $id ) + if ( ! $id ) { return; + } $link = get_permalink( $id ); - if ( isset( $GLOBALS['wp_query']->query_vars['paged'] ) && $GLOBALS['wp_query']->query_vars['paged'] > 1 ) { - $link = user_trailingslashit( trailingslashit( $link ) . 'page/' . $GLOBALS['wp_query']->query_vars['paged'] ); + if ( get_query_var( 'paged' ) > 1 ) { + $link = user_trailingslashit( trailingslashit( $link ) . 'page/' . get_query_var( 'paged' ) ); } elseif( is_embed() ) { $link = user_trailingslashit( trailingslashit( $link ) . 'embed' ); } @@ -4996,7 +916,7 @@ function wp_old_slug_redirect() { wp_redirect( $link, 301 ); // Permanent redirect exit; - endif; + } } /** diff --git a/wp/wp-includes/rest-api.php b/wp/wp-includes/rest-api.php index 13bfa596..e5efb74f 100644 --- a/wp/wp-includes/rest-api.php +++ b/wp/wp-includes/rest-api.php @@ -70,6 +70,48 @@ function register_rest_route( $namespace, $route, $args = array(), $override = f return true; } +/** + * Registers a new field on an existing WordPress object type. + * + * @since 4.7.0 + * + * @global array $wp_rest_additional_fields Holds registered fields, organized + * by object type. + * + * @param string|array $object_type Object(s) the field is being registered + * to, "post"|"term"|"comment" etc. + * @param string $attribute The attribute name. + * @param array $args { + * Optional. An array of arguments used to handle the registered field. + * + * @type string|array|null $get_callback Optional. The callback function used to retrieve the field + * value. Default is 'null', the field will not be returned in + * the response. + * @type string|array|null $update_callback Optional. The callback function used to set and update the + * field value. Default is 'null', the value cannot be set or + * updated. + * @type string|array|null $schema Optional. The callback function used to create the schema for + * this field. Default is 'null', no schema entry will be returned. + * } + */ +function register_rest_field( $object_type, $attribute, $args = array() ) { + $defaults = array( + 'get_callback' => null, + 'update_callback' => null, + 'schema' => null, + ); + + $args = wp_parse_args( $args, $defaults ); + + global $wp_rest_additional_fields; + + $object_types = (array) $object_type; + + foreach ( $object_types as $object_type ) { + $wp_rest_additional_fields[ $object_type ][ $attribute ] = $args; + } +} + /** * Registers rewrite rules for the API. * @@ -91,10 +133,15 @@ function rest_api_init() { * @since 4.4.0 * * @see add_rewrite_rule() + * @global WP_Rewrite $wp_rewrite */ function rest_api_register_rewrites() { + global $wp_rewrite; + add_rewrite_rule( '^' . rest_get_url_prefix() . '/?$','index.php?rest_route=/','top' ); add_rewrite_rule( '^' . rest_get_url_prefix() . '/(.*)?','index.php?rest_route=/$matches[1]','top' ); + add_rewrite_rule( '^' . $wp_rewrite->index . '/' . rest_get_url_prefix() . '/?$','index.php?rest_route=/','top' ); + add_rewrite_rule( '^' . $wp_rewrite->index . '/' . rest_get_url_prefix() . '/(.*)?','index.php?rest_route=/$matches[1]','top' ); } /** @@ -119,6 +166,71 @@ function rest_api_default_filters() { add_filter( 'rest_pre_dispatch', 'rest_handle_options_request', 10, 3 ); } +/** + * Registers default REST API routes. + * + * @since 4.7.0 + */ +function create_initial_rest_routes() { + foreach ( get_post_types( array( 'show_in_rest' => true ), 'objects' ) as $post_type ) { + $class = ! empty( $post_type->rest_controller_class ) ? $post_type->rest_controller_class : 'WP_REST_Posts_Controller'; + + if ( ! class_exists( $class ) ) { + continue; + } + $controller = new $class( $post_type->name ); + if ( ! is_subclass_of( $controller, 'WP_REST_Controller' ) ) { + continue; + } + + $controller->register_routes(); + + if ( post_type_supports( $post_type->name, 'revisions' ) ) { + $revisions_controller = new WP_REST_Revisions_Controller( $post_type->name ); + $revisions_controller->register_routes(); + } + } + + // Post types. + $controller = new WP_REST_Post_Types_Controller; + $controller->register_routes(); + + // Post statuses. + $controller = new WP_REST_Post_Statuses_Controller; + $controller->register_routes(); + + // Taxonomies. + $controller = new WP_REST_Taxonomies_Controller; + $controller->register_routes(); + + // Terms. + foreach ( get_taxonomies( array( 'show_in_rest' => true ), 'object' ) as $taxonomy ) { + $class = ! empty( $taxonomy->rest_controller_class ) ? $taxonomy->rest_controller_class : 'WP_REST_Terms_Controller'; + + if ( ! class_exists( $class ) ) { + continue; + } + $controller = new $class( $taxonomy->name ); + if ( ! is_subclass_of( $controller, 'WP_REST_Controller' ) ) { + continue; + } + + $controller->register_routes(); + } + + // Users. + $controller = new WP_REST_Users_Controller; + $controller->register_routes(); + + // Comments. + $controller = new WP_REST_Comments_Controller; + $controller->register_routes(); + + // Settings. + $controller = new WP_REST_Settings_Controller; + $controller->register_routes(); +} + /** * Loads the REST API. * @@ -144,7 +256,7 @@ function rest_api_loaded() { $server = rest_get_server(); // Fire off the request. - $server->serve_request( $GLOBALS['wp']->query_vars['rest_route'] ); + $server->serve_request( untrailingslashit( $GLOBALS['wp']->query_vars['rest_route'] ) ); // We're done. die(); @@ -176,6 +288,7 @@ function rest_get_url_prefix() { * @since 4.4.0 * * @todo Check if this is even necessary + * @global WP_Rewrite $wp_rewrite * * @param int $blog_id Optional. Blog ID. Default of null returns URL for current blog. * @param string $path Optional. REST route. Default '/'. @@ -188,7 +301,14 @@ function get_rest_url( $blog_id = null, $path = '/', $scheme = 'rest' ) { } if ( is_multisite() && get_blog_option( $blog_id, 'permalink_structure' ) || get_option( 'permalink_structure' ) ) { - $url = get_home_url( $blog_id, rest_get_url_prefix(), $scheme ); + global $wp_rewrite; + + if ( $wp_rewrite->using_index_permalinks() ) { + $url = get_home_url( $blog_id, $wp_rewrite->index . '/' . rest_get_url_prefix(), $scheme ); + } else { + $url = get_home_url( $blog_id, rest_get_url_prefix(), $scheme ); + } + $url .= '/' . ltrim( $path, '/' ); } else { $url = trailingslashit( get_home_url( $blog_id, '', $scheme ) ); @@ -323,8 +443,9 @@ function rest_ensure_request( $request ) { * @since 4.4.0 * * @param WP_Error|WP_HTTP_Response|mixed $response Response to check. - * @return mixed WP_Error if response generated an error, WP_HTTP_Response if response - * is a already an instance, otherwise returns a new WP_REST_Response instance. + * @return WP_REST_Response|mixed If response generated an error, WP_Error, if response + * is already an instance, WP_HTTP_Response, otherwise + * returns a new WP_REST_Response instance. */ function rest_ensure_response( $response ) { if ( is_wp_error( $response ) ) { @@ -393,8 +514,9 @@ function rest_send_cors_headers( $value ) { if ( $origin ) { header( 'Access-Control-Allow-Origin: ' . esc_url_raw( $origin ) ); - header( 'Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE' ); + header( 'Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, PATCH, DELETE' ); header( 'Access-Control-Allow-Credentials: true' ); + header( 'Vary: Origin' ); } return $value; @@ -421,10 +543,8 @@ function rest_handle_options_request( $response, $handler, $request ) { $response = new WP_REST_Response(); $data = array(); - $accept = array(); - foreach ( $handler->get_routes() as $route => $endpoints ) { - $match = preg_match( '@^' . $route . '$@i', $request->get_route(), $args ); + $match = preg_match( '@^' . $route . '$@i', $request->get_route() ); if ( ! $match ) { continue; @@ -671,3 +791,379 @@ function rest_get_date_with_gmt( $date, $force_utc = false ) { return array( $local, $utc ); } + +/** + * Returns a contextual HTTP error code for authorization failure. + * + * @since 4.7.0 + * + * @return integer 401 if the user is not logged in, 403 if the user is logged in. + */ +function rest_authorization_required_code() { + return is_user_logged_in() ? 403 : 401; +} + +/** + * Validate a request argument based on details registered to the route. + * + * @since 4.7.0 + * + * @param mixed $value + * @param WP_REST_Request $request + * @param string $param + * @return WP_Error|boolean + */ +function rest_validate_request_arg( $value, $request, $param ) { + $attributes = $request->get_attributes(); + if ( ! isset( $attributes['args'][ $param ] ) || ! is_array( $attributes['args'][ $param ] ) ) { + return true; + } + $args = $attributes['args'][ $param ]; + + return rest_validate_value_from_schema( $value, $args, $param ); +} + +/** + * Sanitize a request argument based on details registered to the route. + * + * @since 4.7.0 + * + * @param mixed $value + * @param WP_REST_Request $request + * @param string $param + * @return mixed + */ +function rest_sanitize_request_arg( $value, $request, $param ) { + $attributes = $request->get_attributes(); + if ( ! isset( $attributes['args'][ $param ] ) || ! is_array( $attributes['args'][ $param ] ) ) { + return $value; + } + $args = $attributes['args'][ $param ]; + + return rest_sanitize_value_from_schema( $value, $args ); +} + +/** + * Parse a request argument based on details registered to the route. + * + * Runs a validation check and sanitizes the value, primarily to be used via + * the `sanitize_callback` arguments in the endpoint args registration. + * + * @since 4.7.0 + * + * @param mixed $value + * @param WP_REST_Request $request + * @param string $param + * @return mixed + */ +function rest_parse_request_arg( $value, $request, $param ) { + $is_valid = rest_validate_request_arg( $value, $request, $param ); + + if ( is_wp_error( $is_valid ) ) { + return $is_valid; + } + + $value = rest_sanitize_request_arg( $value, $request, $param ); + + return $value; +} + +/** + * Determines if an IP address is valid. + * + * Handles both IPv4 and IPv6 addresses. + * + * @since 4.7.0 + * + * @param string $ip IP address. + * @return string|false The valid IP address, otherwise false. + */ +function rest_is_ip_address( $ip ) { + $ipv4_pattern = '/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/'; + + if ( ! preg_match( $ipv4_pattern, $ip ) && ! Requests_IPv6::check_ipv6( $ip ) ) { + return false; + } + + return $ip; +} + +/** + * Changes a boolean-like value into the proper boolean value. + * + * @since 4.7.0 + * + * @param bool|string|int $value The value being evaluated. + * @return boolean Returns the proper associated boolean value. + */ +function rest_sanitize_boolean( $value ) { + // String values are translated to `true`; make sure 'false' is false. + if ( is_string( $value ) ) { + $value = strtolower( $value ); + if ( in_array( $value, array( 'false', '0' ), true ) ) { + $value = false; + } + } + + // Everything else will map nicely to boolean. + return (boolean) $value; +} + +/** + * Determines if a given value is boolean-like. + * + * @since 4.7.0 + * + * @param bool|string $maybe_bool The value being evaluated. + * @return boolean True if a boolean, otherwise false. + */ +function rest_is_boolean( $maybe_bool ) { + if ( is_bool( $maybe_bool ) ) { + return true; + } + + if ( is_string( $maybe_bool ) ) { + $maybe_bool = strtolower( $maybe_bool ); + + $valid_boolean_values = array( + 'false', + 'true', + '0', + '1', + ); + + return in_array( $maybe_bool, $valid_boolean_values, true ); + } + + if ( is_int( $maybe_bool ) ) { + return in_array( $maybe_bool, array( 0, 1 ), true ); + } + + return false; +} + +/** + * Retrieves the avatar urls in various sizes based on a given email address. + * + * @since 4.7.0 + * + * @see get_avatar_url() + * + * @param string $email Email address. + * @return array $urls Gravatar url for each size. + */ +function rest_get_avatar_urls( $email ) { + $avatar_sizes = rest_get_avatar_sizes(); + + $urls = array(); + foreach ( $avatar_sizes as $size ) { + $urls[ $size ] = get_avatar_url( $email, array( 'size' => $size ) ); + } + + return $urls; +} + +/** + * Retrieves the pixel sizes for avatars. + * + * @since 4.7.0 + * + * @return array List of pixel sizes for avatars. Default `[ 24, 48, 96 ]`. + */ +function rest_get_avatar_sizes() { + /** + * Filter the REST avatar sizes. + * + * Use this filter to adjust the array of sizes returned by the + * `rest_get_avatar_sizes` function. + * + * @since 4.4.0 + * + * @param array $sizes An array of int values that are the pixel sizes for avatars. + * Default `[ 24, 48, 96 ]`. + */ + return apply_filters( 'rest_avatar_sizes', array( 24, 48, 96 ) ); +} + +/** + * Validate a value based on a schema. + * + * @param mixed $value The value to validate. + * @param array $args Schema array to use for validation. + * @param string $param The parameter name, used in error messages. + * @return true|WP_Error + */ +function rest_validate_value_from_schema( $value, $args, $param = '' ) { + if ( 'array' === $args['type'] ) { + if ( ! is_array( $value ) ) { + $value = preg_split( '/[\s,]+/', $value ); + } + if ( ! wp_is_numeric_array( $value ) ) { + /* translators: 1: parameter, 2: type name */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s is not of type %2$s.' ), $param, 'array' ) ); + } + foreach ( $value as $index => $v ) { + $is_valid = rest_validate_value_from_schema( $v, $args['items'], $param . '[' . $index . ']' ); + if ( is_wp_error( $is_valid ) ) { + return $is_valid; + } + } + } + if ( ! empty( $args['enum'] ) ) { + if ( ! in_array( $value, $args['enum'], true ) ) { + /* translators: 1: parameter, 2: list of valid values */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s is not one of %2$s.' ), $param, implode( ', ', $args['enum'] ) ) ); + } + } + + if ( in_array( $args['type'], array( 'integer', 'number' ) ) && ! is_numeric( $value ) ) { + /* translators: 1: parameter, 2: type name */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s is not of type %2$s.' ), $param, $args['type'] ) ); + } + + if ( 'integer' === $args['type'] && round( floatval( $value ) ) !== floatval( $value ) ) { + /* translators: 1: parameter, 2: type name */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s is not of type %2$s.' ), $param, 'integer' ) ); + } + + if ( 'boolean' === $args['type'] && ! rest_is_boolean( $value ) ) { + /* translators: 1: parameter, 2: type name */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s is not of type %2$s.' ), $value, 'boolean' ) ); + } + + if ( 'string' === $args['type'] && ! is_string( $value ) ) { + /* translators: 1: parameter, 2: type name */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s is not of type %2$s.' ), $param, 'string' ) ); + } + + if ( isset( $args['format'] ) ) { + switch ( $args['format'] ) { + case 'date-time' : + if ( ! rest_parse_date( $value ) ) { + return new WP_Error( 'rest_invalid_date', __( 'Invalid date.' ) ); + } + break; + + case 'email' : + // is_email() checks for 3 characters (a@b), but + // wp_handle_comment_submission() requires 6 characters (a@b.co) + // + // https://core.trac.wordpress.org/ticket/38506 + if ( ! is_email( $value ) || strlen( $value ) < 6 ) { + return new WP_Error( 'rest_invalid_email', __( 'Invalid email address.' ) ); + } + break; + case 'ip' : + if ( ! rest_is_ip_address( $value ) ) { + /* translators: %s: IP address */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%s is not a valid IP address.' ), $value ) ); + } + break; + } + } + + if ( in_array( $args['type'], array( 'number', 'integer' ), true ) && ( isset( $args['minimum'] ) || isset( $args['maximum'] ) ) ) { + if ( isset( $args['minimum'] ) && ! isset( $args['maximum'] ) ) { + if ( ! empty( $args['exclusiveMinimum'] ) && $value <= $args['minimum'] ) { + /* translators: 1: parameter, 2: minimum number */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s must be greater than %2$d (exclusive)' ), $param, $args['minimum'] ) ); + } elseif ( empty( $args['exclusiveMinimum'] ) && $value < $args['minimum'] ) { + /* translators: 1: parameter, 2: minimum number */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s must be greater than %2$d (inclusive)' ), $param, $args['minimum'] ) ); + } + } elseif ( isset( $args['maximum'] ) && ! isset( $args['minimum'] ) ) { + if ( ! empty( $args['exclusiveMaximum'] ) && $value >= $args['maximum'] ) { + /* translators: 1: parameter, 2: maximum number */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s must be less than %2$d (exclusive)' ), $param, $args['maximum'] ) ); + } elseif ( empty( $args['exclusiveMaximum'] ) && $value > $args['maximum'] ) { + /* translators: 1: parameter, 2: maximum number */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s must be less than %2$d (inclusive)' ), $param, $args['maximum'] ) ); + } + } elseif ( isset( $args['maximum'] ) && isset( $args['minimum'] ) ) { + if ( ! empty( $args['exclusiveMinimum'] ) && ! empty( $args['exclusiveMaximum'] ) ) { + if ( $value >= $args['maximum'] || $value <= $args['minimum'] ) { + /* translators: 1: parameter, 2: minimum number, 3: maximum number */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s must be between %2$d (exclusive) and %3$d (exclusive)' ), $param, $args['minimum'], $args['maximum'] ) ); + } + } elseif ( empty( $args['exclusiveMinimum'] ) && ! empty( $args['exclusiveMaximum'] ) ) { + if ( $value >= $args['maximum'] || $value < $args['minimum'] ) { + /* translators: 1: parameter, 2: minimum number, 3: maximum number */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s must be between %2$d (inclusive) and %3$d (exclusive)' ), $param, $args['minimum'], $args['maximum'] ) ); + } + } elseif ( ! empty( $args['exclusiveMinimum'] ) && empty( $args['exclusiveMaximum'] ) ) { + if ( $value > $args['maximum'] || $value <= $args['minimum'] ) { + /* translators: 1: parameter, 2: minimum number, 3: maximum number */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s must be between %2$d (exclusive) and %3$d (inclusive)' ), $param, $args['minimum'], $args['maximum'] ) ); + } + } elseif ( empty( $args['exclusiveMinimum'] ) && empty( $args['exclusiveMaximum'] ) ) { + if ( $value > $args['maximum'] || $value < $args['minimum'] ) { + /* translators: 1: parameter, 2: minimum number, 3: maximum number */ + return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s must be between %2$d (inclusive) and %3$d (inclusive)' ), $param, $args['minimum'], $args['maximum'] ) ); + } + } + } + } + + return true; +} + +/** + * Sanitize a value based on a schema. + * + * @param mixed $value The value to sanitize. + * @param array $args Schema array to use for sanitization. + * @return true|WP_Error + */ +function rest_sanitize_value_from_schema( $value, $args ) { + if ( 'array' === $args['type'] ) { + if ( empty( $args['items'] ) ) { + return (array) $value; + } + if ( ! is_array( $value ) ) { + $value = preg_split( '/[\s,]+/', $value ); + } + foreach ( $value as $index => $v ) { + $value[ $index ] = rest_sanitize_value_from_schema( $v, $args['items'] ); + } + // Normalize to numeric array so nothing unexpected + // is in the keys. + $value = array_values( $value ); + return $value; + } + if ( 'integer' === $args['type'] ) { + return (int) $value; + } + + if ( 'number' === $args['type'] ) { + return (float) $value; + } + + if ( 'boolean' === $args['type'] ) { + return rest_sanitize_boolean( $value ); + } + + if ( isset( $args['format'] ) ) { + switch ( $args['format'] ) { + case 'date-time' : + return sanitize_text_field( $value ); + + case 'email' : + /* + * sanitize_email() validates, which would be unexpected. + */ + return sanitize_text_field( $value ); + + case 'uri' : + return esc_url_raw( $value ); + + case 'ip' : + return sanitize_text_field( $value ); + } + } + + if ( 'string' === $args['type'] ) { + return strval( $value ); + } + + return $value; +} diff --git a/wp/wp-includes/rest-api/class-wp-rest-request.php b/wp/wp-includes/rest-api/class-wp-rest-request.php index 80c58bf5..3c465bab 100644 --- a/wp/wp-includes/rest-api/class-wp-rest-request.php +++ b/wp/wp-includes/rest-api/class-wp-rest-request.php @@ -359,7 +359,8 @@ class WP_REST_Request implements ArrayAccess { // Ensure we parse the body data. $body = $this->get_body(); - if ( $this->method !== 'POST' && ! empty( $body ) ) { + + if ( 'POST' !== $this->method && ! empty( $body ) ) { $this->parse_body_params(); } @@ -450,7 +451,11 @@ class WP_REST_Request implements ArrayAccess { $params = array(); foreach ( $order as $type ) { - $params = array_merge( $params, (array) $this->params[ $type ] ); + // array_merge / the "+" operator will mess up + // numeric keys, so instead do a manual foreach. + foreach ( (array) $this->params[ $type ] as $key => $value ) { + $params[ $key ] = $value; + } } return $params; @@ -646,11 +651,13 @@ class WP_REST_Request implements ArrayAccess { * Avoids parsing the JSON data until we need to access it. * * @since 4.4.0 + * @since 4.7.0 Returns error instance if value cannot be decoded. * @access protected + * @return true|WP_Error True if the JSON data was passed or no JSON data was provided, WP_Error if invalid JSON was passed. */ protected function parse_json_params() { if ( $this->parsed_json ) { - return; + return true; } $this->parsed_json = true; @@ -659,7 +666,7 @@ class WP_REST_Request implements ArrayAccess { $content_type = $this->get_content_type(); if ( empty( $content_type ) || 'application/json' !== $content_type['value'] ) { - return; + return true; } $params = json_decode( $this->get_body(), true ); @@ -671,10 +678,22 @@ class WP_REST_Request implements ArrayAccess { * might not be defined: https://core.trac.wordpress.org/ticket/27799 */ if ( null === $params && ( ! function_exists( 'json_last_error' ) || JSON_ERROR_NONE !== json_last_error() ) ) { - return; + // Ensure subsequent calls receive error instance. + $this->parsed_json = false; + + $error_data = array( + 'status' => WP_Http::BAD_REQUEST, + ); + if ( function_exists( 'json_last_error' ) ) { + $error_data['json_error_code'] = json_last_error(); + $error_data['json_error_message'] = json_last_error_msg(); + } + + return new WP_Error( 'rest_invalid_json', __( 'Invalid JSON body passed.' ), $error_data ); } $this->params['JSON'] = $params; + return true; } /** @@ -780,10 +799,9 @@ class WP_REST_Request implements ArrayAccess { * @since 4.4.0 * @access public * - * @return true|null True if there are no parameters to sanitize, null otherwise. + * @return true|WP_Error True if parameters were sanitized, WP_Error if an error occurred during sanitization. */ public function sanitize_params() { - $attributes = $this->get_attributes(); // No arguments set, skip sanitizing. @@ -793,18 +811,38 @@ class WP_REST_Request implements ArrayAccess { $order = $this->get_parameter_order(); + $invalid_params = array(); + foreach ( $order as $type ) { if ( empty( $this->params[ $type ] ) ) { continue; } foreach ( $this->params[ $type ] as $key => $value ) { + // if no sanitize_callback was specified, default to rest_parse_request_arg + // if a type was specified in the args. + if ( ! isset( $attributes['args'][ $key ]['sanitize_callback'] ) && ! empty( $attributes['args'][ $key ]['type'] ) ) { + $attributes['args'][ $key ]['sanitize_callback'] = 'rest_parse_request_arg'; + } // Check if this param has a sanitize_callback added. - if ( isset( $attributes['args'][ $key ] ) && ! empty( $attributes['args'][ $key ]['sanitize_callback'] ) ) { - $this->params[ $type ][ $key ] = call_user_func( $attributes['args'][ $key ]['sanitize_callback'], $value, $this, $key ); + if ( ! isset( $attributes['args'][ $key ] ) || empty( $attributes['args'][ $key ]['sanitize_callback'] ) ) { + continue; + } + + $sanitized_value = call_user_func( $attributes['args'][ $key ]['sanitize_callback'], $value, $this, $key ); + + if ( is_wp_error( $sanitized_value ) ) { + $invalid_params[ $key ] = $sanitized_value->get_error_message(); + } else { + $this->params[ $type ][ $key ] = $sanitized_value; } } } - return null; + + if ( $invalid_params ) { + return new WP_Error( 'rest_invalid_param', sprintf( __( 'Invalid parameter(s): %s' ), implode( ', ', array_keys( $invalid_params ) ) ), array( 'status' => 400, 'params' => $invalid_params ) ); + } + + return true; } /** @@ -817,6 +855,11 @@ class WP_REST_Request implements ArrayAccess { * WP_Error if required parameters are missing. */ public function has_valid_params() { + // If JSON data was passed, check for errors. + $json_error = $this->parse_json_params(); + if ( is_wp_error( $json_error ) ) { + return $json_error; + } $attributes = $this->get_attributes(); $required = array(); @@ -954,7 +997,7 @@ class WP_REST_Request implements ArrayAccess { $api_root = rest_url(); if ( get_option( 'permalink_structure' ) && 0 === strpos( $url, $api_root ) ) { - // Pretty permalinks on, and URL is under the API root + // Pretty permalinks on, and URL is under the API root. $api_url_part = substr( $url, strlen( untrailingslashit( $api_root ) ) ); $route = parse_url( $api_url_part, PHP_URL_PATH ); } elseif ( ! empty( $query_params['rest_route'] ) ) { diff --git a/wp/wp-includes/rest-api/class-wp-rest-server.php b/wp/wp-includes/rest-api/class-wp-rest-server.php index 7a459066..ec8d2a0b 100644 --- a/wp/wp-includes/rest-api/class-wp-rest-server.php +++ b/wp/wp-includes/rest-api/class-wp-rest-server.php @@ -114,7 +114,7 @@ class WP_REST_Server { */ public function check_authentication() { /** - * Pass an authentication error to the API + * Filters REST authentication errors. * * This is used to pass a WP_Error from an authentication method back to * the API. @@ -240,7 +240,7 @@ class WP_REST_Server { */ $this->send_header( 'X-Content-Type-Options', 'nosniff' ); $this->send_header( 'Access-Control-Expose-Headers', 'X-WP-Total, X-WP-TotalPages' ); - $this->send_header( 'Access-Control-Allow-Headers', 'Authorization' ); + $this->send_header( 'Access-Control-Allow-Headers', 'Authorization, Content-Type' ); /** * Send nocache headers on authenticated requests. @@ -260,10 +260,11 @@ class WP_REST_Server { * Filters whether the REST API is enabled. * * @since 4.4.0 + * @deprecated 4.7.0 Use the rest_authentication_errors filter to restrict access to the API * * @param bool $rest_enabled Whether the REST API is enabled. Default true. */ - $enabled = apply_filters( 'rest_enabled', true ); + apply_filters_deprecated( 'rest_enabled', array( true ), '4.7.0', 'rest_authentication_errors', __( 'The REST API can no longer be completely disabled, the rest_authentication_errors can be used to restrict access to the API, instead.' ) ); /** * Filters whether jsonp is enabled. @@ -276,10 +277,6 @@ class WP_REST_Server { $jsonp_callback = null; - if ( ! $enabled ) { - echo $this->json_error( 'rest_disabled', __( 'The REST API is disabled on this site.' ), 404 ); - return false; - } if ( isset( $_GET['_jsonp'] ) ) { if ( ! $jsonp_enabled ) { echo $this->json_error( 'rest_callback_disabled', __( 'JSONP support is disabled on this site.' ), 400 ); @@ -288,7 +285,7 @@ class WP_REST_Server { $jsonp_callback = $_GET['_jsonp']; if ( ! wp_check_jsonp_callback( $jsonp_callback ) ) { - echo $this->json_error( 'rest_callback_invalid', __( 'The JSONP callback function is invalid.' ), 400 ); + echo $this->json_error( 'rest_callback_invalid', __( 'Invalid JSONP callback function.' ), 400 ); return false; } } @@ -394,7 +391,7 @@ class WP_REST_Server { } if ( $jsonp_callback ) { - // Prepend '/**/' to mitigate possible JSONP Flash attacks + // Prepend '/**/' to mitigate possible JSONP Flash attacks. // https://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/ echo '/**/' . $jsonp_callback . '(' . $result . ')'; } else { @@ -505,7 +502,7 @@ class WP_REST_Server { continue; } - // Relation now changes from '$uri' to '$curie:$relation' + // Relation now changes from '$uri' to '$curie:$relation'. $rel_regex = str_replace( '\{rel\}', '(.+)', preg_quote( $curie['href'], '!' ) ); preg_match( '!' . $rel_regex . '!', $rel, $matches ); if ( $matches ) { @@ -585,6 +582,7 @@ class WP_REST_Server { // Determine if any real links were found. $has_links = count( array_filter( $embeds ) ); + if ( $has_links ) { $embedded[ $rel ] = $embeds; } @@ -641,7 +639,7 @@ class WP_REST_Server { * @param string $namespace Namespace. * @param string $route The REST route. * @param array $route_args Route arguments. - * @param bool $override Optional. Whether the route should be overriden if it already exists. + * @param bool $override Optional. Whether the route should be overridden if it already exists. * Default false. */ public function register_route( $namespace, $route, $route_args, $override = false ) { @@ -744,7 +742,7 @@ class WP_REST_Server { // Allow comma-separated HTTP methods. if ( is_string( $handler['methods'] ) ) { $methods = explode( ',', $handler['methods'] ); - } else if ( is_array( $handler['methods'] ) ) { + } elseif ( is_array( $handler['methods'] ) ) { $methods = $handler['methods']; } else { $methods = array(); @@ -758,6 +756,7 @@ class WP_REST_Server { } } } + return $endpoints; } @@ -866,11 +865,32 @@ class WP_REST_Server { $check_required = $request->has_valid_params(); if ( is_wp_error( $check_required ) ) { $response = $check_required; + } else { + $check_sanitized = $request->sanitize_params(); + if ( is_wp_error( $check_sanitized ) ) { + $response = $check_sanitized; + } } - - $request->sanitize_params(); } + /** + * Filters the response before executing any REST API callbacks. + * + * Allows plugins to perform additional validation after a + * request is initialized and matched to a registered route, + * but before it is executed. + * + * Note that this filter will not be called for requests that + * fail to authenticate or match to a registered route. + * + * @since 4.7.0 + * + * @param WP_HTTP_Response $response Result to send to the client. Usually a WP_REST_Response. + * @param WP_REST_Server $handler ResponseHandler instance (usually WP_REST_Server). + * @param WP_REST_Request $request Request used to generate the response. + */ + $response = apply_filters( 'rest_request_before_callbacks', $response, $handler, $request ); + if ( ! is_wp_error( $response ) ) { // Check permission specified on the route. if ( ! empty( $handler['permission_callback'] ) ) { @@ -878,7 +898,7 @@ class WP_REST_Server { if ( is_wp_error( $permission ) ) { $response = $permission; - } else if ( false === $permission || null === $permission ) { + } elseif ( false === $permission || null === $permission ) { $response = new WP_Error( 'rest_forbidden', __( 'Sorry, you are not allowed to do that.' ), array( 'status' => 403 ) ); } } @@ -908,6 +928,28 @@ class WP_REST_Server { } } + /** + * Filters the response immediately after executing any REST API + * callbacks. + * + * Allows plugins to perform any needed cleanup, for example, + * to undo changes made during the {@see 'rest_request_before_callbacks'} + * filter. + * + * Note that this filter will not be called for requests that + * fail to authenticate or match to a registered route. + * + * Note that an endpoint's `permission_callback` can still be + * called after this filter - see `rest_send_allow_header()`. + * + * @since 4.7.0 + * + * @param WP_HTTP_Response $response Result to send to the client. Usually a WP_REST_Response. + * @param WP_REST_Server $handler ResponseHandler instance (usually WP_REST_Server). + * @param WP_REST_Request $request Request used to generate the response. + */ + $response = apply_filters( 'rest_request_after_callbacks', $response, $handler, $request ); + if ( is_wp_error( $response ) ) { $response = $this->error_to_response( $response ); } else { @@ -1141,6 +1183,12 @@ class WP_REST_Server { if ( isset( $opts['description'] ) ) { $arg_data['description'] = $opts['description']; } + if ( isset( $opts['type'] ) ) { + $arg_data['type'] = $opts['type']; + } + if ( isset( $opts['items'] ) ) { + $arg_data['items'] = $opts['items']; + } $endpoint_data['args'][ $key ] = $arg_data; } } diff --git a/wp/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php b/wp/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php new file mode 100644 index 00000000..f0055ee4 --- /dev/null +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php @@ -0,0 +1,749 @@ +get_media_types(); + + if ( ! empty( $request['media_type'] ) && isset( $media_types[ $request['media_type'] ] ) ) { + $query_args['post_mime_type'] = $media_types[ $request['media_type'] ]; + } + + if ( ! empty( $request['mime_type'] ) ) { + $parts = explode( '/', $request['mime_type'] ); + if ( isset( $media_types[ $parts[0] ] ) && in_array( $request['mime_type'], $media_types[ $parts[0] ], true ) ) { + $query_args['post_mime_type'] = $request['mime_type']; + } + } + + return $query_args; + } + + /** + * Checks if a given request has access to create an attachment. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|true Boolean true if the attachment may be created, or a WP_Error if not. + */ + public function create_item_permissions_check( $request ) { + $ret = parent::create_item_permissions_check( $request ); + + if ( ! $ret || is_wp_error( $ret ) ) { + return $ret; + } + + if ( ! current_user_can( 'upload_files' ) ) { + return new WP_Error( 'rest_cannot_create', __( 'Sorry, you are not allowed to upload media on this site.' ), array( 'status' => 400 ) ); + } + + // Attaching media to a post requires ability to edit said post. + if ( ! empty( $request['post'] ) ) { + $parent = get_post( (int) $request['post'] ); + $post_parent_type = get_post_type_object( $parent->post_type ); + + if ( ! current_user_can( $post_parent_type->cap->edit_post, $request['post'] ) ) { + return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you are not allowed to upload media to this post.' ), array( 'status' => rest_authorization_required_code() ) ); + } + } + + return true; + } + + /** + * Creates a single attachment. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response Response object on success, WP_Error object on failure. + */ + public function create_item( $request ) { + + if ( ! empty( $request['post'] ) && in_array( get_post_type( $request['post'] ), array( 'revision', 'attachment' ), true ) ) { + return new WP_Error( 'rest_invalid_param', __( 'Invalid parent type.' ), array( 'status' => 400 ) ); + } + + // Get the file via $_FILES or raw data. + $files = $request->get_file_params(); + $headers = $request->get_headers(); + + if ( ! empty( $files ) ) { + $file = $this->upload_from_file( $files, $headers ); + } else { + $file = $this->upload_from_data( $request->get_body(), $headers ); + } + + if ( is_wp_error( $file ) ) { + return $file; + } + + $name = basename( $file['file'] ); + $name_parts = pathinfo( $name ); + $name = trim( substr( $name, 0, -(1 + strlen( $name_parts['extension'] ) ) ) ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + + // use image exif/iptc data for title and caption defaults if possible + $image_meta = @wp_read_image_metadata( $file ); + + if ( ! empty( $image_meta ) ) { + if ( empty( $request['title'] ) && trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) { + $request['title'] = $image_meta['title']; + } + + if ( empty( $request['caption'] ) && trim( $image_meta['caption'] ) ) { + $request['caption'] = $image_meta['caption']; + } + } + + $attachment = $this->prepare_item_for_database( $request ); + $attachment->file = $file; + $attachment->post_mime_type = $type; + $attachment->guid = $url; + + if ( empty( $attachment->post_title ) ) { + $attachment->post_title = preg_replace( '/\.[^.]+$/', '', basename( $file ) ); + } + + $id = wp_insert_post( wp_slash( (array) $attachment ), true ); + + if ( is_wp_error( $id ) ) { + if ( 'db_update_error' === $id->get_error_code() ) { + $id->add_data( array( 'status' => 500 ) ); + } else { + $id->add_data( array( 'status' => 400 ) ); + } + return $id; + } + + $attachment = get_post( $id ); + + /** + * Fires after a single attachment is created or updated via the REST API. + * + * @since 4.7.0 + * + * @param WP_Post $attachment Inserted or updated attachment + * object. + * @param WP_REST_Request $request The request sent to the API. + * @param bool $creating True when creating an attachment, false when updating. + */ + do_action( 'rest_insert_attachment', $attachment, $request, true ); + + // Include admin functions to get access to wp_generate_attachment_metadata(). + require_once ABSPATH . 'wp-admin/includes/admin.php'; + + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + + if ( isset( $request['alt_text'] ) ) { + update_post_meta( $id, '_wp_attachment_image_alt', sanitize_text_field( $request['alt_text'] ) ); + } + + $fields_update = $this->update_additional_fields_for_object( $attachment, $request ); + + if ( is_wp_error( $fields_update ) ) { + return $fields_update; + } + + $request->set_param( 'context', 'edit' ); + $response = $this->prepare_item_for_response( $attachment, $request ); + $response = rest_ensure_response( $response ); + $response->set_status( 201 ); + $response->header( 'Location', rest_url( sprintf( '%s/%s/%d', $this->namespace, $this->rest_base, $id ) ) ); + + return $response; + } + + /** + * Updates a single attachment. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response Response object on success, WP_Error object on failure. + */ + public function update_item( $request ) { + if ( ! empty( $request['post'] ) && in_array( get_post_type( $request['post'] ), array( 'revision', 'attachment' ), true ) ) { + return new WP_Error( 'rest_invalid_param', __( 'Invalid parent type.' ), array( 'status' => 400 ) ); + } + + $response = parent::update_item( $request ); + + if ( is_wp_error( $response ) ) { + return $response; + } + + $response = rest_ensure_response( $response ); + $data = $response->get_data(); + + if ( isset( $request['alt_text'] ) ) { + update_post_meta( $data['id'], '_wp_attachment_image_alt', $request['alt_text'] ); + } + + $attachment = get_post( $request['id'] ); + + /* This action is documented in wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php */ + do_action( 'rest_insert_attachment', $data, $request, false ); + + $fields_update = $this->update_additional_fields_for_object( $attachment, $request ); + + if ( is_wp_error( $fields_update ) ) { + return $fields_update; + } + + $request->set_param( 'context', 'edit' ); + $response = $this->prepare_item_for_response( $attachment, $request ); + $response = rest_ensure_response( $response ); + + return $response; + } + + /** + * Prepares a single attachment for create or update. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Request object. + * @return WP_Error|stdClass $prepared_attachment Post object. + */ + protected function prepare_item_for_database( $request ) { + $prepared_attachment = parent::prepare_item_for_database( $request ); + + // Attachment caption (post_excerpt internally) + if ( isset( $request['caption'] ) ) { + if ( is_string( $request['caption'] ) ) { + $prepared_attachment->post_excerpt = $request['caption']; + } elseif ( isset( $request['caption']['raw'] ) ) { + $prepared_attachment->post_excerpt = $request['caption']['raw']; + } + } + + // Attachment description (post_content internally) + if ( isset( $request['description'] ) ) { + if ( is_string( $request['description'] ) ) { + $prepared_attachment->post_content = $request['description']; + } elseif ( isset( $request['description']['raw'] ) ) { + $prepared_attachment->post_content = $request['description']['raw']; + } + } + + if ( isset( $request['post'] ) ) { + $prepared_attachment->post_parent = (int) $request['post']; + } + + return $prepared_attachment; + } + + /** + * Prepares a single attachment output for response. + * + * @since 4.7.0 + * @access public + * + * @param WP_Post $post Attachment object. + * @param WP_REST_Request $request Request object. + * @return WP_REST_Response Response object. + */ + public function prepare_item_for_response( $post, $request ) { + $response = parent::prepare_item_for_response( $post, $request ); + $data = $response->get_data(); + + $data['description'] = array( + 'raw' => $post->post_content, + /** This filter is documented in wp-includes/post-template.php */ + 'rendered' => apply_filters( 'the_content', $post->post_content ), + ); + + /** This filter is documented in wp-includes/post-template.php */ + $caption = apply_filters( 'the_excerpt', apply_filters( 'get_the_excerpt', $post->post_excerpt, $post ) ); + $data['caption'] = array( + 'raw' => $post->post_excerpt, + 'rendered' => $caption, + ); + + $data['alt_text'] = get_post_meta( $post->ID, '_wp_attachment_image_alt', true ); + $data['media_type'] = wp_attachment_is_image( $post->ID ) ? 'image' : 'file'; + $data['mime_type'] = $post->post_mime_type; + $data['media_details'] = wp_get_attachment_metadata( $post->ID ); + $data['post'] = ! empty( $post->post_parent ) ? (int) $post->post_parent : null; + $data['source_url'] = wp_get_attachment_url( $post->ID ); + + // Ensure empty details is an empty object. + if ( empty( $data['media_details'] ) ) { + $data['media_details'] = new stdClass; + } elseif ( ! empty( $data['media_details']['sizes'] ) ) { + + foreach ( $data['media_details']['sizes'] as $size => &$size_data ) { + + if ( isset( $size_data['mime-type'] ) ) { + $size_data['mime_type'] = $size_data['mime-type']; + unset( $size_data['mime-type'] ); + } + + // Use the same method image_downsize() does. + $image_src = wp_get_attachment_image_src( $post->ID, $size ); + if ( ! $image_src ) { + continue; + } + + $size_data['source_url'] = $image_src[0]; + } + + $full_src = wp_get_attachment_image_src( $post->ID, 'full' ); + + if ( ! empty( $full_src ) ) { + $data['media_details']['sizes']['full'] = array( + 'file' => wp_basename( $full_src[0] ), + 'width' => $full_src[1], + 'height' => $full_src[2], + 'mime_type' => $post->post_mime_type, + 'source_url' => $full_src[0], + ); + } + } else { + $data['media_details']['sizes'] = new stdClass; + } + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + + $data = $this->filter_response_by_context( $data, $context ); + + // Wrap the data in a response object. + $response = rest_ensure_response( $data ); + + $response->add_links( $this->prepare_links( $post ) ); + + /** + * Filters an attachment returned from the REST API. + * + * Allows modification of the attachment right before it is returned. + * + * @since 4.7.0 + * + * @param WP_REST_Response $response The response object. + * @param WP_Post $post The original attachment post. + * @param WP_REST_Request $request Request used to generate the response. + */ + return apply_filters( 'rest_prepare_attachment', $response, $post, $request ); + } + + /** + * Retrieves the attachment's schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access public + * + * @return array Item schema as an array. + */ + public function get_item_schema() { + + $schema = parent::get_item_schema(); + + $schema['properties']['alt_text'] = array( + 'description' => __( 'Alternative text to display when attachment is not displayed.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'arg_options' => array( + 'sanitize_callback' => 'sanitize_text_field', + ), + ); + + $schema['properties']['caption'] = array( + 'description' => __( 'The attachment caption.' ), + 'type' => 'object', + 'context' => array( 'view', 'edit', 'embed' ), + 'arg_options' => array( + 'sanitize_callback' => null, // Note: sanitization implemented in self::prepare_item_for_database() + ), + 'properties' => array( + 'raw' => array( + 'description' => __( 'Caption for the attachment, as it exists in the database.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + ), + 'rendered' => array( + 'description' => __( 'HTML caption for the attachment, transformed for display.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + ), + ); + + $schema['properties']['description'] = array( + 'description' => __( 'The attachment description.' ), + 'type' => 'object', + 'context' => array( 'view', 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => null, // Note: sanitization implemented in self::prepare_item_for_database() + ), + 'properties' => array( + 'raw' => array( + 'description' => __( 'Description for the object, as it exists in the database.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + ), + 'rendered' => array( + 'description' => __( 'HTML description for the object, transformed for display.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ); + + $schema['properties']['media_type'] = array( + 'description' => __( 'Attachment type.' ), + 'type' => 'string', + 'enum' => array( 'image', 'file' ), + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ); + + $schema['properties']['mime_type'] = array( + 'description' => __( 'The attachment MIME type.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ); + + $schema['properties']['media_details'] = array( + 'description' => __( 'Details about the media file, specific to its type.' ), + 'type' => 'object', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ); + + $schema['properties']['post'] = array( + 'description' => __( 'The ID for the associated post of the attachment.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + ); + + $schema['properties']['source_url'] = array( + 'description' => __( 'URL to the original attachment file.' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ); + + unset( $schema['properties']['password'] ); + + return $schema; + } + + /** + * Handles an upload via raw POST data. + * + * @since 4.7.0 + * @access protected + * + * @param array $data Supplied file data. + * @param array $headers HTTP headers from the request. + * @return array|WP_Error Data from wp_handle_sideload(). + */ + protected function upload_from_data( $data, $headers ) { + if ( empty( $data ) ) { + return new WP_Error( 'rest_upload_no_data', __( 'No data supplied.' ), array( 'status' => 400 ) ); + } + + if ( empty( $headers['content_type'] ) ) { + return new WP_Error( 'rest_upload_no_content_type', __( 'No Content-Type supplied.' ), array( 'status' => 400 ) ); + } + + if ( empty( $headers['content_disposition'] ) ) { + return new WP_Error( 'rest_upload_no_content_disposition', __( 'No Content-Disposition supplied.' ), array( 'status' => 400 ) ); + } + + $filename = self::get_filename_from_disposition( $headers['content_disposition'] ); + + if ( empty( $filename ) ) { + return new WP_Error( 'rest_upload_invalid_disposition', __( 'Invalid Content-Disposition supplied. Content-Disposition needs to be formatted as `attachment; filename="image.png"` or similar.' ), array( 'status' => 400 ) ); + } + + if ( ! empty( $headers['content_md5'] ) ) { + $content_md5 = array_shift( $headers['content_md5'] ); + $expected = trim( $content_md5 ); + $actual = md5( $data ); + + if ( $expected !== $actual ) { + return new WP_Error( 'rest_upload_hash_mismatch', __( 'Content hash did not match expected.' ), array( 'status' => 412 ) ); + } + } + + // Get the content-type. + $type = array_shift( $headers['content_type'] ); + + /** Include admin functions to get access to wp_tempnam() and wp_handle_sideload() */ + require_once ABSPATH . 'wp-admin/includes/admin.php'; + + // Save the file. + $tmpfname = wp_tempnam( $filename ); + + $fp = fopen( $tmpfname, 'w+' ); + + if ( ! $fp ) { + return new WP_Error( 'rest_upload_file_error', __( 'Could not open file handle.' ), array( 'status' => 500 ) ); + } + + fwrite( $fp, $data ); + fclose( $fp ); + + // Now, sideload it in. + $file_data = array( + 'error' => null, + 'tmp_name' => $tmpfname, + 'name' => $filename, + 'type' => $type, + ); + + $overrides = array( + 'test_form' => false, + ); + + $sideloaded = wp_handle_sideload( $file_data, $overrides ); + + if ( isset( $sideloaded['error'] ) ) { + @unlink( $tmpfname ); + + return new WP_Error( 'rest_upload_sideload_error', $sideloaded['error'], array( 'status' => 500 ) ); + } + + return $sideloaded; + } + + /** + * Parses filename from a Content-Disposition header value. + * + * As per RFC6266: + * + * content-disposition = "Content-Disposition" ":" + * disposition-type *( ";" disposition-parm ) + * + * disposition-type = "inline" | "attachment" | disp-ext-type + * ; case-insensitive + * disp-ext-type = token + * + * disposition-parm = filename-parm | disp-ext-parm + * + * filename-parm = "filename" "=" value + * | "filename*" "=" ext-value + * + * disp-ext-parm = token "=" value + * | ext-token "=" ext-value + * ext-token = + * + * @since 4.7.0 + * @access public + * + * @link http://tools.ietf.org/html/rfc2388 + * @link http://tools.ietf.org/html/rfc6266 + * + * @param string[] $disposition_header List of Content-Disposition header values. + * @return string|null Filename if available, or null if not found. + */ + public static function get_filename_from_disposition( $disposition_header ) { + // Get the filename. + $filename = null; + + foreach ( $disposition_header as $value ) { + $value = trim( $value ); + + if ( strpos( $value, ';' ) === false ) { + continue; + } + + list( $type, $attr_parts ) = explode( ';', $value, 2 ); + + $attr_parts = explode( ';', $attr_parts ); + $attributes = array(); + + foreach ( $attr_parts as $part ) { + if ( strpos( $part, '=' ) === false ) { + continue; + } + + list( $key, $value ) = explode( '=', $part, 2 ); + + $attributes[ trim( $key ) ] = trim( $value ); + } + + if ( empty( $attributes['filename'] ) ) { + continue; + } + + $filename = trim( $attributes['filename'] ); + + // Unquote quoted filename, but after trimming. + if ( substr( $filename, 0, 1 ) === '"' && substr( $filename, -1, 1 ) === '"' ) { + $filename = substr( $filename, 1, -1 ); + } + } + + return $filename; + } + + /** + * Retrieves the query params for collections of attachments. + * + * @since 4.7.0 + * @access public + * + * @return array Query parameters for the attachment collection as an array. + */ + public function get_collection_params() { + $params = parent::get_collection_params(); + $params['status']['default'] = 'inherit'; + $params['status']['items']['enum'] = array( 'inherit', 'private', 'trash' ); + $media_types = $this->get_media_types(); + + $params['media_type'] = array( + 'default' => null, + 'description' => __( 'Limit result set to attachments of a particular media type.' ), + 'type' => 'string', + 'enum' => array_keys( $media_types ), + ); + + $params['mime_type'] = array( + 'default' => null, + 'description' => __( 'Limit result set to attachments of a particular MIME type.' ), + 'type' => 'string', + ); + + return $params; + } + + /** + * Validates whether the user can query private statuses. + * + * @since 4.7.0 + * @access public + * + * @param mixed $value Status value. + * @param WP_REST_Request $request Request object. + * @param string $parameter Additional parameter to pass for validation. + * @return WP_Error|bool True if the user may query, WP_Error if not. + */ + public function validate_user_can_query_private_statuses( $value, $request, $parameter ) { + if ( 'inherit' === $value ) { + return true; + } + + return parent::validate_user_can_query_private_statuses( $value, $request, $parameter ); + } + + /** + * Handles an upload via multipart/form-data ($_FILES). + * + * @since 4.7.0 + * @access protected + * + * @param array $files Data from the `$_FILES` superglobal. + * @param array $headers HTTP headers from the request. + * @return array|WP_Error Data from wp_handle_upload(). + */ + protected function upload_from_file( $files, $headers ) { + if ( empty( $files ) ) { + return new WP_Error( 'rest_upload_no_data', __( 'No data supplied.' ), array( 'status' => 400 ) ); + } + + // Verify hash, if given. + if ( ! empty( $headers['content_md5'] ) ) { + $content_md5 = array_shift( $headers['content_md5'] ); + $expected = trim( $content_md5 ); + $actual = md5_file( $files['file']['tmp_name'] ); + + if ( $expected !== $actual ) { + return new WP_Error( 'rest_upload_hash_mismatch', __( 'Content hash did not match expected.' ), array( 'status' => 412 ) ); + } + } + + // Pass off to WP to handle the actual upload. + $overrides = array( + 'test_form' => false, + ); + + // Bypasses is_uploaded_file() when running unit tests. + if ( defined( 'DIR_TESTDATA' ) && DIR_TESTDATA ) { + $overrides['action'] = 'wp_handle_mock_upload'; + } + + /** Include admin functions to get access to wp_handle_upload() */ + require_once ABSPATH . 'wp-admin/includes/admin.php'; + + $file = wp_handle_upload( $files['file'], $overrides ); + + if ( isset( $file['error'] ) ) { + return new WP_Error( 'rest_upload_unknown_error', $file['error'], array( 'status' => 500 ) ); + } + + return $file; + } + + /** + * Retrieves the supported media types. + * + * Media types are considered the MIME type category. + * + * @since 4.7.0 + * @access protected + * + * @return array Array of supported media types. + */ + protected function get_media_types() { + $media_types = array(); + + foreach ( get_allowed_mime_types() as $mime_type ) { + $parts = explode( '/', $mime_type ); + + if ( ! isset( $media_types[ $parts[0] ] ) ) { + $media_types[ $parts[0] ] = array(); + } + + $media_types[ $parts[0] ][] = $mime_type; + } + + return $media_types; + } + +} diff --git a/wp/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php b/wp/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php new file mode 100644 index 00000000..9d61294b --- /dev/null +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php @@ -0,0 +1,1609 @@ +namespace = 'wp/v2'; + $this->rest_base = 'comments'; + + $this->meta = new WP_REST_Comment_Meta_Fields(); + } + + /** + * Registers the routes for the objects of the controller. + * + * @since 4.7.0 + * @access public + */ + public function register_routes() { + + register_rest_route( $this->namespace, '/' . $this->rest_base, array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_items' ), + 'permission_callback' => array( $this, 'get_items_permissions_check' ), + 'args' => $this->get_collection_params(), + ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => array( $this, 'create_item' ), + 'permission_callback' => array( $this, 'create_item_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + + register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\d]+)', array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_item' ), + 'permission_callback' => array( $this, 'get_item_permissions_check' ), + 'args' => array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + 'password' => array( + 'description' => __( 'The password for the post if it is password protected.' ), + 'type' => 'string', + ), + ), + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => array( $this, 'update_item' ), + 'permission_callback' => array( $this, 'update_item_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), + ), + array( + 'methods' => WP_REST_Server::DELETABLE, + 'callback' => array( $this, 'delete_item' ), + 'permission_callback' => array( $this, 'delete_item_permissions_check' ), + 'args' => array( + 'force' => array( + 'type' => 'boolean', + 'default' => false, + 'description' => __( 'Whether to bypass trash and force deletion.' ), + ), + 'password' => array( + 'description' => __( 'The password for the post if it is password protected.' ), + 'type' => 'string', + ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + } + + /** + * Checks if a given request has access to read comments. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|bool True if the request has read access, error object otherwise. + */ + public function get_items_permissions_check( $request ) { + + if ( ! empty( $request['post'] ) ) { + foreach ( (array) $request['post'] as $post_id ) { + $post = get_post( $post_id ); + + if ( ! empty( $post_id ) && $post && ! $this->check_read_post_permission( $post, $request ) ) { + return new WP_Error( 'rest_cannot_read_post', __( 'Sorry, you are not allowed to read the post for this comment.' ), array( 'status' => rest_authorization_required_code() ) ); + } elseif ( 0 === $post_id && ! current_user_can( 'moderate_comments' ) ) { + return new WP_Error( 'rest_cannot_read', __( 'Sorry, you are not allowed to read comments without a post.' ), array( 'status' => rest_authorization_required_code() ) ); + } + } + } + + if ( ! empty( $request['context'] ) && 'edit' === $request['context'] && ! current_user_can( 'moderate_comments' ) ) { + return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit comments.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( ! current_user_can( 'edit_posts' ) ) { + $protected_params = array( 'author', 'author_exclude', 'author_email', 'type', 'status' ); + $forbidden_params = array(); + + foreach ( $protected_params as $param ) { + if ( 'status' === $param ) { + if ( 'approve' !== $request[ $param ] ) { + $forbidden_params[] = $param; + } + } elseif ( 'type' === $param ) { + if ( 'comment' !== $request[ $param ] ) { + $forbidden_params[] = $param; + } + } elseif ( ! empty( $request[ $param ] ) ) { + $forbidden_params[] = $param; + } + } + + if ( ! empty( $forbidden_params ) ) { + return new WP_Error( 'rest_forbidden_param', sprintf( __( 'Query parameter not permitted: %s' ), implode( ', ', $forbidden_params ) ), array( 'status' => rest_authorization_required_code() ) ); + } + } + + return true; + } + + /** + * Retrieves a list of comment items. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response Response object on success, or error object on failure. + */ + public function get_items( $request ) { + + // Retrieve the list of registered collection query parameters. + $registered = $this->get_collection_params(); + + /* + * This array defines mappings between public API query parameters whose + * values are accepted as-passed, and their internal WP_Query parameter + * name equivalents (some are the same). Only values which are also + * present in $registered will be set. + */ + $parameter_mappings = array( + 'author' => 'author__in', + 'author_email' => 'author_email', + 'author_exclude' => 'author__not_in', + 'exclude' => 'comment__not_in', + 'include' => 'comment__in', + 'offset' => 'offset', + 'order' => 'order', + 'parent' => 'parent__in', + 'parent_exclude' => 'parent__not_in', + 'per_page' => 'number', + 'post' => 'post__in', + 'search' => 'search', + 'status' => 'status', + 'type' => 'type', + ); + + $prepared_args = array(); + + /* + * For each known parameter which is both registered and present in the request, + * set the parameter's value on the query $prepared_args. + */ + foreach ( $parameter_mappings as $api_param => $wp_param ) { + if ( isset( $registered[ $api_param ], $request[ $api_param ] ) ) { + $prepared_args[ $wp_param ] = $request[ $api_param ]; + } + } + + // Ensure certain parameter values default to empty strings. + foreach ( array( 'author_email', 'search' ) as $param ) { + if ( ! isset( $prepared_args[ $param ] ) ) { + $prepared_args[ $param ] = ''; + } + } + + if ( isset( $registered['orderby'] ) ) { + $prepared_args['orderby'] = $this->normalize_query_param( $request['orderby'] ); + } + + $prepared_args['no_found_rows'] = false; + + $prepared_args['date_query'] = array(); + + // Set before into date query. Date query must be specified as an array of an array. + if ( isset( $registered['before'], $request['before'] ) ) { + $prepared_args['date_query'][0]['before'] = $request['before']; + } + + // Set after into date query. Date query must be specified as an array of an array. + if ( isset( $registered['after'], $request['after'] ) ) { + $prepared_args['date_query'][0]['after'] = $request['after']; + } + + if ( isset( $registered['page'] ) && empty( $request['offset'] ) ) { + $prepared_args['offset'] = $prepared_args['number'] * ( absint( $request['page'] ) - 1 ); + } + + /** + * Filters arguments, before passing to WP_Comment_Query, when querying comments via the REST API. + * + * @since 4.7.0 + * + * @link https://developer.wordpress.org/reference/classes/wp_comment_query/ + * + * @param array $prepared_args Array of arguments for WP_Comment_Query. + * @param WP_REST_Request $request The current request. + */ + $prepared_args = apply_filters( 'rest_comment_query', $prepared_args, $request ); + + $query = new WP_Comment_Query; + $query_result = $query->query( $prepared_args ); + + $comments = array(); + + foreach ( $query_result as $comment ) { + if ( ! $this->check_read_permission( $comment, $request ) ) { + continue; + } + + $data = $this->prepare_item_for_response( $comment, $request ); + $comments[] = $this->prepare_response_for_collection( $data ); + } + + $total_comments = (int) $query->found_comments; + $max_pages = (int) $query->max_num_pages; + + if ( $total_comments < 1 ) { + // Out-of-bounds, run the query again without LIMIT for total count. + unset( $prepared_args['number'], $prepared_args['offset'] ); + + $query = new WP_Comment_Query; + $prepared_args['count'] = true; + + $total_comments = $query->query( $prepared_args ); + $max_pages = ceil( $total_comments / $request['per_page'] ); + } + + $response = rest_ensure_response( $comments ); + $response->header( 'X-WP-Total', $total_comments ); + $response->header( 'X-WP-TotalPages', $max_pages ); + + $base = add_query_arg( $request->get_query_params(), rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ) ); + + if ( $request['page'] > 1 ) { + $prev_page = $request['page'] - 1; + + if ( $prev_page > $max_pages ) { + $prev_page = $max_pages; + } + + $prev_link = add_query_arg( 'page', $prev_page, $base ); + $response->link_header( 'prev', $prev_link ); + } + + if ( $max_pages > $request['page'] ) { + $next_page = $request['page'] + 1; + $next_link = add_query_arg( 'page', $next_page, $base ); + + $response->link_header( 'next', $next_link ); + } + + return $response; + } + + /** + * Checks if a given request has access to read the comment. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|bool True if the request has read access for the item, error object otherwise. + */ + public function get_item_permissions_check( $request ) { + $id = (int) $request['id']; + + $comment = get_comment( $id ); + + if ( ! $comment ) { + return true; + } + + if ( ! empty( $request['context'] ) && 'edit' === $request['context'] && ! current_user_can( 'moderate_comments' ) ) { + return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit comments.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + $post = get_post( $comment->comment_post_ID ); + + if ( ! $this->check_read_permission( $comment, $request ) ) { + return new WP_Error( 'rest_cannot_read', __( 'Sorry, you are not allowed to read this comment.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( $post && ! $this->check_read_post_permission( $post, $request ) ) { + return new WP_Error( 'rest_cannot_read_post', __( 'Sorry, you are not allowed to read the post for this comment.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Retrieves a comment. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response Response object on success, or error object on failure. + */ + public function get_item( $request ) { + $id = (int) $request['id']; + + $comment = get_comment( $id ); + if ( empty( $comment ) ) { + return new WP_Error( 'rest_comment_invalid_id', __( 'Invalid comment ID.' ), array( 'status' => 404 ) ); + } + + if ( ! empty( $comment->comment_post_ID ) ) { + $post = get_post( $comment->comment_post_ID ); + if ( empty( $post ) ) { + return new WP_Error( 'rest_post_invalid_id', __( 'Invalid post ID.' ), array( 'status' => 404 ) ); + } + } + + $data = $this->prepare_item_for_response( $comment, $request ); + $response = rest_ensure_response( $data ); + + return $response; + } + + /** + * Checks if a given request has access to create a comment. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|bool True if the request has access to create items, error object otherwise. + */ + public function create_item_permissions_check( $request ) { + if ( ! is_user_logged_in() ) { + if ( get_option( 'comment_registration' ) ) { + return new WP_Error( 'rest_comment_login_required', __( 'Sorry, you must be logged in to comment.' ), array( 'status' => 401 ) ); + } + + /** + * Filter whether comments can be created without authentication. + * + * Enables creating comments for anonymous users. + * + * @since 4.7.0 + * + * @param bool $allow_anonymous Whether to allow anonymous comments to + * be created. Default `false`. + * @param WP_REST_Request $request Request used to generate the + * response. + */ + $allow_anonymous = apply_filters( 'rest_allow_anonymous_comments', false, $request ); + if ( false === $allow_anonymous ) { + return new WP_Error( 'rest_comment_login_required', __( 'Sorry, you must be logged in to comment.' ), array( 'status' => 401 ) ); + } + } + + // Limit who can set comment `author`, `author_ip` or `status` to anything other than the default. + if ( isset( $request['author'] ) && get_current_user_id() !== $request['author'] && ! current_user_can( 'moderate_comments' ) ) { + return new WP_Error( 'rest_comment_invalid_author', + /* translators: %s: request parameter */ + sprintf( __( "Sorry, you are not allowed to edit '%s' for comments." ), 'author' ), + array( 'status' => rest_authorization_required_code() ) + ); + } + + if ( isset( $request['author_ip'] ) && ! current_user_can( 'moderate_comments' ) ) { + if ( empty( $_SERVER['REMOTE_ADDR'] ) || $request['author_ip'] !== $_SERVER['REMOTE_ADDR'] ) { + return new WP_Error( 'rest_comment_invalid_author_ip', + /* translators: %s: request parameter */ + sprintf( __( "Sorry, you are not allowed to edit '%s' for comments." ), 'author_ip' ), + array( 'status' => rest_authorization_required_code() ) + ); + } + } + + if ( isset( $request['status'] ) && ! current_user_can( 'moderate_comments' ) ) { + return new WP_Error( 'rest_comment_invalid_status', + /* translators: %s: request parameter */ + sprintf( __( "Sorry, you are not allowed to edit '%s' for comments." ), 'status' ), + array( 'status' => rest_authorization_required_code() ) + ); + } + + if ( empty( $request['post'] ) ) { + return new WP_Error( 'rest_comment_invalid_post_id', __( 'Sorry, you are not allowed to create this comment without a post.' ), array( 'status' => 403 ) ); + } + + $post = get_post( (int) $request['post'] ); + if ( ! $post ) { + return new WP_Error( 'rest_comment_invalid_post_id', __( 'Sorry, you are not allowed to create this comment without a post.' ), array( 'status' => 403 ) ); + } + + if ( 'draft' === $post->post_status ) { + return new WP_Error( 'rest_comment_draft_post', __( 'Sorry, you are not allowed to create a comment on this post.' ), array( 'status' => 403 ) ); + } + + if ( 'trash' === $post->post_status ) { + return new WP_Error( 'rest_comment_trash_post', __( 'Sorry, you are not allowed to create a comment on this post.' ), array( 'status' => 403 ) ); + } + + if ( ! $this->check_read_post_permission( $post, $request ) ) { + return new WP_Error( 'rest_cannot_read_post', __( 'Sorry, you are not allowed to read the post for this comment.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( ! comments_open( $post->ID ) ) { + return new WP_Error( 'rest_comment_closed', __( 'Sorry, comments are closed for this item.' ), array( 'status' => 403 ) ); + } + + return true; + } + + /** + * Creates a comment. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response Response object on success, or error object on failure. + */ + public function create_item( $request ) { + if ( ! empty( $request['id'] ) ) { + return new WP_Error( 'rest_comment_exists', __( 'Cannot create existing comment.' ), array( 'status' => 400 ) ); + } + + // Do not allow comments to be created with a non-default type. + if ( ! empty( $request['type'] ) && 'comment' !== $request['type'] ) { + return new WP_Error( 'rest_invalid_comment_type', __( 'Cannot create a comment with that type.' ), array( 'status' => 400 ) ); + } + + $prepared_comment = $this->prepare_item_for_database( $request ); + if ( is_wp_error( $prepared_comment ) ) { + return $prepared_comment; + } + + $prepared_comment['comment_type'] = ''; + + /* + * Do not allow a comment to be created with missing or empty + * comment_content. See wp_handle_comment_submission(). + */ + if ( empty( $prepared_comment['comment_content'] ) ) { + return new WP_Error( 'rest_comment_content_invalid', __( 'Invalid comment content.' ), array( 'status' => 400 ) ); + } + + // Setting remaining values before wp_insert_comment so we can use wp_allow_comment(). + if ( ! isset( $prepared_comment['comment_date_gmt'] ) ) { + $prepared_comment['comment_date_gmt'] = current_time( 'mysql', true ); + } + + // Set author data if the user's logged in. + $missing_author = empty( $prepared_comment['user_id'] ) + && empty( $prepared_comment['comment_author'] ) + && empty( $prepared_comment['comment_author_email'] ) + && empty( $prepared_comment['comment_author_url'] ); + + if ( is_user_logged_in() && $missing_author ) { + $user = wp_get_current_user(); + + $prepared_comment['user_id'] = $user->ID; + $prepared_comment['comment_author'] = $user->display_name; + $prepared_comment['comment_author_email'] = $user->user_email; + $prepared_comment['comment_author_url'] = $user->user_url; + } + + // Honor the discussion setting that requires a name and email address of the comment author. + if ( get_option( 'require_name_email' ) ) { + if ( empty( $prepared_comment['comment_author'] ) || empty( $prepared_comment['comment_author_email'] ) ) { + return new WP_Error( 'rest_comment_author_data_required', __( 'Creating a comment requires valid author name and email values.' ), array( 'status' => 400 ) ); + } + } + + if ( ! isset( $prepared_comment['comment_author_email'] ) ) { + $prepared_comment['comment_author_email'] = ''; + } + + if ( ! isset( $prepared_comment['comment_author_url'] ) ) { + $prepared_comment['comment_author_url'] = ''; + } + + if ( ! isset( $prepared_comment['comment_agent'] ) ) { + $prepared_comment['comment_agent'] = ''; + } + + $check_comment_lengths = wp_check_comment_data_max_lengths( $prepared_comment ); + if ( is_wp_error( $check_comment_lengths ) ) { + $error_code = $check_comment_lengths->get_error_code(); + return new WP_Error( $error_code, __( 'Comment field exceeds maximum length allowed.' ), array( 'status' => 400 ) ); + } + + $prepared_comment['comment_approved'] = wp_allow_comment( $prepared_comment, true ); + + if ( is_wp_error( $prepared_comment['comment_approved'] ) ) { + $error_code = $prepared_comment['comment_approved']->get_error_code(); + $error_message = $prepared_comment['comment_approved']->get_error_message(); + + if ( 'comment_duplicate' === $error_code ) { + return new WP_Error( $error_code, $error_message, array( 'status' => 409 ) ); + } + + if ( 'comment_flood' === $error_code ) { + return new WP_Error( $error_code, $error_message, array( 'status' => 400 ) ); + } + + return $prepared_comment['comment_approved']; + } + + /** + * Filters a comment before it is inserted via the REST API. + * + * Allows modification of the comment right before it is inserted via wp_insert_comment(). + * + * @since 4.7.0 + * + * @param array $prepared_comment The prepared comment data for wp_insert_comment(). + * @param WP_REST_Request $request Request used to insert the comment. + */ + $prepared_comment = apply_filters( 'rest_pre_insert_comment', $prepared_comment, $request ); + + $comment_id = wp_insert_comment( wp_filter_comment( wp_slash( (array) $prepared_comment ) ) ); + + if ( ! $comment_id ) { + return new WP_Error( 'rest_comment_failed_create', __( 'Creating comment failed.' ), array( 'status' => 500 ) ); + } + + if ( isset( $request['status'] ) ) { + $this->handle_status_param( $request['status'], $comment_id ); + } + + $comment = get_comment( $comment_id ); + + /** + * Fires after a comment is created or updated via the REST API. + * + * @since 4.7.0 + * + * @param WP_Comment $comment Inserted or updated comment object. + * @param WP_REST_Request $request Request object. + * @param bool $creating True when creating a comment, false + * when updating. + */ + do_action( 'rest_insert_comment', $comment, $request, true ); + + $schema = $this->get_item_schema(); + + if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) { + $meta_update = $this->meta->update_value( $request['meta'], $comment_id ); + + if ( is_wp_error( $meta_update ) ) { + return $meta_update; + } + } + + $fields_update = $this->update_additional_fields_for_object( $comment, $request ); + + if ( is_wp_error( $fields_update ) ) { + return $fields_update; + } + + $context = current_user_can( 'moderate_comments' ) ? 'edit' : 'view'; + + $request->set_param( 'context', $context ); + + $response = $this->prepare_item_for_response( $comment, $request ); + $response = rest_ensure_response( $response ); + + $response->set_status( 201 ); + $response->header( 'Location', rest_url( sprintf( '%s/%s/%d', $this->namespace, $this->rest_base, $comment_id ) ) ); + + + return $response; + } + + /** + * Checks if a given REST request has access to update a comment. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|bool True if the request has access to update the item, error object otherwise. + */ + public function update_item_permissions_check( $request ) { + + $id = (int) $request['id']; + + $comment = get_comment( $id ); + + if ( $comment && ! $this->check_edit_permission( $comment ) ) { + return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you are not allowed to edit this comment.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Updates a comment. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response Response object on success, or error object on failure. + */ + public function update_item( $request ) { + $id = (int) $request['id']; + + $comment = get_comment( $id ); + + if ( empty( $comment ) ) { + return new WP_Error( 'rest_comment_invalid_id', __( 'Invalid comment ID.' ), array( 'status' => 404 ) ); + } + + if ( isset( $request['type'] ) && get_comment_type( $id ) !== $request['type'] ) { + return new WP_Error( 'rest_comment_invalid_type', __( 'Sorry, you are not allowed to change the comment type.' ), array( 'status' => 404 ) ); + } + + $prepared_args = $this->prepare_item_for_database( $request ); + + if ( is_wp_error( $prepared_args ) ) { + return $prepared_args; + } + + if ( empty( $prepared_args ) && isset( $request['status'] ) ) { + // Only the comment status is being changed. + $change = $this->handle_status_param( $request['status'], $id ); + + if ( ! $change ) { + return new WP_Error( 'rest_comment_failed_edit', __( 'Updating comment status failed.' ), array( 'status' => 500 ) ); + } + } elseif ( ! empty( $prepared_args ) ) { + if ( is_wp_error( $prepared_args ) ) { + return $prepared_args; + } + + if ( isset( $prepared_args['comment_content'] ) && empty( $prepared_args['comment_content'] ) ) { + return new WP_Error( 'rest_comment_content_invalid', __( 'Invalid comment content.' ), array( 'status' => 400 ) ); + } + + $prepared_args['comment_ID'] = $id; + + $check_comment_lengths = wp_check_comment_data_max_lengths( $prepared_args ); + if ( is_wp_error( $check_comment_lengths ) ) { + $error_code = $check_comment_lengths->get_error_code(); + return new WP_Error( $error_code, __( 'Comment field exceeds maximum length allowed.' ), array( 'status' => 400 ) ); + } + + $updated = wp_update_comment( wp_slash( (array) $prepared_args ) ); + + if ( 0 === $updated ) { + return new WP_Error( 'rest_comment_failed_edit', __( 'Updating comment failed.' ), array( 'status' => 500 ) ); + } + + if ( isset( $request['status'] ) ) { + $this->handle_status_param( $request['status'], $id ); + } + } + + $comment = get_comment( $id ); + + /* This action is documented in lib/endpoints/class-wp-rest-comments-controller.php */ + do_action( 'rest_insert_comment', $comment, $request, false ); + + $schema = $this->get_item_schema(); + + if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) { + $meta_update = $this->meta->update_value( $request['meta'], $id ); + + if ( is_wp_error( $meta_update ) ) { + return $meta_update; + } + } + + $fields_update = $this->update_additional_fields_for_object( $comment, $request ); + + if ( is_wp_error( $fields_update ) ) { + return $fields_update; + } + + $request->set_param( 'context', 'edit' ); + + $response = $this->prepare_item_for_response( $comment, $request ); + + return rest_ensure_response( $response ); + } + + /** + * Checks if a given request has access to delete a comment. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|bool True if the request has access to delete the item, error object otherwise. + */ + public function delete_item_permissions_check( $request ) { + $id = (int) $request['id']; + $comment = get_comment( $id ); + + if ( ! $comment ) { + return new WP_Error( 'rest_comment_invalid_id', __( 'Invalid comment ID.' ), array( 'status' => 404 ) ); + } + + if ( ! $this->check_edit_permission( $comment ) ) { + return new WP_Error( 'rest_cannot_delete', __( 'Sorry, you are not allowed to delete this comment.' ), array( 'status' => rest_authorization_required_code() ) ); + } + return true; + } + + /** + * Deletes a comment. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response Response object on success, or error object on failure. + */ + public function delete_item( $request ) { + $id = (int) $request['id']; + $force = isset( $request['force'] ) ? (bool) $request['force'] : false; + + $comment = get_comment( $id ); + + if ( empty( $comment ) ) { + return new WP_Error( 'rest_comment_invalid_id', __( 'Invalid comment ID.' ), array( 'status' => 404 ) ); + } + + /** + * Filters whether a comment can be trashed. + * + * Return false to disable trash support for the post. + * + * @since 4.7.0 + * + * @param bool $supports_trash Whether the post type support trashing. + * @param WP_Post $comment The comment object being considered for trashing support. + */ + $supports_trash = apply_filters( 'rest_comment_trashable', ( EMPTY_TRASH_DAYS > 0 ), $comment ); + + $request->set_param( 'context', 'edit' ); + + if ( $force ) { + $previous = $this->prepare_item_for_response( $comment, $request ); + $result = wp_delete_comment( $comment->comment_ID, true ); + $response = new WP_REST_Response(); + $response->set_data( array( 'deleted' => true, 'previous' => $previous->get_data() ) ); + } else { + // If this type doesn't support trashing, error out. + if ( ! $supports_trash ) { + return new WP_Error( 'rest_trash_not_supported', __( 'The comment does not support trashing. Set force=true to delete.' ), array( 'status' => 501 ) ); + } + + if ( 'trash' === $comment->comment_approved ) { + return new WP_Error( 'rest_already_trashed', __( 'The comment has already been trashed.' ), array( 'status' => 410 ) ); + } + + $result = wp_trash_comment( $comment->comment_ID ); + $comment = get_comment( $comment->comment_ID ); + $response = $this->prepare_item_for_response( $comment, $request ); + } + + if ( ! $result ) { + return new WP_Error( 'rest_cannot_delete', __( 'The comment cannot be deleted.' ), array( 'status' => 500 ) ); + } + + /** + * Fires after a comment is deleted via the REST API. + * + * @since 4.7.0 + * + * @param WP_Comment $comment The deleted comment data. + * @param WP_REST_Response $response The response returned from the API. + * @param WP_REST_Request $request The request sent to the API. + */ + do_action( 'rest_delete_comment', $comment, $response, $request ); + + return $response; + } + + /** + * Prepares a single comment output for response. + * + * @since 4.7.0 + * @access public + * + * @param WP_Comment $comment Comment object. + * @param WP_REST_Request $request Request object. + * @return WP_REST_Response Response object. + */ + public function prepare_item_for_response( $comment, $request ) { + $data = array( + 'id' => (int) $comment->comment_ID, + 'post' => (int) $comment->comment_post_ID, + 'parent' => (int) $comment->comment_parent, + 'author' => (int) $comment->user_id, + 'author_name' => $comment->comment_author, + 'author_email' => $comment->comment_author_email, + 'author_url' => $comment->comment_author_url, + 'author_ip' => $comment->comment_author_IP, + 'author_user_agent' => $comment->comment_agent, + 'date' => mysql_to_rfc3339( $comment->comment_date ), + 'date_gmt' => mysql_to_rfc3339( $comment->comment_date_gmt ), + 'content' => array( + /** This filter is documented in wp-includes/comment-template.php */ + 'rendered' => apply_filters( 'comment_text', $comment->comment_content, $comment ), + 'raw' => $comment->comment_content, + ), + 'link' => get_comment_link( $comment ), + 'status' => $this->prepare_status_response( $comment->comment_approved ), + 'type' => get_comment_type( $comment->comment_ID ), + ); + + $schema = $this->get_item_schema(); + + if ( ! empty( $schema['properties']['author_avatar_urls'] ) ) { + $data['author_avatar_urls'] = rest_get_avatar_urls( $comment->comment_author_email ); + } + + if ( ! empty( $schema['properties']['meta'] ) ) { + $data['meta'] = $this->meta->get_value( $comment->comment_ID, $request ); + } + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + // Wrap the data in a response object. + $response = rest_ensure_response( $data ); + + $response->add_links( $this->prepare_links( $comment ) ); + + /** + * Filters a comment returned from the API. + * + * Allows modification of the comment right before it is returned. + * + * @since 4.7.0 + * + * @param WP_REST_Response $response The response object. + * @param WP_Comment $comment The original comment object. + * @param WP_REST_Request $request Request used to generate the response. + */ + return apply_filters( 'rest_prepare_comment', $response, $comment, $request ); + } + + /** + * Prepares links for the request. + * + * @since 4.7.0 + * @access protected + * + * @param WP_Comment $comment Comment object. + * @return array Links for the given comment. + */ + protected function prepare_links( $comment ) { + $links = array( + 'self' => array( + 'href' => rest_url( sprintf( '%s/%s/%d', $this->namespace, $this->rest_base, $comment->comment_ID ) ), + ), + 'collection' => array( + 'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ), + ), + ); + + if ( 0 !== (int) $comment->user_id ) { + $links['author'] = array( + 'href' => rest_url( 'wp/v2/users/' . $comment->user_id ), + 'embeddable' => true, + ); + } + + if ( 0 !== (int) $comment->comment_post_ID ) { + $post = get_post( $comment->comment_post_ID ); + + if ( ! empty( $post->ID ) ) { + $obj = get_post_type_object( $post->post_type ); + $base = ! empty( $obj->rest_base ) ? $obj->rest_base : $obj->name; + + $links['up'] = array( + 'href' => rest_url( 'wp/v2/' . $base . '/' . $comment->comment_post_ID ), + 'embeddable' => true, + 'post_type' => $post->post_type, + ); + } + } + + if ( 0 !== (int) $comment->comment_parent ) { + $links['in-reply-to'] = array( + 'href' => rest_url( sprintf( '%s/%s/%d', $this->namespace, $this->rest_base, $comment->comment_parent ) ), + 'embeddable' => true, + ); + } + + // Only grab one comment to verify the comment has children. + $comment_children = $comment->get_children( array( + 'number' => 1, + 'count' => true + ) ); + + if ( ! empty( $comment_children ) ) { + $args = array( + 'parent' => $comment->comment_ID + ); + + $rest_url = add_query_arg( $args, rest_url( $this->namespace . '/' . $this->rest_base ) ); + + $links['children'] = array( + 'href' => $rest_url, + ); + } + + return $links; + } + + /** + * Prepends internal property prefix to query parameters to match our response fields. + * + * @since 4.7.0 + * @access protected + * + * @param string $query_param Query parameter. + * @return string The normalized query parameter. + */ + protected function normalize_query_param( $query_param ) { + $prefix = 'comment_'; + + switch ( $query_param ) { + case 'id': + $normalized = $prefix . 'ID'; + break; + case 'post': + $normalized = $prefix . 'post_ID'; + break; + case 'parent': + $normalized = $prefix . 'parent'; + break; + case 'include': + $normalized = 'comment__in'; + break; + default: + $normalized = $prefix . $query_param; + break; + } + + return $normalized; + } + + /** + * Checks comment_approved to set comment status for single comment output. + * + * @since 4.7.0 + * @access protected + * + * @param string|int $comment_approved comment status. + * @return string Comment status. + */ + protected function prepare_status_response( $comment_approved ) { + + switch ( $comment_approved ) { + case 'hold': + case '0': + $status = 'hold'; + break; + + case 'approve': + case '1': + $status = 'approved'; + break; + + case 'spam': + case 'trash': + default: + $status = $comment_approved; + break; + } + + return $status; + } + + /** + * Prepares a single comment to be inserted into the database. + * + * @since 4.7.0 + * @access protected + * + * @param WP_REST_Request $request Request object. + * @return array|WP_Error Prepared comment, otherwise WP_Error object. + */ + protected function prepare_item_for_database( $request ) { + $prepared_comment = array(); + + /* + * Allow the comment_content to be set via the 'content' or + * the 'content.raw' properties of the Request object. + */ + if ( isset( $request['content'] ) && is_string( $request['content'] ) ) { + $prepared_comment['comment_content'] = $request['content']; + } elseif ( isset( $request['content']['raw'] ) && is_string( $request['content']['raw'] ) ) { + $prepared_comment['comment_content'] = $request['content']['raw']; + } + + if ( isset( $request['post'] ) ) { + $prepared_comment['comment_post_ID'] = (int) $request['post']; + } + + if ( isset( $request['parent'] ) ) { + $prepared_comment['comment_parent'] = $request['parent']; + } + + if ( isset( $request['author'] ) ) { + $user = new WP_User( $request['author'] ); + + if ( $user->exists() ) { + $prepared_comment['user_id'] = $user->ID; + $prepared_comment['comment_author'] = $user->display_name; + $prepared_comment['comment_author_email'] = $user->user_email; + $prepared_comment['comment_author_url'] = $user->user_url; + } else { + return new WP_Error( 'rest_comment_author_invalid', __( 'Invalid comment author ID.' ), array( 'status' => 400 ) ); + } + } + + if ( isset( $request['author_name'] ) ) { + $prepared_comment['comment_author'] = $request['author_name']; + } + + if ( isset( $request['author_email'] ) ) { + $prepared_comment['comment_author_email'] = $request['author_email']; + } + + if ( isset( $request['author_url'] ) ) { + $prepared_comment['comment_author_url'] = $request['author_url']; + } + + if ( isset( $request['author_ip'] ) && current_user_can( 'moderate_comments' ) ) { + $prepared_comment['comment_author_IP'] = $request['author_ip']; + } elseif ( ! empty( $_SERVER['REMOTE_ADDR'] ) && rest_is_ip_address( $_SERVER['REMOTE_ADDR'] ) ) { + $prepared_comment['comment_author_IP'] = $_SERVER['REMOTE_ADDR']; + } else { + $prepared_comment['comment_author_IP'] = '127.0.0.1'; + } + + if ( ! empty( $request['author_user_agent'] ) ) { + $prepared_comment['comment_agent'] = $request['author_user_agent']; + } elseif ( $request->get_header( 'user_agent' ) ) { + $prepared_comment['comment_agent'] = $request->get_header( 'user_agent' ); + } + + if ( ! empty( $request['date'] ) ) { + $date_data = rest_get_date_with_gmt( $request['date'] ); + + if ( ! empty( $date_data ) ) { + list( $prepared_comment['comment_date'], $prepared_comment['comment_date_gmt'] ) = $date_data; + } + } elseif ( ! empty( $request['date_gmt'] ) ) { + $date_data = rest_get_date_with_gmt( $request['date_gmt'], true ); + + if ( ! empty( $date_data ) ) { + list( $prepared_comment['comment_date'], $prepared_comment['comment_date_gmt'] ) = $date_data; + } + } + + /** + * Filters a comment after it is prepared for the database. + * + * Allows modification of the comment right after it is prepared for the database. + * + * @since 4.7.0 + * + * @param array $prepared_comment The prepared comment data for `wp_insert_comment`. + * @param WP_REST_Request $request The current request. + */ + return apply_filters( 'rest_preprocess_comment', $prepared_comment, $request ); + } + + /** + * Retrieves the comment's schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access public + * + * @return array + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/schema#', + 'title' => 'comment', + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'description' => __( 'Unique identifier for the object.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + 'author' => array( + 'description' => __( 'The ID of the user object, if author was a user.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit', 'embed' ), + ), + 'author_email' => array( + 'description' => __( 'Email address for the object author.' ), + 'type' => 'string', + 'format' => 'email', + 'context' => array( 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => array( $this, 'check_comment_author_email' ), + 'validate_callback' => null, // skip built-in validation of 'email'. + ), + ), + 'author_ip' => array( + 'description' => __( 'IP address for the object author.' ), + 'type' => 'string', + 'format' => 'ip', + 'context' => array( 'edit' ), + ), + 'author_name' => array( + 'description' => __( 'Display name for the object author.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'arg_options' => array( + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + 'author_url' => array( + 'description' => __( 'URL for the object author.' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'view', 'edit', 'embed' ), + ), + 'author_user_agent' => array( + 'description' => __( 'User agent for the object author.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + 'content' => array( + 'description' => __( 'The content for the object.' ), + 'type' => 'object', + 'context' => array( 'view', 'edit', 'embed' ), + 'arg_options' => array( + 'sanitize_callback' => null, // Note: sanitization implemented in self::prepare_item_for_database() + ), + 'properties' => array( + 'raw' => array( + 'description' => __( 'Content for the object, as it exists in the database.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + ), + 'rendered' => array( + 'description' => __( 'HTML content for the object, transformed for display.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + ), + ), + 'date' => array( + 'description' => __( "The date the object was published, in the site's timezone." ), + 'type' => 'string', + 'format' => 'date-time', + 'context' => array( 'view', 'edit', 'embed' ), + ), + 'date_gmt' => array( + 'description' => __( 'The date the object was published, as GMT.' ), + 'type' => 'string', + 'format' => 'date-time', + 'context' => array( 'view', 'edit' ), + ), + 'link' => array( + 'description' => __( 'URL to the object.' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + 'parent' => array( + 'description' => __( 'The ID for the parent of the object.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit', 'embed' ), + 'default' => 0, + ), + 'post' => array( + 'description' => __( 'The ID of the associated post object.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + 'default' => 0, + ), + 'status' => array( + 'description' => __( 'State of the object.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => 'sanitize_key', + ), + ), + 'type' => array( + 'description' => __( 'Type of Comment for the object.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + ), + ); + + if ( get_option( 'show_avatars' ) ) { + $avatar_properties = array(); + + $avatar_sizes = rest_get_avatar_sizes(); + foreach ( $avatar_sizes as $size ) { + $avatar_properties[ $size ] = array( + /* translators: %d: avatar image size in pixels */ + 'description' => sprintf( __( 'Avatar URL with image size of %d pixels.' ), $size ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'embed', 'view', 'edit' ), + ); + } + + $schema['properties']['author_avatar_urls'] = array( + 'description' => __( 'Avatar URLs for the object author.' ), + 'type' => 'object', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + 'properties' => $avatar_properties, + ); + } + + $schema['properties']['meta'] = $this->meta->get_field_schema(); + + return $this->add_additional_fields_schema( $schema ); + } + + /** + * Retrieves the query params for collections. + * + * @since 4.7.0 + * @access public + * + * @return array Comments collection parameters. + */ + public function get_collection_params() { + $query_params = parent::get_collection_params(); + + $query_params['context']['default'] = 'view'; + + $query_params['after'] = array( + 'description' => __( 'Limit response to comments published after a given ISO8601 compliant date.' ), + 'type' => 'string', + 'format' => 'date-time', + ); + + $query_params['author'] = array( + 'description' => __( 'Limit result set to comments assigned to specific user IDs. Requires authorization.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + ); + + $query_params['author_exclude'] = array( + 'description' => __( 'Ensure result set excludes comments assigned to specific user IDs. Requires authorization.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + ); + + $query_params['author_email'] = array( + 'default' => null, + 'description' => __( 'Limit result set to that from a specific author email. Requires authorization.' ), + 'format' => 'email', + 'type' => 'string', + ); + + $query_params['before'] = array( + 'description' => __( 'Limit response to comments published before a given ISO8601 compliant date.' ), + 'type' => 'string', + 'format' => 'date-time', + ); + + $query_params['exclude'] = array( + 'description' => __( 'Ensure result set excludes specific IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + + $query_params['include'] = array( + 'description' => __( 'Limit result set to specific IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + + $query_params['offset'] = array( + 'description' => __( 'Offset the result set by a specific number of items.' ), + 'type' => 'integer', + ); + + $query_params['order'] = array( + 'description' => __( 'Order sort attribute ascending or descending.' ), + 'type' => 'string', + 'default' => 'desc', + 'enum' => array( + 'asc', + 'desc', + ), + ); + + $query_params['orderby'] = array( + 'description' => __( 'Sort collection by object attribute.' ), + 'type' => 'string', + 'default' => 'date_gmt', + 'enum' => array( + 'date', + 'date_gmt', + 'id', + 'include', + 'post', + 'parent', + 'type', + ), + ); + + $query_params['parent'] = array( + 'default' => array(), + 'description' => __( 'Limit result set to comments of specific parent IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + ); + + $query_params['parent_exclude'] = array( + 'default' => array(), + 'description' => __( 'Ensure result set excludes specific parent IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + ); + + $query_params['post'] = array( + 'default' => array(), + 'description' => __( 'Limit result set to comments assigned to specific post IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + ); + + $query_params['status'] = array( + 'default' => 'approve', + 'description' => __( 'Limit result set to comments assigned a specific status. Requires authorization.' ), + 'sanitize_callback' => 'sanitize_key', + 'type' => 'string', + 'validate_callback' => 'rest_validate_request_arg', + ); + + $query_params['type'] = array( + 'default' => 'comment', + 'description' => __( 'Limit result set to comments assigned a specific type. Requires authorization.' ), + 'sanitize_callback' => 'sanitize_key', + 'type' => 'string', + 'validate_callback' => 'rest_validate_request_arg', + ); + + $query_params['password'] = array( + 'description' => __( 'The password for the post if it is password protected.' ), + 'type' => 'string', + ); + + /** + * Filter collection parameters for the comments controller. + * + * This filter registers the collection parameter, but does not map the + * collection parameter to an internal WP_Comment_Query parameter. Use the + * `rest_comment_query` filter to set WP_Comment_Query parameters. + * + * @since 4.7.0 + * + * @param $params JSON Schema-formatted collection parameters. + */ + return apply_filters( 'rest_comment_collection_params', $query_params ); + } + + /** + * Sets the comment_status of a given comment object when creating or updating a comment. + * + * @since 4.7.0 + * @access protected + * + * @param string|int $new_status New comment status. + * @param int $comment_id Comment ID. + * @return bool Whether the status was changed. + */ + protected function handle_status_param( $new_status, $comment_id ) { + $old_status = wp_get_comment_status( $comment_id ); + + if ( $new_status === $old_status ) { + return false; + } + + switch ( $new_status ) { + case 'approved' : + case 'approve': + case '1': + $changed = wp_set_comment_status( $comment_id, 'approve' ); + break; + case 'hold': + case '0': + $changed = wp_set_comment_status( $comment_id, 'hold' ); + break; + case 'spam' : + $changed = wp_spam_comment( $comment_id ); + break; + case 'unspam' : + $changed = wp_unspam_comment( $comment_id ); + break; + case 'trash' : + $changed = wp_trash_comment( $comment_id ); + break; + case 'untrash' : + $changed = wp_untrash_comment( $comment_id ); + break; + default : + $changed = false; + break; + } + + return $changed; + } + + /** + * Checks if the post can be read. + * + * Correctly handles posts with the inherit status. + * + * @since 4.7.0 + * @access protected + * + * @param WP_Post $post Post object. + * @param WP_REST_Request $request Request data to check. + * @return bool Whether post can be read. + */ + protected function check_read_post_permission( $post, $request ) { + $posts_controller = new WP_REST_Posts_Controller( $post->post_type ); + $post_type = get_post_type_object( $post->post_type ); + + $has_password_filter = false; + + // Only check password if a specific post was queried for or a single comment + $requested_post = ! empty( $request['post'] ) && 1 === count( $request['post'] ); + $requested_comment = ! empty( $request['id'] ); + if ( ( $requested_post || $requested_comment ) && $posts_controller->can_access_password_content( $post, $request ) ) { + add_filter( 'post_password_required', '__return_false' ); + + $has_password_filter = true; + } + + if ( post_password_required( $post ) ) { + $result = current_user_can( $post_type->cap->edit_post, $post->ID ); + } else { + $result = $posts_controller->check_read_permission( $post ); + } + + if ( $has_password_filter ) { + remove_filter( 'post_password_required', '__return_false' ); + } + + return $result; + } + + /** + * Checks if the comment can be read. + * + * @since 4.7.0 + * @access protected + * + * @param WP_Comment $comment Comment object. + * @param WP_REST_Request $request Request data to check. + * @return bool Whether the comment can be read. + */ + protected function check_read_permission( $comment, $request ) { + if ( ! empty( $comment->comment_post_ID ) ) { + $post = get_post( $comment->comment_post_ID ); + if ( $post ) { + if ( $this->check_read_post_permission( $post, $request ) && 1 === (int) $comment->comment_approved ) { + return true; + } + } + } + + if ( 0 === get_current_user_id() ) { + return false; + } + + if ( empty( $comment->comment_post_ID ) && ! current_user_can( 'moderate_comments' ) ) { + return false; + } + + if ( ! empty( $comment->user_id ) && get_current_user_id() === (int) $comment->user_id ) { + return true; + } + + return current_user_can( 'edit_comment', $comment->comment_ID ); + } + + /** + * Checks if a comment can be edited or deleted. + * + * @since 4.7.0 + * @access protected + * + * @param object $comment Comment object. + * @return bool Whether the comment can be edited or deleted. + */ + protected function check_edit_permission( $comment ) { + if ( 0 === (int) get_current_user_id() ) { + return false; + } + + if ( ! current_user_can( 'moderate_comments' ) ) { + return false; + } + + return current_user_can( 'edit_comment', $comment->comment_ID ); + } + + /** + * Checks a comment author email for validity. + * + * Accepts either a valid email address or empty string as a valid comment + * author email address. Setting the comment author email to an empty + * string is allowed when a comment is being updated. + * + * @since 4.7.0 + * + * @param string $value Author email value submitted. + * @param WP_REST_Request $request Full details about the request. + * @param string $param The parameter name. + * @return WP_Error|string The sanitized email address, if valid, + * otherwise an error. + */ + public function check_comment_author_email( $value, $request, $param ) { + $email = (string) $value; + if ( empty( $email ) ) { + return $email; + } + + $check_email = rest_validate_request_arg( $email, $request, $param ); + if ( is_wp_error( $check_email ) ) { + return $check_email; + } + + return $email; + } +} diff --git a/wp/wp-includes/rest-api/endpoints/class-wp-rest-controller.php b/wp/wp-includes/rest-api/endpoints/class-wp-rest-controller.php new file mode 100644 index 00000000..b6c8ac42 --- /dev/null +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-controller.php @@ -0,0 +1,603 @@ + 405 ) ); + } + + /** + * Retrieves a collection of items. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure. + */ + public function get_items( $request ) { + return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) ); + } + + /** + * Checks if a given request has access to get a specific item. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|bool True if the request has read access for the item, WP_Error object otherwise. + */ + public function get_item_permissions_check( $request ) { + return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) ); + } + + /** + * Retrieves one item from the collection. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure. + */ + public function get_item( $request ) { + return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) ); + } + + /** + * Checks if a given request has access to create items. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|bool True if the request has access to create items, WP_Error object otherwise. + */ + public function create_item_permissions_check( $request ) { + return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) ); + } + + /** + * Creates one item from the collection. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure. + */ + public function create_item( $request ) { + return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) ); + } + + /** + * Checks if a given request has access to update a specific item. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|bool True if the request has access to update the item, WP_Error object otherwise. + */ + public function update_item_permissions_check( $request ) { + return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) ); + } + + /** + * Updates one item from the collection. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure. + */ + public function update_item( $request ) { + return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) ); + } + + /** + * Checks if a given request has access to delete a specific item. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|bool True if the request has access to delete the item, WP_Error object otherwise. + */ + public function delete_item_permissions_check( $request ) { + return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) ); + } + + /** + * Deletes one item from the collection. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure. + */ + public function delete_item( $request ) { + return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) ); + } + + /** + * Prepares one item for create or update operation. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Request object. + * @return WP_Error|object The prepared item, or WP_Error object on failure. + */ + protected function prepare_item_for_database( $request ) { + return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) ); + } + + /** + * Prepares the item for the REST response. + * + * @since 4.7.0 + * @access public + * + * @param mixed $item WordPress representation of the item. + * @param WP_REST_Request $request Request object. + * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure. + */ + public function prepare_item_for_response( $item, $request ) { + return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) ); + } + + /** + * Prepares a response for insertion into a collection. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Response $response Response object. + * @return array|mixed Response data, ready for insertion into collection data. + */ + public function prepare_response_for_collection( $response ) { + if ( ! ( $response instanceof WP_REST_Response ) ) { + return $response; + } + + $data = (array) $response->get_data(); + $server = rest_get_server(); + + if ( method_exists( $server, 'get_compact_response_links' ) ) { + $links = call_user_func( array( $server, 'get_compact_response_links' ), $response ); + } else { + $links = call_user_func( array( $server, 'get_response_links' ), $response ); + } + + if ( ! empty( $links ) ) { + $data['_links'] = $links; + } + + return $data; + } + + /** + * Filters a response based on the context defined in the schema. + * + * @since 4.7.0 + * @access public + * + * @param array $data Response data to fiter. + * @param string $context Context defined in the schema. + * @return array Filtered response. + */ + public function filter_response_by_context( $data, $context ) { + + $schema = $this->get_item_schema(); + + foreach ( $data as $key => $value ) { + if ( empty( $schema['properties'][ $key ] ) || empty( $schema['properties'][ $key ]['context'] ) ) { + continue; + } + + if ( ! in_array( $context, $schema['properties'][ $key ]['context'], true ) ) { + unset( $data[ $key ] ); + continue; + } + + if ( 'object' === $schema['properties'][ $key ]['type'] && ! empty( $schema['properties'][ $key ]['properties'] ) ) { + foreach ( $schema['properties'][ $key ]['properties'] as $attribute => $details ) { + if ( empty( $details['context'] ) ) { + continue; + } + + if ( ! in_array( $context, $details['context'], true ) ) { + if ( isset( $data[ $key ][ $attribute ] ) ) { + unset( $data[ $key ][ $attribute ] ); + } + } + } + } + } + + return $data; + } + + /** + * Retrieves the item's schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access public + * + * @return array Item schema data. + */ + public function get_item_schema() { + return $this->add_additional_fields_schema( array() ); + } + + /** + * Retrieves the item's schema for display / public consumption purposes. + * + * @since 4.7.0 + * @access public + * + * @return array Public item schema data. + */ + public function get_public_item_schema() { + + $schema = $this->get_item_schema(); + + foreach ( $schema['properties'] as &$property ) { + unset( $property['arg_options'] ); + } + + return $schema; + } + + /** + * Retrieves the query params for the collections. + * + * @since 4.7.0 + * @access public + * + * @return array Query parameters for the collection. + */ + public function get_collection_params() { + return array( + 'context' => $this->get_context_param(), + 'page' => array( + 'description' => __( 'Current page of the collection.' ), + 'type' => 'integer', + 'default' => 1, + 'sanitize_callback' => 'absint', + 'validate_callback' => 'rest_validate_request_arg', + 'minimum' => 1, + ), + 'per_page' => array( + 'description' => __( 'Maximum number of items to be returned in result set.' ), + 'type' => 'integer', + 'default' => 10, + 'minimum' => 1, + 'maximum' => 100, + 'sanitize_callback' => 'absint', + 'validate_callback' => 'rest_validate_request_arg', + ), + 'search' => array( + 'description' => __( 'Limit results to those matching a string.' ), + 'type' => 'string', + 'sanitize_callback' => 'sanitize_text_field', + 'validate_callback' => 'rest_validate_request_arg', + ), + ); + } + + /** + * Retrieves the magical context param. + * + * Ensures consistent descriptions between endpoints, and populates enum from schema. + * + * @since 4.7.0 + * @access public + * + * @param array $args Optional. Additional arguments for context parameter. Default empty array. + * @return array Context parameter details. + */ + public function get_context_param( $args = array() ) { + $param_details = array( + 'description' => __( 'Scope under which the request is made; determines fields present in response.' ), + 'type' => 'string', + 'sanitize_callback' => 'sanitize_key', + 'validate_callback' => 'rest_validate_request_arg', + ); + + $schema = $this->get_item_schema(); + + if ( empty( $schema['properties'] ) ) { + return array_merge( $param_details, $args ); + } + + $contexts = array(); + + foreach ( $schema['properties'] as $attributes ) { + if ( ! empty( $attributes['context'] ) ) { + $contexts = array_merge( $contexts, $attributes['context'] ); + } + } + + if ( ! empty( $contexts ) ) { + $param_details['enum'] = array_unique( $contexts ); + rsort( $param_details['enum'] ); + } + + return array_merge( $param_details, $args ); + } + + /** + * Adds the values from additional fields to a data object. + * + * @since 4.7.0 + * @access protected + * + * @param array $object Data object. + * @param WP_REST_Request $request Full details about the request. + * @return array Modified data object with additional fields. + */ + protected function add_additional_fields_to_object( $object, $request ) { + + $additional_fields = $this->get_additional_fields(); + + foreach ( $additional_fields as $field_name => $field_options ) { + + if ( ! $field_options['get_callback'] ) { + continue; + } + + $object[ $field_name ] = call_user_func( $field_options['get_callback'], $object, $field_name, $request, $this->get_object_type() ); + } + + return $object; + } + + /** + * Updates the values of additional fields added to a data object. + * + * @since 4.7.0 + * @access protected + * + * @param array $object Data Object. + * @param WP_REST_Request $request Full details about the request. + * @return bool|WP_Error True on success, WP_Error object if a field cannot be updated. + */ + protected function update_additional_fields_for_object( $object, $request ) { + $additional_fields = $this->get_additional_fields(); + + foreach ( $additional_fields as $field_name => $field_options ) { + if ( ! $field_options['update_callback'] ) { + continue; + } + + // Don't run the update callbacks if the data wasn't passed in the request. + if ( ! isset( $request[ $field_name ] ) ) { + continue; + } + + $result = call_user_func( $field_options['update_callback'], $request[ $field_name ], $object, $field_name, $request, $this->get_object_type() ); + + if ( is_wp_error( $result ) ) { + return $result; + } + } + + return true; + } + + /** + * Adds the schema from additional fields to a schema array. + * + * The type of object is inferred from the passed schema. + * + * @since 4.7.0 + * @access protected + * + * @param array $schema Schema array. + * @return array Modified Schema array. + */ + protected function add_additional_fields_schema( $schema ) { + if ( empty( $schema['title'] ) ) { + return $schema; + } + + // Can't use $this->get_object_type otherwise we cause an inf loop. + $object_type = $schema['title']; + + $additional_fields = $this->get_additional_fields( $object_type ); + + foreach ( $additional_fields as $field_name => $field_options ) { + if ( ! $field_options['schema'] ) { + continue; + } + + $schema['properties'][ $field_name ] = $field_options['schema']; + } + + return $schema; + } + + /** + * Retrieves all of the registered additional fields for a given object-type. + * + * @since 4.7.0 + * @access protected + * + * @param string $object_type Optional. The object type. + * @return array Registered additional fields (if any), empty array if none or if the object type could + * not be inferred. + */ + protected function get_additional_fields( $object_type = null ) { + + if ( ! $object_type ) { + $object_type = $this->get_object_type(); + } + + if ( ! $object_type ) { + return array(); + } + + global $wp_rest_additional_fields; + + if ( ! $wp_rest_additional_fields || ! isset( $wp_rest_additional_fields[ $object_type ] ) ) { + return array(); + } + + return $wp_rest_additional_fields[ $object_type ]; + } + + /** + * Retrieves the object type this controller is responsible for managing. + * + * @since 4.7.0 + * @access protected + * + * @return string Object type for the controller. + */ + protected function get_object_type() { + $schema = $this->get_item_schema(); + + if ( ! $schema || ! isset( $schema['title'] ) ) { + return null; + } + + return $schema['title']; + } + + /** + * Retrieves an array of endpoint arguments from the item schema for the controller. + * + * @since 4.7.0 + * @access public + * + * @param string $method Optional. HTTP method of the request. The arguments for `CREATABLE` requests are + * checked for required values and may fall-back to a given default, this is not done + * on `EDITABLE` requests. Default WP_REST_Server::CREATABLE. + * @return array Endpoint arguments. + */ + public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { + + $schema = $this->get_item_schema(); + $schema_properties = ! empty( $schema['properties'] ) ? $schema['properties'] : array(); + $endpoint_args = array(); + + foreach ( $schema_properties as $field_id => $params ) { + + // Arguments specified as `readonly` are not allowed to be set. + if ( ! empty( $params['readonly'] ) ) { + continue; + } + + $endpoint_args[ $field_id ] = array( + 'validate_callback' => 'rest_validate_request_arg', + 'sanitize_callback' => 'rest_sanitize_request_arg', + ); + + if ( isset( $params['description'] ) ) { + $endpoint_args[ $field_id ]['description'] = $params['description']; + } + + if ( WP_REST_Server::CREATABLE === $method && isset( $params['default'] ) ) { + $endpoint_args[ $field_id ]['default'] = $params['default']; + } + + if ( WP_REST_Server::CREATABLE === $method && ! empty( $params['required'] ) ) { + $endpoint_args[ $field_id ]['required'] = true; + } + + foreach ( array( 'type', 'format', 'enum', 'items' ) as $schema_prop ) { + if ( isset( $params[ $schema_prop ] ) ) { + $endpoint_args[ $field_id ][ $schema_prop ] = $params[ $schema_prop ]; + } + } + + // Merge in any options provided by the schema property. + if ( isset( $params['arg_options'] ) ) { + + // Only use required / default from arg_options on CREATABLE endpoints. + if ( WP_REST_Server::CREATABLE !== $method ) { + $params['arg_options'] = array_diff_key( $params['arg_options'], array( 'required' => '', 'default' => '' ) ); + } + + $endpoint_args[ $field_id ] = array_merge( $endpoint_args[ $field_id ], $params['arg_options'] ); + } + } + + return $endpoint_args; + } + + /** + * Sanitizes the slug value. + * + * @since 4.7.0 + * @access public + * + * @internal We can't use sanitize_title() directly, as the second + * parameter is the fallback title, which would end up being set to the + * request object. + * + * @see https://github.com/WP-API/WP-API/issues/1585 + * + * @todo Remove this in favour of https://core.trac.wordpress.org/ticket/34659 + * + * @param string $slug Slug value passed in request. + * @return string Sanitized value for the slug. + */ + public function sanitize_slug( $slug ) { + return sanitize_title( $slug ); + } +} diff --git a/wp/wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php b/wp/wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php new file mode 100644 index 00000000..0ec4bcd1 --- /dev/null +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php @@ -0,0 +1,312 @@ +namespace = 'wp/v2'; + $this->rest_base = 'statuses'; + } + + /** + * Registers the routes for the objects of the controller. + * + * @since 4.7.0 + * @access public + * + * @see register_rest_route() + */ + public function register_routes() { + + register_rest_route( $this->namespace, '/' . $this->rest_base, array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_items' ), + 'permission_callback' => array( $this, 'get_items_permissions_check' ), + 'args' => $this->get_collection_params(), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + + register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_item' ), + 'permission_callback' => array( $this, 'get_item_permissions_check' ), + 'args' => array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + } + + /** + * Checks whether a given request has permission to read post statuses. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|bool True if the request has read access, WP_Error object otherwise. + */ + public function get_items_permissions_check( $request ) { + if ( 'edit' === $request['context'] ) { + $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); + + foreach ( $types as $type ) { + if ( current_user_can( $type->cap->edit_posts ) ) { + return true; + } + } + return new WP_Error( 'rest_cannot_view', __( 'Sorry, you are not allowed to edit posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Retrieves all post statuses, depending on user context. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure. + */ + public function get_items( $request ) { + $data = array(); + $statuses = get_post_stati( array( 'internal' => false ), 'object' ); + $statuses['trash'] = get_post_status_object( 'trash' ); + + foreach ( $statuses as $slug => $obj ) { + $ret = $this->check_read_permission( $obj ); + + if ( ! $ret ) { + continue; + } + + $status = $this->prepare_item_for_response( $obj, $request ); + $data[ $obj->name ] = $this->prepare_response_for_collection( $status ); + } + + return rest_ensure_response( $data ); + } + + /** + * Checks if a given request has access to read a post status. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|bool True if the request has read access for the item, WP_Error object otherwise. + */ + public function get_item_permissions_check( $request ) { + $status = get_post_status_object( $request['status'] ); + + if ( empty( $status ) ) { + return new WP_Error( 'rest_status_invalid', __( 'Invalid status.' ), array( 'status' => 404 ) ); + } + + $check = $this->check_read_permission( $status ); + + if ( ! $check ) { + return new WP_Error( 'rest_cannot_read_status', __( 'Cannot view status.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Checks whether a given post status should be visible. + * + * @since 4.7.0 + * @access protected + * + * @param object $status Post status. + * @return bool True if the post status is visible, otherwise false. + */ + protected function check_read_permission( $status ) { + if ( true === $status->public ) { + return true; + } + + if ( false === $status->internal || 'trash' === $status->name ) { + $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); + + foreach ( $types as $type ) { + if ( current_user_can( $type->cap->edit_posts ) ) { + return true; + } + } + } + + return false; + } + + /** + * Retrieves a specific post status. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure. + */ + public function get_item( $request ) { + $obj = get_post_status_object( $request['status'] ); + + if ( empty( $obj ) ) { + return new WP_Error( 'rest_status_invalid', __( 'Invalid status.' ), array( 'status' => 404 ) ); + } + + $data = $this->prepare_item_for_response( $obj, $request ); + + return rest_ensure_response( $data ); + } + + /** + * Prepares a post status object for serialization. + * + * @since 4.7.0 + * @access public + * + * @param stdClass $status Post status data. + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response Post status data. + */ + public function prepare_item_for_response( $status, $request ) { + + $data = array( + 'name' => $status->label, + 'private' => (bool) $status->private, + 'protected' => (bool) $status->protected, + 'public' => (bool) $status->public, + 'queryable' => (bool) $status->publicly_queryable, + 'show_in_list' => (bool) $status->show_in_admin_all_list, + 'slug' => $status->name, + ); + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + $response = rest_ensure_response( $data ); + + if ( 'publish' === $status->name ) { + $response->add_link( 'archives', rest_url( 'wp/v2/posts' ) ); + } else { + $response->add_link( 'archives', add_query_arg( 'status', $status->name, rest_url( 'wp/v2/posts' ) ) ); + } + + /** + * Filters a status returned from the REST API. + * + * Allows modification of the status data right before it is returned. + * + * @since 4.7.0 + * + * @param WP_REST_Response $response The response object. + * @param object $status The original status object. + * @param WP_REST_Request $request Request used to generate the response. + */ + return apply_filters( 'rest_prepare_status', $response, $status, $request ); + } + + /** + * Retrieves the post status' schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access public + * + * @return array Item schema data. + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/schema#', + 'title' => 'status', + 'type' => 'object', + 'properties' => array( + 'name' => array( + 'description' => __( 'The title for the status.' ), + 'type' => 'string', + 'context' => array( 'embed', 'view', 'edit' ), + 'readonly' => true, + ), + 'private' => array( + 'description' => __( 'Whether posts with this status should be private.' ), + 'type' => 'boolean', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + 'protected' => array( + 'description' => __( 'Whether posts with this status should be protected.' ), + 'type' => 'boolean', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + 'public' => array( + 'description' => __( 'Whether posts of this status should be shown in the front end of the site.' ), + 'type' => 'boolean', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'queryable' => array( + 'description' => __( 'Whether posts with this status should be publicly-queryable.' ), + 'type' => 'boolean', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'show_in_list' => array( + 'description' => __( 'Whether to include posts in the edit listing for their post type.' ), + 'type' => 'boolean', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + 'slug' => array( + 'description' => __( 'An alphanumeric identifier for the status.' ), + 'type' => 'string', + 'context' => array( 'embed', 'view', 'edit' ), + 'readonly' => true, + ), + ), + ); + + return $this->add_additional_fields_schema( $schema ); + } + + /** + * Retrieves the query params for collections. + * + * @since 4.7.0 + * @access public + * + * @return array Collection parameters. + */ + public function get_collection_params() { + return array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + ); + } + +} diff --git a/wp/wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php b/wp/wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php new file mode 100644 index 00000000..a1437dd5 --- /dev/null +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php @@ -0,0 +1,276 @@ +namespace = 'wp/v2'; + $this->rest_base = 'types'; + } + + /** + * Registers the routes for the objects of the controller. + * + * @since 4.7.0 + * @access public + * + * @see register_rest_route() + */ + public function register_routes() { + + register_rest_route( $this->namespace, '/' . $this->rest_base, array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_items' ), + 'permission_callback' => array( $this, 'get_items_permissions_check' ), + 'args' => $this->get_collection_params(), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + + register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_item' ), + 'args' => array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + } + + /** + * Checks whether a given request has permission to read types. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|true True if the request has read access, WP_Error object otherwise. + */ + public function get_items_permissions_check( $request ) { + if ( 'edit' === $request['context'] ) { + foreach ( get_post_types( array(), 'object' ) as $post_type ) { + if ( ! empty( $post_type->show_in_rest ) && current_user_can( $post_type->cap->edit_posts ) ) { + return true; + } + } + + return new WP_Error( 'rest_cannot_view', __( 'Sorry, you are not allowed to edit posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Retrieves all public post types. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure. + */ + public function get_items( $request ) { + $data = array(); + + foreach ( get_post_types( array(), 'object' ) as $obj ) { + if ( empty( $obj->show_in_rest ) || ( 'edit' === $request['context'] && ! current_user_can( $obj->cap->edit_posts ) ) ) { + continue; + } + + $post_type = $this->prepare_item_for_response( $obj, $request ); + $data[ $obj->name ] = $this->prepare_response_for_collection( $post_type ); + } + + return rest_ensure_response( $data ); + } + + /** + * Retrieves a specific post type. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure. + */ + public function get_item( $request ) { + $obj = get_post_type_object( $request['type'] ); + + if ( empty( $obj ) ) { + return new WP_Error( 'rest_type_invalid', __( 'Invalid post type.' ), array( 'status' => 404 ) ); + } + + if ( empty( $obj->show_in_rest ) ) { + return new WP_Error( 'rest_cannot_read_type', __( 'Cannot view post type.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( 'edit' === $request['context'] && ! current_user_can( $obj->cap->edit_posts ) ) { + return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + $data = $this->prepare_item_for_response( $obj, $request ); + + return rest_ensure_response( $data ); + } + + /** + * Prepares a post type object for serialization. + * + * @since 4.7.0 + * @access public + * + * @param stdClass $post_type Post type data. + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response Response object. + */ + public function prepare_item_for_response( $post_type, $request ) { + $taxonomies = wp_list_filter( get_object_taxonomies( $post_type->name, 'objects' ), array( 'show_in_rest' => true ) ); + $taxonomies = wp_list_pluck( $taxonomies, 'name' ); + $base = ! empty( $post_type->rest_base ) ? $post_type->rest_base : $post_type->name; + $data = array( + 'capabilities' => $post_type->cap, + 'description' => $post_type->description, + 'hierarchical' => $post_type->hierarchical, + 'labels' => $post_type->labels, + 'name' => $post_type->label, + 'slug' => $post_type->name, + 'taxonomies' => array_values( $taxonomies ), + 'rest_base' => $base, + ); + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + // Wrap the data in a response object. + $response = rest_ensure_response( $data ); + + $response->add_links( array( + 'collection' => array( + 'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ), + ), + 'https://api.w.org/items' => array( + 'href' => rest_url( sprintf( 'wp/v2/%s', $base ) ), + ), + ) ); + + /** + * Filters a post type returned from the API. + * + * Allows modification of the post type data right before it is returned. + * + * @since 4.7.0 + * + * @param WP_REST_Response $response The response object. + * @param object $item The original post type object. + * @param WP_REST_Request $request Request used to generate the response. + */ + return apply_filters( 'rest_prepare_post_type', $response, $post_type, $request ); + } + + /** + * Retrieves the post type's schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access public + * + * @return array Item schema data. + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/schema#', + 'title' => 'type', + 'type' => 'object', + 'properties' => array( + 'capabilities' => array( + 'description' => __( 'All capabilities used by the post type.' ), + 'type' => 'object', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + 'description' => array( + 'description' => __( 'A human-readable description of the post type.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'hierarchical' => array( + 'description' => __( 'Whether or not the post type should have children.' ), + 'type' => 'boolean', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'labels' => array( + 'description' => __( 'Human-readable labels for the post type for various contexts.' ), + 'type' => 'object', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + 'name' => array( + 'description' => __( 'The title for the post type.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + 'slug' => array( + 'description' => __( 'An alphanumeric identifier for the post type.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + 'taxonomies' => array( + 'description' => __( 'Taxonomies associated with post type.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'rest_base' => array( + 'description' => __( 'REST base route for the post type.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + ), + ); + return $this->add_additional_fields_schema( $schema ); + } + + /** + * Retrieves the query params for collections. + * + * @since 4.7.0 + * @access public + * + * @return array Collection parameters. + */ + public function get_collection_params() { + return array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + ); + } + +} diff --git a/wp/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php b/wp/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php new file mode 100644 index 00000000..872a6607 --- /dev/null +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php @@ -0,0 +1,2198 @@ +post_type = $post_type; + $this->namespace = 'wp/v2'; + $obj = get_post_type_object( $post_type ); + $this->rest_base = ! empty( $obj->rest_base ) ? $obj->rest_base : $obj->name; + + $this->meta = new WP_REST_Post_Meta_Fields( $this->post_type ); + } + + /** + * Registers the routes for the objects of the controller. + * + * @since 4.7.0 + * @access public + * + * @see register_rest_route() + */ + public function register_routes() { + + register_rest_route( $this->namespace, '/' . $this->rest_base, array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_items' ), + 'permission_callback' => array( $this, 'get_items_permissions_check' ), + 'args' => $this->get_collection_params(), + ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => array( $this, 'create_item' ), + 'permission_callback' => array( $this, 'create_item_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + + register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\d]+)', array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_item' ), + 'permission_callback' => array( $this, 'get_item_permissions_check' ), + 'args' => array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + 'password' => array( + 'description' => __( 'The password for the post if it is password protected.' ), + 'type' => 'string', + ), + ), + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => array( $this, 'update_item' ), + 'permission_callback' => array( $this, 'update_item_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), + ), + array( + 'methods' => WP_REST_Server::DELETABLE, + 'callback' => array( $this, 'delete_item' ), + 'permission_callback' => array( $this, 'delete_item_permissions_check' ), + 'args' => array( + 'force' => array( + 'type' => 'boolean', + 'default' => false, + 'description' => __( 'Whether to bypass trash and force deletion.' ), + ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + } + + /** + * Checks if a given request has access to read posts. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has read access, WP_Error object otherwise. + */ + public function get_items_permissions_check( $request ) { + + $post_type = get_post_type_object( $this->post_type ); + + if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) { + return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Retrieves a collection of posts. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_items( $request ) { + + // Ensure a search string is set in case the orderby is set to 'relevance'. + if ( ! empty( $request['orderby'] ) && 'relevance' === $request['orderby'] && empty( $request['search'] ) ) { + return new WP_Error( 'rest_no_search_term_defined', __( 'You need to define a search term to order by relevance.' ), array( 'status' => 400 ) ); + } + + // Ensure an include parameter is set in case the orderby is set to 'include'. + if ( ! empty( $request['orderby'] ) && 'include' === $request['orderby'] && empty( $request['include'] ) ) { + return new WP_Error( 'rest_orderby_include_missing_include', sprintf( __( 'Missing parameter(s): %s' ), 'include' ), array( 'status' => 400 ) ); + } + + // Retrieve the list of registered collection query parameters. + $registered = $this->get_collection_params(); + $args = array(); + + /* + * This array defines mappings between public API query parameters whose + * values are accepted as-passed, and their internal WP_Query parameter + * name equivalents (some are the same). Only values which are also + * present in $registered will be set. + */ + $parameter_mappings = array( + 'author' => 'author__in', + 'author_exclude' => 'author__not_in', + 'exclude' => 'post__not_in', + 'include' => 'post__in', + 'menu_order' => 'menu_order', + 'offset' => 'offset', + 'order' => 'order', + 'orderby' => 'orderby', + 'page' => 'paged', + 'parent' => 'post_parent__in', + 'parent_exclude' => 'post_parent__not_in', + 'search' => 's', + 'slug' => 'post_name__in', + 'status' => 'post_status', + ); + + /* + * For each known parameter which is both registered and present in the request, + * set the parameter's value on the query $args. + */ + foreach ( $parameter_mappings as $api_param => $wp_param ) { + if ( isset( $registered[ $api_param ], $request[ $api_param ] ) ) { + $args[ $wp_param ] = $request[ $api_param ]; + } + } + + // Check for & assign any parameters which require special handling or setting. + $args['date_query'] = array(); + + // Set before into date query. Date query must be specified as an array of an array. + if ( isset( $registered['before'], $request['before'] ) ) { + $args['date_query'][0]['before'] = $request['before']; + } + + // Set after into date query. Date query must be specified as an array of an array. + if ( isset( $registered['after'], $request['after'] ) ) { + $args['date_query'][0]['after'] = $request['after']; + } + + // Ensure our per_page parameter overrides any provided posts_per_page filter. + if ( isset( $registered['per_page'] ) ) { + $args['posts_per_page'] = $request['per_page']; + } + + if ( isset( $registered['sticky'], $request['sticky'] ) ) { + $sticky_posts = get_option( 'sticky_posts', array() ); + if ( $sticky_posts && $request['sticky'] ) { + /* + * As post__in will be used to only get sticky posts, + * we have to support the case where post__in was already + * specified. + */ + $args['post__in'] = $args['post__in'] ? array_intersect( $sticky_posts, $args['post__in'] ) : $sticky_posts; + + /* + * If we intersected, but there are no post ids in common, + * WP_Query won't return "no posts" for post__in = array() + * so we have to fake it a bit. + */ + if ( ! $args['post__in'] ) { + $args['post__in'] = array( -1 ); + } + } elseif ( $sticky_posts ) { + /* + * As post___not_in will be used to only get posts that + * are not sticky, we have to support the case where post__not_in + * was already specified. + */ + $args['post__not_in'] = array_merge( $args['post__not_in'], $sticky_posts ); + } + } + + // Force the post_type argument, since it's not a user input variable. + $args['post_type'] = $this->post_type; + + /** + * Filters the query arguments for a request. + * + * Enables adding extra arguments or setting defaults for a post collection request. + * + * @since 4.7.0 + * + * @link https://developer.wordpress.org/reference/classes/wp_query/ + * + * @param array $args Key value array of query var to query value. + * @param WP_REST_Request $request The request used. + */ + $args = apply_filters( "rest_{$this->post_type}_query", $args, $request ); + $query_args = $this->prepare_items_query( $args, $request ); + + $taxonomies = wp_list_filter( get_object_taxonomies( $this->post_type, 'objects' ), array( 'show_in_rest' => true ) ); + + foreach ( $taxonomies as $taxonomy ) { + $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; + $tax_exclude = $base . '_exclude'; + + if ( ! empty( $request[ $base ] ) ) { + $query_args['tax_query'][] = array( + 'taxonomy' => $taxonomy->name, + 'field' => 'term_id', + 'terms' => $request[ $base ], + 'include_children' => false, + ); + } + + if ( ! empty( $request[ $tax_exclude ] ) ) { + $query_args['tax_query'][] = array( + 'taxonomy' => $taxonomy->name, + 'field' => 'term_id', + 'terms' => $request[ $tax_exclude ], + 'include_children' => false, + 'operator' => 'NOT IN', + ); + } + } + + $posts_query = new WP_Query(); + $query_result = $posts_query->query( $query_args ); + + // Allow access to all password protected posts if the context is edit. + if ( 'edit' === $request['context'] ) { + add_filter( 'post_password_required', '__return_false' ); + } + + $posts = array(); + + foreach ( $query_result as $post ) { + if ( ! $this->check_read_permission( $post ) ) { + continue; + } + + $data = $this->prepare_item_for_response( $post, $request ); + $posts[] = $this->prepare_response_for_collection( $data ); + } + + // Reset filter. + if ( 'edit' === $request['context'] ) { + remove_filter( 'post_password_required', '__return_false' ); + } + + $page = (int) $query_args['paged']; + $total_posts = $posts_query->found_posts; + + if ( $total_posts < 1 ) { + // Out-of-bounds, run the query again without LIMIT for total count. + unset( $query_args['paged'] ); + + $count_query = new WP_Query(); + $count_query->query( $query_args ); + $total_posts = $count_query->found_posts; + } + + $max_pages = ceil( $total_posts / (int) $posts_query->query_vars['posts_per_page'] ); + $response = rest_ensure_response( $posts ); + + $response->header( 'X-WP-Total', (int) $total_posts ); + $response->header( 'X-WP-TotalPages', (int) $max_pages ); + + $request_params = $request->get_query_params(); + $base = add_query_arg( $request_params, rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ) ); + + if ( $page > 1 ) { + $prev_page = $page - 1; + + if ( $prev_page > $max_pages ) { + $prev_page = $max_pages; + } + + $prev_link = add_query_arg( 'page', $prev_page, $base ); + $response->link_header( 'prev', $prev_link ); + } + if ( $max_pages > $page ) { + $next_page = $page + 1; + $next_link = add_query_arg( 'page', $next_page, $base ); + + $response->link_header( 'next', $next_link ); + } + + return $response; + } + + /** + * Checks if a given request has access to read a post. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return bool|WP_Error True if the request has read access for the item, WP_Error object otherwise. + */ + public function get_item_permissions_check( $request ) { + + $post = get_post( (int) $request['id'] ); + + if ( 'edit' === $request['context'] && $post && ! $this->check_update_permission( $post ) ) { + return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit this post.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( $post && ! empty( $request['password'] ) ) { + // Check post password, and return error if invalid. + if ( ! hash_equals( $post->post_password, $request['password'] ) ) { + return new WP_Error( 'rest_post_incorrect_password', __( 'Incorrect post password.' ), array( 'status' => 403 ) ); + } + } + + // Allow access to all password protected posts if the context is edit. + if ( 'edit' === $request['context'] ) { + add_filter( 'post_password_required', '__return_false' ); + } + + if ( $post ) { + return $this->check_read_permission( $post ); + } + + return true; + } + + /** + * Checks if the user can access password-protected content. + * + * This method determines whether we need to override the regular password + * check in core with a filter. + * + * @since 4.7.0 + * @access public + * + * @param WP_Post $post Post to check against. + * @param WP_REST_Request $request Request data to check. + * @return bool True if the user can access password-protected content, otherwise false. + */ + public function can_access_password_content( $post, $request ) { + if ( empty( $post->post_password ) ) { + // No filter required. + return false; + } + + // Edit context always gets access to password-protected posts. + if ( 'edit' === $request['context'] ) { + return true; + } + + // No password, no auth. + if ( empty( $request['password'] ) ) { + return false; + } + + // Double-check the request password. + return hash_equals( $post->post_password, $request['password'] ); + } + + /** + * Retrieves a single post. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_item( $request ) { + $id = (int) $request['id']; + $post = get_post( $id ); + + if ( empty( $id ) || empty( $post->ID ) || $this->post_type !== $post->post_type ) { + return new WP_Error( 'rest_post_invalid_id', __( 'Invalid post ID.' ), array( 'status' => 404 ) ); + } + + $data = $this->prepare_item_for_response( $post, $request ); + $response = rest_ensure_response( $data ); + + if ( is_post_type_viewable( get_post_type_object( $post->post_type ) ) ) { + $response->link_header( 'alternate', get_permalink( $id ), array( 'type' => 'text/html' ) ); + } + + return $response; + } + + /** + * Checks if a given request has access to create a post. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise. + */ + public function create_item_permissions_check( $request ) { + + $post_type = get_post_type_object( $this->post_type ); + + if ( ! empty( $request['author'] ) && get_current_user_id() !== $request['author'] && ! current_user_can( $post_type->cap->edit_others_posts ) ) { + return new WP_Error( 'rest_cannot_edit_others', __( 'Sorry, you are not allowed to create posts as this user.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( ! empty( $request['sticky'] ) && ! current_user_can( $post_type->cap->edit_others_posts ) ) { + return new WP_Error( 'rest_cannot_assign_sticky', __( 'Sorry, you are not allowed to make posts sticky.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( ! current_user_can( $post_type->cap->create_posts ) ) { + return new WP_Error( 'rest_cannot_create', __( 'Sorry, you are not allowed to create posts as this user.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( ! $this->check_assign_terms_permission( $request ) ) { + return new WP_Error( 'rest_cannot_assign_term', __( 'Sorry, you are not allowed to assign the provided terms.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Creates a single post. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function create_item( $request ) { + if ( ! empty( $request['id'] ) ) { + return new WP_Error( 'rest_post_exists', __( 'Cannot create existing post.' ), array( 'status' => 400 ) ); + } + + $prepared_post = $this->prepare_item_for_database( $request ); + + if ( is_wp_error( $prepared_post ) ) { + return $prepared_post; + } + + $prepared_post->post_type = $this->post_type; + + $post_id = wp_insert_post( wp_slash( (array) $prepared_post ), true ); + + if ( is_wp_error( $post_id ) ) { + + if ( 'db_insert_error' === $post_id->get_error_code() ) { + $post_id->add_data( array( 'status' => 500 ) ); + } else { + $post_id->add_data( array( 'status' => 400 ) ); + } + + return $post_id; + } + + $post = get_post( $post_id ); + + /** + * Fires after a single post is created or updated via the REST API. + * + * The dynamic portion of the hook name, `$this->post_type`, refers to the post type slug. + * + * @since 4.7.0 + * + * @param WP_Post $post Inserted or updated post object. + * @param WP_REST_Request $request Request object. + * @param bool $creating True when creating a post, false when updating. + */ + do_action( "rest_insert_{$this->post_type}", $post, $request, true ); + + $schema = $this->get_item_schema(); + + if ( ! empty( $schema['properties']['sticky'] ) ) { + if ( ! empty( $request['sticky'] ) ) { + stick_post( $post_id ); + } else { + unstick_post( $post_id ); + } + } + + if ( ! empty( $schema['properties']['featured_media'] ) && isset( $request['featured_media'] ) ) { + $this->handle_featured_media( $request['featured_media'], $post_id ); + } + + if ( ! empty( $schema['properties']['format'] ) && ! empty( $request['format'] ) ) { + set_post_format( $post, $request['format'] ); + } + + if ( ! empty( $schema['properties']['template'] ) && isset( $request['template'] ) ) { + $this->handle_template( $request['template'], $post_id ); + } + + $terms_update = $this->handle_terms( $post_id, $request ); + + if ( is_wp_error( $terms_update ) ) { + return $terms_update; + } + + if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) { + $meta_update = $this->meta->update_value( $request['meta'], $post_id ); + + if ( is_wp_error( $meta_update ) ) { + return $meta_update; + } + } + + $post = get_post( $post_id ); + $fields_update = $this->update_additional_fields_for_object( $post, $request ); + + if ( is_wp_error( $fields_update ) ) { + return $fields_update; + } + + $request->set_param( 'context', 'edit' ); + + $response = $this->prepare_item_for_response( $post, $request ); + $response = rest_ensure_response( $response ); + + $response->set_status( 201 ); + $response->header( 'Location', rest_url( sprintf( '%s/%s/%d', $this->namespace, $this->rest_base, $post_id ) ) ); + + return $response; + } + + /** + * Checks if a given request has access to update a post. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise. + */ + public function update_item_permissions_check( $request ) { + + $post = get_post( $request['id'] ); + $post_type = get_post_type_object( $this->post_type ); + + if ( $post && ! $this->check_update_permission( $post ) ) { + return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you are not allowed to edit this post.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( ! empty( $request['author'] ) && get_current_user_id() !== $request['author'] && ! current_user_can( $post_type->cap->edit_others_posts ) ) { + return new WP_Error( 'rest_cannot_edit_others', __( 'Sorry, you are not allowed to update posts as this user.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( ! empty( $request['sticky'] ) && ! current_user_can( $post_type->cap->edit_others_posts ) ) { + return new WP_Error( 'rest_cannot_assign_sticky', __( 'Sorry, you are not allowed to make posts sticky.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( ! $this->check_assign_terms_permission( $request ) ) { + return new WP_Error( 'rest_cannot_assign_term', __( 'Sorry, you are not allowed to assign the provided terms.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Updates a single post. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function update_item( $request ) { + $id = (int) $request['id']; + $post = get_post( $id ); + + if ( empty( $id ) || empty( $post->ID ) || $this->post_type !== $post->post_type ) { + return new WP_Error( 'rest_post_invalid_id', __( 'Invalid post ID.' ), array( 'status' => 404 ) ); + } + + $post = $this->prepare_item_for_database( $request ); + + if ( is_wp_error( $post ) ) { + return $post; + } + + // convert the post object to an array, otherwise wp_update_post will expect non-escaped input. + $post_id = wp_update_post( wp_slash( (array) $post ), true ); + + if ( is_wp_error( $post_id ) ) { + if ( 'db_update_error' === $post_id->get_error_code() ) { + $post_id->add_data( array( 'status' => 500 ) ); + } else { + $post_id->add_data( array( 'status' => 400 ) ); + } + return $post_id; + } + + $post = get_post( $post_id ); + + /* This action is documented in lib/endpoints/class-wp-rest-controller.php */ + do_action( "rest_insert_{$this->post_type}", $post, $request, false ); + + $schema = $this->get_item_schema(); + + if ( ! empty( $schema['properties']['format'] ) && ! empty( $request['format'] ) ) { + set_post_format( $post, $request['format'] ); + } + + if ( ! empty( $schema['properties']['featured_media'] ) && isset( $request['featured_media'] ) ) { + $this->handle_featured_media( $request['featured_media'], $post_id ); + } + + if ( ! empty( $schema['properties']['sticky'] ) && isset( $request['sticky'] ) ) { + if ( ! empty( $request['sticky'] ) ) { + stick_post( $post_id ); + } else { + unstick_post( $post_id ); + } + } + + if ( ! empty( $schema['properties']['template'] ) && isset( $request['template'] ) ) { + $this->handle_template( $request['template'], $post->ID ); + } + + $terms_update = $this->handle_terms( $post->ID, $request ); + + if ( is_wp_error( $terms_update ) ) { + return $terms_update; + } + + if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) { + $meta_update = $this->meta->update_value( $request['meta'], $post->ID ); + + if ( is_wp_error( $meta_update ) ) { + return $meta_update; + } + } + + $post = get_post( $post_id ); + $fields_update = $this->update_additional_fields_for_object( $post, $request ); + + if ( is_wp_error( $fields_update ) ) { + return $fields_update; + } + + $request->set_param( 'context', 'edit' ); + + $response = $this->prepare_item_for_response( $post, $request ); + + return rest_ensure_response( $response ); + } + + /** + * Checks if a given request has access to delete a post. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has access to delete the item, WP_Error object otherwise. + */ + public function delete_item_permissions_check( $request ) { + + $post = get_post( $request['id'] ); + + if ( $post && ! $this->check_delete_permission( $post ) ) { + return new WP_Error( 'rest_cannot_delete', __( 'Sorry, you are not allowed to delete this post.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Deletes a single post. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function delete_item( $request ) { + $id = (int) $request['id']; + $force = (bool) $request['force']; + + $post = get_post( $id ); + + if ( empty( $id ) || empty( $post->ID ) || $this->post_type !== $post->post_type ) { + return new WP_Error( 'rest_post_invalid_id', __( 'Invalid post ID.' ), array( 'status' => 404 ) ); + } + + $supports_trash = ( EMPTY_TRASH_DAYS > 0 ); + + if ( 'attachment' === $post->post_type ) { + $supports_trash = $supports_trash && MEDIA_TRASH; + } + + /** + * Filters whether a post is trashable. + * + * The dynamic portion of the hook name, `$this->post_type`, refers to the post type slug. + * + * Pass false to disable trash support for the post. + * + * @since 4.7.0 + * + * @param bool $supports_trash Whether the post type support trashing. + * @param WP_Post $post The Post object being considered for trashing support. + */ + $supports_trash = apply_filters( "rest_{$this->post_type}_trashable", $supports_trash, $post ); + + if ( ! $this->check_delete_permission( $post ) ) { + return new WP_Error( 'rest_user_cannot_delete_post', __( 'Sorry, you are not allowed to delete this post.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + $request->set_param( 'context', 'edit' ); + + + // If we're forcing, then delete permanently. + if ( $force ) { + $previous = $this->prepare_item_for_response( $post, $request ); + $result = wp_delete_post( $id, true ); + $response = new WP_REST_Response(); + $response->set_data( array( 'deleted' => true, 'previous' => $previous->get_data() ) ); + } else { + // If we don't support trashing for this type, error out. + if ( ! $supports_trash ) { + return new WP_Error( 'rest_trash_not_supported', __( 'The post does not support trashing. Set force=true to delete.' ), array( 'status' => 501 ) ); + } + + // Otherwise, only trash if we haven't already. + if ( 'trash' === $post->post_status ) { + return new WP_Error( 'rest_already_trashed', __( 'The post has already been deleted.' ), array( 'status' => 410 ) ); + } + + // (Note that internally this falls through to `wp_delete_post` if + // the trash is disabled.) + $result = wp_trash_post( $id ); + $post = get_post( $id ); + $response = $this->prepare_item_for_response( $post, $request ); + } + + if ( ! $result ) { + return new WP_Error( 'rest_cannot_delete', __( 'The post cannot be deleted.' ), array( 'status' => 500 ) ); + } + + /** + * Fires immediately after a single post is deleted or trashed via the REST API. + * + * They dynamic portion of the hook name, `$this->post_type`, refers to the post type slug. + * + * @since 4.7.0 + * + * @param object $post The deleted or trashed post. + * @param WP_REST_Response $response The response data. + * @param WP_REST_Request $request The request sent to the API. + */ + do_action( "rest_delete_{$this->post_type}", $post, $response, $request ); + + return $response; + } + + /** + * Determines the allowed query_vars for a get_items() response and prepares + * them for WP_Query. + * + * @since 4.7.0 + * @access protected + * + * @param array $prepared_args Optional. Prepared WP_Query arguments. Default empty array. + * @param WP_REST_Request $request Optional. Full details about the request. + * @return array Items query arguments. + */ + protected function prepare_items_query( $prepared_args = array(), $request = null ) { + $query_args = array(); + + foreach ( $prepared_args as $key => $value ) { + /** + * Filters the query_vars used in get_items() for the constructed query. + * + * The dynamic portion of the hook name, `$key`, refers to the query_var key. + * + * @since 4.7.0 + * + * @param string $value The query_var value. + */ + $query_args[ $key ] = apply_filters( "rest_query_var-{$key}", $value ); + } + + if ( 'post' !== $this->post_type || ! isset( $query_args['ignore_sticky_posts'] ) ) { + $query_args['ignore_sticky_posts'] = true; + } + + // Map to proper WP_Query orderby param. + if ( isset( $query_args['orderby'] ) && isset( $request['orderby'] ) ) { + $orderby_mappings = array( + 'id' => 'ID', + 'include' => 'post__in', + 'slug' => 'post_name', + ); + + if ( isset( $orderby_mappings[ $request['orderby'] ] ) ) { + $query_args['orderby'] = $orderby_mappings[ $request['orderby'] ]; + } + } + + return $query_args; + } + + /** + * Checks the post_date_gmt or modified_gmt and prepare any post or + * modified date for single post output. + * + * @since 4.7.0 + * @access protected + * + * @param string $date_gmt GMT publication time. + * @param string|null $date Optional. Local publication time. Default null. + * @return string|null ISO8601/RFC3339 formatted datetime. + */ + protected function prepare_date_response( $date_gmt, $date = null ) { + // Use the date if passed. + if ( isset( $date ) ) { + return mysql_to_rfc3339( $date ); + } + + // Return null if $date_gmt is empty/zeros. + if ( '0000-00-00 00:00:00' === $date_gmt ) { + return null; + } + + // Return the formatted datetime. + return mysql_to_rfc3339( $date_gmt ); + } + + /** + * Prepares a single post for create or update. + * + * @since 4.7.0 + * @access protected + * + * @param WP_REST_Request $request Request object. + * @return stdClass|WP_Error Post object or WP_Error. + */ + protected function prepare_item_for_database( $request ) { + $prepared_post = new stdClass; + + // Post ID. + if ( isset( $request['id'] ) ) { + $prepared_post->ID = absint( $request['id'] ); + } + + $schema = $this->get_item_schema(); + + // Post title. + if ( ! empty( $schema['properties']['title'] ) && isset( $request['title'] ) ) { + if ( is_string( $request['title'] ) ) { + $prepared_post->post_title = $request['title']; + } elseif ( ! empty( $request['title']['raw'] ) ) { + $prepared_post->post_title = $request['title']['raw']; + } + } + + // Post content. + if ( ! empty( $schema['properties']['content'] ) && isset( $request['content'] ) ) { + if ( is_string( $request['content'] ) ) { + $prepared_post->post_content = $request['content']; + } elseif ( isset( $request['content']['raw'] ) ) { + $prepared_post->post_content = $request['content']['raw']; + } + } + + // Post excerpt. + if ( ! empty( $schema['properties']['excerpt'] ) && isset( $request['excerpt'] ) ) { + if ( is_string( $request['excerpt'] ) ) { + $prepared_post->post_excerpt = $request['excerpt']; + } elseif ( isset( $request['excerpt']['raw'] ) ) { + $prepared_post->post_excerpt = $request['excerpt']['raw']; + } + } + + // Post type. + if ( empty( $request['id'] ) ) { + // Creating new post, use default type for the controller. + $prepared_post->post_type = $this->post_type; + } else { + // Updating a post, use previous type. + $prepared_post->post_type = get_post_type( $request['id'] ); + } + + $post_type = get_post_type_object( $prepared_post->post_type ); + + // Post status. + if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) { + $status = $this->handle_status_param( $request['status'], $post_type ); + + if ( is_wp_error( $status ) ) { + return $status; + } + + $prepared_post->post_status = $status; + } + + // Post date. + if ( ! empty( $schema['properties']['date'] ) && ! empty( $request['date'] ) ) { + $date_data = rest_get_date_with_gmt( $request['date'] ); + + if ( ! empty( $date_data ) ) { + list( $prepared_post->post_date, $prepared_post->post_date_gmt ) = $date_data; + } + } elseif ( ! empty( $schema['properties']['date_gmt'] ) && ! empty( $request['date_gmt'] ) ) { + $date_data = rest_get_date_with_gmt( $request['date_gmt'], true ); + + if ( ! empty( $date_data ) ) { + list( $prepared_post->post_date, $prepared_post->post_date_gmt ) = $date_data; + } + } + + // Post slug. + if ( ! empty( $schema['properties']['slug'] ) && isset( $request['slug'] ) ) { + $prepared_post->post_name = $request['slug']; + } + + // Author. + if ( ! empty( $schema['properties']['author'] ) && ! empty( $request['author'] ) ) { + $post_author = (int) $request['author']; + + if ( get_current_user_id() !== $post_author ) { + $user_obj = get_userdata( $post_author ); + + if ( ! $user_obj ) { + return new WP_Error( 'rest_invalid_author', __( 'Invalid author ID.' ), array( 'status' => 400 ) ); + } + } + + $prepared_post->post_author = $post_author; + } + + // Post password. + if ( ! empty( $schema['properties']['password'] ) && isset( $request['password'] ) ) { + $prepared_post->post_password = $request['password']; + + if ( '' !== $request['password'] ) { + if ( ! empty( $schema['properties']['sticky'] ) && ! empty( $request['sticky'] ) ) { + return new WP_Error( 'rest_invalid_field', __( 'A post can not be sticky and have a password.' ), array( 'status' => 400 ) ); + } + + if ( ! empty( $prepared_post->ID ) && is_sticky( $prepared_post->ID ) ) { + return new WP_Error( 'rest_invalid_field', __( 'A sticky post can not be password protected.' ), array( 'status' => 400 ) ); + } + } + } + + if ( ! empty( $schema['properties']['sticky'] ) && ! empty( $request['sticky'] ) ) { + if ( ! empty( $prepared_post->ID ) && post_password_required( $prepared_post->ID ) ) { + return new WP_Error( 'rest_invalid_field', __( 'A password protected post can not be set to sticky.' ), array( 'status' => 400 ) ); + } + } + + // Parent. + if ( ! empty( $schema['properties']['parent'] ) && isset( $request['parent'] ) ) { + if ( 0 === (int) $request['parent'] ) { + $prepared_post->post_parent = 0; + } else { + $parent = get_post( (int) $request['parent'] ); + if ( empty( $parent ) ) { + return new WP_Error( 'rest_post_invalid_id', __( 'Invalid post parent ID.' ), array( 'status' => 400 ) ); + } + $prepared_post->post_parent = (int) $parent->ID; + } + } + + // Menu order. + if ( ! empty( $schema['properties']['menu_order'] ) && isset( $request['menu_order'] ) ) { + $prepared_post->menu_order = (int) $request['menu_order']; + } + + // Comment status. + if ( ! empty( $schema['properties']['comment_status'] ) && ! empty( $request['comment_status'] ) ) { + $prepared_post->comment_status = $request['comment_status']; + } + + // Ping status. + if ( ! empty( $schema['properties']['ping_status'] ) && ! empty( $request['ping_status'] ) ) { + $prepared_post->ping_status = $request['ping_status']; + } + + /** + * Filters a post before it is inserted via the REST API. + * + * The dynamic portion of the hook name, `$this->post_type`, refers to the post type slug. + * + * @since 4.7.0 + * + * @param stdClass $prepared_post An object representing a single post prepared + * for inserting or updating the database. + * @param WP_REST_Request $request Request object. + */ + return apply_filters( "rest_pre_insert_{$this->post_type}", $prepared_post, $request ); + + } + + /** + * Determines validity and normalizes the given status parameter. + * + * @since 4.7.0 + * @access protected + * + * @param string $post_status Post status. + * @param object $post_type Post type. + * @return string|WP_Error Post status or WP_Error if lacking the proper permission. + */ + protected function handle_status_param( $post_status, $post_type ) { + + switch ( $post_status ) { + case 'draft': + case 'pending': + break; + case 'private': + if ( ! current_user_can( $post_type->cap->publish_posts ) ) { + return new WP_Error( 'rest_cannot_publish', __( 'Sorry, you are not allowed to create private posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); + } + break; + case 'publish': + case 'future': + if ( ! current_user_can( $post_type->cap->publish_posts ) ) { + return new WP_Error( 'rest_cannot_publish', __( 'Sorry, you are not allowed to publish posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); + } + break; + default: + if ( ! get_post_status_object( $post_status ) ) { + $post_status = 'draft'; + } + break; + } + + return $post_status; + } + + /** + * Determines the featured media based on a request param. + * + * @since 4.7.0 + * @access protected + * + * @param int $featured_media Featured Media ID. + * @param int $post_id Post ID. + * @return bool|WP_Error Whether the post thumbnail was successfully deleted, otherwise WP_Error. + */ + protected function handle_featured_media( $featured_media, $post_id ) { + + $featured_media = (int) $featured_media; + if ( $featured_media ) { + $result = set_post_thumbnail( $post_id, $featured_media ); + if ( $result ) { + return true; + } else { + return new WP_Error( 'rest_invalid_featured_media', __( 'Invalid featured media ID.' ), array( 'status' => 400 ) ); + } + } else { + return delete_post_thumbnail( $post_id ); + } + + } + + /** + * Sets the template for a post. + * + * @since 4.7.0 + * @access public + * + * @param string $template Page template filename. + * @param integer $post_id Post ID. + */ + public function handle_template( $template, $post_id ) { + if ( in_array( $template, array_keys( wp_get_theme()->get_page_templates( get_post( $post_id ) ) ), true ) ) { + update_post_meta( $post_id, '_wp_page_template', $template ); + } else { + update_post_meta( $post_id, '_wp_page_template', '' ); + } + } + + /** + * Updates the post's terms from a REST request. + * + * @since 4.7.0 + * @access protected + * + * @param int $post_id The post ID to update the terms form. + * @param WP_REST_Request $request The request object with post and terms data. + * @return null|WP_Error WP_Error on an error assigning any of the terms, otherwise null. + */ + protected function handle_terms( $post_id, $request ) { + $taxonomies = wp_list_filter( get_object_taxonomies( $this->post_type, 'objects' ), array( 'show_in_rest' => true ) ); + + foreach ( $taxonomies as $taxonomy ) { + $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; + + if ( ! isset( $request[ $base ] ) ) { + continue; + } + + $result = wp_set_object_terms( $post_id, $request[ $base ], $taxonomy->name ); + + if ( is_wp_error( $result ) ) { + return $result; + } + } + } + + /** + * Checks whether current user can assign all terms sent with the current request. + * + * @since 4.7.0 + * + * @param WP_REST_Request $request The request object with post and terms data. + * @return bool Whether the current user can assign the provided terms. + */ + protected function check_assign_terms_permission( $request ) { + $taxonomies = wp_list_filter( get_object_taxonomies( $this->post_type, 'objects' ), array( 'show_in_rest' => true ) ); + foreach ( $taxonomies as $taxonomy ) { + $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; + + if ( ! isset( $request[ $base ] ) ) { + continue; + } + + foreach ( $request[ $base ] as $term_id ) { + // Invalid terms will be rejected later. + if ( ! get_term( $term_id, $taxonomy->name ) ) { + continue; + } + + if ( ! current_user_can( 'assign_term', (int) $term_id ) ) { + return false; + } + } + } + + return true; + } + + /** + * Checks if a given post type can be viewed or managed. + * + * @since 4.7.0 + * @access protected + * + * @param object|string $post_type Post type name or object. + * @return bool Whether the post type is allowed in REST. + */ + protected function check_is_post_type_allowed( $post_type ) { + if ( ! is_object( $post_type ) ) { + $post_type = get_post_type_object( $post_type ); + } + + if ( ! empty( $post_type ) && ! empty( $post_type->show_in_rest ) ) { + return true; + } + + return false; + } + + /** + * Checks if a post can be read. + * + * Correctly handles posts with the inherit status. + * + * @since 4.7.0 + * @access public + * + * @param object $post Post object. + * @return bool Whether the post can be read. + */ + public function check_read_permission( $post ) { + $post_type = get_post_type_object( $post->post_type ); + if ( ! $this->check_is_post_type_allowed( $post_type ) ) { + return false; + } + + // Is the post readable? + if ( 'publish' === $post->post_status || current_user_can( $post_type->cap->read_post, $post->ID ) ) { + return true; + } + + $post_status_obj = get_post_status_object( $post->post_status ); + if ( $post_status_obj && $post_status_obj->public ) { + return true; + } + + // Can we read the parent if we're inheriting? + if ( 'inherit' === $post->post_status && $post->post_parent > 0 ) { + $parent = get_post( $post->post_parent ); + return $this->check_read_permission( $parent ); + } + + /* + * If there isn't a parent, but the status is set to inherit, assume + * it's published (as per get_post_status()). + */ + if ( 'inherit' === $post->post_status ) { + return true; + } + + return false; + } + + /** + * Checks if a post can be edited. + * + * @since 4.7.0 + * @access protected + * + * @param object $post Post object. + * @return bool Whether the post can be edited. + */ + protected function check_update_permission( $post ) { + $post_type = get_post_type_object( $post->post_type ); + + if ( ! $this->check_is_post_type_allowed( $post_type ) ) { + return false; + } + + return current_user_can( $post_type->cap->edit_post, $post->ID ); + } + + /** + * Checks if a post can be created. + * + * @since 4.7.0 + * @access protected + * + * @param object $post Post object. + * @return bool Whether the post can be created. + */ + protected function check_create_permission( $post ) { + $post_type = get_post_type_object( $post->post_type ); + + if ( ! $this->check_is_post_type_allowed( $post_type ) ) { + return false; + } + + return current_user_can( $post_type->cap->create_posts ); + } + + /** + * Checks if a post can be deleted. + * + * @since 4.7.0 + * @access protected + * + * @param object $post Post object. + * @return bool Whether the post can be deleted. + */ + protected function check_delete_permission( $post ) { + $post_type = get_post_type_object( $post->post_type ); + + if ( ! $this->check_is_post_type_allowed( $post_type ) ) { + return false; + } + + return current_user_can( $post_type->cap->delete_post, $post->ID ); + } + + /** + * Prepares a single post output for response. + * + * @since 4.7.0 + * @access public + * + * @param WP_Post $post Post object. + * @param WP_REST_Request $request Request object. + * @return WP_REST_Response Response object. + */ + public function prepare_item_for_response( $post, $request ) { + $GLOBALS['post'] = $post; + + setup_postdata( $post ); + + $schema = $this->get_item_schema(); + + // Base fields for every post. + $data = array(); + + if ( ! empty( $schema['properties']['id'] ) ) { + $data['id'] = $post->ID; + } + + if ( ! empty( $schema['properties']['date'] ) ) { + $data['date'] = $this->prepare_date_response( $post->post_date_gmt, $post->post_date ); + } + + if ( ! empty( $schema['properties']['date_gmt'] ) ) { + $data['date_gmt'] = $this->prepare_date_response( $post->post_date_gmt ); + } + + if ( ! empty( $schema['properties']['guid'] ) ) { + $data['guid'] = array( + /** This filter is documented in wp-includes/post-template.php */ + 'rendered' => apply_filters( 'get_the_guid', $post->guid ), + 'raw' => $post->guid, + ); + } + + if ( ! empty( $schema['properties']['modified'] ) ) { + $data['modified'] = $this->prepare_date_response( $post->post_modified_gmt, $post->post_modified ); + } + + if ( ! empty( $schema['properties']['modified_gmt'] ) ) { + $data['modified_gmt'] = $this->prepare_date_response( $post->post_modified_gmt ); + } + + if ( ! empty( $schema['properties']['password'] ) ) { + $data['password'] = $post->post_password; + } + + if ( ! empty( $schema['properties']['slug'] ) ) { + $data['slug'] = $post->post_name; + } + + if ( ! empty( $schema['properties']['status'] ) ) { + $data['status'] = $post->post_status; + } + + if ( ! empty( $schema['properties']['type'] ) ) { + $data['type'] = $post->post_type; + } + + if ( ! empty( $schema['properties']['link'] ) ) { + $data['link'] = get_permalink( $post->ID ); + } + + if ( ! empty( $schema['properties']['title'] ) ) { + add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) ); + + $data['title'] = array( + 'raw' => $post->post_title, + 'rendered' => get_the_title( $post->ID ), + ); + + remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) ); + } + + $has_password_filter = false; + + if ( $this->can_access_password_content( $post, $request ) ) { + // Allow access to the post, permissions already checked before. + add_filter( 'post_password_required', '__return_false' ); + + $has_password_filter = true; + } + + if ( ! empty( $schema['properties']['content'] ) ) { + $data['content'] = array( + 'raw' => $post->post_content, + /** This filter is documented in wp-includes/post-template.php */ + 'rendered' => post_password_required( $post ) ? '' : apply_filters( 'the_content', $post->post_content ), + 'protected' => (bool) $post->post_password, + ); + } + + if ( ! empty( $schema['properties']['excerpt'] ) ) { + /** This filter is documented in wp-includes/post-template.php */ + $excerpt = apply_filters( 'the_excerpt', apply_filters( 'get_the_excerpt', $post->post_excerpt, $post ) ); + $data['excerpt'] = array( + 'raw' => $post->post_excerpt, + 'rendered' => post_password_required( $post ) ? '' : $excerpt, + 'protected' => (bool) $post->post_password, + ); + } + + if ( $has_password_filter ) { + // Reset filter. + remove_filter( 'post_password_required', '__return_false' ); + } + + if ( ! empty( $schema['properties']['author'] ) ) { + $data['author'] = (int) $post->post_author; + } + + if ( ! empty( $schema['properties']['featured_media'] ) ) { + $data['featured_media'] = (int) get_post_thumbnail_id( $post->ID ); + } + + if ( ! empty( $schema['properties']['parent'] ) ) { + $data['parent'] = (int) $post->post_parent; + } + + if ( ! empty( $schema['properties']['menu_order'] ) ) { + $data['menu_order'] = (int) $post->menu_order; + } + + if ( ! empty( $schema['properties']['comment_status'] ) ) { + $data['comment_status'] = $post->comment_status; + } + + if ( ! empty( $schema['properties']['ping_status'] ) ) { + $data['ping_status'] = $post->ping_status; + } + + if ( ! empty( $schema['properties']['sticky'] ) ) { + $data['sticky'] = is_sticky( $post->ID ); + } + + if ( ! empty( $schema['properties']['template'] ) ) { + if ( $template = get_page_template_slug( $post->ID ) ) { + $data['template'] = $template; + } else { + $data['template'] = ''; + } + } + + if ( ! empty( $schema['properties']['format'] ) ) { + $data['format'] = get_post_format( $post->ID ); + + // Fill in blank post format. + if ( empty( $data['format'] ) ) { + $data['format'] = 'standard'; + } + } + + if ( ! empty( $schema['properties']['meta'] ) ) { + $data['meta'] = $this->meta->get_value( $post->ID, $request ); + } + + $taxonomies = wp_list_filter( get_object_taxonomies( $this->post_type, 'objects' ), array( 'show_in_rest' => true ) ); + + foreach ( $taxonomies as $taxonomy ) { + $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; + + if ( ! empty( $schema['properties'][ $base ] ) ) { + $terms = get_the_terms( $post, $taxonomy->name ); + $data[ $base ] = $terms ? array_values( wp_list_pluck( $terms, 'term_id' ) ) : array(); + } + } + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + // Wrap the data in a response object. + $response = rest_ensure_response( $data ); + + $response->add_links( $this->prepare_links( $post ) ); + + /** + * Filters the post data for a response. + * + * The dynamic portion of the hook name, `$this->post_type`, refers to the post type slug. + * + * @since 4.7.0 + * + * @param WP_REST_Response $response The response object. + * @param WP_Post $post Post object. + * @param WP_REST_Request $request Request object. + */ + return apply_filters( "rest_prepare_{$this->post_type}", $response, $post, $request ); + } + + /** + * Overwrites the default protected title format. + * + * By default, WordPress will show password protected posts with a title of + * "Protected: %s", as the REST API communicates the protected status of a post + * in a machine readable format, we remove the "Protected: " prefix. + * + * @return string Protected title format. + */ + public function protected_title_format() { + return '%s'; + } + + /** + * Prepares links for the request. + * + * @since 4.7.0 + * @access protected + * + * @param WP_Post $post Post object. + * @return array Links for the given post. + */ + protected function prepare_links( $post ) { + $base = sprintf( '%s/%s', $this->namespace, $this->rest_base ); + + // Entity meta. + $links = array( + 'self' => array( + 'href' => rest_url( trailingslashit( $base ) . $post->ID ), + ), + 'collection' => array( + 'href' => rest_url( $base ), + ), + 'about' => array( + 'href' => rest_url( 'wp/v2/types/' . $this->post_type ), + ), + ); + + if ( ( in_array( $post->post_type, array( 'post', 'page' ), true ) || post_type_supports( $post->post_type, 'author' ) ) + && ! empty( $post->post_author ) ) { + $links['author'] = array( + 'href' => rest_url( 'wp/v2/users/' . $post->post_author ), + 'embeddable' => true, + ); + } + + if ( in_array( $post->post_type, array( 'post', 'page' ), true ) || post_type_supports( $post->post_type, 'comments' ) ) { + $replies_url = rest_url( 'wp/v2/comments' ); + $replies_url = add_query_arg( 'post', $post->ID, $replies_url ); + + $links['replies'] = array( + 'href' => $replies_url, + 'embeddable' => true, + ); + } + + if ( in_array( $post->post_type, array( 'post', 'page' ), true ) || post_type_supports( $post->post_type, 'revisions' ) ) { + $links['version-history'] = array( + 'href' => rest_url( trailingslashit( $base ) . $post->ID . '/revisions' ), + ); + } + + $post_type_obj = get_post_type_object( $post->post_type ); + + if ( $post_type_obj->hierarchical && ! empty( $post->post_parent ) ) { + $links['up'] = array( + 'href' => rest_url( trailingslashit( $base ) . (int) $post->post_parent ), + 'embeddable' => true, + ); + } + + // If we have a featured media, add that. + if ( $featured_media = get_post_thumbnail_id( $post->ID ) ) { + $image_url = rest_url( 'wp/v2/media/' . $featured_media ); + + $links['https://api.w.org/featuredmedia'] = array( + 'href' => $image_url, + 'embeddable' => true, + ); + } + + if ( ! in_array( $post->post_type, array( 'attachment', 'nav_menu_item', 'revision' ), true ) ) { + $attachments_url = rest_url( 'wp/v2/media' ); + $attachments_url = add_query_arg( 'parent', $post->ID, $attachments_url ); + + $links['https://api.w.org/attachment'] = array( + 'href' => $attachments_url, + ); + } + + $taxonomies = get_object_taxonomies( $post->post_type ); + + if ( ! empty( $taxonomies ) ) { + $links['https://api.w.org/term'] = array(); + + foreach ( $taxonomies as $tax ) { + $taxonomy_obj = get_taxonomy( $tax ); + + // Skip taxonomies that are not public. + if ( empty( $taxonomy_obj->show_in_rest ) ) { + continue; + } + + $tax_base = ! empty( $taxonomy_obj->rest_base ) ? $taxonomy_obj->rest_base : $tax; + + $terms_url = add_query_arg( + 'post', + $post->ID, + rest_url( 'wp/v2/' . $tax_base ) + ); + + $links['https://api.w.org/term'][] = array( + 'href' => $terms_url, + 'taxonomy' => $tax, + 'embeddable' => true, + ); + } + } + + return $links; + } + + /** + * Retrieves the post's schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access public + * + * @return array Item schema data. + */ + public function get_item_schema() { + + $schema = array( + '$schema' => 'http://json-schema.org/schema#', + 'title' => $this->post_type, + 'type' => 'object', + // Base properties for every Post. + 'properties' => array( + 'date' => array( + 'description' => __( "The date the object was published, in the site's timezone." ), + 'type' => 'string', + 'format' => 'date-time', + 'context' => array( 'view', 'edit', 'embed' ), + ), + 'date_gmt' => array( + 'description' => __( 'The date the object was published, as GMT.' ), + 'type' => 'string', + 'format' => 'date-time', + 'context' => array( 'view', 'edit' ), + ), + 'guid' => array( + 'description' => __( 'The globally unique identifier for the object.' ), + 'type' => 'object', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + 'properties' => array( + 'raw' => array( + 'description' => __( 'GUID for the object, as it exists in the database.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + 'rendered' => array( + 'description' => __( 'GUID for the object, transformed for display.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ), + 'id' => array( + 'description' => __( 'Unique identifier for the object.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + 'link' => array( + 'description' => __( 'URL to the object.' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + 'modified' => array( + 'description' => __( "The date the object was last modified, in the site's timezone." ), + 'type' => 'string', + 'format' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'modified_gmt' => array( + 'description' => __( 'The date the object was last modified, as GMT.' ), + 'type' => 'string', + 'format' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'slug' => array( + 'description' => __( 'An alphanumeric identifier for the object unique to its type.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'arg_options' => array( + 'sanitize_callback' => array( $this, 'sanitize_slug' ), + ), + ), + 'status' => array( + 'description' => __( 'A named status for the object.' ), + 'type' => 'string', + 'enum' => array_keys( get_post_stati( array( 'internal' => false ) ) ), + 'context' => array( 'edit' ), + ), + 'type' => array( + 'description' => __( 'Type of Post for the object.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + 'password' => array( + 'description' => __( 'A password to protect access to the content and excerpt.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + ), + ), + ); + + $post_type_obj = get_post_type_object( $this->post_type ); + + if ( $post_type_obj->hierarchical ) { + $schema['properties']['parent'] = array( + 'description' => __( 'The ID for the parent of the object.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + ); + } + + $post_type_attributes = array( + 'title', + 'editor', + 'author', + 'excerpt', + 'thumbnail', + 'comments', + 'revisions', + 'page-attributes', + 'post-formats', + 'custom-fields', + ); + $fixed_schemas = array( + 'post' => array( + 'title', + 'editor', + 'author', + 'excerpt', + 'thumbnail', + 'comments', + 'revisions', + 'post-formats', + 'custom-fields', + ), + 'page' => array( + 'title', + 'editor', + 'author', + 'excerpt', + 'thumbnail', + 'comments', + 'revisions', + 'page-attributes', + 'custom-fields', + ), + 'attachment' => array( + 'title', + 'author', + 'comments', + 'revisions', + 'custom-fields', + ), + ); + foreach ( $post_type_attributes as $attribute ) { + if ( isset( $fixed_schemas[ $this->post_type ] ) && ! in_array( $attribute, $fixed_schemas[ $this->post_type ], true ) ) { + continue; + } elseif ( ! isset( $fixed_schemas[ $this->post_type ] ) && ! post_type_supports( $this->post_type, $attribute ) ) { + continue; + } + + switch ( $attribute ) { + + case 'title': + $schema['properties']['title'] = array( + 'description' => __( 'The title for the object.' ), + 'type' => 'object', + 'context' => array( 'view', 'edit', 'embed' ), + 'arg_options' => array( + 'sanitize_callback' => null, // Note: sanitization implemented in self::prepare_item_for_database() + ), + 'properties' => array( + 'raw' => array( + 'description' => __( 'Title for the object, as it exists in the database.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + ), + 'rendered' => array( + 'description' => __( 'HTML title for the object, transformed for display.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + ), + ); + break; + + case 'editor': + $schema['properties']['content'] = array( + 'description' => __( 'The content for the object.' ), + 'type' => 'object', + 'context' => array( 'view', 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => null, // Note: sanitization implemented in self::prepare_item_for_database() + ), + 'properties' => array( + 'raw' => array( + 'description' => __( 'Content for the object, as it exists in the database.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + ), + 'rendered' => array( + 'description' => __( 'HTML content for the object, transformed for display.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'protected' => array( + 'description' => __( 'Whether the content is protected with a password.' ), + 'type' => 'boolean', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + ), + ); + break; + + case 'author': + $schema['properties']['author'] = array( + 'description' => __( 'The ID for the author of the object.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit', 'embed' ), + ); + break; + + case 'excerpt': + $schema['properties']['excerpt'] = array( + 'description' => __( 'The excerpt for the object.' ), + 'type' => 'object', + 'context' => array( 'view', 'edit', 'embed' ), + 'arg_options' => array( + 'sanitize_callback' => null, // Note: sanitization implemented in self::prepare_item_for_database() + ), + 'properties' => array( + 'raw' => array( + 'description' => __( 'Excerpt for the object, as it exists in the database.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + ), + 'rendered' => array( + 'description' => __( 'HTML excerpt for the object, transformed for display.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + 'protected' => array( + 'description' => __( 'Whether the excerpt is protected with a password.' ), + 'type' => 'boolean', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + ), + ); + break; + + case 'thumbnail': + $schema['properties']['featured_media'] = array( + 'description' => __( 'The ID of the featured media for the object.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + ); + break; + + case 'comments': + $schema['properties']['comment_status'] = array( + 'description' => __( 'Whether or not comments are open on the object.' ), + 'type' => 'string', + 'enum' => array( 'open', 'closed' ), + 'context' => array( 'view', 'edit' ), + ); + $schema['properties']['ping_status'] = array( + 'description' => __( 'Whether or not the object can be pinged.' ), + 'type' => 'string', + 'enum' => array( 'open', 'closed' ), + 'context' => array( 'view', 'edit' ), + ); + break; + + case 'page-attributes': + $schema['properties']['menu_order'] = array( + 'description' => __( 'The order of the object in relation to other object of its type.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + ); + break; + + case 'post-formats': + $supports_formats = get_theme_support( 'post-formats' ); + $schema['properties']['format'] = array( + 'description' => __( 'The format for the object.' ), + 'type' => 'string', + 'enum' => array_merge( array( 'standard' ), $supports_formats ? array_values( $supports_formats[0] ) : array() ), + 'context' => array( 'view', 'edit' ), + ); + break; + + case 'custom-fields': + $schema['properties']['meta'] = $this->meta->get_field_schema(); + break; + + } + } + + if ( 'post' === $this->post_type ) { + $schema['properties']['sticky'] = array( + 'description' => __( 'Whether or not the object should be treated as sticky.' ), + 'type' => 'boolean', + 'context' => array( 'view', 'edit' ), + ); + } + + $schema['properties']['template'] = array( + 'description' => __( 'The theme file to use to display the object.' ), + 'type' => 'string', + 'enum' => array_merge( array_keys( wp_get_theme()->get_page_templates( null, $this->post_type ) ), array( '' ) ), + 'context' => array( 'view', 'edit' ), + ); + + $taxonomies = wp_list_filter( get_object_taxonomies( $this->post_type, 'objects' ), array( 'show_in_rest' => true ) ); + foreach ( $taxonomies as $taxonomy ) { + $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; + $schema['properties'][ $base ] = array( + /* translators: %s: taxonomy name */ + 'description' => sprintf( __( 'The terms assigned to the object in the %s taxonomy.' ), $taxonomy->name ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'context' => array( 'view', 'edit' ), + ); + } + + return $this->add_additional_fields_schema( $schema ); + } + + /** + * Retrieves the query params for the posts collection. + * + * @since 4.7.0 + * @access public + * + * @return array Collection parameters. + */ + public function get_collection_params() { + $params = parent::get_collection_params(); + + $params['context']['default'] = 'view'; + + $params['after'] = array( + 'description' => __( 'Limit response to posts published after a given ISO8601 compliant date.' ), + 'type' => 'string', + 'format' => 'date-time', + ); + + if ( post_type_supports( $this->post_type, 'author' ) ) { + $params['author'] = array( + 'description' => __( 'Limit result set to posts assigned to specific authors.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + $params['author_exclude'] = array( + 'description' => __( 'Ensure result set excludes posts assigned to specific authors.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + } + + $params['before'] = array( + 'description' => __( 'Limit response to posts published before a given ISO8601 compliant date.' ), + 'type' => 'string', + 'format' => 'date-time', + ); + + $params['exclude'] = array( + 'description' => __( 'Ensure result set excludes specific IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + + $params['include'] = array( + 'description' => __( 'Limit result set to specific IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + + if ( 'page' === $this->post_type || post_type_supports( $this->post_type, 'page-attributes' ) ) { + $params['menu_order'] = array( + 'description' => __( 'Limit result set to posts with a specific menu_order value.' ), + 'type' => 'integer', + ); + } + + $params['offset'] = array( + 'description' => __( 'Offset the result set by a specific number of items.' ), + 'type' => 'integer', + ); + + $params['order'] = array( + 'description' => __( 'Order sort attribute ascending or descending.' ), + 'type' => 'string', + 'default' => 'desc', + 'enum' => array( 'asc', 'desc' ), + ); + + $params['orderby'] = array( + 'description' => __( 'Sort collection by object attribute.' ), + 'type' => 'string', + 'default' => 'date', + 'enum' => array( + 'date', + 'relevance', + 'id', + 'include', + 'title', + 'slug', + ), + ); + + if ( 'page' === $this->post_type || post_type_supports( $this->post_type, 'page-attributes' ) ) { + $params['orderby']['enum'][] = 'menu_order'; + } + + $post_type_obj = get_post_type_object( $this->post_type ); + + if ( $post_type_obj->hierarchical || 'attachment' === $this->post_type ) { + $params['parent'] = array( + 'description' => __( 'Limit result set to those of particular parent IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + $params['parent_exclude'] = array( + 'description' => __( 'Limit result set to all items except those of a particular parent ID.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + } + + $params['slug'] = array( + 'description' => __( 'Limit result set to posts with one or more specific slugs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + 'sanitize_callback' => 'wp_parse_slug_list', + ); + + $params['status'] = array( + 'default' => 'publish', + 'description' => __( 'Limit result set to posts assigned one or more statuses.' ), + 'type' => 'array', + 'items' => array( + 'enum' => array_merge( array_keys( get_post_stati() ), array( 'any' ) ), + 'type' => 'string', + ), + 'sanitize_callback' => array( $this, 'sanitize_post_statuses' ), + ); + + $taxonomies = wp_list_filter( get_object_taxonomies( $this->post_type, 'objects' ), array( 'show_in_rest' => true ) ); + + foreach ( $taxonomies as $taxonomy ) { + $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; + + $params[ $base ] = array( + /* translators: %s: taxonomy name */ + 'description' => sprintf( __( 'Limit result set to all items that have the specified term assigned in the %s taxonomy.' ), $base ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + + $params[ $base . '_exclude' ] = array( + /* translators: %s: taxonomy name */ + 'description' => sprintf( __( 'Limit result set to all items except those that have the specified term assigned in the %s taxonomy.' ), $base ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + } + + if ( 'post' === $this->post_type ) { + $params['sticky'] = array( + 'description' => __( 'Limit result set to items that are sticky.' ), + 'type' => 'boolean', + ); + } + + /** + * Filter collection parameters for the posts controller. + * + * The dynamic part of the filter `$this->post_type` refers to the post + * type slug for the controller. + * + * This filter registers the collection parameter, but does not map the + * collection parameter to an internal WP_Query parameter. Use the + * `rest_{$this->post_type}_query` filter to set WP_Query parameters. + * + * @since 4.7.0 + * + * @param $params JSON Schema-formatted collection parameters. + * @param WP_Post_Type $post_type_obj Post type object. + */ + return apply_filters( "rest_{$this->post_type}_collection_params", $params, $post_type_obj ); + } + + /** + * Sanitizes and validates the list of post statuses, including whether the + * user can query private statuses. + * + * @since 4.7.0 + * @access public + * + * @param string|array $statuses One or more post statuses. + * @param WP_REST_Request $request Full details about the request. + * @param string $parameter Additional parameter to pass to validation. + * @return array|WP_Error A list of valid statuses, otherwise WP_Error object. + */ + public function sanitize_post_statuses( $statuses, $request, $parameter ) { + $statuses = wp_parse_slug_list( $statuses ); + + // The default status is different in WP_REST_Attachments_Controller + $attributes = $request->get_attributes(); + $default_status = $attributes['args']['status']['default']; + + foreach ( $statuses as $status ) { + if ( $status === $default_status ) { + continue; + } + + $post_type_obj = get_post_type_object( $this->post_type ); + + if ( current_user_can( $post_type_obj->cap->edit_posts ) ) { + $result = rest_validate_request_arg( $status, $request, $parameter ); + if ( is_wp_error( $result ) ) { + return $result; + } + } else { + return new WP_Error( 'rest_forbidden_status', __( 'Status is forbidden.' ), array( 'status' => rest_authorization_required_code() ) ); + } + } + + return $statuses; + } +} diff --git a/wp/wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php b/wp/wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php new file mode 100644 index 00000000..39ef8fe8 --- /dev/null +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php @@ -0,0 +1,509 @@ +parent_post_type = $parent_post_type; + $this->parent_controller = new WP_REST_Posts_Controller( $parent_post_type ); + $this->namespace = 'wp/v2'; + $this->rest_base = 'revisions'; + $post_type_object = get_post_type_object( $parent_post_type ); + $this->parent_base = ! empty( $post_type_object->rest_base ) ? $post_type_object->rest_base : $post_type_object->name; + } + + /** + * Registers routes for revisions based on post types supporting revisions. + * + * @since 4.7.0 + * @access public + * + * @see register_rest_route() + */ + public function register_routes() { + + register_rest_route( $this->namespace, '/' . $this->parent_base . '/(?P[\d]+)/' . $this->rest_base, array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_items' ), + 'permission_callback' => array( $this, 'get_items_permissions_check' ), + 'args' => $this->get_collection_params(), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + + register_rest_route( $this->namespace, '/' . $this->parent_base . '/(?P[\d]+)/' . $this->rest_base . '/(?P[\d]+)', array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_item' ), + 'permission_callback' => array( $this, 'get_item_permissions_check' ), + 'args' => array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + ), + ), + array( + 'methods' => WP_REST_Server::DELETABLE, + 'callback' => array( $this, 'delete_item' ), + 'permission_callback' => array( $this, 'delete_item_permissions_check' ), + 'args' => array( + 'force' => array( + 'type' => 'boolean', + 'default' => false, + 'description' => __( 'Required to be true, as revisions do not support trashing.' ), + ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + )); + + } + + /** + * Checks if a given request has access to get revisions. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return true|WP_Error True if the request has read access, WP_Error object otherwise. + */ + public function get_items_permissions_check( $request ) { + + $parent = get_post( $request['parent'] ); + if ( ! $parent ) { + return true; + } + $parent_post_type_obj = get_post_type_object( $parent->post_type ); + if ( ! current_user_can( $parent_post_type_obj->cap->edit_post, $parent->ID ) ) { + return new WP_Error( 'rest_cannot_read', __( 'Sorry, you are not allowed to view revisions of this post.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Gets a collection of revisions. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_items( $request ) { + $parent = get_post( $request['parent'] ); + if ( ! $request['parent'] || ! $parent || $this->parent_post_type !== $parent->post_type ) { + return new WP_Error( 'rest_post_invalid_parent', __( 'Invalid post parent ID.' ), array( 'status' => 404 ) ); + } + + $revisions = wp_get_post_revisions( $request['parent'] ); + + $response = array(); + foreach ( $revisions as $revision ) { + $data = $this->prepare_item_for_response( $revision, $request ); + $response[] = $this->prepare_response_for_collection( $data ); + } + return rest_ensure_response( $response ); + } + + /** + * Checks if a given request has access to get a specific revision. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return bool|WP_Error True if the request has read access for the item, WP_Error object otherwise. + */ + public function get_item_permissions_check( $request ) { + return $this->get_items_permissions_check( $request ); + } + + /** + * Retrieves one revision from the collection. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_item( $request ) { + $parent = get_post( $request['parent'] ); + if ( ! $request['parent'] || ! $parent || $this->parent_post_type !== $parent->post_type ) { + return new WP_Error( 'rest_post_invalid_parent', __( 'Invalid post parent ID.' ), array( 'status' => 404 ) ); + } + + $revision = get_post( $request['id'] ); + if ( ! $revision || 'revision' !== $revision->post_type ) { + return new WP_Error( 'rest_post_invalid_id', __( 'Invalid revision ID.' ), array( 'status' => 404 ) ); + } + + $response = $this->prepare_item_for_response( $revision, $request ); + return rest_ensure_response( $response ); + } + + /** + * Checks if a given request has access to delete a revision. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return bool|WP_Error True if the request has access to delete the item, WP_Error object otherwise. + */ + public function delete_item_permissions_check( $request ) { + + $response = $this->get_items_permissions_check( $request ); + if ( ! $response || is_wp_error( $response ) ) { + return $response; + } + + $post = get_post( $request['id'] ); + if ( ! $post ) { + return new WP_Error( 'rest_post_invalid_id', __( 'Invalid revision ID.' ), array( 'status' => 404 ) ); + } + $post_type = get_post_type_object( 'revision' ); + return current_user_can( $post_type->cap->delete_post, $post->ID ); + } + + /** + * Deletes a single revision. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True on success, or WP_Error object on failure. + */ + public function delete_item( $request ) { + $force = isset( $request['force'] ) ? (bool) $request['force'] : false; + + // We don't support trashing for revisions. + if ( ! $force ) { + return new WP_Error( 'rest_trash_not_supported', __( 'Revisions do not support trashing. Set force=true to delete.' ), array( 'status' => 501 ) ); + } + + $revision = get_post( $request['id'] ); + $previous = $this->prepare_item_for_response( $revision, $request ); + + $result = wp_delete_post( $request['id'], true ); + + /** + * Fires after a revision is deleted via the REST API. + * + * @since 4.7.0 + * + * @param (mixed) $result The revision object (if it was deleted or moved to the trash successfully) + * or false (failure). If the revision was moved to to the trash, $result represents + * its new state; if it was deleted, $result represents its state before deletion. + * @param WP_REST_Request $request The request sent to the API. + */ + do_action( 'rest_delete_revision', $result, $request ); + + if ( ! $result ) { + return new WP_Error( 'rest_cannot_delete', __( 'The post cannot be deleted.' ), array( 'status' => 500 ) ); + } + + $response = new WP_REST_Response(); + $response->set_data( array( 'deleted' => true, 'previous' => $previous->get_data() ) ); + return $response; + } + + /** + * Prepares the revision for the REST response. + * + * @since 4.7.0 + * @access public + * + * @param WP_Post $post Post revision object. + * @param WP_REST_Request $request Request object. + * @return WP_REST_Response Response object. + */ + public function prepare_item_for_response( $post, $request ) { + + $schema = $this->get_item_schema(); + + $data = array(); + + if ( ! empty( $schema['properties']['author'] ) ) { + $data['author'] = $post->post_author; + } + + if ( ! empty( $schema['properties']['date'] ) ) { + $data['date'] = $this->prepare_date_response( $post->post_date_gmt, $post->post_date ); + } + + if ( ! empty( $schema['properties']['date_gmt'] ) ) { + $data['date_gmt'] = $this->prepare_date_response( $post->post_date_gmt ); + } + + if ( ! empty( $schema['properties']['id'] ) ) { + $data['id'] = $post->ID; + } + + if ( ! empty( $schema['properties']['modified'] ) ) { + $data['modified'] = $this->prepare_date_response( $post->post_modified_gmt, $post->post_modified ); + } + + if ( ! empty( $schema['properties']['modified_gmt'] ) ) { + $data['modified_gmt'] = $this->prepare_date_response( $post->post_modified_gmt ); + } + + if ( ! empty( $schema['properties']['parent'] ) ) { + $data['parent'] = (int) $post->post_parent; + } + + if ( ! empty( $schema['properties']['slug'] ) ) { + $data['slug'] = $post->post_name; + } + + if ( ! empty( $schema['properties']['guid'] ) ) { + $data['guid'] = array( + /** This filter is documented in wp-includes/post-template.php */ + 'rendered' => apply_filters( 'get_the_guid', $post->guid ), + 'raw' => $post->guid, + ); + } + + if ( ! empty( $schema['properties']['title'] ) ) { + $data['title'] = array( + 'raw' => $post->post_title, + 'rendered' => get_the_title( $post->ID ), + ); + } + + if ( ! empty( $schema['properties']['content'] ) ) { + + $data['content'] = array( + 'raw' => $post->post_content, + /** This filter is documented in wp-includes/post-template.php */ + 'rendered' => apply_filters( 'the_content', $post->post_content ), + ); + } + + if ( ! empty( $schema['properties']['excerpt'] ) ) { + $data['excerpt'] = array( + 'raw' => $post->post_excerpt, + 'rendered' => $this->prepare_excerpt_response( $post->post_excerpt, $post ), + ); + } + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + $response = rest_ensure_response( $data ); + + if ( ! empty( $data['parent'] ) ) { + $response->add_link( 'parent', rest_url( sprintf( '%s/%s/%d', $this->namespace, $this->parent_base, $data['parent'] ) ) ); + } + + /** + * Filters a revision returned from the API. + * + * Allows modification of the revision right before it is returned. + * + * @since 4.7.0 + * + * @param WP_REST_Response $response The response object. + * @param WP_Post $post The original revision object. + * @param WP_REST_Request $request Request used to generate the response. + */ + return apply_filters( 'rest_prepare_revision', $response, $post, $request ); + } + + /** + * Checks the post_date_gmt or modified_gmt and prepare any post or + * modified date for single post output. + * + * @since 4.7.0 + * @access protected + * + * @param string $date_gmt GMT publication time. + * @param string|null $date Optional. Local publication time. Default null. + * @return string|null ISO8601/RFC3339 formatted datetime, otherwise null. + */ + protected function prepare_date_response( $date_gmt, $date = null ) { + if ( '0000-00-00 00:00:00' === $date_gmt ) { + return null; + } + + if ( isset( $date ) ) { + return mysql_to_rfc3339( $date ); + } + + return mysql_to_rfc3339( $date_gmt ); + } + + /** + * Retrieves the revision's schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access public + * + * @return array Item schema data. + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/schema#', + 'title' => "{$this->parent_post_type}-revision", + 'type' => 'object', + // Base properties for every Revision. + 'properties' => array( + 'author' => array( + 'description' => __( 'The ID for the author of the object.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit', 'embed' ), + ), + 'date' => array( + 'description' => __( "The date the object was published, in the site's timezone." ), + 'type' => 'string', + 'format' => 'date-time', + 'context' => array( 'view', 'edit', 'embed' ), + ), + 'date_gmt' => array( + 'description' => __( 'The date the object was published, as GMT.' ), + 'type' => 'string', + 'format' => 'date-time', + 'context' => array( 'view', 'edit' ), + ), + 'guid' => array( + 'description' => __( 'GUID for the object, as it exists in the database.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'id' => array( + 'description' => __( 'Unique identifier for the object.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit', 'embed' ), + ), + 'modified' => array( + 'description' => __( "The date the object was last modified, in the site's timezone." ), + 'type' => 'string', + 'format' => 'date-time', + 'context' => array( 'view', 'edit' ), + ), + 'modified_gmt' => array( + 'description' => __( 'The date the object was last modified, as GMT.' ), + 'type' => 'string', + 'format' => 'date-time', + 'context' => array( 'view', 'edit' ), + ), + 'parent' => array( + 'description' => __( 'The ID for the parent of the object.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit', 'embed' ), + ), + 'slug' => array( + 'description' => __( 'An alphanumeric identifier for the object unique to its type.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + ), + ), + ); + + $parent_schema = $this->parent_controller->get_item_schema(); + + if ( ! empty( $parent_schema['properties']['title'] ) ) { + $schema['properties']['title'] = $parent_schema['properties']['title']; + } + + if ( ! empty( $parent_schema['properties']['content'] ) ) { + $schema['properties']['content'] = $parent_schema['properties']['content']; + } + + if ( ! empty( $parent_schema['properties']['excerpt'] ) ) { + $schema['properties']['excerpt'] = $parent_schema['properties']['excerpt']; + } + + if ( ! empty( $parent_schema['properties']['guid'] ) ) { + $schema['properties']['guid'] = $parent_schema['properties']['guid']; + } + + return $this->add_additional_fields_schema( $schema ); + } + + /** + * Retrieves the query params for collections. + * + * @since 4.7.0 + * @access public + * + * @return array Collection parameters. + */ + public function get_collection_params() { + return array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + ); + } + + /** + * Checks the post excerpt and prepare it for single post output. + * + * @since 4.7.0 + * @access protected + * + * @param string $excerpt The post excerpt. + * @param WP_Post $post Post revision object. + * @return string Prepared excerpt or empty string. + */ + protected function prepare_excerpt_response( $excerpt, $post ) { + + /** This filter is documented in wp-includes/post-template.php */ + $excerpt = apply_filters( 'the_excerpt', $excerpt, $post ); + + if ( empty( $excerpt ) ) { + return ''; + } + + return $excerpt; + } +} diff --git a/wp/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php b/wp/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php new file mode 100644 index 00000000..3bf74317 --- /dev/null +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php @@ -0,0 +1,319 @@ +namespace = 'wp/v2'; + $this->rest_base = 'settings'; + } + + /** + * Registers the routes for the objects of the controller. + * + * @since 4.7.0 + * @access public + * + * @see register_rest_route() + */ + public function register_routes() { + + register_rest_route( $this->namespace, '/' . $this->rest_base, array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_item' ), + 'args' => array(), + 'permission_callback' => array( $this, 'get_item_permissions_check' ), + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => array( $this, 'update_item' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), + 'permission_callback' => array( $this, 'get_item_permissions_check' ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + + } + + /** + * Checks if a given request has access to read and manage settings. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return bool True if the request has read access for the item, otherwise false. + */ + public function get_item_permissions_check( $request ) { + return current_user_can( 'manage_options' ); + } + + /** + * Retrieves the settings. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return array|WP_Error Array on success, or WP_Error object on failure. + */ + public function get_item( $request ) { + $options = $this->get_registered_options(); + $response = array(); + + foreach ( $options as $name => $args ) { + /** + * Filters the value of a setting recognized by the REST API. + * + * Allow hijacking the setting value and overriding the built-in behavior by returning a + * non-null value. The returned value will be presented as the setting value instead. + * + * @since 4.7.0 + * + * @param mixed $result Value to use for the requested setting. Can be a scalar + * matching the registered schema for the setting, or null to + * follow the default get_option() behavior. + * @param string $name Setting name (as shown in REST API responses). + * @param array $args Arguments passed to register_setting() for this setting. + */ + $response[ $name ] = apply_filters( 'rest_pre_get_setting', null, $name, $args ); + + if ( is_null( $response[ $name ] ) ) { + // Default to a null value as "null" in the response means "not set". + $response[ $name ] = get_option( $args['option_name'], $args['schema']['default'] ); + } + + /* + * Because get_option() is lossy, we have to + * cast values to the type they are registered with. + */ + $response[ $name ] = $this->prepare_value( $response[ $name ], $args['schema'] ); + } + + return $response; + } + + /** + * Prepares a value for output based off a schema array. + * + * @since 4.7.0 + * @access protected + * + * @param mixed $value Value to prepare. + * @param array $schema Schema to match. + * @return mixed The prepared value. + */ + protected function prepare_value( $value, $schema ) { + // If the value is not a scalar, it's not possible to cast it to anything. + if ( ! is_scalar( $value ) ) { + return null; + } + + switch ( $schema['type'] ) { + case 'string': + return (string) $value; + case 'integer': + return (int) $value; + case 'number': + return (float) $value; + case 'boolean': + return (bool) $value; + default: + return null; + } + } + + /** + * Updates settings for the settings object. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return array|WP_Error Array on success, or error object on failure. + */ + public function update_item( $request ) { + $options = $this->get_registered_options(); + $params = $request->get_params(); + + foreach ( $options as $name => $args ) { + if ( ! array_key_exists( $name, $params ) ) { + continue; + } + + /** + * Filters whether to preempt a setting value update. + * + * Allows hijacking the setting update logic and overriding the built-in behavior by + * returning true. + * + * @since 4.7.0 + * + * @param bool $result Whether to override the default behavior for updating the + * value of a setting. + * @param string $name Setting name (as shown in REST API responses). + * @param mixed $value Updated setting value. + * @param array $args Arguments passed to register_setting() for this setting. + */ + $updated = apply_filters( 'rest_pre_update_setting', false, $name, $request[ $name ], $args ); + + if ( $updated ) { + continue; + } + + /* + * A null value for an option would have the same effect as + * deleting the option from the database, and relying on the + * default value. + */ + if ( is_null( $request[ $name ] ) ) { + /* + * A null value is returned in the response for any option + * that has a non-scalar value. + * + * To protect clients from accidentally including the null + * values from a response object in a request, we do not allow + * options with non-scalar values to be updated to null. + * Without this added protection a client could mistakenly + * delete all options that have non-scalar values from the + * database. + */ + if ( ! is_scalar( get_option( $args['option_name'], false ) ) ) { + return new WP_Error( + 'rest_invalid_stored_value', sprintf( __( 'The %s property has an invalid stored value, and cannot be updated to null.' ), $name ), array( 'status' => 500 ) + ); + } + + delete_option( $args['option_name'] ); + } else { + update_option( $args['option_name'], $request[ $name ] ); + } + } + + return $this->get_item( $request ); + } + + /** + * Retrieves all of the registered options for the Settings API. + * + * @since 4.7.0 + * @access protected + * + * @return array Array of registered options. + */ + protected function get_registered_options() { + $rest_options = array(); + + foreach ( get_registered_settings() as $name => $args ) { + if ( empty( $args['show_in_rest'] ) ) { + continue; + } + + $rest_args = array(); + + if ( is_array( $args['show_in_rest'] ) ) { + $rest_args = $args['show_in_rest']; + } + + $defaults = array( + 'name' => ! empty( $rest_args['name'] ) ? $rest_args['name'] : $name, + 'schema' => array(), + ); + + $rest_args = array_merge( $defaults, $rest_args ); + + $default_schema = array( + 'type' => empty( $args['type'] ) ? null : $args['type'], + 'description' => empty( $args['description'] ) ? '' : $args['description'], + 'default' => isset( $args['default'] ) ? $args['default'] : null, + ); + + $rest_args['schema'] = array_merge( $default_schema, $rest_args['schema'] ); + $rest_args['option_name'] = $name; + + // Skip over settings that don't have a defined type in the schema. + if ( empty( $rest_args['schema']['type'] ) ) { + continue; + } + + /* + * Whitelist the supported types for settings, as we don't want invalid types + * to be updated with arbitrary values that we can't do decent sanitizing for. + */ + if ( ! in_array( $rest_args['schema']['type'], array( 'number', 'integer', 'string', 'boolean' ), true ) ) { + continue; + } + + $rest_options[ $rest_args['name'] ] = $rest_args; + } + + return $rest_options; + } + + /** + * Retrieves the site setting schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access public + * + * @return array Item schema data. + */ + public function get_item_schema() { + $options = $this->get_registered_options(); + + $schema = array( + '$schema' => 'http://json-schema.org/schema#', + 'title' => 'settings', + 'type' => 'object', + 'properties' => array(), + ); + + foreach ( $options as $option_name => $option ) { + $schema['properties'][ $option_name ] = $option['schema']; + $schema['properties'][ $option_name ]['arg_options'] = array( + 'sanitize_callback' => array( $this, 'sanitize_callback' ), + ); + } + + return $this->add_additional_fields_schema( $schema ); + } + + /** + * Custom sanitize callback used for all options to allow the use of 'null'. + * + * By default, the schema of settings will throw an error if a value is set to + * `null` as it's not a valid value for something like "type => string". We + * provide a wrapper sanitizer to whitelist the use of `null`. + * + * @param mixed $value The value for the setting. + * @param WP_REST_Request $request The request object. + * @param string $param The parameter name. + * @return mixed|WP_Error + */ + public function sanitize_callback( $value, $request, $param ) { + if ( is_null( $value ) ) { + return $value; + } + return rest_parse_request_arg( $value, $request, $param ); + } +} diff --git a/wp/wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php b/wp/wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php new file mode 100644 index 00000000..0fe91ee4 --- /dev/null +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php @@ -0,0 +1,317 @@ +namespace = 'wp/v2'; + $this->rest_base = 'taxonomies'; + } + + /** + * Registers the routes for the objects of the controller. + * + * @since 4.7.0 + * @access public + * + * @see register_rest_route() + */ + public function register_routes() { + + register_rest_route( $this->namespace, '/' . $this->rest_base, array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_items' ), + 'permission_callback' => array( $this, 'get_items_permissions_check' ), + 'args' => $this->get_collection_params(), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + + register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_item' ), + 'permission_callback' => array( $this, 'get_item_permissions_check' ), + 'args' => array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + } + + /** + * Checks whether a given request has permission to read taxonomies. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has read access, WP_Error object otherwise. + */ + public function get_items_permissions_check( $request ) { + if ( 'edit' === $request['context'] ) { + if ( ! empty( $request['type'] ) ) { + $taxonomies = get_object_taxonomies( $request['type'], 'objects' ); + } else { + $taxonomies = get_taxonomies( '', 'objects' ); + } + foreach ( $taxonomies as $taxonomy ) { + if ( ! empty( $taxonomy->show_in_rest ) && current_user_can( $taxonomy->cap->manage_terms ) ) { + return true; + } + } + return new WP_Error( 'rest_cannot_view', __( 'Sorry, you are not allowed to manage terms in this taxonomy.' ), array( 'status' => rest_authorization_required_code() ) ); + } + return true; + } + + /** + * Retrieves all public taxonomies. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response Response object on success, or WP_Error object on failure. + */ + public function get_items( $request ) { + + // Retrieve the list of registered collection query parameters. + $registered = $this->get_collection_params(); + + if ( isset( $registered['type'] ) && ! empty( $request['type'] ) ) { + $taxonomies = get_object_taxonomies( $request['type'], 'objects' ); + } else { + $taxonomies = get_taxonomies( '', 'objects' ); + } + $data = array(); + foreach ( $taxonomies as $tax_type => $value ) { + if ( empty( $value->show_in_rest ) || ( 'edit' === $request['context'] && ! current_user_can( $value->cap->manage_terms ) ) ) { + continue; + } + $tax = $this->prepare_item_for_response( $value, $request ); + $tax = $this->prepare_response_for_collection( $tax ); + $data[ $tax_type ] = $tax; + } + + if ( empty( $data ) ) { + // Response should still be returned as a JSON object when it is empty. + $data = (object) $data; + } + + return rest_ensure_response( $data ); + } + + /** + * Checks if a given request has access to a taxonomy. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has read access for the item, otherwise false or WP_Error object. + */ + public function get_item_permissions_check( $request ) { + + $tax_obj = get_taxonomy( $request['taxonomy'] ); + + if ( $tax_obj ) { + if ( empty( $tax_obj->show_in_rest ) ) { + return false; + } + if ( 'edit' === $request['context'] && ! current_user_can( $tax_obj->cap->manage_terms ) ) { + return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to manage terms in this taxonomy.' ), array( 'status' => rest_authorization_required_code() ) ); + } + } + + return true; + } + + /** + * Retrieves a specific taxonomy. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_item( $request ) { + $tax_obj = get_taxonomy( $request['taxonomy'] ); + if ( empty( $tax_obj ) ) { + return new WP_Error( 'rest_taxonomy_invalid', __( 'Invalid taxonomy.' ), array( 'status' => 404 ) ); + } + $data = $this->prepare_item_for_response( $tax_obj, $request ); + return rest_ensure_response( $data ); + } + + /** + * Prepares a taxonomy object for serialization. + * + * @since 4.7.0 + * @access public + * + * @param stdClass $taxonomy Taxonomy data. + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response Response object. + */ + public function prepare_item_for_response( $taxonomy, $request ) { + $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; + $data = array( + 'name' => $taxonomy->label, + 'slug' => $taxonomy->name, + 'capabilities' => $taxonomy->cap, + 'description' => $taxonomy->description, + 'labels' => $taxonomy->labels, + 'types' => $taxonomy->object_type, + 'show_cloud' => $taxonomy->show_tagcloud, + 'hierarchical' => $taxonomy->hierarchical, + 'rest_base' => $base, + ); + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + // Wrap the data in a response object. + $response = rest_ensure_response( $data ); + + $response->add_links( array( + 'collection' => array( + 'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ), + ), + 'https://api.w.org/items' => array( + 'href' => rest_url( sprintf( 'wp/v2/%s', $base ) ), + ), + ) ); + + /** + * Filters a taxonomy returned from the REST API. + * + * Allows modification of the taxonomy data right before it is returned. + * + * @since 4.7.0 + * + * @param WP_REST_Response $response The response object. + * @param object $item The original taxonomy object. + * @param WP_REST_Request $request Request used to generate the response. + */ + return apply_filters( 'rest_prepare_taxonomy', $response, $taxonomy, $request ); + } + + /** + * Retrieves the taxonomy's schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access public + * + * @return array Item schema data. + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/schema#', + 'title' => 'taxonomy', + 'type' => 'object', + 'properties' => array( + 'capabilities' => array( + 'description' => __( 'All capabilities used by the taxonomy.' ), + 'type' => 'object', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + 'description' => array( + 'description' => __( 'A human-readable description of the taxonomy.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'hierarchical' => array( + 'description' => __( 'Whether or not the taxonomy should have children.' ), + 'type' => 'boolean', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'labels' => array( + 'description' => __( 'Human-readable labels for the taxonomy for various contexts.' ), + 'type' => 'object', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + 'name' => array( + 'description' => __( 'The title for the taxonomy.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + 'slug' => array( + 'description' => __( 'An alphanumeric identifier for the taxonomy.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + 'show_cloud' => array( + 'description' => __( 'Whether or not the term cloud should be displayed.' ), + 'type' => 'boolean', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + 'types' => array( + 'description' => __( 'Types associated with the taxonomy.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'rest_base' => array( + 'description' => __( 'REST base route for the taxonomy.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, + ), + ), + ); + return $this->add_additional_fields_schema( $schema ); + } + + /** + * Retrieves the query params for collections. + * + * @since 4.7.0 + * @access public + * + * @return array Collection parameters. + */ + public function get_collection_params() { + $new_params = array(); + $new_params['context'] = $this->get_context_param( array( 'default' => 'view' ) ); + $new_params['type'] = array( + 'description' => __( 'Limit results to taxonomies associated with a specific post type.' ), + 'type' => 'string', + ); + return $new_params; + } + +} diff --git a/wp/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php b/wp/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php new file mode 100644 index 00000000..6ca86ca1 --- /dev/null +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php @@ -0,0 +1,996 @@ +taxonomy = $taxonomy; + $this->namespace = 'wp/v2'; + $tax_obj = get_taxonomy( $taxonomy ); + $this->rest_base = ! empty( $tax_obj->rest_base ) ? $tax_obj->rest_base : $tax_obj->name; + + $this->meta = new WP_REST_Term_Meta_Fields( $taxonomy ); + } + + /** + * Registers the routes for the objects of the controller. + * + * @since 4.7.0 + * @access public + * + * @see register_rest_route() + */ + public function register_routes() { + + register_rest_route( $this->namespace, '/' . $this->rest_base, array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_items' ), + 'permission_callback' => array( $this, 'get_items_permissions_check' ), + 'args' => $this->get_collection_params(), + ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => array( $this, 'create_item' ), + 'permission_callback' => array( $this, 'create_item_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + + register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\d]+)', array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_item' ), + 'permission_callback' => array( $this, 'get_item_permissions_check' ), + 'args' => array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + ), + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => array( $this, 'update_item' ), + 'permission_callback' => array( $this, 'update_item_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), + ), + array( + 'methods' => WP_REST_Server::DELETABLE, + 'callback' => array( $this, 'delete_item' ), + 'permission_callback' => array( $this, 'delete_item_permissions_check' ), + 'args' => array( + 'force' => array( + 'type' => 'boolean', + 'default' => false, + 'description' => __( 'Required to be true, as terms do not support trashing.' ), + ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + } + + /** + * Checks if a request has access to read terms in the specified taxonomy. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return bool|WP_Error True if the request has read access, otherwise false or WP_Error object. + */ + public function get_items_permissions_check( $request ) { + $tax_obj = get_taxonomy( $this->taxonomy ); + if ( ! $tax_obj || ! $this->check_is_taxonomy_allowed( $this->taxonomy ) ) { + return false; + } + if ( 'edit' === $request['context'] && ! current_user_can( $tax_obj->cap->edit_terms ) ) { + return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit terms in this taxonomy.' ), array( 'status' => rest_authorization_required_code() ) ); + } + return true; + } + + /** + * Retrieves terms associated with a taxonomy. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_items( $request ) { + + // Retrieve the list of registered collection query parameters. + $registered = $this->get_collection_params(); + + /* + * This array defines mappings between public API query parameters whose + * values are accepted as-passed, and their internal WP_Query parameter + * name equivalents (some are the same). Only values which are also + * present in $registered will be set. + */ + $parameter_mappings = array( + 'exclude' => 'exclude', + 'include' => 'include', + 'order' => 'order', + 'orderby' => 'orderby', + 'post' => 'post', + 'hide_empty' => 'hide_empty', + 'per_page' => 'number', + 'search' => 'search', + 'slug' => 'slug', + ); + + $prepared_args = array(); + + /* + * For each known parameter which is both registered and present in the request, + * set the parameter's value on the query $prepared_args. + */ + foreach ( $parameter_mappings as $api_param => $wp_param ) { + if ( isset( $registered[ $api_param ], $request[ $api_param ] ) ) { + $prepared_args[ $wp_param ] = $request[ $api_param ]; + } + } + + if ( isset( $registered['offset'] ) && ! empty( $request['offset'] ) ) { + $prepared_args['offset'] = $request['offset']; + } else { + $prepared_args['offset'] = ( $request['page'] - 1 ) * $prepared_args['number']; + } + + $taxonomy_obj = get_taxonomy( $this->taxonomy ); + + if ( $taxonomy_obj->hierarchical && isset( $registered['parent'], $request['parent'] ) ) { + if ( 0 === $request['parent'] ) { + // Only query top-level terms. + $prepared_args['parent'] = 0; + } else { + if ( $request['parent'] ) { + $prepared_args['parent'] = $request['parent']; + } + } + } + + /** + * Filters the query arguments before passing them to get_terms(). + * + * The dynamic portion of the hook name, `$this->taxonomy`, refers to the taxonomy slug. + * + * Enables adding extra arguments or setting defaults for a terms + * collection request. + * + * @since 4.7.0 + * + * @link https://developer.wordpress.org/reference/functions/get_terms/ + * + * @param array $prepared_args Array of arguments to be + * passed to get_terms(). + * @param WP_REST_Request $request The current request. + */ + $prepared_args = apply_filters( "rest_{$this->taxonomy}_query", $prepared_args, $request ); + + if ( ! empty( $prepared_args['post'] ) ) { + $query_result = wp_get_object_terms( $prepared_args['post'], $this->taxonomy, $prepared_args ); + + // Used when calling wp_count_terms() below. + $prepared_args['object_ids'] = $prepared_args['post']; + } else { + $query_result = get_terms( $this->taxonomy, $prepared_args ); + } + + $count_args = $prepared_args; + + unset( $count_args['number'], $count_args['offset'] ); + + $total_terms = wp_count_terms( $this->taxonomy, $count_args ); + + // wp_count_terms can return a falsy value when the term has no children. + if ( ! $total_terms ) { + $total_terms = 0; + } + + $response = array(); + + foreach ( $query_result as $term ) { + $data = $this->prepare_item_for_response( $term, $request ); + $response[] = $this->prepare_response_for_collection( $data ); + } + + $response = rest_ensure_response( $response ); + + // Store pagination values for headers. + $per_page = (int) $prepared_args['number']; + $page = ceil( ( ( (int) $prepared_args['offset'] ) / $per_page ) + 1 ); + + $response->header( 'X-WP-Total', (int) $total_terms ); + + $max_pages = ceil( $total_terms / $per_page ); + + $response->header( 'X-WP-TotalPages', (int) $max_pages ); + + $base = add_query_arg( $request->get_query_params(), rest_url( $this->namespace . '/' . $this->rest_base ) ); + if ( $page > 1 ) { + $prev_page = $page - 1; + + if ( $prev_page > $max_pages ) { + $prev_page = $max_pages; + } + + $prev_link = add_query_arg( 'page', $prev_page, $base ); + $response->link_header( 'prev', $prev_link ); + } + if ( $max_pages > $page ) { + $next_page = $page + 1; + $next_link = add_query_arg( 'page', $next_page, $base ); + + $response->link_header( 'next', $next_link ); + } + + return $response; + } + + /** + * Checks if a request has access to read or edit the specified term. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return bool|WP_Error True if the request has read access for the item, otherwise false or WP_Error object. + */ + public function get_item_permissions_check( $request ) { + $tax_obj = get_taxonomy( $this->taxonomy ); + if ( ! $tax_obj || ! $this->check_is_taxonomy_allowed( $this->taxonomy ) ) { + return false; + } + if ( 'edit' === $request['context'] && ! current_user_can( 'edit_term', (int) $request['id'] ) ) { + return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit this term.' ), array( 'status' => rest_authorization_required_code() ) ); + } + return true; + } + + /** + * Gets a single term from a taxonomy. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_item( $request ) { + + $term = get_term( (int) $request['id'], $this->taxonomy ); + + if ( ! $term || $term->taxonomy !== $this->taxonomy ) { + return new WP_Error( 'rest_term_invalid', __( "Term doesn't exist." ), array( 'status' => 404 ) ); + } + + if ( is_wp_error( $term ) ) { + return $term; + } + + $response = $this->prepare_item_for_response( $term, $request ); + + return rest_ensure_response( $response ); + } + + /** + * Checks if a request has access to create a term. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return bool|WP_Error True if the request has access to create items, false or WP_Error object otherwise. + */ + public function create_item_permissions_check( $request ) { + + if ( ! $this->check_is_taxonomy_allowed( $this->taxonomy ) ) { + return false; + } + + $taxonomy_obj = get_taxonomy( $this->taxonomy ); + if ( ! current_user_can( $taxonomy_obj->cap->edit_terms ) ) { + return new WP_Error( 'rest_cannot_create', __( 'Sorry, you are not allowed to create new terms.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Creates a single term in a taxonomy. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function create_item( $request ) { + if ( isset( $request['parent'] ) ) { + if ( ! is_taxonomy_hierarchical( $this->taxonomy ) ) { + return new WP_Error( 'rest_taxonomy_not_hierarchical', __( 'Can not set parent term, taxonomy is not hierarchical.' ), array( 'status' => 400 ) ); + } + + $parent = get_term( (int) $request['parent'], $this->taxonomy ); + + if ( ! $parent ) { + return new WP_Error( 'rest_term_invalid', __( "Parent term doesn't exist." ), array( 'status' => 400 ) ); + } + } + + $prepared_term = $this->prepare_item_for_database( $request ); + + $term = wp_insert_term( wp_slash( $prepared_term->name ), $this->taxonomy, wp_slash( (array) $prepared_term ) ); + if ( is_wp_error( $term ) ) { + /* + * If we're going to inform the client that the term already exists, + * give them the identifier for future use. + */ + if ( $term_id = $term->get_error_data( 'term_exists' ) ) { + $existing_term = get_term( $term_id, $this->taxonomy ); + $term->add_data( $existing_term->term_id, 'term_exists' ); + } + + return $term; + } + + $term = get_term( $term['term_id'], $this->taxonomy ); + + /** + * Fires after a single term is created or updated via the REST API. + * + * The dynamic portion of the hook name, `$this->taxonomy`, refers to the taxonomy slug. + * + * @since 4.7.0 + * + * @param WP_Term $term Inserted or updated term object. + * @param WP_REST_Request $request Request object. + * @param bool $creating True when creating a term, false when updating. + */ + do_action( "rest_insert_{$this->taxonomy}", $term, $request, true ); + + $schema = $this->get_item_schema(); + if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) { + $meta_update = $this->meta->update_value( $request['meta'], (int) $request['id'] ); + + if ( is_wp_error( $meta_update ) ) { + return $meta_update; + } + } + + $fields_update = $this->update_additional_fields_for_object( $term, $request ); + + if ( is_wp_error( $fields_update ) ) { + return $fields_update; + } + + $request->set_param( 'context', 'view' ); + + $response = $this->prepare_item_for_response( $term, $request ); + $response = rest_ensure_response( $response ); + + $response->set_status( 201 ); + $response->header( 'Location', rest_url( $this->namespace . '/' . $this->rest_base . '/' . $term->term_id ) ); + + return $response; + } + + /** + * Checks if a request has access to update the specified term. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return bool|WP_Error True if the request has access to update the item, false or WP_Error object otherwise. + */ + public function update_item_permissions_check( $request ) { + + if ( ! $this->check_is_taxonomy_allowed( $this->taxonomy ) ) { + return false; + } + + $term = get_term( (int) $request['id'], $this->taxonomy ); + + if ( ! $term ) { + return new WP_Error( 'rest_term_invalid', __( "Term doesn't exist." ), array( 'status' => 404 ) ); + } + + if ( ! current_user_can( 'edit_term', $term->term_id ) ) { + return new WP_Error( 'rest_cannot_update', __( 'Sorry, you are not allowed to edit this term.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Updates a single term from a taxonomy. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function update_item( $request ) { + if ( isset( $request['parent'] ) ) { + if ( ! is_taxonomy_hierarchical( $this->taxonomy ) ) { + return new WP_Error( 'rest_taxonomy_not_hierarchical', __( 'Can not set parent term, taxonomy is not hierarchical.' ), array( 'status' => 400 ) ); + } + + $parent = get_term( (int) $request['parent'], $this->taxonomy ); + + if ( ! $parent ) { + return new WP_Error( 'rest_term_invalid', __( "Parent term doesn't exist." ), array( 'status' => 400 ) ); + } + } + + $prepared_term = $this->prepare_item_for_database( $request ); + + $term = get_term( (int) $request['id'], $this->taxonomy ); + + // Only update the term if we haz something to update. + if ( ! empty( $prepared_term ) ) { + $update = wp_update_term( $term->term_id, $term->taxonomy, wp_slash( (array) $prepared_term ) ); + + if ( is_wp_error( $update ) ) { + return $update; + } + } + + $term = get_term( (int) $request['id'], $this->taxonomy ); + + /* This action is documented in lib/endpoints/class-wp-rest-terms-controller.php */ + do_action( "rest_insert_{$this->taxonomy}", $term, $request, false ); + + $schema = $this->get_item_schema(); + if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) { + $meta_update = $this->meta->update_value( $request['meta'], (int) $request['id'] ); + + if ( is_wp_error( $meta_update ) ) { + return $meta_update; + } + } + + $fields_update = $this->update_additional_fields_for_object( $term, $request ); + + if ( is_wp_error( $fields_update ) ) { + return $fields_update; + } + + $request->set_param( 'context', 'view' ); + + $response = $this->prepare_item_for_response( $term, $request ); + + return rest_ensure_response( $response ); + } + + /** + * Checks if a request has access to delete the specified term. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return bool|WP_Error True if the request has access to delete the item, otherwise false or WP_Error object. + */ + public function delete_item_permissions_check( $request ) { + if ( ! $this->check_is_taxonomy_allowed( $this->taxonomy ) ) { + return false; + } + + $term = get_term( (int) $request['id'], $this->taxonomy ); + + if ( ! $term ) { + return new WP_Error( 'rest_term_invalid', __( "Term doesn't exist." ), array( 'status' => 404 ) ); + } + + if ( ! current_user_can( 'delete_term', $term->term_id ) ) { + return new WP_Error( 'rest_cannot_delete', __( 'Sorry, you are not allowed to delete this term.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Deletes a single term from a taxonomy. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function delete_item( $request ) { + + $force = isset( $request['force'] ) ? (bool) $request['force'] : false; + + // We don't support trashing for terms. + if ( ! $force ) { + return new WP_Error( 'rest_trash_not_supported', __( 'Terms do not support trashing. Set force=true to delete.' ), array( 'status' => 501 ) ); + } + + $term = get_term( (int) $request['id'], $this->taxonomy ); + + $request->set_param( 'context', 'view' ); + + $previous = $this->prepare_item_for_response( $term, $request ); + + $retval = wp_delete_term( $term->term_id, $term->taxonomy ); + + if ( ! $retval ) { + return new WP_Error( 'rest_cannot_delete', __( 'The term cannot be deleted.' ), array( 'status' => 500 ) ); + } + + $response = new WP_REST_Response(); + $response->set_data( array( 'deleted' => true, 'previous' => $previous->get_data() ) ); + + /** + * Fires after a single term is deleted via the REST API. + * + * The dynamic portion of the hook name, `$this->taxonomy`, refers to the taxonomy slug. + * + * @since 4.7.0 + * + * @param WP_Term $term The deleted term. + * @param WP_REST_Response $response The response data. + * @param WP_REST_Request $request The request sent to the API. + */ + do_action( "rest_delete_{$this->taxonomy}", $term, $response, $request ); + + return $response; + } + + /** + * Prepares a single term for create or update. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Request object. + * @return object $prepared_term Term object. + */ + public function prepare_item_for_database( $request ) { + $prepared_term = new stdClass; + + $schema = $this->get_item_schema(); + if ( isset( $request['name'] ) && ! empty( $schema['properties']['name'] ) ) { + $prepared_term->name = $request['name']; + } + + if ( isset( $request['slug'] ) && ! empty( $schema['properties']['slug'] ) ) { + $prepared_term->slug = $request['slug']; + } + + if ( isset( $request['taxonomy'] ) && ! empty( $schema['properties']['taxonomy'] ) ) { + $prepared_term->taxonomy = $request['taxonomy']; + } + + if ( isset( $request['description'] ) && ! empty( $schema['properties']['description'] ) ) { + $prepared_term->description = $request['description']; + } + + if ( isset( $request['parent'] ) && ! empty( $schema['properties']['parent'] ) ) { + $parent_term_id = 0; + $parent_term = get_term( (int) $request['parent'], $this->taxonomy ); + + if ( $parent_term ) { + $parent_term_id = $parent_term->term_id; + } + + $prepared_term->parent = $parent_term_id; + } + + /** + * Filters term data before inserting term via the REST API. + * + * The dynamic portion of the hook name, `$this->taxonomy`, refers to the taxonomy slug. + * + * @since 4.7.0 + * + * @param object $prepared_term Term object. + * @param WP_REST_Request $request Request object. + */ + return apply_filters( "rest_pre_insert_{$this->taxonomy}", $prepared_term, $request ); + } + + /** + * Prepares a single term output for response. + * + * @since 4.7.0 + * @access public + * + * @param obj $item Term object. + * @param WP_REST_Request $request Request object. + * @return WP_REST_Response $response Response object. + */ + public function prepare_item_for_response( $item, $request ) { + + $schema = $this->get_item_schema(); + $data = array(); + + if ( ! empty( $schema['properties']['id'] ) ) { + $data['id'] = (int) $item->term_id; + } + + if ( ! empty( $schema['properties']['count'] ) ) { + $data['count'] = (int) $item->count; + } + + if ( ! empty( $schema['properties']['description'] ) ) { + $data['description'] = $item->description; + } + + if ( ! empty( $schema['properties']['link'] ) ) { + $data['link'] = get_term_link( $item ); + } + + if ( ! empty( $schema['properties']['name'] ) ) { + $data['name'] = $item->name; + } + + if ( ! empty( $schema['properties']['slug'] ) ) { + $data['slug'] = $item->slug; + } + + if ( ! empty( $schema['properties']['taxonomy'] ) ) { + $data['taxonomy'] = $item->taxonomy; + } + + if ( ! empty( $schema['properties']['parent'] ) ) { + $data['parent'] = (int) $item->parent; + } + + if ( ! empty( $schema['properties']['meta'] ) ) { + $data['meta'] = $this->meta->get_value( $item->term_id, $request ); + } + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + $response = rest_ensure_response( $data ); + + $response->add_links( $this->prepare_links( $item ) ); + + /** + * Filters a term item returned from the API. + * + * The dynamic portion of the hook name, `$this->taxonomy`, refers to the taxonomy slug. + * + * Allows modification of the term data right before it is returned. + * + * @since 4.7.0 + * + * @param WP_REST_Response $response The response object. + * @param object $item The original term object. + * @param WP_REST_Request $request Request used to generate the response. + */ + return apply_filters( "rest_prepare_{$this->taxonomy}", $response, $item, $request ); + } + + /** + * Prepares links for the request. + * + * @since 4.7.0 + * @access protected + * + * @param object $term Term object. + * @return array Links for the given term. + */ + protected function prepare_links( $term ) { + $base = $this->namespace . '/' . $this->rest_base; + $links = array( + 'self' => array( + 'href' => rest_url( trailingslashit( $base ) . $term->term_id ), + ), + 'collection' => array( + 'href' => rest_url( $base ), + ), + 'about' => array( + 'href' => rest_url( sprintf( 'wp/v2/taxonomies/%s', $this->taxonomy ) ), + ), + ); + + if ( $term->parent ) { + $parent_term = get_term( (int) $term->parent, $term->taxonomy ); + + if ( $parent_term ) { + $links['up'] = array( + 'href' => rest_url( trailingslashit( $base ) . $parent_term->term_id ), + 'embeddable' => true, + ); + } + } + + $taxonomy_obj = get_taxonomy( $term->taxonomy ); + + if ( empty( $taxonomy_obj->object_type ) ) { + return $links; + } + + $post_type_links = array(); + + foreach ( $taxonomy_obj->object_type as $type ) { + $post_type_object = get_post_type_object( $type ); + + if ( empty( $post_type_object->show_in_rest ) ) { + continue; + } + + $rest_base = ! empty( $post_type_object->rest_base ) ? $post_type_object->rest_base : $post_type_object->name; + $post_type_links[] = array( + 'href' => add_query_arg( $this->rest_base, $term->term_id, rest_url( sprintf( 'wp/v2/%s', $rest_base ) ) ), + ); + } + + if ( ! empty( $post_type_links ) ) { + $links['https://api.w.org/post_type'] = $post_type_links; + } + + return $links; + } + + /** + * Retrieves the term's schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access public + * + * @return array Item schema data. + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/schema#', + 'title' => 'post_tag' === $this->taxonomy ? 'tag' : $this->taxonomy, + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'description' => __( 'Unique identifier for the term.' ), + 'type' => 'integer', + 'context' => array( 'view', 'embed', 'edit' ), + 'readonly' => true, + ), + 'count' => array( + 'description' => __( 'Number of published posts for the term.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'description' => array( + 'description' => __( 'HTML description of the term.' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'link' => array( + 'description' => __( 'URL of the term.' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'view', 'embed', 'edit' ), + 'readonly' => true, + ), + 'name' => array( + 'description' => __( 'HTML title for the term.' ), + 'type' => 'string', + 'context' => array( 'view', 'embed', 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => 'sanitize_text_field', + ), + 'required' => true, + ), + 'slug' => array( + 'description' => __( 'An alphanumeric identifier for the term unique to its type.' ), + 'type' => 'string', + 'context' => array( 'view', 'embed', 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => array( $this, 'sanitize_slug' ), + ), + ), + 'taxonomy' => array( + 'description' => __( 'Type attribution for the term.' ), + 'type' => 'string', + 'enum' => array_keys( get_taxonomies() ), + 'context' => array( 'view', 'embed', 'edit' ), + 'readonly' => true, + ), + ), + ); + + $taxonomy = get_taxonomy( $this->taxonomy ); + + if ( $taxonomy->hierarchical ) { + $schema['properties']['parent'] = array( + 'description' => __( 'The parent term ID.' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + ); + } + + $schema['properties']['meta'] = $this->meta->get_field_schema(); + + return $this->add_additional_fields_schema( $schema ); + } + + /** + * Retrieves the query params for collections. + * + * @since 4.7.0 + * @access public + * + * @return array Collection parameters. + */ + public function get_collection_params() { + $query_params = parent::get_collection_params(); + $taxonomy = get_taxonomy( $this->taxonomy ); + + $query_params['context']['default'] = 'view'; + + $query_params['exclude'] = array( + 'description' => __( 'Ensure result set excludes specific IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + + $query_params['include'] = array( + 'description' => __( 'Limit result set to specific IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + + if ( ! $taxonomy->hierarchical ) { + $query_params['offset'] = array( + 'description' => __( 'Offset the result set by a specific number of items.' ), + 'type' => 'integer', + ); + } + + $query_params['order'] = array( + 'description' => __( 'Order sort attribute ascending or descending.' ), + 'type' => 'string', + 'default' => 'asc', + 'enum' => array( + 'asc', + 'desc', + ), + ); + + $query_params['orderby'] = array( + 'description' => __( 'Sort collection by term attribute.' ), + 'type' => 'string', + 'default' => 'name', + 'enum' => array( + 'id', + 'include', + 'name', + 'slug', + 'term_group', + 'description', + 'count', + ), + ); + + $query_params['hide_empty'] = array( + 'description' => __( 'Whether to hide terms not assigned to any posts.' ), + 'type' => 'boolean', + 'default' => false, + ); + + if ( $taxonomy->hierarchical ) { + $query_params['parent'] = array( + 'description' => __( 'Limit result set to terms assigned to a specific parent.' ), + 'type' => 'integer', + ); + } + + $query_params['post'] = array( + 'description' => __( 'Limit result set to terms assigned to a specific post.' ), + 'type' => 'integer', + 'default' => null, + ); + + $query_params['slug'] = array( + 'description' => __( 'Limit result set to terms with a specific slug.' ), + 'type' => 'string', + ); + + /** + * Filter collection parameters for the terms controller. + * + * The dynamic part of the filter `$this->taxonomy` refers to the taxonomy + * slug for the controller. + * + * This filter registers the collection parameter, but does not map the + * collection parameter to an internal WP_Term_Query parameter. Use the + * `rest_{$this->taxonomy}_query` filter to set WP_Term_Query parameters. + * + * @since 4.7.0 + * + * @param $params JSON Schema-formatted collection parameters. + * @param WP_Taxonomy $taxonomy_obj Taxonomy object. + */ + return apply_filters( 'rest_{$this->taxonomy}_collection_params', $query_params, $taxonomy ); + } + + /** + * Checks that the taxonomy is valid. + * + * @since 4.7.0 + * @access protected + * + * @param string $taxonomy Taxonomy to check. + * @return bool Whether the taxonomy is allowed for REST management. + */ + protected function check_is_taxonomy_allowed( $taxonomy ) { + $taxonomy_obj = get_taxonomy( $taxonomy ); + if ( $taxonomy_obj && ! empty( $taxonomy_obj->show_in_rest ) ) { + return true; + } + return false; + } +} diff --git a/wp/wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php b/wp/wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php new file mode 100644 index 00000000..01542a9b --- /dev/null +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php @@ -0,0 +1,1358 @@ +namespace = 'wp/v2'; + $this->rest_base = 'users'; + + $this->meta = new WP_REST_User_Meta_Fields(); + } + + /** + * Registers the routes for the objects of the controller. + * + * @since 4.7.0 + * @access public + * + * @see register_rest_route() + */ + public function register_routes() { + + register_rest_route( $this->namespace, '/' . $this->rest_base, array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_items' ), + 'permission_callback' => array( $this, 'get_items_permissions_check' ), + 'args' => $this->get_collection_params(), + ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => array( $this, 'create_item' ), + 'permission_callback' => array( $this, 'create_item_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + + register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\d]+)', array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_item' ), + 'permission_callback' => array( $this, 'get_item_permissions_check' ), + 'args' => array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + ), + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => array( $this, 'update_item' ), + 'permission_callback' => array( $this, 'update_item_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), + ), + array( + 'methods' => WP_REST_Server::DELETABLE, + 'callback' => array( $this, 'delete_item' ), + 'permission_callback' => array( $this, 'delete_item_permissions_check' ), + 'args' => array( + 'force' => array( + 'type' => 'boolean', + 'default' => false, + 'description' => __( 'Required to be true, as users do not support trashing.' ), + ), + 'reassign' => array( + 'type' => 'integer', + 'description' => __( 'Reassign the deleted user\'s posts and links to this user ID.' ), + 'required' => true, + 'sanitize_callback' => array( $this, 'check_reassign' ), + ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) ); + + register_rest_route( $this->namespace, '/' . $this->rest_base . '/me', array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_current_item' ), + 'args' => array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + ), + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => array( $this, 'update_current_item' ), + 'permission_callback' => array( $this, 'update_current_item_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), + ), + array( + 'methods' => WP_REST_Server::DELETABLE, + 'callback' => array( $this, 'delete_current_item' ), + 'permission_callback' => array( $this, 'delete_current_item_permissions_check' ), + 'args' => array( + 'force' => array( + 'type' => 'boolean', + 'default' => false, + 'description' => __( 'Required to be true, as users do not support trashing.' ), + ), + 'reassign' => array( + 'type' => 'integer', + 'description' => __( 'Reassign the deleted user\'s posts and links to this user ID.' ), + 'required' => true, + 'sanitize_callback' => array( $this, 'check_reassign' ), + ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + )); + } + + /** + * Checks for a valid value for the reassign parameter when deleting users. + * + * The value can be an integer, 'false', false, or ''. + * + * @since 4.7.0 + * + * @param int|bool $value The value passed to the reassign parameter. + * @param WP_REST_Request $request Full details about the request. + * @param string $param The parameter that is being sanitized. + * + * @return int|bool|WP_Error + */ + public function check_reassign( $value, $request, $param ) { + if ( is_numeric( $value ) ) { + return $value; + } + + if ( empty( $value ) || false === $value || 'false' === $value ) { + return false; + } + + return new WP_Error( 'rest_invalid_param', __( 'Invalid user parameter(s).' ), array( 'status' => 400 ) ); + } + + /** + * Permissions check for getting all users. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has read access, otherwise WP_Error object. + */ + public function get_items_permissions_check( $request ) { + // Check if roles is specified in GET request and if user can list users. + if ( ! empty( $request['roles'] ) && ! current_user_can( 'list_users' ) ) { + return new WP_Error( 'rest_user_cannot_view', __( 'Sorry, you are not allowed to filter users by role.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( 'edit' === $request['context'] && ! current_user_can( 'list_users' ) ) { + return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to list users.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( in_array( $request['orderby'], array( 'email', 'registered_date' ), true ) && ! current_user_can( 'list_users' ) ) { + return new WP_Error( 'rest_forbidden_orderby', __( 'Sorry, you are not allowed to order users by this parameter.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Retrieves all users. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_items( $request ) { + + // Retrieve the list of registered collection query parameters. + $registered = $this->get_collection_params(); + + /* + * This array defines mappings between public API query parameters whose + * values are accepted as-passed, and their internal WP_Query parameter + * name equivalents (some are the same). Only values which are also + * present in $registered will be set. + */ + $parameter_mappings = array( + 'exclude' => 'exclude', + 'include' => 'include', + 'order' => 'order', + 'per_page' => 'number', + 'search' => 'search', + 'roles' => 'role__in', + ); + + $prepared_args = array(); + + /* + * For each known parameter which is both registered and present in the request, + * set the parameter's value on the query $prepared_args. + */ + foreach ( $parameter_mappings as $api_param => $wp_param ) { + if ( isset( $registered[ $api_param ], $request[ $api_param ] ) ) { + $prepared_args[ $wp_param ] = $request[ $api_param ]; + } + } + + if ( isset( $registered['offset'] ) && ! empty( $request['offset'] ) ) { + $prepared_args['offset'] = $request['offset']; + } else { + $prepared_args['offset'] = ( $request['page'] - 1 ) * $prepared_args['number']; + } + + if ( isset( $registered['orderby'] ) ) { + $orderby_possibles = array( + 'id' => 'ID', + 'include' => 'include', + 'name' => 'display_name', + 'registered_date' => 'registered', + 'slug' => 'user_nicename', + 'email' => 'user_email', + 'url' => 'user_url', + ); + $prepared_args['orderby'] = $orderby_possibles[ $request['orderby'] ]; + } + + if ( ! current_user_can( 'list_users' ) ) { + $prepared_args['has_published_posts'] = true; + } + + if ( ! empty( $prepared_args['search'] ) ) { + $prepared_args['search'] = '*' . $prepared_args['search'] . '*'; + } + + if ( isset( $registered['slug'] ) && ! empty( $request['slug'] ) ) { + $prepared_args['search'] = $request['slug']; + $prepared_args['search_columns'] = array( 'user_nicename' ); + } + + /** + * Filters WP_User_Query arguments when querying users via the REST API. + * + * @link https://developer.wordpress.org/reference/classes/wp_user_query/ + * + * @since 4.7.0 + * + * @param array $prepared_args Array of arguments for WP_User_Query. + * @param WP_REST_Request $request The current request. + */ + $prepared_args = apply_filters( 'rest_user_query', $prepared_args, $request ); + + $query = new WP_User_Query( $prepared_args ); + + $users = array(); + + foreach ( $query->results as $user ) { + $data = $this->prepare_item_for_response( $user, $request ); + $users[] = $this->prepare_response_for_collection( $data ); + } + + $response = rest_ensure_response( $users ); + + // Store pagination values for headers then unset for count query. + $per_page = (int) $prepared_args['number']; + $page = ceil( ( ( (int) $prepared_args['offset'] ) / $per_page ) + 1 ); + + $prepared_args['fields'] = 'ID'; + + $total_users = $query->get_total(); + + if ( $total_users < 1 ) { + // Out-of-bounds, run the query again without LIMIT for total count. + unset( $prepared_args['number'], $prepared_args['offset'] ); + $count_query = new WP_User_Query( $prepared_args ); + $total_users = $count_query->get_total(); + } + + $response->header( 'X-WP-Total', (int) $total_users ); + + $max_pages = ceil( $total_users / $per_page ); + + $response->header( 'X-WP-TotalPages', (int) $max_pages ); + + $base = add_query_arg( $request->get_query_params(), rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ) ); + if ( $page > 1 ) { + $prev_page = $page - 1; + + if ( $prev_page > $max_pages ) { + $prev_page = $max_pages; + } + + $prev_link = add_query_arg( 'page', $prev_page, $base ); + $response->link_header( 'prev', $prev_link ); + } + if ( $max_pages > $page ) { + $next_page = $page + 1; + $next_link = add_query_arg( 'page', $next_page, $base ); + + $response->link_header( 'next', $next_link ); + } + + return $response; + } + + /** + * Checks if a given request has access to read a user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has read access for the item, otherwise WP_Error object. + */ + public function get_item_permissions_check( $request ) { + + $id = (int) $request['id']; + $user = get_userdata( $id ); + $types = get_post_types( array( 'show_in_rest' => true ), 'names' ); + + if ( empty( $id ) || empty( $user->ID ) ) { + return new WP_Error( 'rest_user_invalid_id', __( 'Invalid user ID.' ), array( 'status' => 404 ) ); + } + + if ( get_current_user_id() === $id ) { + return true; + } + + if ( 'edit' === $request['context'] && ! current_user_can( 'list_users' ) ) { + return new WP_Error( 'rest_user_cannot_view', __( 'Sorry, you are not allowed to list users.' ), array( 'status' => rest_authorization_required_code() ) ); + } elseif ( ! count_user_posts( $id, $types ) && ! current_user_can( 'edit_user', $id ) && ! current_user_can( 'list_users' ) ) { + return new WP_Error( 'rest_user_cannot_view', __( 'Sorry, you are not allowed to list users.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Retrieves a single user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_item( $request ) { + $id = (int) $request['id']; + $user = get_userdata( $id ); + + if ( empty( $id ) || empty( $user->ID ) ) { + return new WP_Error( 'rest_user_invalid_id', __( 'Invalid user ID.' ), array( 'status' => 404 ) ); + } + + $user = $this->prepare_item_for_response( $user, $request ); + $response = rest_ensure_response( $user ); + + return $response; + } + + /** + * Retrieves the current user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_current_item( $request ) { + $current_user_id = get_current_user_id(); + + if ( empty( $current_user_id ) ) { + return new WP_Error( 'rest_not_logged_in', __( 'You are not currently logged in.' ), array( 'status' => 401 ) ); + } + + $user = wp_get_current_user(); + $response = $this->prepare_item_for_response( $user, $request ); + $response = rest_ensure_response( $response ); + + + return $response; + } + + /** + * Checks if a given request has access create users. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise. + */ + public function create_item_permissions_check( $request ) { + + if ( ! current_user_can( 'create_users' ) ) { + return new WP_Error( 'rest_cannot_create_user', __( 'Sorry, you are not allowed to create new users.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Creates a single user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function create_item( $request ) { + if ( ! empty( $request['id'] ) ) { + return new WP_Error( 'rest_user_exists', __( 'Cannot create existing user.' ), array( 'status' => 400 ) ); + } + + $schema = $this->get_item_schema(); + + if ( ! empty( $request['roles'] ) && ! empty( $schema['properties']['roles'] ) ) { + $check_permission = $this->check_role_update( $request['id'], $request['roles'] ); + + if ( is_wp_error( $check_permission ) ) { + return $check_permission; + } + } + + $user = $this->prepare_item_for_database( $request ); + + if ( is_multisite() ) { + $ret = wpmu_validate_user_signup( $user->user_login, $user->user_email ); + + if ( is_wp_error( $ret['errors'] ) && ! empty( $ret['errors']->errors ) ) { + $error = new WP_Error( 'rest_invalid_param', __( 'Invalid user parameter(s).' ), array( 'status' => 400 ) ); + foreach ( $ret['errors']->errors as $code => $messages ) { + foreach ( $messages as $message ) { + $error->add( $code, $message ); + } + if ( $error_data = $error->get_error_data( $code ) ) { + $error->add_data( $error_data, $code ); + } + } + return $error; + } + } + + if ( is_multisite() ) { + $user_id = wpmu_create_user( $user->user_login, $user->user_pass, $user->user_email ); + + if ( ! $user_id ) { + return new WP_Error( 'rest_user_create', __( 'Error creating new user.' ), array( 'status' => 500 ) ); + } + + $user->ID = $user_id; + $user_id = wp_update_user( wp_slash( (array) $user ) ); + + if ( is_wp_error( $user_id ) ) { + return $user_id; + } + + add_user_to_blog( get_site()->id, $user_id, '' ); + } else { + $user_id = wp_insert_user( wp_slash( (array) $user ) ); + + if ( is_wp_error( $user_id ) ) { + return $user_id; + } + } + + $user = get_user_by( 'id', $user_id ); + + /** + * Fires immediately after a user is created or updated via the REST API. + * + * @since 4.7.0 + * + * @param WP_User $user Inserted or updated user object. + * @param WP_REST_Request $request Request object. + * @param bool $creating True when creating a user, false when updating. + */ + do_action( 'rest_insert_user', $user, $request, true ); + + if ( ! empty( $request['roles'] ) && ! empty( $schema['properties']['roles'] ) ) { + array_map( array( $user, 'add_role' ), $request['roles'] ); + } + + if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) { + $meta_update = $this->meta->update_value( $request['meta'], $user_id ); + + if ( is_wp_error( $meta_update ) ) { + return $meta_update; + } + } + + $user = get_user_by( 'id', $user_id ); + $fields_update = $this->update_additional_fields_for_object( $user, $request ); + + if ( is_wp_error( $fields_update ) ) { + return $fields_update; + } + + $request->set_param( 'context', 'edit' ); + + $response = $this->prepare_item_for_response( $user, $request ); + $response = rest_ensure_response( $response ); + + $response->set_status( 201 ); + $response->header( 'Location', rest_url( sprintf( '%s/%s/%d', $this->namespace, $this->rest_base, $user_id ) ) ); + + return $response; + } + + /** + * Checks if a given request has access to update a user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise. + */ + public function update_item_permissions_check( $request ) { + + $id = (int) $request['id']; + + if ( ! current_user_can( 'edit_user', $id ) ) { + return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you are not allowed to edit this user.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + if ( ! empty( $request['roles'] ) && ! current_user_can( 'edit_users' ) ) { + return new WP_Error( 'rest_cannot_edit_roles', __( 'Sorry, you are not allowed to edit roles of this user.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Updates a single user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function update_item( $request ) { + $id = (int) $request['id']; + $user = get_userdata( $id ); + + if ( ! $user ) { + return new WP_Error( 'rest_user_invalid_id', __( 'Invalid user ID.' ), array( 'status' => 404 ) ); + } + + if ( email_exists( $request['email'] ) && $request['email'] !== $user->user_email ) { + return new WP_Error( 'rest_user_invalid_email', __( 'Invalid email address.' ), array( 'status' => 400 ) ); + } + + if ( ! empty( $request['username'] ) && $request['username'] !== $user->user_login ) { + return new WP_Error( 'rest_user_invalid_argument', __( "Username isn't editable." ), array( 'status' => 400 ) ); + } + + if ( ! empty( $request['slug'] ) && $request['slug'] !== $user->user_nicename && get_user_by( 'slug', $request['slug'] ) ) { + return new WP_Error( 'rest_user_invalid_slug', __( 'Invalid slug.' ), array( 'status' => 400 ) ); + } + + if ( ! empty( $request['roles'] ) ) { + $check_permission = $this->check_role_update( $id, $request['roles'] ); + + if ( is_wp_error( $check_permission ) ) { + return $check_permission; + } + } + + $user = $this->prepare_item_for_database( $request ); + + // Ensure we're operating on the same user we already checked. + $user->ID = $id; + + $user_id = wp_update_user( wp_slash( (array) $user ) ); + + if ( is_wp_error( $user_id ) ) { + return $user_id; + } + + $user = get_user_by( 'id', $user_id ); + + /* This action is documented in lib/endpoints/class-wp-rest-users-controller.php */ + do_action( 'rest_insert_user', $user, $request, false ); + + if ( is_multisite() && ! is_user_member_of_blog( $id ) ) { + add_user_to_blog( get_current_blog_id(), $id, '' ); + } + + if ( ! empty( $request['roles'] ) ) { + array_map( array( $user, 'add_role' ), $request['roles'] ); + } + + $schema = $this->get_item_schema(); + + if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) { + $meta_update = $this->meta->update_value( $request['meta'], $id ); + + if ( is_wp_error( $meta_update ) ) { + return $meta_update; + } + } + + $user = get_user_by( 'id', $user_id ); + $fields_update = $this->update_additional_fields_for_object( $user, $request ); + + if ( is_wp_error( $fields_update ) ) { + return $fields_update; + } + + $request->set_param( 'context', 'edit' ); + + $response = $this->prepare_item_for_response( $user, $request ); + $response = rest_ensure_response( $response ); + + return $response; + } + + /** + * Checks if a given request has access to update the current user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise. + */ + public function update_current_item_permissions_check( $request ) { + $request['id'] = get_current_user_id(); + + return $this->update_item_permissions_check( $request ); + } + + /** + * Updates the current user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + function update_current_item( $request ) { + $request['id'] = get_current_user_id(); + + return $this->update_item( $request ); + } + + /** + * Checks if a given request has access delete a user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has access to delete the item, WP_Error object otherwise. + */ + public function delete_item_permissions_check( $request ) { + + $id = (int) $request['id']; + + if ( ! current_user_can( 'delete_user', $id ) ) { + return new WP_Error( 'rest_user_cannot_delete', __( 'Sorry, you are not allowed to delete this user.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + return true; + } + + /** + * Deletes a single user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function delete_item( $request ) { + // We don't support delete requests in multisite. + if ( is_multisite() ) { + return new WP_Error( 'rest_cannot_delete', __( 'The user cannot be deleted.' ), array( 'status' => 501 ) ); + } + + $id = (int) $request['id']; + $reassign = false === $request['reassign'] ? null : absint( $request['reassign'] ); + $force = isset( $request['force'] ) ? (bool) $request['force'] : false; + + // We don't support trashing for users. + if ( ! $force ) { + return new WP_Error( 'rest_trash_not_supported', __( 'Users do not support trashing. Set force=true to delete.' ), array( 'status' => 501 ) ); + } + + $user = get_userdata( $id ); + + if ( ! $user ) { + return new WP_Error( 'rest_user_invalid_id', __( 'Invalid user ID.' ), array( 'status' => 404 ) ); + } + + if ( ! empty( $reassign ) ) { + if ( $reassign === $id || ! get_userdata( $reassign ) ) { + return new WP_Error( 'rest_user_invalid_reassign', __( 'Invalid user ID for reassignment.' ), array( 'status' => 400 ) ); + } + } + + $request->set_param( 'context', 'edit' ); + + $previous = $this->prepare_item_for_response( $user, $request ); + + /** Include admin user functions to get access to wp_delete_user() */ + require_once ABSPATH . 'wp-admin/includes/user.php'; + + $result = wp_delete_user( $id, $reassign ); + + if ( ! $result ) { + return new WP_Error( 'rest_cannot_delete', __( 'The user cannot be deleted.' ), array( 'status' => 500 ) ); + } + + $response = new WP_REST_Response(); + $response->set_data( array( 'deleted' => true, 'previous' => $previous->get_data() ) ); + + /** + * Fires immediately after a user is deleted via the REST API. + * + * @since 4.7.0 + * + * @param WP_User $user The user data. + * @param WP_REST_Response $response The response returned from the API. + * @param WP_REST_Request $request The request sent to the API. + */ + do_action( 'rest_delete_user', $user, $response, $request ); + + return $response; + } + + /** + * Checks if a given request has access to delete the current user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has access to delete the item, WP_Error object otherwise. + */ + public function delete_current_item_permissions_check( $request ) { + $request['id'] = get_current_user_id(); + + return $this->delete_item_permissions_check( $request ); + } + + /** + * Deletes the current user. + * + * @since 4.7.0 + * @access public + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + function delete_current_item( $request ) { + $request['id'] = get_current_user_id(); + + return $this->delete_item( $request ); + } + + /** + * Prepares a single user output for response. + * + * @since 4.7.0 + * @access public + * + * @param WP_User $user User object. + * @param WP_REST_Request $request Request object. + * @return WP_REST_Response Response object. + */ + public function prepare_item_for_response( $user, $request ) { + + $data = array(); + $schema = $this->get_item_schema(); + + if ( ! empty( $schema['properties']['id'] ) ) { + $data['id'] = $user->ID; + } + + if ( ! empty( $schema['properties']['username'] ) ) { + $data['username'] = $user->user_login; + } + + if ( ! empty( $schema['properties']['name'] ) ) { + $data['name'] = $user->display_name; + } + + if ( ! empty( $schema['properties']['first_name'] ) ) { + $data['first_name'] = $user->first_name; + } + + if ( ! empty( $schema['properties']['last_name'] ) ) { + $data['last_name'] = $user->last_name; + } + + if ( ! empty( $schema['properties']['email'] ) ) { + $data['email'] = $user->user_email; + } + + if ( ! empty( $schema['properties']['url'] ) ) { + $data['url'] = $user->user_url; + } + + if ( ! empty( $schema['properties']['description'] ) ) { + $data['description'] = $user->description; + } + + if ( ! empty( $schema['properties']['link'] ) ) { + $data['link'] = get_author_posts_url( $user->ID, $user->user_nicename ); + } + + if ( ! empty( $schema['properties']['locale'] ) ) { + $data['locale'] = get_user_locale( $user ); + } + + if ( ! empty( $schema['properties']['nickname'] ) ) { + $data['nickname'] = $user->nickname; + } + + if ( ! empty( $schema['properties']['slug'] ) ) { + $data['slug'] = $user->user_nicename; + } + + if ( ! empty( $schema['properties']['roles'] ) ) { + // Defensively call array_values() to ensure an array is returned. + $data['roles'] = array_values( $user->roles ); + } + + if ( ! empty( $schema['properties']['registered_date'] ) ) { + $data['registered_date'] = date( 'c', strtotime( $user->user_registered ) ); + } + + if ( ! empty( $schema['properties']['capabilities'] ) ) { + $data['capabilities'] = (object) $user->allcaps; + } + + if ( ! empty( $schema['properties']['extra_capabilities'] ) ) { + $data['extra_capabilities'] = (object) $user->caps; + } + + if ( ! empty( $schema['properties']['avatar_urls'] ) ) { + $data['avatar_urls'] = rest_get_avatar_urls( $user->user_email ); + } + + if ( ! empty( $schema['properties']['meta'] ) ) { + $data['meta'] = $this->meta->get_value( $user->ID, $request ); + } + + $context = ! empty( $request['context'] ) ? $request['context'] : 'embed'; + + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + // Wrap the data in a response object. + $response = rest_ensure_response( $data ); + + $response->add_links( $this->prepare_links( $user ) ); + + /** + * Filters user data returned from the REST API. + * + * @since 4.7.0 + * + * @param WP_REST_Response $response The response object. + * @param object $user User object used to create response. + * @param WP_REST_Request $request Request object. + */ + return apply_filters( 'rest_prepare_user', $response, $user, $request ); + } + + /** + * Prepares links for the user request. + * + * @since 4.7.0 + * @access protected + * + * @param WP_Post $user User object. + * @return array Links for the given user. + */ + protected function prepare_links( $user ) { + $links = array( + 'self' => array( + 'href' => rest_url( sprintf( '%s/%s/%d', $this->namespace, $this->rest_base, $user->ID ) ), + ), + 'collection' => array( + 'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ), + ), + ); + + return $links; + } + + /** + * Prepares a single user for creation or update. + * + * @since 4.7.0 + * @access protected + * + * @param WP_REST_Request $request Request object. + * @return object $prepared_user User object. + */ + protected function prepare_item_for_database( $request ) { + $prepared_user = new stdClass; + + $schema = $this->get_item_schema(); + + // required arguments. + if ( isset( $request['email'] ) && ! empty( $schema['properties']['email'] ) ) { + $prepared_user->user_email = $request['email']; + } + + if ( isset( $request['username'] ) && ! empty( $schema['properties']['username'] ) ) { + $prepared_user->user_login = $request['username']; + } + + if ( isset( $request['password'] ) && ! empty( $schema['properties']['password'] ) ) { + $prepared_user->user_pass = $request['password']; + } + + // optional arguments. + if ( isset( $request['id'] ) ) { + $prepared_user->ID = absint( $request['id'] ); + } + + if ( isset( $request['name'] ) && ! empty( $schema['properties']['name'] ) ) { + $prepared_user->display_name = $request['name']; + } + + if ( isset( $request['first_name'] ) && ! empty( $schema['properties']['first_name'] ) ) { + $prepared_user->first_name = $request['first_name']; + } + + if ( isset( $request['last_name'] ) && ! empty( $schema['properties']['last_name'] ) ) { + $prepared_user->last_name = $request['last_name']; + } + + if ( isset( $request['nickname'] ) && ! empty( $schema['properties']['nickname'] ) ) { + $prepared_user->nickname = $request['nickname']; + } + + if ( isset( $request['slug'] ) && ! empty( $schema['properties']['slug'] ) ) { + $prepared_user->user_nicename = $request['slug']; + } + + if ( isset( $request['description'] ) && ! empty( $schema['properties']['description'] ) ) { + $prepared_user->description = $request['description']; + } + + if ( isset( $request['url'] ) && ! empty( $schema['properties']['url'] ) ) { + $prepared_user->user_url = $request['url']; + } + + if ( isset( $request['locale'] ) && ! empty( $schema['properties']['locale'] ) ) { + $prepared_user->locale = $request['locale']; + } + + // setting roles will be handled outside of this function. + if ( isset( $request['roles'] ) ) { + $prepared_user->role = false; + } + + /** + * Filters user data before insertion via the REST API. + * + * @since 4.7.0 + * + * @param object $prepared_user User object. + * @param WP_REST_Request $request Request object. + */ + return apply_filters( 'rest_pre_insert_user', $prepared_user, $request ); + } + + /** + * Determines if the current user is allowed to make the desired roles change. + * + * @since 4.7.0 + * @access protected + * + * @param integer $user_id User ID. + * @param array $roles New user roles. + * @return true|WP_Error True if the current user is allowed to make the role change, + * otherwise a WP_Error object. + */ + protected function check_role_update( $user_id, $roles ) { + global $wp_roles; + + foreach ( $roles as $role ) { + + if ( ! isset( $wp_roles->role_objects[ $role ] ) ) { + /* translators: %s: role key */ + return new WP_Error( 'rest_user_invalid_role', sprintf( __( 'The role %s does not exist.' ), $role ), array( 'status' => 400 ) ); + } + + $potential_role = $wp_roles->role_objects[ $role ]; + + /* + * Don't let anyone with 'edit_users' (admins) edit their own role to something without it. + * Multisite super admins can freely edit their blog roles -- they possess all caps. + */ + if ( ! ( is_multisite() + && current_user_can( 'manage_sites' ) ) + && get_current_user_id() === $user_id + && ! $potential_role->has_cap( 'edit_users' ) + ) { + return new WP_Error( 'rest_user_invalid_role', __( 'Sorry, you are not allowed to give users that role.' ), array( 'status' => rest_authorization_required_code() ) ); + } + + /** Include admin functions to get access to get_editable_roles() */ + require_once ABSPATH . 'wp-admin/includes/admin.php'; + + // The new role must be editable by the logged-in user. + $editable_roles = get_editable_roles(); + + if ( empty( $editable_roles[ $role ] ) ) { + return new WP_Error( 'rest_user_invalid_role', __( 'Sorry, you are not allowed to give users that role.' ), array( 'status' => 403 ) ); + } + } + + return true; + } + + /** + * Check a username for the REST API. + * + * Performs a couple of checks like edit_user() in wp-admin/includes/user.php. + * + * @since 4.7.0 + * + * @param mixed $value The username submitted in the request. + * @param WP_REST_Request $request Full details about the request. + * @param string $param The parameter name. + * @return WP_Error|string The sanitized username, if valid, otherwise an error. + */ + public function check_username( $value, $request, $param ) { + $username = (string) $value; + + if ( ! validate_username( $username ) ) { + return new WP_Error( 'rest_user_invalid_username', __( 'Username contains invalid characters.' ), array( 'status' => 400 ) ); + } + + /** This filter is documented in wp-includes/user.php */ + $illegal_logins = (array) apply_filters( 'illegal_user_logins', array() ); + + if ( in_array( strtolower( $username ), array_map( 'strtolower', $illegal_logins ) ) ) { + return new WP_Error( 'rest_user_invalid_username', __( 'Sorry, that username is not allowed.' ), array( 'status' => 400 ) ); + } + + return $username; + } + + /** + * Check a user password for the REST API. + * + * Performs a couple of checks like edit_user() in wp-admin/includes/user.php. + * + * @since 4.7.0 + * + * @param mixed $value The password submitted in the request. + * @param WP_REST_Request $request Full details about the request. + * @param string $param The parameter name. + * @return WP_Error|string The sanitized password, if valid, otherwise an error. + */ + public function check_user_password( $value, $request, $param ) { + $password = (string) $value; + + if ( empty( $password ) ) { + return new WP_Error( 'rest_user_invalid_password', __( 'Passwords cannot be empty.' ), array( 'status' => 400 ) ); + } + + if ( false !== strpos( $password, "\\" ) ) { + return new WP_Error( 'rest_user_invalid_password', __( 'Passwords cannot contain the "\\" character.' ), array( 'status' => 400 ) ); + } + + return $password; + } + + /** + * Retrieves the user's schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access public + * + * @return array Item schema data. + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/schema#', + 'title' => 'user', + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'description' => __( 'Unique identifier for the user.' ), + 'type' => 'integer', + 'context' => array( 'embed', 'view', 'edit' ), + 'readonly' => true, + ), + 'username' => array( + 'description' => __( 'Login name for the user.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + 'required' => true, + 'arg_options' => array( + 'sanitize_callback' => array( $this, 'check_username' ), + ), + ), + 'name' => array( + 'description' => __( 'Display name for the user.' ), + 'type' => 'string', + 'context' => array( 'embed', 'view', 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + 'first_name' => array( + 'description' => __( 'First name for the user.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + 'last_name' => array( + 'description' => __( 'Last name for the user.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + 'email' => array( + 'description' => __( 'The email address for the user.' ), + 'type' => 'string', + 'format' => 'email', + 'context' => array( 'edit' ), + 'required' => true, + ), + 'url' => array( + 'description' => __( 'URL of the user.' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'embed', 'view', 'edit' ), + ), + 'description' => array( + 'description' => __( 'Description of the user.' ), + 'type' => 'string', + 'context' => array( 'embed', 'view', 'edit' ), + ), + 'link' => array( + 'description' => __( 'Author URL of the user.' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'embed', 'view', 'edit' ), + 'readonly' => true, + ), + 'locale' => array( + 'description' => __( 'Locale for the user.' ), + 'type' => 'string', + 'enum' => array_merge( array( '', 'en_US' ), get_available_languages() ), + 'context' => array( 'edit' ), + ), + 'nickname' => array( + 'description' => __( 'The nickname for the user.' ), + 'type' => 'string', + 'context' => array( 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + 'slug' => array( + 'description' => __( 'An alphanumeric identifier for the user.' ), + 'type' => 'string', + 'context' => array( 'embed', 'view', 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => array( $this, 'sanitize_slug' ), + ), + ), + 'registered_date' => array( + 'description' => __( 'Registration date for the user.' ), + 'type' => 'string', + 'format' => 'date-time', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + 'roles' => array( + 'description' => __( 'Roles assigned to the user.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + 'context' => array( 'edit' ), + ), + 'password' => array( + 'description' => __( 'Password for the user (never included).' ), + 'type' => 'string', + 'context' => array(), // Password is never displayed. + 'required' => true, + 'arg_options' => array( + 'sanitize_callback' => array( $this, 'check_user_password' ), + ), + ), + 'capabilities' => array( + 'description' => __( 'All capabilities assigned to the user.' ), + 'type' => 'object', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + 'extra_capabilities' => array( + 'description' => __( 'Any extra capabilities assigned to the user.' ), + 'type' => 'object', + 'context' => array( 'edit' ), + 'readonly' => true, + ), + ), + ); + + if ( get_option( 'show_avatars' ) ) { + $avatar_properties = array(); + + $avatar_sizes = rest_get_avatar_sizes(); + + foreach ( $avatar_sizes as $size ) { + $avatar_properties[ $size ] = array( + /* translators: %d: avatar image size in pixels */ + 'description' => sprintf( __( 'Avatar URL with image size of %d pixels.' ), $size ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'embed', 'view', 'edit' ), + ); + } + + $schema['properties']['avatar_urls'] = array( + 'description' => __( 'Avatar URLs for the user.' ), + 'type' => 'object', + 'context' => array( 'embed', 'view', 'edit' ), + 'readonly' => true, + 'properties' => $avatar_properties, + ); + } + + $schema['properties']['meta'] = $this->meta->get_field_schema(); + + return $this->add_additional_fields_schema( $schema ); + } + + /** + * Retrieves the query params for collections. + * + * @since 4.7.0 + * @access public + * + * @return array Collection parameters. + */ + public function get_collection_params() { + $query_params = parent::get_collection_params(); + + $query_params['context']['default'] = 'view'; + + $query_params['exclude'] = array( + 'description' => __( 'Ensure result set excludes specific IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + + $query_params['include'] = array( + 'description' => __( 'Limit result set to specific IDs.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + 'default' => array(), + ); + + $query_params['offset'] = array( + 'description' => __( 'Offset the result set by a specific number of items.' ), + 'type' => 'integer', + ); + + $query_params['order'] = array( + 'default' => 'asc', + 'description' => __( 'Order sort attribute ascending or descending.' ), + 'enum' => array( 'asc', 'desc' ), + 'type' => 'string', + ); + + $query_params['orderby'] = array( + 'default' => 'name', + 'description' => __( 'Sort collection by object attribute.' ), + 'enum' => array( + 'id', + 'include', + 'name', + 'registered_date', + 'slug', + 'email', + 'url', + ), + 'type' => 'string', + ); + + $query_params['slug'] = array( + 'description' => __( 'Limit result set to users with a specific slug.' ), + 'type' => 'string', + ); + + $query_params['roles'] = array( + 'description' => __( 'Limit result set to users matching at least one specific role provided. Accepts csv list or single role.' ), + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + ); + + /** + * Filter collection parameters for the users controller. + * + * This filter registers the collection parameter, but does not map the + * collection parameter to an internal WP_User_Query parameter. Use the + * `rest_user_query` filter to set WP_User_Query arguments. + * + * @since 4.7.0 + * + * @param $params JSON Schema-formatted collection parameters. + */ + return apply_filters( 'rest_user_collection_params', $query_params ); + } +} diff --git a/wp/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php b/wp/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php new file mode 100644 index 00000000..007f66b6 --- /dev/null +++ b/wp/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php @@ -0,0 +1,42 @@ +get_rest_field_type(), 'meta', array( + 'get_callback' => array( $this, 'get_value' ), + 'update_callback' => array( $this, 'update_value' ), + 'schema' => $this->get_field_schema(), + )); + } + + /** + * Retrieves the meta field value. + * + * @since 4.7.0 + * @access public + * + * @param int $object_id Object ID to fetch meta for. + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|object Object containing the meta values by name, otherwise WP_Error object. + */ + public function get_value( $object_id, $request ) { + $fields = $this->get_registered_fields(); + $response = array(); + + foreach ( $fields as $meta_key => $args ) { + $name = $args['name']; + $all_values = get_metadata( $this->get_meta_type(), $object_id, $meta_key, false ); + if ( $args['single'] ) { + if ( empty( $all_values ) ) { + $value = $args['schema']['default']; + } else { + $value = $all_values[0]; + } + $value = $this->prepare_value_for_response( $value, $request, $args ); + } else { + $value = array(); + foreach ( $all_values as $row ) { + $value[] = $this->prepare_value_for_response( $row, $request, $args ); + } + } + + $response[ $name ] = $value; + } + + return $response; + } + + /** + * Prepares a meta value for a response. + * + * This is required because some native types cannot be stored correctly + * in the database, such as booleans. We need to cast back to the relevant + * type before passing back to JSON. + * + * @since 4.7.0 + * @access protected + * + * @param mixed $value Meta value to prepare. + * @param WP_REST_Request $request Current request object. + * @param array $args Options for the field. + * @return mixed Prepared value. + */ + protected function prepare_value_for_response( $value, $request, $args ) { + if ( ! empty( $args['prepare_callback'] ) ) { + $value = call_user_func( $args['prepare_callback'], $value, $request, $args ); + } + + return $value; + } + + /** + * Updates meta values. + * + * @since 4.7.0 + * @access public + * + * @param array $meta Array of meta parsed from the request. + * @param int $object_id Object ID to fetch meta for. + * @return WP_Error|null WP_Error if one occurs, null on success. + */ + public function update_value( $meta, $object_id ) { + $fields = $this->get_registered_fields(); + foreach ( $fields as $meta_key => $args ) { + $name = $args['name']; + if ( ! array_key_exists( $name, $meta ) ) { + continue; + } + + /* + * A null value means reset the field, which is essentially deleting it + * from the database and then relying on the default value. + */ + if ( is_null( $meta[ $name ] ) ) { + $result = $this->delete_meta_value( $object_id, $meta_key, $name ); + if ( is_wp_error( $result ) ) { + return $result; + } + continue; + } + + $is_valid = rest_validate_value_from_schema( $meta[ $name ], $args['schema'], 'meta.' . $name ); + if ( is_wp_error( $is_valid ) ) { + $is_valid->add_data( array( 'status' => 400 ) ); + return $is_valid; + } + + $value = rest_sanitize_value_from_schema( $meta[ $name ], $args['schema'] ); + + if ( $args['single'] ) { + $result = $this->update_meta_value( $object_id, $meta_key, $name, $value ); + } else { + $result = $this->update_multi_meta_value( $object_id, $meta_key, $name, $value ); + } + + if ( is_wp_error( $result ) ) { + return $result; + } + } + + return null; + } + + /** + * Deletes a meta value for an object. + * + * @since 4.7.0 + * @access protected + * + * @param int $object_id Object ID the field belongs to. + * @param string $meta_key Key for the field. + * @param string $name Name for the field that is exposed in the REST API. + * @return bool|WP_Error True if meta field is deleted, WP_Error otherwise. + */ + protected function delete_meta_value( $object_id, $meta_key, $name ) { + $meta_type = $this->get_meta_type(); + if ( ! current_user_can( "delete_{$meta_type}_meta", $object_id, $meta_key ) ) { + return new WP_Error( + 'rest_cannot_delete', + /* translators: %s: custom field key */ + sprintf( __( 'Sorry, you are not allowed to edit the %s custom field.' ), $name ), + array( 'key' => $name, 'status' => rest_authorization_required_code() ) + ); + } + + if ( ! delete_metadata( $meta_type, $object_id, wp_slash( $meta_key ) ) ) { + return new WP_Error( + 'rest_meta_database_error', + __( 'Could not delete meta value from database.' ), + array( 'key' => $name, 'status' => WP_Http::INTERNAL_SERVER_ERROR ) + ); + } + + return true; + } + + /** + * Updates multiple meta values for an object. + * + * Alters the list of values in the database to match the list of provided values. + * + * @since 4.7.0 + * @access protected + * + * @param int $object_id Object ID to update. + * @param string $meta_key Key for the custom field. + * @param string $name Name for the field that is exposed in the REST API. + * @param array $values List of values to update to. + * @return bool|WP_Error True if meta fields are updated, WP_Error otherwise. + */ + protected function update_multi_meta_value( $object_id, $meta_key, $name, $values ) { + $meta_type = $this->get_meta_type(); + if ( ! current_user_can( "edit_{$meta_type}_meta", $object_id, $meta_key ) ) { + return new WP_Error( + 'rest_cannot_update', + /* translators: %s: custom field key */ + sprintf( __( 'Sorry, you are not allowed to edit the %s custom field.' ), $name ), + array( 'key' => $name, 'status' => rest_authorization_required_code() ) + ); + } + + $current = get_metadata( $meta_type, $object_id, $meta_key, false ); + + $to_remove = $current; + $to_add = $values; + + foreach ( $to_add as $add_key => $value ) { + $remove_keys = array_keys( $to_remove, $value, true ); + + if ( empty( $remove_keys ) ) { + continue; + } + + if ( count( $remove_keys ) > 1 ) { + // To remove, we need to remove first, then add, so don't touch. + continue; + } + + $remove_key = $remove_keys[0]; + + unset( $to_remove[ $remove_key ] ); + unset( $to_add[ $add_key ] ); + } + + // `delete_metadata` removes _all_ instances of the value, so only call once. + $to_remove = array_unique( $to_remove ); + + foreach ( $to_remove as $value ) { + if ( ! delete_metadata( $meta_type, $object_id, wp_slash( $meta_key ), wp_slash( $value ) ) ) { + return new WP_Error( + 'rest_meta_database_error', + __( 'Could not update meta value in database.' ), + array( 'key' => $name, 'status' => WP_Http::INTERNAL_SERVER_ERROR ) + ); + } + } + + foreach ( $to_add as $value ) { + if ( ! add_metadata( $meta_type, $object_id, wp_slash( $meta_key ), wp_slash( $value ) ) ) { + return new WP_Error( + 'rest_meta_database_error', + __( 'Could not update meta value in database.' ), + array( 'key' => $name, 'status' => WP_Http::INTERNAL_SERVER_ERROR ) + ); + } + } + + return true; + } + + /** + * Updates a meta value for an object. + * + * @since 4.7.0 + * @access protected + * + * @param int $object_id Object ID to update. + * @param string $meta_key Key for the custom field. + * @param string $name Name for the field that is exposed in the REST API. + * @param mixed $value Updated value. + * @return bool|WP_Error True if the meta field was updated, WP_Error otherwise. + */ + protected function update_meta_value( $object_id, $meta_key, $name, $value ) { + $meta_type = $this->get_meta_type(); + if ( ! current_user_can( "edit_{$meta_type}_meta", $object_id, $meta_key ) ) { + return new WP_Error( + 'rest_cannot_update', + /* translators: %s: custom field key */ + sprintf( __( 'Sorry, you are not allowed to edit the %s custom field.' ), $name ), + array( 'key' => $name, 'status' => rest_authorization_required_code() ) + ); + } + + $meta_key = wp_slash( $meta_key ); + $meta_value = wp_slash( $value ); + + // Do the exact same check for a duplicate value as in update_metadata() to avoid update_metadata() returning false. + $old_value = get_metadata( $meta_type, $object_id, $meta_key ); + + if ( 1 === count( $old_value ) ) { + if ( $old_value[0] === $meta_value ) { + return true; + } + } + + if ( ! update_metadata( $meta_type, $object_id, $meta_key, $meta_value ) ) { + return new WP_Error( + 'rest_meta_database_error', + __( 'Could not update meta value in database.' ), + array( 'key' => $name, 'status' => WP_Http::INTERNAL_SERVER_ERROR ) + ); + } + + return true; + } + + /** + * Retrieves all the registered meta fields. + * + * @since 4.7.0 + * @access protected + * + * @return array Registered fields. + */ + protected function get_registered_fields() { + $registered = array(); + + foreach ( get_registered_meta_keys( $this->get_meta_type() ) as $name => $args ) { + if ( empty( $args['show_in_rest'] ) ) { + continue; + } + + $rest_args = array(); + + if ( is_array( $args['show_in_rest'] ) ) { + $rest_args = $args['show_in_rest']; + } + + $default_args = array( + 'name' => $name, + 'single' => $args['single'], + 'type' => ! empty( $args['type'] ) ? $args['type'] : null, + 'schema' => array(), + 'prepare_callback' => array( $this, 'prepare_value' ), + ); + + $default_schema = array( + 'type' => $default_args['type'], + 'description' => empty( $args['description'] ) ? '' : $args['description'], + 'default' => isset( $args['default'] ) ? $args['default'] : null, + ); + + $rest_args = array_merge( $default_args, $rest_args ); + $rest_args['schema'] = array_merge( $default_schema, $rest_args['schema'] ); + + $type = ! empty( $rest_args['type'] ) ? $rest_args['type'] : null; + $type = ! empty( $rest_args['schema']['type'] ) ? $rest_args['schema']['type'] : $type; + + if ( ! in_array( $type, array( 'string', 'boolean', 'integer', 'number' ) ) ) { + continue; + } + + if ( empty( $rest_args['single'] ) ) { + $rest_args['schema']['items'] = array( + 'type' => $rest_args['type'], + ); + $rest_args['schema']['type'] = 'array'; + } + + $registered[ $name ] = $rest_args; + } + + return $registered; + } + + /** + * Retrieves the object's meta schema, conforming to JSON Schema. + * + * @since 4.7.0 + * @access protected + * + * @return array Field schema data. + */ + public function get_field_schema() { + $fields = $this->get_registered_fields(); + + $schema = array( + 'description' => __( 'Meta fields.' ), + 'type' => 'object', + 'context' => array( 'view', 'edit' ), + 'properties' => array(), + 'arg_options' => array( + 'sanitize_callback' => null, + 'validate_callback' => array( $this, 'check_meta_is_array' ), + ), + ); + + foreach ( $fields as $args ) { + $schema['properties'][ $args['name'] ] = $args['schema']; + } + + return $schema; + } + + /** + * Prepares a meta value for output. + * + * Default preparation for meta fields. Override by passing the + * `prepare_callback` in your `show_in_rest` options. + * + * @since 4.7.0 + * @access public + * + * @param mixed $value Meta value from the database. + * @param WP_REST_Request $request Request object. + * @param array $args REST-specific options for the meta key. + * @return mixed Value prepared for output. If a non-JsonSerializable object, null. + */ + public static function prepare_value( $value, $request, $args ) { + $type = $args['schema']['type']; + + // For multi-value fields, check the item type instead. + if ( 'array' === $type && ! empty( $args['schema']['items']['type'] ) ) { + $type = $args['schema']['items']['type']; + } + + switch ( $type ) { + case 'string': + $value = (string) $value; + break; + case 'integer': + $value = (int) $value; + break; + case 'number': + $value = (float) $value; + break; + case 'boolean': + $value = (bool) $value; + break; + } + + // Don't allow objects to be output. + if ( is_object( $value ) && ! ( $value instanceof JsonSerializable ) ) { + return null; + } + + return $value; + } + + /** + * Check the 'meta' value of a request is an associative array. + * + * @since 4.7.0 + * @access public + * + * @param mixed $value The meta value submitted in the request. + * @param WP_REST_Request $request Full details about the request. + * @param string $param The parameter name. + * @return WP_Error|string The meta array, if valid, otherwise an error. + */ + public function check_meta_is_array( $value, $request, $param ) { + if ( ! is_array( $value ) ) { + return false; + } + + return $value; + } +} diff --git a/wp/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php b/wp/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php new file mode 100644 index 00000000..17d87fa4 --- /dev/null +++ b/wp/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php @@ -0,0 +1,65 @@ +post_type = $post_type; + } + + /** + * Retrieves the object meta type. + * + * @since 4.7.0 + * @access protected + * + * @return string The meta type. + */ + protected function get_meta_type() { + return 'post'; + } + + /** + * Retrieves the type for register_rest_field(). + * + * @since 4.7.0 + * @access public + * + * @see register_rest_field() + * + * @return string The REST field type. + */ + public function get_rest_field_type() { + return $this->post_type; + } +} diff --git a/wp/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php b/wp/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php new file mode 100644 index 00000000..da1349b6 --- /dev/null +++ b/wp/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php @@ -0,0 +1,63 @@ +taxonomy = $taxonomy; + } + + /** + * Retrieves the object meta type. + * + * @since 4.7.0 + * @access protected + * + * @return string The meta type. + */ + protected function get_meta_type() { + return 'term'; + } + + /** + * Retrieves the type for register_rest_field(). + * + * @since 4.7.0 + * @access public + * + * @return string The REST field type. + */ + public function get_rest_field_type() { + return 'post_tag' === $this->taxonomy ? 'tag' : $this->taxonomy; + } +} diff --git a/wp/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php b/wp/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php new file mode 100644 index 00000000..dcc9be67 --- /dev/null +++ b/wp/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php @@ -0,0 +1,42 @@ +parser = $parser; @@ -743,7 +741,7 @@ class RSSCache { /*=======================================================================*\ Function: set Purpose: add an item to the cache, keyed on url - Input: url from wich the rss file was fetched + Input: url from which the rss file was fetched Output: true on success \*=======================================================================*/ function set ($url, $rss) { @@ -757,7 +755,7 @@ class RSSCache { /*=======================================================================*\ Function: get Purpose: fetch an item from the cache - Input: url from wich the rss file was fetched + Input: url from which the rss file was fetched Output: cached object on HIT, false on MISS \*=======================================================================*/ function get ($url) { @@ -778,7 +776,7 @@ class RSSCache { Function: check_cache Purpose: check a url for membership in the cache and whether the object is older then MAX_AGE (ie. STALE) - Input: url from wich the rss file was fetched + Input: url from which the rss file was fetched Output: cached object on HIT, false on MISS \*=======================================================================*/ function check_cache ( $url ) { @@ -811,7 +809,7 @@ class RSSCache { /*=======================================================================*\ Function: file_name Purpose: map url to location in cache - Input: url from wich the rss file was fetched + Input: url from which the rss file was fetched Output: a file name \*=======================================================================*/ function file_name ($url) { diff --git a/wp/wp-includes/script-loader.php b/wp/wp-includes/script-loader.php index d57dff6b..be32073c 100644 --- a/wp/wp-includes/script-loader.php +++ b/wp/wp-includes/script-loader.php @@ -16,6 +16,9 @@ * @package WordPress */ +/** WordPress Dependency Class */ +require( ABSPATH . WPINC . '/class-wp-dependency.php' ); + /** WordPress Dependencies Class */ require( ABSPATH . WPINC . '/class.wp-dependencies.php' ); @@ -74,8 +77,10 @@ function wp_default_scripts( &$scripts ) { $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), false, 1 ); did_action( 'init' ) && $scripts->localize( 'common', 'commonL10n', array( - 'warnDelete' => __( "You are about to permanently delete these items.\n 'Cancel' to stop, 'OK' to delete." ), - 'dismiss' => __( 'Dismiss this notice.' ), + 'warnDelete' => __( "You are about to permanently delete these items.\n 'Cancel' to stop, 'OK' to delete." ), + 'dismiss' => __( 'Dismiss this notice.' ), + 'collapseMenu' => __( 'Collapse Main menu' ), + 'expandMenu' => __( 'Expand Main menu' ), ) ); $scripts->add( 'wp-a11y', "/wp-includes/js/wp-a11y$suffix.js", array( 'jquery' ), false, 1 ); @@ -226,11 +231,12 @@ function wp_default_scripts( &$scripts ) { // Strings for 'jquery-ui-autocomplete' live region messages did_action( 'init' ) && $scripts->localize( 'jquery-ui-autocomplete', 'uiAutocompleteL10n', array( - 'noResults' => __( 'No search results.' ), + 'noResults' => __( 'No results found.' ), /* translators: Number of results found when using jQuery UI Autocomplete */ 'oneResult' => __( '1 result found. Use up and down arrow keys to navigate.' ), /* translators: %d: Number of results found when using jQuery UI Autocomplete */ 'manyResults' => __( '%d results found. Use up and down arrow keys to navigate.' ), + 'itemSelected' => __( 'Item selected.' ), ) ); // deprecated, not used in core, most functionality is included in jQuery 1.3 @@ -238,7 +244,6 @@ function wp_default_scripts( &$scripts ) { // jQuery plugins $scripts->add( 'jquery-color', "/wp-includes/js/jquery/jquery.color.min.js", array('jquery'), '2.1.1', 1 ); - $scripts->add( 'suggest', "/wp-includes/js/jquery/suggest$suffix.js", array('jquery'), '1.1-20110113', 1 ); $scripts->add( 'schedule', '/wp-includes/js/jquery/jquery.schedule.js', array('jquery'), '20m', 1 ); $scripts->add( 'jquery-query', "/wp-includes/js/jquery/jquery.query.js", array('jquery'), '2.1.7', 1 ); $scripts->add( 'jquery-serialize-object', "/wp-includes/js/jquery/jquery.serialize-object.js", array('jquery'), '0.2', 1 ); @@ -246,6 +251,9 @@ function wp_default_scripts( &$scripts ) { $scripts->add( 'jquery-table-hotkeys', "/wp-includes/js/jquery/jquery.table-hotkeys$suffix.js", array('jquery', 'jquery-hotkeys'), false, 1 ); $scripts->add( 'jquery-touch-punch', "/wp-includes/js/jquery/jquery.ui.touch-punch.js", array('jquery-ui-widget', 'jquery-ui-mouse'), '0.2.2', 1 ); + // Not used any more, registered for backwards compatibility. + $scripts->add( 'suggest', "/wp-includes/js/jquery/suggest$suffix.js", array('jquery'), '1.1-20110113', 1 ); + // Masonry v2 depended on jQuery. v3 does not. The older jquery-masonry handle is a shiv. // It sets jQuery as a dependency, as the theme may have been implicitly loading it this way. $scripts->add( 'imagesloaded', "/wp-includes/js/imagesloaded.min.js", array(), '3.2.0', 1 ); @@ -281,6 +289,7 @@ function wp_default_scripts( &$scripts ) { 'upload_limit_exceeded' => __('You may only upload 1 file.'), 'http_error' => __('HTTP error.'), 'upload_failed' => __('Upload failed.'), + /* translators: 1: Opening link tag, 2: Closing link tag */ 'big_upload_failed' => __('Please try uploading this file with the %1$sbrowser uploader%2$s.'), 'big_upload_queued' => __('%s exceeds the maximum upload size for the multi-file uploader when used in your browser.'), 'io_error' => __('IO error.'), @@ -400,7 +409,7 @@ function wp_default_scripts( &$scripts ) { $scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array( 'jquery', 'password-strength-meter', 'wp-util' ), false, 1 ); did_action( 'init' ) && $scripts->localize( 'user-profile', 'userProfileL10n', array( 'warn' => __( 'Your new password has not been saved.' ), - 'warnWeak' => __( 'Confirm use of weak password.' ), + 'warnWeak' => __( 'Confirm use of weak password' ), 'show' => __( 'Show' ), 'hide' => __( 'Hide' ), 'cancel' => __( 'Cancel' ), @@ -444,10 +453,10 @@ function wp_default_scripts( &$scripts ) { $scripts->add( 'customize-base', "/wp-includes/js/customize-base$suffix.js", array( 'jquery', 'json2', 'underscore' ), false, 1 ); $scripts->add( 'customize-loader', "/wp-includes/js/customize-loader$suffix.js", array( 'customize-base' ), false, 1 ); - $scripts->add( 'customize-preview', "/wp-includes/js/customize-preview$suffix.js", array( 'customize-base' ), false, 1 ); + $scripts->add( 'customize-preview', "/wp-includes/js/customize-preview$suffix.js", array( 'wp-a11y', 'customize-base' ), false, 1 ); $scripts->add( 'customize-models', "/wp-includes/js/customize-models.js", array( 'underscore', 'backbone' ), false, 1 ); $scripts->add( 'customize-views', "/wp-includes/js/customize-views.js", array( 'jquery', 'underscore', 'imgareaselect', 'customize-models', 'media-editor', 'media-views' ), false, 1 ); - $scripts->add( 'customize-controls', "/wp-admin/js/customize-controls$suffix.js", array( 'customize-base', 'wp-a11y' ), false, 1 ); + $scripts->add( 'customize-controls', "/wp-admin/js/customize-controls$suffix.js", array( 'customize-base', 'wp-a11y', 'wp-util' ), false, 1 ); did_action( 'init' ) && $scripts->localize( 'customize-controls', '_wpCustomizeControlsL10n', array( 'activate' => __( 'Save & Activate' ), 'save' => __( 'Save & Publish' ), @@ -459,8 +468,8 @@ function wp_default_scripts( &$scripts ) { 'notAllowed' => __( 'Sorry, you are not allowed to customize this site.' ), 'previewIframeTitle' => __( 'Site Preview' ), 'loginIframeTitle' => __( 'Session expired' ), - 'collapseSidebar' => __( 'Collapse Sidebar' ), - 'expandSidebar' => __( 'Expand Sidebar' ), + 'collapseSidebar' => _x( 'Hide Controls', 'label for hide controls button without length constraints' ), + 'expandSidebar' => _x( 'Show Controls', 'label for hide controls button without length constraints' ), 'untitledBlogName' => __( '(Untitled)' ), // Used for overriding the file types allowed in plupload. 'allowedFiles' => __( 'Allowed Files' ), @@ -473,6 +482,8 @@ function wp_default_scripts( &$scripts ) { $scripts->add( 'customize-nav-menus', "/wp-admin/js/customize-nav-menus$suffix.js", array( 'jquery', 'wp-backbone', 'customize-controls', 'accordion', 'nav-menu' ), false, 1 ); $scripts->add( 'customize-preview-nav-menus', "/wp-includes/js/customize-preview-nav-menus$suffix.js", array( 'jquery', 'wp-util', 'customize-preview', 'customize-selective-refresh' ), false, 1 ); + $scripts->add( 'wp-custom-header', "/wp-includes/js/wp-custom-header$suffix.js", array( 'wp-a11y' ), false, 1 ); + $scripts->add( 'accordion', "/wp-admin/js/accordion$suffix.js", array( 'jquery' ), false, 1 ); $scripts->add( 'shortcode', "/wp-includes/js/shortcode$suffix.js", array( 'underscore' ), false, 1 ); @@ -493,6 +504,13 @@ function wp_default_scripts( &$scripts ) { $scripts->add( 'media-audiovideo', "/wp-includes/js/media-audiovideo$suffix.js", array( 'media-editor' ), false, 1 ); $scripts->add( 'mce-view', "/wp-includes/js/mce-view$suffix.js", array( 'shortcode', 'jquery', 'media-views', 'media-audiovideo' ), false, 1 ); + $scripts->add( 'wp-api', "/wp-includes/js/wp-api$suffix.js", array( 'jquery', 'backbone', 'underscore' ), false, 1 ); + did_action( 'init' ) && $scripts->localize( 'wp-api', 'wpApiSettings', array( + 'root' => esc_url_raw( get_rest_url() ), + 'nonce' => wp_create_nonce( 'wp_rest' ), + 'versionString' => 'wp/v2/', + ) ); + if ( is_admin() ) { $scripts->add( 'admin-tags', "/wp-admin/js/tags$suffix.js", array( 'jquery', 'wp-ajax-response' ), false, 1 ); did_action( 'init' ) && $scripts->localize( 'admin-tags', 'tagsl10n', array( @@ -520,9 +538,15 @@ function wp_default_scripts( &$scripts ) { 'postBoxEmptyString' => __( 'Drag boxes here' ), ) ); - $scripts->add( 'tags-box', "/wp-admin/js/tags-box$suffix.js", array( 'jquery', 'suggest' ), false, 1 ); - did_action( 'init' ) && $scripts->localize( 'tags-box', 'tagsBoxL10n', array( + $scripts->add( 'tags-box', "/wp-admin/js/tags-box$suffix.js", array( 'jquery', 'tags-suggest' ), false, 1 ); + + $scripts->add( 'tags-suggest', "/wp-admin/js/tags-suggest$suffix.js", array( 'jquery-ui-autocomplete', 'wp-a11y' ), false, 1 ); + did_action( 'init' ) && $scripts->localize( 'tags-suggest', 'tagsSuggestL10n', array( 'tagDelimiter' => _x( ',', 'tag delimiter' ), + 'removeTerm' => __( 'Remove term:' ), + 'termSelected' => __( 'Term selected.' ), + 'termAdded' => __( 'Term added.' ), + 'termRemoved' => __( 'Term removed.' ), ) ); $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array( 'suggest', 'wp-lists', 'postbox', 'tags-box', 'underscore', 'word-count', 'wp-a11y' ), false, 1 ); @@ -581,7 +605,7 @@ function wp_default_scripts( &$scripts ) { $scripts->add( 'theme', "/wp-admin/js/theme$suffix.js", array( 'wp-backbone', 'wp-a11y' ), false, 1 ); - $scripts->add( 'inline-edit-post', "/wp-admin/js/inline-edit-post$suffix.js", array( 'jquery', 'suggest', 'wp-a11y' ), false, 1 ); + $scripts->add( 'inline-edit-post', "/wp-admin/js/inline-edit-post$suffix.js", array( 'jquery', 'tags-suggest', 'wp-a11y' ), false, 1 ); did_action( 'init' ) && $scripts->localize( 'inline-edit-post', 'inlineEditL10n', array( 'error' => __( 'Error while saving the changes.' ), 'ntdeltitle' => __( 'Remove From Bulk Edit' ), @@ -603,7 +627,7 @@ function wp_default_scripts( &$scripts ) { 'ays' => __('Are you sure you want to install this plugin?') ) ); - $scripts->add( 'updates', "/wp-admin/js/updates$suffix.js", array( 'jquery', 'wp-util', 'wp-a11y' ) ); + $scripts->add( 'updates', "/wp-admin/js/updates$suffix.js", array( 'jquery', 'wp-util', 'wp-a11y' ), false, 1 ); did_action( 'init' ) && $scripts->localize( 'updates', '_wpUpdatesSettings', array( 'ajax_nonce' => wp_create_nonce( 'updates' ), 'l10n' => array( @@ -837,7 +861,7 @@ function wp_default_styles( &$styles ) { $styles->add( 'editor-buttons', "/wp-includes/css/editor$suffix.css", array( 'dashicons' ) ); $styles->add( 'media-views', "/wp-includes/css/media-views$suffix.css", array( 'buttons', 'dashicons', 'wp-mediaelement' ) ); $styles->add( 'wp-pointer', "/wp-includes/css/wp-pointer$suffix.css", array( 'dashicons' ) ); - $styles->add( 'customize-preview', "/wp-includes/css/customize-preview$suffix.css" ); + $styles->add( 'customize-preview', "/wp-includes/css/customize-preview$suffix.css", array( 'dashicons' ) ); $styles->add( 'wp-embed-template-ie', "/wp-includes/css/wp-embed-template-ie$suffix.css" ); $styles->add_data( 'wp-embed-template-ie', 'conditional', 'lte IE 8' ); @@ -859,7 +883,7 @@ function wp_default_styles( &$styles ) { $rtl_styles = array( // wp-admin 'common', 'forms', 'admin-menu', 'dashboard', 'list-tables', 'edit', 'revisions', 'media', 'themes', 'about', 'nav-menus', - 'widgets', 'site-icon', 'l10n', 'install', 'wp-color-picker', 'customize-controls', 'customize-widgets', 'customize-nav-menus', + 'widgets', 'site-icon', 'l10n', 'install', 'wp-color-picker', 'customize-controls', 'customize-widgets', 'customize-nav-menus', 'customize-preview', 'ie', 'login', 'press-this', // wp-includes 'buttons', 'admin-bar', 'wp-auth-check', 'editor-buttons', 'media-views', 'wp-pointer', diff --git a/wp/wp-includes/session.php b/wp/wp-includes/session.php index 63ab8fe5..d9175c98 100644 --- a/wp/wp-includes/session.php +++ b/wp/wp-includes/session.php @@ -1,440 +1,11 @@ user_id = $user_id; - } - - /** - * Get a session token manager instance for a user. - * - * This method contains a filter that allows a plugin to swap out - * the session manager for a subclass of WP_Session_Tokens. - * - * @since 4.0.0 - * @access public - * @static - * - * @param int $user_id User whose session to manage. - */ - final public static function get_instance( $user_id ) { - /** - * Filters the session token manager used. - * - * @since 4.0.0 - * - * @param string $session Name of class to use as the manager. - * Default 'WP_User_Meta_Session_Tokens'. - */ - $manager = apply_filters( 'session_token_manager', 'WP_User_Meta_Session_Tokens' ); - return new $manager( $user_id ); - } - - /** - * Hashes a session token for storage. - * - * @since 4.0.0 - * @access private - * - * @param string $token Session token to hash. - * @return string A hash of the session token (a verifier). - */ - final private function hash_token( $token ) { - // If ext/hash is not present, use sha1() instead. - if ( function_exists( 'hash' ) ) { - return hash( 'sha256', $token ); - } else { - return sha1( $token ); - } - } - - /** - * Get a user's session. - * - * @since 4.0.0 - * @access public - * - * @param string $token Session token - * @return array User session - */ - final public function get( $token ) { - $verifier = $this->hash_token( $token ); - return $this->get_session( $verifier ); - } - - /** - * Validate a user's session token as authentic. - * - * Checks that the given token is present and hasn't expired. - * - * @since 4.0.0 - * @access public - * - * @param string $token Token to verify. - * @return bool Whether the token is valid for the user. - */ - final public function verify( $token ) { - $verifier = $this->hash_token( $token ); - return (bool) $this->get_session( $verifier ); - } - - /** - * Generate a session token and attach session information to it. - * - * A session token is a long, random string. It is used in a cookie - * link that cookie to an expiration time and to ensure the cookie - * becomes invalidated upon logout. - * - * This function generates a token and stores it with the associated - * expiration time (and potentially other session information via the - * {@see 'attach_session_information'} filter). - * - * @since 4.0.0 - * @access public - * - * @param int $expiration Session expiration timestamp. - * @return string Session token. - */ - final public function create( $expiration ) { - /** - * Filters the information attached to the newly created session. - * - * Could be used in the future to attach information such as - * IP address or user agent to a session. - * - * @since 4.0.0 - * - * @param array $session Array of extra data. - * @param int $user_id User ID. - */ - $session = apply_filters( 'attach_session_information', array(), $this->user_id ); - $session['expiration'] = $expiration; - - // IP address. - if ( !empty( $_SERVER['REMOTE_ADDR'] ) ) { - $session['ip'] = $_SERVER['REMOTE_ADDR']; - } - - // User-agent. - if ( ! empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - $session['ua'] = wp_unslash( $_SERVER['HTTP_USER_AGENT'] ); - } - - // Timestamp - $session['login'] = time(); - - $token = wp_generate_password( 43, false, false ); - - $this->update( $token, $session ); - - return $token; - } - - /** - * Update a session token. - * - * @since 4.0.0 - * @access public - * - * @param string $token Session token to update. - * @param array $session Session information. - */ - final public function update( $token, $session ) { - $verifier = $this->hash_token( $token ); - $this->update_session( $verifier, $session ); - } - - /** - * Destroy a session token. - * - * @since 4.0.0 - * @access public - * - * @param string $token Session token to destroy. - */ - final public function destroy( $token ) { - $verifier = $this->hash_token( $token ); - $this->update_session( $verifier, null ); - } - - /** - * Destroy all session tokens for this user, - * except a single token, presumably the one in use. - * - * @since 4.0.0 - * @access public - * - * @param string $token_to_keep Session token to keep. - */ - final public function destroy_others( $token_to_keep ) { - $verifier = $this->hash_token( $token_to_keep ); - $session = $this->get_session( $verifier ); - if ( $session ) { - $this->destroy_other_sessions( $verifier ); - } else { - $this->destroy_all_sessions(); - } - } - - /** - * Determine whether a session token is still valid, - * based on expiration. - * - * @since 4.0.0 - * @access protected - * - * @param array $session Session to check. - * @return bool Whether session is valid. - */ - final protected function is_still_valid( $session ) { - return $session['expiration'] >= time(); - } - - /** - * Destroy all session tokens for a user. - * - * @since 4.0.0 - * @access public - */ - final public function destroy_all() { - $this->destroy_all_sessions(); - } - - /** - * Destroy all session tokens for all users. - * - * @since 4.0.0 - * @access public - * @static - */ - final public static function destroy_all_for_all_users() { - $manager = apply_filters( 'session_token_manager', 'WP_User_Meta_Session_Tokens' ); - call_user_func( array( $manager, 'drop_sessions' ) ); - } - - /** - * Retrieve all sessions of a user. - * - * @since 4.0.0 - * @access public - * - * @return array Sessions of a user. - */ - final public function get_all() { - return array_values( $this->get_sessions() ); - } - - /** - * This method should retrieve all sessions of a user, keyed by verifier. - * - * @since 4.0.0 - * @access protected - * - * @return array Sessions of a user, keyed by verifier. - */ - abstract protected function get_sessions(); - - /** - * This method should look up a session by its verifier (token hash). - * - * @since 4.0.0 - * @access protected - * - * @param string $verifier Verifier of the session to retrieve. - * @return array|null The session, or null if it does not exist. - */ - abstract protected function get_session( $verifier ); - - /** - * This method should update a session by its verifier. - * - * Omitting the second argument should destroy the session. - * - * @since 4.0.0 - * @access protected - * - * @param string $verifier Verifier of the session to update. - * @param array $session Optional. Session. Omitting this argument destroys the session. - */ - abstract protected function update_session( $verifier, $session = null ); - - /** - * This method should destroy all session tokens for this user, - * except a single session passed. - * - * @since 4.0.0 - * @access protected - * - * @param string $verifier Verifier of the session to keep. - */ - abstract protected function destroy_other_sessions( $verifier ); - - /** - * This method should destroy all sessions for a user. - * - * @since 4.0.0 - * @access protected - */ - abstract protected function destroy_all_sessions(); - - /** - * This static method should destroy all session tokens for all users. - * - * @since 4.0.0 - * @access public - * @static - */ - public static function drop_sessions() {} -} - -/** - * Meta-based user sessions token manager. - * - * @since 4.0.0 - */ -class WP_User_Meta_Session_Tokens extends WP_Session_Tokens { - - /** - * Get all sessions of a user. - * - * @since 4.0.0 - * @access protected - * - * @return array Sessions of a user. - */ - protected function get_sessions() { - $sessions = get_user_meta( $this->user_id, 'session_tokens', true ); - - if ( ! is_array( $sessions ) ) { - return array(); - } - - $sessions = array_map( array( $this, 'prepare_session' ), $sessions ); - return array_filter( $sessions, array( $this, 'is_still_valid' ) ); - } - - /** - * Converts an expiration to an array of session information. - * - * @param mixed $session Session or expiration. - * @return array Session. - */ - protected function prepare_session( $session ) { - if ( is_int( $session ) ) { - return array( 'expiration' => $session ); - } - - return $session; - } - - /** - * Retrieve a session by its verifier (token hash). - * - * @since 4.0.0 - * @access protected - * - * @param string $verifier Verifier of the session to retrieve. - * @return array|null The session, or null if it does not exist - */ - protected function get_session( $verifier ) { - $sessions = $this->get_sessions(); - - if ( isset( $sessions[ $verifier ] ) ) { - return $sessions[ $verifier ]; - } - - return null; - } - - /** - * Update a session by its verifier. - * - * @since 4.0.0 - * @access protected - * - * @param string $verifier Verifier of the session to update. - * @param array $session Optional. Session. Omitting this argument destroys the session. - */ - protected function update_session( $verifier, $session = null ) { - $sessions = $this->get_sessions(); - - if ( $session ) { - $sessions[ $verifier ] = $session; - } else { - unset( $sessions[ $verifier ] ); - } - - $this->update_sessions( $sessions ); - } - - /** - * Update a user's sessions in the usermeta table. - * - * @since 4.0.0 - * @access protected - * - * @param array $sessions Sessions. - */ - protected function update_sessions( $sessions ) { - if ( $sessions ) { - update_user_meta( $this->user_id, 'session_tokens', $sessions ); - } else { - delete_user_meta( $this->user_id, 'session_tokens' ); - } - } - - /** - * Destroy all session tokens for a user, except a single session passed. - * - * @since 4.0.0 - * @access protected - * - * @param string $verifier Verifier of the session to keep. - */ - protected function destroy_other_sessions( $verifier ) { - $session = $this->get_session( $verifier ); - $this->update_sessions( array( $verifier => $session ) ); - } - - /** - * Destroy all session tokens for a user. - * - * @since 4.0.0 - * @access protected - */ - protected function destroy_all_sessions() { - $this->update_sessions( array() ); - } - - /** - * Destroy all session tokens for all users. - * - * @since 4.0.0 - * @access public - * @static - */ - public static function drop_sessions() { - delete_metadata( 'user', 0, 'session_tokens', false, true ); - } -} +require_once( ABSPATH . WPINC . '/class-wp-session-tokens.php' ); +require_once( ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php' ); \ No newline at end of file diff --git a/wp/wp-includes/shortcodes.php b/wp/wp-includes/shortcodes.php index e2767084..32720cd2 100644 --- a/wp/wp-includes/shortcodes.php +++ b/wp/wp-includes/shortcodes.php @@ -244,10 +244,11 @@ function do_shortcode( $content, $ignore_html = false ) { * 6 - An extra ] to allow for escaping shortcodes with double [[]] * * @since 2.5.0 + * @since 4.4.0 Added the `$tagnames` parameter. * * @global array $shortcode_tags * - * @param array $tagnames List of shortcodes to find. Optional. Defaults to all registered shortcodes. + * @param array $tagnames Optional. List of shortcodes to find. Defaults to all registered shortcodes. * @return string The shortcode search regular expression */ function get_shortcode_regex( $tagnames = null ) { @@ -321,13 +322,39 @@ function do_shortcode_tag( $m ) { return $m[0]; } - if ( isset( $m[5] ) ) { - // enclosing tag - extra parameter - return $m[1] . call_user_func( $shortcode_tags[$tag], $attr, $m[5], $tag ) . $m[6]; - } else { - // self-closing tag - return $m[1] . call_user_func( $shortcode_tags[$tag], $attr, null, $tag ) . $m[6]; + /** + * Filters whether to call a shortcode callback. + * + * Passing a truthy value to the filter will effectively short-circuit the + * shortcode generation process, returning that value instead. + * + * @since 4.7.0 + * + * @param bool|string $return Short-circuit return value. Either false or the value to replace the shortcode with. + * @param string $tag Shortcode name. + * @param array $attr Shortcode attributes array, + * @param array $m Regular expression match array. + */ + $return = apply_filters( 'pre_do_shortcode_tag', false, $tag, $attr, $m ); + if ( false !== $return ) { + return $return; } + + $content = isset( $m[5] ) ? $m[5] : null; + + $output = $m[1] . call_user_func( $shortcode_tags[ $tag ], $attr, $content, $tag ) . $m[6]; + + /** + * Filters the output created by a shortcode callback. + * + * @since 4.7.0 + * + * @param string $output Shortcode output. + * @param string $tag Shortcode name. + * @param array $attr Shortcode attributes array, + * @param array $m Regular expression match array. + */ + return apply_filters( 'do_shortcode_tag', $output, $tag, $attr, $m ); } /** @@ -579,7 +606,20 @@ function strip_shortcodes( $content ) { // Find all registered tag names in $content. preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches ); - $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] ); + + $tags_to_remove = array_keys( $shortcode_tags ); + + /** + * Filters the list of shortcode tags to remove from the content. + * + * @since 4.7.0 + * + * @param array $tag_array Array of shortcode tags to remove. + * @param string $content Content shortcodes are being removed from. + */ + $tags_to_remove = apply_filters( 'strip_shortcodes_tagnames', $tags_to_remove, $content ); + + $tagnames = array_intersect( $tags_to_remove, $matches[1] ); if ( empty( $tagnames ) ) { return $content; diff --git a/wp/wp-includes/taxonomy.php b/wp/wp-includes/taxonomy.php index 70af35a3..f5c2f386 100644 --- a/wp/wp-includes/taxonomy.php +++ b/wp/wp-includes/taxonomy.php @@ -61,6 +61,15 @@ function create_initial_taxonomies() { 'show_ui' => true, 'show_admin_column' => true, '_builtin' => true, + 'capabilities' => array( + 'manage_terms' => 'manage_categories', + 'edit_terms' => 'edit_categories', + 'delete_terms' => 'delete_categories', + 'assign_terms' => 'assign_categories', + ), + 'show_in_rest' => true, + 'rest_base' => 'categories', + 'rest_controller_class' => 'WP_REST_Terms_Controller', ) ); register_taxonomy( 'post_tag', 'post', array( @@ -71,6 +80,15 @@ function create_initial_taxonomies() { 'show_ui' => true, 'show_admin_column' => true, '_builtin' => true, + 'capabilities' => array( + 'manage_terms' => 'manage_post_tags', + 'edit_terms' => 'edit_post_tags', + 'delete_terms' => 'delete_post_tags', + 'assign_terms' => 'assign_post_tags', + ), + 'show_in_rest' => true, + 'rest_base' => 'tags', + 'rest_controller_class' => 'WP_REST_Terms_Controller', ) ); register_taxonomy( 'nav_menu', 'nav_menu_item', array( @@ -181,7 +199,7 @@ function get_object_taxonomies( $object, $output = 'names' ) { if ( is_object($object) ) { if ( $object->post_type == 'attachment' ) - return get_attachment_taxonomies($object); + return get_attachment_taxonomies( $object, $output ); $object = $object->post_type; } @@ -211,7 +229,7 @@ function get_object_taxonomies( $object, $output = 'names' ) { * @global array $wp_taxonomies The registered taxonomies. * * @param string $taxonomy Name of taxonomy object to return. - * @return object|false The Taxonomy Object or false if $taxonomy doesn't exist. + * @return WP_Taxonomy|false The Taxonomy Object or false if $taxonomy doesn't exist. */ function get_taxonomy( $taxonomy ) { global $wp_taxonomies; @@ -276,21 +294,20 @@ function is_taxonomy_hierarchical($taxonomy) { * @since 4.4.0 The `show_ui` argument is now enforced on the term editing screen. * @since 4.4.0 The `public` argument now controls whether the taxonomy can be queried on the front end. * @since 4.5.0 Introduced `publicly_queryable` argument. + * @since 4.7.0 Introduced `show_in_rest`, 'rest_base' and 'rest_controller_class' + * arguments to register the Taxonomy in REST API. * * @global array $wp_taxonomies Registered taxonomies. - * @global WP $wp WP instance. * * @param string $taxonomy Taxonomy key, must not exceed 32 characters. - * @param array|string $object_type Name of the object type for the taxonomy object. + * @param array|string $object_type Object type or array of object types with which the taxonomy should be associated. * @param array|string $args { * Optional. Array or query string of arguments for registering a taxonomy. * - * @type string $label Name of the taxonomy shown in the menu. Usually plural. If not set, - * `$labels['name']` will be used. - * @type array $labels An array of labels for this taxonomy. By default, Tag labels are used for - * non-hierarchical taxonmies, and Category labels are used for hierarchical - * taxonomies. See accepted values in get_taxonomy_labels(). - * Default empty array. + * @type array $labels An array of labels for this taxonomy. By default, Tag labels are + * used for non-hierarchical taxonomies, and Category labels are used + * for hierarchical taxonomies. See accepted values in + * get_taxonomy_labels(). Default empty array. * @type string $description A short descriptive summary of what the taxonomy is for. Default empty. * @type bool $public Whether a taxonomy is intended for use publicly either via * the admin interface or by front-end users. The default settings @@ -308,6 +325,9 @@ function is_taxonomy_hierarchical($taxonomy) { * (default true). * @type bool $show_in_nav_menus Makes this taxonomy available for selection in navigation menus. If not * set, the default is inherited from `$public` (default true). + * @type bool $show_in_rest Whether to include the taxonomy in the REST API. + * @type string $rest_base To change the base url of REST API route. Default is $taxonomy. + * @type string $rest_controller_class REST API Controller class name. Default is 'WP_REST_Terms_Controller'. * @type bool $show_tagcloud Whether to list the taxonomy in the Tag Cloud Widget controls. If not set, * the default is inherited from `$show_ui` (default true). * @type bool $show_in_quick_edit Whether to show the taxonomy in the quick/bulk edit panel. It not set, @@ -349,134 +369,25 @@ function is_taxonomy_hierarchical($taxonomy) { * @return WP_Error|void WP_Error, if errors. */ function register_taxonomy( $taxonomy, $object_type, $args = array() ) { - global $wp_taxonomies, $wp; + global $wp_taxonomies; if ( ! is_array( $wp_taxonomies ) ) $wp_taxonomies = array(); $args = wp_parse_args( $args ); - /** - * Filters the arguments for registering a taxonomy. - * - * @since 4.4.0 - * - * @param array $args Array of arguments for registering a taxonomy. - * @param string $taxonomy Taxonomy key. - * @param array $object_type Array of names of object types for the taxonomy. - */ - $args = apply_filters( 'register_taxonomy_args', $args, $taxonomy, (array) $object_type ); - - $defaults = array( - 'labels' => array(), - 'description' => '', - 'public' => true, - 'publicly_queryable' => null, - 'hierarchical' => false, - 'show_ui' => null, - 'show_in_menu' => null, - 'show_in_nav_menus' => null, - 'show_tagcloud' => null, - 'show_in_quick_edit' => null, - 'show_admin_column' => false, - 'meta_box_cb' => null, - 'capabilities' => array(), - 'rewrite' => true, - 'query_var' => $taxonomy, - 'update_count_callback' => '', - '_builtin' => false, - ); - $args = array_merge( $defaults, $args ); - if ( empty( $taxonomy ) || strlen( $taxonomy ) > 32 ) { _doing_it_wrong( __FUNCTION__, __( 'Taxonomy names must be between 1 and 32 characters in length.' ), '4.2.0' ); return new WP_Error( 'taxonomy_length_invalid', __( 'Taxonomy names must be between 1 and 32 characters in length.' ) ); } - // If not set, default to the setting for public. - if ( null === $args['publicly_queryable'] ) { - $args['publicly_queryable'] = $args['public']; - } + $taxonomy_object = new WP_Taxonomy( $taxonomy, $object_type, $args ); + $taxonomy_object->add_rewrite_rules(); - // Non-publicly queryable taxonomies should not register query vars, except in the admin. - if ( false !== $args['query_var'] && ( is_admin() || false !== $args['publicly_queryable'] ) && ! empty( $wp ) ) { - if ( true === $args['query_var'] ) - $args['query_var'] = $taxonomy; - else - $args['query_var'] = sanitize_title_with_dashes( $args['query_var'] ); - $wp->add_query_var( $args['query_var'] ); - } else { - // Force query_var to false for non-public taxonomies. - $args['query_var'] = false; - } + $wp_taxonomies[ $taxonomy ] = $taxonomy_object; - if ( false !== $args['rewrite'] && ( is_admin() || '' != get_option( 'permalink_structure' ) ) ) { - $args['rewrite'] = wp_parse_args( $args['rewrite'], array( - 'with_front' => true, - 'hierarchical' => false, - 'ep_mask' => EP_NONE, - ) ); + $taxonomy_object->add_hooks(); - if ( empty( $args['rewrite']['slug'] ) ) - $args['rewrite']['slug'] = sanitize_title_with_dashes( $taxonomy ); - - if ( $args['hierarchical'] && $args['rewrite']['hierarchical'] ) - $tag = '(.+?)'; - else - $tag = '([^/]+)'; - - add_rewrite_tag( "%$taxonomy%", $tag, $args['query_var'] ? "{$args['query_var']}=" : "taxonomy=$taxonomy&term=" ); - add_permastruct( $taxonomy, "{$args['rewrite']['slug']}/%$taxonomy%", $args['rewrite'] ); - } - - // If not set, default to the setting for public. - if ( null === $args['show_ui'] ) - $args['show_ui'] = $args['public']; - - // If not set, default to the setting for show_ui. - if ( null === $args['show_in_menu' ] || ! $args['show_ui'] ) - $args['show_in_menu' ] = $args['show_ui']; - - // If not set, default to the setting for public. - if ( null === $args['show_in_nav_menus'] ) - $args['show_in_nav_menus'] = $args['public']; - - // If not set, default to the setting for show_ui. - if ( null === $args['show_tagcloud'] ) - $args['show_tagcloud'] = $args['show_ui']; - - // If not set, default to the setting for show_ui. - if ( null === $args['show_in_quick_edit'] ) { - $args['show_in_quick_edit'] = $args['show_ui']; - } - - $default_caps = array( - 'manage_terms' => 'manage_categories', - 'edit_terms' => 'manage_categories', - 'delete_terms' => 'manage_categories', - 'assign_terms' => 'edit_posts', - ); - $args['cap'] = (object) array_merge( $default_caps, $args['capabilities'] ); - unset( $args['capabilities'] ); - - $args['name'] = $taxonomy; - $args['object_type'] = array_unique( (array) $object_type ); - - $args['labels'] = get_taxonomy_labels( (object) $args ); - $args['label'] = $args['labels']->name; - - // If not set, use the default meta box - if ( null === $args['meta_box_cb'] ) { - if ( $args['hierarchical'] ) - $args['meta_box_cb'] = 'post_categories_meta_box'; - else - $args['meta_box_cb'] = 'post_tags_meta_box'; - } - - $wp_taxonomies[ $taxonomy ] = (object) $args; - - // Register callback handling for meta box. - add_filter( 'wp_ajax_add-' . $taxonomy, '_wp_ajax_add_hierarchical_term' ); /** * Fires after a taxonomy is registered. @@ -487,7 +398,7 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) { * @param array|string $object_type Object type or array of object types. * @param array $args Array of taxonomy registration arguments. */ - do_action( 'registered_taxonomy', $taxonomy, $object_type, $args ); + do_action( 'registered_taxonomy', $taxonomy, $object_type, (array) $taxonomy_object ); } /** @@ -508,28 +419,17 @@ function unregister_taxonomy( $taxonomy ) { return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) ); } - $taxonomy_args = get_taxonomy( $taxonomy ); + $taxonomy_object = get_taxonomy( $taxonomy ); // Do not allow unregistering internal taxonomies. - if ( $taxonomy_args->_builtin ) { + if ( $taxonomy_object->_builtin ) { return new WP_Error( 'invalid_taxonomy', __( 'Unregistering a built-in taxonomy is not allowed' ) ); } - global $wp, $wp_taxonomies; + global $wp_taxonomies; - // Remove query var. - if ( false !== $taxonomy_args->query_var ) { - $wp->remove_query_var( $taxonomy_args->query_var ); - } - - // Remove rewrite tags and permastructs. - if ( false !== $taxonomy_args->rewrite ) { - remove_rewrite_tag( "%$taxonomy%" ); - remove_permastruct( $taxonomy ); - } - - // Unregister callback handling for meta box. - remove_filter( 'wp_ajax_add-' . $taxonomy, '_wp_ajax_add_hierarchical_term' ); + $taxonomy_object->remove_rewrite_rules(); + $taxonomy_object->remove_hooks(); // Remove the taxonomy. unset( $wp_taxonomies[ $taxonomy ] ); @@ -579,7 +479,7 @@ function unregister_taxonomy( $taxonomy ) { * @since 4.3.0 Added the `no_terms` label. * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels. * - * @param object $tax Taxonomy object. + * @param WP_Taxonomy $tax Taxonomy object. * @return object object with all the labels as member variables. */ function get_taxonomy_labels( $tax ) { @@ -814,7 +714,8 @@ function get_tax_sql( $tax_query, $primary_table, $primary_id_column ) { * filters and return a `WP_Term` object corresponding to the `$term` data. If `WP_Term`, * will return `$term`. * @param string $taxonomy Optional. Taxonomy name that $term is part of. - * @param string $output Constant OBJECT, ARRAY_A, or ARRAY_N + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * a WP_Term object, an associative array, or a numeric array, respectively. Default OBJECT. * @param string $filter Optional, default is raw or no WordPress defined filter will applied. * @return array|WP_Term|WP_Error|null Object of the type specified by `$output` on success. When `$output` is 'OBJECT', * a WP_Term instance is returned. If taxonomy does not exist, a WP_Error is @@ -871,7 +772,7 @@ function get_term( $term, $taxonomy = '', $output = OBJECT, $filter = 'raw' ) { * @param int|WP_Term $_term Term object or ID. * @param string $taxonomy The taxonomy slug. */ - $_term = apply_filters( "get_$taxonomy", $_term, $taxonomy ); + $_term = apply_filters( "get_{$taxonomy}", $_term, $taxonomy ); // Bail if a filter callback has changed the type of the `$_term` object. if ( ! ( $_term instanceof WP_Term ) ) { @@ -921,10 +822,11 @@ function get_term( $term, $taxonomy = '', $output = OBJECT, $filter = 'raw' ) { * @param string $field Either 'slug', 'name', 'id' (term_id), or 'term_taxonomy_id' * @param string|int $value Search for this term value * @param string $taxonomy Taxonomy name. Optional, if `$field` is 'term_taxonomy_id'. - * @param string $output Constant OBJECT, ARRAY_A, or ARRAY_N + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * a WP_Term object, an associative array, or a numeric array, respectively. Default OBJECT. * @param string $filter Optional, default is raw or no WordPress defined filter will applied. - * @return WP_Term|bool WP_Term instance on success. Will return false if `$taxonomy` does not exist - * or `$term` was not found. + * @return WP_Term|array|false WP_Term instance (or array) on success. Will return false if `$taxonomy` does not exist + * or `$term` was not found. */ function get_term_by( $field, $value, $taxonomy = '', $output = OBJECT, $filter = 'raw' ) { global $wpdb; @@ -1379,7 +1281,7 @@ function update_termmeta_cache( $term_ids ) { * * @global wpdb $wpdb WordPress database abstraction object. * - * @param int|string $term The term to check + * @param int|string $term The term to check. Accepts term ID, slug, or name. * @param string $taxonomy The taxonomy name to use * @param int $parent Optional. ID of parent term under which to confine the exists search. * @return mixed Returns null if the term does not exist. Returns the term ID @@ -1915,7 +1817,7 @@ function wp_delete_term( $term, $taxonomy, $args = array() ) { * by the parent function. WP_Error otherwise. * @param array $object_ids List of term object IDs. */ - do_action( "delete_$taxonomy", $term, $tt_id, $deleted_term, $object_ids ); + do_action( "delete_{$taxonomy}", $term, $tt_id, $deleted_term, $object_ids ); return true; } @@ -1941,27 +1843,13 @@ function wp_delete_category( $cat_ID ) { * Introduced `$parent` argument. * @since 4.4.0 Introduced `$meta_query` and `$update_term_meta_cache` arguments. When `$fields` is 'all' or * 'all_with_object_id', an array of `WP_Term` objects will be returned. + * @since 4.7.0 Refactored to use WP_Term_Query, and to support any WP_Term_Query arguments. * * @global wpdb $wpdb WordPress database abstraction object. * * @param int|array $object_ids The ID(s) of the object(s) to retrieve. * @param string|array $taxonomies The taxonomies to retrieve terms from. - * @param array|string $args { - * Array of arguments. - * @type string $orderby Field by which results should be sorted. Accepts 'name', 'count', 'slug', - * 'term_group', 'term_order', 'taxonomy', 'parent', or 'term_taxonomy_id'. - * Default 'name'. - * @type string $order Sort order. Accepts 'ASC' or 'DESC'. Default 'ASC'. - * @type string $fields Fields to return for matched terms. Accepts 'all', 'ids', 'names', and - * 'all_with_object_id'. Note that 'all' or 'all_with_object_id' will result - * in an array of term objects being returned, 'ids' will return an array of - * integers, and 'names' an array of strings. - * @type int $parent Optional. Limit results to the direct children of a given term ID. - * @type bool $update_term_meta_cache Whether to prime termmeta cache for matched terms. Only applies when - * `$fields` is 'all', 'all_with_object_id', or 'term_id'. Default true. - * @type array $meta_query Meta query clauses to limit retrieved terms by. See `WP_Meta_Query`. - * Default empty. - * } + * @param array|string $args See WP_Term_Query::__construct() for supported arguments. * @return array|WP_Error The requested term data or empty array if no terms found. * WP_Error if any of the $taxonomies don't exist. */ @@ -1983,185 +1871,26 @@ function wp_get_object_terms($object_ids, $taxonomies, $args = array()) { $object_ids = array($object_ids); $object_ids = array_map('intval', $object_ids); - $defaults = array( - 'orderby' => 'name', - 'order' => 'ASC', - 'fields' => 'all', - 'parent' => '', - 'update_term_meta_cache' => true, - 'meta_query' => '', - ); - $args = wp_parse_args( $args, $defaults ); + $args['taxonomy'] = $taxonomies; + $args['object_ids'] = $object_ids; - $terms = array(); - if ( count($taxonomies) > 1 ) { - foreach ( $taxonomies as $index => $taxonomy ) { - $t = get_taxonomy($taxonomy); - if ( isset($t->args) && is_array($t->args) && $args != array_merge($args, $t->args) ) { - unset($taxonomies[$index]); - $terms = array_merge($terms, wp_get_object_terms($object_ids, $taxonomy, array_merge($args, $t->args))); - } - } - } else { - $t = get_taxonomy($taxonomies[0]); - if ( isset($t->args) && is_array($t->args) ) - $args = array_merge($args, $t->args); - } - - $orderby = $args['orderby']; - $order = $args['order']; - $fields = $args['fields']; - - if ( in_array( $orderby, array( 'term_id', 'name', 'slug', 'term_group' ) ) ) { - $orderby = "t.$orderby"; - } elseif ( in_array( $orderby, array( 'count', 'parent', 'taxonomy', 'term_taxonomy_id' ) ) ) { - $orderby = "tt.$orderby"; - } elseif ( 'term_order' === $orderby ) { - $orderby = 'tr.term_order'; - } elseif ( 'none' === $orderby ) { - $orderby = ''; - $order = ''; - } else { - $orderby = 't.term_id'; - } - - // tt_ids queries can only be none or tr.term_taxonomy_id - if ( ('tt_ids' == $fields) && !empty($orderby) ) - $orderby = 'tr.term_taxonomy_id'; - - if ( !empty($orderby) ) - $orderby = "ORDER BY $orderby"; - - $order = strtoupper( $order ); - if ( '' !== $order && ! in_array( $order, array( 'ASC', 'DESC' ) ) ) - $order = 'ASC'; - - $taxonomy_array = $taxonomies; - $object_id_array = $object_ids; - $taxonomies = "'" . implode("', '", array_map( 'esc_sql', $taxonomies ) ) . "'"; - $object_ids = implode(', ', $object_ids); - - $select_this = ''; - if ( 'all' == $fields ) { - $select_this = 't.*, tt.*'; - } elseif ( 'ids' == $fields ) { - $select_this = 't.term_id'; - } elseif ( 'names' == $fields ) { - $select_this = 't.name'; - } elseif ( 'slugs' == $fields ) { - $select_this = 't.slug'; - } elseif ( 'all_with_object_id' == $fields ) { - $select_this = 't.*, tt.*, tr.object_id'; - } - - $where = array( - "tt.taxonomy IN ($taxonomies)", - "tr.object_id IN ($object_ids)", - ); - - if ( '' !== $args['parent'] ) { - $where[] = $wpdb->prepare( 'tt.parent = %d', $args['parent'] ); - } - - // Meta query support. - $meta_query_join = ''; - if ( ! empty( $args['meta_query'] ) ) { - $mquery = new WP_Meta_Query( $args['meta_query'] ); - $mq_sql = $mquery->get_sql( 'term', 't', 'term_id' ); - - $meta_query_join .= $mq_sql['join']; - - // Strip leading AND. - $where[] = preg_replace( '/^\s*AND/', '', $mq_sql['where'] ); - } - - $where = implode( ' AND ', $where ); - - $query = "SELECT $select_this FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN $wpdb->term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id $meta_query_join WHERE $where $orderby $order"; - - $objects = false; - if ( 'all' == $fields || 'all_with_object_id' == $fields ) { - $_terms = $wpdb->get_results( $query ); - $object_id_index = array(); - foreach ( $_terms as $key => $term ) { - $term = sanitize_term( $term, $taxonomy, 'raw' ); - $_terms[ $key ] = $term; - - if ( isset( $term->object_id ) ) { - $object_id_index[ $key ] = $term->object_id; - } - } - - update_term_cache( $_terms ); - $_terms = array_map( 'get_term', $_terms ); - - // Re-add the object_id data, which is lost when fetching terms from cache. - if ( 'all_with_object_id' === $fields ) { - foreach ( $_terms as $key => $_term ) { - if ( isset( $object_id_index[ $key ] ) ) { - $_term->object_id = $object_id_index[ $key ]; - } - } - } - - $terms = array_merge( $terms, $_terms ); - $objects = true; - - } elseif ( 'ids' == $fields || 'names' == $fields || 'slugs' == $fields ) { - $_terms = $wpdb->get_col( $query ); - $_field = ( 'ids' == $fields ) ? 'term_id' : 'name'; - foreach ( $_terms as $key => $term ) { - $_terms[$key] = sanitize_term_field( $_field, $term, $term, $taxonomy, 'raw' ); - } - $terms = array_merge( $terms, $_terms ); - } elseif ( 'tt_ids' == $fields ) { - $terms = $wpdb->get_col("SELECT tr.term_taxonomy_id FROM $wpdb->term_relationships AS tr INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tr.object_id IN ($object_ids) AND tt.taxonomy IN ($taxonomies) $orderby $order"); - foreach ( $terms as $key => $tt_id ) { - $terms[$key] = sanitize_term_field( 'term_taxonomy_id', $tt_id, 0, $taxonomy, 'raw' ); // 0 should be the term id, however is not needed when using raw context. - } - } - - // Update termmeta cache, if necessary. - if ( $args['update_term_meta_cache'] && ( 'all' === $fields || 'all_with_object_id' === $fields || 'ids' === $fields ) ) { - if ( 'ids' === $fields ) { - $term_ids = $terms; - } else { - $term_ids = wp_list_pluck( $terms, 'term_id' ); - } - - update_termmeta_cache( $term_ids ); - } - - if ( ! $terms ) { - $terms = array(); - } elseif ( $objects && 'all_with_object_id' !== $fields ) { - $_tt_ids = array(); - $_terms = array(); - foreach ( $terms as $term ) { - if ( in_array( $term->term_taxonomy_id, $_tt_ids ) ) { - continue; - } - - $_tt_ids[] = $term->term_taxonomy_id; - $_terms[] = $term; - } - $terms = $_terms; - } elseif ( ! $objects ) { - $terms = array_values( array_unique( $terms ) ); - } + $terms = get_terms( $args ); /** * Filters the terms for a given object or objects. * * @since 4.2.0 * - * @param array $terms An array of terms for the given object or objects. - * @param array $object_id_array Array of object IDs for which `$terms` were retrieved. - * @param array $taxonomy_array Array of taxonomies from which `$terms` were retrieved. - * @param array $args An array of arguments for retrieving terms for the given - * object(s). See wp_get_object_terms() for details. + * @param array $terms An array of terms for the given object or objects. + * @param array $object_ids Array of object IDs for which `$terms` were retrieved. + * @param array $taxonomies Array of taxonomies from which `$terms` were retrieved. + * @param array $args An array of arguments for retrieving terms for the given + * object(s). See wp_get_object_terms() for details. */ - $terms = apply_filters( 'get_object_terms', $terms, $object_id_array, $taxonomy_array, $args ); + $terms = apply_filters( 'get_object_terms', $terms, $object_ids, $taxonomies, $args ); + + $object_ids = implode( ',', $object_ids ); + $taxonomies = implode( ',', $taxonomies ); /** * Filters the terms for a given object or objects. @@ -2340,7 +2069,20 @@ function wp_insert_term( $term, $taxonomy, $args = array() ) { $slug = wp_unique_term_slug( $slug, (object) $args ); - if ( false === $wpdb->insert( $wpdb->terms, compact( 'name', 'slug', 'term_group' ) ) ) { + $data = compact( 'name', 'slug', 'term_group' ); + + /** + * Filters term data before it is inserted into the database. + * + * @since 4.7.0 + * + * @param array $data Term data to be inserted. + * @param string $taxonomy Taxonomy slug. + * @param array $args Arguments passed to wp_insert_term(). + */ + $data = apply_filters( 'wp_insert_term_data', $data, $taxonomy, $args ); + + if ( false === $wpdb->insert( $wpdb->terms, $data ) ) { return new WP_Error( 'db_insert_error', __( 'Could not insert term into the database' ), $wpdb->last_error ); } @@ -2406,7 +2148,7 @@ function wp_insert_term( $term, $taxonomy, $args = array() ) { * @param int $term_id Term ID. * @param int $tt_id Term taxonomy ID. */ - do_action( "create_$taxonomy", $term_id, $tt_id ); + do_action( "create_{$taxonomy}", $term_id, $tt_id ); /** * Filters the term ID after a new term is created. @@ -2442,7 +2184,7 @@ function wp_insert_term( $term, $taxonomy, $args = array() ) { * @param int $term_id Term ID. * @param int $tt_id Term taxonomy ID. */ - do_action( "created_$taxonomy", $term_id, $tt_id ); + do_action( "created_{$taxonomy}", $term_id, $tt_id ); return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id); } @@ -2513,22 +2255,26 @@ function wp_set_object_terms( $object_id, $terms, $taxonomy, $append = false ) { * Fires immediately before an object-term relationship is added. * * @since 2.9.0 + * @since 4.7.0 Added the `$taxonomy` parameter. * - * @param int $object_id Object ID. - * @param int $tt_id Term taxonomy ID. + * @param int $object_id Object ID. + * @param int $tt_id Term taxonomy ID. + * @param string $taxonomy Taxonomy slug. */ - do_action( 'add_term_relationship', $object_id, $tt_id ); + do_action( 'add_term_relationship', $object_id, $tt_id, $taxonomy ); $wpdb->insert( $wpdb->term_relationships, array( 'object_id' => $object_id, 'term_taxonomy_id' => $tt_id ) ); /** * Fires immediately after an object-term relationship is added. * * @since 2.9.0 + * @since 4.7.0 Added the `$taxonomy` parameter. * - * @param int $object_id Object ID. - * @param int $tt_id Term taxonomy ID. + * @param int $object_id Object ID. + * @param int $tt_id Term taxonomy ID. + * @param string $taxonomy Taxonomy slug. */ - do_action( 'added_term_relationship', $object_id, $tt_id ); + do_action( 'added_term_relationship', $object_id, $tt_id, $taxonomy ); $new_tt_ids[] = $tt_id; } @@ -2648,11 +2394,13 @@ function wp_remove_object_terms( $object_id, $terms, $taxonomy ) { * Fires immediately before an object-term relationship is deleted. * * @since 2.9.0 + * @since 4.7.0 Added the `$taxonomy` parameter. * * @param int $object_id Object ID. * @param array $tt_ids An array of term taxonomy IDs. + * @param string $taxonomy Taxonomy slug. */ - do_action( 'delete_term_relationships', $object_id, $tt_ids ); + do_action( 'delete_term_relationships', $object_id, $tt_ids, $taxonomy ); $deleted = $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id IN ($in_tt_ids)", $object_id ) ); wp_cache_delete( $object_id, $taxonomy . '_relationships' ); @@ -2661,11 +2409,13 @@ function wp_remove_object_terms( $object_id, $terms, $taxonomy ) { * Fires immediately after an object-term relationship is deleted. * * @since 2.9.0 + * @since 4.7.0 Added the `$taxonomy` parameter. * - * @param int $object_id Object ID. - * @param array $tt_ids An array of term taxonomy IDs. + * @param int $object_id Object ID. + * @param array $tt_ids An array of term taxonomy IDs. + * @param string $taxonomy Taxonomy slug. */ - do_action( 'deleted_term_relationships', $object_id, $tt_ids ); + do_action( 'deleted_term_relationships', $object_id, $tt_ids, $taxonomy ); wp_update_term_count( $tt_ids, $taxonomy ); @@ -2904,10 +2654,12 @@ function wp_update_term( $term_id, $taxonomy, $args = array() ) { if ( $duplicate && $duplicate->term_id != $term_id ) { // If an empty slug was passed or the parent changed, reset the slug to something unique. // Otherwise, bail. - if ( $empty_slug || ( $parent != $term['parent']) ) + if ( $empty_slug || ( $parent != $term['parent']) ) { $slug = wp_unique_term_slug($slug, (object) $args); - else + } else { + /* translators: 1: Taxonomy term slug */ return new WP_Error('duplicate_term_slug', sprintf(__('The slug “%s” is already in use by another term'), $slug)); + } } $tt_id = (int) $wpdb->get_var( $wpdb->prepare( "SELECT tt.term_taxonomy_id FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.term_id = %d", $taxonomy, $term_id) ); @@ -2927,7 +2679,22 @@ function wp_update_term( $term_id, $taxonomy, $args = array() ) { * @param string $taxonomy Taxonomy slug. */ do_action( 'edit_terms', $term_id, $taxonomy ); - $wpdb->update($wpdb->terms, compact( 'name', 'slug', 'term_group' ), compact( 'term_id' ) ); + + $data = compact( 'name', 'slug', 'term_group' ); + + /** + * Filters term data before it is updated in the database. + * + * @since 4.7.0 + * + * @param array $data Term data to be updated. + * @param int $term_id Term ID. + * @param string $taxonomy Taxonomy slug. + * @param array $args Arguments passed to wp_update_term(). + */ + $data = apply_filters( 'wp_update_term_data', $data, $term_id, $taxonomy, $args ); + + $wpdb->update( $wpdb->terms, $data, compact( 'term_id' ) ); if ( empty($slug) ) { $slug = sanitize_title($name, $term_id); $wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) ); @@ -2987,7 +2754,7 @@ function wp_update_term( $term_id, $taxonomy, $args = array() ) { * @param int $term_id Term ID. * @param int $tt_id Term taxonomy ID. */ - do_action( "edit_$taxonomy", $term_id, $tt_id ); + do_action( "edit_{$taxonomy}", $term_id, $tt_id ); /** This filter is documented in wp-includes/taxonomy.php */ $term_id = apply_filters( 'term_id_filter', $term_id, $tt_id ); @@ -3016,7 +2783,7 @@ function wp_update_term( $term_id, $taxonomy, $args = array() ) { * @param int $term_id Term ID. * @param int $tt_id Term taxonomy ID. */ - do_action( "edited_$taxonomy", $term_id, $tt_id ); + do_action( "edited_{$taxonomy}", $term_id, $tt_id ); return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id); } @@ -3252,10 +3019,14 @@ function clean_term_cache($ids, $taxonomy = '', $clean_taxonomy = true) { * function only fetches relationship data that is already in the cache. * * @since 2.3.0 + * @since 4.7.0 Returns a WP_Error object if get_term() returns an error for + * any of the matched terms. * * @param int $id Term object ID. * @param string $taxonomy Taxonomy name. - * @return bool|array Array of `WP_Term` objects, if cached False if cache is empty for `$taxonomy` and `$id`. + * @return bool|array|WP_Error Array of `WP_Term` objects, if cached. + * False if cache is empty for `$taxonomy` and `$id`. + * WP_Error if get_term() returns an error object for any term. */ function get_object_term_cache( $id, $taxonomy ) { $_term_ids = wp_cache_get( $id, "{$taxonomy}_relationships" ); @@ -3280,10 +3051,15 @@ function get_object_term_cache( $id, $taxonomy ) { $terms = array(); foreach ( $term_ids as $term_id ) { - $terms[] = wp_cache_get( $term_id, 'terms' ); + $term = get_term( $term_id, $taxonomy ); + if ( is_wp_error( $term ) ) { + return $term; + } + + $terms[] = $term; } - return array_map( 'get_term', $terms ); + return $terms; } /** diff --git a/wp/wp-includes/template-loader.php b/wp/wp-includes/template-loader.php index 025f1a84..1ee7c222 100644 --- a/wp/wp-includes/template-loader.php +++ b/wp/wp-includes/template-loader.php @@ -60,7 +60,6 @@ if ( defined('WP_USE_THEMES') && WP_USE_THEMES ) : elseif ( is_author() && $template = get_author_template() ) : elseif ( is_date() && $template = get_date_template() ) : elseif ( is_archive() && $template = get_archive_template() ) : - elseif ( is_paged() && $template = get_paged_template() ) : else : $template = get_index_template(); endif; diff --git a/wp/wp-includes/template.php b/wp/wp-includes/template.php index 380bb47b..636cb900 100644 --- a/wp/wp-includes/template.php +++ b/wp/wp-includes/template.php @@ -26,6 +26,20 @@ function get_query_template( $type, $templates = array() ) { if ( empty( $templates ) ) $templates = array("{$type}.php"); + /** + * Filters the list of template filenames that are searched for when retrieving a template to use. + * + * The last element in the array should always be the fallback template for this query type. + * + * Possible values for `$type` include: 'index', '404', 'archive', 'author', 'category', 'tag', 'taxonomy', 'date', + * 'embed', home', 'frontpage', 'page', 'paged', 'search', 'single', 'singular', and 'attachment'. + * + * @since 4.7.0 + * + * @param array $templates A list of template candidates, in descending order of priority. + */ + $templates = apply_filters( "{$type}_template_hierarchy", $templates ); + $template = locate_template( $templates ); /** @@ -36,7 +50,7 @@ function get_query_template( $type, $templates = array() ) { * This hook also applies to various types of files loaded as part of the Template Hierarchy. * * Possible values for `$type` include: 'index', '404', 'archive', 'author', 'category', 'tag', 'taxonomy', 'date', - * 'home', 'front_page', 'page', 'paged', 'search', 'single', 'singular', and 'attachment'. + * 'embed', home', 'frontpage', 'page', 'paged', 'search', 'single', 'singular', and 'attachment'. * * @since 1.5.0 * @@ -48,8 +62,8 @@ function get_query_template( $type, $templates = array() ) { /** * Retrieve path of index template in current or parent template. * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'index_template'. + * The template hierarchy is filterable via the {@see 'index_template_hierarchy'} hook. + * The template path is filterable via the {@see 'index_template'} hook. * * @since 3.0.0 * @@ -64,8 +78,8 @@ function get_index_template() { /** * Retrieve path of 404 template in current or parent template. * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. '404_template'. + * The template hierarchy is filterable via the {@see '404_template_hierarchy'} hook. + * The template path is filterable via the {@see '404_template'} hook. * * @since 1.5.0 * @@ -80,8 +94,8 @@ function get_404_template() { /** * Retrieve path of archive template in current or parent template. * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'archive_template'. + * The template hierarchy is filterable via the {@see 'archive_template_hierarchy'} hook. + * The template path is filterable via the {@see 'archive_template'} hook. * * @since 1.5.0 * @@ -106,8 +120,8 @@ function get_archive_template() { /** * Retrieve path of post type archive template in current or parent template. * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'archive_template'. + * The template hierarchy is filterable via the {@see 'archive_template_hierarchy'} hook. + * The template path is filterable via the {@see 'archive_template'} hook. * * @since 3.7.0 * @@ -130,8 +144,20 @@ function get_post_type_archive_template() { /** * Retrieve path of author template in current or parent template. * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'author_template'. + * The hierarchy for this template looks like: + * + * 1. author-{nicename}.php + * 2. author-{id}.php + * 3. author.php + * + * An example of this is: + * + * 1. author-john.php + * 2. author-1.php + * 3. author.php + * + * The template hierarchy is filterable via the {@see 'author_template_hierarchy'} hook. + * The template path is filterable via the {@see 'author_template'} hook. * * @since 1.5.0 * @@ -156,14 +182,24 @@ function get_author_template() { /** * Retrieve path of category template in current or parent template. * - * Works by first retrieving the current slug, for example 'category-default.php', - * and then trying category ID, for example 'category-1.php', and will finally fall - * back to category.php template, if those files don't exist. + * The hierarchy for this template looks like: * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'category_template'. + * 1. category-{slug}.php + * 2. category-{id}.php + * 3. category.php + * + * An example of this is: + * + * 1. category-news.php + * 2. category-2.php + * 3. category.php + * + * The template hierarchy is filterable via the {@see 'category_template_hierarchy'} hook. + * The template path is filterable via the {@see 'category_template'} hook. * * @since 1.5.0 + * @since 4.7.0 The decoded form of `category-{slug}.php` was added to the top of the + * template hierarchy when the category slug contains multibyte characters. * * @see get_query_template() * @@ -175,6 +211,12 @@ function get_category_template() { $templates = array(); if ( ! empty( $category->slug ) ) { + + $slug_decoded = urldecode( $category->slug ); + if ( $slug_decoded !== $category->slug ) { + $templates[] = "category-{$slug_decoded}.php"; + } + $templates[] = "category-{$category->slug}.php"; $templates[] = "category-{$category->term_id}.php"; } @@ -186,14 +228,24 @@ function get_category_template() { /** * Retrieve path of tag template in current or parent template. * - * Works by first retrieving the current tag name, for example 'tag-wordpress.php', - * and then trying tag ID, for example 'tag-1.php', and will finally fall back to - * tag.php template, if those files don't exist. + * The hierarchy for this template looks like: * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'tag_template'. + * 1. tag-{slug}.php + * 2. tag-{id}.php + * 3. tag.php + * + * An example of this is: + * + * 1. tag-wordpress.php + * 2. tag-3.php + * 3. tag.php + * + * The template hierarchy is filterable via the {@see 'tag_template_hierarchy'} hook. + * The template path is filterable via the {@see 'tag_template'} hook. * * @since 2.3.0 + * @since 4.7.0 The decoded form of `tag-{slug}.php` was added to the top of the + * template hierarchy when the tag slug contains multibyte characters. * * @see get_query_template() * @@ -205,6 +257,12 @@ function get_tag_template() { $templates = array(); if ( ! empty( $tag->slug ) ) { + + $slug_decoded = urldecode( $tag->slug ); + if ( $slug_decoded !== $tag->slug ) { + $templates[] = "tag-{$slug_decoded}.php"; + } + $templates[] = "tag-{$tag->slug}.php"; $templates[] = "tag-{$tag->term_id}.php"; } @@ -214,25 +272,30 @@ function get_tag_template() { } /** - * Retrieve path of taxonomy template in current or parent template. + * Retrieve path of custom taxonomy term template in current or parent template. * - * Retrieves the taxonomy and term, if term is available. The template is - * prepended with 'taxonomy-' and followed by both the taxonomy string and - * the taxonomy string followed by a dash and then followed by the term. + * The hierarchy for this template looks like: * - * The taxonomy and term template is checked and used first, if it exists. - * Second, just the taxonomy template is checked, and then finally, taxonomy.php - * template is used. If none of the files exist, then it will fall back on to - * index.php. + * 1. taxonomy-{taxonomy_slug}-{term_slug}.php + * 2. taxonomy-{taxonomy_slug}.php + * 3. taxonomy.php * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'taxonomy_template'. + * An example of this is: + * + * 1. taxonomy-location-texas.php + * 2. taxonomy-location.php + * 3. taxonomy.php + * + * The template hierarchy is filterable via the {@see 'taxonomy_template_hierarchy'} hook. + * The template path is filterable via the {@see 'taxonomy_template'} hook. * * @since 2.5.0 + * @since 4.7.0 The decoded form of `taxonomy-{taxonomy_slug}-{term_slug}.php` was added to the top of the + * template hierarchy when the term slug contains multibyte characters. * * @see get_query_template() * - * @return string Full path to taxonomy template file. + * @return string Full path to custom taxonomy term template file. */ function get_taxonomy_template() { $term = get_queried_object(); @@ -241,6 +304,12 @@ function get_taxonomy_template() { if ( ! empty( $term->slug ) ) { $taxonomy = $term->taxonomy; + + $slug_decoded = urldecode( $term->slug ); + if ( $slug_decoded !== $term->slug ) { + $templates[] = "taxonomy-$taxonomy-{$slug_decoded}.php"; + } + $templates[] = "taxonomy-$taxonomy-{$term->slug}.php"; $templates[] = "taxonomy-$taxonomy.php"; } @@ -252,8 +321,8 @@ function get_taxonomy_template() { /** * Retrieve path of date template in current or parent template. * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'date_template'. + * The template hierarchy is filterable via the {@see 'date_template_hierarchy'} hook. + * The template path is filterable via the {@see 'date_template'} hook. * * @since 1.5.0 * @@ -268,11 +337,8 @@ function get_date_template() { /** * Retrieve path of home template in current or parent template. * - * This is the template used for the page containing the blog posts. - * Attempts to locate 'home.php' first before falling back to 'index.php'. - * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'home_template'. + * The template hierarchy is filterable via the {@see 'home_template_hierarchy'} hook. + * The template path is filterable via the {@see 'home_template'} hook. * * @since 1.5.0 * @@ -287,10 +353,10 @@ function get_home_template() { } /** - * Retrieve path of front-page template in current or parent template. + * Retrieve path of front page template in current or parent template. * - * Looks for 'front-page.php'. The template path is filterable via the - * dynamic {@see '$type_template'} hook, e.g. 'frontpage_template'. + * The template hierarchy is filterable via the {@see 'frontpage_template_hierarchy'} hook. + * The template path is filterable via the {@see 'frontpage_template'} hook. * * @since 3.0.0 * @@ -307,14 +373,26 @@ function get_front_page_template() { /** * Retrieve path of page template in current or parent template. * - * Will first look for the specifically assigned page template. - * Then will search for 'page-{slug}.php', followed by 'page-{id}.php', - * and finally 'page.php'. + * The hierarchy for this template looks like: * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'page_template'. + * 1. {Page Template}.php + * 2. page-{page_name}.php + * 3. page-{id}.php + * 4. page.php + * + * An example of this is: + * + * 1. page-templates/full-width.php + * 2. page-about.php + * 3. page-4.php + * 4. page.php + * + * The template hierarchy is filterable via the {@see 'page_template_hierarchy'} hook. + * The template path is filterable via the {@see 'page_template'} hook. * * @since 1.5.0 + * @since 4.7.0 The decoded form of `page-{page_name}.php` was added to the top of the + * template hierarchy when the page name contains multibyte characters. * * @see get_query_template() * @@ -335,8 +413,13 @@ function get_page_template() { $templates = array(); if ( $template && 0 === validate_file( $template ) ) $templates[] = $template; - if ( $pagename ) + if ( $pagename ) { + $pagename_decoded = urldecode( $pagename ); + if ( $pagename_decoded !== $pagename ) { + $templates[] = "page-{$pagename_decoded}.php"; + } $templates[] = "page-$pagename.php"; + } if ( $id ) $templates[] = "page-$id.php"; $templates[] = 'page.php'; @@ -344,27 +427,11 @@ function get_page_template() { return get_query_template( 'page', $templates ); } -/** - * Retrieve path of paged template in current or parent template. - * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'paged_template'. - * - * @since 1.5.0 - * - * @see get_query_template() - * - * @return string Full path to paged template file. - */ -function get_paged_template() { - return get_query_template('paged'); -} - /** * Retrieve path of search template in current or parent template. * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'search_template'. + * The template hierarchy is filterable via the {@see 'search_template_hierarchy'} hook. + * The template path is filterable via the {@see 'search_template'} hook. * * @since 1.5.0 * @@ -377,13 +444,31 @@ function get_search_template() { } /** - * Retrieve path of single template in current or parent template. + * Retrieve path of single template in current or parent template. Applies to single Posts, + * single Attachments, and single custom post types. * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'single_template'. + * The hierarchy for this template looks like: + * + * 1. {Post Type Template}.php + * 2. single-{post_type}-{post_name}.php + * 3. single-{post_type}.php + * 4. single.php + * + * An example of this is: + * + * 1. templates/full-width.php + * 2. single-post-hello-world.php + * 3. single-post.php + * 4. single.php + * + * The template hierarchy is filterable via the {@see 'single_template_hierarchy'} hook. + * The template path is filterable via the {@see 'single_template'} hook. * * @since 1.5.0 * @since 4.4.0 `single-{post_type}-{post_name}.php` was added to the top of the template hierarchy. + * @since 4.7.0 The decoded form of `single-{post_type}-{post_name}.php` was added to the top of the + * template hierarchy when the post name contains multibyte characters. + * @since 4.7.0 {Post Type Template}.php was added to the top of the template hierarchy. * * @see get_query_template() * @@ -395,6 +480,16 @@ function get_single_template() { $templates = array(); if ( ! empty( $object->post_type ) ) { + $template = get_page_template_slug( $object ); + if ( $template && 0 === validate_file( $template ) ) { + $templates[] = $template; + } + + $name_decoded = urldecode( $object->post_name ); + if ( $name_decoded !== $object->post_name ) { + $templates[] = "single-{$object->post_type}-{$name_decoded}.php"; + } + $templates[] = "single-{$object->post_type}-{$object->post_name}.php"; $templates[] = "single-{$object->post_type}.php"; } @@ -407,10 +502,20 @@ function get_single_template() { /** * Retrieves an embed template path in the current or parent template. * - * By default the WordPress-template is returned. + * The hierarchy for this template looks like: * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'embed_template'. + * 1. embed-{post_type}-{post_format}.php + * 2. embed-{post_type}.php + * 3. embed.php + * + * An example of this is: + * + * 1. embed-post-audio.php + * 2. embed-post.php + * 3. embed.php + * + * The template hierarchy is filterable via the {@see 'embed_template_hierarchy'} hook. + * The template path is filterable via the {@see 'embed_template'} hook. * * @since 4.5.0 * @@ -439,8 +544,8 @@ function get_embed_template() { /** * Retrieves the path of the singular template in current or parent template. * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'singular_template'. + * The template hierarchy is filterable via the {@see 'singular_template_hierarchy'} hook. + * The template path is filterable via the {@see 'singular_template'} hook. * * @since 4.3.0 * @@ -455,18 +560,25 @@ function get_singular_template() { /** * Retrieve path of attachment template in current or parent template. * - * The attachment path first checks if the first part of the mime type exists. - * The second check is for the second part of the mime type. The last check is - * for both types separated by an underscore. If neither are found then the file - * 'attachment.php' is checked and returned. + * The hierarchy for this template looks like: * - * Some examples for the 'text/plain' mime type are 'text.php', 'plain.php', and - * finally 'text-plain.php'. + * 1. {mime_type}-{sub_type}.php + * 2. {sub_type}.php + * 3. {mime_type}.php + * 4. attachment.php * - * The template path is filterable via the dynamic {@see '$type_template'} hook, - * e.g. 'attachment_template'. + * An example of this is: + * + * 1. image-jpeg.php + * 2. jpeg.php + * 3. image.php + * 4. attachment.php + * + * The template hierarchy is filterable via the {@see 'attachment_template_hierarchy'} hook. + * The template path is filterable via the {@see 'attachment_template'} hook. * * @since 2.0.0 + * @since 4.3.0 The order of the mime type logic was reversed so the hierarchy is more logical. * * @see get_query_template() * @@ -574,4 +686,3 @@ function load_template( $_template_file, $require_once = true ) { require( $_template_file ); } } - diff --git a/wp/wp-includes/theme.php b/wp/wp-includes/theme.php index e71e417e..8aac86c9 100644 --- a/wp/wp-includes/theme.php +++ b/wp/wp-includes/theme.php @@ -902,7 +902,7 @@ function set_theme_mod( $name, $value ) { * @param string $value The new value of the theme mod. * @param string $old_value The current value of the theme mod. */ - $mods[ $name ] = apply_filters( "pre_set_theme_mod_$name", $value, $old_value ); + $mods[ $name ] = apply_filters( "pre_set_theme_mod_{$name}", $value, $old_value ); $theme = get_option( 'stylesheet' ); update_option( "theme_mods_$theme", $mods ); @@ -1027,8 +1027,9 @@ function get_header_image() { */ function get_header_image_tag( $attr = array() ) { $header = get_custom_header(); + $header->url = get_header_image(); - if ( empty( $header->url ) ) { + if ( ! $header->url ) { return ''; } @@ -1264,6 +1265,7 @@ function get_custom_header() { 'thumbnail_url' => '', 'width' => get_theme_support( 'custom-header', 'width' ), 'height' => get_theme_support( 'custom-header', 'height' ), + 'video' => get_theme_support( 'custom-header', 'video' ), ); return (object) wp_parse_args( $data, $default ); } @@ -1310,6 +1312,180 @@ function unregister_default_headers( $header ) { } } +/** + * Check whether a header video is set or not. + * + * @since 4.7.0 + * + * @see get_header_video_url() + * + * @return bool Whether a header video is set or not. + */ +function has_header_video() { + return (bool) get_header_video_url(); +} + +/* Retrieve header video URL for custom header. + * + * Uses a local video if present, or falls back to an external video. Returns false if there is no video. + * + * @since 4.7.0 + * + * @return string|false + */ +function get_header_video_url() { + $id = absint( get_theme_mod( 'header_video' ) ); + $url = esc_url( get_theme_mod( 'external_header_video' ) ); + + if ( ! $id && ! $url ) { + return false; + } + + if ( $id ) { + // Get the file URL from the attachment ID. + $url = wp_get_attachment_url( $id ); + } + + return esc_url_raw( set_url_scheme( $url ) ); +} + +/** + * Display header video URL. + * + * @since 4.7.0 + */ +function the_header_video_url() { + $video = get_header_video_url(); + if ( $video ) { + echo esc_url( $video ); + } +} + +/** + * Retrieve header video settings. + * + * @since 4.7.0 + * + * @return array + */ +function get_header_video_settings() { + $header = get_custom_header(); + $video_url = get_header_video_url(); + $video_type = wp_check_filetype( $video_url, wp_get_mime_types() ); + + $settings = array( + 'mimeType' => '', + 'posterUrl' => get_header_image(), + 'videoUrl' => $video_url, + 'width' => absint( $header->width ), + 'height' => absint( $header->height ), + 'minWidth' => 900, + 'minHeight' => 500, + 'l10n' => array( + 'pause' => __( 'Pause' ), + 'play' => __( 'Play' ), + 'pauseSpeak' => __( 'Video is paused.'), + 'playSpeak' => __( 'Video is playing.'), + ), + ); + + if ( preg_match( '#^https?://(?:www\.)?(?:youtube\.com/watch|youtu\.be/)#', $video_url ) ) { + $settings['mimeType'] = 'video/x-youtube'; + } elseif ( ! empty( $video_type['type'] ) ) { + $settings['mimeType'] = $video_type['type']; + } + + return apply_filters( 'header_video_settings', $settings ); +} + +/** + * Check whether a custom header is set or not. + * + * @since 4.7.0 + * + * @return bool True if a custom header is set. False if not. + */ +function has_custom_header() { + if ( has_header_image() || ( has_header_video() && is_header_video_active() ) ) { + return true; + } + + return false; +} + +/** + * Checks whether the custom header video is eligible to show on the current page. + * + * @since 4.7.0 + * + * @return bool True if the custom header video should be shown. False if not. + */ +function is_header_video_active() { + if ( ! get_theme_support( 'custom-header', 'video' ) ) { + return false; + } + + $video_active_cb = get_theme_support( 'custom-header', 'video-active-callback' ); + + if ( empty( $video_active_cb ) || ! is_callable( $video_active_cb ) ) { + $show_video = true; + } else { + $show_video = call_user_func( $video_active_cb ); + } + + /** + * Modify whether the custom header video is eligible to show on the current page. + * + * @since 4.7.0 + * + * @param bool $show_video Whether the custom header video should be shown. Returns the value + * of the theme setting for the `custom-header`'s `video-active-callback`. + * If no callback is set, the default value is that of `is_front_page()`. + */ + return apply_filters( 'is_header_video_active', $show_video ); +} + +/** + * Retrieve the markup for a custom header. + * + * The container div will always be returned in the Customizer preview. + * + * @since 4.7.0 + * + * @return string The markup for a custom header on success. + */ +function get_custom_header_markup() { + if ( ! has_custom_header() && ! is_customize_preview() ) { + return ''; + } + + return sprintf( + '
                      %s
                      ', + get_header_image_tag() + ); +} + +/** + * Print the markup for a custom header. + * + * A container div will always be printed in the Customizer preview. + * + * @since 4.7.0 + */ +function the_custom_header_markup() { + $custom_header = get_custom_header_markup(); + if ( empty( $custom_header ) ) { + return; + } + + echo $custom_header; + + if ( is_header_video_active() && ( has_header_video() || is_customize_preview() ) ) { + wp_enqueue_script( 'wp-custom-header' ); + wp_localize_script( 'wp-custom-header', '_wpCustomHeaderSettings', get_header_video_settings() ); + } +} + /** * Retrieve background image for custom background. * @@ -1368,30 +1544,60 @@ function _custom_background_cb() { $color = false; } - if ( ! $background && ! $color ) + if ( ! $background && ! $color ) { + if ( is_customize_preview() ) { + echo ''; + } return; + } $style = $color ? "background-color: #$color;" : ''; if ( $background ) { - $image = " background-image: url('$background');"; + $image = " background-image: url(" . wp_json_encode( $background ) . ");"; + // Background Position. + $position_x = get_theme_mod( 'background_position_x', get_theme_support( 'custom-background', 'default-position-x' ) ); + $position_y = get_theme_mod( 'background_position_y', get_theme_support( 'custom-background', 'default-position-y' ) ); + + if ( ! in_array( $position_x, array( 'left', 'center', 'right' ), true ) ) { + $position_x = 'left'; + } + + if ( ! in_array( $position_y, array( 'top', 'center', 'bottom' ), true ) ) { + $position_y = 'top'; + } + + $position = " background-position: $position_x $position_y;"; + + // Background Size. + $size = get_theme_mod( 'background_size', get_theme_support( 'custom-background', 'default-size' ) ); + + if ( ! in_array( $size, array( 'auto', 'contain', 'cover' ), true ) ) { + $size = 'auto'; + } + + $size = " background-size: $size;"; + + // Background Repeat. $repeat = get_theme_mod( 'background_repeat', get_theme_support( 'custom-background', 'default-repeat' ) ); - if ( ! in_array( $repeat, array( 'no-repeat', 'repeat-x', 'repeat-y', 'repeat' ) ) ) + + if ( ! in_array( $repeat, array( 'repeat-x', 'repeat-y', 'repeat', 'no-repeat' ), true ) ) { $repeat = 'repeat'; + } + $repeat = " background-repeat: $repeat;"; - $position = get_theme_mod( 'background_position_x', get_theme_support( 'custom-background', 'default-position-x' ) ); - if ( ! in_array( $position, array( 'center', 'right', 'left' ) ) ) - $position = 'left'; - $position = " background-position: top $position;"; - + // Background Scroll. $attachment = get_theme_mod( 'background_attachment', get_theme_support( 'custom-background', 'default-attachment' ) ); - if ( ! in_array( $attachment, array( 'fixed', 'scroll' ) ) ) + + if ( 'fixed' !== $attachment ) { $attachment = 'scroll'; + } + $attachment = " background-attachment: $attachment;"; - $style .= $image . $repeat . $position . $attachment; + $style .= $image . $position . $size . $repeat . $attachment; } ?> + 'custom_css', + 'post_status' => get_post_stati(), + 'name' => sanitize_title( $stylesheet ), + 'posts_per_page' => 1, + 'no_found_rows' => true, + 'cache_results' => true, + 'update_post_meta_cache' => false, + 'update_term_meta_cache' => false, + ); + + $post = null; + if ( get_stylesheet() === $stylesheet ) { + $post_id = get_theme_mod( 'custom_css_post_id' ); + + if ( $post_id > 0 && get_post( $post_id ) ) { + $post = get_post( $post_id ); + } else { + $query = new WP_Query( $custom_css_query_vars ); + $post = $query->post; + /* + * Cache the lookup. See WP_Customize_Custom_CSS_Setting::update(). + * @todo This should get cleared if a custom_css post is added/removed. + */ + if ( $post ) { + set_theme_mod( 'custom_css_post_id', $post->ID ); + } elseif ( -1 !== $post_id ) { + set_theme_mod( 'custom_css_post_id', -1 ); + } + } + } else { + $query = new WP_Query( $custom_css_query_vars ); + $post = $query->post; + } + + return $post; +} + +/** + * Fetch the saved Custom CSS content for rendering. + * + * @since 4.7.0 + * @access public + * + * @param string $stylesheet Optional. A theme object stylesheet name. Defaults to the current theme. + * @return string The Custom CSS Post content. + */ +function wp_get_custom_css( $stylesheet = '' ) { + $css = ''; + + if ( empty( $stylesheet ) ) { + $stylesheet = get_stylesheet(); + } + + $post = wp_get_custom_css_post( $stylesheet ); + if ( $post ) { + $css = $post->post_content; + } + + /** + * Modify the Custom CSS Output into the . + * + * @since 4.7.0 + * + * @param string $css CSS pulled in from the Custom CSS CPT. + * @param string $stylesheet The theme stylesheet name. + */ + $css = apply_filters( 'wp_get_custom_css', $css, $stylesheet ); + + return $css; +} + +/** + * Update the `custom_css` post for a given theme. + * + * Inserts a `custom_css` post when one doesn't yet exist. + * + * @since 4.7.0 + * @access public + * + * @param string $css CSS, stored in `post_content`. + * @param array $args { + * Args. + * + * @type string $preprocessed Pre-processed CSS, stored in `post_content_filtered`. Normally empty string. Optional. + * @type string $stylesheet Stylesheet (child theme) to update. Optional, defaults to current theme/stylesheet. + * } + * @return WP_Post|WP_Error Post on success, error on failure. + */ +function wp_update_custom_css_post( $css, $args = array() ) { + $args = wp_parse_args( $args, array( + 'preprocessed' => '', + 'stylesheet' => get_stylesheet(), + ) ); + + $data = array( + 'css' => $css, + 'preprocessed' => $args['preprocessed'], + ); + + /** + * Filters the `css` (`post_content`) and `preprocessed` (`post_content_filtered`) args for a `custom_css` post being updated. + * + * This filter can be used by plugin that offer CSS pre-processors, to store the original + * pre-processed CSS in `post_content_filtered` and then store processed CSS in `post_content`. + * When used in this way, the `post_content_filtered` should be supplied as the setting value + * instead of `post_content` via a the `customize_value_custom_css` filter, for example: + * + * + * add_filter( 'customize_value_custom_css', function( $value, $setting ) { + * $post = wp_get_custom_css_post( $setting->stylesheet ); + * if ( $post && ! empty( $post->post_content_filtered ) ) { + * $css = $post->post_content_filtered; + * } + * return $css; + * }, 10, 2 ); + * + * + * @since 4.7.0 + * @param array $data { + * Custom CSS data. + * + * @type string $css CSS stored in `post_content`. + * @type string $preprocessed Pre-processed CSS stored in `post_content_filtered`. Normally empty string. + * } + * @param array $args { + * The args passed into `wp_update_custom_css_post()` merged with defaults. + * + * @type string $css The original CSS passed in to be updated. + * @type string $preprocessed The original preprocessed CSS passed in to be updated. + * @type string $stylesheet The stylesheet (theme) being updated. + * } + */ + $data = apply_filters( 'update_custom_css_data', $data, array_merge( $args, compact( 'css' ) ) ); + + $post_data = array( + 'post_title' => $args['stylesheet'], + 'post_name' => sanitize_title( $args['stylesheet'] ), + 'post_type' => 'custom_css', + 'post_status' => 'publish', + 'post_content' => $data['css'], + 'post_content_filtered' => $data['preprocessed'], + ); + + // Update post if it already exists, otherwise create a new one. + $post = wp_get_custom_css_post( $args['stylesheet'] ); + if ( $post ) { + $post_data['ID'] = $post->ID; + $r = wp_update_post( wp_slash( $post_data ), true ); + } else { + $r = wp_insert_post( wp_slash( $post_data ), true ); + + // Trigger creation of a revision. This should be removed once #30854 is resolved. + if ( ! is_wp_error( $r ) && 0 === count( wp_get_post_revisions( $r ) ) ) { + wp_save_post_revision( $r ); + } + } + + if ( is_wp_error( $r ) ) { + return $r; + } + return get_post( $r ); +} + /** * Add callback for custom TinyMCE editor stylesheets. * @@ -1513,6 +1912,271 @@ function get_editor_stylesheets() { return apply_filters( 'editor_stylesheets', $stylesheets ); } +/** + * Expand a theme's starter content configuration using core-provided data. + * + * @since 4.7.0 + * + * @return array Array of starter content. + */ +function get_theme_starter_content() { + $theme_support = get_theme_support( 'starter-content' ); + if ( is_array( $theme_support ) && ! empty( $theme_support[0] ) && is_array( $theme_support[0] ) ) { + $config = $theme_support[0]; + } else { + $config = array(); + } + + $core_content = array( + 'widgets' => array( + 'text_business_info' => array( 'text', array( + 'title' => _x( 'Find Us', 'Theme starter content' ), + 'text' => join( '', array( + '

                      ' . _x( 'Address', 'Theme starter content' ) . '
                      ', + _x( '123 Main Street', 'Theme starter content' ) . '
                      ' . _x( 'New York, NY 10001', 'Theme starter content' ) . '

                      ', + '

                      ' . _x( 'Hours', 'Theme starter content' ) . '
                      ', + _x( 'Monday—Friday: 9:00AM–5:00PM', 'Theme starter content' ) . '
                      ' . _x( 'Saturday & Sunday: 11:00AM–3:00PM', 'Theme starter content' ) . '

                      ' + ) ), + ) ), + 'text_about' => array( 'text', array( + 'title' => _x( 'About This Site', 'Theme starter content' ), + 'text' => _x( 'This may be a good place to introduce yourself and your site or include some credits.', 'Theme starter content' ), + ) ), + 'archives' => array( 'archives', array( + 'title' => _x( 'Archives', 'Theme starter content' ), + ) ), + 'calendar' => array( 'calendar', array( + 'title' => _x( 'Calendar', 'Theme starter content' ), + ) ), + 'categories' => array( 'categories', array( + 'title' => _x( 'Categories', 'Theme starter content' ), + ) ), + 'meta' => array( 'meta', array( + 'title' => _x( 'Meta', 'Theme starter content' ), + ) ), + 'recent-comments' => array( 'recent-comments', array( + 'title' => _x( 'Recent Comments', 'Theme starter content' ), + ) ), + 'recent-posts' => array( 'recent-posts', array( + 'title' => _x( 'Recent Posts', 'Theme starter content' ), + ) ), + 'search' => array( 'search', array( + 'title' => _x( 'Search', 'Theme starter content' ), + ) ), + ), + 'nav_menus' => array( + 'page_home' => array( + 'type' => 'post_type', + 'object' => 'page', + 'object_id' => '{{home}}', + ), + 'page_about' => array( + 'type' => 'post_type', + 'object' => 'page', + 'object_id' => '{{about}}', + ), + 'page_blog' => array( + 'type' => 'post_type', + 'object' => 'page', + 'object_id' => '{{blog}}', + ), + 'page_news' => array( + 'type' => 'post_type', + 'object' => 'page', + 'object_id' => '{{news}}', + ), + 'page_contact' => array( + 'type' => 'post_type', + 'object' => 'page', + 'object_id' => '{{contact}}', + ), + + 'link_email' => array( + 'title' => _x( 'Email', 'Theme starter content' ), + 'url' => 'mailto:wordpress@example.com', + ), + 'link_facebook' => array( + 'title' => _x( 'Facebook', 'Theme starter content' ), + 'url' => 'https://www.facebook.com/wordpress', + ), + 'link_foursquare' => array( + 'title' => _x( 'Foursquare', 'Theme starter content' ), + 'url' => 'https://foursquare.com/', + ), + 'link_github' => array( + 'title' => _x( 'GitHub', 'Theme starter content' ), + 'url' => 'https://github.com/wordpress/', + ), + 'link_instagram' => array( + 'title' => _x( 'Instagram', 'Theme starter content' ), + 'url' => 'https://www.instagram.com/explore/tags/wordcamp/', + ), + 'link_linkedin' => array( + 'title' => _x( 'LinkedIn', 'Theme starter content' ), + 'url' => 'https://www.linkedin.com/company/1089783', + ), + 'link_pinterest' => array( + 'title' => _x( 'Pinterest', 'Theme starter content' ), + 'url' => 'https://www.pinterest.com/', + ), + 'link_twitter' => array( + 'title' => _x( 'Twitter', 'Theme starter content' ), + 'url' => 'https://twitter.com/wordpress', + ), + 'link_yelp' => array( + 'title' => _x( 'Yelp', 'Theme starter content' ), + 'url' => 'https://www.yelp.com', + ), + 'link_youtube' => array( + 'title' => _x( 'YouTube', 'Theme starter content' ), + 'url' => 'https://www.youtube.com/channel/UCdof4Ju7amm1chz1gi1T2ZA', + ), + ), + 'posts' => array( + 'home' => array( + 'post_type' => 'page', + 'post_title' => _x( 'Home', 'Theme starter content' ), + 'post_content' => _x( 'Welcome to your site! This is your homepage, which is what most visitors will see when they come to your site for the first time.', 'Theme starter content' ), + ), + 'about' => array( + 'post_type' => 'page', + 'post_title' => _x( 'About', 'Theme starter content' ), + 'post_content' => _x( 'You might be an artist who would like to introduce yourself and your work here or maybe you’re a business with a mission to describe.', 'Theme starter content' ), + ), + 'contact' => array( + 'post_type' => 'page', + 'post_title' => _x( 'Contact', 'Theme starter content' ), + 'post_content' => _x( 'This is a page with some basic contact information, such as an address and phone number. You might also try a plugin to add a contact form.', 'Theme starter content' ), + ), + 'blog' => array( + 'post_type' => 'page', + 'post_title' => _x( 'Blog', 'Theme starter content' ), + ), + 'news' => array( + 'post_type' => 'page', + 'post_title' => _x( 'News', 'Theme starter content' ), + ), + + 'homepage-section' => array( + 'post_type' => 'page', + 'post_title' => _x( 'A homepage section', 'Theme starter content' ), + 'post_content' => _x( 'This is an example of a homepage section. Homepage sections can be any page other than the homepage itself, including the page that shows your latest blog posts.', 'Theme starter content' ), + ), + ), + ); + + $content = array(); + + foreach ( $config as $type => $args ) { + switch( $type ) { + // Use options and theme_mods as-is. + case 'options' : + case 'theme_mods' : + $content[ $type ] = $config[ $type ]; + break; + + // Widgets are grouped into sidebars. + case 'widgets' : + foreach ( $config[ $type ] as $sidebar_id => $widgets ) { + foreach ( $widgets as $id => $widget ) { + if ( is_array( $widget ) ) { + + // Item extends core content. + if ( ! empty( $core_content[ $type ][ $id ] ) ) { + $widget = array( + $core_content[ $type ][ $id ][0], + array_merge( $core_content[ $type ][ $id ][1], $widget ), + ); + } + + $content[ $type ][ $sidebar_id ][] = $widget; + } elseif ( is_string( $widget ) && ! empty( $core_content[ $type ] ) && ! empty( $core_content[ $type ][ $widget ] ) ) { + $content[ $type ][ $sidebar_id ][] = $core_content[ $type ][ $widget ]; + } + } + } + break; + + // And nav menu items are grouped into nav menus. + case 'nav_menus' : + foreach ( $config[ $type ] as $nav_menu_location => $nav_menu ) { + + // Ensure nav menus get a name. + if ( empty( $nav_menu['name'] ) ) { + $nav_menu['name'] = $nav_menu_location; + } + + $content[ $type ][ $nav_menu_location ]['name'] = $nav_menu['name']; + + foreach ( $nav_menu['items'] as $id => $nav_menu_item ) { + if ( is_array( $nav_menu_item ) ) { + + // Item extends core content. + if ( ! empty( $core_content[ $type ][ $id ] ) ) { + $nav_menu_item = array_merge( $core_content[ $type ][ $id ], $nav_menu_item ); + } + + $content[ $type ][ $nav_menu_location ]['items'][] = $nav_menu_item; + } elseif ( is_string( $nav_menu_item ) && ! empty( $core_content[ $type ] ) && ! empty( $core_content[ $type ][ $nav_menu_item ] ) ) { + $content[ $type ][ $nav_menu_location ]['items'][] = $core_content[ $type ][ $nav_menu_item ]; + } + } + } + break; + + // Attachments are posts but have special treatment. + case 'attachments' : + foreach ( $config[ $type ] as $id => $item ) { + if ( ! empty( $item['file'] ) ) { + $content[ $type ][ $id ] = $item; + } + } + break; + + // All that's left now are posts (besides attachments). Not a default case for the sake of clarity and future work. + case 'posts' : + foreach ( $config[ $type ] as $id => $item ) { + if ( is_array( $item ) ) { + + // Item extends core content. + if ( ! empty( $core_content[ $type ][ $id ] ) ) { + $item = array_merge( $core_content[ $type ][ $id ], $item ); + } + + // Enforce a subset of fields. + $content[ $type ][ $id ] = wp_array_slice_assoc( + $item, + array( + 'post_type', + 'post_title', + 'post_excerpt', + 'post_name', + 'post_content', + 'menu_order', + 'comment_status', + 'thumbnail', + 'template', + ) + ); + } elseif ( is_string( $item ) && ! empty( $core_content[ $type ][ $item ] ) ) { + $content[ $type ][ $item ] = $core_content[ $type ][ $item ]; + } + } + break; + } + } + + /** + * Filters the expanded array of starter content. + * + * @since 4.7.0 + * + * @param array $content Array of starter content. + * @param array $config Array of theme-specific starter content configuration. + */ + return apply_filters( 'get_theme_starter_content', $content, $config ); +} + /** * Registers theme support for a given feature. * @@ -1525,12 +2189,13 @@ function get_editor_stylesheets() { * @since 3.9.0 The `html5` feature now also accepts 'gallery' and 'caption' * @since 4.1.0 The `title-tag` feature was added * @since 4.5.0 The `customize-selective-refresh-widgets` feature was added + * @since 4.7.0 The `starter-content` feature was added * * @global array $_wp_theme_features * * @param string $feature The feature being added. Likely core values include 'post-formats', * 'post-thumbnails', 'html5', 'custom-logo', 'custom-header-uploads', - * 'custom-header', 'custom-background', 'title-tag', etc. + * 'custom-header', 'custom-background', 'title-tag', 'starter-content', etc. * @param mixed $args,... Optional extra arguments to pass along with certain features. * @return void|bool False on failure, void otherwise. */ @@ -1623,6 +2288,8 @@ function add_theme_support( $feature ) { 'wp-head-callback' => '', 'admin-head-callback' => '', 'admin-preview-callback' => '', + 'video' => false, + 'video-active-callback' => 'is_front_page', ); $jit = isset( $args[0]['__jit'] ); @@ -1689,8 +2356,11 @@ function add_theme_support( $feature ) { $defaults = array( 'default-image' => '', - 'default-repeat' => 'repeat', + 'default-preset' => 'default', 'default-position-x' => 'left', + 'default-position-y' => 'top', + 'default-size' => 'auto', + 'default-repeat' => 'repeat', 'default-attachment' => 'scroll', 'default-color' => '', 'wp-head-callback' => '_custom_background_cb', @@ -1881,10 +2551,13 @@ function _remove_theme_support( $feature ) { if ( ! did_action( 'wp_loaded' ) ) break; $support = get_theme_support( 'custom-header' ); - if ( $support[0]['wp-head-callback'] ) + if ( isset( $support[0]['wp-head-callback'] ) ) { remove_action( 'wp_head', $support[0]['wp-head-callback'] ); - remove_action( 'admin_menu', array( $GLOBALS['custom_image_header'], 'init' ) ); - unset( $GLOBALS['custom_image_header'] ); + } + if ( isset( $GLOBALS['custom_image_header'] ) ) { + remove_action( 'admin_menu', array( $GLOBALS['custom_image_header'], 'init' ) ); + unset( $GLOBALS['custom_image_header'] ); + } break; case 'custom-background' : @@ -1958,7 +2631,8 @@ function current_theme_supports( $feature ) { * * The dynamic portion of the hook name, `$feature`, refers to the specific theme * feature. Possible values include 'post-formats', 'post-thumbnails', 'custom-background', - * 'custom-header', 'menus', 'automatic-feed-links', 'html5', and `customize-selective-refresh-widgets`. + * 'custom-header', 'menus', 'automatic-feed-links', 'html5', + * 'starter-content', and 'customize-selective-refresh-widgets'. * * @since 3.4.0 * @@ -2066,9 +2740,9 @@ function check_theme_switched() { * Includes and instantiates the WP_Customize_Manager class. * * Loads the Customizer at plugins_loaded when accessing the customize.php admin - * page or when any request includes a wp_customize=on param, either as a GET - * query var or as POST data. This param is a signal for whether to bootstrap - * the Customizer when WordPress is loading, especially in the Customizer preview + * page or when any request includes a wp_customize=on param or a customize_changeset + * param (a UUID). This param is a signal for whether to bootstrap the Customizer when + * WordPress is loading, especially in the Customizer preview * or when making Customizer Ajax requests for widgets or menus. * * @since 3.4.0 @@ -2076,14 +2750,180 @@ function check_theme_switched() { * @global WP_Customize_Manager $wp_customize */ function _wp_customize_include() { - if ( ! ( ( isset( $_REQUEST['wp_customize'] ) && 'on' == $_REQUEST['wp_customize'] ) - || ( is_admin() && 'customize.php' == basename( $_SERVER['PHP_SELF'] ) ) - ) ) { + + $is_customize_admin_page = ( is_admin() && 'customize.php' == basename( $_SERVER['PHP_SELF'] ) ); + $should_include = ( + $is_customize_admin_page + || + ( isset( $_REQUEST['wp_customize'] ) && 'on' == $_REQUEST['wp_customize'] ) + || + ( ! empty( $_GET['customize_changeset_uuid'] ) || ! empty( $_POST['customize_changeset_uuid'] ) ) + ); + + if ( ! $should_include ) { return; } + /* + * Note that wp_unslash() is not being used on the input vars because it is + * called before wp_magic_quotes() gets called. Besides this fact, none of + * the values should contain any characters needing slashes anyway. + */ + $keys = array( 'changeset_uuid', 'customize_changeset_uuid', 'customize_theme', 'theme', 'customize_messenger_channel' ); + $input_vars = array_merge( + wp_array_slice_assoc( $_GET, $keys ), + wp_array_slice_assoc( $_POST, $keys ) + ); + + $theme = null; + $changeset_uuid = null; + $messenger_channel = null; + + if ( $is_customize_admin_page && isset( $input_vars['changeset_uuid'] ) ) { + $changeset_uuid = sanitize_key( $input_vars['changeset_uuid'] ); + } elseif ( ! empty( $input_vars['customize_changeset_uuid'] ) ) { + $changeset_uuid = sanitize_key( $input_vars['customize_changeset_uuid'] ); + } + + // Note that theme will be sanitized via WP_Theme. + if ( $is_customize_admin_page && isset( $input_vars['theme'] ) ) { + $theme = $input_vars['theme']; + } elseif ( isset( $input_vars['customize_theme'] ) ) { + $theme = $input_vars['customize_theme']; + } + if ( isset( $input_vars['customize_messenger_channel'] ) ) { + $messenger_channel = sanitize_key( $input_vars['customize_messenger_channel'] ); + } + require_once ABSPATH . WPINC . '/class-wp-customize-manager.php'; - $GLOBALS['wp_customize'] = new WP_Customize_Manager(); + $GLOBALS['wp_customize'] = new WP_Customize_Manager( compact( 'changeset_uuid', 'theme', 'messenger_channel' ) ); +} + +/** + * Publish a snapshot's changes. + * + * @param string $new_status New post status. + * @param string $old_status Old post status. + * @param WP_Post $changeset_post Changeset post object. + */ +function _wp_customize_publish_changeset( $new_status, $old_status, $changeset_post ) { + global $wp_customize, $wpdb; + + $is_publishing_changeset = ( + 'customize_changeset' === $changeset_post->post_type + && + 'publish' === $new_status + && + 'publish' !== $old_status + ); + if ( ! $is_publishing_changeset ) { + return; + } + + if ( empty( $wp_customize ) ) { + require_once ABSPATH . WPINC . '/class-wp-customize-manager.php'; + $wp_customize = new WP_Customize_Manager( array( 'changeset_uuid' => $changeset_post->post_name ) ); + } + + if ( ! did_action( 'customize_register' ) ) { + /* + * When running from CLI or Cron, the customize_register action will need + * to be triggered in order for core, themes, and plugins to register their + * settings. Normally core will add_action( 'customize_register' ) at + * priority 10 to register the core settings, and if any themes/plugins + * also add_action( 'customize_register' ) at the same priority, they + * will have a $wp_customize with those settings registered since they + * call add_action() afterward, normally. However, when manually doing + * the customize_register action after the setup_theme, then the order + * will be reversed for two actions added at priority 10, resulting in + * the core settings no longer being available as expected to themes/plugins. + * So the following manually calls the method that registers the core + * settings up front before doing the action. + */ + remove_action( 'customize_register', array( $wp_customize, 'register_controls' ) ); + $wp_customize->register_controls(); + + /** This filter is documented in /wp-includes/class-wp-customize-manager.php */ + do_action( 'customize_register', $wp_customize ); + } + $wp_customize->_publish_changeset_values( $changeset_post->ID ) ; + + /* + * Trash the changeset post if revisions are not enabled. Unpublished + * changesets by default get garbage collected due to the auto-draft status. + * When a changeset post is published, however, it would no longer get cleaned + * out. Ths is a problem when the changeset posts are never displayed anywhere, + * since they would just be endlessly piling up. So here we use the revisions + * feature to indicate whether or not a published changeset should get trashed + * and thus garbage collected. + */ + if ( ! wp_revisions_enabled( $changeset_post ) ) { + $post = $changeset_post; + $post_id = $changeset_post->ID; + + /* + * The following re-formulates the logic from wp_trash_post() as done in + * wp_publish_post(). The reason for bypassing wp_trash_post() is that it + * will mutate the the post_content and the post_name when they should be + * untouched. + */ + if ( ! EMPTY_TRASH_DAYS ) { + wp_delete_post( $post_id, true ); + } else { + /** This action is documented in wp-includes/post.php */ + do_action( 'wp_trash_post', $post_id ); + + add_post_meta( $post_id, '_wp_trash_meta_status', $post->post_status ); + add_post_meta( $post_id, '_wp_trash_meta_time', time() ); + + $old_status = $post->post_status; + $new_status = 'trash'; + $wpdb->update( $wpdb->posts, array( 'post_status' => $new_status ), array( 'ID' => $post->ID ) ); + clean_post_cache( $post->ID ); + + $post->post_status = $new_status; + wp_transition_post_status( $new_status, $old_status, $post ); + + /** This action is documented in wp-includes/post.php */ + do_action( 'edit_post', $post->ID, $post ); + + /** This action is documented in wp-includes/post.php */ + do_action( "save_post_{$post->post_type}", $post->ID, $post, true ); + + /** This action is documented in wp-includes/post.php */ + do_action( 'save_post', $post->ID, $post, true ); + + /** This action is documented in wp-includes/post.php */ + do_action( 'wp_insert_post', $post->ID, $post, true ); + + /** This action is documented in wp-includes/post.php */ + do_action( 'trashed_post', $post_id ); + } + } +} + +/** + * Filters changeset post data upon insert to ensure post_name is intact. + * + * This is needed to prevent the post_name from being dropped when the post is + * transitioned into pending status by a contributor. + * + * @since 4.7.0 + * @see wp_insert_post() + * + * @param array $post_data An array of slashed post data. + * @param array $supplied_post_data An array of sanitized, but otherwise unmodified post data. + * @returns array Filtered data. + */ +function _wp_customize_changeset_filter_insert_post_data( $post_data, $supplied_post_data ) { + if ( isset( $post_data['post_type'] ) && 'customize_changeset' === $post_data['post_type'] ) { + + // Prevent post_name from being dropped, such as when contributor saves a changeset post as pending. + if ( empty( $post_data['post_name'] ) && ! empty( $supplied_post_data['post_name'] ) ) { + $post_data['post_name'] = $supplied_post_data['post_name']; + } + } + return $post_data; } /** @@ -2151,6 +2991,7 @@ function wp_customize_url( $stylesheet = null ) { * to the body tag by default. * * @since 3.4.0 + * @since 4.7.0 Support for IE8 and below is explicitly removed via conditional comments. */ function wp_customize_support_script() { $admin_origin = parse_url( admin_url() ); @@ -2158,20 +2999,28 @@ function wp_customize_support_script() { $cross_domain = ( strtolower( $admin_origin[ 'host' ] ) != strtolower( $home_origin[ 'host' ] ) ); ?> - + b[c] = b[c].replace( rcs, ' ' ); + // The customizer requires postMessage and CORS (if the site is cross domain) + b[c] += ( window.postMessage && request ? ' ' : ' no-' ) + cs; + }()); + + 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 ); + trigger_error( + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ) . ' ' . __( '(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 + ); $response = wp_remote_post( $http_url, $options ); } @@ -303,7 +310,14 @@ function wp_update_plugins( $extra_stats = array() ) { $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { - 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 ); + trigger_error( + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ) . ' ' . __( '(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 + ); $raw_response = wp_remote_post( $http_url, $options ); } @@ -476,7 +490,14 @@ function wp_update_themes( $extra_stats = array() ) { $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { - 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 ); + trigger_error( + sprintf( + /* translators: %s: support forums URL */ + __( '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.' ), + __( 'https://wordpress.org/support/' ) + ) . ' ' . __( '(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 + ); $raw_response = wp_remote_post( $http_url, $options ); } @@ -566,14 +587,21 @@ function wp_get_update_data() { $counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations']; $titles = array(); - if ( $counts['wordpress'] ) + if ( $counts['wordpress'] ) { + /* translators: 1: Number of updates available to WordPress */ $titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] ); - if ( $counts['plugins'] ) + } + if ( $counts['plugins'] ) { + /* translators: 1: Number of updates available to plugins */ $titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] ); - if ( $counts['themes'] ) + } + if ( $counts['themes'] ) { + /* translators: 1: Number of updates available to themes */ $titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] ); - if ( $counts['translations'] ) + } + if ( $counts['translations'] ) { $titles['translations'] = __( 'Translation Updates' ); + } $update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : ''; @@ -678,7 +706,7 @@ function wp_clean_update_cache() { delete_site_transient( 'update_core' ); } -if ( ( ! is_main_site() && ! is_network_admin() ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { +if ( ( ! is_main_site() && ! is_network_admin() ) || wp_doing_ajax() ) { return; } diff --git a/wp/wp-includes/user.php b/wp/wp-includes/user.php index 6d473ef4..02860638 100644 --- a/wp/wp-includes/user.php +++ b/wp/wp-includes/user.php @@ -559,24 +559,25 @@ function get_users( $args = array() ) { } /** - * Get the blogs a user belongs to. + * Get the sites a user belongs to. * * @since 3.0.0 + * @since 4.7.0 Converted to use get_sites(). * * @global wpdb $wpdb WordPress database abstraction object. * * @param int $user_id User ID - * @param bool $all Whether to retrieve all blogs, or only blogs that are not + * @param bool $all Whether to retrieve all sites, or only sites that are not * marked as deleted, archived, or spam. - * @return array A list of the user's blogs. An empty array if the user doesn't exist - * or belongs to no blogs. + * @return array A list of the user's sites. An empty array if the user doesn't exist + * or belongs to no sites. */ function get_blogs_of_user( $user_id, $all = false ) { global $wpdb; $user_id = (int) $user_id; - // Logged out users can't have blogs + // Logged out users can't have sites if ( empty( $user_id ) ) return array(); @@ -588,15 +589,15 @@ function get_blogs_of_user( $user_id, $all = false ) { * * @since 4.6.0 * - * @param null|array $blogs An array of WP_Site objects of which the user is a member. + * @param null|array $sites An array of site objects of which the user is a member. * @param int $user_id User ID. * @param bool $all Whether the returned array should contain all sites, including * those marked 'deleted', 'archived', or 'spam'. Default false. */ - $blogs = apply_filters( 'pre_get_blogs_of_user', null, $user_id, $all ); + $sites = apply_filters( 'pre_get_blogs_of_user', null, $user_id, $all ); - if ( null !== $blogs ) { - return $blogs; + if ( null !== $sites ) { + return $sites; } $keys = get_user_meta( $user_id ); @@ -604,38 +605,24 @@ function get_blogs_of_user( $user_id, $all = false ) { return array(); if ( ! is_multisite() ) { - $blog_id = get_current_blog_id(); - $blogs = array( $blog_id => new stdClass ); - $blogs[ $blog_id ]->userblog_id = $blog_id; - $blogs[ $blog_id ]->blogname = get_option('blogname'); - $blogs[ $blog_id ]->domain = ''; - $blogs[ $blog_id ]->path = ''; - $blogs[ $blog_id ]->site_id = 1; - $blogs[ $blog_id ]->siteurl = get_option('siteurl'); - $blogs[ $blog_id ]->archived = 0; - $blogs[ $blog_id ]->spam = 0; - $blogs[ $blog_id ]->deleted = 0; - return $blogs; + $site_id = get_current_blog_id(); + $sites = array( $site_id => new stdClass ); + $sites[ $site_id ]->userblog_id = $site_id; + $sites[ $site_id ]->blogname = get_option('blogname'); + $sites[ $site_id ]->domain = ''; + $sites[ $site_id ]->path = ''; + $sites[ $site_id ]->site_id = 1; + $sites[ $site_id ]->siteurl = get_option('siteurl'); + $sites[ $site_id ]->archived = 0; + $sites[ $site_id ]->spam = 0; + $sites[ $site_id ]->deleted = 0; + return $sites; } - $blogs = array(); + $site_ids = array(); if ( isset( $keys[ $wpdb->base_prefix . 'capabilities' ] ) && defined( 'MULTISITE' ) ) { - $blog = get_blog_details( 1 ); - if ( $blog && isset( $blog->domain ) && ( $all || ( ! $blog->archived && ! $blog->spam && ! $blog->deleted ) ) ) { - $blogs[ 1 ] = (object) array( - 'userblog_id' => 1, - 'blogname' => $blog->blogname, - 'domain' => $blog->domain, - 'path' => $blog->path, - 'site_id' => $blog->site_id, - 'siteurl' => $blog->siteurl, - 'archived' => $blog->archived, - 'mature' => $blog->mature, - 'spam' => $blog->spam, - 'deleted' => $blog->deleted, - ); - } + $site_ids[] = 1; unset( $keys[ $wpdb->base_prefix . 'capabilities' ] ); } @@ -646,39 +633,55 @@ function get_blogs_of_user( $user_id, $all = false ) { continue; if ( $wpdb->base_prefix && 0 !== strpos( $key, $wpdb->base_prefix ) ) continue; - $blog_id = str_replace( array( $wpdb->base_prefix, '_capabilities' ), '', $key ); - if ( ! is_numeric( $blog_id ) ) + $site_id = str_replace( array( $wpdb->base_prefix, '_capabilities' ), '', $key ); + if ( ! is_numeric( $site_id ) ) continue; - $blog_id = (int) $blog_id; - $blog = get_blog_details( $blog_id ); - if ( $blog && isset( $blog->domain ) && ( $all || ( ! $blog->archived && ! $blog->spam && ! $blog->deleted ) ) ) { - $blogs[ $blog_id ] = (object) array( - 'userblog_id' => $blog_id, - 'blogname' => $blog->blogname, - 'domain' => $blog->domain, - 'path' => $blog->path, - 'site_id' => $blog->site_id, - 'siteurl' => $blog->siteurl, - 'archived' => $blog->archived, - 'mature' => $blog->mature, - 'spam' => $blog->spam, - 'deleted' => $blog->deleted, + $site_ids[] = (int) $site_id; + } + + $sites = array(); + + if ( ! empty( $site_ids ) ) { + $args = array( + 'number' => '', + 'site__in' => $site_ids, + ); + if ( ! $all ) { + $args['archived'] = 0; + $args['spam'] = 0; + $args['deleted'] = 0; + } + + $_sites = get_sites( $args ); + + foreach ( $_sites as $site ) { + $sites[ $site->id ] = (object) array( + 'userblog_id' => $site->id, + 'blogname' => $site->blogname, + 'domain' => $site->domain, + 'path' => $site->path, + 'site_id' => $site->network_id, + 'siteurl' => $site->siteurl, + 'archived' => $site->archived, + 'mature' => $site->mature, + 'spam' => $site->spam, + 'deleted' => $site->deleted, ); } } /** - * Filters the list of blogs a user belongs to. + * Filters the list of sites a user belongs to. * * @since MU * - * @param array $blogs An array of blog objects belonging to the user. + * @param array $sites An array of site objects belonging to the user. * @param int $user_id User ID. - * @param bool $all Whether the returned blogs array should contain all blogs, including + * @param bool $all Whether the returned sites array should contain all sites, including * those marked 'deleted', 'archived', or 'spam'. Default false. */ - return apply_filters( 'get_blogs_of_user', $blogs, $user_id, $all ); + return apply_filters( 'get_blogs_of_user', $sites, $user_id, $all ); } /** @@ -700,7 +703,7 @@ function is_user_member_of_blog( $user_id = 0, $blog_id = 0 ) { $user_id = get_current_user_id(); } - // Technically not needed, but does save calls to get_blog_details and get_user_meta + // Technically not needed, but does save calls to get_site and get_user_meta // in the event that the function is called when a user isn't logged in if ( empty( $user_id ) ) { return false; @@ -719,7 +722,7 @@ function is_user_member_of_blog( $user_id = 0, $blog_id = 0 ) { $blog_id = get_current_blog_id(); } - $blog = get_blog_details( $blog_id ); + $blog = get_site( $blog_id ); if ( ! $blog || ! isset( $blog->domain ) || $blog->archived || $blog->spam || $blog->deleted ) { return false; @@ -964,8 +967,7 @@ function setup_userdata($for_user_id = '') { * * @since 2.3.0 * @since 4.5.0 Added the 'display_name_with_login' value for 'show'. - * - * @global int $blog_id + * @since 4.7.0 Added the `$role`, `$role__in`, and `$role__not_in` parameters. * * @param array|string $args { * Optional. Array or string of arguments to generate a drop-down of users. @@ -1006,6 +1008,13 @@ function setup_userdata($for_user_id = '') { * @type int $blog_id ID of blog (Multisite only). Default is ID of the current blog. * @type string $who Which type of users to query. Accepts only an empty string or * 'authors'. Default empty. + * @type string|array $role An array or a comma-separated list of role names that users must + * match to be included in results. Note that this is an inclusive + * list: users must match *each* role. Default empty. + * @type array $role__in An array of role names. Matched users must have at least one of + * these roles. Default empty array. + * @type array $role__not_in An array of role names to exclude. Users matching one or more of + * these roles will not be included in results. Default empty array. * } * @return string String of HTML content. */ @@ -1016,15 +1025,18 @@ function wp_dropdown_users( $args = '' ) { 'include' => '', 'exclude' => '', 'multi' => 0, 'show' => 'display_name', 'echo' => 1, 'selected' => 0, 'name' => 'user', 'class' => '', 'id' => '', - 'blog_id' => $GLOBALS['blog_id'], 'who' => '', 'include_selected' => false, - 'option_none_value' => -1 + 'blog_id' => get_current_blog_id(), 'who' => '', 'include_selected' => false, + 'option_none_value' => -1, + 'role' => '', + 'role__in' => array(), + 'role__not_in' => array(), ); $defaults['selected'] = is_author() ? get_query_var( 'author' ) : 0; $r = wp_parse_args( $args, $defaults ); - $query_args = wp_array_slice_assoc( $r, array( 'blog_id', 'include', 'exclude', 'orderby', 'order', 'who' ) ); + $query_args = wp_array_slice_assoc( $r, array( 'blog_id', 'include', 'exclude', 'orderby', 'order', 'who', 'role', 'role__in', 'role__not_in' ) ); $fields = array( 'ID', 'user_login' ); @@ -1042,12 +1054,12 @@ function wp_dropdown_users( $args = '' ) { $option_none_value = $r['option_none_value']; /** - * Filters the query arguments for the user drop-down. + * Filters the query arguments for the list of users in the dropdown. * * @since 4.4.0 * - * @param array $query_args The query arguments for wp_dropdown_users(). - * @param array $r The default arguments for wp_dropdown_users(). + * @param array $query_args The query arguments for get_users(). + * @param array $r The arguments passed to wp_dropdown_users() combined with the defaults. */ $query_args = apply_filters( 'wp_dropdown_users_args', $query_args, $r ); @@ -1346,6 +1358,7 @@ function validate_username( $username ) { * @since 2.0.0 * @since 3.6.0 The `aim`, `jabber`, and `yim` fields were removed as default user contact * methods for new installs. See wp_get_user_contact_methods(). + * @since 4.7.0 The user's locale can be passed to `$userdata`. * * @global wpdb $wpdb WordPress database abstraction object. * @@ -1380,6 +1393,7 @@ function validate_username( $username ) { * @type string|bool $show_admin_bar_front Whether to display the Admin Bar for the user on the * site's front end. Default true. * @type string $role User's role. + * @type string $locale User's locale. Default empty. * } * @return int|WP_Error The newly created user's ID or a WP_Error object if the user could not * be created. @@ -1594,6 +1608,8 @@ function wp_insert_user( $userdata ) { $meta['show_admin_bar_front'] = empty( $userdata['show_admin_bar_front'] ) ? 'true' : $userdata['show_admin_bar_front']; + $meta['locale'] = isset( $userdata['locale'] ) ? $userdata['locale'] : ''; + $user_nicename_check = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_nicename = %s AND user_login != %s LIMIT 1" , $user_nicename, $user_login)); if ( $user_nicename_check ) { @@ -1785,8 +1801,12 @@ function wp_update_user($userdata) { $blog_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ); - if ( ! empty( $send_password_change_email ) ) { + $switched_locale = false; + if ( ! empty( $send_password_change_email ) || ! empty( $send_email_change_email ) ) { + $switched_locale = switch_to_locale( get_user_locale( $user_id ) ); + } + if ( ! empty( $send_password_change_email ) ) { /* translators: Do not translate USERNAME, ADMIN_EMAIL, EMAIL, SITENAME, SITEURL: those are placeholders. */ $pass_change_text = __( 'Hi ###USERNAME###, @@ -1803,6 +1823,7 @@ All at ###SITENAME### $pass_change_email = array( 'to' => $user['user_email'], + /* translators: User password change notification email subject. 1: Site name */ 'subject' => __( '[%s] Notice of Password Change' ), 'message' => $pass_change_text, 'headers' => '', @@ -1858,6 +1879,7 @@ All at ###SITENAME### $email_change_email = array( 'to' => $user['user_email'], + /* translators: User email change notification email subject. 1: Site name */ 'subject' => __( '[%s] Notice of Email Change' ), 'message' => $email_change_text, 'headers' => '', @@ -1894,6 +1916,10 @@ All at ###SITENAME### wp_mail( $email_change_email['to'], sprintf( $email_change_email['subject'], $blog_name ), $email_change_email['message'], $email_change_email['headers'] ); } + + if ( $switched_locale ) { + restore_previous_locale(); + } } // Update the cookies if the password changed. @@ -1953,7 +1979,7 @@ function wp_create_user($username, $password, $email = '') { * @return array List of user keys to be populated in wp_update_user(). */ function _get_additional_user_keys( $user ) { - $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front' ); + $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front', 'locale' ); return array_merge( $keys, array_keys( wp_get_user_contact_methods( $user ) ) ); } @@ -2095,7 +2121,6 @@ function get_password_reset_key( $user ) { // Now insert the key, hashed, into the DB. if ( empty( $wp_hasher ) ) { - require_once ABSPATH . WPINC . '/class-phpass.php'; $wp_hasher = new PasswordHash( 8, true ); } $hashed = time() . ':' . $wp_hasher->HashPassword( $key ); @@ -2140,7 +2165,6 @@ function check_password_reset_key($key, $login) { return new WP_Error('invalid_key', __('Invalid key')); if ( empty( $wp_hasher ) ) { - require_once ABSPATH . WPINC . '/class-phpass.php'; $wp_hasher = new PasswordHash( 8, true ); } @@ -2426,7 +2450,7 @@ function wp_get_users_with_no_role() { } $prefix = $wpdb->get_blog_prefix(); - $regex = implode( '|', wp_roles()->get_names() ); + $regex = implode( '|', array_keys( wp_roles()->get_names() ) ); $regex = preg_replace( '/[^a-zA-Z_\|-]/', '', $regex ); $users = $wpdb->get_col( $wpdb->prepare( " SELECT user_id diff --git a/wp/wp-includes/version.php b/wp/wp-includes/version.php index f52131cc..8c9772c3 100644 --- a/wp/wp-includes/version.php +++ b/wp/wp-includes/version.php @@ -4,21 +4,21 @@ * * @global string $wp_version */ -$wp_version = '4.6.1'; +$wp_version = '4.7'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * * @global int $wp_db_version */ -$wp_db_version = 37965; +$wp_db_version = 38590; /** * Holds the TinyMCE version * * @global string $tinymce_version */ -$tinymce_version = '4401-20160726'; +$tinymce_version = '4403-20160901'; /** * Holds the required PHP version diff --git a/wp/wp-includes/widgets.php b/wp/wp-includes/widgets.php index 3540be9b..30c1fce5 100644 --- a/wp/wp-includes/widgets.php +++ b/wp/wp-includes/widgets.php @@ -1233,7 +1233,7 @@ function wp_widget_rss_output( $rss, $args = array() ) { if ( is_wp_error($rss) ) { if ( is_admin() || current_user_can('manage_options') ) - echo '

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

                      '; + echo '

                      ' . __( 'RSS Error:' ) . ' ' . $rss->get_error_message() . '

                      '; return; } @@ -1342,7 +1342,7 @@ function wp_widget_rss_form( $args, $inputs = null ) { $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'] ) . '

                      '; + echo '

                      ' . __( 'RSS Error:' ) . ' ' . $args['error'] . '

                      '; } $esc_number = esc_attr( $args['number'] ); diff --git a/wp/wp-includes/widgets/class-wp-nav-menu-widget.php b/wp/wp-includes/widgets/class-wp-nav-menu-widget.php index 33684584..d7ad82b7 100644 --- a/wp/wp-includes/widgets/class-wp-nav-menu-widget.php +++ b/wp/wp-includes/widgets/class-wp-nav-menu-widget.php @@ -72,7 +72,7 @@ class WP_Nav_Menu_Widget extends WP_Widget { * @type callable|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 WP_Term $nav_menu Nav menu object for the current menu. * @param array $args Display arguments for the current widget. * @param array $instance Array of settings for the current widget. */ diff --git a/wp/wp-includes/widgets/class-wp-widget-tag-cloud.php b/wp/wp-includes/widgets/class-wp-widget-tag-cloud.php index ae0832ac..b4adabd0 100644 --- a/wp/wp-includes/widgets/class-wp-widget-tag-cloud.php +++ b/wp/wp-includes/widgets/class-wp-widget-tag-cloud.php @@ -61,7 +61,7 @@ class WP_Widget_Tag_Cloud extends WP_Widget { * * @see wp_tag_cloud() * - * @param array $current_taxonomy The taxonomy to use in the tag cloud. Default 'tags'. + * @param array $args Args used for the tag cloud widget. */ $tag_cloud = wp_tag_cloud( apply_filters( 'widget_tag_cloud_args', array( 'taxonomy' => $current_taxonomy, diff --git a/wp/wp-includes/wp-db.php b/wp/wp-includes/wp-db.php index 8ebee4c4..74dedd51 100644 --- a/wp/wp-includes/wp-db.php +++ b/wp/wp-includes/wp-db.php @@ -779,6 +779,11 @@ class wpdb { $charset = 'utf8mb4'; } + if ( 'utf8mb4' === $charset && ! $this->has_cap( 'utf8mb4' ) ) { + $charset = 'utf8'; + $collate = str_replace( 'utf8mb4_', 'utf8_', $collate ); + } + if ( 'utf8mb4' === $charset ) { // _general_ is outdated, so we can upgrade it to _unicode_, instead. if ( ! $collate || 'utf8_general_ci' === $collate ) { @@ -1184,18 +1189,19 @@ class wpdb { * * @uses wpdb::_real_escape() * @since 2.8.0 - * @access private + * @access public * * @param string|array $data * @return string|array escaped */ - function _escape( $data ) { + public function _escape( $data ) { if ( is_array( $data ) ) { foreach ( $data as $k => $v ) { - if ( is_array($v) ) + if ( is_array( $v ) ) { $data[$k] = $this->_escape( $v ); - else + } else { $data[$k] = $this->_real_escape( $v ); + } } } else { $data = $this->_real_escape( $data ); @@ -1268,8 +1274,8 @@ class wpdb { * * Both %d and %s should be left unquoted in the query string. * - * wpdb::prepare( "SELECT * FROM `table` WHERE `column` = %s AND `field` = %d", 'foo', 1337 ) - * wpdb::prepare( "SELECT DATE_FORMAT(`field`, '%%c') FROM `table` WHERE `column` = %s", 'foo' ); + * $wpdb->prepare( "SELECT * FROM `table` WHERE `column` = %s AND `field` = %d", 'foo', 1337 ); + * $wpdb->prepare( "SELECT DATE_FORMAT(`field`, '%%c') FROM `table` WHERE `column` = %s", 'foo' ); * * @link https://secure.php.net/sprintf Description of syntax. * @since 2.3.0 @@ -1358,10 +1364,13 @@ class wpdb { wp_load_translations_early(); - if ( $caller = $this->get_caller() ) + if ( $caller = $this->get_caller() ) { + /* translators: 1: Database error message, 2: SQL query, 3: Name of the calling function */ $error_str = sprintf( __( 'WordPress database error %1$s for query %2$s made by %3$s' ), $str, $this->last_query, $caller ); - else + } else { + /* translators: 1: Database error message, 2: SQL query */ $error_str = sprintf( __( 'WordPress database error %1$s for query %2$s' ), $str, $this->last_query ); + } error_log( $error_str ); @@ -2288,10 +2297,8 @@ class wpdb { * @since 0.71 * * @param string|null $query SQL query. - * @param string $output Optional. one of ARRAY_A | ARRAY_N | OBJECT constants. - * Return an associative array (column => value, ...), - * a numerically indexed array (0 => value, ...) or - * an object ( ->column = value ), respectively. + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * an stdClass object, an associative array, or a numeric array, respectively. Default OBJECT. * @param int $y Optional. Row to return. Indexed from 0. * @return array|object|null|void Database query result in format specified by $output or null on failure */ @@ -3028,17 +3035,23 @@ class wpdb { . '|INSERT(?:\s+LOW_PRIORITY|\s+DELAYED|\s+HIGH_PRIORITY)?(?:\s+IGNORE)?(?:\s+INTO)?' . '|REPLACE(?:\s+LOW_PRIORITY|\s+DELAYED)?(?:\s+INTO)?' . '|UPDATE(?:\s+LOW_PRIORITY)?(?:\s+IGNORE)?' - . '|DELETE(?:\s+LOW_PRIORITY|\s+QUICK|\s+IGNORE)*(?:\s+FROM)?' + . '|DELETE(?:\s+LOW_PRIORITY|\s+QUICK|\s+IGNORE)*(?:.+?FROM)?' . ')\s+((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)/is', $query, $maybe ) ) { return str_replace( '`', '', $maybe[1] ); } - // SHOW TABLE STATUS and SHOW TABLES - if ( preg_match( '/^\s*(?:' - . 'SHOW\s+TABLE\s+STATUS.+(?:LIKE\s+|WHERE\s+Name\s*=\s*)' - . '|SHOW\s+(?:FULL\s+)?TABLES.+(?:LIKE\s+|WHERE\s+Name\s*=\s*)' - . ')\W((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)\W/is', $query, $maybe ) ) { - return str_replace( '`', '', $maybe[1] ); + // SHOW TABLE STATUS and SHOW TABLES WHERE Name = 'wp_posts' + if ( preg_match( '/^\s*SHOW\s+(?:TABLE\s+STATUS|(?:FULL\s+)?TABLES).+WHERE\s+Name\s*=\s*("|\')((?:[0-9a-zA-Z$_.-]|[\xC2-\xDF][\x80-\xBF])+)\\1/is', $query, $maybe ) ) { + return $maybe[2]; + } + + // SHOW TABLE STATUS LIKE and SHOW TABLES LIKE 'wp\_123\_%' + // This quoted LIKE operand seldom holds a full table name. + // It is usually a pattern for matching a prefix so we just + // strip the trailing % and unescape the _ to get 'wp_123_' + // which drop-ins can use for routing these SQL statements. + if ( preg_match( '/^\s*SHOW\s+(?:TABLE\s+STATUS|(?:FULL\s+)?TABLES)\s+(?:WHERE\s+Name\s+)?LIKE\s*("|\')((?:[\\\\0-9a-zA-Z$_.-]|[\xC2-\xDF][\x80-\xBF])+)%?\\1/is', $query, $maybe ) ) { + return str_replace( '\\_', '_', $maybe[2] ); } // Big pattern for the rest of the table-related queries. @@ -3203,8 +3216,10 @@ class wpdb { public function check_database_version() { global $wp_version, $required_mysql_version; // Make sure the server has the required MySQL version - if ( version_compare($this->db_version(), $required_mysql_version, '<') ) + if ( version_compare($this->db_version(), $required_mysql_version, '<') ) { + /* translators: 1: WordPress version number, 2: Minimum required MySQL version number */ return new WP_Error('database_version', sprintf( __( 'ERROR: WordPress %1$s requires MySQL %2$s or higher' ), $wp_version, $required_mysql_version )); + } } /** diff --git a/wp/wp-includes/wp-diff.php b/wp/wp-includes/wp-diff.php index 8eeacddc..8687ed00 100644 --- a/wp/wp-includes/wp-diff.php +++ b/wp/wp-includes/wp-diff.php @@ -10,535 +10,12 @@ if ( ! class_exists( 'Text_Diff', false ) ) { /** Text_Diff class */ - require( dirname(__FILE__).'/Text/Diff.php' ); + require( ABSPATH . WPINC . '/Text/Diff.php' ); /** Text_Diff_Renderer class */ - require( dirname(__FILE__).'/Text/Diff/Renderer.php' ); + require( ABSPATH . WPINC . '/Text/Diff/Renderer.php' ); /** Text_Diff_Renderer_inline class */ - require( dirname(__FILE__).'/Text/Diff/Renderer/inline.php' ); + require( ABSPATH . WPINC . '/Text/Diff/Renderer/inline.php' ); } -/** - * Table renderer to display the diff lines. - * - * @since 2.6.0 - * @uses Text_Diff_Renderer Extends - */ -class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer { - - /** - * @see Text_Diff_Renderer::_leading_context_lines - * @var int - * @access public - * @since 2.6.0 - */ - public $_leading_context_lines = 10000; - - /** - * @see Text_Diff_Renderer::_trailing_context_lines - * @var int - * @access public - * @since 2.6.0 - */ - public $_trailing_context_lines = 10000; - - /** - * Threshold for when a diff should be saved or omitted. - * - * @var float - * @access protected - * @since 2.6.0 - */ - protected $_diff_threshold = 0.6; - - /** - * Inline display helper object name. - * - * @var string - * @access protected - * @since 2.6.0 - */ - protected $inline_diff_renderer = 'WP_Text_Diff_Renderer_inline'; - - /** - * Should we show the split view or not - * - * @var string - * @access protected - * @since 3.6.0 - */ - protected $_show_split_view = true; - - protected $compat_fields = array( '_show_split_view', 'inline_diff_renderer', '_diff_threshold' ); - - /** - * Constructor - Call parent constructor with params array. - * - * This will set class properties based on the key value pairs in the array. - * - * @since 2.6.0 - * - * @param array $params - */ - public function __construct( $params = array() ) { - parent::__construct( $params ); - if ( isset( $params[ 'show_split_view' ] ) ) - $this->_show_split_view = $params[ 'show_split_view' ]; - } - - /** - * @ignore - * - * @param string $header - * @return string - */ - public function _startBlock( $header ) { - return ''; - } - - /** - * @ignore - * - * @param array $lines - * @param string $prefix - */ - public function _lines( $lines, $prefix=' ' ) { - } - - /** - * @ignore - * - * @param string $line HTML-escape the value. - * @return string - */ - public function addedLine( $line ) { - return "{$line}"; - - } - - /** - * @ignore - * - * @param string $line HTML-escape the value. - * @return string - */ - public function deletedLine( $line ) { - return "{$line}"; - } - - /** - * @ignore - * - * @param string $line HTML-escape the value. - * @return string - */ - public function contextLine( $line ) { - return "{$line}"; - } - - /** - * @ignore - * - * @return string - */ - public function emptyLine() { - return ' '; - } - - /** - * @ignore - * @access public - * - * @param array $lines - * @param bool $encode - * @return string - */ - public function _added( $lines, $encode = true ) { - $r = ''; - foreach ($lines as $line) { - if ( $encode ) { - $processed_line = htmlspecialchars( $line ); - - /** - * Contextually filters a diffed line. - * - * Filters TextDiff processing of diffed line. By default, diffs are processed with - * htmlspecialchars. Use this filter to remove or change the processing. Passes a context - * indicating if the line is added, deleted or unchanged. - * - * @since 4.1.0 - * - * @param String $processed_line The processed diffed line. - * @param String $line The unprocessed diffed line. - * @param string null The line context. Values are 'added', 'deleted' or 'unchanged'. - */ - $line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'added' ); - } - - if ( $this->_show_split_view ) { - $r .= '' . $this->emptyLine() . $this->emptyLine() . $this->addedLine( $line ) . "\n"; - } else { - $r .= '' . $this->addedLine( $line ) . "\n"; - } - } - return $r; - } - - /** - * @ignore - * @access public - * - * @param array $lines - * @param bool $encode - * @return string - */ - public function _deleted( $lines, $encode = true ) { - $r = ''; - foreach ($lines as $line) { - if ( $encode ) { - $processed_line = htmlspecialchars( $line ); - - /** This filter is documented in wp-includes/wp-diff.php */ - $line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'deleted' ); - } - if ( $this->_show_split_view ) { - $r .= '' . $this->deletedLine( $line ) . $this->emptyLine() . $this->emptyLine() . "\n"; - } else { - $r .= '' . $this->deletedLine( $line ) . "\n"; - } - - } - return $r; - } - - /** - * @ignore - * @access public - * - * @param array $lines - * @param bool $encode - * @return string - */ - public function _context( $lines, $encode = true ) { - $r = ''; - foreach ($lines as $line) { - if ( $encode ) { - $processed_line = htmlspecialchars( $line ); - - /** This filter is documented in wp-includes/wp-diff.php */ - $line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'unchanged' ); - } - if ( $this->_show_split_view ) { - $r .= '' . $this->contextLine( $line ) . $this->emptyLine() . $this->contextLine( $line ) . "\n"; - } else { - $r .= '' . $this->contextLine( $line ) . "\n"; - } - } - return $r; - } - - /** - * Process changed lines to do word-by-word diffs for extra highlighting. - * - * (TRAC style) sometimes these lines can actually be deleted or added rows. - * We do additional processing to figure that out - * - * @access public - * @since 2.6.0 - * - * @param array $orig - * @param array $final - * @return string - */ - public function _changed( $orig, $final ) { - $r = ''; - - // Does the aforementioned additional processing - // *_matches tell what rows are "the same" in orig and final. Those pairs will be diffed to get word changes - // match is numeric: an index in other column - // match is 'X': no match. It is a new row - // *_rows are column vectors for the orig column and the final column. - // row >= 0: an indix of the $orig or $final array - // row < 0: a blank row for that column - list($orig_matches, $final_matches, $orig_rows, $final_rows) = $this->interleave_changed_lines( $orig, $final ); - - // These will hold the word changes as determined by an inline diff - $orig_diffs = array(); - $final_diffs = array(); - - // Compute word diffs for each matched pair using the inline diff - foreach ( $orig_matches as $o => $f ) { - if ( is_numeric($o) && is_numeric($f) ) { - $text_diff = new Text_Diff( 'auto', array( array($orig[$o]), array($final[$f]) ) ); - $renderer = new $this->inline_diff_renderer; - $diff = $renderer->render( $text_diff ); - - // If they're too different, don't include any or - if ( preg_match_all( '!(.*?|.*?)!', $diff, $diff_matches ) ) { - // length of all text between or - $stripped_matches = strlen(strip_tags( join(' ', $diff_matches[0]) )); - // since we count lengith of text between or (instead of picking just one), - // we double the length of chars not in those tags. - $stripped_diff = strlen(strip_tags( $diff )) * 2 - $stripped_matches; - $diff_ratio = $stripped_matches / $stripped_diff; - if ( $diff_ratio > $this->_diff_threshold ) - continue; // Too different. Don't save diffs. - } - - // Un-inline the diffs by removing del or ins - $orig_diffs[$o] = preg_replace( '|.*?|', '', $diff ); - $final_diffs[$f] = preg_replace( '|.*?|', '', $diff ); - } - } - - foreach ( array_keys($orig_rows) as $row ) { - // Both columns have blanks. Ignore them. - if ( $orig_rows[$row] < 0 && $final_rows[$row] < 0 ) - continue; - - // If we have a word based diff, use it. Otherwise, use the normal line. - if ( isset( $orig_diffs[$orig_rows[$row]] ) ) - $orig_line = $orig_diffs[$orig_rows[$row]]; - elseif ( isset( $orig[$orig_rows[$row]] ) ) - $orig_line = htmlspecialchars($orig[$orig_rows[$row]]); - else - $orig_line = ''; - - if ( isset( $final_diffs[$final_rows[$row]] ) ) - $final_line = $final_diffs[$final_rows[$row]]; - elseif ( isset( $final[$final_rows[$row]] ) ) - $final_line = htmlspecialchars($final[$final_rows[$row]]); - else - $final_line = ''; - - if ( $orig_rows[$row] < 0 ) { // Orig is blank. This is really an added row. - $r .= $this->_added( array($final_line), false ); - } elseif ( $final_rows[$row] < 0 ) { // Final is blank. This is really a deleted row. - $r .= $this->_deleted( array($orig_line), false ); - } else { // A true changed row. - if ( $this->_show_split_view ) { - $r .= '' . $this->deletedLine( $orig_line ) . $this->emptyLine() . $this->addedLine( $final_line ) . "\n"; - } else { - $r .= '' . $this->deletedLine( $orig_line ) . "" . $this->addedLine( $final_line ) . "\n"; - } - } - } - - return $r; - } - - /** - * Takes changed blocks and matches which rows in orig turned into which rows in final. - * - * Returns - * *_matches ( which rows match with which ) - * *_rows ( order of rows in each column interleaved with blank rows as - * necessary ) - * - * @since 2.6.0 - * - * @param array $orig - * @param array $final - * @return array - */ - public function interleave_changed_lines( $orig, $final ) { - - // Contains all pairwise string comparisons. Keys are such that this need only be a one dimensional array. - $matches = array(); - foreach ( array_keys($orig) as $o ) { - foreach ( array_keys($final) as $f ) { - $matches["$o,$f"] = $this->compute_string_distance( $orig[$o], $final[$f] ); - } - } - asort($matches); // Order by string distance. - - $orig_matches = array(); - $final_matches = array(); - - foreach ( $matches as $keys => $difference ) { - list($o, $f) = explode(',', $keys); - $o = (int) $o; - $f = (int) $f; - - // Already have better matches for these guys - if ( isset($orig_matches[$o]) && isset($final_matches[$f]) ) - continue; - - // First match for these guys. Must be best match - if ( !isset($orig_matches[$o]) && !isset($final_matches[$f]) ) { - $orig_matches[$o] = $f; - $final_matches[$f] = $o; - continue; - } - - // Best match of this final is already taken? Must mean this final is a new row. - if ( isset($orig_matches[$o]) ) - $final_matches[$f] = 'x'; - - // Best match of this orig is already taken? Must mean this orig is a deleted row. - elseif ( isset($final_matches[$f]) ) - $orig_matches[$o] = 'x'; - } - - // We read the text in this order - ksort($orig_matches); - ksort($final_matches); - - // Stores rows and blanks for each column. - $orig_rows = $orig_rows_copy = array_keys($orig_matches); - $final_rows = array_keys($final_matches); - - // Interleaves rows with blanks to keep matches aligned. - // We may end up with some extraneous blank rows, but we'll just ignore them later. - foreach ( $orig_rows_copy as $orig_row ) { - $final_pos = array_search($orig_matches[$orig_row], $final_rows, true); - $orig_pos = (int) array_search($orig_row, $orig_rows, true); - - if ( false === $final_pos ) { // This orig is paired with a blank final. - array_splice( $final_rows, $orig_pos, 0, -1 ); - } elseif ( $final_pos < $orig_pos ) { // This orig's match is up a ways. Pad final with blank rows. - $diff_pos = $final_pos - $orig_pos; - while ( $diff_pos < 0 ) - array_splice( $final_rows, $orig_pos, 0, $diff_pos++ ); - } elseif ( $final_pos > $orig_pos ) { // This orig's match is down a ways. Pad orig with blank rows. - $diff_pos = $orig_pos - $final_pos; - while ( $diff_pos < 0 ) - array_splice( $orig_rows, $orig_pos, 0, $diff_pos++ ); - } - } - - // Pad the ends with blank rows if the columns aren't the same length - $diff_count = count($orig_rows) - count($final_rows); - if ( $diff_count < 0 ) { - while ( $diff_count < 0 ) - array_push($orig_rows, $diff_count++); - } elseif ( $diff_count > 0 ) { - $diff_count = -1 * $diff_count; - while ( $diff_count < 0 ) - array_push($final_rows, $diff_count++); - } - - return array($orig_matches, $final_matches, $orig_rows, $final_rows); - } - - /** - * Computes a number that is intended to reflect the "distance" between two strings. - * - * @since 2.6.0 - * - * @param string $string1 - * @param string $string2 - * @return int - */ - public function compute_string_distance( $string1, $string2 ) { - // Vectors containing character frequency for all chars in each string - $chars1 = count_chars($string1); - $chars2 = count_chars($string2); - - // L1-norm of difference vector. - $difference = array_sum( array_map( array($this, 'difference'), $chars1, $chars2 ) ); - - // $string1 has zero length? Odd. Give huge penalty by not dividing. - if ( !$string1 ) - return $difference; - - // Return distance per character (of string1). - return $difference / strlen($string1); - } - - /** - * @ignore - * @since 2.6.0 - * - * @param int $a - * @param int $b - * @return int - */ - public function difference( $a, $b ) { - return abs( $a - $b ); - } - - /** - * Make private properties readable for backward 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 backward 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 backward 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 backward 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 ); - } - } -} - -/** - * Better word splitting than the PEAR package provides. - * - * @since 2.6.0 - * @uses Text_Diff_Renderer_inline Extends - */ -class WP_Text_Diff_Renderer_inline extends Text_Diff_Renderer_inline { - - /** - * @ignore - * @since 2.6.0 - * - * @param string $string - * @param string $newlineEscape - * @return string - */ - public function _splitOnWords($string, $newlineEscape = "\n") { - $string = str_replace("\0", '', $string); - $words = preg_split( '/([^\w])/u', $string, -1, PREG_SPLIT_DELIM_CAPTURE ); - $words = str_replace( "\n", $newlineEscape, $words ); - return $words; - } - -} +require( ABSPATH . WPINC . '/class-wp-text-diff-renderer-table.php' ); +require( ABSPATH . WPINC . '/class-wp-text-diff-renderer-inline.php' ); \ No newline at end of file diff --git a/wp/wp-links-opml.php b/wp/wp-links-opml.php index ea3a50b4..42e8b24a 100644 --- a/wp/wp-links-opml.php +++ b/wp/wp-links-opml.php @@ -26,7 +26,10 @@ echo '\n"; ?> - <?php printf( __('Links for %s'), esc_attr(get_bloginfo('name', 'display')) ); ?> + <?php + /* translators: 1: Site name */ + printf( __('Links for %s'), esc_attr(get_bloginfo('name', 'display')) ); + ?> GMT site_name; + $login_header_title = get_network()->site_name; } else { $login_header_url = __( 'https://wordpress.org/' ); $login_header_title = __( 'Powered by WordPress' ); @@ -124,8 +123,6 @@ function login_header( $title = 'Log In', $message = '', $wp_error = '' ) { $login_header_title = apply_filters( 'login_headertitle', $login_header_title ); $classes = array( 'login-action-' . $action, 'wp-core-ui' ); - if ( wp_is_mobile() ) - $classes[] = 'mobile'; if ( is_rtl() ) $classes[] = 'rtl'; if ( $interim_login ) { @@ -260,8 +257,6 @@ function login_footer($input_id = '') { * @since 3.0.0 */ function wp_shake_js() { - if ( wp_is_mobile() ) - return; ?>