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

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

5

5

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

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

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

Код
<form name=post>
 и 
<textarea name=comment>

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

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

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

Найти

Код
function AddSmile(SmileCode) {
	var SmileCode;
	var newPost;
	var oldPost = SelField.value;
	newPost = oldPost+SmileCode;
	SelField.value=newPost;
	SelField.focus();
	return;
}

Заменить на

Код
function AddSmile(SmileCode,FieldName) {
	var SmileCode;
	var newPost;
	var FixedSelField = eval("document.post."+FieldName);
	var oldPost = FixedSelField.value;
	newPost = oldPost+SmileCode;
	FixedSelField.value=newPost;
	FixedSelField.focus();
	return;
}

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

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

Код
OnClick=\"AddSmile(' *$i');\"

на

Код
OnClick=\"AddSmile(' *$i','".$name."');\"

Можно конечно поправить и на предмет имени формы, но может тут кто поможет перекроить джаваскрипт на предмет использования document.getElementById.
В таком разе имя формы уже роли играть не будет вовсе.

Версия системы Open SLAED 1.*
Версия PHP PHP 5
Сервер Локальный сервер
tuzzz
tuzzz
5

5

2
02.04.2010 11:16:51

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


О сколько нам открытий чудных, Готовит просвещенья дух, И опыт, сын ошибок трудных, И гений, парадоксов друг...

SLAED CMS
SLAED CMS
3.24

3.24

3
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
tuzzz
5

5

4
03.04.2010 09:01:49

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

ra55551
ra55551
3.75

3.75

5
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" - фича.

PHP
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
tuzzz
5

5

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

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

Код
function AddSmile(SmileCode) {
	var SmileCode;
	var newPost;
	var oldPost = SelField.value;
	newPost = oldPost+SmileCode;
	SelField.value=newPost;
	SelField.focus();
	return;
}

Заменить на

Код
function AddSmile(SmileCode,FieldId) {
	var SmileCode;
	var newPost;
	var FixedSelField = document.getElementById(FieldId);
	var oldPost = FixedSelField.value;
	newPost = oldPost+SmileCode;
	FixedSelField.value=newPost;
	FixedSelField.focus();
	return;
}

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

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

Код
OnClick=\"AddSmile(' *$i');\"

на

Код
OnClick=\"AddSmile(' *$i','".$id."');\"
tuzzz
tuzzz
5

5

7
05.04.2010 07:18:41

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


[Koshey-Developer](https://kosheydemo.info/)

ZOMBiE
ZOMBiE
4.05

4.05

8
01.09.2010 08:48:43

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

Sergey
Sergey
3.57

3.57

9
01.09.2010 09:52:17

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

panic
panic
3.38

3.38

Открыть Ответить
Хотите опробовать SLAED CMS в действии?
Идеи и предложения
Обратная связь
Подтверждение

Поделиться
QR-код

Предварительный просмотр