Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Author Charlie@callaway.cloud
- // Replacement clone page which copies activity history
- public with sharing class LeadCloneWithActivitiesController {
- private SObjectDeepClone cloner; //cloning util
- public Lead clone {get; private set;} //editable lead
- public Metadata.Layout leadLayout {get; private set;} //layout
- public Metadata.UiBehavior editEnum {
- get{ return Metadata.UiBehavior.Edit; }
- }
- public LeadCloneWithActivitiesController(ApexPages.StandardController controller) {
- Id idToClone = ((Lead)controller.getRecord()).Id;
- try{
- //get lead layout
- List<Metadata.Metadata> components = Metadata.Operations.retrieve(
- Metadata.MetadataType.Layout,
- new String[]{'Lead-Lead Layout'}
- );
- leadLayout = (Metadata.Layout) components.get(0);
- //setup clone obj
- cloner = new SObjectDeepClone(
- idToClone,
- new Set<String>{
- 'Tasks',
- 'Events'
- }
- );
- // set SObject so user can edit values
- this.clone = (Lead) cloner.clone;
- }catch(Exception e){
- ApexPages.addMessages(e);
- }
- }
- //save object
- public PageReference saveClone() {
- try{
- Id newLeadId = cloner.save();
- return new PageReference('/'+newLeadId);
- }catch(Exception e){
- ApexPages.addMessages(e);
- return null;
- }
- }
- }
Add Comment
Please, Sign In to add comment