2008-01-09 09:14:29 +01:00
< ? php
2008-02-26 20:30:10 +01:00
function media_upload_tabs () {
2008-01-09 09:14:29 +01:00
$_default_tabs = array (
2008-02-28 22:29:51 +01:00
'type' => __ ( 'Choose File' ), // handler action suffix => tab text
'gallery' => __ ( 'Gallery' ),
2008-02-26 20:30:10 +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-02-28 22:29:51 +01:00
function update_gallery_tab ( $tabs ) {
2008-02-26 20:30:10 +01:00
global $wpdb ;
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 ;
}
if ( intval ( $_REQUEST [ 'post_id' ]) )
2008-02-28 22:29:51 +01:00
$attachments = intval ( $wpdb -> get_var ( $wpdb -> prepare ( " SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d " , $_REQUEST [ 'post_id' ])));
2008-02-26 20:30:10 +01:00
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
function the_media_upload_tabs () {
2008-07-10 05:49:52 +02:00
global $redir_tab ;
2008-02-26 20:30:10 +01:00
$tabs = media_upload_tabs ();
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' ];
2008-03-01 21:41:18 +01:00
else {
$keys = array_keys ( $tabs );
$current = array_shift ( $keys );
}
2008-02-13 19:36:40 +01:00
foreach ( $tabs as $callback => $text ) {
2008-02-27 09:31:10 +01:00
$class = '' ;
if ( $current == $callback )
$class = " class='current' " ;
$href = add_query_arg ( array ( 'tab' => $callback , 's' => false , 'paged' => false , 'post_mime_type' => false , 'm' => false ));
2008-05-13 02:03:11 +02:00
$link = " <a href=' " . clean_url ( $href ) . " ' $class > $text </a> " ;
echo " \t <li id=' " . attribute_escape ( " tab- $callback " ) . " '> $link </li> \n " ;
2008-02-13 19:36:40 +01:00
}
echo " </ul> \n " ;
}
}
2008-02-21 07:00:15 +01:00
function get_image_send_to_editor ( $id , $alt , $title , $align , $url = '' , $rel = false , $size = 'medium' ) {
2008-01-09 09:14:29 +01:00
2008-03-22 00:21:27 +01:00
$html = get_image_tag ( $id , $alt , $title , $align , $size );
2008-01-09 09:14:29 +01:00
2008-02-16 22:54:47 +01:00
$rel = $rel ? ' rel="attachment wp-att-' . attribute_escape ( $id ) . '"' : '' ;
2008-03-06 20:48:54 +01:00
2008-01-09 09:14:29 +01:00
if ( $url )
2008-05-02 19:25:54 +02:00
$html = '<a href="' . clean_url ( $url ) . " \" $rel > $html </a> " ;
2008-02-28 22:29:51 +01:00
2008-04-14 21:47:07 +02:00
$html = apply_filters ( 'image_send_to_editor' , $html , $id , $alt , $title , $align , $url , $size );
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-07-02 20:41:11 +02:00
function image_add_caption ( $html , $id , $alt , $title , $align , $url , $size ) {
2008-07-16 23:36:17 +02:00
if ( empty ( $alt ) || apply_filters ( 'disable_captions' , '' ) ) return $html ;
2008-07-02 20:41:11 +02:00
$id = ( 0 < ( int ) $id ) ? 'attachment_' . $id : '' ;
preg_match ( '/width="([0-9]+)/' , $html , $matches );
if ( ! isset ( $matches [ 1 ]) ) return $html ;
$width = $matches [ 1 ];
$html = preg_replace ( '/align[^\s\'"]+\s?/' , '' , $html );
if ( empty ( $align ) ) $align = 'none' ;
2008-07-11 17:59:14 +02:00
$shcode = '[caption id="' . $id . '" align="align' . $align
. '" width="' . $width . '" caption="' . $alt . '"]' . $html . '[/caption]' ;
2008-07-02 20:41:11 +02:00
return apply_filters ( 'image_add_caption_shortcode' , $shcode , $html );
}
add_filter ( 'image_send_to_editor' , 'image_add_caption' , 20 , 7 );
2008-01-09 09:14:29 +01:00
function media_send_to_editor ( $html ) {
?>
< 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 >
2008-01-09 09:14:29 +01:00
< ? php
2008-02-16 22:54:47 +01:00
exit ;
2008-01-09 09:14:29 +01:00
}
2008-01-25 20:21:11 +01:00
// this handles the file upload POST itself, creating the attachment post
function media_handle_upload ( $file_id , $post_id , $post_data = array ()) {
$overrides = array ( 'test_form' => false );
$file = wp_handle_upload ( $_FILES [ $file_id ], $overrides );
if ( isset ( $file [ 'error' ]) )
2008-07-23 20:35:38 +02:00
return new WP_Error ( 'upload_error' , $file [ 'error' ] );
2008-01-25 20:21:11 +01: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 ) ) {
if ( trim ( $image_meta [ 'title' ]) )
$title = $image_meta [ 'title' ];
if ( trim ( $image_meta [ 'caption' ]) )
$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 );
// Save the data
$id = wp_insert_attachment ( $attachment , $file , $post_parent );
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-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 );
$file = wp_handle_sideload ( $file_array , $overrides );
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 ) ) {
if ( trim ( $image_meta [ 'title' ]) )
$title = $image_meta [ 'title' ];
if ( trim ( $image_meta [ 'caption' ]) )
$content = $image_meta [ 'caption' ];
}
2008-07-10 05:49:52 +02:00
2008-06-10 18:13:06 +02:00
$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 );
// Save the data
$id = wp_insert_attachment ( $attachment , $file , $post_parent );
if ( ! is_wp_error ( $id ) ) {
wp_update_attachment_metadata ( $id , wp_generate_attachment_metadata ( $id , $file ) );
2008-06-23 23:16:39 +02:00
return $url ;
2008-06-04 18:13:55 +02:00
}
2008-06-23 18:00:12 +02:00
return $id ;
2008-06-04 18:13:55 +02:00
}
2008-01-09 09:14:29 +01:00
// wrap iframe content (produced by $content_func) in a doctype, html head/body etc
// any additional function args will be passed to content_func
function wp_iframe ( $content_func /* ... */ ) {
?>
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " < ? php do_action ( 'admin_xml_ns' ); ?> <?php language_attributes(); ?>>
< head >
< meta http - equiv = " Content-Type " content = " <?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?> " />
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
2008-05-24 19:03:51 +02:00
wp_enqueue_style ( 'global' );
wp_enqueue_style ( 'wp-admin' );
wp_enqueue_style ( 'colors' );
2008-05-22 02:06:41 +02:00
if ( 0 === strpos ( $content_func , 'media' ) )
2008-05-24 19:03:51 +02:00
wp_enqueue_style ( 'media' );
2008-05-22 02:06:41 +02:00
2008-02-11 08:53:10 +01:00
?>
2008-01-09 09:14:29 +01:00
< script type = " text/javascript " >
//<![CDATA[
function addLoadEvent ( func ) { if ( typeof wpOnload != 'function' ){ wpOnload = func ;} else { var oldonload = wpOnload ; wpOnload = function (){ oldonload (); func ();}}}
//]]>
</ script >
< ? php
2008-05-22 02:06:41 +02:00
do_action ( 'admin_print_styles' );
2008-05-24 19:03:51 +02:00
do_action ( 'admin_print_scripts' );
2008-01-09 09:14:29 +01:00
do_action ( 'admin_head' );
if ( is_string ( $content_func ) )
do_action ( " admin_head_ { $content_func } " );
?>
</ head >
2008-03-10 22:49:08 +01:00
< body < ? php if ( isset ( $GLOBALS [ 'body_id' ]) ) echo ' id="' . $GLOBALS [ 'body_id' ] . '"' ; ?> >
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 );
?>
</ body >
</ html >
< ? php
}
2008-02-22 06:53:47 +01:00
function media_buttons () {
2008-01-09 09:14:29 +01:00
global $post_ID , $temp_ID ;
$uploading_iframe_ID = ( int ) ( 0 == $post_ID ? $temp_ID : $post_ID );
2008-03-04 05:28:23 +01:00
$context = apply_filters ( 'media_buttons_context' , __ ( 'Add media: %s' ));
2008-02-28 22:29:51 +01:00
$media_upload_iframe_src = " media-upload.php?post_id= $uploading_iframe_ID " ;
$media_title = __ ( 'Add Media' );
$image_upload_iframe_src = apply_filters ( 'image_upload_iframe_src' , " $media_upload_iframe_src &type=image " );
$image_title = __ ( 'Add an Image' );
$video_upload_iframe_src = apply_filters ( 'video_upload_iframe_src' , " $media_upload_iframe_src &type=video " );
$video_title = __ ( 'Add Video' );
$audio_upload_iframe_src = apply_filters ( 'audio_upload_iframe_src' , " $media_upload_iframe_src &type=audio " );
$audio_title = __ ( 'Add Audio' );
$out = <<< EOF
2008-07-03 17:55:45 +02:00
< a href = " { $image_upload_iframe_src } &TB_iframe=true " id = " add_image " class = " thickbox " title = '$image_title' >< img src = 'images/media-button-image.gif' alt = '$image_title' /></ a >
< a href = " { $video_upload_iframe_src } &TB_iframe=true " id = " add_video " class = " thickbox " title = '$video_title' >< img src = 'images/media-button-video.gif' alt = '$video_title' /></ a >
< a href = " { $audio_upload_iframe_src } &TB_iframe=true " id = " add_audio " class = " thickbox " title = '$audio_title' >< img src = 'images/media-button-music.gif' alt = '$audio_title' /></ a >
< a href = " { $media_upload_iframe_src } &TB_iframe=true " id = " add_media " class = " thickbox " title = '$media_title' >< img src = 'images/media-button-other.gif' alt = '$media_title' /></ a >
2008-02-28 22:29:51 +01:00
EOF ;
2008-03-04 05:28:23 +01:00
printf ( $context , $out );
2008-01-09 09:14:29 +01:00
}
add_action ( 'media_buttons' , 'media_buttons' );
2008-02-26 20:30:10 +01:00
add_action ( 'media_upload_media' , 'media_upload_handler' );
2008-01-09 09:14:29 +01: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
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 );
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' ];
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
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
2008-02-16 22:54:47 +01:00
foreach ( get_attachment_taxonomies ( $post ) as $t )
if ( isset ( $attachment [ $t ]) )
wp_set_object_terms ( $attachment_id , array_map ( 'trim' , preg_split ( '/,+/' , $attachment [ $t ])), $t , false );
}
2008-01-25 20:21:11 +01:00
2008-03-06 20:48:54 +01:00
if ( isset ( $_POST [ 'insert-gallery' ]) )
2008-02-16 22:54:47 +01:00
return media_send_to_editor ( '[gallery]' );
if ( isset ( $_POST [ 'send' ]) ) {
2008-03-01 21:41:18 +01:00
$keys = array_keys ( $_POST [ 'send' ]);
$send_id = ( int ) array_shift ( $keys );
2008-08-10 04:14:13 +02:00
$attachment = stripslashes_deep ( $_POST [ 'attachments' ][ $send_id ] );
2008-03-06 20:48:54 +01:00
$html = $attachment [ 'post_title' ];
2008-03-22 00:21:27 +01:00
if ( ! empty ( $attachment [ 'url' ]) ) {
if ( strpos ( $attachment [ 'url' ], 'attachment_id' ) || false !== strpos ( $attachment [ 'url' ], get_permalink ( $_POST [ 'post_id' ])) )
$rel = " rel='attachment wp-att- " . attribute_escape ( $send_id ) . " ' " ;
$html = " <a href=' { $attachment [ 'url' ] } ' $rel > $html </a> " ;
}
2008-03-06 20:48:54 +01: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
2008-02-26 20:30:10 +01:00
return $errors ;
}
2008-02-28 22:29:51 +01:00
function media_upload_image () {
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 ) ) {
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' ]) ) {
$src = $_POST [ 'insertonly' ][ 'src' ];
2008-03-17 21:08:43 +01:00
if ( ! empty ( $src ) && ! strpos ( $src , '://' ) )
2008-02-28 22:29:51 +01:00
$src = " http:// $src " ;
$alt = attribute_escape ( $_POST [ 'insertonly' ][ 'alt' ]);
if ( isset ( $_POST [ 'insertonly' ][ 'align' ]) ) {
$align = attribute_escape ( $_POST [ 'insertonly' ][ 'align' ]);
2008-03-05 07:46:42 +01:00
$class = " class='align $align ' " ;
2008-02-28 22:29:51 +01:00
}
2008-03-17 21:08:43 +01:00
if ( ! empty ( $src ) )
$html = " <img src=' $src ' alt=' $alt ' $class /> " ;
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-03-26 22:22:19 +01:00
2008-02-28 22:29:51 +01:00
return wp_iframe ( 'media_upload_type_form' , 'image' , $errors , $id );
2008-01-25 20:21:11 +01:00
}
2008-06-23 18:00:12 +02:00
function media_sideload_image ( $file , $post_id , $desc = null ) {
if ( ! empty ( $file ) ) {
$file_array [ 'name' ] = basename ( $file );
$file_array [ 'tmp_name' ] = download_url ( $file );
$desc = @ $desc ;
2008-07-10 05:49:52 +02:00
2008-06-23 18:00:12 +02:00
$id = media_handle_sideload ( $file_array , $post_id , $desc );
2008-06-23 23:16:39 +02:00
$src = $id ;
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 ;
}
}
2008-06-23 23:16:39 +02:00
2008-06-23 18:00:12 +02:00
if ( ! empty ( $src ) ) {
2008-06-23 23:16:39 +02:00
$alt = @ $desc ;
2008-06-23 18:00:12 +02:00
$html = " <img src=' $src ' alt=' $alt ' /> " ;
return $html ;
}
}
2008-02-28 22:29:51 +01:00
function media_upload_audio () {
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 ) ) {
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' ]) ) {
$href = $_POST [ 'insertonly' ][ 'href' ];
2008-03-17 21:08:43 +01:00
if ( ! empty ( $href ) && ! strpos ( $href , '://' ) )
2008-02-28 22:29:51 +01:00
$href = " http:// $href " ;
$title = attribute_escape ( $_POST [ 'insertonly' ][ 'title' ]);
2008-03-17 21:08:43 +01:00
if ( empty ( $title ) )
$title = basename ( $href );
if ( ! empty ( $title ) && ! empty ( $href ) )
$html = " <a href=' $href ' > $title </a> " ;
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-03-26 22:22:19 +01:00
2008-02-28 22:29:51 +01:00
return wp_iframe ( 'media_upload_type_form' , 'audio' , $errors , $id );
2008-02-26 20:30:10 +01:00
}
2008-02-28 22:29:51 +01:00
function media_upload_video () {
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 ) ) {
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' ]) ) {
$href = $_POST [ 'insertonly' ][ 'href' ];
2008-03-17 21:08:43 +01:00
if ( ! empty ( $href ) && ! strpos ( $href , '://' ) )
2008-02-28 22:29:51 +01:00
$href = " http:// $href " ;
$title = attribute_escape ( $_POST [ 'insertonly' ][ 'title' ]);
2008-03-17 21:08:43 +01:00
if ( empty ( $title ) )
$title = basename ( $href );
if ( ! empty ( $title ) && ! empty ( $href ) )
$html = " <a href=' $href ' > $title </a> " ;
2008-02-28 22:29:51 +01:00
return media_send_to_editor ( $html );
}
2008-02-27 09:31:10 +01:00
if ( ! empty ( $_POST ) ) {
$return = media_upload_form_handler ();
2008-02-28 22:29:51 +01:00
2008-02-27 09:31: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-03-26 22:22:19 +01:00
2008-02-28 22:29:51 +01:00
return wp_iframe ( 'media_upload_type_form' , 'video' , $errors , $id );
2008-02-26 20:30:10 +01:00
}
2008-02-28 22:29:51 +01:00
function media_upload_file () {
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 ) ) {
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 ;
}
2008-02-27 09:31:10 +01:00
}
2008-01-25 20:21:11 +01:00
2008-02-28 22:29:51 +01:00
if ( ! empty ( $_POST [ 'insertonlybutton' ]) ) {
$href = $_POST [ 'insertonly' ][ 'href' ];
2008-03-17 21:08:43 +01:00
if ( ! empty ( $href ) && ! strpos ( $href , '://' ) )
2008-02-28 22:29:51 +01:00
$href = " http:// $href " ;
$title = attribute_escape ( $_POST [ 'insertonly' ][ 'title' ]);
2008-03-17 21:08:43 +01:00
if ( empty ( $title ) )
$title = basename ( $href );
if ( ! empty ( $title ) && ! empty ( $href ) )
$html = " <a href=' $href ' > $title </a> " ;
2008-02-28 22:29:51 +01:00
return media_send_to_editor ( $html );
}
2008-01-25 20:21:11 +01:00
2008-02-28 22:29:51 +01:00
if ( ! empty ( $_POST ) ) {
$return = media_upload_form_handler ();
2008-01-25 20:21:11 +01:00
2008-02-28 22:29:51 +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-03-26 22:22:19 +01:00
2008-02-28 22:29:51 +01:00
return wp_iframe ( 'media_upload_type_form' , 'file' , $errors , $id );
}
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 );
}
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-08-15 17:40:35 +02:00
// produce HTML for the image alignment radio buttons with the specified one checked
function image_align_input_fields ( $post , $checked = '' ) {
$alignments = array ( 'none' => 'None' , 'left' => 'Left' , 'center' => 'Center' , 'right' => 'Right' );
if ( ! array_key_exists ( $checked , $alignments ) )
$checked = 'none' ;
$out = array ();
foreach ( $alignments as $name => $label ) {
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-08-15 17:40:35 +02:00
( $checked == $name ? " checked='checked' " : " " ) .
" /><label for='image-align- { $name } - { $post -> ID } ' class='align image-align- { $name } -label'> " . __ ( $label ) . " </label> " ;
}
return join ( " \n " , $out );
}
// produce HTML for the size radio buttons with the specified one checked
2008-08-11 05:54:26 +02:00
function image_size_input_fields ( $post , $checked = '' ) {
// get a list of the actual pixel dimensions of each possible intermediate version of this image
$size_names = array ( 'thumbnail' => 'Thumbnail' , 'medium' => 'Medium' , 'large' => 'Large' , 'full' => 'Full size' );
foreach ( $size_names as $size => $name ) {
$downsize = image_downsize ( $post -> ID , $size );
// 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
if ( $checked && ! $enabled )
$checked = '' ;
2008-08-11 05:54:26 +02:00
// if $checked was not specified, default to the first available size that's bigger than a thumbnail
if ( ! $checked && $enabled && 'thumbnail' != $size )
$checked = $size ;
$html = " <div class='image-size-item'><input type='radio' " . ( $enabled ? '' : " disabled='disabled' " ) . " name='attachments[ $post->ID ][image-size]' id=' { $css_id } ' value=' { $size } ' " . ( $checked == $size ? " checked='checked' " : '' ) . " /> " ;
$html .= " <label for=' { $css_id } '> " . __ ( $name ) . " </label> " ;
// only show the dimensions if that choice is available
if ( $enabled )
$html .= " <label for=' { $css_id } ' class='help'> " . sprintf ( __ ( " (%d × %d) " ), $downsize [ 1 ], $downsize [ 2 ] ) . " </label> " ;
$html .= '</div>' ;
$out [] = $html ;
}
return array (
'label' => __ ( 'Size' ),
'input' => 'html' ,
'html' => join ( " \n " , $out ),
);
}
2008-08-15 17:40:35 +02:00
// produce HTML for the Link URL buttons with the default link type as specified
function image_link_input_fields ( $post , $url_type = '' ) {
$file = wp_get_attachment_url ( $post -> ID );
$link = get_attachment_link ( $post -> ID );
$url = '' ;
if ( $url_type == 'file' )
$url = $file ;
elseif ( $url_type == 'post' )
$url = $link ;
return " <input type='text' name='attachments[ $post->ID ][url]' value=' " . attribute_escape ( $url ) . " ' /><br />
< button type = 'button' class = 'button url-$post->ID' value = '' > " . __('None') . " </ button >
< button type = 'button' class = 'button url-$post->ID' value = '" . attribute_escape($file) . "' > " . __('File URL') . " </ button >
< button type = 'button' class = 'button url-$post->ID' value = '" . attribute_escape($link) . "' > " . __('Post URL') . " </ button >
< script type = 'text/javascript' >
jQuery ( 'button.url-$post->ID' ) . bind ( 'click' , function (){ jQuery ( this ) . siblings ( 'input' ) . val ( this . value );});
</ script > \n " ;
}
2008-02-16 22:54:47 +01:00
function image_attachment_fields_to_edit ( $form_fields , $post ) {
if ( substr ( $post -> post_mime_type , 0 , 5 ) == 'image' ) {
$form_fields [ 'post_title' ][ 'required' ] = true ;
2008-07-11 17:59:14 +02:00
2008-07-16 23:36:17 +02:00
$form_fields [ 'post_excerpt' ][ 'label' ] = __ ( 'Caption' );
$form_fields [ 'post_excerpt' ][ 'helps' ][] = __ ( 'Also used as alternate text for the image' );
2008-02-16 22:54:47 +01:00
2008-03-24 03:57:19 +01:00
$form_fields [ 'post_content' ][ 'label' ] = __ ( 'Description' );
2008-02-22 06:53:47 +01:00
2008-02-28 22:29:51 +01:00
$form_fields [ 'align' ] = array (
2008-02-16 22:54:47 +01:00
'label' => __ ( 'Alignment' ),
'input' => 'html' ,
2008-08-15 17:40:35 +02:00
'html' => image_align_input_fields ( $post , get_option ( 'image_default_align' )),
2008-02-16 22:54:47 +01:00
);
2008-08-15 17:40:35 +02:00
$form_fields [ 'image-size' ] = image_size_input_fields ( $post , get_option ( 'image_default_size' ));
2008-02-16 22:54:47 +01:00
}
return $form_fields ;
}
add_filter ( 'attachment_fields_to_edit' , 'image_attachment_fields_to_edit' , 10 , 2 );
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 ;
}
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 );
function image_media_send_to_editor ( $html , $attachment_id , $attachment ) {
$post =& get_post ( $attachment_id );
if ( substr ( $post -> post_mime_type , 0 , 5 ) == 'image' ) {
2008-02-28 22:29:51 +01:00
$url = $attachment [ 'url' ];
2008-02-16 22:54:47 +01:00
if ( isset ( $attachment [ 'align' ]) )
$align = $attachment [ 'align' ];
else
$align = 'none' ;
2008-02-22 06:53:47 +01:00
if ( ! empty ( $attachment [ 'image-size' ]) )
$size = $attachment [ 'image-size' ];
else
$size = 'medium' ;
2008-03-28 04:53:05 +01:00
$rel = ( $url == get_attachment_link ( $attachment_id ) );
return get_image_send_to_editor ( $attachment_id , $attachment [ 'post_excerpt' ], $attachment [ 'post_title' ], $align , $url , $rel , $size );
2008-02-16 22:54:47 +01:00
}
return $html ;
}
add_filter ( 'media_send_to_editor' , 'image_media_send_to_editor' , 10 , 3 );
function get_attachment_fields_to_edit ( $post , $errors = null ) {
if ( is_int ( $post ) )
$post =& get_post ( $post );
if ( is_array ( $post ) )
$post = ( object ) $post ;
$edit_post = sanitize_post ( $post , 'edit' );
2008-02-28 22:29:51 +01:00
$file = wp_get_attachment_url ( $post -> ID );
$link = get_attachment_link ( $post -> ID );
2008-02-16 22:54:47 +01:00
$form_fields = array (
'post_title' => array (
'label' => __ ( 'Title' ),
'value' => $edit_post -> post_title ,
),
'post_excerpt' => array (
2008-07-16 23:36:17 +02:00
'label' => __ ( 'Caption' ),
2008-02-16 22:54:47 +01:00
'value' => $edit_post -> post_excerpt ,
),
'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 ,
'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' )),
2008-02-28 22:29:51 +01:00
'helps' => __ ( 'Enter a link URL or click above for presets.' ),
2008-02-16 22:54:47 +01:00
),
2008-05-21 20:29:46 +02:00
'menu_order' => array (
'label' => __ ( 'Order' ),
'value' => $edit_post -> menu_order
),
2008-02-16 22:54:47 +01:00
);
foreach ( get_attachment_taxonomies ( $post ) as $taxonomy ) {
$t = ( array ) get_taxonomy ( $taxonomy );
if ( empty ( $t [ 'label' ]) )
$t [ 'label' ] = $taxonomy ;
if ( empty ( $t [ 'args' ]) )
$t [ 'args' ] = array ();
$terms = get_object_term_cache ( $post -> ID , $taxonomy );
if ( empty ( $terms ) )
$terms = wp_get_object_terms ( $post -> ID , $taxonomy , $t [ 'args' ]);
$values = array ();
foreach ( $terms as $term )
$values [] = $term -> name ;
$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
2008-02-16 22:54:47 +01:00
$form_fields = apply_filters ( 'attachment_fields_to_edit' , $form_fields , $post );
return $form_fields ;
}
2008-02-28 22:29:51 +01:00
function get_media_items ( $post_id , $errors ) {
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 ;
}
if ( empty ( $attachments ) )
return '' ;
foreach ( $attachments as $id => $attachment )
2008-03-12 06:50:07 +01:00
if ( $item = get_media_item ( $id , array ( 'errors' => isset ( $errors [ $id ]) ? $errors [ $id ] : null ) ) )
2008-04-14 22:48:11 +02:00
$output .= " \n <div id='media-item- $id ' class='media-item child-of- $attachment->post_parent preloaded'><div class='progress'><div class='bar'></div></div><div id='media-upload-error- $id '></div><div class='filename'></div> $item\n </div> " ;
2008-02-28 22:29:51 +01:00
return $output ;
}
2008-03-12 06:50:07 +01:00
function get_media_item ( $attachment_id , $args = null ) {
2008-07-10 05:49:52 +02:00
global $redir_tab ;
2008-03-12 06:50:07 +01:00
$default_args = array ( 'errors' => null , 'send' => true , 'delete' => true , 'toggle' => true );
$args = wp_parse_args ( $args , $default_args );
extract ( $args , EXTR_SKIP );
2008-02-28 22:29:51 +01:00
global $post_mime_types ;
2008-02-24 05:34:40 +01:00
if ( ( $attachment_id = intval ( $attachment_id ) ) && $thumb_url = get_attachment_icon_src ( $attachment_id ) )
2008-02-26 20:30:10 +01:00
$thumb_url = $thumb_url [ 0 ];
2008-02-24 05:34:40 +01:00
else
return false ;
2008-01-25 20:21:11 +01:00
$title_label = __ ( 'Title' );
$description_label = __ ( 'Description' );
$tags_label = __ ( 'Tags' );
2008-02-22 06:53:47 +01:00
$toggle_on = __ ( 'Show' );
$toggle_off = __ ( 'Hide' );
2008-01-25 20:21:11 +01:00
$post = get_post ( $attachment_id );
$filename = basename ( $post -> guid );
$title = attribute_escape ( $post -> post_title );
$description = attribute_escape ( $post -> post_content );
if ( $_tags = get_the_tags ( $attachment_id ) ) {
foreach ( $_tags as $tag )
$tags [] = $tag -> name ;
$tags = attribute_escape ( join ( ', ' , $tags ));
}
2008-02-28 22:29:51 +01:00
if ( isset ( $post_mime_types ) ) {
2008-03-01 21:41:18 +01:00
$keys = array_keys ( wp_match_mime_types ( array_keys ( $post_mime_types ), $post -> post_mime_type ));
$type = array_shift ( $keys );
2008-04-25 08:15:17 +02:00
$type = " <input type='hidden' id='type-of- $attachment_id ' value=' " . attribute_escape ( $type ) . " ' /> " ;
2008-02-28 22:29:51 +01:00
}
2008-02-16 22:54:47 +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 ) {
$class = empty ( $errors ) ? 'startclosed' : 'startopen' ;
$toggle_links = "
< a class = 'toggle describe-toggle-on' href = '#' > $toggle_on </ a >
< a class = 'toggle describe-toggle-off' href = '#' > $toggle_off </ a > " ;
} else {
$class = 'form-table' ;
$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
2008-07-10 05:49:52 +02:00
$display_title = wp_html_excerpt ( $display_title , 60 );
$gallery = ( ( isset ( $_REQUEST [ 'tab' ]) && 'gallery' == $_REQUEST [ 'tab' ]) || ( isset ( $redir_tab ) && 'gallery' == $redir_tab ) ) ? true : false ;
$order = '' ;
foreach ( $form_fields as $key => $val ) {
if ( 'menu_order' == $key ) {
if ( $gallery )
$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="' . $val [ 'value' ] . '" /></div>' ;
else
$order = '<input type="hidden" name="attachments[' . $attachment_id . '][menu_order]" value="' . $val [ 'value' ] . '" />' ;
unset ( $form_fields [ 'menu_order' ]);
break ;
}
}
2008-03-26 22:00:21 +01:00
2008-01-25 20:21:11 +01:00
$item = "
2008-02-28 22:29:51 +01:00
$type
2008-03-12 06:50:07 +01:00
$toggle_links
2008-07-10 05:49:52 +02:00
$order
2008-03-26 22:00:21 +01:00
< div class = 'filename new' > $display_title </ div >
2008-03-12 06:50:07 +01:00
< table class = 'slidetoggle describe $class' >
2008-04-14 18:33:37 +02:00
< thead class = 'media-item-info' >
2008-02-16 22:54:47 +01:00
< tr >
2008-03-12 06:50:07 +01:00
< td class = 'A1B1' rowspan = '4' >< img class = 'thumbnail' src = '$thumb_url' alt = '' /></ td >
2008-02-16 22:54:47 +01:00
< td > $filename </ td >
</ tr >
2008-04-14 18:33:37 +02:00
< tr >< td > $post -> post_mime_type </ td ></ tr >
2008-02-16 22:54:47 +01:00
< tr >< td > " . mysql2date( $post->post_date , get_option('time_format')) . " </ td ></ tr >
2008-04-14 18:33:37 +02:00
< tr >< td > " . apply_filters('media_meta', '', $post ) . " </ td ></ tr >
</ thead >
2008-03-12 06:50:07 +01:00
< tbody > \n " ;
2008-02-16 22:54:47 +01:00
$defaults = array (
'input' => 'text' ,
'required' => false ,
'value' => '' ,
'extra_rows' => array (),
);
$delete_href = wp_nonce_url ( " post.php?action=delete-post&post= $attachment_id " , 'delete-post_' . $attachment_id );
2008-02-28 22:29:51 +01:00
if ( $send )
2008-04-25 08:15:17 +02:00
$send = " <input type='submit' class='button' name='send[ $attachment_id ]' value=' " . attribute_escape ( __ ( 'Insert into Post' ) ) . " ' /> " ;
2008-02-28 22:29:51 +01:00
if ( $delete )
2008-05-24 19:03:51 +02:00
$delete = " <a href= \" # \" class= \" del-link \" onclick= \" document.getElementById('del_attachment_ $attachment_id ').style.display='block';return false; \" > " . __ ( 'Delete' ) . " </a> " ;
2008-02-28 22:29:51 +01:00
if ( ( $send || $delete ) && ! isset ( $form_fields [ 'buttons' ]) )
2008-05-24 19:03:51 +02:00
$form_fields [ 'buttons' ] = array ( 'tr' => " \t \t <tr class='submit'><td></td><td class='savesend'> $send $delete
< div id = \ " del_attachment_ $attachment_id\ " class = \ " del-attachment \" style= \" display:none; \" > " . sprintf ( __ ( " You are about to delete <strong>%s</strong>. " ), $filename ) . " <a href= \" $delete_href\ " id = \ " del[ $attachment_id ] \" class= \" delete \" > " . __ ( 'Continue' ) . " </a>
< a href = \ " # \" class= \" del-link \" onclick= \" this.parentNode.style.display='none';return false; \" > " . __ ( 'Cancel' ) . " </a></div></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 ) {
if ( $id { 0 } == '_' )
continue ;
if ( ! empty ( $field [ 'tr' ]) ) {
$item .= $field [ 'tr' ];
continue ;
}
$field = array_merge ( $defaults , $field );
$name = " attachments[ $attachment_id ][ $id ] " ;
if ( $field [ 'input' ] == 'hidden' ) {
$hidden_fields [ $name ] = $field [ 'value' ];
continue ;
}
2008-03-12 06:50:07 +01:00
$required = $field [ 'required' ] ? '<abbr title="required" class="required">*</abbr>' : '' ;
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' : '' ;
$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><span class='alignright'> $required </span><br class='clear' /></label></th> \n \t \t \t <td class='field'> " ;
2008-02-16 22:54:47 +01:00
if ( ! empty ( $field [ $field [ 'input' ]]) )
$item .= $field [ $field [ 'input' ]];
elseif ( $field [ 'input' ] == 'textarea' ) {
2008-09-09 21:08:22 +02:00
$item .= " <textarea type='text' id=' $name ' name=' $name ' " . $aria_required . " > " . htmlspecialchars ( $field [ 'value' ] ) . " </textarea> " ;
2008-02-16 22:54:47 +01:00
} else {
2008-05-04 23:28:12 +02:00
$item .= " <input type='text' id=' $name ' name=' $name ' value=' " . attribute_escape ( $field [ 'value' ] ) . " ' " . $aria_required . " /> " ;
2008-02-16 22:54:47 +01:00
}
2008-03-12 06:50:07 +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 ();
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 )
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
}
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 )
2008-04-25 08:15:17 +02:00
$item .= " \t <input type='hidden' name=' $name ' id=' $name ' value=' " . attribute_escape ( $value ) . " ' /> \n " ;
2008-01-25 20:21:11 +01:00
return $item ;
}
2008-03-05 07:46:42 +01:00
function media_upload_header () {
2008-02-26 20:30:10 +01:00
?>
2008-02-28 22:29:51 +01:00
< script type = " text/javascript " > post_id = < ? php echo intval ( $_REQUEST [ 'post_id' ]); ?> ;</script>
2008-02-26 20:30:10 +01:00
< div id = " media-upload-header " >
< ? php the_media_upload_tabs (); ?>
</ div >
< ? php
}
function media_upload_form ( $errors = null ) {
2008-02-28 22:29:51 +01:00
global $type , $tab ;
2008-05-27 19:46:01 +02:00
$flash_action_url = admin_url ( 'async-upload.php' );
2008-01-25 20:21:11 +01:00
2008-03-19 07:18:05 +01:00
// If Mac and mod_security, no Flash. :(
2008-03-26 22:26:28 +01:00
$flash = true ;
2008-03-21 05:10:01 +01:00
if ( false !== strpos ( strtolower ( $_SERVER [ 'HTTP_USER_AGENT' ]), 'mac' ) && apache_mod_loaded ( 'mod_security' ) )
2008-03-19 07:18:05 +01:00
$flash = false ;
2008-03-27 18:37:37 +01:00
$flash = apply_filters ( 'flash_uploader' , $flash );
2008-01-25 20:21:11 +01:00
$post_id = intval ( $_REQUEST [ 'post_id' ]);
?>
2008-03-26 22:22:19 +01:00
< div id = " media-upload-notice " >
< ? php if ( isset ( $errors [ 'upload_notice' ]) ) { ?>
< ? php echo $errors [ 'upload_notice' ]; ?>
< ? php } ?>
</ div >
2008-02-22 06:53:47 +01:00
< div id = " media-upload-error " >
2008-02-16 22:54:47 +01:00
< ? php if ( isset ( $errors [ 'upload_error' ]) && is_wp_error ( $errors [ 'upload_error' ])) { ?>
< ? php echo $errors [ 'upload_error' ] -> get_error_message (); ?>
2008-01-25 20:21:11 +01:00
< ? php } ?>
2008-02-22 06:53:47 +01:00
</ div >
2008-04-14 18:32:04 +02:00
< ? php do_action ( 'pre-upload-ui' ); ?>
2008-03-19 07:18:05 +01:00
< ? php if ( $flash ) : ?>
2008-01-25 20:21:11 +01:00
< script type = " text/javascript " >
<!--
jQuery ( function ( $ ){
swfu = new SWFUpload ({
upload_url : " <?php echo attribute_escape( $flash_action_url ); ?> " ,
2008-05-27 19:46:01 +02:00
flash_url : " <?php echo includes_url('js/swfupload/swfupload_f9.swf'); ?> " ,
2008-01-25 20:21:11 +01:00
file_post_name : " async-upload " ,
2008-04-07 19:10:00 +02:00
file_types : " <?php echo apply_filters('upload_file_glob', '*.*'); ?> " ,
2008-01-25 20:21:11 +01:00
post_params : {
" post_id " : " <?php echo $post_id ; ?> " ,
2008-06-25 00:19:27 +02:00
" auth_cookie " : " <?php if ( is_ssl() ) echo $_COOKIE[SECURE_AUTH_COOKIE] ; else echo $_COOKIE[AUTH_COOKIE] ; ?> " ,
2008-05-30 22:43:36 +02:00
" _wpnonce " : " <?php echo wp_create_nonce('media-form'); ?> " ,
2008-02-28 22:29:51 +01:00
" type " : " <?php echo $type ; ?> " ,
2008-04-15 01:09:14 +02:00
" tab " : " <?php echo $tab ; ?> " ,
" short " : " 1 "
2008-01-25 20:21:11 +01:00
},
2008-02-27 20:36:02 +01:00
file_size_limit : " <?php echo wp_max_upload_size(); ?>b " ,
2008-01-25 20:21:11 +01:00
swfupload_element_id : " flash-upload-ui " , // id of the element displayed when swfupload is available
degraded_element_id : " html-upload-ui " , // when swfupload is unavailable
file_dialog_start_handler : fileDialogStart ,
2008-02-22 06:53:47 +01:00
file_queued_handler : fileQueued ,
upload_start_handler : uploadStart ,
upload_progress_handler : uploadProgress ,
upload_error_handler : uploadError ,
upload_success_handler : uploadSuccess ,
upload_complete_handler : uploadComplete ,
2008-01-25 20:21:11 +01:00
file_queue_error_handler : fileQueueError ,
file_dialog_complete_handler : fileDialogComplete ,
2008-03-30 08:11:30 +02:00
debug : false
2008-01-25 20:21:11 +01:00
});
$ ( " #flash-browse-button " ) . bind ( " click " , function (){ swfu . selectFiles ();});
});
//-->
</ script >
2008-02-22 06:53:47 +01:00
< div id = " flash-upload-ui " >
2008-04-14 18:32:04 +02:00
< ? php do_action ( 'pre-flash-upload-ui' ); ?>
2008-04-25 08:15:17 +02:00
< p >< input id = " flash-browse-button " type = " button " value = " <?php echo attribute_escape( __( 'Choose files to upload' ) ); ?> " class = " button " /></ p >
2008-04-14 18:32:04 +02:00
< ? php do_action ( 'post-flash-upload-ui' ); ?>
< p class = " howto " >< ? php _e ( 'After a file has been uploaded, you can add titles and descriptions.' ); ?> </p>
2008-02-22 06:53:47 +01:00
</ div >
2008-03-19 07:18:05 +01:00
< ? php endif ; // $flash ?>
2008-01-25 20:21:11 +01:00
< div id = " html-upload-ui " >
2008-04-14 18:32:04 +02:00
< ? php do_action ( 'pre-html-upload-ui' ); ?>
2008-01-25 20:21:11 +01:00
< p >
2008-07-17 00:09:27 +02:00
< input type = " file " name = " async-upload " id = " async-upload " /> < input type = " submit " class = " button " name = " html-upload " value = " <?php echo attribute_escape(__('Upload')); ?> " /> < a href = " # " onclick = " return top.tb_remove(); " >< ? php _e ( 'Cancel' ); ?> </a>
2008-01-25 20:21:11 +01:00
</ p >
2008-07-17 00:09:27 +02:00
2008-03-15 00:58:31 +01:00
< br class = " clear " />
2008-03-20 01:33:59 +01:00
< ? php if ( is_lighttpd_before_150 () ) : ?>
2008-03-20 01:34:41 +01:00
< p >< ? php _e ( 'If you want to use all capabilities of the uploader, like uploading multiple files at once, please upgrade to lighttpd 1.5.' ); ?> </p>
2008-03-20 01:33:59 +01:00
< ? php endif ; ?>
2008-04-14 18:32:04 +02:00
< ? php do_action ( 'post-html-upload-ui' ); ?>
2008-01-25 20:21:11 +01:00
</ div >
2008-04-14 18:32:04 +02:00
< ? php do_action ( 'post-upload-ui' ); ?>
2008-02-26 20:30:10 +01:00
< ? php
}
2008-01-25 20:21:11 +01:00
2008-02-28 22:29:51 +01:00
function media_upload_type_form ( $type = 'file' , $errors = null , $id = null ) {
2008-02-26 20:30:10 +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' ]);
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 );
2008-02-26 20:30:10 +01:00
2008-02-28 22:29:51 +01:00
$callback = " type_form_ $type " ;
2008-02-26 20:30:10 +01:00
?>
2008-03-18 20:20:18 +01:00
< form enctype = " multipart/form-data " method = " post " action = " <?php echo attribute_escape( $form_action_url ); ?> " class = " media-upload-form type-form validate " id = " <?php echo $type ; ?>-form " >
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-02-28 22:29:51 +01:00
< h3 >< ? php _e ( 'From Computer' ); ?> </h3>
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 " >
<!--
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
});
-->
</ script >
2008-03-11 02:30:15 +01:00
< ? php if ( $id && ! is_wp_error ( $id ) ) : ?>
2008-02-28 22:29:51 +01:00
< div id = " media-items " >
< ? php echo get_media_items ( $id , $errors ); ?>
</ div >
2008-04-25 08:15:17 +02:00
< input type = " submit " class = " button savebutton " name = " save " value = " <?php echo attribute_escape( __( 'Save all changes' ) ); ?> " />
2008-01-25 20:21:11 +01:00
2008-02-28 22:29:51 +01:00
< ? php elseif ( is_callable ( $callback ) ) : ?>
< div class = " media-blank " >
< p style = " text-align:center " >< ? php _e ( '— OR —' ); ?> </p>
< h3 >< ? php _e ( 'From URL' ); ?> </h3>
</ div >
2008-07-10 05:49:52 +02:00
< script type = " text/javascript " >
//<![CDATA[
var addExtImage = {
width : '' ,
height : '' ,
align : 'alignnone' ,
insert : function () {
var t = this , html , f = document . forms [ 0 ], cls , title = '' , alt = '' , caption = null ;
if ( '' == f . src . value || '' == t . width ) return false ;
if ( f . title . value ) {
title = f . title . value . replace ( / [ '"<>]+/g, ' ' );
title = ' title="' + title + '"' ;
}
if ( f . alt . value ) {
alt = f . alt . value . replace ( / [ '"<>]+/g, ' ' );
2008-07-16 23:36:17 +02:00
< ? php if ( ! apply_filters ( 'disable_captions' , '' ) ) { ?>
2008-07-10 05:49:52 +02:00
caption = f . alt . value . replace ( / '/g, ' & #39;').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
2008-07-11 17:59:14 +02:00
< ? php } ?>
2008-07-10 05:49:52 +02:00
}
cls = caption ? '' : ' class="' + t . align + '"' ;
html = '<img alt="' + alt + '" src="' + f . src . value + '"' + title + cls + ' width="' + t . width + '" height="' + t . height + '" />' ;
if ( f . url . value )
html = '<a href="' + f . url . value + '">' + html + '</a>' ;
if ( caption )
2008-07-11 17:59:14 +02:00
html = '[caption id="" align="' + t . align + '" width="' + t . width + '" caption="' + caption + '"]' + html + '[/caption]' ;
2008-07-10 05:49:52 +02:00
var win = window . dialogArguments || opener || parent || top ;
win . send_to_editor ( html );
},
resetImageData : function () {
var t = addExtImage ;
t . width = t . height = '' ;
document . getElementById ( 'go_button' ) . style . color = '#bbb' ;
if ( ! document . forms [ 0 ] . src . value )
document . getElementById ( 'status_img' ) . src = 'images/required.gif' ;
else document . getElementById ( 'status_img' ) . src = 'images/no.png' ;
},
updateImageData : function () {
var t = addExtImage ;
t . width = t . preloadImg . width ;
t . height = t . preloadImg . height ;
document . getElementById ( 'go_button' ) . style . color = '#333' ;
document . getElementById ( 'status_img' ) . src = 'images/yes.png' ;
},
getImageData : function () {
var t = addExtImage , src = document . forms [ 0 ] . src . value ;
if ( ! src ) {
t . resetImageData ();
return false ;
}
document . getElementById ( 'status_img' ) . src = 'images/loading.gif' ;
t . preloadImg = new Image ();
t . preloadImg . onload = t . updateImageData ;
t . preloadImg . onerror = t . resetImageData ;
t . preloadImg . src = src ;
}
}
//]]>
</ script >
2008-02-28 22:29:51 +01:00
< div id = " media-items " >
< div class = " media-item media-blank " >
< ? php echo call_user_func ( $callback ); ?>
</ div >
</ div >
2008-04-25 08:15:17 +02:00
< input type = " submit " class = " button savebutton " name = " save " value = " <?php echo attribute_escape( __( 'Save all changes' ) ); ?> " />
2008-07-17 00:09:27 +02:00
</ form >
2008-02-26 20:30:10 +01:00
< ? php
2008-02-28 22:29:51 +01:00
endif ;
2008-02-26 20:30:10 +01:00
}
2008-01-25 20:21:11 +01:00
2008-02-28 22:29:51 +01:00
function media_upload_gallery_form ( $errors ) {
2008-07-10 05:49:52 +02:00
global $redir_tab ;
$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' ]);
2008-05-27 19:46:01 +02:00
$form_action_url = admin_url ( " media-upload.php?type= { $GLOBALS [ 'type' ] } &tab=gallery&post_id= $post_id " );
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 >
2008-03-18 20:20:18 +01:00
< form enctype = " multipart/form-data " method = " post " action = " <?php echo attribute_escape( $form_action_url ); ?> " class = " media-upload-form validate " id = " gallery-form " >
2008-02-26 20:30:10 +01:00
< ? php wp_nonce_field ( 'media-form' ); ?>
< ? php //media_upload_form( $errors ); ?>
2008-07-10 05:49:52 +02:00
< table class = " widefat " >
< thead >< tr >
< th >< ? php _e ( 'Media' ); ?> </th>
< th class = " order-head " >< ? php _e ( 'Order' ); ?> </th>
</ tr ></ thead >
</ table >
2008-02-26 20:30:10 +01:00
< div id = " media-items " >
< ? php echo get_media_items ( $post_id , $errors ); ?>
</ div >
2008-07-10 05:49:52 +02:00
< p class = " ml-submit " >
2008-04-25 08:15:17 +02:00
< input type = " submit " class = " button savebutton " name = " save " value = " <?php echo attribute_escape( __( 'Save all changes' ) ); ?> " />
< input type = " submit " class = " button insert-gallery " name = " insert-gallery " value = " <?php echo attribute_escape( __( 'Insert gallery into post' ) ); ?> " />
< input type = " hidden " name = " post_id " id = " post_id " value = " <?php echo (int) $post_id ; ?> " />
< input type = " hidden " name = " type " value = " <?php echo attribute_escape( $GLOBALS['type'] ); ?> " />
< input type = " hidden " name = " tab " value = " <?php echo attribute_escape( $GLOBALS['tab'] ); ?> " />
2008-07-10 05:49:52 +02:00
</ p >
2008-02-26 20:30:10 +01:00
</ form >
2008-01-25 20:21:11 +01:00
< ? php
}
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
$post_id = intval ( $_REQUEST [ 'post_id' ]);
2008-05-27 19:46:01 +02:00
$form_action_url = admin_url ( " media-upload.php?type= { $GLOBALS [ 'type' ] } &tab=library&post_id= $post_id " );
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 ;
add_filter ( 'post_limits' , $limit_filter = create_function ( '$a' , " return 'LIMIT $start , 10'; " ) );
list ( $post_mime_types , $avail_post_mime_types ) = wp_edit_attachments_query ();
?>
< form id = " filter " action = " " method = " get " >
2008-04-25 07:55:01 +02:00
< input type = " hidden " name = " type " value = " <?php echo attribute_escape( $type ); ?> " />
2008-04-25 08:15:17 +02:00
< input type = " hidden " name = " tab " value = " <?php echo attribute_escape( $tab ); ?> " />
< input type = " hidden " name = " post_id " value = " <?php echo (int) $post_id ; ?> " />
< input type = " hidden " name = " post_mime_type " value = " <?php echo attribute_escape( $_GET['post_mime_type'] ); ?> " />
2008-02-27 09:31:10 +01:00
2008-09-06 01:19:08 +02:00
< p id = " media-search " class = " search-box " >
< label class = " hidden " for = " media-search-input " >< ? php _e ( 'Search Media' ); ?> :</label>
< input type = " text " id = " media-search-input " class = " search-input " name = " s " value = " <?php the_search_query(); ?> " />
2008-04-25 08:15:17 +02:00
< input type = " submit " value = " <?php echo attribute_escape( __( 'Search Media' ) ); ?> " class = " button " />
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 )
2008-03-11 02:30:15 +01:00
$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"' ;
2008-05-20 20:01:43 +02:00
$type_links [] = " <li><a href=' " . clean_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 ;
if ( wp_match_mime_types ( $mime_type , $_GET [ 'post_mime_type' ]) )
$class = ' class="current"' ;
2008-05-20 20:01:43 +02:00
$type_links [] = " <li><a href=' " . clean_url ( add_query_arg ( array ( 'post_mime_type' => $mime_type , 'paged' => false ))) . " ' $class > " . sprintf ( __ngettext ( $label [ 2 ][ 0 ], $label [ 2 ][ 1 ], $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
}
echo implode ( ' | </li>' , $type_links ) . '</li>' ;
unset ( $type_links );
?>
</ ul >
< div class = " tablenav " >
< ? php
$page_links = paginate_links ( array (
'base' => add_query_arg ( 'paged' , '%#%' ),
'format' => '' ,
'total' => ceil ( $wp_query -> found_posts / 10 ),
'current' => $_GET [ 'paged' ]
));
if ( $page_links )
echo " <div class='tablenav-pages'> $page_links </div> " ;
?>
2008-03-15 00:58:31 +01:00
< div class = " alignleft " >
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
2008-02-27 09:31:10 +01:00
if ( $arc_row -> yyear . $arc_row -> mmonth == $_GET [ 'm' ] )
$default = ' selected="selected"' ;
else
$default = '' ;
2008-02-28 22:29:51 +01:00
2008-04-25 08:40:12 +02:00
echo " <option $default value=' " . attribute_escape ( $arc_row -> yyear . $arc_row -> mmonth ) . " '> " ;
2008-04-25 08:15:17 +02:00
echo wp_specialchars ( $wp_locale -> get_month ( $arc_row -> mmonth ) . " $arc_row->yyear " );
2008-02-27 09:31:10 +01:00
echo " </option> \n " ;
}
?>
</ select >
< ? php } ?>
2008-04-25 08:15:17 +02:00
< input type = " submit " id = " post-query-submit " value = " <?php echo attribute_escape( __( 'Filter »' ) ); ?> " class = " button-secondary " />
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 >
2008-03-18 20:20:18 +01:00
< form enctype = " multipart/form-data " method = " post " action = " <?php echo attribute_escape( $form_action_url ); ?> " class = " media-upload-form validate " 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 " >
< ? php echo get_media_items ( null , $errors ); ?>
</ div >
2008-04-30 22:21:09 +02:00
< p class = " ml-submit " >
2008-04-25 08:15:17 +02:00
< input type = " submit " class = " button savebutton " name = " save " value = " <?php echo attribute_escape( __( 'Save all changes' ) ); ?> " />
< 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-02-28 22:29:51 +01:00
function type_form_image () {
2008-07-16 23:36:17 +02:00
if ( apply_filters ( 'disable_captions' , '' ) ) {
$alt = __ ( 'Alternate Text' );
$alt_help = __ ( 'Alt text for the image, e.g. "The Mona Lisa"' );
} else {
$alt = __ ( 'Image Caption' );
$alt_help = __ ( 'Also used as alternate text for the image' );
}
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-07-16 23:36:17 +02:00
return '
2008-02-28 22:29:51 +01:00
< table class = " describe " >< tbody >
2008-07-10 05:49:52 +02:00
< tr >
< th valign = " top " scope = " row " class = " label " style = " width:120px; " >
< span class = " alignleft " >< label for = " src " > ' . __(' Source ') . ' </ label ></ span >
< span class = " alignright " >< img id = " status_img " src = " images/required.gif " title = " required " alt = " required " /></ span >
</ 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 " >
2008-07-10 05:49:52 +02:00
< span class = " alignleft " >< label for = " title " > ' . __(' Image Title ') . ' </ label ></ span >
2008-03-12 06:50:07 +01:00
< span class = " alignright " >< abbr title = " required " class = " required " >*</ abbr ></ span >
</ th >
2008-07-10 05:49:52 +02:00
< td class = " field " >< p >< input id = " title " name = " title " value = " " type = " text " aria - required = " true " /></ p ></ td >
2008-02-28 22:29:51 +01:00
</ tr >
2008-07-10 05:49:52 +02:00
2008-02-28 22:29:51 +01:00
< tr >
2008-03-12 06:50:07 +01:00
< th valign = " top " scope = " row " class = " label " >
2008-07-16 23:36:17 +02:00
< span class = " alignleft " >< label for = " alt " > ' . $alt . ' </ label ></ span >
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 " />
2008-07-16 23:36:17 +02:00
< p class = " help " > ' . $alt_help . ' </ p ></ td >
2008-02-28 22:29:51 +01:00
</ tr >
2008-07-16 23:36:17 +02:00
2008-02-28 22:29:51 +01:00
< tr class = " align " >
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-08-15 17:40:35 +02:00
< input name = " align " id = " align-none " value = " alignnone " onclick = " addExtImage.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 >
2008-08-15 17:40:35 +02:00
< input name = " align " id = " align-left " value = " alignleft " onclick = " addExtImage.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 >
2008-08-15 17:40:35 +02:00
< input name = " align " id = " align-center " value = " aligncenter " onclick = " addExtImage.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 >
2008-08-15 17:40:35 +02:00
< input name = " align " id = " align-right " value = " alignright " onclick = " addExtImage.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
< tr >
< th valign = " top " scope = " row " class = " label " >
< span class = " alignleft " >< label for = " url " > ' . __(' Link URL ') . ' </ label ></ span >
</ th >
< td class = " field " >< input id = " url " name = " url " value = " " type = " text " />< br />
< 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 >
< p class = " help " > ' . __(' Enter a link URL or click above for presets . ') . ' </ p ></ td >
</ tr >
2008-02-28 22:29:51 +01:00
< tr >
2008-03-12 06:50:07 +01:00
< td ></ td >
2008-02-28 22:29:51 +01:00
< td >
2008-07-10 05:49:52 +02:00
< input type = " button " class = " button " id = " go_button " style = " color:#bbb; " onclick = " addExtImage.insert() " value = " ' . attribute_escape(__('Insert into Post')) . ' " />
2008-02-28 22:29:51 +01:00
</ td >
</ tr >
</ tbody ></ table >
' ;
2008-07-11 17:59:14 +02:00
2008-02-28 22:29:51 +01:00
}
function type_form_audio () {
return '
< table class = " describe " >< tbody >
< tr >
2008-03-12 06:50:07 +01:00
< th valign = " top " scope = " row " class = " label " >
< span class = " alignleft " >< label for = " insertonly[href] " > ' . __(' Audio File URL ') . ' </ label ></ span >
< span class = " alignright " >< abbr title = " required " class = " required " >*</ abbr ></ span >
</ th >
2008-05-04 23:28:12 +02:00
< td class = " field " >< input id = " insertonly[href] " name = " insertonly[href] " value = " " type = " text " aria - required = " true " ></ td >
2008-02-28 22:29:51 +01:00
</ tr >
< tr >
2008-03-12 06:50:07 +01:00
< th valign = " top " scope = " row " class = " label " >
< span class = " alignleft " >< label for = " insertonly[title] " > ' . __(' Title ') . ' </ label ></ span >
< span class = " alignright " >< abbr title = " required " class = " required " >*</ abbr ></ span >
</ th >
2008-05-04 23:28:12 +02:00
< td class = " field " >< input id = " insertonly[title] " name = " insertonly[title] " value = " " type = " text " aria - required = " true " ></ td >
2008-02-28 22:29:51 +01:00
</ tr >
2008-03-12 06:50:07 +01:00
< tr >< td ></ td >< td class = " help " > ' . __(' Link text , e . g . " Still Alive by Jonathan Coulton " ') . ' </ td ></ tr >
2008-02-28 22:29:51 +01:00
< tr >
2008-03-12 06:50:07 +01:00
< td ></ td >
2008-02-28 22:29:51 +01:00
< td >
< input type = " submit " class = " button " name = " insertonlybutton " value = " ' . attribute_escape(__('Insert into Post')) . ' " />
</ td >
</ tr >
</ tbody ></ table >
' ;
}
function type_form_video () {
return '
< table class = " describe " >< tbody >
< tr >
2008-03-12 06:50:07 +01:00
< th valign = " top " scope = " row " class = " label " >
< span class = " alignleft " >< label for = " insertonly[href] " > ' . __(' Video URL ') . ' </ label ></ span >
< span class = " alignright " >< abbr title = " required " class = " required " >*</ abbr ></ span >
</ th >
2008-05-04 23:28:12 +02:00
< td class = " field " >< input id = " insertonly[href] " name = " insertonly[href] " value = " " type = " text " aria - required = " true " ></ td >
2008-02-28 22:29:51 +01:00
</ tr >
< tr >
2008-03-12 06:50:07 +01:00
< th valign = " top " scope = " row " class = " label " >
< span class = " alignleft " >< label for = " insertonly[title] " > ' . __(' Title ') . ' </ label ></ span >
< span class = " alignright " >< abbr title = " required " class = " required " >*</ abbr ></ span >
</ th >
2008-05-04 23:28:12 +02:00
< td class = " field " >< input id = " insertonly[title] " name = " insertonly[title] " value = " " type = " text " aria - required = " true " ></ td >
2008-02-28 22:29:51 +01:00
</ tr >
2008-03-12 06:50:07 +01:00
< tr >< td ></ td >< td class = " help " > ' . __(' Link text , e . g . " Lucy on YouTube " ') . ' </ td ></ tr >
2008-02-28 22:29:51 +01:00
< tr >
2008-03-12 06:50:07 +01:00
< td ></ td >
2008-02-28 22:29:51 +01:00
< td >
< input type = " submit " class = " button " name = " insertonlybutton " value = " ' . attribute_escape(__('Insert into Post')) . ' " />
</ td >
</ tr >
</ tbody ></ table >
' ;
}
function type_form_file () {
return '
< table class = " describe " >< tbody >
< tr >
2008-03-12 06:50:07 +01:00
< th valign = " top " scope = " row " class = " label " >
< span class = " alignleft " >< label for = " insertonly[href] " > ' . __(' URL ') . ' </ label ></ span >
< span class = " alignright " >< abbr title = " required " class = " required " >*</ abbr ></ span >
</ th >
2008-05-04 23:28:12 +02:00
< td class = " field " >< input id = " insertonly[href] " name = " insertonly[href] " value = " " type = " text " aria - required = " true " ></ td >
2008-02-28 22:29:51 +01:00
</ tr >
< tr >
2008-03-12 06:50:07 +01:00
< th valign = " top " scope = " row " class = " label " >
< span class = " alignleft " >< label for = " insertonly[title] " > ' . __(' Title ') . ' </ label ></ span >
< span class = " alignright " >< abbr title = " required " class = " required " >*</ abbr ></ span >
</ th >
2008-05-04 23:28:12 +02:00
< td class = " field " >< input id = " insertonly[title] " name = " insertonly[title] " value = " " type = " text " aria - required = " true " ></ td >
2008-02-28 22:29:51 +01:00
</ tr >
2008-03-12 06:50:07 +01:00
< tr >< td ></ td >< td class = " help " > ' . __(' Link text , e . g . " Ransom Demands (PDF) " ') . ' </ td ></ tr >
2008-02-28 22:29:51 +01:00
< tr >
2008-03-12 06:50:07 +01:00
< td ></ td >
2008-02-28 22:29:51 +01:00
< td >
< input type = " submit " class = " button " name = " insertonlybutton " value = " ' . attribute_escape(__('Insert into Post')) . ' " />
</ td >
</ tr >
</ tbody ></ table >
' ;
}
2008-07-11 03:45:41 +02:00
// support a GET parameter for disabling the flash uploader
function media_upload_use_flash ( $flash ) {
if ( array_key_exists ( 'flash' , $_REQUEST ) )
$flash = ! empty ( $_REQUEST [ 'flash' ]);
return $flash ;
}
add_filter ( 'flash_uploader' , 'media_upload_use_flash' );
function media_upload_flash_bypass () {
echo '<p class="upload-flash-bypass">' ;
2008-07-11 17:11:12 +02:00
printf ( __ ( 'You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.' ), clean_url ( add_query_arg ( 'flash' , 0 )) );
2008-07-11 03:45:41 +02:00
echo '</p>' ;
}
add_action ( 'post-flash-upload-ui' , 'media_upload_flash_bypass' );
function media_upload_html_bypass () {
echo '<p class="upload-html-bypass">' ;
if ( array_key_exists ( 'flash' , $_REQUEST ) )
// the user manually selected the browser uploader, so let them switch back to Flash
2008-07-11 17:11:12 +02:00
printf ( __ ( 'You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.' ), clean_url ( add_query_arg ( 'flash' , 1 )) );
2008-07-11 03:45:41 +02:00
else
// the user probably doesn't have Flash
printf ( __ ( 'You are using the Browser uploader.' ) );
echo '</p>' ;
}
add_action ( 'post-flash-upload-ui' , 'media_upload_flash_bypass' );
add_action ( 'post-html-upload-ui' , 'media_upload_html_bypass' );
// make sure the GET parameter sticks when we submit a form
function media_upload_bypass_url ( $url ) {
if ( array_key_exists ( 'flash' , $_REQUEST ) )
$url = add_query_arg ( 'flash' , intval ( $_REQUEST [ 'flash' ]));
return $url ;
}
add_filter ( 'media_upload_form_url' , 'media_upload_bypass_url' );
2008-02-28 22:29:51 +01: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
2008-02-28 22:29:51 +01:00
add_action ( 'media_upload_image' , 'media_upload_image' );
add_action ( 'media_upload_audio' , 'media_upload_audio' );
add_action ( 'media_upload_video' , 'media_upload_video' );
add_action ( 'media_upload_file' , 'media_upload_file' );
2008-02-26 20:30:10 +01:00
2008-02-28 22:29:51 +01:00
add_filter ( 'media_upload_gallery' , 'media_upload_gallery' );
2008-02-26 20:30:10 +01:00
add_filter ( 'media_upload_library' , 'media_upload_library' );
2008-01-25 20:21:11 +01:00
?>