Talep Görünüm Kancaları
Ekrandaki listeler, konuşma ve seçicilerin dokuz kancası.
Genel Bakış
Ekranda görünen her şey bu kancalardan geçer: listeler, konuşma akışı, departman ve hizmet seçicileri, detay sayfasının verisi.
Biri diğerlerinden farklı çalışır: liste sorgusu size hazır satırları değil sorgunun kendisini verir, ve aynı listeleme için iki kez çağrılır.
Referans
Departman listesini değiştirme
Müşteriye gösterilen departman listesi kurulduktan sonra çalışır. Bir departmanı gizlemek, oraya talep açılmasını da engeller.
Hook::add('filter:ticket.departments', 10, function (&$departments, $lang) {
// Gizlemek, oraya talep acilmasini da engeller.
$departments = array_values(array_filter($departments,
fn ($d) => Acme::departmentOpen((int) ($d['id'] ?? 0))));
});Öncelik seçeneklerini değiştirme
Müşterinin seçebileceği öncelikler hazırlandıktan sonra çalışır.
Hook::add('filter:ticket.priorities', 10, function (&$priorities) {
// Secili olani cikarirsaniz formda hicbir sey isaretli kalmaz.
$priorities = array_values(array_filter($priorities,
fn ($p) => (int) ($p['value'] ?? 0) < 4));
});Hizmet seçicisini değiştirme
Talep açarken gösterilen hizmet seçicisi hazırlandıktan sonra çalışır.
Hook::add('filter:ticket.related_services', 10, function (&$serviceGroups, $uid) {
// Yapiyi duzlestirmeyin: sablon grup katmanini bekler.
$serviceGroups[] = ['label' => 'Acme', 'items' => Acme::servicesFor($uid)];
});Konuşma akışını değiştirme
Talebin yanıt akışı ekrana gitmeden önce çalışır.
Hook::add('filter:ticket.thread', 10, function (&$thread, $ctx) {
// Siralamada en yeni ilk gelir.
foreach ($thread as $i => $row)
if ($row['is_staff'] ?? false) $thread[$i]['author'] = Acme::displayName($row);
});Detay sayfası verisini değiştirme
Talep detay sayfası hazırlandıktan sonra çalışır. Elinizdeki, şablona geçecek verinin tamamıdır.
Hook::add('filter:ticket.detail_data', 10, function (&$data, $ticket) {
// Var olan anahtarlari ezmeyin.
$data['acme_risk'] = Acme::riskScore((int) ($ticket['user_id'] ?? 0));
});Liste sorgusunu daraltma
Talep listesi sorgusu çalıştırılmadan önce çalışır. Elinizdeki hazır satırlar değil, sorgunun kendisidir.
Hook::add('filter:ticket.list_query', 10, function (&$stmt, $filters, $rCount) {
// Kanca IKI KEZ calisir: sayim ve veri. Kosulu ikisine de ekleyin.
$stmt->where('t.did', '!=', Acme::INTERNAL_DEPT);
});Liste satırlarını değiştirme
Müşterinin talep listesi ekrana gitmeden önce çalışır.
Hook::add('filter:ticket.list_rows', 10, function (&$rows, $uid) {
// Yalniz goruntulenen sayfa gelir.
foreach ($rows as $i => $r) $rows[$i]['subject'] = Acme::shorten($r['subject'] ?? '');
});Toplu işlem kapsamını daraltma
Toplu bir işlem uygulanmadan önce çalışır. Bazı talepleri kapsam dışında bırakmanın yolu budur.
Hook::add('filter:ticket.bulk_action_ids', 10, function (&$ids, $action) {
// DARALTMAK icindir: eklemeyin.
$ids = array_values(array_filter($ids, fn ($id) => !Acme::underLegalHold((int) $id)));
});Erişim gruplarını değiştirme
Talep açarken gösterilen erişim grupları hazırlandıktan sonra çalışır.
Hook::add('filter:ticket.access_groups', 10, function (&$groups, $lang) {
$groups = array_values(array_filter($groups,
fn ($g) => Acme::groupVisible((int) ($g['id'] ?? 0))));
});Tuzaklar
Kanca bir kez sayım, bir kez veri sorgusu için çağrılır. Koşulunuzu yalnız birine eklerseniz sayfa numaraları gerçek satır sayısıyla tutmaz: kullanıcı boş sayfalar görür. Sayım bayrağına bakıp ayrım yapmayacaksanız koşulu ikisine de ekleyin.
Bu filtreden eleman çıkarılır. Eklemek, yöneticinin seçmediği bir talebi kapatır ya da siler; ekranda onay verdiği liste ile gerçekte işlenen liste ayrışır.
İlgili Makaleler
- Destek Talebi Kancaları
- Müşteri Hesabı Kancaları
- Kancalar Nasıl Çalışır
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.