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

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.

主站蜘蛛池模板: 富宁县| 舞钢市| 岑溪市| 江华| 嘉峪关市| 蓬溪县| 长海县| 西藏| 漳州市| 太保市| 郧西县| 宿迁市| 长阳| 裕民县| 四平市| 津南区| 连江县| 日照市| 乾安县| 青冈县| 罗田县| 固安县| 施秉县| 大余县| 榆中县| 蓝田县| 林州市| 侯马市| 高雄市| 会理县| 屯门区| 卫辉市| 海宁市| 墨脱县| 莱阳市| 长乐市| 天津市| 柘荣县| 合山市| 湟中县| 双江|