Как сделать дочерний контент узла динамически недоступным для редактирования в ProseMirror?
Я создал схему документа, которая включает в себя captioned_image
тип узла, который ссылается на изображение в отдельной CMS. Изображение имеет подпись и кредит, который я хотел бы редактировать в документе. Когда пользователь редактирует содержимое в редакторе ProseMirror, я могу принять к сведению это изменение и отправить запрос в CMS с обновлениями.
Однако поля заголовка и кредита могут быть "заблокированы", когда другой пользователь редактирует изображение в CMS.
Как я могу сделать подпись и кредит дочерних узлов captioned_image
узел не редактируется, когда эти поля заблокированы другим пользователем? Выбор не должен быть в состоянии поместить в позицию.
1 ответ
Я могу придумать два пути
Когда часть документа заблокирована, фильтруйте действия преобразования, отменяя (возвращая к старому состоянию) любые действия, которые касаются этой области (можно определить, вызвав
forEach
на элементы вaction.transform.mapping.maps
).Напишите собственное представление узла для этих типов узлов и присвойте им атрибут
readOnly
, Переключите его, когда они должны стать недоступными для редактирования, и когда он включен, отобразите заблокированный контент с помощьюcontenteditable=false
, Но учтите, что это не защищает от программных изменений контента. Кроме того, это сделает невозможным навести на них курсор, что может быть нежелательно.