mirror of
https://github.com/WordPress/WordPress.git
synced 2024-11-13 22:26:06 +01:00
When adding a URL in the Insert from URL
state in the media modal, attempt to show a preview of the content. Drop the unused width and height fields.
This will probably be iterated upon. Props helen, jtsternberg, wonderboymusic. See #15490. Built from https://develop.svn.wordpress.org/trunk@28581 git-svn-id: http://core.svn.wordpress.org/trunk@28406 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
89864b4a5a
commit
3c1723afd7
@ -2309,6 +2309,8 @@ function wp_ajax_send_attachment_to_editor() {
|
|||||||
* @since 3.5.0
|
* @since 3.5.0
|
||||||
*/
|
*/
|
||||||
function wp_ajax_send_link_to_editor() {
|
function wp_ajax_send_link_to_editor() {
|
||||||
|
global $post, $wp_embed;
|
||||||
|
|
||||||
check_ajax_referer( 'media-send-to-editor', 'nonce' );
|
check_ajax_referer( 'media-send-to-editor', 'nonce' );
|
||||||
|
|
||||||
if ( ! $src = wp_unslash( $_POST['src'] ) )
|
if ( ! $src = wp_unslash( $_POST['src'] ) )
|
||||||
@ -2323,9 +2325,20 @@ function wp_ajax_send_link_to_editor() {
|
|||||||
if ( ! $title = trim( wp_unslash( $_POST['title'] ) ) )
|
if ( ! $title = trim( wp_unslash( $_POST['title'] ) ) )
|
||||||
$title = wp_basename( $src );
|
$title = wp_basename( $src );
|
||||||
|
|
||||||
$html = '';
|
$post = get_post( isset( $_POST['post_id'] ) ? $_POST['post_id'] : 0 );
|
||||||
if ( $title )
|
// ping WordPress for an embed
|
||||||
|
$check_embed = $wp_embed->run_shortcode( '[embed]'. $src .'[/embed]' );
|
||||||
|
// fallback that WordPress creates when no oEmbed was found
|
||||||
|
$fallback = $wp_embed->maybe_make_link( $src );
|
||||||
|
|
||||||
|
if ( $check_embed !== $fallback ) {
|
||||||
|
// TinyMCE view for [embed] will parse this
|
||||||
|
$html = '[embed]' . $src . '[/embed]';
|
||||||
|
} elseif ( $title ) {
|
||||||
$html = '<a href="' . esc_url( $src ) . '">' . $title . '</a>';
|
$html = '<a href="' . esc_url( $src ) . '">' . $title . '</a>';
|
||||||
|
} else {
|
||||||
|
$html = '';
|
||||||
|
}
|
||||||
|
|
||||||
// Figure out what filter to run:
|
// Figure out what filter to run:
|
||||||
$type = 'file';
|
$type = 'file';
|
||||||
|
@ -1583,7 +1583,7 @@
|
|||||||
|
|
||||||
.media-frame .embed-url .spinner {
|
.media-frame .embed-url .spinner {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 16px;
|
top: 32px;
|
||||||
left: 26px;
|
left: 26px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1594,7 +1594,7 @@
|
|||||||
.embed-link-settings,
|
.embed-link-settings,
|
||||||
.embed-media-settings {
|
.embed-media-settings {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 60px;
|
top: 70px;
|
||||||
right: 0;
|
right: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
@ -1602,6 +1602,14 @@
|
|||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.embed-preview img, .embed-preview iframe, .embed-preview embed {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.embed-preview img {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.image-details .media-modal {
|
.image-details .media-modal {
|
||||||
right: 140px;
|
right: 140px;
|
||||||
left: 140px;
|
left: 140px;
|
||||||
|
2
wp-includes/css/media-views-rtl.min.css
vendored
2
wp-includes/css/media-views-rtl.min.css
vendored
File diff suppressed because one or more lines are too long
@ -1583,7 +1583,7 @@
|
|||||||
|
|
||||||
.media-frame .embed-url .spinner {
|
.media-frame .embed-url .spinner {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 16px;
|
top: 32px;
|
||||||
right: 26px;
|
right: 26px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1594,7 +1594,7 @@
|
|||||||
.embed-link-settings,
|
.embed-link-settings,
|
||||||
.embed-media-settings {
|
.embed-media-settings {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 60px;
|
top: 70px;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
@ -1602,6 +1602,14 @@
|
|||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.embed-preview img, .embed-preview iframe, .embed-preview embed {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.embed-preview img {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.image-details .media-modal {
|
.image-details .media-modal {
|
||||||
left: 140px;
|
left: 140px;
|
||||||
right: 140px;
|
right: 140px;
|
||||||
|
2
wp-includes/css/media-views.min.css
vendored
2
wp-includes/css/media-views.min.css
vendored
File diff suppressed because one or more lines are too long
@ -6150,7 +6150,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
initialize: function() {
|
initialize: function() {
|
||||||
this.$input = $('<input/>').attr( 'type', 'text' ).val( this.model.get('url') );
|
this.$input = $('<input id="embed-url-field" />').attr( 'type', 'text' ).val( this.model.get('url') );
|
||||||
this.input = this.$input[0];
|
this.input = this.$input[0];
|
||||||
|
|
||||||
this.spinner = $('<span class="spinner" />')[0];
|
this.spinner = $('<span class="spinner" />')[0];
|
||||||
@ -6206,7 +6206,51 @@
|
|||||||
*/
|
*/
|
||||||
media.view.EmbedLink = media.view.Settings.extend({
|
media.view.EmbedLink = media.view.Settings.extend({
|
||||||
className: 'embed-link-settings',
|
className: 'embed-link-settings',
|
||||||
template: media.template('embed-link-settings')
|
template: media.template('embed-link-settings'),
|
||||||
|
|
||||||
|
initialize: function() {
|
||||||
|
this.spinner = $('<span class="spinner" />');
|
||||||
|
this.$el.append( this.spinner[0] );
|
||||||
|
this.listenTo( this.model, 'change:url', this.updateoEmbed );
|
||||||
|
},
|
||||||
|
|
||||||
|
updateoEmbed: function() {
|
||||||
|
var url = this.model.get( 'url' );
|
||||||
|
|
||||||
|
this.$('.setting.title').show();
|
||||||
|
// clear out previous results
|
||||||
|
this.$('.embed-container').hide().find('.embed-preview').html('');
|
||||||
|
|
||||||
|
// only proceed with embed if the field contains more than 6 characters
|
||||||
|
if ( url && url.length < 6 ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.spinner.show();
|
||||||
|
|
||||||
|
setTimeout( _.bind( this.fetch, this ), 500 );
|
||||||
|
},
|
||||||
|
|
||||||
|
fetch: function() {
|
||||||
|
// check if they haven't typed in 500 ms
|
||||||
|
if ( $('#embed-url-field').val() !== this.model.get('url') ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wp.ajax.send( 'parse-embed', {
|
||||||
|
data : {
|
||||||
|
post_ID: media.view.settings.post.id,
|
||||||
|
content: '[embed]' + this.model.get('url') + '[/embed]'
|
||||||
|
}
|
||||||
|
} ).done( _.bind( this.renderoEmbed, this ) );
|
||||||
|
},
|
||||||
|
|
||||||
|
renderoEmbed: function(html) {
|
||||||
|
this.spinner.hide();
|
||||||
|
|
||||||
|
this.$('.setting.title').hide();
|
||||||
|
this.$('.embed-container').show().find('.embed-preview').html( html );
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
2
wp-includes/js/media-views.min.js
vendored
2
wp-includes/js/media-views.min.js
vendored
File diff suppressed because one or more lines are too long
@ -546,10 +546,13 @@ function wp_print_media_templates() {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/html" id="tmpl-embed-link-settings">
|
<script type="text/html" id="tmpl-embed-link-settings">
|
||||||
<label class="setting">
|
<label class="setting title">
|
||||||
<span><?php _e('Title'); ?></span>
|
<span><?php _e( 'Title' ); ?></span>
|
||||||
<input type="text" class="alignment" data-setting="title" />
|
<input type="text" class="alignment" data-setting="title" />
|
||||||
</label>
|
</label>
|
||||||
|
<div class="embed-container" style="display: none;">
|
||||||
|
<div class="embed-preview"></div>
|
||||||
|
</div>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/html" id="tmpl-embed-image-settings">
|
<script type="text/html" id="tmpl-embed-image-settings">
|
||||||
|
Loading…
Reference in New Issue
Block a user