v20200331
authorkilian (ksmachome) <ksaffran@dks.lu>
Tue, 31 Mar 2020 05:48:46 +0000 (07:48 +0200)
committerkilian (ksmachome) <ksaffran@dks.lu>
Tue, 31 Mar 2020 05:48:46 +0000 (07:48 +0200)
38 files changed:
.vscode/settings.json [new file with mode: 0644]
backoffice/api/index.cgi
backoffice/api/lib/dksconfig.pm
backoffice/api/lib/sendemail.pm
backoffice/api/lib/session.pm
backoffice/css/w3pro.css
backoffice/data/auth/.passwd [new file with mode: 0644]
backoffice/data/auth/kilian.conf [new file with mode: 0644]
backoffice/data/mail/block/greeting.tt [new file with mode: 0644]
backoffice/data/mail/block/signature.tt [new file with mode: 0644]
backoffice/data/mail/body/luxopen_registration.tt [new file with mode: 0644]
backoffice/data/mail/body/user_forgotpasswd.tt [new file with mode: 0644]
backoffice/data/mail/body/user_registration.tt [new file with mode: 0644]
backoffice/data/mail/mail.tt [new file with mode: 0644]
backoffice/img/toplogo.png
backoffice/tmpl/skeleton/login.tt
css/theme.css
css/w3pro.css
divtable.html [new file with mode: 0644]
img/cloud.jpg [new file with mode: 0644]
img/saffranitconsulting_obj.png [new file with mode: 0644]
img/saffranitconsulting_obj.svg [new file with mode: 0755]
img/sitc2.png [new file with mode: 0644]
img/slides/slide1.jpg
img/slides/slide2.jpg [new file with mode: 0644]
img/slides/slide3.jpg [new file with mode: 0644]
img/slides/slide4.jpg [new file with mode: 0644]
index.cgi
index_new.cgi [new file with mode: 0755]
js/site.js [new file with mode: 0644]
js/slides.js
table.html [new file with mode: 0644]
tmpl/block/footer.tt
tmpl/block/gdpr.tt [new file with mode: 0644]
tmpl/block/topnav.tt
tmpl/page/aboutus.tt
tmpl/page/index.tt
tmpl/skeleton/index.tt

diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644 (file)
index 0000000..0b8e3b3
--- /dev/null
@@ -0,0 +1,17 @@
+{
+  "perlSyntax.includePaths": [
+    "${workspaceFolder}/backoffice/api/lib/perl5",
+    "${workspaceFolder}/backoffice/api/lib",
+],
+"tidyHtml.optionsTidy": {
+  "indent-attributes": false,
+  "tab-size":2,
+  "indent":true,
+  "show-body-only":false,
+  "fix-uri": false,
+  "newline":"LF",
+  "drop-empty-elements": false,
+  "hide-comments": true,
+}
+
+}
\ No newline at end of file
index 56cf968..1bea1e5 100755 (executable)
@@ -1,4 +1,4 @@
-#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl
+#!/usr/local/bin/perl
 use strict;
 use lib ('./lib/perl5');
 use lib ('./lib');
index 17c9ea8..aad26bf 100644 (file)
@@ -6,15 +6,16 @@ use lib ('./lib');
 use lib ('./');
 use File::Basename;
 use Exporter 'import';
-our @EXPORT_OK = qw($sitecfg);
+our @EXPORT_OK = qw($sitecfg $messages);
 
 our $sitecfg ={
-  cookiename => 'potlu',
-  dbtype => 'PgPP',
-  dsn => 'DBI:PgPP:dbname=potlu_db;host=DKS-LAPTOP.fritz.box',
-  #dsn => 'DBI:PgPP:dbname=solarch_db;host=sql629.your-server.de',
-  dbuser => 'potlu_user',
-  dbpassword => 'r2btTTRfuJz4whez',
+  cookiename => 'saffranlu',
+  gdpr => 'saffranlu_gdpr',
+  # dbtype => 'PgPP',
+  # dsn => 'DBI:PgPP:dbname=potlu_db;host=DKS-LAPTOP.fritz.box',
+  # #dsn => 'DBI:PgPP:dbname=solarch_db;host=sql629.your-server.de',
+  # dbuser => 'potlu_user',
+  # dbpassword => 'r2btTTRfuJz4whez',
   page => 'index.tt',
   pagename => 'index',
   basepath => substr((exists($ENV{"SCRIPT_FILENAME"})?dirname($ENV{"SCRIPT_FILENAME"}):dirname($0)),length($ENV{"DOCUMENT_ROOT"})),
@@ -25,4 +26,55 @@ our $sitecfg ={
   sitename => 'Accès - Client'
 };
 
+our $messages ={
+  de => {
+    gdpr_notice => "Diese Seite verwendet Cookies zur Optimierung der Browserfunktion.",
+    unknown_login => "Passwort oder Login unbekannt!",
+    service_error =>"Dieser Dienst ist leider zur Zeit nicht verfügbar!",
+    sent_newpassword =>"Wir haben dir eine E-Mail mit neuem Passwort geschickt!",
+    common_error => "Es ist ein Fehler aufgetreten, bitte später probieren!",
+    fill_all_fields => "Bitte alle Felder ausfüllen!",
+    user_exists_already => "Es existiert bereits ein Benutzer mit derselben E-Mail-Addresse!",
+    verification_mail_sent =>"Danke,<br/>wir haben dir eine E-Mail mit Verifizierungs-Code geschickt!<br/>Diesen Code bitte hier unten eintragen, um dein Konto zu validieren!",
+    sending_mail_failed => "Wir konnten dir leider keine E-Mail schicken!",
+    code_unknown => "Unbekannter Code!"    
+  },
+  lb => {
+    gdpr_notice => "Dësen Site benotzt Cookies fir är Navigatioun ze optiméieren.",
+    unknown_login => "Passwuert oder Login onbekannt!",
+    service_error =>"Dësen Service fonktionnéiert zur Zait leider net!",
+    sent_newpassword =>"Mir hun dir eng E-Mail matt engem neien PAsswuert gescheckt!",
+    common_error => "Et ass een Fehler opgetratt, probéier et spéider w.e.g.!",
+    fill_all_fields => "we.g. all Felder ausfëllen!",
+    user_exists_already => "Et existéirt schon een Benotzer mit dëser E-Mail-Address!",
+    verification_mail_sent =>"Merci,<br/>mir hun dir eng E-Mail matt Vérifiziéierungs-Code geschëckt!<br/>Dësen Code w.e.g hei drënner androën, fir dain Kont ze validéieren!",
+    sending_mail_failed => "Mir konnten dir leider keng E-Mail schëcken!",
+    code_unknown => "Unbekannten Code!"  
+  },
+  fr => {
+    gdpr_notice => "Ce site utilise des cookies pour améliorer votre navigation.",
+    unknown_login => "Passwort oder Login unbekannt!",
+    service_error =>"Dieser Dienst ist leider zur Zeit nicht verfügbar!",
+    sent_newpassword =>"Wir haben dir eine E-Mail mit neuem Passwort geschickt!",
+    common_error => "Es ist ein Fehler aufgetreten, bitte später probieren!",
+    fill_all_fields => "Bitte alle Felder ausfüllen!",
+    user_exists_already => "Es existiert bereits ein Benutzer mit derselben E-Mail-Addresse!",
+    verification_mail_sent =>"Danke,<br/>wir haben dir eine E-Mail mit Verifizierungs-Code geschickt!<br/>Diesen Code bitte hier unten eintragen, um dein Konto zu validieren!",
+    sending_mail_failed => "Wir konnten dir leider keine E-Mail schicken!",
+    code_unknown => "Unbekannter Code!"  
+  },
+  en => {
+    gdpr_notice => "This site uses cookies to offer you a better browsing experience.",
+    unknown_login => "Passwort oder Login unbekannt!",
+    service_error =>"Dieser Dienst ist leider zur Zeit nicht verfügbar!",
+    sent_newpassword =>"Wir haben dir eine E-Mail mit neuem Passwort geschickt!",
+    common_error => "Es ist ein Fehler aufgetreten, bitte später probieren!",
+    fill_all_fields => "Bitte alle Felder ausfüllen!",
+    user_exists_already => "Es existiert bereits ein Benutzer mit derselben E-Mail-Addresse!",
+    verification_mail_sent =>"Danke,<br/>wir haben dir eine E-Mail mit Verifizierungs-Code geschickt!<br/>Diesen Code bitte hier unten eintragen, um dein Konto zu validieren!",
+    sending_mail_failed => "Wir konnten dir leider keine E-Mail schicken!",
+    code_unknown => "Unbekannter Code!"  
+  }
+};
+
 1;
\ No newline at end of file
index fd53b2c..52a358e 100644 (file)
 package sendemail;
 
 use strict;
-use lib ('./lib/perl5');
-use lib ('./lib');
+use lib ('/usr/home/dksalu/public_html/luxopen_lu/backoffice/api/lib/perl5');
+use lib ('lib');
 use lib ('./');
 use Data::Dumper;
+use Template;
+use CGI;
+use Cwd;
 use File::Basename qw/dirname basename/;
 use dksdb;
 
+use dksconfig qw($sitecfg);
+
 sub new {
     my $class = shift;
     my $self = bless {}, $class;
-    $self->{server} = "mail.your-server.de";
-    $self->{port} = "587";
-    $self->{user} = 'webmaster@solana-architecture.lu';
-    $self->{password} = "FLxCtIQs720K8n79";
-    $self->{from} = 'webmaster@solana-architecture.lu';
+    $self->{server} = $sitecfg->{mail}->{server};
+    $self->{port} = $sitecfg->{mail}->{port};
+    $self->{user} = $sitecfg->{mail}->{user};
+    $self->{password} = $sitecfg->{mail}->{password};
+    $self->{from} = $sitecfg->{mail}->{from};
+    $self->{templates} = $sitecfg->{mail}->{templates};
     return $self;
 }
 
-sub sendemail(){
+sub gentemplate(){
   my $self = shift;
-  my $template = shift;
-  my $iduser = shift;
-  my $sendto = shift;
-  my $data = shift;
-  my $attach = shift;
-  my $body = "";
-  my $subject = "";
-  my $maildata = ();
-  my $db = dksdb->new();
-  my $send = -1;
-  my $tmpl = $db->dbquerysorted("select *,ml.mailtemplate from mailtemplates mt join maillayouts ml on (mt.id_maillayout=ml.id) where templatename='".$template."';");
-  if (keys(%{$tmpl}) > 0){
-    $tmpl = $tmpl->{0};
-  }
-  # open (LOG,">>tmp/sendmail.log");
-  # print LOG $ENV{SCRIPT_FILENAME};
-  # print LOG "SEND EMAIL:".Dumper($data)."\n";
-  # close(LOG);
-  my $datasql = $tmpl->{'emaildatasql'};
-  $data->{id} = $iduser;
-  foreach my $key (keys(%{$data})){
-    my $srch = '%%'.lc($key).'%%';
-    my $repl = $data->{$key};
-    $datasql =~ s/$srch/$repl/g;
-  }
-  # open (LOG,">>tmp/sendmail.log");
-  # print LOG "TEMPLATE DATA:".$datasql."\n";
-  # close(LOG);
-  $maildata = $db->dbquerysorted($datasql);
+  my $mailtemplate = shift;
+  my $email = shift;
+  my $vars = $sitecfg;
+  $vars->{data} = shift;
+  $vars->{bodytemplate} = $mailtemplate.".tt";
+  #$vars->{siteurl} = CGI::url({-base=>1}).dirname($vars->{basepath});
+
   
-  $body = $tmpl->{'emailtext'};
-  $subject = $tmpl->{'mailsubject'};
-  foreach my $key (keys(%{$maildata->{0}})){
-    $data->{$key} = $maildata->{0}->{$key};   
-  }
-  foreach my $key (keys(%{$data})){
-    my $srch = '%%'.lc($key).'%%';
-    my $repl = $data->{$key};
-    $body =~ s/$srch/$repl/g;
-    $subject =~ s/$srch/$repl/g;
-  }
-  my $bodytmpl = $tmpl->{mailtemplate};
-  $bodytmpl =~ s/%%BODYCONTENT%%/$body/;
-  my $siteurl = $ENV{'REQUEST_SCHEME'}.'://'.$ENV{"HTTP_HOST"};
-  $bodytmpl =~ s/%%siteurl%%/$siteurl/g;
-  $bodytmpl =~ s/%%SITEURL%%/$siteurl/g;
-  $bodytmpl =~ s/\r//g;
-  #$bodytmpl =~ s/"/\\\"/g;
-  #PROD REPLACE all not replaced DATA       
-  #$bodytmpl =~ s/%%\w+%%//g;
-  #$sendto = 'ksaffran@dks.lu';
-  # open (LOG,">>tmp/sendmail.log");
-  # print LOG "SUBJECT:".$subject."\n";
-  # print LOG "BODY TEXT:".$bodytmpl."\n";
-  # close(LOG);
-  if (($bodytmpl ne "") && ($subject ne "") && ($sendto =~ /.+\@.+\..+/)){
+  chdir($sitecfg->{docroot}.$sitecfg->{apidatapath}.'mail');
+  my $bodyfile = dirname($ENV{SCRIPT_FILENAME}).'/tmp/'.$mailtemplate.'_'.$$.'.mail';
+  my $template = Template->new({INCLUDE_PATH => [$sitecfg->{docroot}.$sitecfg->{apidatapath}.'mail'],OUTPUT => $bodyfile});
+  $template->process("mail.tt",$vars) || die "Template process failed: ", $template->error(), "\n";
+  my $db = dksdb->new();
+
 
-    
-    my $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/sendEmail';
-    my $f = dirname($ENV{SCRIPT_FILENAME}).'/tmp/mailbody_'.$sendto.'.txt';
-    $f =~ s/\@/_/g;
-    if (! -e  $binsemail){
-      $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/api/sendEmail';
-      $f = dirname($ENV{SCRIPT_FILENAME}).'/api/tmp/mailbody_'.$sendto.'.txt';
-    $f =~ s/\@/_/g;
-      if (! -e $binsemail){
-        return 256;
-      }
-    }
-    
-    my $cmd= 'perl "'.$binsemail.'" -f '.$tmpl->{mailfrom}.' ';
+  my $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/sendEmail';
+  if (! -e $binsemail){
+    return 256;
+  }
+  my $cmd= 'perl "'.$binsemail.'" -f '.$self->{from}.' ';
     $cmd .= ' -s "'.$self->{server}.':'.$self->{port}.'" -xu "'.$self->{user}.'" -xp "'.$self->{password}.'" -q ';
     $cmd .= '-o tls=auto ';
-    $cmd .= '-t "'.$sendto.'" ';
-    $cmd .= '-u "'.$subject.'" ';
-  #    open (LOG,">>sendmail.log");
-  #  print LOG $cmd."\n";
-  # # print LOG "BODY TEXT:".$bodytmpl."\n";
-  #  close(LOG);
-    open(EML,">".$f);
-    print EML $bodytmpl;
-    close(EML);
-    # $cmd .= '-m "'.$bodytmpl.'" ';
-    if ($attach != undef){
-      $cmd .= " -a";
+    $cmd .= '-t "'.$email.'" ';
+    $cmd .= '-u "'.$self->{templates}->{$mailtemplate}.'" ';
+    $cmd .= '-o message-content-type=html ';
+    $cmd .= '-o message-charset=ISO-8859-1 ';
+    $cmd .= '-o message-file='.$bodyfile.' ';
+    # if ($attach != undef){
+    #   $cmd .= " -a";
       
-      foreach my $a (@{$attach}){
-        $cmd .= " ".$a." ";
-      }
-    }
-    # open (LOG,">>tmp/sendmail.log");
-    # print LOG "SEND EMAIL CMD:".$cmd."\n";
-    # close(LOG);
-    # $cmd =~ s/'/''/g; 
-    $send = system($cmd);
-    # open (LOG,">>tmp/sendmail.log");
-    # print LOG "CMD RETURN NUM:".$send."\n";
-    # close(LOG);
-    unlink($f);
-  }    
-  return $send;
+    #   foreach my $a (@{$attach}){
+    #     $cmd .= " ".$a." ";
+    #   }
+    # }
+    my $send = system($cmd);
+    return $send;
+    unlink($bodyfile);
 }
 
+
 1;
\ No newline at end of file
index b44184f..2eb684b 100644 (file)
@@ -5,10 +5,8 @@ use lib ('./lib/perl5');
 use lib ('./lib');
 use lib ('./');
 use File::Basename;
-use Digest::SHA qw(sha256_hex);
 use Data::Dumper;
-
-use dksdb;
+use dksconfig qw($sitecfg $messages);
 use sendemail;
 # use Data::Dumper;
 
@@ -23,12 +21,7 @@ sub checklogin(){
   my $self = shift;
   my $login = shift;
   my $password = shift;
-  # open FILE,">>tmp/sql.log";
-  # print FILE "pwd: $password\n";
-  # close(FILE);
-  my $pwd = sha256_hex($password);
   my $ret->{messagetype} ='w3-red';
-  # my $newsid = undef;
   $login = lc($login);
   $login =~ s/^\s+//;
   $login =~ s/\s+$//;
@@ -36,37 +29,41 @@ sub checklogin(){
   $ret->{message} = "Mot de passe ou Login pas inconnue!";
   $ret->{messagetype} = "w3-red";
   $ret->{sid} = undef;
-  my $siddata = $self->{db}->dbquerysorted("select * from checklogin('".$self->{db}->securetext($login)."','".$pwd."','".$ENV{REMOTE_ADDR}."','".$ENV{HTTP_USER_AGENT}."');");
-  if (keys(%{$siddata}) > 0){
-  #    open FILE,">>tmp/sql.log";
-  #  print FILE Dumper($siddata);
-  #  close(FILE);
-    $ret->{sid} = $siddata->{0}->{checklogin};
+  my $cmd = 'htpasswd -v -b -B '.$sitecfg->{datapath}.'/auth/.passwd $login $password';
+  my $pwcheck=`$cmd`;
+  chomp($pwcheck);
+  if ($pwcheck =~ /$login.+correct/){
+    my $rstr = $self->randomstring(40);   
+    open(SESS,">".$sitecfg->{datapath}.'/sessions/'.$rstr.'.txt');
+    print SESS "$login";
+    close(SESS);
+    $ret->{sid} = $rstr;
   }
   return $ret;
 }
 
 sub savepassword(){
   my $self = shift;
-  my $iduser = shift;
+  my $username = shift;
   my $newpwd = shift;
-  my $pwd = sha256_hex($newpwd);
-  $self->{db}->dbexec("UPDATE users SET userpassword = '".$pwd."' WHERE id=".$iduser.";");
+  #my $pwd = sha256_hex($newpwd);
+  my $cmd = 'htpasswd -b -B '.$sitecfg->{datapath}.'/auth/.passwd $username $newpwd';
+  my $pwupd=`$cmd`;
+  chomp($pwupd);
   return 1;
 }
 
 sub passwordforgotten(){
   my $self = shift;
-  my $email = shift;
+  my $login = shift;
   my $ret->{messagetype} ='w3-red';
   $ret->{message} = "Onbekannt E-mail!";
-  my $sql = "select id,userpassword from users where username='".$self->{db}->securetext($email)."';";
-  my $ex = $self->{db}->dbquerysorted($sql);
-  if (keys(%{$ex}) > 0){
+  my $cmd = 'grep -e "^'.$login.':" '.$sitecfg->{datapath}.'/auth/.passwd';
+  my $userexists = `$cmd`;
+  chomp($userexists);
+  if ($userexists ne ""){
     my $newpwd = $self->randomstring(12);
-    my $pwd = sha256_hex($newpwd);
-    $self->{db}->dbexec("UPDATE users SET userpassword = '".$pwd."' WHERE id=".$ex->{0}->{id}.";");
+    $self->savepassword($login,$newpwd);
     my $data->{newpassword} = $newpwd; 
     my $eml = sendemail->new();
     my $mret = $eml->sendemail('user_forgotpasswd',$ex->{0}->{id},$email,$data,undef);
index 7b4b45d..66903ea 100644 (file)
@@ -27,10 +27,10 @@ legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}t
 html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden}
 h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif}
 h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin: 0}.w3-wide{letter-spacing:4px}
-hr{border:0;border-top:1px solid #eee;margin:20px 0}
+hr{border:0;border-top:0.5px solid #eee;margin:20px 0}
 .w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit}
-.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc}
-.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1}
+.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:0.5px solid #ccc}
+.w3-bordered tr,.w3-table-all tr{border-bottom:0.5px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1}
 .w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1}
 .w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center}
 .w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
@@ -115,9 +115,9 @@ hr{border:0;border-top:1px solid #eee;margin:20px 0}
 .w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
 .w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
 .w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
-.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
-.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
-.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
+.w3-animate-top{position:relative;animation:animatetop 2s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
+.w3-animate-left{position:relative;animation:animateleft 2s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
+.w3-animate-right{position:relative;animation:animateright 2s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
 .w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
 .w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
 .w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important}
@@ -230,28 +230,28 @@ hr{border:0;border-top:1px solid #eee;margin:20px 0}
 .w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important}
 .w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffd7!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important}
 /* DEFAULT THEME */
-.w3-theme-l5 {color:#000 !important; background-color:#f6f8fc !important}
-.w3-theme-l4 {color:#000 !important; background-color:#e1e9f6 !important}
-.w3-theme-l3 {color:#000 !important; background-color:#c3d3ed !important}
-.w3-theme-l2 {color:#000 !important; background-color:#a5bee4 !important}
-.w3-theme-l1 {color:#fff !important; background-color:#88a8db !important}
-.w3-theme-d1 {color:#fff !important; background-color:#5180cb !important}
-.w3-theme-d2 {color:#fff !important; background-color:#3a6fc3 !important}
-.w3-theme-d3 {color:#fff !important; background-color:#3361aa !important}
-.w3-theme-d4 {color:#fff !important; background-color:#2c5392 !important}
-.w3-theme-d5 {color:#fff !important; background-color:#24457a !important}
+.w3-theme-l5 {color:#000 !important; background-color:#f4f4f4 !important}
+.w3-theme-l4 {color:#000 !important; background-color:#d9d9d9 !important}
+.w3-theme-l3 {color:#000 !important; background-color:#b3b3b3 !important}
+.w3-theme-l2 {color:#fff !important; background-color:#8c8c8c !important}
+.w3-theme-l1 {color:#fff !important; background-color:#666666 !important}
+.w3-theme-d1 {color:#fff !important; background-color:#393939 !important}
+.w3-theme-d2 {color:#fff !important; background-color:#333333 !important}
+.w3-theme-d3 {color:#fff !important; background-color:#2d2d2d !important}
+.w3-theme-d4 {color:#fff !important; background-color:#262626 !important}
+.w3-theme-d5 {color:#fff !important; background-color:#202020 !important}
 
-.w3-theme-light {color:#000 !important; background-color:#f6f8fc !important}
-.w3-theme-dark {color:#fff !important; background-color:#24457a !important}
-.w3-theme-action {color:#fff !important; background-color:#24457a !important}
+.w3-theme-light {color:#000 !important; background-color:#f4f4f4 !important}
+.w3-theme-dark {color:#fff !important; background-color:#202020 !important}
+.w3-theme-action {color:#fff !important; background-color:#202020 !important}
 
-.w3-theme {color:#fff !important; background-color:#6a92d3 !important}
-.w3-text-theme {color:#6a92d3 !important}
-.w3-border-theme {border-color:#6a92d3 !important}
+.w3-theme {color:#fff !important; background-color:#414141 !important}
+.w3-text-theme {color:#414141 !important}
+.w3-border-theme {border-color:#414141 !important}
 
-.w3-hover-theme:hover {color:#fff !important; background-color:#6a92d3 !important}
-.w3-hover-text-theme:hover {color:#6a92d3 !important}
-.w3-hover-border-theme:hover {border-color:#6a92d3 !important}
+.w3-hover-theme:hover {color:#fff !important; background-color:#414141 !important}
+.w3-hover-text-theme:hover {color:#414141 !important}
+.w3-hover-border-theme:hover {border-color:#414141 !important}
 
 .w3-label { color: rgb(153, 150, 150);}
 /* #main {margin-left: 210px;} */
diff --git a/backoffice/data/auth/.passwd b/backoffice/data/auth/.passwd
new file mode 100644 (file)
index 0000000..b77f434
--- /dev/null
@@ -0,0 +1,2 @@
+kilian:$2y$05$YXsrbwMHweXfXt1dr5Z0juN35tx7WtcXgg0PR9Co1KwMfb6uVu/fq
+kilian2:$2y$05$a2XKnz9Mc2JWov9cyy7FuuEuphHJEn3pEJCZ1q8jhfmfZiRUCE9p2
diff --git a/backoffice/data/auth/kilian.conf b/backoffice/data/auth/kilian.conf
new file mode 100644 (file)
index 0000000..5b62146
--- /dev/null
@@ -0,0 +1,2 @@
+#username|usergroup|prename|surname
+kilian|admin|Kilian|Saffran
\ No newline at end of file
diff --git a/backoffice/data/mail/block/greeting.tt b/backoffice/data/mail/block/greeting.tt
new file mode 100644 (file)
index 0000000..3af37dc
--- /dev/null
@@ -0,0 +1,4 @@
+[% quser = dksdb.query("select prename,surname from public.users where id='$userid';") %]
+[% user = quser.get_all() %]
+
+<br/>
\ No newline at end of file
diff --git a/backoffice/data/mail/block/signature.tt b/backoffice/data/mail/block/signature.tt
new file mode 100644 (file)
index 0000000..e29b58a
--- /dev/null
@@ -0,0 +1,5 @@
+<br/>
+<br/>
+Meilleurs salutations,<br/>
+<br/>
+POT Support Team
\ No newline at end of file
diff --git a/backoffice/data/mail/body/luxopen_registration.tt b/backoffice/data/mail/body/luxopen_registration.tt
new file mode 100644 (file)
index 0000000..f85bc17
--- /dev/null
@@ -0,0 +1,55 @@
+[% qpay = dksdb.prepare("select replace(to_char(amount,'99999.99'),'.',',') as totalamount,prename,surname,email,gateway,status,reference from luxopenpayments where id= ?;") %]
+[% epay = qpay.execute(data.payment_id) %]
+[% pay = epay.get_all() %]
+Dear [% pay.0.prename %] [%pay.0.surname %],<br/>
+<br/>
+Thank you for registering to the Luxembourg Open and Masters 2020.<br/>
+<br/>
+
+[% IF pay.0.gateway == 'invoice' %]
+Please transfer the amount of <strong>[% pay.0.totalamount %] &euro;</strong><br/> 
+on the bank account of the <u>F&eacute;d&eacute;ration Luxembourgeoise de Darts</u><br/>
+IBAN: <strong>LU46 0021 1383 3440 0000</strong> / BIC: <strong>BILLLULL</strong><br/>
+with the message: <strong>Luxembourg Open [% pay.0.reference %]</strong>
+<br>payment must be done <strong>before 18th of July 2020</strong> to validate your registration.<br/>
+[% ELSE %]
+Total Registration fee: <strong>[% pay.0.totalamount %] &euro;</strong><br/>
+Registration fee paid by credit card.
+[% END %]
+<br/>
+<h3>Registration Details</h3>
+
+[% qreg = dksdb.prepare("select loreg.playerprename || ' ' || loreg.playersurname || ' (' ||  loreg.playercountry || ')' || coalesce( '/' || loreg.dpplayerprename || ' ' || loreg.dpplayersurname || ' (' ||  loreg.dpplayercountry || ')','') as description, 
+loreg.tournament,loreg.category,replace(to_char(loprod.price,'99999.99'),'.',',') as amount
+from luxopenregistrations loreg 
+left join luxopenproducts loprod on (loreg.category =loprod.category and loreg.tournament =loprod.product ) 
+where loreg.id_payment = ?;") %]
+<hr/>
+[% paradarts = 0 %]
+[% FOREACH reg = qreg.execute(data.payment_id) %]
+[% IF reg.category == 'Paradarts' %]
+  [% paradarts = 1 %]
+[% END %]
+<div class="regs">
+  <label>Tournament:</label>&nbsp;[% reg.tournament %] - [% reg.category %] <br/>
+  <label>Player:</label>&nbsp;[% reg.description %]<br/>
+  <label>Registration fee:</label>&nbsp;[% reg.amount %] &euro;
+</div>
+<hr/>
+
+[% END %]
+[% IF paradarts == 1 %]
+<br/>
+  Please don't forget to send us the <a href="https://world-disability-darts.org/resources/">WDDA Medical Assessment Form</a> for the Paradarts Tournament to <a href="mailto:info@luxopen.lu">info@luxopen.lu</a>
+<br/>
+[% END%]
+<br/>
+keep informed by following us on <a href="https://www.facebook.com/LuxembourgOpen">facebook</a><br/>
+or the Luxembourg Open and Masters Website: <a href="https://www.luxopen.lu">www.luxopen.lu</a><br/><br/>
+Kind regards,<br/>
+<br/>
+F?d?ration Luxembourgeoise de Darts ASBL<br/>
+3, route d'Arlon<br/>
+L-8009 Strassen<br/>
+<br/>
+
diff --git a/backoffice/data/mail/body/user_forgotpasswd.tt b/backoffice/data/mail/body/user_forgotpasswd.tt
new file mode 100644 (file)
index 0000000..5266e50
--- /dev/null
@@ -0,0 +1,12 @@
+Bonjour [% data.prename %] [% data.surname %],<br/>
+vous avez demandé un nouveau mot de passe via [% baseurl %]!<br/>
+cliquer ci-dessous pour confirmer votre demande.<a>
+
+<a href="[% siteurl %]/accountreset.html">Changer mot de passe</a>
+<br/>
+<br/>
+Meilleurs salutations,<br/>
+<br/>
+Saffran IT Consulting<br/>
+4, rue Principale<br/>
+L-3770 Tétange<br/>
diff --git a/backoffice/data/mail/body/user_registration.tt b/backoffice/data/mail/body/user_registration.tt
new file mode 100644 (file)
index 0000000..d781c06
--- /dev/null
@@ -0,0 +1,8 @@
+[% INCLUDE block/greeting.tt %]
+[% quser = dksdb.query("select username,vcode from public.users where id='$userid';") %]
+[% user = quser.get_all() %]
+Merci pour votre création de compte sur pot.lu,
+<br/><br/>
+votre code de validation: <strong  style="font-family: Courier New,Courier,Lucida Sans Typewriter,Lucida Typewriter,monospace;">[% user.0.vcode %]</strong><br/>
+Finissez votre régistration en entrant le votre code de validation ici: <a href="[% siteurl %]/validation.html">[% siteurl %]validation.html</a> 
+[% INCLUDE block/signature.tt %]
diff --git a/backoffice/data/mail/mail.tt b/backoffice/data/mail/mail.tt
new file mode 100644 (file)
index 0000000..da6ccbf
--- /dev/null
@@ -0,0 +1,28 @@
+<html>
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+    <style>
+    body,html {
+        margin: 0;
+        background-color: #fff;
+    }
+    .regs {
+      padding: 5px;
+      margin: 5px;
+    }
+    label {
+      font-weight: bold;
+    }
+  </style>
+  </head>
+  <body bgcolor="#3d8377">
+    <div class="maincontainer" align="left" style="padding-top: 10px; width: auto; background-color: #3d8377!important; color: #fff;">
+        <div style="margin: 5px,">[% sitename %]</div>
+      <div  style="background-color: #fff; color: #000">
+        <div class="mailcontent" align="left" style="padding: 10px; color: #000;">
+          [% INCLUDE "body/$bodytemplate" %]
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
index 37e2068..544e721 100644 (file)
Binary files a/backoffice/img/toplogo.png and b/backoffice/img/toplogo.png differ
index 717e85a..2dafff5 100644 (file)
@@ -6,11 +6,14 @@
 <body>
   
   <div class="w3-display-container">
-    <div class="w3-row" >
-    <div class="w3-col l6 w3-padding-24">
-        <div class="w3-container w3-center w3-padding-24">
-            <img src="[% abspath %]img/toplogo.png" style="width: 150px;" alt="logo">
-        </div>
+    <div class="w3-row" style="margin-top: 100px;">
+    <div class="w3-col l4 m3">&nbsp;
+    </div>
+    <div class="w3-col l4 m6">  
+    <div class="w3-container w3-center">
+        <img src="[% abspath %]img/toplogo.png" style="height: 60px;" alt="logo">
+    </div>
+    <div class="w3-container">
         [% IF pagename == 'register' && registration_enabled == '1' %]
           [% INCLUDE skeleton/login/register.tt %]
         [% ELSIF pagename == 'forgotpassword' %]
           [% INCLUDE skeleton/login/login.tt %]
         [% END %]
     </div>
-    <div class="w3-col l6 right-side-bg w3-center w3-padding-64" >
-        <img src="[% abspath %]img/logo_512.png" style="width: 200px;" alt="logo">
     </div>
-  </div>
-  </div>
+    <div class="w3-col l4 m3">&nbsp;
+    </div>
+    </div>
+    </div>
 </body>
 
 </html>
index fd790ea..30c60d7 100644 (file)
@@ -1,26 +1,39 @@
-.w3-theme-l5 {color:#000 !important; background-color:#fdeff3 !important}
-.w3-theme-l4 {color:#000 !important; background-color:#f9cad6 !important}
-.w3-theme-l3 {color:#000 !important; background-color:#f496ad !important}
-.w3-theme-l2 {color:#fff !important; background-color:#ee6184 !important}
-.w3-theme-l1 {color:#fff !important; background-color:#e92d5c !important}
-.w3-theme-d1 {color:#fff !important; background-color:#b3133b !important}
-.w3-theme-d2 {color:#fff !important; background-color:#9f1134 !important}
-.w3-theme-d3 {color:#fff !important; background-color:#8b0f2e !important}
-.w3-theme-d4 {color:#fff !important; background-color:#770d27 !important}
-.w3-theme-d5 {color:#fff !important; background-color:#630a21 !important}
+/* DEFAULT THEME */
+/* DEFAULT THEME */
+.w3-theme-l5 {color:#000 !important; background-color:#f4f4f4 !important}
+.w3-theme-l4 {color:#000 !important; background-color:#d9d9d9 !important}
+.w3-theme-l3 {color:#000 !important; background-color:#b3b3b3 !important}
+.w3-theme-l2 {color:#fff !important; background-color:#8c8c8c !important}
+.w3-theme-l1 {color:#fff !important; background-color:#666666 !important}
+.w3-theme-d1 {color:#fff !important; background-color:#393939 !important}
+.w3-theme-d2 {color:#fff !important; background-color:#333333 !important}
+.w3-theme-d3 {color:#fff !important; background-color:#2d2d2d !important}
+.w3-theme-d4 {color:#fff !important; background-color:#262626 !important}
+.w3-theme-d5 {color:#fff !important; background-color:#202020 !important}
 
-.w3-theme-light {color:#000 !important; background-color:#fdeff3 !important}
-.w3-theme-dark {color:#fff !important; background-color:#630a21 !important}
-.w3-theme-action {color:#fff !important; background-color:#630a21 !important}
+.w3-theme-light {color:#000 !important; background-color:#f4f4f4 !important}
+.w3-theme-dark {color:#fff !important; background-color:#202020 !important}
+.w3-theme-action {color:#fff !important; background-color:#202020 !important}
 
-.w3-theme {color:#fff !important; background-color:#c41540 !important}
-.w3-text-theme {color:#c41540 !important}
-.w3-border-theme {border-color:#c41540 !important}
+.w3-theme {color:#fff !important; background-color:#414141 !important}
+.w3-text-theme {color:#414141 !important}
+.w3-border-theme {border-color:#414141 !important}
 
-.w3-hover-theme:hover {color:#fff !important; background-color:#c41540 !important}
-.w3-hover-text-theme:hover {color:#c41540 !important}
-.w3-hover-border-theme:hover {border-color:#c41540 !important}
+.w3-hover-theme:hover {color:#fff !important; background-color:#414141 !important}
+.w3-hover-text-theme:hover {color:#414141 !important}
+.w3-hover-border-theme:hover {border-color:#414141 !important}
 
 h1 {
   color:#630a21;
+}
+.w3-branding {
+  color: #b60000;
+}
+.w3-branding2 {
+  color: #c8beb7;
+}
+
+.w3-nav-button {
+  padding-top: 25px!important;
+  height: 75px;
 }
\ No newline at end of file
index a0d3389..3e4d28c 100644 (file)
@@ -115,9 +115,9 @@ hr{border:0;border-top:1px solid #eee;margin:20px 0}
 .w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
 .w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
 .w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
-.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
-.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
-.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
+.w3-animate-top{position:relative;animation:animatetop 5s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
+.w3-animate-left{position:relative;animation:animateleft 5s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
+.w3-animate-right{position:relative;animation:animateright 5s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
 .w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
 .w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
 .w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important}
@@ -228,29 +228,7 @@ hr{border:0;border-top:1px solid #eee;margin:20px 0}
 .w3-border-dark-grey,.w3-hover-border-dark-grey:hover{border-color:#616161!important}
 .w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important}
 .w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffd7!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important}
-/* DEFAULT THEME */
-/* .w3-theme-l5 {color:#000 !important; background-color:#f6f8fc !important}
-.w3-theme-l4 {color:#000 !important; background-color:#e1e9f6 !important}
-.w3-theme-l3 {color:#000 !important; background-color:#c3d3ed !important}
-.w3-theme-l2 {color:#000 !important; background-color:#a5bee4 !important}
-.w3-theme-l1 {color:#fff !important; background-color:#88a8db !important}
-.w3-theme-d1 {color:#fff !important; background-color:#5180cb !important}
-.w3-theme-d2 {color:#fff !important; background-color:#3a6fc3 !important}
-.w3-theme-d3 {color:#fff !important; background-color:#3361aa !important}
-.w3-theme-d4 {color:#fff !important; background-color:#2c5392 !important}
-.w3-theme-d5 {color:#fff !important; background-color:#24457a !important}
 
-.w3-theme-light {color:#000 !important; background-color:#f6f8fc !important}
-.w3-theme-dark {color:#fff !important; background-color:#24457a !important}
-.w3-theme-action {color:#fff !important; background-color:#24457a !important}
-
-.w3-theme {color:#fff !important; background-color:#6a92d3 !important}
-.w3-text-theme {color:#6a92d3 !important}
-.w3-border-theme {border-color:#6a92d3 !important}
-
-.w3-hover-theme:hover {color:#fff !important; background-color:#6a92d3 !important}
-.w3-hover-text-theme:hover {color:#6a92d3 !important}
-.w3-hover-border-theme:hover {border-color:#6a92d3 !important} */
 
 .w3-label { color: rgb(153, 150, 150);}
 #main {margin-left: 210px;}
diff --git a/divtable.html b/divtable.html
new file mode 100644 (file)
index 0000000..5e6434e
--- /dev/null
@@ -0,0 +1,213 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Document</title>
+  <style>
+    .divTable{
+       display: table;
+  border: 1px solid red;
+}
+.divTableRow {
+       display: table-row;
+}
+.divTableHeading {
+       background-color: #EEE;
+       display: table-header-group;
+}
+.divTableCell, .divTableHead {
+       border: 1px solid #999999;
+       display: table-cell;
+       padding: 3px 10px;
+}
+.divTableHeading {
+       background-color: #EEE;
+       display: table-header-group;
+       font-weight: bold;
+}
+.divTableFoot {
+       background-color: #EEE;
+       display: table-footer-group;
+       font-weight: bold;
+}
+.divTableBody {
+       display: table-row-group;
+}
+  </style>
+</head>
+<body>
+  <div class="divTable">
+    <div class="divTable">
+    <div class="divTableHeading">
+      <div class="divTableRow">
+        <div class="divTableHead" style="width: 80px;">col1</div>
+        <div class="divTableHead" style="width: 80px;">col2</div>
+        <div class="divTableHead" style="width: 80px;">col3</div>
+        <div class="divTableHead" style="width: 80px;">col4</div>
+        <div class="divTableHead" style="width: 80px;">col5</div>
+        <div class="divTableHead" style="width: 80px;">col6</div>
+        </div>
+    </div>
+    </div>
+  </div>
+  <div style="display: block;height: 150px; overflow-y: scroll; overflow-x:hidden;">
+    <div class="divTable">
+    <div class="divTableBody">
+    <div class="divTableRow">
+    <div class="divTableCell" style="width: 80px;">&nbsp;</div>
+    <div class="divTableCell" style="width: 80px;">&nbsp;</div>
+    <div class="divTableCell" style="width: 80px;">&nbsp;</div>
+    <div class="divTableCell" style="width: 80px;">&nbsp;</div>
+    <div class="divTableCell" style="width: 80px;">&nbsp;</div>
+    <div class="divTableCell" style="width: 80px;">&nbsp;</div>
+    </div>
+    <div class="divTableRow">
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    </div>
+    <div class="divTableRow">
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    </div>
+    <div class="divTableRow">
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    </div>
+    <div class="divTableRow">
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    </div>
+    <div class="divTableRow">
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    </div>
+    <div class="divTableRow">
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    </div>
+    <div class="divTableRow">
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    </div>
+    <div class="divTableRow">
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    <div class="divTableCell">&nbsp;</div>
+    </div>
+    <div class="divTableRow">
+      <div class="divTableCell">&nbsp;</div>
+      <div class="divTableCell">&nbsp;</div>
+      <div class="divTableCell">&nbsp;</div>
+      <div class="divTableCell">&nbsp;</div>
+      <div class="divTableCell">&nbsp;</div>
+      <div class="divTableCell">&nbsp;</div>
+      </div>
+      <div class="divTableRow">
+        <div class="divTableCell">&nbsp;</div>
+        <div class="divTableCell">&nbsp;</div>
+        <div class="divTableCell">&nbsp;</div>
+        <div class="divTableCell">&nbsp;</div>
+        <div class="divTableCell">&nbsp;</div>
+        <div class="divTableCell">&nbsp;</div>
+        </div>
+        <div class="divTableRow">
+          <div class="divTableCell">&nbsp;</div>
+          <div class="divTableCell">&nbsp;</div>
+          <div class="divTableCell">&nbsp;</div>
+          <div class="divTableCell">&nbsp;</div>
+          <div class="divTableCell">&nbsp;</div>
+          <div class="divTableCell">&nbsp;</div>
+          </div>
+          <div class="divTableRow">
+            <div class="divTableCell">&nbsp;</div>
+            <div class="divTableCell">&nbsp;</div>
+            <div class="divTableCell">&nbsp;</div>
+            <div class="divTableCell">&nbsp;</div>
+            <div class="divTableCell">&nbsp;</div>
+            <div class="divTableCell">&nbsp;</div>
+            </div>
+            <div class="divTableRow">
+              <div class="divTableCell">&nbsp;</div>
+              <div class="divTableCell">&nbsp;</div>
+              <div class="divTableCell">&nbsp;</div>
+              <div class="divTableCell">&nbsp;</div>
+              <div class="divTableCell">&nbsp;</div>
+              <div class="divTableCell">&nbsp;</div>
+              </div>
+              <div class="divTableRow">
+                <div class="divTableCell">&nbsp;</div>
+                <div class="divTableCell">&nbsp;</div>
+                <div class="divTableCell">&nbsp;</div>
+                <div class="divTableCell">&nbsp;</div>
+                <div class="divTableCell">&nbsp;</div>
+                <div class="divTableCell">&nbsp;</div>
+                </div>
+                <div class="divTableRow">
+                  <div class="divTableCell">&nbsp;</div>
+                  <div class="divTableCell">&nbsp;</div>
+                  <div class="divTableCell">&nbsp;</div>
+                  <div class="divTableCell">&nbsp;</div>
+                  <div class="divTableCell">&nbsp;</div>
+                  <div class="divTableCell">&nbsp;</div>
+                  </div>
+                  <div class="divTableRow">
+                    <div class="divTableCell">&nbsp;</div>
+                    <div class="divTableCell">&nbsp;</div>
+                    <div class="divTableCell">&nbsp;</div>
+                    <div class="divTableCell">&nbsp;</div>
+                    <div class="divTableCell">&nbsp;</div>
+                    <div class="divTableCell">&nbsp;</div>
+                    </div>
+                    <div class="divTableRow">
+                      <div class="divTableCell">&nbsp;</div>
+                      <div class="divTableCell">&nbsp;</div>
+                      <div class="divTableCell">&nbsp;</div>
+                      <div class="divTableCell">&nbsp;</div>
+                      <div class="divTableCell">&nbsp;</div>
+                      <div class="divTableCell">&nbsp;</div>
+                      </div>
+                      <div class="divTableRow">
+                        <div class="divTableCell">&nbsp;</div>
+                        <div class="divTableCell">&nbsp;</div>
+                        <div class="divTableCell">&nbsp;</div>
+                        <div class="divTableCell">&nbsp;</div>
+                        <div class="divTableCell">&nbsp;</div>
+                        <div class="divTableCell">&nbsp;</div>
+                        </div>
+    </div>
+    </div>
+  </div>
+</body>
+</html>
\ No newline at end of file
diff --git a/img/cloud.jpg b/img/cloud.jpg
new file mode 100644 (file)
index 0000000..e4e6d3c
Binary files /dev/null and b/img/cloud.jpg differ
diff --git a/img/saffranitconsulting_obj.png b/img/saffranitconsulting_obj.png
new file mode 100644 (file)
index 0000000..27d214c
Binary files /dev/null and b/img/saffranitconsulting_obj.png differ
diff --git a/img/saffranitconsulting_obj.svg b/img/saffranitconsulting_obj.svg
new file mode 100755 (executable)
index 0000000..e654fd3
--- /dev/null
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:version="1.0beta2 (2b71d25, 2019-12-03)"
+   inkscape:export-ydpi="96"
+   inkscape:export-xdpi="96"
+   inkscape:export-filename="/Users/kilian/Pictures/saffranitconsulting_obj.png"
+   sodipodi:docname="saffranitconsulting_obj.svg"
+   width="220"
+   height="50"
+   viewBox="0 0 58.208329 13.229167"
+   version="1.1"
+   id="svg8">
+  <sodipodi:namedview
+     inkscape:current-layer="svg8"
+     inkscape:window-maximized="0"
+     inkscape:window-y="22"
+     inkscape:window-x="0"
+     inkscape:cy="108.73333"
+     inkscape:cx="269.37778"
+     inkscape:zoom="2.0454545"
+     width="215mm"
+     units="px"
+     showgrid="false"
+     id="namedview100"
+     inkscape:window-height="688"
+     inkscape:window-width="1280"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0"
+     guidetolerance="10"
+     gridtolerance="10"
+     objecttolerance="10"
+     borderopacity="1"
+     inkscape:document-rotation="0"
+     bordercolor="#666666"
+     pagecolor="#ffffff" />
+  <defs
+     id="defs2" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     transform="matrix(0.41783207,0,0,0.41783207,-1.8002571,-110.03231)">
+    <g
+       aria-label="SAFFRAN"
+       style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:22.5778px;line-height:1.25;font-family:'SF Compact Display';-inkscape-font-specification:'SF Compact Display, Ultra-Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       id="text817">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 4.9065043,274.73196 c 0.022049,2.21589 1.4882813,4.72943 6.1956597,4.72943 4.090017,0 6.283854,-1.98437 6.283854,-4.92786 0,-2.93247 -2.017448,-4.00183 -4.156163,-4.38768 l -2.105642,-0.39687 c -1.2788198,-0.23151 -1.9953996,-0.67248 -1.9953996,-1.43316 0,-0.88195 0.7055555,-1.51033 2.0615456,-1.51033 1.532378,0 2.259982,0.88194 2.304079,1.71979 h 3.615973 c -0.01103,-2.50252 -2.083594,-4.65226 -5.920052,-4.65226 -3.483681,0 -5.9861984,1.71979 -5.9861984,4.7625 0,2.67891 1.7749132,3.89158 4.0789931,4.34358 l 2.0284723,0.4079 c 1.444184,0.28663 2.193837,0.67248 2.193837,1.55443 0,0.88194 -0.694532,1.55442 -2.282032,1.55442 -1.6646697,0 -2.5245655,-0.87092 -2.5796871,-1.76389 z"
+         style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:22.5778px;font-family:'SF Compact Display';-inkscape-font-specification:'SF Compact Display, Ultra-Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#c41540;fill-opacity:1;stroke-width:0.264583"
+         id="path831" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 22.115446,279.19681 0.881944,-3.2632 h 4.486892 l 0.870921,3.2632 h 4.20026 L 27.83706,264.14863 h -4.894791 l -4.762501,15.04818 z m 3.241145,-11.6086 1.444184,5.51216 h -3.097829 l 1.466232,-5.51216 z"
+         style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:22.5778px;font-family:'SF Compact Display';-inkscape-font-specification:'SF Compact Display, Ultra-Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#c41540;fill-opacity:1;stroke-width:0.264583"
+         id="path833" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 37.979422,279.19681 v -5.52318 h 5.699566 v -3.03168 h -5.699566 v -3.35139 h 6.283854 v -3.14193 h -10.24158 v 15.04818 z"
+         style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:22.5778px;font-family:'SF Compact Display';-inkscape-font-specification:'SF Compact Display, Ultra-Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#c41540;fill-opacity:1;stroke-width:0.264583"
+         id="path835" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 50.150256,279.19681 v -5.52318 h 5.699566 v -3.03168 h -5.699566 v -3.35139 h 6.283854 v -3.14193 H 46.19253 v 15.04818 z"
+         style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:22.5778px;font-family:'SF Compact Display';-inkscape-font-specification:'SF Compact Display, Ultra-Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#c41540;fill-opacity:1;stroke-width:0.264583"
+         id="path837" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 64.900777,264.14863 h -6.537413 v 15.04818 h 3.880555 v -5.2586 h 1.774913 l 2.513542,5.2586 h 4.354601 l -2.987587,-5.78776 c 0.970139,-0.41893 2.678906,-1.76389 2.678906,-4.25538 0,-2.92145 -1.885156,-5.00504 -5.677517,-5.00504 z m -2.656858,7.05556 v -4.14514 h 2.061545 c 1.20165,0 2.204862,0.70555 2.204862,2.10564 0,1.36701 -0.937066,2.0395 -2.22691,2.0395 z"
+         style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:22.5778px;font-family:'SF Compact Display';-inkscape-font-specification:'SF Compact Display, Ultra-Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#c41540;fill-opacity:1;stroke-width:0.264583"
+         id="path839" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 75.340794,279.19681 0.881945,-3.2632 h 4.486892 l 0.87092,3.2632 h 4.20026 l -4.718402,-15.04818 h -4.894792 l -4.7625,15.04818 z m 3.241146,-11.6086 1.444184,5.51216 h -3.09783 l 1.466233,-5.51216 z"
+         style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:22.5778px;font-family:'SF Compact Display';-inkscape-font-specification:'SF Compact Display, Ultra-Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#c41540;fill-opacity:1;stroke-width:0.264583"
+         id="path841" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 90.896091,279.19681 v -8.49974 h 0.132292 l 5.78776,8.49974 h 3.042709 v -15.04818 h -3.638021 v 8.40052 h -0.143316 l -5.765712,-8.40052 h -3.064757 v 15.04818 z"
+         style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:22.5778px;font-family:'SF Compact Display';-inkscape-font-specification:'SF Compact Display, Ultra-Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#c41540;fill-opacity:1;stroke-width:0.264583"
+         id="path843" />
+    </g>
+    <g
+       aria-label="consulting"
+       style="font-style:normal;font-weight:normal;font-size:22.5778px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       id="text821">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 57.887758,282.26474 c -1.490133,1.78364 -4.492977,5.50897 -7.450666,5.50897 -1.2192,0 -1.964267,-0.90311 -1.964267,-2.05457 0,-2.86738 2.709333,-5.57671 4.289778,-5.57671 0.4064,0 0.677333,0.31608 0.677333,0.83537 0,0.72249 -0.316089,1.44498 -0.519289,2.14489 0.112889,0.0226 0.293511,0.0452 0.519289,0.0452 0.925689,0 1.896534,-0.67734 1.896534,-1.85138 0,-0.8128 -0.880534,-1.44498 -2.257778,-1.44498 -3.002845,0 -6.773334,2.88996 -6.773334,5.77991 0,1.87396 0.993423,2.88996 2.799645,2.88996 3.793067,0 6.773333,-3.4544 8.985955,-6.18631 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:'Snell Roundhand Script';-inkscape-font-specification:'Snell Roundhand Script, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
+         id="path846" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 68.753314,282.15185 c -0.8128,0.97084 -1.490133,1.44498 -2.302933,1.44498 -0.835378,0 -1.377245,-0.58703 -1.535289,-1.49014 -0.2032,-1.2192 -1.174045,-2.2352 -2.777067,-2.2352 -3.002844,0 -6.637867,2.79965 -6.637867,6.00569 0,1.64818 1.083734,2.66418 2.731911,2.66418 3.138312,0 5.915378,-2.52871 6.615289,-5.53156 0.428978,0.54187 0.903112,0.85796 1.603023,0.85796 0.993422,0 1.8288,-0.76765 2.4384,-1.53529 z m -10.3632,6.11858 c -0.677333,0 -0.993422,-0.45156 -0.993422,-1.19663 0,-1.89653 2.348089,-6.93137 4.628444,-6.93137 0.677334,0 0.993422,0.45155 0.993422,1.19662 0,1.89653 -2.348088,6.93138 -4.628444,6.93138 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:'Snell Roundhand Script';-inkscape-font-specification:'Snell Roundhand Script, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
+         id="path848" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 68.786474,284.25158 2.935111,-4.10915 -2.573867,0.0903 c -1.557866,2.70933 -3.206044,5.30577 -4.786488,7.94737 l 2.280355,-0.0677 c 1.128889,-2.2352 5.170311,-7.69902 6.953956,-7.69902 0.4064,0 0.632177,0.24835 0.632177,0.56444 0,1.39983 -3.115733,3.83823 -3.115733,5.87023 0,0.8128 0.519289,1.55786 1.670756,1.55786 1.174044,0 2.122311,-0.63218 3.702755,-2.28035 1.286934,-1.35467 2.483556,-2.86738 3.273778,-3.79307 l -0.225778,-0.11289 c -0.541866,0.65476 -1.715911,2.12231 -3.002844,3.49956 -1.648178,1.76106 -2.596445,2.28035 -3.025422,2.28035 -0.4064,0 -0.587023,-0.24835 -0.587023,-0.6096 0,-1.67075 3.115734,-4.04142 3.115734,-6.07342 0,-0.8128 -0.519289,-1.44498 -1.512711,-1.44498 -2.348089,0 -4.831645,3.34151 -5.6896,4.42525 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:'Snell Roundhand Script';-inkscape-font-specification:'Snell Roundhand Script, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
+         id="path850" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 80.785858,288.06723 c 0.880534,-0.2032 1.738489,-1.19663 1.738489,-2.37067 0,-0.90311 -0.451555,-1.53529 -0.903111,-2.12231 -0.451556,-0.6096 -0.903111,-1.2192 -0.903111,-2.05458 0,-0.79022 0.474133,-1.37724 1.309511,-1.37724 0.699911,0 1.038578,0.51928 1.038578,1.12888 0,0.56445 -0.135467,1.17405 -0.451556,1.76107 0.135467,0.0452 0.383822,0.11289 0.654756,0.11289 0.857955,0 1.512711,-0.63218 1.512711,-1.49013 0,-1.12889 -1.106311,-1.78365 -2.551289,-1.78365 -1.603022,0 -3.318933,0.85796 -3.318933,2.55129 0,0.69991 0.451555,1.28693 0.903111,1.89653 0.451555,0.58703 0.903111,1.2192 0.903111,2.00943 0,1.17404 -1.196622,1.94169 -2.302933,1.94169 -0.880534,0 -1.6256,-0.6096 -1.6256,-1.44498 0,-0.33867 0.112888,-0.65476 0.270933,-0.92569 0.158044,0.0903 0.316089,0.11289 0.496711,0.11289 0.474133,0 0.903111,-0.33867 0.903111,-0.97085 0,-0.49671 -0.383822,-0.97084 -1.083733,-0.97084 -1.061156,0 -1.6256,1.10631 -1.6256,2.05458 0,1.8288 1.670755,2.41582 3.228622,2.41582 4.380089,0 6.660444,-3.00285 9.053689,-6.16373 l -0.180622,-0.13547 c -1.919111,2.52871 -3.996267,5.19289 -7.066845,5.87022 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:'Snell Roundhand Script';-inkscape-font-specification:'Snell Roundhand Script, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
+         id="path852" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 93.7261,280.32305 -1.941689,3.16089 c -1.377244,2.28035 -3.612444,4.38009 -4.741333,4.38009 -0.316089,0 -0.541867,-0.27094 -0.541867,-0.63218 0,-1.15147 1.648178,-3.4544 4.018845,-7.08942 l -2.393245,0.0903 c -2.099733,3.4544 -3.431822,5.55413 -3.431822,6.7056 0,0.79022 0.496711,1.46755 1.4224,1.46755 1.919111,0 3.318934,-1.60302 4.402667,-2.75449 l 0.04516,0.0452 c -0.135466,0.24835 -0.270933,0.72249 -0.270933,1.28693 0,0.8128 0.587022,1.4224 1.490133,1.4224 1.241778,0 2.528712,-0.92569 4.041423,-2.48355 1.264355,-1.28694 2.4384,-2.75449 3.160889,-3.70276 l -0.180628,-0.1355 c -0.587022,0.76765 -1.873955,2.34809 -3.206044,3.70276 -1.106311,1.10631 -2.460978,2.21262 -3.206045,2.21262 -0.270933,0 -0.428977,-0.18062 -0.428977,-0.49671 0,-1.30951 1.715911,-3.43182 4.086577,-7.36035 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:'Snell Roundhand Script';-inkscape-font-specification:'Snell Roundhand Script, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
+         id="path854" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 104.0773,272.53371 -6.299195,10.34063 c -1.286934,2.14489 -1.896534,3.34151 -1.896534,4.17689 0,0.90311 0.519289,1.35466 1.535289,1.35466 1.444978,0 2.6416,-0.85795 4.40267,-2.6416 1.016,-1.03858 2.16746,-2.50613 2.91253,-3.49955 l -0.2032,-0.0677 c -1.06116,1.37725 -2.19004,2.70934 -3.31893,3.83823 -1.219203,1.2192 -2.393247,1.96426 -3.025425,1.96426 -0.338667,0 -0.496711,-0.22578 -0.496711,-0.6096 0,-0.76764 0.745066,-2.00942 1.919111,-3.88338 l 6.976535,-11.10826 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:'Snell Roundhand Script';-inkscape-font-specification:'Snell Roundhand Script, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
+         id="path856" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 104.95255,280.63914 c -1.80622,3.11573 -3.22862,4.74133 -3.22862,6.2992 0,1.08373 0.85795,1.46755 1.80622,1.46755 1.37724,0 2.95769,-1.15146 4.35751,-2.55129 1.26436,-1.26435 2.37067,-2.66417 3.048,-3.56729 l -0.13547,-0.11288 c -0.99342,1.30951 -2.21262,2.70933 -3.18346,3.6576 -1.39983,1.35466 -2.73191,2.16746 -3.47698,2.16746 -0.38382,0 -0.6096,-0.27093 -0.6096,-0.65475 0,-0.88054 0.92569,-2.2352 3.63502,-6.7056 h 2.91253 l 0.2032,-0.4064 h -2.86737 l 1.87395,-2.93511 -2.4384,0.0903 -1.69333,2.8448 h -1.73849 l -0.15804,0.4064 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:'Snell Roundhand Script';-inkscape-font-specification:'Snell Roundhand Script, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
+         id="path858" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 111.5756,280.34563 c -2.68676,4.24462 -3.52214,5.41866 -3.52214,6.59271 0,0.85795 0.56445,1.46755 1.55787,1.46755 1.06115,0 2.2352,-0.6096 3.97369,-2.34809 1.17404,-1.17404 2.61902,-2.79964 3.36409,-3.74791 l -0.2032,-0.13546 c -0.54187,0.63217 -1.80623,2.12231 -3.13831,3.47697 -1.64818,1.67076 -2.75449,2.30294 -3.34152,2.30294 -0.27093,0 -0.4064,-0.24836 -0.4064,-0.6096 0,-0.92569 1.2192,-2.66418 4.04143,-7.112 z m 3.63502,-5.12516 c -0.67734,0 -1.30951,0.51929 -1.30951,1.2192 0,0.69991 0.56444,1.03858 1.2192,1.03858 0.6096,0 1.17404,-0.58702 1.17404,-1.19662 0,-0.56445 -0.51929,-1.06116 -1.08373,-1.06116 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:'Snell Roundhand Script';-inkscape-font-specification:'Snell Roundhand Script, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
+         id="path860" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 116.80835,284.25158 2.93511,-4.10915 -2.57386,0.0903 c -1.55787,2.70933 -3.20605,5.30577 -4.78649,7.94737 l 2.28035,-0.0677 c 1.12889,-2.2352 5.17031,-7.69902 6.95396,-7.69902 0.4064,0 0.63218,0.24835 0.63218,0.56444 0,1.39983 -3.11574,3.83823 -3.11574,5.87023 0,0.8128 0.51929,1.55786 1.67076,1.55786 1.17404,0 2.12231,-0.63218 3.70275,-2.28035 1.28694,-1.35467 2.48356,-2.86738 3.27378,-3.79307 l -0.22578,-0.11289 c -0.54186,0.65476 -1.71591,2.12231 -3.00284,3.49956 -1.64818,1.76106 -2.59645,2.28035 -3.02542,2.28035 -0.4064,0 -0.58703,-0.24835 -0.58703,-0.6096 0,-1.67075 3.11574,-4.04142 3.11574,-6.07342 0,-0.8128 -0.51929,-1.44498 -1.51271,-1.44498 -2.34809,0 -4.83165,3.34151 -5.6896,4.42525 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:'Snell Roundhand Script';-inkscape-font-specification:'Snell Roundhand Script, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
+         id="path862" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 121.65058,289.82829 c -0.29351,-0.0226 -0.97085,-0.11289 -1.24178,-0.11289 -1.51271,0 -3.048,0.92569 -3.048,2.57387 0,2.16747 1.94169,2.91253 4.15431,2.91253 4.31236,0 7.60871,-2.48355 9.77618,-6.23146 3.40924,-0.97085 6.14115,-3.81565 8.15058,-6.72818 l -0.13547,-0.0677 c -2.032,2.70933 -4.4704,5.50897 -7.83449,6.47982 1.73849,-2.77707 3.2512,-5.66702 4.8768,-8.42151 l -2.30293,0.13546 -0.51929,0.97085 c -0.36125,-1.10631 -0.99342,-1.46756 -2.12231,-1.46756 -2.98027,0 -6.2992,3.43182 -6.2992,6.38951 0,1.12889 0.67733,2.14489 1.89653,2.14489 1.60302,0 2.95769,-1.08373 3.92853,-2.21262 l 0.0452,0.0452 c -2.07716,3.02542 -4.94453,8.69244 -9.18916,8.69244 -1.53528,0 -2.52871,-1.10631 -2.52871,-2.52871 0,-1.49013 0.8128,-2.39325 2.39325,-2.41582 z m 5.62186,-3.74791 c 0,-1.98684 2.34809,-5.93795 4.56072,-5.93795 0.8128,0 0.92568,0.74506 0.92568,1.37724 0,1.71591 -2.37066,6.11858 -4.2672,6.11858 -1.016,0 -1.2192,-0.67734 -1.2192,-1.55787 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:'Snell Roundhand Script';-inkscape-font-specification:'Snell Roundhand Script, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
+         id="path864" />
+    </g>
+    <g
+       aria-label="IT"
+       transform="scale(1.8202946,0.54936163)"
+       style="font-style:normal;font-weight:normal;font-size:23.2813px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#4a4a4a;fill-opacity:1;stroke:none;stroke-width:0.272828"
+       id="text825">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 2.8215763,510.19523 v -0.95453 h 6.5886212 v 0.95453 l -2.1418839,0.2561 q -0.023281,1.46672 -0.046563,2.98001 0,1.51329 0,3.02657 v 1.14079 q 0,1.49001 0,3.00329 0.023281,1.49001 0.046563,3.0033 l 2.1418839,0.25609 v 0.95454 H 2.8215763 v -0.95454 l 2.1418839,-0.25609 q 0.046563,-1.46673 0.046563,-2.98001 0,-1.51329 0,-3.02658 v -1.14079 q 0,-1.51328 0,-3.00329 0,-1.51329 -0.046563,-3.00329 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:23.2813px;font-family:'Source Serif Pro';-inkscape-font-specification:'Source Serif Pro, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#4a4a4a;fill-opacity:1;stroke-width:0.272828"
+         id="path826" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 10.902387,513.38478 0.18625,-4.14408 h 12.758179 l 0.18625,4.14408 h -1.350318 l -0.512189,-2.98002 h -3.562047 q -0.02328,1.49001 -0.04656,3.0033 0,1.51329 0,3.04985 v 1.14079 q 0,1.49001 0,3.00329 0.02328,1.49001 0.04656,3.0033 l 2.374698,0.25609 v 0.95454 h -7.030967 v -0.95454 l 2.374697,-0.25609 q 0.04656,-1.49001 0.04656,-2.98001 0,-1.51329 0,-3.02658 v -1.14079 q 0,-1.51328 0,-3.02657 0,-1.51329 -0.04656,-3.02658 h -3.562046 l -0.512189,2.98002 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:23.2813px;font-family:'Source Serif Pro';-inkscape-font-specification:'Source Serif Pro, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#4a4a4a;fill-opacity:1;stroke-width:0.272828"
+         id="path828" />
+    </g>
+  </g>
+</svg>
diff --git a/img/sitc2.png b/img/sitc2.png
new file mode 100644 (file)
index 0000000..544e721
Binary files /dev/null and b/img/sitc2.png differ
index 5e49b94..818047a 100644 (file)
Binary files a/img/slides/slide1.jpg and b/img/slides/slide1.jpg differ
diff --git a/img/slides/slide2.jpg b/img/slides/slide2.jpg
new file mode 100644 (file)
index 0000000..1d08bb5
Binary files /dev/null and b/img/slides/slide2.jpg differ
diff --git a/img/slides/slide3.jpg b/img/slides/slide3.jpg
new file mode 100644 (file)
index 0000000..05a758b
Binary files /dev/null and b/img/slides/slide3.jpg differ
diff --git a/img/slides/slide4.jpg b/img/slides/slide4.jpg
new file mode 100644 (file)
index 0000000..e7bcb30
Binary files /dev/null and b/img/slides/slide4.jpg differ
index 396d6ac..23bd1e9 100755 (executable)
--- a/index.cgi
+++ b/index.cgi
@@ -1,15 +1,15 @@
-#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl
+#!/usr/local/bin/perl
 
 use strict;
-use lib ('backoffice/api/lib/perl5');
-use lib ('backoffice/api/lib');
+use lib ('./backoffice/api/lib/perl5');
+use lib ('./backoffice/api/lib');
 use File::Basename;
 # use lib (dirname($0).'/backoffice/lib');
 use Template;
 # use Template::Constants qw( :debug );
 use CGI;
 use CGI::Carp qw/fatalsToBrowser/;
-use dksconfig qw($sitecfg);
+use dksconfig qw($sitecfg $messages);
 #use FindBin qw($Bin $RealBin);
 
 use Data::Dumper;
@@ -70,7 +70,7 @@ $vars->{pageshort} = $vars->{page};
 $vars->{page} = 'page/'.$vars->{page};
 
 $vars->{pagename} = basename($vars->{page});
-
+$vars->{messages} = $messages;
 # $vars->{dbconn} = 'DBI:SQLite:dbname=fld.sqlite';
 $vars->{pagename} =~ s/\.tt$//;
 #print Dumper($vars);
@@ -81,8 +81,25 @@ if (! -e dirname($0).'/tmpl/'.$vars->{page}){
   # close(NP);
 } 
 #print Dumper($vars);
+my ($browserlang) = $ENV{HTTP_ACCEPT_LANGUAGE} =~ /^(\w+)[,|;|-]/;
+$vars->{lang} = 'en';
+if (exists($messages->{$browserlang})){
+  $vars->{lang} = $browserlang;
+}
+if ($sitecfg->{gdpr}){
+  $vars->{gdpr_expiration} = `date -R -v +1m`;
+  chomp($vars->{gdpr_expiration});
+  $vars->{gdpr_display} = 'block';
+  if ($cgi->cookie($sitecfg->{gdpr})){
+    $vars->{gdpr_display} = 'none';
+  }
+}
 my $skl = dirname($vars->{page});
 # print Dumper($template);
 $template->process("skeleton/index.tt",$vars) || die "Template process failed: ", $template->error(), "\n";
+if ($vars->{page} =~ /\.tt$/){
+  print '<pre>'.Dumper($browserlang)."->".Dumper($vars->{lang})."->".Dumper($ENV{HTTP_ACCEPT_LANGUAGE})."</pre>";
+}
+
 
 
diff --git a/index_new.cgi b/index_new.cgi
new file mode 100755 (executable)
index 0000000..396d6ac
--- /dev/null
@@ -0,0 +1,88 @@
+#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl
+
+use strict;
+use lib ('backoffice/api/lib/perl5');
+use lib ('backoffice/api/lib');
+use File::Basename;
+# use lib (dirname($0).'/backoffice/lib');
+use Template;
+# use Template::Constants qw( :debug );
+use CGI;
+use CGI::Carp qw/fatalsToBrowser/;
+use dksconfig qw($sitecfg);
+#use FindBin qw($Bin $RealBin);
+
+use Data::Dumper;
+use JSON::PP;
+use URI::Encode qw /uri_encode/;
+#my $tmpldir = "/mnt/c/Users/ksaff/Workspace/juridig/app/tmpl";
+# chdir(dirname($0));
+
+my $cgi = new CGI();
+my $p=();
+my $vars = $sitecfg;
+my @params = $cgi->param();
+foreach my $pp (@params){
+       $p->{$pp} = $cgi->param($pp);
+} 
+
+$vars->{filepath} = substr($cgi->url({-absolute=>1}),length($vars->{basepath})+1); 
+$vars->{baseurl} = $cgi->url({-base=>1}).$vars->{basepath};
+$vars->{url} = $cgi->url({-full=>1});
+$vars->{encodedurl} = uri_encode($vars->{url},{encode_reserved => 1});
+
+if ($vars->{filepath} ne ""){
+  $vars->{page} = $vars->{filepath};
+  $vars->{page} =~ s/html$/tt/;
+  
+}
+$vars->{abspath} = "";
+$vars->{pagelink} = basename($vars->{page});
+$vars->{pagelink} =~ s/\.tt$//;  
+
+
+#}
+#$p->{dirname} = dirname($0);
+#if (!exists($p))
+#$p->{baseurl} = $cgi->url({-base=>1});
+#$p->{pathinfo} = 
+#$p->{basepath} = ;
+
+# if (!exists($p->{sid}))
+# {
+#      $p->{sid} = $cgi->cookie('juridig');    
+# }
+# my $se = session->new();
+# my $sesdata = $se->getsession($p->{sid});
+# if (!exists($sesdata->{usersession})){
+#      $p->{page} = "login";
+# }
+print $cgi->header(-type=>'text/html', -charset=>"utf-8");
+my $template = Template->new({INCLUDE_PATH => [dirname($0).'/tmpl']});
+my @lv = split(/\//,$vars->{filepath});
+my $absnum = scalar(@lv)-1;
+$vars->{abspath} = "";
+for (my $i=0;$i<$absnum;$i++){
+  $vars->{abspath} .= "../";
+}
+$vars->{params} = $p;
+$vars->{pageshort} = $vars->{page};
+$vars->{page} = 'page/'.$vars->{page};
+
+$vars->{pagename} = basename($vars->{page});
+
+# $vars->{dbconn} = 'DBI:SQLite:dbname=fld.sqlite';
+$vars->{pagename} =~ s/\.tt$//;
+#print Dumper($vars);
+if (! -e dirname($0).'/tmpl/'.$vars->{page}){
+  # mkdir(dirname(dirname($0).'/tmpl/'.$vars->{page}));
+  # open(NP,">".dirname($0).'/tmpl/'.$vars->{page});
+  # print NP $vars->{page};
+  # close(NP);
+} 
+#print Dumper($vars);
+my $skl = dirname($vars->{page});
+# print Dumper($template);
+$template->process("skeleton/index.tt",$vars) || die "Template process failed: ", $template->error(), "\n";
+
+
diff --git a/js/site.js b/js/site.js
new file mode 100644 (file)
index 0000000..e69de29
index 77bf4de..0137f81 100644 (file)
@@ -1,27 +1,31 @@
 // Slideshow
-var slideIndex = 1;
+var slideIndex = 0;
 showDivs(slideIndex);
 
-function plusDivs(n) {
-  showDivs(slideIndex += n);
-}
+// function plusDivs(n) {
+//   showDivs(slideIndex += n);
+// }
 
-function currentDiv(n) {
-  showDivs(slideIndex = n);
-}
+// function currentDiv(n) {
+//   showDivs(slideIndex = n);
+// }
 
 function showDivs(n) {
-  var i;
+  
   var x = document.getElementsByClassName("mySlides");
-  var dots = document.getElementsByClassName("demodots");
-  if (n > x.length) {slideIndex = 1}    
-  if (n < 1) {slideIndex = x.length} ;
-  for (i = 0; i < x.length; i++) {
+  //var dots = document.getElementsByClassName("demodots");
+  if (n > x.length) { n=0;}    
+  //if (n < 1) {slideIndex = x.length} ;
+  for (var i = 0; i < x.length; i++) {
      x[i].style.display = "none";  
   }
-  for (i = 0; i < dots.length; i++) {
-     dots[i].className = dots[i].className.replace(" w3-white", "");
-  }
-  x[slideIndex-1].style.display = "block";  
-  dots[slideIndex-1].className += " w3-white";
+  var y = n+1;
+  if (y>x.length-1){y=0;}
+  console.log(y);
+  // for (i = 0; i < dots.length; i++) {
+  //    dots[i].className = dots[i].className.replace(" w3-white", "");
+  // }
+  x[n].style.display = "block";  
+  setTimeout("showDivs("+y+");",15000);
+  //dots[slideIndex-1].className += " w3-white";
 }
\ No newline at end of file
diff --git a/table.html b/table.html
new file mode 100644 (file)
index 0000000..58617ec
--- /dev/null
@@ -0,0 +1,197 @@
+<html>
+  <head>
+<style>
+
+.fixed_header{
+    width: 100%;
+    table-layout: fixed;
+    border-collapse: collapse;
+    
+}
+
+.fixed_header tbody{
+  display:block;
+  width: 100%;
+  overflow-y: scroll;
+  height: 200px;
+}
+
+.fixed_header thead tr,.fixed_header tfoot tr {
+   display: block;
+}
+
+.fixed_header thead,.fixed_header tfoot {
+  background: black;
+  color:#fff;
+}
+
+.fixed_header th, .fixed_header td {
+  padding: 5px;
+  text-align: left;
+  width: 100%;
+}
+
+.fixed_header tr:nth-child(even) { 
+  background-color: rgb(247, 247, 247);
+}
+div.tblframe {
+  display: block;
+  border: 1px solid red;
+  width: 100%;
+  height: 260px;
+}
+
+th,td {
+  border: 1px solid grey;
+}
+::-webkit-scrollbar {
+  -webkit-appearance: none;
+  width: 10px;
+}
+::-webkit-scrollbar-thumb {
+  border-radius: 0px;
+  background-color: rgba(0, 0, 0, .5);
+  -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
+}
+</style>
+</head>
+<body>
+<div class="tblframe">
+<table class="fixed_header">
+  <thead>
+    <tr>
+      <th><div style="width: 200px;">Col</div></th>
+      <th><div style="width: 100px;">Col 2</div></th>
+      <th><div style="width: 80px;">Col 3</div></th>
+      <th><div style="width: 90px;">Col 4</div></th>
+      <th><div style="width: 120px;">Col 5</div></th>
+    </tr>
+  </thead>
+  <tfoot>
+    <tr>
+      <th><div style="width: 200px;">Col 1</div></th>
+      <th><div style="width: 100px;">Col 2</div></th>
+      <th><div style="width: 80px;">Col 3</div></th>
+      <th><div style="width: 90px;">Col 4</div></th>
+      <th><div style="width: 120px;">Col 5</div></th>
+    </tr>
+  </tfoot>
+  <tbody>
+    <tr>
+      <td><div style="border: 1px solid green;width: 200px; display:block; overflow: hidden;white-space: nowrap;">Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1Col 1</div></td>
+      <td><div style="width: 100px;">row 1-1</div></td>
+      <td><div style="width: 80px;">row 1-2</div></td>
+      <td><div style="width: 90px;">row 1-3</div></td>
+      <td><div style="width: 113px;">row 1-4</div></td>
+    </tr>
+    <tr>
+      <td>row 2-0</td>
+      <td>row 2-1</td>
+      <td>row 2-2</td>
+      <td>row 2-3</td>
+      <td>row 2-4</td>
+    </tr>
+    <tr>
+      <td>row 3-0</td>
+      <td>row 3-1</td>
+      <td>row 3-2</td>
+      <td>row 3-3</td>
+      <td>row 3-4</td>
+    </tr>
+    <tr>
+      <td>row 4-0</td>
+      <td>row 4-1</td>
+      <td>row 4-2</td>
+      <td>row 4-3</td>
+      <td>row 4-4</td>
+    </tr>
+    <tr>
+      <td>row 5-0</td>
+      <td>row 5-1</td>
+      <td>row 5-2</td>
+      <td>row 5-3</td>
+      <td>row 5-4</td>
+    </tr>
+    <tr>
+      <td>row 6-0</td>
+      <td>row 6-1</td>
+      <td>row 6-2</td>
+      <td>row 6-3</td>
+      <td>row 6-4</td>
+    </tr>
+    <tr>
+      <td>row 7-0</td>
+      <td>row 7-1</td>
+      <td>row 7-2</td>
+      <td>row 7-3</td>
+      <td>row 7-4</td>
+    </tr>
+    <tr>
+      <td>row 7-0</td>
+      <td>row 7-1</td>
+      <td>row 7-2</td>
+      <td>row 7-3</td>
+      <td>row 7-4</td>
+    </tr>
+    <tr>
+      <td>row 7-0</td>
+      <td>row 7-1</td>
+      <td>row 7-2</td>
+      <td>row 7-3</td>
+      <td>row 7-4</td>
+    </tr>
+    <tr>
+      <td>row 7-0</td>
+      <td>row 7-1</td>
+      <td>row 7-2</td>
+      <td>row 7-3</td>
+      <td>row 7-4</td>
+    </tr>
+    <tr>
+      <td>row 7-0</td>
+      <td>row 7-1</td>
+      <td>row 7-2</td>
+      <td>row 7-3</td>
+      <td>row 7-4</td>
+    </tr>
+    <tr>
+      <td>row 7-0</td>
+      <td>row 7-1</td>
+      <td>row 7-2</td>
+      <td>row 7-3</td>
+      <td>row 7-4</td>
+    </tr>
+    <tr>
+      <td>row 7-0</td>
+      <td>row 7-1</td>
+      <td>row 7-2</td>
+      <td>row 7-3</td>
+      <td>row 7-4</td>
+    </tr>
+    <tr>
+      <td>row 7-0</td>
+      <td>row 7-1</td>
+      <td>row 7-2</td>
+      <td>row 7-3</td>
+      <td>row 7-4</td>
+    </tr>
+    <tr>
+      <td>row 7-0</td>
+      <td>row 7-1</td>
+      <td>row 7-2</td>
+      <td>row 7-3</td>
+      <td>row 7-4</td>
+    </tr>
+    <tr>
+      <td>row 7-0</td>
+      <td>row 7-1</td>
+      <td>row 7-2</td>
+      <td>row 7-3</td>
+      <td>row 7-4</td>
+    </tr>
+  </tbody>
+  
+</table>
+</div>
+</body>
+</html>
index f61c84a..2305c1a 100644 (file)
@@ -1,27 +1,36 @@
-<div class="w3-display-container w3-white w3-border-top">
+<div class="w3-display-container w3-white w3-border-top w3-theme">
   <div class="w3-row">
-  <div class="w3-container w3-third w3-padding-24">
-    <img src="[% abspath %]img/saffranitconsulting.svg" style="width: 50%;"/><br/>
+  <div class="w3-container w3-quarter w3-padding-24">
+    <div class="w3-container">
+    <img src="[% abspath %]img/sitc2.png" style="width: 60px; float: left;margin-right: 10px;" />
+    <span>SAFFRAN IT consulting<br/>DKS S.à r.l.</span>
+    </div>
+    <div class="w3-container">
     4, rue Principale<br/>
     L-3770 Tétange<br/>
+    Tel: +352 691 504 574<br/>
+    Email: info@saffran.lu
+    </div>
   </div>
-  <div class="w3-container w3-third w3-padding-24">
-    <ul class="w3-ul">
-      <li><a href="[% abspath %]impressum.html">Impressum</a></li>
-      <li><a href="[% abspath %]privacy.html">Privatsphäre</a></li>
-      <li><a href="[% abspath %]terms.html">AGB</a></li>
-      <li><a href="[% abspath %]contact.html">Kontakt</a></li>
-    </ul>
+  <div class="w3-container w3-quarter w3-padding-24">
+    <div class="w3-bar-block">
+      <a class="w3-button w3-bar-item" href="[% abspath %]impressum.html">Impressum</a></li>
+      <a class="w3-button w3-bar-item" href="[% abspath %]privacy.html">Privatsphäre</a>
+      <a class="w3-button w3-bar-item" href="[% abspath %]terms.html">AGB</a>
+      <a class="w3-button w3-bar-item" arget="_blank" href="https://webmail.your-server.de">Webmail</a>
+      
+    </div>
   </div>
-  <div class="w3-container w3-third w3-padding-24">
-    <ul class="w3-ul">
-      <li><a href="[% abspath %]aboutus.html">über uns</a></li>
-      <li><a target="_blank" href="https://konsoleh.your-server.de">Website Admin</a></li>
-      <li><a target="_blank" href="https://webmail.your-server.de">Webmail</a></li>
-    </ul>
+  <div class="w3-container w3-quarter w3-padding-24">
+    <div class="w3-container">
+      <h4>Öffnungszeiten</h4>
+      <p>Montags-Frietags<br/>09:00-12:00 
+        <br/>14:00-17:00</p>
+      <p>Ausserhalb der genannten Zeiten nur mit Termin-Vereinbarung</p>
+    </div>
   </div>
 </div>
 </div>
-<div class="w3-display-container w3-center w3-theme-dark w3-white">
-  &copy; 2020 Saffran IT Consulting s.à r.l.
+<div class="w3-display-container w3-center w3-grey w3-white">
+  &copy; 2020 Saffran IT Consulting / DKS S.à r.l. 
 </div>
\ No newline at end of file
diff --git a/tmpl/block/gdpr.tt b/tmpl/block/gdpr.tt
new file mode 100644 (file)
index 0000000..a73c541
--- /dev/null
@@ -0,0 +1,8 @@
+[% IF gdpr %]
+  <div class="w3-bottom w3-black w-text-white w3-padding" id="gdpr_notice" style="display: [% gdpr_display %];">
+    <div class="w3-bar">
+      <span class="w3-bar-item w3-center">[% messages.$lang.gdpr_notice %]</span>
+      <button class="w3-button w3-bar-item w3-blue-grey w3-right" onclick="document.cookie='[% gdpr %]=OK; expires=[% gdpr_expiration %]; path=/;';document.getElementById('gdpr_notice').style.display='none'; return false;">OK</button>
+    </div>
+  </div>
+[% END %]
\ No newline at end of file
index b02baaf..f84e066 100644 (file)
@@ -1,29 +1,15 @@
 <div class="w3-top w3-border-bottom">
-<div class="w3-display-container w3-theme-dark w3-text-white w3-hide-small w3-bar">
-  <span class="w3-bar-item">Tel: <a href="tel:00352691504574">+352 691 504 574</a></span><span class="w3-bar-item w3-right">E-Mail: <a href="mailto:contact@saffran.lu">contact@saffran.lu</a></span> 
-</div>
-
-  <div class="w3-bar w3-white">
-    <a class="w3-bar-item" href="[% apspath %]index.html"><img  src="img/saffranitconsulting.svg" alt="Saffran IT Consulting Logo" style="height: 38px;"/></a>
-    <div class="w3-dropdown-hover">
-    <button class="w3-button">Produkte</button>
-    <div class="w3-dropdown-content w3-bar-block w3-card-4">
-      <a href="[% abspath %]privatecloud.html" class="w3-bar-item w3-button">Private Cloud</a>
-      <a href="[% abspath %]apps.html" class="w3-bar-item w3-button">Apps</a>
-      <a href="[% abspath %]hosting.html" class="w3-bar-item w3-button">Hosting</a>
+  <div class="w3-bar w3-theme">
+    <a class="w3-bar-item" href="[% apspath %]index.html"><img  src="[% abspath %]img/sitc2.png" alt="Saffran IT Consulting Logo" style="width: 60px;"/></a>
+    <div class="w3-bar-item">
+        <div class="w3-xlarge w3-branding"><strong>SAFFRAN</strong></div>
+        <div class="w3-branding2">IT Consulting</div>
     </div>
-  </div>
-  <div class="w3-dropdown-hover">
-    <button class="w3-button">Dienstleistungen</button>
-    <div class="w3-dropdown-content w3-bar-block w3-card-4">
-      <a href="[% abspath %]backup.html" class="w3-bar-item w3-button">Backup</a>
-      <a href="[% abspath %]development.html" class="w3-bar-item w3-button">Entwicklung</a>
-      <a href="[% abspath %]support.html" class="w3-bar-item w3-button">Support</a>
-    </div>
-  </div>
-  <a class="w3-bar-item w3-button" href="[% apspath %]aboutus.html">Über uns</a>
-    <a class="w3-bar-item w3-button" href="[% apspath %]contact.html">Kontakt</a>
-    <a class="w3-bar-item w3-button w3-right" target="_blank" href="[% abspath %]backoffice/login.html">Login</a>
+    <a class="w3-bar-item w3-button w3-nav-button" href="[% abspath %]index.html">Home</a>
+    <a class="w3-bar-item w3-button w3-nav-button" href="[% abspath %]services.html">Services</a>
+    <a class="w3-bar-item w3-button w3-nav-button" href="[% abspath %]contact.html">Kontakt</a>
+    <a class="w3-bar-item w3-button w3-nav-button" href="[% abspath %]aboutus.html">Über uns</a>
+    <a class="w3-bar-item w3-button w3-right w3-nav-button" target="_blank" href="[% abspath %]backoffice/login.html">Login</a>
   </div>
 </div>
 
index 796851e..bccb010 100644 (file)
@@ -1,3 +1,5 @@
 <div class="w3-container w3-center">
   <h1>Ueber uns</h1>
+  <h2>SAFFRAN IT Consulting</h2>
+  <p></p>
 </div>
\ No newline at end of file
index 841566a..2edbb46 100644 (file)
-  <!-- <div class="w3-display-container">
-      <div class="w3-display-container mySlides" style="height: 200px; overflow: hidden;">
-        <img src="[% abspath %]img/slides/slide1.jpg" style="width:100%">
-        <div class="w3-display-middle w3-container w3-padding-32">
-          <h1>Keep your data private</h1>
+ <div class="w3-display-container">
+      <div class="w3-display-container mySlides w3-animate-top" style="height: 300px; overflow: hidden;">
+        <div class="w3-row">
+          <div class="w3-container w3-cell">
+            <img src="[% abspath %]img/slides/slide4.jpg" style="width:100%">
+          </div>
+          <div class="w3-container w3-cell w3-theme-l3">
+            <p class="w3-text-black w3-xlarge w3-padding-64"><span class="w3-large">Bevor Sie ihren PC zum Fenster rausschmeißen,</span><br/>Fragen Sie uns!<br/>Das wird billiger!</p>
+          </div>
         </div>
-      </div>
-      <div class="w3-display-container mySlides" style="height: 200px; overflow: hidden;">
-        <img src="[% abspath %]img/slides/slide1.jpg" style="width:100%">
-        <div class="w3-display-middle w3-container w3-padding-32">
-          <h1>Access your data from anywhere</h1>
-        </div>
-      </div>
-      <div class="w3-display-container mySlides" style="height: 200px; overflow: hidden;">
-        <img src="[% abspath %]img/slides/slide1.jpg" style="width:100%">
-        <div class="w3-display-middle w3-container w3-padding-32">
-          <h1>Manage your data the easy way</h1>
+        
+        <div class="w3-display-middle w3-container w3-padding w3-center">
+          
         </div>
       </div>
-    </div>
-     -->
-     <div class="w3-container w3-center">
-      <h1>Wir sind umgezogen</h1>
-    </div>
-    <div class="w3-display-container w3-row w3-center" style="margin-top: 70px;">
-      <div class="w3-container w3-third">
-      <div class="w3-display-container" style="height: 200px;">
-        <img class="w3-display-middle" src="[% abspath %]img/dks_logo.png" style="width: 200px;">
+      <div class="w3-display-container mySlides w3-animate-right" style="height: 300px; overflow: hidden;">
+        <img src="[% abspath %]img/slides/slide2.jpg" style="width:100%">
+        <div class="w3-display-middle w3-container w3-center w3-padding">
+          <p class="w3-text-white w3-xlarge">behalten Sie Ihre Daten Hause/im Büro<br/>Und greifen Sie von überall drauf zu!</h1>
         </div>
-        <strong>DKS s.à r.l.</strong><br>
-          <address style="text-decoration: line-through;">8b, rue du Moulin<br>
-        L-6914 Roodt/Syre<br/>
-            Tel: +352 26 78 74 06<br/>
-            E-Mail: info@dks.lu
-      </address>
-          
-      </div>
-      <div class="w3-container w3-display-container w3-quarter w3-center">
-        <img  src="[% abspath %]img/arrow_toright.svg" style="width: 70%;">
       </div>
-      <div class="w3-container w3-third">
-      <div class="w3-display-container" style="height: 200px;">
-        <img class="w3-display-middle" src="[% abspath %]img/sitc.png" style="width: 90%;"></div>
-        <strong>SAFFRAN IT Consulting</strong><br>
-          <address>4, rue Principale<br>
-        L-3770 Tétange</address>
-        Tel: +352 691 504 574<br/>
-            E-Mail: info@saffran.lu
-      </div>
-    </div>
-    <div class="w3-container w3-center">
-      <h1>Unsere Produkte</h1>
-    </div>
-  <div class="w3-container">
-    
-      <div class="w3-container w3-third w3-padding-24 w3-border">
-      <header class="w3-container w3-center">
-        <img src="[% abspath %]img/PrivateCloud.png" alt="Private Cloud" style="height: 48px;">
-        <h2>Private Cloud</h2>
-      </header>
-      <div class="w3-container">
-        Behalten Sie Ihre Daten bei sich zu Hause oder im Büro. Somit haben Sie jederzeit Zugriff auf Ihre Daten.<br/><br/>
-      </div>
-    </div>
-
-    <div class="w3-container w3-third w3-padding-24 w3-border">
-      <header class="w3-container w3-center">
-        <img src="[% abspath %]img/Apps.png" alt="Apps" style="height: 48px;">
-        <h2>Apps</h2>
-      </header>
-      <div class="w3-container">
-        Neben der Verwaltung Ihrer Dateien, können Sie mit Hilfe unserer Apps verschiedenste Daten in Ihrer "Private Cloud" verwalten.  
+      <div class="w3-display-container mySlides w3-animate-left" style="height: 300px; overflow: hidden;">
+        <img src="[% abspath %]img/slides/slide3.jpg" style="width:100%">
+         <div class="w3-display-middle w3-container w3-center w3-padding">
+        <p class="w3-xlarge w3-text-red">Verschwenden Sie keine Zeit,<br/>Mit aufwendiger Einarbeitung<br/>wir wissen wie es geht!</p>
+       </div>
       </div>
     </div>
+     
+     
     
-    <div class="w3-container w3-third w3-padding-24 w3-border">
-      <header class="w3-container w3-center">
-        <img src="[% abspath %]img/Network.png" alt="Network" style="height: 48px;">
-        <h2>Hosting</h2>
-      </header>
-      <div class="w3-container">
-        Um das Paket zu vervollständigen, bieten wir Ihnen auch nach die Möglichkeit z.B. Ihre Webseite und/oder E-Mails Ihrer Domaine auf unseren Servern zu hosten. 
-      </div>      
-    </div>
-  </div>
-  <div class="w3-container w3-center">
-    <h1>Unsere Dienstleistungen</h1>
-  </div>
   <div class="w3-container">
-      <div class="w3-container w3-third w3-padding-24 w3-border">
-        <header class="w3-container w3-center">
-          <img src="[% abspath %]img/Disk_HDD.png" alt="Backup"  style="height: 48px;">
-          <h2>Backup</h2>
-        </header>
-        <div class="w3-container">
-          Backup, Archiv, Versionierung und Synchronisation Ihrer Daten ist heute wichtiger denn je. Wir bieten Ihnen eine Lösung an mit der Sie nie wieder Daten verlieren.  
-        </div> 
+      <div class="w3-row w3-border-bottom ">
+        <div class="w3-container w3-half w3-center w3-light-grey">
+          <img class="w3-margin" src="[% abspath %]img/cloud.jpg" alt="Private Cloud"  style="width: 50%;"/>
+        </div>
+        <div class="w3-container w3-half w3-padding-24">
+          <h2>IT-Infrastruktur</h2>
+          <p>Behalten Sie Ihre Daten bei sich zu Hause oder im Büro. Somit haben Sie jederzeit Zugriff auf Ihre Daten.</p>
+        </div>
       </div>
-      <div class="w3-container w3-third w3-padding-24 w3-border">
-        <header class="w3-container w3-center">
-          <img src="[% abspath %]img/Code.png" alt="Entwicklung"  style="height: 48px;">
-          <h2>Entwicklung</h2>
-        </header>
-        <div class="w3-container">
-          Jedes Unternehmen funktionniert anders, respektive hat andere Vorgaben, Voraussetzungen und/oder Abhängigkeiten. Wir können unsere Anwendungen an Ihre Geschäftsprozesse anpassen respektive eine ganz neue Anwendung für Sie erstellen.   
+      <div class="w3-row w3-border-bottom">
+        <div class="w3-container w3-half w3-padding-24">
+          <h2>Software / Anwendungen</h2>
+          <p>Neben der Verwaltung Ihrer Dateien, können Sie mit Hilfe unserer Apps verschiedenste Daten in Ihrer "Private Cloud" verwalten. </p>
+        </div>
+        <div class="w3-container w3-half w3-center w3-padding w3-light-grey">
+          <img class="w3-margin" src="[% abspath %]img/Apps.svg" alt="Apps"  style="width: 50%;"/>
         </div>
       </div>
-      <div class="w3-container w3-third w3-padding-24 w3-border">
-        <header class="w3-container w3-center">
-          <img src="[% abspath %]img/Support.png" alt="Support"  style="height: 48px;">
-          <h2>Support</h2>
-        </header>
-        <div class="w3-container">
-          Wir Supporten nicht nur unsere Anwendungen, sondern beraten SIe auch noch in der Konzeption Ihrer IT-Infrastruktur, und können diese falls nötig auch noch pflegen.
+      <!-- <div class="w3-row w3-border-bottom w3-light-grey">
+        <div class="w3-container w3-half w3-center">
+          <img src="[% abspath %]img/Network.svg" alt="Private Cloud"  style="width: 50%;"/>
+        </div>
+        <div class="w3-container w3-half w3-padding-24">
+          <h2>Webseiten / E-Mail / Hosting</h2>
+          <p>Um das Paket zu vervollständigen, bieten wir Ihnen auch nach die Möglichkeit z.B. Ihre Webseite und/oder E-Mails Ihrer Domaine auf unseren Servern zu hosten.</p>
+        </div>
+      </div>
+      <div class="w3-row w3-border-bottom">
+        <div class="w3-container w3-half w3-padding-24">
+          <h2>Entwicklung / Datenbanken</h2>
+          <p>Jedes Unternehmen funktionniert anders, respektive hat andere Vorgaben, Voraussetzungen und/oder Abhängigkeiten. Wir können unsere Anwendungen an Ihre Geschäftsprozesse anpassen respektive eine ganz neue Anwendung für Sie erstellen.</p>
+        </div>
+        <div class="w3-container w3-half w3-center w3-light-grey">
+          <img src="[% abspath %]img/Code.svg" alt="Apps"  style="width: 50%;"/>
+        </div>
+      </div> -->
+      <div class="w3-row w3-border-bottom w3-light-grey">
+        <div class="w3-container w3-half w3-center">
+          <img src="[% abspath %]img/Support.svg" alt="Support"  style="width: 50%;"/>
+        </div>
+        <div class="w3-container w3-half w3-padding-24">
+          <h2>Support / IT-HelpDesk</h2>
+          <p>Wir Supporten nicht nur unsere Anwendungen, sondern beraten SIe auch noch in der Konzeption Ihrer IT-Infrastruktur, und können diese falls nötig auch noch pflegen.</p>
         </div>
       </div>
-    </div>
   </div>
+
index 8a48e56..984df21 100644 (file)
@@ -1,20 +1,19 @@
-[% #USE DBI %]
-[% #USE dksdb = DBI(dsn, dbuser, dbpassword) %]
 <!DOCTYPE html>
-<html lang="en">
+<html lang="[% lang %]">
 <head>
   
   [% INCLUDE block/head.tt %]
   <link  rel="stylesheet" href="[% abspath %]css/w3pro.css?v=[% vstamp %]">
   <link  rel="stylesheet" href="[% abspath %]css/theme.css?v=[% vstamp %]">
-  <link  rel="stylesheet" href="[% abspath %]css/site.css?v=[% vstamp %]">
+  <!-- <link  rel="stylesheet" href="[% abspath %]css/site.css?v=[% vstamp %]"> -->
 </head>
 <body >
   [% INCLUDE block/topnav.tt %] 
-  <div class="w3-display-container w3-main" style="margin-top: 100px; min-height: 70vh;">
+  <div class="w3-display-container w3-main" style="margin-top: 40px; min-height: 70vh;">
   [% INCLUDE $page %]
 </div>
   [% INCLUDE block/footer.tt %]
+  [% INCLUDE block/gdpr.tt %]
   <script src="[% abspath %]js/slides.js"></script>
 </body>
 </html>