Подтвердить что ты не робот

Sitecore 8, MVC, Редактор опыта: как сделать обновление рендеринга после использования кнопки редактора полей

У нас есть рендеринг, перечисляющий выбранные элементы в TreeSelect в текущем элементе. В нашем случае мы называем их "Метки" (1)

Мы добавили кнопку редактора полей в компонент, чтобы редактор мог изменять выбранные элементы. (2) (Как описано, например, Добавление настраиваемого компонента)

Когда редактор нажимает (2) окно редактора (3), открывается в диалоговом окне. Редактор может выбирать различные элементы (называемые тегами в нашем случае) с помощью TreeSelect.

Когда редактор нажимает кнопку ok (4), значения устанавливаются.

Теперь к проблеме:

Значения на самом деле устанавливаются по мере их сохранения, когда редактор нажимает кнопку "Сохранить", но мы хотим, чтобы наш список на странице (1) сразу отражал установленные элементы, когда редактор нажимает кнопку ok (4), т.е. до чтобы фактически сохранить весь предмет.

Как мы это достигаем?

(Я нахожусь в контакте с поддержкой Sitecore, но до сих пор я не получил никаких ответов...)

Screenshot

Обновление После большого разговора с поддержкой у нас по-прежнему нет полезного решения.

Мы попытались превратить его в средство визуализации полей, отображающее ссылки. Что получилось:

  • Поле обновляется, когда вы редактировали его в редакторе всплывающих окон. (Но...)
  • В первый раз при загрузке страницы он выглядит хорошо.
  • Вы можете сделать кнопку WebEdit с командами для редактирования поля и добавить его как пользовательскую кнопку в поле (register <command name="webedit:fieldeditor" type="Sitecore.Shell.Applications.WebEdit.Commands.FieldEditor, Sitecore.Client"/>) и установить Нажмите кнопку на webedit:fieldeditor(command={3473DDA1-2983-493C-AF7A-054C75AA7AD3},fields=NameOfField, где указатель указывает на себя и значок "Значок", установлен на нем.)

Что не получилось:

  • Поле обновляется по необработанному значению, а не тому, что я хочу отобразить. Используется код сервера, но не в рендеринг html-кода.
  • Когда я хочу отредактировать значение в редакторе полей, значение, отправленное редактору поля, не является необработанным значением, а тем, что фактически отображается на странице. (Я думаю, это можно как-то решить)

Проблема с поддержкой превратилась в запрос функции, позволяющий серверу участвовать в рендеринге поля, а не просто отправлять новое значение для обновления JavaScript. Сервер делает первый рендеринг, поэтому, когда он уже участвует в обновлении, ему также должно быть разрешено выполнять следующие действия.

Мы решили не тратить больше времени на это прямо сейчас (у нас есть и другие вещи, чтобы сделать тоже). У меня плохой опыт работы с редактором, поскольку поле не обновляется до тех пор, пока редактор не сохранит этот элемент.

Тем не менее у нас нет подходящего решения для этой проблемы. Если вы хотите продолжить работу над ним и хотите получить ссылку на мою проблему, это 439059.

4b9b3361

Ответ 1

Обратите внимание на post.

Как это работает: how-it-works

Ответ 2

Это может быть не полезно здесь. Я сделал это на обычных сайтах, но не в Sitecore. Но, здесь одна возможность....

Это ситуация, когда вы должны передать функцию обратного вызова в всплывающее окно дочернего элемента. Этот обратный вызов заставит окно вызывающего/родительского окна повторно читать/повторно загружать информацию, которая была просто обновлена ​​дочерним элементом.

Пример: Пользователь нажимает (2), чтобы открыть окно редактора (3) (окно редактора открывается и функция обратного вызова передается как параметр) Пользователь нажимает кнопку "ОК" (4). Обработчик событий кнопки "ОК" обновляет изменения, затем вызывает функцию обратного вызова, которая повторно загружает обновленную информацию и закрывает всплывающее окно. Когда всплывающее окно закрывается, родительское окно теперь отображает информацию, которую только что обновил всплывающее окно/редактор.

Это требует разработки javascript (jquery) на стороне клиента, но вполне нормально.