Salesforce 在标准sales force chatter页面中单击Approve/Reject链接时,是否可以显示自定义VF页面?

Salesforce 在标准sales force chatter页面中单击Approve/Reject链接时,是否可以显示自定义VF页面?,salesforce,visualforce,salesforce-chatter,Salesforce,Visualforce,Salesforce Chatter,请告知我是否可以在单击记录上的“批准/拒绝”链接时显示自定义visualforce页面,而不是显示standrad Salesforce批准页面 如果可能的话,请告诉我如何实现这一点?按照以下方法覆盖标准审批流程页面 创建自定义visualforce页面:从复制标准批准/拒绝页面开始 创建具有批准/拒绝/取消方法的控制器 使用Javascript创建主页组件,以覆盖Lead上的“批准/拒绝”按钮 在主页布局中添加此主页组件 视觉力页 主页组件 尝试 { var pa=document.getE

请告知我是否可以在单击记录上的“批准/拒绝”链接时显示自定义visualforce页面,而不是显示standrad Salesforce批准页面


如果可能的话,请告诉我如何实现这一点?

按照以下方法覆盖标准审批流程页面

  • 创建自定义visualforce页面:从复制标准批准/拒绝页面开始
  • 创建具有批准/拒绝/取消方法的控制器
  • 使用Javascript创建主页组件,以覆盖Lead上的“批准/拒绝”按钮
  • 在主页布局中添加此主页组件
  • 视觉力页 主页组件
    
    尝试
    {
    var pa=document.getElementById(“demoContainer”).parentNode.parentNode;pa.style.display=“无”;
    }
    catch(err){alert('此网页上有错误='+err.description);}
    功能CustomApproval()
    {
    尝试
    {
    var str=location.href;
    var leadId=str.substr(str.indexOf(“.com/”)-0+5,15);
    var divid=leadId+“与流程相关的历史列表”和“主体”;
    var Approvalprocessdiv=document.getElementById(divid);
    if(Approvalprocessdiv!=null){
    var originalHTML=Approvalprocessdiv.innerHTML;
    var newHtml=originalHTML.replace(“/p/process/ProcessInstanceWorkitemWizardStageManager?”,“/apex/ProcessInstanceWorkitemWizard?LeadId=”+LeadId+”&');
    Approvalprocessdiv.innerHTML=newHtml;
    }
    }
    捕捉(错误){提醒(错误);}
    }
    var oldonload=window.onload;
    if(typeof window.onload!=“函数”)
    {
    window.onload=oldonload;
    }否则
    { 
    window.onload=函数()
    {
    if(oldonload){
    oldonload();
    }
    客户批准();
    }
    }
    
    <apex:page controller="ProcessInstanceController" tabStyle="Lead">
        <apex:form>
            <apex:sectionHeader title="Lead" subtitle="{!objLead.Name}"/>
            <apex:pageBlock title="Approve/Reject Approval Request">
                <apex:pageBlockButtons location="bottom">
                    <apex:commandButton value="Approve" action="{!approve}"/>
                    <apex:commandButton value="Reject" action="{!reject}"/>
                    <apex:commandButton value="Cancel" action="{!cancel}"/>
                </apex:pageBlockButtons>  
                <apex:pageBlockSection columns="1">
                    <apex:pageBlockSectionItem >
                    Name <apex:outputField value="{!objLead.Name}"/>
                    </apex:pageBlockSectionItem>
                    <apex:pageBlockSectionItem >
                    Lead Owner <apex:outputField value="{!objLead.Owner.Name}"/>
                    </apex:pageBlockSectionItem>
                    <apex:pageBlockSectionItem >
                    Rejection Reason <font color="red">(Mandatory while Rejection)</font><apex:inputField value="{!objLead.Rejection_Reason__c}"/>
                    </apex:pageBlockSectionItem>
                    <apex:pageBlockSectionItem >
                    Comments <font color="red">(Mandatory while Rejection)</font> <apex:inputTextArea value="{!objLead.Comments__c}" rows="5" cols="100"/>
                    </apex:pageBlockSectionItem>
                </apex:pageBlockSection>
            </apex:pageBlock>
        </apex:form>
    </apex:page>
    
    public class ProcessInstanceController {
        public String processId;
        public String leadId;
        public ProcessInstance objProcessInstance;
        public Lead objLead {get; set;}
        public PageReference redirectPage;
        public ProcessInstanceController(){
            processId = ApexPages.currentPage().getParameters().get('id');
            leadId = ApexPages.currentPage().getParameters().get('leadId');
            objLead = [select Name,Owner.Name,Rejection_Reason__c,Comments__c from Lead where id =:leadId];
            redirectPage = new PageReference('/'+leadId);
        }
        public PageReference Approve(){
            Approval.ProcessWorkitemRequest req = new Approval.ProcessWorkitemRequest();
            req.setComments(objLead.Comments__c);
            req.setAction('Approve');
            req.setWorkitemId(processId);
            Approval.ProcessResult result =  Approval.process(req);
            update objLead;
            return redirectPage ;
        }
        public PageReference Reject(){
            Approval.ProcessWorkitemRequest req = new Approval.ProcessWorkitemRequest();
            req.setComments(objLead.Comments__c);
            req.setAction('Reject');
            req.setWorkitemId(processId);
            Approval.ProcessResult result =  Approval.process(req);
            update objLead;
            return redirectPage ;      
        }
        public PageReference Cancel(){
            return redirectPage;
        }
    }
    
    <div id="demoContainer">
        <script language="JavaScript">
            try
            {
                var pa=document.getElementById("demoContainer").parentNode.parentNode; pa.style.display = "none";
            }
            catch(err){alert('There was an error on this webpage='+err.description);}
        </script>
        <script language="JavaScript">
            function CustomApproval()
            {
                try
                {
                    var str=location.href;
                    var leadId=str.substr(str.indexOf(".com/")-0 + 5,15);
                    var divid=leadId+'_RelatedProcessHistoryList_body';
                    var Approvalprocessdiv=document.getElementById(divid);
                    if(Approvalprocessdiv!=null){
                        var originalHTML=Approvalprocessdiv.innerHTML;
                        var newHtml=originalHTML.replace('/p/process/ProcessInstanceWorkitemWizardStageManager?','/apex/ProcessInstanceWorkitemWizard?LeadId='+leadId+'&');
                        Approvalprocessdiv.innerHTML=newHtml;
                    }
                }
                catch(err){alert(err);}
            }
            var oldonload = window.onload;
            if (typeof window.onload != 'function')
            {
                window.onload = oldonload;
            } else 
            { 
                window.onload = function() 
                {
                    if (oldonload) {
                        oldonload();
                    }
                    CustomApproval();
                }
            }
        </script>
    </div>