Я создаю типы контента и добавляю компоненты контента, специфичные для клиента и поверенного. Все эти части имеют поля и/или сборщики контента и т. Д.Пытается скрыть содержимое частей контента Тип контента
Я хочу ограничить роль клиента, чтобы увидеть только части содержимого клиента, в то время как я просто разрешаю роли прокурора видеть какие-либо части контента, включая его собственное содержание адвоката Часть для определенного типа контента. Опять же, все они имеют один и тот же тип контента, поэтому разрешения на контент не будут работать (за исключением типа содержимого в целом).
Я хочу скрыть части содержимого адвоката, когда клиент вошел в систему.
Я попытался с помощью этого:
public override void Displaying(ShapeDisplayingContext context)
{
context.ShapeMetadata.OnDisplaying(displayedContext => {
var shape = context.Shape;
if (context.Shape.Part.Name == "Parts_AttorneyMatterPart")
{
var workContext = _workContextAccessor.GetContext();
var user = workContext.CurrentUser;
var roles = user.As<UserRolesPart>().Roles;
if (!roles.Contains("Spaces Attorney"))
{
shape = null;
}
}
});
}
Где у меня есть содержательная часть под названием «AttorneyMatterPart», и где Attorney роль является «Пробелы Поверенный».
Эти типы и части содержимого были созданы в Admin Orchard. Единственное, что в моем модуле - это файл этого класса.
Но это не скроет часть контента, когда клиент вошел в систему. Я знаю, что мне нужно работать над логикой того, какие роли могут видеть вещи (добавление ||
условий для администратора и т. Д.). Пока я просто проверяю это.
Любая помощь приветствуется.
EDIT (Bounty Added) Я действительно в тупике относительно того, возможно ли это. Эта часть контента создается через пользовательский интерфейс администратора. При отслеживании формы я вижу в разделе «Контент» Model> ContentItem> AttorneyMatterPart. Я пробовал ShapeTableBuilder
, и я пробовал OnDisplaying
и OnDisplayed
от ShapeDisplayingContext
.
Если кто-то может предоставить рабочий образец, он будет очень признателен.
Я думаю, что это не работает для меня, потому что я доступ к содержательной части неправильно. Я создал часть контента в пользовательском интерфейсе администратора. Правильно ли это: 'context.Shape.Part.Name ==" Parts_AttorneyMatterPart "'? – REMESQ
Вы всегда можете проверить с помощью отладчика, что там, но я думаю, что вы хотите эту проверку для отображаемогоContext.ShapeMetadata.Type. – Piedone
Непонятно, как предоставленный ответ не работает для вас. Как это происходит точно? –