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.LicenseProvider; using CMS.OnlineMarketing; using CMS.SettingsProvider; using CMS.UIControls; using CMS.WebAnalytics; using CMS.ExtendedControls.ActionsConfig; using CMS.DocumentEngine; using TreeNode = CMS.DocumentEngine.TreeNode; public partial class CMSModules_OnlineMarketing_Pages_Content_MVTest_MVTestReport : CMSOnlineMarketingPage { #region "Variables" protected string mSave = null; protected string mPrint = null; protected string mDeleteData = null; private bool isSaved = false; private bool reportLoaded = false; private string testName = String.Empty; private IDisplayReport ucDisplayReport = null; #endregion #region "Methods" protected void Page_Load(object sender, EventArgs e) { CurrentUserInfo cui = CMSContext.CurrentUser; // Check UI Permissions if ((cui == null) || (!cui.IsAuthorizedPerUIElement("CMS.Content", "OnlineMarketing.MVTests"))) { RedirectToCMSDeskUIElementAccessDenied("CMS.Content", "OnlineMarketing.MVTests"); } reportHeader.ActionPerformed += HeaderActions_ActionPerformed; if (DataHelper.GetNotEmpty(URLHelper.GetCurrentDomain(), "") != "") { LicenseHelper.CheckFeatureAndRedirect(URLHelper.GetCurrentDomain(), FeatureEnum.MVTesting); } // Set disabled module info ucDisabledModule.SettingsKeys = "CMSAnalyticsEnabled;CMSMVTEnabled"; ucDisabledModule.InfoTexts.Add(GetString("WebAnalytics.Disabled") + "
"); ucDisabledModule.InfoTexts.Add(GetString("mvt.disabled")); ucDisabledModule.ParentPanel = pnlWarning; // Register actions ComponentEvents.RequestEvents.RegisterForEvent(ComponentEvents.SAVE, (s, args) => { Save(); }); ucDisplayReport = this.LoadUserControl("~/CMSModules/Reporting/Controls/DisplayReport.ascx") as IDisplayReport; pnlContent.Controls.Add((Control)ucDisplayReport); CurrentMaster.PanelContent.CssClass = ""; UIHelper.AllowUpdateProgress = false; // MVTest Info int mvTestID = QueryHelper.GetInteger("mvTestID", 0); MVTestInfo mvInfo = MVTestInfoProvider.GetMVTestInfo(mvTestID); if (mvInfo == null) { return; } // Load combination by current template ID and culture if (pnlCombination.Visible) { int nodeID = QueryHelper.GetInteger("NodeID", 0); // Create condition for current template combinations TreeProvider tree = new TreeProvider(cui); TreeNode node = tree.SelectSingleNode(nodeID, cui.PreferredCultureCode); if (node != null) { usCombination.DocumentID = node.DocumentID; usCombination.PageTemplateID = node.GetUsedPageTemplateId(); } usCombination.ReloadData(true); } testName = mvInfo.MVTestName; ucGraphType.ProcessChartSelectors(false); // Enables/disables radio buttons (based on UI elements) CurrentUserInfo ui = CMSContext.CurrentUser; if (!RequestHelper.IsPostBack()) { if (!ui.IsGlobalAdministrator) { rbCount.Enabled = ui.IsAuthorizedPerUIElement("cms.WebAnalytics", "MVTestConversionCount"); rbRate.Enabled = ui.IsAuthorizedPerUIElement("cms.WebAnalytics", "MVTestConversionRate"); rbValue.Enabled = ui.IsAuthorizedPerUIElement("cms.WebAnalytics", "MVTestConversionValue"); rbCombinations.Enabled = ui.IsAuthorizedPerUIElement("cms.WebAnalytics", "ConversionsByCombination"); bool checkedButton = false; // Check first enabled button foreach (Control ctrl in pnlRadioButtons.Controls) { RadioButton rb = ctrl as RadioButton; if (rb != null) { if (rb.Enabled) { rb.Checked = true; checkedButton = true; break; } } } // No report avaible -> redirect to access denied if (!checkedButton) { RedirectToAccessDenied(GetString("mvtest.noreportavaible")); } } else { // Admin check first radio button rbCount.Checked = true; } } } protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e) { switch (e.CommandName) { case ComponentEvents.SAVE: Save(); break; } } /// /// Display report /// /// If true, display report control is reloaded private void DisplayReport(bool reload) { if (reportLoaded) { return; } String siteName = CMSContext.CurrentSiteName; // Set repors name String conversionCount = "mvtestconversioncount.yearreport;mvtestconversioncount.monthreport;mvtestconversioncount.weekreport;mvtestconversioncount.dayreport;mvtestconversioncount.hourreport"; String conversionRate = "mvtestconversionrate.yearreport;mvtestconversionrate.monthreport;mvtestconversionrate.weekreport;mvtestconversionrate.dayreport;mvtestconversionrate.hourreport"; String conversionValue = "mvtestconversionvalue.yearreport;mvtestconversionvalue.monthreport;mvtestconversionvalue.weekreport;mvtestconversionvalue.dayreport;mvtestconversionvalue.hourreport"; String conversionCombinations = "mvtestconversionsbycombinations.yearreport;mvtestconversionsbycombinations.monthreport;mvtestconversionsbycombinations.weekreport;mvtestconversionsbycombinations.dayreport;mvtestconversionsbycombinations.hourreport"; pnlCombination.Visible = false; // Set proper report name if (rbCount.Checked) { CheckWebAnalyticsUI("MVTestConversionCount"); ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionCount); } if (rbRate.Checked) { CheckWebAnalyticsUI("MVTestConversionRate"); ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionRate); } if (rbValue.Checked) { CheckWebAnalyticsUI("MVTestConversionValue"); ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionValue); } if (rbCombinations.Checked) { CheckWebAnalyticsUI("ConversionsByCombination"); ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionCombinations); pnlCombination.Visible = true; } // Conversion ucConversions.PostbackOnDropDownChange = true; ucConversions.MVTestName = testName; ucConversions.ReloadData(true); // Conversion String conversion = ValidationHelper.GetString(ucConversions.Value, String.Empty); if (conversion == ucConversions.AllRecordValue) { conversion = String.Empty; } // Combination String combination = ValidationHelper.GetString(usCombination.Value, String.Empty); if (combination == usCombination.AllRecordValue) { combination = String.Empty; } // General report data ucDisplayReport.LoadFormParameters = false; ucDisplayReport.DisplayFilter = false; ucDisplayReport.GraphImageWidth = 100; ucDisplayReport.IgnoreWasInit = true; ucDisplayReport.TableFirstColumnWidth = Unit.Percentage(30); ucDisplayReport.UseExternalReload = true; ucDisplayReport.UseProgressIndicator = true; ucDisplayReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval); // Resolve report macros 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] = "pageviews"; parameters[3] = testName; parameters[4] = conversion; parameters[5] = combination; dtp.Rows.Add(parameters); dtp.AcceptChanges(); ucDisplayReport.ReportParameters = dtp.Rows[0]; if (reload) { ucDisplayReport.ReloadData(true); } reportLoaded = true; } protected override void OnPreRender(EventArgs e) { DisplayReport(true); reportHeader.ReportName = ucDisplayReport.ReportName; reportHeader.ReportParameters = ucDisplayReport.ReportParameters; reportHeader.SelectedInterval = ucGraphType.SelectedInterval; reportHeader.ManageDataCodeName = "mvtconversion;" + testName + ";%"; base.OnPreRender(e); } /// /// VerifyRenderingInServerForm. /// /// Control public override void VerifyRenderingInServerForm(Control control) { if (!isSaved) { base.VerifyRenderingInServerForm(control); } } /// /// 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; } #endregion }