1
0
Fork 0
mirror of https://github.com/yunluo/gdk.git synced 2024-05-25 01:42:22 +02:00

增加Ajax粘贴上传图片功能

This commit is contained in:
云落 2020-01-30 16:47:37 +08:00
parent 9f587883a9
commit 68b03f4c34
4 changed files with 95 additions and 5 deletions

View file

@ -1,15 +1,30 @@
<?php
function nc_optimizeup_enqueue_script() {
wp_register_script('nicetheme-optimizeup', plugin_dir_url( __FILE__ ) . 'assets/main.js', array( 'jquery' ));
function gdk_admin_script() {
?>
<script>
jQuery(function ($) {
$("#content").pasteUploadImage(ajaxurl);
});
</script>
<?php
}
function nc_optimizeup_enqueue_script($hook) {
//wp_register_script('nicetheme-optimizeup', plugin_dir_url( __FILE__ ) . 'assets/main.js', array( 'jquery' ));
wp_register_script('paste-upload-image', GDK_BASE_URL.'assets/js/paste-upload-image.js', array( 'jquery' ), GDK_PLUGIN_VER, true);
//wp_enqueue_script('nicetheme-optimizeup');
wp_enqueue_script('paste-upload-image');
wp_register_script('sweetalert','https://cdn.bootcss.com/sweetalert/2.1.2/sweetalert.min.js', [], GDK_PLUGIN_VER, true);
}
add_action('admin_enqueue_scripts', 'nc_optimizeup_enqueue_script');
function nc_optimizeup_enqueue_script_frontend() {
if (!is_admin()) {
wp_register_style( 'gdk_css', GDK_BASE_URL.'assets/css/gdk.css', array(), GDK_PLUGIN_VER, 'all' );
wp_register_style( 'gdk_css', GDK_BASE_URL.'assets/css/gdk.css', [], GDK_PLUGIN_VER, 'all' );
wp_register_script('code_prettify_js', GDK_BASE_URL.'assets/js/prettify.min.js', array('jquery'), GDK_PLUGIN_VER, true);
wp_register_script('fancybox_js', GDK_BASE_URL.'assets/js/fancybox.min.js', array('jquery'), GDK_PLUGIN_VER, true);
wp_register_script('lazyload_js', GDK_BASE_URL.'assets/js/lazyload.min.js', array('jquery'), GDK_PLUGIN_VER, true);
@ -20,4 +35,11 @@ function nc_optimizeup_enqueue_script_frontend() {
}
}
add_action('wp_enqueue_scripts', 'nc_optimizeup_enqueue_script_frontend');
add_action('wp_enqueue_scripts', 'nc_optimizeup_enqueue_script_frontend');
//
function gdk_admin_assets() {
gdk_admin_script();
}
add_action('admin_footer','gdk_admin_assets');

View file

@ -0,0 +1 @@
(function(f){var e,g="";f.fn.pasteUploadImage=function(b){e=f(this);g=b;e.on("paste",function(a){var b;var d=a.originalEvent;if(d.clipboardData&&d.clipboardData.items&&(b=isImage(d)))return a.preventDefault(),a=getFilename(d)||"image.png",pasteText("{{"+a+"(uploading...)}}"),uploadFile(b.getAsFile(),a)});e.on("drop",function(a){var b;var d=a.originalEvent;if(d.dataTransfer&&d.dataTransfer.files&&(b=isImageForDrop(d)))return a.preventDefault(),a=d.dataTransfer.files[0].name||"image.png",pasteText("{{"+a+"(uploading...)}}"),uploadFile(b,a)})};pasteText=function(b){var a=e[0].selectionStart;var c=e[0].selectionEnd;var d=e.val().length;var f=e.val().substring(0,a);d=e.val().substring(c,d);e.val(f+b+d);e.get(0).setSelectionRange(a+b.length,c+b.length);return e.trigger("input")};isImage=function(b){var a;for(a=0;a<b.clipboardData.items.length;){var c=b.clipboardData.items[a];if(-1!==c.type.indexOf("image"))return c;a++}return!1};isImageForDrop=function(b){var a;for(a=0;a<b.dataTransfer.files.length;){var c=b.dataTransfer.files[a];if(-1!==c.type.indexOf("image"))return c;a++}return!1};getFilename=function(b){var a;window.clipboardData&&window.clipboardData.getData?a=window.clipboardData.getData("Text"):b.clipboardData&&b.clipboardData.getData&&(a=b.clipboardData.getData("text/plain"));a=a.split("\r");return a[0]};getMimeType=function(b,a){b=b.type;a=a.substring(a.lastIndexOf(".")+1);return b!="image/"+a?"image/"+a:b};uploadFile=function(b,a){var c=new FormData;c.append("imageFile",b);c.append("mimeType",getMimeType(b,a));c.append("action","gdk_pasteup_imag");f.ajax({url:g,data:c,type:"post",processData:!1,contentType:!1,dataType:"json",xhrFields:{withCredentials:!0},success:function(b){return b.success?insertToTextArea(a,b.message):replaceLoadingTest(a)},error:function(b,c){replaceLoadingTest(a);console.log(b.responseText)}})};insertToTextArea=function(b,a){return e.val(function(c,d){return d.replace("{{"+b+"(uploading...)}}",'<a href="'+a+'"><img src="'+a+'" class="aligncenter size-full" /></a>\n')})};replaceLoadingTest=function(b){return e.val(function(a,c){return c.replace("{{"+b+"(uploading...)}}",b+"\n")})}})(jQuery);

View file

@ -16,4 +16,45 @@ add_action('wp_ajax_nopriv_gdk_test_email', 'gdk_test_email');
add_action('wp_ajax_gdk_test_email', 'gdk_test_email');
//粘贴上传图片
function gdk_pasteup_imag() {
if($_FILES) {
global $post;
$post_ID = $post->ID;
$wp_upload_dir = wp_upload_dir();
$file = $_FILES["imageFile"];
$result=array ("success"=>false,"message"=>"Null");
if (in_array($file["type"],array ("image/gif","image/jpeg","image/pjpeg","image/png"))) {
if ($file["error"]>0) {
$result['message']="error";
} else {
$file_name = md5_file($file["tmp_name"]).str_replace("image/",".",$file["type"]);//img name
$file_url = $wp_upload_dir['url']."/".$file_name;
$file_path = $wp_upload_dir['path']."/".$file_name;
if (!file_exists($file_path)) {
move_uploaded_file($file["tmp_name"],$file_path);
$attachment = [
'guid' => $wp_upload_dir['url'] . '/' . basename( $file_path ),
'post_mime_type' => $file['type'],
'post_title' => $file_name,
'post_content' => '',
'post_status' => 'inherit'
];
$attach_id = wp_insert_attachment( $attachment, $file_name, $post_ID);
//这是wp内置的上传附件的函数
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $file_path );
wp_update_attachment_metadata( $attach_id, $attach_data );
}
$result['success']= true;
$result['message']= $file_url;
}
} else {
$result['message']="Invalid file";
}
echo(json_encode($result));
exit();
}
}
add_action('wp_ajax_nopriv_gdk_pasteup_imag', 'gdk_pasteup_imag');
add_action('wp_ajax_gdk_pasteup_imag', 'gdk_pasteup_imag');

View file

@ -232,6 +232,32 @@ if(gdk_option('gdk_upload_rename')) {
add_filter('wp_handle_upload_prefilter', 'gdk_upload_rename' );
}
// 禁用自动生成的图片尺寸
function shapeSpace_disable_image_sizes($sizes) {
unset($sizes['thumbnail']); // disable thumbnail size
unset($sizes['medium']); // disable medium size
unset($sizes['large']); // disable large size
unset($sizes['medium_large']); // disable medium-large size
unset($sizes['1536x1536']); // disable 2x medium-large size
unset($sizes['2048x2048']); // disable 2x large size
return $sizes;
}
add_action('intermediate_image_sizes_advanced', 'shapeSpace_disable_image_sizes');
// 禁用缩放尺寸
add_filter('big_image_size_threshold', '__return_false');
// 禁用其他图片尺寸
function shapeSpace_disable_other_image_sizes() {
remove_image_size('post-thumbnail'); // disable images added via set_post_thumbnail_size()
remove_image_size('another-size'); // disable any other added image sizes
}
add_action('init', 'shapeSpace_disable_other_image_sizes');
// 搜索结果为1时候自动跳转到对应页面
function gdk_redirect_single_search_result() {