דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • בהיר
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • כהה
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. אזור המערכת
  3. באגים/הצעות ייעול
  4. המלצה | סקריפט לטמפרמונקי להוספת כפתור צ'אט ליד פוסט!

המלצה | סקריפט לטמפרמונקי להוספת כפתור צ'אט ליד פוסט!

מתוזמן נעוץ נעול הועבר באגים/הצעות ייעול
5 פוסטים 3 כותבים 54 צפיות 5 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מחנה ידידיםמ מנותק
    מחנה ידידיםמ מנותק
    מחנה ידידים
    כתב נערך לאחרונה על ידי מחנה ידידים
    #1

    אחרי הרבה עבודה...

    // ==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();
    })();
    

    אשמח אם תעדכנו אם עובד לכם!

    דוגמה:
    1ac0d8e7-a20d-4584-a023-1c5b2b5b6453-image.jpeg

    @לאצי @ע-ה-דכו-ע

    צדיק וטוב לו 0צ תגובה 1 תגובה אחרונה
    5
    • מחנה ידידיםמ מחנה ידידים

      אחרי הרבה עבודה...

      // ==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();
      })();
      

      אשמח אם תעדכנו אם עובד לכם!

      דוגמה:
      1ac0d8e7-a20d-4584-a023-1c5b2b5b6453-image.jpeg

      @לאצי @ע-ה-דכו-ע

      צדיק וטוב לו 0צ מנותק
      צדיק וטוב לו 0צ מנותק
      צדיק וטוב לו 0
      כתב נערך לאחרונה על ידי
      #2

      @מחנה-ידידים באר פרט.
      זה פותח צ'אט עם כותב הפוסט?
      במקרה שכבר יש צאט ישן איתו, זה פותח חדש, או שזה פותח את הישן?
      זה מביא אוטומטי קישור לתגובה דרכה נפחח הצאט?

      אברהם גלסרא תגובה 1 תגובה אחרונה
      0
      • צדיק וטוב לו 0צ צדיק וטוב לו 0

        @מחנה-ידידים באר פרט.
        זה פותח צ'אט עם כותב הפוסט?
        במקרה שכבר יש צאט ישן איתו, זה פותח חדש, או שזה פותח את הישן?
        זה מביא אוטומטי קישור לתגובה דרכה נפחח הצאט?

        אברהם גלסרא מנותק
        אברהם גלסרא מנותק
        אברהם גלסר
        מדריכים
        כתב נערך לאחרונה על ידי אברהם גלסר
        #3

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

        צדיק וטוב לו 0צ תגובה 1 תגובה אחרונה
        1
        • אברהם גלסרא אברהם גלסר

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

          צדיק וטוב לו 0צ מנותק
          צדיק וטוב לו 0צ מנותק
          צדיק וטוב לו 0
          כתב נערך לאחרונה על ידי
          #4

          @אברהם-גלסר תמיכה באוצריא גם לא תזיק (או שאתה רוצה שאעשה לבד).

          אברהם גלסרא תגובה 1 תגובה אחרונה
          0
          • צדיק וטוב לו 0צ צדיק וטוב לו 0

            @אברהם-גלסר תמיכה באוצריא גם לא תזיק (או שאתה רוצה שאעשה לבד).

            אברהם גלסרא מנותק
            אברהם גלסרא מנותק
            אברהם גלסר
            מדריכים
            כתב נערך לאחרונה על ידי
            #5

            @צדיק-וטוב-לו-0 , @מחנה-ידידים יצר את הסקריפט, לא אני.

            תגובה 1 תגובה אחרונה
            1

            שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

            נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

            בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

            הרשמה התחברות

            • התחברות

            • אין לך חשבון עדיין? הרשמה

            • התחברו או הירשמו כדי לחפש.
            • פוסט ראשון
              פוסט אחרון
            0
            • חוקי הפורום
            • פופולרי
            • לא נפתר
            • משתמשים
            • חיפוש גוגל בפורום
            • צור קשר