/// <summary> /// Helper method for loading the portal items /// </summary> /// <param name="bw"></param> private void LoadPortalItems(BackgroundWorker bw, bool isLegacyPortal) { portalItems = new List <EditablePortalItem>(); bw.ReportProgress(0, "Loading Web pages..."); portalItems.AddRange(WebPage.GetItems(Service)); bw.ReportProgress(0, "Loading Entity forms..."); portalItems.AddRange(EntityForm.GetItems(Service, ref isLegacyPortal)); bw.ReportProgress(0, "Loading Entity lists..."); portalItems.AddRange(EntityList.GetItems(Service, ref isLegacyPortal)); bw.ReportProgress(0, "Loading Web templates..."); portalItems.AddRange(WebTemplate.GetItems(Service, ref isLegacyPortal)); bw.ReportProgress(0, "Loading Web files..."); portalItems.AddRange(WebFile.GetItems(Service)); bw.ReportProgress(0, "Loading Web form steps..."); portalItems.AddRange(WebFormStep.GetItems(Service)); bw.ReportProgress(0, "Loading Content Snippets..."); portalItems.AddRange(ContentSnippet.GetItems(Service, ref isLegacyPortal)); if (!isLegacyPortal) { bw.ReportProgress(0, "Loading Portal languages..."); ctvf.Languages = Service.RetrieveMultiple(new QueryExpression("adx_websitelanguage") { ColumnSet = new ColumnSet(true) }).Entities.ToList(); } }
private void BindDataGrid() { ContentSnippet current = ContentSnippet.Get(guidSnippetID); litSlug.Text = current.ContentSnippetSlug; litSnippetName.Text = current.ContentSnippetName; if (current.ContentSnippetActive != true) { imgStatus.ImageUrl = hdnInactive.Value; imgStatus.AlternateText = "Inactive"; } imgStatus.ToolTip = imgStatus.AlternateText; var lstS = current.GetHistory(); GeneralUtilities.BindDataBoundControl(gvPages, lstS); foreach (GridViewRow dgItem in gvPages.Rows) { CheckBox chkContent = (CheckBox)dgItem.FindControl("chkContent"); if (chkContent.Attributes["value"].ToString() == current.ContentSnippetID.ToString()) { chkContent.Visible = false; } } if (lstS.Count < 1) { btnRemove.Visible = false; } }
protected void btnSave_Click(object sender, EventArgs e) { ContentSnippet item = null; if (guidRootItemID != Guid.Empty) { item = ContentSnippet.Get(guidRootItemID); } else { item = ContentSnippet.GetVersion(guidVersionItemID); } if (item == null || (item != null && item.Root_ContentSnippetID == Guid.Empty)) { item = new ContentSnippet(SiteData.CurrentSiteID); item.CreateUserId = SecurityData.CurrentUserGuid; } item.ContentSnippetSlug = txtSlug.Text; item.ContentSnippetName = txtLabel.Text; item.ContentBody = reBody.Text; item.EditUserId = SecurityData.CurrentUserGuid; item.ContentSnippetActive = chkPublic.Checked; item.GoLiveDate = ucReleaseDate.GetDate(); item.RetireDate = ucRetireDate.GetDate(); item.Save(); Response.Redirect(SiteData.CurrentScriptName + "?id=" + item.Root_ContentSnippetID.ToString()); }
protected void btnDelete_Click(object sender, EventArgs e) { ContentSnippet item = ContentSnippet.Get(guidRootItemID); item.Delete(); Response.Redirect(SiteFilename.ContentSnippetIndexURL); }
private void LoadItems() { ctv.Enabled = false; WorkAsync(new WorkAsyncInfo { Message = "Loading portal items...", Work = (bw, e) => { portalItems = new List <EditablePortalItem>(); bw.ReportProgress(0, "Loading Web pages..."); portalItems.AddRange(WebPage.GetItems(Service)); bw.ReportProgress(0, "Loading Entity forms..."); portalItems.AddRange(EntityForm.GetItems(Service, ref isLegacyPortal)); bw.ReportProgress(0, "Loading Entity lists..."); portalItems.AddRange(EntityList.GetItems(Service, ref isLegacyPortal)); bw.ReportProgress(0, "Loading Web templates..."); portalItems.AddRange(WebTemplate.GetItems(Service, ref isLegacyPortal)); bw.ReportProgress(0, "Loading Web files..."); portalItems.AddRange(WebFile.GetItems(Service)); bw.ReportProgress(0, "Loading Web form steps..."); portalItems.AddRange(WebFormStep.GetItems(Service)); bw.ReportProgress(0, "Loading Content Snippets..."); portalItems.AddRange(ContentSnippet.GetItems(Service, ref isLegacyPortal)); portalItems.SelectMany(p => p.Items).ToList().ForEach(i => i.StateChanged += CodeItem_StateChanged); }, ProgressChanged = e => { SetWorkingMessage(e.UserState.ToString()); }, PostWorkCallBack = e => { if (e.Error != null) { if (((FaultException <OrganizationServiceFault>)e.Error).Detail.ErrorCode == -2147217149) { MessageBox.Show(e.Error.ToString()); var message = "Unable to load code items: Please ensure you are targeting an organization linked to a Microsoft Portal (not a legacy Adxstudio one)"; MessageBox.Show(this, message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); LogError(message); } else { MessageBox.Show(this, $"An error occured while loading code items: {e.Error.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); LogError($"An error occured while loading code items: {e.Error.ToString()}"); } } ctv.DisplayCodeItems(portalItems, isLegacyPortal); ctv.Enabled = true; } }); }
protected void btnRemove_Click(object sender, EventArgs e) { List <Guid> lstDel = GeneralUtilities.GetCheckedItemGuidsByValue(gvPages, true, "chkContent"); foreach (Guid delID in lstDel) { ContentSnippet.GetVersion(delID).DeleteThisVersion(); } BindDataGrid(); }
public ContentSnippetHistoryModel(Guid id) : this() { this.Item = ContentSnippet.Get(id); this.History.SetData(this.Item.GetHistory()); this.History.TotalRecords = this.History.DataSource.Count; this.History.PageSize = this.History.TotalRecords * 2; this.History.InitOrderBy(x => x.ContentSnippetName); }
public ContentSnippet Create(ContentSnippet model) { try { Context.ContentSnippet.Add(model); Context.SaveChanges(); return(model); } catch (Exception ex) { log.Fatal(ex); throw new Exception("DB error", ex.InnerException); } }
public bool Update(ContentSnippet model) { try { this.Context.ContentSnippet.Update(model); this.Context.SaveChanges(); return(true); } catch (Exception ex) { Log.Fatal(ex); throw new Exception("DB error", ex.InnerException); } }
private void cmsTreeview_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem == tsmiRefreshFromPortal) { var item = tvCodeItems.SelectedNode.Tag; if (item == null) { return; } ActionRequested?.Invoke(this, new RefreshContentEventArgs(item)); } else if (e.ClickedItem == tsmiUpdate) { var item = tvCodeItems.SelectedNode.Tag; if (item == null) { return; } var portalItem = item as EditablePortalItem; var epi = portalItem ?? ((CodeItem)item).Parent; ActionRequested?.Invoke(this, new UpdatePendingChangesEventArgs(new List <EditablePortalItem> { epi })); } else if (e.ClickedItem == tsmiCreateNewItem) { var node = tvCodeItems.SelectedNode; while (node.Parent != null) { node = node.Parent; } if (tvCodeItems.SelectedNode.Name == "WebTemplate") { var dialog = new NewWebTemplateForm(Service, node.Tag as EntityReference); if (dialog.ShowDialog(this) == DialogResult.OK) { var newTemplate = new WebTemplate(dialog.Template); newTemplate.Code.StateChanged += JavaScript_StateChanged; var newNode = new TreeNode(newTemplate.Name) { Tag = newTemplate.Code }; newTemplate.Code.Node = newNode; tvCodeItems.SelectedNode.Nodes.Add(newNode); tvCodeItems.Sort(); ApplyCounting(node, "WebTemplate"); } } else if (tvCodeItems.SelectedNode.Name == "Html") { var dialog = new NewContentSnippetForm(756150001, Service, node.Tag as EntityReference, Languages); if (dialog.ShowDialog(this) == DialogResult.OK) { var newContentSnippet = new ContentSnippet(dialog.Template); newContentSnippet.Code.StateChanged += JavaScript_StateChanged; var newNode = new TreeNode(newContentSnippet.Name) { Tag = newContentSnippet.Code }; newContentSnippet.Code.Node = newNode; tvCodeItems.SelectedNode.Nodes.Add(newNode); tvCodeItems.Sort(); CountContentSnippet(node); } } else if (tvCodeItems.SelectedNode.Name == "Text") { var dialog = new NewContentSnippetForm(756150000, Service, node.Tag as EntityReference, Languages); if (dialog.ShowDialog(this) == DialogResult.OK) { var newContentSnippet = new ContentSnippet(dialog.Template); newContentSnippet.Code.StateChanged += JavaScript_StateChanged; var newNode = new TreeNode(newContentSnippet.Name) { Tag = newContentSnippet.Code }; newContentSnippet.Code.Node = newNode; tvCodeItems.SelectedNode.Nodes.Add(newNode); tvCodeItems.Sort(); CountContentSnippet(node); } } } }
protected void Page_Load(object sender, EventArgs e) { Master.ActivateTab(AdminBaseMasterPage.SectionID.ContentSnippet); guidRootItemID = GetGuidIDFromQuery(); guidVersionItemID = GetGuidParameterFromQuery("versionid"); guidItemID = guidRootItemID; if (guidItemID == Guid.Empty) { guidItemID = guidVersionItemID; } if (!IsPostBack) { DateTime dtSite = CMSConfigHelper.CalcNearestFiveMinTime(SiteData.CurrentSite.Now); ucReleaseDate.SetDate(dtSite); ucRetireDate.SetDate(dtSite.AddYears(200)); ContentSnippet item = null; if (guidRootItemID != Guid.Empty) { item = ContentSnippet.Get(guidRootItemID); } else { item = ContentSnippet.GetVersion(guidVersionItemID); } if (item != null) { bool bRet = item.RecordSnippetLock(SecurityData.CurrentUserGuid); bLocked = item.IsSnippetLocked(); if (bLocked && item.Heartbeat_UserId != null) { MembershipUser usr = SecurityData.GetUserByGuid(item.Heartbeat_UserId.Value); litUser.Text = "Read only mode. User '" + usr.UserName + "' is currently editing the snippet."; } txtSlug.Text = item.ContentSnippetSlug; txtLabel.Text = item.ContentSnippetName; reBody.Text = item.ContentBody; guidRootItemID = item.Root_ContentSnippetID; ucReleaseDate.SetDate(item.GoLiveDate); ucRetireDate.SetDate(item.RetireDate); chkPublic.Checked = item.ContentSnippetActive; btnDeleteButton.Visible = true; pnlReview.Visible = true; Dictionary <string, string> dataVersions = (from v in ContentSnippet.GetHistory(guidRootItemID) join u in ExtendedUserData.GetUserList() on v.EditUserId equals u.UserId orderby v.EditDate descending select new KeyValuePair <string, string>(v.ContentSnippetID.ToString(), string.Format("{0} ({1}) {2}", v.EditDate, u.UserName, (v.IsLatestVersion ? " [**] " : " "))) ).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); GeneralUtilities.BindListDefaultText(ddlVersions, dataVersions, null, "Versions", "00000"); } else { btnDeleteButton.Visible = false; pnlReview.Visible = false; } } sPageMode = GetStringParameterFromQuery("mode"); if (sPageMode.ToLowerInvariant() == "raw") { reBody.CssClass = "rawEditor"; divCenter.Visible = false; } pnlHB.Visible = !bLocked; pnlHBEmpty.Visible = bLocked; pnlButtons.Visible = !bLocked; divEditing.Visible = bLocked; }
public override string ToHtmlString() { LoadData(); StringBuilder sb = new StringBuilder(); string sBody = String.Empty; ContentSnippet cs = null; try { bool bIsEditor = SecurityData.IsAdmin || SecurityData.IsSiteEditor; if (this.SnippetID != Guid.Empty) { cs = ContentSnippet.GetSnippetByID(SiteData.CurrentSiteID, this.SnippetID, !bIsEditor); } else { cs = ContentSnippet.GetSnippetBySlug(SiteData.CurrentSiteID, this.SnippetSlug, !bIsEditor); } string sBodyNote = String.Empty; string sIdent = String.Empty; if (cs != null) { if (bIsEditor && (cs.IsRetired || cs.IsUnReleased || !cs.ContentSnippetActive)) { string sBodyFlags = String.Empty; if (!cs.ContentSnippetActive) { sBodyFlags += CMSConfigHelper.InactivePagePrefix + " - Status : " + cs.ContentSnippetActive.ToString() + " "; } if (cs.IsRetired) { sBodyFlags += CMSConfigHelper.RetiredPagePrefix + " - Retired : " + cs.RetireDate.ToString() + " "; } if (cs.IsUnReleased) { sBodyFlags += CMSConfigHelper.UnreleasedPagePrefix + " - Unreleased : " + cs.GoLiveDate.ToString() + " "; } if (SecurityData.AdvancedEditMode) { sBodyNote = "<div class=\"cmsSnippetOuter\"> <div class=\"cmsSnippetInner\">\r\n" + cs.ContentSnippetSlug + ": " + sBodyFlags.Trim() + "\r\n<br style=\"clear: both;\" /></div></div>"; } else { sBodyNote = "<div>\r\n" + cs.ContentSnippetSlug + ": " + sBodyFlags.Trim() + "\r\n<br style=\"clear: both;\" /></div>"; } } if (SecurityData.AdvancedEditMode) { sIdent = "<div class=\"cmsSnippetOuter\"> <div class=\"cmsSnippetInner\">\r\n" + cs.ContentSnippetSlug + ": " + cs.ContentSnippetName + "\r\n<br style=\"clear: both;\" /></div></div>"; } sBody = String.Format("{0}\r\n{1}\r\n{2}", sIdent, cs.ContentBody, sBodyNote); } } catch { if (!SiteData.IsWebView) { if (this.SnippetID != Guid.Empty) { sBody = this.SnippetID.ToString(); } else { sBody = this.SnippetSlug; } } } sBody = SiteData.CurrentSite.UpdateContentSnippet(sBody); sb.AppendLine(); sb.Append(sBody); sb.AppendLine(); return(sb.ToString()); }
protected override void RenderContents(HtmlTextWriter output) { string sBody = string.Empty; ContentSnippet cs = null; try { bool bIsEditor = SecurityData.IsAdmin || SecurityData.IsSiteEditor; if (this.SnippetID != Guid.Empty) { cs = ContentSnippet.GetSnippetByID(SiteData.CurrentSiteID, this.SnippetID, !bIsEditor); } else { cs = ContentSnippet.GetSnippetBySlug(SiteData.CurrentSiteID, this.SnippetSlug, !bIsEditor); } string sBodyNote = string.Empty; string sIdent = String.Empty; if (cs != null) { if (bIsEditor && (cs.IsRetired || cs.IsUnReleased || !cs.ContentSnippetActive)) { string sBodyFlags = string.Empty; if (!cs.ContentSnippetActive) { sBodyFlags += CMSConfigHelper.InactivePagePrefix + " - Status : " + cs.ContentSnippetActive.ToString() + " "; } if (cs.IsRetired) { sBodyFlags += CMSConfigHelper.RetiredPagePrefix + " - Retired : " + cs.RetireDate.ToString() + " "; } if (cs.IsUnReleased) { sBodyFlags += CMSConfigHelper.UnreleasedPagePrefix + " - Unreleased : " + cs.GoLiveDate.ToString() + " "; } if (SecurityData.AdvancedEditMode) { sBodyNote = "<div class=\"cmsSnippetOuter\"> <div class=\"cmsSnippetInner\">\r\n" + cs.ContentSnippetSlug + ": " + sBodyFlags.Trim() + "\r\n<br style=\"clear: both;\" /></div></div>"; } else { sBodyNote = "<div>\r\n" + cs.ContentSnippetSlug + ": " + sBodyFlags.Trim() + "\r\n<br style=\"clear: both;\" /></div>"; } } if (SecurityData.AdvancedEditMode) { sIdent = "<div class=\"cmsSnippetOuter\"> <div class=\"cmsSnippetInner\">\r\n" + cs.ContentSnippetSlug + ": " + cs.ContentSnippetName + "\r\n<br style=\"clear: both;\" /></div></div>"; } sBody = String.Format("{0}\r\n{1}\r\n{2}", sIdent, cs.ContentBody, sBodyNote); } } catch { if (!SiteData.IsWebView) { if (this.SnippetID != Guid.Empty) { sBody = this.SnippetID.ToString(); } else { sBody = this.SnippetSlug; } } } this.Text = SiteData.CurrentSite.UpdateContentSnippet(sBody); int indent = output.Indent; output.Indent = indent + 3; output.WriteLine(); output.WriteLine(); output.Write(this.Text); output.WriteLine(); output.Indent = indent; }
public void DisplayCodeItems(List <EditablePortalItem> items, bool isLegacyPortal) { IsLegacyPortal = isLegacyPortal; portalItems = items; tvCodeItems.Nodes.Clear(); var rootNodes = new Dictionary <Guid, TreeNode>(); if (isLegacyPortal) { rootNodes.Add(Guid.Empty, new TreeNode("(Not website related)")); } var searchText = txtSearch.Text.ToLower(); var filteredItems = items.Where(i => searchText.Length == 0 || i.Name.ToLower().Contains(searchText) || chkSearchInContent.Checked && i.Items.Any(i2 => i2.Content.ToLower().Contains(searchText))) .ToList(); if (!filteredItems.Any() && searchText.Length > 0) { txtSearch.BackColor = Color.LightCoral; return; } foreach (var item in filteredItems) { item.UpdateRequired += Item_UpdateRequired; var websiteReference = item.WebsiteReference; if (websiteReference == null) { continue; } TreeNode parentNode; TreeNode contentSnippetsNode; if (rootNodes.ContainsKey(websiteReference.Id)) { parentNode = rootNodes[websiteReference.Id]; } else { var name = websiteReference.Id == Guid.Empty ? "(Not website related)" : websiteReference.Name; var rootNode = new TreeNode(name); var snippetsNode = new TreeNode("Content Snippets") { Name = "ContentSnippet" }; var htmlSnippetsNode = new TreeNode("Html") { Name = "Html" }; var textSnippetsNode = new TreeNode("Text") { Name = "Text" }; snippetsNode.Nodes.Add(htmlSnippetsNode); snippetsNode.Nodes.Add(textSnippetsNode); rootNodes.Add(websiteReference.Id, rootNode); parentNode = rootNode; contentSnippetsNode = snippetsNode; parentNode.Nodes.Add(new TreeNode("Web Pages") { Name = "WebPage" }); if (!IsLegacyPortal) { parentNode.Nodes.Add(new TreeNode("Entity Forms") { Name = "EntityForm" }); parentNode.Nodes.Add(new TreeNode("Entity Lists") { Name = "EntityList" }); parentNode.Nodes.Add(new TreeNode("Web Forms") { Name = "WebForm" }); parentNode.Nodes.Add(new TreeNode("Web Templates") { Name = "WebTemplate" }); parentNode.Nodes.Add(snippetsNode); } parentNode.Nodes.Add(new TreeNode("Web Files") { Name = "WebFile" }); } TreeNode typeNode; if (item is WebPage) { typeNode = parentNode.Nodes["WebPage"]; WebPage page = (WebPage)item; page.JavaScript.StateChanged += JavaScript_StateChanged; page.Style.StateChanged += JavaScript_StateChanged; TreeNode node; if (page.IsRoot || page.ParentPageId == Guid.Empty) { node = new TreeNode(page.Name) { Tag = item }; typeNode.Nodes.Add(node); if (isLegacyPortal) { var scriptNode = new TreeNode("JavaScript") { Tag = page.JavaScript }; page.JavaScript.Node = scriptNode; var styleNode = new TreeNode("Style") { Tag = page.Style }; page.Style.Node = styleNode; node.Nodes.Add(scriptNode); node.Nodes.Add(styleNode); } } else { var parentPageNode = typeNode.Nodes.Cast <TreeNode>().FirstOrDefault(t => ((WebPage)t.Tag).Id == page.ParentPageId); if (parentPageNode == null) { continue; } node = new TreeNode(page.Language) { Tag = item }; var scriptNode = new TreeNode("JavaScript") { Tag = page.JavaScript }; page.JavaScript.Node = scriptNode; var styleNode = new TreeNode("Style") { Tag = page.Style }; page.Style.Node = styleNode; node.Nodes.Add(scriptNode); node.Nodes.Add(styleNode); parentPageNode.Nodes.Add(node); } } else if (item is EntityForm) { typeNode = parentNode.Nodes["EntityForm"]; if (typeNode == null) { typeNode = new TreeNode("Entity Forms") { Name = "EntityForm" }; rootNodes[item.WebsiteReference.Id].Nodes.Add(typeNode); } EntityForm form = (EntityForm)item; form.JavaScript.StateChanged += JavaScript_StateChanged; var node = new TreeNode(form.Name) { Tag = form.JavaScript }; form.JavaScript.Node = node; typeNode.Nodes.Add(node); } else if (item is EntityList) { typeNode = parentNode.Nodes["EntityList"]; if (typeNode == null) { typeNode = new TreeNode("Entity Lists") { Name = "EntityList" }; rootNodes[item.WebsiteReference.Id].Nodes.Add(typeNode); } EntityList list = (EntityList)item; list.JavaScript.StateChanged += JavaScript_StateChanged; var node = new TreeNode(list.Name) { Tag = list.JavaScript }; list.JavaScript.Node = node; typeNode.Nodes.Add(node); } else if (item is WebTemplate) { typeNode = parentNode.Nodes["WebTemplate"]; if (typeNode == null) { typeNode = new TreeNode("Web Templates") { Name = "WebTemplate" }; rootNodes[item.WebsiteReference.Id].Nodes.Add(typeNode); } WebTemplate template = (WebTemplate)item; template.Code.StateChanged += JavaScript_StateChanged; var node = new TreeNode(template.Name) { Tag = template.Code }; template.Code.Node = node; typeNode.Nodes.Add(node); } else if (item is WebFile) { typeNode = parentNode.Nodes["WebFile"]; if (typeNode == null) { typeNode = new TreeNode("Web Files") { Name = "WebFile" }; rootNodes[item.WebsiteReference.Id].Nodes.Add(typeNode); } WebFile file = (WebFile)item; file.Code.StateChanged += JavaScript_StateChanged; var node = new TreeNode(file.Name) { Tag = file.Code }; file.Code.Node = node; typeNode.Nodes.Add(node); } else if (item is WebFormStep) { typeNode = parentNode.Nodes["WebForm"]; if (typeNode == null) { typeNode = new TreeNode("Web Forms") { Name = "WebForm" }; rootNodes[item.WebsiteReference.Id].Nodes.Add(typeNode); } WebFormStep wfStep = (WebFormStep)item; wfStep.JavaScript.StateChanged += JavaScript_StateChanged; var node = new TreeNode(wfStep.Name) { Tag = wfStep.JavaScript }; wfStep.JavaScript.Node = node; if (wfStep.WebFormReference != null) { TreeNode webFormNode; if (typeNode.Nodes.ContainsKey(wfStep.WebFormReference.Name)) { webFormNode = typeNode.Nodes[wfStep.WebFormReference.Name]; } else { webFormNode = new TreeNode(wfStep.WebFormReference.Name) { Name = wfStep.WebFormReference.Name }; typeNode.Nodes.Add(webFormNode); } webFormNode.Nodes.Add(node); } else { typeNode.Nodes.Add(node); } } else if (item is ContentSnippet) { typeNode = parentNode.Nodes["ContentSnippet"]; if (typeNode == null) { typeNode = new TreeNode("Content Snippets") { Name = "ContentSnippet" }; rootNodes[item.WebsiteReference.Id].Nodes.Add(typeNode); var htmlSnippetsNode = new TreeNode("Html") { Name = "Html" }; var textSnippetsNode = new TreeNode("Text") { Name = "Text" }; typeNode.Nodes.Add(htmlSnippetsNode); typeNode.Nodes.Add(textSnippetsNode); } ContentSnippet snippet = (ContentSnippet)item; snippet.Code.StateChanged += JavaScript_StateChanged; var node = new TreeNode(snippet.Name) { Tag = snippet.Code }; snippet.Code.Node = node; if (snippet.Type == "Text") { typeNode.Nodes["Text"].Nodes.Add(node); } else { typeNode.Nodes["Html"].Nodes.Add(node); } } else { throw new Exception($"Unsupported portal item type: {item.GetType().Name}"); } } foreach (var node in rootNodes.Values) { ApplyCounting(node, "WebPage"); ApplyCounting(node, "EntityForm"); ApplyCounting(node, "EntityList"); ApplyCounting(node, "WebTemplate"); ApplyCounting(node, "WebFile"); ApplyCounting(node, "WebForm"); CountContentSnippet(node); tvCodeItems.Nodes.Add(node); node.Expand(); } }