Visualforce-sidor som globala egna åtgärder
Visualforce-sidor som används som globala egna åtgärder kan användas på flera olika platser och har inte en specifik post associerad till sig. De har fullständig handlingsfrihet, vilket innebär att det är upp till dig att skriva koden.
Versioner som krävs
| Tillgängliga i: både Salesforce Classic och Lightning Experience |
| Tillgängliga i: Utgåvorna Group, Professional, Enterprise, Performance, Unlimited, Contact Manager, Database.com och Developer |
Visualforce-sidor som du skapar för att använda som globala åtgärder kan inte använda en standardkontroll för objekt. Du måste skriva en egen kontroll för att hantera sidan.
När en global åtgärd slutförs omdirigeras användaren antingen till en överordnad post som skapats som en del av åtgärden eller går tillbaka till där de började.
Detta kodexempel visar en Visualforce-sida som utformats för att användas som en egen åtgärd för ett objekt som stöder åtgärder. Denna åtgärd låter användare skapa kundcase från postdetaljsidor, Chatter, Chatter-grupper (förutom kundgrupper) eller startsidan. Den har ett annat användargränssnitt än standardåtgärder för att skapa. Som med alla globala åtgärder associeras inte posterna som skapas genom denna åtgärd automatiskt med andra poster.
<!-- 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 för uppdatering av värdsidor
För att göra så att en objektspecifik eller global åtgärd uppdaterar kanalen på sidan som innehåller den måste Visualforce-sidan som du skapar för att använda som åtgärden:
- Referera till utgivarens JavaScript-fil:
<script type='text/javascript' src='/canvas/sdk/js/publisher.js'/>. (Att skapa egna Visualforce-åtgärder kräver inte Canvas SDK). - Inkludera den här JavaScript-anrop:
Sfdc.canvas.publisher.publish({name : 'publisher.refresh', payload : {feed:true}});.

