Что вам нужно сделать, это определить пользовательскую команду в App_Config / Commands.config:
<command name="myPublish:saveAndPublish"
type="YourNamespace.YourCommand, YourAssembly" />
Любая настраиваемая команда должна иметь подкласс Sitecore.Shell.Framework.Commands.Command и переопределить метод public override void Execute(CommandContext context)
.
Используйте вашу пользовательскую команду для вызова команды PublishItem:
public override void Execute(CommandContext context)
{
var publishCommand = new PublishItem();
publishCommand.Execute(context);
}
Несколько вещей, на которые нужно обратить внимание:
- Это сработало для меня в Firefox, но не в Chrome, где элемент не сохраняется. scSave использует много javascript-интерфейса, так что, похоже, это ошибка в поддержке Sitecore Chrome.
- Как ни странно, синтаксис
scSave("item:publish")
не работает, но косвенный вызов PublishComand из пользовательской команды работает. Если кто-нибудь выяснит, почему это так, пожалуйста, прокомментируйте!
- scSave работает только при вызове из WebEditButton (кнопка / sitecore / templates / System / WebEdit / WebEdit), а не кнопка ленты ('/ sitecore / templates / System / Ribbon / Large Button') или ('/ sitecore / templates / System / Ribbon / Small Button').
- WebEditButton должен находиться в верхней части иерархии ленты ('/ sitecore / content / Applications / WebEdit / Ribbons / WebEdit / Buttons'). Если он размещен на одном из фрагментов (например, «Новый», «Редактировать» и т. Д.), Он не будет отображаться.
- При создании WebEditButton, если вы хотите управлять значком, отображаемым в редакторе страниц, вам необходимо установить данные / значок с помощью необработанных значений. В противном случае значение сохраняется в Appearance / Icon, который управляет значком элемента контента, а не кнопкой PageEditor. Это связано с ошибкой в редакторе контента.