We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 11307
    • 136 Posts
    Всем привет.
    Возможно глупый вопрос, но тем не менее.
    Создаю форму отправки сообщения с сайта. Поля - имя, емэил, сообщение. При заполнение поля сообщение можно написать текст с разбитием его на строки. Например:
    "Привет!
    Пишу вам сообщение"
    но на почту приходит это все в виде: "Привет! Пишу вам сообщение". Т.е. не происходит разбития на строки.

    Пробовал устанавливать параметр allowhtml в значение 1 - не помогает. Другоих похожих параметров не увидел.

    Прошу помощи, наверняка все просто - но понять где косячу не могу.

    Так же возникает вопрос про добавления класса для неправильно заполненых полей. т.е. если у меня не ввели имя, вылезает сообщение перед формой. а также я хочу, что бы вокруг поля рисовалась рамочка определенного цвета заданной ширины.
    Что делаю. создаю в css файле класс такой:
    .bord {border-color:#FF0000;
    border-style:solid;
    border:1px;}
    в eform пишу параметр &invalidClass=`bord`
    и ничего пне роисходит. при попвтке отправить сообщение с пустыми полями (которые отмечены как обязательные) вылезает только сообщение. класс мой не добавляется вообще. я так понимаю это связано с тем, что поле уже имеет класс required.

    Вопрос тогда еще такой - как такую фичу реализовать? где же я косячу?

    заранее всем спасибо!
      • 785
      • 2,113 Posts
      Так много слов, а нужного, то есть описания вызова сниппета, нет.

      В вызове параметр &report должен указывать на чанк с шаблоном письма. Если там нет разбиения на строки, то все и будет выводиться в одной строке.

      &invalidClass описывает класс, добавляемый при неверном вводе параметра (по умолчанию invalid), а &requiredClass – класс при отсутствующем параметре. То есть, если вместо bord выводится required, то в поле нет ошибки – оно просто пустое.

      Кстати, это описание в принципе неверно:

      .bord {border-color:#FF0000;
      border-style:solid;
      border:1px;}

      Нужно или так:

      .bord {border-color:#FF0000;
      border-style:solid;
      border-width:1px;}

      или так:

      .bord {border: 1px solid #FF0000;}
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 11307
        • 136 Posts
        про классы - все, понял свою ошибку, спасибо.

        про сообщения..

        вот вызов:
        [!eForm? &to=`[email protected]` &formid=`eform_mailer` &tpl=`mailer_new_window` &report=`eform_report` &fromname=`[+name+]` &replyto=`[+email+]` &from=`[+email+]` &requiredClass=`bord` &sendAsHtml=`1` &invalidClass=`bord` &thankyou=`thank_you` &automessage=`answer` &allowhtml=`1` &subject=`Письмо с сайта`!]


        вот г\шаблон вывода
        <form id="contact" method="post" enctype="multipart/form-data" action="" >
        <table border="0" width="350" align="center">
          <tr>
          	<td height="20" colspan="2" valign="top"><p>
          <input id="hide" name="formid" type="hidden" value="eform_bugform"/>
          <span class="warn">[+validationmessage+]<br />
          	</p>
          	  </td>
          </tr>
          <tr>
            <td width="100" height="40" align="left" valign="top">Ваше имя:</td>
            <td width="250" align="right" valign="top"><input name="name" type="text" value="[+name+]" size="37" eform="Ваше имя:name:1"/></td>
          </tr>
          <tr>
            <td align="left" height="40" valign="top">Контактный е-mail:</td>
            <td align="right" valign="top"><input name="email" type="text" value="[+email+]" size="37" eform="Контактный е-mail:email:1"/></td>
          </tr>
          <tr>
            <td align="left" height="40" valign="top">Сообщение:</td>
            <td align="right" valign="top"><textarea name="note" cols="28" rows="6" eform="Сообщение:string:1"></textarea></td>
          </tr>
          <tr>
            <td valign="top" height="40"> </td>
            <td  align="right"><input class="send" type="submit" name="send" value="Отправить" /></td>
          </tr>
        </table>
        </form>


        и вот шаблон репорта
        <b>Поступило сообщение с сайта</b><br />
        -------------------------------------------------<br />
        <p>
        [+note+]
        </p>
        
        -------------------------------------------------<br />
        
        Имя: [+name+]<br />
        e-mail: [+email+]<br />
        <p>Ответить: <a href="mailto:[+email+]?subject=RE">[+email+]</a></p>



        так что неясным остается момент, почему текст из textarea приходит одной строкой, а не несколькими
          • 785
          • 2,113 Posts
          Документацию читайте! Тем более что она прямо вместе со сниппетом поставляется.
          Там написано:
          html - Same as string except that it converts line endings (\n) to
          tags
          То есть нужно исправить
          eform="Сообщение:string:1"
          на
          eform="Сообщение:html:1"
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 11307
            • 136 Posts
            AKots, большое Вам спасибо!


            блин, поспешил.
            eform="Сообщение:html:1" - не помогает такое решение. да, теги стали работать. но мне нужно что бы при нажатии на ентер в поле сообщение переводилось на новую строку, а в письме, которое приходило было так же как и в форме...

            блин, я написал, сам не очень понял) в первом посте вроде более понятно)
              • 785
              • 2,113 Posts
              Quote from: gregst at Feb 20, 2008, 11:25 AM

              блин, я написал, сам не очень понял
              Я тем более не понял. Если теги работают, то тег
              переводит строку.
              Если строка в почтовой программе не переводится, нужно смотреть код HTML пришедшего письма и при необходимости корректировать соответствующий чанк.
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 11307
                • 136 Posts
                попробую пояснить что мне нужно:

                1) в форму в текстареа вводится текст. в несколько строчек. перевод на новую строку осуществляется нажатием ентера. теги человек не использует.
                2) на почту приходит письмо, в котором текст из текстареа выводится в одну строку.
                чанк шаблона письма я привел. в нем используется плейсхолдер [+nite+]./

                те. вводится что-то нибудь типа:
                "1 строка
                2 строка
                3 строка"

                а в письме приходит:
                "1 строка 2 строка 3 строка" - в одну строчку.

                вот что я имел ввиду
                  • 785
                  • 2,113 Posts
                  Повторю - нужно смотреть код HTML пришедшего письма. У меня eform работает именно так, как описано – после смены string на html в письме появляются теги
                  и в почтовой программе введенный текст располагается на нескольких строках. Кстати, может страницы остались старые в кэше?
                  А теги человеку и не надо использовать – при нажатии клавиши Enter в текст вставляется символ \n, который eform меняет на
                  .
                    Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                    Статьи о MODx, регулярно новые публикации
                    • 11307
                    • 136 Posts
                    обновил сайт - не помогло
                    вот такой текст приходит в письме:
                    <b>Поступило сообщение с сайта</b><br />
                    -------------------------------------------------<br />
                    <p>
                    сообщение
                    в
                    несколько
                    строк
                    </p>
                    
                    -------------------------------------------------<br />
                    

                    в конце строчек
                    не добавляется((


                    подскажите, пожалуйста, в чем еще может быть проблема?
                      • 785
                      • 2,113 Posts
                      Не знаю, тут помочь ничем не могу. У меня в чанке формы стоит:
                      <textarea name="message" rows="5" cols= "40" id="cfMessage" eform="Сообщение:html:1"></textarea>
                      а в чанке отчета:
                      <p>Текст:<br />[+message+]</p>

                      В итоге в пришедшем письме получается:
                      <p>Текст:<br />сообщение
                      <br />в несколько
                      <br />строк</p>

                      То есть все правильно работает.
                      Если так не работает, нужно в файле eform.inc.php найти строку:
                      if(!$sendAsText ) $value = preg_replace('#(\n<br[ /]*?>|<br[ /]*?>\n|\n)#i','<br />',$value);

                      и разобраться, почему она не работает.
                        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                        Статьи о MODx, регулярно новые публикации