Как использовать пользовательские стили и стили разметки в CEWP SharePoint 2010 (100% решение JavaScript) - PullRequest
3 голосов
/ 01 октября 2011

Короче говоря, с помощью RichHtmlField мы можем настроить, какие стили и стили разметки будут отображаться в раскрывающихся списках на ленте. Мы не можем использовать веб-часть OOTB Content Editor.

После опроса / противопоставления RichHtmlField и CEWP (испускаемый HTML / JavaScript) мне действительно удалось найти решение JavaScript.

В то время как RichHtmlField генерирует Page Script для инициализации элемента управления полем, CEWP не генерирует такой сценарий инициализации. Кроме того, RichHtmlField испускает значительно большее количество атрибутов HTML, чем CEWP, и два из этих атрибутов: PrefixStyleSheet и StyleSheet .

PrefixStyleSheet определяет префикс таблицы стилей, используемый в раскрывающемся меню. Таблица стилей - это относительный URL сервера к фирменному файлу CSS.

Итак, при всех этих вещах мы сможем инициализировать CEWP с использованием фирменной таблицы стилей с помощью jQuery:

<script type="text/javascript">
 ExecuteOrDelayUntilScriptLoaded(function() {

 // window.setTimeout(function() {

 $("div[RteRedirect]").each(function() {

    var id = $(this).attr("RteRedirect"),
        editSettings = $("#" + id);

    if(editSettings.length > 0 && editSettings[0].PrefixStyleSheet != 'yourcustom-rte') {
       editSettings[0]['PrefixStyleSheet'] = 'yourcustom-rte';
       editSettings[0]['StyleSheet'] = '\u002fStyle Library\u002fen-US\u002fThemable\u002fCore Styles\u002f<somecustomstylesheet>.css';
       RTE.Canvas.fixRegion(id, false);
    }

 });

// }, 2000);

}, "sp.ribbon.js");

</script>

Надеюсь, это кому-нибудь поможет. Этот код может идти во многих разных направлениях. Я просто представляю основы. Если вы добавите это на главную страницу внутри EditModePanel, она будет работать на нескольких сайтах.

Там есть таймер, поскольку в зависимости от порядка загрузки скрипта что-то может помешать тому, что вы сделали после того, как вы это сделали. Дайте мне знать, если это работает / не работает для вас.

Было бы здорово, чтобы где-нибудь вести подсчет решений этой проблемы.

Приветствия

M

1 Ответ

2 голосов
/ 19 мая 2016

, хотите верьте, хотите нет 4 года - пост был полезным!

Чтобы это работало, мне пришлось изменить это:

 $("td[RteRedirect]").each(function() {

    var id = $(this).attr("RteRedirect"); 
        editSettings = $("#" + id);

Спасибо

...