protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); string printDialogUrl = string.Format("{0}?reportname={1}¶meters={2}", ResolveUrl(PrintPageURL), ReportName, AnalyticsHelper.GetQueryStringParameters(ReportParameters)); string printScript = string.Format("myModalDialog('{0}&UILang={1}&hash={2}','PrintReport {3}',800,700);return false", printDialogUrl, CultureInfo.CurrentUICulture.IetfLanguageTag, QueryHelper.GetHash(printDialogUrl), ReportName); string subscriptionScript = String.Format("modalDialog('{0}?reportname={1}¶meters={2}&interval={3}','Subscription',{4},{5});return false", ResolveUrl("~/CMSModules/Reporting/Dialogs/EditSubscription.aspx"), ReportName, AnalyticsHelper.GetQueryStringParameters(ReportParameters), HitsIntervalEnumFunctions.HitsConversionToString(SelectedInterval), AnalyticsHelper.SUBSCRIPTION_WINDOW_WIDTH, AnalyticsHelper.SUBSCRIPTION_WINDOW_HEIGHT); string refreshScript = "function RefreshPage() {" + ControlsHelper.GetPostBackEventReference(this, "") + "};"; ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "RefreshScript", ScriptHelper.GetScript(refreshScript)); // Register special script for print window ScriptHelper.RegisterPrintDialogScript(Page); ScriptHelper.RegisterDialogScript(Page); // Scripts have to be assigned when ReportName and ReportParameters are available! AssignClientScriptToAction(mPrintAction, printScript); AssignClientScriptToAction(mSubscriptionAction, subscriptionScript); }
/// <summary> /// OnPreRender event handler /// </summary> /// <param name="e"></param> protected override void OnPreRender(EventArgs e) { InitializeActions(); // Select action graphIntervalElem.SelectedActionName = HitsIntervalEnumFunctions.HitsConversionToString(SelectedValue); base.OnPreRender(e); }
/// <summary> /// Displays the report /// </summary> /// <param name="reload">If true display reload control is reloaded</param> private void DisplayReport(bool reload) { if (reportDisplayed) { return; } 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("TestName", typeof(string)); dtp.Columns.Add("VariationName", typeof(string)); object[] parameters = new object[5]; parameters[0] = ucGraphType.From; parameters[1] = ucGraphType.To; parameters[2] = "abtests"; parameters[3] = ValidationHelper.GetString(ucABTests.Value, String.Empty); parameters[4] = ValidationHelper.GetString(ucSelectVariation.Value, String.Empty); dtp.Rows.Add(parameters); dtp.AcceptChanges(); String reportName = ucGraphType.GetReportName("abtestconversionsbyvariations.yearreport;abtestconversionsbyvariations.monthreport;abtestconversionsbyvariations.weekreport;abtestconversionsbyvariations.dayreport;abtestconversionsbyvariations.hourreport"); ucDisplayReport.ReportName = reportName; // Conversion count 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); if (reload) { ucDisplayReport.ReloadData(true); } } reportDisplayed = true; }
/// <summary> /// Updates the specified graph type controls depending on their visibility. /// </summary> private void InitializeActions() { var visibleGraphTypes = new HashSet <HitsIntervalEnum>(); foreach (var token in VisibleGraphTypes.Split(';')) { var visibleGraphType = HitsIntervalEnumFunctions.StringToHitsConversion(token); visibleGraphTypes.Add(visibleGraphType); } if (visibleGraphTypes.Contains(HitsIntervalEnum.Hour)) { graphIntervalElem.Actions.Add(new CMSButtonGroupAction { Name = "hour", Text = GetString("general.hour"), }); } if (visibleGraphTypes.Contains(HitsIntervalEnum.Day)) { graphIntervalElem.Actions.Add(new CMSButtonGroupAction { Name = "day", Text = GetString("general.day"), }); } if (visibleGraphTypes.Contains(HitsIntervalEnum.Week)) { graphIntervalElem.Actions.Add(new CMSButtonGroupAction { Name = "week", Text = GetString("general.week"), }); } if (visibleGraphTypes.Contains(HitsIntervalEnum.Month)) { graphIntervalElem.Actions.Add(new CMSButtonGroupAction { Name = "month", Text = GetString("general.month"), }); } if (visibleGraphTypes.Contains(HitsIntervalEnum.Year)) { graphIntervalElem.Actions.Add(new CMSButtonGroupAction { Name = "year", Text = GetString("general.year"), }); } }
/// <summary> /// Displays the report using the current graph type. /// </summary> private void DisplayReport() { // Create control to display the specified report Control control = LoadUserControl("~/CMSModules/Reporting/Controls/DisplayReport.ascx"); IDisplayReport ucDisplayReport = control as IDisplayReport; if (ucDisplayReport == null) { return; } pnlDisplayReport.Controls.Add(control); // Social media insights do not provide hourly reports ucGraphType.VisibleGraphTypes = "year;month;week;day"; ucGraphType.ProcessChartSelectors(false); // Choose a report using the current graph type string reportName = ucGraphType.GetReportName(ReportCodeNames); ucDisplayReport.ReportName = reportName; if (!ucDisplayReport.IsReportLoaded()) { ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), HTMLHelper.HTMLEncode(reportName))); } else { ucDisplayReport.LoadFormParameters = false; ucDisplayReport.DisplayFilter = false; ucDisplayReport.ReportParameters = CreateReportParameters(); ucDisplayReport.GraphImageWidth = 100; ucDisplayReport.IgnoreWasInit = true; ucDisplayReport.UseExternalReload = true; ucDisplayReport.UseProgressIndicator = true; ucDisplayReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval); ucDisplayReport.ReloadData(true); } }
/// <summary> /// Sets time controls (dropdown with interval and textbox with interval value). Returns true if time controls are to be hided. /// </summary> private bool SetTimeControls() { HitsIntervalEnum interval = HitsIntervalEnumFunctions.StringToHitsConversion(mIntervalStr); DateTime from = DateTimeHelper.ZERO_TIME; DateTime to = DateTimeHelper.ZERO_TIME; object dcFrom = null; object dcTo = null; if (mParameters != null) { // Load fromdate and todate from report parameters (passed from query string) dcFrom = mParameters.Table.Columns["FromDate"]; dcTo = mParameters.Table.Columns["ToDate"]; if (dcFrom != null) { from = ValidationHelper.GetDateTime(mParameters["FromDate"], DateTimeHelper.ZERO_TIME); } if (dcTo != null) { to = ValidationHelper.GetDateTime(mParameters["ToDate"], DateTimeHelper.ZERO_TIME); } } // If one contains zero time, set all time radio button. In such situation, report can maintain unlimited fromdate or todate. if ((from == DateTimeHelper.ZERO_TIME) || (to == DateTimeHelper.ZERO_TIME)) { mCheckLast = false; } // If one is not set, hide limitdata panel if ((dcFrom == null) || (dcTo == null)) { ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_DAY; return(true); } int diff = 0; bool noAddToDiff = false; // If interval is not known, but 'from' and 'to' is set (f.e. preview, webpart,..) - compute interval from date values if (interval == HitsIntervalEnum.None) { String sFrom = ValidationHelper.GetString(mParameters["FromDate"], String.Empty).ToLowerCSafe(); String sTo = ValidationHelper.GetString(mParameters["ToDate"], String.Empty).ToLowerCSafe(); mCheckLast = true; if (MacroProcessor.ContainsMacro(sFrom) && MacroProcessor.ContainsMacro(sTo)) { if (sFrom.Contains("addhours")) { interval = HitsIntervalEnum.Hour; } else if (sFrom.Contains("adddays")) { interval = HitsIntervalEnum.Day; } else if (sFrom.Contains("addweeks")) { interval = HitsIntervalEnum.Week; } else if (sFrom.Contains("addmonths")) { interval = HitsIntervalEnum.Month; } else if (sFrom.Contains("addyears")) { interval = HitsIntervalEnum.Year; } var macroResolverSettings = new MacroSettings { AvoidInjection = false, Culture = CultureHelper.EnglishCulture.Name }; to = DateTime.Now; from = ValidationHelper.GetDateTime(MacroResolver.Resolve(sFrom, macroResolverSettings), DateTime.Now, macroResolverSettings.Culture); noAddToDiff = true; } else if ((from != DateTimeHelper.ZERO_TIME) && (to != DateTimeHelper.ZERO_TIME)) { // Set interval as greatest possible interval (365+ days -> years, 30+days->months ,...) diff = (int)(to - from).TotalDays; if (diff >= 365) { interval = HitsIntervalEnum.Year; } else if (diff >= 30) { interval = HitsIntervalEnum.Month; } else if (diff >= 7) { interval = HitsIntervalEnum.Week; } else if (diff >= 1) { interval = HitsIntervalEnum.Day; } else { interval = HitsIntervalEnum.Hour; } } } // Set default period and diff based on interval switch (interval) { case HitsIntervalEnum.Year: diff = to.Year - from.Year; ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_MONTH; break; case HitsIntervalEnum.Month: diff = ((to.Year - from.Year) * 12) + to.Month - from.Month; ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_MONTH; break; case HitsIntervalEnum.Week: diff = (int)(to - from).TotalDays / 7; ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_WEEK; break; case HitsIntervalEnum.Day: diff = (int)(to - from).TotalDays; ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_DAY; break; case HitsIntervalEnum.Hour: diff = (int)(to - from).TotalHours; ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_HOUR; break; case HitsIntervalEnum.None: mCheckLast = false; break; } // Add current if (!noAddToDiff) { diff++; } if (interval != HitsIntervalEnum.None) { drpLast.SelectedValue = HitsIntervalEnumFunctions.HitsConversionToString(interval); } if (!mCheckLast) { // Defaul settings for no time ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_DAY; } if (diff != 0) { txtLast.Text = diff.ToString(); } return(false); }
/// <summary> /// Display report /// </summary> /// <param name="reload">If true, display report control is reloaded</param> private void DisplayReport(bool reload) { if (mReportLoaded) { return; } // Set repors name const string CONVERSION_COUNT = "mvtestconversioncount.yearreport;mvtestconversioncount.monthreport;mvtestconversioncount.weekreport;mvtestconversioncount.dayreport;mvtestconversioncount.hourreport"; const string CONVERSION_RATE = "mvtestconversionrate.yearreport;mvtestconversionrate.monthreport;mvtestconversionrate.weekreport;mvtestconversionrate.dayreport;mvtestconversionrate.hourreport"; const string CONVERSION_VALUE = "mvtestconversionvalue.yearreport;mvtestconversionvalue.monthreport;mvtestconversionvalue.weekreport;mvtestconversionvalue.dayreport;mvtestconversionvalue.hourreport"; const string CONVERSION_COMBINATIONS = "mvtestconversionsbycombinations.yearreport;mvtestconversionsbycombinations.monthreport;mvtestconversionsbycombinations.weekreport;mvtestconversionsbycombinations.dayreport;mvtestconversionsbycombinations.hourreport"; pnlCombination.Visible = false; // Set proper report name if (rbCount.Checked) { mUcDisplayReport.ReportName = ucGraphType.GetReportName(CONVERSION_COUNT); } if (rbRate.Checked) { mUcDisplayReport.ReportName = ucGraphType.GetReportName(CONVERSION_RATE); } if (rbValue.Checked) { mUcDisplayReport.ReportName = ucGraphType.GetReportName(CONVERSION_VALUE); } if (rbCombinations.Checked) { mUcDisplayReport.ReportName = ucGraphType.GetReportName(CONVERSION_COMBINATIONS); pnlCombination.Visible = true; } // Conversion ucConversions.PostbackOnDropDownChange = true; ucConversions.MVTestName = mTestName; 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 mUcDisplayReport.LoadFormParameters = false; mUcDisplayReport.DisplayFilter = false; mUcDisplayReport.GraphImageWidth = 100; mUcDisplayReport.IgnoreWasInit = true; mUcDisplayReport.TableFirstColumnWidth = Unit.Percentage(30); mUcDisplayReport.UseExternalReload = true; mUcDisplayReport.UseProgressIndicator = true; mUcDisplayReport.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] = mTestName; parameters[4] = conversion; parameters[5] = combination; dtp.Rows.Add(parameters); dtp.AcceptChanges(); mUcDisplayReport.ReportParameters = dtp.Rows[0]; if (reload) { mUcDisplayReport.ReloadData(true); } mReportLoaded = true; }
/// <summary> /// Displays the given report /// </summary> private void DisplayReport() { // If report was already displayed .. return if (reportDisplayed) { return; } ucGraphType.ProcessChartSelectors(false); // Prepare report parameters DataTable reportParameters = new DataTable(); // In case of hidden datetime -> for save purpose pass from (to) as now to query parameter DateTime from = ((ucGraphType.From == DateTimeHelper.ZERO_TIME) && !pnlHeader.Visible) ? DateTime.Now : ucGraphType.From; DateTime to = ((ucGraphType.To == DateTimeHelper.ZERO_TIME) && !pnlHeader.Visible) ? DateTime.Now : ucGraphType.To; reportParameters.Columns.Add("FromDate", typeof(DateTime)); reportParameters.Columns.Add("ToDate", typeof(DateTime)); reportParameters.Columns.Add("CodeName", typeof(string)); reportParameters.Columns.Add("CampaignName", typeof(string)); reportParameters.Columns.Add("ConversionName", typeof(string)); reportParameters.Columns.Add("Goal", typeof(string)); reportParameters.Columns.Add("SiteID", typeof(int)); object[] parameters = new object[7]; parameters[0] = (mAllowNoTimeSelection && from == DateTimeHelper.ZERO_TIME) ? (DateTime?)null : from; parameters[1] = (mAllowNoTimeSelection && to == DateTimeHelper.ZERO_TIME) ? (DateTime?)null : to; parameters[2] = dataCodeName; parameters[3] = String.Empty; parameters[4] = String.Empty; parameters[5] = ucReportHeader.SelectedGoal; parameters[6] = ucReportHeader.SelectedSiteID; // Get report name from query String reportName = ucGraphType.GetReportName(reportCodeNames); // Filter campaign if any campaign selected string campaignName = ValidationHelper.GetString(ucReportHeader.SelectedCampaign, String.Empty); if ((campaignName != ucReportHeader.AllRecordValue) && (!String.IsNullOrEmpty(campaignName))) { parameters[3] = campaignName; } if (conversionID == 0) { // Filter conversion String conversionName = ValidationHelper.GetString(ucReportHeader.SelectedConversion, String.Empty); if ((conversionName != ucReportHeader.AllRecordValue) && (!String.IsNullOrEmpty(conversionName))) { parameters[4] = conversionName; } } else { ConversionInfo ci = ConversionInfoProvider.GetConversionInfo(conversionID); if (ci != null) { parameters[4] = ci.ConversionName; mDeleteParam = "singleconversion;" + ci.ConversionName; } } reportParameters.Rows.Add(parameters); reportParameters.AcceptChanges(); mUcDisplayReport.ReportName = reportName; // Set display report if (!mUcDisplayReport.IsReportLoaded()) { ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), HTMLHelper.HTMLEncode(reportName))); } else { mUcDisplayReport.LoadFormParameters = false; mUcDisplayReport.DisplayFilter = false; mUcDisplayReport.ReportParameters = reportParameters.Rows[0]; mUcDisplayReport.GraphImageWidth = 100; mUcDisplayReport.IgnoreWasInit = true; mUcDisplayReport.UseExternalReload = true; mUcDisplayReport.UseProgressIndicator = true; mUcDisplayReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval); mUcDisplayReport.ReloadData(true); } // Mark as report displayed reportDisplayed = true; }
protected override void OnPreRender(EventArgs e) { 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)); object[] parameters = new object[5]; parameters[0] = ucGraphType.From; parameters[1] = ucGraphType.To; parameters[2] = "mvtests"; String reportName = ucGraphType.GetReportName("mvtests.yearreport;mvtests.monthreport;mvtests.weekreport;mvtests.dayreport;mvtests.hourreport"); String conversionRateReportName = ucGraphType.GetReportName("mvtestsconversionrate.yearreport;mvtestsconversionrate.monthreport;mvtestsconversionrate.weekreport;mvtestsconversionrate.dayreport;mvtestsconversionrate.hourreport"); String valuesReportName = ucGraphType.GetReportName("mvtestsconversionvalue.yearreport;mvtestsconversionvalue.monthreport;mvtestsconversionvalue.weekreport;mvtestsconversionvalue.dayreport;mvtestsconversionvalue.hourreport"); string MVTestName = ValidationHelper.GetString(ucMVTests.Value, String.Empty); if (MVTestName == ucMVTests.AllRecordValue) { MVTestName = String.Empty; } else if (!String.IsNullOrEmpty(MVTestName)) { listElem.Grid.WhereCondition = SqlHelperClass.AddWhereCondition(listElem.Grid.WhereCondition, "MVTestName='" + SqlHelperClass.GetSafeQueryString(MVTestName, false) + "'"); } switch (ucGraphType.SelectedInterval) { case HitsIntervalEnum.Hour: listElem.Grid.Query = "om.mvtest.selectwithhitsHours"; break; case HitsIntervalEnum.Day: listElem.Grid.Query = "om.mvtest.selectwithhitsDays"; break; case HitsIntervalEnum.Week: listElem.Grid.Query = "om.mvtest.selectwithhitsWeeks"; break; case HitsIntervalEnum.Month: listElem.Grid.Query = "om.mvtest.selectwithhitsMonths"; break; case HitsIntervalEnum.Year: listElem.Grid.Query = "om.mvtest.selectwithhitsYears"; break; } listElem.Grid.QueryParameters = new QueryDataParameters(); listElem.Grid.QueryParameters.Add("@From", ucGraphType.From); listElem.Grid.QueryParameters.Add("@To", ucGraphType.To.AddSeconds(1)); listElem.Grid.Columns = "MVTestDisplayName,MVTestID,MVTestCulture,MVTestPage,MVTestOpenFrom,MVTestOpenTo,MVTestEnabled,MVTestConversions,MVTestSiteID,HitsValue"; parameters[3] = MVTestName; parameters[4] = String.Empty; dtp.Rows.Add(parameters); dtp.AcceptChanges(); ucDisplayReport.ReportName = reportName; ucTestValuesReport.ReportName = valuesReportName; ucConversionRateReport.ReportName = conversionRateReportName; // Conversion count 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); ucDisplayReport.ReloadData(true); } // Conversion value if (!ucTestValuesReport.IsReportLoaded()) { ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), valuesReportName)); } else { ucTestValuesReport.LoadFormParameters = false; ucTestValuesReport.DisplayFilter = false; ucTestValuesReport.ReportParameters = dtp.Rows[0]; ucTestValuesReport.GraphImageWidth = 50; ucTestValuesReport.AreaMaxWidth = ucDisplayReport.AreaMaxWidth; ucTestValuesReport.IgnoreWasInit = true; ucTestValuesReport.UseExternalReload = true; ucTestValuesReport.UseProgressIndicator = true; ucTestValuesReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval); ucTestValuesReport.ReloadData(true); } // Conversion rate if (!ucConversionRateReport.IsReportLoaded()) { ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), conversionRateReportName)); } else { ucConversionRateReport.LoadFormParameters = false; ucConversionRateReport.DisplayFilter = false; ucConversionRateReport.ReportParameters = dtp.Rows[0]; ucConversionRateReport.GraphImageWidth = 50; ucConversionRateReport.AreaMaxWidth = ucDisplayReport.AreaMaxWidth; ucTestValuesReport.UseExternalReload = true; ucTestValuesReport.UseProgressIndicator = true; ucConversionRateReport.IgnoreWasInit = true; ucConversionRateReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval); ucConversionRateReport.ReloadData(true); } base.OnPreRender(e); }
/// <summary> /// Display report with given criteria. /// </summary> public void DisplayReport(bool intervalChanged) { // If load form parameters are loaded display report calls reload on onInit (time charts not allowed) if (LoadFormParameters) { return; } if (mReportLoaded) { return; } if (mUcDisplayReport == null) { return; } ucGraphTypePeriod.ProcessChartSelectors(intervalChanged); if (pnlPeriodSelectors.Visible && !IsValidInterval()) { ShowError(GetString("analt.invalidinterval")); return; } mUcDisplayReport.ReportName = ucGraphTypePeriod.GetReportName(ReportsCodeName); mUcDisplayReport.GraphImageWidth = 100; mUcDisplayReport.IgnoreWasInit = true; if (pnlPeriodSelectors.Visible) { // 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("FirstCategory", typeof(string)); dtp.Columns.Add("SecondCategory", typeof(string)); dtp.Columns.Add("Direct", typeof(string)); dtp.Columns.Add("Search", typeof(string)); dtp.Columns.Add("Referring", typeof(string)); object[] parameters = new object[8]; parameters[0] = ucGraphTypePeriod.From; parameters[1] = ucGraphTypePeriod.To; parameters[2] = DataName; parameters[3] = HitLogProvider.VISITORS_FIRST; parameters[4] = HitLogProvider.VISITORS_RETURNING; parameters[5] = HitLogProvider.REFERRINGSITE + "_direct"; parameters[6] = HitLogProvider.REFERRINGSITE + "_search"; parameters[7] = HitLogProvider.REFERRINGSITE + "_referring"; dtp.Rows.Add(parameters); dtp.AcceptChanges(); if (!mUcDisplayReport.IsReportLoaded()) { ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), mUcDisplayReport.ReportName)); } else { mUcDisplayReport.LoadFormParameters = false; mUcDisplayReport.DisplayFilter = false; mUcDisplayReport.ReportParameters = dtp.Rows[0]; mUcDisplayReport.UseExternalReload = true; mUcDisplayReport.UseProgressIndicator = true; mUcDisplayReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(SelectedInterval); } } mUcDisplayReport.ReloadData(true); mReportLoaded = true; }
protected override void OnPreRender(EventArgs e) { string dataCodeName = string.IsNullOrEmpty(ManageDataCodeName) ? QueryHelper.GetString("dataCodeName", string.Empty) : ManageDataCodeName; string deleteScript = string.Format("modalDialog('{0}?statcodename={1}','AnalyticsManageData',{2},{3});", ResolveUrl("~/CMSModules/Reporting/WebAnalytics/Analytics_ManageData.aspx"), dataCodeName, AnalyticsHelper.MANAGE_WINDOW_WIDTH, AnalyticsHelper.MANAGE_WINDOW_HEIGHT); string printScript = string.Format("myModalDialog('{0}?reportname={1}¶meters={2}&UILang={3}','PrintReport {1}',800,700);return false", ResolveUrl(PrintPageURL), ReportName, AnalyticsHelper.GetQueryStringParameters(ReportParameters), CultureInfo.CurrentUICulture.IetfLanguageTag); string subscriptionScript = String.Format("modalDialog('{0}?reportname={1}¶meters={2}&interval={3}','Subscription',{4},{5});return false", ResolveUrl("~/CMSModules/Reporting/Dialogs/EditSubscription.aspx"), ReportName, AnalyticsHelper.GetQueryStringParameters(ReportParameters), HitsIntervalEnumFunctions.HitsConversionToString(SelectedInterval), AnalyticsHelper.SUBSCRIPTION_WINDOW_WIDTH, AnalyticsHelper.SUBSCRIPTION_WINDOW_HEIGHT); string refreshScript = "function RefreshPage() {" + ControlsHelper.GetPostBackEventReference(this, "") + "};"; ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "RefreshScript", ScriptHelper.GetScript(refreshScript)); // Register special script for print window ScriptHelper.RegisterPrintDialogScript(Page); headerActions.PanelCssClass = PanelCssClass; // Create header actions SaveAction save = new SaveAction(Page); headerActions.ActionsList.Add(save); // Print HeaderAction print = new HeaderAction { ControlType = HeaderActionTypeEnum.LinkButton, Text = GetString("Analytics_Report.Print"), SmallImageUrl = GetImageUrl("General/printSmall.png"), OnClientClick = printScript }; headerActions.ActionsList.Add(print); CurrentUserInfo cui = CMSContext.CurrentUser; // Manage data if (cui.IsAuthorizedPerResource("CMS.WebAnalytics", "ManageData") && DisplayManageData) { HeaderAction delete = new HeaderAction { ControlType = HeaderActionTypeEnum.LinkButton, Text = GetString("Analytics_Report.ManageData"), SmallImageUrl = GetImageUrl("CMSModules/CMS_Reporting/managedataSmall.png"), OnClientClick = deleteScript }; headerActions.ActionsList.Add(delete); } // Report subscription enabled test GeneralizedInfo ri = ModuleCommands.ReportingGetReportInfo(ReportName); if (ri != null) { bool enableSubscription = ValidationHelper.GetBoolean(ri.GetValue("ReportEnableSubscription"), true); // Show enable subscription only for users with subscribe or modify. enableSubscription &= (cui.IsAuthorizedPerResource("cms.reporting", "subscribe") || cui.IsAuthorizedPerResource("cms.reporting", "modify")); if (enableSubscription) { // Subscription HeaderAction subscription = new HeaderAction { ControlType = HeaderActionTypeEnum.LinkButton, Text = GetString("notifications.subscribe"), SmallImageUrl = GetImageUrl("CMSModules/CMS_Reporting/Subscription.png"), OnClientClick = subscriptionScript }; headerActions.ActionsList.Add(subscription); } } base.OnPreRender(e); }
protected override void OnPreRender(EventArgs e) { var ui = MembershipContext.AuthenticatedUser; if (!ui.IsAuthorizedPerUIElement("CMS.Content", "Reports")) { RedirectToUIElementAccessDenied("CMS.Content", "Reports"); } // Check read for web analytics if (!ui.IsAuthorizedPerResource("cms.webanalytics", "Read")) { RedirectToAccessDenied(String.Format(GetString("general.permissionresource"), "Read", "Web analytics")); } // Set disabled module info ucDisabledModule.ParentPanel = pnlDisabled; mUcDisplayReport = (IDisplayReport)LoadUserControl("~/CMSModules/Reporting/Controls/DisplayReport.ascx"); pnlContent.Controls.Add((Control)mUcDisplayReport); ucGraphType.ProcessChartSelectors(false); CurrentMaster.PanelContent.CssClass = String.Empty; UIHelper.AllowUpdateProgress = false; // General report data if (IsFilePageType(Node.NodeClassName)) { reportTypePnl.Visible = false; mUcDisplayReport.ReportName = "pagereports.file"; } else { mUcDisplayReport.ReportName = rbContent.Checked ? "pagereports.content" : "pagereports.Traffic"; } mUcDisplayReport.LoadFormParameters = false; mUcDisplayReport.DisplayFilter = false; mUcDisplayReport.GraphImageWidth = 100; mUcDisplayReport.IgnoreWasInit = true; mUcDisplayReport.TableFirstColumnWidth = Unit.Percentage(30); mUcDisplayReport.UseExternalReload = true; mUcDisplayReport.UseProgressIndicator = true; mUcDisplayReport.SetDefaultDynamicMacros((int)ucGraphType.SelectedInterval); EditedObject = Node; // 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("NodeID", typeof(int)); dtp.Columns.Add("CultureCode", typeof(string)); object[] parameters = new object[5]; parameters[0] = ucGraphType.From; parameters[1] = ucGraphType.To; parameters[2] = "pageviews"; parameters[3] = Node.NodeID; parameters[4] = Node.DocumentCulture; dtp.Rows.Add(parameters); dtp.AcceptChanges(); mUcDisplayReport.ReportParameters = dtp.Rows[0]; mUcDisplayReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval); mUcDisplayReport.ReloadData(true); DocumentManager.RegisterSaveChangesScript = false; base.OnPreRender(e); }
protected override void OnPreRender(EventArgs e) { string dataCodeName = string.IsNullOrEmpty(ManageDataCodeName) ? QueryHelper.GetString("dataCodeName", string.Empty) : ManageDataCodeName; string deleteDialogUrl = ResolveUrl("~/CMSModules/Reporting/WebAnalytics/Analytics_ManageData.aspx"); deleteDialogUrl = URLHelper.AddParameterToUrl(deleteDialogUrl, "statcodename", URLHelper.URLEncode(dataCodeName)); deleteDialogUrl = URLHelper.AddParameterToUrl(deleteDialogUrl, "hash", QueryHelper.GetHash(deleteDialogUrl)); string deleteScript = string.Format("modalDialog('{0}','AnalyticsManageData',{1},{2});", deleteDialogUrl, 680, 350); string printDialogUrl = string.Format("{0}?reportname={1}¶meters={2}", ResolveUrl(PrintPageURL), ReportName, AnalyticsHelper.GetQueryStringParameters(ReportParameters)); string printScript = string.Format("myModalDialog('{0}&UILang={1}&hash={2}','PrintReport {3}',800,700);return false", printDialogUrl, CultureInfo.CurrentUICulture.IetfLanguageTag, QueryHelper.GetHash(printDialogUrl), ReportName); string subscriptionScript = String.Format("modalDialog('{0}?reportname={1}¶meters={2}&interval={3}','Subscription',{4},{5});return false", ResolveUrl("~/CMSModules/Reporting/Dialogs/EditSubscription.aspx"), ReportName, AnalyticsHelper.GetQueryStringParameters(ReportParameters), HitsIntervalEnumFunctions.HitsConversionToString(SelectedInterval), AnalyticsHelper.SUBSCRIPTION_WINDOW_WIDTH, AnalyticsHelper.SUBSCRIPTION_WINDOW_HEIGHT); string refreshScript = "function RefreshPage() {" + ControlsHelper.GetPostBackEventReference(this, "") + "};"; ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "RefreshScript", ScriptHelper.GetScript(refreshScript)); // Register special script for print window ScriptHelper.RegisterPrintDialogScript(Page); ScriptHelper.RegisterDialogScript(Page); headerActions.PanelCssClass = PanelCssClass; // Create header actions SaveAction save = new SaveAction(Page); headerActions.ActionsList.Add(save); // Print HeaderAction print = new HeaderAction { Text = GetString("Analytics_Report.Print"), OnClientClick = printScript, Enabled = PrintEnabled, ButtonStyle = ButtonStyle.Default, }; headerActions.ActionsList.Add(print); var cui = MembershipContext.AuthenticatedUser; // Manage data if (cui.IsAuthorizedPerResource("CMS.WebAnalytics", "ManageData") && DisplayManageData) { HeaderAction delete = new HeaderAction { Text = GetString("Analytics_Report.ManageData"), OnClientClick = deleteScript, ButtonStyle = ButtonStyle.Default, }; headerActions.ActionsList.Add(delete); } // Report subscription enabled test GeneralizedInfo ri = BaseAbstractInfoProvider.GetInfoByName(PredefinedObjectType.REPORT, ReportName); if (ri != null) { bool enableSubscription = ValidationHelper.GetBoolean(ri.GetValue("ReportEnableSubscription"), true); // Show enable subscription only for users with subscribe or modify. enableSubscription &= (cui.IsAuthorizedPerResource("cms.reporting", "subscribe") || cui.IsAuthorizedPerResource("cms.reporting", "modify")); if (enableSubscription) { // Subscription HeaderAction subscription = new HeaderAction { Text = GetString("notifications.subscribe"), OnClientClick = subscriptionScript, ButtonStyle = ButtonStyle.Default, }; headerActions.ActionsList.Add(subscription); } } base.OnPreRender(e); }
protected override void OnPreRender(EventArgs e) { 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("TestName", typeof(string)); dtp.Columns.Add("ConversionName", typeof(string)); object[] parameters = new object[5]; parameters[0] = ucGraphType.From; parameters[1] = ucGraphType.To; parameters[2] = "abtests"; parameters[3] = String.Empty; parameters[4] = String.Empty; String reportName = ucGraphType.GetReportName("abtests.yearreport;abtests.monthreport;abtests.weekreport;abtests.dayreport;abtests.hourreport"); String conversionRateReportName = ucGraphType.GetReportName("abtestconversionrate.yearreport;abtestconversionrate.monthreport;abtestconversionrate.weekreport;abtestconversionrate.dayreport;abtestconversionrate.hourreport"); String valuesReportName = ucGraphType.GetReportName("abtestsvalue.yearreport;abtestsvalue.monthreport;abtestsvalue.weekreport;abtestsvalue.dayreport;abtestsvalue.hourreport"); string ABTestName = ValidationHelper.GetString(ucABTests.Value, String.Empty); if ((ABTestName != ucABTests.AllRecordValue) && (!String.IsNullOrEmpty(ABTestName))) { parameters[3] = ABTestName; listElem.Grid.WhereCondition = SqlHelperClass.AddWhereCondition(listElem.Grid.WhereCondition, "ABTestName='" + SqlHelperClass.GetSafeQueryString(ABTestName, false) + "'"); listElem.Grid.ReloadData(); } dtp.Rows.Add(parameters); dtp.AcceptChanges(); ucDisplayReport.ReportName = reportName; ucTestValuesReport.ReportName = valuesReportName; ucConversionRateReport.ReportName = conversionRateReportName; // Conversion count if (!ucDisplayReport.IsReportLoaded()) { lblErrorConversions.Visible = true; lblErrorConversions.Text = 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); ucDisplayReport.ReloadData(true); } // Conversion value if (!ucTestValuesReport.IsReportLoaded()) { lblErrorValues.Visible = true; lblErrorValues.Text = String.Format(GetString("Analytics_Report.ReportDoesnotExist"), valuesReportName); } else { ucTestValuesReport.LoadFormParameters = false; ucTestValuesReport.DisplayFilter = false; ucTestValuesReport.ReportParameters = dtp.Rows[0]; ucTestValuesReport.GraphImageWidth = 50; ucTestValuesReport.AreaMaxWidth = ucDisplayReport.AreaMaxWidth; ucTestValuesReport.IgnoreWasInit = true; ucTestValuesReport.UseExternalReload = true; ucTestValuesReport.UseProgressIndicator = true; ucTestValuesReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval); ucTestValuesReport.ReloadData(true); } // Conversion rate if (!ucConversionRateReport.IsReportLoaded()) { lblErrorRate.Visible = true; lblErrorRate.Text = String.Format(GetString("Analytics_Report.ReportDoesnotExist"), conversionRateReportName); } else { ucConversionRateReport.LoadFormParameters = false; ucConversionRateReport.DisplayFilter = false; ucConversionRateReport.ReportParameters = dtp.Rows[0]; ucConversionRateReport.GraphImageWidth = 50; ucConversionRateReport.AreaMaxWidth = ucDisplayReport.AreaMaxWidth; ucConversionRateReport.UseExternalReload = true; ucConversionRateReport.UseProgressIndicator = true; ucConversionRateReport.IgnoreWasInit = true; ucConversionRateReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval); ucConversionRateReport.ReloadData(true); } base.OnPreRender(e); }
/// <summary> /// Display report /// </summary> /// <param name="reload">If true, display report control is reloaded</param> private void DisplayReport(bool reload) { if (reportLoaded) { return; } String siteName = CMSContext.CurrentSiteName; // Set reports name String conversionCount = "abtestconversioncount.yearreport;abtestconversioncount.monthreport;abtestconversioncount.weekreport;abtestconversioncount.dayreport;abtestconversioncount.hourreport"; String conversionRate = "abtestdetailconversionrate.yearreport;abtestdetailconversionrate.monthreport;abtestdetailconversionrate.weekreport;abtestdetailconversionrate.dayreport;abtestdetailconversionrate.hourreport"; String conversionValue = "abtestconversionvalue.yearreport;abtestconversionvalue.monthreport;abtestconversionvalue.weekreport;abtestconversionvalue.dayreport;abtestconversionvalue.hourreport"; String conversionSourcePages = "abtestconversionsource.yearreport;abtestconversionsource.monthreport;abtestconversionsource.weekreport;abtestconversionsource.dayreport;abtestconversionsource.hourreport"; String conversionVariant = "abtestconversionsbyvariations.yearreport;abtestconversionsbyvariations.monthreport;abtestconversionsbyvariations.weekreport;abtestconversionsbyvariations.dayreport;abtestconversionsbyvariations.hourreport"; pnlVariant.Visible = false; if (rbCount.Checked) { CheckWebAnalyticsUI("ABTest.ConversionsCount"); ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionCount); } if (rbRate.Checked) { CheckWebAnalyticsUI("ABTest.ConversionsRate"); ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionRate); } if (rbValue.Checked) { CheckWebAnalyticsUI("ABTest.ConversionsValue"); ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionValue); } if (rbSourcePages.Checked) { CheckWebAnalyticsUI("ABTest.ConversionsSourcePages"); ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionSourcePages); } if (rbVariants.Checked) { CheckWebAnalyticsUI("ABTest.ConversionsByVariations"); pnlVariant.Visible = true; ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionVariant); } // Conversion ucConversions.PostbackOnDropDownChange = true; ucConversions.ABTestName = testName; ucConversions.ReloadData(true); String conversion = ValidationHelper.GetString(ucConversions.Value, String.Empty); if (conversion == ucConversions.AllRecordValue) { conversion = 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("TestName", typeof(string)); dtp.Columns.Add("ConversionName", typeof(string)); dtp.Columns.Add("VariationName", 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] = ValidationHelper.GetString(ucSelectVariation.Value, String.Empty); dtp.Rows.Add(parameters); dtp.AcceptChanges(); ucDisplayReport.ReportParameters = dtp.Rows[0]; if (reload) { ucDisplayReport.ReloadData(true); } reportLoaded = true; }
/// <summary> /// Displays the report /// </summary> /// <param name="reload">If true display reload control is reloaded</param> 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"; PageInfo pi = PageInfoProvider.GetPageInfo(siteName, mvt.MVTestPage, culture, null, SiteInfoProvider.CombineWithDefaultCulture(siteName)); if (pi != null) { colName = pi.GetUsedPageTemplateIdColumn(); } // 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, 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); } } }