Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Powermail и js валидация (http://forum.typo3.ru/showthread.php?t=8949)

agravin 12.10.2010 21:24

Powermail и js валидация
 
Надавно со скрипом прикрутил к сайту 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.
В частности нужно разобраться с 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_selection
        subparts.VALIDATE_ONE_REQUIRED = TEXT
        subparts.VALIDATE_ONE_REQUIRED.data = LLL:EXT:powermail/pi1/locallang.xml:JSvalidation_label_validate_one_required
        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]

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


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

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