add fast uploader

This commit is contained in:
mrilyew 2025-01-12 15:46:26 +03:00
parent d962317ad0
commit f9ad37b0c9
2 changed files with 20 additions and 13 deletions

View file

@ -97,7 +97,7 @@ class Document extends Media
throw new ISE("File uploaded is corrupted"); throw new ISE("File uploaded is corrupted");
$original_name = $file["name"]; $original_name = $file["name"];
$file_format = explode(".", $original_name)[1]; $file_format = end(explode(".", $original_name));
$file_size = $file["size"]; $file_size = $file["size"];
$type = Document::detectTypeByFormat($file_format); $type = Document::detectTypeByFormat($file_format);

View file

@ -1,4 +1,4 @@
function showDocumentUploadDialog(target = null, append_to_url = null) function showDocumentUploadDialog(target = null, append_to_url = null, after_upload = null)
{ {
let file = null let file = null
const cmsg = new CMessageBox({ const cmsg = new CMessageBox({
@ -13,7 +13,7 @@ function showDocumentUploadDialog(target = null, append_to_url = null)
<div id="_document_upload_frame" style="text-align:center;margin: 10px 0px 2px 0px;"> <div id="_document_upload_frame" style="text-align:center;margin: 10px 0px 2px 0px;">
<input onclick="upload_btn.click()" class="button" type="button" value="${tr("select_file_fp")}"> <input onclick="upload_btn.click()" class="button" type="button" value="${tr("select_file_fp")}">
<input id="upload_btn" type="file" style="display:none;"> <input id="upload_btn" type="file" accept="${window.openvk.docs_allowed.join(",.")}" style="display:none;">
</div> </div>
`, `,
buttons: [tr('close')], buttons: [tr('close')],
@ -25,7 +25,7 @@ function showDocumentUploadDialog(target = null, append_to_url = null)
cmsg.getNode().find('#upload_btn').on('change', (e) => { cmsg.getNode().find('#upload_btn').on('change', (e) => {
file = e.target.files[0] file = e.target.files[0]
const name = file.name const name = file.name
const format = name.split(".")[1] const format = name.split(".")[name.split(".").length - 1]
if(window.openvk.docs_allowed.indexOf(format) == -1) { if(window.openvk.docs_allowed.indexOf(format) == -1) {
makeError(tr("error_file_invalid_format")) makeError(tr("error_file_invalid_format"))
return return
@ -81,7 +81,12 @@ function showDocumentUploadDialog(target = null, append_to_url = null)
const json = await fetcher.json() const json = await fetcher.json()
if(json.success) { if(json.success) {
window.router.route(location.href) if(target != "search") {
window.router.route(location.href)
} else {
if(after_upload)
after_upload()
}
} else { } else {
fastError(escapeHtml(json.flash.message)) fastError(escapeHtml(json.flash.message))
} }
@ -317,13 +322,10 @@ async function __docAttachment(form, ctx = "wall", source = "user", source_arg =
<text id="photo_com_title_photos"> <text id="photo_com_title_photos">
${tr("select_doc")} ${tr("select_doc")}
</text> </text>
${source != "user" ? <span style="display: inline-flex;gap: 7px;">
` ${source != "user" ? `<a id="_doc_picker_go_to_my">${tr("go_to_my_documents")}</a>`: ""}
<a id="_doc_picker_go_to_my"> <a id="_doc_picker_upload">${tr("upload_button")}</a>
${tr("go_to_my_documents")} </span>
</a>
`
: ""}
<div> <div>
<a id="ovk-photo-close">${tr("close")}</a> <a id="ovk-photo-close">${tr("close")}</a>
</div> </div>
@ -495,11 +497,16 @@ async function __docAttachment(form, ctx = "wall", source = "user", source_arg =
msg.close() msg.close()
await __docAttachment(form, "wall") await __docAttachment(form, "wall")
}) })
msg.getNode().on("click", "#_doc_picker_upload", async (e) => {
showDocumentUploadDialog("search", source_arg >= 0 ? NaN : Math.abs(source_arg), () => {
docs_reciever.clean()
docs_reciever.page(1)
})
})
msg.getNode().on("change", ".attachment_search input", async (e) => { msg.getNode().on("change", ".attachment_search input", async (e) => {
await docs_reciever.search(ovk_proc_strtr(e.target.value, 100)) await docs_reciever.search(ovk_proc_strtr(e.target.value, 100))
}) })
await docs_reciever.page(docs_reciever.stat.page + 1) await docs_reciever.page(docs_reciever.stat.page + 1)
} }
u(document).on('click', '#__documentAttachment', async (e) => { u(document).on('click', '#__documentAttachment', async (e) => {