Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   HTMLArea, RTE, tinymce_rte и другие визуальные редакторы (http://forum.typo3.ru/forumdisplay.php?f=24)
-   -   Как в RTE HtmlArea добавить свою кнопку? (http://forum.typo3.ru/showthread.php?t=1171)

Дылгеров Ц.В. 16.03.2006 10:59

Как в RTE HtmlArea добавить свою кнопку?
 
Доброго времени суток!

У меня возник вопрос, вроде бы не сложный, как мне показалось по-началу. На сайте, за который я отвечаю, используется простенькая CMS и внедренный мною в нее визуальный редактор (HtmlArea) (благо это оказалось совсем несложно в то время - тогда HtmlArea был простеньким).
В HtmlArea я внедрил пару новых кнопок (вызов модальных окон, простенький JavaScript, upload документов перед закрытием модального окна, возврат в HtmlArea c изменением bodytext без перегрузки). Почти все это оказалось ненужным в RTE HtmlArea, так как есть прекрасные вставки "волшебных картинок", вставки ссылок. Но только почти...

Как я считаю в RTE HtmlArea отсутствуют очень полезные (и очень простые) вещи такие, как:
1) Вставка ссылок на файлы, с их одновременным upload. Аналог в RTE HtmlArea - вставка картинок, но почему-то это не сделали во вставке ссылок на файлы. Приходится идти в "Список файлов" и там upload-ить файл на сервер.
2) Вставка ссылок на страницы со своего сайта в режиме броузера. То есть во фрейме открываешь свой сайт и ищешь ту страницу куда надо сослаться.

3) Кроме того у нас повелось вставлять в bodytext боковые висячие таблицы как например на gazeta.ru. Это реализуется тоже очень просто через javascript. Для задания ширины таблицы там используется ActiveX-компонент Slider.

Так вот все это теперь для наших пользователей стало настолько родным, что, я чувствую, отсутствие на TYPO3 RTE HtmlArea будет для них несколько болезненным.

Хотелось бы узнать - как внедрять в RTE HtmlArea свои кнопки? CustomTag для 3) не подошло. Вопрос только о кнопках. Чтобы кнопка только появилась. Остальное дело техники. Меняя скрипт htmlarea.js, кнопка не появляется.

Valery Romanchev 16.03.2006 11:56

Вложений: 1
Цитата:

1) Вставка ссылок на файлы, с их одновременным upload. Аналог в RTE HtmlArea - вставка картинок, но почему-то это не сделали во вставке ссылок на файлы. Приходится идти в "Список файлов" и там upload-ить файл на сервер.
Вот с этим я уже сталкивался - правда по другому поводу.

Я делал патч для диалога вставки ссылок (правда для BackEnd).
/typo3/browse_links.php for file upload in link wizard

Там всего 30 строк кода - и не понятно, почему этого не сделали.
Я видел обсуждения этого вопроса - может в 4.0 уже есть эта функция

Дылгеров Ц.В. 16.03.2006 13:25

Заменил файл browse_links.php - нет изменений

Судя по всему надо менять TS User options.uploadFieldsInTopOfEB = 1

А в TS Page Setup нельзя то же проделать?

Valery Romanchev 16.03.2006 13:37

Цитата:

Заменил файл browse_links.php - нет изменений
да - этот файл - для BackEnd.
я его как пример привел.
В RTE наверняка другой диалог используется - но код должен быть похожий.


Цитата:

Судя по всему надо менять TS User options.uploadFieldsInTopOfEB = 1
А в TS Page Setup нельзя то же проделать?
на вскидку - не скажу.
сейчас на эту задачу нет времени - но возможно через неделю-две сам буду эту тему копать.

Valery Romanchev 19.03.2006 03:00

options.uploadFieldsInTopOfEB=1 в User TS config
Правда, папки все равно нельзя создавать.
Но может быть - это сделают:

http://bugs.typo3.org/view.php?id=2915

Valery Romanchev 19.03.2006 14:07

папки создавать можно, если сделать патч
I check: create folder in Element Brauser can be added by 1 line of code

near 1234 in /typo3conf/ext/rtehtmlarea/mod3/browse_links.php
PHP код:

if ($BE_USER->isAdmin() || $BE_USER->getTSConfigVal('options.createFoldersInEB'))    $content.=$createFolder


Дылгеров Ц.В. 24.03.2006 10:30

разобрался как добавлять кнопку - решение не назовешь красивым - но могу рассказать

Pavel Antonov 24.03.2006 13:33

Цитата:

Сообщение от Дылгеров Ц.В.
разобрался как добавлять кнопку - решение не назовешь красивым - но могу рассказать

Конечно! Будет полезно...

Дылгеров Ц.В. 27.03.2006 10:37

Цитата:

Сообщение от Pavel Antonov
Конечно! Будет полезно...

Для создания кнопки в HTMLArea необходимо прежде всего конечно установить сам RTE HTMLArea.

Затем заходите в каталог /typo3conf/ext/rtehtmlarea/htmlarea/plugins и копируете с надлежащими правами плугин попроще - я выбрал InsertSmiley. В результате в этом каталоге возник каталог InsertPodrobno - назовем его так (Вставить Подробность (по аналогии с http://gazeta.ru)). Обратите внимание на то что в названии этого каталога есть большие буквы. Внутри этого каталога не удаляйте пока ничего.
Переименовываем insert-smiley.js в insert-podrobno-compressed.js (по умолчанию используются сжатые скрипты - нам же нужны для правки несжатые). В нем везде заменяем InsertSmiley на InsertPodrobno. Кроме названия рисунка ed_smiley.gif.

В подкаталоге popups переименовываем insertsmiley.html в insertpodrobno.html

Внутри locallang.php оставляем:
$LOCAL_LANG = Array (
'default' => Array (
'Insert Podrobno' => 'Insert Podrobno',
'Smiley' => 'Smiley',
'Cancel' => 'Cancel',
),
'ru' => Array (
'Insert Podrobno' => 'Вставить подробность',
'Smiley' => 'Смайлик',
'Cancel' => 'Отмена',
),
);

В /typo3conf/ext/rtehtmlarea/class.tx_rtehtmlarea_base.php добавляем элементы типа "InsertPodrobno" или "insertpodrobno" в массивы и строки:
$defaultToolbarOrder,
$conf_toolbar_convert,
$pluginButton,
$pluginList,
$this->defaultToolbarOrder,
действуя по обстоятельствам

также меняем conf-файлы - ext_conf_template.txt и ext_localconf.php - добавляете название InsertPlugin в HTMLAreaPluginList

Заходим в Менеджер расширений и там добавляем в htmlArea RTE в List of htmlArea plugins в конец InsertPodrobno

В TS ставим на всякий случай
RTE.config.tt_news.bodytext {
showButtons = insertpodrobno
}

Обновляем кэш typo3conf


Как видите все очень просто. В конце панели инструментов - можете посмотреть - возникла рожица.

Далее уже работаете с JavaScript.

Например в файле insert-podrobno-compressed.js исправляете

InsertPodrobno.setTagHandler = function(instance) {
return (function(param) {
if(param && typeof(param.filePodrobno) != "undefined") {
instance.editor.focusEditor();
instance.editor.insertHTML(param.filePodrobno);
}
});
};

а в файле popups/insertpodrobno.html добавить в конец

<iframe src='podrobn1.html' name='podrobno'></iframe>
<button onclick='aaa()'></button>
<script>function aaa() {
var params = {};
params.filePodrobno = podrobno.document.body.innerHTML;
__dlg_close(params);
return false;
}</script>

то при нажатии на кнопку в текст визуального редактора вставится содержимое файла podrobno1.html в каталоге popups

У меня же есть еще выпадающий список для выбора этих podrobnХ.html файлов

Antozzi 17.04.2008 20:21

я проделал все это с tinyRTE ru 1.0.2, просто добавил строки из под Patch в mod1/browe_link.php, НО еще пришлось файл tce_file.php копировать из папки typo3 и создание папок так и не заработало...


Часовой пояс GMT +4, время: 14:35.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot