mirror of
https://github.com/openvk/openvk
synced 2024-11-14 19:19:14 +03:00
4699fcbeb9
* Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨💻 Add 👨💻 fading 👨💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨💻👨💻👨💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
231 lines
9.4 KiB
JavaScript
231 lines
9.4 KiB
JavaScript
function endSuggestAction(new_count, post_node) {
|
||
if(document.getElementById("cound") != null)
|
||
document.getElementById("cound").innerHTML = tr("suggested_posts_in_group", new_count)
|
||
else
|
||
document.getElementById("cound_r").innerHTML = tr("suggested_by_everyone", new_count)
|
||
|
||
if(document.querySelector("object a[href='"+location.pathname+"'] b") != null) {
|
||
document.querySelector("object a[href='"+location.pathname+"'] b").innerHTML = new_count
|
||
|
||
if(new_count < 1) {
|
||
u("object a[href='"+location.pathname+"']").remove()
|
||
}
|
||
}
|
||
|
||
if(new_count < 1 && document.querySelector(".sugglist") != null) {
|
||
$(".sugglist a").click()
|
||
$(".sugglist").remove()
|
||
}
|
||
|
||
post_node.style.transition = "opacity 300ms ease-in-out";
|
||
post_node.style.opacity = "0";
|
||
post_node.classList.remove("post")
|
||
|
||
setTimeout(() => {post_node.outerHTML = ""}, 300)
|
||
|
||
if(document.querySelectorAll("#postz .post").length < 1 && new_count > 0 && document.querySelector(".paginator") != null)
|
||
loadMoreSuggestedPosts()
|
||
}
|
||
|
||
// "Опубликовать запись"
|
||
$(document).on("click", "#publish_post", async (e) => {
|
||
let id = Number(e.currentTarget.dataset.id)
|
||
let post;
|
||
let body = `
|
||
<textarea id="pooblish" style="max-height:500px;resize:vertical;min-height:54px;"></textarea>
|
||
<label><input type="checkbox" id="signatr" checked>${tr("add_signature")}</label>
|
||
`
|
||
|
||
MessageBox(tr("publishing_suggested_post"), body, [tr("publish"), tr("cancel")], [(async () => {
|
||
let id = Number(e.currentTarget.dataset.id)
|
||
let post;
|
||
|
||
let formData = new FormData()
|
||
formData.append("id", id)
|
||
formData.append("sign", document.getElementById("signatr").checked ? 1 : 0)
|
||
formData.append("new_content", document.getElementById("pooblish").value)
|
||
formData.append("hash", u("meta[name=csrf]").attr("value"))
|
||
|
||
ky.post("/wall/accept", {
|
||
hooks: {
|
||
beforeRequest: [
|
||
(_request) => {
|
||
e.currentTarget.classList.add("loaded")
|
||
e.currentTarget.setAttribute("value", "")
|
||
e.currentTarget.setAttribute("id", "")
|
||
}
|
||
],
|
||
afterResponse: [
|
||
async (_request, _options, response) => {
|
||
json = await response.json()
|
||
|
||
if(json.success) {
|
||
NewNotification(tr("suggestion_succefully_published"), tr("suggestion_press_to_go"), null, () => {window.location.assign("/wall" + json.id)});
|
||
endSuggestAction(json.new_count, e.currentTarget.closest("table"))
|
||
} else {
|
||
MessageBox(tr("error"), json.flash.message, [tr("ok")], [Function.noop]);
|
||
}
|
||
|
||
e.currentTarget.setAttribute("value", tr("publish_suggested"))
|
||
e.currentTarget.classList.remove("loaded")
|
||
e.currentTarget.setAttribute("id", "publish_post")
|
||
}
|
||
]
|
||
},
|
||
body: formData
|
||
})
|
||
}), Function.noop]);
|
||
|
||
document.getElementById("pooblish").innerHTML = e.currentTarget.closest("table").querySelector(".really_text").dataset.text
|
||
document.querySelector(".ovk-diag-body").style.padding = "9px";
|
||
})
|
||
|
||
// "Отклонить"
|
||
$(document).on("click", "#decline_post", async (e) => {
|
||
let id = Number(e.currentTarget.dataset.id)
|
||
|
||
let formData = new FormData()
|
||
formData.append("id", id)
|
||
formData.append("hash", u("meta[name=csrf]").attr("value"))
|
||
|
||
ky.post("/wall/decline", {
|
||
hooks: {
|
||
beforeRequest: [
|
||
(_request) => {
|
||
e.currentTarget.classList.add("loaded")
|
||
e.currentTarget.setAttribute("value", "")
|
||
e.currentTarget.setAttribute("id", "")
|
||
}
|
||
],
|
||
afterResponse: [
|
||
async (_request, _options, response) => {
|
||
json = await response.json()
|
||
|
||
if(json.success) {
|
||
endSuggestAction(json.new_count, e.currentTarget.closest("table"))
|
||
} else {
|
||
MessageBox(tr("error"), json.flash.message, [tr("ok")], [Function.noop]);
|
||
}
|
||
|
||
e.currentTarget.setAttribute("value", tr("decline_suggested"))
|
||
e.currentTarget.setAttribute("id", "decline_post")
|
||
e.currentTarget.classList.remove("loaded")
|
||
}
|
||
]
|
||
},
|
||
body: formData
|
||
})
|
||
})
|
||
|
||
function loadMoreSuggestedPosts() {
|
||
let link = location.href
|
||
|
||
if(!link.includes("/suggested")) {
|
||
link += "/suggested"
|
||
}
|
||
|
||
ky.get(link, {
|
||
hooks: {
|
||
beforeRequest: [
|
||
(_request) => {
|
||
document.getElementById("postz").innerHTML = `<img src="/assets/packages/static/openvk/img/loading_mini.gif">`
|
||
}
|
||
],
|
||
afterResponse: [
|
||
async (_request, _options, response) => {
|
||
let text = await response.text()
|
||
let parser = new DOMParser()
|
||
let body = parser.parseFromString(text, "text/html")
|
||
|
||
if(body.querySelectorAll(".post").length < 1) {
|
||
let url = new URL(location.href)
|
||
url.searchParams.set("p", url.searchParams.get("p") - 1)
|
||
|
||
if(url.searchParams.get("p") < 1) {
|
||
return 0;
|
||
}
|
||
|
||
history.pushState({}, "", url)
|
||
|
||
loadMoreSuggestedPosts()
|
||
}
|
||
|
||
body.querySelectorAll(".bsdn").forEach(bsdnInitElement)
|
||
document.getElementById("postz").innerHTML = body.getElementById("postz").innerHTML
|
||
}
|
||
]
|
||
}
|
||
})
|
||
}
|
||
|
||
// нажатие на "x предложенных записей"
|
||
$(document).on("click", ".sugglist a", (e) => {
|
||
e.preventDefault()
|
||
|
||
if(e.currentTarget.getAttribute("data-toogled") == null || e.currentTarget.getAttribute("data-toogled") == "false") {
|
||
e.currentTarget.setAttribute("data-toogled", "true")
|
||
document.getElementById("underHeader").style.display = "none"
|
||
document.querySelector(".insertThere").style.display = "block"
|
||
document.querySelector(".insertThere").classList.add("infContainer")
|
||
history.pushState({}, "", e.currentTarget.href)
|
||
|
||
// если ещё ничего не подгружалось
|
||
if(document.querySelector(".insertThere").innerHTML == "") {
|
||
ky(e.currentTarget.href, {
|
||
hooks: {
|
||
beforeRequest: [
|
||
(_request) => {
|
||
document.querySelector(".insertThere").insertAdjacentHTML("afterbegin", `<img src="/assets/packages/static/openvk/img/loading_mini.gif">`)
|
||
}
|
||
],
|
||
afterResponse: [
|
||
async (_request, _options, response) => {
|
||
let parser = new DOMParser
|
||
let result = parser.parseFromString(await response.text(), 'text/html').querySelector(".infContainer")
|
||
|
||
result.querySelectorAll(".bsdn").forEach(bsdnInitElement)
|
||
document.querySelector(".insertThere").innerHTML = result.innerHTML
|
||
}
|
||
]
|
||
}
|
||
})
|
||
}
|
||
} else {
|
||
// переключение на нормальную стену
|
||
e.currentTarget.setAttribute("data-toogled", "false")
|
||
document.getElementById("underHeader").style.display = "block"
|
||
document.querySelector(".insertThere").style.display = "none"
|
||
document.querySelector(".insertThere").classList.remove("infContainer")
|
||
history.pushState({}, "", e.currentTarget.href.replace("/suggested", ""))
|
||
}
|
||
})
|
||
|
||
// нажатие на пагинатор у постов предложки
|
||
$(document).on("click", "#postz .paginator a", (e) => {
|
||
e.preventDefault()
|
||
|
||
ky(e.currentTarget.href, {
|
||
hooks: {
|
||
beforeRequest: [
|
||
(_request) => {
|
||
if(document.querySelector(".sugglist") != null) {
|
||
document.querySelector(".sugglist").scrollIntoView({behavior: "smooth"})
|
||
} else {
|
||
document.querySelector(".infContainer").scrollIntoView({behavior: "smooth"})
|
||
}
|
||
|
||
setTimeout(() => {document.getElementById("postz").innerHTML = `<img src="/assets/packages/static/openvk/img/loading_mini.gif">`}, 500)
|
||
}
|
||
],
|
||
afterResponse: [
|
||
async (_request, _options, response) => {
|
||
let result = (new DOMParser).parseFromString(await response.text(), "text/html").querySelector(".infContainer")
|
||
result.querySelectorAll(".bsdn").forEach(bsdnInitElement)
|
||
|
||
document.getElementById("postz").innerHTML = result.innerHTML
|
||
history.pushState({}, "", e.currentTarget.href)
|
||
}
|
||
]
|
||
}
|
||
})
|
||
})
|