Вы не зашли.
hot, а в каком виде ты это управление вообще видишь?
Опиши пример.
УВАЖАЕМЫЙ ВИТАЛИЙ ! Вот такое моё виденье управлением...
Выбираем поле с ==ВЫБОРОМ== (допустим НОРМАЛЬНЫЙ ЧЕЛОВЕК, ХОРОШИЙ ЧЕЛОВЕК, ОЧЕНЬ ХОРОШИЙ ЧЕЛОВЕК ), в выбранной форме feedback (допустим feedback id=1 и т.д. и т.п.) пишем 3 e-mail-А (...при возможности хочется и больше адресов...), ставим обязательное заполнение, переходим на страничку с формой на сайте и выбираем (==ОЧЕНЬ ХОРОШИЙ ЧЕЛОВЕК== ), отправляем ... и ... получает сообщение для !!!ТОЛЬКО ==ОЧЕНЬ ХОРОШИЙ ЧЕЛОВЕК==, а остальные
"хорошие люди", указанные в чекбоксе, "КУРЯТ БАМБУК"
Изменено hot (2009-03-06 00:11:47)
Не в сети
от
кому хххх@gmail.com
дата 19 марта 2009 г. 23:42
тема Новое сообщение обратной свя
скрыть подробные сведения 23:42 (11 мин. назад)
Ответить
зи через форму otdyh (Сявязь с владельцем объявления)
X-PHP-Script: www.ххх.ru/index.php for 85.172.хх.хх
From: mailbot@ххх.ru >> Здесь может название сайта,?
Reply-to: mailbot@ххх.ru >> здесь нужно действующий адрес
Message-ID: <f17a62fe82f86e6f24fe4b00b6f89b33@www.ххх.ru>
MIME-Version: 1.0
Date: Thu, 19 Mar 2009 20:41:57
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: NGCMS : 0.9.0 Release (Fix #04)
X-MimeOLE: NGCMS : 0.9.0 Release (Fix #04)
Content-Type: multipart/mixed;boundary="----------f17a62fe82f86e6f24fe4b00b6f89b33"
------------f17a62fe82f86e6f24fe4b00b6f89b33
Content-Type: text/html;charset=windows-1251
Content-Transfer-Encoding: 8bit
Уважаемый администратор!<br/>Вам отправлено сообщение через форму обратной связи:<br/>
>> если есть возможность вводить раные адрреса нужно и получателя указывать.
[name] Ваше имя: Имя<br/> >> идентификатор тут зачем?
[email]Emai: tech2304@gmail.com<br/>
[message] Сообщение: Здравствуйте.
Ваше объявление размещено
<br/>
------------f17a62fe82f86e6f24fe4b00b6f89b33--
Сообщение было отправлено в спам...
Продвигай NGCMS,
скачай статью и на свой сайт повесь.
Геленджик - лучший отдых на Черном море
Не в сети
Последнее время спаморезки пошли очень умные.
Единственное, что можно сделать в этой ситуации - позволить задавать в плагине SRC email адрес.
Но при этом ты должен понимать, что при отправке с e-mail адреса ABC@domain.ru, ты должен соблюсти одно из следующих правил:
1. Email сообщение отправляется сначала на почтовый сервер домена domain.ru и уже почтовка доставляет этот email
2. Email сообщение отправляется напрямую, но IP адрес, с которого ты ведёшь отправку, должен быть либо прописан в качестве MX для домена domain.ru, либо, как минимум, должен быть прописан как "A" запись для этого же домена.
Не в сети
Выложил в SVN кандидата на версию 0.06.
Вот изменения:[0.06][2009-03-05] + Добавлена возможность проверки заполнения обязательных полей формы. При активации параметра "проверять ввод полей" и незаполнении обязательного поля - пользователю будет выдаваться сообщение об ошибке.
Прошу по возможности проверить и отписаться. Если проблем не будет - выложу архив для всех.
работает, но не хватает каптчи.
Не в сети
Доп тип поля: файл.
+
Выбор в настройках: прикрепить к письму / хранить на сервере, вставить ссылку на файл.
Не в сети
Не в сети
icedogas
/engine/plugins/feedback/feedback.php
Найти
// Scan all fields and fill data. Prepare outgoing email.
$output = '';
foreach ($fData as $fName => $fInfo) {
Добавить после
if ($fInfo['required'] && empty($_REQUEST[$fName]))
{
$tpl->template('site.infoblock', $tpath['site.infoblock']);
$tpl->vars('site.infoblock', array( 'vars' => array( 'title' => $frow['title'], 'ptpl_url' => $ptpl_url, 'entries' => "<b>Ошибка!</b><br/>Не заполнено обязательное поле {$fName}")));
$template['vars']['mainblock'] = $tpl->show('site.infoblock');
return;
}
Изменено insider (2009-04-28 16:29:10)
Не в сети
icedogas
/engine/plugins/feedback/feedback.php
Найтиforeach ($fData as $fName => $fInfo) {
Добавить после
if ($fInfo['required'] && empty($_REQUEST[$fName])) { $tpl->template('site.infoblock', $tpath['site.infoblock']); $tpl->vars('site.infoblock', array( 'vars' => array( 'title' => $frow['title'], 'ptpl_url' => $ptpl_url, 'entries' => "<b>Ошибка!</b><br/>Не заполнено обязательное поле {$fName}"))); $template['vars']['mainblock'] = $tpl->show('site.infoblock'); return; }
как только захожу на страницу, сразу выдает ошибка - не заполнено поле линк
Не в сети
А, ясно
foreach ($fData as $fName => $fInfo) {
встречается в файле два раза, надо вставить после второго
Отредактил пост выше, чтобы понятнее было
Изменено insider (2009-04-28 16:30:23)
Не в сети
А реально сделать, чтобы:
- при добавлении нового поля, в плагине, если поставить "Обязательно заполнить" к названию поля добавлялась (*)
- (*) ее стилем оформлять и закрывать во что то, типа [Обязательно заполнить]*[/Обязательно заполнить]
Не в сети
/engine/plugins/feedback/feedback.php
Найди
$tvars['regx']['#\[date\](.+?)\[\/date\]#is'] = ($fInfo['type'] == 'date' )?'$1':'';
Добавь после
$tvars['regx']['#\[required\](.+?)\[\/required\]#is'] = $fInfo['required']?'$1':'';
$tvars['vars']['required'] = $fInfo['required']?'required':'';
Тогда можно будет в site.form.row.tpl прописать что-нибудь в роде
[required]обязательно к заполнению[/required]
Либо заменить
{title}
на
<span class="{required}">{title}</span>
и уже в css сделать так (для выделения жирным)
span.required {
font-weight: bold;
}
или так (для добавления (*) после названия)
span.required:after {
content: " (*)";
}
Не в сети
Нужно еще:
1. Защита от ботов. (уже спамят)
2. Разрешить только зарегистрированным, желательно по выбору. (эта форма для всех, а эта только для зарегистрированных).
Продвигай NGCMS,
скачай статью и на свой сайт повесь.
Геленджик - лучший отдых на Черном море
Не в сети
2. Видимо эта возможность планировалась, раз даже поле в БД уже есть
/engine/plugins/feedback/config.php
#1. Найти
$mysql->select("update ".prefix."_feedback set name=".db_squote($name).", title=".db_squote($_REQUEST['title']).", template=".db_squote($_REQUEST['template']).", emails=".db_squote($_REQUEST['emails']).", description=".db_squote($_REQUEST['description']).", active=".intval($_REQUEST['active']).", flags=".intval($flags)." where id = ".$id);
#1. Заменить на
$mysql->select("update ".prefix."_feedback set name=".db_squote($name).", title=".db_squote($_REQUEST['title']).", template=".db_squote($_REQUEST['template']).", emails=".db_squote($_REQUEST['emails']).", description=".db_squote($_REQUEST['description']).", active=".intval($_REQUEST['active']).", regonly=".intval($_REQUEST['regonly']).", flags=".intval($flags)." where id = ".$id);
#2. Найти
'active' => $frow['active']?$lang['yesa']:$lang['noa'],
#2. Добавить после
'regonly' => $frow['regonly']?$lang['yesa']:$lang['noa'],
#3. Найти
$tvars['vars']['active_checked'] = ($edMode?$_REQUEST['active']:$frow['active'])?'checked="checked"':'';
#3. Добавить после
$tvars['vars']['regonly_checked'] = ($edMode?$_REQUEST['regonly']:$frow['regonly'])?'checked="checked"':'';
/engine/plugins/feedback/feedback.php
#4. Найти
function plugin_feedback_screen() {
global $template, $tpl, $lang, $mysql, $userROW;
#4. Заменить на
function plugin_feedback_screen() {
global $template, $tpl, $lang, $mysql, $userROW, $is_logged;
#5. Найти
// Prepare params
$tvars = array();
$tvars['vars']['ptpl_url'] = $ptpl_url;
$tvars['vars']['id'] = $frow['id'];
$tvars['vars']['description'] = $frow['description'];
$tvars['vars']['entries'] = $output;
$tvars['vars']['form_url'] = GetLink('plugins', array('plugin_name' => 'feedback'));
#5. Добавить после
if ($frow['regonly'] && !$is_logged)
{
$tvars['regx']["'\[is-logged\](.*?)\[/is-logged\]'si"] = '';
$tvars['regx']["'\[isnt-logged\](.*?)\[/isnt-logged\]'si"] = '$1';
}
else
{
$tvars['regx']["'\[is-logged\](.*?)\[/is-logged\]'si"] = '$1';
$tvars['regx']["'\[isnt-logged\](.*?)\[/isnt-logged\]'si"] = '';
}
#6. Найти
function plugin_feedback_post() {
global $template, $tpl, $lang, $mysql, $userROW;
#6. Заменить на
function plugin_feedback_post() {
global $template, $tpl, $lang, $mysql, $userROW, $is_logged;
#7. Найти
// Unpack form data
$fData = unserialize($frow['struct']);
if (!is_array($fData)) $fData = array();
// Scan all fields and fill data. Prepare outgoing email.
$output = '';
foreach ($fData as $fName => $fInfo) {
switch ($fInfo['type']) {
case 'date': $fieldValue = $_REQUEST[$fName.':day'] . '.' . $_REQUEST[$fName.':month'] . '.' . $_REQUEST[$fName.':year'];
break;
default: $fieldValue = $_REQUEST[$fName];
}
$output .= '['.$fName.'] '.$fInfo['title'].': '.$fieldValue."<br/>\n";
}
#7. Добавить перед
if ($frow['regonly'] && !$is_logged)
{
$tpl->template('site.infoblock', $tpath['site.infoblock']);
$tpl->vars('site.infoblock', array( 'vars' => array( 'title' => $frow['title'], 'ptpl_url' => $ptpl_url, 'entries' => "You're not so cool?")));
$template['vars']['mainblock'] = $tpl->show('site.infoblock');
return;
}
/engine/plugins/feedback/tpl/conf.form.hdr.tpl
#8. Найти
<tr align="left"><td class="contentRow" width="170"><b>Активна:</b></td><td><input type="checkbox" name="active" value="1" {active_checked} /></td></tr>
#8. Добавить после
<tr align="left"><td class="contentRow" width="170"><b>Требуется регистрация:</b></td><td><input type="checkbox" name="regonly" value="1" {regonly_checked} /></td></tr>
/engine/plugins/feedback/tpl/conf.forms.hdr.tpl
#9. Найти
<td colspan="7" width=100% class="contentHead"><img src="{skins_url}/images/nav.gif" hspace="8">Редактирование форм обратной связи</td>
#9. Заменить на
<td colspan="6" width=100% class="contentHead"><img src="{skins_url}/images/nav.gif" hspace="8">Редактирование форм обратной связи</td>
#10. Найти
<td class="contentHead"><b>Активна</b></td>
#10. Добавить после
<td class="contentHead" width="87"><b>Требуется регистрация</b></td>
/engine/plugins/feedback/tpl/conf.form.hdr.tpl
#11. Найти
<td>{active}</td>
#11. Добавить после
<td>{regonly}</td>
/engine/plugins/feedback/tpl/site.form.hdr.tpl
#12. Вставить в начало
[isnt-logged]
Для заполнения данной формы требуется регистрация
[/isnt-logged]
[is-logged]
#12. Вставить в конец
[/is-logged]
Изменено insider (2009-05-11 14:54:31)
Не в сети
Во-первых, спасибо insider за доработку, именно этого недоставало. Теперь почти по-взрослому. Ждём капчу для полного счастья.
Во-вторых, специально для dmitra - плагин, который у меня работает, возьми здесь или прикрепленный. Надеюсь, у тебя тоже работать будет.
Небольшой нюанс. Вопрос для insider. У меня в титуле страницы написано просто "Плагин". Как бы сделать , чтобы выводилось название формы или хотя бы просто "Обратная связь"? Я не нашёл, где исрпавить хотя бы на статичную надпись...
Изменено fourent (2009-05-27 16:12:08)
Не в сети
Не в сети