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.SettingsProvider; using CMS.UIControls; using CMS.WebAnalytics; using CMS.ExtendedControls; public partial class CMSModules_WebAnalytics_Pages_Tools_Campaign_CampaignReport : CMSCampaignAndConversionPage { #region "Variables" private bool isSaved = false; private bool reportDisplayed = false; private String dataCodeName = String.Empty; private String reportCodeNames = String.Empty; private int conversionID = 0; private string allDetailReport = "campaigns.alldetails"; private string singleDetailReport = "campaigns.singledetails"; private IDisplayReport ucDisplayReport; private bool allowNoTimeSelection = false; private string deleteParam = "campaigns"; #endregion #region "Properties" /// /// Messages placeholder /// public override MessagesPlaceHolder MessagesPlaceHolder { get { return plcMess; } } #endregion #region "Methods" protected void Page_Load(object sender, EventArgs e) { conversionID = QueryHelper.GetInteger("conversionid", 0); CurrentMaster.PanelContent.CssClass = ""; UIHelper.AllowUpdateProgress = false; reportHeaderActions.ActionPerformed += HeaderActions_ActionPerformed; // Set disabled module info ucDisabledModule.SettingsKeys = "CMSAnalyticsEnabled;"; ucDisabledModule.InfoText = GetString("WebAnalytics.Disabled"); ucDisabledModule.ParentPanel = pnlDisabled; ucDisplayReport = this.LoadUserControl("~/CMSModules/Reporting/Controls/DisplayReport.ascx") as IDisplayReport; pnlDisplayReport.Controls.Add((Control)ucDisplayReport); dataCodeName = QueryHelper.GetString("dataCodeName", String.Empty); reportCodeNames = QueryHelper.GetString("reportCodeName", String.Empty); // Control initialization (based on displayed report) switch (dataCodeName) { // Overview case "campaign": CheckWebAnalyticsUI("campaign.overview"); ucReportHeader.CampaignAllowAll = true; ucReportHeader.ShowConversionSelector = false; break; // Conversion count case "campconversioncount": dataCodeName = "campconversion"; CheckWebAnalyticsUI("CampaignConversionCount"); ucReportHeader.CampaignAllowAll = false; break; // Conversion value case "campconversionvalue": dataCodeName = "campconversion"; CheckWebAnalyticsUI("campaignsConversionValue"); ucReportHeader.CampaignAllowAll = false; break; // Campaign compare case "campaigncompare": CheckWebAnalyticsUI("CampaignCompare"); ucReportHeader.ShowCampaignSelector = false; dataCodeName = ucReportHeader.CodeNameByGoal; ucReportHeader.ShowGoalSelector = true; ucReportHeader.ShowSiteSelector = true; // Get table column name string name = "analytics.hits"; switch (ucReportHeader.SelectedGoal.ToLowerCSafe()) { case "view": name = "analytics.view"; break; case "count": name = "conversion.count"; break; case "value": name = "om.trackconversionvalue"; break; } string[,] dynamicMacros = new string[1, 2]; dynamicMacros[0, 0] = "ColumnName"; dynamicMacros[0, 1] = GetString(name); ucDisplayReport.DynamicMacros = dynamicMacros; break; // Campaign detail case "campaigndetails": CheckWebAnalyticsUI("CampaignDetails"); ucReportHeader.ShowConversionSelector = false; String selectedCampaign = ValidationHelper.GetString(ucReportHeader.SelectedCampaign, String.Empty); reportCodeNames = (selectedCampaign == ucReportHeader.AllRecordValue || selectedCampaign == String.Empty) ? allDetailReport : singleDetailReport; ucGraphType.ShowIntervalSelector = false; allowNoTimeSelection = true; ucGraphType.AllowEmptyDate = true; break; case "conversion": CheckWebAnalyticsUI("Conversion.Overview"); ucReportHeader.ShowCampaignSelector = false; ucReportHeader.ShowGoalSelector = true; ucReportHeader.ShowVisitsInGoalSelector = false; deleteParam = "conversion"; break; case "conversiondetail": CheckWebAnalyticsUI("Conversion.Details"); ucReportHeader.ShowCampaignSelector = false; ucReportHeader.ShowConversionSelector = (conversionID != 0) ? false : true; ucGraphType.ShowIntervalSelector = false; allowNoTimeSelection = true; ucGraphType.AllowEmptyDate = true; deleteParam = "conversion"; break; } // Set table same first column width for all time ucDisplayReport.TableFirstColumnWidth = Unit.Percentage(20); } protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e) { switch (e.CommandName) { case ComponentEvents.SAVE: Save(); break; } } /// /// Displays the given report /// private void DisplayReport() { // If report was already displayed .. return if (reportDisplayed) { return; } ucGraphType.ProcessChartSelectors(false); // Prepare report parameters DataTable dtp = 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; dtp.Columns.Add("FromDate", typeof(DateTime)); dtp.Columns.Add("ToDate", typeof(DateTime)); dtp.Columns.Add("CodeName", typeof(string)); dtp.Columns.Add("CampaignName", typeof(string)); dtp.Columns.Add("ConversionName", typeof(string)); dtp.Columns.Add("Goal", typeof(string)); dtp.Columns.Add("SiteID", typeof(int)); object[] parameters = new object[7]; parameters[0] = (allowNoTimeSelection && from == DateTimeHelper.ZERO_TIME) ? (DateTime?)null : from; parameters[1] = (allowNoTimeSelection && to == DateTimeHelper.ZERO_TIME) ? (DateTime?)null : to; parameters[2] = dataCodeName; parameters[3] = ""; parameters[4] = ""; 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; deleteParam = "singleconversion;" + ci.ConversionName; } } dtp.Rows.Add(parameters); dtp.AcceptChanges(); ucDisplayReport.ReportName = reportName; // Set display report 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); } // Mark as report displayed reportDisplayed = true; } protected override void OnPreRender(EventArgs e) { DisplayReport(); reportHeaderActions.ReportName = ucDisplayReport.ReportName; reportHeaderActions.ReportParameters = ucDisplayReport.ReportParameters; reportHeaderActions.SelectedInterval = ucGraphType.SelectedInterval; reportHeaderActions.ManageDataCodeName = deleteParam; base.OnPreRender(e); } /// /// Used in rendering to control outside render stage (save method) /// /// Control public override void VerifyRenderingInServerForm(Control control) { if (!isSaved) { base.VerifyRenderingInServerForm(control); } } /// /// Saves the graph report. /// private void Save() { DisplayReport(); // Check web analytics save permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.WebAnalytics", "SaveReports")) { RedirectToCMSDeskAccessDenied("CMS.WebAnalytics", "SaveReports"); } isSaved = true; if (ucDisplayReport.SaveReport() > 0) { ShowConfirmation(String.Format(GetString("Analytics_Report.ReportSavedTo"), ucDisplayReport.ReportDisplayName + " - " + DateTime.Now.ToString())); } isSaved = false; } #endregion }