2008-01-09 09:14:29 +01:00
< ? php
2008-10-02 03:03:26 +02:00
/**
* WordPress Administration Media API .
*
* @ package WordPress
* @ subpackage Administration
*/
/**
2012-09-16 20:31:42 +02:00
* Defines the default media upload tabs
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ return array default tabs
2008-10-02 03:03:26 +02:00
*/
2008-02-26 20:30:10 +01:00
function media_upload_tabs () {
2008-01-09 09:14:29 +01:00
$_default_tabs = array (
2008-11-26 03:27:37 +01:00
'type' => __ ( 'From Computer' ), // handler action suffix => tab text
'type_url' => __ ( 'From URL' ),
2008-02-28 22:29:51 +01:00
'gallery' => __ ( 'Gallery' ),
2008-11-26 03:27:37 +01:00
'library' => __ ( 'Media Library' )
2008-01-09 09:14:29 +01:00
);
2008-02-26 20:30:10 +01:00
return apply_filters ( 'media_upload_tabs' , $_default_tabs );
2008-01-09 09:14:29 +01:00
}
2008-10-02 03:03:26 +02:00
/**
2012-09-16 20:31:42 +02:00
* Adds the gallery tab back to the tabs array if post has image attachments
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param array $tabs
* @ return array $tabs with gallery if post has image attachment
2008-10-02 03:03:26 +02:00
*/
2008-02-28 22:29:51 +01:00
function update_gallery_tab ( $tabs ) {
2008-02-26 20:30:10 +01:00
global $wpdb ;
2008-12-08 08:38:05 +01:00
2008-02-26 20:30:10 +01:00
if ( ! isset ( $_REQUEST [ 'post_id' ]) ) {
2008-02-28 22:29:51 +01:00
unset ( $tabs [ 'gallery' ]);
2008-02-26 20:30:10 +01:00
return $tabs ;
}
2008-12-08 08:38:05 +01:00
2009-11-16 08:54:02 +01:00
$post_id = intval ( $_REQUEST [ 'post_id' ]);
if ( $post_id )
$attachments = intval ( $wpdb -> get_var ( $wpdb -> prepare ( " SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent = %d " , $post_id ) ) );
2008-02-26 20:30:10 +01:00
2008-12-08 08:38:05 +01:00
if ( empty ( $attachments ) ) {
unset ( $tabs [ 'gallery' ]);
return $tabs ;
}
2008-02-28 22:29:51 +01:00
$tabs [ 'gallery' ] = sprintf ( __ ( 'Gallery (%s)' ), " <span id='attachments-count'> $attachments </span> " );
2008-02-26 20:30:10 +01:00
return $tabs ;
}
2008-02-28 22:29:51 +01:00
add_filter ( 'media_upload_tabs' , 'update_gallery_tab' );
2008-02-26 20:30:10 +01:00
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*/
2008-02-26 20:30:10 +01:00
function the_media_upload_tabs () {
2012-04-10 03:19:30 +02:00
global $redir_tab ;
2008-02-26 20:30:10 +01:00
$tabs = media_upload_tabs ();
2012-04-12 02:16:37 +02:00
$default = 'type' ;
2011-11-18 09:43:16 +01:00
2008-02-13 19:36:40 +01:00
if ( ! empty ( $tabs ) ) {
2008-02-27 09:31:10 +01:00
echo " <ul id='sidemenu'> \n " ;
2008-07-10 05:49:52 +02:00
if ( isset ( $redir_tab ) && array_key_exists ( $redir_tab , $tabs ) )
$current = $redir_tab ;
elseif ( isset ( $_GET [ 'tab' ]) && array_key_exists ( $_GET [ 'tab' ], $tabs ) )
2008-02-13 19:36:40 +01:00
$current = $_GET [ 'tab' ];
2009-04-22 13:10:15 +02:00
else
2011-11-18 09:43:16 +01:00
$current = apply_filters ( 'media_upload_default_tab' , $default );
2009-04-22 13:10:15 +02:00
2008-02-13 19:36:40 +01:00
foreach ( $tabs as $callback => $text ) {
2008-02-27 09:31:10 +01:00
$class = '' ;
2011-11-18 09:43:16 +01:00
2008-02-27 09:31:10 +01:00
if ( $current == $callback )
$class = " class='current' " ;
2011-11-18 09:43:16 +01:00
$href = add_query_arg ( array ( 'tab' => $callback , 's' => false , 'paged' => false , 'post_mime_type' => false , 'm' => false ));
2009-05-18 18:00:33 +02:00
$link = " <a href=' " . esc_url ( $href ) . " ' $class > $text </a> " ;
2009-05-05 21:43:53 +02:00
echo " \t <li id=' " . esc_attr ( " tab- $callback " ) . " '> $link </li> \n " ;
2008-02-13 19:36:40 +01:00
}
echo " </ul> \n " ;
}
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param integer $id image attachment id
* @ param string $caption image caption
* @ param string $alt image alt attribute
* @ param string $title image title attribute
* @ param string $align image css alignment property
* @ param string $url image src url
* @ param string | bool $rel image rel attribute
* @ param string $size image size ( thumbnail , medium , large , full or added with add_image_size () )
* @ return string the html to insert into editor
2008-10-02 03:03:26 +02:00
*/
2009-10-19 07:09:41 +02:00
function get_image_send_to_editor ( $id , $caption , $title , $align , $url = '' , $rel = false , $size = 'medium' , $alt = '' ) {
2008-01-09 09:14:29 +01:00
2009-11-10 01:09:40 +01:00
$html = get_image_tag ( $id , $alt , $title , $align , $size );
2008-01-09 09:14:29 +01:00
2009-05-05 21:43:53 +02:00
$rel = $rel ? ' rel="attachment wp-att-' . esc_attr ( $id ) . '"' : '' ;
2008-03-06 20:48:54 +01:00
2008-01-09 09:14:29 +01:00
if ( $url )
2009-10-18 08:14:16 +02:00
$html = '<a href="' . esc_attr ( $url ) . " \" $rel > $html </a> " ;
2008-02-28 22:29:51 +01:00
2009-10-19 07:09:41 +02:00
$html = apply_filters ( 'image_send_to_editor' , $html , $id , $caption , $title , $align , $url , $size , $alt );
2008-01-09 09:14:29 +01:00
2008-02-16 22:54:47 +01:00
return $html ;
2008-01-09 09:14:29 +01:00
}
2008-10-02 03:03:26 +02:00
/**
2012-09-16 20:31:42 +02:00
* Adds image shortcode with caption to editor
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.6 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param string $html
* @ param integer $id
* @ param string $caption image caption
* @ param string $alt image alt attribute
* @ param string $title image title attribute
* @ param string $align image css alignment property
* @ param string $url image src url
* @ param string $size image size ( thumbnail , medium , large , full or added with add_image_size () )
* @ return string
2008-10-02 03:03:26 +02:00
*/
2009-10-19 07:09:41 +02:00
function image_add_caption ( $html , $id , $caption , $title , $align , $url , $size , $alt = '' ) {
2008-07-02 20:41:11 +02:00
2009-10-19 07:09:41 +02:00
if ( empty ( $caption ) || apply_filters ( 'disable_captions' , '' ) )
2009-05-27 00:33:02 +02:00
return $html ;
2008-07-02 20:41:11 +02:00
$id = ( 0 < ( int ) $id ) ? 'attachment_' . $id : '' ;
2012-03-14 22:53:11 +01:00
if ( ! preg_match ( '/width=["\']([0-9]+)/' , $html , $matches ) )
2009-05-27 00:33:02 +02:00
return $html ;
2008-07-02 20:41:11 +02:00
$width = $matches [ 1 ];
2012-03-14 22:53:11 +01:00
$caption = str_replace ( array ( " \r \n " , " \r " ), " \n " , $caption );
$caption = preg_replace_callback ( '/<[a-zA-Z0-9]+(?: [^<>]+>)*/' , '_cleanup_image_add_caption' , $caption );
2012-05-02 03:14:52 +02:00
// convert any remaining line breaks to <br>
$caption = preg_replace ( '/[ \n\t]*\n[ \t]*/' , '<br />' , $caption );
2010-11-09 01:42:35 +01:00
2009-05-27 00:33:02 +02:00
$html = preg_replace ( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/' , '$1' , $html );
if ( empty ( $align ) )
$align = 'none' ;
2008-07-02 20:41:11 +02:00
2012-05-02 03:14:52 +02:00
$shcode = '[caption id="' . $id . '" align="align' . $align . '" width="' . $width . '"]' . $html . ' ' . $caption . '[/caption]' ;
2008-07-02 20:41:11 +02:00
return apply_filters ( 'image_add_caption_shortcode' , $shcode , $html );
}
2009-10-19 07:09:41 +02:00
add_filter ( 'image_send_to_editor' , 'image_add_caption' , 20 , 8 );
2008-07-02 20:41:11 +02:00
2012-04-06 22:05:31 +02:00
/**
* Private preg_replace callback used in image_add_caption ()
*
* @ access private
* @ since 3.4 . 0
*/
2012-04-06 21:52:34 +02:00
function _cleanup_image_add_caption ( $matches ) {
// remove any line breaks from inside the tags
2012-05-02 03:14:52 +02:00
return preg_replace ( '/[\r\n\t]+/' , ' ' , $matches [ 0 ] );
2012-03-05 08:31:31 +01:00
}
2008-10-02 03:03:26 +02:00
/**
2012-09-16 20:31:42 +02:00
* Adds image html to editor
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param string $html
2008-10-02 03:03:26 +02:00
*/
2008-01-09 09:14:29 +01:00
function media_send_to_editor ( $html ) {
2008-10-02 03:03:26 +02:00
?>
2008-01-09 09:14:29 +01:00
< script type = " text/javascript " >
2008-06-24 23:59:06 +02:00
/* <![CDATA[ */
var win = window . dialogArguments || opener || parent || top ;
win . send_to_editor ( '<?php echo addslashes($html); ?>' );
/* ]]> */
2008-02-05 07:47:27 +01:00
</ script >
2009-10-24 13:43:42 +02:00
< ? php
2008-02-16 22:54:47 +01:00
exit ;
2008-01-09 09:14:29 +01:00
}
2008-10-02 03:03:26 +02:00
/**
* This handles the file upload POST itself , creating the attachment post .
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2010-02-22 17:54:51 +01:00
* @ param string $file_id Index into the { @ link $_FILES } array of the upload
* @ param int $post_id The post ID the media is associated with
* @ param array $post_data allows you to overwrite some of the attachment
* @ param array $overrides allows you to override the { @ link wp_handle_upload ()} behavior
* @ return int the ID of the attachment
2008-10-02 03:03:26 +02:00
*/
2010-02-22 17:54:51 +01:00
function media_handle_upload ( $file_id , $post_id , $post_data = array (), $overrides = array ( 'test_form' => false )) {
2008-11-14 04:26:06 +01:00
2008-11-14 04:56:09 +01:00
$time = current_time ( 'mysql' );
2008-11-14 04:26:06 +01:00
if ( $post = get_post ( $post_id ) ) {
if ( substr ( $post -> post_date , 0 , 4 ) > 0 )
$time = $post -> post_date ;
}
2008-11-13 19:22:00 +01:00
2009-05-05 07:57:56 +02:00
$name = $_FILES [ $file_id ][ 'name' ];
2008-11-13 19:22:00 +01:00
$file = wp_handle_upload ( $_FILES [ $file_id ], $overrides , $time );
2008-01-25 20:21:11 +01:00
if ( isset ( $file [ 'error' ]) )
2008-07-23 20:35:38 +02:00
return new WP_Error ( 'upload_error' , $file [ 'error' ] );
2009-05-25 01:47:49 +02:00
2009-05-05 07:57:56 +02:00
$name_parts = pathinfo ( $name );
$name = trim ( substr ( $name , 0 , - ( 1 + strlen ( $name_parts [ 'extension' ])) ) );
2008-01-25 20:21:11 +01:00
$url = $file [ 'url' ];
$type = $file [ 'type' ];
$file = $file [ 'file' ];
2009-05-05 07:57:56 +02:00
$title = $name ;
2008-01-25 20:21:11 +01:00
$content = '' ;
// use image exif/iptc data for title and caption defaults if possible
if ( $image_meta = @ wp_read_image_metadata ( $file ) ) {
2010-02-20 10:17:34 +01:00
if ( trim ( $image_meta [ 'title' ] ) && ! is_numeric ( sanitize_title ( $image_meta [ 'title' ] ) ) )
2008-01-25 20:21:11 +01:00
$title = $image_meta [ 'title' ];
2010-02-20 10:17:34 +01:00
if ( trim ( $image_meta [ 'caption' ] ) )
2008-01-25 20:21:11 +01:00
$content = $image_meta [ 'caption' ];
}
// Construct the attachment array
$attachment = array_merge ( array (
'post_mime_type' => $type ,
'guid' => $url ,
'post_parent' => $post_id ,
'post_title' => $title ,
'post_content' => $content ,
), $post_data );
2011-06-27 17:56:42 +02:00
// This should never be set as it would then overwrite an existing attachment.
if ( isset ( $attachment [ 'ID' ] ) )
unset ( $attachment [ 'ID' ] );
2008-01-25 20:21:11 +01:00
// Save the data
2008-11-15 00:01:16 +01:00
$id = wp_insert_attachment ( $attachment , $file , $post_id );
2008-01-25 20:21:11 +01:00
if ( ! is_wp_error ( $id ) ) {
wp_update_attachment_metadata ( $id , wp_generate_attachment_metadata ( $id , $file ) );
}
2008-01-09 09:14:29 +01:00
return $id ;
}
2008-10-02 03:03:26 +02:00
/**
2010-11-15 13:53:11 +01:00
* This handles a sideloaded file in the same way as an uploaded file is handled by { @ link media_handle_upload ()}
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.6 . 0
2008-10-02 03:03:26 +02:00
*
2010-11-15 13:53:11 +01:00
* @ param array $file_array Array similar to a { @ link $_FILES } upload array
* @ param int $post_id The post ID the media is associated with
* @ param string $desc Description of the sideloaded file
* @ param array $post_data allows you to overwrite some of the attachment
* @ return int | object The ID of the attachment or a WP_Error on failure
2008-10-02 03:03:26 +02:00
*/
2008-06-10 18:13:06 +02:00
function media_handle_sideload ( $file_array , $post_id , $desc = null , $post_data = array ()) {
2008-06-04 18:13:55 +02:00
$overrides = array ( 'test_form' => false );
2009-09-24 03:54:07 +02:00
2012-10-03 20:49:37 +02:00
$time = current_time ( 'mysql' );
if ( $post = get_post ( $post_id ) ) {
if ( substr ( $post -> post_date , 0 , 4 ) > 0 )
$time = $post -> post_date ;
}
$file = wp_handle_sideload ( $file_array , $overrides , $time );
2008-06-04 18:13:55 +02:00
if ( isset ( $file [ 'error' ]) )
2008-07-23 20:35:38 +02:00
return new WP_Error ( 'upload_error' , $file [ 'error' ] );
2008-06-04 18:13:55 +02:00
$url = $file [ 'url' ];
$type = $file [ 'type' ];
$file = $file [ 'file' ];
$title = preg_replace ( '/\.[^.]+$/' , '' , basename ( $file ));
$content = '' ;
// use image exif/iptc data for title and caption defaults if possible
if ( $image_meta = @ wp_read_image_metadata ( $file ) ) {
2010-02-20 10:17:34 +01:00
if ( trim ( $image_meta [ 'title' ] ) && ! is_numeric ( sanitize_title ( $image_meta [ 'title' ] ) ) )
2008-06-04 18:13:55 +02:00
$title = $image_meta [ 'title' ];
2010-02-20 10:17:34 +01:00
if ( trim ( $image_meta [ 'caption' ] ) )
2008-06-04 18:13:55 +02:00
$content = $image_meta [ 'caption' ];
}
2008-07-10 05:49:52 +02:00
2011-09-17 20:27:32 +02:00
if ( isset ( $desc ) )
$title = $desc ;
2008-06-04 18:13:55 +02:00
// Construct the attachment array
$attachment = array_merge ( array (
'post_mime_type' => $type ,
'guid' => $url ,
'post_parent' => $post_id ,
'post_title' => $title ,
'post_content' => $content ,
), $post_data );
2011-06-27 17:56:42 +02:00
// This should never be set as it would then overwrite an existing attachment.
if ( isset ( $attachment [ 'ID' ] ) )
unset ( $attachment [ 'ID' ] );
2009-09-17 22:36:59 +02:00
// Save the attachment metadata
2008-11-15 19:10:35 +01:00
$id = wp_insert_attachment ( $attachment , $file , $post_id );
2010-11-15 13:53:11 +01:00
if ( ! is_wp_error ( $id ) )
2008-06-04 18:13:55 +02:00
wp_update_attachment_metadata ( $id , wp_generate_attachment_metadata ( $id , $file ) );
2010-11-15 13:53:11 +01:00
2008-06-23 18:00:12 +02:00
return $id ;
2008-06-04 18:13:55 +02:00
}
2008-10-02 03:03:26 +02:00
/**
2012-09-16 20:31:42 +02:00
* Adds the iframe to display content for the media upload page
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param array $content_func
2008-10-02 03:03:26 +02:00
*/
2008-01-09 09:14:29 +01:00
function wp_iframe ( $content_func /* ... */ ) {
2011-10-17 22:57:32 +02:00
_wp_admin_html_begin ();
2008-01-09 09:14:29 +01:00
?>
2008-03-21 10:20:04 +01:00
< title >< ? php bloginfo ( 'name' ) ?> › <?php _e('Uploads'); ?> — <?php _e('WordPress'); ?></title>
2008-03-02 21:17:30 +01:00
< ? php
2011-08-21 05:46:43 +02:00
2008-05-24 19:03:51 +02:00
wp_enqueue_style ( 'colors' );
2010-02-20 09:19:44 +01:00
// Check callback name for 'media'
2010-12-05 04:01:42 +01:00
if ( ( is_array ( $content_func ) && ! empty ( $content_func [ 1 ] ) && 0 === strpos ( ( string ) $content_func [ 1 ], 'media' ) )
|| ( ! is_array ( $content_func ) && 0 === strpos ( $content_func , 'media' ) ) )
2008-05-24 19:03:51 +02:00
wp_enqueue_style ( 'media' );
2009-04-04 12:21:43 +02:00
wp_enqueue_style ( 'ie' );
2008-02-11 08:53:10 +01:00
?>
2008-01-09 09:14:29 +01:00
< script type = " text/javascript " >
//<![CDATA[
2009-04-04 12:21:43 +02:00
addLoadEvent = function ( func ){ if ( typeof jQuery != " undefined " ) jQuery ( document ) . ready ( func ); else if ( typeof wpOnload != 'function' ){ wpOnload = func ;} else { var oldonload = wpOnload ; wpOnload = function (){ oldonload (); func ();}}};
2009-08-24 02:09:39 +02:00
var userSettings = { 'url' : '<?php echo SITECOOKIEPATH; ?>' , 'uid' : '<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>' , 'time' : '<?php echo time(); ?>' };
2012-02-08 17:12:11 +01:00
var ajaxurl = '<?php echo admin_url( ' admin - ajax . php ', ' relative ' ); ?>' , pagenow = 'media-upload-popup' , adminpage = 'media-upload-popup' ,
2010-12-02 13:44:48 +01:00
isRtl = < ? php echo ( int ) is_rtl (); ?> ;
2008-01-09 09:14:29 +01:00
//]]>
</ script >
< ? php
2009-08-24 02:09:39 +02:00
do_action ( 'admin_enqueue_scripts' , 'media-upload-popup' );
do_action ( 'admin_print_styles-media-upload-popup' );
2008-05-22 02:06:41 +02:00
do_action ( 'admin_print_styles' );
2009-08-24 02:09:39 +02:00
do_action ( 'admin_print_scripts-media-upload-popup' );
2008-05-24 19:03:51 +02:00
do_action ( 'admin_print_scripts' );
2009-08-24 02:09:39 +02:00
do_action ( 'admin_head-media-upload-popup' );
2008-01-09 09:14:29 +01:00
do_action ( 'admin_head' );
2009-08-24 02:09:39 +02:00
2008-01-09 09:14:29 +01:00
if ( is_string ( $content_func ) )
do_action ( " admin_head_ { $content_func } " );
?>
</ head >
2011-05-19 18:12:13 +02:00
< body < ? php if ( isset ( $GLOBALS [ 'body_id' ]) ) echo ' id="' . $GLOBALS [ 'body_id' ] . '"' ; ?> class="no-js">
< script type = " text/javascript " >
2011-11-18 09:43:16 +01:00
document . body . className = document . body . className . replace ( 'no-js' , 'js' );
2011-05-19 18:12:13 +02:00
</ script >
2008-01-09 09:14:29 +01:00
< ? php
$args = func_get_args ();
$args = array_slice ( $args , 1 );
call_user_func_array ( $content_func , $args );
2009-05-25 01:47:49 +02:00
2009-05-17 14:29:58 +02:00
do_action ( 'admin_print_footer_scripts' );
2008-01-09 09:14:29 +01:00
?>
2009-04-04 12:21:43 +02:00
< script type = " text/javascript " > if ( typeof wpOnload == 'function' ) wpOnload (); </ script >
2008-01-09 09:14:29 +01:00
</ body >
</ html >
< ? php
}
2010-11-22 18:17:26 +01:00
/**
2012-09-16 20:31:42 +02:00
* Adds the media button to the editor
2010-11-22 18:17:26 +01:00
*
2010-12-20 10:25:21 +01:00
* @ since 2.5 . 0
2012-09-16 20:31:42 +02:00
*
* @ param string $editor_id
2010-11-22 18:17:26 +01:00
*/
2011-08-03 12:19:00 +02:00
function media_buttons ( $editor_id = 'content' ) {
2012-11-14 10:06:10 +01:00
wp_enqueue_media ( array (
'post' => get_post ()
) );
2012-09-27 22:04:34 +02:00
2010-11-22 18:17:26 +01:00
$context = apply_filters ( 'media_buttons_context' , __ ( 'Upload/Insert %s' ));
2012-11-09 05:40:56 +01:00
$img = '<span class="wp-media-buttons-icon"></span> ' ;
2011-10-05 23:07:04 +02:00
2012-11-09 05:40:56 +01:00
echo '<a href="#" class="button insert-media add_media" data-editor="' . esc_attr ( $editor_id ) . '" title="' . esc_attr__ ( 'Add Media' ) . '">' . $img . __ ( 'Add Media' ) . '</a>' ;
2012-09-27 06:09:43 +02:00
2011-10-07 21:12:55 +02:00
echo '<a href="' . esc_url ( get_upload_iframe_src () ) . '" class="thickbox add_media" id="' . esc_attr ( $editor_id ) . '-add_media" title="' . esc_attr__ ( 'Add Media' ) . '" onclick="return false;">' . sprintf ( $context , $img ) . '</a>' ;
2010-11-22 18:17:26 +01:00
}
add_action ( 'media_buttons' , 'media_buttons' );
2012-04-05 02:20:28 +02:00
function get_upload_iframe_src ( $type = null , $post_id = null , $tab = null ) {
2011-09-29 23:47:52 +02:00
global $post_ID ;
2012-02-27 20:23:03 +01:00
if ( empty ( $post_id ) )
$post_id = $post_ID ;
2012-04-05 02:20:28 +02:00
$upload_iframe_src = add_query_arg ( 'post_id' , ( int ) $post_id , admin_url ( 'media-upload.php' ) );
2010-11-22 18:17:26 +01:00
2011-10-05 23:07:04 +02:00
if ( $type && 'media' != $type )
2010-11-22 18:17:26 +01:00
$upload_iframe_src = add_query_arg ( 'type' , $type , $upload_iframe_src );
2011-09-29 23:47:52 +02:00
2012-04-05 02:20:28 +02:00
if ( ! empty ( $tab ) )
$upload_iframe_src = add_query_arg ( 'tab' , $tab , $upload_iframe_src );
2010-11-22 18:17:26 +01:00
$upload_iframe_src = apply_filters ( $type . '_upload_iframe_src' , $upload_iframe_src );
return add_query_arg ( 'TB_iframe' , true , $upload_iframe_src );
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ return mixed void | object WP_Error on failure
2008-10-02 03:03:26 +02:00
*/
2008-02-26 20:30:10 +01:00
function media_upload_form_handler () {
check_admin_referer ( 'media-form' );
2008-01-25 20:21:11 +01:00
2009-06-25 08:09:22 +02:00
$errors = null ;
2009-05-30 11:55:32 +02:00
2009-01-21 04:45:57 +01:00
if ( isset ( $_POST [ 'send' ]) ) {
$keys = array_keys ( $_POST [ 'send' ]);
$send_id = ( int ) array_shift ( $keys );
}
2008-02-16 22:54:47 +01:00
if ( ! empty ( $_POST [ 'attachments' ]) ) foreach ( $_POST [ 'attachments' ] as $attachment_id => $attachment ) {
$post = $_post = get_post ( $attachment_id , ARRAY_A );
2011-06-28 23:44:56 +02:00
$post_type_object = get_post_type_object ( $post [ 'post_type' ] );
if ( ! current_user_can ( $post_type_object -> cap -> edit_post , $attachment_id ) )
continue ;
2008-02-16 22:54:47 +01:00
if ( isset ( $attachment [ 'post_content' ]) )
2008-01-25 20:21:11 +01:00
$post [ 'post_content' ] = $attachment [ 'post_content' ];
2008-02-16 22:54:47 +01:00
if ( isset ( $attachment [ 'post_title' ]) )
2008-01-25 20:21:11 +01:00
$post [ 'post_title' ] = $attachment [ 'post_title' ];
2008-02-16 22:54:47 +01:00
if ( isset ( $attachment [ 'post_excerpt' ]) )
$post [ 'post_excerpt' ] = $attachment [ 'post_excerpt' ];
2008-05-21 20:29:46 +02:00
if ( isset ( $attachment [ 'menu_order' ]) )
$post [ 'menu_order' ] = $attachment [ 'menu_order' ];
2009-01-21 04:45:57 +01:00
if ( isset ( $send_id ) && $attachment_id == $send_id ) {
if ( isset ( $attachment [ 'post_parent' ]) )
$post [ 'post_parent' ] = $attachment [ 'post_parent' ];
}
2008-02-16 22:54:47 +01:00
$post = apply_filters ( 'attachment_fields_to_save' , $post , $attachment );
2008-01-25 20:21:11 +01:00
2010-02-21 12:21:32 +01:00
if ( isset ( $attachment [ 'image_alt' ]) ) {
2009-10-19 07:09:41 +02:00
$image_alt = get_post_meta ( $attachment_id , '_wp_attachment_image_alt' , true );
if ( $image_alt != stripslashes ( $attachment [ 'image_alt' ]) ) {
$image_alt = wp_strip_all_tags ( stripslashes ( $attachment [ 'image_alt' ]), true );
// update_meta expects slashed
update_post_meta ( $attachment_id , '_wp_attachment_image_alt' , addslashes ( $image_alt ) );
}
}
2008-02-16 22:54:47 +01:00
if ( isset ( $post [ 'errors' ]) ) {
$errors [ $attachment_id ] = $post [ 'errors' ];
unset ( $post [ 'errors' ]);
2008-01-25 20:21:11 +01:00
}
2008-02-16 22:54:47 +01:00
if ( $post != $_post )
wp_update_post ( $post );
2008-01-25 20:21:11 +01:00
2009-10-19 07:09:41 +02:00
foreach ( get_attachment_taxonomies ( $post ) as $t ) {
2008-02-16 22:54:47 +01:00
if ( isset ( $attachment [ $t ]) )
wp_set_object_terms ( $attachment_id , array_map ( 'trim' , preg_split ( '/,+/' , $attachment [ $t ])), $t , false );
2009-10-19 07:09:41 +02:00
}
2008-02-16 22:54:47 +01:00
}
2008-01-25 20:21:11 +01:00
2008-11-26 03:27:37 +01:00
if ( isset ( $_POST [ 'insert-gallery' ]) || isset ( $_POST [ 'update-gallery' ]) ) { ?>
< script type = " text/javascript " >
/* <![CDATA[ */
var win = window . dialogArguments || opener || parent || top ;
win . tb_remove ();
/* ]]> */
</ script >
< ? php
exit ;
}
2008-02-16 22:54:47 +01:00
2009-01-21 04:45:57 +01:00
if ( isset ( $send_id ) ) {
2008-08-10 04:14:13 +02:00
$attachment = stripslashes_deep ( $_POST [ 'attachments' ][ $send_id ] );
2009-05-27 00:33:02 +02:00
2012-04-05 02:20:28 +02:00
$html = isset ( $attachment [ 'post_title' ] ) ? $attachment [ 'post_title' ] : '' ;
2008-03-22 00:21:27 +01:00
if ( ! empty ( $attachment [ 'url' ]) ) {
2010-02-22 17:54:51 +01:00
$rel = '' ;
2010-03-29 11:57:34 +02:00
if ( strpos ( $attachment [ 'url' ], 'attachment_id' ) || get_attachment_link ( $send_id ) == $attachment [ 'url' ] )
$rel = " rel='attachment wp-att- " . esc_attr ( $send_id ) . " ' " ;
2008-03-22 00:21:27 +01:00
$html = " <a href=' { $attachment [ 'url' ] } ' $rel > $html </a> " ;
}
2009-05-27 00:33:02 +02:00
2009-05-27 00:42:23 +02:00
$html = apply_filters ( 'media_send_to_editor' , $html , $send_id , $attachment );
2008-02-16 22:54:47 +01:00
return media_send_to_editor ( $html );
2008-01-25 20:21:11 +01:00
}
2008-02-16 22:54:47 +01:00
2009-05-08 22:45:04 +02:00
return $errors ;
2008-02-26 20:30:10 +01:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ return mixed
2008-10-02 03:03:26 +02:00
*/
2011-10-06 00:36:03 +02:00
function wp_media_upload_handler () {
2008-08-08 19:05:10 +02:00
$errors = array ();
$id = 0 ;
2008-03-26 22:22:19 +01:00
if ( isset ( $_POST [ 'html-upload' ]) && ! empty ( $_FILES ) ) {
2011-03-28 23:30:59 +02:00
check_admin_referer ( 'media-form' );
2008-02-28 22:29:51 +01:00
// Upload File button was clicked
$id = media_handle_upload ( 'async-upload' , $_REQUEST [ 'post_id' ]);
unset ( $_FILES );
if ( is_wp_error ( $id ) ) {
$errors [ 'upload_error' ] = $id ;
$id = false ;
}
}
if ( ! empty ( $_POST [ 'insertonlybutton' ]) ) {
2011-10-18 21:32:40 +02:00
$src = $_POST [ 'src' ];
2009-12-01 10:22:48 +01:00
if ( ! empty ( $src ) && ! strpos ( $src , '://' ) )
$src = " http:// $src " ;
2011-09-30 08:22:29 +02:00
if ( isset ( $_POST [ 'media_type' ] ) && 'image' != $_POST [ 'media_type' ] ) {
2011-10-18 21:32:40 +02:00
$title = esc_html ( stripslashes ( $_POST [ 'title' ] ) );
if ( empty ( $title ) )
$title = esc_html ( basename ( $src ) );
2011-09-30 08:22:29 +02:00
2011-10-18 21:32:40 +02:00
if ( $title && $src )
2011-11-17 05:41:51 +01:00
$html = " <a href=' " . esc_url ( $src ) . " '> $title </a> " ;
2011-09-30 08:22:29 +02:00
$type = 'file' ;
2011-10-18 21:32:40 +02:00
if ( ( $ext = preg_replace ( '/^.+?\.([^.]+)$/' , '$1' , $src ) ) && ( $ext_type = wp_ext2type ( $ext ) )
2011-09-30 08:22:29 +02:00
&& ( 'audio' == $ext_type || 'video' == $ext_type ) )
$type = $ext_type ;
$html = apply_filters ( $type . '_send_to_editor_url' , $html , esc_url_raw ( $src ), $title );
} else {
$align = '' ;
2011-10-18 21:32:40 +02:00
$alt = esc_attr ( stripslashes ( $_POST [ 'alt' ] ) );
if ( isset ( $_POST [ 'align' ]) ) {
$align = esc_attr ( stripslashes ( $_POST [ 'align' ] ) );
2011-09-30 08:22:29 +02:00
$class = " class='align $align ' " ;
}
if ( ! empty ( $src ) )
$html = " <img src=' " . esc_url ( $src ) . " ' alt=' $alt ' $class /> " ;
$html = apply_filters ( 'image_send_to_editor_url' , $html , esc_url_raw ( $src ), $alt , $align );
2008-02-28 22:29:51 +01:00
}
2009-10-24 13:43:42 +02:00
2008-02-28 22:29:51 +01:00
return media_send_to_editor ( $html );
}
2008-02-26 20:30:10 +01:00
if ( ! empty ( $_POST ) ) {
$return = media_upload_form_handler ();
2008-02-28 22:29:51 +01:00
2008-02-26 20:30:10 +01:00
if ( is_string ( $return ) )
return $return ;
if ( is_array ( $return ) )
$errors = $return ;
}
2008-07-10 05:49:52 +02:00
if ( isset ( $_POST [ 'save' ]) ) {
2008-03-26 22:22:19 +01:00
$errors [ 'upload_notice' ] = __ ( 'Saved.' );
2008-07-10 05:49:52 +02:00
return media_upload_gallery ();
}
2008-12-09 19:03:31 +01:00
2011-09-30 08:22:29 +02:00
if ( isset ( $_GET [ 'tab' ]) && $_GET [ 'tab' ] == 'type_url' ) {
$type = 'image' ;
if ( isset ( $_GET [ 'type' ] ) && in_array ( $_GET [ 'type' ], array ( 'video' , 'audio' , 'file' ) ) )
$type = $_GET [ 'type' ];
return wp_iframe ( 'media_upload_type_url_form' , $type , $errors , $id );
}
2008-03-26 22:22:19 +01:00
2012-04-12 02:16:37 +02:00
return wp_iframe ( 'media_upload_type_form' , 'image' , $errors , $id );
2008-01-25 20:21:11 +01:00
}
2008-10-02 03:03:26 +02:00
/**
2010-12-23 16:41:05 +01:00
* Download an image from the specified URL and attach it to a post .
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.6 . 0
2008-10-02 03:03:26 +02:00
*
2010-12-23 16:41:05 +01:00
* @ param string $file The URL of the image to download
* @ param int $post_id The post ID the media is to be associated with
* @ param string $desc Optional . Description of the image
* @ return string | WP_Error Populated HTML img tag on success
2008-10-02 03:03:26 +02:00
*/
2008-06-23 18:00:12 +02:00
function media_sideload_image ( $file , $post_id , $desc = null ) {
2010-12-23 16:41:05 +01:00
if ( ! empty ( $file ) ) {
2009-09-17 22:36:59 +02:00
// Download file to temp location
2010-12-23 16:41:05 +01:00
$tmp = download_url ( $file );
2009-09-24 03:54:07 +02:00
2009-09-17 22:36:59 +02:00
// Set variables for storage
// fix file filename for query strings
2012-07-05 22:51:55 +02:00
preg_match ( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i' , $file , $matches );
2009-09-17 22:36:59 +02:00
$file_array [ 'name' ] = basename ( $matches [ 0 ]);
2008-09-23 00:04:10 +02:00
$file_array [ 'tmp_name' ] = $tmp ;
2008-07-10 05:49:52 +02:00
2009-09-17 22:36:59 +02:00
// If error storing temporarily, unlink
2010-11-15 13:53:11 +01:00
if ( is_wp_error ( $tmp ) ) {
2008-09-23 00:04:10 +02:00
@ unlink ( $file_array [ 'tmp_name' ]);
$file_array [ 'tmp_name' ] = '' ;
}
2009-09-24 03:54:07 +02:00
2009-09-17 22:36:59 +02:00
// do the validation and storage stuff
2010-12-23 16:41:05 +01:00
$id = media_handle_sideload ( $file_array , $post_id , $desc );
2009-09-17 22:36:59 +02:00
// If error storing permanently, unlink
2008-06-23 18:00:12 +02:00
if ( is_wp_error ( $id ) ) {
2008-07-03 00:56:57 +02:00
@ unlink ( $file_array [ 'tmp_name' ]);
2008-06-23 18:00:12 +02:00
return $id ;
}
2010-12-23 16:41:05 +01:00
$src = wp_get_attachment_url ( $id );
2008-06-23 18:00:12 +02:00
}
2009-09-24 03:54:07 +02:00
2009-09-17 22:36:59 +02:00
// Finally check to make sure the file has been saved, then return the html
2010-12-23 16:41:05 +01:00
if ( ! empty ( $src ) ) {
$alt = isset ( $desc ) ? esc_attr ( $desc ) : '' ;
2008-06-23 18:00:12 +02:00
$html = " <img src=' $src ' alt=' $alt ' /> " ;
return $html ;
}
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
* @ return unknown
*/
2008-02-28 22:29:51 +01:00
function media_upload_gallery () {
2008-08-08 19:05:10 +02:00
$errors = array ();
2008-02-28 22:29:51 +01:00
if ( ! empty ( $_POST ) ) {
$return = media_upload_form_handler ();
2008-03-02 21:17:30 +01:00
2008-02-28 22:29:51 +01:00
if ( is_string ( $return ) )
return $return ;
if ( is_array ( $return ) )
$errors = $return ;
}
2008-05-21 20:29:46 +02:00
wp_enqueue_script ( 'admin-gallery' );
2008-02-28 22:29:51 +01:00
return wp_iframe ( 'media_upload_gallery_form' , $errors );
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
* @ return unknown
*/
2008-02-28 22:29:51 +01:00
function media_upload_library () {
2008-08-08 19:05:10 +02:00
$errors = array ();
2008-02-28 22:29:51 +01:00
if ( ! empty ( $_POST ) ) {
$return = media_upload_form_handler ();
2008-03-02 21:17:30 +01:00
2008-02-28 22:29:51 +01:00
if ( is_string ( $return ) )
return $return ;
if ( is_array ( $return ) )
$errors = $return ;
}
return wp_iframe ( 'media_upload_library_form' , $errors );
2008-01-25 20:21:11 +01:00
}
2008-10-02 03:03:26 +02:00
/**
2008-10-13 04:48:45 +02:00
* Retrieve HTML for the image alignment radio buttons with the specified one checked .
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param object $post
* @ param string $checked
* @ return string
2008-10-02 03:03:26 +02:00
*/
2009-05-07 19:28:51 +02:00
function image_align_input_fields ( $post , $checked = '' ) {
2008-12-09 19:03:31 +01:00
2009-11-16 02:37:30 +01:00
if ( empty ( $checked ) )
$checked = get_user_setting ( 'align' , 'none' );
2009-03-13 04:53:39 +01:00
$alignments = array ( 'none' => __ ( 'None' ), 'left' => __ ( 'Left' ), 'center' => __ ( 'Center' ), 'right' => __ ( 'Right' ));
2009-05-07 19:28:51 +02:00
if ( ! array_key_exists ( ( string ) $checked , $alignments ) )
2008-08-15 17:40:35 +02:00
$checked = 'none' ;
2008-12-09 19:03:31 +01:00
2008-08-15 17:40:35 +02:00
$out = array ();
2009-11-16 02:37:30 +01:00
foreach ( $alignments as $name => $label ) {
2009-05-05 21:43:53 +02:00
$name = esc_attr ( $name );
2008-08-22 22:50:54 +02:00
$out [] = " <input type='radio' name='attachments[ { $post -> ID } ][align]' id='image-align- { $name } - { $post -> ID } ' value=' $name ' " .
2008-12-09 19:03:31 +01:00
( $checked == $name ? " checked='checked' " : " " ) .
2009-11-16 02:37:30 +01:00
" /><label for='image-align- { $name } - { $post -> ID } ' class='align image-align- { $name } -label'> $label </label> " ;
2008-08-15 17:40:35 +02:00
}
return join ( " \n " , $out );
}
2008-10-02 03:03:26 +02:00
/**
2008-10-13 04:48:45 +02:00
* Retrieve HTML for the size radio buttons with the specified one checked .
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param object $post
* @ param bool | string $check
* @ return array
2008-10-02 03:03:26 +02:00
*/
2009-11-16 02:37:30 +01:00
function image_size_input_fields ( $post , $check = '' ) {
2008-12-09 19:03:31 +01:00
2008-08-11 05:54:26 +02:00
// get a list of the actual pixel dimensions of each possible intermediate version of this image
2011-09-28 19:27:48 +02:00
$size_names = apply_filters ( 'image_size_names_choose' , array ( 'thumbnail' => __ ( 'Thumbnail' ), 'medium' => __ ( 'Medium' ), 'large' => __ ( 'Large' ), 'full' => __ ( 'Full Size' )) );
2008-12-07 21:35:50 +01:00
2009-11-16 02:37:30 +01:00
if ( empty ( $check ) )
$check = get_user_setting ( 'imgsize' , 'medium' );
foreach ( $size_names as $size => $label ) {
2008-08-11 05:54:26 +02:00
$downsize = image_downsize ( $post -> ID , $size );
2009-11-16 02:37:30 +01:00
$checked = '' ;
2008-10-13 04:48:45 +02:00
2008-08-11 05:54:26 +02:00
// is this size selectable?
$enabled = ( $downsize [ 3 ] || 'full' == $size );
$css_id = " image-size- { $size } - { $post -> ID } " ;
2008-08-19 19:08:18 +02:00
// if this size is the default but that's not available, don't select it
2009-11-16 02:37:30 +01:00
if ( $size == $check ) {
if ( $enabled )
$checked = " checked='checked' " ;
else
$check = '' ;
} elseif ( ! $check && $enabled && 'thumbnail' != $size ) {
// if $check is not enabled, default to the first available size that's bigger than a thumbnail
$check = $size ;
$checked = " checked='checked' " ;
}
2008-12-09 19:03:31 +01:00
2010-03-11 18:12:23 +01:00
$html = " <div class='image-size-item'><input type='radio' " . disabled ( $enabled , false , false ) . " name='attachments[ $post->ID ][image-size]' id=' { $css_id } ' value=' { $size } ' $checked /> " ;
2008-12-09 19:03:31 +01:00
2009-11-16 02:37:30 +01:00
$html .= " <label for=' { $css_id } '> $label </label> " ;
2008-08-11 05:54:26 +02:00
// only show the dimensions if that choice is available
if ( $enabled )
2010-01-21 22:37:43 +01:00
$html .= " <label for=' { $css_id } ' class='help'> " . sprintf ( " (%d × %d) " , $downsize [ 1 ], $downsize [ 2 ] ) . " </label> " ;
2008-12-09 19:03:31 +01:00
2008-08-11 05:54:26 +02:00
$html .= '</div>' ;
2008-12-09 19:03:31 +01:00
2008-08-11 05:54:26 +02:00
$out [] = $html ;
}
2008-12-09 19:03:31 +01:00
2008-08-11 05:54:26 +02:00
return array (
'label' => __ ( 'Size' ),
'input' => 'html' ,
'html' => join ( " \n " , $out ),
);
}
2008-10-02 03:03:26 +02:00
/**
2008-10-13 04:48:45 +02:00
* Retrieve HTML for the Link URL buttons with the default link type as specified .
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param object $post
* @ param string $url_type
* @ return string
2008-10-02 03:03:26 +02:00
*/
2009-11-16 02:37:30 +01:00
function image_link_input_fields ( $post , $url_type = '' ) {
2008-08-15 17:40:35 +02:00
$file = wp_get_attachment_url ( $post -> ID );
$link = get_attachment_link ( $post -> ID );
2009-11-16 02:37:30 +01:00
if ( empty ( $url_type ) )
$url_type = get_user_setting ( 'urlbutton' , 'post' );
2008-08-15 17:40:35 +02:00
$url = '' ;
if ( $url_type == 'file' )
$url = $file ;
elseif ( $url_type == 'post' )
$url = $link ;
2008-12-09 19:03:31 +01:00
2009-11-16 02:37:30 +01:00
return "
2009-11-16 08:16:34 +01:00
< input type = 'text' class = 'text urlfield' name = 'attachments[$post->ID][url]' value = '" . esc_attr($url) . "' />< br />
2012-02-24 02:58:18 +01:00
< button type = 'button' class = 'button urlnone' data - link - url = '' > " . __('None') . " </ button >
< button type = 'button' class = 'button urlfile' data - link - url = '" . esc_attr($file) . "' > " . __('File URL') . " </ button >
< button type = 'button' class = 'button urlpost' data - link - url = '" . esc_attr($link) . "' > " . __('Attachment Post URL') . " </ button >
2008-11-13 04:07:39 +01:00
" ;
2008-08-15 17:40:35 +02:00
}
2012-02-24 02:58:18 +01:00
function wp_caption_input_textarea ( $edit_post ) {
// post data is already escaped
$name = " attachments[ { $edit_post -> ID } ][post_excerpt] " ;
2012-03-21 23:48:36 +01:00
return '<textarea name="' . $name . '" id="' . $name . '">' . $edit_post -> post_excerpt . '</textarea>' ;
2012-02-24 02:58:18 +01:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param array $form_fields
* @ param object $post
* @ return array
2008-10-02 03:03:26 +02:00
*/
2008-02-16 22:54:47 +01:00
function image_attachment_fields_to_edit ( $form_fields , $post ) {
return $form_fields ;
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param array $form_fields
* @ param object $post { @ internal $post not used }}
* @ return array
2008-10-02 03:03:26 +02:00
*/
2008-03-12 06:50:07 +01:00
function media_single_attachment_fields_to_edit ( $form_fields , $post ) {
unset ( $form_fields [ 'url' ], $form_fields [ 'align' ], $form_fields [ 'image-size' ]);
return $form_fields ;
}
2010-12-01 20:24:38 +01:00
/**
* { @ internal Missing Short Description }}
*
* @ since 2.8 . 0
*
2012-09-16 20:31:42 +02:00
* @ param array $form_fields
* @ param object $post { @ internal $post not used }}
* @ return array
2010-12-01 20:24:38 +01:00
*/
2009-03-04 09:22:25 +01:00
function media_post_single_attachment_fields_to_edit ( $form_fields , $post ) {
unset ( $form_fields [ 'image_url' ]);
return $form_fields ;
}
2008-10-02 03:03:26 +02:00
/**
2012-06-28 22:31:28 +02:00
* Filters input from media_upload_form_handler () and assigns a default
2012-09-22 00:52:54 +02:00
* post_title from the file name if none supplied .
2012-06-28 22:31:28 +02:00
*
2012-09-22 00:52:54 +02:00
* Illustrates the use of the attachment_fields_to_save filter
2012-06-28 22:31:28 +02:00
* which can be used to add default values to any field before saving to DB .
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param object $post
* @ param array $attachment { @ internal $attachment not used }}
2012-06-28 22:31:28 +02:00
* @ return array
2008-10-02 03:03:26 +02:00
*/
2008-02-16 22:54:47 +01:00
function image_attachment_fields_to_save ( $post , $attachment ) {
if ( substr ( $post [ 'post_mime_type' ], 0 , 5 ) == 'image' ) {
if ( strlen ( trim ( $post [ 'post_title' ])) == 0 ) {
$post [ 'post_title' ] = preg_replace ( '/\.\w+$/' , '' , basename ( $post [ 'guid' ]));
$post [ 'errors' ][ 'post_title' ][ 'errors' ][] = __ ( 'Empty Title filled from filename.' );
}
}
return $post ;
}
add_filter ( 'attachment_fields_to_save' , 'image_attachment_fields_to_save' , 10 , 2 );
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param string $html
* @ param integer $attachment_id
* @ param array $attachment
* @ return array
2008-10-02 03:03:26 +02:00
*/
2008-02-16 22:54:47 +01:00
function image_media_send_to_editor ( $html , $attachment_id , $attachment ) {
2012-08-23 22:01:10 +02:00
$post = get_post ( $attachment_id );
2008-02-16 22:54:47 +01:00
if ( substr ( $post -> post_mime_type , 0 , 5 ) == 'image' ) {
2008-02-28 22:29:51 +01:00
$url = $attachment [ 'url' ];
2009-10-19 07:09:41 +02:00
$align = ! empty ( $attachment [ 'align' ]) ? $attachment [ 'align' ] : 'none' ;
$size = ! empty ( $attachment [ 'image-size' ]) ? $attachment [ 'image-size' ] : 'medium' ;
$alt = ! empty ( $attachment [ 'image_alt' ]) ? $attachment [ 'image_alt' ] : '' ;
2008-03-28 04:53:05 +01:00
$rel = ( $url == get_attachment_link ( $attachment_id ) );
2009-10-19 07:09:41 +02:00
return get_image_send_to_editor ( $attachment_id , $attachment [ 'post_excerpt' ], $attachment [ 'post_title' ], $align , $url , $rel , $size , $alt );
2008-02-16 22:54:47 +01:00
}
return $html ;
}
add_filter ( 'media_send_to_editor' , 'image_media_send_to_editor' , 10 , 3 );
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param object $post
* @ param array $errors
* @ return array
2008-10-02 03:03:26 +02:00
*/
2008-02-16 22:54:47 +01:00
function get_attachment_fields_to_edit ( $post , $errors = null ) {
if ( is_int ( $post ) )
2012-08-23 22:01:10 +02:00
$post = get_post ( $post );
2008-02-16 22:54:47 +01:00
if ( is_array ( $post ) )
2012-08-23 22:01:10 +02:00
$post = new WP_Post ( ( object ) $post );
2008-02-16 22:54:47 +01:00
2009-03-04 09:22:25 +01:00
$image_url = wp_get_attachment_url ( $post -> ID );
2008-02-16 22:54:47 +01:00
$edit_post = sanitize_post ( $post , 'edit' );
$form_fields = array (
'post_title' => array (
'label' => __ ( 'Title' ),
2009-10-19 07:09:41 +02:00
'value' => $edit_post -> post_title
2008-02-16 22:54:47 +01:00
),
2009-10-19 07:09:41 +02:00
'image_alt' => array (),
2008-02-16 22:54:47 +01:00
'post_excerpt' => array (
2012-05-18 04:50:05 +02:00
'label' => __ ( 'Caption' ),
2012-02-24 02:58:18 +01:00
'input' => 'html' ,
'html' => wp_caption_input_textarea ( $edit_post )
2008-02-16 22:54:47 +01:00
),
'post_content' => array (
2008-03-24 03:57:19 +01:00
'label' => __ ( 'Description' ),
2008-02-16 22:54:47 +01:00
'value' => $edit_post -> post_content ,
2009-10-19 07:09:41 +02:00
'input' => 'textarea'
2008-02-28 22:29:51 +01:00
),
'url' => array (
'label' => __ ( 'Link URL' ),
'input' => 'html' ,
2008-08-15 17:40:35 +02:00
'html' => image_link_input_fields ( $post , get_option ( 'image_default_link_type' )),
2009-10-19 07:09:41 +02:00
'helps' => __ ( 'Enter a link URL or click above for presets.' )
2008-02-16 22:54:47 +01:00
),
2008-09-17 02:40:10 +02:00
'menu_order' => array (
2008-05-21 20:29:46 +02:00
'label' => __ ( 'Order' ),
'value' => $edit_post -> menu_order
),
2009-03-04 09:22:25 +01:00
'image_url' => array (
'label' => __ ( 'File URL' ),
'input' => 'html' ,
2009-11-16 08:16:34 +01:00
'html' => " <input type='text' class='text urlfield' readonly='readonly' name='attachments[ $post->ID ][url]' value=' " . esc_attr ( $image_url ) . " ' /><br /> " ,
2009-11-20 16:26:14 +01:00
'value' => wp_get_attachment_url ( $post -> ID ),
2009-10-19 07:09:41 +02:00
'helps' => __ ( 'Location of the uploaded file.' )
2009-03-04 09:22:25 +01:00
)
2008-02-16 22:54:47 +01:00
);
foreach ( get_attachment_taxonomies ( $post ) as $taxonomy ) {
$t = ( array ) get_taxonomy ( $taxonomy );
2012-07-09 06:56:50 +02:00
if ( ! $t [ 'public' ] || ! $t [ 'show_ui' ] )
2010-10-28 20:53:09 +02:00
continue ;
2008-02-16 22:54:47 +01:00
if ( empty ( $t [ 'label' ]) )
$t [ 'label' ] = $taxonomy ;
if ( empty ( $t [ 'args' ]) )
$t [ 'args' ] = array ();
$terms = get_object_term_cache ( $post -> ID , $taxonomy );
2012-11-07 21:00:51 +01:00
if ( false === $terms )
2008-02-16 22:54:47 +01:00
$terms = wp_get_object_terms ( $post -> ID , $taxonomy , $t [ 'args' ]);
$values = array ();
foreach ( $terms as $term )
2012-09-18 19:34:01 +02:00
$values [] = $term -> slug ;
2008-02-16 22:54:47 +01:00
$t [ 'value' ] = join ( ', ' , $values );
$form_fields [ $taxonomy ] = $t ;
}
// Merge default fields with their errors, so any key passed with the error (e.g. 'error', 'helps', 'value') will replace the default
// The recursive merge is easily traversed with array casting: foreach( (array) $things as $thing )
$form_fields = array_merge_recursive ( $form_fields , ( array ) $errors );
2008-02-22 06:53:47 +01:00
2012-11-19 09:10:38 +01:00
// This was formerly in image_attachment_fields_to_edit().
if ( substr ( $post -> post_mime_type , 0 , 5 ) == 'image' ) {
$alt = get_post_meta ( $post -> ID , '_wp_attachment_image_alt' , true );
if ( empty ( $alt ) )
$alt = '' ;
$form_fields [ 'post_title' ][ 'required' ] = true ;
$form_fields [ 'image_alt' ] = array (
'value' => $alt ,
'label' => __ ( 'Alternative Text' ),
'helps' => __ ( 'Alt text for the image, e.g. “The Mona Lisa”' )
);
$form_fields [ 'align' ] = array (
'label' => __ ( 'Alignment' ),
'input' => 'html' ,
'html' => image_align_input_fields ( $post , get_option ( 'image_default_align' )),
);
$form_fields [ 'image-size' ] = image_size_input_fields ( $post , get_option ( 'image_default_size' , 'medium' ) );
} else {
unset ( $form_fields [ 'image_alt' ] );
}
2008-02-16 22:54:47 +01:00
$form_fields = apply_filters ( 'attachment_fields_to_edit' , $form_fields , $post );
return $form_fields ;
}
2008-10-02 03:03:26 +02:00
/**
2008-10-13 04:48:45 +02:00
* Retrieve HTML for media items of post gallery .
*
* The HTML markup retrieved will be created for the progress of SWF Upload
* component . Will also create link for showing and hiding the form to modify
* the image attachment .
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2008-10-13 04:48:45 +02:00
* @ param int $post_id Optional . Post ID .
* @ param array $errors Errors for attachment , if any .
* @ return string
2008-10-02 03:03:26 +02:00
*/
2008-02-28 22:29:51 +01:00
function get_media_items ( $post_id , $errors ) {
2010-04-10 14:49:58 +02:00
$attachments = array ();
2008-04-14 18:30:27 +02:00
if ( $post_id ) {
$post = get_post ( $post_id );
if ( $post && $post -> post_type == 'attachment' )
2008-02-28 22:29:51 +01:00
$attachments = array ( $post -> ID => $post );
else
2008-05-05 18:03:27 +02:00
$attachments = get_children ( array ( 'post_parent' => $post_id , 'post_type' => 'attachment' , 'orderby' => 'menu_order ASC, ID' , 'order' => 'DESC' ) );
2008-02-28 22:29:51 +01:00
} else {
if ( is_array ( $GLOBALS [ 'wp_the_query' ] -> posts ) )
foreach ( $GLOBALS [ 'wp_the_query' ] -> posts as $attachment )
$attachments [ $attachment -> ID ] = $attachment ;
}
2008-11-15 00:01:16 +01:00
$output = '' ;
2009-08-19 10:35:24 +02:00
foreach ( ( array ) $attachments as $id => $attachment ) {
if ( $attachment -> post_status == 'trash' )
continue ;
2008-03-12 06:50:07 +01:00
if ( $item = get_media_item ( $id , array ( 'errors' => isset ( $errors [ $id ]) ? $errors [ $id ] : null ) ) )
2011-11-13 19:37:30 +01:00
$output .= " \n <div id='media-item- $id ' class='media-item child-of- $attachment->post_parent preloaded'><div class='progress hidden'><div class='bar'></div></div><div id='media-upload-error- $id ' class='hidden'></div><div class='filename hidden'></div> $item\n </div> " ;
2009-08-19 10:35:24 +02:00
}
2008-02-28 22:29:51 +01:00
return $output ;
}
2008-10-02 03:03:26 +02:00
/**
2008-10-13 04:48:45 +02:00
* Retrieve HTML form for modifying the image attachment .
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2008-10-13 04:48:45 +02:00
* @ param int $attachment_id Attachment ID for modification .
* @ param string | array $args Optional . Override defaults .
* @ return string HTML form for attachment .
2008-10-02 03:03:26 +02:00
*/
2008-03-12 06:50:07 +01:00
function get_media_item ( $attachment_id , $args = null ) {
2009-10-26 18:56:28 +01:00
global $redir_tab ;
2008-03-12 06:50:07 +01:00
2010-03-06 09:00:42 +01:00
if ( ( $attachment_id = intval ( $attachment_id ) ) && $thumb_url = wp_get_attachment_image_src ( $attachment_id , 'thumbnail' , true ) )
2008-02-26 20:30:10 +01:00
$thumb_url = $thumb_url [ 0 ];
2008-02-24 05:34:40 +01:00
else
2010-03-06 09:00:42 +01:00
$thumb_url = false ;
2008-01-25 20:21:11 +01:00
2010-04-18 11:09:45 +02:00
$post = get_post ( $attachment_id );
2011-11-19 05:28:39 +01:00
$current_post_id = ! empty ( $_GET [ 'post_id' ] ) ? ( int ) $_GET [ 'post_id' ] : 0 ;
2010-11-17 19:47:34 +01:00
2011-11-19 05:28:39 +01:00
$default_args = array ( 'errors' => null , 'send' => $current_post_id ? post_type_supports ( get_post_type ( $current_post_id ), 'editor' ) : true , 'delete' => true , 'toggle' => true , 'show_title' => true );
2009-10-21 09:27:33 +02:00
$args = wp_parse_args ( $args , $default_args );
2010-11-19 01:04:04 +01:00
$args = apply_filters ( 'get_media_item_args' , $args );
2009-10-21 09:27:33 +02:00
extract ( $args , EXTR_SKIP );
2009-12-26 00:04:48 +01:00
$toggle_on = __ ( 'Show' );
$toggle_off = __ ( 'Hide' );
2008-01-25 20:21:11 +01:00
2012-11-05 15:33:56 +01:00
$filename = esc_html ( wp_basename ( $post -> guid ) );
2009-12-26 00:04:48 +01:00
$title = esc_attr ( $post -> post_title );
2008-11-15 19:10:35 +01:00
2009-12-26 00:04:48 +01:00
if ( $_tags = get_the_tags ( $attachment_id ) ) {
2008-01-25 20:21:11 +01:00
foreach ( $_tags as $tag )
$tags [] = $tag -> name ;
2009-12-26 00:04:48 +01:00
$tags = esc_attr ( join ( ', ' , $tags ) );
2008-01-25 20:21:11 +01:00
}
2009-10-26 18:56:28 +01:00
$post_mime_types = get_post_mime_types ();
2009-12-26 00:04:48 +01:00
$keys = array_keys ( wp_match_mime_types ( array_keys ( $post_mime_types ), $post -> post_mime_type ) );
$type = array_shift ( $keys );
2009-10-26 18:56:28 +01:00
$type_html = " <input type='hidden' id='type-of- $attachment_id ' value=' " . esc_attr ( $type ) . " ' /> " ;
2008-02-28 22:29:51 +01:00
2009-12-26 00:04:48 +01:00
$form_fields = get_attachment_fields_to_edit ( $post , $errors );
2008-01-25 20:21:11 +01:00
2008-03-12 06:50:07 +01:00
if ( $toggle ) {
2009-12-26 00:04:48 +01:00
$class = empty ( $errors ) ? 'startclosed' : 'startopen' ;
2008-03-12 06:50:07 +01:00
$toggle_links = "
< a class = 'toggle describe-toggle-on' href = '#' > $toggle_on </ a >
2009-10-19 18:36:21 +02:00
< a class = 'toggle describe-toggle-off' href = '#' > $toggle_off </ a > " ;
2008-03-12 06:50:07 +01:00
} else {
2011-11-12 01:52:26 +01:00
$class = '' ;
2008-03-12 06:50:07 +01:00
$toggle_links = '' ;
}
2008-03-26 22:00:21 +01:00
$display_title = ( ! empty ( $title ) ) ? $title : $filename ; // $title shouldn't ever be empty, but just in case
2009-12-26 00:04:48 +01:00
$display_title = $show_title ? " <div class='filename new'><span class='title'> " . wp_html_excerpt ( $display_title , 60 ) . " </span></div> " : '' ;
2008-07-10 05:49:52 +02:00
2010-03-19 22:15:00 +01:00
$gallery = ( ( isset ( $_REQUEST [ 'tab' ] ) && 'gallery' == $_REQUEST [ 'tab' ] ) || ( isset ( $redir_tab ) && 'gallery' == $redir_tab ) );
2008-07-10 05:49:52 +02:00
$order = '' ;
foreach ( $form_fields as $key => $val ) {
if ( 'menu_order' == $key ) {
if ( $gallery )
2009-12-26 00:04:48 +01:00
$order = " <div class='menu_order'> <input class='menu_order_input' type='text' id='attachments[ $attachment_id ][menu_order]' name='attachments[ $attachment_id ][menu_order]' value=' " . esc_attr ( $val [ 'value' ] ) . " ' /></div> " ;
2008-07-10 05:49:52 +02:00
else
2009-12-26 00:04:48 +01:00
$order = " <input type='hidden' name='attachments[ $attachment_id ][menu_order]' value=' " . esc_attr ( $val [ 'value' ] ) . " ' /> " ;
2008-07-10 05:49:52 +02:00
2009-12-26 00:04:48 +01:00
unset ( $form_fields [ 'menu_order' ] );
2008-07-10 05:49:52 +02:00
break ;
}
}
2008-03-26 22:00:21 +01:00
2009-09-11 00:07:33 +02:00
$media_dims = '' ;
2009-12-26 00:04:48 +01:00
$meta = wp_get_attachment_metadata ( $post -> ID );
if ( is_array ( $meta ) && array_key_exists ( 'width' , $meta ) && array_key_exists ( 'height' , $meta ) )
$media_dims .= " <span id='media-dims- $post->ID '> { $meta [ 'width' ] } × { $meta [ 'height' ] } </span> " ;
$media_dims = apply_filters ( 'media_meta' , $media_dims , $post );
2009-09-11 00:07:33 +02:00
$image_edit_button = '' ;
2009-12-26 00:04:48 +01:00
if ( gd_edit_image_support ( $post -> post_mime_type ) ) {
$nonce = wp_create_nonce ( " image_editor- $post->ID " );
2012-09-26 21:57:44 +02:00
$image_edit_button = " <input type='button' id='imgedit-open-btn- $post->ID ' onclick='imageEdit.open( $post->ID , \" $nonce\ " ) ' class=' button ' value=' " . esc_attr__( 'Edit Image' ) . " ' /> <span class=' spinner ' ></ span > " ;
2009-09-11 00:07:33 +02:00
}
2009-12-25 23:22:21 +01:00
$attachment_url = get_permalink ( $attachment_id );
2008-01-25 20:21:11 +01:00
$item = "
2009-10-19 18:36:21 +02:00
$type_html
2008-03-12 06:50:07 +01:00
$toggle_links
2008-07-10 05:49:52 +02:00
$order
2008-09-27 10:17:55 +02:00
$display_title
2008-03-12 06:50:07 +01:00
< table class = 'slidetoggle describe $class' >
2009-09-11 00:07:33 +02:00
< thead class = 'media-item-info' id = 'media-head-$post->ID' >
2009-12-26 00:04:48 +01:00
< tr valign = 'top' >
< td class = 'A1B1' id = 'thumbnail-head-$post->ID' >
2011-11-12 01:52:26 +01:00
< p >< a href = '$attachment_url' target = '_blank' >< img class = 'thumbnail' src = '$thumb_url' alt = '' /></ a ></ p >
2009-12-26 00:04:48 +01:00
< p > $image_edit_button </ p >
2009-12-25 23:22:21 +01:00
</ td >
2009-12-26 00:04:48 +01:00
< td >
< p >< strong > " . __('File name:') . " </ strong > $filename </ p >
< p >< strong > " . __('File type:') . " </ strong > $post -> post_mime_type </ p >
< p >< strong > " . __('Upload date:') . " </ strong > " . mysql2date( get_option('date_format'), $post->post_date ). '</p>';
if ( ! empty ( $media_dims ) )
$item .= " <p><strong> " . __ ( 'Dimensions:' ) . " </strong> $media_dims </p> \n " ;
2010-01-15 23:11:12 +01:00
2010-05-14 03:54:21 +02:00
$item .= " </td></tr> \n " ;
2009-12-12 08:02:26 +01:00
$item .= "
2008-04-14 18:33:37 +02:00
</ thead >
2009-09-11 00:07:33 +02:00
< tbody >
2009-09-24 03:54:07 +02:00
< tr >< td colspan = '2' class = 'imgedit-response' id = 'imgedit-response-$post->ID' ></ td ></ tr >
< tr >< td style = 'display:none' colspan = '2' class = 'image-editor' id = 'image-editor-$post->ID' ></ td ></ tr > \n " ;
2008-02-16 22:54:47 +01:00
$defaults = array (
'input' => 'text' ,
'required' => false ,
'value' => '' ,
'extra_rows' => array (),
);
2008-02-28 22:29:51 +01:00
if ( $send )
2010-10-28 23:56:43 +02:00
$send = get_submit_button ( __ ( 'Insert into Post' ), 'button' , " send[ $attachment_id ] " , false );
2009-12-26 00:04:48 +01:00
if ( $delete && current_user_can ( 'delete_post' , $attachment_id ) ) {
2009-12-12 07:40:16 +01:00
if ( ! EMPTY_TRASH_DAYS ) {
2012-08-14 20:39:15 +02:00
$delete = " <a href=' " . wp_nonce_url ( " post.php?action=delete&post= $attachment_id " , 'delete-post_' . $attachment_id ) . " ' id='del[ $attachment_id ]' class='delete-permanently'> " . __ ( 'Delete Permanently' ) . '</a>' ;
2009-12-12 07:40:16 +01:00
} elseif ( ! MEDIA_TRASH ) {
2009-12-26 00:04:48 +01:00
$delete = " <a href='#' class='del-link' onclick= \" document.getElementById('del_attachment_ $attachment_id ').style.display='block';return false; \" > " . __ ( 'Delete' ) . " </a>
2012-03-28 22:28:34 +02:00
< div id = 'del_attachment_$attachment_id' class = 'del-attachment' style = 'display:none;' >< p > " . sprintf( __( 'You are about to delete <strong>%s</strong>.' ), $filename ) . " </ p >
2012-08-14 20:39:15 +02:00
< a href = '" . wp_nonce_url( "post.php?action=delete&post=$attachment_id", ' delete - post_ ' . $attachment_id ) . "' id = 'del[$attachment_id]' class = 'button' > " . __( 'Continue' ) . " </ a >
2009-12-26 00:04:48 +01:00
< a href = '#' class = 'button' onclick = \ " this.parentNode.style.display='none';return false; \" > " . __ ( 'Cancel' ) . " </a>
</ div > " ;
2009-12-12 07:40:16 +01:00
} else {
2012-08-14 20:39:15 +02:00
$delete = " <a href=' " . wp_nonce_url ( " post.php?action=trash&post= $attachment_id " , 'trash-post_' . $attachment_id ) . " ' id='del[ $attachment_id ]' class='delete'> " . __ ( 'Move to Trash' ) . " </a>
< a href = '" . wp_nonce_url( "post.php?action=untrash&post=$attachment_id", ' untrash - post_ ' . $attachment_id ) . "' id = 'undo[$attachment_id]' class = 'undo hidden' > " . __( 'Undo' ) . " </ a > " ;
2009-12-12 07:40:16 +01:00
}
2009-11-10 11:38:19 +01:00
} else {
$delete = '' ;
}
2009-11-20 20:46:10 +01:00
$thumbnail = '' ;
2009-12-10 08:04:01 +01:00
$calling_post_id = 0 ;
if ( isset ( $_GET [ 'post_id' ] ) )
2010-05-19 00:08:49 +02:00
$calling_post_id = absint ( $_GET [ 'post_id' ] );
2009-12-10 08:04:01 +01:00
elseif ( isset ( $_POST ) && count ( $_POST ) ) // Like for async-upload where $_GET['post_id'] isn't set
$calling_post_id = $post -> post_parent ;
2011-11-11 20:38:34 +01:00
if ( 'image' == $type && $calling_post_id && current_theme_supports ( 'post-thumbnails' , get_post_type ( $calling_post_id ) )
&& post_type_supports ( get_post_type ( $calling_post_id ), 'thumbnail' ) && get_post_thumbnail_id ( $calling_post_id ) != $attachment_id ) {
2010-05-19 00:08:49 +02:00
$ajax_nonce = wp_create_nonce ( " set_post_thumbnail- $calling_post_id " );
$thumbnail = " <a class='wp-post-thumbnail' id='wp-post-thumbnail- " . $attachment_id . " ' href='#' onclick='WPSetAsThumbnail( \" $attachment_id\ " , \ " $ajax_nonce\ " ); return false ; ' > " . esc_html__( " Use as featured image " ) . " </ a > " ;
}
2009-10-21 09:27:33 +02:00
2009-12-26 00:04:48 +01:00
if ( ( $send || $thumbnail || $delete ) && ! isset ( $form_fields [ 'buttons' ] ) )
$form_fields [ 'buttons' ] = array ( 'tr' => " \t \t <tr class='submit'><td></td><td class='savesend'> $send $thumbnail $delete </td></tr> \n " );
2008-01-25 20:21:11 +01:00
2008-02-16 22:54:47 +01:00
$hidden_fields = array ();
foreach ( $form_fields as $id => $field ) {
2010-11-13 10:53:55 +01:00
if ( $id [ 0 ] == '_' )
2008-02-16 22:54:47 +01:00
continue ;
2009-12-26 00:04:48 +01:00
if ( ! empty ( $field [ 'tr' ] ) ) {
2008-02-16 22:54:47 +01:00
$item .= $field [ 'tr' ];
continue ;
}
2009-12-26 00:04:48 +01:00
$field = array_merge ( $defaults , $field );
2008-02-16 22:54:47 +01:00
$name = " attachments[ $attachment_id ][ $id ] " ;
if ( $field [ 'input' ] == 'hidden' ) {
$hidden_fields [ $name ] = $field [ 'value' ];
continue ;
}
2009-12-30 09:19:34 +01:00
$required = $field [ 'required' ] ? '<span class="alignright"><abbr title="required" class="required">*</abbr></span>' : '' ;
2008-05-04 23:28:12 +02:00
$aria_required = $field [ 'required' ] ? " aria-required='true' " : '' ;
2008-03-12 06:50:07 +01:00
$class = $id ;
$class .= $field [ 'required' ] ? ' form-required' : '' ;
2009-12-30 09:19:34 +01:00
$item .= " \t \t <tr class=' $class '> \n \t \t \t <th valign='top' scope='row' class='label'><label for=' $name '><span class='alignleft'> { $field [ 'label' ] } </span> $required <br class='clear' /></label></th> \n \t \t \t <td class='field'> " ;
2009-12-26 00:04:48 +01:00
if ( ! empty ( $field [ $field [ 'input' ] ] ) )
$item .= $field [ $field [ 'input' ] ];
2008-02-16 22:54:47 +01:00
elseif ( $field [ 'input' ] == 'textarea' ) {
2012-02-24 02:58:18 +01:00
if ( 'post_content' == $id && user_can_richedit () ) {
// sanitize_post() skips the post_content when user_can_richedit
$field [ 'value' ] = htmlspecialchars ( $field [ 'value' ], ENT_QUOTES );
2010-12-16 18:48:20 +01:00
}
2012-02-24 02:58:18 +01:00
// post_excerpt is already escaped by sanitize_post() in get_attachment_fields_to_edit()
2011-04-07 10:30:08 +02:00
$item .= " <textarea id=' $name ' name=' $name ' $aria_required > " . $field [ 'value' ] . '</textarea>' ;
2008-02-16 22:54:47 +01:00
} else {
2009-12-26 00:04:48 +01:00
$item .= " <input type='text' class='text' id=' $name ' name=' $name ' value=' " . esc_attr ( $field [ 'value' ] ) . " ' $aria_required /> " ;
2008-02-16 22:54:47 +01:00
}
2009-12-26 00:04:48 +01:00
if ( ! empty ( $field [ 'helps' ] ) )
$item .= " <p class='help'> " . join ( " </p> \n <p class='help'> " , array_unique ( ( array ) $field [ 'helps' ] ) ) . '</p>' ;
2008-02-16 22:54:47 +01:00
$item .= " </td> \n \t \t </tr> \n " ;
$extra_rows = array ();
2009-12-26 00:04:48 +01:00
if ( ! empty ( $field [ 'errors' ] ) )
foreach ( array_unique ( ( array ) $field [ 'errors' ] ) as $error )
2008-02-16 22:54:47 +01:00
$extra_rows [ 'error' ][] = $error ;
2009-12-26 00:04:48 +01:00
if ( ! empty ( $field [ 'extra_rows' ] ) )
2008-02-16 22:54:47 +01:00
foreach ( $field [ 'extra_rows' ] as $class => $rows )
foreach ( ( array ) $rows as $html )
$extra_rows [ $class ][] = $html ;
foreach ( $extra_rows as $class => $rows )
foreach ( $rows as $html )
2008-03-12 06:50:07 +01:00
$item .= " \t \t <tr><td></td><td class=' $class '> $html </td></tr> \n " ;
2008-02-16 22:54:47 +01:00
}
2009-12-26 00:04:48 +01:00
if ( ! empty ( $form_fields [ '_final' ] ) )
2008-03-12 06:50:07 +01:00
$item .= " \t \t <tr class='final'><td colspan='2'> { $form_fields [ '_final' ] } </td></tr> \n " ;
2008-04-14 18:33:37 +02:00
$item .= " \t </tbody> \n " ;
2008-02-16 22:54:47 +01:00
$item .= " \t </table> \n " ;
foreach ( $hidden_fields as $name => $value )
2009-05-05 21:43:53 +02:00
$item .= " \t <input type='hidden' name=' $name ' id=' $name ' value=' " . esc_attr ( $value ) . " ' /> \n " ;
2008-01-25 20:21:11 +01:00
2009-12-26 00:04:48 +01:00
if ( $post -> post_parent < 1 && isset ( $_REQUEST [ 'post_id' ] ) ) {
2008-12-05 07:21:42 +01:00
$parent = ( int ) $_REQUEST [ 'post_id' ];
$parent_name = " attachments[ $attachment_id ][post_parent] " ;
2009-12-26 00:04:48 +01:00
$item .= " \t <input type='hidden' name=' $parent_name ' id=' $parent_name ' value=' $parent ' /> \n " ;
2008-12-05 07:21:42 +01:00
}
2008-01-25 20:21:11 +01:00
return $item ;
}
2012-11-11 02:26:42 +01:00
function get_compat_media_markup ( $attachment_id , $args = null ) {
$post = get_post ( $attachment_id );
$default_args = array (
'errors' => null ,
);
$args = wp_parse_args ( $args , $default_args );
$args = apply_filters ( 'get_media_item_args' , $args );
2012-11-19 08:20:47 +01:00
$form_fields = array ();
2012-11-11 02:26:42 +01:00
2012-11-19 08:20:47 +01:00
foreach ( get_attachment_taxonomies ( $post ) as $taxonomy ) {
$t = ( array ) get_taxonomy ( $taxonomy );
if ( ! $t [ 'public' ] || ! $t [ 'show_ui' ] )
continue ;
if ( empty ( $t [ 'label' ]) )
$t [ 'label' ] = $taxonomy ;
if ( empty ( $t [ 'args' ]) )
$t [ 'args' ] = array ();
$terms = get_object_term_cache ( $post -> ID , $taxonomy );
if ( false === $terms )
$terms = wp_get_object_terms ( $post -> ID , $taxonomy , $t [ 'args' ]);
$values = array ();
foreach ( $terms as $term )
$values [] = $term -> slug ;
$t [ 'value' ] = join ( ', ' , $values );
$form_fields [ $taxonomy ] = $t ;
}
// Merge default fields with their errors, so any key passed with the error (e.g. 'error', 'helps', 'value') will replace the default
// The recursive merge is easily traversed with array casting: foreach( (array) $things as $thing )
$form_fields = array_merge_recursive ( $form_fields , ( array ) $args [ 'errors' ] );
$form_fields = apply_filters ( 'attachment_fields_to_edit' , $form_fields , $post );
unset ( $form_fields [ 'image-size' ], $form_fields [ 'align' ], $form_fields [ 'image_alt' ],
$form_fields [ 'post_title' ], $form_fields [ 'post_excerpt' ], $form_fields [ 'post_content' ],
$form_fields [ 'url' ], $form_fields [ 'menu_order' ], $form_fields [ 'image_url' ] );
2012-11-11 02:26:42 +01:00
$media_meta = apply_filters ( 'media_meta' , '' , $post );
$defaults = array (
'input' => 'text' ,
'required' => false ,
'value' => '' ,
'extra_rows' => array (),
);
$hidden_fields = array ();
$item = '' ;
foreach ( $form_fields as $id => $field ) {
if ( $id [ 0 ] == '_' )
continue ;
$name = " attachments[ $attachment_id ][ $id ] " ;
if ( ! empty ( $field [ 'tr' ] ) ) {
$item .= $field [ 'tr' ];
continue ;
}
$field = array_merge ( $defaults , $field );
if ( $field [ 'input' ] == 'hidden' ) {
$hidden_fields [ $id ] = $field [ 'value' ];
continue ;
}
$required = $field [ 'required' ] ? '<span class="alignright"><abbr title="required" class="required">*</abbr></span>' : '' ;
$aria_required = $field [ 'required' ] ? " aria-required='true' " : '' ;
$class = 'compat-item-' . $name ;
$class .= $field [ 'required' ] ? ' form-required' : '' ;
$item .= " \t \t <tr class=' $class '> " ;
$item .= " \t \t \t <th valign='top' scope='row' class='label'><label for=' $name '><span class='alignleft'> { $field [ 'label' ] } </span> $required <br class='clear' /></label> " ;
$item .= " </th> \n \t \t \t <td class='field'> " ;
if ( ! empty ( $field [ $field [ 'input' ] ] ) )
$item .= $field [ $field [ 'input' ] ];
elseif ( $field [ 'input' ] == 'textarea' ) {
if ( 'post_content' == $id && user_can_richedit () ) {
// sanitize_post() skips the post_content when user_can_richedit
$field [ 'value' ] = htmlspecialchars ( $field [ 'value' ], ENT_QUOTES );
}
$item .= " <textarea id=' $name ' name=' $name ' $aria_required > " . $field [ 'value' ] . '</textarea>' ;
} else {
$item .= " <input type='text' class='text' id=' $name ' name=' $name ' value=' " . esc_attr ( $field [ 'value' ] ) . " ' $aria_required /> " ;
}
if ( ! empty ( $field [ 'helps' ] ) )
$item .= " <p class='help'> " . join ( " </p> \n <p class='help'> " , array_unique ( ( array ) $field [ 'helps' ] ) ) . '</p>' ;
$item .= " </td> \n \t \t </tr> \n " ;
$extra_rows = array ();
if ( ! empty ( $field [ 'errors' ] ) )
foreach ( array_unique ( ( array ) $field [ 'errors' ] ) as $error )
$extra_rows [ 'error' ][] = $error ;
if ( ! empty ( $field [ 'extra_rows' ] ) )
foreach ( $field [ 'extra_rows' ] as $class => $rows )
foreach ( ( array ) $rows as $html )
$extra_rows [ $class ][] = $html ;
foreach ( $extra_rows as $class => $rows )
foreach ( $rows as $html )
$item .= " \t \t <tr><td></td><td class=' $class '> $html </td></tr> \n " ;
}
if ( ! empty ( $form_fields [ '_final' ] ) )
$item .= " \t \t <tr class='final'><td colspan='2'> { $form_fields [ '_final' ] } </td></tr> \n " ;
if ( $item )
$item = '<table>' . $item . '</table>' ;
return array (
'item' => $item ,
'hidden' => $hidden_fields ,
'meta' => $media_meta ,
);
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*/
2008-03-05 07:46:42 +01:00
function media_upload_header () {
2012-11-17 07:42:14 +01:00
$post_id = isset ( $_REQUEST [ 'post_id' ] ) ? intval ( $_REQUEST [ 'post_id' ] ) : 0 ;
echo '<script type="text/javascript">post_id = ' . $post_id . " ;</script> \n " ;
2012-11-10 08:51:37 +01:00
if ( empty ( $_GET [ 'chromeless' ] ) ) {
echo '<div id="media-upload-header">' ;
the_media_upload_tabs ();
echo '</div>' ;
}
2008-02-26 20:30:10 +01:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
* @ param unknown_type $errors
*/
2008-02-26 20:30:10 +01:00
function media_upload_form ( $errors = null ) {
2012-04-10 03:19:30 +02:00
global $type , $tab , $pagenow , $is_IE , $is_opera ;
2011-11-18 09:43:16 +01:00
2012-04-12 02:16:37 +02:00
if ( ! _device_can_upload () ) {
2012-04-20 03:10:39 +02:00
echo '<p>' . __ ( 'The web browser on your device cannot be used to upload files. You may be able to use the <a href="http://wordpress.org/extend/mobile/">native app for your device</a> instead.' ) . '</p>' ;
2011-11-18 09:43:16 +01:00
return ;
2012-04-12 02:16:37 +02:00
}
2008-02-28 22:29:51 +01:00
2011-07-29 10:59:35 +02:00
$upload_action_url = admin_url ( 'async-upload.php' );
2008-09-28 00:00:52 +02:00
$post_id = isset ( $_REQUEST [ 'post_id' ]) ? intval ( $_REQUEST [ 'post_id' ]) : 0 ;
2011-11-12 01:52:26 +01:00
$_type = isset ( $type ) ? $type : '' ;
$_tab = isset ( $tab ) ? $tab : '' ;
2008-01-25 20:21:11 +01:00
2011-07-29 21:21:21 +02:00
$upload_size_unit = $max_upload_size = wp_max_upload_size ();
2010-05-21 14:57:49 +02:00
$sizes = array ( 'KB' , 'MB' , 'GB' );
2011-07-29 21:21:21 +02:00
for ( $u = - 1 ; $upload_size_unit > 1024 && $u < count ( $sizes ) - 1 ; $u ++ ) {
2010-05-21 14:57:49 +02:00
$upload_size_unit /= 1024 ;
2011-07-29 21:21:21 +02:00
}
2010-05-21 14:57:49 +02:00
if ( $u < 0 ) {
$upload_size_unit = 0 ;
$u = 0 ;
} else {
$upload_size_unit = ( int ) $upload_size_unit ;
}
2008-01-25 20:21:11 +01:00
?>
2011-07-29 21:21:21 +02:00
2011-10-31 22:38:28 +01:00
< div id = " media-upload-notice " >< ? php
2011-07-29 21:21:21 +02:00
2011-10-31 22:38:28 +01:00
if ( isset ( $errors [ 'upload_notice' ]) )
echo $errors [ 'upload_notice' ];
?> </div>
< div id = " media-upload-error " >< ? php
if ( isset ( $errors [ 'upload_error' ]) && is_wp_error ( $errors [ 'upload_error' ]))
echo $errors [ 'upload_error' ] -> get_error_message ();
?> </div>
2010-01-25 20:46:24 +01:00
< ? php
2010-05-21 14:57:49 +02:00
if ( is_multisite () && ! is_upload_space_available () ) {
2012-07-10 15:33:44 +02:00
do_action ( 'upload_ui_over_quota' );
2010-05-21 14:57:49 +02:00
return ;
}
2010-01-25 20:46:24 +01:00
do_action ( 'pre-upload-ui' );
2008-04-14 18:32:04 +02:00
2010-11-19 01:04:04 +01:00
$post_params = array (
" post_id " => $post_id ,
" _wpnonce " => wp_create_nonce ( 'media-form' ),
2011-11-12 01:52:26 +01:00
" type " => $_type ,
" tab " => $_tab ,
2010-11-19 01:04:04 +01:00
" short " => " 1 " ,
);
2011-07-29 21:21:21 +02:00
2011-07-29 10:59:35 +02:00
$post_params = apply_filters ( 'upload_post_params' , $post_params ); // hook change! old name: 'swfupload_post_params'
2011-07-29 21:21:21 +02:00
2011-09-15 07:30:58 +02:00
$plupload_init = array (
'runtimes' => 'html5,silverlight,flash,html4' ,
'browse_button' => 'plupload-browse-button' ,
'container' => 'plupload-upload-ui' ,
2011-09-18 04:25:23 +02:00
'drop_element' => 'drag-drop-area' ,
2011-09-15 07:30:58 +02:00
'file_data_name' => 'async-upload' ,
'multiple_queues' => true ,
2011-11-10 21:33:26 +01:00
'max_file_size' => $max_upload_size . 'b' ,
2011-09-15 07:30:58 +02:00
'url' => $upload_action_url ,
'flash_swf_url' => includes_url ( 'js/plupload/plupload.flash.swf' ),
'silverlight_xap_url' => includes_url ( 'js/plupload/plupload.silverlight.xap' ),
'filters' => array ( array ( 'title' => __ ( 'Allowed Files' ), 'extensions' => '*' ) ),
'multipart' => true ,
'urlstream_upload' => true ,
'multipart_params' => $post_params
);
2011-07-29 21:21:21 +02:00
2011-09-15 07:30:58 +02:00
$plupload_init = apply_filters ( 'plupload_init' , $plupload_init );
2010-11-19 01:04:04 +01:00
?>
2011-07-29 10:59:35 +02:00
2011-09-15 07:30:58 +02:00
< script type = " text/javascript " >
2011-11-30 22:05:22 +01:00
< ? php
// Verify size is an int. If not return default value.
$large_size_h = absint ( get_option ( 'large_size_h' ) );
if ( ! $large_size_h )
$large_size_h = 1024 ;
$large_size_w = absint ( get_option ( 'large_size_w' ) );
if ( ! $large_size_w )
$large_size_w = 1024 ;
?>
var resize_height = < ? php echo $large_size_h ; ?> , resize_width = <?php echo $large_size_w; ?>,
2011-09-15 07:30:58 +02:00
wpUploaderInit = < ? php echo json_encode ( $plupload_init ); ?> ;
2008-01-25 20:21:11 +01:00
</ script >
2011-10-13 00:24:53 +02:00
< div id = " plupload-upload-ui " class = " hide-if-no-js " >
2011-07-29 10:59:35 +02:00
< ? php do_action ( 'pre-plupload-upload-ui' ); // hook change, old name: 'pre-flash-upload-ui' ?>
2011-09-18 04:25:23 +02:00
< div id = " drag-drop-area " >
< div class = " drag-drop-inside " >
2011-11-05 19:09:38 +01:00
< p class = " drag-drop-info " >< ? php _e ( 'Drop files here' ); ?> </p>
< p >< ? php _ex ( 'or' , 'Uploader: Drop files here - or - Select Files' ); ?> </p>
2011-11-03 02:47:12 +01:00
< p class = " drag-drop-buttons " >< input id = " plupload-browse-button " type = " button " value = " <?php esc_attr_e('Select Files'); ?> " class = " button " /></ p >
2011-09-18 04:25:23 +02:00
</ div >
</ div >
2011-07-29 10:59:35 +02:00
< ? php do_action ( 'post-plupload-upload-ui' ); // hook change, old name: 'post-flash-upload-ui' ?>
2008-02-22 06:53:47 +01:00
</ div >
2008-03-19 07:18:05 +01:00
2011-07-29 10:59:35 +02:00
< div id = " html-upload-ui " class = " hide-if-js " >
2008-04-14 18:32:04 +02:00
< ? php do_action ( 'pre-html-upload-ui' ); ?>
2008-10-31 02:53:39 +01:00
< p id = " async-upload-wrap " >
2010-10-28 23:56:43 +02:00
< label class = " screen-reader-text " for = " async-upload " >< ? php _e ( 'Upload' ); ?> </label>
< input type = " file " name = " async-upload " id = " async-upload " />
< ? php submit_button ( __ ( 'Upload' ), 'button' , 'html-upload' , false ); ?>
< a href = " # " onclick = " try { top.tb_remove();}catch(e) { }; return false; " >< ? php _e ( 'Cancel' ); ?> </a>
2008-01-25 20:21:11 +01:00
</ p >
2009-03-27 09:36:51 +01:00
< div class = " clear " ></ div >
2011-09-15 07:30:58 +02:00
< ? php do_action ( 'post-html-upload-ui' ); ?>
2008-01-25 20:21:11 +01:00
</ div >
2011-07-29 10:59:35 +02:00
2011-11-21 21:46:15 +01:00
< span class = " max-upload-size " >< ? php printf ( __ ( 'Maximum upload file size: %d%s.' ), esc_html ( $upload_size_unit ), esc_html ( $sizes [ $u ]) ); ?> </span>
2008-02-26 20:30:10 +01:00
< ? php
2011-11-21 21:46:15 +01:00
if ( ( $is_IE || $is_opera ) && $max_upload_size > 100 * 1024 * 1024 ) { ?>
< span class = " big-file-warning " >< ? php _e ( 'Your browser has some limitations uploading large files with the multi-file uploader. Please use the browser uploader for files over 100MB.' ); ?> </span>
< ? php }
2011-09-15 07:30:58 +02:00
do_action ( 'post-upload-ui' );
2008-02-26 20:30:10 +01:00
}
2008-01-25 20:21:11 +01:00
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param string $type
* @ param object $errors
* @ param integer $id
2008-10-02 03:03:26 +02:00
*/
2008-02-28 22:29:51 +01:00
function media_upload_type_form ( $type = 'file' , $errors = null , $id = null ) {
2011-11-18 09:43:16 +01:00
2008-02-26 20:30:10 +01:00
media_upload_header ();
2008-01-25 20:21:11 +01:00
2010-05-27 13:42:46 +02:00
$post_id = isset ( $_REQUEST [ 'post_id' ] ) ? intval ( $_REQUEST [ 'post_id' ] ) : 0 ;
2008-01-25 20:21:11 +01:00
2008-05-27 19:46:01 +02:00
$form_action_url = admin_url ( " media-upload.php?type= $type &tab=type&post_id= $post_id " );
2008-04-14 18:32:04 +02:00
$form_action_url = apply_filters ( 'media_upload_form_url' , $form_action_url , $type );
2011-11-11 20:40:23 +01:00
$form_class = 'media-upload-form type-form validate' ;
if ( get_user_setting ( 'uploader' ) )
$form_class .= ' html-uploader' ;
2008-02-26 20:30:10 +01:00
?>
2011-11-11 20:40:23 +01:00
< form enctype = " multipart/form-data " method = " post " action = " <?php echo esc_attr( $form_action_url ); ?> " class = " <?php echo $form_class ; ?> " id = " <?php echo $type ; ?>-form " >
2010-10-28 23:56:43 +02:00
< ? php submit_button ( '' , 'hidden' , 'save' , false ); ?>
2008-04-25 08:15:17 +02:00
< input type = " hidden " name = " post_id " id = " post_id " value = " <?php echo (int) $post_id ; ?> " />
2008-02-26 20:30:10 +01:00
< ? php wp_nonce_field ( 'media-form' ); ?>
2008-11-26 03:27:37 +01:00
2008-11-27 22:24:37 +01:00
< h3 class = " media-title " >< ? php _e ( 'Add media files from your computer' ); ?> </h3>
2008-11-26 03:27:37 +01:00
2008-02-26 20:30:10 +01:00
< ? php media_upload_form ( $errors ); ?>
2008-01-25 20:21:11 +01:00
2008-02-28 22:29:51 +01:00
< script type = " text/javascript " >
2009-05-17 14:29:58 +02:00
//<![CDATA[
2008-02-28 22:29:51 +01:00
jQuery ( function ( $ ){
var preloaded = $ ( " .media-item.preloaded " );
if ( preloaded . length > 0 ) {
preloaded . each ( function (){ prepareMediaItem ({ id : this . id . replace ( / [ ^ 0 - 9 ] / g , '' )}, '' );});
}
2008-03-11 02:30:15 +01:00
updateMediaForm ();
2008-02-28 22:29:51 +01:00
});
2009-05-17 14:29:58 +02:00
//]]>
2008-02-28 22:29:51 +01:00
</ script >
2011-07-29 21:21:21 +02:00
< div id = " media-items " >< ? php
2008-11-27 22:24:37 +01:00
if ( $id ) {
if ( ! is_wp_error ( $id ) ) {
2009-03-04 09:22:25 +01:00
add_filter ( 'attachment_fields_to_edit' , 'media_post_single_attachment_fields_to_edit' , 10 , 2 );
2008-11-27 22:24:37 +01:00
echo get_media_items ( $id , $errors );
} else {
2011-07-29 21:21:21 +02:00
echo '<div id="media-upload-error">' . esc_html ( $id -> get_error_message ()) . '</div></div>' ;
2008-11-26 03:27:37 +01:00
exit ;
}
}
2011-07-29 21:21:21 +02:00
?> </div>
2009-05-17 14:29:58 +02:00
< p class = " savebutton ml-submit " >
2010-10-28 23:56:43 +02:00
< ? php submit_button ( __ ( 'Save all changes' ), 'button' , 'save' , false ); ?>
2009-05-17 14:29:58 +02:00
</ p >
2009-12-30 09:19:34 +01:00
</ form >
2008-11-27 22:24:37 +01:00
< ? php
}
2008-11-26 03:27:37 +01:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-11-26 03:27:37 +01:00
*
2012-09-16 20:31:42 +02:00
* @ param string $type
* @ param object $errors
* @ param integer $id
2008-11-26 03:27:37 +01:00
*/
2011-09-30 08:22:29 +02:00
function media_upload_type_url_form ( $type = null , $errors = null , $id = null ) {
if ( null === $type )
$type = 'image' ;
2008-11-26 03:27:37 +01:00
media_upload_header ();
2012-11-17 07:42:14 +01:00
$post_id = isset ( $_REQUEST [ 'post_id' ] ) ? intval ( $_REQUEST [ 'post_id' ] ) : 0 ;
2008-11-26 03:27:37 +01:00
$form_action_url = admin_url ( " media-upload.php?type= $type &tab=type&post_id= $post_id " );
$form_action_url = apply_filters ( 'media_upload_form_url' , $form_action_url , $type );
2011-11-11 20:40:23 +01:00
$form_class = 'media-upload-form type-form validate' ;
if ( get_user_setting ( 'uploader' ) )
$form_class .= ' html-uploader' ;
2008-11-26 03:27:37 +01:00
?>
2008-01-25 20:21:11 +01:00
2011-11-11 20:40:23 +01:00
< form enctype = " multipart/form-data " method = " post " action = " <?php echo esc_attr( $form_action_url ); ?> " class = " <?php echo $form_class ; ?> " id = " <?php echo $type ; ?>-form " >
2008-11-26 03:27:37 +01:00
< input type = " hidden " name = " post_id " id = " post_id " value = " <?php echo (int) $post_id ; ?> " />
< ? php wp_nonce_field ( 'media-form' ); ?>
2011-10-05 23:07:04 +02:00
< h3 class = " media-title " >< ? php _e ( 'Insert media from another website' ); ?> </h3>
2008-02-28 22:29:51 +01:00
2008-07-10 05:49:52 +02:00
< script type = " text/javascript " >
//<![CDATA[
var addExtImage = {
width : '' ,
height : '' ,
align : 'alignnone' ,
insert : function () {
2009-10-19 07:09:41 +02:00
var t = this , html , f = document . forms [ 0 ], cls , title = '' , alt = '' , caption = '' ;
2008-07-10 05:49:52 +02:00
2009-10-24 13:43:42 +02:00
if ( '' == f . src . value || '' == t . width )
return false ;
2008-07-10 05:49:52 +02:00
2009-10-19 07:09:41 +02:00
if ( f . alt . value )
alt = f . alt . value . replace ( / '/g, ' & #039;').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
2008-07-16 23:36:17 +02:00
< ? php if ( ! apply_filters ( 'disable_captions' , '' ) ) { ?>
2012-02-24 02:58:18 +01:00
if ( f . caption . value ) {
2012-03-14 22:53:11 +01:00
caption = f . caption . value . replace ( / \r\n | \r / g , '\n' );
caption = caption . replace ( /< [ a - zA - Z0 - 9 ] + ( [ ^<> ] + ) ?> /g, function(a){
2012-05-02 03:14:52 +02:00
return a . replace ( / [ \r\n\t ] +/ , ' ' );
2012-02-24 02:58:18 +01:00
});
2012-05-02 03:14:52 +02:00
caption = caption . replace ( / \s * \n\s */ g , '<br />' );
2012-02-24 02:58:18 +01:00
}
2008-07-11 17:59:14 +02:00
< ? php } ?>
2008-07-10 05:49:52 +02:00
cls = caption ? '' : ' class="' + t . align + '"' ;
2012-11-07 00:23:03 +01:00
html = '<img alt="' + alt + '" src="' + f . src . value + '"' + cls + ' width="' + t . width + '" height="' + t . height + '" />' ;
2008-07-10 05:49:52 +02:00
2011-11-14 20:35:32 +01:00
if ( f . url . value ) {
url = f . url . value . replace ( / '/g, ' & #039;').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
html = '<a href="' + url + '">' + html + '</a>' ;
}
2008-07-10 05:49:52 +02:00
if ( caption )
2012-05-02 03:14:52 +02:00
html = '[caption id="" align="' + t . align + '" width="' + t . width + '"]' + html + caption + '[/caption]' ;
2008-07-10 05:49:52 +02:00
var win = window . dialogArguments || opener || parent || top ;
win . send_to_editor ( html );
2009-10-24 13:43:42 +02:00
return false ;
2008-07-10 05:49:52 +02:00
},
resetImageData : function () {
var t = addExtImage ;
t . width = t . height = '' ;
document . getElementById ( 'go_button' ) . style . color = '#bbb' ;
if ( ! document . forms [ 0 ] . src . value )
2009-10-24 13:43:42 +02:00
document . getElementById ( 'status_img' ) . innerHTML = '*' ;
2010-05-03 20:16:22 +02:00
else document . getElementById ( 'status_img' ) . innerHTML = '<img src="<?php echo esc_url( admin_url( ' images / no . png ' ) ); ?>" alt="" />' ;
2008-07-10 05:49:52 +02:00
},
updateImageData : function () {
var t = addExtImage ;
t . width = t . preloadImg . width ;
t . height = t . preloadImg . height ;
document . getElementById ( 'go_button' ) . style . color = '#333' ;
2010-05-03 20:16:22 +02:00
document . getElementById ( 'status_img' ) . innerHTML = '<img src="<?php echo esc_url( admin_url( ' images / yes . png ' ) ); ?>" alt="" />' ;
2008-07-10 05:49:52 +02:00
},
getImageData : function () {
2011-10-18 21:32:40 +02:00
if ( jQuery ( 'table.describe' ) . hasClass ( 'not-image' ) )
return ;
2008-07-10 05:49:52 +02:00
var t = addExtImage , src = document . forms [ 0 ] . src . value ;
2011-10-18 21:32:40 +02:00
if ( ! src ) {
2008-07-10 05:49:52 +02:00
t . resetImageData ();
return false ;
}
2011-09-30 08:22:29 +02:00
2012-09-26 21:57:44 +02:00
document . getElementById ( 'status_img' ) . innerHTML = '<img src="<?php echo esc_url( admin_url( ' images / wpspin_light . gif ' ) ); ?>" alt="" width="16" />' ;
2008-07-10 05:49:52 +02:00
t . preloadImg = new Image ();
t . preloadImg . onload = t . updateImageData ;
t . preloadImg . onerror = t . resetImageData ;
t . preloadImg . src = src ;
}
}
2011-09-30 08:22:29 +02:00
jQuery ( document ) . ready ( function ( $ ) {
$ ( '.media-types input' ) . click ( function () {
$ ( 'table.describe' ) . toggleClass ( 'not-image' , $ ( '#not-image' ) . prop ( 'checked' ) );
});
});
2008-07-10 05:49:52 +02:00
//]]>
</ script >
2008-02-28 22:29:51 +01:00
< div id = " media-items " >
< div class = " media-item media-blank " >
2011-10-06 00:36:03 +02:00
< ? php echo apply_filters ( 'type_url_form_media' , wp_media_insert_url_form ( $type ) ); ?>
2008-02-28 22:29:51 +01:00
</ div >
</ div >
2008-07-17 00:09:27 +02:00
</ form >
2008-02-26 20:30:10 +01:00
< ? php
}
2008-01-25 20:21:11 +01:00
2008-10-02 03:03:26 +02:00
/**
2012-09-16 20:31:42 +02:00
* Adds gallery form to upload iframe
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param array $errors
2008-10-02 03:03:26 +02:00
*/
2008-02-28 22:29:51 +01:00
function media_upload_gallery_form ( $errors ) {
2009-09-01 22:44:17 +02:00
global $redir_tab , $type ;
2008-07-10 05:49:52 +02:00
$redir_tab = 'gallery' ;
2008-03-05 07:46:42 +01:00
media_upload_header ();
2008-01-25 20:21:11 +01:00
2008-02-26 20:30:10 +01:00
$post_id = intval ( $_REQUEST [ 'post_id' ]);
2009-09-01 22:44:17 +02:00
$form_action_url = admin_url ( " media-upload.php?type= $type &tab=gallery&post_id= $post_id " );
$form_action_url = apply_filters ( 'media_upload_form_url' , $form_action_url , $type );
2011-11-11 20:40:23 +01:00
$form_class = 'media-upload-form validate' ;
2011-12-01 05:51:35 +01:00
2011-11-11 20:40:23 +01:00
if ( get_user_setting ( 'uploader' ) )
$form_class .= ' html-uploader' ;
2008-02-26 20:30:10 +01:00
?>
< script type = " text/javascript " >
<!--
jQuery ( function ( $ ){
var preloaded = $ ( " .media-item.preloaded " );
if ( preloaded . length > 0 ) {
preloaded . each ( function (){ prepareMediaItem ({ id : this . id . replace ( / [ ^ 0 - 9 ] / g , '' )}, '' );});
updateMediaForm ();
}
});
-->
</ script >
2009-03-16 14:05:09 +01:00
< div id = " sort-buttons " class = " hide-if-no-js " >
2009-03-25 18:20:03 +01:00
< span >
< ? php _e ( 'All Tabs:' ); ?>
2009-05-17 14:29:58 +02:00
< a href = " # " id = " showall " >< ? php _e ( 'Show' ); ?> </a>
< a href = " # " id = " hideall " style = " display:none; " >< ? php _e ( 'Hide' ); ?> </a>
2009-03-25 18:20:03 +01:00
</ span >
2009-03-18 03:43:45 +01:00
< ? php _e ( 'Sort Order:' ); ?>
2009-04-20 20:18:39 +02:00
< a href = " # " id = " asc " >< ? php _e ( 'Ascending' ); ?> </a> |
< a href = " # " id = " desc " >< ? php _e ( 'Descending' ); ?> </a> |
2010-05-14 23:46:25 +02:00
< a href = " # " id = " clear " >< ? php _ex ( 'Clear' , 'verb' ); ?> </a>
2009-03-16 14:05:09 +01:00
</ div >
2011-11-11 20:40:23 +01:00
< form enctype = " multipart/form-data " method = " post " action = " <?php echo esc_attr( $form_action_url ); ?> " class = " <?php echo $form_class ; ?> " id = " gallery-form " >
2008-02-26 20:30:10 +01:00
< ? php wp_nonce_field ( 'media-form' ); ?>
< ? php //media_upload_form( $errors ); ?>
2008-11-17 19:01:00 +01:00
< table class = " widefat " cellspacing = " 0 " >
2008-07-10 05:49:52 +02:00
< thead >< tr >
< th >< ? php _e ( 'Media' ); ?> </th>
< th class = " order-head " >< ? php _e ( 'Order' ); ?> </th>
2009-10-08 00:18:09 +02:00
< th class = " actions-head " >< ? php _e ( 'Actions' ); ?> </th>
2008-07-10 05:49:52 +02:00
</ tr ></ thead >
</ table >
2008-02-26 20:30:10 +01:00
< div id = " media-items " >
2009-03-04 09:22:25 +01:00
< ? php add_filter ( 'attachment_fields_to_edit' , 'media_post_single_attachment_fields_to_edit' , 10 , 2 ); ?>
2008-02-26 20:30:10 +01:00
< ? php echo get_media_items ( $post_id , $errors ); ?>
</ div >
2008-11-26 03:27:37 +01:00
2008-07-10 05:49:52 +02:00
< p class = " ml-submit " >
2010-10-28 23:56:43 +02:00
< ? php submit_button ( __ ( 'Save all changes' ), 'button savebutton' , 'save' , false , array ( 'id' => 'save-all' , 'style' => 'display: none;' ) ); ?>
2008-04-25 08:15:17 +02:00
< input type = " hidden " name = " post_id " id = " post_id " value = " <?php echo (int) $post_id ; ?> " />
2009-05-05 21:43:53 +02:00
< input type = " hidden " name = " type " value = " <?php echo esc_attr( $GLOBALS['type'] ); ?> " />
< input type = " hidden " name = " tab " value = " <?php echo esc_attr( $GLOBALS['tab'] ); ?> " />
2008-07-10 05:49:52 +02:00
</ p >
2008-11-26 03:27:37 +01:00
< div id = " gallery-settings " style = " display:none; " >
< div class = " title " >< ? php _e ( 'Gallery Settings' ); ?> </div>
< table id = " basic " class = " describe " >< tbody >
< tr >
< th scope = " row " class = " label " >
< label >
< span class = " alignleft " >< ? php _e ( 'Link thumbnails to:' ); ?> </span>
</ label >
</ th >
< td class = " field " >
< input type = " radio " name = " linkto " id = " linkto-file " value = " file " />
< label for = " linkto-file " class = " radio " >< ? php _e ( 'Image File' ); ?> </label>
< input type = " radio " checked = " checked " name = " linkto " id = " linkto-post " value = " post " />
< label for = " linkto-post " class = " radio " >< ? php _e ( 'Attachment Page' ); ?> </label>
</ td >
</ tr >
< tr >
< th scope = " row " class = " label " >
< label >
< span class = " alignleft " >< ? php _e ( 'Order images by:' ); ?> </span>
</ label >
</ th >
< td class = " field " >
< select id = " orderby " name = " orderby " >
< option value = " menu_order " selected = " selected " >< ? php _e ( 'Menu order' ); ?> </option>
2009-03-09 08:02:38 +01:00
< option value = " title " >< ? php _e ( 'Title' ); ?> </option>
2011-08-24 13:37:25 +02:00
< option value = " post_date " >< ? php _e ( 'Date/Time' ); ?> </option>
2009-03-09 08:02:38 +01:00
< option value = " rand " >< ? php _e ( 'Random' ); ?> </option>
2008-11-26 03:27:37 +01:00
</ select >
</ td >
</ tr >
< tr >
< th scope = " row " class = " label " >
< label >
< span class = " alignleft " >< ? php _e ( 'Order:' ); ?> </span>
</ label >
</ th >
< td class = " field " >
< input type = " radio " checked = " checked " name = " order " id = " order-asc " value = " asc " />
< label for = " order-asc " class = " radio " >< ? php _e ( 'Ascending' ); ?> </label>
< input type = " radio " name = " order " id = " order-desc " value = " desc " />
< label for = " order-desc " class = " radio " >< ? php _e ( 'Descending' ); ?> </label>
</ td >
</ tr >
< tr >
< th scope = " row " class = " label " >
< label >
< span class = " alignleft " >< ? php _e ( 'Gallery columns:' ); ?> </span>
</ label >
</ th >
< td class = " field " >
< select id = " columns " name = " columns " >
2010-11-18 04:30:55 +01:00
< option value = " 1 " > 1 </ option >
2010-01-21 22:37:43 +01:00
< option value = " 2 " > 2 </ option >
< option value = " 3 " selected = " selected " > 3 </ option >
< option value = " 4 " > 4 </ option >
< option value = " 5 " > 5 </ option >
< option value = " 6 " > 6 </ option >
< option value = " 7 " > 7 </ option >
< option value = " 8 " > 8 </ option >
< option value = " 9 " > 9 </ option >
2008-11-26 03:27:37 +01:00
</ select >
</ td >
</ tr >
</ tbody ></ table >
< p class = " ml-submit " >
2009-12-25 23:22:21 +01:00
< input type = " button " class = " button " style = " display:none; " onMouseDown = " wpgallery.update(); " name = " insert-gallery " id = " insert-gallery " value = " <?php esc_attr_e( 'Insert gallery' ); ?> " />
< input type = " button " class = " button " style = " display:none; " onMouseDown = " wpgallery.update(); " name = " update-gallery " id = " update-gallery " value = " <?php esc_attr_e( 'Update gallery settings' ); ?> " />
2008-11-26 03:27:37 +01:00
</ p >
</ div >
2008-02-26 20:30:10 +01:00
</ form >
2008-01-25 20:21:11 +01:00
< ? php
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param array $errors
2008-10-02 03:03:26 +02:00
*/
2008-02-26 20:30:10 +01:00
function media_upload_library_form ( $errors ) {
2008-02-28 22:29:51 +01:00
global $wpdb , $wp_query , $wp_locale , $type , $tab , $post_mime_types ;
2008-02-27 09:31:10 +01:00
2008-03-05 07:46:42 +01:00
media_upload_header ();
2008-02-27 09:31:10 +01:00
2012-11-17 07:42:14 +01:00
$post_id = isset ( $_REQUEST [ 'post_id' ] ) ? intval ( $_REQUEST [ 'post_id' ] ) : 0 ;
2008-02-27 09:31:10 +01:00
2009-09-01 22:44:17 +02:00
$form_action_url = admin_url ( " media-upload.php?type= $type &tab=library&post_id= $post_id " );
$form_action_url = apply_filters ( 'media_upload_form_url' , $form_action_url , $type );
2011-11-11 20:40:23 +01:00
$form_class = 'media-upload-form validate' ;
if ( get_user_setting ( 'uploader' ) )
$form_class .= ' html-uploader' ;
2008-02-27 09:31:10 +01:00
2008-08-08 19:05:10 +02:00
$_GET [ 'paged' ] = isset ( $_GET [ 'paged' ] ) ? intval ( $_GET [ 'paged' ]) : 0 ;
2008-02-27 09:31:10 +01:00
if ( $_GET [ 'paged' ] < 1 )
$_GET [ 'paged' ] = 1 ;
$start = ( $_GET [ 'paged' ] - 1 ) * 10 ;
if ( $start < 1 )
$start = 0 ;
2010-02-20 03:01:46 +01:00
add_filter ( 'post_limits' , create_function ( '$a' , " return 'LIMIT $start , 10'; " ) );
2008-02-27 09:31:10 +01:00
list ( $post_mime_types , $avail_post_mime_types ) = wp_edit_attachments_query ();
?>
< form id = " filter " action = " " method = " get " >
2009-05-05 21:43:53 +02:00
< input type = " hidden " name = " type " value = " <?php echo esc_attr( $type ); ?> " />
< input type = " hidden " name = " tab " value = " <?php echo esc_attr( $tab ); ?> " />
2008-04-25 08:15:17 +02:00
< input type = " hidden " name = " post_id " value = " <?php echo (int) $post_id ; ?> " />
2009-05-05 21:43:53 +02:00
< input type = " hidden " name = " post_mime_type " value = " <?php echo isset( $_GET['post_mime_type'] ) ? esc_attr( $_GET['post_mime_type'] ) : ''; ?> " />
2012-06-06 18:00:08 +02:00
< input type = " hidden " name = " context " value = " <?php echo isset( $_GET['context'] ) ? esc_attr( $_GET['context'] ) : ''; ?> " />
2008-02-27 09:31:10 +01:00
2008-09-06 01:19:08 +02:00
< p id = " media-search " class = " search-box " >
2009-05-13 00:40:56 +02:00
< label class = " screen-reader-text " for = " media-search-input " >< ? php _e ( 'Search Media' ); ?> :</label>
2012-03-10 02:23:48 +01:00
< input type = " search " id = " media-search-input " name = " s " value = " <?php the_search_query(); ?> " />
2010-10-28 23:56:43 +02:00
< ? php submit_button ( __ ( 'Search Media' ), 'button' , '' , false ); ?>
2008-09-06 01:19:08 +02:00
</ p >
2008-02-27 09:31:10 +01:00
< ul class = " subsubsub " >
< ? php
$type_links = array ();
$_num_posts = ( array ) wp_count_attachments ();
$matches = wp_match_mime_types ( array_keys ( $post_mime_types ), array_keys ( $_num_posts ));
2008-03-11 02:30:15 +01:00
foreach ( $matches as $_type => $reals )
2008-02-27 09:31:10 +01:00
foreach ( $reals as $real )
2009-04-22 14:24:45 +02:00
if ( isset ( $num_posts [ $_type ]) )
$num_posts [ $_type ] += $_num_posts [ $real ];
else
$num_posts [ $_type ] = $_num_posts [ $real ];
2008-03-17 21:09:55 +01:00
// If available type specified by media button clicked, filter by that type
if ( empty ( $_GET [ 'post_mime_type' ]) && ! empty ( $num_posts [ $type ]) ) {
$_GET [ 'post_mime_type' ] = $type ;
list ( $post_mime_types , $avail_post_mime_types ) = wp_edit_attachments_query ();
}
if ( empty ( $_GET [ 'post_mime_type' ]) || $_GET [ 'post_mime_type' ] == 'all' )
$class = ' class="current"' ;
2009-04-22 14:24:45 +02:00
else
$class = '' ;
2009-05-18 18:00:33 +02:00
$type_links [] = " <li><a href=' " . esc_url ( add_query_arg ( array ( 'post_mime_type' => 'all' , 'paged' => false , 'm' => false ))) . " ' $class > " . __ ( 'All Types' ) . " </a> " ;
2008-02-27 09:31:10 +01:00
foreach ( $post_mime_types as $mime_type => $label ) {
$class = '' ;
if ( ! wp_match_mime_types ( $mime_type , $avail_post_mime_types ) )
continue ;
2009-04-22 14:24:45 +02:00
if ( isset ( $_GET [ 'post_mime_type' ]) && wp_match_mime_types ( $mime_type , $_GET [ 'post_mime_type' ]) )
2008-02-27 09:31:10 +01:00
$class = ' class="current"' ;
2010-10-29 15:12:14 +02:00
$type_links [] = " <li><a href=' " . esc_url ( add_query_arg ( array ( 'post_mime_type' => $mime_type , 'paged' => false ))) . " ' $class > " . sprintf ( translate_nooped_plural ( $label [ 2 ], $num_posts [ $mime_type ] ), " <span id=' $mime_type -counter'> " . number_format_i18n ( $num_posts [ $mime_type ] ) . '</span>' ) . '</a>' ;
2008-02-27 09:31:10 +01:00
}
2010-10-28 14:41:37 +02:00
echo implode ( ' | </li>' , apply_filters ( 'media_upload_mime_type_links' , $type_links ) ) . '</li>' ;
2008-02-27 09:31:10 +01:00
unset ( $type_links );
?>
</ ul >
< div class = " tablenav " >
< ? php
$page_links = paginate_links ( array (
'base' => add_query_arg ( 'paged' , '%#%' ),
'format' => '' ,
2008-11-27 01:28:24 +01:00
'prev_text' => __ ( '«' ),
'next_text' => __ ( '»' ),
2008-02-27 09:31:10 +01:00
'total' => ceil ( $wp_query -> found_posts / 10 ),
'current' => $_GET [ 'paged' ]
));
if ( $page_links )
echo " <div class='tablenav-pages'> $page_links </div> " ;
?>
2008-10-24 20:25:46 +02:00
< div class = " alignleft actions " >
2008-02-27 09:31:10 +01:00
< ? php
$arc_query = " SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'attachment' ORDER BY post_date DESC " ;
$arc_result = $wpdb -> get_results ( $arc_query );
$month_count = count ( $arc_result );
if ( $month_count && ! ( 1 == $month_count && 0 == $arc_result [ 0 ] -> mmonth ) ) { ?>
< select name = 'm' >
< option < ? php selected ( @ $_GET [ 'm' ], 0 ); ?> value='0'><?php _e('Show all dates'); ?></option>
< ? php
foreach ( $arc_result as $arc_row ) {
if ( $arc_row -> yyear == 0 )
continue ;
$arc_row -> mmonth = zeroise ( $arc_row -> mmonth , 2 );
2008-02-28 22:29:51 +01:00
2009-11-20 20:46:10 +01:00
if ( isset ( $_GET [ 'm' ]) && ( $arc_row -> yyear . $arc_row -> mmonth == $_GET [ 'm' ] ) )
2008-02-27 09:31:10 +01:00
$default = ' selected="selected"' ;
else
$default = '' ;
2008-02-28 22:29:51 +01:00
2009-05-05 21:43:53 +02:00
echo " <option $default value=' " . esc_attr ( $arc_row -> yyear . $arc_row -> mmonth ) . " '> " ;
2009-05-18 17:11:07 +02:00
echo esc_html ( $wp_locale -> get_month ( $arc_row -> mmonth ) . " $arc_row->yyear " );
2008-02-27 09:31:10 +01:00
echo " </option> \n " ;
}
?>
</ select >
< ? php } ?>
2012-09-21 21:34:23 +02:00
< ? php submit_button ( __ ( 'Filter »' ), 'button' , 'post-query-submit' , false ); ?>
2008-02-27 09:31:10 +01:00
</ div >
2008-03-15 00:58:31 +01:00
< br class = " clear " />
2008-02-27 09:31:10 +01:00
</ div >
</ form >
2011-11-11 20:40:23 +01:00
< form enctype = " multipart/form-data " method = " post " action = " <?php echo esc_attr( $form_action_url ); ?> " class = " <?php echo $form_class ; ?> " id = " library-form " >
2008-02-28 22:29:51 +01:00
< ? php wp_nonce_field ( 'media-form' ); ?>
< ? php //media_upload_form( $errors ); ?>
2008-02-27 09:31:10 +01:00
< script type = " text/javascript " >
<!--
jQuery ( function ( $ ){
var preloaded = $ ( " .media-item.preloaded " );
if ( preloaded . length > 0 ) {
preloaded . each ( function (){ prepareMediaItem ({ id : this . id . replace ( / [ ^ 0 - 9 ] / g , '' )}, '' );});
updateMediaForm ();
}
});
-->
</ script >
< div id = " media-items " >
2009-03-04 09:22:25 +01:00
< ? php add_filter ( 'attachment_fields_to_edit' , 'media_post_single_attachment_fields_to_edit' , 10 , 2 ); ?>
2008-02-27 09:31:10 +01:00
< ? php echo get_media_items ( null , $errors ); ?>
</ div >
2008-04-30 22:21:09 +02:00
< p class = " ml-submit " >
2010-10-28 23:56:43 +02:00
< ? php submit_button ( __ ( 'Save all changes' ), 'button savebutton' , 'save' , false ); ?>
2008-04-25 08:15:17 +02:00
< input type = " hidden " name = " post_id " id = " post_id " value = " <?php echo (int) $post_id ; ?> " />
2008-04-30 22:21:09 +02:00
</ p >
2008-02-27 09:31:10 +01:00
</ form >
< ? php
2008-02-26 20:30:10 +01:00
}
2008-10-02 03:03:26 +02:00
/**
2012-09-16 20:31:42 +02:00
* Creates the form for external url
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-10-02 03:03:26 +02:00
*
2012-09-16 20:31:42 +02:00
* @ param string $default_view
* @ return string the form html
2008-10-02 03:03:26 +02:00
*/
2011-10-06 00:36:03 +02:00
function wp_media_insert_url_form ( $default_view = 'image' ) {
2009-10-19 07:09:41 +02:00
if ( ! apply_filters ( 'disable_captions' , '' ) ) {
$caption = '
2011-09-30 08:22:29 +02:00
< tr class = " image-only " >
2009-10-19 07:09:41 +02:00
< th valign = " top " scope = " row " class = " label " >
2012-11-07 22:41:31 +01:00
< label for = " caption " >< span class = " alignleft " > ' . __(' Image Caption ') . ' </ span ></ label >
2009-10-19 07:09:41 +02:00
</ th >
2012-03-21 23:48:36 +01:00
< td class = " field " >< textarea id = " caption " name = " caption " ></ textarea ></ td >
2009-10-19 07:09:41 +02:00
</ tr >
' ;
2008-07-16 23:36:17 +02:00
} else {
2009-10-19 07:09:41 +02:00
$caption = '' ;
2008-07-16 23:36:17 +02:00
}
2008-08-09 07:36:14 +02:00
2008-08-15 17:40:35 +02:00
$default_align = get_option ( 'image_default_align' );
if ( empty ( $default_align ) )
$default_align = 'none' ;
2008-12-09 19:03:31 +01:00
2011-09-30 08:22:29 +02:00
if ( 'image' == $default_view ) {
$view = 'image-only' ;
$table_class = '' ;
} else {
$view = $table_class = 'not-image' ;
}
2008-07-16 23:36:17 +02:00
return '
2011-10-05 23:07:04 +02:00
< p class = " media-types " >< label >< input type = " radio " name = " media_type " value = " image " id = " image-only " ' . checked( ' image - only ', $view, false ) . ' /> ' . __( ' Image ' ) . ' </ label > & nbsp ; & nbsp ; < label >< input type = " radio " name = " media_type " value = " generic " id = " not-image " ' . checked( ' not - image ', $view, false ) . ' /> ' . __( ' Audio , Video , or Other File ' ) . ' </ label ></ p >
2011-09-30 08:22:29 +02:00
< table class = " describe ' . $table_class . ' " >< tbody >
2008-07-10 05:49:52 +02:00
< tr >
2009-10-24 13:43:42 +02:00
< th valign = " top " scope = " row " class = " label " style = " width:130px; " >
2012-11-07 22:41:31 +01:00
< label for = " src " >< span class = " alignleft " > ' . __(' URL ') . ' </ span ></ label >
2009-10-24 13:43:42 +02:00
< span class = " alignright " >< abbr id = " status_img " title = " required " class = " required " >*</ abbr ></ span >
2008-07-10 05:49:52 +02:00
</ th >
2008-07-17 00:09:27 +02:00
< td class = " field " >< input id = " src " name = " src " value = " " type = " text " aria - required = " true " onblur = " addExtImage.getImageData() " /></ td >
2008-07-10 05:49:52 +02:00
</ tr >
2008-02-28 22:29:51 +01:00
< tr >
2008-03-12 06:50:07 +01:00
< th valign = " top " scope = " row " class = " label " >
2012-11-07 22:41:31 +01:00
< label for = " title " >< span class = " alignleft " > ' . __(' Title ') . ' </ span ></ label >
2008-03-12 06:50:07 +01:00
< span class = " alignright " >< abbr title = " required " class = " required " >*</ abbr ></ span >
</ th >
2009-10-19 07:09:41 +02:00
< td class = " field " >< input id = " title " name = " title " value = " " type = " text " aria - required = " true " /></ td >
2008-02-28 22:29:51 +01:00
</ tr >
2008-07-10 05:49:52 +02:00
2011-09-30 08:22:29 +02:00
< tr class = " not-image " >< td ></ td >< td >< p class = " help " > ' . __(' Link text , e . g . & #8220;Ransom Demands (PDF)”') . '</p></td></tr>
< tr class = " image-only " >
2008-03-12 06:50:07 +01:00
< th valign = " top " scope = " row " class = " label " >
2012-11-07 22:41:31 +01:00
< label for = " alt " >< span class = " alignleft " > ' . __(' Alternative Text ') . ' </ span ></ label >
2008-03-12 06:50:07 +01:00
</ th >
2008-07-10 05:49:52 +02:00
< td class = " field " >< input id = " alt " name = " alt " value = " " type = " text " aria - required = " true " />
2009-10-19 07:09:41 +02:00
< p class = " help " > ' . __(' Alt text for the image , e . g . & #8220;The Mona Lisa”') . '</p></td>
2008-02-28 22:29:51 +01:00
</ tr >
2009-10-19 07:09:41 +02:00
' . $caption . '
2011-09-30 08:22:29 +02:00
< tr class = " align image-only " >
2008-07-10 05:49:52 +02:00
< th valign = " top " scope = " row " class = " label " >< p >< label for = " align " > ' . __(' Alignment ') . ' </ label ></ p ></ th >
2008-02-28 22:29:51 +01:00
< td class = " field " >
2008-11-13 04:07:39 +01:00
< input name = " align " id = " align-none " value = " none " onclick = " addExtImage.align= \ 'align \ '+this.value " type = " radio " ' . ($default_align == ' none ' ? ' checked = " checked " ' : ' ').' />
2008-07-10 05:49:52 +02:00
< label for = " align-none " class = " align image-align-none-label " > ' . __(' None ') . ' </ label >
2010-03-06 21:06:32 +01:00
< input name = " align " id = " align-left " value = " left " onclick = " addExtImage.align= \ 'align \ '+this.value " type = " radio " ' . ($default_align == ' left ' ? ' checked = " checked " ' : ' ').' />
2008-07-10 05:49:52 +02:00
< label for = " align-left " class = " align image-align-left-label " > ' . __(' Left ') . ' </ label >
2010-03-06 21:06:32 +01:00
< input name = " align " id = " align-center " value = " center " onclick = " addExtImage.align= \ 'align \ '+this.value " type = " radio " ' . ($default_align == ' center ' ? ' checked = " checked " ' : ' ').' />
2008-07-10 05:49:52 +02:00
< label for = " align-center " class = " align image-align-center-label " > ' . __(' Center ') . ' </ label >
2010-03-06 21:06:32 +01:00
< input name = " align " id = " align-right " value = " right " onclick = " addExtImage.align= \ 'align \ '+this.value " type = " radio " ' . ($default_align == ' right ' ? ' checked = " checked " ' : ' ').' />
2008-07-10 05:49:52 +02:00
< label for = " align-right " class = " align image-align-right-label " > ' . __(' Right ') . ' </ label >
2008-02-28 22:29:51 +01:00
</ td >
</ tr >
2008-07-10 05:49:52 +02:00
2011-09-30 08:22:29 +02:00
< tr class = " image-only " >
2008-07-10 05:49:52 +02:00
< th valign = " top " scope = " row " class = " label " >
2012-11-07 22:41:31 +01:00
< label for = " url " >< span class = " alignleft " > ' . __(' Link Image To : ') . ' </ span ></ label >
2008-07-10 05:49:52 +02:00
</ th >
< td class = " field " >< input id = " url " name = " url " value = " " type = " text " />< br />
2010-03-06 21:06:32 +01:00
< button type = " button " class = " button " value = " " onclick = " document.forms[0].url.value=null " > ' . __(' None ') . ' </ button >
< button type = " button " class = " button " value = " " onclick = " document.forms[0].url.value=document.forms[0].src.value " > ' . __(' Link to image ') . ' </ button >
2008-07-10 05:49:52 +02:00
< p class = " help " > ' . __(' Enter a link URL or click above for presets . ') . ' </ p ></ td >
</ tr >
2011-09-30 08:22:29 +02:00
< tr class = " image-only " >
< td ></ td >
< td >
< input type = " button " class = " button " id = " go_button " style = " color:#bbb; " onclick = " addExtImage.insert() " value = " ' . esc_attr__('Insert into Post') . ' " />
</ td >
2008-02-28 22:29:51 +01:00
</ tr >
2011-09-30 08:22:29 +02:00
< tr class = " not-image " >
< td ></ td >
< td >
' . get_submit_button( __( ' Insert into Post ' ), ' button ', ' insertonlybutton ', false ) . '
</ td >
2009-12-01 10:22:48 +01:00
</ tr >
2008-02-28 22:29:51 +01:00
</ tbody ></ table >
' ;
2010-04-16 23:45:16 +02:00
}
2011-11-11 20:40:23 +01:00
/**
2012-07-11 12:20:15 +02:00
* Displays the multi - file uploader message .
2011-11-11 20:40:23 +01:00
*
* @ since 2.6 . 0
*/
function media_upload_flash_bypass () {
?>
< p class = " upload-flash-bypass " >
2011-11-11 21:32:20 +01:00
< ? php _e ( 'You are using the multi-file uploader. Problems? Try the <a href="#">browser uploader</a> instead.' ); ?>
2011-11-11 20:40:23 +01:00
</ p >
< ? php
}
2011-11-21 21:46:15 +01:00
add_action ( 'post-plupload-upload-ui' , 'media_upload_flash_bypass' );
2011-11-11 20:40:23 +01:00
/**
2012-07-11 12:20:15 +02:00
* Displays the browser ' s built - in uploader message .
2011-11-11 20:40:23 +01:00
*
* @ since 2.6 . 0
*/
function media_upload_html_bypass () {
?>
< p class = " upload-html-bypass hide-if-no-js " >
2012-05-07 18:48:35 +02:00
< ? php _e ( 'You are using the browser’s built-in file uploader. The WordPress uploader includes multiple file selection and drag and drop capability. <a href="#">Switch to the multi-file uploader</a>.' ); ?>
2011-11-11 20:40:23 +01:00
</ p >
< ? php
}
add_action ( 'post-html-upload-ui' , 'media_upload_html_bypass' );
2012-07-11 12:20:15 +02:00
/**
* Displays the " After a file has been uploaded... " message .
*
* @ since 3.3 . 0
*/
2011-11-21 21:46:15 +01:00
function media_upload_text_after () {
?>
< span class = " after-file-upload " >< ? php _e ( 'After a file has been uploaded, you can add titles and descriptions.' ); ?> </span>
< ? php
}
add_action ( 'post-upload-ui' , 'media_upload_text_after' , 5 );
2011-11-08 23:42:20 +01:00
/**
2012-07-11 12:20:15 +02:00
* Displays the checkbox to scale images .
2011-11-08 23:42:20 +01:00
*
2012-07-11 12:20:15 +02:00
* @ since 3.3 . 0
2011-11-08 23:42:20 +01:00
*/
function media_upload_max_image_resize () {
$checked = get_user_setting ( 'upload_resize' ) ? ' checked="true"' : '' ;
$a = $end = '' ;
if ( current_user_can ( 'manage_options' ) ) {
$a = '<a href="' . esc_url ( admin_url ( 'options-media.php' ) ) . '" target="_blank">' ;
$end = '</a>' ;
}
?>
< p class = " hide-if-no-js " >< label >
< input name = " image_resize " type = " checkbox " id = " image_resize " value = " true " < ? php echo $checked ; ?> />
< ? php
/* translators: %1$s is link start tag, %2$s is link end tag, %3$d is width, %4$d is height*/
printf ( __ ( 'Scale images to match the large size selected in %1$simage options%2$s (%3$d × %4$d).' ), $a , $end , ( int ) get_option ( 'large_size_w' , '1024' ), ( int ) get_option ( 'large_size_h' , '1024' ) );
?>
</ label ></ p >
< ? php
}
2012-07-11 12:20:15 +02:00
/**
* Displays the out of storage quota message in Multisite .
*
* @ since 3.5 . 0
*/
function multisite_over_quota_message () {
echo '<p>' . sprintf ( __ ( 'Sorry, you have used all of your storage quota of %s MB.' ), get_space_allowed () ) . '</p>' ;
}
2012-09-22 00:52:54 +02:00
/**
* Displays the image and editor in the post editor
*
* @ since 3.5 . 0
*/
function edit_form_image_editor () {
$post = get_post ();
$thumb_url = false ;
if ( $attachment_id = intval ( $post -> ID ) )
$thumb_url = wp_get_attachment_image_src ( $attachment_id , array ( 900 , 600 ), true );
$filename = esc_html ( basename ( $post -> guid ) );
$title = esc_attr ( $post -> post_title );
2012-11-05 15:04:22 +01:00
$alt_text = get_post_meta ( $post -> ID , '_wp_attachment_image_alt' , true );
2012-09-22 00:52:54 +02:00
$post_mime_types = get_post_mime_types ();
$keys = array_keys ( wp_match_mime_types ( array_keys ( $post_mime_types ), $post -> post_mime_type ) );
$type = array_shift ( $keys );
$type_html = " <input type='hidden' id='type-of- $attachment_id ' value=' " . esc_attr ( $type ) . " ' /> " ;
$media_dims = '' ;
$meta = wp_get_attachment_metadata ( $post -> ID );
if ( is_array ( $meta ) && array_key_exists ( 'width' , $meta ) && array_key_exists ( 'height' , $meta ) )
$media_dims .= " <span id='media-dims- $post->ID '> { $meta [ 'width' ] } × { $meta [ 'height' ] } </span> " ;
$media_dims = apply_filters ( 'media_meta' , $media_dims , $post );
$att_url = wp_get_attachment_url ( $post -> ID );
$image_edit_button = '' ;
if ( gd_edit_image_support ( $post -> post_mime_type ) ) {
$nonce = wp_create_nonce ( " image_editor- $post->ID " );
2012-09-26 21:57:44 +02:00
$image_edit_button = " <input type='button' id='imgedit-open-btn- $post->ID ' onclick='imageEdit.open( $post->ID , \" $nonce\ " ) ' class=' button ' value=' " . esc_attr__( 'Edit Image' ) . " ' /> <span class=' spinner ' ></ span > " ;
2012-09-22 00:52:54 +02:00
}
?>
< div class = " wp_attachment_holder " >
< div class = " imgedit-response " id = " imgedit-response-<?php echo $attachment_id ; ?> " ></ div >
< div class = " wp_attachment_image " id = " media-head-<?php echo $attachment_id ; ?> " >
2012-10-01 21:51:23 +02:00
< p >< img class = " thumbnail " src = " <?php echo set_url_scheme( $thumb_url[0] ); ?> " style = " max-width:100% " width = " <?php echo $thumb_url[1] ; ?> " alt = " " /></ p >
2012-09-22 00:52:54 +02:00
< p >< ? php echo $image_edit_button ; ?> </p>
</ div >
< div style = " display:none " class = " image-editor " id = " image-editor-<?php echo $attachment_id ; ?> " ></ div >
2012-11-05 15:04:22 +01:00
</ div >
2012-09-22 00:52:54 +02:00
2012-11-05 15:04:22 +01:00
< div class = " wp_attachment_details " >
< p >
< label for = " attachment_caption " >< strong >< ? php _e ( 'Caption' ); ?> </strong></label><br />
< textarea class = " widefat " name = " excerpt " id = " attachment_caption " >< ? php echo $post -> post_excerpt ; ?> </textarea>
</ p >
< p >
< label for = " attachment_alt " >< strong >< ? php _e ( 'Alternative Text' ); ?> </strong></label><br />
< input type = " text " class = " widefat " name = " _wp_attachment_image_alt " id = " attachment_alt " value = " <?php echo esc_attr( $alt_text ); ?> " />
</ p >
2012-09-22 00:52:54 +02:00
</ div >
< ? php
2012-11-05 15:04:22 +01:00
// need a filter on this content
}
/**
* Displays non - editable attachment metadata in the publish metabox
*
* @ since 3.5 . 0
*/
function attachment_submitbox_metadata () {
$post = get_post ();
$filename = esc_html ( basename ( $post -> guid ) );
$media_dims = '' ;
$meta = wp_get_attachment_metadata ( $post -> ID );
if ( is_array ( $meta ) && array_key_exists ( 'width' , $meta ) && array_key_exists ( 'height' , $meta ) )
$media_dims .= " <span id='media-dims- $post->ID '> { $meta [ 'width' ] } × { $meta [ 'height' ] } </span> " ;
$media_dims = apply_filters ( 'media_meta' , $media_dims , $post );
$att_url = wp_get_attachment_url ( $post -> ID );
?>
< div class = " misc-pub-section " >
< label for = " attachment_url " >< ? php _e ( 'File URL:' ); ?> </label>
< input type = " text " class = " widefat urlfield " readonly = " readonly " name = " attachment_url " value = " <?php echo esc_attr( $att_url ); ?> " />
</ div >
< div class = " misc-pub-section " >
< ? php _e ( 'File name:' ); ?> <strong><?php echo $filename; ?></strong>
</ div >
< div class = " misc-pub-section " >
< ? php _e ( 'File type:' ); ?> <strong><?php echo $post->post_mime_type; ?></strong>
</ div >
< ? php if ( $media_dims ) : ?>
< div class = " misc-pub-section " >
< ? php _e ( 'Dimensions:' ); ?> <strong><?php echo $media_dims; ?></strong>
</ div >
< ? php
endif ;
2012-09-22 00:52:54 +02:00
}
2011-10-06 00:57:17 +02:00
add_filter ( 'async_upload_image' , 'get_media_item' , 10 , 2 );
add_filter ( 'async_upload_audio' , 'get_media_item' , 10 , 2 );
add_filter ( 'async_upload_video' , 'get_media_item' , 10 , 2 );
add_filter ( 'async_upload_file' , 'get_media_item' , 10 , 2 );
2008-02-26 20:30:10 +01:00
2011-10-06 00:36:03 +02:00
add_action ( 'media_upload_image' , 'wp_media_upload_handler' );
add_action ( 'media_upload_audio' , 'wp_media_upload_handler' );
add_action ( 'media_upload_video' , 'wp_media_upload_handler' );
add_action ( 'media_upload_file' , 'wp_media_upload_handler' );
2008-02-26 20:30:10 +01:00
2011-10-06 00:57:17 +02:00
add_filter ( 'media_upload_gallery' , 'media_upload_gallery' );
2011-10-31 22:38:28 +01:00
add_filter ( 'media_upload_library' , 'media_upload_library' );
2012-11-05 15:04:22 +01:00
add_action ( 'attachment_submitbox_misc_actions' , 'attachment_submitbox_metadata' );