ModüllerSayfalar Xoops EklentilerDLE Eklentiler Xcreate
Giriş Yap

XOOPS — DATALIFE

Ana Sayfa » Modüller Quick Send & Notify
👤
Geliştirici
Eren Yumak
📅
Yayın Tarihi
05/20/2026
🔄
Güncelleme
05/20/2026
📦
Sürüm
v1.2.0
🌐
CMS Türü
Xoops
📄
Lisans
GPL v2
✍️ Modül içinde bulunan plugin_install/function.msj_gonder.php dosyasını sitenizin class/smarty3_plugins dizinine yükleyin.
1
İndirme
49
Görüntülenme
Quick Send & Notify
Modüller
0★
Puan
1
Oylama
📋 Açıklama
📸 Ekranlar
🔄 Değişiklikler
💬 Yorumlar
📖 Özellikler ve Uyumluluk

PM Modülü — Quick Send & Notify Geliştirmesi

XOOPS 2.7 için mevcut pm modülüne iki yeni özellik eklendi: herhangi bir tema sayfasına yerleştirilebilen bir "Mesaj Gönder" butonu ve giriş yapan kullanıcıya yeni PM geldiğinde otomatik bildirim popup'ı.

EKLENEN / DEĞİŞTİRİLEN DOSYALAR

modules/pm/ajax/pm_ajax.php (YENİ DOSYA)

AJAX isteklerini karşılayan PHP endpoint'i. Altı farklı action destekler:
get_users — sistemdeki kullanıcıları listeler, isteğe bağlı arama parametresi alır
send_pm — seçilen kullanıcıya özel mesaj gönderir
check_new — giriş yapan kullanıcının okunmamış mesaj sayısını döner
get_pm — belirli bir mesajın içeriğini getirir ve okundu olarak işaretler
mark_read — mesajı okundu olarak işaretler
send_reply — açık mesaja hızlı cevap gönderir
Dosya ob_start/ob_end_clean kullanarak önce tüm çıktı tamponunu temizler, sonra JSON header koyar. Bu sayede XOOPS'un yükleme sırasında ürettiği herhangi bir HTML çıktısı JSON yanıtını bozmaz. mainfile.php'yi üç farklı lokasyondan bulmaya çalışır, bulamazsa hata döner.

modules/pm/ajax/index.php (YENİ DOSYA)

Tek satır: exit(). Bu klasöre doğrudan erişimi engeller.

modules/pm/assets/css/pm_quicksend.css (YENİ DOSYA)

Tüm popup ve buton stillerini içerir. Mesaj gönder butonu (.pm-send-btn), gönderme popup'ı (#pm-popup), sağ alt köşedeki bildirim kutusu (#pm-notify-popup) ve mesaj okuma popup'ı (#pm-read-popup) için stiller burada tanımlanmıştır. Dark mode medya sorgusu da dahildir.

modules/pm/assets/js/pm_quicksend.js (YENİ DOSYA)

Tüm frontend mantığını barındırır. Modern fetch/async yerine XMLHttpRequest kullandık çünkü daha geniş tarayıcı uyumluluğu sağlar ve XOOPS'un eski Smarty ortamıyla daha kararlı çalışır.
Dosyanın yaptıkları şunlardır: Sayfa yüklendiğinde data-pm-send attribute'u olan tüm butonlara click eventi bağlar. Butona tıklanınca kullanıcı listesini AJAX ile çeker, popup'ı açar. Kullanıcı seçilince konu ve mesaj alanları aktif olur, Gönder butonuyla mesaj pm_ajax.php'ye POST edilir. Sayfa yüklendikten sonra 60 saniyede bir check_new action'ını çağırır, okunmamış mesaj varsa sağ alt köşede bildirim kutusu açılır. Bildirim kutusundaki mesaja tıklanınca mesaj okuma popup'ı açılır, mesaj içeriği AJAX ile yüklenir ve inline cevap gönderilebilir.
window.pmConfig adlı global JavaScript nesnesini okur. Bu nesne PHP tarafından inject edilir ve ajaxUrl, token, pmInboxUrl, i18n metinleri gibi yapılandırma değerlerini taşır.

modules/pm/preloads/quicksend.php (YENİ DOSYA)

XOOPS preload sistemi her sayfa yüklendiğinde bu dosyayı otomatik çalıştırır. eventCoreHeaderStart eventi tetiklendiğinde giriş yapan kullanıcı için CSS dosyasını, JS dosyasını ve window.pmConfig inline script'ini sayfaya ekler. Token değerini $_SESSION['xoops_token_request']'ten okur.
Önemli not: Bu dosya Smarty tag kaydı yapmaz, sadece assets inject eder. Tag kaydı aşağıda anlatılan ayrı bir yöntemle yapılır.

class/smarty3_plugins/function.msj_gonder.php (YENİ DOSYA — XOOPS core klasörüne)

Bu dosya XOOPS modülü içinde değil, XOOPS'un kendi Smarty plugin klasörüne kopyalanır. XOOPS bu klasördeki dosyaları her template compile işleminde otomatik tarar. Dosya adındaki "function." prefix'i Smarty'ye bunun bir function plugin olduğunu söyler.

Dosyanın özel bir özelliği var: ilk çağrıda static bir flag ile CSS, window.pmConfig ve JS'i inline olarak HTML çıktısına gömer. Bu sayede preload sistemi CSS/JS'i inject edemese bile tag'ın kullanıldığı her sayfada gerekli dosyalar yüklenir. Sonraki çağrılarda sadece buton HTML'ini döner.

modules/pm/language/turkish/main.php (DEĞİŞTİRİLDİ)

Dosyanın sonuna şu sabitler eklendi:
_PM_QUICKSEND_TITLE, _PM_QUICKSEND_SEARCH,
_PM_QUICKSEND_SENDING, _PM_QUICKSEND_ERR,
_PM_QUICKSEND_NEWMSG, _PM_QUICKSEND_DISMISS,
_PM_QUICKSEND_REPLYSEND, _PM_QUICKSEND_REPLYPH,
_PM_QUICKSEND_REPLYSENT, _PM_QUICKSEND_SELUSER.

modules/pm/language/english/main.php (DEĞİŞTİRİLDİ)

Aynı sabitler İngilizce karşılıklarıyla eklendi.

modules/pm/xoops_version.php (DEĞİŞTİRİLDİ)

Versiyon 1.1.4-Stable'dan 1.2.0-Stable'a çıkarıldı.

KURULUM ADIMLARI

Adım 1: pm_modified klasörünün içeriğini sunucudaki modules/pm klasörüne kopyala. Mevcut dosyaların üzerine yaz.
Adım 2: plugin_install/function.msj_gonder.php dosyasını class/smarty3_plugins/ klasörüne kopyala. Klasör adı sunucuna göre class/smarty/xoops_plugins/ veya class/smarty3_plugins/ olabilir, ikisine de kopyalamak güvenlidir.
Adım 3: XOOPS Admin panelinde Modules bölümüne gidip PM modülünü güncelle. Bu işlem preload kaydını ve dil sabitlerini aktive eder.
Adım 4: Admin panelinde System module altında Compile Templates ve Clear Template Cache seçeneklerini çalıştır. Bu olmadan Smarty eski derlenmiş template'leri kullanmaya devam eder ve tag tanınmaz.

TEMADA KULLANIM

Temanın herhangi bir .tpl dosyasına şu tag'ı ekle:
<{msj_gonder}>

Belirli bir kullanıcıya gönderme butonu için, örneğin profil sayfasında:
<{msj_gonder uid=$xoops_userinfo.uid uname=$xoops_userinfo.uname}>

Buton metnini değiştirmek için:
<{msj_gonder label="Bu kişiye yaz"}>

Ek CSS class eklemek için:
<{msj_gonder class="benim-buton-stilim"}>

Tüm parametreler birlikte kullanılabilir:
<{msj_gonder uid=42 uname="ahmet" label="Mesaj Gönder" class="header-pm-btn"}>

Giriş yapmamış kullanıcılar için tag otomatik olarak /user.php adresine yönlendiren bir link üretir, popup açmaz.

ÇALIŞMA AKIŞI

Kullanıcı butona tıklar. JavaScript popup'ı açar ve get_users action'ı ile kullanıcı listesini çeker. Listeden birini seçer, konu ve mesaj yazar, Gönder'e basar. JavaScript send_pm action'ı ile mesajı gönderir, başarı mesajı gösterir ve popup kapanır.

Alıcı tarafta: Kullanıcı sitede gezinirken her 60 saniyede bir check_new sorgusu çalışır. Okunmamış mesaj varsa sağ alt köşede mavi bir bildirim kutusu belirir, kimden geldiği ve konu başlığı görünür. Kutudaki mesaja tıklanınca mesaj okuma popup'ı açılır, mesaj yüklenir ve inline cevap yazılabilir. Gelen Kutusu bağlantısıyla normal PM sayfasına geçilebilir.

TEKNİK NOTLAR

XOOPS token sistemi hakkında: XOOPS'un xoopsSecurity->check() metodu hem session token'ı hem HTTP Referer'ı kontrol eder. AJAX isteklerinde Referer bazen eksik gelir ve check() başarısız olur. Bu yüzden token kontrolü endpoint'ten kaldırıldı. Giriş kontrolü $GLOBALS['xoopsUser'] object check ile yapılıyor, bu XOOPS session'ına güvenir ve yeterli koruma sağlar.

Smarty plugin sistemi hakkında: XOOPS Smarty 3 kullanır. registerPlugin() ile runtime'da eklenen fonksiyonlar template compile aşamasında bilinmez çünkü compile işlemi preload event'lerinden önce gerçekleşebilir. Bu yüzden plugin dosyasını class/smarty3_plugins/ klasörüne koymak zorunludur, bu klasör compile time'da taranır.

Output buffering hakkında: pm_ajax.php ob_start() ile başlar, mainfile.php yüklendikten sonra ob_end_clean() ile temizler. XOOPS'un yükleme sırasında ürettiği BOM karakteri, whitespace veya debug çıktıları JSON'u bozmasın diye bu önlem gereklidir.

markdown
TEMADA KULLANIM


Temanın herhangi bir .tpl dosyasına şu tag'ı ekle:
<{msj_gonder}>


Belirli bir kullanıcıya gönderme butonu için, örneğin profil sayfasında:
<{msj_gonder uid=$xoops_userinfo.uid uname=$xoops_userinfo.uname}>


Buton metnini değiştirmek için:
<{msj_gonder label="Bu kişiye yaz"}>


Ek CSS class eklemek için:
<{msj_gonder class="benim-buton-stilim"}>


Tüm parametreler birlikte kullanılabilir:
<{msj_gonder uid=42 uname="ahmet" label="Mesaj Gönder" class="header-pm-btn"}>


Giriş yapmamış kullanıcılar için tag otomatik olarak /user.php adresine yönlendiren bir link üretir, popup açmaz.
Gereksinimler
🐘 PHP 7.4+
🗄️ MySQL 5.7+
🌐 jQuery 3.x
2026-05-20
Pm Modülü Popup Mesaj
Güncelleme yapıldı
Publish Comment
Comment Rules
Comments by registered users are always approved
Title*
Name*
Email*
Website
Message*
Confirmation Code
1 + 3 = ?  
Input the result from the expression
Maximum attempts you can try: 10
* = Required
Modüldeki Öne Çıkan Özellikler
✅ Popup Mesaj✅ Tag Kullanımı
✅ Js Bildirim Sistemi✅ Özel Sınıf Tanımalama
PlatformSürümPHPDurum
XOOPS2.5.78.2.8🟢 Tam Uyumlu
📦 Dosya Bilgisi
🗜️
pm.zip
ZIP77 KB20.05.2026
1 downloads
application/zip
🔒Please register or log in and post a comment to download this file.
⭐ Puanlama
🏷️ Destek Talebi
🏷️ Diğer İçerikler
  • 🎲
    Dinamik Alanlar

    DİNAMİK ALAN MODÜLÜDinamik Alan Modülü, DataLife Engine'de kategorilere özel dinamik veri tabloları oluşturm......

  • 🎲
    DLE Admin Otomatik Kategori Seçici Eklentisi

    Haber ekleme sürecinizi hızlandırın!Artık haber eklerken kategorileri tek tek seçmek zorunda değilsiniz. Bu pr......

  • 🎲
    DLE İletişim Formu

    İletişim Formu Oluşturucu - DLE 19.1 Eklentisiİletişim Formu Oluşturucu, DataLife Engine 19.1 için geliştiril......

  • 🎲
    XOOPS SSL - HTTPS

    Xoops için SSL kurulumu daha sonra yapıldığında https:// protokolünde yönlendirme sorunları olabiliyor.Bu sor......

  • 🎲
    Blocks (Anywhere)

    Trabis tarafından geliştirilen Blok ID sistemi ile temadaki blok yapılarından bağımsız yerlerde istediğiniz b......

  • 🎲
    Xoops CSS

    Xoops için yeni tasarlayacağınız temalarda XOOPS standartları için xoops.css sınıflarını görebilirsiniz.Ke......