Woxis

Woxis

С нами с 25 июля 2018; Место в рейтинге пользователей: #12052

Создание корпоративного информационного сайта с функционалом соцсети

60 250 000
Добрый день, требуется создать внутренний корпоративный интранет сайт. Имеется предварительное ТЗ, ключевые моменты которые необходимо реализовать на сайте — это интеграция с системой Active Directory, чтобы можно было выгружать пользователей на сайт из AD а также синхронизация, допустим уволился человек и в AD его учетка отключена, то она должна удалиться с сайта. 2 Интеграция c IP телефонией Asterisk, чтобы была возможность выполнить звонок на ip телефон пользователя. Важно чтобы исполнитель имел опыт в проектах подобного рода, смог предоставить портфолио и являлся юр. лицом для заключения договора. Ну и само ТЗ:
Woxis
18 мая 2020, 16:26
modx.pro
366
0

Formit + Ajaxform валидация кастомного элемента select

Добрый день, встала задача сделать форму на сайте с отправкой нескольким адресатам на основе выбранных пунктов элемента select. Все отлично, но есть пару проблем:
1. Не выбирает несколько получателей, вернее выбирает несколько а письмо шлет только 1му получателю. Выборка осуществляется через самописный сниппет который сопоставляет выбранные значения из подготовленного массива с email-ами.
<?php
$group = array(
    '[ [++email3-footer] ]',
    '[ [++email3-footer] ]',
    '[ [++email3-footer] ]',
    '[ [++email2-footer] ]',
    '[ [++email2-footer] ]',
    '[ [++email2-footer] ]',
);

// массив $group содержит email`ы в том же порядке,
// в котором объявлены options в html форме обратной связи.

$userChoice = $hook->getValue('service');
$hook->setValue('emailAddresses',$group[$userChoice]);
return true;
Код самой формы:
<div class="contact-form">
                        <form action="" method="POST" enctype="multipart/form-data">
                            <div class="row">
                                <div class="col-md-12 col-12">
                                    <input type="text" placeholder="Ваше имя" id="fname" name="fname" value="[ [!+fi.fname] ]">
                                </div>
                                <div class="col-12">
                                    <input type="text" placeholder="Ваш телефон" id="fphone" name="fphone" value="[ [!+fi.fphone] ]">
                                </div>
                                <div class="col-12">
                                    <div id="addressTo">
                                        <select class="selectpicker form-control" data-title="Тема расчета" name="service" multiple>
                                                <option value="0" [ [!+fi.service:FormItIsSelected=`0`] ]>Торговое оборудование</option>
                                                <option value="1" [ [!+fi.service:FormItIsSelected=`1`] ]>Стеновые панели</option>
                                                <option value="2" [ [!+fi.service:FormItIsSelected=`2`] ]>Индивидуальные стойки ресепшн</option>
                                                <option value="3" [ [!+fi.service:FormItIsSelected=`3`] ]>Гнутоклееные изделия</option>
                                                <option value="4" [ [!+fi.service:FormItIsSelected=`4`] ]>Модульные стойки ресепшн</option>
                                                <option value="5" [ [!+fi.service:FormItIsSelected=`5`] ]>Покраска МДФ/Шпон</option>
                                        </select>
                                    </div>
                                </div>
                                <div class="col-12">
                                    <textarea class="contact-textarea" placeholder="Текст сообщения" id="msg" name="msg" value="[ [!+fi.msg] ]"></textarea>
                                </div>
                                <div class="col-12">
                                    <div class="file_upload">
                                        <span class="button">Обзор</span>
                                        <mark>Файл не выбран</mark>
                                        <input type="file" name="file">
                                      </div>
                                </div>
                                <div class="col-12" style="font-size: 13px;margin-bottom: 20px;">Разрешенные форматы файлов(макс. размер-5МБ): .jpg, .png, .pdf, .doc, .docx</div>
                                <div class="col-12">
                                    [ [!recaptchav2_render] ]
                                    <span class="error_g-recaptcha-response error">[ [!+fi.error.recaptchav2_error] ]</span>
                                </div>
                                <div class="col-12">
                                    <button id="submit" class="cont-submit btn-contact btn-style" name="submit">Отправить сообщение</button>
                                </div>
                            </div>
                            [ [!+fi.validation_error_message:!empty=`
                                 <div class="alert">
                                   <p>Пожалуйста, исправьте следующие ошибки:</p>
                                       <ul>
                                           [ [!+fi.error.fname:!empty=`<li><a href="[ [*uri] ]#fname">Поле «Ваше имя» не заполнено</a></li>`] ]
                                           [ [!+fi.error.fphone:!empty=`<li><a href="[ [*uri] ]#fphone">Поле «Ваш телефон» не заполнено</a></li>`] ]
                                           [ [!+fi.error.msg:!empty=`<li><li><a href="[ [*uri] ]#msg">Поле «Текст сообщения» не заполнено</a></li>`] ]
                                       </ul>
                                 </div>`] ]
                        </form>
                    </div>
Вызов формы в шаблоне:
[ [!AjaxForm? 
                          &snippet=`FormIt` 
                          &form=`@FILE chunks/forms/ajaxform_3.tpl`
                          &hooks=`groupSelector,recaptchav2,email,FormItSaveForm`
                          &formName=`Форма Заказать расчет`
                          &formFields=`fname,fphone,msg,service,file,service`
                          &fieldNames=`fname==Имя,msg==Сообщение,file==Файл,fphone==Телефон`
                          &emailSubject=`Сообщение с формы Заказать расчет`
                          &emailTo=`[ [+emailAddresses] ]`
                          &emailFrom=`site@masmebid.ru`
                          &emailTpl=`@FILE chunks/forms/email_tpl_form3.tpl`
                          &customValidators=`formit2checkfile`
                          &validate=`fname:required:minLength=^2^,msg:required,fphone:required,service:required,file:formit2checkfile,g-recaptcha-response:required`
                          &vTextRequired=`Обязательное поле`
                          &vTextMinLength=`Не менее 2 букв`
                          &validationErrorMessage=`В форме содержатся ошибки!`
                          &successMessage=`Сообщение успешно отправлено`
                          &clearFieldsOnSuccess=`1`
                        ] ]
2. Проблема не выводятся сообщения об ошибках через плейсхолдеры [ [+fi.] ]
Прошу помочь Вас уважаемое сообщество!
Woxis
19 марта 2019, 11:58
modx.pro
905
0