Среда, 25 июня 2014 00:00

Модуль отправки резюме на основе Fancy AJAX Contact Form

Оцените материал
(0 голосов)

Продолжаем совершенствовать нашу формочку; которая день ото дня становится все круче и круче.

Первая часть статьи

Вторая часть статьи

 

Аппетит ведь приходит, как известно, всегда во время езды: а давайте попробуем еще больше расширить функционал формы отправки сообщений для joomla... честно говоря, идея эта возникла не вдруг, а - продиктована условиями одного из заказов, так что здесь у нас все вместе, и интерес и профит, как говорится.

Dev banner 2

Необходимо получить в итоге два выпадающих списка - города и вакансии - первое и второе должно быть доступно для редактирования из административной панели модуля, и однозначно определять email отправки; дополнительно копии сообщения отправляются еще на несколько произвольных email, также вводимых в админке.

Валидация полей

Число городов, вакансий и email ничем не ограничено; ну разве что - рамками разумного. Любое сочетание город + вакансия может быть привязано как к уникальному email, так и к любому из уже использованных в контексте иных сочетаний городов/вакансий адресов электронной почты. Таким образом, сочетание город - вакансия - email мы с вами будем вводить в бакенде модуля следующим образом:

 

Class for handle sending parameters dependent on City and Vacancies administration settings.
In database stored as text (one field) like:

Москва + плотник + email1
Москва + дизайнер + email2
Питер + слесарь + email3
Севастополь + сантехник + email4
etc

 

Ничего себе задачка, да? Ну, что же. Перво-наперво прописываем в xml-файле нашей формочки textarea:

 

<field 
name="textarea"
type="textarea"
default=""
label="city + vacancy + email"
description="city + vacancy + email"
/>

 

Далее:

 

foreach(explode("\n", $params->get('textarea')) as $k => $v){
$a = explode(' + ', $v);
$arr[$a[0]][$a[1]] = trim($a[2]);
}
var_dump($arr);

 

 

Да, я заранее принимаю контраргументацию такого рода - неудобно, необычно... сам бы пошел совершенно иным путем, налаживая процесс отсылки резюме через контактную форму сайта. Но - заказчик есть заказчик, и если не "всегда прав", то - хотя бы иногда. Заказана была разработка именно такого joomla extension, и - ни шага в сторону.

Подключаем recaptcha

получаем массив php, по которому пробежимся foreach (второй цикл несколько замысловат, не правда ли?), и получаем на выходе уже два dropdown-списка нашей формочки:

 

города

<tr>
<td><label for="subject">Город</label></td>
<td><select name="subject" id="subject">
<option value="" selected="selected"> - Выберите -</option>
<? foreach(array_keys($arr) as $k => $city){
echo "<option value='${city}'>$city</option>";
} ?>
</select> </td>
</tr>

 

и вакансии

<tr>
<td><label for="subject1">Вакансия</label></td>
<td><select name="subject1" id="subject1">
<option value="" selected="selected"> - Выберите -</option>
<? foreach(array_unique(call_user_func_array('array_merge', array_map(function($x){return array_keys($x);}, array_values($arr)))) as $vacancy ){
echo "<option value='${vacancy}'>$vacancy</option>";
}?>
</select>
<tr>

Проверка перед отправкой сообщения из формы

Что же дальше? - хм, хороший вопрос. Дальше... а дальше, по идее, мы без проблем по двум ключам получаем искомый наш email вот таким вот примерно образом:

 

$arr[$input->get('city')][$input->get('vacancy')];

 

и все бы хорошо, но... но тут мы вдруг упираемся, как в стену, в то самое обстоятельство, о котором уже шла речь в первой части этой статьи. А именно: наш с вами joomla-модуль, собственно, и называть-то модулем - не вполне корректно. Файл submit.php, образно говоря, прикручен скотчем, и совершенно не в контексте MVC Joomla; так, получить в нем email из параметров модуля - довольно проблематично, хотя массив соответствия по ключам "город" и "вакансия" у нас с вами вроде как бы и есть. Далее можно либо продолжать двигаться дорогой быстрых хаков... либо же предпочесть извилистым горным тропкам более удобные пути - наезженные и безопасные.

 

Все три варианта модуля, характеризующие три этапа разработки, вы можете загрузить на форуме, в первом сообщении топика. Там же ссылка на демку модуля.

 

Как приятно порой быть кратким. Модуль модернизировал и запаковал для вас Hubbitus, за что ему искреннее спасибо; теперь это полноценный extension для Joomla 3.*. Все читатели блога имеют возможность загрузить последнюю версию модуля со странички форума; несколько скриншотов, иллюстрирующих работу модуля, вы видите на этой страничке. Модуль укомплектован recaptcha, проверяет заполнение полей (частью на стороне клиента, частью - на стороне сервера), если не находит соответствия в триадах ключей - выводит предупреждение о том, что в данном городе данная вакансия отсутствует. Дополнительно админка модуля позволяет прописать до трех email, на которые будут отправлены копии сообщения (как и задумывалось). Вполне возможно, этот модуль пригодится вам; переписать под свои цели и задачи довольно несложно... если так - мы не зря пропарились с новым модулем отправки сообщений for Joomla 3.* на основе Fancy AJAX Contact Form. Enjoy!

 

Последнее изменениеЧетверг, 19 мая 2016 10:42

Оставить комментарий

Добавьте ваш комментарий

Linux для вас. Аутсорсинг и консультации

Линукс для вас. Аутсорсинг и консультации.

How to create a Joomla Contact Form

Заказать сайт

Веб-разработка. Заказать сайт

Вы можете заказать сайт-визитку, блог, корпоративный сайт, интернет-магазин или коммерческий web-портал.