using System;
using System.Data;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CMS.CMSHelper;
using CMS.Ecommerce;
using CMS.EcommerceProvider;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
using CMS.SiteProvider;
using CMS.UIControls;
using CMS.ExtendedControls;
[Security(Resource = "CMS.Ecommerce", UIElements = "Configuration.Settings.CheckoutProcess")]
public partial class CMSModules_Ecommerce_Pages_Tools_Configuration_StoreSettings_StoreSettings_CheckoutProcess : CMSEcommerceStoreSettingsPage
{
private SiteInfo configuredSite = null;
///
/// Indicates if header actions are visible.
///
public bool ActionsVisible
{
get
{
return CurrentMaster.HeaderActions.Visible;
}
set
{
CurrentMaster.HeaderActionsPlaceHolder.Visible = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
configuredSite = SiteInfoProvider.GetSiteInfo(ConfiguredSiteID);
// Set up header
CurrentMaster.HeaderActions.Actions = GetHeaderActions();
CurrentMaster.HeaderActions.ActionPerformed += HeaderActions_ActionPerformed;
// Modify page content css class
Panel pnl = CurrentMaster.PanelBody.FindControl("pnlContent") as Panel;
if (pnl != null)
{
pnl.CssClass = "";
}
// Hide buttons - this page has custom header action
ucCheckoutProcess.ShowActions = false;
ucCheckoutProcess.OnModeChanged += new CMSModules_Ecommerce_FormControls_CheckoutProcess.ModeChangedHandler(ucCheckoutProcess_OnModeChanged);
// Register javascript to confirm generate default checkout process
string script = "function ConfirmGlobalProcess() {return confirm(" + ScriptHelper.GetString(GetString("CheckoutProcess.ConfirmGlobalProcess")) + ");}";
ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "ConfirmGlobalProcess", ScriptHelper.GetScript(script));
ucCheckoutProcess.OnCheckoutProcessDefinitionUpdate += new OnCheckoutProcessDefinitionUpdateEventHandler(ucCheckoutProcess_OnCheckoutProcessDefinitionUpdate);
// Load data
if (!RequestHelper.IsPostBack())
{
if (configuredSite != null)
{
ucCheckoutProcess.Value = ECommerceSettings.CheckoutProcess(configuredSite.SiteName);
}
else
{
ucCheckoutProcess.Value = ECommerceSettings.CheckoutProcess(null);
}
ucCheckoutProcess.EnableDefaultCheckoutProcessTypes = true;
}
}
///
/// Handles checkout process controls mode change event.
///
/// Listing mode flag
private void ucCheckoutProcess_OnModeChanged(bool isListingMode)
{
ActionsVisible = isListingMode;
}
///
/// Gets string array representing header actions.
///
/// Array of strings
private string[,] GetHeaderActions()
{
string[,] actions = null;
if (ConfiguredSiteID == 0)
{
actions = new string[2, 9];
}
else
{
actions = new string[3, 9];
actions[2, 0] = HeaderActions.TYPE_HYPERLINK;
actions[2, 1] = GetString("CheckoutProcess.FromGlobalProcess");
actions[2, 2] = "return ConfirmGlobalProcess();";
actions[2, 3] = null;
actions[2, 4] = null;
actions[2, 5] = GetImageUrl("CMSModules/CMS_Ecommerce/processfromglobal.png");
actions[2, 6] = "fromGlobalProcess";
actions[2, 7] = String.Empty;
actions[2, 8] = true.ToString();
}
actions[0, 0] = HeaderActions.TYPE_HYPERLINK;
actions[0, 1] = GetString("CheckoutProcess.NewStep");
actions[0, 2] = "";
actions[0, 3] = null;
actions[0, 4] = null;
actions[0, 5] = GetImageUrl("CMSModules/CMS_Ecommerce/addstep.png");
actions[0, 6] = "newStep";
actions[0, 7] = String.Empty;
actions[0, 8] = true.ToString();
actions[1, 0] = HeaderActions.TYPE_HYPERLINK;
actions[1, 1] = GetString("CheckoutProcess.DefaultProcess");
actions[1, 2] = "return ConfirmDefaultProcess();";
actions[1, 3] = null;
actions[1, 4] = null;
actions[1, 5] = GetImageUrl("CMSModules/CMS_Ecommerce/processreset.png");
actions[1, 6] = "defaultProcess";
actions[1, 7] = String.Empty;
actions[1, 8] = true.ToString();
return actions;
}
///
/// Handles actions performed on the master header.
///
protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e)
{
switch (e.CommandName.ToLowerCSafe())
{
case "newstep":
ucCheckoutProcess.NewStep();
break;
case "defaultprocess":
ucCheckoutProcess.GenerateDefaultProcess();
break;
case "fromglobalprocess":
// Generate only for non-global process
if (ConfiguredSiteID != 0)
{
ucCheckoutProcess.GenerateFromGlobalProcess();
}
break;
}
}
private void ucCheckoutProcess_OnCheckoutProcessDefinitionUpdate(string action)
{
// Check 'EcommerceModify' permission
if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Ecommerce", "ConfigurationModify"))
{
RedirectToCMSDeskAccessDenied("CMS.Ecommerce", "ConfigurationModify");
}
switch (action.ToLowerCSafe())
{
case "update":
case "delete":
case "moveup":
case "movedown":
// Update checkout process xml definition in database
SaveProcess();
break;
case "defaultprocess":
// Set default checkout process
ucCheckoutProcess.Value = ShoppingCart.DEFAULT_CHECKOUT_PROCESS;
ucCheckoutProcess.ReloadData();
SaveProcess();
break;
case "fromglobalprocess":
// Set default checkout process
if (configuredSite != null)
{
ucCheckoutProcess.Value = ECommerceSettings.CheckoutProcess(null);
ucCheckoutProcess.ReloadData();
SaveProcess();
}
break;
}
}
private void SaveProcess()
{
if (configuredSite != null)
{
SettingsKeyProvider.SetValue(configuredSite.SiteName + "." + ECommerceSettings.CHECKOUT_PROCESS, ucCheckoutProcess.Value.ToString());
}
else
{
SettingsKeyProvider.SetValue(ECommerceSettings.CHECKOUT_PROCESS, ucCheckoutProcess.Value.ToString());
}
ucCheckoutProcess.Information = GetString("General.ChangesSaved");
}
}