Không bao giờ nghĩ về điều này, nhưng nó thực sự khá dễ dàng để sửa chữa.
Tôi đã tạo một GutterRenderer
cho biết một mục đã được xuất bản cho ít nhất một, cho tất cả hoặc không có mục tiêu xuất bản nào.
EDIT: Đã thêm hành vi Nhấp chuột. Khi bạn nhấp vào biểu tượng máng xối, hộp thoại Xuất bản sẽ được hiển thị cho mục đó.
Trước tiên, tôi sẽ cho bạn biết mã mà tôi đã viết cho điều này và sau đó tôi sẽ hiển thị cho bạn ảnh chụp màn hình của quá trình thiết lập và kết quả.
Đây là mã:
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)
};
}
}
}
Và đây là cách để thiết lập nó và làm thế nào nó sẽ xem xét khi nó đã chạy:
Hình 1: Tạo mục Gutter mới trong cơ sở dữ liệu Core
:
Hình 2: Chuyển về cơ sở dữ liệu Master
của bạn và kích hoạt Gutter bằng cách nhấp chuột phải vào vùng máng xối.
Hình 3: Các Gutter nay cho biết tình trạng công bố các mục của bạn
Nguồn
2013-03-02 10:46:29
Làm cho cảm giác hơn để sử dụng biểu tượng "Mọi người/16x16/flag_red.png" cho các mục chưa được công bố, chỉ cần nghĩ về điều đó nhưng không muốn tạo ảnh chụp màn hình mới;) –
Awesom! Cảm ơn rất nhiều vì sự giúp đỡ này. :) – Dhanuka777