using System;
using System.Globalization;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.OnlineMarketing;
using CMS.SettingsProvider;
using CMS.UIControls;
using CMS.WebAnalytics;
using CMS.DocumentEngine;
using CMS.SiteProvider;
using CMS.ExtendedControls;
public partial class CMSModules_OnlineMarketing_Pages_Tools_MVTest_MVTReport : CMSMVTestPage
{
#region "Variables"
private bool isSaved = false;
private IDisplayReport ucDisplayReport;
#endregion
#region "Properties"
///
/// Messages placeholder
///
public override MessagesPlaceHolder MessagesPlaceHolder
{
get
{
return plcMess;
}
}
#endregion
#region "Methods"
protected void Page_Load(object sender, EventArgs e)
{
CheckWebAnalyticsUI(QueryHelper.GetString("datacodename", String.Empty));
reportHeader.ActionPerformed += HeaderActions_ActionPerformed;
ucDisplayReport = this.LoadUserControl("~/CMSModules/Reporting/Controls/DisplayReport.ascx") as IDisplayReport;
pnlDisplayReport.Controls.Add((Control)ucDisplayReport);
CurrentMaster.PanelContent.CssClass = "";
UIHelper.AllowUpdateProgress = false;
String siteName = CMSContext.CurrentSiteName;
// Set disabled module info
ucDisabledModule.SettingsKeys = "CMSAnalyticsEnabled;CMSMVTEnabled";
ucDisabledModule.InfoTexts.Add(GetString("WebAnalytics.Disabled") + "");
ucDisabledModule.InfoTexts.Add(GetString("mvt.disabled"));
ucDisabledModule.ParentPanel = pnlDisabled;
ucMVTests.ReturnColumnName = "MVTestName";
ucMVTests.AllowEmpty = false;
ucMVTests.PostbackOnChange = true;
}
///
/// VerifyRenderingInServerForm.
///
/// Control
public override void VerifyRenderingInServerForm(Control control)
{
if (!isSaved)
{
base.VerifyRenderingInServerForm(control);
}
}
protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e)
{
switch (e.CommandName)
{
case ComponentEvents.SAVE:
Save();
break;
}
}
protected override void OnPreRender(EventArgs e)
{
DisplayReport(true);
reportHeader.ReportName = ucDisplayReport.ReportName;
reportHeader.ReportParameters = ucDisplayReport.ReportParameters;
reportHeader.SelectedInterval = ucGraphType.SelectedInterval;
reportHeader.ManageDataCodeName = "mvtest";
base.OnPreRender(e);
}
///
/// Saves the graph report.
///
private void Save()
{
// Check web analytics save permission
if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.WebAnalytics", "SaveReports"))
{
RedirectToCMSDeskAccessDenied("CMS.WebAnalytics", "SaveReports");
}
DisplayReport(false);
// Saves the report
isSaved = true;
if (ucDisplayReport.SaveReport() > 0)
{
ShowConfirmation(String.Format(GetString("Analytics_Report.ReportSavedTo"), ucDisplayReport.ReportDisplayName + " - " + DateTime.Now.ToString()));
}
isSaved = false;
}
///
/// Displays the report
///
/// If true display reload control is reloaded
private void DisplayReport(bool reload)
{
ucGraphType.ProcessChartSelectors(false);
// Prepare report parameters
DataTable dtp = new DataTable();
dtp.Columns.Add("FromDate", typeof(DateTime));
dtp.Columns.Add("ToDate", typeof(DateTime));
dtp.Columns.Add("CodeName", typeof(string));
dtp.Columns.Add("MVTestName", typeof(string));
dtp.Columns.Add("ConversionName", typeof(string));
dtp.Columns.Add("CombinationName", typeof(string));
object[] parameters = new object[6];
parameters[0] = ucGraphType.From;
parameters[1] = ucGraphType.To;
parameters[2] = "";
parameters[3] = ValidationHelper.GetString(ucMVTests.Value, String.Empty);
// Conversion
String conversion = ValidationHelper.GetString(ucConversions.Value, String.Empty);
if (conversion == ucConversions.AllRecordValue)
{
conversion = String.Empty;
}
parameters[4] = ValidationHelper.GetString(conversion, String.Empty);
// Combination
String combination = ValidationHelper.GetString(usCombination.Value, String.Empty);
if (combination == usCombination.AllRecordValue)
{
combination = String.Empty;
}
parameters[5] = ValidationHelper.GetString(combination, String.Empty);
dtp.Rows.Add(parameters);
dtp.AcceptChanges();
string reportName = ucGraphType.GetReportName(QueryHelper.GetString("reportCodeName", String.Empty));
// Hide show selectors by report name
if (reportName.Contains("mvtestconversionsbycombinations"))
{
pnlConversion.Visible = false;
}
else
{
pnlCultures.Visible = false;
pnlCombination.Visible = false;
}
// Load conversion by mvt code name
if (pnlConversion.Visible)
{
ucConversions.MVTestName = ValidationHelper.GetString(ucMVTests.Value, String.Empty);
ucConversions.PostbackOnDropDownChange = true;
ucConversions.ReloadData(true);
}
// Load combination by mvt name
if (pnlCombination.Visible)
{
string name = ValidationHelper.GetString(ucMVTests.Value, String.Empty);
if ((name != String.Empty) && (name != ucMVTests.AllRecordValue))
{
string cultureWhere = String.Empty;
string siteName = CMSContext.CurrentSiteName;
MVTestInfo mvt = MVTestInfoProvider.GetMVTestInfo(name, siteName);
if (mvt != null)
{
string culture = ValidationHelper.GetString(usCulture.Value, String.Empty);
if ((culture != String.Empty) && (culture != usCulture.AllRecordValue))
{
cultureWhere = " AND DocumentCulture = '" + culture.Replace("'", "''") + "'";
}
// Get the used page template column
string colName = "DocumentPageTemplateID";
try
{
PageInfo pi = PageInfoProvider.GetPageInfo(siteName, mvt.MVTestPage, culture, null,
SiteInfoProvider.CombineWithDefaultCulture(siteName));
if (pi != null)
{
colName = pi.GetUsedPageTemplateIdColumn();
}
}
catch{}
// Prepare where condition
string where = String.Format("MVTCombinationPageTemplateID IN (SELECT {0} FROM View_CMS_Tree_Joined WHERE NodeSiteID = {1} AND NodeAliasPath ='{2}'{3})", colName, CMSContext.CurrentSiteID, SqlHelperClass.GetSafeQueryString(mvt.MVTestPage), cultureWhere);
usCombination.WhereCondition = SqlHelperClass.AddWhereCondition(usCombination.WhereCondition, where);
usCombination.ReloadData(true);
}
}
}
// Set report
ucDisplayReport.ReportName = reportName;
if (!ucDisplayReport.IsReportLoaded())
{
ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), reportName));
}
else
{
ucDisplayReport.LoadFormParameters = false;
ucDisplayReport.DisplayFilter = false;
ucDisplayReport.ReportParameters = dtp.Rows[0];
ucDisplayReport.GraphImageWidth = 100;
ucDisplayReport.IgnoreWasInit = true;
ucDisplayReport.UseExternalReload = true;
ucDisplayReport.UseProgressIndicator = true;
ucDisplayReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);
// Reload data only if parameter is set
if (reload)
{
ucDisplayReport.ReloadData(true);
}
}
}
#endregion
}