public void LoadPageControls() { this.CurrentWebPage.Header.Controls.Add(new Literal { Text = "\r\n" }); List<HtmlMeta> lstMD = GetHtmlMeta(this.CurrentWebPage.Header); HtmlMeta metaGenerator = new HtmlMeta(); metaGenerator.Name = "generator"; metaGenerator.Content = SiteData.CarrotCakeCMSVersion; this.CurrentWebPage.Header.Controls.Add(metaGenerator); this.CurrentWebPage.Header.Controls.Add(new Literal { Text = "\r\n" }); if (guidContentID == SiteData.CurrentSiteID && SiteData.IsPageReal) { IsPageTemplate = true; } if (theSite != null && pageContents != null) { if (theSite.BlockIndex || pageContents.BlockIndex) { bool bCrawlExist = false; HtmlMeta metaNoCrawl = new HtmlMeta(); metaNoCrawl.Name = "robots"; if (lstMD.Where(x => x.Name == "robots").Count() > 0) { metaNoCrawl = lstMD.Where(x => x.Name == "robots").FirstOrDefault(); bCrawlExist = true; } metaNoCrawl.Content = "noindex,nofollow,noarchive"; if (!bCrawlExist) { this.CurrentWebPage.Header.Controls.Add(metaNoCrawl); this.CurrentWebPage.Header.Controls.Add(new Literal { Text = "\r\n" }); } } } if (pageContents != null) { HtmlMeta metaDesc = new HtmlMeta(); HtmlMeta metaKey = new HtmlMeta(); bool bDescExist = false; bool bKeyExist = false; if (lstMD.Where(x => x.Name == "description").Count() > 0) { metaDesc = lstMD.Where(x => x.Name == "description").FirstOrDefault(); bDescExist = true; } if (lstMD.Where(x => x.Name == "keywords").Count() > 0) { metaKey = lstMD.Where(x => x.Name == "keywords").FirstOrDefault(); bKeyExist = true; } metaDesc.Name = "description"; metaKey.Name = "keywords"; metaDesc.Content = string.IsNullOrEmpty(pageContents.MetaDescription) ? theSite.MetaDescription : pageContents.MetaDescription; metaKey.Content = string.IsNullOrEmpty(pageContents.MetaKeyword) ? theSite.MetaKeyword : pageContents.MetaKeyword; int indexPos = 6; if (this.CurrentWebPage.Header.Controls.Count > indexPos) { if (!string.IsNullOrEmpty(metaDesc.Content) && !bDescExist) { this.CurrentWebPage.Header.Controls.AddAt(indexPos, new Literal { Text = "\r\n" }); this.CurrentWebPage.Header.Controls.AddAt(indexPos, metaDesc); } if (!string.IsNullOrEmpty(metaKey.Content) && !bKeyExist) { this.CurrentWebPage.Header.Controls.AddAt(indexPos, new Literal { Text = "\r\n" }); this.CurrentWebPage.Header.Controls.AddAt(indexPos, metaKey); } } else { if (!string.IsNullOrEmpty(metaDesc.Content) && !bDescExist) { this.CurrentWebPage.Header.Controls.Add(metaDesc); this.CurrentWebPage.Header.Controls.Add(new Literal { Text = "\r\n" }); } if (!string.IsNullOrEmpty(metaKey.Content) && !bKeyExist) { this.CurrentWebPage.Header.Controls.Add(metaKey); this.CurrentWebPage.Header.Controls.Add(new Literal { Text = "\r\n" }); } } metaDesc.Visible = !string.IsNullOrEmpty(metaDesc.Content); metaKey.Visible = !string.IsNullOrEmpty(metaKey.Content); } contCenter = new ContentContainer(); contLeft = new ContentContainer(); contRight = new ContentContainer(); if (pageContents != null) { using (ContentPageHelper pageHelper = new ContentPageHelper()) { PageViewType pvt = pageHelper.GetBlogHeadingFromURL(theSite, SiteData.CurrentScriptName); string sTitleAddendum = pvt.ExtraTitle; if (!string.IsNullOrEmpty(sTitleAddendum)) { if (!string.IsNullOrEmpty(pageContents.PageHead)) { pageContents.PageHead = pageContents.PageHead.Trim() + ": " + sTitleAddendum; } else { pageContents.PageHead = sTitleAddendum; } pageContents.TitleBar = pageContents.TitleBar.Trim() + ": " + sTitleAddendum; } PagedDataSummary pd = (PagedDataSummary)cu.FindControl(typeof(PagedDataSummary), this.CurrentWebPage); if (pd != null) { PagedDataSummaryTitleOption titleOpts = pd.TypeLabelPrefixes.Where(x => x.KeyValue == pvt.CurrentViewType).FirstOrDefault(); if (titleOpts == null && (pvt.CurrentViewType == PageViewType.ViewType.DateDayIndex || pvt.CurrentViewType == PageViewType.ViewType.DateMonthIndex || pvt.CurrentViewType == PageViewType.ViewType.DateYearIndex)) { titleOpts = pd.TypeLabelPrefixes.Where(x => x.KeyValue == PageViewType.ViewType.DateIndex).FirstOrDefault(); } if (titleOpts != null && !string.IsNullOrEmpty(titleOpts.FormatText)) { pvt.ExtraTitle = string.Format(titleOpts.FormatText, pvt.RawValue); sTitleAddendum = pvt.ExtraTitle; } if (titleOpts != null && !string.IsNullOrEmpty(titleOpts.LabelText)) { pageContents.PageHead = titleOpts.LabelText + " " + sTitleAddendum; pageContents.NavMenuText = pageContents.PageHead; pageContents.TitleBar = pageContents.PageHead; } } } this.CurrentWebPage.Title = SetPageTitle(pageContents); DateTime dtModified = theSite.ConvertSiteTimeToLocalServer(pageContents.EditDate); string strModifed = dtModified.ToString("r"); HttpContext.Current.Response.AppendHeader("Last-Modified", strModifed); HttpContext.Current.Response.Cache.SetLastModified(dtModified); DateTime dtExpire = DateTime.Now.AddSeconds(15); contCenter.Text = pageContents.PageText; contLeft.Text = pageContents.LeftPageText; contRight.Text = pageContents.RightPageText; contCenter.DatabaseKey = pageContents.Root_ContentID; contLeft.DatabaseKey = pageContents.Root_ContentID; contRight.DatabaseKey = pageContents.Root_ContentID; pageContents = CMSConfigHelper.IdentifyLinkAsInactive(pageContents); if (this.CurrentWebPage.User.Identity.IsAuthenticated) { HttpContext.Current.Response.Cache.SetNoServerCaching(); HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); dtExpire = DateTime.Now.AddMinutes(-10); HttpContext.Current.Response.Cache.SetExpires(dtExpire); if (!SecurityData.AdvancedEditMode) { if (SecurityData.IsAdmin || SecurityData.IsSiteEditor) { if (!SiteData.IsPageSampler && !IsPageTemplate) { Control editor = this.CurrentWebPage.LoadControl(SiteFilename.EditNotifierControlPath); this.CurrentWebPage.Form.Controls.Add(editor); } } } else { contCenter.IsAdminMode = true; contLeft.IsAdminMode = true; contRight.IsAdminMode = true; contCenter.ZoneChar = "c"; contLeft.ZoneChar = "l"; contRight.ZoneChar = "r"; contCenter.TextZone = ContentContainer.TextFieldZone.TextCenter; contLeft.TextZone = ContentContainer.TextFieldZone.TextLeft; contRight.TextZone = ContentContainer.TextFieldZone.TextRight; contCenter.Text = pageContents.PageText; contLeft.Text = pageContents.LeftPageText; contRight.Text = pageContents.RightPageText; Control editor = this.CurrentWebPage.LoadControl(SiteFilename.AdvancedEditControlPath); this.CurrentWebPage.Form.Controls.Add(editor); MarkWidgets(this.CurrentWebPage, true); } } else { HttpContext.Current.Response.Cache.SetExpires(dtExpire); } if (pageWidgets.Count > 0) { CMSConfigHelper cmsHelper = new CMSConfigHelper(); //find each placeholder in use ONCE! List<LabeledControl> lstPlaceholders = (from ph in pageWidgets where ph.Root_ContentID == pageContents.Root_ContentID select new LabeledControl { ControlLabel = ph.PlaceholderName, KeyControl = FindTheControl(ph.PlaceholderName, this.CurrentWebPage) }).Distinct().ToList(); List<Widget> lstWidget = null; if (SecurityData.AdvancedEditMode) { lstWidget = (from w in pageWidgets orderby w.WidgetOrder, w.EditDate where w.Root_ContentID == pageContents.Root_ContentID && w.IsWidgetActive == true && w.IsWidgetPendingDelete == false select w).ToList(); } else { lstWidget = (from w in pageWidgets orderby w.WidgetOrder, w.EditDate where w.Root_ContentID == pageContents.Root_ContentID && w.IsWidgetActive == true && w.IsRetired == false && w.IsUnReleased == false && w.IsWidgetPendingDelete == false select w).ToList(); } Assembly a = Assembly.GetExecutingAssembly(); foreach (Widget theWidget in lstWidget) { WidgetContainer plcHolder = (WidgetContainer)(from d in lstPlaceholders where d.ControlLabel == theWidget.PlaceholderName select d.KeyControl).FirstOrDefault(); if (plcHolder != null) { plcHolder.EnableViewState = true; Control widget = new Control(); if (theWidget.ControlPath.EndsWith(".ascx")) { if (File.Exists(this.CurrentWebPage.Server.MapPath(theWidget.ControlPath))) { try { widget = this.CurrentWebPage.LoadControl(theWidget.ControlPath); } catch (Exception ex) { Literal lit = new Literal(); lit.Text = "<b>ERROR: " + theWidget.ControlPath + "</b> <br />\r\n" + ex.ToString(); widget = lit; } } else { Literal lit = new Literal(); lit.Text = "MISSING FILE: " + theWidget.ControlPath + "<br />\r\n"; widget = lit; } } if (theWidget.ControlPath.ToLower().StartsWith("class:")) { try { string className = theWidget.ControlPath.Replace("CLASS:", ""); Type t = Type.GetType(className); Object o = Activator.CreateInstance(t); if (o != null) { widget = o as Control; } else { Literal lit = new Literal(); lit.Text = "OOPS: " + theWidget.ControlPath + "<br />\r\n"; widget = lit; } } catch (Exception ex) { Literal lit = new Literal(); lit.Text = "<b>ERROR: " + theWidget.ControlPath + "</b> <br />\r\n" + ex.ToString(); widget = lit; } } widget.EnableViewState = true; IWidget w = null; if (widget is IWidget) { w = widget as IWidget; w.SiteID = SiteData.CurrentSiteID; w.PageWidgetID = theWidget.Root_WidgetID; w.RootContentID = theWidget.Root_ContentID; } if (widget is IWidgetParmData) { IWidgetParmData wp = widget as IWidgetParmData; List<WidgetProps> lstProp = theWidget.ParseDefaultControlProperties(); wp.PublicParmValues = lstProp.ToDictionary(t => t.KeyName, t => t.KeyValue); } if (widget is IWidgetRawData) { IWidgetRawData wp = widget as IWidgetRawData; wp.RawWidgetData = theWidget.ControlProperties; } if (widget is IWidgetEditStatus) { IWidgetEditStatus wes = widget as IWidgetEditStatus; wes.IsBeingEdited = SecurityData.AdvancedEditMode; } Dictionary<string, string> lstMenus = new Dictionary<string, string>(); if (widget is IWidgetMultiMenu) { IWidgetMultiMenu wmm = widget as IWidgetMultiMenu; lstMenus = wmm.JSEditFunctions; } if (SecurityData.AdvancedEditMode) { WidgetWrapper plcWrapper = plcHolder.AddWidget(widget, theWidget); CMSPlugin plug = (from p in cmsHelper.ToolboxPlugins where p.FilePath.ToLower() == plcWrapper.ControlPath.ToLower() select p).FirstOrDefault(); if (plug != null) { plcWrapper.ControlTitle = plug.Caption; } plcWrapper.ID = WrapCtrlId; if (w != null) { if (w.EnableEdit) { if (lstMenus.Count < 1) { string sScript = w.JSEditFunction; if (string.IsNullOrEmpty(sScript)) { sScript = "cmsGenericEdit('" + pageContents.Root_ContentID + "','" + plcWrapper.DatabaseKey + "')"; } plcWrapper.JSEditFunction = sScript; } else { plcWrapper.JSEditFunctions = lstMenus; } } } } else { plcHolder.AddWidget(widget); } widget.ID = CtrlId; } } cmsHelper.Dispose(); } } }
public void AssignContentZones(ContentContainer pageArea, ContentContainer pageSource) { pageArea.IsAdminMode = pageSource.IsAdminMode; pageArea.Text = pageSource.Text; pageArea.ZoneChar = pageSource.ZoneChar; pageArea.DatabaseKey = pageSource.DatabaseKey; pageArea.TextZone = pageSource.TextZone; }