Предупреждения:
1) это не готовое решение, ибо делал исключительно для себя. Просто на основе того, что я сделал, можете сделать свое
2) делал для старой (dev) версии буедитора, так что не уверен будет ли на новой работать.
3) так как было лень писать модуль, для преобразования из текста в картинки, издевался над ббкодами.
Итак, что я делал
1) в bbcode-filter.inc, в _bbcode_filter_process, там где написано
// Simple replacements (str_replace is faster than preg_replace)
в $str добавил
':wink:' => '<img src="/sites/all/modules/bueditor/icons/smiles/wink.gif" alt="wink" />',
':sad:' => '<img src="/sites/all/modules/bueditor/icons/smiles/sad.gif" alt="sad" />',
':cry:' => '<img src="/sites/all/modules/bueditor/icons/smiles/cry.gif" alt="cry" />',
':angel:' => '<img src="/sites/all/modules/bueditor/icons/smiles/angel.gif" alt="angel" />',
':diablo:' => '<img src="/sites/all/modules/bueditor/icons/smiles/diablo.gif" alt="diablo" />',
':cool:' => '<img src="/sites/all/modules/bueditor/icons/smiles/cool.gif" alt="cool" />',
':embarassed:' => '<img src="/sites/all/modules/bueditor/icons/smiles/embarassed.gif" alt="embarassed" />',
':kiss:' => '<img src="/sites/all/modules/bueditor/icons/smiles/kiss.gif" alt="kiss" />',
':laughing:' => '<img src="/sites/all/modules/bueditor/icons/smiles/laughing.gif" alt="laughing" />',
':lazy:' => '<img src="/sites/all/modules/bueditor/icons/smiles/lazy.gif" alt="lazy" />',
':music:' => '<img src="/sites/all/modules/bueditor/icons/smiles/music.gif" alt="music" />',
':rtfm:' => '<img src="/sites/all/modules/bueditor/icons/smiles/rtfm.gif" alt="rtfm" />',
':secret:' => '<img src="/sites/all/modules/bueditor/icons/smiles/secret.gif" alt="secret" />',
':shok:' => '<img src="/sites/all/modules/bueditor/icons/smiles/shok.gif" alt="shok" />',
':tongue:' => '<img src="/sites/all/modules/bueditor/icons/smiles/tongue.gif" alt="tongue" />',
желательно такую штуку сделать в своем модуле
2) Положил в папку /sites/all/modules/bueditor, папку smiles со смайликами
3) сделал новую кнопку в буедиторе:
editor.G.getSmile=function(txt) {
editor.active.replaceSelection(txt,'end');
editor.dialog.close();
}
var userForm = '<table><tr>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':smile:\');"><img src="/sites/all/modules/bueditor/icons/smiles/smile.gif" alt="smile" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':wink:\');"><img src="/sites/all/modules/bueditor/icons/smiles/wink.gif" alt="wink" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':sad:\');"><img src="/sites/all/modules/bueditor/icons/smiles/sad.gif" alt="sad" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':cry:\');"><img src="/sites/all/modules/bueditor/icons/smiles/cry.gif" alt="cry" /></a></td>';
userForm += '</tr><tr>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':angel:\');"><img src="/sites/all/modules/bueditor/icons/smiles/angel.gif" alt="angel" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':diablo:\');"><img src="/sites/all/modules/bueditor/icons/smiles/diablo.gif" alt="diablo" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':cool:\');"><img src="/sites/all/modules/bueditor/icons/smiles/cool.gif" alt="cool" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':embarassed:\');"><img src="/sites/all/modules/bueditor/icons/smiles/embarassed.gif" alt="embarassed" /></a></td>';
userForm += '</tr><tr>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':kiss:\');"><img src="/sites/all/modules/bueditor/icons/smiles/kiss.gif" alt="kiss" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':laughing:\');"><img src="/sites/all/modules/bueditor/icons/smiles/laughing.gif" alt="laughing" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':lazy:\');"><img src="/sites/all/modules/bueditor/icons/smiles/lazy.gif" alt="lazy" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':music:\');"><img src="/sites/all/modules/bueditor/icons/smiles/music.gif" alt="music" /></a></td>';
userForm += '</tr><tr>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':rtfm:\');"><img src="/sites/all/modules/bueditor/icons/smiles/rtfm.gif" alt="rtfm" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':secret:\');"><img src="/sites/all/modules/bueditor/icons/smiles/secret.gif" alt="secret" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':shok:\');"><img src="/sites/all/modules/bueditor/icons/smiles/shok.gif" alt="shok" /></a></td>';
userForm += '<td><a href="javascript:editor.G.getSmile(\':tongue:\');"><img src="/sites/all/modules/bueditor/icons/smiles/tongue.gif" alt="tongue" /></a></td>';
userForm += '</tr></table>';
editor.dialog.open('Смайлики', userForm);
P.S. так же переделал кнопку предпросмотра, но так как я грязный извращенец так же добавлял в предпросмотр преобразование ббкода, думаю не особо круто будет выкладывать этот код (слишком замусорен получился)
Комментарии
рабочую версию в действии можно посмотреть?
на http://cwer.ru после регистрации
Что-то я не нашёл в поставке BuEditora такого файла:(
> 3) так как было лень писать модуль, для преобразования из текста в картинки, издевался над ббкодами.
т.е. изначально был модуль bbcode
Спасибо, весьма доступно и красиво
P.S.
модуль smile удалил теперь просто добавив в список замен свои коды смайлов ( =), ) и сделал для них замену на рисунок.
Очень удобно оказалось. Только вот не забыть про это обновлении модуля
Можно написать свой модуль через хуки (как bbcode) и подключить его в настройках материала.
Но было лень
Автору уже писала, что была проблема с данным кодом.
При нажатии на новую кнопку появлялась ошибка вида:
"
TypeError: Statement on line 2: Cannot convert undefined or null to Object
Backtrace:
Line 2 of eval script
editor.G.getSmile=function(txt) {
Line 88 of linked script http:// сайт/sites/all/modules/bueditor/bueditor.js
if (b[4]) b[4](E); //execute button script.
Line 1 of function script
editor.buttonClick(34, 33); return false;
..."
(это в Опере)
В IE ошибка другого вида: "TypeError: "editor.G" - есть null или не является объектом."
Удалось обойти, исправив начало кода.
js:
getSmile=function(txt) {
...
Теперь будем пользоваться.
Ещё раз спасибо.:-)
1) в bbcode-filter.inc, в _bbcode_filter_process, там где написано
// Simple replacements (str_replace is faster than preg_replace)
в $str добавил
- Подскажите добавить перед частью $str или после? Т.к. там идет
// Simple replacements (str_replace is faster than preg_replace)
$str = array(
сорри за офф пост но мона твои кнопки Квер
Вот рабочий код кнопки:
getSmile=function(txt) {
editor.active.replaceSelection(txt,'end');
editor.dialog.close();
}
var userForm = '<table><tr>';
userForm += '<td><a href="javascript:getSmile(\':smile:\');"><img src="/sites/all/modules/bueditor/icons/smiles/smile.gif" alt="smile" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':wink:\');"><img src="/sites/all/modules/bueditor/icons/smiles/wink.gif" alt="wink" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':sad:\');"><img src="/sites/all/modules/bueditor/icons/smiles/sad.gif" alt="sad" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':cry:\');"><img src="/sites/all/modules/bueditor/icons/smiles/cry.gif" alt="cry" /></a></td>';
userForm += '</tr><tr>';
userForm += '<td><a href="javascript:getSmile(\':angel:\');"><img src="/sites/all/modules/bueditor/icons/smiles/angel.gif" alt="angel" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':diablo:\');"><img src="/sites/all/modules/bueditor/icons/smiles/diablo.gif" alt="diablo" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':cool:\');"><img src="/sites/all/modules/bueditor/icons/smiles/cool.gif" alt="cool" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':embarassed:\');"><img src="/sites/all/modules/bueditor/icons/smiles/embarassed.gif" alt="embarassed" /></a></td>';
userForm += '</tr><tr>';
userForm += '<td><a href="javascript:getSmile(\':kiss:\');"><img src="/sites/all/modules/bueditor/icons/smiles/kiss.gif" alt="kiss" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':laughing:\');"><img src="/sites/all/modules/bueditor/icons/smiles/laughing.gif" alt="laughing" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':lazy:\');"><img src="/sites/all/modules/bueditor/icons/smiles/lazy.gif" alt="lazy" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':music:\');"><img src="/sites/all/modules/bueditor/icons/smiles/music.gif" alt="music" /></a></td>';
userForm += '</tr><tr>';
userForm += '<td><a href="javascript:getSmile(\':help:\');"><img src="/sites/all/modules/bueditor/icons/smiles/help.gif" alt="help" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':secret:\');"><img src="/sites/all/modules/bueditor/icons/smiles/secret.gif" alt="secret" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':shok:\');"><img src="/sites/all/modules/bueditor/icons/smiles/shok.gif" alt="shok" /></a></td>';
userForm += '<td><a href="javascript:getSmile(\':tongue:\');"><img src="/sites/all/modules/bueditor/icons/smiles/tongue.gif" alt="tongue" /></a></td>';
userForm += '</tr></table>';
editor.dialog.open('Смайлики', userForm);
А можно код предпросмотра в студию? Я не программер, но тоже хочу сделать на ббкодах и что бы предпросмотр работал...
Менять код модуля bbcode-filter.inc - неправильно. При обновлениях все затрется, а ты и не вспомнишь.
Странно, что для такой распространенной задачи не было написано подробной инструкции. Вот народ, я написал, пользуйтесь: qip смайлики в Drupal
Автору топика - спасибо за код кнопки BuEditor'a! Надо бы на выходных разобраться с превью...