November 17th, 2015
It seems the need for hacks has not gone away with the move to cloud, but you do have to be more careful, as I have already found out Salesforce can break your custom code at will.
So that being true one of the things that SalesForce does not seem to have that every other framework does is a simple an powerful “hide when”, IMHO this feature should be present in every line button and object on every page and most platforms do,
It is the most requested feature for customisation that I have come across, and this is the hack that I use for read mode documents or forms (which strangely is where the request is most often made) (and yes it is a hack)
We are going to just stuff some JavaScript into a apex page, you can see an example of it below
<apex:page standardController="Case" showHeader="false" sidebar="false"> <script> myVar = checkforbutton(); function checkforbutton() { if (typeof(parent.document.getElementsByName("searchArticles")[0]) != "undefined" ) { if ( parent.document.title.indexOf("Customer Community") != -1) { parent.document.getElementsByName("searchArticles")[0].style.display = "none"; } } else { window.setTimeout("checkforbutton();",100); } } </script> </apex:page>
Lets break it down
We have to use “parent.document” to get JavaScript objects as when we use this page SalesForce will embed it inside a Iframe
We have to do a wait loop that keeps looking for the object till it finds it (then stops), because SalesForce adds button objects in after the page loads so they wont be there when it first opens
if (typeof(parent.document.getElementsByName("searchArticles")[0]) != "undefined" ) { //do stuff } else { window.setTimeout("checkforbutton();",100); }
So we put this code into a Page
This insert that page into the layout Object layout we want it to effect.
that would normally give a big white space where the inserted form lives, so we make the page a 1% by 1px block
And that’s it, just save the layout, the button/”what ever” will hide when the page loads, a hack but a simple reliable hack
Now as always “hide when” is not security, remember to make sure that you don’t leave functions exposed and think this kind of thing covers you.
Salesforce: Same Code Different Triggers
Unlimited Test Email Addresses
Salesforce and Third Party Calls
Basic Authentication logout issues
Fitness the long road back - Week 1
Free beer and disreputable company
Salesforce Pardot: Multi Completion Rules
Razer Deathadder Chrome Sensitivity on Linux
SalesForce for Domino Dogs 3: Web Query Save Agents
SalesForce for Domino Dogs 2: Scheduled Agents
SalesForce for Domino Dogs 1: Profile Documents
New Platform Type New Client Type
Classic Domino and multi country dates with Bootstrap
C3 charts on Saleforce Winter16
Conditional Checking in AngularJs using Restangular
IBM ConnectED2015 All work and no play
Learning A Lesson About Security from other People
IBM Connections Dev Update to V5
W.T.F. they made me an IBM Champion and a C-API tip
Bloody Android Kit-Kat and SD Cards
LDC Via Cross Post: Why oh why oh why (Part One)
Applet security: a blast from the past
London Node.js User Group April 2014
SQuirrel SQL For IBM Connections
Living Document: Connections Db Schema Versions
Connections Db Schema Tip2: Finding the UserID
Connections Db Tip1: getting the Connections db Schema version
Collaboration Stack Community Agenda and Stuff
Connections aide memoire 02: Backing Up Websphere Config
Inserting HTML into word documents
Connections aide memoire 01: Changing XML config