Использование контрола HtmlEditor. Часть 3
Часть 1. Использование HtmlEditor на страницах/контролах SharePoint
 Часть 2. Создание своего контрола на базе HtmlEditor
 Часть 3. Варианты использование HtmlEditor
 Исходные коды демонстрационного проекта
Редактор в модальном окне
Для начала пример с модальным окном. Здесь нам понадобится jQuery (исключительно для удобства, можно обойтись и без этой библиотеки). Сценарий применения следующий: На странице есть простая кнопка/ссылка по нажатии на которую, вызывается модальное окно, пользователь вводит данные и окно закрывается. Основная страница не перегружена "тяжелым" контролом, коим является HtmlEditor.
Вызов модального окна - одно удовольствие и минимум кода:
- function GetHtmlContent() {
 -   var options = {
 -     url: "/_layouts/ZhukBlogUsingHtmlEditor/ModalEditor.aspx",
 -     title: "HtmlEditor",
 -     width: 500,
 -     dialogReturnValueCallback: editorCallback
 -   }
 -   SP.UI.ModalDialog.showModalDialog(options);
 - }
 -  
 - function editorCallback(result, target) {
 -   if (result == 1) { //Пользователь нажал кнопку "ОК"
 -     $("#HtmlModalResult").html(target);
 -     $("#<%= HTMLSource.ClientID %>").html(target);
 -   } else { //Пользователь отменил ввод
 -     alert("Canceled");
 -   }
 - }
 
Здесь ничего сложного. Страница, открываемая в диалоговом окне содержит стандартный HtmlEditor (подробнее читай часть 1). А вся хитрость заключается в получении HTML-кода из редактора на стороне клиента без вызова постбэка. HtmlEditor хранит этот HTML-код в поле, ID которого получается путем конкатенации ClientID самого контрола и "_displayContent". Таким образом возвращать значение вызывающей странице мы будем вот таким кодом (JavaScript):
- function ReturnValue() {
 -   window.frameElement.commonModalDialogClose(1, $('#<%= Editor.ClientID %>_displayContent').html());
 - }
 
Весь код я здесь не привожу, так как исходные коды демонстрационного проекта прилагаются.
UIVersion = 3
Теперь я покажу как обеспечить совместимость с предыдущей версией интерфейса, доставшейся от SharePoint 2007. Просто так наш HtmlEditor не заработает. Для работы ему не хватает стилей из forms.css. Но и эта проблема решается путем добавления на вызывающую страницу следующего кода:
- protected override void OnPreRender(EventArgs e)
 - {
 -   base.OnPreRender(e);
 -   if (SPContext.Current.Web.UIVersion == 3)
 -     CssRegistration.Register("forms.css");
 - }
 
Теперь все работает при любых обстоятельствах:
   
 
 






















































































