官术网_书友最值得收藏!

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…

  1. In the SitecoreCookbook project, create a PublishGutter class in the Gutters folder, and inherit it from the Sitecore.Shell.Applications.ContentEditor.Gutters.GutterRenderer class.
  2. Add enum PublishStatus to show the publishing status as follows:
    enum PublishStatus
    {
      Published, NeverPublished, Modified
    }
  3. 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;
    }
  4. 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;
    }
  5. 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 a Publishing Status item using the /Sitecore Client/Content editor/Gutter Renderer template.
  6. In the Field Editor pane, enter field values, as shown in the following image:
    How to do it…
  7. 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:
    How to do it…
  8. 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).

There's more…

Gutter is very helpful in showing the status (such as Publish, Lock, and Workflow) of multiple items on one screen while navigating to the Content Editor.

Note

Heavier use of gutters may take extra load so the user interaction may get slower.

主站蜘蛛池模板: 平凉市| 桂东县| 馆陶县| 松桃| 五家渠市| 涞水县| 惠水县| 罗定市| 紫云| 大新县| 海安县| 维西| 广河县| 临湘市| 乌兰察布市| 长海县| 芒康县| 昆山市| 忻州市| 金堂县| 顺平县| 普陀区| 湖南省| 定陶县| 伊宁县| 大丰市| 青州市| 桂林市| 盈江县| 鲜城| 渝中区| 阿合奇县| 漠河县| 桐庐县| 昌乐县| 富阳市| 扎鲁特旗| 长岭县| 林州市| 全椒县| 泗水县|