Добавляет кнопку "Поделиться"
当前为
// ==UserScript==
// @name LZT_Share
// @namespace MeloniuM/LZT
// @version 1.2
// @description Добавляет кнопку "Поделиться"
// @author MeloniuM
// @match https://lolz.live/*
// @match https://zelenka.guru/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const selector = '.threadCounters, .discussionListItem, .controls, .messageMeta .publicControls, .commentControls .publicControls, .threadLastPost';
$("<style/>").text('\
.shareButton .icon:hover {\
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9InJnYigwLCAxODYsIDEyMCkiPjwhLS0hRm9udCBBd2Vzb21lIEZyZWUgNi42LjAgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSBDb3B5cmlnaHQgMjAyNCBGb250aWNvbnMsIEluYy4tLT48cGF0aCBkPSJNMzA3IDM0LjhjLTExLjUgNS4xLTE5IDE2LjYtMTkgMjkuMmwwIDY0LTExMiAwQzc4LjggMTI4IDAgMjA2LjggMCAzMDRDMCA0MTcuMyA4MS41IDQ2Ny45IDEwMC4yIDQ3OC4xYzIuNSAxLjQgNS4zIDEuOSA4LjEgMS45YzEwLjkgMCAxOS43LTguOSAxOS43LTE5LjdjMC03LjUtNC4zLTE0LjQtOS44LTE5LjVDMTA4LjggNDMxLjkgOTYgNDE0LjQgOTYgMzg0YzAtNTMgNDMtOTYgOTYtOTZsOTYgMCAwIDY0YzAgMTIuNiA3LjQgMjQuMSAxOSAyOS4yczI1IDMgMzQuNC01LjRsMTYwLTE0NGM2LjctNi4xIDEwLjYtMTQuNyAxMC42LTIzLjhzLTMuOC0xNy43LTEwLjYtMjMuOGwtMTYwLTE0NGMtOS40LTguNS0yMi45LTEwLjYtMzQuNC01LjR6Ii8+PC9zdmc+")\
}\
.shareButton .icon {\
width: 24px;\
height: 24px;\
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9InJnYigxNDAsIDE0MCwgMTQwKSI+PCEtLSFGb250IEF3ZXNvbWUgRnJlZSA2LjYuMCBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIENvcHlyaWdodCAyMDI0IEZvbnRpY29ucywgSW5jLi0tPjxwYXRoIGQ9Ik0zMDcgMzQuOGMtMTEuNSA1LjEtMTkgMTYuNi0xOSAyOS4ybDAgNjQtMTEyIDBDNzguOCAxMjggMCAyMDYuOCAwIDMwNEMwIDQxNy4zIDgxLjUgNDY3LjkgMTAwLjIgNDc4LjFjMi41IDEuNCA1LjMgMS45IDguMSAxLjljMTAuOSAwIDE5LjctOC45IDE5LjctMTkuN2MwLTcuNS00LjMtMTQuNC05LjgtMTkuNUMxMDguOCA0MzEuOSA5NiA0MTQuNCA5NiAzODRjMC01MyA0My05NiA5Ni05Nmw5NiAwIDAgNjRjMCAxMi42IDcuNCAyNC4xIDE5IDI5LjJzMjUgMyAzNC40LTUuNGwxNjAtMTQ0YzYuNy02LjEgMTAuNi0xNC43IDEwLjYtMjMuOHMtMy44LTE3LjctMTAuNi0yMy44bC0xNjAtMTQ0Yy05LjQtOC41LTIyLjktMTAuNi0zNC40LTUuNHoiLz48L3N2Zz4=")\
}\
.discussionListMainPage .threadCounters .shareButton.counter {\
padding: 0 10px;\
}\
.threadLastPost .shareButton{\
display: flex;\
align-items: center;\
margin-right: 0;\
margin-left: auto;\
z-index: 10;\
}\
.controls .shareButton .icon{\
padding: 0px 5px;\
background-image: none;\
color: rgb(82, 80, 80);\
}\
.controls .shareButton .icon:hover{\
color: rgb(148, 148, 148);\
}\
.controls .shareButton .icon:before{\
content: "\\f064";\
font-size: 16px;\
}\
.conversationItem {\
padding: 8px 15px;\
overflow: hidden;\
cursor: pointer;\
}\
.share-modal {\
background-color: rgb(39, 39, 39);\
border-radius: 10px;\
margin: 0;\
}\
.share-modal .shareToTelegram{\
padding: 18px;\
text-align: center;\
background-color: #53a7d8;\
font-size: 16px;\
}\
.share-modal .shareToTelegram:hover{\
cursor: pointer;\
background: #015c92;\
}\
.share-modal .conversationItem .title {\
display: flex;\
justify-content: space-between;\
}\
').appendTo("head");
XenForo.scriptLoader.loadCssAsync(['conversation'], "css.php?css=__sentinel__&style=30&dir=LTR")
XenForo.addShareButton = function($element) {
if ($element.find('.shareButton').length === 0) {
const $button = $(`<a class="shareButton item control counter Tooltip" title="Поделиться" data-placement="bottom"><span class="icon"></span></a>`);
let href = ''
if ($element.is('.controls')) {
$element = $element.closest('.discussionListItem').first();//костыль для разделов кроме кроме mainpage
}
if ($element.is('.threadCounters')) {//в других разделах
$element = $element.siblings('.controls_prefixes').find('.controls').first();
href = $element.closest('.discussionListItem').find('.threadHeaderTitle a').attr('href');
} else if ($element.is('.discussionListItem:not(:has(.threadCounters))')) {//в других разделах
$element = $element.find('.controls').first();
href = $element.siblings('.main').attr("href")
} else if ($element.is('.messageMeta .publicControls') && !$element.closest('#ProfilePostList').length) {//пост в теме
href = $element.siblings('.privateControls').find('.datePermalink').data('href').replace('permalink', '');
//кажетя проще из id ссылку делать $element.closest('.message').attr('id').replace('-', 's/')
} else if ($element.is('.commentControls .publicControls')) {//коммент
if ($element.closest('#ProfilePostList').length) { //в профиле
href = $element.closest('.comment').attr('id').replace('profile-post-comment-', 'profile-posts/comments/');
} else {
href = $element.siblings('.datePermalink').attr("href");//в теме
}
} else if ($element.is('.threadLastPost')) {//коммент на главной странице
href = $element.find('.threadLastPost--date').attr("href");
} else if ($element.closest('#ProfilePostList').length) {//сообщение в профиле
href = $element.closest('#ProfilePostList').find('.messageSimple .post-header .messageInfo .item.muted').attr("href");
}
if (!href) {
return;
}
$button.attr("data-href", href);
// Можно добавить обработчик клика для кнопки, если это нужно
$button.on('click', function(e) {
e.preventDefault();
// Логика, которая должна выполняться при клике на кнопку
XenForo.ajax('/conversations/', {}, function(ajaxData) {
let $ShareList = $(ajaxData.templateHtml);
let $modal = $(`<div class=\"sectionMain\"><h2 class=\"heading h1\">Поделиться</h2><div class="shareToTelegram">Отправить в тг</div><ul class="ShareList"></ul></div>`);
$modal.find('.ShareList').append($ShareList);
$modal.find('.shareToTelegram').on('click', (e) => {
window.open(`tg://msg_url?url=${encodeURIComponent(`${location.origin}/${$button.data('href')}`)}`, '_blank').focus();
})
let conversationItem = $modal.find('.conversationItem')
conversationItem.on('click', (e) => {
let $target = $(e.currentTarget);
XenForo.ajax(`${$target.data('href')}/insert-reply`, {message_html: `[unfurl]${location.origin}/${$button.data('href')}[/unfurl]`});
$button.data("overlay").close();
})
new XenForo.ExtLoader(ajaxData, function() {
if ($button.data("overlay")) {
$button.data("overlay").getOverlay().children('.sectionMain').replaceWith($modal)
$button.data("overlay").load();
return;
}
XenForo.createOverlay(null, $modal, {
className: "share-modal",
trigger: $button,
severalModals: true
});
$button.data("overlay").load();
});
});
});
// Добавляем кнопку в нужное место внутри элемента
$element.append($button).xfActivate();
}
};
XenForo.register(selector, 'XenForo.addShareButton');
// Чё оно сразу не активируется?
$(selector).each(function(index) {
XenForo.create('XenForo.addShareButton', $(this));
});
})();