Я создаю приложение, позволяющее пользователям создавать свои собственные почтовые рассылки на основе предварительно определенных шаблонов.
У меня есть страница с названием проекта и т. Д., И в нем выложен бюллетень. Для этого я использую iframe, так как это кажется самым простым решением.
application page
iframe
html template with html content
Теперь, когда я работаю над страницами редактирования, я начинаю сомневаться, что iframe является решением для этой ситуации.
На странице редактирования я хочу показать редактор, встроенный в тело шаблона новостной рассылки, чтобы пользователи могли редактировать редактируемую область на месте, все еще видя шаблон. Кроме того, я хочу показать им предварительный просмотр, прежде чем они сохранят новую версию.
Итак, экран редактирования будет выглядеть примерно так:
application page
html template containing the editable area
ckeditor allowing editing the editable area
Теперь, если я использую iframe для редактируемого представления, тогда ckeditor должен быть встроен в iframe. И если я отправлю iframe, то страница приложения не обновится. Это решение и обходные пути кажутся чрезмерно сложными.
application page
iframe
html template containing the editable area
ckeditor allowing editing the editable area
Итак, каким будет другое решение?
Я подумываю о том, чтобы взять CSS-стили шаблона бюллетеня и содержимое тега body и отобразить их на странице приложения. Я должен убедиться, что стили определены уникально для приложения, чтобы они не конфликтовали со стилями новостной рассылки, что может быть выполнимо. Также у меня есть контроль над шаблонами, и я смогу определить области, которые нужно объединить в теле страницы.
application page
merged html template css
html template body tag content
ckeditor allowing editing the editable area
Мне это кажется немного хрупким, так как мне пришлось бы динамически извлекать стили и содержимое тегов body, и я не уверен, что они будут отображаться на странице приложения на 100% правильно.
Я полагаю, что это довольно распространенная модель, и мне интересно, как другие решили проблему или как бы вы ее решили?
Особенно интересно, возможно ли изменение дизайна, которое упростит процесс и техническое решение.
Я строю это в Rails 3.2.