Attachment fixes from mdawaffe. fixes #3411
git-svn-id: http://svn.automattic.com/wordpress/trunk@4670 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
504cf9100c
commit
cd99ca7b90
|
@ -1935,12 +1935,12 @@ function the_attachment_links( $id = false ) {
|
|||
<col class="widefat" />
|
||||
<tr>
|
||||
<th scope="row"><?php _e( 'URL' ) ?></th>
|
||||
<td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><?php echo $post->guid ?></textarea></td>
|
||||
<td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><?php echo wp_get_attachment_url(); ?></textarea></td>
|
||||
</tr>
|
||||
<?php if ( $icon ) : ?>
|
||||
<tr>
|
||||
<th scope="row"><?php $thumb ? _e( 'Thumbnail linked to file' ) : _e( 'Image linked to file' ); ?></th>
|
||||
<td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo $post->guid; ?>"><?php echo $icon ?></a></textarea></td>
|
||||
<td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo wp_get_attachment_url(); ?>"><?php echo $icon ?></a></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><?php $thumb ? _e( 'Thumbnail linked to page' ) : _e( 'Image linked to page' ); ?></th>
|
||||
|
@ -1949,7 +1949,7 @@ function the_attachment_links( $id = false ) {
|
|||
<?php else : ?>
|
||||
<tr>
|
||||
<th scope="row"><?php _e( 'Link to file' ) ?></th>
|
||||
<td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo $post->guid ?>" class="attachmentlink"><?php echo basename( $post->guid ); ?></a></textarea></td>
|
||||
<td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo wp_get_attachment_url(); ?>" class="attachmentlink"><?php echo basename( wp_get_attachment_url() ); ?></a></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><?php _e( 'Link to page' ) ?></th>
|
||||
|
|
|
@ -13,16 +13,13 @@ function wp_upload_display( $dims = false, $href = '' ) {
|
|||
|
||||
$class = 'text';
|
||||
$innerHTML = get_attachment_innerHTML( $id, false, $dims );
|
||||
if ( $image_src = strstr($innerHTML, 'src=') ) {
|
||||
preg_match("/src=(\"|')(.+?)\\1/", $image_src, $matches);
|
||||
$image_src = $matches[2];
|
||||
if ( $image_src = get_attachment_icon_src() ) {
|
||||
$image_rel = wp_make_link_relative($image_src);
|
||||
$class = 'image';
|
||||
$innerHTML = ' ' . str_replace($image_src, $image_rel, $innerHTML);
|
||||
$image_base = str_replace($image_rel, '', $image_src);
|
||||
$class = 'image';
|
||||
}
|
||||
|
||||
$src_base = get_the_guid();
|
||||
$src_base = wp_get_attachment_url();
|
||||
$src = wp_make_link_relative( $src_base );
|
||||
$src_base = str_replace($src, '', $src_base);
|
||||
|
||||
|
@ -38,11 +35,16 @@ function wp_upload_display( $dims = false, $href = '' ) {
|
|||
$r .= "\t\t\t\t<input type='hidden' name='attachment-url-$id' id='attachment-url-$id' value='$src' />\n";
|
||||
$r .= "\t\t\t\t<input type='hidden' name='attachment-url-base-$id' id='attachment-url-base-$id' value='$src_base' />\n";
|
||||
|
||||
if ( isset($attachment_data['thumb']) ) {
|
||||
$r .= "\t\t\t\t<input type='hidden' name='attachment-thumb-url-$id' id='attachment-thumb-url-$id' value='$image_rel' />\n";
|
||||
$r .= "\t\t\t\t<input type='hidden' name='attachment-thumb-url-base-$id' id='attachment-thumb-url-base-$id' value='$image_base' />\n";
|
||||
} elseif ( $image_rel )
|
||||
$r .= "\t\t\t\t<input type='hidden' name='attachment-is-image-$id' id='attachment-is-image-$id' value='1' />\n";
|
||||
if ( !$thumb_base = wp_get_attachment_thumb_url() )
|
||||
$thumb_base = wp_mime_type_icon();
|
||||
if ( $thumb_base ) {
|
||||
$thumb_rel = wp_make_link_relative( $thumb_base );
|
||||
$thumb_base = str_replace( $thumb_rel, '', $thumb_base );
|
||||
$r .= "\t\t\t\t<input type='hidden' name='attachment-thumb-url-$id' id='attachment-thumb-url-$id' value='$thumb_rel' />\n";
|
||||
$r .= "\t\t\t\t<input type='hidden' name='attachment-thumb-url-base-$id' id='attachment-thumb-url-base-$id' value='$thumb_base' />\n";
|
||||
}
|
||||
$is_image = (int) wp_attachment_is_image();
|
||||
$r .= "\t\t\t\t<input type='hidden' name='attachment-is-image-$id' id='attachment-is-image-$id' value='$is_image' />\n";
|
||||
if ( isset($width) ) {
|
||||
$r .= "\t\t\t\t<input type='hidden' name='attachment-width-$id' id='attachment-width-$id' value='$width' />\n";
|
||||
$r .= "\t\t\t\t<input type='hidden' name='attachment-height-$id' id='attachment-height-$id' value='$height' />\n";
|
||||
|
@ -62,7 +64,7 @@ function wp_upload_view() {
|
|||
<div id="upload-file">
|
||||
<div id="file-title">
|
||||
<h2><?php if ( !isset($attachment_data['width']) && 'inline' != $style )
|
||||
echo "<a href='" . get_the_guid() . "' title='" . __('Direct link to file') . "'>";
|
||||
echo "<a href='" . wp_get_attachment_url() . "' title='" . __('Direct link to file') . "'>";
|
||||
the_title();
|
||||
if ( !isset($attachment_data['width']) && 'inline' != $style )
|
||||
echo '</a>';
|
||||
|
@ -79,7 +81,7 @@ function wp_upload_view() {
|
|||
|
||||
<div id="upload-file-view" class="alignleft">
|
||||
<?php if ( isset($attachment_data['width']) && 'inline' != $style )
|
||||
echo "<a href='" . get_the_guid() . "' title='" . __('Direct link to file') . "'>";
|
||||
echo "<a href='" . wp_get_attachment_url() . "' title='" . __('Direct link to file') . "'>";
|
||||
echo wp_upload_display( array(171, 128) );
|
||||
if ( isset($attachment_data['width']) && 'inline' != $style )
|
||||
echo '</a>'; ?>
|
||||
|
@ -102,7 +104,7 @@ function wp_upload_form() {
|
|||
?>
|
||||
<div id="file-title">
|
||||
<h2><?php if ( !isset($attachment_data['width']) && 'inline' != $style )
|
||||
echo "<a href='" . get_the_guid() . "' title='" . __('Direct link to file') . "'>";
|
||||
echo "<a href='" . wp_get_attachment_url() . "' title='" . __('Direct link to file') . "'>";
|
||||
the_title();
|
||||
if ( !isset($attachment_data['width']) && 'inline' != $style )
|
||||
echo '</a>';
|
||||
|
@ -119,7 +121,7 @@ function wp_upload_form() {
|
|||
|
||||
<div id="upload-file-view" class="alignleft">
|
||||
<?php if ( isset($attachment_data['width']) && 'inline' != $style )
|
||||
echo "<a href='" . get_the_guid() . "' title='" . __('Direct link to file') . "'>";
|
||||
echo "<a href='" . wp_get_attachment_url() . "' title='" . __('Direct link to file') . "'>";
|
||||
echo wp_upload_display( array(171, 128) );
|
||||
if ( isset($attachment_data['width']) && 'inline' != $style )
|
||||
echo '</a>'; ?>
|
||||
|
@ -129,7 +131,7 @@ function wp_upload_form() {
|
|||
<?php if ( $id ): ?>
|
||||
<tr>
|
||||
<th scope="row"><label for="url"><?php _e('URL'); ?></label></th>
|
||||
<td><input type="text" id="url" class="readonly" value="<?php the_guid(); ?>" readonly="readonly" /></td>
|
||||
<td><input type="text" id="url" class="readonly" value="<?php echo wp_get_attachment_url(); ?>" readonly="readonly" /></td>
|
||||
</tr>
|
||||
<?php else : ?>
|
||||
<tr>
|
||||
|
@ -343,4 +345,3 @@ function wp_upload_admin_head() {
|
|||
echo "</style>";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -37,15 +37,11 @@ addLoadEvent( function() {
|
|||
if ( id == this.currentImage.ID )
|
||||
return;
|
||||
var thumbEl = $('attachment-thumb-url-' + id);
|
||||
this.currentImage.isImage = true;
|
||||
if ( thumbEl ) {
|
||||
this.currentImage.thumb = ( 0 == id ? '' : thumbEl.value );
|
||||
this.currentImage.thumbBase = ( 0 == id ? '' : $('attachment-thumb-url-base-' + id).value );
|
||||
} else {
|
||||
this.currentImage.thumb = false;
|
||||
var isImageEl = $('attachment-is-image-' + id);
|
||||
if ( !isImageEl )
|
||||
this.currentImage.isImage = false;
|
||||
}
|
||||
this.currentImage.src = ( 0 == id ? '' : $('attachment-url-' + id).value );
|
||||
this.currentImage.srcBase = ( 0 == id ? '' : $('attachment-url-base-' + id).value );
|
||||
|
@ -60,6 +56,7 @@ addLoadEvent( function() {
|
|||
this.currentImage.width = false;
|
||||
this.currentImage.height = false;
|
||||
}
|
||||
this.currentImage.isImage = ( 0 == id ? '' : $('attachment-is-image-' + id).value );
|
||||
this.currentImage.ID = id;
|
||||
},
|
||||
|
||||
|
@ -96,10 +93,22 @@ addLoadEvent( function() {
|
|||
|
||||
h += "<form name='uploadoptions' id='uploadoptions' class='alignleft'>";
|
||||
h += "<table>";
|
||||
var display = [];
|
||||
var checked = 'display-title';
|
||||
if ( 1 == this.currentImage.isImage ) {
|
||||
checked = 'display-full';
|
||||
if ( this.currentImage.thumb ) {
|
||||
display.push("<label for='display-thumb'><input type='radio' name='display' id='display-thumb' value='thumb' /> <?php echo attribute_escape(__('Thumbnail')); ?></label><br />");
|
||||
checked = 'display-thumb';
|
||||
}
|
||||
display.push("<label for='display-full'><input type='radio' name='display' id='display-full' value='full' /> <?php echo attribute_escape(__('Full size')); ?></label>");
|
||||
} else if ( this.currentImage.thumb ) {
|
||||
display.push("<label for='display-thumb'><input type='radio' name='display' id='display-thumb' value='thumb' /> <?php echo attribute_escape(__('Icon')); ?></label>");
|
||||
}
|
||||
if ( display.length ) {
|
||||
display.push("<br /><label for='display-title'><input type='radio' name='display' id='display-title' value='title' /> <?php echo attribute_escape(__('Title')); ?></label>");
|
||||
h += "<tr><th style='padding-bottom:.5em'><?php echo attribute_escape(__('Show:')); ?></th><td style='padding-bottom:.5em'>";
|
||||
h += "<label for='display-thumb'><input type='radio' name='display' id='display-thumb' value='thumb' checked='checked' /> <?php echo attribute_escape(__('Thumbnail')); ?></label><br />";
|
||||
h += "<label for='display-full'><input type='radio' name='display' id='display-full' value='full' /> <?php echo attribute_escape(__('Full size')); ?></label>";
|
||||
$A(display).each( function(i) { h += i; } );
|
||||
h += "</td></tr>";
|
||||
}
|
||||
|
||||
|
@ -117,6 +126,10 @@ addLoadEvent( function() {
|
|||
h += "</div>";
|
||||
|
||||
new Insertion.Top('upload-content', h);
|
||||
var displayEl = $(checked);
|
||||
if ( displayEl )
|
||||
displayEl.checked = true;
|
||||
|
||||
if (e) Event.stop(e);
|
||||
return false;
|
||||
},
|
||||
|
@ -144,7 +157,7 @@ addLoadEvent( function() {
|
|||
else
|
||||
h += "<h2>" + this.currentImage.title + "</h2>";
|
||||
h += " — <span>";
|
||||
h += "<a href='#' onclick='return theFileList.imageView(" + id + ");'><?php attribute_escape(__('Insert')); ?></a>"
|
||||
h += "<a href='#' onclick='return theFileList.imageView(" + id + ");'><?php echo attribute_escape(__('Insert')); ?></a>"
|
||||
h += "</span>";
|
||||
h += '</div>'
|
||||
h += "<div id='upload-file-view' class='alignleft'>";
|
||||
|
@ -222,7 +235,7 @@ addLoadEvent( function() {
|
|||
|
||||
if ( 'none' != link )
|
||||
h += "<a href='" + ( 'file' == link ? ( this.currentImage.srcBase + this.currentImage.src ) : ( this.currentImage.page + "' rel='attachment wp-att-" + this.currentImage.ID ) ) + "' title='" + this.currentImage.title + "'>";
|
||||
if ( display )
|
||||
if ( display && 'title' != display )
|
||||
h += "<img src='" + ( 'thumb' == display ? ( this.currentImage.thumbBase + this.currentImage.thumb ) : ( this.currentImage.srcBase + this.currentImage.src ) ) + "' alt='" + this.currentImage.title + "' />";
|
||||
else
|
||||
h += this.currentImage.title;
|
||||
|
|
|
@ -331,71 +331,59 @@ function get_the_attachment_link($id = 0, $fullsize = false, $max_dims = false)
|
|||
$id = (int) $id;
|
||||
$_post = & get_post($id);
|
||||
|
||||
if ( ('attachment' != $_post->post_type) || ('' == $_post->guid) )
|
||||
if ( ('attachment' != $_post->post_type) || !$url = wp_get_attachment_url() )
|
||||
return __('Missing Attachment');
|
||||
|
||||
$post_title = attribute_escape($_post->post_title);
|
||||
|
||||
if (! empty($_post->guid) ) {
|
||||
$innerHTML = get_attachment_innerHTML($_post->ID, $fullsize, $max_dims);
|
||||
|
||||
return "<a href='$_post->guid' title='$post_title'>$innerHTML</a>";
|
||||
|
||||
} else {
|
||||
$p .= __('Missing Attachment');
|
||||
}
|
||||
return $p;
|
||||
return "<a href='$url' title='$post_title'>$innerHTML</a>";
|
||||
}
|
||||
|
||||
function get_attachment_icon($id = 0, $fullsize = false, $max_dims = false) {
|
||||
function get_attachment_icon_src( $id = 0, $fullsize = false ) {
|
||||
$id = (int) $id;
|
||||
$post = & get_post($id);
|
||||
|
||||
$mime = $post->post_mime_type;
|
||||
if ( !$post = & get_post($id) )
|
||||
return false;
|
||||
|
||||
$imagedata = wp_get_attachment_metadata( $post->ID );
|
||||
|
||||
$file = get_attached_file( $post->ID );
|
||||
|
||||
$exts = array('jpg', 'gif', 'png');
|
||||
if ( !$fullsize && !empty($imagedata['thumb'])
|
||||
&& ($thumbfile = str_replace(basename($file), $imagedata['thumb'], $file))
|
||||
&& file_exists($thumbfile) ) {
|
||||
|
||||
if ( !$fullsize && $thumbfile = wp_get_attachment_thumb_file( $post->ID ) ) {
|
||||
// We have a thumbnail desired, specified and existing
|
||||
|
||||
$src = str_replace(basename($post->guid), $imagedata['thumb'], $post->guid);
|
||||
$src = wp_get_attachment_thumb_url( $post->ID );
|
||||
$src_file = $thumbfile;
|
||||
$class = 'attachmentthumb';
|
||||
|
||||
} elseif ( ( substr($mime, 0, 6) == 'image/' || 'import' == $mime && in_array(substr($file, -3), $exts) )
|
||||
&& file_exists($file) ) {
|
||||
|
||||
} elseif ( wp_attachment_is_image( $post->ID ) ) {
|
||||
// We have an image without a thumbnail
|
||||
|
||||
$src = $post->guid;
|
||||
$src = wp_get_attachment_url( $post->ID );
|
||||
$src_file = & $file;
|
||||
$class = 'attachmentimage';
|
||||
} elseif (! empty($mime) ) {
|
||||
|
||||
} elseif ( $src = wp_mime_type_icon( $post->ID ) ) {
|
||||
// No thumb, no image. We'll look for a mime-related icon instead.
|
||||
$icon_dir = apply_filters('icon_dir', get_template_directory().'/images');
|
||||
$icon_dir_uri = apply_filters('icon_dir_uri', get_template_directory_uri().'/images');
|
||||
|
||||
$types = array(substr($mime, 0, strpos($mime, '/')), substr($mime, strpos($mime, '/') + 1), str_replace('/', '_', $mime));
|
||||
foreach ($types as $type) {
|
||||
foreach ($exts as $ext) {
|
||||
$src_file = "$icon_dir/$type.$ext";
|
||||
if ( file_exists($src_file) ) {
|
||||
$src = "$icon_dir_uri/$type.$ext";
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
$icon_dir = apply_filters( 'icon_dir', get_template_directory() . '/images' );
|
||||
$src_file = $icon_dir . '/' . basename($src);
|
||||
}
|
||||
|
||||
if ( !isset($src) )
|
||||
return false;
|
||||
return array($src, $src_file);
|
||||
}
|
||||
|
||||
function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) {
|
||||
$id = (int) $id;
|
||||
if ( !$post = & get_post($id) )
|
||||
return false;
|
||||
|
||||
if ( !$src = get_attachment_icon_src( $id, $fullsize ) )
|
||||
return false;
|
||||
|
||||
list($src, $src_file) = $src;
|
||||
|
||||
// Do we need to constrain the image?
|
||||
if ( ($max_dims = apply_filters('attachment_max_dims', $max_dims)) && file_exists($src_file) ) {
|
||||
|
|
|
@ -1410,6 +1410,7 @@ function wp_get_attachment_metadata( $post_id, $unfiltered = false ) {
|
|||
}
|
||||
|
||||
function wp_update_attachment_metadata( $post_id, $data ) {
|
||||
$post_id = (int) $post_id;
|
||||
if ( !get_post( $post_id ) )
|
||||
return false;
|
||||
|
||||
|
@ -1423,6 +1424,99 @@ function wp_update_attachment_metadata( $post_id, $data ) {
|
|||
return add_post_meta( $post_id, '_wp_attachment_metadata', $data );
|
||||
}
|
||||
|
||||
function wp_get_attachment_url( $post_id = 0 ) {
|
||||
$post_id = (int) $post_id;
|
||||
if ( !$post =& get_post( $post_id ) )
|
||||
return false;
|
||||
|
||||
$url = get_the_guid( $post_id );
|
||||
|
||||
if ( 'attachment' != $post->post_type || !$url )
|
||||
return false;
|
||||
|
||||
return apply_filters( 'wp_get_attachment_url', $url, $post_id );
|
||||
}
|
||||
|
||||
function wp_get_attachment_thumb_file( $post_id ) {
|
||||
$post_id = (int) $post_id;
|
||||
if ( !$imagedata = wp_get_attachment_metadata( $post_id ) )
|
||||
return false;
|
||||
|
||||
$file = get_attached_file( $post_id );
|
||||
|
||||
if ( !empty($imagedata['thumb']) && ($thumbfile = str_replace(basename($file), $imagedata['thumb'], $file)) && file_exists($thumbfile) )
|
||||
return apply_filters( 'wp_get_attachment_thumb_file', $thumbfile, $post_id );
|
||||
return false;
|
||||
}
|
||||
|
||||
function wp_get_attachment_thumb_url( $post_id = 0 ) {
|
||||
$post_id = (int) $post_id;
|
||||
if ( !$url = wp_get_attachment_url( $post_id ) )
|
||||
return false;
|
||||
|
||||
if ( !$thumb = wp_get_attachment_thumb_file( $post_id ) )
|
||||
return false;
|
||||
return false;
|
||||
|
||||
$url = str_replace(basename($url), basename($thumb), $url);
|
||||
|
||||
return apply_filters( 'wp_get_attachment_thumb_url', $url, $post_id );
|
||||
}
|
||||
|
||||
function wp_attachment_is_image( $post_id = 0 ) {
|
||||
$post_id = (int) $post_id;
|
||||
if ( !$post =& get_post( $post_id ) )
|
||||
return false;
|
||||
|
||||
if ( !$file = get_attached_file( $post->ID ) )
|
||||
return false;
|
||||
|
||||
$image_exts = array('/jpg', 'jpeg', '/gif', '/png');
|
||||
|
||||
if ( 'image/' == substr($post->post_mime_type, 0, 6) || 'import' == $post->post_mime_type && in_array(substr($file, -4), $exts) )
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function wp_mime_type_icon( $mime = 0 ) {
|
||||
$post_id = 0;
|
||||
if ( is_numeric($mime) ) {
|
||||
$mime = (int) $mime;
|
||||
if ( !$post =& get_post( $mime ) )
|
||||
return false;
|
||||
$post_id = $post->ID;
|
||||
$mime = $post->post_mime_type;
|
||||
}
|
||||
|
||||
if ( empty($mime) )
|
||||
return false;
|
||||
|
||||
$icon_dir = apply_filters( 'icon_dir', get_template_directory() . '/images' );
|
||||
$icon_dir_uri = apply_filters( 'icon_dir_uri', get_template_directory_uri() . '/images' );
|
||||
|
||||
$types = array(
|
||||
substr($mime, 0, strpos($mime, '/')),
|
||||
substr($mime, strpos($mime, '/') + 1),
|
||||
str_replace('/', '_', $mime)
|
||||
);
|
||||
|
||||
$exts = array('jpg', 'gif', 'png');
|
||||
|
||||
$src = false;
|
||||
|
||||
foreach ( $types as $type ) {
|
||||
foreach ( $exts as $ext ) {
|
||||
$src_file = "$icon_dir/$type.$ext";
|
||||
if ( file_exists($src_file) ) {
|
||||
$src = "$icon_dir_uri/$type.$ext";
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return apply_filters( 'wp_mime_type_icon', $src, $mime, $post_id ); // Last arg is 0 if function pass mime type.
|
||||
}
|
||||
|
||||
function wp_check_for_changed_slugs($post_id) {
|
||||
if ( !strlen($_POST['wp-old-slug']) )
|
||||
return $post_id;
|
||||
|
|
|
@ -35,7 +35,7 @@ class WP_Scripts {
|
|||
$this->add( 'admin-comments', '/wp-admin/edit-comments.js', array('listman'), '3847' );
|
||||
$this->add( 'admin-users', '/wp-admin/users.js', array('listman'), '4583' );
|
||||
$this->add( 'xfn', '/wp-admin/xfn.js', false, '3517' );
|
||||
$this->add( 'upload', '/wp-admin/upload-js.php', array('prototype'), '4535' );
|
||||
$this->add( 'upload', '/wp-admin/upload-js.php', array('prototype'), '20061223' );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue