Вставляем флэш с помощью 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 Прочитано: 12621 раз |  
  |