invite codes initial
This commit is contained in:
parent
282ce9c946
commit
252ada26f4
@ -7,8 +7,11 @@ RewriteEngine On
|
||||
#RewriteRule ^fonts/glyphicons-halflings-regular\.woff$ lib/system/lib/bootstrap/lib/fonts/glyphicons-halflings-regular.woff$1 [L]
|
||||
#RewriteRule ^fonts/glyphicons-halflings-regular\.woff2$ lib/system/lib/bootstrap/lib/fonts/glyphicons-halflings-regular.woff2$1 [L]
|
||||
|
||||
RewriteRule ^invite/([^/]*)$ invite.php?code=$1
|
||||
RewriteRule ^invite$ invite.php$1
|
||||
|
||||
RewriteRule ^(.*)/fonts/fontawesome-webfont(.*)$ lib/font_awesome/lib/fonts/fontawesome-webfont$2 [L]
|
||||
RewriteRule ^sai$ sai.php$1 [L]
|
||||
|
||||
RewriteRule ^files/([^/]+)/([^/]+)$ api.php?call=files&cat=$1&id=$2 [L]
|
||||
RewriteRule ^cache/([^/]+)/([^/]+)$ api.php?call=cache&id=$1&ident=$2 [L]
|
||||
RewriteRule ^(.*)files/([^/]+)/([^/]+)$ api.php?call=files&cat=$2&id=$3 [L]
|
||||
RewriteRule ^(.*)cache/([^/]+)/([^/]+)$ api.php?call=cache&id=$2&ident=$3 [L]
|
||||
@ -94,4 +94,29 @@ class api_democracy extends \SYSTEM\API\api_system {
|
||||
|
||||
\SQL\SUBSCRIBE_EMAIL_COUNT::Q1(array($email));
|
||||
}
|
||||
|
||||
public static function call_beta($ios,$android,$email,$code){
|
||||
$code_valid = self::validate_code($code);
|
||||
|
||||
if($code_valid){
|
||||
$data = \SQL\BETA_EMAIL_FIND::Q1(array($email));
|
||||
if(!$data){
|
||||
\SQL\BETA_INSERT::QI(array($code,$email,$android,$ios));
|
||||
} else {
|
||||
if(!self::validate_code($data['code'])){
|
||||
\SQL\BETA_DELETE::QI(array($email));
|
||||
\SQL\BETA_INSERT::QI(array($code,$email,$android,$ios));
|
||||
} else {
|
||||
throw new ERROR('This EMail has already redeemed a Code');}
|
||||
}
|
||||
} else {
|
||||
\SQL\BETA_INSERT::QI(array($code,$email,$android,$ios));
|
||||
}
|
||||
|
||||
return \SYSTEM\LOG\JsonResult::ok();
|
||||
}
|
||||
|
||||
public static function validate_code($code){
|
||||
return \SQL\BETA_CODE_VALIDATE::Q1(array($code))['count'] !== 0 ? true: false;
|
||||
}
|
||||
}
|
||||
12
democracy/api/sql/BETA_CODES_FIND.php
Normal file
12
democracy/api/sql/BETA_CODES_FIND.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_CODES_FIND extends \SYSTEM\DB\QQ {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT beta_code.code, COUNT(beta.code) as count, comment, createdAt FROM `beta_code`'.
|
||||
' LEFT JOIN beta ON beta_code.code = beta.code'.
|
||||
' GROUP BY beta_code.code'.
|
||||
' ORDER BY createdAt;';
|
||||
}
|
||||
}
|
||||
9
democracy/api/sql/BETA_CODE_INSERT.php
Normal file
9
democracy/api/sql/BETA_CODE_INSERT.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_CODE_INSERT extends \SYSTEM\DB\QP {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'INSERT INTO `beta_code`(`code`, `comment`) VALUES (UPPER(?),?);';
|
||||
}
|
||||
}
|
||||
9
democracy/api/sql/BETA_CODE_VALIDATE.php
Normal file
9
democracy/api/sql/BETA_CODE_VALIDATE.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_CODE_VALIDATE extends \SYSTEM\DB\QP {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT count(*) as count FROM beta_code WHERE UPPER(`code`) = UPPER(?);';
|
||||
}
|
||||
}
|
||||
9
democracy/api/sql/BETA_COMMENT.php
Normal file
9
democracy/api/sql/BETA_COMMENT.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_COMMENT extends \SYSTEM\DB\QP {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'UPDATE `beta_code` SET `comment` = ? WHERE UPPER(`code`) = UPPER(?);';
|
||||
}
|
||||
}
|
||||
10
democracy/api/sql/BETA_COUNT_MAIL.php
Normal file
10
democracy/api/sql/BETA_COUNT_MAIL.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_COUNT_MAIL extends \SYSTEM\DB\QQ {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT COUNT(*) as count FROM `beta`'.
|
||||
' WHERE emailedAt IS NULL AND storedAt IS NOT NULL;';
|
||||
}
|
||||
}
|
||||
10
democracy/api/sql/BETA_COUNT_STORE_ANDROID.php
Normal file
10
democracy/api/sql/BETA_COUNT_STORE_ANDROID.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_COUNT_STORE_ANDROID extends \SYSTEM\DB\QQ {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT COUNT(*) as count FROM `beta`'.
|
||||
' WHERE storedAt IS NULL AND android = 1;';
|
||||
}
|
||||
}
|
||||
10
democracy/api/sql/BETA_COUNT_STORE_IOS.php
Normal file
10
democracy/api/sql/BETA_COUNT_STORE_IOS.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_COUNT_STORE_IOS extends \SYSTEM\DB\QQ {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT COUNT(*) as count FROM `beta`'.
|
||||
' WHERE storedAt IS NULL AND ios = 1;';
|
||||
}
|
||||
}
|
||||
9
democracy/api/sql/BETA_DELETE.php
Normal file
9
democracy/api/sql/BETA_DELETE.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_DELETE extends \SYSTEM\DB\QP {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'DELETE FROM `beta` WHERE LOWER(email) = LOWER(?);';
|
||||
}
|
||||
}
|
||||
9
democracy/api/sql/BETA_EMAIL_FIND.php
Normal file
9
democracy/api/sql/BETA_EMAIL_FIND.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_EMAIL_FIND extends \SYSTEM\DB\QP {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT * FROM `beta` WHERE LOWER(email) = LOWER(?) LIMIT 1;';
|
||||
}
|
||||
}
|
||||
12
democracy/api/sql/BETA_GET.php
Normal file
12
democracy/api/sql/BETA_GET.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_GET extends \SYSTEM\DB\QQ {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT beta.code as used_code, beta_code.code, comment,'.
|
||||
' email, android, ios,'.
|
||||
' redeemedAt, createdAt, storedAt, emailedAt'.
|
||||
' FROM beta LEFT JOIN beta_code ON beta.code = beta_code.code;';
|
||||
}
|
||||
}
|
||||
9
democracy/api/sql/BETA_INSERT.php
Normal file
9
democracy/api/sql/BETA_INSERT.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_INSERT extends \SYSTEM\DB\QP {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'INSERT INTO `beta`(`code`, `email`, `android`, `ios`, `redeemedAt`) VALUES (UPPER(?),LOWER(?),?,?,NOW());';
|
||||
}
|
||||
}
|
||||
9
democracy/api/sql/BETA_MAIL.php
Normal file
9
democracy/api/sql/BETA_MAIL.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_MAIL extends \SYSTEM\DB\QP {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'UPDATE `beta` SET `emailedAt` = NOW() WHERE LOWER(`email`) = LOWER(?);';
|
||||
}
|
||||
}
|
||||
10
democracy/api/sql/BETA_MAIL_FIND.php
Normal file
10
democracy/api/sql/BETA_MAIL_FIND.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_MAIL_FIND extends \SYSTEM\DB\QQ {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT beta.code as used_code, beta_code.code, email, comment, createdAt, emailedAt, android, ios, redeemedAt, storedAt FROM beta LEFT JOIN beta_code ON beta.code = beta_code.code'.
|
||||
' WHERE storedAt IS NOT NULL ORDER BY emailedAt;';
|
||||
}
|
||||
}
|
||||
9
democracy/api/sql/BETA_STORE.php
Normal file
9
democracy/api/sql/BETA_STORE.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_STORE extends \SYSTEM\DB\QP {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'UPDATE `beta` SET `storedAt` = NOW() WHERE LOWER(`email`) = LOWER(?);';
|
||||
}
|
||||
}
|
||||
10
democracy/api/sql/BETA_STORE_ANDROID_FIND.php
Normal file
10
democracy/api/sql/BETA_STORE_ANDROID_FIND.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_STORE_ANDROID_FIND extends \SYSTEM\DB\QQ {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT beta.code as used_code, beta_code.code, email, comment, createdAt, android, ios, redeemedAt, storedAt FROM beta LEFT JOIN beta_code ON beta.code = beta_code.code'.
|
||||
' WHERE android = 1 AND redeemedAt IS NOT NULL ORDER BY storedAt;';
|
||||
}
|
||||
}
|
||||
10
democracy/api/sql/BETA_STORE_IOS_FIND.php
Normal file
10
democracy/api/sql/BETA_STORE_IOS_FIND.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace SQL;
|
||||
|
||||
class BETA_STORE_IOS_FIND extends \SYSTEM\DB\QQ {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT beta.code as used_code, beta_code.code, email, comment, createdAt, android, ios, redeemedAt, storedAt FROM beta LEFT JOIN beta_code ON beta.code = beta_code.code'.
|
||||
' WHERE ios = 1 AND redeemedAt IS NOT NULL ORDER BY storedAt;';
|
||||
}
|
||||
}
|
||||
@ -8,4 +8,5 @@
|
||||
\SYSTEM\FILES\files::registerFolder(dirname(__FILE__).'/landing/','landing','*.*');
|
||||
\SYSTEM\FILES\files::registerFolder(dirname(__FILE__).'/references/','references','*.*');
|
||||
\SYSTEM\FILES\files::registerFolder(dirname(__FILE__).'/download/','download','*.*');
|
||||
\SYSTEM\FILES\files::registerFolder(dirname(__FILE__).'/org/','org','*.*');
|
||||
\SYSTEM\FILES\files::registerFolder(dirname(__FILE__).'/org/','org','*.*');
|
||||
\SYSTEM\FILES\files::registerFolder(dirname(__FILE__).'/invite/','invite','*.*');
|
||||
BIN
democracy/files/invite/Wallpaper.png
Normal file
BIN
democracy/files/invite/Wallpaper.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 764 KiB |
BIN
democracy/files/invite/group2@3x.png
Normal file
BIN
democracy/files/invite/group2@3x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 70 KiB |
BIN
democracy/files/invite/group3@3x.png
Normal file
BIN
democracy/files/invite/group3@3x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 62 KiB |
BIN
democracy/files/invite/group@3x.png
Normal file
BIN
democracy/files/invite/group@3x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
@ -14,4 +14,5 @@ SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_impressum');
|
||||
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_datenschutz');
|
||||
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_faq');
|
||||
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_news');
|
||||
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_spenden');
|
||||
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_spenden');
|
||||
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_invite');
|
||||
198
democracy/page/default_invite/css/default_invite.css
Normal file
198
democracy/page/default_invite/css/default_invite.css
Normal file
@ -0,0 +1,198 @@
|
||||
@font-face {
|
||||
font-family: 'edosz';
|
||||
src: url('../files/font/edosz.ttf') format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'helvetica';
|
||||
src: url('./files/font/HelveticaLt.ttf') format('truetype');
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%
|
||||
}
|
||||
|
||||
body {
|
||||
font-family:'helvetica',sans-serif;
|
||||
height: 100%;
|
||||
background: url('../files/invite/Wallpaper.png') no-repeat center center fixed;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-top: 30px;
|
||||
font-family: edosz;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
h1{font-size: 55px;}
|
||||
}
|
||||
|
||||
@media (min-width: 769px) {
|
||||
h1{font-size: 100px;}
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 15px;
|
||||
color: rgb(68,148,211)
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
h2{font-size: 35px;}
|
||||
}
|
||||
|
||||
@media (min-width: 769px) {
|
||||
h2{font-size: 50px;}
|
||||
}
|
||||
|
||||
.step {
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
#apply, #device, #ios, #android, #final_ios, #final_android{
|
||||
display: none
|
||||
}
|
||||
|
||||
#select_ios, #select_android {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#apply_text {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
#apply_text{font-size: 24px;}
|
||||
}
|
||||
|
||||
@media (min-width: 769px) {
|
||||
#apply_text{font-size: 30px;}
|
||||
}
|
||||
|
||||
#apply_website {
|
||||
font-size: 30px;
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
#device img {
|
||||
border: rgb(165,165,165) 2px solid;
|
||||
box-shadow: 0px 0px 10px rgb(165,165,165);
|
||||
border-radius: 25px;
|
||||
}
|
||||
#device img:hover {
|
||||
border: rgb(68,148,211) 2px solid;
|
||||
box-shadow: 0px 0px 10px rgb(68,148,211);
|
||||
}
|
||||
input{
|
||||
-webkit-border-radius: 50px;
|
||||
-moz-border-radius: 50px;
|
||||
border-radius: 50px;
|
||||
}
|
||||
input:focus{
|
||||
outline: none;
|
||||
box-shadow: 0 0 3pt 2pt rgb(68,148,211);
|
||||
}
|
||||
.blink-class { box-shadow: 0 0 3pt 2pt red;}
|
||||
ol li{
|
||||
counter-increment: item;
|
||||
list-style: none;
|
||||
}
|
||||
ol li:before {
|
||||
content: counter(item) ". ";
|
||||
color: rgb(68,148,211);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ol {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#plattform_text {
|
||||
clear: both;
|
||||
text-align: center;
|
||||
letter-spacing: -0.5px;
|
||||
padding-top: 25px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
#plattform_text{font-size: 22px;}
|
||||
}
|
||||
|
||||
@media (min-width: 769px) {
|
||||
#plattform_text{font-size: 32px;}
|
||||
}
|
||||
|
||||
#appleid, #googleid {
|
||||
width: 100%;
|
||||
height: 83px;
|
||||
background: rgb(247,247,247);
|
||||
border: rgb(206,209,210) 1px solid;
|
||||
font-size: 22px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#duplicate_ios, #duplicate_android {
|
||||
display: none;
|
||||
color: rgb(208,2,27);
|
||||
margin-top: 25px;
|
||||
font-size: 22px;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
#duplicate_ios, #duplicate_android{font-size: 12px;}
|
||||
}
|
||||
|
||||
@media (min-width: 769px) {
|
||||
#duplicate_ios, #duplicate_android{font-size: 22px;}
|
||||
}
|
||||
|
||||
.beta_button{
|
||||
vertical-align: middle;
|
||||
margin-top: 50px;
|
||||
height: 83px;
|
||||
cursor: pointer;
|
||||
background: rgb(68,148,211);
|
||||
color: white;
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
letter-spacing: 0.9px;
|
||||
}
|
||||
|
||||
#apply_go {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.beta_button{line-height: 40px;}
|
||||
}
|
||||
|
||||
@media (min-width: 769px) {
|
||||
.beta_button{line-height: 83px;}
|
||||
}
|
||||
|
||||
#apple_id_text, #google_id_text{
|
||||
text-align: center;
|
||||
letter-spacing: -0.5px;
|
||||
margin-top: 50px
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
#apple_id_text{font-size: 22px;}
|
||||
#google_id_text{font-size: 20px;}
|
||||
}
|
||||
|
||||
@media (min-width: 769px) {
|
||||
#apple_id_text, #google_id_text{font-size: 32px;}
|
||||
}
|
||||
|
||||
#apple_id_text_sub, #google_id_text_sub{
|
||||
text-align: center;
|
||||
font-size: 22px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
#apple_id_text_sub, #google_id_text_sub{font-size: 14px;}
|
||||
}
|
||||
|
||||
@media (min-width: 769px) {
|
||||
#apple_id_text_sub, #google_id_text_sub{font-size: 22px;}
|
||||
}
|
||||
36
democracy/page/default_invite/default_invite.php
Normal file
36
democracy/page/default_invite/default_invite.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
class default_invite implements \SYSTEM\PAGE\DefaultPage {
|
||||
public static function js(){
|
||||
return \SYSTEM\HTML\html::script(\SYSTEM\CACHE\cache_js::minify(array(
|
||||
\LIB\lib_jquery::js(),
|
||||
\LIB\lib_bootstrap::js(),
|
||||
new PPAGE('default_invite/js/default_invite.js')
|
||||
)));
|
||||
}
|
||||
|
||||
public static function css(){
|
||||
return \SYSTEM\HTML\html::link(\SYSTEM\CACHE\cache_css::minify(array(
|
||||
\LIB\lib_bootstrap::css(),
|
||||
\LIB\lib_font_awesome::css(),
|
||||
new PPAGE('default_invite/css/default_invite.css')
|
||||
)));
|
||||
}
|
||||
|
||||
public function html($_escaped_fragment_ = null){
|
||||
$vars = array();
|
||||
$vars['js'] = '';
|
||||
if(!$_escaped_fragment_){
|
||||
$vars['js'] = self::js();}
|
||||
$vars['css'] = self::css();
|
||||
|
||||
//Code
|
||||
$code = null;
|
||||
if(array_key_exists('code', $_GET)){
|
||||
$code = $_GET['code'];}
|
||||
$vars['code'] = $code;
|
||||
$vars['code_valid'] = api_democracy::validate_code($code);
|
||||
|
||||
$vars = array_merge($vars, \SYSTEM\PAGE\text::tag('democracy'));
|
||||
return \SYSTEM\PAGE\replace::replaceFile((new PPAGE('default_invite/tpl/default_invite.tpl'))->SERVERPATH(), $vars);
|
||||
}
|
||||
}
|
||||
85
democracy/page/default_invite/js/default_invite.js
Normal file
85
democracy/page/default_invite/js/default_invite.js
Normal file
@ -0,0 +1,85 @@
|
||||
$(document).ready(function() {
|
||||
if($('#code').attr('valid') === '1'){
|
||||
$('#device').show();
|
||||
} else {
|
||||
$('#apply').show();
|
||||
}
|
||||
|
||||
$('#apply_go').click(function(){
|
||||
$('#apply').hide();
|
||||
$('#device').show();
|
||||
});
|
||||
$('#select_ios').click(function(){
|
||||
$('#device').hide();
|
||||
$('#ios').show();
|
||||
});
|
||||
$('#select_android').click(function(){
|
||||
$('#device').hide();
|
||||
$('#android').show();
|
||||
});
|
||||
$('#android_go').click(function(){
|
||||
var email = $('#googleid').val();
|
||||
var code = $('#code').attr('code');
|
||||
var android = 1;
|
||||
var ios = 0;
|
||||
|
||||
if(!validateEmail(email)){
|
||||
$('#googleid').addClass("blink-class");
|
||||
$('#duplicate_android').hide();
|
||||
} else {
|
||||
$('#googleid').removeClass("blink-class");
|
||||
$('#duplicate_android').hide();
|
||||
register(email,code,ios,android,function(data){
|
||||
if(data.status){
|
||||
$('#android').hide();
|
||||
$('#final_android').show();
|
||||
} else {
|
||||
$('#duplicate_android').show();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
$('#ios_go').click(function(){
|
||||
var email = $('#appleid').val();
|
||||
var code = $('#code').attr('code');
|
||||
var android = 0;
|
||||
var ios = 1;
|
||||
|
||||
if(!validateEmail(email)){
|
||||
$('#appleid').addClass("blink-class");
|
||||
$('#duplicate_ios').hide();
|
||||
} else {
|
||||
$('#appleid').removeClass("blink-class");
|
||||
$('#duplicate_ios').hide();
|
||||
register(email,code,ios,android,function(data){
|
||||
if(data.status){
|
||||
$('#ios').hide();
|
||||
$('#final_ios').show();
|
||||
} else {
|
||||
$('#duplicate_ios').show();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function register(email,code,ios,android, success){
|
||||
$.ajax({
|
||||
url: '../api.php',
|
||||
type: 'GET',
|
||||
dataType: 'JSON',
|
||||
data: {
|
||||
call: 'beta',
|
||||
ios: ios,
|
||||
android: android,
|
||||
email: email,
|
||||
code: code
|
||||
},
|
||||
success: success
|
||||
});
|
||||
}
|
||||
|
||||
function validateEmail(email) {
|
||||
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||||
return re.test(String(email).toLowerCase());
|
||||
}
|
||||
150
democracy/page/default_invite/tpl/default_invite.tpl
Normal file
150
democracy/page/default_invite/tpl/default_invite.tpl
Normal file
@ -0,0 +1,150 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<title>${title_start}</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
${css}
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-109296340-1"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'UA-109296340-1');
|
||||
</script>
|
||||
|
||||
<meta name="author" content="Democracy Deutschland e.V.">
|
||||
<meta name="publisher" content="Democracy Deutschland e.V.">
|
||||
<meta name="copyright" content="Democracy Deutschland e.V.">
|
||||
<meta name="description" content="DEMOCRACY ist eine Initiative für mehr Basisdemokratie in Deutschland.">
|
||||
<meta name="keywords" content="Volksabstimmung, Mitbestimmung, Basisdemokratie, Bundestag, Bundestagsabstimmungen, Abstimmungsinitiativen, Demokratie,Bürgerwünsche, Politik, Stimme, Diskussionsforum, Wahlstimmen, abstimmen, appstimmen">
|
||||
<meta name="page-topic" content="Gesellschaft">
|
||||
<meta name="page-type" content="Bericht Reportage">
|
||||
<meta name="audience" content="Anfänger, Azubis, Erwachsene, Experten, Fortgeschrittene, Frauen, Jugendliche, Männer, Profis, Schüler, Studenten">
|
||||
<meta name="robots" content="index, follow">
|
||||
<meta name="DC.Creator" content="Democracy Deutschland e.V.">
|
||||
<meta name="DC.Publisher" content="Democracy Deutschland e.V.">
|
||||
<meta name="DC.Rights" content="Democracy Deutschland e.V.">
|
||||
<meta name="DC.Description" content="${meta_start_DC.Description}">
|
||||
<meta name="DC.Language" content="de">
|
||||
<meta name="revisit-after" content="3 DAYS" />
|
||||
<meta property="og:url" content="${meta_start_og:url}"/>
|
||||
<meta property="og:type" content="article"/>
|
||||
<meta property="og:title" content="${title_start}"/>
|
||||
<meta property="og:description" content="${meta_start_og:description}"/>
|
||||
<meta property="og:image" content="${meta_start_og:image}" />
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
<meta name="fragment" content="!">
|
||||
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="./files/icons/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="./files/icons/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="./files/icons/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="./files/icons/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="./files/icons/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="./files/icons/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="./files/icons/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="./files/icons/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="./files/icons/apple-icon-180x180.png">
|
||||
<link rel="icon" href="./favicon.ico" type="image/x-icon" />
|
||||
<link rel="icon" type="image/x-icon" sizes="192x192" href="./files/icons/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/x-icon" sizes="32x32" href="./files/icons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/x-icon" sizes="96x96" href="./files/icons/favicon-96x96.png">
|
||||
<link rel="icon" type="image/x-icon" sizes="16x16" href="./favicon.ico">
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<div id="code" code="${code}" valid="${code_valid}"></div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 no-gutters" style="text-align: center;">
|
||||
<img src="../files/invite/group@3x.png" alt="DEMOCRACY Logo" style="width: 120px; margin-top: 25px">
|
||||
<h1>DEMOCRACY</h1>
|
||||
<h2>prototyp_access</h2>
|
||||
<div id="apply" class="row step">
|
||||
<div id="apply_text" class="col-12 col-md-10 offset-md-1">
|
||||
Als crowdmoderierte und politisch unabhängige
|
||||
Plattform informiert die App DEMOCRACY über die
|
||||
aktuellen Bundestagsabstimmungen und ermöglicht
|
||||
den Nutzer*Innen eine eigene direkte Abstimmung
|
||||
</div>
|
||||
<div id="apply_website" class="col-12">
|
||||
<a href="https://www.democracy-deutschland.de" target="blank"><i class="fa fa-arrow-right"></i> Website</a>
|
||||
</div>
|
||||
<div id="apply_go" class="col-10 col-md-8 offset-1 offset-md-2 beta_button">
|
||||
JETZT FÜR DEN PROTOTYP BEWERBEN
|
||||
</div>
|
||||
</div>
|
||||
<div id="device" class="row step">
|
||||
<div id="select_ios" class="col-6 col-sm-6 col-md-4 offset-md-2 pull-left">
|
||||
<img src="../files/invite/group2@3x.png" alt="Apple Logo" style="width: 100%;">
|
||||
</div>
|
||||
<div id="select_android" class="col-6 col-sm-6 col-md-4 pull-left">
|
||||
<img src="../files/invite/group3@3x.png" alt="Android Logo" style="width: 100%;">
|
||||
</div>
|
||||
<div class="col-12" id="plattform_text">Bitte wähle Deine Plattform</div>
|
||||
</div>
|
||||
<div id="ios" class="row step">
|
||||
<div class="col-10 col-md-8 offset-1 offset-md-2" style="padding: 0;">
|
||||
<input id="appleid" type="email" placeholder="Apple-ID eingeben">
|
||||
<p id="duplicate_ios">Diese EMail scheint bereits registriert zu sein!</p>
|
||||
</div>
|
||||
<div id="ios_go" class="col-10 col-md-8 offset-1 offset-md-2 beta_button">
|
||||
FREISCHALTUNG ANFORDERN
|
||||
</div>
|
||||
<div id="apple_id_text" class="col-12">Bitte gib Deine Apple-ID ein</div>
|
||||
<div id="apple_id_text_sub" class="col-12">(Die AppStore-EMail-Adresse Deines Handys)</div>
|
||||
</div>
|
||||
<div id="android" class="row step">
|
||||
<div class="col-10 col-md-8 offset-1 offset-md-2" style="padding: 0;">
|
||||
<input id="googleid" type="email" placeholder="Google Play ID eingeben">
|
||||
<p id="duplicate_android">Diese EMail scheint bereits registriert zu sein!</p>
|
||||
</div>
|
||||
<div id="android_go" class="col-10 col-md-8 offset-1 offset-md-2 beta_button">
|
||||
FREISCHALTUNG ANFORDERN
|
||||
</div>
|
||||
<div id="google_id_text" class="col-12">Bitte gib Deine Google Play ID ein</div>
|
||||
<div id="google_id_text_sub">(Die Google-EMail-Adresse Deines Handys)</div>
|
||||
</div>
|
||||
<div id="final_ios" class="row step">
|
||||
<div class="col-10 col-md-8 offset-1 offset-md-2" style="padding: 0; font-size: 24px;">
|
||||
Sobald Du im AppStore freigeschaltet wurdest, erhälst Du eine EMail mit einer genauen Anleitung von uns.<br>
|
||||
</div>
|
||||
<div class="col-10 col-md-8 offset-1 offset-md-2" style="padding: 0; font-size: 22px; margin-top: 25px;">
|
||||
<ol style="line-height: 2; text-align: left;">
|
||||
<li>Du erhälst demnächst eine E-Mail von TestFlight</li>
|
||||
<li style="color: lightgrey;">Öffne diese Mail, klicke den blauen Button View in TestFlight</li>
|
||||
<li style="color: lightgrey;">Lade dir TestFlight im AppStore herunter</li>
|
||||
<li style="color: lightgrey;">Öffne TestFlight und Drücke “Redeem”</li>
|
||||
<li style="color: lightgrey;">Gib den Bestätigungscode, also z.B. QJHFFNDF<br>ein und lade Dir DEMOCRACY herunter.</li>
|
||||
<li style="color: lightgrey;">Öffne DEMOCRACY und leg los!</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div id="final_android" class="row step">
|
||||
<div class="col-10 col-md-8 offset-1 offset-md-2" style="padding: 0; font-size: 24px;">
|
||||
Sobald Du im PlayStore freigeschaltet wurdest, erhälst Du eine EMail mit einer genauen Anleitung von uns.<br>
|
||||
</div>
|
||||
<div class="col-10 col-md-8 offset-1 offset-md-2" style="padding: 0; font-size: 22px; margin-top: 25px;">
|
||||
<ol style="line-height: 2; text-align: left;">
|
||||
<li>Du erhälst demnächst eine E-Mail von uns mit einem Bestätigungslink</li>
|
||||
<li style="color: lightgrey;">Öffne diese Mail auf deinem Handy und folge dem Link</li>
|
||||
<li style="color: lightgrey;">Drücke den Button ganz unten auf dem es heißt: Tester werden</li>
|
||||
<li style="color: lightgrey;">Eine neue Ansicht lädt, drücke nun die App DEMOCRACY bei Google Play herunterladen.</li>
|
||||
<li style="color: lightgrey;">Du wirst in den Google Play Store weitergeleitet und kannst die App dort herunterladen, öffnen und testen</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
${js}
|
||||
</body>
|
||||
</html>
|
||||
12
democracy/page/page_invite.php
Normal file
12
democracy/page/page_invite.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
class page_invite extends \SYSTEM\API\api_default {
|
||||
public static function get_apigroup(){
|
||||
return 1;}
|
||||
public static function get_class($params = null){
|
||||
return self::class;}
|
||||
public static function get_default_state() {
|
||||
return null;}
|
||||
|
||||
public static function default_page($_escaped_fragment_ = null){
|
||||
return (new default_invite())->html($_escaped_fragment_);}
|
||||
}
|
||||
@ -1,3 +1,2 @@
|
||||
<?php
|
||||
//require_once dirname(__FILE__).'/saimod_webcraft_updates/autoload.inc';
|
||||
//require_once dirname(__FILE__).'/saimod_webcraft_contact/autoload.inc';
|
||||
require_once dirname(__FILE__).'/saimod_beta/autoload.inc';
|
||||
@ -4,6 +4,8 @@ class DATA_DEMOCRACY extends \SYSTEM\DB\QI {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function files_mysql(){
|
||||
return array( (new \PSQL('/mysql/schema_subscribe.sql'))->SERVERPATH(),
|
||||
(new \PSQL('/mysql/schema_beta.sql'))->SERVERPATH(),
|
||||
(new \PSQL('/mysql/schema_beta_code.sql'))->SERVERPATH(),
|
||||
(new \PSQL('/mysql/system_page.sql'))->SERVERPATH(),
|
||||
(new \PSQL('/mysql/system_text.sql'))->SERVERPATH(),
|
||||
(new \PSQL('/mysql/system_api.sql'))->SERVERPATH());
|
||||
|
||||
10
democracy/sql/mysql/schema_beta.sql
Normal file
10
democracy/sql/mysql/schema_beta.sql
Normal file
@ -0,0 +1,10 @@
|
||||
CREATE TABLE `beta` (
|
||||
`code` varchar(8) DEFAULT NULL,
|
||||
`email` varchar(255) NOT NULL DEFAULT '',
|
||||
`android` int(11) DEFAULT NULL,
|
||||
`ios` int(11) DEFAULT NULL,
|
||||
`redeemedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`storedAt` timestamp NULL DEFAULT NULL,
|
||||
`emailedAt` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`email`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
6
democracy/sql/mysql/schema_beta_code.sql
Normal file
6
democracy/sql/mysql/schema_beta_code.sql
Normal file
@ -0,0 +1,6 @@
|
||||
CREATE TABLE `beta_code` (
|
||||
`code` varchar(8) NOT NULL,
|
||||
`createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`comment` varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
@ -1,2 +1,9 @@
|
||||
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (100, 0, 2, 10, 'send_mail_faq', 'data', 'JSON');
|
||||
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (110, 0, 2, 10, 'send_subscribe', 'data', 'JSON');
|
||||
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (110, 0, 2, 10, 'send_subscribe', 'data', 'JSON');
|
||||
|
||||
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (120, 0, 2, 10, 'beta', 'ios', 'BOOL');
|
||||
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (121, 0, 2, 10, 'beta', 'android', 'BOOL');
|
||||
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (122, 0, 2, 10, 'beta', 'email', 'EMAIL');
|
||||
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (123, 0, 2, 10, 'beta', 'code', 'STRING');
|
||||
|
||||
# REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (100, 1, 3, -1, null, '_code', 'STRING');
|
||||
9
invite.php
Normal file
9
invite.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
require_once 'lib/autoload.inc'; //SYSTEM Classes
|
||||
require_once 'democracy/autoload.inc'; //Project Classes
|
||||
require_once 'config.php';
|
||||
|
||||
\SYSTEM\system::start(\WEBCRAFT\democracy_deutschland_config());
|
||||
|
||||
echo \SYSTEM\API\api::run('\SYSTEM\API\verify', 'page_invite', array_merge($_POST,$_GET), 1, false, true);
|
||||
new \SYSTEM\LOG\COUNTER("Page was called sucessfully.");
|
||||
Reference in New Issue
Block a user