Вход

Просмотр полной версии : Powermail и js валидация


agravin
12.10.2010, 21:24
Надавно со скрипом (http://forum.typo3.biz/showthread.php?t=8848) прикрутил к сайту RealUrl. Как говорится "дурная голова рукам покоя не дает" - полез править Powermail. Отлично настроенный Powermail достался от разработчика сайта, да вот незадача - после заполнения полей и нажатия сабмита (если неверно заполнены поля) мы переходили на некую страницу в которой к адресу формы добавлялось /?tx_powermail_pi1%5BmailID%5D=896&cHash=e418861967#c896 и уже на этой странице писалось где и что мы заполнили не верно. А хотелось чтоб подсказки вылазили на странице формы, под неверно заполненным полем. Задача казалось мне пустяковой т.к. делал уже пару сайтов где сам ставил powermail и там JS прекрасно работал. Думал копи/пастю настройки и дело с концом - не тут-то было. Любые телодвижения не дают результаты. В мануале написано, что такого рода проблемы могут возникнуть если не прикручены 4 скрипта (когда ставил расширение на свои сайты , скрипты прописывались в head автоматом, как у lightbox). В общем прикрутил я эти линки в шаблоне сайта, но вот с 4-м проблема:
<script src="validation/fachgebiete/typo3-extensions/powermail.html" type="text/javascript"></script> - вообще не понял как его прикрутить. В мануале написано, что он должен совпадать со страницей где есть форма, а у меня на сайте их несколько десятков. Хотя мой англицкий настолько скуден, что возможно я неправильно понял о чем речь.

Может кто-нибудь скажет в какую сторону рыть?
П.С. Powermail обновил до 1.5.4

Андрей Аксенов
13.10.2010, 10:07
Кроме того, нужно глянуть, какие библиотеки JS используются, если mootools, то может происходить конфликт с prototype. Вроде как, это можно настроить через константы. Проблема может быть и в этом...

agravin
13.10.2010, 11:05
В константах прописано plugin.powermail.libraryToUse = mootools - без толку

Андрей Аксенов
13.10.2010, 11:59
По-моему, там ничего мудрить не надо, чтобы сообщение о неверно заполненных полях появлялось вверху формы, нужно установить такую константу:
plugin.powermail {
# cat=plugin.powermail_additionalconfig//0510; type=boolean; label= Сообщение об обязательных полях вверху формы: можно выбрать между сообщением, появляющимся вверху формы, или отображением этого сообщения на дополнительной странице с кнопкой возврата (по умолчанию)
mandatory.messages = 1
}
Остальное возможно, используя различные части этого setup TS (http://typo3.org/documentation/document-library/extension-manuals/powermail/1.5.4/view/1/7/).
В частности нужно разобраться с TS в конце:
# Add Javascript files to page header if a powermail plugin is on current page
lib.powermail_dynJavascript = TEXT
lib.powermail_dynJavascript {
wrap = <script src="|" type="text/javascript"></script>
typolink.parameter.dataWrap = {TSFE:id},3131
typolink.returnLast = url
}
# userFunc to check if powermail is on current page
# powermail is on current page and prototype should be used
[userFunc = user_powermailOnCurrentPage] && [globalVar = LIT:prototype = {$plugin.powermail.libraryToUse}]
page.includeJS.file31312 = EXT:powermail/js/mandatoryjs/lib/prototype.js
page.includeJS.file31313 = EXT:powermail/js/mandatoryjs/src/effects.js
page.includeJS.file31314 = EXT:powermail/js/mandatoryjs/fabtabulous.js
[end]
# powermail is on current page and mootools should be used
[userFunc = user_powermailOnCurrentPage] && [globalVar = LIT:mootools = {$plugin.powermail.libraryToUse}]
page.includeJS.file31312 = EXT:powermail/js/mootools/mootools-1.2.1-packed.js
[end]
# powermail is on current page
[userFunc = user_powermailOnCurrentPage]
page.includeJS.file31311 = EXT:powermail/js/checkbox/checkbox.js
page.headerData.31310 < lib.powermail_dynJavascript
seite.headerData.31310 < page.headerData.31310
seite.includeJS.31311 < page.includeJS.file31311
seite.includeJS.31312 < page.includeJS.file31312
seite.includeJS.31313 < page.includeJS.file31313
seite.includeJS.31314 < page.includeJS.file31314
[end]





# TypeNum 3131 for field validation via prototype (current page with &type=3131 with Javascript)
powermailJS = PAGE
powermailJS {
typeNum = 3131

config {
disableAllHeaderCode = 1
disablePrefixComment = 1
xhtml_cleaning = 0
admPanel = 0
}

10 = TEMPLATE
10 {
template = FILE
template.file = EXT:powermail/js/mandatoryjs/validation.js

subparts.REQUIRED = TEXT
subparts.REQUIRED.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_required
subparts.VALIDATE_REQUIRED = TEXT
subparts.VALIDATE_REQUIRED.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_number
subparts.VALIDATE_DIGITS = TEXT
subparts.VALIDATE_DIGITS.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_digits
subparts.VALIDATE_ALPHA = TEXT
subparts.VALIDATE_ALPHA.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_alpha
subparts.VALIDATE_ALPHANUM = TEXT
subparts.VALIDATE_ALPHANUM.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_alphanum
subparts.VALIDATE_DATE = TEXT
subparts.VALIDATE_DATE.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_date
subparts.VALIDATE_EMAIL = TEXT
subparts.VALIDATE_EMAIL.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_email
subparts.VALIDATE_URL = TEXT
subparts.VALIDATE_URL.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_url
subparts.VALIDATE_DATE_AU = TEXT
subparts.VALIDATE_DATE_AU.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_date_au
subparts.VALIDATE_CURRENCY_DOLLAR = TEXT
subparts.VALIDATE_CURRENCY_DOLLAR.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_currency _dollar
subparts.VALIDATE_SELECTION = TEXT
subparts.VALIDATE_SELECTION.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_selectio n
subparts.VALIDATE_ONE_REQUIRED = TEXT
subparts.VALIDATE_ONE_REQUIRED.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_one_requ ired
subparts.DIV_CLASS = TEXT
subparts.DIV_CLASS.value = {$plugin.powermail.js.mandatorydivclass}
}
}


[globalVar = LIT:mootools = {$plugin.powermail.libraryToUse}]
powermailJS.10.template.file = EXT:powermail/js/mootools/tx_powermail-packed.js
[global]

agravin
13.10.2010, 12:19
Спасибо за совет. Попробую разобраться с TS. Хотя больше всего меня смущает то, что при установке powermail на новый сайт JS работал без телодвижений с моей стороны, а тут нет.

Андрей Аксенов
13.10.2010, 12:28
с этими ява-сценариями всегда так, нужно следить, не закралась ли там еще какая библиотека... иначе все сломается

agravin
13.10.2010, 12:30
Поставил в константы:
plugin.powermail {
# cat=plugin.powermail_additionalconfig//0510; type=boolean; label= Сообщение об обязательных полях вверху формы: можно выбрать между сообщением, появляющимся вверху формы, или отображением этого сообщения на дополнительной странице с кнопкой возврата (по умолчанию)
mandatory.messages = 1
}

, а в сетап:
[globalVar = LIT:mootools = {$plugin.powermail.libraryToUse}]
powermailJS.10.template.file = EXT:powermail/js/mootools/tx_powermail-packed.js
[global]

- все прекрасно работает. Спасибо за наводку, а то я вчера полвечера только сетап правил. (по тем примерам, что в мануале)