Открыть Ответить

Ковыряние в bb редакторе.

02.04.2010 03:53:10 02.04.2010 03:56:36

Ух и тяжко же до форума у вас тут с 0 добираться... Ну да бог с ним.

На OpenSlaed 1.2 столкнулся с тем, что при использовании textarea() некорректно ведет себя bb-редактор. Вдумчиво почитал код и выяснил, что, например смайлы корректно могут работать только при

<br /> <form name=post><br /> и <br /> <textarea name=comment><br />


Решение в лоб и не слишком красивое, ну уж как смог:

  1. Конвертировать файл "ajax/insert_code.js" из cp-1251 в utf-8, для корректной работы транслитерации.

2. Если принять, что все ваши формы будут с именем post, то редактировать тот же файл:

Найти
<br /> function AddSmile(SmileCode) {<br /> var SmileCode;<br /> var newPost;<br /> var oldPost = SelField.value;<br /> newPost = oldPost+SmileCode;<br /> SelField.value=newPost;<br /> SelField.focus();<br /> return;<br /> }<br />


Заменить на

<br /> function AddSmile(SmileCode,FieldName) {<br /> var SmileCode;<br /> var newPost;<br /> var FixedSelField = eval("document.post."+FieldName);<br /> var oldPost = FixedSelField.value;<br /> newPost = oldPost+SmileCode;<br /> FixedSelField.value=newPost;<br /> FixedSelField.focus();<br /> return;<br /> }<br />


3. Открыть файл "function/function.php" найти все вызовы функции AddSmile, там их 3.

Заменить все три

<br /> OnClick=\"AddSmile(' *$i');\"<br />


на
<br /> OnClick=\"AddSmile(' *$i','".$name."');\"<br />


Можно конечно поправить и на предмет имени формы, но может тут кто поможет перекроить джаваскрипт на предмет использования document.getElementById.
В таком разе имя формы уже роли играть не будет вовсе.
Open SLAED 1.*
PHP 5
Локальный сервер
tuzzz
  • Группа: Новички
  • Пункты: 29
  • Регистрация: 01.04.2010
tuzzz
5

5

Прошу уточнить, что именно в редакторе работает не корректно?


О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
SLAED CMS
  • Группа: Клиент
  • Пункты: 39078
  • Регистрация: 30.04.2005
  • Пол: Мужчина
  • Из: Germany
SLAED CMS
3.24

3.24

02.04.2010 15:06:40 02.04.2010 15:10:46

При дефолтной установке не работает вставка смайлов через bb-редактор например а модуле files, при заливке файла. Причина в абсолютном пути к полю в файле "ajax/insert_code.js". А конкретно: var SelField = document.post.comment;

Так же не работает транслитерация по причине неверной кодировки этого же файла.

И мне как разработчику тоже иной раз нужно текстовое поле с bb-редактором, кроме как comment

tuzzz
  • Группа: Новички
  • Пункты: 29
  • Регистрация: 01.04.2010
tuzzz
5

5

ТО что не работают смайлы - за 5 лет впервый раз слышу. Про Транслит согласен

ra55551
  • Группа: Клиент
  • Пункты: 2121
  • Регистрация: 02.11.2008
  • Пол: Мужчина
  • Из: Пермь
ra55551
3.74

3.74

03.04.2010 16:23:30 03.04.2010 16:28:32

Речь об OpenSlaed 1.2 - ему не 5 лет.

Собственно Sled Lite для внутренних нужд сети использую порядка 2-3 лет. Нравится он мне. Дает высокую скорость в разработке модулей и при этом не слишком перегружен лишним кодом.

А для проверки я вам предлагаю участок кода, еще раз уточню: я это обнаружил только в OpenSlaed 1.2, а не на других версиях этой CMS.

Принимаем, что имя формы "post" - фича.


if (!defined("MODULE_FILE")) {

	Header("Location: ../../index.php");

	exit;

}

function tester()
{
   $content = "<form name=post>\n"
   .textarea("1","comment","","files","10")."<br>\n"
   .textarea("2","test_name","","files","10")."<br>\n"
   ."</form>";

   head();
   open();
   echo $content;
   close();
   foot();
}

switch($op) {

	default:

	tester();

	break;

}


Собственно врубаем bb-редактор в конфигурациях.

Теперь расскажу, что будет происходить с этим кодом.
При клике на смайл в нижнем поле, код попадет в верхний. Если убрать первую textarea из кода, то получим в джаваскрипте "неизвестный объект". И как следствие - смайла в поле нету. Кроме того, если просто поле comment вставить не первым, то тоже скорее всего получим "неизвестный объект".

Протестируйте сами.

tuzzz
  • Группа: Новички
  • Пункты: 29
  • Регистрация: 01.04.2010
tuzzz
5

5

03.04.2010 18:19:26 03.04.2010 18:21:33

И вдогонку, нарисовал код независимый от имени формы:
В файле "ajax/insert_code.js" найти

<br /> function AddSmile(SmileCode) {<br /> var SmileCode;<br /> var newPost;<br /> var oldPost = SelField.value;<br /> newPost = oldPost+SmileCode;<br /> SelField.value=newPost;<br /> SelField.focus();<br /> return;<br /> }<br />


Заменить на

<br /> function AddSmile(SmileCode,FieldId) {<br /> var SmileCode;<br /> var newPost;<br /> var FixedSelField = document.getElementById(FieldId);<br /> var oldPost = FixedSelField.value;<br /> newPost = oldPost+SmileCode;<br /> FixedSelField.value=newPost;<br /> FixedSelField.focus();<br /> return;<br /> }<br />


Открыть файл "function/function.php" найти все вызовы функции AddSmile, там их 3.

Заменить все три

<br /> OnClick=\"AddSmile(' *$i');\"<br />


на
<br /> OnClick=\"AddSmile(' *$i','".$id."');\"<br />

tuzzz
  • Группа: Новички
  • Пункты: 29
  • Регистрация: 01.04.2010
tuzzz
5

5

tuzzz, да согласен есть такое полностью подтвердаю такой баг

ZOMBiE
  • Группа: Клиент
  • Пункты: 706
  • Регистрация: 24.06.2006
  • Пол: Мужчина
  • Из: Москва
ZOMBiE
4.05

4.05

а что за глюк со смайлами? почему они вставляются не в то место куда надо а в конец текста

Sergey
  • Группа: Клиент
  • Пункты: 1246
  • Регистрация: 21.09.2005
  • Пол: Мужчина
Sergey
3.57

3.57

tuzzz, спасибо у себя поправил

panic
  • Группа: Посетители
  • Пункты: 425
  • Регистрация: 28.02.2008
panic
3.38

3.38

Открыть Ответить

Хотите опробовать SLAED CMS в действии?

Идеи и предложения
Обратная связь