![]() |
Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
|
![]() |
#1 |
Продвинутый
Регистрация: 01.10.2004
Сообщений: 48
|
![]()
Всем привет.
Тема остается открытой, как я понимаю. Я установил этот onet_correctform - ничего не изменилось. Надпись об ошибке как была иероглифами, так и осталась. МОжет его как-то настроить надо? В новом репозитории этого ext нет... Описания никакого найти не могу. Может кто сталкивался с подобной проблемой? |
![]() |
![]() |
![]() |
#2 |
Новенький
Регистрация: 03.02.2006
Сообщений: 5
|
![]()
Я зделал пару следующих изменений в файле typo3conf/ext/onet_correctform/class.ux_tslib_cObj.php и теперь все как бы работает, но я не знаю, не повлияют ли эти изменение негативно?!
Образец на: Полиграфические услуги Полиграфический Дом [Коммерсантk Однако еще есть маленькая проблема:Проблема состоит в том, что если я меняю выдающее сообщение через Template-Constant-Editor или через Setup, эти изменения не влияют. Только если я редактирую эти сообщения прямо в файле t3lib/jsfunc.validateform.js, изменения действуют. Код:
switch((string)$modeParameters[0]){ case 'EREG': $fieldlist[] = '_EREG'; $fieldlist[] = rawurlencode($modeParameters[1]); $fieldlist[] = rawurlencode($modeParameters[2]); $fieldlist[] = rawurlencode($confData['fieldname']); //$fieldlist[] = rawurlencode($confData['label']); //Original $fieldlist[] = $confData['label']; // Мои изменения $confData['required'] = 1; // Setting this so "required" layout is used. break; case 'EMAIL': $fieldlist[] = '_EMAIL'; $fieldlist[] = rawurlencode($confData['fieldname']); //$fieldlist[] = rawurlencode($confData['label']); //Original $fieldlist[] = $confData['label']; // Мои изменения $confData['required'] = 1; // Setting this so "required" layout is used. break; default: if ($confData['required'] && $confData['type']!='check') { //$fieldlist[] = rawurlencode($confData['fieldname']); //Original //$fieldlist[] = rawurlencode($confData['label']); //Original $fieldlist[] = $confData['fieldname']; // Мои изменения $fieldlist[] = $confData['label']; // Мои изменения // SV+ $fieldlist_clean[] = $confData['fieldname']; $fieldlist_clean[] = $confData['label']; // SV- } break; } Код:
if ($conf['REQ']){ // SV+ // original // $validateForm=' onsubmit="return validateForm(\\''.$formname.'\\',\\''.implode(',',$fieldlist_clean).'\\',\\''.rawurlencode($conf['goodMess']).'\\',\\''.rawurlencode($conf['badMess']).'\\',\\''.rawurlencode($conf['emailMess']).'\\')"'; // изменил $validateForm=' onsubmit="return validateForm(\\''.$formname.'\\',\\''.implode(',',$fieldlist).'\\',\\''.rawurlencode($conf['goodMess']).'\\',\\''.rawurlencode($conf['badMess']).'\\',\\''.rawurlencode($conf['emailMess']).'\\')"'; // SV- $GLOBALS['TSFE']->additionalHeaderData['JSFormValidate'] = '<script type="text/javascript" src="'.$GLOBALS['TSFE']->absRefPrefix.'t3lib/jsfunc.validateform.js"></script>'; } else $validateForm=''; |
![]() |
![]() |
![]() |
#3 | |
Новенький
Регистрация: 08.05.2006
Сообщений: 5
|
![]()
/**
* Apache 2.0.49 * PHP 4.3.4 * Mysql 4.0.18 * Typo3 4.0 */ Копал сам, вот что нашел. Проблема имеет место при кодировке UTF-8. В файле 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']).')"'; Едем дальше. JavaScript функция validateForm(theFormname,theFieldlist,goodMess,bad Mess,emailMess) в файле t3lib/jsfunc.validateform.js принимает эту строку в качестве параметра theFieldlist, и декодирует ее функцией unescape(). Цитата:
![]() Какая функция javascript раскодирует urlencoded строку и примет во внимание utf-8? Или может я не в том направлении копать начал? Последний раз редактировалось kit; 19.05.2006 в 15:22 |
|
![]() |
![]() |
![]() |
#4 |
Новенький
Регистрация: 08.05.2006
Сообщений: 5
|
![]()
Впринципе я пока обхожусь такми решением:
В файле 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']).')"'; Примечание, нельзя использовать символ `"` и `,` в метке поля. (ну и не надо) Последний раз редактировалось kit; 19.05.2006 в 15:35 |
![]() |
![]() |
![]() |
#5 |
Новенький
Регистрация: 08.05.2006
Сообщений: 5
|
![]()
В 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............ Последний раз редактировалось kit; 19.05.2006 в 16:13 |
![]() |
![]() |
![]() |
#6 |
Administrator
|
![]()
да решение работает. Большое спасиб!!
Я запостил в баг-треккер http://bugs.typo3.org/view.php?id=3527 |
![]() |
![]() |
![]() |
#7 |
Новенький
Регистрация: 08.05.2006
Сообщений: 5
|
![]()
В 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 с исправлениями jsfunc.validateform.zip Последний раз редактировалось kit; 22.05.2006 в 08:41 |
![]() |
![]() |