Browse Source

Добавлен модуль Рассылка / Подписка

master
SVarlamov 8 years ago
commit
87bb4c3dd2
  1. 16
      README.md
  2. 1153
      class.mailer.php
  3. 4
      index.php
  4. 4
      lang/index.php
  5. 211
      lang/ru.txt
  6. 196
      module.php
  7. 101
      sql.php
  8. 136
      templates/admin_count_mail.tpl
  9. 276
      templates/admin_edit_list.tpl
  10. 428
      templates/admin_edit_mail.tpl
  11. 164
      templates/admin_multi_add.tpl
  12. 95
      templates/admin_show_lists.tpl
  13. 313
      templates/admin_show_mails.tpl
  14. 4
      templates/index.php
  15. 64
      templates/public_form.tpl
  16. 1
      templates/public_result.tpl

16
README.md

@ -0,0 +1,16 @@
## mailer
# Модуль Рассылка / Подписка v2.2.1
### адаптирован для AVE.CMS 3.0 v1.5
## Данный модуль позволяет создавать внутренние (по группам пользователей сайта), внешние (по спискам) и комбинированные рассылки.
* Для вывода в публичной части сайта формы подписки на рассылку, используйте системный тег <strong>[mod_subscribe:XXX]</strong>, где XXX - идентификатор списка рассылки, в который будет добавлен подписчик.
## Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку mailer со всем ее содержимым внутри!
## Changelog:
29.06.2014 - версия 2.2.1

1153
class.mailer.php

File diff suppressed because it is too large Load Diff

4
index.php

@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>

4
lang/index.php

@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>

211
lang/ru.txt

@ -0,0 +1,211 @@
[public]
MAILER_EMAIL = "E-mail"
MAILER_LNAME = "Фамилия"
MAILER_FNAME = "Имя"
MAILER_MNAME = "Отчество"
MAILER_SUBSCRIBE = "Подписаться"
MAILER_UNSUBSCRIBE = "Отписаться"
MAILER_WRONG_EMAIL = "Неверный синтаксис email-а!"
MAILER_DELETED = "Получатель <a href="mailto:%email%" target="_blank">%email%</a> успешно удалён из списка рассылки!"
MAILER_DEL_NO = "Получатель <a href="mailto:%email%" target="_blank">%email%</a> отсутствует в списке рассылки!<br/>Возможно, вы уже отправляли заявку на удаление."
MAILER_SUBSCRIBED = "Получатель <a href="mailto:%email%" target="_blank">%email%</a> успешно добавлен в список рассылки!"
MAILER_SUBSCRIBE_EXIST = "Получатель <a href="mailto:%email%" target="_blank">%email%</a> уже есть в списке рассылки!<br>Возможно, вы отправляли заявку ранее. Поля ФИО были обновлены."
[admin]
MAILER_MODULE_NAME = "Рассылка"
MAILER_MODULE_INFO = "На этой странице вы можете написать новое письмо и просмотреть список выполненных рассылок. Для отправки внешней рассылки необходимо сначала создать список рассылки в соответствующем разделе модуля."
MAILER_MANAGE_MAILS = "Управление рассылками"
MAILER_MANAGE_LISTS = "Управление списками рассылки"
MAILER_NEW_MAIL = "Создать рассылку"
MAILER_NEW_LIST = "Создать список рассылки"
MAILER_YES = "да"
MAILER_NO = "нет"
MAILER_OR = "или"
MAILER_MAILS_CTRL = "Для выбора нескольких используйте <b>Ctrl</b>"
MAILER_ADD_BTN = "Создать список рассылки"
MAILER_ADD_CONT_BTN = "Создать и продолжить (CTRL+S)"
MAILER_EDIT_BTN = "Сохранить изменения"
MAILER_EDIT_CONT_BTN = "Сохранить и продолжить (CTRL+S)"
MAILER_SAVED = "Сохранено"
MAILER_ACTIONS = "Действия"
MAILER_ACTIONS_EDIT = "Редактировать"
MAILER_ACTIONS_COPY = "Копировать"
MAILER_ACTIONS_SHOW = "Показать письмо в новой вкладке"
MAILER_ACTIONS_HOWSAVE = "Для сохранения нажмите одну из кнопок под таблицей"
MAILER_ACTIONS_DEL = "Удалить"
MAILER_ACTIONS_DOWNLOAD = "Загрузить в формате csv"
MAILER_ACTIONS_WIPE = "Очистить<br/>(удалить всех получателей)"
MAILER_ACTIONS_WIPE_2 = "Удалить всех получателей из списка"
MAILER_INPUT_ADD_ROW = "Добавить ряд"
MAILER_SAVING = "Сохранение..."
MAILER_SENDING = "Отправка..."
MAILER_DELETING = "Удаление..."
MAILER_SHOWING = "Просмотр..."
MAILER_ADDING = "Добавление..."
MAILER_SENDING_TEST = "Тестовая отправка..."
MAILER_WIPING = "Очистка..."
MAILER_SHOW_AUTHOR_TIT = "Просмотреть учётную запись пользователя"
MAILER_WRITE_EMAIL = "Написать письмо"
MAILER_LOOK = "Посмотреть"
MAILER_LOOK_LIST = "Посмотреть список"
MAILER_ER_EMAIL_SYN = "Неверный синтаксис email-а!"
MAILS_SAVED = "Сохранено"
MAILER_EMAIL_OK = "Правильный email"
MAILER_SENT_OK = "Рассылка успешно отправлена"
MAILER_SENT_OK_TEXT = "Рассылка была успешно отправлена и сохранена в список 'Выполненных рассылок'."
MAILER_SENT_OK_LINK = "Вернуться к рассылкам"
MAILER_NOFILE = "Файл не найден!"
MAILER_MAILS_HEAD = "Выполненные рассылки"
MAILER_MAILS_TPL_H = "Сохранённые рассылки (черновики)"
MAILER_MAILS_AUTHOR = "Автор"
MAILER_MAILS_SUBJECT = "Тема"
MAILER_MAILS_DATE = "Дата отправки"
MAILER_MAILS_CREATED = "Дата создания"
MAILER_MAILS_FROM = "Отправитель"
MAILER_MAILS_FORMAT = "Формат"
MAILER_MAILS_REC_ADD = "Дополнительные получатели"
MAILER_MAILS_REC_ADD_I = "Здесь можно через <b>точку с запятой</b> указать дополнительные email-ы только для этой рассылки"
MAILER_MAILS_RECIEVERS = "Получатели"
MAILER_MAILS_ATTACHS = "Прикреплённые файлы"
MAILER_MAILS_NOITEMS = "Нет выполненных рассылок"
MAILER_MAILS_TPL_NO = "Нет сохранённых рассылок"
MAILER_MAILS_ADD_TITLE = "Создание рассылки"
MAILER_MAILS_EDIT_TITLE = "Редактирование рассылки"
MAILER_MAILS_NEW_TITLE = "Новая рассылка"
MAILER_MAILS_HEAD_MAIL = "Параметры письма"
MAILER_MAILS_HEAD_SET = "Параметры отправки"
MAILER_MAILS_REC_GROUPS = "группы пользователей сайта"
MAILER_MAILS_REC_LISTS = "списки рассылки"
MAILER_MAILS_FROM_NAME = "Имя отправителя"
MAILER_MAILS_FROM_EMAIL = "Адрес отправителя"
MAILER_MAILS_FROM_COPY = "Поставить отправителя в копию"
MAILER_MAILS_APPEAL = "Обращение к получателю"
MAILER_MAILS_APPEAL_I = "Подставляется в %NAME%, если ФИО пустое"
MAILER_MAILS_APPEAL_D = "уважаемый клиент"
MAILER_MAILS_TEXT = "Текст"
MAILER_MAILS_TEXT_I = "Шаблоны:<br /><b>%NAME%</b> = ФИО<br /><b>%ID%</b> = {№ рассылки} {C|G|L|A} {id получателя},<br />где C - сам отправитель, G - из группы, L - из списка, A - доп. получатель<br /><b>%SHOW%</b> = ссылка для просмотра письма в браузере при неправильном отображении"
MAILER_MAILS_TEXT_D = "Здравствуйте, %NAME%!"
MAILER_MAILS_ATTACH = "Прикрепить файлы"
MAILER_MAILS_ATTACH_A = "Добавить файл"
MAILER_MAILS_ATTACH_I = "Прикрепляйте файлы только если собираетесь отправить эту рассылку прямо сейчас"
MAILER_MAILS_SAVEATTACH = "Сохранить файлы после отправки?"
MAILER_MAILS_TEST_BTN = "Тестовая отправка"
MAILER_MAILS_SEND_BTN = "Отправить"
MAILER_MAILS_SAVE_BTN = "Сохранить черновик"
MAILER_MAILS_SAVE_BTN_C = "Сохранить и продолжить (Ctrl+S)"
MAILER_MAILS_SEND_Q = "Вы уверены, что расслылка готова к отправке?"
MAILER_MAILS_SEND_TEST = "Отправить тестовое письмо на следующие адреса<br/>(разделяйте <b>точкой с запятой</b>)"
MAILER_MAILS_TEST_OK = "Тестовое письмо было успешно отправлено адресатам:"
MAILER_MAILS_FINAL_REC = "Финальный список рассылки"
MAILER_MAILS_FINAL_TXT = "Сохраните черновик перед просмотром Ctrl+S"
MAILER_MAILS_MAKE_FIN = "Просмотреть"
MAILER_MAILS_FIN_INFO = "Список откроется во всплывающем окне (разблокируйте)"
MAILER_MAILS_DEL_Q = "Удалить черновик рассылки"
MAILER_MAILS_SHOW = "Показать письмо в новой вкладке (%SHOW%)"
MAILER_MAILS_SHOW_ALERT = "Сохраните рассылку первый раз перед просмотром!"
MAILER_MAILS_TIMING = "Способ отправки"
MAILER_MAILS_TIM_ALL = "Все сразу"
MAILER_MAILS_TIM_100 = "По 100 писем в час"
MAILER_MAILS_TIM_200 = "По 200 писем в час"
MAILER_MAILS_TIM_300 = "По 300 писем в час"
MAILER_MAILS_DELAY = "Задержка <strong>1 час</strong>, отправка следующей порции писем: <strong id="delay_time"></strong>. Чтобы продолжить прямо сейчас, нажмите <strong>Ctrl+G</strong>"
MAILER_MAILS_STOP = "Чтобы остановить процесс отправки, нажмите <strong>Ctrl+Q</strong>"
MAILER_MAILS_SEARCH = "Найти"
MAILER_SEARCHING = "Поиск..."
MAILER_MAILS_FIND = "Поиск выполненных рассылок по полям:"
MAILER_MAILS_FIND_NO = "Ничего не найдено"
MAILER_MAILS_FIND_IN = "Введите слово или фрагмент текста для поиска"
MAILER_ERR_SEACRH_WORDS = "Введите слово для поиска!"
MAILER_ERR_SEACRH = "Выберите хотя бы одно поле!"
MAILER_SEARCH_FROM_E = "Email отправителя"
MAILER_SEARCH_FROM_N = "Имя отправителя"
MAILER_SEARCH_SUB = "Тема"
MAILER_SEARCH_BODY = "Текст"
MAILER_SEARCH_REC = "Получатели (только по email-ам)"
MAILER_ERR_FROM_NAME = "Введите имя отправителя!"
MAILER_ERR_FROM_EMAIL = "Укажите правильный email отправителя!"
MAILER_ERR_TO = "Выберите хотя бы один список рассылки или группу получателей,<br />либо укажите дополнительные email-ы!"
MAILER_ERR_TO_ADD = "Проверьте правильность введённых email-ов!"
MAILER_ERR_SUBJECT = "Укажите тему рассылки!"
MAILER_ERR_BODY = "Введите текст письма!"
MAILER_ALERT_ATTACH = "Выбранные Вами файлы вложений сохранены не будут.<br />Указывайте вложения только перед отправкой письма!"
MAILER_LISTS_INFO = "В этом разделе выводятся все списки рассылки"
MAILER_LISTS_EDIT_INFO = "Здесь вы можете отредактировать и дополнить список рассылки. Чтобы добавить сразу несколько получателей, нажмите крестик справа от полей для ввода информации. Добавление/изменение получателей осуществляется по нажатию кнопок сохранения; удаление выполняется без перезагрузки страницы.<br/>Для массового добавления получателей в список используйте раздел 'Импорт получателей'."
MAILER_LISTS_HEAD = "Списки рассылки"
MAILER_LIST_HEAD = "Список"
MAILER_LISTS_TITLE = "Название"
MAILER_LISTS_DESCR = "Описание"
MAILER_LISTS_AUTHOR = "Автор"
MAILER_LISTS_DATE = "Дата создания"
MAILER_LISTS_NUMBER = "Кол-во"
MAILER_LISTS_NUMBER_F = "Кол-во получателей в списке"
MAILER_LISTS_DELCHECK = "Удалить выбранные"
MAILER_LISTS_NOITEMS = "Нет списков рассылки"
MAILER_LISTS_ADD = "Добавить список"
MAILER_LISTS_ADD_NAME = "Название списка рассылки"
MAILER_LISTS_CREATE = "Создать список рассылки"
MAILER_LISTS_CREATE_T = "Новый список"
MAILER_LISTS_CREATE_MES = "Укажите название списка рассылки!"
MAILER_LISTS_FIND = "Найти список"
MAILER_LISTS_ADD_TITLE = "Создание списка рассылки"
MAILER_LISTS_EDIT_TITLE = "Редактирование списка рассылки"
MAILER_LISTS_SET_COM = "Общие настройки списка рассылки"
MAILER_LISTS_SET_REC = "Получатели"
MAILER_LISTS_DESCR_INFO = "Напишите, пожалуйста, подробное описание списка рассылки"
MAILER_LISTS_NOTITLE = "Укажите название списка рассылки!"
MAILER_LISTS_IMPORT = "Импорт получателей"
MAILER_LISTS_IMPORT_T = "Прямой ввод"
MAILER_LISTS_IMPORT_T_1 = "Разделитель получателей:"
MAILER_LISTS_IMPORT_T_2 = "Разделителей полей:"
MAILER_LISTS_IMPORT_T_H = "Если разделитель - новая строка, используйте \r\n"
MAILER_LISTS_IMPORT_F = "Импорт из файла CSV"
MAILER_LISTS_IMPORT_F_I = "Возможен импорт из файлов CSV кодировок cp1251 и UTF-8."
MAILER_LISTS_IMPORT_F_H = "Внимание! Некоторые версии MS Excel сохраняют csv с разделителем <b>;</b> независимо от выбранного формата.<br/>Перед импортом проверяйте файл в блокноте."
MAILER_LISTS_IMPORT_F_D = "Разделитель столбцов:"
MAILER_REC_STATUS_I = "Письмо получат только отмеченные получатели. Сняв флажок, Вы можете временно отключить адресата от рассылки.<br/>Если чекбокс запрещён, это означает, что подписчик отказался от рассылки"
MAILER_REC_STATUS_I2 = "Письмо получат только отмеченные получатели. Сняв флажок, Вы можете временно отключить адресата от рассылки."
MAILER_REC_EMAIL = "Email"
MAILER_REC_LASTN = "Фамилия"
MAILER_REC_FIRSTN = "Имя"
MAILER_REC_MIDN = "Отчество"
MAILER_REC_COMMENTS = "Комментарии"
MAILER_REC_NOITEMS = "Список получателей пуст"
MAILER_REC_EMAIL_OK = "Данный email можно добавить в список"
MAILER_REC_EMAIL_NO = "Ошибка! Данный email уже есть в текущем списке рассылки"
MAILER_REC_DEL = "Удалить получателя"
MAILER_REC_DELETED = "Получатель был успешно удалён из списка рассылки"
MAILER_REC_REFUSED = "Получатель отказался от рассылки"
MAILER_REC_UNCHECKED = "Получатель был исключён из списка рассылки вручную"
MAILER_REC_DATE_ADD = "Добавлен:"
MAILER_MULTI_HINT = "Позволяет за раз добавить нескольких получателей в несколько списков"
MAILER_MULTI_INFO = "Здесь Вы можете за один раз добавить нескольких получателей в несколько списков"
MAILER_MULTI_TITLE = "Мульти-добавление получателей"
MAILER_MULTI_LISTS = "Списки"
MAILER_MULTI_TITLE2 = "Мульти-добавление адресатов в списки"
MAILER_MULTI_BTN = "Добавить получателей"
MAILER_MULTI_BTN_CTRL = "Добавить и продолжить (CTRL+S)"
MAILER_MULTI_NOLIST = "Выберите хотя бы один список!"
MAILER_MULTI_EMAIL_OK = "Правильный синтаксис email-а"
MAILER_COUNT_TITLE = "Просмотр финального списка получателей рассылки"
MAILER_GROUPS = "Группы"
MAILER_GROUP = "Группа"
MAILER_LOGIN = "Логин"
MAILER_COUNT_INFO = "Если строка получателя выделена красным, значит, он по каким-то причинам не попадёт в финальный список рассылки"
MAILER_COUNT_ER_REPEAT = "Получатель с таким email-ом уже вошёл в фиальный список. См. таблицу выше."
MAILER_COUNT_NOLISTS = "Отсутствуют получатели из списков рассылки"
MAILER_COUNT_NOGROUPS = "Отсутствуют получатели из групп пользователей сайта"
MAILER_COUNT_NOADD = "Отсутствуют дополнительные получатели"
MAILER_COUNT_SUM = "Итого"
MAILER_COUNT_ALL = "Всего получателей"
MAILER_COUNT_ALL_INFO = "За вычетом красных строк"

196
module.php

@ -0,0 +1,196 @@
<?php
/**
* AVE.cms - Модуль Рассылки
*
* @package AVE.cms
* @subpackage module_mailer
* @filesource
*/
if (!defined('BASE_DIR')) exit;
if (defined('ACP'))
{
$modul['ModuleName'] = 'Рассылка / Подписка';
$modul['ModuleSysName'] = 'mailer';
$modul['ModuleVersion'] = '2.2.1';
$modul['ModuleDescription'] = 'Данный модуль позволяет создавать внутренние (по группам пользователей сайта), внешние (по спискам) и комбинированные рассылки. Для вывода в публичной части сайта формы подписки на рассылку, используйте системный тег <strong>[mod_subscribe:XXX]</strong>, где XXX - идентификатор списка рассылки, в который будет добавлен подписчик.';
$modul['ModuleAutor'] = 'val005';
$modul['ModuleCopyright'] = '&copy; 2007-2013 AVE.CMS';
$modul['ModuleIsFunction'] = 1;
$modul['ModuleTemplate'] = 1;
$modul['ModuleAdminEdit'] = 1;
$modul['ModuleFunction'] = 'mod_subscribe';
$modul['ModuleTag'] = '[mod_subscribe:XXX]';
$modul['ModuleTagLink'] = null;
$modul['ModuleAveTag'] = '#\\\[mod_subscribe:(\\\d+)]#';
$modul['ModulePHPTag'] = "<?php mod_subscribe(''$1''); ?>";
}
/**
* Обработка тега модуля
*
* @param int $list_id идентификатор списка рассылки
*/
function mod_subscribe($list_id)
{
include_once(BASE_DIR . '/modules/mailer/class.mailer.php');
$mailer = new mailer;
$mailer->tpl_dir = BASE_DIR . '/modules/mailer/templates/';
global $AVE_Template;
$lang_file = BASE_DIR . '/modules/mailer/lang/' . $_SESSION['user_language'] . '.txt';
$AVE_Template->config_load($lang_file, 'public');
$list_id = (int)preg_replace('/\D/', '', $list_id);
$_POST['email'] = trim($_POST['email']);
switch ($_POST['action'])
{
case 'subscribe':
$result = $mailer->mailerSubscribe();
switch ($result)
{
case 0:
$mes = $AVE_Template->get_config_vars('MAILER_WRONG_EMAIL');
break;
case 1:
$mes = str_replace('%email%',$_POST['email'],$AVE_Template->get_config_vars('MAILER_SUBSCRIBED'));
$AVE_Template->assign('hide_sub',true);
break;
case 2:
$mes = str_replace('%email%',$_POST['email'],$AVE_Template->get_config_vars('MAILER_SUBSCRIBE_EXIST'));
$AVE_Template->assign('hide_sub',true);
break;
}
break;
case 'unsubscribe':
$result = $mailer->mailerUnsubscribe();
switch ($result)
{
case 0:
$mes = str_replace('%email%',$_POST['email'],$AVE_Template->get_config_vars('MAILER_DEL_NO')); break;
case 1:
$mes = str_replace('%email%',$_POST['email'],$AVE_Template->get_config_vars('MAILER_DELETED')); break;
}
$AVE_Template->assign('hide_unsub',true);
break;
}
$AVE_Template->assign('message', $mes);
$AVE_Template->assign('action', $_POST['action']);
$AVE_Template->assign('list_id', $list_id);
$AVE_Template->display($mailer->tpl_dir . 'public_form.tpl');
}
/**
* Внешнее обращение
*/
if (!defined('ACP') && $_REQUEST['module'] == 'mailer')
{
global $AVE_DB;
switch ($_REQUEST['action'])
{
case 'show':
$mail = $AVE_DB->Query("
SELECT body, appeal, type
FROM " . PREFIX . "_module_mailer_mails
WHERE id = " . $_REQUEST['id']
)->FetchRow();
$body = str_replace(
array('%NAME%' ,'%SHOW%'),
array($mail->appeal ,'#'),
$mail->body);
echo ($mail -> type == 'text') ? '<pre>'.$body.'</pre>' : $body;
}
}
/**
* Админка
*/
if (defined('ACP') && $_REQUEST['mod'] == 'mailer')
{
include_once(BASE_DIR . '/modules/mailer/class.mailer.php');
$mailer = new mailer;
$mailer->tpl_dir = BASE_DIR . '/modules/mailer/templates/';
$lang_file = BASE_DIR . '/modules/mailer/lang/' . $_SESSION['admin_language'] . '.txt';
$AVE_Template->config_load($lang_file, 'admin');
switch ($_REQUEST['moduleaction'])
{
// Вывод списка рассылок
case '':
case '1':
$mailer->mailerShowMails();
break;
// Загрузка вложения из отправленной рассылки
case 'getfile':
if (file_exists($_REQUEST['file']))
{
if ($_REQUEST['check']) exit('1');
else $mailer->_mailerGetFile($_REQUEST['file']);
}
exit;
// Вывод списка рассылок
case 'editmail':
include_once(BASE_DIR . '/class/class.user.php');
$AVE_User = new AVE_User;
$mailer->mailerEditMail();
break;
case 'savemail':
include_once(BASE_DIR . '/class/class.user.php');
$AVE_User = new AVE_User;
$mailer->mailerSaveMail($_REQUEST['id'],$_REQUEST['act']);
break;
case 'countmail':
$mailer->mailerCountMail($_REQUEST['id']);
break;
case 'testsend':
$emails = $mailer->mailerTestSend($_REQUEST['id'],$_REQUEST['emails']);
echo implode(', ',$emails);
exit;
case 'sendmail':
$mailer->mailerSendMail();
break;
case 'showlists':
$mailer->mailerShowLists();
break;
case 'editlist':
$mailer->mailerEditList();
break;
case 'savelist':
$mailer->mailerSaveList();
break;
case 'multiadd':
$mailer->mailerMultiAdd();
break;
case 'multisave':
$mailer->mailerMultiSave();
break;
case 'delreceiver':
$mailer->_mailerDelReceiver($_REQUEST['rec_id']);
break;
case 'checkemail':
echo $mailer->_mailerCheckEmail(trim($_REQUEST['email']),(int)trim($_REQUEST['list_id']));
exit;
}
}
?>

101
sql.php

@ -0,0 +1,101 @@
<?php
/**
* AVE.cms - Модуль Внутренней Рассылки
*
* @package AVE.cms
* @subpackage module_mailer
* @author Arcanum, val005
* @since 2.01
* @filesource
*/
/**
* mySQL-запросы для установки, обновления и удаления модуля
*/
$module_sql_install = array();
$module_sql_deinstall = array();
$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_mailer_mails";
$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_mailer_lists";
$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_mailer_receivers";
$module_sql_install[] = "CREATE TABLE CPPREFIX_module_mailer_mails (
id int(10) unsigned NOT NULL auto_increment,
author_id int(10) unsigned NOT NULL,
date int(10) unsigned default NULL,
from_name varchar(255) NOT NULL default '',
from_email varchar(255) NOT NULL default '',
from_copy enum('0','1') NOT NULL default '0',
to_groups text NOT NULL default '',
to_lists text NOT NULL default '',
to_add text NOT NULL default '',
subject varchar(255) NOT NULL default '',
type varchar(255) NOT NULL default '',
appeal varchar(255) NOT NULL default '',
body longtext NOT NULL default '',
attach text NOT NULL default '',
saveattach enum('0','1') NOT NULL default '1',
timing varchar(255) NOT NULL default '',
sent enum('0','1') NOT NULL default '0',
done longtext NOT NULL default '',
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
$module_sql_install[] = "CREATE TABLE CPPREFIX_module_mailer_lists (
id int(10) unsigned NOT NULL auto_increment,
title varchar(255) NOT NULL default '',
descr longtext NOT NULL default '',
author_id int(10) unsigned NOT NULL,
date int(10) unsigned default NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
$module_sql_install[] = "CREATE TABLE CPPREFIX_module_mailer_receivers (
id int(10) unsigned NOT NULL auto_increment,
list_id int(10) unsigned NOT NULL,
status enum('0','1','2') NOT NULL default '1',
email varchar(255) NOT NULL default '',
lastname varchar(255) NOT NULL default '',
firstname varchar(255) NOT NULL default '',
middlename varchar(255) NOT NULL default '',
comments text NOT NULL default '',
date int(10) unsigned default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
// Обновление модуля
$module_sql_update[] = "
UPDATE
`CPPREFIX_module`
SET
ModuleAveTag = '" . $modul['ModuleAveTag'] . "',
ModulePHPTag = '" . $modul['ModulePHPTag'] . "',
ModuleVersion = '" . $modul['ModuleVersion'] . "'
WHERE
ModuleSysName = '" . $modul['ModuleSysName'] . "'
LIMIT 1;
";
$module_sql_update[] = "
RENAME TABLE
`CPPREFIX_modul_mailer_mails`
TO
`CPPREFIX_module_mailer_mails`
";
$module_sql_update[] = "
RENAME TABLE
`CPPREFIX_modul_mailer_lists`
TO
`CPPREFIX_module_mailer_lists`
";
$module_sql_update[] = "
RENAME TABLE
`CPPREFIX_modul_mailer_receivers`
TO
`CPPREFIX_module_mailer_receivers`
";
?>

136
templates/admin_count_mail.tpl

@ -0,0 +1,136 @@
<div class="title" style="margin-top:25px">
<h5>{#MAILER_COUNT_TITLE#} '{$count_mail.title}'</h5>
</div>
<div class="widget first">
<div class="head">
<h5 class="iFrames">{#MAILER_LISTS_HEAD#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="34" />
<col width="150" />
<col width="1" />
<col width="150" />
<col width="150" />
<col />
<thead>
<tr class="noborder">
<td align="center"><div align="center"><a href="javascript:void(0);" class="help rightDir icon_sprite ico_info" title="{#MAILER_COUNT_INFO#}"></a></div></td>
<td>{#MAILER_LIST_HEAD#}</td>
<td>{#MAILER_REC_EMAIL#}</td>
<td>{#MAILER_REC_LASTN#}</td>
<td>{#MAILER_REC_FIRSTN#}</td>
<td>{#MAILER_REC_COMMENTS#}</td>
</tr>
</thead>
<tbody>
{foreach from=$count_mail.lists key=title item=list}
{foreach from=$list item=rec}
<tr class="{if $rec->s}red{/if}">
<td>{if $rec->s}<a class="help rightDir icon_sprite ico_info" href="javascript:void(0);" title="{if $rec->status == 0}{#MAILER_REC_UNCHECKED#}{elseif $rec->status == 2}{#MAILER_REC_REFUSED#}{else}{#MAILER_COUNT_ER_REPEAT#}{/if}"></a>{/if}</td>
<td>{$title|escape}</td>
<td><a href="mailto:{$rec->email|escape}" target="_blank">{$rec->email}</a></td>
<td>{$rec->lastname|escape}</td>
<td>{$rec->firstname|escape}</td>
<td>{$rec->comments|escape}</td>
</tr>
{/foreach}
{/foreach}
</tbody>
</table>
{if !$count_mail.lists}
<div class="rowElem">
<ul class="messages">
<li class="highlight yellow">{#MAILER_COUNT_NOLISTS#}</li>
</ul>
</div>
{/if}
</div>
<div class="widget first">
<div class="head">
<h5 class="iFrames">{#MAILER_GROUPS#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="34" />
<col width="150" />
<col width="150" />
<col width="150" />
<col width="150" />
<col />
<thead>
<tr class="noborder">
<td align="center"><div align="center"><a href="javascript:void(0);" class="help rightDir icon_sprite ico_info" title="{#MAILER_COUNT_INFO#}"></a></div></td>
<td>{#MAILER_GROUP#}</td>
<td>{#MAILER_REC_EMAIL#}</td>
<td>{#MAILER_LOGIN#}</td>
<td>{#MAILER_REC_LASTN#}</td>
<td>{#MAILER_REC_FIRSTN#}</td>
</tr>
</thead>
<tbody>
{foreach from=$count_mail.groups key=title item=group}
{foreach from=$group item=rec}
<tr{if $rec->s} class="red"{/if}>
<td>{if $rec->s}<a class="help rightDir icon_sprite ico_info" href="javascript:void(0);" title="{#MAILER_COUNT_ER_REPEAT#}"></a>{/if}</td>
<td>{$title|escape}</td>
<td><a href="mailto:{$rec->email|escape}" target="_blank">{$rec->email}</a></td>
<td>{$rec->user_name|escape}</td>
<td>{$rec->lastname|escape}</td>
<td>{$rec->firstname|escape}</td>
</tr>
{/foreach}
{/foreach}
</tbody>
</table>
{if !$count_mail.groups}
<div class="rowElem">
<ul class="messages">
<li class="highlight yellow">{#MAILER_COUNT_NOGROUPS#}</li>
</ul>
</div>
{/if}
</div>
<div class="widget first">
<div class="head">
<h5 class="iFrames">{#MAILER_MAILS_REC_ADD#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="34" />
<col />
<thead>
<tr class="noborder">
<td align="center"><div align="center"><a href="javascript:void(0);" class="help rightDir icon_sprite ico_info" title="{#MAILER_COUNT_INFO#}"></a></div></td>
<td>{#MAILER_REC_EMAIL#}</td>
</tr>
</thead>
<tbody>
{foreach from=$count_mail.add item=rec}
<tr{if $rec.s} class="red"{/if}>
<td>{if $rec.s}<a class="help rightDir icon_sprite ico_info" href="javascript:void(0);" title="{if $rec.s == 1}{#MAILER_COUNT_ER_REPEAT#}{elseif $rec.s == 2}{#MAILER_ER_EMAIL_SYN#}{/if}"></a>{/if}</td>
<td><a {if $rec.s == 2}style="text-decoration:line-through"{/if} href="mailto:{$rec.email|escape}" target="_blank">{$rec.email}</a>{if $rec.from} ({#MAILER_MAILS_FROM#}){/if}</td>
</tr>
{/foreach}
</tbody>
</table>
{if !$count_mail.add}
<div class="rowElem">
<ul class="messages">
<li class="highlight yellow">{#MAILER_COUNT_NOADD#}</li>
</ul>
</div>
{/if}
</div>
<div class="widget first">
<div class="head">
<h5 class="iFrames">{#MAILER_COUNT_SUM#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<tr class="noborder">
<td width="250">{#MAILER_COUNT_ALL#}<br /><small>{#MAILER_COUNT_ALL_INFO#}</small></td>
<td>
<div class="pr12">
{$count_mail.number}
</div>
</td>
</tr>
</table>
</div>

276
templates/admin_edit_list.tpl

@ -0,0 +1,276 @@
<div class="title">
<h5>{if !$smarty.request.id}{#MAILER_LISTS_ADD_TITLE#}{else}{#MAILER_LISTS_EDIT_TITLE#}{/if}</h5>
</div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#MAILER_LISTS_EDIT_INFO#}
</div>
</div>
<div class="breadCrumbHolder module">
<div class="breadCrumb module">
<ul>
<li class="firstB">
<a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a>
</li>
<li>
<a href="index.php?do=modules&amp;cp={$sess}">{#MODULES_SUB_TITLE#}</a>
</li>
<li>
<a href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=1&amp;cp={$sess}">{#MAILER_MODULE_NAME#}</a>
</li>
<li>
<a href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=showlists&amp;cp={$sess}">{#MAILER_MANAGE_LISTS#}</a>
</li>
<li>{if !$smarty.request.id}{#MAILER_LISTS_ADD_TITLE#}{else}{#MAILER_LISTS_EDIT_TITLE#}{/if}</li>
<li><strong class="code">{if !$smarty.request.id}{#MAILER_LISTS_CREATE_T#}{else}{$list->title|escape}{/if}</strong></li>
</ul>
</div>
</div>
<form action="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=savelist&amp;id={$smarty.request.id}&amp;return=1&amp;cp={$sess}" method="post" class="mainForm" enctype="multipart/form-data">
<div class="widget first">
<div class="head{if $smarty.request.id != ''} closed{/if}">
<h5 class="iFrames">{#MAILER_LISTS_SET_COM#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic" id="list_com_set">
<tr class="noborder">
<td width="250">{#MAILER_LISTS_TITLE#}</td>
<td><div class="pr12">
<input id="list_title" class="mousetrap" type="text" value="{$list->title|escape}" name="title" placeholder="{#MAILER_LISTS_TITLE#}" style="width:250px;" />
</div></td>
</tr>
<tr>
<td width="250">{#MAILER_LISTS_DESCR#}</td>
<td><div class="pr12">
<textarea class="mousetrap" name="descr" style="width:300px;height:50px" placeholder="{#MAILER_LISTS_DESCR_INFO#}">{$list->descr}</textarea>
</div></td>
</tr>
</table>
<div class="rowElem">
<input type="submit" class="basicBtn" value="{if !$smarty.request.id}{#MAILER_ADD_BTN#} {else}{#MAILER_EDIT_BTN#}{/if}" formaction="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=savelist&amp;id={$smarty.request.id}&amp;cp={$sess}" />
&nbsp;
<input type="submit" class="blackBtn" value="{if !$smarty.request.id}{#MAILER_ADD_CONT_BTN#} {else}{#MAILER_EDIT_CONT_BTN#}{/if}" />
</div>
</div>
{if $page_nav}
<div class="pagination" style="margin-top:26px;">
<ul class="pages">
{$page_nav}
</ul>
</div>
{/if}
<div class="widget first" id="receivers_list">
<div class="head">
<h5 class="iFrames">{#MAILER_LISTS_SET_REC#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="34" />
<col width="34" />
<col width="150" />
<col width="150" />
<col width="150" />
<col width="150" />
<col />
<col width="20" />
<col width="20" />
<thead>
<tr class="noborder">
<td></td>
<td align="center"><div align="center"><a href="javascript:void(0);" class="help rightDir icon_sprite ico_info" title="{#MAILER_REC_STATUS_I#}"></a></div></td>
<td>{#MAILER_REC_EMAIL#}</td>
<td>{#MAILER_REC_LASTN#}</td>
<td>{#MAILER_REC_FIRSTN#}</td>
<td>{#MAILER_REC_MIDN#}</td>
<td>{#MAILER_REC_COMMENTS#}</td>
<td colspan="2">{#MAILER_ACTIONS#}</td>
</tr>
</thead>
<tbody id="receivers_list_body">
<tr id="input_row_0">
<td></td>
<td><input type="checkbox" class="mousetrap status" value="1" name="new[0][status]" checked="checked"/></td>
<td><input autocomplete="off" class="mousetrap" type="text" name="new[0][email]" placeholder="{#MAILER_REC_EMAIL#}" style="width:90%" onchange="if($(this).val()) checkemail($(this).val());" /></td>
<td><input autocomplete="off" class="mousetrap" type="text" name="new[0][lastn]" placeholder="{#MAILER_REC_LASTN#}" style="width:90%" /></td>
<td><input autocomplete="off" class="mousetrap" type="text" name="new[0][firstn]" placeholder="{#MAILER_REC_FIRSTN#}" style="width:90%" /></td>
<td><input autocomplete="off" class="mousetrap" type="text" name="new[0][midn]" placeholder="{#MAILER_REC_MIDN#}" style="width:90%" /></td>
<td><input autocomplete="off" class="mousetrap" type="text" name="new[0][comments]" placeholder="{#MAILER_REC_COMMENTS#}" style="width:95%" /></td>
<td colspan="2" align="center">
<input onclick="input_addrow($(this));" type="button" class="topleftDir basicBtn addrow_btn" value="+" style="padding:2px 6px;" title="{#MAILER_INPUT_ADD_ROW#}" />
<a class="icon_sprite ico_delete" style="cursor:pointer;display:none" onClick="$(this).parent().parent().remove();"></a></td>
</tr>
{foreach from=$receivers item=rec}
<tr id="rec_{$rec->id}">
<td><a class="rightDir icon_sprite ico_info help" href="javascript:void(0);" title="{#MAILER_REC_DATE_ADD#} {$rec->date|date_format:$TIME_FORMAT|pretty_date}"></a></td>
<td>
<input type="hidden" name="status[{$rec->id}]" value="{if $rec->status=="2"}2{else}0{/if}"/>
<input type="checkbox" class="toprightDir" name="status[{$rec->id}]" value="1" {if $rec->status=="1"}checked="checked"{elseif $rec->status=="2"} disabled="disabled" title="{#MAILER_REC_REFUSED#}"{/if}/></td>
<td><a href="mailto:{$rec->email|escape}" target="_blank">{$rec->email}</a></td>
<td class="lastn">{$rec->lastname|escape}</td>
<td class="firstn">{$rec->firstname|escape}</td>
<td class="midn">{$rec->middlename|escape}</td>
<td class="comments">{$rec->comments|escape}</td>
<td align="center"><a id="rec_btn_{$rec->id}" class="topleftDir icon_sprite ico_edit" style="cursor:pointer" onclick="edit_string({$rec->id});" title="{#MAILER_ACTIONS_EDIT#}"></a></td>
<td align="center"><a class="topleftDir icon_sprite ico_delete" onClick="del_receiver({$rec->id},'{$rec->email|escape}')" title="{#MAILER_ACTIONS_DEL#}" style="cursor:pointer"></a></td>
</tr>
{/foreach}
</tbody>
</table>
{if !$receivers}
<div class="rowElem">
<ul class="messages">
<li class="highlight yellow">{#MAILER_REC_NOITEMS#}</li>
</ul>
</div>
{/if}
</div>
{if $page_nav}
<div class="pagination" style="margin-top:26px;">
<ul class="pages">
{$page_nav}
</ul>
</div>
{/if}
<div class="widget first">
<div class="head closed">
<h5 class="iFrames">{#MAILER_LISTS_IMPORT#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<tr class="noborder">
<td width="250">{#MAILER_LISTS_IMPORT_T#}<br /><small>{#MAILER_LISTS_IMPORT_T_I#}</small></td>
<td>
<div class="pr12">
<textarea class="mousetrap" name="import" style="width:100%; height:200px;" ></textarea>
</div>
<div class="pr12" style="margin-top:10px;">
<label style="float:left;padding-left:0;">{#MAILER_LISTS_IMPORT_T_1#}</label><input class="mousetrap" type="text" autocomplete="off" name="import_delim_1" style="width:30px;float:left;text-align:center;" value="{if $smarty.session.mailer.list_import_delim_1}{$smarty.session.mailer.list_import_delim_1|stripslashes}{else};{/if}" />
<label style="float:left">{#MAILER_LISTS_IMPORT_T_2#}</label><input class="mousetrap" type="text" autocomplete="off" name="import_delim_2" style="width:30px;float:left;text-align:center;" value="{if $smarty.session.mailer.list_import_delim_2}{$smarty.session.mailer.list_import_delim_2|stripslashes}{else},{/if}" />
</div>
<div class="pr12" style="clear:both;">
<small>{#MAILER_LISTS_IMPORT_T_H#}</small>
</div>
</td>
</tr>
<tr>
<td width="250">{#MAILER_LISTS_IMPORT_F#}<br /><small>{#MAILER_LISTS_IMPORT_F_I#}</small></td>
<td>
<div class="pr12">
<input type="file" name="import_file" class="fileInput" />
</div>
<div class="pr12" style="margin-top:10px;">
<label style="float:left;padding-left:0">{#MAILER_LISTS_IMPORT_F_D#}</label><input class="mousetrap" type="text" autocomplete="off" name="import_file_delim" style="width:30px;float:left;text-align:center;" value="{if $smarty.session.mailer.list_import_delim_csv}{$smarty.session.mailer.list_import_delim_csv|stripslashes}{else};{/if}" />
</div>
<div class="pr12" style="clear:both;">
<small>{#MAILER_LISTS_IMPORT_F_H#}</small>
</div>
</td>
</tr>
</table>
<div class="rowElem">
<input type="submit" class="basicBtn" value="{if !$smarty.request.id}{#MAILER_ADD_BTN#} {else}{#MAILER_EDIT_BTN#}{/if}" formaction="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=savelist&amp;id={$smarty.request.id}&amp;cp={$sess}" />
&nbsp;
<input type="submit" class="blackBtn" value="{if !$smarty.request.id}{#MAILER_ADD_CONT_BTN#} {else}{#MAILER_EDIT_CONT_BTN#}{/if}" />
<input type="hidden" value="{$smarty.request.page}" name="page"/>
</div>
</div>
</form>
<script language="javascript">
$(document).ready(function() {ldelim}
Mousetrap.bind(['ctrl+s', 'meta+s'], function(e) {ldelim}
if (e.preventDefault) {ldelim}
e.preventDefault();
{rdelim}
else {ldelim}
// internet explorer
e.returnValue = false;
{rdelim}
$("form").submit();
return false;
{rdelim});
input_new = 0;
$("form").submit(function() {ldelim}
if (!$("#list_title").val()) {ldelim}
jAlert('{#MAILER_LISTS_NOTITLE#}','{#MAILER_SAVING#}',function(){ldelim}$("#list_com_set").show();$("#list_title").focus();{rdelim});
return false;
{rdelim}
{rdelim});
{rdelim});
function edit_string(id){ldelim}
fields = {ldelim}0:"lastn",1:"firstn",2:"midn",3:"comments"{rdelim}
for(var f in fields) {ldelim}
field = fields[f];
value = $("#rec_"+id+" td."+field).text();
$("#rec_"+id+" td."+field).empty();
$("[name=new\\[0\\]\\["+field+"\\]]").clone().attr("value",value).attr("name","edit["+id+"]["+field+"]").appendTo("#rec_"+id+" td."+field);
{rdelim}
$("#rec_btn_"+id).removeAttr("onclick").removeClass("ico_edit").attr("title","{#MAILER_ACTIONS_HOWSAVE#}").addClass("ico_edit_no");
{rdelim}
function input_addrow(object){ldelim}
id = object.parent().parent().attr("id");
var tpl = /input_row_([0-9]*)/ig;
var num_old = Number(tpl.exec(id)[1]);
var num_new = num_old+1;
$("#input_row_"+num_old).clone().attr("id","input_row_"+num_new).prependTo("#receivers_list_body");
$("#input_row_"+num_old+" .addrow_btn").hide();
$("#input_row_"+num_old+" .ico_delete").show();
$("#input_row_"+num_new+" input").not(".addrow_btn, .status").removeAttr("value");
$("#input_row_"+num_new).find("input").each(function(){ldelim}
var tpl = /new\[[0-9]*\]\[(.*)\]/ig;
var namepart = tpl.exec($(this).attr("name"))[1];
$(this).attr("name","new["+num_new+"]["+namepart+"]");
{rdelim});
{rdelim}
function checkemail(email){ldelim}
$.ajax({ldelim}
beforeSend:
function(){ldelim}
$.alerts._overlay('show');
{rdelim},
url: 'index.php',
data: ({ldelim}
'do': 'modules',
action: 'modedit',
mod: 'mailer',
moduleaction: 'checkemail',
list_id: '{$smarty.request.id}',
email: email,
cp: '{$sess}'
{rdelim}),
timeout:3000,
success:
function(data){ldelim}
$.alerts._overlay('hide');
switch (Number(data)) {ldelim}
case 0:
$.jGrowl("{#MAILER_ER_EMAIL_SYN#}"); break;
case 1:
$.jGrowl("{#MAILER_REC_EMAIL_OK#}"); break;
case 2:
$.jGrowl("{#MAILER_REC_EMAIL_NO#}"); break;
{rdelim}
{rdelim}
{rdelim});
{rdelim};
function del_receiver(rec_id,rec_email) {ldelim}
jConfirm('{#MAILER_REC_DEL#} '+rec_email+'?','{#MAILER_DELETING#}',function(r) {ldelim}
if(r) {ldelim}
$.ajax({ldelim}
url: 'index.php?do=modules&action=modedit&mod=mailer&cp=6c8fgl38te5rgloor09u1dglv1',
data: ({ldelim}moduleaction:'delreceiver', rec_id:rec_id{rdelim}),
success: function(data) {ldelim}
$.jGrowl('{#MAILER_REC_DELETED#}');
$("#rec_"+rec_id).hide();
{rdelim}
{rdelim});
{rdelim}
{rdelim});
{rdelim}
</script>

428
templates/admin_edit_mail.tpl

@ -0,0 +1,428 @@
<div class="title">
<h5>{if !$smarty.request.id}{#MAILER_MAILS_ADD_TITLE#}{else}{#MAILER_MAILS_EDIT_TITLE#}{/if}</h5>
</div>
{*<div class="widget" style="margin-top: 0px;">
<div class="body">
{#MAILER_MAILS_ADD_INFO#}
</div>
</div>*}
<div class="breadCrumbHolder module">
<div class="breadCrumb module">
<ul>
<li class="firstB">
<a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a>
</li>
<li>
<a href="index.php?do=modules&amp;cp={$sess}">{#MODULES_SUB_TITLE#}</a>
</li>
<li>
<a href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=1&amp;cp={$sess}">{#MAILER_MODULE_NAME#}</a>
</li>
<li>{if !$smarty.request.id}{#MAILER_MAILS_ADD_TITLE#}{else}{#MAILER_MAILS_EDIT_TITLE#}{/if}</li>
<li><strong class="code">{if !$smarty.request.id}{#MAILER_MAILS_NEW_TITLE#}{else}{$mail->subject}{/if}</strong></li>
</ul>
</div>
</div>
<form action="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=savemail&amp;act=go&amp;id={$smarty.request.id}&amp;cp={$sess}" method="post" enctype="multipart/form-data" class="mainForm" id="mail_form">
<div class="widget first">
<div class="head">
<h5 class="iFrames">{#MAILER_MAILS_HEAD_MAIL#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="250">
<tr class="noborder">
<td>{#MAILER_MAILS_SUBJECT#}</td>
<td><div class="pr12">
<input class="mousetrap" name="subject" type="text" id="subject" style="width:300px" value="{$mail->subject}" />
</div></td>
</tr>
<tr>
<td>{#MAILER_MAILS_FORMAT#}</td>
<td><div class="pr12">
<input type="radio" name="type" value="html" {if $mail->type!='text'}checked="checked"{/if}/>
<label>HTML</label>
<input id="radio_text" type="radio" name="type" value="text" {if $mail->type=='text'}checked="checked"{/if}/>
<label>{#MAILER_MAILS_TEXT#}</label>
</div></td>
</tr>
<tr>
<td>{#MAILER_MAILS_TEXT#}<br /><small>{#MAILER_MAILS_TEXT_I#}</small></td>
<td>
<div class="pr12" id="html">
<textarea class="mousetrap" name="body" id="codemirror" style="width:100%;height:300px">{$mail->body}</textarea>
</div>
<div class="pr12" id="text">
<textarea class="mousetrap" name="body" style="width:100%;height:300px">{$mail->body}</textarea>
</div>
<div class="pr12" style="margin-top:4px;">
<a style="float:left; margin:6px 3px 0;" class="icon_sprite ico_list" target="_blank" href="/index.php?module=mailer&amp;action=show&amp;id={$mail->id}&amp;onlycontent=1"></a>
<strong><a {if !$smarty.request.id}onClick="jAlert('{#MAILER_MAILS_SHOW_ALERT#}','{#MAILER_SHOWING#}');return false;"{/if} style="float:left; padding:4px 0" target="_blank" href="/index.php?module=mailer&amp;action=show&amp;id={$smarty.request.id}&amp;onlycontent=1">{#MAILER_MAILS_SHOW#}&nbsp;&raquo;</a></strong>
</div>
</td>
</tr>
<tr>
<td>{#MAILER_MAILS_APPEAL#}<br /><small>{#MAILER_MAILS_APPEAL_I#}</small></td>
<td><div class="pr12" id="ed1">
<input class="mousetrap" type="text" name="appeal" value="{$mail->appeal}" style="width:300px" />
</div></td>
</tr>
<tr>
<td>{#MAILER_MAILS_ATTACH#}<br /><small>{#MAILER_MAILS_ATTACH_I#}</small></td>
<td id="attach_td">
<div style="clear:both;margin:4px 0;">
<input name="attach[]" type="file" class="fileInput multi" />
</div>
</td>
</tr>
<tr>
<td>{#MAILER_MAILS_SAVEATTACH#}</td>
<td><div class="pr12">
<input type="radio" name="saveattach" value="1" {if $mail->saveattach}checked="checked"{/if} />
<label>{#MAILER_YES#}</label>
<input type="radio" name="saveattach" value="0" {if !$mail->saveattach}checked="checked"{/if} />
<label>{#MAILER_NO#}</label>
</div></td>
</tr>
</table>
<div class="rowElem">
<input onclick="save_func(false);" class="basicBtn" type="button" value="{#MAILER_MAILS_SAVE_BTN#}" />
&nbsp;
<input class="blackBtn SaveEdit" type="button" value="{#MAILER_MAILS_SAVE_BTN_C#}" />
</div>
</div>
<div class="widget first">
<div class="head">
<h5 class="iFrames">{#MAILER_MAILS_HEAD_SET#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="250">
<tr class="noborder">
<td>{#MAILER_MAILS_FROM_NAME#}</td>
<td><div class="pr12">
<input class="mousetrap" name="from_name" type="text" id="from_name" value="{$mail->from_name}" style="width:300px" />
</div></td>
</tr>
<tr>
<td>{#MAILER_MAILS_FROM_EMAIL#}</td>
<td><div class="pr12">
<input class="mousetrap" name="from_email" type="text" id="from_email" value="{$mail->from_email}" style="width:300px" onchange="if($(this).val()) checkemail($(this).val());" />
</div></td>
</tr>
<tr>
<td>{#MAILER_MAILS_FROM_COPY#}</td>
<td><div class="pr12">
<input class="mousetrap" id="from_copy" name="from_copy" type="checkbox" value="1"{if $mail->from_copy} checked{/if} />
</div></td>
</tr>
<tr>
<td>{#MAILER_MAILS_RECIEVERS#}: {#MAILER_MAILS_REC_GROUPS#} "{$mail->site_name}"<br />
<small>{#MAILER_MAILS_CTRL#}</small></td>
<td><div class="pr12">
<select class="mousetrap" id="groups" name="to_groups[]" size="{if $mail->usergroups|@count < 8}{$mail->usergroups|@count}{else}8{/if}" multiple="multiple" style="min-width:310px">
{foreach from=$mail->usergroups item=usergroup}
<option value="{$usergroup->user_group}" {if $usergroup->user_group|in_array:$mail->to_groups} selected="selected"{/if}>{$usergroup->user_group_name|escape}</option>
{/foreach}
</select>
</div></td>
</tr>
<tr>
<td>{#MAILER_MAILS_RECIEVERS#}: {#MAILER_MAILS_REC_LISTS#}<br />
<small>{#MAILER_MAILS_CTRL#}</small></td>
<td><div class="pr12">
<select class="mousetrap" id="lists" name="to_lists[]" size="{if $mail->lists|@count < 8}{$mail->lists|@count}{else}8{/if}" multiple="multiple" style="min-width:310px">
{foreach from=$mail->lists item=title key=id}
<option value="{$id}" {if $id|in_array:$mail->to_lists} selected="selected"{/if}>{$title|escape}</option>
{/foreach}
</select>
</div></td>
</tr>
<tr>
<td>{#MAILER_MAILS_REC_ADD#}<br /><small>{#MAILER_MAILS_REC_ADD_I#}</small></td>
<td><div class="pr12">
<textarea class="mousetrap" name="to_add" id="to_add" style="width:300px; height:50px" onchange="if($(this).val()) checkemail($(this).val());">{$mail->to_add}</textarea>
</div></td>
</tr>
<tr>
<td>{#MAILER_MAILS_FINAL_REC#}</td>
<td><div class="pr12">
<input type="button" class="greenBtn" onclick="countMail();" value="{#MAILER_MAILS_MAKE_FIN#}"/>&nbsp;&nbsp;({#MAILER_MAILS_FINAL_TXT#})
</div></td>
</tr>
<tr>
<td>{#MAILER_MAILS_TIMING#}</td>
<td><div class="pr12">
<select name="timing" id="timing">
<option value="" {if $mail->timing==''}selected=selected{/if}>{#MAILER_MAILS_TIM_ALL#}</option>
<option value="100" {if $mail->timing=='100'}selected=selected{/if}>{#MAILER_MAILS_TIM_100#}</option>
<option value="200" {if $mail->timing=='200'}selected=selected{/if}>{#MAILER_MAILS_TIM_200#}</option>
<option value="300" {if $mail->timing=='300'}selected=selected{/if}>{#MAILER_MAILS_TIM_300#}</option>
</select>
</div></td>
</tr>
</table>
<div class="rowElem">
<input onclick="save_func(false);" class="basicBtn" type="button" value="{#MAILER_MAILS_SAVE_BTN#}" />
&nbsp;
<input class="blackBtn SaveEdit" type="button" value="{#MAILER_MAILS_SAVE_BTN_C#}" />
&nbsp;
<input type="button" onclick="test();" class="greenBtn" value="{#MAILER_MAILS_TEST_BTN#}" />
&nbsp;
<input type="button" onclick="presend();" id="butt_send" class="redBtn" value="{#MAILER_MAILS_SEND_BTN#}" /><span id="send_stop" style="display:none">&nbsp;&nbsp;{#MAILER_MAILS_STOP#}</span>
<div id="progressbar" style="display:none;clear:both;margin-top:10px;"></div>
<div id="delay" class="highlight yellow" style="display:none;margin-top:10px;">{#MAILER_MAILS_DELAY#}</div>
<div id="sent_ok" class="highlight yellow" style="{if !$mail->sent}display:none;{/if}margin-top:10px;">{if $mail->sent}{$mail->date|date_format:$TIME_FORMAT|pretty_date}&nbsp;&nbsp;{/if}{#MAILER_SENT_OK_TEXT#}
<strong><a href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=1&amp;cp={$sess}">&raquo;&nbsp;{#MAILER_SENT_OK_LINK#}</a></strong></div>
</div>
</div>
</form>
<script>
{if $mail->sent} $(':input').attr('disabled','disabled');{/if}
function test() {ldelim}
if (full_check(false)) {ldelim}
jPrompt('{#MAILER_MAILS_SEND_TEST#}','{$test_email}','{#MAILER_SENDING_TEST#}',function(emails){ldelim}
if(!emails) return false;
$("#mail_form").ajaxSubmit({ldelim}
url: 'index.php?do=modules&action=modedit&mod=mailer&moduleaction=testsend&id={$smarty.request.id}&cp={$sess}',
data: ({ldelim}'emails': emails{rdelim}),
beforeSubmit: function() {ldelim}$.alerts._overlay('show');{rdelim},
success: function(data) {ldelim}
$.alerts._overlay('hide');
$.jGrowl('{#MAILER_MAILS_TEST_OK#} '+data);
{rdelim}
{rdelim});
{rdelim});
{rdelim}
{rdelim}
function presend() {ldelim}
if (full_check(true)) {ldelim}
jConfirm('{#MAILER_MAILS_SEND_Q#}','{#MAILER_SENDING#}',function(b){ldelim}
if (b){ldelim}
$("#mail_form").ajaxSubmit({ldelim}
url: 'index.php?do=modules&action=modedit&mod=mailer&moduleaction=savemail&id={$smarty.request.id}&cp={$sess}',
data: ({ldelim}act:'send'{rdelim}),
beforeSubmit: function() {ldelim}
$("#progressbar").show().progressbar({ldelim}value: 0{rdelim});
$('#send_stop').fadeIn();
$.alerts._overlay('show');
{rdelim},
success: function(data) {ldelim}
$(':input').attr('disabled','disabled');
mail_id = Number(data);
send();
{rdelim}
{rdelim});
{rdelim}
{rdelim});
{rdelim}
{rdelim}
function send() {ldelim}
if(delay) {ldelim}
$('#delay').fadeOut();
$.alerts._overlay('show');
delay = false;
{rdelim}
$("#mail_form").ajaxSubmit({ldelim}
url: 'index.php?do=modules&action=modedit&mod=mailer&moduleaction=sendmail&id={$smarty.request.id}&cp={$sess}',
data: ({ldelim}mail_id: mail_id{rdelim}),
success: function(data) {ldelim}
if (data == 'finish') {ldelim}
$.alerts._overlay('hide');
$.jGrowl("{#MAILER_SENT_OK#}");
$("#sent_ok").show();
location.reload();
{rdelim}
else if (data == 'pause') {ldelim}
// считаем время + час
var current = new Date();
var hour = current.getTime() + 3600000;
var d = new Date(hour);
var month = d.getMonth()+1;
var date_str = d.getDate()+'.'+month+'.'+d.getFullYear()+' '+d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();
// вставляем в сообщение и показываем
$('#delay_time').text(date_str);
$('#delay').fadeIn();
$.alerts._overlay('hide');
delay = true;
send_delay = setTimeout(function(){ldelim}send(){rdelim},3600000);
{rdelim}
else {ldelim}
$("#progressbar").progressbar({ldelim}value: Number(data){rdelim});
send();
{rdelim}
{rdelim}
{rdelim});
{rdelim}
var save_form = {ldelim}
url: 'index.php?do=modules&action=modedit&mod=mailer&moduleaction=savemail&id={$smarty.request.id}&cp={$sess}',
beforeSubmit: function() {ldelim}$.alerts._overlay('show');{rdelim},
data: ({ldelim}act:'ajaxsave'{rdelim}),
success: function(data) {ldelim}
$.jGrowl('{#MAILS_SAVED#}');
{if !$smarty.request.id} location.href="index.php?do=modules&action=modedit&mod=mailer&moduleaction=editmail&id="+data+"&cp={$sess}";
{else}$.alerts._overlay('hide');{/if}
{rdelim}
{rdelim}
function save_func(ajax) {ldelim}
if (!$("#subject").val()) {ldelim}
jAlert('{#MAILER_ERR_SUBJECT#}','{#MAILER_SENDING#}',
function() {ldelim}$("#subject").focus();{rdelim});
return false;
{rdelim}
if ($(".fileInput").val()) {ldelim}
jAlert('{#MAILER_ALERT_ATTACH#}','{#MAILER_SAVING#}',
function() {ldelim}
if(!ajax) $("#mail_form").submit();
else {ldelim}
$("#mail_form").ajaxSubmit(save_form);
{rdelim}
{rdelim});
{rdelim}
else {ldelim}
if(!ajax) $("#mail_form").submit();
else $("#mail_form").ajaxSubmit(save_form);
{rdelim}
{rdelim}
{if !$mail->sent}
{literal}
$(document).ready(function() {
delay = false;
Mousetrap.bind(['ctrl+s', 'meta+s'], function(e) {
if (e.preventDefault) e.preventDefault();
else e.returnValue = false;
save_func(true);
return false;
});
Mousetrap.bind(['ctrl+g', 'meta+g'], function(e) {
if (e.preventDefault) e.preventDefault();
else e.returnValue = false;
if(delay) {
clearInterval(send_delay);
send();
}
return false;
});
Mousetrap.bind(['ctrl+q', 'meta+q'], function(e) {
if (e.preventDefault) e.preventDefault();
else e.returnValue = false;
location.reload();
return false;
});
$(".SaveEdit").click(function(e) {
if (e.preventDefault) e.preventDefault();
else e.returnValue = false;
save_func(true);
return false;
});
});
{/literal}
{/if}
{literal}
$(document).ready(function() {
var active_type = $("input[name=type]:checked").attr("value");
if (active_type == 'text') {
$("#html").hide(); $("#text").show(); $("#html textarea").attr("name","");
}
else {
$("#text").hide(); $("#html").show(); $("#text textarea").attr("name","");
}
$("input[name=type]").click(function() {
if($(this).attr("value")=='text') {
$("#html").hide();
$("#html textarea").attr("name","");
$("#text").show();
$("#text textarea").attr("name","body");
}
else {
$("#text").hide();
$("#text textarea").attr("name","");
$("#html").show();
$("#html textarea").attr("name","body");
}
});
});
{/literal}
function countMail() {ldelim}
window.open('index.php?do=modules&action=modedit&mod=mailer&moduleaction=countmail&id={$smarty.request.id}&cp={$sess}&pop=1','mailer_countmail_{$smarty.request.id}','top=0,left=0,width=900,height=600,scrollbars=1,resizable=1');
{rdelim}
function checkemail(in_email){ldelim}
emails = in_email.split(";");
for (var key in emails) {ldelim}
var email = emails[key];
$.ajax({ldelim}
beforeSend: function() {ldelim}
$.alerts._overlay('show');
{rdelim},
url: 'index.php?do=modules&action=modedit&mod=mailer&cp={$sess}',
data: ({ldelim}moduleaction:'checkemail', 'email':emails[key]{rdelim}),
success: function(data) {ldelim}
$.alerts._overlay('hide');
switch (Number(data)) {ldelim}
case 0:
$.jGrowl("{#MAILER_ER_EMAIL_SYN#}");
break;
case 1: case 2:
$.jGrowl("{#MAILER_EMAIL_OK#}");
break;
{rdelim}
{rdelim}
{rdelim});
{rdelim}
{rdelim}
function full_check(rec) {ldelim}
if (!$("#from_name").val()) {ldelim}
jAlert('{#MAILER_ERR_FROM_NAME#}','{#MAILER_SENDING#}',
function() {ldelim}$("#from_name").focus();{rdelim});
return false;
{rdelim}
if (!$("#from_email").val()) {ldelim}
jAlert('{#MAILER_ERR_FROM_EMAIL#}','{#MAILER_SENDING#}',
function() {ldelim}$("#from_email").focus();{rdelim});
return false;
{rdelim}
if (rec && !$("#groups").val() && !$("#lists").val() && !$("#to_add").val()) {ldelim}
jAlert('{#MAILER_ERR_TO#}','{#MAILER_SENDING#}',
function() {ldelim}$("#groups").focus();{rdelim});
return false;
{rdelim}
if (!$("#subject").val()) {ldelim}
jAlert('{#MAILER_ERR_SUBJECT#}','{#MAILER_SENDING#}',
function() {ldelim}$("#subject").focus();{rdelim});
return false;
{rdelim}
if (!$("textarea[name=body]").val()) {ldelim}
jAlert('{#MAILER_ERR_BODY#}','{#MAILER_SENDING#}',
function() {ldelim}$("textarea[name=body]").focus();{rdelim});
return false;
{rdelim}
return true;
{rdelim}
</script>
{include file="$codemirror_connect"}
{include file="$codemirror_editor" conn_id="rsc" textarea_id='codemirror' height=500}

164
templates/admin_multi_add.tpl

@ -0,0 +1,164 @@
<div class="title">
<h5>{#MAILER_MULTI_TITLE#}</h5>
</div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#MAILER_MULTI_INFO#}
</div>
</div>
<div class="breadCrumbHolder module">
<div class="breadCrumb module">
<ul>
<li class="firstB">
<a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a>
</li>
<li>
<a href="index.php?do=modules&amp;cp={$sess}">{#MODULES_SUB_TITLE#}</a>
</li>
<li>
<a href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=1&amp;cp={$sess}">{#MAILER_MODULE_NAME#}</a>
</li>
<li>
<a href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=showlists&amp;cp={$sess}">{#MAILER_MANAGE_LISTS#}</a>
</li>
<li><strong class="code">{#MAILER_MULTI_TITLE#}</strong></li>
</ul>
</div>
</div>
<form action="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=multisave&amp;return=1&amp;cp={$sess}" method="post" class="mainForm">
<div class="widget first">
<div class="head{if $smarty.request.id != ''} closed{/if}">
<h5 class="iFrames">{#MAILER_MULTI_TITLE2#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<tr class="noborder">
<td width="250">{#MAILER_MULTI_LISTS#}<br />
<small>{#MAILER_MAILS_CTRL#}</small></td>
<td><div class="pr12">
<select class="mousetrap" name="lists[]" size="{if $lists|@count < 16}{$lists|@count}{else}16{/if}" multiple="multiple" style="width:100%" id="lists">
{foreach from=$lists item=list}
<option value="{$list->id}" {if $list->id|in_array:$smarty.session.mailer.multi_add} selected="selected"{/if}>{$list->title|escape}</option>
{/foreach}
</select>
</div></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="34" />
<col width="150" />
<col width="150" />
<col width="150" />
<col width="150" />
<col />
<col width="20" />
<thead>
<tr class="noborder">
<td align="center"><div align="center"><a href="javascript:void(0);" style="cursor:help;" class="rightDir icon_sprite ico_info" title="{#MAILER_REC_STATUS_I2#}"></a></div></td>
<td>{#MAILER_REC_EMAIL#}</td>
<td>{#MAILER_REC_LASTN#}</td>
<td>{#MAILER_REC_FIRSTN#}</td>
<td>{#MAILER_REC_MIDN#}</td>
<td>{#MAILER_REC_COMMENTS#}</td>
<td></td>
</tr>
</thead>
<tbody id="receivers_list_body">
<tr id="input_row_0">
<td><input type="checkbox" value="1" name="new[0][status]" checked="checked"/></td>
<td><input autocomplete="off" class="mousetrap" type="text" name="new[0][email]" placeholder="{#MAILER_REC_EMAIL#}" style="width:90%" onchange="if($(this).val()) checkemail($(this).val());" /></td>
<td><input autocomplete="off" class="mousetrap" type="text" name="new[0][lastn]" placeholder="{#MAILER_REC_LASTN#}" style="width:90%" /></td>
<td><input autocomplete="off" class="mousetrap" type="text" name="new[0][firstn]" placeholder="{#MAILER_REC_FIRSTN#}" style="width:90%" /></td>
<td><input autocomplete="off" class="mousetrap" type="text" name="new[0][midn]" placeholder="{#MAILER_REC_MIDN#}" style="width:90%" /></td>
<td><input autocomplete="off" class="mousetrap" type="text" name="new[0][comments]" placeholder="{#MAILER_REC_COMMENTS#}" style="width:95%" /></td>
<td align="center">
<input onclick="input_addrow($(this));" type="button" class="topleftDir basicBtn addrow_btn" value="+" style="padding:2px 6px;" title="{#MAILER_INPUT_ADD_ROW#}" />
<a class="icon_sprite ico_delete" style="cursor:pointer;display:none" onClick="$(this).parent().parent().remove();"></a></td>
</tr>
</tbody>
</table>
<div class="rowElem">
<input class="basicBtn" type="submit" formaction="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=multisave&amp;cp={$sess}" value="{#MAILER_MULTI_BTN#}" />&nbsp;
<input class="blackBtn" type="submit" value="{#MAILER_MULTI_BTN_CTRL#}" />
</div>
</div>
</form>
<script>
$(document).ready(function() {ldelim}
Mousetrap.bind(['ctrl+s', 'meta+s'], function(e) {ldelim}
if (e.preventDefault) {ldelim}
e.preventDefault();
{rdelim}
else {ldelim}
// internet explorer
e.returnValue = false;
{rdelim}
$("form").submit();
return false;
{rdelim});
input_new = 0;
$("form").submit(function() {ldelim}
if (!$("#lists").val()) {ldelim}
jAlert('{#MAILER_MULTI_NOLIST#}','{#MAILER_ADDING#}',function(){ldelim}$("#lists").focus();{rdelim});
return false;
{rdelim}
{rdelim});
{rdelim});
function edit_string(id){ldelim}
fields = {ldelim}0:"lastn",1:"firstn",2:"midn",3:"comments"{rdelim}
for(var f in fields) {ldelim}
field = fields[f];
value = $("#rec_"+id+" td."+field).text();
$("#rec_"+id+" td."+field).empty();
$("[name=new\\[0\\]\\["+field+"\\]]").clone().attr("value",value).attr("name","edit["+id+"]["+field+"]").appendTo("#rec_"+id+" td."+field);
{rdelim}
$("#rec_btn_"+id).removeAttr("onclick").removeClass("ico_edit").attr("title","{#MAILER_ACTIONS_HOWSAVE#}").addClass("ico_edit_no");
{rdelim}
function input_addrow(object){ldelim}
id = object.parent().parent().attr("id");
var tpl = /input_row_([0-9]*)/ig;
var num_old = Number(tpl.exec(id)[1]);
var num_new = num_old+1;
$("#input_row_"+num_old).clone().attr("id","input_row_"+num_new).prependTo("#receivers_list_body");
$("#input_row_"+num_old+" .addrow_btn").hide();
$("#input_row_"+num_old+" .ico_delete").show();
$("#input_row_"+num_new+" input").not(".addrow_btn").removeAttr("value");
$("#input_row_"+num_new).find("input").each(function(){ldelim}
var tpl = /new\[[0-9]*\]\[(.*)\]/ig;
var namepart = tpl.exec($(this).attr("name"))[1];
$(this).attr("name","new["+num_new+"]["+namepart+"]");
{rdelim});
{rdelim}
function checkemail(email){ldelim}
$.ajax({ldelim}
beforeSend:
function(){ldelim}
$.alerts._overlay('show');
{rdelim},
url: 'index.php',
data: ({ldelim}
'do': 'modules',
action: 'modedit',
mod: 'mailer',
moduleaction: 'checkemail',
email: email,
cp: '{$sess}'
{rdelim}),
timeout:3000,
success:
function(data){ldelim}
$.alerts._overlay('hide');
switch (Number(data)) {ldelim}
case 0:
$.jGrowl("{#MAILER_ER_EMAIL_SYN#}"); break;
case 1:
$.jGrowl("{#MAILER_MULTI_EMAIL_OK#}"); break;
{rdelim}
{rdelim}
{rdelim});
{rdelim};
</script>

95
templates/admin_show_lists.tpl

@ -0,0 +1,95 @@
<div class="title">
<h5>{#MAILER_MANAGE_LISTS#}</h5>
</div>
{*<div class="widget" style="margin-top: 0px;">
<div class="body">
{#MAILER_LISTS_INFO#}
</div>
</div>*}
<div class="breadCrumbHolder module">
<div class="breadCrumb module">
<ul>
<li class="firstB">
<a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a>
</li>
<li>
<a href="index.php?do=modules&amp;cp={$sess}">{#MODULES_SUB_TITLE#}</a>
</li>
<li>
<a href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=1&amp;cp={$sess}">{#MAILER_MODULE_NAME#}</a>
</li>
<li>
<strong class="code">{#MAILER_MANAGE_LISTS#}</strong>
</li>
</ul>
</div>
</div>
<div class="widget first">
<div class="head">
<h5 class="iFrames">{#MAILER_LISTS_HEAD#}</h5>
<div class="num">
<a class="greenNum" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editlist&amp;cp={$sess}">{#MAILER_NEW_LIST#}</a>
</div>
<div class="num">
<a class="basicNum" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=1&amp;cp={$sess}">{#MAILER_MANAGE_MAILS#}</a>
</div>
<div class="num">
<a class="redNum botDir" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=multiadd&amp;cp={$sess}" title="{#MAILER_MULTI_HINT#}">{#MAILER_MULTI_TITLE#}</a>
</div>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="30" />
<col width="250" />
<col />
<col width="150" />
<col width="150" />
<col width="40" />
<col width="20" />
<col width="20" />
<col width="20" />
<col width="20" />
<thead>
<tr class="noborder">
<td align="center">id</td>
<td>{#MAILER_LISTS_TITLE#}</td>
<td>{#MAILER_LISTS_DESCR#}</td>
<td>{#MAILER_LISTS_AUTHOR#}</td>
<td>{#MAILER_LISTS_DATE#}</td>
<td class="topleftDir" title="{#MAILER_LISTS_NUMBER_F#}">{#MAILER_LISTS_NUMBER#}</td>
<td colspan="4">{#MAILER_ACTIONS#}</td>
</tr>
</thead>
<tbody>
{foreach from=$lists item=list}
<tr>
<td align="center">{$list->id}</td>
<td><strong>
<a class="toprightDir" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editlist&amp;id={$list->id}&amp;cp={$sess}" title="{#MAILER_LISTS_A_EDIT#}">{$list->title}</a>
</strong></td>
<td>
<div style="overflow:auto; max-height:80px">{$list->descr}</div></td>
<td align="center"><a class="topDir" title="{#MAILER_SHOW_AUTHOR_TIT#}" href="index.php?do=user&amp;action=edit&amp;id={$list->author_id}&amp;cp={$sess}">{$list->author_name|escape}</a></td>
<td align="center">{$list->date|date_format:$TIME_FORMAT|pretty_date}</td>
<td align="center" class="topDir" title="{#MAILER_LISTS_NUMBER_F#}">{$list->number}</td>
<td align="center"><a class="topDir icon_sprite ico_edit" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editlist&amp;id={$list->id}&amp;cp={$sess}" title="{#MAILER_ACTIONS_EDIT#}"></a></td>
<td align="center"><a class="topDir icon_sprite ico_recylce ConfirmDelete" dir="{#MAILER_WIPING#}" name="{#MAILER_ACTIONS_WIPE_2#} '{$list->title}'?" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editlist&amp;wipe=1&amp;id={$list->id}&amp;cp={$sess}&amp;page={$smarty.request.page}" title="{#MAILER_ACTIONS_WIPE#}"></a></td>
<td align="center"><a class="topDir icon_sprite ico_delete ConfirmDelete" dir="{#MAILER_DELETING#}" name="{#MAILER_ACTIONS_DEL#} '{$list->title}'?" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editlist&amp;delete=1&amp;id={$list->id}&amp;cp={$sess}&amp;page={$smarty.request.page}" title="{#MAILER_ACTIONS_DEL#}"></a></td>
<td align="center"><a class="topleftDir icon_sprite ico_install" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editlist&amp;download=1&amp;id={$list->id}&amp;cp={$sess}" title="{#MAILER_ACTIONS_DOWNLOAD#}"></a></td>
</tr>
{/foreach}
</tbody>
</table>
{if !$lists}
<div class="rowElem">
<ul class="messages">
<li class="highlight yellow">{#MAILER_LISTS_NOITEMS#}</li>
</ul>
</div>{/if}
</div>
{if $page_nav}
<div class="pagination">
<ul class="pages">
{$page_nav}
</ul>
</div>
{/if}

313
templates/admin_show_mails.tpl

@ -0,0 +1,313 @@
<div class="title">
<h5>{#MAILER_MANAGE_MAILS#}</h5>
</div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#MAILER_MODULE_INFO#}
</div>
</div>
<div class="breadCrumbHolder module">
<div class="breadCrumb module">
<ul>
<li class="firstB">
<a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a>
</li>
<li>
<a href="index.php?do=modules&amp;cp={$sess}">{#MODULES_SUB_TITLE#}</a>
</li>
<li> {#MAILER_MODULE_NAME#} </li>
<li>
<strong class="code">{#MAILER_MANAGE_MAILS#}</strong>
</li>
</ul>
</div>
</div>
<div class="widget first">
<div class="head">
<h5 class="iFrames">{#MAILER_MAILS_TPL_H#}</h5>
<div class="num">
<a class="basicNum" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editmail&amp;cp={$sess}">{#MAILER_NEW_MAIL#}</a>
</div>
<div class="num">
<a class="greenNum" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=showlists&amp;cp={$sess}">{#MAILER_MANAGE_LISTS#}</a>
</div>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="30" />
<col />
<col width="100" />
<col width="90" />
<col width="140" />
<col width="200" />
<col width="1" />
<col width="1" />
<col width="1" />
<thead>
<tr class="noborder">
<td>Id</td>
<td>{#MAILER_MAILS_SUBJECT#}</td>
<td>{#MAILER_MAILS_AUTHOR#}</td>
<td>{#MAILER_MAILS_CREATED#}</td>
<td>{#MAILER_MAILS_FROM#}</td>
<td>{#MAILER_MAILS_RECIEVERS#}</td>
<td colspan="3">{#MAILER_ACTIONS#}</td>
</tr>
</thead>
<tbody>
{foreach from=$mails.tpl item=mail}
<tr>
<td>{$mail->id}</td>
<td><a class="toprightDir" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editmail&amp;id={$mail->id}&amp;cp={$sess}" title="{#MAILER_ACTIONS_EDIT#}"><strong>{$mail->subject|escape}</strong></a></td>
<td><a class="topDir" title="{#MAILER_SHOW_AUTHOR_TIT#}" href="index.php?do=user&amp;action=edit&amp;id={$list->author_id}&amp;cp={$sess}">{$mail->author_name}</a></td>
<td align="right" class="date_text dgrey">{$mail->date|date_format:$TIME_FORMAT|pretty_date}</td>
<td><a class="topDir" href="mailto:{$mail->from_email|escape}" target="_blank" title="{#MAILER_WRITE_EMAIL#}">{$mail->from_email|escape}</a><br/>{$mail->from_name|escape}</td>
<td style="padding:0 0 0 10px">
<div style="overflow:auto;max-height:60px">
{if $mail->from_copy}{#MAILER_MAILS_FROM#}
{if $mail->to_groups || $mail->to_lists || $mail->to_add}<hr />{/if}
{/if}
{foreach from=$mail->to_groups item=group name=foreach}
{$group->user_group_name|escape}{if !$smarty.foreach.foreach.last}, {/if}{/foreach}
{if $mail->to_groups && ($mail->to_lists || $mail->to_add)}<hr />{/if}
{foreach from=$mail->to_lists item=list name=foreach}
<a target="_blank" class="topDir" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editlist&amp;id={$list->id}&amp;cp={$sess}" title="{#MAILER_LOOK_LIST#} '{$list->title|escape}'">{$list->title|escape}</a>{if !$smarty.foreach.foreach.last}, {/if}{/foreach}
{if $mail->to_lists && $mail->to_add}<hr />{/if}
{foreach from=$mail->to_add item=add name=foreach}
<a class="topDir" href="mailto:{$add|escape}" target="_blank" title="{#MAILER_WRITE_EMAIL#}">{$add|escape}</a>{if !$smarty.foreach.foreach.last}, {/if}
{/foreach}
</div>
</td>
<td align="center"><a class="topDir icon_sprite ico_edit" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editmail&amp;id={$mail->id}&amp;cp={$sess}" title="{#MAILER_ACTIONS_EDIT#}"></a></td>
<td align="center"><a class="topleftDir icon_sprite ico_list" target="_blank" href="/index.php?module=mailer&amp;action=show&amp;id={$mail->id}&amp;onlycontent=1" title="{#MAILER_ACTIONS_SHOW#}"></a></td>
<td align="center"><a class="topleftDir icon_sprite ico_delete ConfirmDelete" dir="{#MAILER_DELETING#}" name="{#MAILER_MAILS_DEL_Q#} '{$mail->subject}'?" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=savemail&amp;id={$mail->id}&amp;act=delete&amp;cp={$sess}&amp;page={$smarty.request.page}" title="{#MAILER_ACTIONS_DEL#}"></a></td>
</tr>
{/foreach}
</tbody>
</table>
{if !$mails.tpl}
<div class="rowElem">
<ul class="messages">
<li class="highlight yellow">{#MAILER_MAILS_TPL_NO#}</li>
</ul>
</div>
{/if}
</div>
<div class="widget first">
<ul class="tabs">
<li{if !$search} class="activeTab"{/if}><a href="#tab1">{#MAILER_MAILS_HEAD#}</a></li>
<li{if $search} class="activeTab"{/if}><a href="#tab2">{#MAILER_MAILS_SEARCH#}</a></li>
</ul>
<div class="tab_container">
<div id="tab1" class="tab_content" style="display:{if $search}none{else}block{/if}">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="30" />
<col />
<col width="100" />
<col width="90" />
<col width="140" />
<col width="200" />
<col width="140" />
<col width="1" />
<col width="1" />
<col width="1" />
<thead>
<tr class="noborder">
<td>Id</td>
<td>{#MAILER_MAILS_SUBJECT#}</td>
<td>{#MAILER_MAILS_AUTHOR#}</td>
<td>{#MAILER_MAILS_DATE#}</td>
<td>{#MAILER_MAILS_FROM#}</td>
<td>{#MAILER_MAILS_RECIEVERS#}</td>
<td>{#MAILER_MAILS_ATTACHS#}</td>
<td colspan="3">{#MAILER_ACTIONS#}</td>
</tr>
</thead>
<tbody>
{foreach from=$mails.sent item=mail}
<tr>
<td>{$mail->id}</td>
<td><a class="toprightDir" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editmail&amp;id={$mail->id}&amp;cp={$sess}" title="{#MAILER_LOOK#}"><strong>{$mail->subject|escape}</strong></a></td>
<td><a class="topDir" title="{#MAILER_SHOW_AUTHOR_TIT#}" href="index.php?do=user&amp;action=edit&amp;id={$list->author_id}&amp;cp={$sess}">{$mail->author_name|escape}</a></td>
<td align="right" class="date_text dgrey">{$mail->date|date_format:$TIME_FORMAT|pretty_date}</td>
<td><a href="mailto:{$mail->from_email|escape}" target="_blank">{$mail->from_email|escape}</a><br/>{$mail->from_name|escape}</td>
<td style="padding:0 0 0 10px">
<div style="overflow:auto;max-height:60px">
{if $mail->from_copy}{#MAILER_MAILS_FROM#}
{if $mail->to_groups || $mail->to_lists || $mail->to_add}<hr />{/if}
{/if}
{foreach from=$mail->to_groups item=group name=foreach}
{$group->user_group_name|escape}{if !$smarty.foreach.foreach.last}, {/if}{/foreach}
{if $mail->to_groups && ($mail->to_lists || $mail->to_add)}<hr />{/if}
{foreach from=$mail->to_lists item=list name=foreach}
<a target="_blank" class="topDir" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editlist&amp;id={$list->id}&amp;cp={$sess}" title="{#MAILER_LOOK_LIST#} '{$list->title|escape}'">{$list->title|escape}</a>{if !$smarty.foreach.foreach.last}, {/if}{/foreach}
{if $mail->to_lists && $mail->to_add}<hr />{/if}
{foreach from=$mail->to_add item=add name=foreach}
<a class="topDir" href="mailto:{$add|escape}" target="_blank" title="{#MAILER_WRITE_EMAIL#}">{$add|escape}</a>{if !$smarty.foreach.foreach.last}, {/if}
{/foreach}
</div>
</td>
<td style="padding:0 0 0 10px">
<div style="overflow:auto;max-height:60px">
{if $mail->saveattach !='1'}
{foreach from=$mail->attach item=attachment name=foreach}
{$attachment.name}{if !$smarty.foreach.foreach.last},<br />{/if}
{/foreach}
{else}
{foreach from=$mail->attach item=attachment name=foreach}
<a onClick="get_file('{$attachment.path}')" class="pointer">{$attachment.name}</a>{if !$smarty.foreach.foreach.last},<br />{/if}
{/foreach}
{/if}
</div>
</td>
<td align="center"><a class="topleftDir icon_sprite ico_look" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editmail&amp;id={$mail->id}&amp;cp={$sess}" title="{#MAILER_LOOK#}"></a></td>
<td align="center"><a class="topleftDir icon_sprite ico_list" target="_blank" href="/index.php?module=mailer&amp;action=show&amp;id={$mail->id}&amp;onlycontent=1" title="{#MAILER_ACTIONS_SHOW#}"></a></td>
<td align="center"><a class="topleftDir icon_sprite ico_copy" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editmail&amp;copy_id={$mail->id}&amp;cp={$sess}" title="{#MAILER_ACTIONS_COPY#}"></a></td>
</tr>
{/foreach}
</tbody>
</table>
{if !$mails.sent}
<div class="rowElem">
<ul class="messages">
<li class="highlight yellow">{#MAILER_MAILS_NOITEMS#}</li>
</ul>
</div>
{/if}
</div>
</div>
<div id="tab2" class="tab_content" style="display:{if !$search}none{else}block{/if}">
<form method="post" action="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=1&amp;cp={$sess}" class="mainForm" onSubmit="return check_find();" id="search">
<div class="rowElem">
<label>{#MAILER_MAILS_FIND#}</label>
<div style="float:left;margin-top:10px">
<input placeholder="{#MAILER_MAILS_FIND_IN#}" name="search_words" type="text" value="{$search_words}" style="width:400px">&nbsp;
<input type="submit" class="basicBtn" value="{#MAILER_MAILS_SEARCH#}" /><br>
<input type="checkbox" class="float" name="search[from_email]" value="1"{if !$search || $search.from_email} checked="checked"{/if}><label>{#MAILER_SEARCH_FROM_E#}</label>
<input type="checkbox" class="float" name="search[from_name]" value="1"{if !$search || $search.from_name} checked="checked"{/if}><label>{#MAILER_SEARCH_FROM_N#}</label>
<input type="checkbox" class="float" name="search[subject]" value="1"{if !$search || $search.subject} checked="checked"{/if}><label>{#MAILER_SEARCH_SUB#}</label>
<input type="checkbox" class="float" name="search[body]" value="1"{if !$search || $search.body} checked="checked"{/if}><label>{#MAILER_SEARCH_BODY#}</label>
<input type="checkbox" class="float" name="search[done]" value="1"{if !$search || $search.done} checked="checked"{/if}><label>{#MAILER_SEARCH_REC#}</label>
</div>
<div class="fix"></div>
</div>
</form>
{if $search}
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="30" />
<col />
<col width="100" />
<col width="90" />
<col width="140" />
<col width="200" />
<col width="140" />
<col width="1" />
<col width="1" />
<thead>
<tr class="noborder">
<td>Id</td>
<td>{#MAILER_MAILS_SUBJECT#}</td>
<td>{#MAILER_MAILS_AUTHOR#}</td>
<td>{#MAILER_MAILS_DATE#}</td>
<td>{#MAILER_MAILS_FROM#}</td>
<td>{#MAILER_MAILS_RECIEVERS#}</td>
<td>{#MAILER_MAILS_ATTACHS#}</td>
<td colspan="2">{#MAILER_ACTIONS#}</td>
</tr>
</thead>
<tbody>
{foreach from=$mails.find item=mail}
<tr>
<td>{$mail->id}</td>
<td><a class="toprightDir" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editmail&amp;id={$mail->id}&amp;cp={$sess}" title="{#MAILER_LOOK#}"><strong>{$mail->subject|escape}</strong></a></td>
<td><a class="topDir" title="{#MAILER_SHOW_AUTHOR_TIT#}" href="index.php?do=user&amp;action=edit&amp;id={$list->author_id}&amp;cp={$sess}">{$mail->author_name|escape}</a></td>
<td align="right" class="date_text dgrey">{$mail->date|date_format:$TIME_FORMAT|pretty_date}</td>
<td><a href="mailto:{$mail->from_email|escape}" target="_blank">{$mail->from_email|escape}</a><br/>{$mail->from_name|escape}</td>
<td style="padding:0 0 0 10px">
<div style="overflow:auto;max-height:60px">
{if $mail->from_copy}{#MAILER_MAILS_FROM#}
{if $mail->to_groups || $mail->to_lists || $mail->to_add}<hr />{/if}
{/if}
{foreach from=$mail->to_groups item=group name=foreach}
{$group->user_group_name|escape}{if !$smarty.foreach.foreach.last}, {/if}{/foreach}
{if $mail->to_groups && ($mail->to_lists || $mail->to_add)}<hr />{/if}
{foreach from=$mail->to_lists item=list name=foreach}
<a target="_blank" class="topDir" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editlist&amp;id={$list->id}&amp;cp={$sess}" title="{#MAILER_LOOK_LIST#} '{$list->title|escape}'">{$list->title|escape}</a>{if !$smarty.foreach.foreach.last}, {/if}{/foreach}
{if $mail->to_lists && $mail->to_add}<hr />{/if}
{foreach from=$mail->to_add item=add name=foreach}
<a class="topDir" href="mailto:{$add|escape}" target="_blank" title="{#MAILER_WRITE_EMAIL#}">{$add|escape}</a>{if !$smarty.foreach.foreach.last}, {/if}
{/foreach}
</div>
</td>
<td style="padding:0 0 0 10px">
<div style="overflow:auto;max-height:60px">
{if $mail->saveattach !='1'}
{foreach from=$mail->attach item=attachment name=foreach}
{$attachment.name}{if !$smarty.foreach.foreach.last},<br />{/if}
{/foreach}
{else}
{foreach from=$mail->attach item=attachment name=foreach}
<a onClick="get_file('{$attachment.path}');" style="cursor:pointer">{$attachment.name}</a>{if !$smarty.foreach.foreach.last},<br />{/if}
{/foreach}
{/if}
</div>
</td>
<td align="center"><a class="topleftDir icon_sprite ico_look" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editmail&amp;id={$mail->id}&amp;cp={$sess}" title="{#MAILER_LOOK#}"></a></td>
<td align="center"><a class="topleftDir icon_sprite ico_copy" href="index.php?do=modules&amp;action=modedit&amp;mod=mailer&amp;moduleaction=editmail&amp;copy_id={$mail->id}&amp;cp={$sess}" title="{#MAILER_ACTIONS_COPY#}"></a></td>
</tr>
{/foreach}
</tbody>
</table>
{if !$mails.find}
<div class="rowElem">
<ul class="messages">
<li class="highlight yellow">{#MAILER_MAILS_FIND_NO#}</li>
</ul>
</div>
{/if}
{/if}
</div>
<div class="fix"></div>
</div>
{if $page_nav}
<div class="pagination">
<ul class="pages">
{$page_nav}
</ul>
</div>
{/if}
<script>
function get_file(file) {ldelim}
$.ajax({ldelim}
url: 'index.php?do=modules&action=modedit&mod=mailer&cp={$sess}',
data: ({ldelim}
'moduleaction': 'getfile',
'file': file,
'check': true
{rdelim}),
beforeSend: function() {ldelim}$.alerts._overlay('show');{rdelim},
success: function(data) {ldelim}
if (data == '1') {ldelim}
document.location.href = "index.php?do=modules&action=modedit&mod=mailer&moduleaction=getfile&file="+file+"&cp={$sess}";
$.alerts._overlay('hide');
{rdelim}
else {ldelim}
jAlert(file,'{#MAILER_NOFILE#}');
{rdelim}
{rdelim}
{rdelim});
{rdelim};
function check_find() {ldelim}
if (!$("input[name=search_words]").val()) {ldelim}
jAlert('{#MAILER_ERR_SEACRH_WORDS#}','{#MAILER_SEARCHING#}',
function() {ldelim}$("input[name=search_words]").focus();{rdelim});
return false;
{rdelim}
if (!$("#search input[type=checkbox]:checked").val()) {ldelim}
jAlert('{#MAILER_ERR_SEACRH#}','{#MAILER_SEARCHING#}',
function() {ldelim}$("#search").focus();{rdelim});
return false;
{rdelim}
{rdelim}
</script>

4
templates/index.php

@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>

64
templates/public_form.tpl

@ -0,0 +1,64 @@
<section id="tabs" style="height:264px">
<h2 class="tab_btn">{#MAILER_SUBSCRIBE#}</h2>
<div class="tab_lay">
{if $action=="subscribe"}
<article>
{$message}
</article><br>
{/if}
{if !$hide_sub}
<form method="post">
<table class="mod_table" style="width:auto">
<tbody>
<tr>
<td>{#MAILER_EMAIL#}*:</td>
<td><input type="text" value="{$smarty.post.email|escape}" name="email" style="width:200px"></td>
</tr>
<tr>
<td>{#MAILER_LNAME#}:</td>
<td><input type="text" value="{$smarty.post.lname|escape}" name="lname" style="width:200px"></td>
</tr>
<tr>
<td>{#MAILER_FNAME#}:</td>
<td><input type="text" value="{$smarty.post.fname|escape}" name="fname" style="width:200px"></td>
</tr>
<tr>
<td>{#MAILER_MNAME#}:</td>
<td><input type="text" value="{$smarty.post.mname|escape}" name="mname" style="width:200px"></td>
</tr>
<tr>
<td class="c" colspan="2"><input type="hidden" name="list_id" value="{$list_id}">
<input type="hidden" name="action" value="subscribe">
<input type="submit" value="{#MAILER_SUBSCRIBE#}"></td>
</tr>
</tbody>
</table>
</form>
{/if}
</div>
<h2 class="tab_btn{if $action=="unsubscribe"} active{/if}">{#MAILER_UNSUBSCRIBE#}</h2>
<div class="tab_lay">
{if $action=="unsubscribe"}
<article>
{$message}
</article><br>
{/if}
{if !$hide_unsub}
<form method="post">
<table class="mod_table" style="width:auto">
<tbody>
<tr>
<td>{#MAILER_EMAIL#}*:</td>
<td><input type="text" value="" name="email" style="width:200px"></td>
</tr>
<tr>
<td class="c" colspan="2"><input type="hidden" name="list_id" value="{$list_id}">
<input type="hidden" name="action" value="unsubscribe">
<input type="submit" value="{#MAILER_UNSUBSCRIBE#}"></td>
</tr>
</tbody>
</table>
</form>
{/if}
</div>
</section>

1
templates/public_result.tpl

@ -0,0 +1 @@
{$message}
Loading…
Cancel
Save