Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Локализация проекта (http://forum.typo3.ru/forumdisplay.php?f=14)
-   -   (не)русские буквы в javascript-окнах (http://forum.typo3.ru/showthread.php?t=1100)

kit 19.05.2006 15:21

Впринципе я пока обхожусь такми решением:
В файле typo3/sysext/cms/tslib/class.tslib_content.php, формируется текст обработчика события onsubmit() формы так (строка 2027):
Код:

//$validateForm=' onsubmit="return validateForm(\''.$formname.'\',\''.implode(',',$fieldlist).'\','.t3lib_div::quoteJSvalue($conf['goodMess']).','.t3lib_div::quoteJSvalue($conf['badMess']).','.t3lib_div::quoteJSvalue($conf['emailMess']).')"';

$validateForm=' onsubmit="return validateForm(\''.$formname.'\',\''.rawurldecode(implode(',',$fieldlist)).'\','.t3lib_div::quoteJSvalue($conf['goodMess']).','.t3lib_div::quoteJSvalue($conf['badMess']).','.t3lib_div::quoteJSvalue($conf['emailMess']).')"';

Таким образом передавая незакодированную строку в функцию javascript validateForm().
Примечание, нельзя использовать символ `"` и `,` в метке поля. (ну и не надо)

kit 19.05.2006 16:04

решение проблемы
 
В javascript есть функция decodeURI() - она умеет декодить utf-8 строку, закодированную rawurlencoded()
Так что можно не трогать typo3/sysext/cms/tslib/class.tslib_content.php, а поправить файл t3lib/jsfunc.validateform.js
Код:

function validateForm(theFormname,theFieldlist,goodMess,badMess,emailMess)      {
        var formObject = document[theFormname];
        theFieldlist = decodeURI(theFieldlist);  // добавленная строка
        if (!formObj............


Valery Romanchev 21.05.2006 12:50

да решение работает. Большое спасиб!!
Я запостил в баг-треккер
http://bugs.typo3.org/view.php?id=3527

kit 22.05.2006 08:36

еще одна проблема
 
Вложений: 1
В t3lib/jsfunc.validateform.js есть еще одна проблемма, которая
проявляется в TYPO3 4.0. Когда в форме ставишь "обязательное поле",
например "Email: | *_EMAIL=input,40", то проверка правильности _EMAIL
тоже не работает. Найдите в файле t3lib/jsfunc.validateform.js блок (в
оригинале номер строки 57):
Код:

    if (specialMode) {
    //index++;  //  <-- закомментируйте эту строку
      theField = split(theFieldlist, ",", index);
    }

Проблема решена.
Файл jsfunc.validateform.js с исправлениями
Вложение 17


Часовой пояс GMT +4, время: 16:57.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot