breadcrumbDescription
Visualforce-sider som globale tilpassede handlinger
Visualforce-sider, der bruges som globale handlinger, kan kaldes mange forskellige steder og har ikke en specifik registrering tilknyttet. De har fuldstændig "handlefrihed", hvilket betyder, at det er op til dig at skrive koden.
EditionsHeading
| Tilgængelig i: både Salesforce Classic og Lightning Experience |
| Tilgængelig i: Group, Professional, Enterprise, Performance, Unlimited, Contact Manager, Database.com og Developer Edition |
Visualforce-sider, du opretter, som skal bruges som globale handlinger, kan ikke bruge en standardobjektcontroller. Du skal skrive en tilpasset controller til at håndtere siden.
Når en global handling er fuldført, omdirigeres brugeren enten til en overordnet registrering, der er oprettet som del af handlingen eller returneres til det sted, de startede.
Dette kodeeksempel viser en Visualforce-side, der er designet til at blive brugt som en tilpasset handling på ethvert objekt, der understøtter handlinger. Denne handling giver brugerne mulighed for at oprette sager fra registreringsdetaljesider, Chatter, Chatter-grupper (bortset fra kundegrupper) eller startsiden. Den har en anden brugergrænseflade end standardoprettelseshandlinger. Som med alle globale handlinger bliver registreringerne, der oprettes via denne handling, ikke tilknyttet andre registreringer.
<!-- Custom controller -->
public with sharing class CreateCaseController {
public Case theCase {get; set;}
public String lastError {get; set;}
public CreateCaseController() {
theCase = new Case();
lastError = '';
}
public PageReference createCase() {
createNewCase();
theCase = new Case();
return null;
}
private void createNewCase() {
try {
insert theCase;
FeedItem post = new FeedItem();
post.ParentId = ApexPages.currentPage().getParameters().get('id');
post.Body = 'created a case';
post.type = 'LinkPost';
post.LinkUrl = '/' + theCase.id;
post.Title = theCase.Subject;
insert post;
} catch(System.Exception ex){
lastError = ex.getMessage();
}
}
}
<apex:page controller="CreateCaseController" showHeader="false">
<script type='text/javascript' src='/canvas/sdk/js/publisher.js'/>
<style>
.requiredInput .requiredBlock, .requiredBlock {background-color: white;}
.custompubblock div {display: inline-block;}
.custompublabel {width:54px;}
</style>
<script>
function refreshFeed() {
Sfdc.canvas.publisher.publish({name : 'publisher.refresh', payload : {feed: true}});
}
</script>
<div>
<apex:form >
<apex:actionFunction action="{!createCase}" name="createCase" rerender="out" oncomplete="refreshFeed();"/>
<apex:outputPanel id="out" >
<div class="custompubblock">
<div>Subject: </div><apex:inputField value="{!theCase.subject}" style="width:500px;" />
</div>
<div class="custompubblock">
<div class="custompublabel">Account:</div><apex:inputField value="{!theCase.accountId}"
style="margin-left:0;"/>
<div>Contact: </div><apex:inputField value="{!theCase.contactId}" />
</div>
<apex:inputField value="{!theCase.description}" style="width:500px;height:92px;margin-top:4px;" />
<div class="custompubblock" style="margin-top:5px;">
<div>Status: </div><apex:inputField value="{!theCase.status}" />
<div>Priority: </div><apex:inputField value="{!theCase.priority}" />
<div>Case Origin: </div><apex:inputField value="{!theCase.origin}" />
</div>
<div style="color:red;">{!lastError}</div>
</apex:outputPanel>
</apex:form><br/>
<button type="button" onclick="createCase();" style="position:fixed;bottom:0px;right:0px;padding:5px 10px;
font-size:13px; font-weight:bold; line-height:
18px;background-color:#0271BF;background-image:-moz-linear-gradient(#2DADDC, #0271BF);background-repeat:repeat-x;
border-color:#096EB3;" id="addcasebutton">Create Case</button>
</div>
</apex:page>Krav til opdatering af værtssider
Hvis du ønsker, at en tilpasset handling, objektspecifik eller global, skal opdatere feedet på værtssiden, skal Visualforce-siden, du opretter til brug for den pågældende handling:
- Referere til JavaScript-handlingsområdefilen:
<script type='text/javascript' src='/canvas/sdk/js/publisher.js'/>. (Oprettelse af tilpassede Visualforce-handlinger kræver ikke Lærred-SDK.) - Indeholde dette JavaScript-kald:
Sfdc.canvas.publisher.publish({name : 'publisher.refresh', payload : {feed:true}});.

