Compare commits

...

158 Commits

Author SHA1 Message Date
Pascal Birchler
9c765625ae Tag 3.9.18
Built from https://develop.svn.wordpress.org/tags/3.9.18@40506


git-svn-id: http://core.svn.wordpress.org/tags/3.9.18@40382 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-20 18:52:14 +00:00
Pascal Birchler
063e974bd7 Bump 3.9 branch to version 3.9.18.
Built from https://develop.svn.wordpress.org/branches/3.9@40495


git-svn-id: http://core.svn.wordpress.org/branches/3.9@40371 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-20 16:28:15 +00:00
Pascal Birchler
a05429ecd1 Fix broken audio/video functions when sanitizing ID3 data
This fixes a bug where running `wp_kses_post_deep()` on all the ID3
tag data corrupted blob data.

See #40075, #40085.

Merges [40400] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@40468


git-svn-id: http://core.svn.wordpress.org/branches/3.9@40344 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-17 13:34:16 +00:00
James Nylen
f2ef35f4a9 Bump 3.9 branch to version 3.9.17.
Built from https://develop.svn.wordpress.org/branches/3.9@40210


git-svn-id: http://core.svn.wordpress.org/branches/3.9@40149 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-06 16:42:15 +00:00
Aaron Campbell
244804028c Strip control characters before validating redirect.
Merges [40183] to 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@40192


git-svn-id: http://core.svn.wordpress.org/branches/3.9@40131 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-06 13:45:58 +00:00
Aaron Campbell
fcec9ed6ff Plugins: Add file check to plugin deletions.
Merges [40169] to 3.9 branch.


Built from https://develop.svn.wordpress.org/branches/3.9@40178


git-svn-id: http://core.svn.wordpress.org/branches/3.9@40117 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-06 13:05:15 +00:00
Jeremy Felt
ca488f141f Validate video and audio metadata.
Merge of [40148] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@40157


git-svn-id: http://core.svn.wordpress.org/branches/3.9@40096 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-06 08:12:16 +00:00
Aaron Campbell
946d349b71 Bump 3.9 branch to version 3.9.16.
Built from https://develop.svn.wordpress.org/branches/3.9@40004


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39941 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-26 18:29:15 +00:00
John Blackbourn
6e66a60c3c Posts, Post Types: When using Excerpt mode on the Posts list table, ensure the excerpt output matches what was manually entered into the Excerpt field.
Merges [39956] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@39987


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39924 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-26 14:20:15 +00:00
Dominik Schilling
a81be45d5d Press This: Do not show Categories & Tags UI for users who cannot assign terms to posts anyways.
Merge of [39968] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@39979


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39916 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-26 14:14:58 +00:00
Dominik Schilling
13a15e6e07 Query: Ensure that queries work correctly with post type names with special characters.
Merge of [39952] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@39964


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39901 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-26 13:53:00 +00:00
Aaron Campbell
ec5bf14855 Bump 3.9 branch to version 3.9.15.
Built from https://develop.svn.wordpress.org/branches/3.9@39868


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39805 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 16:59:32 +00:00
Joe McGill
e2ef6cefbe Media: Fix exif_imagetype check in wp_get_image_mime
This is a follow up to [39831].

Merges [39850] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@39859


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39796 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 16:45:15 +00:00
Joe McGill
c47e0b66a2 Media: Improve image filetype checking.
This adds a new function `wp_get_image_mime()` which is used by
`wp_check_filetype_and_ext()` to validate image files using
`exif_imagetype()` if available instead of `getimagesize()`.

`getimagesize()` is less performant than `exif_imagetype()` and is
dependent on GD. If `exif_imagetype()` is not available, it falls back to
`getimagesize()` as before.

If `wp_check_filetype_and_ext()` can't validate the filetype, we now return
`false` for ext/MIME values.

Merges [39831] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@39840


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39778 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 13:20:15 +00:00
Dominik Schilling
95c2ed6e0d Updates: Translate plugin data on the Updates screen.
Merge of [39808] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@39828


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39766 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 11:43:22 +00:00
Dominik Schilling
d9f0c45795 Themes: Fix markup for theme name fallbacks.
Merge of [39807] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@39817


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39755 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 11:12:53 +00:00
Jeremy Felt
8d2a900277 Multisite: Use wp_rand() in signup key creation.
Merges [39795] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@39804


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39742 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 05:36:32 +00:00
Dion Hulse
924f935cb3 Update PHPMailer to 5.2.22.
The full list of changes is available here:
https://github.com/PHPMailer/PHPMailer/compare/v5.2.21...v5.2.22

Merges [39759] to the 3.9 branch.
Fixes #37210 for 3.9.

Built from https://develop.svn.wordpress.org/branches/3.9@39792


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39730 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 05:26:32 +00:00
Jeremy Felt
498ad8eb14 Mail: Disable wp-mail.php when mailserver_url is mail.example.com.
Merges [39772] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@39781


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39719 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 05:21:15 +00:00
Aaron Campbell
1db0b6e251 Add nonce for widget accessibility mode.
Props vortfu.

See #23328.

Merges [39765] to 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@39769


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39707 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 01:52:15 +00:00
Dion Hulse
40ce4b29b1 Mail: Upgrade PHPMailer to 5.2.21.
Merges [39645], [36083], [33142], [33124], [29783] to the 3.9 branch.
See #37210.

Built from https://develop.svn.wordpress.org/branches/3.9@39729


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39669 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 22:06:55 +00:00
Joe McGill
57383c5143 Media: Improved media titles when created from filename.
Preserves spaces and generally creates more accurate, cleaner titles from filenames of uploaded media.

Merge of [38615] to the 3.9 branch.

Fixes #37989.

Built from https://develop.svn.wordpress.org/branches/3.9@39717


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39657 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 22:01:57 +00:00
Dion Hulse
04cab520ed General: Update copyright year to 2017 in license.txt.
Props Nikschavan.
Merges [39659] to the 3.9 branch.
Fixes #39433.

Built from https://develop.svn.wordpress.org/branches/3.9@39705


git-svn-id: http://core.svn.wordpress.org/branches/3.9@39645 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 21:55:27 +00:00
Jeremy Felt
ca27550a35 Bump 3.9 branch to 3.9.14.
Built from https://develop.svn.wordpress.org/branches/3.9@38556


git-svn-id: http://core.svn.wordpress.org/branches/3.9@38499 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-07 15:02:18 +00:00
Jeremy Felt
cc80d2c131 Media: Sanitize upload filename.
Merge of [38538] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@38546


git-svn-id: http://core.svn.wordpress.org/branches/3.9@38489 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-07 14:00:34 +00:00
Pascal Birchler
391fa0940c Upgrade/Install: Sanitize file name in File_Upload_Upgrader.
Merge of [38524] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@38532


git-svn-id: http://core.svn.wordpress.org/branches/3.9@38473 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-06 18:03:16 +00:00
Boone Gorges
41276a8b92 Bump 3.9 branch to 3.9.13.
Built from https://develop.svn.wordpress.org/branches/3.9@37834


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37799 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 16:44:14 +00:00
Joe McGill
b7be0d01c0 Media: Improve handling of extensionless filenames.
Merge of [37756] to the 3.9 branch.

See #37111.
Built from https://develop.svn.wordpress.org/branches/3.9@37822


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37787 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:59:24 +00:00
Nikolay Bachiyski
9858249ed9 Admin: escape URL-encoded permalinks
Merge of [37801] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@37820


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37785 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:58:32 +00:00
Rachel Baker
5d8157a774 Revisions: Change the capability needed to view revision diffs to edit_post.
Merge of [37779] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@37803


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37768 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:48:15 +00:00
Nikolay Bachiyski
5995443179 Admin: Escape attachment name in case it contains special characters
Merge of [37774] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@37793


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37758 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:28:14 +00:00
Boone Gorges
e3098a4983 Taxonomy: More specific cap check when processing category data on post save.
Ports [37691] to the 3.9 branch.

Props dlh.
Fixes #36379.
Built from https://develop.svn.wordpress.org/branches/3.9@37784


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37749 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:23:58 +00:00
Dominik Schilling
3c90ea60d9 Customize: Make sure that preview and return URLs are URLs.
Merge of [37527] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@37777


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37742 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:21:50 +00:00
Jeremy Felt
0f819f1f57 Admin: Allow for the consistent filtering of auth_redirect_scheme
Merge of [37651] to the 3.9 branch.

See #37047.

Built from https://develop.svn.wordpress.org/branches/3.9@37764


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37729 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:13:52 +00:00
Dominik Schilling
7f38e9a815 Bump 3.9 branch to 3.9.12.
Built from https://develop.svn.wordpress.org/branches/3.9@37390


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37356 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-06 18:15:30 +00:00
Nikolay Bachiyski
d1db26f726 External Libraries: Update plupload from upstream
Built from https://develop.svn.wordpress.org/branches/3.9@37376


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37342 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-06 17:56:15 +00:00
Nikolay Bachiyski
7da57d4ef3 Taxonomies: make sure taxonomy functions work correctly with taxonomy names with special characters
The codex says that taxonomy names "should only contain lowercase letters and the underscore character", but that's not enforced. It's too late to enforce it, since some plugins haven't been following it and the official phpdoc doesn't mention this restriction.

Merge of [37133] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@37140


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37107 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-03-30 17:38:15 +00:00
Jeremy Felt
594a9e14e7 Multisite: Improve escaping in network settings.
Merge of [37124] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@37130


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37097 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-03-30 16:06:14 +00:00
Dominik Schilling
8576838329 HTTP: Improve detection of valid IP addresses.
Merge of [37115] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@37121


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37088 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-03-30 15:53:01 +00:00
Dominik Schilling
ba70965edc Multisite: Validate new email address confirmations.
Merge of [37103] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@37109


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37076 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-03-30 14:51:15 +00:00
Nikolay Bachiyski
0ff6ca33c7 Snoopy: use escapeshellarg instead of escapeshellcmd
We are escaping arguments, not commands, so we'd better use the semantically correct function, even though they are similar.

Merges [37094] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@37100


git-svn-id: http://core.svn.wordpress.org/branches/3.9@37067 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-03-30 14:12:14 +00:00
Dominik Schilling
ea26079cde Bump 3.9 branch to 3.9.11.
Built from https://develop.svn.wordpress.org/branches/3.9@36460


git-svn-id: http://core.svn.wordpress.org/branches/3.9@36427 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-02-02 17:30:14 +00:00
Dominik Schilling
53226bc6f2 Better validation of the URL used in HTTP redirects.
Merges [36444] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@36452


git-svn-id: http://core.svn.wordpress.org/branches/3.9@36419 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-02-02 17:01:19 +00:00
Dominik Schilling
dfea282b1d HTTP: 0.1.2.3 is not a valid IP.
Merges [36435] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@36441


git-svn-id: http://core.svn.wordpress.org/branches/3.9@36408 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-02-02 13:05:12 +00:00
Dominik Schilling
97a834aaab Bump 3.9 branch to 3.9.10.
Built from https://develop.svn.wordpress.org/branches/3.9@36201


git-svn-id: http://core.svn.wordpress.org/branches/3.9@36168 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-01-06 18:51:14 +00:00
Aaron Jorbin
5014bb866c Theme: Escape error messages
[36185] for 3.9 branch

Built from https://develop.svn.wordpress.org/branches/3.9@36191


git-svn-id: http://core.svn.wordpress.org/branches/3.9@36158 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-01-06 17:28:14 +00:00
Dion Hulse
96ad697c96 Background Updates: Remove the 7am/7pm background update check.
This changeset is a more basic version of [36180], clearing the extra now redundant schedule.
As the functionality for this was introduced in 3.9, [28129] has been backported to 3.7/3.8, allowing the API TTL to be respected by those versions.

See #27772.
Fixes #35323.

Built from https://develop.svn.wordpress.org/trunk@36184


git-svn-id: http://core.svn.wordpress.org/branches/3.9@36151 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-01-06 13:24:33 +00:00
Dion Hulse
4686a8e4e7 Update Akismet externals
git-svn-id: http://core.svn.wordpress.org/branches/3.9@35107 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-13 17:19:01 +00:00
Dominik Schilling
5ef1e3048b Finish bumping the 3.9 branch to 3.9.11.
Built from https://develop.svn.wordpress.org/branches/3.9@34196


git-svn-id: http://core.svn.wordpress.org/branches/3.9@34163 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-15 14:53:17 +00:00
Helen Hou-Sandí
831baf7b04 Bump 3.9 branch to 3.9.9.
Built from https://develop.svn.wordpress.org/branches/3.9@34185


git-svn-id: http://core.svn.wordpress.org/branches/3.9@34153 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-15 14:29:45 +00:00
Dominik Schilling
fdc6949e64 XMLRPC: Don't allow private posts to be sticky.
Merge of [33325], [33612], and [34135] to the 3.9 branch.

See #20662.
Built from https://develop.svn.wordpress.org/branches/3.9@34155


git-svn-id: http://core.svn.wordpress.org/branches/3.9@34123 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-14 23:02:14 +00:00
Nikolay Bachiyski
008ebcfae7 Shortcodes: don't allow unclosed HTML elements in attributes
Merges [34134] for 3.9 branch

Built from https://develop.svn.wordpress.org/branches/3.9@34148


git-svn-id: http://core.svn.wordpress.org/branches/3.9@34116 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-14 22:49:30 +00:00
Nikolay Bachiyski
0c61562bf5 List tables: escape user e-mails
Merges [34133] for 3.9 branch

Built from https://develop.svn.wordpress.org/branches/3.9@34141


git-svn-id: http://core.svn.wordpress.org/branches/3.9@34109 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-14 22:44:14 +00:00
Gary Pendergast
b7606aaa3c WPDB: get_table_from_query() didn't find table names with hyphens in them.
Merge of [33718] to the 3.9 branch.

Props dustinbolton, pento.

See #33470.


Built from https://develop.svn.wordpress.org/branches/3.9@33995


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33964 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-10 07:09:14 +00:00
Gary Pendergast
3edf686b37 Capabilities: Fall back to the edit_posts capability for orphaned comments.
Merge of the `capabilities.php` part of [33614] to the 3.9 branch.

Props pento, dd32.

See #33154.


Built from https://develop.svn.wordpress.org/branches/3.9@33975


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33944 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-09 06:14:14 +00:00
Dominik Schilling
fc3a293811 Bump 3.9 branch to version 3.9.8.
Built from https://develop.svn.wordpress.org/branches/3.9@33570


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33537 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 11:40:14 +00:00
Dion Hulse
31ebb3f94b Fix do_shortcode('<[shortcode]') edge case.
Props miqrogroove.

Merges [33499] to the 3.9 branch.
See #33116.

Built from https://develop.svn.wordpress.org/branches/3.9@33566


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33533 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 07:18:46 +00:00
Dominik Schilling
996d8547e3 Comments: IDs are integers.
Merge of [33555] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@33559


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33526 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 05:00:06 +00:00
Dominik Schilling
7a06b64959 Themes: Fix some broken links in the legacy theme preview.
Merge of [33549] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@33552


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33519 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 04:57:55 +00:00
Dominik Schilling
8417706532 Heartbeat: Ensure post locks are released.
Merge of [33542] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@33546


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33513 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 04:56:06 +00:00
Dominik Schilling
811541dfe6 Customizer: Use hash_equals() for widgets.
Merge of [33535] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@33539


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33506 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 04:53:20 +00:00
Dominik Schilling
792858da14 Nav menus: Consistent titles in widgets.
Merge of [33529] to the 3.9 branch.
Built from https://develop.svn.wordpress.org/branches/3.9@33532


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33499 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-03 20:58:50 +00:00
Andrew Ozz
bb869f458b Backport r33469 and r33470 to 3.9.
See #33106.
Built from https://develop.svn.wordpress.org/branches/3.9@33523


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33490 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-31 01:45:14 +00:00
Gary Pendergast
9641009151 Bump 3.9 branch to version 3.9.7.
Built from https://develop.svn.wordpress.org/branches/3.9@33398


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33366 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-23 11:08:13 +00:00
Gary Pendergast
aff3c77aad Shortcodes: Improve the reliablity of shortcodes inside HTML tags.
Merge of [33359] to the 3.9 branch.

Props miqrogroove.

See #15694.


Built from https://develop.svn.wordpress.org/branches/3.9@33386


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33354 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-23 05:01:14 +00:00
Gary Pendergast
c5eb54f359 Capabilities: When creating an auto-draft, ensure that the current user still has permission to do so.
Merge of [33357] to the 3.9 branch.


Built from https://develop.svn.wordpress.org/branches/3.9@33377


git-svn-id: http://core.svn.wordpress.org/branches/3.9@33348 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-23 04:12:14 +00:00
Dominik Schilling
98037bb876 3.9.6 version bumps.
Built from https://develop.svn.wordpress.org/branches/3.9@32437


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32407 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 23:30:15 +00:00
Michael Adams
d4608a9fe5 Upgrade: $wpdb->get_col_length() sanity check: bail on unexpected return value.
Merges [32429] for the 3.9 branch.

See #32165.

Built from https://develop.svn.wordpress.org/branches/3.9@32433


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32403 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 23:14:15 +00:00
Michael Adams
464ce8a75f Upgrade: Ensure unintelligible DB schemas don't result in content loss.
Merge of [32417] to the 3.9 branch.

See #32165.

Props ocean90.

Built from https://develop.svn.wordpress.org/branches/3.9@32421


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32391 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 21:53:15 +00:00
John Blackbourn
8f57ec6bbf WPDB: Allow queries to reference tables in the dbname.tablename format, and allow table names to contain any valid character, rather than just ASCII.
Merge of [32368] to the 3.9 branch.

Props pento, willstedt for the initial patch.

See #32090.

Built from https://develop.svn.wordpress.org/branches/3.9@32414


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32384 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 21:05:14 +00:00
Aaron Jorbin
96890b155a Remove debugging comments from [32408]
Built from https://develop.svn.wordpress.org/branches/3.9@32409


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32379 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 20:30:15 +00:00
Aaron Jorbin
fbb0252a46 When upgrading WordPress remove genericons example.html files
[32385] for 3.9 branch

Props @dd32, @boonebgorges, @johnjamesjacoby, @drewapicture, @jorbin



Built from https://develop.svn.wordpress.org/branches/3.9@32408


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32378 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 20:20:14 +00:00
Dominik Schilling
16156dcff9 WPDB: When sanity checking query character sets, there's no need to check queries that don't return user data.
Merges [32374] to the 3.9 branch.

props pento.
see #32104.
Built from https://develop.svn.wordpress.org/branches/3.9@32405


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32375 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 20:05:46 +00:00
Helen Hou-Sandí
cfb6ef101b The UTF-8 regex can occasionally fail on very low memory machines. Reduce the amount of memory it uses.
Merges [32375] to the 3.9 branch.

props pento.
See #32204.

Built from https://develop.svn.wordpress.org/branches/3.9@32398


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32368 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 19:43:51 +00:00
Michael Adams
1c86df8bbf WPDB: When checking that a string can be sent to MySQL, we shouldn't use mb_convert_encoding(), as it behaves differently to MySQL's character encoding conversion.
Merge of [32364] to the 3.9 branch.

Props mdawaffe, pento, nbachiyski, jorbin, johnjamesjacoby, jeremyfelt.

See #32165.

Built from https://develop.svn.wordpress.org/branches/3.9@32389


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32359 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 19:12:16 +00:00
Andrew Ozz
b2c747a38e TinyMCE: work-around a bug in the tags matching regex.
For 3.9.
Built from https://develop.svn.wordpress.org/branches/3.9@32373


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32343 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 05:36:17 +00:00
Michael Adams
10be03b2d7 3.9:
- WPDB: Sanity check that any strings being stored in the DB are not too long to store correctly.
- When upgrading, remove any suspicious comments.

Built from https://develop.svn.wordpress.org/branches/3.9@32316


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32287 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-27 18:30:15 +00:00
Gary Pendergast
ad0a3701d4 3.9 branch is now 3.9.6.
Built from https://develop.svn.wordpress.org/branches/3.9@32303


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-27 14:12:15 +00:00
Helen Hou-Sandí
67a0654bcb The 3.9 branch is now 3.9.5.
Built from https://develop.svn.wordpress.org/branches/3.9@32284


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32255 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-23 21:35:52 +00:00
Gary Pendergast
fa12b4a44c WPDB: When sanity checking a string by sending it to MySQL for conversion checks, the incorrect data structure was being returned from wpdb::strip_invalid_text(), causing all write queries to fail for some character sets when the query contained non-ASCII characters.
Merge of [32261] to the 3.9 branch.

See #32051.


Built from https://develop.svn.wordpress.org/branches/3.9@32273


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32244 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-23 11:48:16 +00:00
Gary Pendergast
4e39f0ba11 WPDB: When deciding if a query needs extra sanity checking based on collation, return early when we can. Merges [32232] and [32233] to the 3.9 branch.
See #32029.


Built from https://develop.svn.wordpress.org/branches/3.9@32239


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32210 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-21 06:58:14 +00:00
Gary Pendergast
b435ecd2f8 Fix some wpdb::check_safe_collation() calls missed in [32182].
Built from https://develop.svn.wordpress.org/branches/3.9@32224


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32198 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 19:04:15 +00:00
Gary Pendergast
6af36f8915 Bump 3.9 branch to 3.9.4.
Built from https://develop.svn.wordpress.org/branches/3.9@32217


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32191 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 17:37:28 +00:00
Gary Pendergast
f56dd747c8 3.9: Update about.php.
Built from https://develop.svn.wordpress.org/branches/3.9@32216


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32190 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 17:37:14 +00:00
Gary Pendergast
2a42fc2e73 Ensure post titles are correctly escaped on the Dashboard. Merge of [32175] to the 3.9 branch.
Props helen, ocean90, dd32, pento.


Built from https://develop.svn.wordpress.org/branches/3.9@32204


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32177 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 13:39:14 +00:00
Gary Pendergast
7bd9e93fef In Multisite, prevent plugins from unintentionally switching sites. Merge of [32173] to the 3.9 branch.
Props mdawaffe, pento.


Built from https://develop.svn.wordpress.org/branches/3.9@32200


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32173 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 13:23:15 +00:00
Gary Pendergast
6c6ea88f7d Update the Plupload Flash file to the latest version. Merge of [32168] to the 3.9 branch.
Props azaozz.


Built from https://develop.svn.wordpress.org/branches/3.9@32198


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32171 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 13:11:15 +00:00
Gary Pendergast
dc27207e1f Remove some old backwards compatibility code from TinyMCE. Merge of [32166] to the 3.9 branch.
Props azaozz.


Built from https://develop.svn.wordpress.org/branches/3.9@32194


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32167 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 12:52:16 +00:00
Gary Pendergast
27c4e15959 Clean up some edge cases in sanitize_sql_orderby(). Merge of [32164] to the 3.9 branch.
Props vortfu, dd32.


Built from https://develop.svn.wordpress.org/branches/3.9@32190


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32163 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 12:36:14 +00:00
Gary Pendergast
ff692384e0 wpdb::$checking_collation was incorrectly marked as protected instead of private in [32182].
Built from https://develop.svn.wordpress.org/branches/3.9@32185


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32158 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 11:24:15 +00:00
Gary Pendergast
e4e09f8491 Merge the query sanity checks from #21212 to the 3.9 branch.
Props pento, nacin, mdawaffe, DrewAPicture.


Built from https://develop.svn.wordpress.org/branches/3.9@32182


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32155 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 11:09:15 +00:00
Gary Pendergast
8b1471168e 3.9: Bump package.json, readme.html and license.txt.
Built from https://develop.svn.wordpress.org/branches/3.9@32156


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32131 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 03:41:14 +00:00
Gary Pendergast
932a7677e8 The 3.9 branch is now 3.9.4-alpha.
Built from https://develop.svn.wordpress.org/branches/3.9@32155


git-svn-id: http://core.svn.wordpress.org/branches/3.9@32130 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 03:40:15 +00:00
Andrew Nacin
d7aecf3611 3.9.3 version bumps.
Built from https://develop.svn.wordpress.org/branches/3.9@30474


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30465 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 16:29:14 +00:00
Andrew Nacin
a067868b73 Prevent high resource usage when hashing large passwords. props mdawaffe, pento
Merges [30466] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@30468


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30459 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 16:06:14 +00:00
Andrew Nacin
6f300d7d12 Validate image data.
Merges [30458] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@30463


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30454 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 15:53:52 +00:00
Andrew Nacin
940eb60ad7 Anchor texturize to shortcodes to improve regex efficiency.
For the 3.9 branch; see [30449] for trunk.

props miqrogroove.
see #29557 for segfault issues.

Built from https://develop.svn.wordpress.org/branches/3.9@30452


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30445 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 14:32:15 +00:00
Andrew Nacin
ca3e6728d1 Better validation of the URL used in core HTTP requests.
Merges [30443] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@30445


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30440 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 14:02:14 +00:00
Andrew Nacin
5594f44f40 Press This: Ensure the error message is printed. props johnbillion
Merges [30438] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@30440


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30435 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:59:09 +00:00
Andrew Nacin
bb7e7f5a0b TinyMCE: Verify HTML in captions. props azaozz
Merges [30435] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@30437


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30432 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:52:15 +00:00
Andrew Nacin
e8ea407eb6 Invalidate password keys when a user's email changes.
Merges [30430] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@30432


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30427 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:42:16 +00:00
Andrew Nacin
c0357c466d Fix typo in style filter. props miqrogroove
Merges [30425] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@30427


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30422 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:16:42 +00:00
Andrew Nacin
3fa0efa6e3 Playlists are video by default. props duck_
Merges [30422] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@30424


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30419 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:12:45 +00:00
Andrew Nacin
05c849b3ee Form validation for password resets.
Merges [30417] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@30419


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30414 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 12:23:46 +00:00
Andrew Nacin
3224f9b9c2 Use hash_equals() for old md5 hashes.
Merges [30412] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@30414


git-svn-id: http://core.svn.wordpress.org/branches/3.9@30409 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 12:02:50 +00:00
Andrew Nacin
14f8d5a6e5 Password resets: Use network_site_url() for form actions.
Merges [29631] to the 3.9 branch.

props mdawaffe.
fixes #29156.

Built from https://develop.svn.wordpress.org/branches/3.9@29638


git-svn-id: http://core.svn.wordpress.org/branches/3.9@29412 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-27 03:02:15 +00:00
Andrew Nacin
f62b6a2c8b 3.9.2
Built from https://develop.svn.wordpress.org/branches/3.9@29411


git-svn-id: http://core.svn.wordpress.org/branches/3.9@29189 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 18:27:16 +00:00
Andrew Nacin
f00aac7c5c Use delimiters when building nonce hashes. Part two of [29384].
Built from https://develop.svn.wordpress.org/branches/3.9@29408


git-svn-id: http://core.svn.wordpress.org/branches/3.9@29186 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 17:53:16 +00:00
Andrew Nacin
824ca5b030 Ignore entities in XML-RPC requests.
Merges [29404] to the 3.9 branch.

props mdawaffe, nacin.

Built from https://develop.svn.wordpress.org/branches/3.9@29405


git-svn-id: http://core.svn.wordpress.org/branches/3.9@29183 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 17:40:17 +00:00
Andrew Nacin
9173953c3e Escape late in get_avatar().
Merges [29397] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@29398


git-svn-id: http://core.svn.wordpress.org/branches/3.9@29176 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 07:51:15 +00:00
Andrew Nacin
ac2d674473 Don't pass around the password reset key.
Merges [29327] and [29381] to the 3.9 branch.

props mdawaffe.
fixes #29060.

Built from https://develop.svn.wordpress.org/branches/3.9@29394


git-svn-id: http://core.svn.wordpress.org/branches/3.9@29172 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 06:37:15 +00:00
Andrew Nacin
b86cd8511b Disable external entities in ID3.
Merges [29378] to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@29390


git-svn-id: http://core.svn.wordpress.org/branches/3.9@29168 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 05:57:16 +00:00
Andrew Nacin
ad39a33a22 Verify the MAC earlier in WP_Customize_Widgets. props duck_.
Merges [29377] (and [29028]) to the 3.9 branch.

Built from https://develop.svn.wordpress.org/branches/3.9@29389


git-svn-id: http://core.svn.wordpress.org/branches/3.9@29167 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 05:51:15 +00:00
Andrew Nacin
c4b546f41f Constant time for wp_verify_nonce().
Merges [29382] to the 3.9 branch.

Adds a second copy of hash_equals() to pluggable.php in case compat.php is not copied over in an update. (The general goal is no cross-file dependencies for minor releases.)

Built from https://develop.svn.wordpress.org/branches/3.9@29384


git-svn-id: http://core.svn.wordpress.org/branches/3.9@29162 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 05:42:16 +00:00
Andrew Nacin
7d2bc0ab0d 3.9.2-alpha
Built from https://develop.svn.wordpress.org/branches/3.9@29383


git-svn-id: http://core.svn.wordpress.org/branches/3.9@29161 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 05:26:31 +00:00
Andrew Nacin
ef84a2bea6 Update the Akismet external to 3.0.1 for the 3.9 branch.
git-svn-id: http://core.svn.wordpress.org/branches/3.9@29143 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-03 17:14:50 +00:00
Andrew Nacin
c462d023dd Use the same string on the about, credits, and freedoms screens.
Built from https://develop.svn.wordpress.org/branches/3.9@28353


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28181 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-08 17:01:16 +00:00
Andrew Nacin
01793d489b About 3.9.1
Built from https://develop.svn.wordpress.org/branches/3.9@28346


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28174 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-07 20:43:15 +00:00
Andrew Nacin
38b8a2fbf9 3.9.1
Built from https://develop.svn.wordpress.org/branches/3.9@28345


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28173 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-07 20:13:14 +00:00
Andrew Nacin
f87cbbf9c9 Add missing Dashicons classes to User Admin menu.
Merges [28284] to the 3.9 branch.

props imath.
fixes #28144, #26630.

Built from https://develop.svn.wordpress.org/branches/3.9@28344


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28172 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-07 20:11:15 +00:00
Andrew Nacin
3c530e46cb 3.9.1-RC1
Built from https://develop.svn.wordpress.org/branches/3.9@28282


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28110 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 05:33:31 +00:00
Andrew Nacin
e1f345903f Multisite: Treat 'www' as a special subdomain, reversing 3.9 regression.
Merges [28280] to the 3.9 branch.

props jeremyfelt.
fixes #27927.

Built from https://develop.svn.wordpress.org/branches/3.9@28281


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28109 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 05:33:17 +00:00
Andrew Nacin
d6656c58e0 Multisite: Fix case sensitivity regressions in 3.9.
Merges [28276] to the 3.9 branch.

props jeremyfelt.
fixes #27866.

Built from https://develop.svn.wordpress.org/branches/3.9@28278


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28106 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 05:26:14 +00:00
Andrew Nacin
dfb0e1aaa8 Custom header: Avoid warnings in the process_default_headers() method.
Merges [28275] to the 3.9 branch.

props obenland.
fixes #27850.

Built from https://develop.svn.wordpress.org/branches/3.9@28277


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28105 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 05:25:16 +00:00
Andrew Nacin
c51b6347e4 Fix persistence of <track> elements in the body of a [video] shotcode in TinyMCE views.
Merges [28183] and [28169] to the 3.9 branch.

props azaozz, wonderboymusic.
fixes #27915.

Built from https://develop.svn.wordpress.org/branches/3.9@28273


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28101 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 04:51:14 +00:00
Andrew Nacin
8b65448e85 Refinements for asynchronous rendering in wp.mce.media.PlaylistView.
Merges [28182] to the 3.9 branch.

props gcorne, wonderboymusic.
fixes #27899.

Built from https://develop.svn.wordpress.org/branches/3.9@28272


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28100 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 04:49:15 +00:00
Andrew Nacin
900f223ed5 Customizer: Only tie header button action events to the header controls.
Merges [28269] to the 3.9 branch.

props danielbachhuber.
fixes #28046. see #27848.

Built from https://develop.svn.wordpress.org/branches/3.9@28270


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28098 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 04:30:37 +00:00
Andrew Nacin
73a09188b8 Customizer: Avoid hiding 'Remove' buttons unrelated to custom headers.
Merges [28266] to the 3.9 branch.

props rzen, ehg.
fixes #27848.

Built from https://develop.svn.wordpress.org/branches/3.9@28267


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28095 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 04:15:14 +00:00
Andrew Nacin
c85dc97274 Drag/drop on the editor to upload: don't trigger the uploader when selected text is being dragged from one window to another.
Merges [28189] to the 3.9 branch.

props azaozz.
fixes #27880.

Built from https://develop.svn.wordpress.org/branches/3.9@28262


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28090 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 03:28:15 +00:00
Andrew Nacin
f2512c50eb Avoid an expensive attachment counting query on the post editing screen.
Merges [28191], [28194] to the 3.9 branch.

props johnbillion.
fixes #27985.

Built from https://develop.svn.wordpress.org/branches/3.9@28261


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28089 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 03:22:17 +00:00
Andrew Nacin
524068c83b Add a compatibility layer in wp-playlist.js to avoid VM errors from MediaElement's plugin bridge in the TinyMCE views for playlists by suppressing playback for files whose mime-type is not supported in the user's browser natively.
Merges [28171] to the 3.9 branch.

props wonderboymusic.
fixes #27892.

Built from https://develop.svn.wordpress.org/branches/3.9@28247


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28075 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-02 17:02:16 +00:00
Andrew Nacin
daddadfb70 Don't set the poster image for videos in a playlist if the image is the video mime-type icon blown up.
Merges [28158] to the 3.9 branch.

props wonderboymusic.
see #27892.

Built from https://develop.svn.wordpress.org/branches/3.9@28246


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28074 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-02 17:00:14 +00:00
Andrew Nacin
9753a18ddf Add calc() rules for max-width of playlist caption.
Merges [28174] to the 3.9 branch.

props celloexpressions.
fixes #27923.

Built from https://develop.svn.wordpress.org/branches/3.9@28245


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28073 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-02 16:56:14 +00:00
Andrew Nacin
17457983b4 Properly account for text overflow in .wp-playlist-caption by adding display: block.
Merges [28172] to the 3.9 branch.

props celloexpressions.
see #27923.

Built from https://develop.svn.wordpress.org/branches/3.9@28244


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28072 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-02 16:54:15 +00:00
Andrew Nacin
b4245bb9f6 Properly translate 'Select Poster Image'.
Merges [28158] to the 3.9 branch.

props dimadin.
fixes #27845.

Built from https://develop.svn.wordpress.org/branches/3.9@28233


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28061 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-01 04:49:14 +00:00
Andrew Nacin
8649425906 TinyMCE: fix the "active" state of the Link button when an image wrapped in a link is selected.
Merges [28185] to the 3.9 branch.

props azaozz.
fixes #27847.

Built from https://develop.svn.wordpress.org/branches/3.9@28232


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28060 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-01 04:43:16 +00:00
Andrew Nacin
21796de8ba TinyMCE: When adding a caption to an image that is in a paragraph with other text, move the caption node above the paragraph instead of below.
Merges [28190] to the 3.9 branch.

props azaozz.
fixes #27922.

Built from https://develop.svn.wordpress.org/branches/3.9@28231


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28059 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-01 04:42:14 +00:00
Andrew Nacin
6e4bb1ab4a Support RTL properly when displaying playlists.
Merges [28173] to the 3.9 branch.

props SergeyBiryukov.
fixes #27924.

Built from https://develop.svn.wordpress.org/branches/3.9@28230


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28058 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-01 04:33:15 +00:00
Andrew Nacin
0579fdbc6a Media: Use the proper translated string for Video Playlist "drag info".
Merges [28178] to the 3.9 branch.

props wonderboymusic.
fixes #27937.

Built from https://develop.svn.wordpress.org/branches/3.9@28229


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28057 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-01 04:29:14 +00:00
Andrew Nacin
6b49e2278b Rmove version string from Thickbox so it assumes the WP core version. Bust some caches.
Merges [28176] to the 3.9 branch.

props celloexpressions.
fixes #27861.

Built from https://develop.svn.wordpress.org/branches/3.9@28228


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28056 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-01 04:27:15 +00:00
Andrew Nacin
f2f0f62a3e Alter the layout of the checkboxes in the modal view for Audio/Video Details to allow translations more room to breathe.
Merges [28184] to the 3.9 branch.

props wonderboymusic.
fixes #27893.

Built from https://develop.svn.wordpress.org/branches/3.9@28227


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28055 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-01 04:26:15 +00:00
Andrew Nacin
44c39135ab TinyMCE: Restore old wordpress_adv_hidden editor parameter to enable force-showing the kitchen sink.
Merges [28181] to the 3.9 branch.

props azaozz.
fixes #27963.

Built from https://develop.svn.wordpress.org/branches/3.9@28226


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28054 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-01 04:18:15 +00:00
Andrew Nacin
75c9032983 Customizer: Allow to skip cropping header images if image width is smaller than or equal to theme width.
Merges [28219] to the 3.9 branch.

fixes #27936.

Built from https://develop.svn.wordpress.org/branches/3.9@28225


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28053 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-01 04:16:14 +00:00
Andrew Nacin
b5e12ae249 Shortcode JS: Avoid errors when an escaped shortcode includes a newline between brackets.
Merges [28223] to the 3.9 branch.

props gcorne.
props Clorith, jorbin for tests.
fixes #27907.

Built from https://develop.svn.wordpress.org/branches/3.9@28224


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28052 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-01 03:58:15 +00:00
Mark Jaquith
f690e6fe0f Use '&mdash; Select &mdash;' instead of '-- Select --' for nav menus widget. Looks nicer.
Partially merges [28205] to the 3.9 branch.

see #27878
Built from https://develop.svn.wordpress.org/branches/3.9@28206


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28036 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-25 00:39:37 +00:00
Andrew Nacin
2766c5f44d Simplify the admin menu notification selector so color schemes don't get stomped.
Merges [28177] to the 3.9 branch.

props celloexpressions.
fixes #27920.

Built from https://develop.svn.wordpress.org/branches/3.9@28204


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28034 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-24 22:08:15 +00:00
Andrew Nacin
7aa8fbd1dd Run WP_Editors::enqueue_scripts() on admin_print_footer_scripts, instead of admin_footer.
Fixes incompatibility with the customizer.

Merges [28187] to the 3.9 branch.

props feedmeastraycat.
fixes #27853.

Built from https://develop.svn.wordpress.org/branches/3.9@28203


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28033 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-24 22:06:15 +00:00
Andrew Nacin
fba1c51e98 Don't allow disabled input styling to get lost in the cascade.
Merges [28179] to the 3.9 branch.

props ocean90.
fixes #27906.

Built from https://develop.svn.wordpress.org/branches/3.9@28202


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28032 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-24 22:05:16 +00:00
Andrew Nacin
fe6fdac4c1 Fix cursor style for the resize handle of the editor.
Merges [28186] for the 3.9 branch.

props avryl.
fixes #27595.

Built from https://develop.svn.wordpress.org/branches/3.9@28201


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28031 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-24 22:04:23 +00:00
Andrew Nacin
653bc12e2b Ensure the editor height is saved properly as an integer.
Merges [28193] to the 3.9 branch.

props jupiterwise.
fixes #28000.

Built from https://develop.svn.wordpress.org/branches/3.9@28200


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28030 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-24 21:42:26 +00:00
Andrew Nacin
df62215a18 Editor: Shrink the font size for the chosen format so it fits in more locales.
Merges [28180] to the 3.9 branch.

props SergeyBiryukov.
fixes #27903.

Built from https://develop.svn.wordpress.org/branches/3.9@28199


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-24 21:41:17 +00:00
Mark Jaquith
09e4a3ca6c Force users to choose a nav menu in the custom nav menu widget, for a better customizer UX
Before, they had to make a dummy change to get it to render. Now they
are made to choose a nav menu from the dropdown, which feels more
natural.

Merges [28197] to the 3.9 branch.

fixes #27878. props westonruter
Built from https://develop.svn.wordpress.org/branches/3.9@28198


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28028 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-24 21:10:15 +00:00
Andrew Nacin
3b0cc6d419 Recent Posts Widget: Use ob_end_flush() instead of ob_flush().
Merges [28195] to the 3.9 branch.

props m_i_n.
fixes #28009.

Built from https://develop.svn.wordpress.org/branches/3.9@28196


git-svn-id: http://core.svn.wordpress.org/branches/3.9@28026 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-24 19:55:17 +00:00
Andrew Nacin
07e6c72972 Version and POT file updates for bundled themes Twenty Eleven through Twenty Fourteen.
Merges [28165] and [28166] to the 3.9 branch.

props lancewillett.
fixes #27843.

Built from https://develop.svn.wordpress.org/branches/3.9@28167


git-svn-id: http://core.svn.wordpress.org/branches/3.9@27998 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-19 18:27:14 +00:00
Andrew Nacin
37d4b468ea Theme Installer: Proper redirection and action links post-install in multisite.
Merges [28163] to the 3.9 branch.

fixes #27869.

Built from https://develop.svn.wordpress.org/branches/3.9@28164


git-svn-id: http://core.svn.wordpress.org/branches/3.9@27995 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-19 18:19:14 +00:00
Andrew Nacin
3dd112ef79 Fix logic inversion in [28124] to ensure widgets stay with themes during a theme switch.
Merges [28161] to the 3.9 branch.

props gcorne.
fixes #27897.

Built from https://develop.svn.wordpress.org/branches/3.9@28162


git-svn-id: http://core.svn.wordpress.org/branches/3.9@27993 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-19 18:14:16 +00:00
Andrew Nacin
0cecdccf75 The 3.9 branch is now 3.9.1-alpha.
Built from https://develop.svn.wordpress.org/branches/3.9@28156


git-svn-id: http://core.svn.wordpress.org/branches/3.9@27987 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-16 19:37:46 +00:00
Andrew Nacin
57db9dcaa2 Branch 3.9
Built from https://develop.svn.wordpress.org/@28154


git-svn-id: http://core.svn.wordpress.org/branches/3.9@27985 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-16 18:53:21 +00:00
124 changed files with 4935 additions and 1813 deletions

View File

@@ -1,6 +1,6 @@
WordPress - Web publishing software
Copyright 2014 by the contributors
Copyright 2017 by the contributors
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -9,7 +9,7 @@
<body>
<h1 id="logo">
<a href="https://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
<br /> Version 3.9
<br /> Version 3.9.18
</h1>
<p style="text-align: center">Semantic Personal Publishing Platform</p>

View File

@@ -38,10 +38,86 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
</a>
</h2>
<div class="changelog point-releases">
<h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 18 ); ?></h3>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed %2$s bug.',
'<strong>Version %1$s</strong> addressed %2$s bugs.', 1 ), '3.9.18', number_format_i18n( 1 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.18' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 5 ), '3.9.17' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.17' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 3 ), '3.9.16' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.16' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 8 ), '3.9.15' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.15' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 2 ), '3.9.14' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.14' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 9 ), '3.9.13' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.13' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 6 ), '3.9.12' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.12' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 2 ), '3.9.11' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.11' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 1 ), '3.9.10' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.10' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 2 ), '3.9.9', number_format_i18n( 2 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.9' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 2 ), '3.9.8', number_format_i18n( 2 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.8' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 2 ), '3.9.7' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.7' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 3 ), '3.9.6', number_format_i18n( 3 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.6' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed %2$s bug.',
'<strong>Version %1$s</strong> addressed %2$s bugs.', 1 ), '3.9.5', number_format_i18n( 1 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.5' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 8 ), '3.9.4' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.4' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 9 ), '3.9.3', number_format_i18n( 9 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.3' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 6 ), '3.9.2', number_format_i18n( 6 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.2' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed %2$s bug.',
'<strong>Version %1$s</strong> addressed %2$s bugs.', 34 ), '3.9.1', number_format_i18n( 34 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_3.9.1' ); ?>
</p>
</div>
<div class="changelog">
<div class="about-overview">
<?php
if ( ( $locale = get_locale() ) && 'en_' === substr( $locale, 0, 3 ) ) : ?>
if ( ! is_ssl() && ( $locale = get_locale() ) && 'en_' === substr( $locale, 0, 3 ) ) : ?>
<embed src="//v0.wordpress.com/player.swf?v=1.03" type="application/x-shockwave-flash" width="640" height="360" wmode="direct" seamlesstabbing="true" allowfullscreen="true" allowscriptaccess="always" overstretch="true" flashvars="guid=sAiXhCfV&amp;isDynamicSeeking=true" title=""></embed>
<?php else : ?>
<img class="about-overview-img" src="//s.w.org/images/core/3.9/overview.png?0" />

View File

@@ -82,7 +82,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
<h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
<div class="about-text"><?php printf( __( 'Thank you for updating to WordPress %s, the most beautiful WordPress&nbsp;yet.' ), $display_version ); ?></div>
<div class="about-text"><?php printf( __( 'Thank you for updating! WordPress %s has lots of refinements we think you&#8217;ll love.' ), $display_version ); ?></div>
<div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>

View File

@@ -500,7 +500,7 @@ ul#adminmenu > li.current > a.current:after {
}
#adminmenu .awaiting-mod,
#adminmenu span.update-plugins,
#adminmenu .update-plugins,
#sidemenu li a span.update-plugins {
display: inline-block;
background-color: #d54e21;

View File

@@ -500,7 +500,7 @@ ul#adminmenu > li.current > a.current:after {
}
#adminmenu .awaiting-mod,
#adminmenu span.update-plugins,
#adminmenu .update-plugins,
#sidemenu li a span.update-plugins {
display: inline-block;
background-color: #d54e21;

View File

@@ -355,7 +355,7 @@ td.plugin-title p {
#content-resize-handle {
background: transparent url(../images/resize.gif) no-repeat scroll left bottom;
width: 12px;
cursor: n-resize;
cursor: row-resize;
}
.rtl #content-resize-handle {

View File

@@ -355,7 +355,7 @@ td.plugin-title p {
#content-resize-handle {
background: transparent url(../images/resize.gif) no-repeat scroll right bottom;
width: 12px;
cursor: n-resize;
cursor: row-resize;
}
.rtl #content-resize-handle {

View File

@@ -75,24 +75,6 @@ input[type=radio] {
line-height: 10px;
}
input:disabled,
input.disabled,
textarea:disabled,
textarea.disabled {
-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.04);
box-shadow: inset 0 1px 2px rgba(0,0,0,0.04);
border-color: rgba(222, 222, 222, .75);
background: rgba(255, 255, 255, .5);
color: rgba(51, 51, 51, .5);
}
input[type=checkbox]:disabled,
input[type=radio]:disabled,
input[type=checkbox]:disabled:checked:before,
input[type=radio]:disabled:checked:before {
opacity: 0.7;
}
input[type=checkbox]:checked:before,
input[type=radio]:checked:before {
float: right;
@@ -268,6 +250,24 @@ input[readonly] {
color: #666;
}
input:disabled,
input.disabled,
textarea:disabled,
textarea.disabled {
-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.04);
box-shadow: inset 0 1px 2px rgba(0,0,0,0.04);
border-color: rgba(222, 222, 222, .75);
background: rgba(255, 255, 255, .5);
color: rgba(51, 51, 51, .5);
}
input[type=checkbox]:disabled,
input[type=radio]:disabled,
input[type=checkbox]:disabled:checked:before,
input[type=radio]:disabled:checked:before {
opacity: 0.7;
}
/*------------------------------------------------------------------------------
2.0 - Forms
------------------------------------------------------------------------------*/

View File

@@ -75,24 +75,6 @@ input[type=radio] {
line-height: 10px;
}
input:disabled,
input.disabled,
textarea:disabled,
textarea.disabled {
-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.04);
box-shadow: inset 0 1px 2px rgba(0,0,0,0.04);
border-color: rgba(222, 222, 222, .75);
background: rgba(255, 255, 255, .5);
color: rgba(51, 51, 51, .5);
}
input[type=checkbox]:disabled,
input[type=radio]:disabled,
input[type=checkbox]:disabled:checked:before,
input[type=radio]:disabled:checked:before {
opacity: 0.7;
}
input[type=checkbox]:checked:before,
input[type=radio]:checked:before {
float: left;
@@ -268,6 +250,24 @@ input[readonly] {
color: #666;
}
input:disabled,
input.disabled,
textarea:disabled,
textarea.disabled {
-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.04);
box-shadow: inset 0 1px 2px rgba(0,0,0,0.04);
border-color: rgba(222, 222, 222, .75);
background: rgba(255, 255, 255, .5);
color: rgba(51, 51, 51, .5);
}
input[type=checkbox]:disabled,
input[type=radio]:disabled,
input[type=checkbox]:disabled:checked:before,
input[type=radio]:disabled:checked:before {
opacity: 0.7;
}
/*------------------------------------------------------------------------------
2.0 - Forms
------------------------------------------------------------------------------*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -40,7 +40,7 @@ class Custom_Image_Header {
* @since 3.0.0
* @access private
*/
var $default_headers;
var $default_headers = array();
/**
* Holds custom headers uploaded by the user.
@@ -254,7 +254,7 @@ class Custom_Image_Header {
if ( !isset($_wp_default_headers) )
return;
if ( is_array( $this->default_headers ) ) {
if ( ! empty( $this->default_headers ) ) {
return;
}

View File

@@ -17,9 +17,10 @@ if ( ! current_user_can( 'edit_theme_options' ) )
wp_reset_vars( array( 'url', 'return' ) );
$url = urldecode( $url );
$url = esc_url_raw( $url );
$url = wp_validate_redirect( $url, home_url( '/' ) );
if ( $return )
$return = wp_validate_redirect( urldecode( $return ) );
$return = wp_validate_redirect( esc_url_raw( urldecode( $return ) ) );
if ( ! $return )
$return = $url;

View File

@@ -19,7 +19,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
<h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
<div class="about-text"><?php printf( __( 'Thank you for updating to WordPress %s, the most beautiful WordPress&nbsp;yet.' ), $display_version ); ?></div>
<div class="about-text"><?php printf( __( 'Thank you for updating! WordPress %s has lots of refinements we think you&#8217;ll love.' ), $display_version ); ?></div>
<div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>

View File

@@ -1323,11 +1323,13 @@ function wp_ajax_inline_save() {
if ( isset($data['post_parent']) )
$data['parent_id'] = $data['post_parent'];
// status
if ( isset($data['keep_private']) && 'private' == $data['keep_private'] )
// Status.
if ( isset( $data['keep_private'] ) && 'private' == $data['keep_private'] ) {
$data['visibility'] = 'private';
$data['post_status'] = 'private';
else
} else {
$data['post_status'] = $data['_status'];
}
if ( empty($data['comment_status']) )
$data['comment_status'] = 'closed';
@@ -2164,7 +2166,7 @@ function wp_ajax_get_revision_diffs() {
if ( ! $post = get_post( (int) $_REQUEST['post_id'] ) )
wp_send_json_error();
if ( ! current_user_can( 'read_post', $post->ID ) )
if ( ! current_user_can( 'edit_post', $post->ID ) )
wp_send_json_error();
// Really just pre-loading the cache here.
@@ -2233,7 +2235,7 @@ function wp_ajax_query_themes() {
wp_send_json_error();
}
$update_php = self_admin_url( 'update.php?action=install-theme' );
$update_php = network_admin_url( 'update.php?action=install-theme' );
foreach ( $api->themes as &$theme ) {
$theme->install_url = add_query_arg( array(
'theme' => $theme->slug,

View File

@@ -537,9 +537,9 @@ class WP_Comments_List_Table extends WP_List_Table {
if ( current_user_can( 'edit_post', $post->ID ) ) {
$post_link = "<a href='" . get_edit_post_link( $post->ID ) . "'>";
$post_link .= get_the_title( $post->ID ) . '</a>';
$post_link .= esc_html( get_the_title( $post->ID ) ) . '</a>';
} else {
$post_link = get_the_title( $post->ID );
$post_link = esc_html( get_the_title( $post->ID ) );
}
echo '<div class="response-links"><span class="post-com-count-wrapper">';

View File

@@ -219,7 +219,7 @@ class WP_MS_Users_List_Table extends WP_List_Table {
break;
case 'email':
echo "<td $attributes><a href='mailto:$user->user_email'>$user->user_email</a></td>";
echo "<td $attributes><a href='" . esc_url( "mailto:$user->user_email" ) . "'>$user->user_email</a></td>";
break;
case 'registered':

View File

@@ -638,8 +638,9 @@ class WP_Posts_List_Table extends WP_List_Table {
echo '<div class="locked-info"><span class="locked-avatar">' . $locked_avatar . '</span> <span class="locked-text">' . $locked_text . "</span></div>\n";
}
if ( ! $this->hierarchical_display && 'excerpt' == $mode && current_user_can( 'read_post', $post->ID ) )
the_excerpt();
if ( ! $this->hierarchical_display && 'excerpt' == $mode && current_user_can( 'read_post', $post->ID ) ) {
echo esc_html( get_the_excerpt() );
}
$actions = array();
if ( $can_edit_post && 'trash' != $post->post_status ) {

View File

@@ -1695,8 +1695,12 @@ class File_Upload_Upgrader {
if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
wp_die( $uploads['error'] );
$this->filename = $_GET[$urlholder];
$this->filename = sanitize_file_name( $_GET[ $urlholder ] );
$this->package = $uploads['basedir'] . '/' . $this->filename;
if ( 0 !== strpos( realpath( $this->package ), realpath( $uploads['basedir'] ) ) ) {
wp_die( __( 'Please select a file' ) );
}
}
}

View File

@@ -417,7 +417,7 @@ class WP_Users_List_Table extends WP_List_Table {
$r .= "<td $attributes>$user_object->first_name $user_object->last_name</td>";
break;
case 'email':
$r .= "<td $attributes><a href='mailto:$email' title='" . esc_attr( sprintf( __( 'E-mail: %s' ), $email ) ) . "'>$email</a></td>";
$r .= "<td $attributes><a href='" . esc_url( "mailto:$email" ) . "' title='" . esc_attr( sprintf( __( 'E-mail: %s' ), $email ) ) . "'>$email</a></td>";
break;
case 'role':
$r .= "<td $attributes>$role_name</td>";

View File

@@ -429,6 +429,10 @@ function wp_network_dashboard_right_now() {
function wp_dashboard_quick_press( $error_msg = false ) {
global $post_ID;
if ( ! current_user_can( 'edit_posts' ) ) {
return;
}
/* Check if a new auto-draft (= no new post_ID) is needed or if the old can be used */
$last_post_id = (int) get_user_option( 'dashboard_quick_press_last_post_id' ); // Get the last post_ID
if ( $last_post_id ) {
@@ -531,7 +535,7 @@ function wp_dashboard_recent_drafts( $drafts = false ) {
function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
$GLOBALS['comment'] =& $comment;
$comment_post_title = strip_tags(get_the_title( $comment->comment_post_ID ));
$comment_post_title = _draft_or_post_title( $comment->comment_post_ID );
if ( current_user_can( 'edit_post', $comment->comment_post_ID ) ) {
$comment_post_url = get_edit_post_link( $comment->comment_post_ID );

View File

@@ -366,6 +366,12 @@ function wp_read_image_metadata( $file ) {
$meta[ $key ] = utf8_encode( $meta[ $key ] );
}
foreach ( $meta as &$value ) {
if ( is_string( $value ) ) {
$value = wp_kses_post( $value );
}
}
/**
* Filter the array of meta data read from an image's exif data.
*

View File

@@ -262,7 +262,7 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override
$url = $file['url'];
$type = $file['type'];
$file = $file['file'];
$title = $name;
$title = sanitize_text_field( $name );
$content = '';
if ( preg_match( '#^audio#', $type ) ) {
@@ -2859,7 +2859,7 @@ function wp_add_id3_tag_data( &$metadata, $data ) {
if ( ! empty( $data[$version]['comments'] ) ) {
foreach ( $data[$version]['comments'] as $key => $list ) {
if ( ! empty( $list ) ) {
$metadata[$key] = reset( $list );
$metadata[$key] = wp_kses_post( reset( $list ) );
// fix bug in byte stream analysis
if ( 'terms_of_use' === $key && 0 === strpos( $metadata[$key], 'yright notice.' ) )
$metadata[$key] = 'Cop' . $metadata[$key];

View File

@@ -165,6 +165,13 @@ function _wp_translate_postdata( $update = false, $post_data = null ) {
$post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] );
}
if ( isset( $post_data['post_category'] ) ) {
$category_object = get_taxonomy( 'category' );
if ( ! current_user_can( $category_object->cap->assign_terms ) ) {
unset( $post_data['post_category'] );
}
}
return $post_data;
}
@@ -177,6 +184,7 @@ function _wp_translate_postdata( $update = false, $post_data = null ) {
* @return int Post ID.
*/
function edit_post( $post_data = null ) {
global $wpdb;
if ( empty($post_data) )
$post_data = &$_POST;
@@ -317,7 +325,19 @@ function edit_post( $post_data = null ) {
update_post_meta( $post_ID, '_edit_last', get_current_user_id() );
wp_update_post( $post_data );
$success = wp_update_post( $post_data );
// If the save failed, see if we can sanity check the main fields and try again
if ( ! $success && is_callable( array( $wpdb, 'strip_invalid_text_for_column' ) ) ) {
$fields = array( 'post_title', 'post_content', 'post_excerpt' );
foreach( $fields as $field ) {
if ( isset( $post_data[ $field ] ) ) {
$post_data[ $field ] = $wpdb->strip_invalid_text_for_column( $wpdb->posts, $field, $post_data[ $field ] );
}
}
wp_update_post( $post_data );
}
// Now that we have an ID we can fix any attachment anchor hrefs
_fix_attachment_links( $post_ID );
@@ -1193,11 +1213,11 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
}
if ( false === strpos($permalink, '%postname%') && false === strpos($permalink, '%pagename%') ) {
$return = '<strong>' . __('Permalink:') . "</strong>\n" . '<span id="sample-permalink" tabindex="-1">' . $permalink . "</span>\n";
$return = '<strong>' . __('Permalink:') . "</strong>\n" . '<span id="sample-permalink" tabindex="-1">' . esc_html( $permalink ) . "</span>\n";
if ( '' == get_option( 'permalink_structure' ) && current_user_can( 'manage_options' ) && !( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') ) )
$return .= '<span id="change-permalinks"><a href="options-permalink.php" class="button button-small" target="_blank">' . __('Change Permalinks') . "</a></span>\n";
if ( isset( $view_post ) )
$return .= "<span id='view-post-btn'><a href='$permalink' class='button button-small'>$view_post</a></span>\n";
$return .= "<span id='view-post-btn'><a href='" . esc_url( $permalink ) . "' class='button button-small'>$view_post</a></span>\n";
/**
* Filter the sample permalink HTML markup.
@@ -1228,17 +1248,17 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
}
}
$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name_abridged . '</span>';
$display_link = str_replace(array('%pagename%','%postname%'), $post_name_html, $permalink);
$view_link = str_replace(array('%pagename%','%postname%'), $post_name, $permalink);
$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . esc_html( $post_name_abridged ) . '</span>';
$display_link = str_replace(array('%pagename%','%postname%'), $post_name_html, esc_html( $permalink ) );
$view_link = str_replace(array('%pagename%','%postname%'), $post_name, esc_html( $permalink ) );
$return = '<strong>' . __('Permalink:') . "</strong>\n";
$return .= '<span id="sample-permalink" tabindex="-1">' . $display_link . "</span>\n";
$return .= '&lrm;'; // Fix bi-directional text display defect in RTL languages.
$return .= '<span id="edit-slug-buttons"><a href="#post_name" class="edit-slug button button-small hide-if-no-js" onclick="editPermalink(' . $id . '); return false;">' . __('Edit') . "</a></span>\n";
$return .= '<span id="editable-post-name-full">' . $post_name . "</span>\n";
$return .= '<span id="editable-post-name-full">' . esc_html( $post_name ) . "</span>\n";
if ( isset( $view_post ) ) {
$return .= "<span id='view-post-btn'><a href='" . get_permalink( $post ) . "' class='button button-small'>$view_post</a></span>\n";
$return .= "<span id='view-post-btn'><a href='" . esc_url( get_permalink( $post ) ) . "' class='button button-small'>$view_post</a></span>\n";
}
/** This filter is documented in wp-admin/includes/post.php */
@@ -1456,7 +1476,7 @@ function _admin_notice_post_locked() {
// Allow plugins to prevent some users overriding the post lock
if ( $override ) {
?>
<a class="button button-primary wp-tab-last" href="<?php echo esc_url( add_query_arg( 'get-post-lock', '1', get_edit_post_link( $post->ID, 'url' ) ) ); ?>"><?php _e('Take over'); ?></a>
<a class="button button-primary wp-tab-last" href="<?php echo esc_url( add_query_arg( 'get-post-lock', '1', wp_nonce_url( get_edit_post_link( $post->ID, 'url' ), 'lock-post_' . $post->ID ) ) ); ?>"><?php _e('Take over'); ?></a>
<?php
}

View File

@@ -969,7 +969,8 @@ final class WP_Screen {
switch ( $this->id ) {
case 'widgets':
$this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __('Disable accessibility mode') . "</a></p>\n";
$nonce = wp_create_nonce( 'widgets-access' );
$this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on&_wpnonce=' . urlencode( $nonce ) . '">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off&_wpnonce=' . urlencode( $nonce ) . '">' . __('Disable accessibility mode') . "</a></p>\n";
break;
default:
$this->_screen_settings = '';

View File

@@ -1437,7 +1437,7 @@ function _draft_or_post_title( $post = 0 ) {
$title = get_the_title( $post );
if ( empty( $title ) )
$title = __( '(no title)' );
return $title;
return esc_html( $title );
}
/**

View File

@@ -1011,6 +1011,9 @@ function update_core($from, $to) {
$wp_filesystem->delete($old_file, true);
}
// Remove any Genericons example.html's from the filesystem
_upgrade_422_remove_genericons();
// Upgrade DB with separate request
/** This filter is documented in wp-admin/includes/update-core.php */
apply_filters( 'update_feedback', __( 'Upgrading database&#8230;' ) );
@@ -1146,3 +1149,68 @@ window.location = 'about.php?updated';
exit();
}
add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );
/**
* Cleans up Genericons example files.
*
* @since 4.2.2
*/
function _upgrade_422_remove_genericons() {
global $wp_theme_directories, $wp_filesystem;
// A list of the affected files using the filesystem absolute paths.
$affected_files = array();
// Themes
foreach ( $wp_theme_directories as $directory ) {
$directory = trailingslashit( $directory );
$affected_theme_files = _upgrade_422_find_genericons_files_in_folder( $directory );
$affected_files = array_merge( $affected_files, $affected_theme_files );
}
// Plugins
$plugin_dir = trailingslashit( WP_PLUGIN_DIR );
$affected_plugin_files = _upgrade_422_find_genericons_files_in_folder( $plugin_dir );
$affected_files = array_merge( $affected_files, $affected_plugin_files );
foreach ( $affected_files as $file ) {
$gen_dir = $wp_filesystem->find_folder( dirname( $file ) . '/' );
if ( ! $gen_dir ) {
continue;
}
// The path when the file is accessed via WP_Filesystem may differ in the case of FTP
$remote_file = $gen_dir . basename( $file );
if ( ! $wp_filesystem->exists( $remote_file ) ) {
continue;
}
if ( ! $wp_filesystem->delete( $remote_file, false, 'f' ) ) {
$wp_filesystem->put_contents( $remote_file, '' );
}
}
}
/**
* Recursively find Genericons example files in a given folder.
*
* @ignore
* @since 4.2.2
*
* @param string $directory Directory path. Expects trailingslashed.
* @return array
*/
function _upgrade_422_find_genericons_files_in_folder( $directory ) {
$files = array();
if ( file_exists( "{$directory}example.html" ) && false !== strpos( file_get_contents( "{$directory}example.html" ), '<title>Genericons</title>' ) ) {
$files[] = substr( "{$directory}example.html", strlen( $base ) );
}
foreach ( glob( $directory . '*', GLOB_ONLYDIR ) as $dir ) {
$dir = trailingslashit( $dir );
$files = array_merge( $files, _upgrade_422_find_genericons_files_in_folder( $dir ) );
}
return $files;
}

View File

@@ -430,6 +430,9 @@ function upgrade_all() {
if ( $wp_current_db_version < 26691 )
upgrade_380();
if ( $wp_current_db_version < 27918 )
upgrade_397();
maybe_disable_link_manager();
maybe_disable_automattic_widgets();
@@ -1270,6 +1273,63 @@ function upgrade_380() {
deactivate_plugins( array( 'mp6/mp6.php' ), true );
}
}
/**
* Execute changes made in WordPress 3.9.6.
*
* @since 3.9.6
*/
function upgrade_396() {
}
/**
* Execute changes made in WordPress 3.9.7.
*
* @since 3.9.7
*/
function upgrade_397() {
global $wp_current_db_version, $wpdb;
if ( $wp_current_db_version < 27918 ) {
$content_length = $wpdb->get_col_length( $wpdb->comments, 'comment_content' );
if ( is_wp_error( $content_length ) ) {
return;
}
if ( false === $content_length ) {
$content_length = array(
'type' => 'byte',
'length' => 65535,
);
} elseif ( ! is_array( $content_length ) ) {
$length = (int) $content_length > 0 ? (int) $content_length : 65535;
$content_length = array(
'type' => 'byte',
'length' => $length
);
}
if ( 'byte' !== $content_length['type'] || 0 === $content_length['length'] ) {
// Sites with malformed DB schemas are on their own.
return;
}
$allowed_length = intval( $content_length['length'] ) - 10;
$comments = $wpdb->get_results(
"SELECT `comment_ID` FROM `{$wpdb->comments}`
WHERE `comment_date_gmt` > '2015-04-26'
AND LENGTH( `comment_content` ) >= {$allowed_length}
AND ( `comment_content` LIKE '%<%' OR `comment_content` LIKE '%>%' )"
);
foreach ( $comments as $comment ) {
wp_delete_comment( $comment->comment_ID, true );
}
}
}
/**
* Execute network level changes
*

View File

@@ -309,8 +309,8 @@
api.HeaderControl = api.Control.extend({
ready: function() {
this.btnRemove = $('.actions .remove');
this.btnNew = $('.actions .new');
this.btnRemove = $('#customize-control-header_image .actions .remove');
this.btnNew = $('#customize-control-header_image .actions .new');
_.bindAll(this, 'openMedia', 'removeImage');

File diff suppressed because one or more lines are too long

View File

@@ -451,14 +451,14 @@ var wpNavMenu;
if ( ! isPrimaryMenuItem ) {
thisLink = menuItem.find( '.menus-move-left' ),
thisLinkText = menus.outFrom.replace( '%s', prevItemNameLeft );
thisLink.prop( 'title', menus.moveOutFrom.replace( '%s', prevItemNameLeft ) ).html( thisLinkText ).css( 'display', 'inline' );
thisLink.prop( 'title', menus.moveOutFrom.replace( '%s', prevItemNameLeft ) ).text( thisLinkText ).css( 'display', 'inline' );
}
if ( 0 !== position ) {
if ( menuItem.find( '.menu-item-data-parent-id' ).val() !== menuItem.prev().find( '.menu-item-data-db-id' ).val() ) {
thisLink = menuItem.find( '.menus-move-right' ),
thisLinkText = menus.under.replace( '%s', prevItemNameRight );
thisLink.prop( 'title', menus.moveUnder.replace( '%s', prevItemNameRight ) ).html( thisLinkText ).css( 'display', 'inline' );
thisLink.prop( 'title', menus.moveUnder.replace( '%s', prevItemNameRight ) ).text( thisLinkText ).css( 'display', 'inline' );
}
}
@@ -480,7 +480,7 @@ var wpNavMenu;
title = menus.subMenuFocus.replace( '%1$s', itemName ).replace( '%2$d', itemPosition ).replace( '%3$s', parentItemName );
}
$this.prop('title', title).html( title );
$this.prop('title', title).text( title );
});
},

File diff suppressed because one or more lines are too long

View File

@@ -1025,7 +1025,7 @@ jQuery(document).ready( function($) {
if ( mce ) {
editor.focus();
toolbarHeight = $( '#wp-content-editor-container .mce-toolbar-grp' ).height();
toolbarHeight = parseInt( $( '#wp-content-editor-container .mce-toolbar-grp' ).height(), 10 );
if ( toolbarHeight < 10 || toolbarHeight > 200 ) {
toolbarHeight = 30;

File diff suppressed because one or more lines are too long

View File

@@ -237,7 +237,7 @@ if ( isset( $_GET['updated'] ) ) {
<tr>
<th scope="row"><label for="first_comment_author"><?php _e( 'First Comment Author' ) ?></label></th>
<td>
<input type="text" size="40" name="first_comment_author" id="first_comment_author" value="<?php echo get_site_option('first_comment_author') ?>" />
<input type="text" size="40" name="first_comment_author" id="first_comment_author" value="<?php echo esc_attr( get_site_option('first_comment_author') ); ?>" />
<p class="description">
<?php _e( 'The author of the first comment on a new site.' ) ?>
</p>

View File

@@ -225,6 +225,14 @@ if ( $action ) {
exit;
}
// Bail on all if any paths are invalid.
// validate_file() returns truthy for invalid files
$invalid_plugin_files = array_filter( $plugins, 'validate_file' );
if ( $invalid_plugin_files ) {
wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
exit;
}
include(ABSPATH . 'wp-admin/update.php');
$parent_file = 'plugins.php';

View File

@@ -113,8 +113,9 @@ case 'post-quickdraft-save':
if ( ! wp_verify_nonce( $nonce, 'add-post' ) )
$error_msg = __( 'Unable to submit this form, please refresh and try again.' );
if ( ! current_user_can( 'edit_posts' ) )
$error_msg = __( 'Oops, you don&#8217;t have access to add new drafts.' );
if ( ! current_user_can( 'edit_posts' ) ) {
exit;
}
if ( $error_msg )
return wp_dashboard_quick_press( $error_msg );
@@ -159,6 +160,7 @@ case 'edit':
wp_die( __( 'You can&#8217;t edit this item because it is in the Trash. Please restore it and try again.' ) );
if ( ! empty( $_GET['get-post-lock'] ) ) {
check_admin_referer( 'lock-post_' . $post_id );
wp_set_post_lock( $post_id );
wp_redirect( get_edit_post_link( $post_id, 'url' ) );
exit();

View File

@@ -32,8 +32,25 @@ function press_it() {
if ( !current_user_can('edit_post', $post_ID) )
wp_die(__('You are not allowed to edit this post.'));
$post['post_category'] = isset($_POST['post_category']) ? $_POST['post_category'] : '';
$post['tax_input'] = isset($_POST['tax_input']) ? $_POST['tax_input'] : '';
// Only accept categories if the user actually can assign
$category_tax = get_taxonomy( 'category' );
if ( current_user_can( $category_tax->cap->assign_terms ) ) {
$post['post_category'] = ( ! empty( $_POST['post_category'] ) ) ? $_POST['post_category'] : array();
}
// Only accept taxonomies if the user can actually assign
if ( ! empty( $_POST['tax_input'] ) ) {
$tax_input = $_POST['tax_input'];
foreach ( $tax_input as $tax => $_ti ) {
$tax_object = get_taxonomy( $tax );
if ( ! $tax_object || ! current_user_can( $tax_object->cap->assign_terms ) ) {
unset( $tax_input[ $tax ] );
}
}
$post['tax_input'] = $tax_input;
}
$post['post_title'] = isset($_POST['title']) ? $_POST['title'] : '';
$content = isset($_POST['content']) ? $_POST['content'] : '';
@@ -63,7 +80,7 @@ function press_it() {
// error handling for media_sideload
if ( is_wp_error($upload) ) {
wp_delete_post($post_ID);
wp_die($upload);
wp_die( esc_html( $upload->get_error_message() ) );
} else {
// Post formats
if ( isset( $_POST['post_format'] ) ) {
@@ -512,75 +529,81 @@ $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace(
</div>
</div>
<?php $tax = get_taxonomy( 'category' ); ?>
<div id="categorydiv" class="postbox">
<div class="handlediv" title="<?php esc_attr_e( 'Click to toggle' ); ?>"><br /></div>
<h3 class="hndle"><?php _e('Categories') ?></h3>
<div class="inside">
<div id="taxonomy-category" class="categorydiv">
<?php
<ul id="category-tabs" class="category-tabs">
<li class="tabs"><a href="#category-all"><?php echo $tax->labels->all_items; ?></a></li>
<li class="hide-if-no-js"><a href="#category-pop"><?php _e( 'Most Used' ); ?></a></li>
</ul>
$tax = get_taxonomy( 'category' );
if ( current_user_can( $tax->cap->assign_terms ) ) :
?>
<div id="categorydiv" class="postbox">
<div class="handlediv" title="<?php esc_attr_e( 'Click to toggle' ); ?>"><br /></div>
<h3 class="hndle"><?php _e('Categories') ?></h3>
<div class="inside">
<div id="taxonomy-category" class="categorydiv">
<div id="category-pop" class="tabs-panel" style="display: none;">
<ul id="categorychecklist-pop" class="categorychecklist form-no-clear" >
<?php $popular_ids = wp_popular_terms_checklist( 'category' ); ?>
<ul id="category-tabs" class="category-tabs">
<li class="tabs"><a href="#category-all"><?php echo $tax->labels->all_items; ?></a></li>
<li class="hide-if-no-js"><a href="#category-pop"><?php _e( 'Most Used' ); ?></a></li>
</ul>
</div>
<div id="category-all" class="tabs-panel">
<ul id="categorychecklist" data-wp-lists="list:category" class="categorychecklist form-no-clear">
<?php wp_terms_checklist($post_ID, array( 'taxonomy' => 'category', 'popular_cats' => $popular_ids ) ) ?>
</ul>
</div>
<?php if ( !current_user_can($tax->cap->assign_terms) ) : ?>
<p><em><?php _e('You cannot modify this Taxonomy.'); ?></em></p>
<?php endif; ?>
<?php if ( current_user_can($tax->cap->edit_terms) ) : ?>
<div id="category-adder" class="wp-hidden-children">
<h4>
<a id="category-add-toggle" href="#category-add" class="hide-if-no-js">
<?php printf( __( '+ %s' ), $tax->labels->add_new_item ); ?>
</a>
</h4>
<p id="category-add" class="category-add wp-hidden-child">
<label class="screen-reader-text" for="newcategory"><?php echo $tax->labels->add_new_item; ?></label>
<input type="text" name="newcategory" id="newcategory" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" aria-required="true"/>
<label class="screen-reader-text" for="newcategory_parent">
<?php echo $tax->labels->parent_item_colon; ?>
</label>
<?php wp_dropdown_categories( array( 'taxonomy' => 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;' ) ); ?>
<input type="button" id="category-add-submit" data-wp-lists="add:categorychecklist:category-add" class="button category-add-submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" />
<?php wp_nonce_field( 'add-category', '_ajax_nonce-add-category', false ); ?>
<span id="category-ajax-response"></span>
</p>
<div id="category-pop" class="tabs-panel" style="display: none;">
<ul id="categorychecklist-pop" class="categorychecklist form-no-clear" >
<?php $popular_ids = wp_popular_terms_checklist( 'category' ); ?>
</ul>
</div>
<?php endif; ?>
</div>
</div>
</div>
<div id="tagsdiv-post_tag" class="postbox">
<div class="handlediv" title="<?php esc_attr_e( 'Click to toggle' ); ?>"><br /></div>
<h3><span><?php _e('Tags'); ?></span></h3>
<div class="inside">
<div class="tagsdiv" id="post_tag">
<div class="jaxtag">
<label class="screen-reader-text" for="newtag"><?php _e('Tags'); ?></label>
<input type="hidden" name="tax_input[post_tag]" class="the-tags" id="tax-input[post_tag]" value="" />
<div class="ajaxtag">
<input type="text" name="newtag[post_tag]" class="newtag form-input-tip" size="16" autocomplete="off" value="" />
<input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" />
<div id="category-all" class="tabs-panel">
<ul id="categorychecklist" data-wp-lists="list:category" class="categorychecklist form-no-clear">
<?php wp_terms_checklist($post_ID, array( 'taxonomy' => 'category', 'popular_cats' => $popular_ids ) ) ?>
</ul>
</div>
<?php if ( current_user_can($tax->cap->edit_terms) ) : ?>
<div id="category-adder" class="wp-hidden-children">
<h4>
<a id="category-add-toggle" href="#category-add" class="hide-if-no-js">
<?php printf( __( '+ %s' ), $tax->labels->add_new_item ); ?>
</a>
</h4>
<p id="category-add" class="category-add wp-hidden-child">
<label class="screen-reader-text" for="newcategory"><?php echo $tax->labels->add_new_item; ?></label>
<input type="text" name="newcategory" id="newcategory" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" aria-required="true"/>
<label class="screen-reader-text" for="newcategory_parent">
<?php echo $tax->labels->parent_item_colon; ?>
</label>
<?php wp_dropdown_categories( array( 'taxonomy' => 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;' ) ); ?>
<input type="button" id="category-add-submit" data-wp-lists="add:categorychecklist:category-add" class="button category-add-submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" />
<?php wp_nonce_field( 'add-category', '_ajax_nonce-add-category', false ); ?>
<span id="category-ajax-response"></span>
</p>
</div>
</div>
<div class="tagchecklist"></div>
<?php endif; ?>
</div>
</div>
<p class="tagcloud-link"><a href="#titlediv" class="tagcloud-link" id="link-post_tag"><?php _e('Choose from the most used tags'); ?></a></p>
</div>
</div>
<?php endif;
$tax = get_taxonomy( 'post_tag' );
if ( current_user_can( $tax->cap->assign_terms ) ) :
?>
<div id="tagsdiv-post_tag" class="postbox">
<div class="handlediv" title="<?php esc_attr_e( 'Click to toggle' ); ?>"><br /></div>
<h3><span><?php _e('Tags'); ?></span></h3>
<div class="inside">
<div class="tagsdiv" id="post_tag">
<div class="jaxtag">
<label class="screen-reader-text" for="newtag"><?php _e('Tags'); ?></label>
<input type="hidden" name="tax_input[post_tag]" class="the-tags" id="tax-input[post_tag]" value="" />
<div class="ajaxtag">
<input type="text" name="newtag[post_tag]" class="newtag form-input-tip" size="16" autocomplete="off" value="" />
<input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" />
</div>
</div>
<div class="tagchecklist"></div>
</div>
<p class="tagcloud-link"><a href="#titlediv" class="tagcloud-link" id="link-post_tag"><?php _e('Choose from the most used tags'); ?></a></p>
</div>
</div>
<?php endif; ?>
</div>
</div>
<div class="posting">

View File

@@ -63,7 +63,7 @@ default :
if ( ! $post = get_post( $revision->post_parent ) )
break;
if ( ! current_user_can( 'read_post', $revision->ID ) || ! current_user_can( 'read_post', $post->ID ) )
if ( ! current_user_can( 'read_post', $revision->ID ) || ! current_user_can( 'edit_post', $revision->post_parent ) )
break;
// Revisions disabled and we're not looking at an autosave

View File

@@ -238,6 +238,8 @@ function list_plugin_updates() {
<tbody class="plugins">
<?php
foreach ( (array) $plugins as $plugin_file => $plugin_data) {
$plugin_data = (object) _get_plugin_data_markup_translate( $plugin_file, (array) $plugin_data, false, true );
$info = plugins_api('plugin_information', array('slug' => $plugin_data->update->slug ));
// Get plugin compat for running version of WordPress.
if ( isset($info->tested) && version_compare($info->tested, $cur_wp_version, '>=') ) {

View File

@@ -98,7 +98,7 @@ if ( is_multisite()
// Execute confirmed email change. See send_confirmation_on_profile_email().
if ( is_multisite() && IS_PROFILE_PAGE && isset( $_GET[ 'newuseremail' ] ) && $current_user->ID ) {
$new_email = get_option( $current_user->ID . '_new_email' );
if ( $new_email[ 'hash' ] == $_GET[ 'newuseremail' ] ) {
if ( $new_email && hash_equals( $new_email[ 'hash' ], $_GET[ 'newuseremail' ] ) ) {
$user = new stdClass;
$user->ID = $current_user->ID;
$user->user_email = esc_html( trim( $new_email[ 'newemail' ] ) );
@@ -109,7 +109,8 @@ if ( is_multisite() && IS_PROFILE_PAGE && isset( $_GET[ 'newuseremail' ] ) && $c
wp_redirect( add_query_arg( array('updated' => 'true'), self_admin_url( 'profile.php' ) ) );
die();
}
} elseif ( is_multisite() && IS_PROFILE_PAGE && !empty( $_GET['dismiss'] ) && $current_user->ID . '_new_email' == $_GET['dismiss'] ) {
} elseif ( is_multisite() && IS_PROFILE_PAGE && !empty( $_GET['dismiss'] ) && $current_user->ID . '_new_email' === $_GET['dismiss'] ) {
check_admin_referer( 'dismiss-' . $current_user->ID . '_new_email' );
delete_option( $current_user->ID . '_new_email' );
wp_redirect( add_query_arg( array('updated' => 'true'), self_admin_url( 'profile.php' ) ) );
die();
@@ -406,7 +407,7 @@ if ( is_multisite() && is_network_admin() && ! IS_PROFILE_PAGE && current_user_c
$new_email = get_option( $current_user->ID . '_new_email' );
if ( $new_email && $new_email['newemail'] != $current_user->user_email && $profileuser->ID == $current_user->ID ) : ?>
<div class="updated inline">
<p><?php printf( __('There is a pending change of your e-mail to <code>%1$s</code>. <a href="%2$s">Cancel</a>'), $new_email['newemail'], esc_url( self_admin_url( 'profile.php?dismiss=' . $current_user->ID . '_new_email' ) ) ); ?></p>
<p><?php printf( __('There is a pending change of your e-mail to <code>%1$s</code>. <a href="%2$s">Cancel</a>'), esc_html( $new_email['newemail'] ), esc_url( wp_nonce_url( self_admin_url( 'profile.php?dismiss=' . $current_user->ID . '_new_email' ), 'dismiss-' . $current_user->ID . '_new_email' ) ) ); ?></p>
</div>
<?php endif; ?>
</td>

View File

@@ -7,11 +7,11 @@
* @since 3.1.0
*/
$menu[2] = array(__('Dashboard'), 'exist', 'index.php', '', 'menu-top menu-top-first menu-icon-dashboard', 'menu-dashboard', 'div');
$menu[2] = array(__('Dashboard'), 'exist', 'index.php', '', 'menu-top menu-top-first menu-icon-dashboard', 'menu-dashboard', 'dashicons-dashboard');
$menu[4] = array( '', 'exist', 'separator1', '', 'wp-menu-separator' );
$menu[70] = array( __('Profile'), 'exist', 'profile.php', '', 'menu-top menu-icon-users', 'menu-users', 'div' );
$menu[70] = array( __('Profile'), 'exist', 'profile.php', '', 'menu-top menu-icon-users', 'menu-users', 'dashicons-admin-users' );
$menu[99] = array( '', 'exist', 'separator-last', '', 'wp-menu-separator' );

View File

@@ -17,6 +17,8 @@ if ( ! current_user_can('edit_theme_options') )
$widgets_access = get_user_setting( 'widgets_access' );
if ( isset($_GET['widgets-access']) ) {
check_admin_referer( 'widgets-access' );
$widgets_access = 'on' == $_GET['widgets-access'] ? 'on' : 'off';
set_user_setting( 'widgets_access', $widgets_access );
}

View File

@@ -2,9 +2,9 @@
# This file is distributed under the GNU General Public License v2 or later.
msgid ""
msgstr ""
"Project-Id-Version: Twenty Eleven 1.7\n"
"Project-Id-Version: Twenty Eleven 1.8\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tags/twentyeleven\n"
"POT-Creation-Date: 2014-03-18 19:16:24+00:00\n"
"POT-Creation-Date: 2014-04-16 18:26:59+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -431,11 +431,11 @@ msgid ""
"in <a href=\"%6$s\" title=\"Return to %7$s\" rel=\"gallery\">%8$s</a>"
msgstr ""
#: inc/theme-options.php:56 inc/theme-options.php:530
#: inc/theme-options.php:56 inc/theme-options.php:528
msgid "Color Scheme"
msgstr ""
#: inc/theme-options.php:62 inc/theme-options.php:547
#: inc/theme-options.php:62 inc/theme-options.php:545
msgid "Link Color"
msgstr ""
@@ -534,40 +534,40 @@ msgstr ""
msgid "%s Theme Options"
msgstr ""
#: inc/theme-options.php:554
#: inc/theme-options.php:552
msgid "Layout"
msgstr ""
#: inc/widgets.php:23
#: inc/widgets.php:21
msgid ""
"Use this widget to list your recent Aside, Status, Quote, and Link posts"
msgstr ""
#: inc/widgets.php:24
#: inc/widgets.php:22
msgid "Twenty Eleven Ephemera"
msgstr ""
#: inc/widgets.php:59
#: inc/widgets.php:56
msgid "Ephemera"
msgstr ""
#: inc/widgets.php:98 inc/widgets.php:107
#: inc/widgets.php:95 inc/widgets.php:104
msgid "0 <span class=\"reply\">comments &rarr;</span>"
msgstr ""
#: inc/widgets.php:98 inc/widgets.php:107
#: inc/widgets.php:95 inc/widgets.php:104
msgid "1 <span class=\"reply\">comment &rarr;</span>"
msgstr ""
#: inc/widgets.php:98 inc/widgets.php:107
#: inc/widgets.php:95 inc/widgets.php:104
msgid "% <span class=\"reply\">comments &rarr;</span>"
msgstr ""
#: inc/widgets.php:170
#: inc/widgets.php:167
msgid "Title:"
msgstr ""
#: inc/widgets.php:173
#: inc/widgets.php:170
msgid "Number of posts to show:"
msgstr ""

View File

@@ -4,7 +4,7 @@ Theme URI: http://wordpress.org/themes/twentyeleven
Author: the WordPress team
Author URI: http://wordpress.org/
Description: The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom "Ephemera" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured "sticky" posts), and special styles for six different post formats.
Version: 1.7
Version: 1.8
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: dark, light, white, black, gray, one-column, two-columns, left-sidebar, right-sidebar, fixed-layout, responsive-layout, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-image-header, featured-images, flexible-header, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready

View File

@@ -2,9 +2,9 @@
# This file is distributed under the GNU General Public License v2 or later.
msgid ""
msgstr ""
"Project-Id-Version: Twenty Fourteen 1.0\n"
"Project-Id-Version: Twenty Fourteen 1.1\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tags/twentyfourteen\n"
"POT-Creation-Date: 2014-03-18 19:16:26+00:00\n"
"POT-Creation-Date: 2014-04-16 18:29:37+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -85,19 +85,19 @@ msgstr ""
#: content-aside.php:37 content-audio.php:37 content-gallery.php:37
#: content-image.php:37 content-link.php:37 content-quote.php:37
#: content-video.php:37 content.php:38 inc/widgets.php:185
#: content-video.php:37 content.php:38 inc/widgets.php:194
msgid "Leave a comment"
msgstr ""
#: content-aside.php:37 content-audio.php:37 content-gallery.php:37
#: content-image.php:37 content-link.php:37 content-quote.php:37
#: content-video.php:37 content.php:38 inc/widgets.php:185
#: content-video.php:37 content.php:38 inc/widgets.php:194
msgid "1 Comment"
msgstr ""
#: content-aside.php:37 content-audio.php:37 content-gallery.php:37
#: content-image.php:37 content-link.php:37 content-quote.php:37
#: content-video.php:37 content.php:38 inc/widgets.php:185
#: content-video.php:37 content.php:38 inc/widgets.php:194
msgid "% Comments"
msgstr ""
@@ -110,7 +110,7 @@ msgstr ""
#: content-aside.php:46 content-audio.php:46 content-gallery.php:46
#: content-image.php:46 content-link.php:46 content-quote.php:46
#: content-video.php:46 content.php:54 inc/widgets.php:118 inc/widgets.php:163
#: content-video.php:46 content.php:54 inc/widgets.php:127 inc/widgets.php:172
msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
msgstr ""
@@ -159,50 +159,50 @@ msgstr ""
msgid "Secondary menu in left sidebar"
msgstr ""
#: functions.php:175
#: functions.php:171
msgid "Primary Sidebar"
msgstr ""
#: functions.php:177
#: functions.php:173
msgid "Main sidebar that appears on the left."
msgstr ""
#: functions.php:184
#: functions.php:180
msgid "Content Sidebar"
msgstr ""
#: functions.php:186
#: functions.php:182
msgid "Additional sidebar that appears on the right."
msgstr ""
#: functions.php:193
#: functions.php:189
msgid "Footer Widget Area"
msgstr ""
#: functions.php:195
#: functions.php:191
msgid "Appears in the footer section of the site."
msgstr ""
#: functions.php:217
#: functions.php:213
msgctxt "Lato font: on or off"
msgid "on"
msgstr ""
#: functions.php:260
#: functions.php:254
msgid "Previous"
msgstr ""
#: functions.php:261
#: functions.php:255
msgid "Next"
msgstr ""
#: functions.php:384
#: functions.php:372
msgid "%d Article"
msgid_plural "%d Articles"
msgstr[0] ""
msgstr[1] ""
#: functions.php:500
#: functions.php:488
msgid "Page %s"
msgstr ""
@@ -226,7 +226,7 @@ msgstr ""
msgid "Next Image"
msgstr ""
#: inc/back-compat.php:41 inc/back-compat.php:53 inc/back-compat.php:68
#: inc/back-compat.php:37 inc/back-compat.php:47 inc/back-compat.php:60
msgid ""
"Twenty Fourteen requires at least WordPress version 3.6. You are running "
"version %s. Please upgrade and try again."
@@ -244,18 +244,18 @@ msgstr ""
msgid "Display Site Title &amp; Tagline"
msgstr ""
#: inc/customizer.php:35 inc/featured-content.php:411
#: inc/customizer.php:35 inc/featured-content.php:408
msgid "Featured Content"
msgstr ""
#: inc/customizer.php:36 inc/featured-content.php:412
#: inc/customizer.php:36 inc/featured-content.php:409
msgid ""
"Use a <a href=\"%1$s\">tag</a> to feature your posts. If no posts match the "
"tag, <a href=\"%2$s\">sticky posts</a> will be displayed instead."
msgstr ""
#: inc/customizer.php:37 inc/customizer.php:104 inc/featured-content.php:413
#: inc/featured-content.php:422 inc/featured-content.php:482
#: inc/customizer.php:37 inc/customizer.php:102 inc/featured-content.php:410
#: inc/featured-content.php:419 inc/featured-content.php:479
msgctxt "featured content default tag slug"
msgid "featured"
msgstr ""
@@ -274,20 +274,20 @@ msgstr ""
#. #-#-#-#-# twentyfourteen.pot (Twenty Fourteen 1.0) #-#-#-#-#
#. Theme Name of the plugin/theme
#: inc/customizer.php:101
#: inc/customizer.php:99
msgid "Twenty Fourteen"
msgstr ""
#: inc/customizer.php:104
#: inc/customizer.php:102
msgid ""
"The home page features your choice of up to 6 posts prominently displayed in "
"a grid or slider, controlled a <a href=\"%1$s\">tag</a>; you can change the "
"tag and layout in <a href=\"%2$s\">Appearance &rarr; Customize</a>. If no "
"posts match the tag, <a href=\"%3$s\">sticky posts</a> will be displayed "
"a grid or slider, controlled by a <a href=\"%1$s\">tag</a>; you can change "
"the tag and layout in <a href=\"%2$s\">Appearance &rarr; Customize</a>. If "
"no posts match the tag, <a href=\"%3$s\">sticky posts</a> will be displayed "
"instead."
msgstr ""
#: inc/customizer.php:105
#: inc/customizer.php:103
msgid ""
"Enhance your site design by using <a href=\"%s\">Featured Images</a> for "
"posts you&rsquo;d like to stand out (also known as post thumbnails). This "
@@ -296,110 +296,139 @@ msgid ""
"title&mdash;and in the Featured Content area on the home page."
msgstr ""
#: inc/customizer.php:106
#: inc/customizer.php:104
msgid ""
"For an in-depth tutorial, and more tips and tricks, visit the <a href=\"%s"
"\">Twenty Fourteen documentation</a>."
msgstr ""
#: inc/featured-content.php:434
#: inc/featured-content.php:431
msgid "Tag Name"
msgstr ""
#: inc/featured-content.php:439
#: inc/featured-content.php:436
msgid "Don&rsquo;t display tag on front end."
msgstr ""
#: inc/template-tags.php:47
#: inc/template-tags.php:45
msgid "&larr; Previous"
msgstr ""
#: inc/template-tags.php:48
#: inc/template-tags.php:46
msgid "Next &rarr;"
msgstr ""
#: inc/template-tags.php:55
#: inc/template-tags.php:53
msgid "Posts navigation"
msgstr ""
#: inc/template-tags.php:84
#: inc/template-tags.php:80
msgid "Post navigation"
msgstr ""
#: inc/template-tags.php:88
#: inc/template-tags.php:84
msgid "<span class=\"meta-nav\">Published In</span>%title"
msgstr ""
#: inc/template-tags.php:90
#: inc/template-tags.php:86
msgid "<span class=\"meta-nav\">Previous Post</span>%title"
msgstr ""
#: inc/template-tags.php:91
#: inc/template-tags.php:87
msgid "<span class=\"meta-nav\">Next Post</span>%title"
msgstr ""
#: inc/template-tags.php:110
#: inc/template-tags.php:104
msgid "Sticky"
msgstr ""
#: inc/widgets.php:44
#: inc/widgets.php:34
msgid "Twenty Fourteen Ephemera"
msgstr ""
#: inc/widgets.php:46
#: inc/widgets.php:36
msgid ""
"Use this widget to list your recent Aside, Quote, Video, Audio, Image, "
"Gallery, and Link posts."
msgstr ""
#: inc/widgets.php:53 taxonomy-post_format.php:30
msgid "Asides"
msgstr ""
#: inc/widgets.php:54 taxonomy-post_format.php:33
msgid "Images"
msgstr ""
#: inc/widgets.php:55 taxonomy-post_format.php:36
#: inc/widgets.php:55
msgid "More images"
msgstr ""
#: inc/widgets.php:58 taxonomy-post_format.php:36
msgid "Videos"
msgstr ""
#: inc/widgets.php:56 taxonomy-post_format.php:39
#: inc/widgets.php:59
msgid "More videos"
msgstr ""
#: inc/widgets.php:62 taxonomy-post_format.php:39
msgid "Audio"
msgstr ""
#: inc/widgets.php:57 taxonomy-post_format.php:42
#: inc/widgets.php:63
msgid "More audio"
msgstr ""
#: inc/widgets.php:66 taxonomy-post_format.php:42
msgid "Quotes"
msgstr ""
#: inc/widgets.php:58 taxonomy-post_format.php:45
#: inc/widgets.php:67
msgid "More quotes"
msgstr ""
#: inc/widgets.php:70 taxonomy-post_format.php:45
msgid "Links"
msgstr ""
#: inc/widgets.php:59 taxonomy-post_format.php:48
#: inc/widgets.php:71
msgid "More links"
msgstr ""
#: inc/widgets.php:74 taxonomy-post_format.php:48
msgid "Galleries"
msgstr ""
#: inc/widgets.php:153
#: inc/widgets.php:75
msgid "More galleries"
msgstr ""
#: inc/widgets.php:79 taxonomy-post_format.php:30
msgid "Asides"
msgstr ""
#: inc/widgets.php:80
msgid "More asides"
msgstr ""
#: inc/widgets.php:162
msgid "This gallery contains <a href=\"%1$s\" rel=\"bookmark\">%2$s photo</a>."
msgid_plural ""
"This gallery contains <a href=\"%1$s\" rel=\"bookmark\">%2$s photos</a>."
msgstr[0] ""
msgstr[1] ""
#: inc/widgets.php:194
msgid "More %s <span class=\"meta-nav\">&rarr;</span>"
#. translators: used with More archives link
#: inc/widgets.php:206
msgid "%s <span class=\"meta-nav\">&rarr;</span>"
msgstr ""
#: inc/widgets.php:242
#: inc/widgets.php:255
msgid "Title:"
msgstr ""
#: inc/widgets.php:245
#: inc/widgets.php:258
msgid "Number of posts to show:"
msgstr ""
#: inc/widgets.php:248
#: inc/widgets.php:261
msgid "Post format to show:"
msgstr ""

View File

@@ -4,7 +4,7 @@ Theme URI: http://wordpress.org/themes/twentyfourteen
Author: the WordPress team
Author URI: http://wordpress.org/
Description: In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.
Version: 1.0
Version: 1.1
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: black, green, white, light, dark, two-columns, three-columns, left-sidebar, right-sidebar, fixed-layout, responsive-layout, custom-background, custom-header, custom-menu, editor-style, featured-images, flexible-header, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready, accessibility-ready

View File

@@ -2,9 +2,9 @@
# This file is distributed under the GNU General Public License v2 or later.
msgid ""
msgstr ""
"Project-Id-Version: Twenty Thirteen 1.1\n"
"Project-Id-Version: Twenty Thirteen 1.2\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tags/twentythirteen\n"
"POT-Creation-Date: 2014-03-18 19:16:26+00:00\n"
"POT-Creation-Date: 2014-04-16 18:28:45+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -179,71 +179,71 @@ msgctxt "Bitter font: on or off"
msgid "on"
msgstr ""
#: functions.php:220
#: functions.php:218
msgid "Page %s"
msgstr ""
#: functions.php:235
#: functions.php:231
msgid "Main Widget Area"
msgstr ""
#: functions.php:237
#: functions.php:233
msgid "Appears in the footer section of the site."
msgstr ""
#: functions.php:245
#: functions.php:241
msgid "Secondary Widget Area"
msgstr ""
#: functions.php:247
#: functions.php:243
msgid "Appears on posts and pages in the sidebar."
msgstr ""
#: functions.php:272
#: functions.php:266
msgid "Posts navigation"
msgstr ""
#: functions.php:276
#: functions.php:270
msgid "<span class=\"meta-nav\">&larr;</span> Older posts"
msgstr ""
#: functions.php:280
#: functions.php:274
msgid "Newer posts <span class=\"meta-nav\">&rarr;</span>"
msgstr ""
#: functions.php:308
#: functions.php:300
msgid "Post navigation"
msgstr ""
#: functions.php:311
#: functions.php:303
msgctxt "Previous post link"
msgid "<span class=\"meta-nav\">&larr;</span> %title"
msgstr ""
#: functions.php:312
#: functions.php:304
msgctxt "Next post link"
msgid "%title <span class=\"meta-nav\">&rarr;</span>"
msgstr ""
#: functions.php:332
#: functions.php:322
msgid "Sticky"
msgstr ""
#. Translators: used between list items, there is a space after the comma.
#: functions.php:338 functions.php:344
#: functions.php:328 functions.php:334
msgid ", "
msgstr ""
#: functions.php:353
#: functions.php:343
msgid "View all posts by %s"
msgstr ""
#: functions.php:373
#: functions.php:363
msgctxt "1: post format name. 2: date"
msgid "%1$s on %2$s"
msgstr ""
#: functions.php:379
#: functions.php:369
msgid "Permalink to %s"
msgstr ""
@@ -278,23 +278,23 @@ msgstr ""
msgid "Next <span class=\"meta-nav\">&rarr;</span>"
msgstr ""
#: inc/back-compat.php:41 inc/back-compat.php:53 inc/back-compat.php:68
#: inc/back-compat.php:37 inc/back-compat.php:47 inc/back-compat.php:60
msgid ""
"Twenty Thirteen requires at least WordPress version 3.6. You are running "
"version %s. Please upgrade and try again."
msgstr ""
#: inc/custom-header.php:51
#: inc/custom-header.php:49
msgctxt "header image description"
msgid "Circle"
msgstr ""
#: inc/custom-header.php:56
#: inc/custom-header.php:54
msgctxt "header image description"
msgid "Diamond"
msgstr ""
#: inc/custom-header.php:61
#: inc/custom-header.php:59
msgctxt "header image description"
msgid "Star"
msgstr ""

View File

@@ -4,7 +4,7 @@ Theme URI: http://wordpress.org/themes/twentythirteen
Author: the WordPress team
Author URI: http://wordpress.org/
Description: The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.
Version: 1.1
Version: 1.2
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: black, brown, orange, tan, white, yellow, light, one-column, two-columns, right-sidebar, fluid-layout, responsive-layout, custom-header, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, translation-ready

View File

@@ -2,9 +2,9 @@
# This file is distributed under the GNU General Public License v2 or later.
msgid ""
msgstr ""
"Project-Id-Version: Twenty Twelve 1.3\n"
"Project-Id-Version: Twenty Twelve 1.4\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tags/twentytwelve\n"
"POT-Creation-Date: 2014-03-18 19:16:25+00:00\n"
"POT-Creation-Date: 2014-04-16 18:27:55+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -109,7 +109,7 @@ msgstr ""
#: content-aside.php:26 content-image.php:26 content-link.php:24
#: content-page.php:24 content-quote.php:23 content-status.php:40
#: content.php:51 functions.php:349 image.php:37
#: content.php:51 functions.php:345 image.php:37
msgid "Edit"
msgstr ""
@@ -174,95 +174,95 @@ msgctxt "Open Sans font: add new subset (greek, cyrillic, vietnamese)"
msgid "no-subset"
msgstr ""
#: functions.php:215
#: functions.php:213
msgid "Page %s"
msgstr ""
#: functions.php:244
#: functions.php:242
msgid "Main Sidebar"
msgstr ""
#: functions.php:246
#: functions.php:244
msgid ""
"Appears on posts and pages except the optional Front Page template, which "
"has its own widgets"
msgstr ""
#: functions.php:254
#: functions.php:252
msgid "First Front Page Widget Area"
msgstr ""
#: functions.php:256 functions.php:266
#: functions.php:254 functions.php:264
msgid ""
"Appears when using the optional Front Page template with a page set as "
"Static Front Page"
msgstr ""
#: functions.php:264
#: functions.php:262
msgid "Second Front Page Widget Area"
msgstr ""
#: functions.php:288 single.php:20
#: functions.php:286 single.php:20
msgid "Post navigation"
msgstr ""
#: functions.php:289
#: functions.php:287
msgid "<span class=\"meta-nav\">&larr;</span> Older posts"
msgstr ""
#: functions.php:290
#: functions.php:288
msgid "Newer posts <span class=\"meta-nav\">&rarr;</span>"
msgstr ""
#: functions.php:317
#: functions.php:313
msgid "Pingback:"
msgstr ""
#: functions.php:317
#: functions.php:313
msgid "(Edit)"
msgstr ""
#: functions.php:332
#: functions.php:328
msgid "Post author"
msgstr ""
#. translators: 1: date, 2: time
#: functions.php:338
#: functions.php:334
msgid "%1$s at %2$s"
msgstr ""
#: functions.php:344
#: functions.php:340
msgid "Your comment is awaiting moderation."
msgstr ""
#: functions.php:353
#: functions.php:349
msgid "Reply"
msgstr ""
#. Translators: used between list items, there is a space after the comma.
#: functions.php:376 functions.php:379
#: functions.php:370 functions.php:373
msgid ", "
msgstr ""
#: functions.php:390
#: functions.php:384
msgid "View all posts by %s"
msgstr ""
#. Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's
#. name.
#: functions.php:396
#: functions.php:390
msgid ""
"This entry was posted in %1$s and tagged %2$s on %3$s<span class=\"by-author"
"\"> by %4$s</span>."
msgstr ""
#: functions.php:398
#: functions.php:392
msgid ""
"This entry was posted in %1$s on %3$s<span class=\"by-author\"> by %4$s</"
"span>."
msgstr ""
#: functions.php:400
#: functions.php:394
msgid "This entry was posted on %3$s<span class=\"by-author\"> by %4$s</span>."
msgstr ""

View File

@@ -4,7 +4,7 @@ Theme URI: http://wordpress.org/themes/twentytwelve
Author: the WordPress team
Author URI: http://wordpress.org/
Description: The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.
Version: 1.3
Version: 1.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: light, gray, white, one-column, two-columns, right-sidebar, fluid-layout, responsive-layout, custom-background, custom-header, custom-menu, editor-style, featured-images, flexible-header, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready

View File

@@ -519,11 +519,12 @@ class getid3_lib
}
public static function XML2array($XMLstring) {
if (function_exists('simplexml_load_string')) {
if (function_exists('get_object_vars')) {
$XMLobject = simplexml_load_string($XMLstring);
return self::SimpleXMLelement2array($XMLobject);
}
if ( function_exists( 'simplexml_load_string' ) && function_exists( 'libxml_disable_entity_loader' ) ) {
$loader = libxml_disable_entity_loader( true );
$XMLobject = simplexml_load_string( $XMLstring, 'SimpleXMLElement', LIBXML_NOENT );
$return = self::SimpleXMLelement2array( $XMLobject );
libxml_disable_entity_loader( $loader );
return $return;
}
return false;
}

View File

@@ -1100,8 +1100,10 @@ function map_meta_cap( $cap, $user_id ) {
case 'edit_post':
case 'edit_page':
$post = get_post( $args[0] );
if ( empty( $post ) )
if ( empty( $post ) ) {
$caps[] = 'do_not_allow';
break;
}
if ( 'revision' == $post->post_type ) {
$post = get_post( $post->post_parent );
@@ -1215,7 +1217,16 @@ function map_meta_cap( $cap, $user_id ) {
if ( empty( $comment ) )
break;
$post = get_post( $comment->comment_post_ID );
$caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
/*
* If the post doesn't exist, we have an orphaned comment.
* Fall back to the edit_posts capability, instead.
*/
if ( $post ) {
$caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
} else {
$caps = map_meta_cap( 'edit_posts', $user_id );
}
break;
case 'unfiltered_upload':
if ( defined('ALLOW_UNFILTERED_UPLOADS') && ALLOW_UNFILTERED_UPLOADS && ( !is_multisite() || is_super_admin( $user_id ) ) )
@@ -1347,21 +1358,25 @@ function current_user_can( $capability ) {
* @return bool
*/
function current_user_can_for_blog( $blog_id, $capability ) {
if ( is_multisite() )
switch_to_blog( $blog_id );
$switched = is_multisite() ? switch_to_blog( $blog_id ) : false;
$current_user = wp_get_current_user();
if ( empty( $current_user ) )
if ( empty( $current_user ) ) {
if ( $switched ) {
restore_current_blog();
}
return false;
}
$args = array_slice( func_get_args(), 2 );
$args = array_merge( array( $capability ), $args );
$can = call_user_func_array( array( $current_user, 'has_cap' ), $args );
if ( is_multisite() )
if ( $switched ) {
restore_current_blog();
}
return $can;
}

View File

@@ -203,11 +203,37 @@ class IXR_Message
{
// first remove the XML declaration
// merged from WP #10698 - this method avoids the RAM usage of preg_replace on very large messages
$header = preg_replace( '/<\?xml.*?\?'.'>/', '', substr($this->message, 0, 100), 1);
$this->message = substr_replace($this->message, $header, 0, 100);
if (trim($this->message) == '') {
$header = preg_replace( '/<\?xml.*?\?'.'>/s', '', substr( $this->message, 0, 100 ), 1 );
$this->message = trim( substr_replace( $this->message, $header, 0, 100 ) );
if ( '' == $this->message ) {
return false;
}
// Then remove the DOCTYPE
$header = preg_replace( '/^<!DOCTYPE[^>]*+>/i', '', substr( $this->message, 0, 200 ), 1 );
$this->message = trim( substr_replace( $this->message, $header, 0, 200 ) );
if ( '' == $this->message ) {
return false;
}
// Check that the root tag is valid
$root_tag = substr( $this->message, 0, strcspn( substr( $this->message, 0, 20 ), "> \t\r\n" ) );
if ( '<!DOCTYPE' === strtoupper( $root_tag ) ) {
return false;
}
if ( ! in_array( $root_tag, array( '<methodCall', '<methodResponse', '<fault' ) ) ) {
return false;
}
// Bail if there are too many elements to parse
$element_limit = 30000;
if ( function_exists( 'apply_filters' ) ) {
$element_limit = apply_filters( 'xmlrpc_element_limit', $element_limit );
}
if ( $element_limit && 2 * $element_limit < substr_count( $this->message, '<' ) ) {
return false;
}
$this->_parser = xml_parser_create();
// Set XML parser to take the case of tags in to account
xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false);

View File

@@ -214,6 +214,10 @@ class PasswordHash {
function HashPassword($password)
{
if ( strlen( $password ) > 4096 ) {
return '*';
}
$random = '';
if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) {
@@ -249,6 +253,10 @@ class PasswordHash {
function CheckPassword($password, $stored_hash)
{
if ( strlen( $password ) > 4096 ) {
return false;
}
$hash = $this->crypt_private($password, $stored_hash);
if ($hash[0] == '*')
$hash = crypt($password, $stored_hash);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -999,20 +999,23 @@ class Snoopy
if(!empty($this->user) || !empty($this->pass))
$headers[] = "Authorization: BASIC ".base64_encode($this->user.":".$this->pass);
for($curr_header = 0; $curr_header < count($headers); $curr_header++) {
$safer_header = strtr( $headers[$curr_header], "\"", " " );
$cmdline_params .= " -H \"".$safer_header."\"";
$headerfile = tempnam( $this->temp_dir, "sno" );
$cmdline_params = '-k -D ' . escapeshellarg( $headerfile );
foreach ( $headers as $header ) {
$cmdline_params .= ' -H ' . escapeshellarg( $header );
}
if(!empty($body))
$cmdline_params .= " -d \"$body\"";
if ( ! empty( $body ) ) {
$cmdline_params .= ' -d ' . escapeshellarg( $body );
}
if($this->read_timeout > 0)
$cmdline_params .= " -m ".$this->read_timeout;
if ( $this->read_timeout > 0 ) {
$cmdline_params .= ' -m ' . escapeshellarg( $this->read_timeout );
}
$headerfile = tempnam($this->temp_dir, "sno");
exec($this->curl_path." -k -D \"$headerfile\"".$cmdline_params." \"".escapeshellcmd($URI)."\"",$results,$return);
exec( $this->curl_path . ' ' . $cmdline_params . ' ' . escapeshellarg( $URI ), $results, $return );
if($return)
{

View File

@@ -1119,22 +1119,19 @@ final class WP_Customize_Widgets {
}
/**
* Get a widget instance's hash key.
* Get MAC for a serialized widget instance string.
*
* Serialize an instance and hash it with the AUTH_KEY; when a JS value is
* posted back to save, this instance hash key is used to ensure that the
* serialized_instance was not tampered with, but that it had originated
* from WordPress and so is sanitized.
* Allows values posted back from JS to be rejected if any tampering of the
* data has occurred.
*
* @since 3.9.0
* @access protected
*
* @param array $instance Widget instance.
* @return string Widget instance's hash key.
* @param string $serialized_instance Widget instance.
* @return string MAC for serialized widget instance.
*/
protected function get_instance_hash_key( $instance ) {
$hash = md5( AUTH_KEY . serialize( $instance ) );
return $hash;
protected function get_instance_hash_key( $serialized_instance ) {
return wp_hash( $serialized_instance );
}
/**
@@ -1162,18 +1159,19 @@ final class WP_Customize_Widgets {
}
$decoded = base64_decode( $value['encoded_serialized_instance'], true );
if ( false === $decoded ) {
return null;
}
$instance = unserialize( $decoded );
if ( ! hash_equals( $this->get_instance_hash_key( $decoded ), $value['instance_hash_key'] ) ) {
return null;
}
$instance = unserialize( $decoded );
if ( false === $instance ) {
return null;
}
if ( $this->get_instance_hash_key( $instance ) !== $value['instance_hash_key'] ) {
return null;
}
return $instance;
}
@@ -1194,7 +1192,7 @@ final class WP_Customize_Widgets {
'encoded_serialized_instance' => base64_encode( $serialized ),
'title' => empty( $value['title'] ) ? '' : $value['title'],
'is_widget_customizer_js_value' => true,
'instance_hash_key' => $this->get_instance_hash_key( $value ),
'instance_hash_key' => $this->get_instance_hash_key( $serialized ),
);
}
return $value;

View File

@@ -103,12 +103,6 @@ final class _WP_Editors {
// A cookie (set when a user resizes the editor) overrides the height.
$cookie = (int) get_user_setting( 'ed_size' );
// Upgrade an old TinyMCE cookie if it is still around, and the new one isn't.
if ( ! $cookie && isset( $_COOKIE['TinyMCE_content_size'] ) ) {
parse_str( $_COOKIE['TinyMCE_content_size'], $cookie );
$cookie = $cookie['ch'];
}
if ( $cookie )
$set['editor_height'] = $cookie;
}
@@ -241,11 +235,11 @@ final class _WP_Editors {
if ( empty(self::$first_init) ) {
if ( is_admin() ) {
add_action( 'admin_print_footer_scripts', array( __CLASS__, 'editor_js'), 50 );
add_action( 'admin_footer', array( __CLASS__, 'enqueue_scripts'), 1 );
add_action( 'admin_print_footer_scripts', array( __CLASS__, 'editor_js' ), 50 );
add_action( 'admin_print_footer_scripts', array( __CLASS__, 'enqueue_scripts' ), 1 );
} else {
add_action( 'wp_print_footer_scripts', array( __CLASS__, 'editor_js'), 50 );
add_action( 'wp_footer', array( __CLASS__, 'enqueue_scripts'), 1 );
add_action( 'wp_print_footer_scripts', array( __CLASS__, 'editor_js' ), 50 );
add_action( 'wp_print_footer_scripts', array( __CLASS__, 'enqueue_scripts' ), 1 );
}
}

View File

@@ -57,7 +57,7 @@ class WP_Embed {
add_shortcode( 'embed', array( $this, 'shortcode' ) );
// Do the shortcode (only the [embed] one is registered)
$content = do_shortcode( $content );
$content = do_shortcode( $content, true );
// Put the original shortcodes back
$shortcode_tags = $orig_shortcode_tags;
@@ -291,7 +291,14 @@ class WP_Embed {
* @return string Potentially modified $content.
*/
function autoembed( $content ) {
return preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', array( $this, 'autoembed_callback' ), $content );
// Replace line breaks from all HTML elements with placeholders.
$content = wp_replace_in_html_tags( $content, array( "\n" => '<!-- wp-line-break -->' ) );
// Find URLs that are on their own line.
$content = preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', array( $this, 'autoembed_callback' ), $content );
// Put the line breaks back.
return str_replace( '<!-- wp-line-break -->', "\n", $content );
}
/**

View File

@@ -216,7 +216,7 @@ final class WP_Theme implements ArrayAccess {
} elseif ( ! file_exists( $this->theme_root . '/' . $theme_file ) ) {
$this->headers['Name'] = $this->stylesheet;
if ( ! file_exists( $this->theme_root . '/' . $this->stylesheet ) )
$this->errors = new WP_Error( 'theme_not_found', sprintf( __( 'The theme directory "%s" does not exist.' ), $this->stylesheet ) );
$this->errors = new WP_Error( 'theme_not_found', sprintf( __( 'The theme directory "%s" does not exist.' ), esc_html( $this->stylesheet ) ) );
else
$this->errors = new WP_Error( 'theme_no_stylesheet', __( 'Stylesheet is missing.' ) );
$this->template = $this->stylesheet;
@@ -263,7 +263,7 @@ final class WP_Theme implements ArrayAccess {
$theme_root_template = $directories[ $this->template ]['theme_root'];
} else {
// Parent theme is missing.
$this->errors = new WP_Error( 'theme_no_parent', sprintf( __( 'The parent theme is missing. Please install the "%s" parent theme.' ), $this->template ) );
$this->errors = new WP_Error( 'theme_no_parent', sprintf( __( 'The parent theme is missing. Please install the "%s" parent theme.' ), esc_html( $this->template ) ) );
$this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
$this->parent = new WP_Theme( $this->template, $this->theme_root, $this );
return;
@@ -275,11 +275,11 @@ final class WP_Theme implements ArrayAccess {
// If we are a parent, then there is a problem. Only two generations allowed! Cancel things out.
if ( is_a( $_child, 'WP_Theme' ) && $_child->template == $this->stylesheet ) {
$_child->parent = null;
$_child->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), $_child->template ) );
$_child->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), esc_html( $_child->template ) ) );
$_child->cache_add( 'theme', array( 'headers' => $_child->headers, 'errors' => $_child->errors, 'stylesheet' => $_child->stylesheet, 'template' => $_child->template ) );
// The two themes actually reference each other with the Template header.
if ( $_child->stylesheet == $this->template ) {
$this->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), $this->template ) );
$this->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), esc_html( $this->template ) ) );
$this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
}
return;
@@ -654,8 +654,9 @@ final class WP_Theme implements ArrayAccess {
private function markup_header( $header, $value, $translate ) {
switch ( $header ) {
case 'Name' :
if ( empty( $value ) )
$value = $this->get_stylesheet();
if ( empty( $value ) ) {
$value = esc_html( $this->get_stylesheet() );
}
break;
case 'Description' :
$value = wptexturize( $value );

View File

@@ -1108,6 +1108,56 @@ class wp_xmlrpc_server extends IXR_Server {
return $count > 1;
}
private function _validate_boolean( $var ) {
if ( is_bool( $var ) ) {
return $var;
}
if ( is_string( $var ) && 'false' === strtolower( $var ) ) {
return false;
}
return (bool) $var;
}
/**
* Encapsulate the logic for sticking a post
* and determining if the user has permission to do so
*
* @since 4.3.0
* @access private
*
* @param array $post_data
* @param bool $update
* @return void|IXR_Error
*/
private function _toggle_sticky( $post_data, $update = false ) {
$post_type = get_post_type_object( $post_data['post_type'] );
// Private and password-protected posts cannot be stickied.
if ( 'private' === $post_data['post_status'] || ! empty( $post_data['post_password'] ) ) {
// Error if the client tried to stick the post, otherwise, silently unstick.
if ( ! empty( $post_data['sticky'] ) ) {
return new IXR_Error( 401, __( 'Sorry, you cannot stick a private post.' ) );
}
if ( $update ) {
unstick_post( $post_data['ID'] );
}
} elseif ( isset( $post_data['sticky'] ) ) {
if ( ! current_user_can( $post_type->cap->edit_others_posts ) ) {
return new IXR_Error( 401, __( 'Sorry, you are not allowed to stick this post.' ) );
}
$sticky = $this->_validate_boolean( $post_data['sticky'] );
if ( $sticky ) {
stick_post( $post_data['ID'] );
} else {
unstick_post( $post_data['ID'] );
}
}
}
/**
* Helper method for wp_newPost and wp_editPost, containing shared logic.
*
@@ -1200,20 +1250,9 @@ class wp_xmlrpc_server extends IXR_Server {
$post_ID = $post_data['ID'];
if ( $post_data['post_type'] == 'post' ) {
// Private and password-protected posts cannot be stickied.
if ( $post_data['post_status'] == 'private' || ! empty( $post_data['post_password'] ) ) {
// Error if the client tried to stick the post, otherwise, silently unstick.
if ( ! empty( $post_data['sticky'] ) )
return new IXR_Error( 401, __( 'Sorry, you cannot stick a private post.' ) );
if ( $update )
unstick_post( $post_ID );
} elseif ( isset( $post_data['sticky'] ) ) {
if ( ! current_user_can( $post_type->cap->edit_others_posts ) )
return new IXR_Error( 401, __( 'Sorry, you are not allowed to stick this post.' ) );
if ( $post_data['sticky'] )
stick_post( $post_ID );
else
unstick_post( $post_ID );
$error = $this->_toggle_sticky( $post_data, $update );
if ( $error ) {
return $error;
}
}
@@ -4586,10 +4625,12 @@ class wp_xmlrpc_server extends IXR_Server {
// Only posts can be sticky
if ( $post_type == 'post' && isset( $content_struct['sticky'] ) ) {
if ( $content_struct['sticky'] == true )
stick_post( $post_ID );
elseif ( $content_struct['sticky'] == false )
unstick_post( $post_ID );
$data = $postdata;
$data['sticky'] = $content_struct['sticky'];
$error = $this->_toggle_sticky( $data );
if ( $error ) {
return $error;
}
}
if ( isset($content_struct['custom_fields']) )
@@ -4862,11 +4903,12 @@ class wp_xmlrpc_server extends IXR_Server {
$tags_input = isset( $content_struct['mt_keywords'] ) ? $content_struct['mt_keywords'] : null;
if ( ('publish' == $post_status) ) {
if ( ( 'page' == $post_type ) && !current_user_can('publish_pages') )
return new IXR_Error(401, __('Sorry, you do not have the right to publish this page.'));
else if ( !current_user_can('publish_posts') )
return new IXR_Error(401, __('Sorry, you do not have the right to publish this post.'));
if ( 'publish' == $post_status || 'private' == $post_status ) {
if ( 'page' == $post_type && ! current_user_can( 'publish_pages' ) ) {
return new IXR_Error( 401, __( 'Sorry, you do not have the right to publish this page.' ) );
} elseif ( ! current_user_can( 'publish_posts' ) ) {
return new IXR_Error( 401, __( 'Sorry, you do not have the right to publish this post.' ) );
}
}
if ( $post_more )
@@ -4906,10 +4948,13 @@ class wp_xmlrpc_server extends IXR_Server {
// Only posts can be sticky
if ( $post_type == 'post' && isset( $content_struct['sticky'] ) ) {
if ( $content_struct['sticky'] == true )
stick_post( $post_ID );
elseif ( $content_struct['sticky'] == false )
unstick_post( $post_ID );
$data = $newpost;
$data['sticky'] = $content_struct['sticky'];
$data['post_type'] = 'post';
$error = $this->_toggle_sticky( $data, true );
if ( $error ) {
return $error;
}
}
if ( isset($content_struct['custom_fields']) )

View File

@@ -13,23 +13,141 @@ if ( !function_exists('_') ) {
}
}
if ( !function_exists('mb_substr') ):
function mb_substr( $str, $start, $length=null, $encoding=null ) {
return _mb_substr($str, $start, $length, $encoding);
/**
* Returns whether PCRE/u (PCRE_UTF8 modifier) is available for use.
*
* @ignore
* @since 4.2.2
* @access private
*
* @param bool $set - Used for testing only
* null : default - get PCRE/u capability
* false : Used for testing - return false for future calls to this function
* 'reset': Used for testing - restore default behavior of this function
*/
function _wp_can_use_pcre_u( $set = null ) {
static $utf8_pcre = 'reset';
if ( null !== $set ) {
$utf8_pcre = $set;
}
if ( 'reset' === $utf8_pcre ) {
$utf8_pcre = @preg_match( '/^./u', 'a' );
}
return $utf8_pcre;
}
if ( ! function_exists( 'mb_substr' ) ) :
function mb_substr( $str, $start, $length = null, $encoding = null ) {
return _mb_substr( $str, $start, $length, $encoding );
}
endif;
function _mb_substr( $str, $start, $length=null, $encoding=null ) {
// the solution below, works only for utf-8, so in case of a different
// charset, just use built-in substr
$charset = get_option( 'blog_charset' );
if ( !in_array( $charset, array('utf8', 'utf-8', 'UTF8', 'UTF-8') ) ) {
return is_null( $length )? substr( $str, $start ) : substr( $str, $start, $length);
/*
* Only understands UTF-8 and 8bit. All other character sets will be treated as 8bit.
* For $encoding === UTF-8, the $str input is expected to be a valid UTF-8 byte sequence.
* The behavior of this function for invalid inputs is undefined.
*/
function _mb_substr( $str, $start, $length = null, $encoding = null ) {
if ( null === $encoding ) {
$encoding = get_option( 'blog_charset' );
}
// use the regex unicode support to separate the UTF-8 characters into an array
preg_match_all( '/./us', $str, $match );
$chars = is_null( $length )? array_slice( $match[0], $start ) : array_slice( $match[0], $start, $length );
return implode( '', $chars );
// The solution below works only for UTF-8,
// so in case of a different charset just use built-in substr()
if ( ! in_array( $encoding, array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) ) {
return is_null( $length ) ? substr( $str, $start ) : substr( $str, $start, $length );
}
if ( _wp_can_use_pcre_u() ) {
// Use the regex unicode support to separate the UTF-8 characters into an array
preg_match_all( '/./us', $str, $match );
$chars = is_null( $length ) ? array_slice( $match[0], $start ) : array_slice( $match[0], $start, $length );
return implode( '', $chars );
}
$regex = '/(
[\x00-\x7F] # single-byte sequences 0xxxxxxx
| [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx
| \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2
| [\xE1-\xEC][\x80-\xBF]{2}
| \xED[\x80-\x9F][\x80-\xBF]
| [\xEE-\xEF][\x80-\xBF]{2}
| \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3
| [\xF1-\xF3][\x80-\xBF]{3}
| \xF4[\x80-\x8F][\x80-\xBF]{2}
)/x';
$chars = array( '' ); // Start with 1 element instead of 0 since the first thing we do is pop
do {
// We had some string left over from the last round, but we counted it in that last round.
array_pop( $chars );
// Split by UTF-8 character, limit to 1000 characters (last array element will contain the rest of the string)
$pieces = preg_split( $regex, $str, 1000, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
$chars = array_merge( $chars, $pieces );
} while ( count( $pieces ) > 1 && $str = array_pop( $pieces ) ); // If there's anything left over, repeat the loop.
return join( '', array_slice( $chars, $start, $length ) );
}
if ( ! function_exists( 'mb_strlen' ) ) :
function mb_strlen( $str, $encoding = null ) {
return _mb_strlen( $str, $encoding );
}
endif;
/*
* Only understands UTF-8 and 8bit. All other character sets will be treated as 8bit.
* For $encoding === UTF-8, the $str input is expected to be a valid UTF-8 byte sequence.
* The behavior of this function for invalid inputs is undefined.
*/
function _mb_strlen( $str, $encoding = null ) {
if ( null === $encoding ) {
$encoding = get_option( 'blog_charset' );
}
// The solution below works only for UTF-8,
// so in case of a different charset just use built-in strlen()
if ( ! in_array( $encoding, array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) ) {
return strlen( $str );
}
if ( _wp_can_use_pcre_u() ) {
// Use the regex unicode support to separate the UTF-8 characters into an array
preg_match_all( '/./us', $str, $match );
return count( $match[0] );
}
$regex = '/(?:
[\x00-\x7F] # single-byte sequences 0xxxxxxx
| [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx
| \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2
| [\xE1-\xEC][\x80-\xBF]{2}
| \xED[\x80-\x9F][\x80-\xBF]
| [\xEE-\xEF][\x80-\xBF]{2}
| \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3
| [\xF1-\xF3][\x80-\xBF]{3}
| \xF4[\x80-\x8F][\x80-\xBF]{2}
)/x';
$count = 1; // Start at 1 instead of 0 since the first thing we do is decrement
do {
// We had some string left over from the last round, but we counted it in that last round.
$count--;
// Split by UTF-8 character, limit to 1000 characters (last array element will contain the rest of the string)
$pieces = preg_split( $regex, $str, 1000 );
// Increment
$count += count( $pieces );
} while ( $str = array_pop( $pieces ) ); // If there's anything left over, repeat the loop.
// Fencepost: preg_split() always returns one extra item in the array
return --$count;
}
if ( !function_exists('hash_hmac') ):
@@ -94,3 +212,32 @@ if ( !function_exists('json_decode') ) {
return is_array($data) ? array_map(__FUNCTION__, $data) : $data;
}
}
if ( ! function_exists( 'hash_equals' ) ) :
/**
* Compare two strings in constant time.
*
* This function was added in PHP 5.6.
* It can leak the length of a string.
*
* @since 3.9.2
*
* @param string $a Expected string.
* @param string $b Actual string.
* @return bool Whether strings are equal.
*/
function hash_equals( $a, $b ) {
$a_length = strlen( $a );
if ( $a_length !== strlen( $b ) ) {
return false;
}
$result = 0;
// Do not attempt to "optimize" this.
for ( $i = 0; $i < $a_length; $i++ ) {
$result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] );
}
return $result === 0;
}
endif;

View File

@@ -279,6 +279,10 @@ div.mce-path {
border-color: #bbb;
}
.mce-toolbar .mce-btn-group .mce-btn.mce-listbox span {
font-size: 13px;
}
.mce-panel .mce-btn i.mce-caret {
border-top: 6px solid #777;
margin-right: 2px;

File diff suppressed because one or more lines are too long

View File

@@ -279,6 +279,10 @@ div.mce-path {
border-color: #bbb;
}
.mce-toolbar .mce-btn-group .mce-btn.mce-listbox span {
font-size: 13px;
}
.mce-panel .mce-btn i.mce-caret {
border-top: 6px solid #777;
margin-left: 2px;

File diff suppressed because one or more lines are too long

View File

@@ -1781,7 +1781,8 @@
margin-top: 24px;
}
.media-embed .setting input.hidden {
.media-embed .setting input.hidden,
.media-embed .setting textarea.hidden {
display: none;
}

File diff suppressed because one or more lines are too long

View File

@@ -1781,7 +1781,8 @@
margin-top: 24px;
}
.media-embed .setting input.hidden {
.media-embed .setting input.hidden,
.media-embed .setting textarea.hidden {
display: none;
}

File diff suppressed because one or more lines are too long

View File

@@ -732,7 +732,7 @@ class WP_Widget_Recent_Posts extends WP_Widget {
$cache[ $args['widget_id'] ] = ob_get_flush();
wp_cache_set( 'widget_recent_posts', $cache, 'widget' );
} else {
ob_flush();
ob_end_flush();
}
}
@@ -1343,16 +1343,17 @@ class WP_Widget_Tag_Cloud extends WP_Widget {
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label>
<input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo $title; ?>" />
<input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo esc_attr( $title ); ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('nav_menu'); ?>"><?php _e('Select Menu:'); ?></label>
<select id="<?php echo $this->get_field_id('nav_menu'); ?>" name="<?php echo $this->get_field_name('nav_menu'); ?>">
<option value="0"><?php _e( '&mdash; Select &mdash;' ) ?></option>
<?php
foreach ( $menus as $menu ) {
echo '<option value="' . $menu->term_id . '"'
. selected( $nav_menu, $menu->term_id, false )
. '>'. $menu->name . '</option>';
. '>'. esc_html( $menu->name ) . '</option>';
}
?>
</select>

View File

@@ -152,7 +152,14 @@ function wptexturize($text) {
$no_texturize_tags_stack = array();
$no_texturize_shortcodes_stack = array();
$textarr = preg_split('/(<.*>|\[.*\])/Us', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
// Look for shortcodes and HTML elements.
$shortcode_regex =
'\[' // Find start of shortcode.
. '[^\[\]<>]++' // Shortcodes do not contain other shortcodes. Possessive critical.
. '\]'; // Find end of shortcode.
$textarr = preg_split("/(<[^>]*>|$shortcode_regex)/s", $text, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach ( $textarr as &$curl ) {
if ( empty( $curl ) ) {
@@ -163,7 +170,7 @@ function wptexturize($text) {
$first = $curl[0];
if ( '<' === $first ) {
_wptexturize_pushpop_element($curl, $no_texturize_tags_stack, $no_texturize_tags, '<', '>');
} elseif ( '[' === $first ) {
} elseif ( '[' === $first && 1 === preg_match( '/^' . $shortcode_regex . '$/', $curl ) ) {
_wptexturize_pushpop_element($curl, $no_texturize_shortcodes_stack, $no_texturize_shortcodes, '[', ']');
} elseif ( empty($no_texturize_shortcodes_stack) && empty($no_texturize_tags_stack) ) {
@@ -214,6 +221,8 @@ function _wptexturize_pushpop_element($text, &$stack, $disabled_elements, $openi
array_push($stack, $matches[1]);
}
} elseif ( 0 == count( $stack ) ) {
// Stack is empty. Just stop.
} else {
// Closing? Check $text+2 against disabled elements
$c = preg_quote($closing, '/');
@@ -282,6 +291,9 @@ function wpautop($pee, $br = true) {
$pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
$pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
// Find newlines in all elements and add placeholders.
$pee = wp_replace_in_html_tags( $pee, array( "\n" => " <!-- wpnl --> " ) );
if ( strpos( $pee, '</object>' ) !== false ) {
// no P/BR around param and embed
$pee = preg_replace( '|(<object[^>]*>)\s*|', '$1', $pee );
@@ -327,9 +339,109 @@ function wpautop($pee, $br = true) {
if ( !empty($pre_tags) )
$pee = str_replace(array_keys($pre_tags), array_values($pre_tags), $pee);
// Restore newlines in all elements.
$pee = str_replace( " <!-- wpnl --> ", "\n", $pee );
return $pee;
}
/**
* Separate HTML elements and comments from the text.
*
* @since 4.2.4
*
* @param string $input The text which has to be formatted.
* @return array The formatted text.
*/
function wp_html_split( $input ) {
static $regex;
if ( ! isset( $regex ) ) {
$comments =
'!' // Start of comment, after the <.
. '(?:' // Unroll the loop: Consume everything until --> is found.
. '-(?!->)' // Dash not followed by end of comment.
. '[^\-]*+' // Consume non-dashes.
. ')*+' // Loop possessively.
. '(?:-->)?'; // End of comment. If not found, match all input.
$cdata =
'!\[CDATA\[' // Start of comment, after the <.
. '[^\]]*+' // Consume non-].
. '(?:' // Unroll the loop: Consume everything until ]]> is found.
. '](?!]>)' // One ] not followed by end of comment.
. '[^\]]*+' // Consume non-].
. ')*+' // Loop possessively.
. '(?:]]>)?'; // End of comment. If not found, match all input.
$regex =
'/(' // Capture the entire match.
. '<' // Find start of element.
. '(?(?=!--)' // Is this a comment?
. $comments // Find end of comment.
. '|'
. '(?(?=!\[CDATA\[)' // Is this a comment?
. $cdata // Find end of comment.
. '|'
. '[^>]*>?' // Find end of element. If not found, match all input.
. ')'
. ')'
. ')/s';
}
return preg_split( $regex, $input, -1, PREG_SPLIT_DELIM_CAPTURE );
}
/**
* Replace characters or phrases within HTML elements only.
*
* @since 4.2.3
*
* @param string $haystack The text which has to be formatted.
* @param array $replace_pairs In the form array('from' => 'to', ...).
* @return string The formatted text.
*/
function wp_replace_in_html_tags( $haystack, $replace_pairs ) {
// Find all elements.
$textarr = wp_html_split( $haystack );
$changed = false;
// Optimize when searching for one item.
if ( 1 === count( $replace_pairs ) ) {
// Extract $needle and $replace.
foreach ( $replace_pairs as $needle => $replace );
// Loop through delimeters (elements) only.
for ( $i = 1, $c = count( $textarr ); $i < $c; $i += 2 ) {
if ( false !== strpos( $textarr[$i], $needle ) ) {
$textarr[$i] = str_replace( $needle, $replace, $textarr[$i] );
$changed = true;
}
}
} else {
// Extract all $needles.
$needles = array_keys( $replace_pairs );
// Loop through delimeters (elements) only.
for ( $i = 1, $c = count( $textarr ); $i < $c; $i += 2 ) {
foreach ( $needles as $needle ) {
if ( false !== strpos( $textarr[$i], $needle ) ) {
$textarr[$i] = strtr( $textarr[$i], $replace_pairs );
$changed = true;
// After one strtr() break out of the foreach loop and look at next element.
break;
}
}
}
}
if ( $changed ) {
$haystack = implode( $textarr );
}
return $haystack;
}
/**
* Newline preservation help function for wpautop
*
@@ -912,7 +1024,8 @@ function remove_accents($string) {
* operating systems and special characters requiring special escaping
* to manipulate at the command line. Replaces spaces and consecutive
* dashes with a single dash. Trims period, dash and underscore from beginning
* and end of filename.
* and end of filename. It is not guaranteed that this function will return a
* filename that is allowed to be uploaded.
*
* @since 2.1.0
*
@@ -936,6 +1049,14 @@ function sanitize_file_name( $filename ) {
$filename = preg_replace('/[\s-]+/', '-', $filename);
$filename = trim($filename, '.-_');
if ( false === strpos( $filename, '.' ) ) {
$mime_types = wp_get_mime_types();
$filetype = wp_check_filetype( 'test.' . $filename, $mime_types );
if ( $filetype['ext'] === $filename ) {
$filename = 'unnamed-file.' . $filetype['ext'];
}
}
// Split the filename into a base and extension[s]
$parts = explode('.', $filename);
@@ -1169,21 +1290,23 @@ function sanitize_title_with_dashes( $title, $raw_title = '', $context = 'displa
}
/**
* Ensures a string is a valid SQL order by clause.
* Ensures a string is a valid SQL 'order by' clause.
*
* Accepts one or more columns, with or without ASC/DESC, and also accepts
* RAND().
* Accepts one or more columns, with or without a sort order (ASC / DESC).
* e.g. 'column_1', 'column_1, column_2', 'column_1 ASC, column_2 DESC' etc.
*
* Also accepts 'RAND()'.
*
* @since 2.5.1
*
* @param string $orderby Order by string to be checked.
* @return string|bool Returns the order by clause if it is a match, false otherwise.
* @param string $orderby Order by clause to be validated.
* @return string|bool Returns $orderby if valid, false otherwise.
*/
function sanitize_sql_orderby( $orderby ){
preg_match('/^\s*([a-z0-9_]+(\s+(ASC|DESC))?(\s*,\s*|\s*$))+|^\s*RAND\(\s*\)\s*$/i', $orderby, $obmatches);
if ( !$obmatches )
return false;
return $orderby;
function sanitize_sql_orderby( $orderby ) {
if ( preg_match( '/^\s*(([a-z0-9_]+|`[a-z0-9_]+`)(\s+(ASC|DESC))?\s*(,\s*(?=[a-z0-9_`])|$))+$/i', $orderby ) || preg_match( '/^\s*RAND\(\s*\)\s*$/i', $orderby ) ) {
return $orderby;
}
return false;
}
/**

View File

@@ -1977,7 +1977,7 @@ function wp_check_filetype( $filename, $mimes = null ) {
* If it's determined that the extension does not match the file's real type,
* then the "proper_filename" value will be set with a proper filename and extension.
*
* Currently this function only supports validating images known to getimagesize().
* Currently this function only supports renaming images validated via wp_get_image_mime().
*
* @since 3.0.0
*
@@ -1998,14 +1998,15 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
if ( ! file_exists( $file ) )
return compact( 'ext', 'type', 'proper_filename' );
// We're able to validate images using GD
if ( $type && 0 === strpos( $type, 'image/' ) && function_exists('getimagesize') ) {
// Validate image types.
if ( $type && 0 === strpos( $type, 'image/' ) ) {
// Attempt to figure out what type of image it actually is
$imgstats = @getimagesize( $file );
$real_mime = wp_get_image_mime( $file );
// If getimagesize() knows what kind of image it really is and if the real MIME doesn't match the claimed MIME
if ( !empty($imgstats['mime']) && $imgstats['mime'] != $type ) {
if ( ! $real_mime ) {
$type = $ext = false;
} elseif ( $real_mime != $type ) {
/**
* Filter the list mapping image mime types to their respective extensions.
*
@@ -2022,10 +2023,10 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
) );
// Replace whatever is after the last period in the filename with the correct extension
if ( ! empty( $mime_to_ext[ $imgstats['mime'] ] ) ) {
if ( ! empty( $mime_to_ext[ $real_mime ] ) ) {
$filename_parts = explode( '.', $filename );
array_pop( $filename_parts );
$filename_parts[] = $mime_to_ext[ $imgstats['mime'] ];
$filename_parts[] = $mime_to_ext[ $real_mime ];
$new_filename = implode( '.', $filename_parts );
if ( $new_filename != $filename )
@@ -2034,8 +2035,20 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
// Redefine the extension / MIME
$wp_filetype = wp_check_filetype( $new_filename, $mimes );
extract( $wp_filetype );
} else {
$type = $ext = false;
}
}
} elseif ( function_exists( 'finfo_file' ) ) {
// Use finfo_file if available to validate non-image files.
$finfo = finfo_open( FILEINFO_MIME_TYPE );
$real_mime = finfo_file( $finfo, $file );
finfo_close( $finfo );
// If the extension does not match the file's real type, return false.
if ( $real_mime !== $type ) {
$type = $ext = false;
}
}
/**
@@ -2053,6 +2066,38 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
return apply_filters( 'wp_check_filetype_and_ext', compact( 'ext', 'type', 'proper_filename' ), $file, $filename, $mimes );
}
/**
* Returns the real mime type of an image file.
*
* This depends on exif_imagetype() or getimagesize() to determine real mime types.
*
* @since 4.7.1
*
* @param string $file Full path to the file.
* @return string|false The actual mime type or false if the type cannot be determined.
*/
function wp_get_image_mime( $file ) {
/*
* Use exif_imagetype() to check the mimetype if available or fall back to
* getimagesize() if exif isn't avaialbe. If either function throws an Exception
* we assume the file could not be validated.
*/
try {
if ( is_callable( 'exif_imagetype' ) ) {
$mime = image_type_to_mime_type( exif_imagetype( $file ) );
} elseif ( function_exists( 'getimagesize' ) ) {
$imagesize = getimagesize( $file );
$mime = ( isset( $imagesize['mime'] ) ) ? $imagesize['mime'] : false;
} else {
$mime = false;
}
} catch ( Exception $e ) {
$mime = false;
}
return $mime;
}
/**
* Retrieve list of mime types and file extensions.
*

View File

@@ -451,8 +451,9 @@ function send_origin_headers() {
* @return mixed URL or false on failure.
*/
function wp_http_validate_url( $url ) {
$original_url = $url;
$url = wp_kses_bad_protocol( $url, array( 'http', 'https' ) );
if ( ! $url )
if ( ! $url || strtolower( $url ) !== strtolower( $original_url ) )
return false;
$parsed_url = @parse_url( $url );
@@ -462,7 +463,7 @@ function wp_http_validate_url( $url ) {
if ( isset( $parsed_url['user'] ) || isset( $parsed_url['pass'] ) )
return false;
if ( false !== strpos( $parsed_url['host'], ':' ) )
if ( false !== strpbrk( $parsed_url['host'], ':#?[]' ) )
return false;
$parsed_home = @parse_url( get_option( 'home' ) );
@@ -471,7 +472,7 @@ function wp_http_validate_url( $url ) {
if ( ! $same_host ) {
$host = trim( $parsed_url['host'], '.' );
if ( preg_match( '#^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#', $host ) ) {
if ( preg_match( '#^(([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)\.){3}([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)$#', $host ) ) {
$ip = $host;
} else {
$ip = gethostbyname( $host );
@@ -480,8 +481,7 @@ function wp_http_validate_url( $url ) {
}
if ( $ip ) {
$parts = array_map( 'intval', explode( '.', $ip ) );
if ( '127.0.0.1' === $ip
|| ( 10 === $parts[0] )
if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]
|| ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] )
|| ( 192 === $parts[0] && 168 === $parts[1] )
) {

View File

@@ -113,6 +113,10 @@
return false;
}
if (this.get('imageWidth') <= this.get('themeWidth')) {
return false;
}
return true;
}
});

View File

@@ -1 +1 @@
!function(a,b){var c=b.customize;c.HeaderTool={},c.HeaderTool.ImageModel=Backbone.Model.extend({defaults:function(){return{header:{attachment_id:0,url:"",timestamp:_.now(),thumbnail_url:""},choice:"",selected:!1,random:!1}},initialize:function(){this.on("hide",this.hide,this)},hide:function(){this.set("choice",""),c("header_image").set("remove-header"),c("header_image_data").set("remove-header")},destroy:function(){var a=this.get("header"),d=c.HeaderTool.currentHeader.get("header").attachment_id;d&&a.attachment_id===d&&c.HeaderTool.currentHeader.trigger("hide"),b.ajax.post("custom-header-remove",{nonce:_wpCustomizeHeader.nonces.remove,wp_customize:"on",theme:c.settings.theme.stylesheet,attachment_id:a.attachment_id}),this.trigger("destroy",this,this.collection)},save:function(){this.get("random")?(c("header_image").set(this.get("header").random),c("header_image_data").set(this.get("header").random)):this.get("header").defaultName?(c("header_image").set(this.get("header").url),c("header_image_data").set(this.get("header").defaultName)):(c("header_image").set(this.get("header").url),c("header_image_data").set(this.get("header"))),c.HeaderTool.combinedList.trigger("control:setImage",this)},importImage:function(){var a=this.get("header");void 0!==a.attachment_id&&b.ajax.post("custom-header-add",{nonce:_wpCustomizeHeader.nonces.add,wp_customize:"on",theme:c.settings.theme.stylesheet,attachment_id:a.attachment_id})},shouldBeCropped:function(){return this.get("themeFlexWidth")===!0&&this.get("themeFlexHeight")===!0?!1:this.get("themeFlexWidth")===!0&&this.get("themeHeight")===this.get("imageHeight")?!1:this.get("themeFlexHeight")===!0&&this.get("themeWidth")===this.get("imageWidth")?!1:this.get("themeWidth")===this.get("imageWidth")&&this.get("themeHeight")===this.get("imageHeight")?!1:!0}}),c.HeaderTool.ChoiceList=Backbone.Collection.extend({model:c.HeaderTool.ImageModel,comparator:function(a){return-a.get("header").timestamp},initialize:function(){var a=c.HeaderTool.currentHeader.get("choice").replace(/^https?:\/\//,""),b=this.isRandomChoice(c.get().header_image);this.type||(this.type="uploaded"),"undefined"==typeof this.data&&(this.data=_wpCustomizeHeader.uploads),b&&(a=c.get().header_image),this.on("control:setImage",this.setImage,this),this.on("control:removeImage",this.removeImage,this),this.on("add",this.maybeAddRandomChoice,this),_.each(this.data,function(b,c){b.attachment_id||(b.defaultName=c),"undefined"==typeof b.timestamp&&(b.timestamp=0),this.add({header:b,choice:b.url.split("/").pop(),selected:a===b.url.replace(/^https?:\/\//,"")},{silent:!0})},this),this.size()>0&&this.addRandomChoice(a)},maybeAddRandomChoice:function(){1===this.size()&&this.addRandomChoice()},addRandomChoice:function(a){var b=RegExp(this.type).test(a),c="random-"+this.type+"-image";this.add({header:{timestamp:0,random:c,width:245,height:41},choice:c,random:!0,selected:b})},isRandomChoice:function(a){return/^random-(uploaded|default)-image$/.test(a)},shouldHideTitle:function(){return this.size()<2},setImage:function(a){this.each(function(a){a.set("selected",!1)}),a&&a.set("selected",!0)},removeImage:function(){this.each(function(a){a.set("selected",!1)})}}),c.HeaderTool.DefaultsList=c.HeaderTool.ChoiceList.extend({initialize:function(){this.type="default",this.data=_wpCustomizeHeader.defaults,c.HeaderTool.ChoiceList.prototype.initialize.apply(this)}})}(jQuery,window.wp);
!function(a,b){var c=b.customize;c.HeaderTool={},c.HeaderTool.ImageModel=Backbone.Model.extend({defaults:function(){return{header:{attachment_id:0,url:"",timestamp:_.now(),thumbnail_url:""},choice:"",selected:!1,random:!1}},initialize:function(){this.on("hide",this.hide,this)},hide:function(){this.set("choice",""),c("header_image").set("remove-header"),c("header_image_data").set("remove-header")},destroy:function(){var a=this.get("header"),d=c.HeaderTool.currentHeader.get("header").attachment_id;d&&a.attachment_id===d&&c.HeaderTool.currentHeader.trigger("hide"),b.ajax.post("custom-header-remove",{nonce:_wpCustomizeHeader.nonces.remove,wp_customize:"on",theme:c.settings.theme.stylesheet,attachment_id:a.attachment_id}),this.trigger("destroy",this,this.collection)},save:function(){this.get("random")?(c("header_image").set(this.get("header").random),c("header_image_data").set(this.get("header").random)):this.get("header").defaultName?(c("header_image").set(this.get("header").url),c("header_image_data").set(this.get("header").defaultName)):(c("header_image").set(this.get("header").url),c("header_image_data").set(this.get("header"))),c.HeaderTool.combinedList.trigger("control:setImage",this)},importImage:function(){var a=this.get("header");void 0!==a.attachment_id&&b.ajax.post("custom-header-add",{nonce:_wpCustomizeHeader.nonces.add,wp_customize:"on",theme:c.settings.theme.stylesheet,attachment_id:a.attachment_id})},shouldBeCropped:function(){return this.get("themeFlexWidth")===!0&&this.get("themeFlexHeight")===!0?!1:this.get("themeFlexWidth")===!0&&this.get("themeHeight")===this.get("imageHeight")?!1:this.get("themeFlexHeight")===!0&&this.get("themeWidth")===this.get("imageWidth")?!1:this.get("themeWidth")===this.get("imageWidth")&&this.get("themeHeight")===this.get("imageHeight")?!1:this.get("imageWidth")<=this.get("themeWidth")?!1:!0}}),c.HeaderTool.ChoiceList=Backbone.Collection.extend({model:c.HeaderTool.ImageModel,comparator:function(a){return-a.get("header").timestamp},initialize:function(){var a=c.HeaderTool.currentHeader.get("choice").replace(/^https?:\/\//,""),b=this.isRandomChoice(c.get().header_image);this.type||(this.type="uploaded"),"undefined"==typeof this.data&&(this.data=_wpCustomizeHeader.uploads),b&&(a=c.get().header_image),this.on("control:setImage",this.setImage,this),this.on("control:removeImage",this.removeImage,this),this.on("add",this.maybeAddRandomChoice,this),_.each(this.data,function(b,c){b.attachment_id||(b.defaultName=c),"undefined"==typeof b.timestamp&&(b.timestamp=0),this.add({header:b,choice:b.url.split("/").pop(),selected:a===b.url.replace(/^https?:\/\//,"")},{silent:!0})},this),this.size()>0&&this.addRandomChoice(a)},maybeAddRandomChoice:function(){1===this.size()&&this.addRandomChoice()},addRandomChoice:function(a){var b=RegExp(this.type).test(a),c="random-"+this.type+"-image";this.add({header:{timestamp:0,random:c,width:245,height:41},choice:c,random:!0,selected:b})},isRandomChoice:function(a){return/^random-(uploaded|default)-image$/.test(a)},shouldHideTitle:function(){return this.size()<2},setImage:function(a){this.each(function(a){a.set("selected",!1)}),a&&a.set("selected",!0)},removeImage:function(){this.each(function(a){a.set("selected",!1)})}}),c.HeaderTool.DefaultsList=c.HeaderTool.ChoiceList.extend({initialize:function(){this.type="default",this.data=_wpCustomizeHeader.defaults,c.HeaderTool.ChoiceList.prototype.initialize.apply(this)}})}(jQuery,window.wp);

View File

@@ -70,7 +70,7 @@
},
setButtons: function() {
var elements = $('.actions .remove');
var elements = $('#customize-control-header_image .actions .remove');
if (this.model.get('choice')) {
elements.show();
} else {

View File

@@ -1 +1 @@
!function(a,b,c){if(b&&b.customize){var d=b.customize;d.HeaderTool.CurrentView=b.Backbone.View.extend({template:b.template("header-current"),initialize:function(){this.listenTo(this.model,"change",this.render),this.render()},render:function(){return this.$el.html(this.template(this.model.toJSON())),this.setPlaceholder(),this.setButtons(),this},getHeight:function(){var a,b,c,e=this.$el.find("img");return e.length?(this.$el.find(".inner").hide(),a=this.model.get("savedHeight"),b=e.height()||a,b||(c=d.get().header_image_data,b=c&&c.width&&c.height?260/c.width*c.height:40),b):(this.$el.find(".inner").show(),40)},setPlaceholder:function(a){var b=a||this.getHeight();this.model.set("savedHeight",b),this.$el.add(this.$el.find(".placeholder")).height(b)},setButtons:function(){var b=a(".actions .remove");this.model.get("choice")?b.show():b.hide()}}),d.HeaderTool.ChoiceView=b.Backbone.View.extend({template:b.template("header-choice"),className:"header-view",events:{"click .choice,.random":"select","click .close":"removeImage"},initialize:function(){var a=[this.model.get("header").url,this.model.get("choice")];this.listenTo(this.model,"change:selected",this.toggleSelected),c.contains(a,d.get().header_image)&&d.HeaderTool.currentHeader.set(this.extendedModel())},render:function(){return this.$el.html(this.template(this.extendedModel())),this.toggleSelected(),this},toggleSelected:function(){this.$el.toggleClass("selected",this.model.get("selected"))},extendedModel:function(){var a=this.model.get("collection");return c.extend(this.model.toJSON(),{type:a.type})},getHeight:d.HeaderTool.CurrentView.prototype.getHeight,setPlaceholder:d.HeaderTool.CurrentView.prototype.setPlaceholder,select:function(){this.preventJump(),this.model.save(),d.HeaderTool.currentHeader.set(this.extendedModel())},preventJump:function(){var b=a(".wp-full-overlay-sidebar-content"),d=b.scrollTop();c.defer(function(){b.scrollTop(d)})},removeImage:function(a){a.stopPropagation(),this.model.destroy(),this.remove()}}),d.HeaderTool.ChoiceListView=b.Backbone.View.extend({initialize:function(){this.listenTo(this.collection,"add",this.addOne),this.listenTo(this.collection,"remove",this.render),this.listenTo(this.collection,"sort",this.render),this.listenTo(this.collection,"change",this.toggleList),this.render()},render:function(){this.$el.empty(),this.collection.each(this.addOne,this),this.toggleList()},addOne:function(a){var b;a.set({collection:this.collection}),b=new d.HeaderTool.ChoiceView({model:a}),this.$el.append(b.render().el)},toggleList:function(){var a=this.$el.parents().prev(".customize-control-title"),b=this.$el.find(".random").parent();this.collection.shouldHideTitle()?a.add(b).hide():a.add(b).show()}}),d.HeaderTool.CombinedList=b.Backbone.View.extend({initialize:function(a){this.collections=a,this.on("all",this.propagate,this)},propagate:function(a,b){c.each(this.collections,function(c){c.trigger(a,b)})}})}}(jQuery,window.wp,_);
!function(a,b,c){if(b&&b.customize){var d=b.customize;d.HeaderTool.CurrentView=b.Backbone.View.extend({template:b.template("header-current"),initialize:function(){this.listenTo(this.model,"change",this.render),this.render()},render:function(){return this.$el.html(this.template(this.model.toJSON())),this.setPlaceholder(),this.setButtons(),this},getHeight:function(){var a,b,c,e=this.$el.find("img");return e.length?(this.$el.find(".inner").hide(),a=this.model.get("savedHeight"),b=e.height()||a,b||(c=d.get().header_image_data,b=c&&c.width&&c.height?260/c.width*c.height:40),b):(this.$el.find(".inner").show(),40)},setPlaceholder:function(a){var b=a||this.getHeight();this.model.set("savedHeight",b),this.$el.add(this.$el.find(".placeholder")).height(b)},setButtons:function(){var b=a("#customize-control-header_image .actions .remove");this.model.get("choice")?b.show():b.hide()}}),d.HeaderTool.ChoiceView=b.Backbone.View.extend({template:b.template("header-choice"),className:"header-view",events:{"click .choice,.random":"select","click .close":"removeImage"},initialize:function(){var a=[this.model.get("header").url,this.model.get("choice")];this.listenTo(this.model,"change:selected",this.toggleSelected),c.contains(a,d.get().header_image)&&d.HeaderTool.currentHeader.set(this.extendedModel())},render:function(){return this.$el.html(this.template(this.extendedModel())),this.toggleSelected(),this},toggleSelected:function(){this.$el.toggleClass("selected",this.model.get("selected"))},extendedModel:function(){var a=this.model.get("collection");return c.extend(this.model.toJSON(),{type:a.type})},getHeight:d.HeaderTool.CurrentView.prototype.getHeight,setPlaceholder:d.HeaderTool.CurrentView.prototype.setPlaceholder,select:function(){this.preventJump(),this.model.save(),d.HeaderTool.currentHeader.set(this.extendedModel())},preventJump:function(){var b=a(".wp-full-overlay-sidebar-content"),d=b.scrollTop();c.defer(function(){b.scrollTop(d)})},removeImage:function(a){a.stopPropagation(),this.model.destroy(),this.remove()}}),d.HeaderTool.ChoiceListView=b.Backbone.View.extend({initialize:function(){this.listenTo(this.collection,"add",this.addOne),this.listenTo(this.collection,"remove",this.render),this.listenTo(this.collection,"sort",this.render),this.listenTo(this.collection,"change",this.toggleList),this.render()},render:function(){this.$el.empty(),this.collection.each(this.addOne,this),this.toggleList()},addOne:function(a){var b;a.set({collection:this.collection}),b=new d.HeaderTool.ChoiceView({model:a}),this.$el.append(b.render().el)},toggleList:function(){var a=this.$el.parents().prev(".customize-control-title"),b=this.$el.find(".random").parent();this.collection.shouldHideTitle()?a.add(b).hide():a.add(b).show()}}),d.HeaderTool.CombinedList=b.Backbone.View.extend({initialize:function(a){this.collections=a,this.on("all",this.propagate,this)},propagate:function(a,b){c.each(this.collections,function(c){c.trigger(a,b)})}})}}(jQuery,window.wp,_);

View File

@@ -451,10 +451,6 @@ window.wp = window.wp || {};
firefox = this.ua.is( 'ff' ),
className = '.wp-' + this.shortcode.tag + '-shortcode';
if ( this.player ) {
this.unsetPlayer();
}
media = $( node ).find( className );
if ( ! this.isCompatible( media ) ) {
@@ -487,20 +483,17 @@ window.wp = window.wp || {};
* @returns {string}
*/
getHtml: function() {
var attrs = _.defaults(
this.shortcode.attrs.named,
wp.media[ this.shortcode.tag ].defaults
);
return this.template({ model: attrs });
var attrs = this.shortcode.attrs.named;
attrs.content = this.shortcode.content;
return this.template({ model: _.defaults(
attrs,
wp.media[ this.shortcode.tag ].defaults )
});
},
unbind: function() {
var self = this;
this.pauseAllPlayers();
_.each( this.players, function (player) {
self.removePlayer( player );
} );
this.players = [];
this.unsetPlayers();
}
});
_.extend( wp.mce.media.View.prototype, wp.media.mixin );
@@ -547,22 +540,10 @@ window.wp = window.wp || {};
template: media.template('editor-playlist'),
initialize: function( options ) {
this.players = [];
this.data = {};
this.attachments = [];
this.shortcode = options.shortcode;
_.bindAll( this, 'setPlayer' );
$(this).on('ready', this.setNode);
},
/**
* Set the element context for the view, and then fetch the playlist's
* associated attachments.
*
* @param {Event} e
* @param {HTMLElement} node
*/
setNode: function(e, node) {
this.node = node;
this.fetch();
},
@@ -571,7 +552,7 @@ window.wp = window.wp || {};
*/
fetch: function() {
this.attachments = wp.media.playlist.attachments( this.shortcode );
this.attachments.more().done( this.setPlayer );
this.dfd = this.attachments.more().done( _.bind( this.render, this ) );
},
/**
@@ -582,36 +563,31 @@ window.wp = window.wp || {};
* @global WPPlaylistView
* @global tinymce.editors
*/
setPlayer: function() {
var p,
html = this.getHtml(),
t = this.encodedText,
self = this;
this.unsetPlayer();
render: function() {
var html = this.getHtml(), self = this;
_.each( tinymce.editors, function( editor ) {
var doc;
if ( editor.plugins.wpview ) {
doc = editor.getDoc();
$( doc ).find( '[data-wpview-text="' + t + '"]' ).each(function(i, elem) {
$( doc ).find( '[data-wpview-text="' + this.encodedText + '"]' ).each(function (i, elem) {
var node = $( elem );
node.html( html );
self.node = elem;
// The <ins> is used to mark the end of the wrapper div. Needed when comparing
// the content as string for preventing extra undo levels.
node.html( html ).append( '<ins data-wpview-end="1"></ins>' );
if ( ! self.data.tracks ) {
return;
}
self.players.push( new WPPlaylistView({
el: $( elem ).find( '.wp-playlist' ).get(0),
metadata: self.data
}).player );
});
}
}, this );
if ( ! this.data.tracks ) {
return;
}
p = new WPPlaylistView({
el: $( self.node ).find( '.wp-playlist' ).get(0),
metadata: this.data
});
this.player = p._player;
},
/**
@@ -695,6 +671,10 @@ window.wp = window.wp || {};
this.data = options;
return this.template( options );
},
unbind: function() {
this.unsetPlayers();
}
});
_.extend( wp.mce.media.PlaylistView.prototype, wp.media.mixin );

File diff suppressed because one or more lines are too long

View File

@@ -162,11 +162,13 @@
*
* Examples: modal closes, shortcode properties are removed, etc.
*/
unsetPlayer : function() {
if ( this.player ) {
unsetPlayers : function() {
if ( this.players && this.players.length ) {
wp.media.mixin.pauseAllPlayers();
wp.media.mixin.removePlayer( this.player );
this.player = false;
_.each( this.players, function (player) {
wp.media.mixin.removePlayer( player );
} );
this.players = [];
}
}
};
@@ -705,10 +707,10 @@
media.view.MediaDetails = media.view.Settings.AttachmentDisplay.extend({
initialize: function() {
_.bindAll(this, 'success');
this.listenTo( this.controller, 'close', media.mixin.unsetPlayer );
this.players = [];
this.listenTo( this.controller, 'close', media.mixin.unsetPlayers );
this.on( 'ready', this.setPlayer );
this.on( 'media:setting:remove', media.mixin.unsetPlayer, this );
this.on( 'media:setting:remove', media.mixin.unsetPlayers, this );
this.on( 'media:setting:remove', this.render );
this.on( 'media:setting:remove', this.setPlayer );
this.events = _.extend( this.events, {
@@ -764,8 +766,8 @@
* @global MediaElementPlayer
*/
setPlayer : function() {
if ( ! this.player && this.media ) {
this.player = new MediaElementPlayer( this.media, this.settings );
if ( ! this.players.length && this.media ) {
this.players.push( new MediaElementPlayer( this.media, this.settings ) );
}
},

File diff suppressed because one or more lines are too long

View File

@@ -2175,7 +2175,7 @@
library: options.selection,
editing: options.editing,
menu: 'video-playlist',
dragInfoText: l10n.playlistDragInfo,
dragInfoText: l10n.videoPlaylistDragInfo,
dragInfo: false
}),
@@ -3270,6 +3270,7 @@
localDrag: false,
overContainer: false,
overDropzone: false,
draggingFile: null,
initialize: function() {
var self = this;
@@ -3309,6 +3310,21 @@
return supports;
},
isDraggingFile: function( event ) {
if ( this.draggingFile !== null ) {
return this.draggingFile;
}
if ( _.isUndefined( event.originalEvent ) || _.isUndefined( event.originalEvent.dataTransfer ) ) {
return false;
}
this.draggingFile = _.indexOf( event.originalEvent.dataTransfer.types, 'Files' ) > -1 &&
_.indexOf( event.originalEvent.dataTransfer.types, 'text/plain' ) === -1;
return this.draggingFile;
},
refresh: function( e ) {
var dropzone_id;
for ( dropzone_id in this.dropzones ) {
@@ -3320,6 +3336,10 @@
$( e.target ).closest( '.uploader-editor' ).toggleClass( 'droppable', this.overDropzone );
}
if ( ! this.overContainer && ! this.overDropzone ) {
this.draggingFile = null;
}
return this;
},
@@ -3383,8 +3403,8 @@
return this;
},
containerDragover: function() {
if ( this.localDrag ) {
containerDragover: function( event ) {
if ( this.localDrag || ! this.isDraggingFile( event ) ) {
return;
}
@@ -3399,13 +3419,13 @@
_.delay( _.bind( this.refresh, this ), 50 );
},
dropzoneDragover: function( e ) {
if ( this.localDrag ) {
dropzoneDragover: function( event ) {
if ( this.localDrag || ! this.isDraggingFile( event ) ) {
return;
}
this.overDropzone = true;
this.refresh( e );
this.refresh( event );
return false;
},

File diff suppressed because one or more lines are too long

View File

@@ -28,6 +28,10 @@
width: auto;
}
.media-embed-details .embed-media-settings .checkbox-setting span {
display: inline-block;
}
.media-embed-details .embed-media-settings {
padding-top: 0;
top: 28px;
@@ -50,8 +54,8 @@
}
.media-embed-details .embed-media-settings .checkbox-setting {
width: 100px;
clear: none;
float: none;
margin: 0 0 10px;
}
.video-details .wp-video-holder {
@@ -98,6 +102,7 @@
}
.wp-playlist-caption {
display: block;
max-width: 88%;
overflow: hidden;
text-overflow: ellipsis;
@@ -109,6 +114,8 @@
.wp-playlist-item .wp-playlist-caption {
text-decoration: none;
color: #000;
max-width: -webkit-calc(100% - 40px);
max-width: calc(100% - 40px);
}
.wp-playlist-item-meta {
@@ -142,6 +149,11 @@
line-height: 1.5;
}
.rtl .wp-playlist-item-length {
left: 3px;
right: auto;
}
.wp-playlist-tracks {
margin-top: 10px;
}
@@ -195,9 +207,19 @@
border: 0;
}
.rtl .wp-playlist .wp-playlist-current-item img {
float: right;
margin-left: 10px;
margin-right: 0;
}
.wp-playlist-current-item .wp-playlist-item-title,
.wp-playlist-current-item .wp-playlist-item-artist {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.wp-audio-playlist .me-cannotplay span {
padding: 5px 15px;
}

View File

@@ -7,6 +7,7 @@
initialize : function (options) {
this.index = 0;
this.settings = {};
this.compatMode = $( 'body' ).hasClass( 'wp-admin' ) && $( '#content_ifr' ).length;
this.data = options.metadata || $.parseJSON( this.$('script').html() );
this.playerNode = this.$( this.data.type );
@@ -26,7 +27,9 @@
this.renderTracks();
}
this.playerNode.attr( 'src', this.current.get( 'src' ) );
if ( this.isCompatibleSrc() ) {
this.playerNode.attr( 'src', this.current.get( 'src' ) );
}
_.bindAll( this, 'bindPlayer', 'bindResetPlayer', 'setPlayer', 'ended', 'clickTrack' );
@@ -38,40 +41,64 @@
},
bindPlayer : function (mejs) {
this.player = mejs;
this.player.addEventListener( 'ended', this.ended );
this.mejs = mejs;
this.mejs.addEventListener( 'ended', this.ended );
},
bindResetPlayer : function (mejs) {
this.bindPlayer( mejs );
this.playCurrentSrc();
if ( this.isCompatibleSrc() ) {
this.playCurrentSrc();
}
},
setPlayer: function () {
if ( this._player ) {
this._player.pause();
this._player.remove();
isCompatibleSrc: function () {
var testNode;
if ( this.compatMode ) {
testNode = $( '<span><source type="' + this.current.get( 'type' ) + '" /></span>' );
if ( ! wp.media.mixin.isCompatible( testNode ) ) {
this.playerNode.removeAttr( 'src' );
this.playerNode.removeAttr( 'poster' );
return;
}
}
return true;
},
setPlayer: function (force) {
if ( this.player ) {
this.player.pause();
this.player.remove();
this.playerNode = this.$( this.data.type );
this.playerNode.attr( 'src', this.current.get( 'src' ) );
}
if (force) {
if ( this.isCompatibleSrc() ) {
this.playerNode.attr( 'src', this.current.get( 'src' ) );
}
this.settings.success = this.bindResetPlayer;
}
/**
* This is also our bridge to the outside world
*/
this._player = new MediaElementPlayer( this.playerNode.get(0), this.settings );
this.player = new MediaElementPlayer( this.playerNode.get(0), this.settings );
},
playCurrentSrc : function () {
this.renderCurrent();
this.player.setSrc( this.playerNode.attr( 'src' ) );
this.player.load();
this.player.play();
this.mejs.setSrc( this.playerNode.attr( 'src' ) );
this.mejs.load();
this.mejs.play();
},
renderCurrent : function () {
var dimensions;
var dimensions, defaultImage = 'wp-includes/images/media/video.png';
if ( 'video' === this.data.type ) {
if ( this.data.images && this.current.get( 'image' ) ) {
if ( this.data.images && this.current.get( 'image' ) && -1 === this.current.get( 'image' ).src.indexOf( defaultImage ) ) {
this.playerNode.attr( 'poster', this.current.get( 'image' ).src );
}
dimensions = this.current.get( 'dimensions' ).resized;
@@ -134,14 +161,14 @@
},
loadCurrent : function () {
var last = this.playerNode.attr( 'src' ).split('.').pop(),
var last = this.playerNode.attr( 'src' ) && this.playerNode.attr( 'src' ).split('.').pop(),
current = this.current.get( 'src' ).split('.').pop();
this.player.pause();
this.mejs && this.mejs.pause();
if ( last !== current ) {
this.setPlayer();
} else {
this.setPlayer( true );
} else if ( this.isCompatibleSrc() ) {
this.playerNode.attr( 'src', this.current.get( 'src' ) );
this.playCurrentSrc();
}

View File

@@ -37,13 +37,13 @@ window.wp = window.wp || {};
// If we matched a leading `[`, strip it from the match
// and increment the index accordingly.
if ( match[1] ) {
result.match = result.match.slice( 1 );
result.content = result.content.slice( 1 );
result.index++;
}
// If we matched a trailing `]`, strip it from the match.
if ( match[7] ) {
result.match = result.match.slice( 0, -1 );
result.content = result.content.slice( 0, -1 );
}
return result;

View File

@@ -1 +1 @@
window.wp=window.wp||{},function(){wp.shortcode={next:function(a,b,c){var d,e,f=wp.shortcode.regexp(a);return f.lastIndex=c||0,(d=f.exec(b))?"["===d[1]&&"]"===d[7]?wp.shortcode.next(a,b,f.lastIndex):(e={index:d.index,content:d[0],shortcode:wp.shortcode.fromMatch(d)},d[1]&&(e.match=e.match.slice(1),e.index++),d[7]&&(e.match=e.match.slice(0,-1)),e):void 0},replace:function(a,b,c){return b.replace(wp.shortcode.regexp(a),function(a,b,d,e,f,g,h,i){if("["===b&&"]"===i)return a;var j=c(wp.shortcode.fromMatch(arguments));return j?b+j+i:a})},string:function(a){return new wp.shortcode(a).string()},regexp:_.memoize(function(a){return new RegExp("\\[(\\[?)("+a+")(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)","g")}),attrs:_.memoize(function(a){var b,c,d={},e=[];for(b=/(\w+)\s*=\s*"([^"]*)"(?:\s|$)|(\w+)\s*=\s*\'([^\']*)\'(?:\s|$)|(\w+)\s*=\s*([^\s\'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/g,a=a.replace(/[\u00a0\u200b]/g," ");c=b.exec(a);)c[1]?d[c[1].toLowerCase()]=c[2]:c[3]?d[c[3].toLowerCase()]=c[4]:c[5]?d[c[5].toLowerCase()]=c[6]:c[7]?e.push(c[7]):c[8]&&e.push(c[8]);return{named:d,numeric:e}}),fromMatch:function(a){var b;return b=a[4]?"self-closing":a[6]?"closed":"single",new wp.shortcode({tag:a[2],attrs:a[3],type:b,content:a[5]})}},wp.shortcode=_.extend(function(a){_.extend(this,_.pick(a||{},"tag","attrs","type","content"));var b=this.attrs;this.attrs={named:{},numeric:[]},b&&(_.isString(b)?this.attrs=wp.shortcode.attrs(b):_.isEqual(_.keys(b),["named","numeric"])?this.attrs=b:_.each(a.attrs,function(a,b){this.set(b,a)},this))},wp.shortcode),_.extend(wp.shortcode.prototype,{get:function(a){return this.attrs[_.isNumber(a)?"numeric":"named"][a]},set:function(a,b){return this.attrs[_.isNumber(a)?"numeric":"named"][a]=b,this},string:function(){var a="["+this.tag;return _.each(this.attrs.numeric,function(b){a+=/\s/.test(b)?' "'+b+'"':" "+b}),_.each(this.attrs.named,function(b,c){a+=" "+c+'="'+b+'"'}),"single"===this.type?a+"]":"self-closing"===this.type?a+" /]":(a+="]",this.content&&(a+=this.content),a+"[/"+this.tag+"]")}})}(),function(){wp.html=_.extend(wp.html||{},{attrs:function(a){var b,c;return"/"===a[a.length-1]&&(a=a.slice(0,-1)),b=wp.shortcode.attrs(a),c=b.named,_.each(b.numeric,function(a){/\s/.test(a)||(c[a]="")}),c},string:function(a){var b="<"+a.tag,c=a.content||"";return _.each(a.attrs,function(a,c){b+=" "+c,""!==a&&(_.isBoolean(a)&&(a=a?"true":"false"),b+='="'+a+'"')}),a.single?b+" />":(b+=">",b+=_.isObject(c)?wp.html.string(c):c,b+"</"+a.tag+">")}})}();
window.wp=window.wp||{},function(){wp.shortcode={next:function(a,b,c){var d,e,f=wp.shortcode.regexp(a);return f.lastIndex=c||0,(d=f.exec(b))?"["===d[1]&&"]"===d[7]?wp.shortcode.next(a,b,f.lastIndex):(e={index:d.index,content:d[0],shortcode:wp.shortcode.fromMatch(d)},d[1]&&(e.content=e.content.slice(1),e.index++),d[7]&&(e.content=e.content.slice(0,-1)),e):void 0},replace:function(a,b,c){return b.replace(wp.shortcode.regexp(a),function(a,b,d,e,f,g,h,i){if("["===b&&"]"===i)return a;var j=c(wp.shortcode.fromMatch(arguments));return j?b+j+i:a})},string:function(a){return new wp.shortcode(a).string()},regexp:_.memoize(function(a){return new RegExp("\\[(\\[?)("+a+")(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)","g")}),attrs:_.memoize(function(a){var b,c,d={},e=[];for(b=/(\w+)\s*=\s*"([^"]*)"(?:\s|$)|(\w+)\s*=\s*\'([^\']*)\'(?:\s|$)|(\w+)\s*=\s*([^\s\'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/g,a=a.replace(/[\u00a0\u200b]/g," ");c=b.exec(a);)c[1]?d[c[1].toLowerCase()]=c[2]:c[3]?d[c[3].toLowerCase()]=c[4]:c[5]?d[c[5].toLowerCase()]=c[6]:c[7]?e.push(c[7]):c[8]&&e.push(c[8]);return{named:d,numeric:e}}),fromMatch:function(a){var b;return b=a[4]?"self-closing":a[6]?"closed":"single",new wp.shortcode({tag:a[2],attrs:a[3],type:b,content:a[5]})}},wp.shortcode=_.extend(function(a){_.extend(this,_.pick(a||{},"tag","attrs","type","content"));var b=this.attrs;this.attrs={named:{},numeric:[]},b&&(_.isString(b)?this.attrs=wp.shortcode.attrs(b):_.isEqual(_.keys(b),["named","numeric"])?this.attrs=b:_.each(a.attrs,function(a,b){this.set(b,a)},this))},wp.shortcode),_.extend(wp.shortcode.prototype,{get:function(a){return this.attrs[_.isNumber(a)?"numeric":"named"][a]},set:function(a,b){return this.attrs[_.isNumber(a)?"numeric":"named"][a]=b,this},string:function(){var a="["+this.tag;return _.each(this.attrs.numeric,function(b){a+=/\s/.test(b)?' "'+b+'"':" "+b}),_.each(this.attrs.named,function(b,c){a+=" "+c+'="'+b+'"'}),"single"===this.type?a+"]":"self-closing"===this.type?a+" /]":(a+="]",this.content&&(a+=this.content),a+"[/"+this.tag+"]")}})}(),function(){wp.html=_.extend(wp.html||{},{attrs:function(a){var b,c;return"/"===a[a.length-1]&&(a=a.slice(0,-1)),b=wp.shortcode.attrs(a),c=b.named,_.each(b.numeric,function(a){/\s/.test(a)||(c[a]="")}),c},string:function(a){var b="<"+a.tag,c=a.content||"";return _.each(a.attrs,function(a,c){b+=" "+c,""!==a&&(_.isBoolean(a)&&(a=a?"true":"false"),b+='="'+a+'"')}),a.single?b+" />":(b+=">",b+=_.isObject(c)?wp.html.string(c):c,b+"</"+a.tag+">")}})}();

View File

@@ -63,7 +63,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
// Hide the toolbars after loading
editor.on( 'PostRender', function() {
if ( getUserSetting('hidetb', '0') === '0' ) {
if ( editor.getParam( 'wordpress_adv_hidden', true ) && getUserSetting( 'hidetb', '0' ) === '0' ) {
toggleToolbars( 'hide' );
}
});
@@ -91,6 +91,10 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
'<img src="' + tinymce.Env.transparentSrc + '" class="wp-more-tag mce-wp-nextpage" ' +
'title="Page break" data-mce-resize="false" data-mce-placeholder="1" />' );
}
if ( e.content.indexOf( '<?"' ) !== -1 ) {
e.content = e.content.replace( /<\?"/g, '' );
}
}
});
@@ -317,7 +321,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
dom.bind( doc, 'dragstart dragend dragover drop', function( event ) {
if ( typeof window.jQuery !== 'undefined' ) {
// Trigger the jQuery handlers.
window.jQuery( document ).triggerHandler( event.type );
window.jQuery( document ).trigger( new window.jQuery.Event( event ) );
}
});
}

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,7 @@
/* global tinymce */
tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
var toolbarActive = false;
var serializer,
toolbarActive = false;
function parseShortcode( content ) {
return content.replace( /(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g, function( a, b, c ) {
@@ -208,6 +209,19 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
return node && !! ( node.textContent || node.innerText );
}
// Verify HTML in captions
function verifyHTML( caption ) {
if ( ! caption || ( caption.indexOf( '<' ) === -1 && caption.indexOf( '>' ) === -1 ) ) {
return caption;
}
if ( ! serializer ) {
serializer = new tinymce.html.Serializer( {}, editor.schema );
}
return serializer.serialize( editor.parser.parse( caption, { forced_root_block: false } ) );
}
function updateImage( imageNode, imageData ) {
var classes, className, node, html, parent, wrap, linkNode,
captionNode, dd, dl, id, attrs, linkAttrs, width, height,
@@ -285,6 +299,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
}
if ( imageData.caption ) {
imageData.caption = verifyHTML( imageData.caption );
id = imageData.attachment_id ? 'attachment_' + imageData.attachment_id : null;
className = 'wp-caption align' + ( imageData.align || 'none' );
@@ -320,7 +335,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
if ( parent = dom.getParent( node, 'p' ) ) {
wrap = dom.create( 'div', { 'class': 'mceTemp' }, html );
dom.insertAfter( wrap, parent );
parent.parentNode.insertBefore( wrap, parent );
dom.remove( node );
if ( dom.isEmpty( parent ) ) {
@@ -563,6 +578,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
// Convert remaining line breaks to <br>
caption = caption.replace( /(<br[^>]*>)\s*\n\s*/g, '$1' ).replace( /\s*\n\s*/g, '<br />' );
caption = verifyHTML( caption );
}
if ( ! imgNode ) {
@@ -593,7 +609,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
if ( parent && parent.nodeName === 'P' ) {
wrap = dom.create( 'div', { 'class': 'mceTemp' }, html );
dom.insertAfter( wrap, parent );
parent.parentNode.insertBefore( wrap, parent );
editor.selection.select( wrap );
editor.nodeChanged();

File diff suppressed because one or more lines are too long

View File

@@ -15,8 +15,10 @@ tinymce.PluginManager.add( 'wplink', function( editor ) {
editor.addShortcut( 'ctrl+k', '', 'WP_Link' );
function setState( button, node ) {
button.disabled( editor.selection.isCollapsed() && node.nodeName !== 'A' );
button.active( node.nodeName === 'A' && ! node.name );
var parent = editor.dom.getParent( node, 'a' );
button.disabled( ( editor.selection.isCollapsed() && ! parent ) || ( parent && ! parent.href ) );
button.active( parent && parent.href );
}
editor.addButton( 'link', {

View File

@@ -1 +1 @@
tinymce.PluginManager.add("wplink",function(a){function b(b,c){b.disabled(a.selection.isCollapsed()&&"A"!==c.nodeName),b.active("A"===c.nodeName&&!c.name)}var c;a.addCommand("WP_Link",function(){c&&c.disabled()||"undefined"==typeof window.wpLink||window.wpLink.open(a.id)}),a.addShortcut("alt+shift+a","","WP_Link"),a.addShortcut("ctrl+k","","WP_Link"),a.addButton("link",{icon:"link",tooltip:"Insert/edit link",shortcut:"Alt+Shift+A",cmd:"WP_Link",onPostRender:function(){c=this,a.on("nodechange",function(a){b(c,a.element)})}}),a.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink",onPostRender:function(){var c=this;a.on("nodechange",function(a){b(c,a.element)})}}),a.addMenuItem("link",{icon:"link",text:"Insert link",shortcut:"Alt+Shift+A",cmd:"WP_Link",stateSelector:"a[href]",context:"insert",prependToContext:!0})});
tinymce.PluginManager.add("wplink",function(a){function b(b,c){var d=a.dom.getParent(c,"a");b.disabled(a.selection.isCollapsed()&&!d||d&&!d.href),b.active(d&&d.href)}var c;a.addCommand("WP_Link",function(){c&&c.disabled()||"undefined"==typeof window.wpLink||window.wpLink.open(a.id)}),a.addShortcut("alt+shift+a","","WP_Link"),a.addShortcut("ctrl+k","","WP_Link"),a.addButton("link",{icon:"link",tooltip:"Insert/edit link",shortcut:"Alt+Shift+A",cmd:"WP_Link",onPostRender:function(){c=this,a.on("nodechange",function(a){b(c,a.element)})}}),a.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink",onPostRender:function(){var c=this;a.on("nodechange",function(a){b(c,a.element)})}}),a.addMenuItem("link",{icon:"link",text:"Insert link",shortcut:"Alt+Shift+A",cmd:"WP_Link",stateSelector:"a[href]",context:"insert",prependToContext:!0})});

Some files were not shown because too many files have changed in this diff Show More