Add a delete link to the media modal.
Props merty, nacin, koopersmith fixes #22524 git-svn-id: http://core.svn.wordpress.org/trunk@22869 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
2c1d52526a
commit
939a47ba48
|
@ -1843,7 +1843,7 @@ function wp_ajax_save_attachment() {
|
||||||
if ( ! $id = absint( $_REQUEST['id'] ) )
|
if ( ! $id = absint( $_REQUEST['id'] ) )
|
||||||
wp_send_json_error();
|
wp_send_json_error();
|
||||||
|
|
||||||
check_ajax_referer( 'save-attachment', 'nonce' );
|
check_ajax_referer( 'update-post_' . $id, 'nonce' );
|
||||||
|
|
||||||
if ( ! current_user_can( 'edit_post', $id ) )
|
if ( ! current_user_can( 'edit_post', $id ) )
|
||||||
wp_send_json_error();
|
wp_send_json_error();
|
||||||
|
@ -1889,7 +1889,7 @@ function wp_ajax_save_attachment_compat() {
|
||||||
wp_send_json_error();
|
wp_send_json_error();
|
||||||
$attachment_data = $_REQUEST['attachments'][ $id ];
|
$attachment_data = $_REQUEST['attachments'][ $id ];
|
||||||
|
|
||||||
check_ajax_referer( 'save-attachment', 'nonce' );
|
check_ajax_referer( 'update-post_' . $id, 'nonce' );
|
||||||
|
|
||||||
if ( ! current_user_can( 'edit_post', $id ) )
|
if ( ! current_user_can( 'edit_post', $id ) )
|
||||||
wp_send_json_error();
|
wp_send_json_error();
|
||||||
|
|
|
@ -1191,6 +1191,18 @@ a.media-modal-close {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.attachment-info .delete-attachment a {
|
||||||
|
color: red;
|
||||||
|
padding: 2px 4px;
|
||||||
|
margin: -2px -4px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.attachment-info .delete-attachment a:hover {
|
||||||
|
color: #fff;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attachment Display Settings
|
* Attachment Display Settings
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -218,6 +218,11 @@ window.wp = window.wp || {};
|
||||||
*/
|
*/
|
||||||
Attachment = media.model.Attachment = Backbone.Model.extend({
|
Attachment = media.model.Attachment = Backbone.Model.extend({
|
||||||
sync: function( method, model, options ) {
|
sync: function( method, model, options ) {
|
||||||
|
// If the attachment does not yet have an `id`, return an instantly
|
||||||
|
// rejected promise. Otherwise, all of our requests will fail.
|
||||||
|
if ( _.isUndefined( this.id ) )
|
||||||
|
return $.Deferred().reject().promise();
|
||||||
|
|
||||||
// Overload the `read` request so Attachment.fetch() functions correctly.
|
// Overload the `read` request so Attachment.fetch() functions correctly.
|
||||||
if ( 'read' === method ) {
|
if ( 'read' === method ) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
|
@ -237,7 +242,7 @@ window.wp = window.wp || {};
|
||||||
options.data = _.extend( options.data || {}, {
|
options.data = _.extend( options.data || {}, {
|
||||||
action: 'save-attachment',
|
action: 'save-attachment',
|
||||||
id: this.id,
|
id: this.id,
|
||||||
nonce: media.model.settings.saveAttachmentNonce,
|
nonce: this.get('nonces').update,
|
||||||
post_id: media.model.settings.postId
|
post_id: media.model.settings.postId
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -252,6 +257,18 @@ window.wp = window.wp || {};
|
||||||
}
|
}
|
||||||
|
|
||||||
return media.ajax( options );
|
return media.ajax( options );
|
||||||
|
|
||||||
|
// Overload the `delete` request so attachments can be removed.
|
||||||
|
// This will permanently delete an attachment.
|
||||||
|
} else if ( 'delete' === method ) {
|
||||||
|
options = options || {};
|
||||||
|
options.context = this;
|
||||||
|
options.data = _.extend( options.data || {}, {
|
||||||
|
action: 'delete-post',
|
||||||
|
id: this.id,
|
||||||
|
_wpnonce: this.get('nonces')['delete']
|
||||||
|
});
|
||||||
|
return media.ajax( options );
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -270,7 +287,7 @@ window.wp = window.wp || {};
|
||||||
|
|
||||||
return media.post( 'save-attachment-compat', _.defaults({
|
return media.post( 'save-attachment-compat', _.defaults({
|
||||||
id: this.id,
|
id: this.id,
|
||||||
nonce: media.model.settings.saveAttachmentNonce,
|
nonce: this.get('nonces').update,
|
||||||
post_id: media.model.settings.postId
|
post_id: media.model.settings.postId
|
||||||
}, data ) ).done( function( resp, status, xhr ) {
|
}, data ) ).done( function( resp, status, xhr ) {
|
||||||
model.set( model.parse( resp, xhr ), options );
|
model.set( model.parse( resp, xhr ), options );
|
||||||
|
|
|
@ -3406,7 +3406,15 @@
|
||||||
'change [data-setting]': 'updateSetting',
|
'change [data-setting]': 'updateSetting',
|
||||||
'change [data-setting] input': 'updateSetting',
|
'change [data-setting] input': 'updateSetting',
|
||||||
'change [data-setting] select': 'updateSetting',
|
'change [data-setting] select': 'updateSetting',
|
||||||
'change [data-setting] textarea': 'updateSetting'
|
'change [data-setting] textarea': 'updateSetting',
|
||||||
|
'click .delete-attachment': 'deleteAttachment'
|
||||||
|
},
|
||||||
|
|
||||||
|
deleteAttachment: function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
if ( confirm( l10n.warnDelete ) )
|
||||||
|
this.model.destroy();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1327,6 +1327,10 @@ function wp_prepare_attachment_for_js( $attachment ) {
|
||||||
'subtype' => $subtype,
|
'subtype' => $subtype,
|
||||||
'icon' => wp_mime_type_icon( $attachment->ID ),
|
'icon' => wp_mime_type_icon( $attachment->ID ),
|
||||||
'dateFormatted' => mysql2date( get_option('date_format'), $attachment->post_date ),
|
'dateFormatted' => mysql2date( get_option('date_format'), $attachment->post_date ),
|
||||||
|
'nonces' => array(
|
||||||
|
'update' => wp_create_nonce( 'update-post_' . $attachment->ID ),
|
||||||
|
'delete' => wp_create_nonce( 'delete-post_' . $attachment->ID ),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
if ( $meta && 'image' === $type ) {
|
if ( $meta && 'image' === $type ) {
|
||||||
|
@ -1452,6 +1456,7 @@ function wp_enqueue_media( $args = array() ) {
|
||||||
'allMediaItems' => __( 'All media items' ),
|
'allMediaItems' => __( 'All media items' ),
|
||||||
'insertIntoPost' => $hier ? __( 'Insert into page' ) : __( 'Insert into post' ),
|
'insertIntoPost' => $hier ? __( 'Insert into page' ) : __( 'Insert into post' ),
|
||||||
'uploadedToThisPost' => $hier ? __( 'Uploaded to this page' ) : __( 'Uploaded to this post' ),
|
'uploadedToThisPost' => $hier ? __( 'Uploaded to this page' ) : __( 'Uploaded to this post' ),
|
||||||
|
'warnDelete' => __( "You are about to permanently delete this item.\n 'Cancel' to stop, 'OK' to delete." ),
|
||||||
|
|
||||||
// From URL
|
// From URL
|
||||||
'fromUrlTitle' => __( 'From URL' ),
|
'fromUrlTitle' => __( 'From URL' ),
|
||||||
|
@ -1641,6 +1646,11 @@ function wp_print_media_templates( $attachment ) {
|
||||||
<# if ( 'image' === data.type && ! data.uploading ) { #>
|
<# if ( 'image' === data.type && ! data.uploading ) { #>
|
||||||
<div class="dimensions">{{ data.width }} × {{ data.height }}</div>
|
<div class="dimensions">{{ data.width }} × {{ data.height }}</div>
|
||||||
<# } #>
|
<# } #>
|
||||||
|
<# if ( ! data.uploading ) { #>
|
||||||
|
<div class="delete-attachment">
|
||||||
|
<a href="#"><?php _e( 'Delete Permanently' ); ?></a>
|
||||||
|
</div>
|
||||||
|
<# } #>
|
||||||
</div>
|
</div>
|
||||||
<div class="compat-meta">
|
<div class="compat-meta">
|
||||||
<# if ( data.compat && data.compat.meta ) { #>
|
<# if ( data.compat && data.compat.meta ) { #>
|
||||||
|
|
|
@ -322,7 +322,6 @@ function wp_default_scripts( &$scripts ) {
|
||||||
$scripts->add( 'media-models', "/wp-includes/js/media-models$suffix.js", array( 'backbone', 'jquery' ), false, 1 );
|
$scripts->add( 'media-models', "/wp-includes/js/media-models$suffix.js", array( 'backbone', 'jquery' ), false, 1 );
|
||||||
did_action( 'init' ) && $scripts->localize( 'media-models', '_wpMediaModelsL10n', array(
|
did_action( 'init' ) && $scripts->localize( 'media-models', '_wpMediaModelsL10n', array(
|
||||||
'settings' => array(
|
'settings' => array(
|
||||||
'saveAttachmentNonce' => wp_create_nonce( 'save-attachment' ),
|
|
||||||
'ajaxurl' => admin_url( 'admin-ajax.php', 'relative' ),
|
'ajaxurl' => admin_url( 'admin-ajax.php', 'relative' ),
|
||||||
'postId' => 0,
|
'postId' => 0,
|
||||||
),
|
),
|
||||||
|
|
Loading…
Reference in New Issue