Насколько я знаю, вы либо можете редактировать блок контента, либо нет; нет способа разделить разрешения для каждого поля смарт-формы.
Что вы можете сделать, так это сгруппировать поля с ограниченным доступом в их собственную смарт-форму, а затем ссылаться на нее через поле селектора ресурсов контента.
Таким образом, ваша смарт-форма Employee может выглядеть так:
/root/txtName (not in your example, I know...)
/root/rtfBio
/root/cresHRID
Примечание: здесь я использую венгерскую нотацию для имен полей. txt – поле обычного текста, rtf – поле форматированного текста (html), а cres – селектор ресурсов контента.
Тогда у вас может быть вторая смарт-форма... назовем ее EmployeeHR, и она будет иметь следующую структуру:
/root/hireDate
/root/txtDepartment
Теоретически это сработает. Однако я должен сказать, что мне очень не нравится разбивать этот конкретный тип данных таким образом. Во-первых, отдел считает, что он будет лучше функционировать как таксономия, к которой вы можете добавить блок контента. Во-вторых, кажется, что этот тип данных лучше обслуживать, размещая их за пределами ektron, а затем используя DxH (Digital Experience Hub) для передачи данных в Ektron. Таким образом, внешняя система могла бы обрабатывать разрешения на более детальном уровне, и вы по-прежнему имели бы доступ к данным в Ektron для использования в других местах на сайте.
ОБНОВИТЬ
Пока я размышляю над этим вопросом, мне приходит в голову еще один вариант. Вы можете написать страницу ASPX или UserControl, которая проверяет, вошли ли вы в систему и являетесь ли вы членом определенной группы, прежде чем представить вам настраиваемый экран редактирования. Следующий код проверит, является ли текущий пользователь членом группы администраторов; вы можете заменить другой идентификатор группы в соответствии с вашими потребностями:
// Not sure off hand which of these using statements provides access to EkConstants...
using Ektron.Cms;
using Ektron.Cms.Common;
using Ektron.Cms.Content;
var userGroupApi = new Ektron.Cms.Framework.User.UserGroupManager();
var isInGroup = userGroupApi.IsUserInGroup(currentUserId, EkConstants.g_AdminGroup);
Это может быть реализовано в виде страницы ASPX на вашем сайте или в виде виджета и размещено на вкладке пользователя Smart Desktop в рабочей области. В любом случае, у вас есть много вариантов получить то, что вы хотите, просто ничего из коробки.
person
Brian Oliver
schedule
14.05.2015