-
Notifications
You must be signed in to change notification settings - Fork 423
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
<?php | ||
// Prevent loading this file directly | ||
defined( 'ABSPATH' ) || exit; | ||
|
||
// Make sure "text" field is loaded | ||
require_once RWMB_FIELDS_DIR . 'url.php'; | ||
|
||
if ( ! class_exists( 'RWMB_OEmbed_Field' ) ) | ||
{ | ||
class RWMB_OEmbed_Field extends RWMB_URL_Field | ||
{ | ||
/** | ||
* Enqueue scripts and styles | ||
* | ||
* @return void | ||
*/ | ||
static function admin_enqueue_scripts() | ||
{ | ||
wp_enqueue_script( 'rwmb-oembed', RWMB_JS_URL . 'oembed.js', array( ), RWMB_VER, true ); | ||
wp_enqueue_style( 'rwmb-oembed', RWMB_CSS_URL . 'oembed.css', array( ), RWMB_VER ); | ||
wp_localize_script( 'rwmb-plupload-image', 'RWMB', array( 'url' => RWMB_URL ) ); | ||
} | ||
|
||
/** | ||
* Add actions | ||
* | ||
* @return void | ||
*/ | ||
static function add_actions() | ||
{ | ||
// Attach images via Ajax | ||
add_action( 'wp_ajax_rwmb_get_embed', array( __CLASS__, 'wp_ajax_get_embed' ) ); | ||
} | ||
|
||
/** | ||
* Ajax callback for returning oEmbed HTML | ||
* | ||
* @return void | ||
*/ | ||
static function wp_ajax_get_embed() | ||
{ | ||
global $post; | ||
$url = isset( $_POST['oembed_url'] ) ? $_POST['oembed_url'] : 0; | ||
$post_id = is_numeric( $_REQUEST['post_id'] ) ? (int) $_REQUEST['post_id'] : 0; | ||
if ( isset( $_REQUEST['post_id'] ) ) | ||
$post = get_post( $_REQUEST['post_id'] ); | ||
$embed = self::get_embed( $url ); | ||
RW_Meta_Box::ajax_response( $embed, 'success' ); | ||
exit; | ||
} | ||
|
||
/*** | ||
* Get embed html from url | ||
* @param string $url | ||
* $return string | ||
*/ | ||
|
||
static function get_embed( $url ) | ||
{ | ||
global $wp_embed; | ||
|
||
$embed = $wp_embed->run_shortcode( '[embed]' . esc_url( $url ) . '[/embed]' ); | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
GwendolenLynch
Contributor
|
||
|
||
if( $embed ) | ||
{ | ||
return $embed; | ||
} | ||
else | ||
{ | ||
return 'Embed not available.'; | ||
} | ||
|
||
} | ||
|
||
/** | ||
* Get field HTML | ||
* | ||
* @param string $html | ||
* @param mixed $meta | ||
* @param array $field | ||
* | ||
* @return string | ||
*/ | ||
static function html( $html, $meta, $field ) | ||
{ | ||
return sprintf( | ||
'<input type="url" class="rwmb-oembed" name="%s" id="%s" value="%s" size="%s" /> | ||
<span class="spinner" style="display: none;"></span> | ||
<a href="#" class="show-embed button-secondary">Show embed</a> | ||
<div class="embed-code"> %s </div>', | ||
$field['field_name'], | ||
$field['id'], | ||
$meta, | ||
$field['size'], | ||
self::get_embed( $meta ) | ||
); | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
jQuery( document ).ready( function( $ ) | ||
{ | ||
$( '.rwmb-input' ).on( 'click', 'a.show-embed', function() { | ||
var $this = $( this ), | ||
$input = $this.siblings( ':input.rwmb-oembed' ); | ||
$embed_container = $this.siblings( '.embed-code' ), | ||
data = { | ||
action : 'rwmb_get_embed', | ||
oembed_url: $input.val(), | ||
post_id : $( '#post_ID' ).val() | ||
}; | ||
$embed_container.html( "<img class='rwmb-loader' height='64' width='64' src='" + RWMB.url + "img/loader.gif'/>" ); | ||
$.post( ajaxurl, data, function( r ) | ||
{ | ||
var res = wpAjax.parseAjaxResponse( r, 'ajax-response' ); | ||
|
||
if ( res.errors ) | ||
alert( res.responses[0].errors[0].message ); | ||
else | ||
$embed_container.html( res.responses[0].data ); | ||
|
||
}, 'xml' ); | ||
|
||
|
||
return false; | ||
|
||
}); | ||
} ); |
3 comments
on commit 5e32d2e
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And you forgot .css file for this or is not needed ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@djevrek nice catch. I was intending to add some css to tidy it up and completely forgot
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it be better to use wp_oembed_get() here?