Add: description of images
This commit is contained in:
parent
1917531c54
commit
48028a8e09
|
@ -2,36 +2,35 @@
|
||||||
var obj = $("body");
|
var obj = $("body");
|
||||||
var system;
|
var system;
|
||||||
//ドラッグスタート
|
//ドラッグスタート
|
||||||
obj.on('dragstart', function (e) {
|
obj.on("dragstart", function(e) {
|
||||||
system = "locked"
|
system = "locked";
|
||||||
});
|
});
|
||||||
//何もなくファイルが通過
|
//何もなくファイルが通過
|
||||||
obj.on('dragend', function (e) {
|
obj.on("dragend", function(e) {
|
||||||
system = "";
|
system = "";
|
||||||
});
|
});
|
||||||
//ドラッグファイルが画面上に
|
//ドラッグファイルが画面上に
|
||||||
obj.on('dragenter', function (e) {
|
obj.on("dragenter", function(e) {
|
||||||
if (system != "locked") {
|
if (system != "locked") {
|
||||||
$("#drag").css('display', 'flex');
|
$("#drag").css("display", "flex");
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
$("body").on('dragover', function (e) {
|
$("body").on("dragover", function(e) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
});
|
});
|
||||||
//ドロップした
|
//ドロップした
|
||||||
$("body").on('drop', function (e) {
|
$("body").on("drop", function(e) {
|
||||||
if (system != "locked") {
|
if (system != "locked") {
|
||||||
$("#drag").css('display', 'none');
|
$("#drag").css("display", "none");
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
pimg(files);
|
pimg(files);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//何もなくファイルが通過
|
//何もなくファイルが通過
|
||||||
$("#drag").on('dragleave', function (e) {
|
$("#drag").on("dragleave", function(e) {
|
||||||
$("#drag").css('display', 'none');
|
$("#drag").css("display", "none");
|
||||||
});
|
});
|
||||||
|
|
||||||
//複数アップ
|
//複数アップ
|
||||||
|
@ -40,9 +39,8 @@ function pimg(files) {
|
||||||
for (i = 0; i < files.length; i++) {
|
for (i = 0; i < files.length; i++) {
|
||||||
var dot = files[i].path.match(/\.(.+)$/)[1];
|
var dot = files[i].path.match(/\.(.+)$/)[1];
|
||||||
if (dot == "bmp" || dot == "BMP") {
|
if (dot == "bmp" || dot == "BMP") {
|
||||||
postMessage(["bmpImage", [files[i].path, i]], "*")
|
postMessage(["bmpImage", [files[i].path, i]], "*");
|
||||||
todo(lang.lang_progress);
|
todo(lang.lang_progress);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
handleFileUpload(files[i], obj, i);
|
handleFileUpload(files[i], obj, i);
|
||||||
}
|
}
|
||||||
|
@ -50,21 +48,21 @@ function pimg(files) {
|
||||||
}
|
}
|
||||||
//ドラッグ・アンド・ドロップを終了
|
//ドラッグ・アンド・ドロップを終了
|
||||||
function closedrop() {
|
function closedrop() {
|
||||||
$("#drag").css('display', 'none');
|
$("#drag").css("display", "none");
|
||||||
}
|
}
|
||||||
//ファイル選択
|
//ファイル選択
|
||||||
function fileselect() {
|
function fileselect() {
|
||||||
postMessage(["sendSinmpleIpc", "file-select"], "*")
|
postMessage(["sendSinmpleIpc", "file-select"], "*");
|
||||||
}
|
}
|
||||||
|
|
||||||
//ファイル読み込み
|
//ファイル読み込み
|
||||||
function handleFileUpload(files, obj, no) {
|
function handleFileUpload(files, obj, no) {
|
||||||
var fr = new FileReader();
|
var fr = new FileReader();
|
||||||
fr.onload = function (evt) {
|
fr.onload = function(evt) {
|
||||||
var b64 = evt.target.result;
|
var b64 = evt.target.result;
|
||||||
$('#b64-box').val(b64);
|
$("#b64-box").val(b64);
|
||||||
var ret = media(b64, files["type"], no)
|
var ret = media(b64, files["type"], no);
|
||||||
}
|
};
|
||||||
fr.readAsDataURL(files);
|
fr.readAsDataURL(files);
|
||||||
$("#mec").append(files["name"] + "/");
|
$("#mec").append(files["name"] + "/");
|
||||||
}
|
}
|
||||||
|
@ -79,7 +77,7 @@ function media(b64, type, no) {
|
||||||
r += c[Math.floor(Math.random() * cl)];
|
r += c[Math.floor(Math.random() * cl)];
|
||||||
}
|
}
|
||||||
if ($("#media").val()) {
|
if ($("#media").val()) {
|
||||||
$("#media").val($("#media").val() + ',' + "tmp_" + r);
|
$("#media").val($("#media").val() + "," + "tmp_" + r);
|
||||||
} else {
|
} else {
|
||||||
$("#media").val("tmp_" + r);
|
$("#media").val("tmp_" + r);
|
||||||
}
|
}
|
||||||
|
@ -89,14 +87,14 @@ function media(b64, type, no) {
|
||||||
todo("Image Upload...");
|
todo("Image Upload...");
|
||||||
var media = toBlob(b64, type);
|
var media = toBlob(b64, type);
|
||||||
var fd = new FormData();
|
var fd = new FormData();
|
||||||
fd.append('file', media);
|
fd.append("file", media);
|
||||||
var acct_id = $("#post-acct-sel").val();
|
var acct_id = $("#post-acct-sel").val();
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||||
var httpreq = new XMLHttpRequest();
|
var httpreq = new XMLHttpRequest();
|
||||||
if (localStorage.getItem("mode_" + domain) == "misskey") {
|
if (localStorage.getItem("mode_" + domain) == "misskey") {
|
||||||
var start = "https://" + domain + "/api/drive/files/create";
|
var start = "https://" + domain + "/api/drive/files/create";
|
||||||
httpreq.open('POST', start, true);
|
httpreq.open("POST", start, true);
|
||||||
httpreq.upload.addEventListener("progress", progshow, false);
|
httpreq.upload.addEventListener("progress", progshow, false);
|
||||||
httpreq.responseType = "json";
|
httpreq.responseType = "json";
|
||||||
if ($("#nsfw").hasClass("nsfw-avail")) {
|
if ($("#nsfw").hasClass("nsfw-avail")) {
|
||||||
|
@ -104,20 +102,20 @@ function media(b64, type, no) {
|
||||||
} else {
|
} else {
|
||||||
var nsfw = false;
|
var nsfw = false;
|
||||||
}
|
}
|
||||||
var previewer = "url"
|
var previewer = "url";
|
||||||
fd.append('i', at);
|
fd.append("i", at);
|
||||||
//fd.append('isSensitive', nsfw);
|
//fd.append('isSensitive', nsfw);
|
||||||
httpreq.send(fd);
|
httpreq.send(fd);
|
||||||
} else {
|
} else {
|
||||||
var previewer = "preview_url"
|
var previewer = "preview_url";
|
||||||
var start = "https://" + domain + "/api/v1/media";
|
var start = "https://" + domain + "/api/v1/media";
|
||||||
httpreq.open('POST', start, true);
|
httpreq.open("POST", start, true);
|
||||||
httpreq.upload.addEventListener("progress", progshow, false);
|
httpreq.upload.addEventListener("progress", progshow, false);
|
||||||
httpreq.responseType = "json";
|
httpreq.responseType = "json";
|
||||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
httpreq.setRequestHeader("Authorization", "Bearer " + at);
|
||||||
httpreq.send(fd);
|
httpreq.send(fd);
|
||||||
}
|
}
|
||||||
httpreq.onreadystatechange = function () {
|
httpreq.onreadystatechange = function() {
|
||||||
if (httpreq.readyState === 4) {
|
if (httpreq.readyState === 4) {
|
||||||
var json = httpreq.response;
|
var json = httpreq.response;
|
||||||
if (!json.id) {
|
if (!json.id) {
|
||||||
|
@ -125,17 +123,17 @@ function media(b64, type, no) {
|
||||||
$("#imgup").text("");
|
$("#imgup").text("");
|
||||||
$(".toot-btn-group").prop("disabled", false);
|
$(".toot-btn-group").prop("disabled", false);
|
||||||
$("#post-acct-sel").prop("disabled", false);
|
$("#post-acct-sel").prop("disabled", false);
|
||||||
$('select').formSelect();
|
$("select").formSelect();
|
||||||
$("#imgsel").show();
|
$("#imgsel").show();
|
||||||
M.toast({ html: lang.lang_postimg_failupload, displayLength: 5000 })
|
M.toast({ html: lang.lang_postimg_failupload, displayLength: 5000 });
|
||||||
return false
|
return false;
|
||||||
}
|
}
|
||||||
var img = localStorage.getItem("img");
|
var img = localStorage.getItem("img");
|
||||||
if (json.type.indexOf("image") != -1) {
|
if (json.type.indexOf("image") != -1) {
|
||||||
var html = '<img src="' + json[previewer] + '" class="preview-img pointer" data-media="' + json["id"] + '" onclick="deleteImage(\'' + json["id"] + '\')" title="' + lang.lang_postimg_delete + '">';
|
var html = '<img src="' + json[previewer] + '" class="preview-img pointer" data-media="' + json["id"] + '" oncontextmenu="deleteImage(\'' + json["id"] + "')\" onclick=\"altImage('" + acct_id + "','" + json["id"] + '\')" title="' + lang.lang_postimg_delete + '">';
|
||||||
$('#preview').append(html);
|
$("#preview").append(html);
|
||||||
} else {
|
} else {
|
||||||
$('#preview').append(lang.lang_postimg_previewdis);
|
$("#preview").append(lang.lang_postimg_previewdis);
|
||||||
}
|
}
|
||||||
if (!img) {
|
if (!img) {
|
||||||
var img = "no-act";
|
var img = "no-act";
|
||||||
|
@ -145,31 +143,30 @@ function media(b64, type, no) {
|
||||||
var regExp = new RegExp("tmp_" + r, "g");
|
var regExp = new RegExp("tmp_" + r, "g");
|
||||||
mediav = mediav.replace(regExp, json["id"]);
|
mediav = mediav.replace(regExp, json["id"]);
|
||||||
$("#media").val(mediav);
|
$("#media").val(mediav);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (img == "url") {
|
if (img == "url") {
|
||||||
$("#textarea").val($("#textarea").val() + " " + json["text_url"])
|
$("#textarea").val($("#textarea").val() + " " + json["text_url"]);
|
||||||
}
|
}
|
||||||
todc();
|
todc();
|
||||||
if(localStorage.getItem("nsfw_" + acct_id)){
|
if (localStorage.getItem("nsfw_" + acct_id)) {
|
||||||
$("#nsfw").addClass("yellow-text");
|
$("#nsfw").addClass("yellow-text");
|
||||||
$("#nsfw").html("visibility");
|
$("#nsfw").html("visibility");
|
||||||
$("#nsfw").addClass("nsfw-avail");
|
$("#nsfw").addClass("nsfw-avail");
|
||||||
}
|
}
|
||||||
$(".toot-btn-group").prop("disabled", false);
|
$(".toot-btn-group").prop("disabled", false);
|
||||||
$('select').formSelect();
|
$("select").formSelect();
|
||||||
$("#mec").text(lang.lang_there);
|
$("#mec").text(lang.lang_there);
|
||||||
M.toast({ html: lang.lang_postimg_aftupload, displayLength: 1000 })
|
M.toast({ html: lang.lang_postimg_aftupload, displayLength: 1000 });
|
||||||
$("#imgup").text("");
|
$("#imgup").text("");
|
||||||
$("#imgsel").show();
|
$("#imgsel").show();
|
||||||
localStorage.removeItem("image");
|
localStorage.removeItem("image");
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//Base64からBlobへ
|
//Base64からBlobへ
|
||||||
function toBlob(base64, type) {
|
function toBlob(base64, type) {
|
||||||
var bin = atob(base64.replace(/^.*,/, ''));
|
var bin = atob(base64.replace(/^.*,/, ""));
|
||||||
var buffer = new Uint8Array(bin.length);
|
var buffer = new Uint8Array(bin.length);
|
||||||
for (var i = 0; i < bin.length; i++) {
|
for (var i = 0; i < bin.length; i++) {
|
||||||
buffer[i] = bin.charCodeAt(i);
|
buffer[i] = bin.charCodeAt(i);
|
||||||
|
@ -187,14 +184,14 @@ function toBlob(base64, type) {
|
||||||
}
|
}
|
||||||
//画像を貼り付けたら…
|
//画像を貼り付けたら…
|
||||||
var element = document.querySelector("#textarea");
|
var element = document.querySelector("#textarea");
|
||||||
element.addEventListener("paste", function (e) {
|
element.addEventListener("paste", function(e) {
|
||||||
if (!e.clipboardData || !e.clipboardData.items) {
|
if (!e.clipboardData || !e.clipboardData.items) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// DataTransferItemList に画像が含まれいない場合は終了する
|
// DataTransferItemList に画像が含まれいない場合は終了する
|
||||||
var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image'));
|
var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith("image"));
|
||||||
if (imageItems.length == 0) {
|
if (imageItems.length == 0) {
|
||||||
console.warn("it is not image")
|
console.warn("it is not image");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,7 +202,7 @@ element.addEventListener("paste", function (e) {
|
||||||
|
|
||||||
// FileReaderで読み込む
|
// FileReaderで読み込む
|
||||||
var fr = new FileReader();
|
var fr = new FileReader();
|
||||||
fr.onload = function (e) {
|
fr.onload = function(e) {
|
||||||
// onload内ではe.target.resultにbase64が入っているのであとは煮るなり焼くなり
|
// onload内ではe.target.resultにbase64が入っているのであとは煮るなり焼くなり
|
||||||
var base64 = e.target.result;
|
var base64 = e.target.result;
|
||||||
var mediav = $("#media").val();
|
var mediav = $("#media").val();
|
||||||
|
@ -213,7 +210,7 @@ element.addEventListener("paste", function (e) {
|
||||||
var i = mediav.split(",").length;
|
var i = mediav.split(",").length;
|
||||||
}
|
}
|
||||||
// DataTransferItem の type に mime tipes があるのでそれを使う
|
// DataTransferItem の type に mime tipes があるのでそれを使う
|
||||||
media(base64, imageType, i)
|
media(base64, imageType, i);
|
||||||
};
|
};
|
||||||
fr.readAsDataURL(imageFile);
|
fr.readAsDataURL(imageFile);
|
||||||
|
|
||||||
|
@ -222,13 +219,13 @@ element.addEventListener("paste", function (e) {
|
||||||
function deleteImage(key) {
|
function deleteImage(key) {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
title: lang.lang_postimg_delete,
|
title: lang.lang_postimg_delete,
|
||||||
type: 'warning',
|
type: "warning",
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
confirmButtonColor: '#3085d6',
|
confirmButtonColor: "#3085d6",
|
||||||
cancelButtonColor: '#d33',
|
cancelButtonColor: "#d33",
|
||||||
confirmButtonText: lang.lang_yesno,
|
confirmButtonText: lang.lang_yesno,
|
||||||
cancelButtonText: lang.lang_no
|
cancelButtonText: lang.lang_no
|
||||||
}).then((result) => {
|
}).then(result => {
|
||||||
if (result.value) {
|
if (result.value) {
|
||||||
var media = $("#media").val();
|
var media = $("#media").val();
|
||||||
var arr = media.split(",");
|
var arr = media.split(",");
|
||||||
|
@ -239,8 +236,54 @@ function deleteImage(key) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$("#media").val(arr.join(","));
|
$("#media").val(arr.join(","));
|
||||||
$('#preview [data-media=' + key + ']').remove();
|
$("#preview [data-media=" + key + "]").remove();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
}
|
||||||
|
function altImage(acct_id, id) {
|
||||||
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
|
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||||
|
var start = "https://" + domain + "/api/v1/media/" + id;
|
||||||
|
|
||||||
}
|
Swal.fire({
|
||||||
|
title: lang.lang_postimg_desc,
|
||||||
|
text: lang.lang_postimg_leadContext,
|
||||||
|
input: "text",
|
||||||
|
inputAttributes: {
|
||||||
|
autocapitalize: "off"
|
||||||
|
},
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonText: "Post",
|
||||||
|
showLoaderOnConfirm: true,
|
||||||
|
preConfirm: data => {
|
||||||
|
return fetch(start, {
|
||||||
|
method: "PUT",
|
||||||
|
headers: {
|
||||||
|
"content-type": "application/json",
|
||||||
|
Authorization: "Bearer " + at
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
description: data
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(function(response) {
|
||||||
|
return response.json();
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error);
|
||||||
|
console.error(error);
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
console.log(json)
|
||||||
|
$("[data-media=" + id + "]").attr("title", data);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
allowOutsideClick: () => !Swal.isLoading()
|
||||||
|
}).then(result => {
|
||||||
|
if (result.value) {
|
||||||
|
Swal.fire({
|
||||||
|
title: "Complete",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -56,7 +56,9 @@
|
||||||
"lang_postimg_previewdis": "cannot preview",
|
"lang_postimg_previewdis": "cannot preview",
|
||||||
"lang_postimg_aftupload": "You cannot change accounts after uploading.",
|
"lang_postimg_aftupload": "You cannot change accounts after uploading.",
|
||||||
"lang_postimg_failupload": "Failed",
|
"lang_postimg_failupload": "Failed",
|
||||||
"lang_postimg_delete": "Delete this image.",
|
"lang_postimg_delete": "Click to add description, right-click to delete this",
|
||||||
|
"lang_postimg_desc": "Description",
|
||||||
|
"lang_postimg_leadContext": "right-click the thumbnail to delete this",
|
||||||
"lang_post_tagTL": "This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?",
|
"lang_post_tagTL": "This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?",
|
||||||
"lang_post_tagVis": "This toot(not 'public' toot) is not shown on this tag's TL.",
|
"lang_post_tagVis": "This toot(not 'public' toot) is not shown on this tag's TL.",
|
||||||
"lang_post_cwtitle": "Auto CW Alert",
|
"lang_post_cwtitle": "Auto CW Alert",
|
||||||
|
|
|
@ -56,7 +56,9 @@
|
||||||
"lang_postimg_previewdis": "プレビューできません。",
|
"lang_postimg_previewdis": "プレビューできません。",
|
||||||
"lang_postimg_aftupload": "アップロード後はアカウントを切り替えられません。",
|
"lang_postimg_aftupload": "アップロード後はアカウントを切り替えられません。",
|
||||||
"lang_postimg_failupload": "アップロードに失敗しました。",
|
"lang_postimg_failupload": "アップロードに失敗しました。",
|
||||||
"lang_postimg_delete": "この画像を削除します",
|
"lang_postimg_delete": "クリック: 画像に説明を追加/右クリック: 削除",
|
||||||
|
"lang_postimg_desc": "説明",
|
||||||
|
"lang_postimg_leadContext": "画像を削除するためには右クリック",
|
||||||
"lang_post_tagTL": "デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
|
"lang_post_tagTL": "デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
|
||||||
"lang_post_tagVis": "公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)",
|
"lang_post_tagVis": "公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)",
|
||||||
"lang_post_cwtitle": "長文投稿の警告",
|
"lang_post_cwtitle": "長文投稿の警告",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user