Вставляем флэш с помощью bb-тегов. Часть 2 - Кнопка «Вставить флэш (swf)»
Важное замечание: по сути работы ведутся на редакторе от версии Slaed 2.4 Lite. Как его установить читаем тут.
Для создания новой кнопки работы необходимо проделывать в 3 этапа.
1. Создание обработчика bb-тегов.
2. Размещение кнопки на панели редактора.
3. Создание обработчика нажатия кнопки (файл InsertCode.js)
Этап 1.
Мы уже сделали
Этап 2.
Немного теории.
Работы проводятся в function get_code($id) в 2.1 это файл sources.php
Горизонтальные ряды формируются внутри div'а Код | 1 2 3 4 5
| ."<div class=\"editor\">"
«кнопки»
."</div>" |
Сама кнопка имеет структуру Код | 1
| ."<div class=\"editorbutton\" OnClick=\"InsertCode(переменные)\"><картинка></div>" |
Переменных пять штук.
1 - имя тега (b, php, code и т.п.)
2 - информация, выводимая при вставке, например URL _JINFO - Введите полный адрес
3 - информация, выводимая при вставке, например URL _JTYPE - Введите описание
4 - сообщение об ошибке, выводимая при вставке, например URL _JERROR - Вы не указали адрес!
5 - id текущего textarea
Переменные 2, 3 и 4 могут быть пропущены. Пример кода Код | 1 2 3
| ."<div class=\"editorbutton\" OnClick=\"InsertCode('quote', '', '', '', '".$id."')\"><img title=\""._EQUOTE."\" src=\"images/editor/quote.gif\"></div>"
."<div class=\"editorbutton\" OnClick=\"InsertCode('url', '"._JINFO."', '"._JTYPE."', '"._JERROR."', '".$id."')\"><img title=\""._EURL."\" src=\"images/editor/url.gif\"></div>"
|
Итак вставляем куда нам надо код Код | 1
| ."<div class=\"editorbutton\" OnClick=\"InsertCode('swf', '', '', '', '".$id."')\"><img title=\"Вставить флэш (swf)\" src=\"images/editor/swf.gif\"></div>" |
и закидываем картинку кнопки images/editor/swf.gif
Переменные 2, 3 и 4 пропущены, поскольку в данном случае их даже не хватает, т.е. для многоязычных сайтов нужно будет расширять список... А пока сформируем всё в самом скрипте.
Этап 3.
Правим function InsertCode(code, info, type, error, area) файла InsertCode.js
Я ее выложу целиком в том виде, в котором она у меня сейчас на сайте. Необходимо отметить следующее, что обработчик тега построен так, что реагирует на введенные данные и выдает ошибку вставки с возможностью корректировки в textarea
Для тех, кто хочет разобраться что нового - ориентир if (code == 'swf') - встречается два раза - для IE и для FF
Итак функция. При смене не растеряйте скобки! Код | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| function InsertCode(code, info, type, error, area) {
if ((ClientVer >= 4) && IsIE && IsWin) {
if (code == 'swf') {
selection = document.selection.createRange().text;
if (!selection) {
var url = prompt('Введите полный адрес банера', 'http://');
var w = prompt('Введите ширину банера', '');
var h = prompt('Введите высоту банера', '');
if (!h || !url || !w) alert('Вы не ввели адрес, ширину или высоту банера - это ОБЯЗАТЕЛЬНЫЕ параметры! Исправьте их в строке!');
if (!h) var h = 'ШИРИНА';
if (!w) var w = 'ВЫСОТА';
if (!url) var url = 'АДРЕС';
AddIE('[swf w=' +w+ ' h=' +h+ ']' + url + '[/swf]', '\n');
} else {
var w = prompt('Введите ширину банера', '');
var h = prompt('Введите высоту банера', '');
if (!h || !w) alert('Вы не ввели ширину или высоту банера - это ОБЯЗАТЕЛЬНЫЕ параметры! Исправьте их в строке!');
if (!h) var h = 'ШИРИНА';
if (!w) var w = 'ВЫСОТА';
AddIE('[swf w=' +w+ ' h=' +h+ ']' + selection + '[/swf]', '\n');
}
} else if (code == 'name') {
AddIE('[b]' + info + '[/b]', ', ');
} else if (code == 'url' || code == 'mail') {
if (code == 'url') var url = prompt(info, 'http://');
if (code == 'mail') var url = prompt(info, '');
if (!url) return alert(error);
selection = document.selection.createRange().text;
if (!selection) {
var title = prompt(type, type);
AddIE('[' + code + '=' + url + ']' + title + '[/' + code + ']', '\n');
} else {
AddIE('[' + code + '=' + url + ']', '[/' + code + ']');
}
} else if (code == 'color' || code == 'family' || code == 'size') {
AddIE('[' + code + '=' + info + ']', '[/' + code + ']');
} else if (code == 'li' || code == 'hr') {
AddIE('[' + code + ']', '');
} else if (code == 'attach') {
AddIE('[' + code + '=' + info + ' align=center title=title]', '\n');
} else {
var selection = false;
selection = document.selection.createRange().text;
if (selection && code == 'quote') {
AddIE('[' + code + ']' + selection + '[/' + code + ']', '\n');
} else {
if (code == 'img' && info) {
AddIE('[' + code + '=center alt=title]' + info +'[/' + code + ']', '\n');
} else if (code == 'img') {
AddIE('[' + code + '=center alt=title]', '[/' + code + ']');
} else {
AddIE('[' + code + ']', '[/' + code + ']');
}
}
}
} else {
var txtarea = document.getElementById(area);
if (code == 'swf') {
if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart <= 0)) {
var url = prompt('Введите полный адрес банера', 'http://');
var w = prompt('Введите ширину банера', '');
var h = prompt('Введите высоту банера', '');
if (!h || !url || !w) alert('Вы не ввели адрес, ширину или высоту банера.\nЭто ОБЯЗАТЕЛЬНЫЕ параметры!\nИсправьте их в строке!');
if (!h) var h = 'ШИРИНА';
if (!w) var w = 'ВЫСОТА';
if (!url) var url = 'АДРЕС';
AddMoz(txtarea, '[swf w=' +w+ ' h=' +h+ ']' + url + '[/swf]', '\n');
} else {
var w = prompt('Введите ширину банера', '');
var h = prompt('Введите высоту банера', '');
if (!h || !w) alert('Вы не ввели ширину или высоту банера.\nЭто ОБЯЗАТЕЛЬНЫЕ параметры!\nИсправьте их в строке!');
if (!h) var h = 'ШИРИНА';
if (!w) var w = 'ВЫСОТА';
AddMoz(txtarea, '[swf w=' +w+ ' h=' +h+ ']','[/swf]', '\n');
}
} else if (code == 'name') {
AddMoz(txtarea, '[b]' + info + '[/b]', ', ');
} else if (code == 'url' || code == 'mail') {
if (code == 'url') var url = prompt(info, 'http://');
if (code == 'mail') var url = prompt(info, '');
if (!url) return alert(error);
if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart <= 0)) {
var title = prompt(type, type);
AddMoz(txtarea, '[' + code + '=' + url + ']' + title + '[/' + code + ']', '\n');
} else {
AddMoz(txtarea, '[' + code + '=' + url + ']', '[/' + code + ']');
}
} else if (code == 'color' || code == 'family' || code == 'size') {
AddMoz(txtarea, '[' + code + '=' + info + ']', '[/' + code + ']');
} else if (code == 'li' || code == 'hr' || code == 'br') {
AddMoz(txtarea, '[' + code + ']', '');
} else if (code == 'attach') {
AddMoz(txtarea, '[' + code + '=' + info + ' align=center title=title]', '\n');
} else {
if (code == 'img' && info) {
AddMoz(txtarea, '[' + code + '=center alt=title]' + info +'[/' + code + ']', '\n');
} else if (code == 'img') {
AddMoz(txtarea, '[' + code + '=center alt=title]', '[/' + code + ']');
} else {
AddMoz(txtarea, '[' + code + ']', '[/' + code + ']');
}
}
}
} |
Дата публикации: 04.08.2007 Прочитано: 12173 раз |
|