").dxButton( {
icon : "trash",
disabled : true,
hint : "Delete this Email Campaign?",
onClick : function( e ) {
if( confirm( `Delete '${instance.currentCampaign.campaignName}'?` ) ) {
EmailCampaignManager.deleteCampaign( instance.currentCampaign )
.done( function( returnData ) {
instance.campaignList.dataGrid.refresh();
instance.switchToList();
})
.fail( function() {
console.log( "failed");
})
};
}
}).dxButton( "instance" );
instance.campaignNavigation = $("
").css( { "padding" : "0 10px 5px 5px" }).dxToolbar( {
items : [
{ location : "before", template : function() { return instance.toolbarCampaignName }},
{ location : "after", widget : "dxButton", options : {
icon : "spinprev",
onClick : function( e ) {
instance.campaignList.selectPrevious();
}
}
},
{ location : "after", widget : "dxButton", options : {
text : "Email List",
onClick : function( e ) {
instance.multiView.option( "selectedIndex", 0 );
}
}
},
{ location : "after", widget : "dxButton", options : {
icon : "spinnext",
onClick : function( e ) {
instance.campaignList.selectNext();
}
}
},
{ location : "after", widget : "dxButton", options : {
icon : "copy",
hint : "Copy this Email Campaign?",
onClick : function( e ) {
//console.log(instance.currentCampaign.campaignId);
instance.campaignList.copyCampaign(instance.currentCampaign);
/*if( confirm( `Copy '${instance.currentCampaign.campaignName}'?` ) ) {
EmailCampaignManager.copyCampaign( instance.currentCampaign )
.done( function( returnData ) {
let dataGrid = instance.campaignList.dataGrid;
dataGrid.refresh().done( function() {
dataGrid.selectRows( [ returnData.campaignId ], false ).done( function() {
dataGrid.navigateToRow( returnData.campaignId );
instance.switchToEditor();
})
});
})
.fail( function() {
console.log( "failed" );
})
};*/
}
}},
{ location : "after", template : function() {
return instance.deleteCampaignButton.element();
}
}
]
}).dxToolbar( "instance" );
// instance.campaignEditorHome.append( instance.campaignEditor.element() );
instance.multiView = $("
").dxMultiView( {
swipeEnabled : false,
items : [
{ template : function() {
return $("
").css( { "padding-top" : "5px" } )
.append( instance.campaignList.element() )
}
},
{ template : function() {
return $("
").css( { "padding-top" : "5px" } ).append( instance.campaignNavigation.element() ).append( instance.campaignEditorHome )
}
}
]
}).dxMultiView( "instance" );
}
EmailCampaignManager.prototype.constructor = EmailCampaignManager;
EmailCampaignManager.prototype.element = function() {
return this.multiView.element();
}
EmailCampaignManager.prototype.newCampaign = function( campaignType ) {
this.updateToolbar( { campaignId : 0 } );
this.createEditor( { campaignType : campaignType, campaignId : 0, campaignName : "" } );
this.switchToEditor();
}
EmailCampaignManager.prototype.onCampaignCreated = function( campaignData ) {
this.currentCampaign = campaignData;
// reload the list and select the new record
this.campaignList.refresh( campaignData.campaignId );
// this.toolbarCampaignName.text( campaignData.campaignName );
this.updateToolbar( campaignData );
}
EmailCampaignManager.prototype.onCampaignUpdated = function( campaignData ) {
this.currentCampaign = campaignData;
// reload the list and select the record
this.campaignList.refresh( campaignData.campaignId );
// this.toolbarCampaignName.text( campaignData.campaignName );
this.updateToolbar( campaignData );
}
EmailCampaignManager.prototype.updateToolbar = function( campaignData ) {
this.toolbarCampaignName.empty();
if( campaignData.campaignId ) {
this.toolbarCampaignName.append( $("
").text( campaignData.campaignName ) );
let locked = campaignData.statusCd && campaignData.statusCd != 'PEN' ? true : false;
if( locked ) {
this.toolbarCampaignName.append( $("").addClass( "dx-icon-lock" ).attr( { title : "This email campaign is read only" } ) );
}
this.deleteCampaignButton.option( { "disabled" : locked })
}
}
EmailCampaignManager.prototype.switchToEditor = function() {
this.multiView.option( "selectedIndex", 1 );
}
EmailCampaignManager.prototype.switchToList = function() {
this.multiView.option( "selectedIndex", 0 );
}
EmailCampaignManager.prototype.editCampaign = function( emailCampaignId ) {
instance = this;
instance.campaignList.dataGrid.selectRows( [ emailCampaignId ], false ).done( function() {
instance.switchToEditor()
})
}
EmailCampaignManager.prototype.createEditor = function( options) {
let instance = this;
if( !( options.campaignId || options.campaignType )) {
// not enough data
return;
}
let tabIndex = 0;
// dispose of the existing editor
if( instance.campaignEditor ) {
tabIndex = instance.campaignEditor.getCurrentTabIndex();
instance.campaignEditor.dispose();
instance.campaignEditor = null;
}
let campaignName = "Unknown Campaign";
if( ! options.campaignId ) {
// for new campaigns we start on the first tab
tabIndex = 0;
if( options.campaignType == "CRM" ) {
campaignName = "New CRM Campaign";
} else if ( options.campaignType == "STD" ) {
campaignName = "New Standard Campaign";
} else {
campaignName = `New ${options.campaignType} Campaign`;
}
} else if ( options.campaignName ) {
campaignName = options.campaignName
}
instance.campaignEditor = new EmailCampaignEditor( options, { tabIndex : tabIndex, campaignManager : instance } );
instance.campaignEditorHome.append( instance.campaignEditor.element() );
instance.updateToolbar( options );
// instance.toolbarCampaignName.text( options.campaignName );
}
EmailCampaignManager.copyCampaign = function( campaignData ) {
// do the save
let saveURL = Fse.Util.updateURL2( $("link#appActionURL").attr( "href" ), { object : "GTM.copyEmailCampaign" } );
return $.ajax( {
url : saveURL,
method : "post",
data : { campaign : JSON.stringify( campaignData ) }
})
}
EmailCampaignManager.deleteCampaign = function( campaignData ) {
// do the save
let saveURL = Fse.Util.updateURL2( $("link#appActionURL").attr( "href" ), { object : "GTM.deleteEmailCampaign" } );
return $.ajax( {
url : saveURL,
method : "post",
data : { campaign : JSON.stringify( campaignData ) }
})
};
EmailCampaignManager.showRecipientMessage = function( data ) {
$("").dxPopup( {
title : data.emailSubject,
height : 640,
hideOnOutsideClick : true,
contentTemplate : function() {
let content = $("
");
// email header
let emailHeader = $("
").css( { "display" : "grid", "grid-template-columns" : "70px auto", "margin-bottom" : "18px" } );
emailHeader
.append( "
TO:
")
.append( $("
").text( data.emailTo ))
.append( "
FROM:
" )
.append( $("
").text( data.emailFrom ))
.append( "
SENT:
")
.append( $("
").text( DevExpress.localization.formatDate( new Date( Date.parse( data.emailDate )), "longDateLongTime" ) ));
content.append( emailHeader );
// actual email
let emailBodyURL = Fse.Util.updateURL2( $("link#PortalDocRootURL").attr( "href") + "/index.cfm?app=GTM.emailManager",
{ operation : "getEmailBody", campaignId : data.campaignId, recipientId : data.recipientId, emailId : data.emailId }
);
let emailMessageViewer = $("