海外のSalesforce DeveloperがVisualforceをつかったSalesforce1アクションについてのブログを公開していたので、Dev環境で試してみました。
上記リンク先ではリードオブジェクトのステータスを更新する処理が紹介されていました。同じようにリード状況項目の値を「Working - Contacted」に更新するアクションを試してみました。
VisualforceページとApexクラスを次のように作成します。
LeadWorkingAction.page
<apex:page standardController="Lead" extensions="LeadWorkingActionController" action="{!init}" tabStyle="Lead"> </apex:page>
LeadWorkingActionController.cls
public with sharing class LeadWorkingActionController { // リード情報 private Lead lead = new Lead(); /** * コンストラクタ */ public LeadWorkingActionController(ApexPages.StandardController controller) { this.lead = (Lead) controller.getRecord(); } /** * Init */ public PageReference init() { // リード状況を更新 this.lead.Status = 'Working - Contacted'; update this.lead; return new PageReference('/' + this.lead.Id); } }
Visualforceページ作成後は『Salesforce モバイルアプリケーションおよび Lightning ページでの使用が可能』にチェックをつけてSalesforce1アプリで利用できるように権限を追加します。
続いてアクションの作成です。新しいアクションは設定の「ボタン、リンク、およびアクション」から作成できます。
アクション種別に「カスタム Visualforce」を指定すると対象のVFページを選択できるようになります。
ちなみにアクションのアイコンを変更するには、静的リソースにアップしておく必要があります。
これでアクションの設定が完了です。
次は作成したアクションをページレイアウトに追加します。
これでSalesforce1アプリのアクションバーにアクションが表示されます。追加したWorking!アクションをクリックするとステータスが無事に更新されました。
ひとつうまく行かなかったのですが、更新後の画面遷移がうまく実行できませんでした。何か処理が漏れてるのかもしれません。
今回、ステータスを更新→詳細ページへ移動というアクションを試してみましたが、普通にVisualforceページを表示することも可能です。
VFページを表示するとこんな感じです。
アクション標準のヘッダーはapex:pageタグで『showQuickActionVfHeader="false"』を宣言すると非表示にできます。