Sejak versi 2018, PHPMaker memperkenalkan sebuah server event baru yang bernama ListOptions_Rendering. Sesuai dengan namanya, server event ini berfungsi untuk menjalankan kode saat Options di setiap baris atau row di tabel halaman List sedang di-Render atau Rendering.
Hari ini, salah satu aplikasi web yang saya buat dengan PHPMaker memiliki business-logic untuk menyembunyikan elemen Tab pertama ketika bagian Preview Row ditampilkan, dengan cara mengklik tombol plus kecil (+) di sebelah kiri dari datanya.
Supaya tidak bingung, mari kita simak contoh nyatanya berikut ini.
Saya membuat relasi Master/Detail antara satu table Master dengan dua table Detail. Table Master bernama userlevels (Level Pengguna), sedangkan table Detail masing-masing bernama dan users (Pengguna) dan table/view pendaftaran_pengguna (Pendaftaran Pengguna).
Meskipun relasi Master/Detail sudah dibuat di antara ketiga table tadi, saya tidak ingin memberikan permission sama sekali table users kepada level pengguna apapun (kecuali untuk Administrator dengan level pengguna -1).
Dalam hal ini, saya hanya ingin memberikan permission kepada table/view Pendaftaran Pengguna. Jadi, diharapkan hanya ada 1 Tab saja yang ditampilkan di bagian Preview Row.
Sayangnya, sampai dengan PHPMaker 2020 ini, sistem akan tetap menampilkan Tab yang berisi table Pengguna di atas tadi, dan di bagian bawahnya akan muncul pesan yang isinya kira-kira berbunyi Anda tidak memiliki ijin untuk mengakses table ini. Jadi, dalam hal ini ada 2 Tab yang ditampilkan beserta Tab yang berisi table/view Pendaftaran Pengguna.
Tentu saja kondisi ini tidak kita harapkan, bukan? Seharusnya, jika Tab yang berisi table yang permission List-nya tidak pernah kita berikan, maka sistem tidak akan pernah juga menampilkan sama sekali Tab berisi table Pengguna tadi. Jadi, cukup hanya Tab Pendaftaran Pengguna saja yang ditampilkan.
Bukan PHPMaker namanya, jika kita sebagai Web Developer tidak dapat mengatasi permasalahan tersebut. Di sinilah server event ListOptions_Rendering dibutuhkan.
Saya cukup hanya menambahkan satu baris kode saja ke dalam server event ListOptions_Rendering yang terdapat di lokasi ini: Server Events -> Table-Specific -> List Page untuk menyembunyikan Tab yang memuat table users atau Pengguna tadi:
$this->DetailPages->Items["users"]->Visible = FALSE;
Perhatikanlah kode tersebut. Kita cukup mengoptimalkan object DetailPages yang menangani element Tab. Object ini memiliki property Items yang merupakan array object. Kita menyertakan nama table users, kemudian kita menugaskan nilai FALSE ke property Visible milik object tadi untuk menyembunyikan Tab tersebut.
Wow! Hanya dengan satu baris kode itu saja, kita sudah bisa menyembunyikan Tab tertentu sesuai dengan business-logic yang kita tentukan dari dalam project PHPMaker. Selanjutnya, cukup generate ulang semua file script, maka PHPMaker akan menerapkannya di Aplikasi Web yang kita buat.
Biarkan PHPMaker yang menangani sisanya. Kita cukup fokus untuk menerapkan business-logic dan business-process ke dalam Aplikasi Web kita. Hidup pun menjadi lebih menyenangkan. Tidak perlu lagi stress memikirkan bagaimana cara menulis coding yang mungkin bisa berpuluh-puluh atau beratus-ratus baris panjangnya jika masih membuat Aplikasi Web dengan cara-cara manual atau konvensional.
Hohoho…! PHPMaker gitu, lho…! 😀
Selamat malam Pak, mau tanya buat nyembunyiin tab preview ini bisa pake kondisi ngga? Misal jika di table detailnya ada data yg ber”status” = 1, tab previewnya tampil, jika ber”status” = 2 tab previewnya tidak tampil.
Bisa. Tinggal di-query saja pakai fungsi global ExecuteScalar, lalu tambahkan pemeriksaan kondisi sesuai yang diharapkan.