המלצה | סקריפט לטמפרמונקי להוספת כפתור צ'אט ליד פוסט!
-
אחרי הרבה עבודה...
// ==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 , @מחנה-ידידים יצר את הסקריפט, לא אני.
-
@אברהם-גלסר תמיכה באוצריא גם לא תזיק (או שאתה רוצה שאעשה לבד).
@צדיק-וטוב-לו-0 @אברהם-גלסר
מחילה לא נכנסתי קצת זמן..
זו לא בעיה להוסיף תמיכה באוצריא - פשוט להוסיף match בסקריפט.
קישור לתגובה - אנסה.(אם יש כמה - לא יודע, אולי את ההכי חדש?)
בדיוק מה שנפתח בלחצן בדף הפרופיל.
-
@צדיק-וטוב-לו-0 @אברהם-גלסר
מחילה לא נכנסתי קצת זמן..
זו לא בעיה להוסיף תמיכה באוצריא - פשוט להוסיף match בסקריפט.
קישור לתגובה - אנסה.(אם יש כמה - לא יודע, אולי את ההכי חדש?)
בדיוק מה שנפתח בלחצן בדף הפרופיל.
@מחנה-ידידים אולי תוכל לעשות כזה סקריפט גם לפורום בני ברק,
זה יהיה מאוד שימושי. -
@מחנה-ידידים אולי תוכל לעשות כזה סקריפט גם לפורום בני ברק,
זה יהיה מאוד שימושי.@המתכנת-התותח זה לא בעיה:
// ==UserScript== // @name NodeBB Chat Button Injector // @namespace http://tampermonkey.net/ // @version 1.1 // @description הזרקת לחצן צ'אט מהיר ליד כל פוסט בפורומי NodeBB // @author אללוף // @match https://mitmachim.top/* // @match https://bnebrak.com/* // @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 @אברהם-גלסר
מחילה לא נכנסתי קצת זמן..
זו לא בעיה להוסיף תמיכה באוצריא - פשוט להוסיף match בסקריפט.
קישור לתגובה - אנסה.(אם יש כמה - לא יודע, אולי את ההכי חדש?)
בדיוק מה שנפתח בלחצן בדף הפרופיל.
@מחנה-ידידים אתה יכול לפרוז את זה בגיט, ואז אפשר להתקין ממך בקלות, ואתה יכול לעדכן את הסקריפט.
ג'מיני ממש שמח להסביר לי את זה.
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות