Talep Görünüm Kancaları

1.6k görüntülenme Markdown

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

filterticket.departments
ClientTickets bağla geçer

Müşteriye gösterilen departman listesi kurulduktan sonra çalışır. Bir departmanı gizlemek, oraya talep açılmasını da engeller.

Parametreler 2
$departmentsarraybağlaGörünen departmanlar.
$langstringAktif dil.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
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

filterticket.priorities
ClientTickets seçili bayrağı dâhil

Müşterinin seçebileceği öncelikler hazırlandıktan sonra çalışır.

Parametreler 1
$prioritiesarraybağlaSeçenekler; her biri değeri, etiketi ve seçili olup olmadığını taşır. Seçili olanı listeden çıkarırsanız formda hiçbir öncelik işaretli kalmaz.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
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

filterticket.related_services
ClientTickets gruplu yapı

Talep açarken gösterilen hizmet seçicisi hazırlandıktan sonra çalışır.

Parametreler 2
$serviceGroupsarraybağlaGruplanmış seçici verisi; her grubun etiketi ve öğeleri vardır. Yapıyı düzleştirmeyin: şablon grup katmanını bekler.
$uidintTalebi açacak aktif hesap. Giriş kimliği değildir: alt kullanıcı başka bir hesabın hizmetlerini listeliyor olabilir.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
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

filterticket.thread
ClientTickets en yeni ilk

Talebin yanıt akışı ekrana gitmeden önce çalışır.

Parametreler 2
$threadarraybağlaYanıt satırları, en yeni ilk sırayla. Her satır yazarını, tarihini ve personel olup olmadığını taşır.
$ctxarrayBağlam: talep kimliği, giriş kimliği ve misafir olup olmadığı. Misafirde giriş kimliği sıfırdır.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
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

filterticket.detail_data
AdminTickets sayfanın tüm verisi

Talep detay sayfası hazırlandıktan sonra çalışır. Elinizdeki, şablona geçecek verinin tamamıdır.

Parametreler 2
$dataarraybağlaSayfanın tüm verisi. Var olan anahtarları ezmemeye dikkat edin: burada kaybolan bir değer sayfada boş bir alan bırakır.
$ticketarrayAktif talep.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
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

filterticket.list_query
AdminTickets sorgu kurucusu

Talep listesi sorgusu çalıştırılmadan önce çalışır. Elinizdeki hazır satırlar değil, sorgunun kendisidir.

Parametreler 3
$stmtobjectbağlaSorgu kurucusu; koşul zincirleyebilirsiniz.
$filtersarrayÇözümlenmiş filtreler: durumu, departmanı, müşterisi, ataması ve önceliği.
$rCountboolBu bir sayım sorgusu mu. ? Kanca aynı listeleme için iki kez çalışır: bir kez sayım, bir kez veri. Koşulu yalnız birine eklerseniz sayfa numaraları ile satırlar tutmaz.
Dönüş 1
voidDönüş yoksayılır; koşulu kurucuya zincirlersiniz.
Dinleyici
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

filterticket.list_rows
ClientTickets sayfa başına

Müşterinin talep listesi ekrana gitmeden önce çalışır.

Parametreler 2
$rowsarraybağlaO sayfanın satırları: numarası, konusu, durumu, puanı ve departmanı. Yalnız görüntülenen sayfa gelir; listenin tamamı değil.
$uidintAktif hesap; satırlar bu hesaba göre kapsanmıştır.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
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

filterticket.bulk_action_ids
AdminTickets yalnız daraltma

Toplu bir işlem uygulanmadan önce çalışır. Bazı talepleri kapsam dışında bırakmanın yolu budur.

Parametreler 2
$idsarraybağlaİşlenecek talepler. Bu liste daraltmak içindir: eleman çıkarın. Eklemek, yöneticinin seçmediği bir talebi kapatır ya da siler.
$actionstringUygulanan işlem: kapatma, silme ve engelli varyantları.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
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

filterticket.access_groups
ClientTickets bağla geçer

Talep açarken gösterilen erişim grupları hazırlandıktan sonra çalışır.

Parametreler 2
$groupsarraybağlaGörünen gruplar; kimliği, adı ve simgesi.
$langstringSayfanın aktif dili.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
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

Liste sorgusu aynı listeleme için iki kez çalışır

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.

Toplu işlem listesi daraltmak içindir

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.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.