Ajax Control Toolkit Редактор HTML Проблема с настройкой? - PullRequest
3 голосов
/ 13 января 2010

Как изменить настройки по умолчанию для ACT HTML Editor? Я хочу загрузить редактор, например, с помощью кнопки Selected Bold или с направлением rtl вместо ltr по умолчанию.
Как я могу это сделать? Я переопределил метод FillTopToolbar(), чтобы добавить пользовательские кнопки, но я не знаю, как изменить настройки по умолчанию.
Так как выбран ltr по умолчанию, я хочу изменить его на rtl.

Ответы [ 2 ]

5 голосов
/ 19 января 2010

Я отредактировал свой ответ, чтобы исправить некоторые вещи

HTMLEditor не предоставляет способ установить состояние этих кнопок с помощью серверного кода. Хотя на клиенте он инициализируется с помощью Sys.Application.load Event . Если вы запустили свой код после их инициализаторов, но до того, как пользователь будет взаимодействовать с пользовательским интерфейсом, вы можете установить любые свойства, которые вы хотите установить в этом обработчике событий.

Вот код, необходимый для установки кнопки жирного шрифта и состояния кнопок RTL. Вы можете взять его отсюда, если хотите изменить состояния других кнопок:

// Attach a handler to the load event.
Sys.Application.add_load(myOnLoadLoader);

function myOnLoadLoader() {
    //This will run JUST after ALL code that was set to run during the load event has run
    window.setTimeout(myOnLoad, 0);
}

function myOnLoad() {
    var editor = $find('<% =editor.ClientID %>');
    var toolbar = editor.get_changingToolbar();
    var toolbarButtons = toolbar.get_buttons();
    for (var i = 0; i < toolbarButtons.length; i++) {
        var toolbarButton = toolbarButtons[i];
        if (toolbarButton instanceof AjaxControlToolkit.HTMLEditor.ToolbarButton.Rtl ||
        toolbarButton instanceof AjaxControlToolkit.HTMLEditor.ToolbarButton.Bold) {
            toolbarButton.set_activeEditPanel(editor.get_editPanel());
            toolbarButton.callMethod();
        }
    }
}

Sys (и, следовательно, Sys.Application) - это пространство имен, которое происходит из javascript ASP.Net AJAX (файлы, которые добавляются благодаря ScriptManager, который вы добавляете на свою страницу). Если вы используете это, вы должны быть уверены, что эта строка Sys.Application.add_load(myOnLoad); запускается после загрузки файлов ASP.Net AJAX. Вы можете сделать это несколькими способами:

  1. Добавьте этот скрипт ниже на странице, чем scriptManager.
  2. Переместите сценарий в отдельный файл JS и загрузите его с помощью ScriptManager (рекомендуется).

Если вы переместите свой скрипт в отдельный файл, вы заметите, что var editor = $find('<% =youreditor.ClientID %>'); больше не работает. Это связано с тем, что файлы javascript не анализируют теги сервера и не заменяют их значением на стороне сервера (как это делают страницы aspx). Таким образом, часть, которая является проблемой здесь, является <% =youreditor.ClientID %>.

Чтобы это исправить, вот что вы делаете:

Добавьте это к разметке aspx (в разделе head):

<script language="javascript">
    var myEditorId = '<%= youreditor.ClientID %>';
</script>

Так это выглядит примерно так:

<head runat="server">
    <script language="javascript">
        var myEditorId = '<%= youreditor.ClientID %>';
    </script>
<title></title>
</head>

(Если вы используете мастер-страницу, вы просто добавите тег script под ScriptManager на своей странице)

И в вашем файле JS замените это

var editor = $find('<% =youreditor.ClientID %>');

с этим

var editor = $find(myEditorId);
0 голосов
/ 16 января 2010

Вам нужно будет сделать это с помощью CSS, поскольку элемент управления редактора не поддерживает rtl изначально. Следующий CSS установит направление к rtl -

div
{
    direction:rtl;
}

Стили по умолчанию для редактора HTML можно найти в файле Editor.css.

...