如何将新项目标记为未发布项目? [英] How to flag new items as unpublished items?
本文介绍了如何将新项目标记为未发布项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Sitecore中,如果我将新项目添加到主数据库(未发布),它不会显示任何有关已发布状态的指示。
举个例子,如果用户添加了10个项目,他可能会搞不清自己添加了哪些待发布的项目。
是否可以将新添加的项目标识为未发布或处于新建状态,并在"快速操作栏"中显示验证?
推荐答案
从未想过这一点,但实际上很容易修复。
我创建了一个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:装订栏现在指示项目的发布状态
这篇关于如何将新项目标记为未发布项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文