Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added documentation on new .listitems feature for CustomButtons that allows backwards-compatible logic based control of custom button visibility.

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

...

  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; 
    }


...



 
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






 
NameControlling Visibility of Custom Buttons with PSL Logic

Key

pulsar.<Object API Name>[.<Record Type Friendly Name or "default">].buttons.listitems

Value


Default Value (if any)


Compatibility
  •  iOS
  •  Windows
  •  Android

Description

OPTIONAL

The value of this setting should be valid PSL (Pulsar Settings Language (PSL)) and should result in a SetResult PSL Action that sets the result value to a string in the format expected by the pulsar.<Object API Name>[.<Record Type Friendly Name or "default">].buttons setting.

Notes/Comments/Examples


Code Block
DEFAULT{
Action=SetVar;
VarName=ShowOriginalOrder;
VarValue="FALSE";
|
Action=SqlQuery;
QueryString=SELECT '%%ShowOriginalOrder%%' as BoolVal;
QueryReturnFields=BoolVal;
QueryTest='%%BoolVal%%'='TRUE';
QueryTestTrue=ORIGINAL_ORDER;
QueryTestFalse=REVERSE_ORDER;
}

ORIGINAL_ORDER{
Action=SetResult;
Result=Launch_Yahoo:Launch Yahoo
Launch_Skype:Launch Skype
Launch_News:Launch News
Launch_SIP:Share In Pix;
}

REVERSE_ORDER{
Action=SetResult;
Result=Launch_Skype:Launch Skype
Launch_News:Launch News
Launch_SIP:Share In Pix
Launch_Yahoo:Launch Yahoo;
}