如何旗新项目未发表的项目?(How to flag new items as unpublished

2019-08-17 06:45发布

在Sitecore的,如果我添加了一个新的项目到主数据库(未公开),它并没有显示关于发布状态的任何指示。

举一个例子,如果用户增加了10个项目,他可能会困惑figureout,这些都有待出版由他添加的项目。

有没有一种方法来识别新添加的项目未发表的或新的“快速操作栏”显示验证?

Answer 1:

从来没有想过这一点,但它实际上是很容易解决。

我创建了一个GutterRenderer表示阉项目已发布到至少一个,所有的,或者没有发布目标。

编辑:添加点击行为。 当您单击图标排水沟,将显示该对话框发布该项目。

首先,我会告诉你,我写了这个代码,然后我会告诉你的设置和结果的截图。

下面是代码:

using System.Collections.Generic;
using System.Linq;
using Sitecore;
using Sitecore.Data;
using Sitecore.Data.Items;
using Sitecore.Globalization;
using Sitecore.Shell.Applications.ContentEditor.Gutters;

namespace ParTech.Library.Gutters
{
  public class PublicationStatus : GutterRenderer
  {
    private readonly ID publishingTargetsFolderId = new ID("{D9E44555-02A6-407A-B4FC-96B9026CAADD}");
    private readonly ID targetDatabaseFieldId = new ID("{39ECFD90-55D2-49D8-B513-99D15573DE41}");

    protected override GutterIconDescriptor GetIconDescriptor(Item item)
    {
      bool existsInAll = true;
      bool existsInOne = false;

      // Find the publishing targets item folder
      Item publishingTargetsFolder = Context.ContentDatabase.GetItem(publishingTargetsFolderId);

      if (publishingTargetsFolder == null)
      {
        return null;
      }

      // Retrieve the publishing targets database names
      List<string> publishingTargetsDatabases = publishingTargetsFolder.GetChildren()
        .Select(x => x[targetDatabaseFieldId])
        .ToList();

      // Check for item existance in publishing targets
      publishingTargetsDatabases.ForEach(delegate(string databaseName)
      {
        if (Database.GetDatabase(databaseName).GetItem(item.ID) != null)
        {
          existsInOne = true;
        }
        else
        {
          existsInAll = false;
        }
      });

      // Return descriptor with tooltip and icon
      string tooltip = Translate.Text("This item has not yet been published");
      string icon = "People/16x16/flag_red.png";

      if (existsInAll)
      {
        tooltip = Translate.Text("This item has been published to all targets");
        icon = "People/16x16/flag_green.png";
      }
      else if (existsInOne)
      {
        tooltip = Translate.Text("This item has been published to at least one target");
        icon = "People/16x16/flag_yellow.png";
      }

      return new GutterIconDescriptor()
      {
        Icon = icon,
        Tooltip = tooltip,
        Click = string.Format("item:publish(id={0})", item.ID)
      };
    }
  }
}

这是怎么这么设置它,以及如何一旦它的运行它的外观:

图1:创建在一个新的装订线项目Core数据库:

图2:切换回Master数据库,并启动通过右键单击在水沟区域的排水沟。

图3:天沟现在显示您的项目的发布状态



Answer 2:

从我的头顶这不是现成可用的。 然而,在核心数据库,有阴沟里,等你可以创建自己的定义。

有一个关于项目的“发布”现场虽然,但我不知道这需要不同的版本考虑在内。 也许你可以检查在主机和网络(即项目不存在网络或不同的版本,那么它即将发布)的项目之间的差异。

此外,您可以通过这个阅读: http://webcmd.wordpress.com/2011/08/31/sitecore-ribbon-that-displays-published-state-of-an-item/这将解释如何检查的项目被公布为带状。



文章来源: How to flag new items as unpublished items?
标签: sitecore