Secara default, Salesforce hanya menyediakan 25 tab. Jika kita ingin membuat tab melebihi itu, kita harus membayar lagi. Konsep tab di salesforce mirip dengan menu, bisa dibilang menggantikan menu, karena tidak banyak pilihan navigasi lain selain lewat tab. Pada dasarnya, untuk tab dibutuhkan jika kita ingin mengakses data (termasuk membuat record baru, menghapus record yang ada ataupun mengeditnya) dalam sebuah object tertentu. Sedikit merepotkan saat kita membuat object baru, kita harus membuat tab baru untuk melakukan testing atau agar object itu bisa aktif, karena membuat object baru tidak secara otomatis menghasilkan tab untuk mengakses menu itu.
Untuk proyek yang sekelas ERP misalnya, tentu tidak cukup hanya memiliki 25 tab, dan kami pernah dapat complaint dari customer karena hal itu. Makanya dulu kepikiran, pasti ada cara untuk mengatasi hal ini. Mungkin bisa dengan membuat visualforce page yang bermanfaat untuk mengakses object tertentu, tanpa harus membuat tab baru. Akhirnya kemarin aku baru dapat kesempatan untuk melakukan sedikit ekplorasi tentang hal itu.
Idenya sederhana. Buat visualforce page yang menampilkan semua object, khususnya custom object, Ternyata, untuk mengakses record dalam sebuah object, kita cukup mengetikkan 3 karakter awal dari ID object tersebut dalam URL, dan Apex menyediakan fungsi untuk bisa tahu. Jadi kita cukup memanfaatkan metode-metode yang terkait dengan Schema.
Cukup memanfaatkan fungsi-fungsi berikut
Contoh kode yang aku buat adalah seperti ini
Yah, banyak hal yang masih perlu dirapikan dari kode di atas, misalnya agar hak akses bisa disesuaikan dengan user dan sebagainya. Tapi setidaknya, bisa sedikit menghemat biaya untuk menambah tab baru. Tinggal mengatur tampilan di visualforce page agar bisa lebih menarik.
Untuk proyek yang sekelas ERP misalnya, tentu tidak cukup hanya memiliki 25 tab, dan kami pernah dapat complaint dari customer karena hal itu. Makanya dulu kepikiran, pasti ada cara untuk mengatasi hal ini. Mungkin bisa dengan membuat visualforce page yang bermanfaat untuk mengakses object tertentu, tanpa harus membuat tab baru. Akhirnya kemarin aku baru dapat kesempatan untuk melakukan sedikit ekplorasi tentang hal itu.
Idenya sederhana. Buat visualforce page yang menampilkan semua object, khususnya custom object, Ternyata, untuk mengakses record dalam sebuah object, kita cukup mengetikkan 3 karakter awal dari ID object tersebut dalam URL, dan Apex menyediakan fungsi untuk bisa tahu. Jadi kita cukup memanfaatkan metode-metode yang terkait dengan Schema.
Cukup memanfaatkan fungsi-fungsi berikut
- Map
mapGD = Schema.getGlobalDescribe(); // untuk mengambil daftar object - SObjectType f = mapGD.get(strName); // untuk mengambil SObject tertentu berdasar nama API
- strPref = f.getDescribe().getKeyPrefix(); // mengambil prefix, 3 karakter awal dari sebuah object
- String url = '/' + strPref; // url yang bisa digunakan untuk mengakses record object tersebut
Contoh kode yang aku buat adalah seperti ini
// CONTROLLER TO DISPLAY ALL OBJECT, AS REPLACEMENT OF STANDARD TABS
// by Yudi K. public class CustomMenuController { public ListlistMenu {get;set;} public CustomMenuController (Apexpages.StandardController stdController) { listMenu = new List (); Map mapGD = Schema.getGlobalDescribe(); List gd = mapGD.Values(); Set setName = mapGD.keyset(); List lsName = new List (); for(String S: setName) { lsName.add(S); } lsName.sort(); String strPref; for(String strName : lsName) { SObjectType f = mapGD.get(strName); strPref = f.getDescribe().getKeyPrefix(); if (strPref != null && strPref != '' && strName.endsWith('__c') && !(strName.contains('SFGA'))) { MyMenu mM = new MyMenu(f.getDescribe().getName(), f.getDescribe().getLabel(), strPref); listMenu.add(mM); } } } public class MyMenu { public String objName {get;set;} // name of object API public String objLabel {get;set;} // label of the object public String objPref {get;set;} // 3 chars prefix of this object public MyMenu(String sName, String sLabel, String sPref) { objName = (sName == null) ? '' : sName; objLabel = (sLabel == null) ? '' : sLabel; objPref = (sPref == null) ? '' : sPref; } } }
Yah, banyak hal yang masih perlu dirapikan dari kode di atas, misalnya agar hak akses bisa disesuaikan dengan user dan sebagainya. Tapi setidaknya, bisa sedikit menghemat biaya untuk menambah tab baru. Tinggal mengatur tampilan di visualforce page agar bisa lebih menarik.
Comments