Seperti yang sudah kita ketahui, Aplikasi Web yang dibangun dengan PHPMaker memiliki banyak sekali fitur yang tingkat fleksibilitasnya sangat tinggi, serta dapat diatur dengan sangat mudah dan cepat dari dalam project PHPMaker. Salah satu fitur itu adalah Item Menu, yang ketika di-render atau ditampilkan kode HTML-nya ke browser Pengguna, dapat dikostumais oleh Web Developer.
Kali ini kita akan membahas bagaimana mudah dan cepatnya memindahkan dua Item Menu Change Password dan Logout ke dalam Item Menu tertentu yang bertindak sebagai Root Menu. Tentu timbul pertanyaan: Mengapa kedua Item Menu tadi harus dipindahkan?
Jawabannya, karena kedua Item Menu tersebut selama ini secara standar selalu berperan sebagai Root Menu. Hal ini menyebabkan banyaknya ruang yang terpakai di Menu bar, khususnya jika tipe menu yang digunakan adalah Horizontal, dan jumlah Item Menu yang berada di Root Menu relatif banyak.
Nah, oleh karena itu, kita harus memindahkan kedua Item Menu ini ke bawah Item Root Menu tertentu. Dengan kata lain, kedua Item Menu tadi setelah dipindahkan akan berubah menjadi Item Sub-Menu, dan Root Menu tempat yang baru tadi akan berperan sebagai Parent Menu dari kedua Item Sub-Menu tadi.
Supaya lebih mudah dipahami, mari kita ambil contoh berikut. Katakanlah di Aplikasi Web yang kita bangun dengan PHPMaker sudah tersedia Item Root Menu yang bernama Pengaturan. Root Menu ini memiliki nilai Id Menu = 139. Kita akan memindahkan kedua Item Menu Change Password dan Logout tadi ke bawah Item Root Menu Pengaturan tersebut.
Solusinya sangatlah sederhana. Pertama, kita harus menyembunyikan terlebih dulu Item Menu tersebut menggunakan server event MenuItem_Adding. Kedua, kita menambahkan Item Menu yang baru dan menentukan Parent Menu-nya ke Item Menu yang kita inginkan dengan menggunakan server event Menu_Rendering.
Penjabaran solusi di atas adalah sebagai berikut. Langkah Pertama, kita menambahkan kode PHP berikut ke dalam server event MenuItem_Adding yang berada di bawah bagian Server Events -> Global -> All Pages pada project PHPMaker kita, sehingga kode selengkapnya menjadi seperti berikut:
function MenuItem_Adding(&$Item) { //var_dump($Item); // Return FALSE if menu item not allowed if ( ($Item->Id== -1 && IsLoggedIn()) || $Item->Id == -2) { return FALSE; } }
Perhatikanlah kode barusan. Kita memerika jika nilai property Id milik object Item sama dengan -1 (Item Menu Logout) atau -2 (Item Menu Change Password), maka sembunyikan dengan cara mengembalikan nilai FALSE.
Khusus untuk Id Menu -1, kita menambahkan pemeriksaan apakah Pengguna sudah login dengan menggunakan fungsi global IsLoggedIn(), yang artinya hanya berlaku untuk Item Menu Logout. Hal ini perlu karena Id Menu -1 juga digunakan untuk link Login untuk menampilkan form Login.
Langkah Kedua, kita menambahkan dua Item Menu yang baru tersebut dengan menambahkan kode PHP berikut ke dalam server event Menu_Rendering (yang posisinya sejajar dengan server event MenuItem_Adding di atas tadi), sehingga kode selengkapnya menjadi seperti ini:
function Menu_Rendering(&$Menu) { // Change menu items here if ($Menu->IsRoot) { // Root menu $Menu->AddMenuItem(10001, "mi_changepwd", '<i class="glyphicon glyphicon-refresh"></i> ' . Language()->Phrase("ChangePwd"), "changepwd.php", 139, "", IsLoggedIn() && !IsSysAdmin()); $Menu->AddMenuItem(10002, "mi_logout", '<i class="glyphicon glyphicon-log-out"></i> ' . Language()->Phrase("Logout"), "logout.php", 139, "", IsLoggedIn()); } }
Perhatikanlah kode di server event Menu_Rendering ini. Kita menambahkan kedua Item Menu (yang sebelumnya sudah disembunyikan di atas tadi) dengan menggunakan method AddMenuItem milik object Menu. Dalam contoh ini, masing-masing Id Menu menggunakan nilai 10001 dan 10002. Sengaja menggunakan nilai Id yang relatif besar, dengan asumsi kedua Id tersebut tidak akan bentrok dengan Id Menu yang dihasilkan dari Menu Editor PHPMaker.
Perhatikanlah juga nilai pada parameter kelima dari method AddMenuItem tadi, yaitu 139. Itu artinya, kita menempatkan kedua Item Menu yang baru tadi ke bawah Item Menu yang memiliki Id Menu 139 yang dalam hal ini memiliki Teks Pengaturan.
Betapa mudah dan cepatnya, bukan? Bayangkan, cukup dengan menambahkan sedikit kode itu saja dan dilakukan dari dalam project PHPMaker (tidak perlu memodifikasi file script PHP-nya), maka kita dapat memindahkan Item Menu tertentu ke bawah Item Menu yang kita inginkan.
Bandingkan dengan jika Anda melakukannya dengan metode pengembangan manual yang sampai sekarang masih Anda lakukan, hehehe… PHPMaker, gitu lho! 😀
indra Dwi Budi Rahadian mengatakan
Halo Mas Masino, maaf mas klo untuk mengetahui menu item ID nya dimana ?
Masino Sinaga mengatakan
Di file ewmenu.php yang sudah di-generate oleh PHPMaker.
Art mengatakan
masIno, kalau mau menyembunyikan menu yg digenerate oleh php maker gmna, jadi diharapkan menu itu cuma muncul saat Admin dan Loket yg login.