המלצה | סקריפט לטמפרמונקי להוספת כפתור צ'אט ליד פוסט!
-
אחרי הרבה עבודה...
// ==UserScript== // @name NodeBB Chat Button Injector // @namespace http://tampermonkey.net/ // @version 1.1 // @description הזרקת לחצן צ'אט מהיר ליד כל פוסט בפורומי NodeBB // @author אללוף // @match https://mitmachim.top/* // @grant unsafeWindow // @run-at document-end // ==/UserScript== (function() { 'use strict'; // פונקציה להזרקת הכפתור לפוסטים שעוד לא טופלו function injectChatButtons() { // בדיקה שפתח ה-API של הפורום זמין if (!unsafeWindow.app || !unsafeWindow.app.user) return; const currentUid = unsafeWindow.app.user.uid; // שליפת כל הפוסטים בעמוד שעוד לא קיבלו כפתור const posts = document.querySelectorAll('[component="post"]:not(.chat-btn-added)'); posts.forEach(post => { post.classList.add('chat-btn-added'); const postUid = post.getAttribute('data-uid'); // הגנה: שלא יוצג כפתור צ'אט של המשתמש עם עצמו, או אם אין uid תקין if (!postUid || Array.of(0, currentUid).includes(Number(postUid))) return; // איתור מיקום הלחצנים של הפוסט (תומך ברוב ערכות הנושא של NodeBB) const actionsContainer = post.querySelector('[component="post/actions"]') || post.querySelector('.post-tools'); if (actionsContainer) { const chatBtn = document.createElement('a'); chatBtn.className = 'btn btn-xs btn-link chat-quick-btn'; chatBtn.innerHTML = '<i class="fa fa-fw fa-comment-dots"></i> צ\'אט'; chatBtn.style.marginLeft = '8px'; chatBtn.style.cursor = 'pointer'; // אירוע לחיצה לפתיחת הצ'אט המובנה של המערכת chatBtn.addEventListener('click', async function (e) { e.preventDefault(); e.stopPropagation(); const userLink = post.querySelector('a[data-uid]'); if (!userLink) return; // ניסיון לפתוח את ה-popover המקורי userLink.dispatchEvent(new PointerEvent('pointerenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseover', { bubbles: true })); const observer = new MutationObserver(() => { const popoverId = userLink.getAttribute('aria-describedby'); if (!popoverId) { return; } const popover = document.getElementById(popoverId); if (!popover) { return; } const btn = popover.querySelector('[component="account/new-chat"]') || popover.querySelector('[component="account/chat"]') || popover.querySelector('a[href*="/chats"]'); if (btn) { observer.disconnect(); btn.click(); } }); observer.observe(document.body, { childList: true, subtree: true }); setTimeout(() => observer.disconnect(), 5000); }); // הזרקה לתחילת או סוף רשימת הלחצנים לפי הנוחיות actionsContainer.appendChild(chatBtn); } }); } // האזנה לשינויים ב-DOM לצורך תמיכה בגלילה אינסופית ומעברי עמודים דינמיים const observer = new MutationObserver(() => { injectChatButtons(); }); observer.observe(document.body, { childList: true, subtree: true }); // הרצה ראשונית בטעינת העמוד injectChatButtons(); })();אשמח אם תעדכנו אם עובד לכם!
דוגמה:

-
אחרי הרבה עבודה...
// ==UserScript== // @name NodeBB Chat Button Injector // @namespace http://tampermonkey.net/ // @version 1.1 // @description הזרקת לחצן צ'אט מהיר ליד כל פוסט בפורומי NodeBB // @author אללוף // @match https://mitmachim.top/* // @grant unsafeWindow // @run-at document-end // ==/UserScript== (function() { 'use strict'; // פונקציה להזרקת הכפתור לפוסטים שעוד לא טופלו function injectChatButtons() { // בדיקה שפתח ה-API של הפורום זמין if (!unsafeWindow.app || !unsafeWindow.app.user) return; const currentUid = unsafeWindow.app.user.uid; // שליפת כל הפוסטים בעמוד שעוד לא קיבלו כפתור const posts = document.querySelectorAll('[component="post"]:not(.chat-btn-added)'); posts.forEach(post => { post.classList.add('chat-btn-added'); const postUid = post.getAttribute('data-uid'); // הגנה: שלא יוצג כפתור צ'אט של המשתמש עם עצמו, או אם אין uid תקין if (!postUid || Array.of(0, currentUid).includes(Number(postUid))) return; // איתור מיקום הלחצנים של הפוסט (תומך ברוב ערכות הנושא של NodeBB) const actionsContainer = post.querySelector('[component="post/actions"]') || post.querySelector('.post-tools'); if (actionsContainer) { const chatBtn = document.createElement('a'); chatBtn.className = 'btn btn-xs btn-link chat-quick-btn'; chatBtn.innerHTML = '<i class="fa fa-fw fa-comment-dots"></i> צ\'אט'; chatBtn.style.marginLeft = '8px'; chatBtn.style.cursor = 'pointer'; // אירוע לחיצה לפתיחת הצ'אט המובנה של המערכת chatBtn.addEventListener('click', async function (e) { e.preventDefault(); e.stopPropagation(); const userLink = post.querySelector('a[data-uid]'); if (!userLink) return; // ניסיון לפתוח את ה-popover המקורי userLink.dispatchEvent(new PointerEvent('pointerenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseover', { bubbles: true })); const observer = new MutationObserver(() => { const popoverId = userLink.getAttribute('aria-describedby'); if (!popoverId) { return; } const popover = document.getElementById(popoverId); if (!popover) { return; } const btn = popover.querySelector('[component="account/new-chat"]') || popover.querySelector('[component="account/chat"]') || popover.querySelector('a[href*="/chats"]'); if (btn) { observer.disconnect(); btn.click(); } }); observer.observe(document.body, { childList: true, subtree: true }); setTimeout(() => observer.disconnect(), 5000); }); // הזרקה לתחילת או סוף רשימת הלחצנים לפי הנוחיות actionsContainer.appendChild(chatBtn); } }); } // האזנה לשינויים ב-DOM לצורך תמיכה בגלילה אינסופית ומעברי עמודים דינמיים const observer = new MutationObserver(() => { injectChatButtons(); }); observer.observe(document.body, { childList: true, subtree: true }); // הרצה ראשונית בטעינת העמוד injectChatButtons(); })();אשמח אם תעדכנו אם עובד לכם!
דוגמה:

@מחנה-ידידים באר פרט.
זה פותח צ'אט עם כותב הפוסט?
במקרה שכבר יש צאט ישן איתו, זה פותח חדש, או שזה פותח את הישן?
זה מביא אוטומטי קישור לתגובה דרכה נפחח הצאט? -
@מחנה-ידידים באר פרט.
זה פותח צ'אט עם כותב הפוסט?
במקרה שכבר יש צאט ישן איתו, זה פותח חדש, או שזה פותח את הישן?
זה מביא אוטומטי קישור לתגובה דרכה נפחח הצאט?@צדיק-וטוב-לו-0 אם יש כבר חדר צ'אט עם המשתמש זה פותח אותו (אם יש כמה - לא יודע, אולי את ההכי חדש?).
אם אין - חדר צ'אט חדש רגיל.
אין קישור לתגובה, @מחנה-ידידים ממליץ להוסיף. -
@צדיק-וטוב-לו-0 אם יש כבר חדר צ'אט עם המשתמש זה פותח אותו (אם יש כמה - לא יודע, אולי את ההכי חדש?).
אם אין - חדר צ'אט חדש רגיל.
אין קישור לתגובה, @מחנה-ידידים ממליץ להוסיף.@אברהם-גלסר תמיכה באוצריא גם לא תזיק (או שאתה רוצה שאעשה לבד).
-
@אברהם-גלסר תמיכה באוצריא גם לא תזיק (או שאתה רוצה שאעשה לבד).
@צדיק-וטוב-לו-0 , @מחנה-ידידים יצר את הסקריפט, לא אני.
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות