Чтение RSS каналов

Форум

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

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

5

5
1
02.04.2010 03:53:1002.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
Сервер: Локальный сервер
5

5
2
02.04.2010 11:16:51
Прошу уточнить, что именно в редакторе работает не корректно?

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

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

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

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

5
4
03.04.2010 09:01:49
ТО что не работают смайлы - за 5 лет впервый раз слышу. Про Транслит согласен
3.75

3.75
5
03.04.2010 16:23:3003.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 вставить не первым, то тоже скорее всего получим "неизвестный объект".

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

5
6
03.04.2010 18:19:2603.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."');\"
5

5
7
05.04.2010 07:18:41
tuzzz, да согласен есть такое полностью подтвердаю такой баг
4.05

4.05
8
01.09.2010 08:48:43
а что за глюк со смайлами? почему они вставляются не в то место куда надо а в конец текста
3.61

3.61
9
01.09.2010 09:52:17
tuzzz, спасибо у себя поправил
3.63

3.63
Открыть Ответить
addsmilequotfunctionvaluereturnnewpostsmilecodeфайлoldpostfieldnamefixedselfieldselfieldформызаменитьfocus
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь