function showDocumentUploadDialog(target = null, append_to_url = null) { let file = null const cmsg = new CMessageBox({ title: tr("document_uploading_in_general"), body: ` ${tr("limits")}
`, buttons: [tr('close')], callbacks: [Function.noop], }) cmsg.getNode().find('.ovk-diag-body').attr('style', "padding:15px;") cmsg.getNode().attr('style', "width: 400px;") cmsg.getNode().find('#upload_btn').on('change', (e) => { file = e.target.files[0] const name = file.name const format = name.split(".")[1] if(window.openvk.docs_allowed.indexOf(format) == -1) { makeError(tr("error_file_invalid_format")) return } if(file.size > window.openvk.docs_max * 1024 * 1024) { makeError(tr("error_file_too_big")) return } cmsg.close() const cmsg_2 = new CMessageBox({ title: tr("document_uploading_in_general"), body: `

${tr("info_name")}


${tr("tags")}


`, buttons: [tr('upload_button'), tr('cancel')], callbacks: [async () => { const fd = new FormData fd.append("name", u(`input[name="doc_name"]`).nodes[0].value) fd.append("tags", u(`input[name="doc_tags"]`).nodes[0].value) fd.append("folder", u(`input[name="doc_access"]:checked`).nodes[0].value) fd.append("owner_hidden", u(`input[name="doc_owner"]`).nodes[0].checked ? "on" : "off") fd.append("blob", file) fd.append("ajax", 1) fd.append("hash", window.router.csrf) const endpoint_url = `/docs/upload` + (!isNaN(append_to_url) ? "?gid="+append_to_url : '') const fetcher = await fetch(endpoint_url, { method: 'POST', body: fd, }) const json = await fetcher.json() if(json.success) { window.router.route(location.href) } else { fastError(escapeHtml(json.flash.message)) } }, Function.noop], }) cmsg_2.getNode().find('.ovk-diag-body').attr('style', "padding:15px;") cmsg_2.getNode().attr('style', "width: 400px;") }) } u(document).on("drop", "#_document_upload_frame", (e) => { e.dataTransfer.dropEffect = 'move'; e.preventDefault() u(`#_document_upload_frame #upload_btn`).nodes[0].files = e.dataTransfer.files u("#_document_upload_frame #upload_btn").trigger("change") }) u(document).on('click', '.docMainItem #edit_icon', async (e) => { e.preventDefault() if(u("#ajloader").hasClass("shown")) { return } const target = u(e.target).closest("#edit_icon") const item = target.closest('.docMainItem') const id = item.nodes[0].dataset.id CMessageBox.toggleLoader() const docs = await window.OVKAPI.call('docs.getById', {docs: id, return_tags: 1}) const doc = docs[0] if(!doc) { fastError("(") CMessageBox.toggleLoader() return } const cmsg_2 = new CMessageBox({ title: tr("document_editing_in_general"), body: `

${tr("info_name")}


${tr("tags")}


`, buttons: [tr('save'), tr('cancel')], callbacks: [async () => { const params = { owner_id: id.split('_')[0], doc_id: id.split('_')[1], title: u(`input[name='doc_name']`).nodes[0].value, tags: u(`input[name='doc_tags']`).nodes[0].value, folder_id: u(`input[name="doc_access"]:checked`).nodes[0].value, owner_hidden: u(`input[name="doc_owner"]`).nodes[0].checked ? 1 : 0, } const edit = await window.OVKAPI.call('docs.edit', params) if(edit == 1) { item.find('.doc_content .doc_name').html(escapeHtml(params.title)) item.find('.doc_content .doc_tags').html(escapeHtml(params.tags)) } }, Function.noop], }) cmsg_2.getNode().find('.ovk-diag-body').attr('style', "padding:15px;") cmsg_2.getNode().attr('style', "width: 400px;") CMessageBox.toggleLoader() }) u(document).on('click', '#upload_entry_point', (e) => { showDocumentUploadDialog(null, Number(e.target.dataset.gid)) }) u(document).on('change', "#docs_page_wrapper select[name='docs_sort']", (e) => { const new_url = new URL(location.href) new_url.searchParams.set('order', e.target.value) window.router.route(new_url.href) }) u(document).on('click', '.docMainItem #remove_icon', async (e) => { e.preventDefault() const target = u(e.target).closest("#remove_icon") const item = target.closest('.docMainItem') const context = item.attr('data-context') const id = item.nodes[0].dataset.id.split("_") target.addClass('lagged') const res = await window.OVKAPI.call('docs.delete', {owner_id: id[0], doc_id: id[1]}) target.removeClass('lagged') if(res == 1) { target.attr('id', 'mark_icon') if(context == "page") { target.html('✓') window.router.route('/docs') } } }) u(document).on('click', '.docMainItem #add_icon', async (e) => { e.preventDefault() const target = u(e.target).closest("#add_icon") const item = target.closest('.docMainItem') const id = item.nodes[0].dataset.id.split("_") const context = item.attr('data-context') target.addClass('lagged') try { const res = await window.OVKAPI.call('docs.add', {owner_id: id[0], doc_id: id[1], access_key: id[2]}) } catch(e) { makeError(tr("error_file_adding_copied")) target.removeClass('lagged') return } target.removeClass('lagged') target.attr('id', 'mark_icon') if(context == "page") { target.html('✓') } }) u(document).on('click', '.docMainItem #report_icon', (e) => { e.preventDefault() const target = u(e.target).closest("#report_icon") const item = target.closest('.docMainItem') const id = item.nodes[0].dataset.id.split("_") MessageBox(tr("report_question"), ` ${tr("going_to_report_doc")}
${tr("report_question_text")}

${tr("report_reason")}: `, [tr("confirm_m"), tr("cancel")], [(function() { res = document.querySelector("#uReportMsgInput").value; xhr = new XMLHttpRequest(); xhr.open("GET", "/report/" + id[1] + "?reason=" + res + "&type=doc", true); xhr.onload = (function() { if(xhr.responseText.indexOf("reason") === -1) MessageBox(tr("error"), tr("error_sending_report"), ["OK"], [Function.noop]); else MessageBox(tr("action_successfully"), tr("will_be_watched"), ["OK"], [Function.noop]); }); xhr.send(null) }), Function.noop]) }) u(document).on("click", ".docListViewItem a.viewerOpener, a.docGalleryItem", async (e) => { e.preventDefault() if(e.target.closest('.doc_volume_action')) { return } const target = u(e.target) const link = target.closest('a') CMessageBox.toggleLoader() const url = link.nodes[0].href const request = await fetch(url) const body_html = await request.text() const parser = new DOMParser const body = parser.parseFromString(body_html, "text/html") const preview = body.querySelector('.photo-page-wrapper-photo') const details = body.querySelector('.ovk-photo-details') u(preview.querySelector('img')).attr('id', 'ovk-photo-img') const photo_viewer = new CMessageBox({ title: '', custom_template: u(`
${tr("document")}
${tr("close")}
${preview.innerHTML}
${details.innerHTML}
`) }) photo_viewer.getNode().find("#ovk-photo-close").on("click", function(e) { photo_viewer.close() }); CMessageBox.toggleLoader() }) u(document).on('click', '#__documentAttachment', async (e) => { const per_page = 10 const form = u(e.target).closest('form') const msg = new CMessageBox({ title: tr('select_doc'), body: `
`, buttons: [tr('close')], callbacks: [Function.noop] }) msg.getNode().attr('style', 'width: 340px;') msg.getNode().find('.ovk-diag-body').attr('style', 'height:335px;padding:0px;') async function __recieveDocs(page) { u('#gif_loader').remove() u('#attachment_insert').append(`
`) const insert_place = u('#attachment_insert .docsInsert') let docs = null try { docs = await window.OVKAPI.call('docs.get', {'owner_id': window.openvk.current_id, 'count': per_page, 'offset': per_page * page}) } catch(e) { u("#gif_loader").remove() insert_place.html("Err") return } u("#gif_loader").remove() const pages_count = Math.ceil(Number(docs.count) / per_page) if(docs.count < 1) { insert_place.append(tr('no_docs')) } docs.items.forEach(doc => { is_attached = (form.find(`.upload-item[data-type='doc'][data-id='${doc.owner_id}_${doc.id}']`)).length > 0 insert_place.append(`
${is_attached ? tr("detach") : tr("attach")}
`) }) if(page < pages_count - 1) { insert_place.append(`
${tr('show_more')}
`) } } // next page u(".ovk-diag-body .attachment_selector").on("click", "#show_more", async (ev) => { const target = u(ev.target).closest('#show_more') target.addClass('lagged') await __recieveDocs(Number(target.nodes[0].dataset.page)) target.remove() }) u(".ovk-diag-body .attachment_selector").on("click", "#__attach_doc", async (ev) => { if(u(form).find(`.upload-item`).length > window.openvk.max_attachments) { makeError(tr('too_many_attachments'), 'Red', 10000, 1) return } const target = u(ev.target).closest('._content') const button = target.find('#__attach_doc') const dataset = target.nodes[0].dataset const is_attached = (form.find(`.upload-item[data-type='doc'][data-id='${dataset.attachmentdata}']`)).length > 0 if(is_attached) { (form.find(`.upload-item[data-type='doc'][data-id='${dataset.attachmentdata}']`)).remove() button.html(tr('attach')) } else { if(form.find(`.upload-item`).length + 1 > window.openvk.max_attachments) { makeError(tr('too_many_attachments'), 'Red', 10000, 1) return } button.html(tr('detach')) form.find('.post-vertical').append(`
`) } }) __recieveDocs(0) })