
上QQ阅读APP看书,第一时间看更新
Creating a gutter to show unpublished items
In the Content Editor, the left margin of the content tree is known as gutter. This area contains icons that can be used to display the status or type of the corresponding item and icons can be toggled on or off.
Let's create a custom gutter icon to identify unpublished items so that we will be able to know the publishing status of all expanded items very easily.
How to do it…
- In the
SitecoreCookbook
project, create aPublishGutter
class in theGutters
folder, and inherit it from theSitecore.Shell.Applications.ContentEditor.Gutters.GutterRenderer
class. - Add
enum PublishStatus
to show the publishing status as follows:enum PublishStatus { Published, NeverPublished, Modified }
- Add the
CheckPublishStatus()
method to know the publishing status of the current item:private PublishStatus CheckPublishStatus(Item currentItem) { Database webDB = Factory.GetDatabase("web"); Item webItem = webDB.GetItem(currentItem.ID); if (webItem == null) return PublishStatus.NeverPublished; if (currentItem["__Revision"] != webItem["__Revision"]) return PublishStatus.Modified; return PublishStatus.Published; }
- Override the
GutterIconDescriptor()
method to decide which gutter icon to show for the current item, which we will decide based on the publishing status:protected override GutterIconDescriptor GetIconDescriptor(Item item) { PublishStatus publishStatus = CheckPublishStatus(item); if (publishStatus != PublishStatus.Published) { GutterIconDescriptor desc = new GutterIconDescriptor(); if (publishStatus == PublishStatus.NeverPublished) { desc.Icon = "Core2/32x32/flag_red_h.png"; desc.Tooltip = "Item never published!"; } else { desc.Icon = "Core2/32x32/flag_yellow.png"; desc.Tooltip = "Item published but modified!"; } desc.Click = string.Format("item:load(id={0})", item.ID); return desc; } return null; }
- Open the Sitecore desktop and switch the database to
core
. Open the Content Editor and select the/sitecore/Content/Applications/Content Editor/Gutters
item. Under it, create aPublishing Status
item using the/Sitecore Client/Content editor/Gutter Renderer
template. - In the Field Editor pane, enter field values, as shown in the following image:
- Now, open the Content Editor with the
master
database. Right-clicking on the left-hand side of the content tree will open a pop-up menu of all gutters, as shown on the left-hand side of the following image. Clicking on the Publishing Status gutter will show gutters with red and yellow flags, as shown on the right-hand side of the the following image: - The preceding image shows that the Content item has been published but has some modifications to it (marked with a yellow flag). The News item was never published (marked with a red flag) and all other items have been published (no flag).