Problem: When working with folders, I often find it frustrating that I can’t see the number of items in that folder. If there are a few, you can count, but if there are many it becomes a problem. If there is a parent folder, it is as simple as looking into the parent folder to see the number of sub-items in the folder you are interested in. That might not always be the case.
To resolve this, I thought it would be nice to show the count when you are viewing a folder. Here is what I did with the help of Mr. Matt Hovany:
1. Open Folder.xaml.xml file in WebsitesitecoreshellApplicationsContent ManagerEditorsFolder folder.
2. Add a Literal right above the GridPanel as shown below:
<Sitecore.Controls.HtmlPage runat="server"> <Stylesheet runat="server" Src="Folder.css" DeviceDependant="true" x:placeholder="Stylesheets"/> <AjaxScriptManager runat="server"/> <ContinuationManager runat="server" /> <div> <!-- Line Added --> <asp:Literal ID="TotalLit" runat="server" Visible="false" /> <!-- Line Added --> </div> <!-- Line Added --> <GridPanel runat="server" Width="100%" Height="100%"> <Scrollbox runat="server" ID="ItemList" Width="100%" Height="100%" Border="none" Padding="0px" Background="transparent" GridPanel.Height="100%" ContextMenu="FileList_ContextMenu" /> </GridPanel> </Sitecore.Controls.HtmlPage>
3. Create a new class similar to the one below:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using Sitecore.Shell.Applications.ContentEditor.Editors.Folder; using Sitecore.Web.UI.XamlSharp.Xaml; using Sitecore.Web; using Sitecore.Data; using Sitecore.Globalization; using Sitecore.Data.Items; namespace SitecoreCustomFolder { public class CustomFolder : Sitecore.Shell.Applications.ContentEditor.Editors.Folder.FolderPage { protected System.Web.UI.WebControls.Literal TotalLit; protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (!XamlControl.AjaxScriptManager.IsEvent) { string queryString = WebUtil.GetQueryString("id"); string name = WebUtil.GetQueryString("language"); string databaseName = WebUtil.GetQueryString("database"); ItemUri uri = new ItemUri(queryString, Language.Parse(name), Sitecore.Data.Version.Latest, databaseName); Item item = Database.GetItem(uri); if (item != null) { List<Item> items = this.GetItems(item); if (items.Count != 0) { this.TotalLit.Text = "<div class="scTitle scTilesTitle">Items in Folder: " + items.Count.ToString() + " </div>"; this.TotalLit.Visible = true; } } } } } }
4. Modify the Folder.xaml.xml to reflect the new class on the inherits attribute:
<Sitecore.Shell.Applications.ContentEditor.Editors.Folder x:inherits="SitecoreCustomFolder.CustomFolder">
5. Here is the end result:
Tagged as: ajax, content manager, CustomFolder, editors, folders, Globalization, namespace, Sitecore