Major Update#2

This commit is contained in:
Ulf Gebhardt 2018-05-29 22:13:36 +02:00
parent 7f436e7fd6
commit 0e253b3957
68 changed files with 1418 additions and 217 deletions

View File

@ -1,4 +1,4 @@
<?php
require_once dirname(__FILE__).'/sql/autoload.inc';
\SYSTEM\autoload::registerFolder(dirname(__FILE__),'SAI');
\SYSTEM\SAI\sai::register('\SAI\saimod_donate');
\SYSTEM\SAI\sai::register('\SAI\saimod_mail');

View File

@ -1,21 +1,76 @@
function init_saimod_donate() {
$('#donate-update').click(function(){
var paten = $('#donate-paten').val();
var value = $('#donate-value').val();
var paten_goal = $('#donate-paten-goal').val();
var value_goal = $('#donate-value-goal').val();
function init_saimod_mail() {}
function init_saimod_mail_overview() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_overview').addClass('active');
};
function init_saimod_mail_contacts() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_contacts').addClass('active');
$('#btn-mail-contact-del').click(function(){
var emails = [];
$('.mail-contact-check:checked').each(function() {
emails.push($(this).attr('email'));
});
if (confirm('Are you sure you want to delete '+emails.length+' Contacts PERMANENTLY?')) {
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'delete_contact',
data: emails
},
success: function(data){
if(data.status){
system.reload();
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
}
});
}
function init_saimod_mail_contact() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_contacts').addClass('active');
$('#btn-contact-update').click(function(){
var email = $('#input-contact-email').val();
var sex = $('#input-contact-sex').val();
var name_first = $('#input-contact-name-first').val();
var name_last = $('#input-contact-name-last').val();
var email_lists = [];
$(".list-check").each(function(){
email_lists.push({id: $(this).attr('list'), subscribed: $(this).prop('checked') === true ? 1 : 0});
});
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_donate',
action: 'update',
paten: paten,
value: value,
paten_goal: paten_goal,
value_goal: value_goal
sai_mod: '.SAI.saimod_mail',
action: 'update_contact',
data: {
email: email,
sex: sex,
name_first: name_first,
name_last: name_last,
email_lists: email_lists
}
},
success: function(data){
if(data.status){
@ -29,4 +84,413 @@ function init_saimod_donate() {
}
});
});
};
}
function init_saimod_mail_contact_new() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_contacts').addClass('active');
$('#btn-contact-new-insert').click(function(){
var email = $('#input-contact-new-email').val();
var sex = $('#input-contact-new-sex').val();
var name_first = $('#input-contact-new-name-first').val();
var name_last = $('#input-contact-new-name-last').val();
var email_lists = [];
$(".list-check").each(function(){
email_lists.push({id: $(this).attr('list'), subscribed: $(this).prop('checked') === true ? 1 : 0});
});
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'insert_contact',
data: {
email: email,
sex: sex,
name_first: name_first,
name_last: name_last,
email_lists: email_lists
}
},
success: function(data){
if(data.status){
system.load('mail(contact);email.'+email);
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
});
}
function init_saimod_mail_lists() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_lists').addClass('active');
$('#btn-mail-list-del').click(function(){
var lists = [];
$('.mail-list-check:checked').each(function() {
lists.push($(this).attr('list'));
});
if (confirm('Are you sure you want to delete '+lists.length+' Lists PERMANENTLY?')) {
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'delete_list',
data: lists
},
success: function(data){
if(data.status){
system.reload();
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
}
});
}
function init_saimod_mail_list() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_lists').addClass('active');
$('#btn-list-update').click(function(){
var id = $('#input-list-id').val();
var name = $('#input-list-name').val();
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'update_list',
data: {
id: id,
name: name
}
},
success: function(data){
if(data.status){
system.reload();
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
});
}
function init_saimod_mail_list_new() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_lists').addClass('active');
$('#btn-list-new-insert').click(function(){
var name = $('#input-list-new-name').val();
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'insert_list',
data: {
name: name
}
},
success: function(data){
if(data.status){
system.load('mail(lists)');
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
});
}
function init_saimod_mail_emails() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_emails').addClass('active');
$('#btn-mail-email-del').click(function(){
var emails = [];
$('.mail-email-check:checked').each(function() {
emails.push($(this).attr('email'));
});
if (confirm('Are you sure you want to delete '+emails.length+' EMails PERMANENTLY?')) {
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'delete_email',
data: emails
},
success: function(data){
if(data.status){
system.reload();
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
}
});
}
function init_saimod_mail_email() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_emails').addClass('active');
$('#btn-email-update').click(function(){
var id = $('#input-email-id').val();
var sender = $('#input-email-sender').val();
var name = $('#input-email-name').val();
var subject = $('#input-email-subject').val();
var text_template = $('#select-email-text-template').val();
var html_template = $('#select-email-html-template').val();
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'update_email',
data: {
id: id,
sender: sender,
name: name,
subject: subject,
text_template: text_template ? text_template : null,
html_template: html_template ? html_template : null
}
},
success: function(data){
if(data.status){
system.reload();
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
});
$('.btn-email-send').click(function(){
var email = $(this).attr('email');
var list = $(this).attr('list');
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'send_email',
data: {
email: email,
list: list
}
},
success: function(data){
if(data.status){
alert('Sent EMails');
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
});
}
function init_saimod_mail_email_new() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_emails').addClass('active');
$('#btn-email-new-insert').click(function(){
var name = $('#input-email-new-name').val();
var sender = $('#input-email-new-sender').val();
var subject = $('#input-email-new-subject').val();
var text_template = $('#select-email-new-text-template').val();
var html_template = $('#select-email-new-html-template').val();
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'insert_email',
data: {
name: name,
sender: sender,
subject: subject,
text_template: text_template,
html_template: html_template
}
},
success: function(data){
if(data.status){
system.load('mail(emails)');
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
});
}
function init_saimod_mail_templates() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_templates').addClass('active');
$('#btn-mail-template-del').click(function(){
var templates = [];
$('.mail-template-check:checked').each(function() {
templates.push($(this).attr('template'));
});
if (confirm('Are you sure you want to delete '+templates.length+' Templates PERMANENTLY?')) {
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'delete_template',
data: templates
},
success: function(data){
if(data.status){
system.reload();
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
}
});
}
function init_saimod_mail_template() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_templates').addClass('active');
$('#btn-template-update').click(function(){
var id = $('#input-template-id').val();
var type = $('#input-template-type').val();
var name = $('#input-template-name').val();
var value = $('#input-template-value').val();
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'update_template',
data: {
id: id,
type: type,
name: name,
value: value
}
},
success: function(data){
if(data.status){
system.reload();
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
});
}
function init_saimod_mail_template_new() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
$('#menu_mail_templates').addClass('active');
$('#btn-template-new-insert').click(function(){
var type = $('#input-template-new-type').val();
var name = $('#input-template-new-name').val();
var value = $('#input-template-new-value').val();
$.ajax({
async: true,
url: this.endpoint,
type: 'GET',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_mail',
action: 'insert_template',
data: {
type: type,
name: name,
value: value
}
},
success: function(data){
if(data.status){
system.load('mail(templates)');
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
});
}

View File

@ -1,28 +1,360 @@
<?php
namespace SAI;
class saimod_donate extends \SYSTEM\SAI\sai_module{
public static function sai_mod__SAI_saimod_donate(){
$vars = \SYSTEM\PAGE\text::tag('donation');
$vars['donate_box'] = \default_donate::donate_box();
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_donate/tpl/saimod_donate.tpl'))->SERVERPATH(),$vars);}
class saimod_mail extends \SYSTEM\SAI\sai_module{
public static function sai_mod__SAI_saimod_donate_action_update($paten,$value,$paten_goal,$value_goal){
\SYSTEM\PAGE\text::save('donation_paten', 'donation_paten', 'deDE', ['donation'], $paten);
\SYSTEM\PAGE\text::save('donation_value', 'donation_value', 'deDE', ['donation'], $value);
\SYSTEM\PAGE\text::save('donation_paten_goal', 'donation_paten_goal', 'deDE', ['donation'], $paten_goal);
\SYSTEM\PAGE\text::save('donation_value_goal', 'donation_value_goal', 'deDE', ['donation'], $value_goal);
\SYSTEM\PAGE\text::save('donation_date', 'donation_date', 'deDE', ['donation'], date('d.m.Y * H:i').' Uhr');
const EMAIL_LIST_TEST = 1;
const EMAIL_LIST_NEWSLETTER = 2;
const EMAIL_LIST_PROTOTYPE = 3;
const EMAIL_WEBSITE_CONTACT = 10;
const EMAIL_WEBSITE_BUGREPORT = 11;
const EMAIL_WEBSITE_VOLUNTEER = 12;
const EMAIL_NEWSLETTER_SUBSCRIBE = 20;
const EMAIL_PROTOTYPE_REGISTER = 30;
const EMAIL_PROTOTYPE_ACCESS_ANDROID= 31;
const EMAIL_PROTOTYPE_ACCESS_IOS = 32;
public static function subscribe($email,$list){
return \SQL\SUBSCRIBE::QI(array($email,$list));
}
public static function contact($email,$name_first=null,$name_last=null){
if($name_first != null || $name_last != null){
return \SQL\CONTACT_INSERT_EMAIL_NAME::QI(array($email,$name_first,$name_last));
} else {
return \SQL\CONTACT_INSERT_EMAIL::QI(array($email));
}
}
public static function send_mail($email,$email_id,$list=null,$resend=false,$data=[]){
\LIB\lib_mail_cannon::php();
// Prevent Double send
if(!$resend && $list != self::EMAIL_LIST_TEST){
$sent = \SQL\EMAIL_SENT_IS_SENT::Q1(array($email_id,$email));
if($sent['count'] > 0){
return false;}
}
$contact_data = \SQL\CONTACT_SELECT::Q1(array($email));
$email_data = \SQL\EMAIL_SELECT::Q1(array($email_id));
$template_text = \SQL\EMAIL_TEMPLATE_SELECT::Q1(array($email_data['template_text']));
$template_html = \SQL\EMAIL_TEMPLATE_SELECT::Q1(array($email_data['template_html']));
//TODO
//$smtp = \SYSTEM\CONFIG\config::get(\config_ids::DEMOCRACY_EMAIL_PROTOTYPING);
$smtp = \SYSTEM\CONFIG\config::get(\config_ids::DEMOCRACY_EMAIL_CONTACT);
$to = $email;
//TODO
$replacements = [];
$replacements['emoji_mobile'] = '📱';
foreach($data as $k => $v){
$replacements['data_'.$k] = $v;}
if($list){
$replacements['unsubscribe_link'] = \SYSTEM\CONFIG\config::get(\SYSTEM\CONFIG\config_ids::SYS_CONFIG_PATH_BASEURL).
'#!unsubscribe;token.'.
\SYSTEM\TOKEN\token::request( 'token_democracy_unsubscribe',
array( 'email' => $email,'list' => $list),
true);
}
$from = \SYSTEM\PAGE\replace::replace($email_data['sender'],$replacements);
$subject = \SYSTEM\PAGE\replace::replace($email_data['subject'],$replacements);
$text = \SYSTEM\PAGE\replace::replace($template_text['value'], $replacements);
$html = \SYSTEM\PAGE\replace::replace($template_html['value'], $replacements);
//TODO
$images = ["democracy_logo" => (new \PAPI('img/logo.png'))->SERVERPATH()];
//TODO
$attachments = [];
\mailcannon::send( $smtp,
$from, $to,
$subject, $text, $html,
$images, $attachments);
if($list != self::EMAIL_LIST_TEST){
\SQL\EMAIL_SENT_INSERT::QI(array($email_id,$email));}
return true;
}
public static function send_list($email_id,$list){
$list_handle = \SQL\CONTACT_EMAIL_LIST_SELECT_LIST::QQ(array($list));
while($row = $list_handle->next()){
\set_time_limit(30);
self::send_mail($row['email'], $email_id, $list);
}
return \SYSTEM\LOG\JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail(){
$vars = array();
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_overview(){
$vars = array();
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_overview.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_contacts($list=null){
$vars = array();
//menu
$vars['menu'] = '';
$vars['active_all'] = $list ? '' : 'active';
$res = \SQL\EMAIL_LISTS_SELECT::QQ();
while($row = $res->next()){
$row['active'] = $row['id'] == $list ? 'active' : '';
$vars['menu'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contacts_menu.tpl'))->SERVERPATH(),$row);
}
//data
$vars['data'] = '';
if($list){
$res = \SQL\CONTACTS_SELECT_LIST::QQ(array($list));
} else {
$res = \SQL\CONTACTS_SELECT::QQ();
}
while($row = $res->next()){
$vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contacts_tr.tpl'))->SERVERPATH(),$row);
}
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contacts.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_contact($email){
$vars = \SQL\CONTACT_SELECT::Q1(array($email));
//data
$vars['data'] = '';
$res = \SQL\EMAIL_LISTS_SELECT_CONTACT::QQ(array($email));
while($row = $res->next()){
$row['checked'] = $row['list'] ? 'checked' : '';
$vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contact_tr.tpl'))->SERVERPATH(),$row);
}
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contact.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_contact_new(){
$vars = array();
//data
$vars['data'] = '';
$res = \SQL\EMAIL_LISTS_SELECT::QQ();
while($row = $res->next()){
$vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contact_new_tr.tpl'))->SERVERPATH(),$row);
}
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contact_new.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_update_contact($data){
\SQL\CONTACT_UPDATE::QI(array($data['sex'],$data['name_first'],$data['name_last'],$data['email']));
foreach($data['email_lists'] as $list){
if($list['subscribed']){
self::subscribe($data['email'],$list['id']);
} else {
\SQL\UNSUBSCRIBE::QI(array($data['email'],$list['id']));
}
}
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_insert_contact($data){
if($data['email'] == ''){
throw new \SYSTEM\LOG\ERROR('Please provide an EMail');
}
\SQL\CONTACT_INSERT::QI(array($data['email'],$data['sex'],$data['name_first'],$data['name_last']));
foreach($data['email_lists'] as $list){
if($list['subscribed']){
\SQL\SUBSCRIBE::QI(array($data['email'],$list['id']));
} else {
\SQL\UNSUBSCRIBE::QI(array($data['email'],$list['id']));
}
}
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_delete_contact($data){
foreach($data as $email){
\SQL\CONTACT_DELETE::QI(array($email));
\SQL\CONTACT_EMAIL_LIST_DELETE::QI(array($email));
\SQL\EMAIL_SENT_DELETE::QI(array($email));
}
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_lists(){
$vars = array();
//data
$vars['data'] = '';
$res = \SQL\EMAIL_LISTS_SELECT_COUNT::QQ();
while($row = $res->next()){
$vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_lists_tr.tpl'))->SERVERPATH(),$row);
}
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_lists.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_list($id){
$vars = \SQL\EMAIL_LIST_SELECT::Q1(array($id));
//data
$vars['data'] = '';
$res = \SQL\CONTACT_EMAIL_LIST_CONTACT_SELECT::QQ(array($id));
while($row = $res->next()){
$vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_list_tr.tpl'))->SERVERPATH(),$row);
}
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_list.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_list_new(){
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_list_new.tpl'))->SERVERPATH());
}
public static function sai_mod__SAI_saimod_mail_action_update_list($data){
\SQL\LIST_UPDATE::QI(array($data['name'],$data['id']));
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_insert_list($data){
\SQL\EMAIL_LIST_INSERT::QI(array($data['name']));
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_delete_list($data){
foreach($data as $id){
\SQL\EMAIL_LIST_DELETE::QI(array($id));
\SQL\CONTACT_EMAIL_LIST_DELETE_LIST::QI(array($id));
}
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_emails(){
$vars = array();
//data
$vars['data'] = '';
$res = \SQL\EMAILS_SELECT::QQ();
while($row = $res->next()){
$vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_emails_tr.tpl'))->SERVERPATH(),$row);
}
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_emails.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_email($id){
$vars = \SQL\EMAIL_SELECT::Q1(array($id));
$vars['template_lock'] = $vars['system_lock'] ? 'disabled' : '';
//text template
$vars['text_options'] = '';
$res = \SQL\EMAIL_TEMPLATES_SELECT::QQ(array(0));
while($row = $res->next()){
$row['selected'] = $row['id'] == $vars['template_text'] ? 'selected' : '';
$vars['text_options'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_template_option.tpl'))->SERVERPATH(),$row);
}
//html template
$vars['html_options'] = '';
$res = \SQL\EMAIL_TEMPLATES_SELECT::QQ(array(1));
while($row = $res->next()){
$row['selected'] = $row['id'] == $vars['template_html'] ? 'selected' : '';
$vars['html_options'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_template_option.tpl'))->SERVERPATH(),$row);
}
//send
$vars['send'] = '';
$res = \SQL\EMAIL_LISTS_SELECT::QQ();
while($row = $res->next()){
$row['disabled'] = $row['id'] == self::EMAIL_LIST_TEST ? '' : 'disabled';
$row['btn-color'] = $row['id'] == self::EMAIL_LIST_TEST ? 'success' : 'danger';
$row['email'] = $id;
$vars['send'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_send.tpl'))->SERVERPATH(),$row);
}
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_email_new(){
//text template
$vars['text_options'] = '';
$res = \SQL\EMAIL_TEMPLATES_SELECT::QQ(array(0));
while($row = $res->next()){
$row['selected'] = '';
$vars['text_options'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_template_option.tpl'))->SERVERPATH(),$row);
}
//html template
$vars['html_options'] = '';
$res = \SQL\EMAIL_TEMPLATES_SELECT::QQ(array(1));
while($row = $res->next()){
$row['selected'] = '';
$vars['html_options'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_template_option.tpl'))->SERVERPATH(),$row);
}
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_new.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_send_email($data){
self::send_list($data['email'],$data['list']);
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_update_email($data){
\SQL\EMAIL_UPDATE::QI(array($data['name'],$data['sender'],$data['subject'],$data['text_template'],$data['html_template'],$data['id']));
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_insert_email($data){
\SQL\EMAIL_INSERT::QI(array($data['name'],$data['sender'],$data['subject'],$data['text_template'],$data['html_template']));
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_delete_email($data){
foreach($data as $id){
\SQL\EMAIL_DELETE::QI(array($id));
\SQL\EMAIL_SENT_DELETE_EMAIL::QI(array($id));
}
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_templates($type=0){
$vars = array();
$vars['active_text'] = $type == 0 ? 'active' : '';
$vars['active_html'] = $type == 1 ? 'active' : '';
//data
$vars['data'] = '';
$res = \SQL\EMAIL_TEMPLATES_SELECT::QQ(array($type));
while($row = $res->next()){
$vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_templates_tr.tpl'))->SERVERPATH(),$row);
}
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_templates.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_template($id){
$vars = \SQL\EMAIL_TEMPLATE_SELECT::Q1(array($id));
$vars['selected_text'] = $vars['type'] == 0 ? 'selected' : '';
$vars['selected_html'] = $vars['type'] == 1 ? 'selected' : '';
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_template.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_template_new(){
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_template_new.tpl'))->SERVERPATH());
}
public static function sai_mod__SAI_saimod_mail_action_update_template($data){
\SQL\EMAIL_TEMPLATE_UPDATE::QI(array($data['type'],$data['name'],$data['value'],$data['id']));
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_insert_template($data){
\SQL\EMAIL_TEMPLATE_INSERT::QI(array($data['type'],$data['name'],$data['value']));
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_mail_action_delete_template($data){
foreach($data as $id){
\SQL\EMAIL_TEMPLATE_DELETE::QI(array($id));
}
return \JsonResult::ok();
}
public static function menu(){
return new \SYSTEM\SAI\sai_module_menu( 100,
return new \SYSTEM\SAI\sai_module_menu( 101,
\SYSTEM\SAI\sai_module_menu::POISITION_LEFT,
\SYSTEM\SAI\sai_module_menu::DIVIDER_LEFT,
\SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_donate/tpl/menu.tpl'))->SERVERPATH()));}
\SYSTEM\SAI\sai_module_menu::DIVIDER_NONE,
\SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/menu.tpl'))->SERVERPATH()));}
public static function right_public(){return false;}
public static function right_right(){return \SYSTEM\SECURITY\security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI);}
public static function js(){
return array(new \PSAI('saimod_donate/js/saimod_donate.js'));}
return array(new \PSAI('saimod_mail/js/saimod_mail.js'));}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACTS_SELECT extends \SYSTEM\DB\QQ {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT * FROM contact;';
}
}

View File

@ -1,9 +1,13 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACTS_SELECT_LIST extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT * FROM contact
LEFT JOIN contact_email_list ON contact.email = contact_email_list.email
WHERE list = ?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACT_DELETE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'DELETE FROM contact WHERE email=?;';
}
}

View File

@ -1,9 +1,11 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACT_EMAIL_LIST_CONTACT_SELECT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT * FROM contact_email_list
LEFT JOIN contact ON contact_email_list.email = contact.email
WHERE list = ?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACT_EMAIL_LIST_DELETE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'DELETE FROM contact_email_list WHERE email=?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACT_EMAIL_LIST_DELETE_LIST extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'DELETE FROM contact_email_list WHERE list=?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACT_EMAIL_LIST_SELECT_LIST extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT email FROM contact_email_list WHERE list = ?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACT_INSERT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'INSERT IGNORE INTO contact (email,sex,name_first,name_last)VALUES(?,?,?,?);';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACT_INSERT_EMAIL extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'INSERT IGNORE INTO contact (email)VALUES(?);';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACT_INSERT_EMAIL_NAME extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'REPLACE INTO contact (email,name_first,name_last)VALUES(?,?,?);';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACT_SELECT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT * FROM contact WHERE email = ?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class CONTACT_UPDATE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'UPDATE contact SET sex=?, name_first=?, name_last=? WHERE email=?;';
}
}

View File

@ -1,9 +1,10 @@
<?php
namespace SQL;
class DATA_SAIMOD_DONATE extends \SYSTEM\DB\QI {
class DATA_SAIMOD_MAIL extends \SYSTEM\DB\QI {
public static function get_class(){return \get_class();}
public static function files_mysql(){
return array( (new \PSAI('/saimod_donate/sql/mysql/system_page.sql'))->SERVERPATH(),
(new \PSAI('/saimod_donate/sql/mysql/system_api.sql'))->SERVERPATH());
return array( (new \PSAI('/saimod_mail/sql/mysql/system_page.sql'))->SERVERPATH(),
(new \PSAI('/saimod_mail/sql/mysql/system_api.sql'))->SERVERPATH(),
(new \PSAI('/saimod_mail/sql/mysql/system_mails.sql'))->SERVERPATH());
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAILS_SELECT extends \SYSTEM\DB\QQ {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT * FROM email;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_DELETE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'DELETE FROM email WHERE id=?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_INSERT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'INSERT INTO email (name,sender,subject,template_text,template_html)VALUES(?,?,?,?,?);';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_LISTS_SELECT extends \SYSTEM\DB\QQ {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT * FROM email_list;';
}
}

View File

@ -1,9 +1,11 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_LISTS_SELECT_CONTACT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT * FROM email_list
LEFT JOIN (SELECT * FROM contact_email_list WHERE email = ?) cel
ON email_list.id = cel.list;';
}
}

View File

@ -1,9 +1,11 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_LISTS_SELECT_COUNT extends \SYSTEM\DB\QQ {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT email_list.*, count(email) as count FROM email_list
LEFT JOIN contact_email_list ON email_list.id = contact_email_list.list
GROUP BY id;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_LIST_DELETE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'DELETE FROM email_list WHERE id=? AND system_lock IS NULL;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_LIST_INSERT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'INSERT IGNORE INTO email_list (name)VALUES(?);';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_LIST_SELECT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT * FROM email_list WHERE id=?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_SELECT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT * FROM email WHERE id = ?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_SENT_DELETE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'DELETE FROM email_sent WHERE email=?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_SENT_DELETE_EMAIL extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'DELETE FROM email_sent WHERE id=?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_SENT_INSERT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'REPLACE INTO email_sent (id,email)VALUES(?,?);';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_SENT_IS_SENT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT count(*) as count FROM email_sent WHERE id = ? AND email = ?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_TEMPLATES_SELECT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT * FROM email_template WHERE type = ?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_TEMPLATE_DELETE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'DELETE FROM email_template WHERE id=? AND system_lock IS NULL;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_TEMPLATE_INSERT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'INSERT IGNORE INTO email_template (type,name,value)VALUES(?,?,?);';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_TEMPLATE_SELECT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'SELECT * FROM email_template WHERE id = ?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_TEMPLATE_UPDATE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'UPDATE email_template SET type=?, name=?, value=? WHERE id=?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class EMAIL_UPDATE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'UPDATE email SET name=?, sender=?, subject=?, template_text=?, template_html=? WHERE id=?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class LIST_UPDATE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'UPDATE email_list SET name=? WHERE id=?;';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class SUBSCRIBE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'INSERT IGNORE INTO contact_email_list (email,list)VALUES(?,?);';
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace SQL;
class BETA_CODES_COUNT extends \SYSTEM\DB\QQ {
class UNSUBSCRIBE extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(code) as count FROM beta_code;';
'DELETE FROM contact_email_list WHERE email = ? AND list = ?;';
}
}

View File

@ -1,3 +1,3 @@
<?php
\SYSTEM\autoload::registerFolder(dirname(__FILE__),'SQL');
\SYSTEM\SQL\setup::register('SQL\\DATA_SAIMOD_DONATE');
\SYSTEM\SQL\setup::register('SQL\\DATA_SAIMOD_MAIL');

View File

@ -1,5 +1,26 @@
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (8000, 42, 0, 0, '_SAI_saimod_donate', 'action', NULL);
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (8010, 42, 2, 8000, 'update', 'paten', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (8011, 42, 2, 8000, 'update', 'value', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (8012, 42, 2, 8000, 'update', 'paten_goal', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (8013, 42, 2, 8000, 'update', 'value_goal', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9000, 42, 0, 0, '_SAI_saimod_mail', 'action', NULL);
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9010, 42, 2, 9000, 'send', 'email', 'UINT0');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9011, 42, 2, 9000, 'send', 'list', 'UINT0');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9020, 42, 3, 9000, 'contacts', 'list', 'UINT0');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9030, 42, 2, 9000, 'contact', 'email', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9035, 42, 2, 9000, 'update_contact', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9037, 42, 2, 9000, 'insert_contact', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9039, 42, 2, 9000, 'delete_contact', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9040, 42, 2, 9000, 'email', 'id', 'UINT0');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9043, 42, 2, 9000, 'send_email', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9045, 42, 2, 9000, 'update_email', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9047, 42, 2, 9000, 'insert_email', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9049, 42, 2, 9000, 'delete_email', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9050, 42, 3, 9000, 'list', 'id', 'UINT0');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9055, 42, 2, 9000, 'update_list', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9057, 42, 2, 9000, 'insert_list', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9059, 42, 2, 9000, 'delete_list', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9060, 42, 3, 9000, 'templates', 'type', 'UINT0');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9062, 42, 2, 9000, 'template', 'id', 'UINT0');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9065, 42, 2, 9000, 'update_template', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9067, 42, 2, 9000, 'insert_template', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9069, 42, 2, 9000, 'delete_template', 'data', 'JSON');

View File

@ -1,5 +1,31 @@
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (8000, 42, 0, 0, '_SAI_saimod_donate', 'action', NULL);
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (8010, 42, 2, 8000, 'update', 'paten', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (8011, 42, 2, 8000, 'update', 'value', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (8012, 42, 2, 8000, 'update', 'paten_goal', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (8013, 42, 2, 8000, 'update', 'value_goal', 'STRING');
INSERT IGNORE INTO email_list (`id`,`name`,`system_lock`) VALUES (1,'Test Liste',1);
INSERT IGNORE INTO email_list (`id`,`name`,`system_lock`) VALUES (2,'Newsletter',1);
INSERT IGNORE INTO email_list (`id`,`name`,`system_lock`) VALUES (3,'Prototype',1);
INSERT IGNORE INTO email (`id`,`name`,`sender`,`subject`,`template_text`,`template_html`,`system_lock`) VALUES (10,'Website Contact','${data_vorname} ${data_nachname} <${data_email}>','${emoji_mobile} DEMOCRACY Website: ${data_type} from ${data_email}',10,11,1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (10,0,'Website Contact Text','Eine Nachricht ist über die Website eingegangen:\n\n${data_json}\n\nAchtung: Diese EMail ist die einzige Kopie dieser Daten',1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (11,1,'Website Contact HTML','<style>\n table, th, td {\n border: 1px solid black;\n border-collapse: collapse;\n }\n</style>\nEine Nachricht ist über die Website eingegangen:<br>\n<br>\n<h3>Type: ${data_type}</h3>\n<table>\n <tr>\n <th>EMail</th>\n <td><a href=\"mailto:${data_email}\">${data_email}<a></td>\n </tr>\n <tr>\n <th>Name</th>\n <td>${data_vorname} ${data_nachname}</td>\n </tr>\n <tr>\n <th>Type</th>\n <td>${data_type}</td>\n </tr>\n <tr>\n <th>Text</th>\n <td><pre>${data_text}</pre></td>\n </tr>\n</table>\n<h3>Raw Data:</h3>\n<pre>${data_json}</pre>\n<br>\n<div class=\"footer\" style=\"margin-top: 3em; padding-top: 1em; border-top-width: 2px; border-top-color: #4494d3; border-top-style: solid;\">\n <p style=\"max-width: 35rem;\">\n Wir sind gespannt, welche großartigen Möglichkeiten in der Zukunft noch für unser Projekt offen stehen und verbleiben mit einem Lächeln und ganz herzlichen Grüßen,\n </p> \n <p style=\"max-width: 35rem;\">\n Ihr TEAM DEMOCRACY\n </p>\n <img class=\"logo\" alt=\"DEMOCRACY Logo\" src=\"cid:democracy_logo\" style=\"height: auto; line-height: 100%; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; border: 0 none;\" />\n <p style=\"max-width: 35rem;\">\n DEMOCRACY Deutschland e.V.<br />\n mobil +49 176 470 40 213<br />\n <a href=\"mailto:contact@democracy-deutschland.de\" style=\"color: #4f81bd; font-weight: bold;\">\n contact@democracy-deutschland.de\n </a><br />\n <a href=\"https://www.democracy-deutschland.de\" style=\"color: #4f81bd; font-weight: bold;\">\n https://www.democracy-deutschland.de\n </a><br />\n <a href=\"https://github.com/demokratie-live/\" style=\"color: #4f81bd; font-weight: bold;\">\n https://github.com/demokratie-live\n </a>\n </p>\n </div>\n',1);
INSERT IGNORE INTO email (`id`,`name`,`sender`,`subject`,`template_text`,`template_html`,`system_lock`) VALUES (11,'Website Bugreport','${data_name} <${data_email}>','${emoji_mobile} DEMOCRACY Website: ${data_type} from ${data_email}',12,13,1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (12,0,'Website Bugreport Text','Eine Nachricht ist über die Website eingegangen:\n\n${data_json}\n\nAchtung: Diese EMail ist die einzige Kopie dieser Daten',1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (13,1,'Website Bugreport HTML','<style>\n table, th, td {\n border: 1px solid black;\n border-collapse: collapse;\n }\n</style>\nEine Nachricht ist über die Website eingegangen:<br>\n<br>\n<h3>Type: ${data_type}</h3>\n<table>\n <tr>\n <th>EMail</th>\n <td><a href=\"mailto:${data_email}\">${data_email}<a></td>\n </tr>\n <tr>\n <th>Name</th>\n <td>${data_name}</td>\n </tr>\n <tr>\n <th>Type</th>\n <td>${data_type}</td>\n </tr>\n <tr>\n <th>Text</th>\n <td><pre>${data_text}</pre></td>\n </tr>\n</table>\n<h3>Raw Data:</h3>\n<pre>${data_json}</pre>\n<br>\n<div class=\"footer\" style=\"margin-top: 3em; padding-top: 1em; border-top-width: 2px; border-top-color: #4494d3; border-top-style: solid;\">\n <p style=\"max-width: 35rem;\">\n Wir sind gespannt, welche großartigen Möglichkeiten in der Zukunft noch für unser Projekt offen stehen und verbleiben mit einem Lächeln und ganz herzlichen Grüßen,\n </p> \n <p style=\"max-width: 35rem;\">\n Ihr TEAM DEMOCRACY\n </p>\n <img class=\"logo\" alt=\"DEMOCRACY Logo\" src=\"cid:democracy_logo\" style=\"height: auto; line-height: 100%; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; border: 0 none;\" />\n <p style=\"max-width: 35rem;\">\n DEMOCRACY Deutschland e.V.<br />\n mobil +49 176 470 40 213<br />\n <a href=\"mailto:contact@democracy-deutschland.de\" style=\"color: #4f81bd; font-weight: bold;\">\n contact@democracy-deutschland.de\n </a><br />\n <a href=\"https://www.democracy-deutschland.de\" style=\"color: #4f81bd; font-weight: bold;\">\n https://www.democracy-deutschland.de\n </a><br />\n <a href=\"https://github.com/demokratie-live/\" style=\"color: #4f81bd; font-weight: bold;\">\n https://github.com/demokratie-live\n </a>\n </p>\n </div>\n',1);
INSERT IGNORE INTO email (`id`,`name`,`sender`,`subject`,`template_text`,`template_html`,`system_lock`) VALUES (12,'Website Volunteer','${data_name} <${data_email}>','${emoji_mobile} DEMOCRACY Website: ${data_type} from ${data_email}',14,15,1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (14,0,'Website Volunteer Text','Eine Nachricht ist über die Website eingegangen:\n\n${data_json}\n\nAchtung: Diese EMail ist die einzige Kopie dieser Daten',1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (15,1,'Website Volunteer HTML','<style>\n table, th, td {\n border: 1px solid black;\n border-collapse: collapse;\n }\n</style>\nEine Nachricht ist über die Website eingegangen:<br>\n<br>\n<h3>Type: ${data_type}</h3>\n<table>\n <tr>\n <th>EMail</th>\n <td><a href=\"mailto:${data_email}\">${data_email}<a></td>\n </tr>\n <tr>\n <th>Name</th>\n <td>${data_name}</td>\n </tr>\n <tr>\n <th>Type</th>\n <td>${data_type}</td>\n </tr>\n <tr>\n <th>Text</th>\n <td><pre>${data_text}</pre></td>\n </tr>\n</table>\n<h3>Raw Data:</h3>\n<pre>${data_json}</pre>\n<br>\n<div class=\"footer\" style=\"margin-top: 3em; padding-top: 1em; border-top-width: 2px; border-top-color: #4494d3; border-top-style: solid;\">\n <p style=\"max-width: 35rem;\">\n Wir sind gespannt, welche großartigen Möglichkeiten in der Zukunft noch für unser Projekt offen stehen und verbleiben mit einem Lächeln und ganz herzlichen Grüßen,\n </p> \n <p style=\"max-width: 35rem;\">\n Ihr TEAM DEMOCRACY\n </p>\n <img class=\"logo\" alt=\"DEMOCRACY Logo\" src=\"cid:democracy_logo\" style=\"height: auto; line-height: 100%; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; border: 0 none;\" />\n <p style=\"max-width: 35rem;\">\n DEMOCRACY Deutschland e.V.<br />\n mobil +49 176 470 40 213<br />\n <a href=\"mailto:contact@democracy-deutschland.de\" style=\"color: #4f81bd; font-weight: bold;\">\n contact@democracy-deutschland.de\n </a><br />\n <a href=\"https://www.democracy-deutschland.de\" style=\"color: #4f81bd; font-weight: bold;\">\n https://www.democracy-deutschland.de\n </a><br />\n <a href=\"https://github.com/demokratie-live/\" style=\"color: #4f81bd; font-weight: bold;\">\n https://github.com/demokratie-live\n </a>\n </p>\n </div>\n',1);
INSERT IGNORE INTO email (`id`,`name`,`sender`,`subject`,`template_text`,`template_html`,`system_lock`) VALUES (20,'Newsletter Subscribe','DEMOCRACY Deutschland e.V. <contact@democracy-deutschland.de>','${emoji_mobile} DEMOCRACY: Deine Newsletter-Anmeldung',20,21,1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (20,0,'Newsletter Subscribe Text','Hallo liebe/r Interessierte/r,\n\nSie haben sich für unseren Newsletter eingetragen.\n\nUm sich wieder abzumelden folgen Sie bitte folgendem Link:\n${unsubscribe_link}\n\nHerzliche Grüße\nTeam DEMOCRACY',1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (21,1,'Newsletter Subscribe HTML','Hallo liebe/r Interessierte/r,<br>\n<br>\nSie haben sich für unseren Newsletter eingetragen.<br>\n<br>\nUm sich wieder abzumelden folgen Sie bitte diesem <a href=\"${unsubscribe_link}\">Abmelde-Link</a><br>\n<br>\nHerzliche Grüße<br>\nTeam DEMOCRACY',1);
INSERT IGNORE INTO email (`id`,`name`,`sender`,`subject`,`template_text`,`template_html`,`system_lock`) VALUES (30,'Prototype Register','Prototyp | DEMOCRACY <prototyping@democracy-deutschland.de>','${emoji_mobile} DEMOCRACY: Deine Prototyp Bewerbung ist eingegangen!',30,31,1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (30,0,'Prototype Register Text','Hallo liebe/r DEMOCRACY-Interessierte/r,\n\nwir freuen uns sehr über Ihr Interesse am Prototyp der DEMOCRACY App und bemühen uns, Sie so schnell wie möglich in die DEMOCRACY Beta einzuladen. Derzeit befinden Sie sich auf der Warteliste. Bitte haben Sie noch einen Moment Geduld, bis wir Sie auf die Testliste des jeweiligen Stores setzen dies kann im Regelfall bis zu 2 Tage dauern. Wir werden Sie wieder kontaktieren, sobald Sie Zugang zur App haben.\n\nDemokratische Grüße\n\nIhr Team DEMOCRACY\n\n\nDEMOCRACY Deutschland e.V.\nIBAN: DE33 5003 1000 1049 7560 00\nBIC: TRODDEF1\nmobil +49 176 470 40 213',1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (31,1,'Prototype Register HTML','Hallo liebe/r DEMOCRACY-Interessierte/r,<br>\n<br>\nwir freuen uns sehr über Ihr Interesse am Prototyp der DEMOCRACY App und bemühen uns, Sie so schnell wie möglich in die DEMOCRACY Beta einzuladen. <strong>Derzeit befinden Sie sich auf der Warteliste</strong>. Bitte haben Sie noch einen Moment Geduld, bis wir Sie auf die Testliste des jeweiligen Stores setzen dies kann im Regelfall bis zu 2 Tage dauern. <strong>Wir werden Sie wieder kontaktieren, sobald Sie Zugang zur App haben</strong>.<br>\n<br>\nDemokratische Grüße<br>\n<br>\nIhr Team DEMOCRACY<br>\n<br><br>\n<span><img src=\"cid:democracy_logo\"></span>\n<br><br><br>\nDEMOCRACY Deutschland e.V.<br>\nIBAN: DE33 5003 1000 1049 7560 00<br>\nBIC: TRODDEF1<br>\nmobil +49 176 470 40 213',1);
INSERT IGNORE INTO email (`id`,`name`,`sender`,`subject`,`template_text`,`template_html`,`system_lock`) VALUES (31,'Prototype Access Android','Prototyp | DEMOCRACY <prototyping@democracy-deutschland.de>','${emoji_mobile} DEMOCRACY: Dein Prototyp Zugang',32,33,1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (32,0,'Prototype Access Android Text','Hallo lieber Prototyp-Tester,\n\nim folgenden erklären wir Dir, wie Du zur Beta-Version von DEMOCRACY gelangst.\n\nAnleitung für Android\n* Öffne diesen Link mit Deinem Handy: https://play.google.com/apps/testing/de.democracydeutschland.app.beta\n* Drücke den Button ganz unten auf dem es heißt: Tester werden\n* Eine neue Ansicht lädt, drücke nun die App DEMOCRACY bei Google Play herunterladen.\n* Du wirst in den Google Play Store weitergeleitet und kannst die App dort herunter laden\n* Öffne DEMOCRACY und teste wie Du Bugs korrekt reportest, entnehme bitte der Anleitung zum Bug-Report\n* Solltest Du beim Öffnen des Links von Schritt 1 eine Fehlermeldung bekommen, in der es heißt App nicht verfügbar, hast Du Dich entweder mit einer anderen als uns zur Verfügung gestellten Email-Adresse angemeldet oder uns die falsche Email-Adresse zur Verfügung gestellt. Gerne kannst Du uns mit einer Mail an prototyping@democracy-deutschland.de deine richtige Adresse zur Verfügung stellen.\n\nAnleitung zum Bug-Report\n* Ein qualifiziertes Feedback ist notwendig, um Fehler zu beheben. Deshalb gib uns möglichst viele Informationen zu den von Dir gefunden Fehlern oder Verbesserungsvorschlägen.\n* Wie Du das machst?\n* Zunächst: Mach aus der unten stehenden Liste bitte nur das, was Dir zumutbar erscheint. Im Optimalfall:\n \n* Mach einen Screenshot (in Android: An- und Leiser-Taste gleichzeitig drücken oder An-Taste drücken und Screenshot auswählen)\n* Markiere die fehlerhaften Bereiche in dem Screenshot (z.B Roter Kreis um den Fehler)\n* Beschreib das Problem möglichst genau in wenigen Sätzen\n* Gib eine Schritt-für-Schritt-Anleitung, wie es zu dem Problem gekommen ist, und wenn es Dir für notwendig erscheint\n* Klassifiziere das Problem in einen Fehlerbericht und/oder einen Verbesserungsvorschlag\n* Schicke uns den (bearbeiteten) Screenshot, die Fehlerbeschreibung sowie Deine Plattform (iOS/Android) und Deine Gerätebezeichnung (z.B. iPhone SE) per E-Mail an prototyping@democracy-deutschland.de oder optional\n* Erstelle ein Issue für das Problem und lade den Screenshot auf Github hoch https://github.com/demokratie-live/democracy-client/issues\n\n\nDEMOCRACY Deutschland e.V.\nIBAN: DE33 5003 1000 1049 7560 00\nBIC: TRODDEF1\nmobil +49 176 470 40 213',1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (33,1,'Prototype Access Android HTML','<html>\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n </head>\n <body style=\"font-family: \'Helvetica Neue\'; color: rgb(69, 69, 69); font-size: medium;\">\n <div>\n <span>Hallo lieber </span>\n <span style=\"font-weight: 700; \">Prototyp-Tester,</span>\n </div>\n <br>\n <div>\n <span>im folgenden erklären wir Dir, wie Du <b>zur Beta-Version von DEMOCRACY </b>gelangst.</span>\n </div>\n <br>\n <br>\n <span style=\"text-decoration: underline;\"><b>Anleitung für Android</b></span>\n <ol style=\"line-height: 2;\">\n <li>Öffne diesen Link mit Deinem Handy: <a href=\"https://play.google.com/apps/testing/de.democracydeutschland.app.beta\">https://play.google.com/apps/testing/de.democracydeutschland.app.beta</a></li>\n <li>Drücke den Button ganz unten auf dem es heißt: <i>Tester werden</i></li>\n <li>Eine neue Ansicht lädt, drücke nun die <i>App DEMOCRACY bei Google Play herunterladen</i>.</li>\n <li>Du wirst in den Google Play Store weitergeleitet und kannst die App dort herunter laden</li>\n <li>Öffne DEMOCRACY und teste wie Du Bugs korrekt reportest, entnehme bitte der Anleitung zum Bug-Report</li>\n <li>Solltest Du beim Öffnen des Links von Schritt 1 eine Fehlermeldung bekommen, in der es heißt <i>App nicht verfügbar</i>, hast Du Dich entweder mit einer anderen als uns zur Verfügung gestellten Email-Adresse angemeldet oder uns die falsche Email-Adresse zur Verfügung gestellt. Gerne kannst Du uns mit einer Mail an <a href=\"mailto:prototyping@democracy-deutschland.de\">prototyping@democracy-deutschland.de</a> deine richtige Adresse zur Verfügung stellen.</li>\n </ol>\n <div>\n <span><br></span>\n </div>\n <div>\n <span style=\"text-decoration: underline;\"><b>Anleitung zum Bug-Report</b></span>\n <span><br><br></span>\n </div>\n <div>\n <span>Ein qualifiziertes Feedback ist notwendig, um Fehler zu beheben. Deshalb gib uns möglichst viele Informationen zu den von Dir gefunden Fehlern oder Verbesserungsvorschlägen.</span>\n </div>\n <br>\n <div>\n <span>Wie Du das machst?</span>\n </div>\n <div>\n <span>Zunächst: Mach aus der unten stehenden Liste bitte nur das, was Dir zumutbar erscheint. Im Optimalfall:</span>\n </div>\n <br>\n <ol style=\"line-height: 2;\">\n <li>Mach einen Screenshot (in Android: An- und Leiser-Taste gleichzeitig drücken oder An-Taste drücken und Screenshot auswählen)</li>\n <li>Markiere die fehlerhaften Bereiche in dem Screenshot (z.B Roter Kreis um den Fehler)</li>\n <li>Beschreib das Problem möglichst genau in wenigen Sätzen</li>\n <li>Gib eine Schritt-für-Schritt-Anleitung, wie es zu dem Problem gekommen ist, und wenn es Dir für notwendig erscheint</li>\n <li>Klassifiziere das Problem in einen Fehlerbericht und/oder einen Verbesserungsvorschlag</li>\n <li>Schicke uns den (bearbeiteten) Screenshot, die Fehlerbeschreibung sowie Deine Plattform (iOS/Android) und Deine Gerätebezeichnung (z.B. iPhone SE) per E-Mail an <a href=\"mailto:prototyping@democracy-deutschland.de\">prototyping@democracy-deutschland.de</a> oder optional</li>\n <li>Erstelle ein Issue für das Problem und lade den Screenshot auf Github hoch <a href=\"https://github.com/demokratie-live/democracy-client/issues\">https://github.com/demokratie-live/democracy-client/issues</a></li>\n </ol>\n <br>\n <div>\n <span><img src=\"cid:democracy_logo\"></span>\n <br><br><br>\n <div>DEMOCRACY Deutschland e.V.</div>\n <div>IBAN: DE33 5003 1000 1049 7560 00<br></div>\n <div>BIC: TRODDEF1<br>mobil &nbsp;+49 176 470 40 213</div>\n <br>\n </div>\n </body>\n</html>',1);
INSERT IGNORE INTO email (`id`,`name`,`sender`,`subject`,`template_text`,`template_html`,`system_lock`) VALUES (32,'Prototype Access iOS','Prototyp | DEMOCRACY <prototyping@democracy-deutschland.de>','${emoji_mobile} DEMOCRACY: Dein Prototyp Zugang',34,35,1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (34,0,'Prototype Access iOS Text','Hallo lieber Prototyp-Tester,\n\nim folgenden erklären wir Dir, wie Du zur Beta-Version von DEMOCRACY gelangst.\n\nAnleitung für iOS\n* Du erhälst in den folgenden Minuten eine Email von TestFlight mit der Betreffzeile DEMOCRACY Deutschland e.V. has invited you to test \"DEMOCRACY Beta\"\n* Öffne diese Mail, klicke den blauen Button View in TestFlight und folge der aufgeführten Anleitung, also\n* Lade Dir TestFlight im AppStore herunter\n* Öffne TestFlight und Drücke “Redeem”\n* Gib den Bestätigungscode, also z.B. QJHFFNDF ein und lade Dir DEMOCRACY herunter.\n* Öffne DEMOCRACY und teste wie Du Bugs korrekt reportest, entnehme bitte der Anleitung zum Bug-Report\n\nAnleitung zum Bug-Report\n* Ein qualifiziertes Feedback ist notwendig, um Fehler zu beheben. Deshalb gib uns möglichst viele Informationen zu den von Dir gefunden Fehlern oder Verbesserungsvorschlägen.\n* Wie Du das machst?\n* Zunächst: Mach aus der unten stehenden Liste bitte nur das, was Dir zumutbar erscheint. Im Optimalfall:\n\n* Mach einen Screenshot (in iOS: Stand-by- und Home-Taste gleichzeitig drücken)\n* Markiere die fehlerhaften Bereiche in dem Screenshot (z.B Roter Kreis um den Fehler)\n* Beschreib das Problem möglichst genau in wenigen Sätzen\n* Gib eine Schritt-für-Schritt-Anleitung, wie es zu dem Problem gekommen ist, und wenn es Dir für notwendig erscheint\n* Klassifiziere das Problem in einen Fehlerbericht und/oder einen Verbesserungsvorschlag\n* Schicke uns den (bearbeiteten) Screenshot, die Fehlerbeschreibung sowie Deine Plattform (iOS/Android) und Deine Gerätebezeichnung (z.B. iPhone SE) per E-Mail an prototyping@democracy-deutschland.de oder optional\n* Erstelle ein Issue für das Problem und lade den Screenshot auf Github hoch https://github.com/demokratie-live/democracy-client/issues\n\n\nDEMOCRACY Deutschland e.V.\nIBAN: DE33 5003 1000 1049 7560 00\nBIC: TRODDEF1\nmobil +49 176 470 40 213',1);
INSERT IGNORE INTO email_template (`id`,`type`,`name`,`value`,`system_lock`) VALUES (35,1,'Prototype Access iOS HTML','<html>\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n </head>\n <body style=\"font-family: \'Helvetica Neue\'; color: rgb(69, 69, 69); font-size: medium;\">\n <div>\n <span>Hallo lieber </span>\n <span style=\"font-weight: 700; \">Prototyp-Tester,</span>\n </div>\n <br>\n <div>\n <span>im folgenden erklären wir Dir, wie Du <b>zur Beta-Version von DEMOCRACY </b>gelangst.</span>\n </div>\n <br>\n <br>\n <span style=\"text-decoration: underline;\"><b>Anleitung für iOS</b></span>\n <ol style=\"line-height: 2;\">\n <li>Du erhälst in den folgenden Minuten eine Email von TestFlight mit der Betreffzeile <i>DEMOCRACY Deutschland e.V. has invited you to test \"DEMOCRACY Beta\"</i></li>\n <li>Öffne diese Mail, klicke den blauen Button <i>View in TestFlight </i>und folge der aufgeführten Anleitung, also</li>\n <li>Lade Dir TestFlight im AppStore herunter</li>\n <li>Öffne TestFlight und Drücke “Redeem”</li>\n <li>Gib den Bestätigungscode, also z.B. QJHFFNDF ein und lade Dir DEMOCRACY herunter.</li>\n <li>Öffne DEMOCRACY und teste wie Du Bugs korrekt reportest, entnehme bitte der Anleitung zum Bug-Report</li>\n </ol>\n <div>\n <span><br></span>\n </div>\n <div>\n <span style=\"text-decoration: underline;\"><b>Anleitung zum Bug-Report</b></span>\n <span><br><br></span>\n </div>\n <div>\n <span>Ein qualifiziertes Feedback ist notwendig, um Fehler zu beheben. Deshalb gib uns möglichst viele Informationen zu den von Dir gefunden Fehlern oder Verbesserungsvorschlägen.</span>\n </div>\n <br>\n <div>\n <span>Wie Du das machst?</span>\n </div>\n <div>\n <span>Zunächst: Mach aus der unten stehenden Liste bitte nur das, was Dir zumutbar erscheint. Im Optimalfall:</span>\n </div>\n <br>\n <ol style=\"line-height: 2;\">\n <li>Mach einen Screenshot (in iOS: Stand-by- und Home-Taste gleichzeitig drücken)</li>\n <li>Markiere die fehlerhaften Bereiche in dem Screenshot (z.B Roter Kreis um den Fehler)</li>\n <li>Beschreib das Problem möglichst genau in wenigen Sätzen</li>\n <li>Gib eine Schritt-für-Schritt-Anleitung, wie es zu dem Problem gekommen ist, und wenn es Dir für notwendig erscheint</li>\n <li>Klassifiziere das Problem in einen Fehlerbericht und/oder einen Verbesserungsvorschlag</li>\n <li>Schicke uns den (bearbeiteten) Screenshot, die Fehlerbeschreibung sowie Deine Plattform (iOS/Android) und Deine Gerätebezeichnung (z.B. iPhone SE) per E-Mail an <a href=\"mailto:prototyping@democracy-deutschland.de\">prototyping@democracy-deutschland.de</a> oder optional</li>\n <li>Erstelle ein Issue für das Problem und lade den Screenshot auf Github hoch <a href=\"https://github.com/demokratie-live/democracy-client/issues\">https://github.com/demokratie-live/democracy-client/issues</a></li>\n </ol>\n <br>\n <div>\n <span><img src=\"cid:democracy_logo\"></span>\n <br><br><br>\n <div>DEMOCRACY Deutschland e.V.</div>\n <div>IBAN: DE33 5003 1000 1049 7560 00<br></div>\n <div>BIC: TRODDEF1<br>mobil &nbsp;+49 176 470 40 213</div>\n <br>\n </div>\n </body>\n</html>',1);

View File

@ -1 +1,18 @@
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (800, 42, 'donate', 'donate', -1, 0, 0, '#content', './sai.php?sai_mod=.SAI.saimod_donate', 'init_saimod_donate', '\\SAI\\saimod_donate');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (900, 42, 'mail', 'mail', -1, 0, 0, '#content', './sai.php?sai_mod=.SAI.saimod_mail', 'init_saimod_mail', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (901, 42, 'overview', 'mail', 900, 0, 0, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=overview', 'init_saimod_mail_overview', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (910, 42, 'contacts', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=contacts&list=${list}', 'init_saimod_mail_contacts', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (915, 42, 'contact', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=contact&email=${email}', 'init_saimod_mail_contact', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (917, 42, 'contact_new', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=contact_new', 'init_saimod_mail_contact_new', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (920, 42, 'lists', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=lists', 'init_saimod_mail_lists', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (925, 42, 'list', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=list&id=${id}', 'init_saimod_mail_list', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (927, 42, 'list_new', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=list_new', 'init_saimod_mail_list_new', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (930, 42, 'emails', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=emails', 'init_saimod_mail_emails', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (935, 42, 'email', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=email&id=${id}', 'init_saimod_mail_email', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (937, 42, 'email_new', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=email_new', 'init_saimod_mail_email_new', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (940, 42, 'templates', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=templates&type=${type}', 'init_saimod_mail_templates', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (945, 42, 'template', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=template&id=${id}', 'init_saimod_mail_template', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (947, 42, 'template_new', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=template_new', 'init_saimod_mail_template_new', '\\SAI\\saimod_mail');

View File

@ -1,7 +1,7 @@
<li class="nav-item">
<a id="menu_donate" class="nav-link" data-toggle="tooltip" data-placement="bottom" title="Donate" href="#!donate">
<a id="menu_mail" class="nav-link" data-toggle="tooltip" data-placement="bottom" title="Mail" href="#!mail">
<span class="d-md-none" style="padding-left: 15px;"></span>
<i class="fa fa-dollar" aria-hidden="true"></i>
<span class="d-md-none">&nbsp;&nbsp;Donate</span>
<i class="fa fa-envelope" aria-hidden="true"></i>
<span class="d-md-none">&nbsp;&nbsp;Mail</span>
</a>
</li>

View File

@ -1,34 +1,15 @@
<div class="row">
<div class="col-12 sai_padding_off bg-primary sai_padding_10">
<h4 class="sai_margin_off" style="float:left;">&nbsp;<span class="fa fa-check" aria-hidden="true"></span>&nbsp;&nbsp;Donate</h4>
<h4 class="sai_margin_off" style="float:left;">&nbsp;<span class="fa fa-envelope" aria-hidden="true"></span>&nbsp;&nbsp;Mail</h4>
</div>
<div class="col-md-8 sai_padding_off" style="padding: 15px;">
<table class="table table-striped table-condensed" style="border: 1px solid #dee2e6;">
<tr>
<th>Paten</th>
<td><input type="text" id="donate-paten" value="${donation_paten}" style="width: 100%;"/></td>
</tr>
<tr>
<th>Value</th>
<td><input type="text" id="donate-value" value="${donation_value}" style="width: 100%;"/></td>
</tr>
<tr>
<th>Paten Goal</th>
<td><input type="text" id="donate-paten-goal" value="${donation_paten_goal}" style="width: 100%;"/></td>
</tr>
<tr>
<th>Value Goal</th>
<td><input type="text" id="donate-value-goal" value="${donation_value_goal}" style="width: 100%;"/></td>
</tr>
<tr>
<td></td>
<td>
<button id="donate-update" class="btn btn-success pull-right">Update</button>
</td>
</tr>
</table>
</div>
<div class="col-md-4 sai_padding_off" style="padding: 15px;">
${donate_box}
<div class="col-md-2 sai_padding_off">
<ul class="nav bg-light flex-column" id="tabs_mail">
<li class="nav-item"><a id="menu_mail_overview" class="nav-link active" href="#!mail">Overview</a></li>
<li class="nav-item"><a id="menu_mail_contacts" class="nav-link" href="#!mail(contacts)">Contacts</a></li>
<li class="nav-item"><a id="menu_mail_lists" class="nav-link" href="#!mail(lists)">EMail-Lists</a></li>
<li class="nav-item"><a id="menu_mail_emails" class="nav-link" href="#!mail(emails)">EMails</a></li>
<li class="nav-item"><a id="menu_mail_templates" class="nav-link" href="#!mail(templates)">Templates</a></li>
</ul>
</div>
<div class="col-md-10 sai_padding_off sai_border_left" id="content_mail"></div>
</div>

View File

@ -0,0 +1,35 @@
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_contact">
<tbody>
<tr>
<th>EMail</th>
<td><input id="input-contact-email" type="email" value="${email}" disabled style="width: 100%"/></td>
</tr>
<tr>
<th>Sex</th>
<td><input id="input-contact-sex" type="text" value="${sex}" style="width: 100%"/></td>
</tr>
<tr>
<th>FirstName</th>
<td><input id="input-contact-name-first" type="text" value="${name_first}" style="width: 100%"/></td>
</tr>
<tr>
<th>LastName</th>
<td><input id="input-contact-name-last" type="text" value="${name_last}" style="width: 100%"/></td>
</tr>
<tr>
<th>UpdatedAt</th>
<td>${updated_at}</td>
</tr>
<tr>
<th colspan="2"></th>
</tr>
<tr>
<th>Lists</th>
<th>Subscribed</th>
</tr>
${data}
</tbody>
</table>
<button class="btn btn-sm btn-success" id="btn-contact-update" style="margin: 12px;"><i class="fa fa-edit"></i>&nbsp;Update</button>
</div>

View File

@ -0,0 +1,31 @@
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_contact_new">
<tbody>
<tr>
<th>EMail</th>
<td><input id="input-contact-new-email" type="email" style="width: 100%"/></td>
</tr>
<tr>
<th>Sex</th>
<td><input id="input-contact-new-sex" type="text" style="width: 100%"/></td>
</tr>
<tr>
<th>FirstName</th>
<td><input id="input-contact-new-name-first" type="text" style="width: 100%"/></td>
</tr>
<tr>
<th>LastName</th>
<td><input id="input-contact-new-name-last" type="text" style="width: 100%"/></td>
</tr>
<tr>
<th colspan="2"></th>
</tr>
<tr>
<th>Lists</th>
<th>Subscribed</th>
</tr>
${data}
</tbody>
</table>
<button class="btn btn-sm btn-success" id="btn-contact-new-insert" style="margin: 12px;"><i class="fa fa-save"></i>&nbsp;Insert</button>
</div>

View File

@ -1,13 +1,4 @@
<tr>
<td style="color: ${valid}">${used_code}</td>
<td>${email}</td>
<td><i class="fa fa-${device}"></i></td>
<td>${generated}</td>
<td><i class="fa fa-${redeemed}"></i>&nbsp;${redeemed_time}</td>
<td><i class="fa fa-${stored}"></i>&nbsp;${stored_time}</td>
<td><i class="fa fa-${emailed}"></i>&nbsp;${emailed_time}</td>
<td>${comment}</td>
<td>
<input type="checkbox" class="all-check" email="${email}"/>
</td>
<td>${name}</td>
<td><input type="checkbox" class="list-check" list="${id}"/></td>
</tr>

View File

@ -1,13 +1,4 @@
<tr>
<td style="color: ${valid}">${used_code}</td>
<td>${email}</td>
<td><i class="fa fa-${device}"></i></td>
<td>${generated}</td>
<td><i class="fa fa-${redeemed}"></i>&nbsp;${redeemed_time}</td>
<td><i class="fa fa-${stored}"></i>&nbsp;${stored_time}</td>
<td><i class="fa fa-${emailed}"></i>&nbsp;${emailed_time}</td>
<td>${comment}</td>
<td>
<input type="checkbox" class="all-check" email="${email}"/>
</td>
<td>${name}</td>
<td><input type="checkbox" class="list-check" list="${id}" ${checked}/></td>
</tr>

View File

@ -0,0 +1,24 @@
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link ${active_all}" href="#!mail(contacts)">All</a>
</li>
${menu}
</ul>
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_contacts">
<thead>
<tr>
<th>EMail</th>
<th>Sex</th>
<th>FirstName</th>
<th>LastName</th>
<th>UpdatedAt</th>
<th>
<button type="button" id="btn-mail-contact-del" class="btn btn-sm btn-danger pull-right"><i class="fa fa-trash"></i></button>
<button type="button" id="btn-mail-contact-new" class="btn btn-sm btn-success pull-right" onclick="system.load('mail(contact_new)')" style="margin-right: 10px;"><i class="fa fa-plus"></i></button>
</th>
</tr>
</thead>
<tbody>${data}</tbody>
</table>
</div>

View File

@ -0,0 +1,3 @@
<li class="nav-item">
<a class="nav-link ${active}" href="#!mail(contacts);list.${id}">${name}</a>
</li>

View File

@ -1,13 +1,10 @@
<tr>
<td style="color: ${valid}">${used_code}</td>
<td>${email}</td>
<td><i class="fa fa-${device}"></i></td>
<td>${generated}</td>
<td><i class="fa fa-${redeemed}"></i>&nbsp;${redeemed_time}</td>
<td><i class="fa fa-${stored}"></i>&nbsp;${stored_time}</td>
<td><i class="fa fa-${emailed}"></i>&nbsp;${emailed_time}</td>
<td>${comment}</td>
<td><a href="#!mail(contact);email.${email}">${email}</a></td>
<td>${sex}</td>
<td>${name_first}</td>
<td>${name_last}</td>
<td>${updated_at}</td>
<td>
<input type="checkbox" class="all-check" email="${email}"/>
<input type="checkbox" class="pull-right mail-contact-check" email="${email}"/>
</td>
</tr>

65
tpl/saimod_mail_email.tpl Normal file
View File

@ -0,0 +1,65 @@
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_email">
<tbody>
<tr>
<th>ID</th>
<td><input id="input-email-id" type="text" value="${id}" disabled style="width: 100%"/></td>
</tr>
<tr>
<th>Name</th>
<td><input id="input-email-name" type="text" value="${name}" style="width: 100%"/></td>
</tr>
<tr>
<th>From</th>
<td><input id="input-email-sender" type="text" value="${sender}" style="width: 100%"/></td>
</tr>
<tr>
<th>Subject</th>
<td><input id="input-email-subject" type="text" value="${subject}" style="width: 100%"/></td>
</tr>
<tr>
<th>System Lock</th>
<td>${system_lock}</td>
</tr>
<tr>
<th>UpdatedAt</th>
<td>${updated_at}</td>
</tr>
<tr>
<th>TXT-Template</th>
<td>
<select id="select-email-text-template" ${template_lock}>
<option value="">No Template</option>
${text_options}
</select>
</td>
</tr>
<tr>
<th>HTML-Template</th>
<td>
<select id="select-email-html-template" ${template_lock}>
<option value="">No Template</option>
${html_options}
</select>
</td>
</tr>
<tr>
<th colspan="2"></th>
</tr>
<tr>
<th colspan="2">Preview</th>
</tr>
<tr>
<td colspan="2"></td>
</tr>
<tr>
<th colspan="2"></th>
</tr>
<tr>
<th colspan="2">Send</th>
</tr>
${send}
</tbody>
</table>
<button class="btn btn-sm btn-success" id="btn-email-update" style="margin: 12px;"><i class="fa fa-edit"></i>&nbsp;Update</button>
</div>

View File

@ -0,0 +1,48 @@
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_email_new">
<tbody>
<tr>
<th>Name</th>
<td><input id="input-email-new-name" type="text" style="width: 100%"/></td>
</tr>
<tr>
<th>From</th>
<td><input id="input-email-new-sender" type="text" style="width: 100%"/></td>
</tr>
<tr>
<th>Subject</th>
<td><input id="input-email-new-subject" type="text" style="width: 100%"/></td>
</tr>
<tr>
<th>TXT-Template</th>
<td>
<select id="select-email-new-text-template">
<option value="">No Template</option>
${text_options}
</select>
</td>
</tr>
<tr>
<th>HTML-Template</th>
<td>
<select id="select-email-new-html-template">
<option value="">No Template</option>
${html_options}
</select>
</td>
</tr>
<tr>
<th colspan="2"></th>
</tr>
<tr>
<th colspan="2">Preview</th>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
</tbody>
</table>
<button class="btn btn-sm btn-success" id="btn-email-new-insert" style="margin: 12px;"><i class="fa fa-save"></i>&nbsp;Insert</button>
</div>

View File

@ -0,0 +1,6 @@
<tr>
<td><a href="#!mail(list);id.${id}">${name}</a></td>
<td>
<button class="btn btn-sm btn-${btn-color} btn-email-send" ${disabled} list="${id}" email="${email}"><i class="fa fa-send"></i>&nbsp;Send</button>
</td>
</tr>

View File

@ -0,0 +1 @@
<option value="${id}" ${selected}>${name}</option>

View File

@ -0,0 +1,19 @@
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_emails">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>From</th>
<th>Subject</th>
<th>System Lock</th>
<th>UpdatedAt</th>
<th>
<button type="button" id="btn-mail-email-del" class="btn btn-sm btn-danger pull-right"><i class="fa fa-trash"></i></button>
<button type="button" id="btn-mail-email-new" class="btn btn-sm btn-success pull-right" onclick="system.load('mail(email_new)')" style="margin-right: 10px;"><i class="fa fa-plus"></i></button>
</th>
</tr>
</thead>
<tbody>${data}</tbody>
</table>
</div>

View File

@ -1,13 +1,11 @@
<tr>
<td style="color: ${valid}">${used_code}</td>
<td>${email}</td>
<td><i class="fa fa-${device}"></i></td>
<td>${generated}</td>
<td><i class="fa fa-${redeemed}"></i>&nbsp;${redeemed_time}</td>
<td><i class="fa fa-${stored}"></i>&nbsp;${stored_time}</td>
<td><i class="fa fa-${emailed}"></i>&nbsp;${emailed_time}</td>
<td>${comment}</td>
<td><a href="#!mail(email);id.${id}">${id}</a></td>
<td><a href="#!mail(email);id.${id}">${name}</a></td>
<td>${sender}</td>
<td>${subject}</td>
<td>${system_lock}</td>
<td>${updated_at}</td>
<td>
<input type="checkbox" class="all-check" email="${email}"/>
<input type="checkbox" class="pull-right mail-email-check" email="${id}"/>
</td>
</tr>

30
tpl/saimod_mail_list.tpl Normal file
View File

@ -0,0 +1,30 @@
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_list">
<tbody>
<tr>
<th>ID</th>
<td><input id="input-list-id" type="text" value="${id}" disabled style="width: 100%"/></td>
</tr>
<tr>
<th>Name</th>
<td><input id="input-list-name" type="text" value="${name}" style="width: 100%"/></td>
</tr>
<tr>
<th>System Lock</th>
<td>${system_lock}</td>
</tr>
<tr>
<th>UpdatedAt</th>
<td>${updated_at}</td>
</tr>
<tr>
<th colspan="2"></th>
</tr>
<tr>
<th colspan="2">Members</th>
</tr>
${data}
</tbody>
</table>
<button class="btn btn-sm btn-success" id="btn-list-update" style="margin: 12px;"><i class="fa fa-edit"></i>&nbsp;Update</button>
</div>

View File

@ -0,0 +1,11 @@
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_list_new">
<tbody>
<tr>
<th>Name</th>
<td><input id="input-list-new-name" type="text" style="width: 100%"/></td>
</tr>
</tbody>
</table>
<button class="btn btn-sm btn-success" id="btn-list-new-insert" style="margin: 12px;"><i class="fa fa-save"></i>&nbsp;Insert</button>
</div>

View File

@ -1,13 +1,4 @@
<tr>
<td style="color: ${valid}">${used_code}</td>
<td>${email}</td>
<td><i class="fa fa-${device}"></i></td>
<td>${generated}</td>
<td><i class="fa fa-${redeemed}"></i>&nbsp;${redeemed_time}</td>
<td><i class="fa fa-${stored}"></i>&nbsp;${stored_time}</td>
<td><i class="fa fa-${emailed}"></i>&nbsp;${emailed_time}</td>
<td>${comment}</td>
<td>
<input type="checkbox" class="all-check" email="${email}"/>
</td>
<td><a href="#!mail(contact);email.${email}">${name_first} ${name_last}</a></td>
<td><a href="#!mail(contact);email.${email}">${email}</a></td>
</tr>

18
tpl/saimod_mail_lists.tpl Normal file
View File

@ -0,0 +1,18 @@
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_lists">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Members</th>
<th>System Lock</th>
<th>UpdatedAt</th>
<th>
<button type="button" id="btn-mail-list-del" class="btn btn-sm btn-danger pull-right"><i class="fa fa-trash"></i></button>
<button type="button" id="btn-mail-list-new" class="btn btn-sm btn-success pull-right" onclick="system.load('mail(list_new)')" style="margin-right: 10px;"><i class="fa fa-plus"></i></button>
</th>
</tr>
</thead>
<tbody>${data}</tbody>
</table>
</div>

View File

@ -1,13 +1,10 @@
<tr>
<td style="color: ${valid}">${used_code}</td>
<td>${email}</td>
<td><i class="fa fa-${device}"></i></td>
<td>${generated}</td>
<td><i class="fa fa-${redeemed}"></i>&nbsp;${redeemed_time}</td>
<td><i class="fa fa-${stored}"></i>&nbsp;${stored_time}</td>
<td><i class="fa fa-${emailed}"></i>&nbsp;${emailed_time}</td>
<td>${comment}</td>
<tr>
<td><a href="#!mail(list);id.${id}">${id}</id></td>
<td><a href="#!mail(list);id.${id}">${name}</a></td>
<td>${count}</td>
<td>${system_lock}</td>
<td>${updated_at}</td>
<td>
<input type="checkbox" class="all-check" email="${email}"/>
<input type="checkbox" class="pull-right mail-list-check" list="${id}"/>
</td>
</tr>

View File

View File

@ -0,0 +1,42 @@
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_template">
<tbody>
<tr>
<th>ID</th>
<td>
<input id="input-template-id" type="text" value="${id}" disabled style="width: 100%"/>
</td>
</tr>
<tr>
<th>Type</th>
<td>
<select id="input-template-type">
<option value="0" ${selected_text}>Text</option>
<option value="1" ${selected_html}>HTML</option>
</select>
</td>
</tr>
<tr>
<th>Name</th>
<td>
<input id="input-template-name" type="text" value="${name}" style="width: 100%"/>
</td>
</tr>
<tr>
<th>System Lock</th>
<td>${system_lock}</td>
</tr>
<tr>
<th>UpdatedAt</th>
<td>${updated_at}</td>
</tr>
<tr>
<th>Value</th>
<td>
<textarea id="input-template-value" style="width: 100%; min-height: 350px;">${value}</textarea>
</td>
</tr>
</tbody>
</table>
<button class="btn btn-sm btn-success" id="btn-template-update" style="margin: 12px;"><i class="fa fa-edit"></i>&nbsp;Update</button>
</div>

View File

@ -0,0 +1,28 @@
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_template_new">
<tbody>
<tr>
<th>Type</th>
<td>
<select id="input-template-new-type">
<option value="0">Text</option>
<option value="1">HTML</option>
</select>
</td>
</tr>
<tr>
<th>Name</th>
<td>
<input id="input-template-new-name" type="text" style="width: 100%"/>
</td>
</tr>
<tr>
<th>Value</th>
<td>
<textarea id="input-template-new-value" style="width: 100%; min-height: 350px;"></textarea>
</td>
</tr>
</tbody>
</table>
<button class="btn btn-sm btn-success" id="btn-template-new-insert" style="margin: 12px;"><i class="fa fa-save"></i>&nbsp;Insert</button>
</div>

View File

@ -0,0 +1,26 @@
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link ${active_text}" href="#!mail(templates)">Text</a>
</li>
<li class="nav-item">
<a class="nav-link ${active_html}" href="#!mail(templates);type.1">HTML</a>
</li>
</ul>
<div class="table-responsive">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_mail_templates">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Type</th>
<th>System Lock</th>
<th>UpdatedAt</th>
<th>
<button type="button" id="btn-mail-template-del" class="btn btn-sm btn-danger pull-right"><i class="fa fa-trash"></i></button>
<button type="button" id="btn-mail-template-new" class="btn btn-sm btn-success pull-right" onclick="system.load('mail(template_new)')" style="margin-right: 10px;"><i class="fa fa-plus"></i></button>
</th>
</tr>
</thead>
<tbody>${data}</tbody>
</table>
</div>

View File

@ -1,13 +1,10 @@
<tr>
<td style="color: ${valid}">${used_code}</td>
<td>${email}</td>
<td><i class="fa fa-${device}"></i></td>
<td>${generated}</td>
<td><i class="fa fa-${redeemed}"></i>&nbsp;${redeemed_time}</td>
<td><i class="fa fa-${stored}"></i>&nbsp;${stored_time}</td>
<td><i class="fa fa-${emailed}"></i>&nbsp;${emailed_time}</td>
<td>${comment}</td>
<td><a href="#!mail(template);id.${id}">${id}</a></td>
<td><a href="#!mail(template);id.${id}">${name}</a></td>
<td>${type}</td>
<td>${system_lock}</td>
<td>${updated_at}</td>
<td>
<input type="checkbox" class="all-check" email="${email}"/>
<input type="checkbox" class="pull-right mail-template-check" template="${id}"/>
</td>
</tr>