Bukan PHPMaker namanya jika lagi-lagi tidak memberikan kemudahan dan fleksibilitas yang sangat tinggi kepada Web Developer. Tidak ada habis-habisnya keuntungan yang bisa kita dapatkan dengan menggunakan PHPMaker sebagai tools untuk membangun Aplikasi Web. Setiap hari ada saja fitur-fitur yang bisa kita eksplorasi darinya, sama dengan artikel mengenai PHPMaker yang setiap hari saya tulis dan publikasikan di situs ini. Salah satu fitur hebat lainnya di PHPMaker adalah kemampuan untuk menyembunyikan item menu pada saat Aplikasi Web dijalankan.
Kali ini mari kita membahas bagaimana PHPMaker dapat membantu Web Developer menyembunyikan item menu tertentu di Aplikasi Web yang di-generate olehnya. Fitur ini sering sekali diimplementasikan di sebuah Aplikasi Web, karena tidak semua item menu bisa dilihat/diakses oleh semua Pengguna. Sering kali item menu tertentu harus disembunyikan untuk Pengguna dengan level akses tertentu. Tidak ada jalan lain kecuali dengan menerapkan business-logic yang dinamis mengikuti kebutuhan di Aplikasi Web tersebut.
PHPMaker telah menyediakan server event yang bernama MenuItem_Adding untuk menyembunyikan item menu tertentu dengan sangat mudah. Event ini dijalankan setiap kali sebuah item menu sedang ditambahkan ke bagian Menu pada Aplikasi Web yang dihasilkan oleh PHPMaker. Informasi item menu dilewatkan ke event ini sebagai sebuah instansiasi dari object cMenuItem. Perlu diingat juga bahwa event ini sifatnya global. Artinya, dia akan selalu dipanggil setiap kali Aplikasi Web Anda ditampilkan ke browser.
Anda sebagai Web Developer cukup hanya mengembalikan nilai FALSE jika ingin menyembunyikan item menu tertentu. Sedangkan jika Anda mengembalikan nilai TRUE (nilai default), maka item menu akan ditambahkan langsung ke bagian Menu di Aplikasi Web Anda. Tapi, itu artinya tidak selalu item menu itu dapat dilihat oleh semua Pengguna. Tergantung kepada hak akses Pengguna juga. Sebuah item menu akan ditampilkan hanya jika property Allowed bernilai TRUE. Ketika item menu dilewatkan ke event ini, property Allowed diset berdasarkan fitur User Level Security dari project PHPMaker Anda. Meskipun demikian, Anda dapat mengubahnya dengan mengeset $Item->Allowed menjadi TRUE atau FALSE; tergantung kebutuhan Anda.
Berikut ini beberapa contoh penggunaan kode pada server event MenuItem_Adding. Anda dapat menambahkan kode Anda dengan sangat mudah melalui lokasi: Server Events -> Global -> All Pages dari dalam aplikasi PHPMaker.
Sebagai Web Developer, sebelum menulis kode Anda di server event ini, saya sarankan Anda agar mengeksplorasi property apa saja yang dimiliki oleh setiap object $Item. Caranya cukup dengan menambahkan kode berikut:
var_dump($Item); // untuk melihat property yang dimiliki oleh $Item ...
ke dalam server event tadi, lalu generate ulang seluruh file script, dan jalankan ulang Aplikasi Web Anda dari browser. Selengkapnya kode tadi di dalam server event MenuItem_Adding menjadi seperti ini:
function MenuItem_Adding(&$Item) { var_dump($Item); // untuk melihat property yang dimiliki oleh $Item ... }
Setelah Anda mengetahui property apa saja yang terdapat di dalam object $Item tadi, maka mari kita mencoba mengimplementasikannya. Berikut ini contoh kasus untuk menampilkan item menu “Download” hanya kepada Pengguna yang sudah berhasil login:
function MenuItem_Adding(&$Item) { //var_dump($Item); // Return False if menu item not allowed if ($Item->Text == "Download") { return IsLoggedIn(); } else { return TRUE; } }
Sedangkan kode di bawah ini adalah contoh kasus untuk menampilkan item menu yang memiliki URL “usersmanagement.php” hanya dapat diakses oleh Pengguna yang memiliki userlevel Admin.
function MenuItem_Adding(&$Item) { //var_dump($Item); // Return False if menu item not allowed if ($Item->Url == 'usersmanagement.php') { return IsAdmin(); } else { return TRUE; } }
Jangan lupa, setelah Anda menulis kode Anda di server event tersebut, generate ulang semua file script dengan menggunakan PHPMaker seperti biasa.
Dengan menggunakan server event MenuItem_Adding, maka Anda sebagai Web Developer dapat mengendalikan/menyembunyikan item menu tertentu berdasarkan business-logic yang Anda terapkan di Aplikasi Web yang dibangun oleh PHPMaker.
Betapa mudah dan nikmatnya Anda membangun Aplikasi Web dengan menggunakan PHPMaker, bukan? 🙂
herman mengatakan
Pembahasan yang menarik. Apakah di PHPMaker ada dukungan multi-user; dengan kata lain 1 username kita dapat berikan 2 atau lebih userlevel? Terima kasih.
Masino Sinaga mengatakan
Pertanyaan Anda itu lebih tepatnya adalah “multi-userlevel”, dan bukan “multi-user”.
Sepengetahuan saya PHPMaker baru bisa merelasikan “satu username” dengan “satu userlevel”. Jika Anda ingin menggabungkan beberapa hak akses yang terdapat di beberapa userlevel, maka sebaiknya buat userlevel baru yang berisi hak akses gabungan dari beberapa userlevel tadi.
bagus mengatakan
mohon petunjuk bang. Tabel master kode dipake di smua user terutama saat selext box. Supaya tabel master kode tadi tak nampak di menu level user bagaimana cara ? pake cara diatas memang tak nampak menunya. tapi jika user tahu URLnya dan dia ketik bisa si user lihat isi tabel master kode tadi. terimakasih sebelumnya
bagus mengatakan
sudah coba setting di static user level dan conteng list untuk level user tapi tetap tampil di menu user. jika tak di conteng list maka tak nampak di selection box. ada saran bang ? thank
Masino Sinaga mengatakan
Kalau sudah disetting di Static User Level tapi menu masih tetap muncul, maka kemungkinan Anda juga menggunakan Dynamic User Level. Jadi, harus diatur lagi dari Dynamic User Level-nya.
Murniyati mengatakan
Mohon bertanya pak dan ijin berikan contohnya :
Bagaimana apabila seperti di bawah ini :
User 1 mengakses Menu A, Menu B , dan selanjutnya
User 2 mengakses Menu C, Menu D , dan berikutnya
User 3 mengakses Menu E, Menu F
Murniyati mengatakan
sudah ketemu pak, dari bebrapa artikel bapak yang di post di beberapa halaman diskusi web yang selain ini. dan hkvforums serta stack overflow. Terima kasih banyak
Masino Sinaga mengatakan
Sama-sama.