Пользователи Sitecore редактируют элемент создает новую версию
В Sitecore для всех пользователей, у которых нет прав администратора (не установлен ли флажок администратора при создании пользователя), когда они пытаются редактировать элемент, им нужно выбрать опцию "Блокировать и редактировать", которая создаст новую версию вместо редактирования существующий. Есть ли способ, которым я могу заставить не администраторов редактировать элемент, не создавая новую версию? Я надеюсь, что это можно сделать с помощью роли пользователя.
3 ответа
Вот код, отвечающий за создание новых версий при редактировании элементов Sitecore:
public Item StartEditing(Item item)
{
Error.AssertObject((object) item, "item");
if (!Settings.RequireLockBeforeEditing || Context.User.IsAdministrator)
return item;
if (this._context.IsAdministrator || StandardValuesManager.IsStandardValuesHolder(item) || !this.HasWorkflow(item) && !this.HasDefaultWorkflow(item) || !this.IsApproved(item))
return this.Lock(item);
Item obj = item.Versions.AddVersion();
if (obj != null)
return this.Lock(obj);
else
return (Item) null;
}
Очевидно, Sitecore создает новую версию, если элемент находится в конечном состоянии любого рабочего процесса, если пользователь не является администратором.
Вы можете попытаться изменить RequireLockBeforeEditing
настройки, но это отключит не только функциональность новой версии, но и функцию блокировки.
Вы можете отключить это, отредактировав эту опцию в de web.config ->
<setting name="RequireLockBeforeEditing" value="true"/>
Подробнее об этом здесь
Удачи!
Это поведение Sitecore по умолчанию для блокировки.
Sitecore использует блокировку элементов, чтобы два разных пользователя не могли редактировать один и тот же элемент одновременно. Если двум или более пользователям каким-либо образом удалось отредактировать один и тот же элемент одновременно, будут доступны только те изменения, которые были внесены пользователем, который щелкнул "Сохранить последним". Все остальные изменения будут потеряны. Блокировка элемента - это система, в которой вы блокируете элемент, который вы редактируете, и не позволяете другим пользователям редактировать этот элемент, пока вы не разблокируете его снова после того, как закончите редактирование элемента. Блокировка элемента работает по-разному в зависимости от инструментов, которые вы используете. В редакторе страниц вы можете заблокировать элемент, прежде чем начать его редактирование. В редакторе содержимого вы должны заблокировать элемент, прежде чем сможете его редактировать.
Вы можете найти больше о блокировке здесь
Пожалуйста, посмотрите на эти настройки из web.config:
<!--
REQUIRE LOCK BEFORE EDITING
If true, the user must have a lock on a document before
he can edit it, otherwise it is always ready for editing
-->
<setting name="RequireLockBeforeEditing" value="true"/>
<!--
KEEP LOCK AFTER SAVE FOR ADMIN USERS
Set this value to true if you want to Administrator users to keep the lock on an item after saving
it in the Page Editor.
Notice: For regular users, the "Keep Lock After Save" item in the core database will determine whether
to keep the lock or not.
Default value: false
-->
<setting name="KeepLockAfterSaveForAdminUsers" value="false"/>
<!--
AUTOMATIC LOCK ON SAVE
If true, the a lock is automatically taken on an item
when a user saves the item.
-->
<setting name="AutomaticLockOnSave" value="false"/>
<!--
AUTOMATIC UNLOCK ON SAVED
If true, the a saved item is automatically unlocked after
saving.
-->
<setting name="AutomaticUnlockOnSaved" value="false"/>