Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

Spring 2019 NOTE: we recommend that you use SFDC Quick Actions, but PSL custom buttons will continue to be supported.

Overview

Some admins have setup custom buttons backed by Apex code to accommodate a Salesforce work flow. For example, a custom button click would create an object with certain fields already filled in from the values found in the current object. Pulsar also supports defining custom buttons using Pulsar Settings and the Pulsar Settings Language (PSL)

...

  1. Enable Custom buttons

    NameEnable Custom Buttons
    Keypulsar.detail.custombuttons.show
    Value: TRUE


  2. Define the labels and identifiers for each custom button action.

    Name
    Object Name - custom button
    Key: pulsar.<Object API Name>[.<Record Type Friendly Name or "default">].buttons
    Value: Newline separated list of "button_Id:Label" pairs. Labels can contain spaces, button id's cannot contain spaces. See the example below.

    EXAMPLE:

    Name
    Event custom buttons
    Key: pulsar.event.default.buttons
    Value: Start_Visit:Start Visit 
                End_Visit:End Visit 
                Display_Contact:Display Contact
                Create_Call_Record:Create Call Record 
                View_Call_Record:View Call Record

     
  3. Now define each individual button action using PSL:

    NameObject Name - Button_Id - Action
    Keypulsar.buttonActions.<Object API Name>.button_id
    Value: PSL. See examples below.

    EXAMPLES:

    NameEvent - Start_Visit - Action
    Keypulsar.buttonActions.Event.Start_Visit
    Value: See code below. The code checks if the visit Is_Started flag is set, and if not,  saves the current location and sets the flag, informing the user that the visit has started.

    Code Block
    DEFAULT{ 
    Action=SetVar; 
    VarName=Is_Started; 
    VarValue=Is_Started__c; 
    | 
    Action=SqlQuery; 
    QueryString=SELECT CASE WHEN '%%Is_Started%%' = 'TRUE' THEN 1 ELSE 0 END AS IsEventStarted; 
    QueryReturnFields=IsEventStarted; 
    QueryTest=%%IsEventStarted%%=1; 
    QueryTestTrue=EVENT_ALREADY_STARTED; 
    | 
    Action=SetField; 
    FieldType=TimeStamp; 
    FieldName=StartDateTime; 
    | 
    Action=SetField; 
    FieldType=General; 
    FieldName=Is_Started__c; 
    FieldValue=TRUE; 
    |
    Action=SetLocation; 
    LocationType=DeviceLocation; 
    FieldName=Event_Location__c;
    |
    Action=Alert; 
    Message=Visit Has Been Started; 
    } 
    
    EVENT_ALREADY_STARTED{ 
    Action=Alert; 
    Message=Visit has already started. You can only start the visit once; 
    }



    Name: Event - Create_Call_Record - Action
    Key: pulsar.buttonActions.Event.Create_Call_Record
    Value: See code below. The code checks if a Call Record has already been recorded for the current Event, and if not, creates the new Call Record by mapping field values from the current Event.

    Code Block
    DEFAULT{ 
    Action=SetVar; 
    VarName=Event_Id; 
    VarValue=Id; 
    | 
    Action=SqlQuery; 
    QueryString=Select COUNT () AS Count_Call_Records FROM Call_Record__c WHERE Related_Event__c = '%%Event_Id%%'; 
    QueryReturnFields=Count_Call_Records; 
    QueryTest=%%Count_Call_Records%%>0; 
    QueryTestTrue=DISPLAY_MESSAGE; 
    | 
    Action=CreateAndMapFields; 
    ActionShouldComplete=TRUE; 
    ObjectType=Call_Record__c; 
    Related_Event__c=Id; 
    WhatId__c=WhatId; 
    WhoId__c=WhoId; 
    Subject__c=Subject; 
    Description__c=Description; 
    Start_Date_Time__c=StartDateTime; 
    End_Date_Time__c=EndDateTime; 
    } 
    
    DISPLAY_MESSAGE{ 
    Action=Alert; 
    Message=You have already created a call record for this Event; 
    }


See the screenshots below to see the logic in action:

 


 


 


...



 
NameCustom Buttons Icon

Key

pulsar.layout.{sobjectType}.customButtons.icon

Value


Default Value (if any)


Compatibility
  •  iOS
  •  Windows
  •  Android

Description

No value is needed, but attach a PNG file to this setting and that will be used as the custom buttons icon. Otherwise the default (...) horizontal ellipsis is used.

Notes/Comments/Examples


...