From: Kilian Saffran Date: Wed, 18 Dec 2019 06:55:57 +0000 (+0100) Subject: v20191217 X-Git-Tag: 1.0.15~78 X-Git-Url: http://cloud.dks.lu/git/?a=commitdiff_plain;h=f785b9d116d46f0d11d8a83d5e86f728bcc93efa;p=pot_lu.git v20191217 --- diff --git a/.htaccess b/.htaccess index 8660ace8..532d804f 100644 --- a/.htaccess +++ b/.htaccess @@ -2,7 +2,7 @@ #RewriteCond %{SERVER_PORT} 80 #RewriteRule ^(.*)$ https://www.dks.lu/$1 [R,L] #AddType application/octet-stream .pdf -SetEnv PERL5LIB "/home/kilian/perl5/lib/perl5" +SetEnv PERL5LIB "/usr/home/dksalu/public_html/pot_lu/backoffice/api/lib/perl5" RewriteEngine on #dev-mode begin DirectoryIndex index.cgi index.html diff --git a/backoffice/api/db.cgi b/backoffice/api/db.cgi index 5233b5c0..1c5fa1fa 100755 --- a/backoffice/api/db.cgi +++ b/backoffice/api/db.cgi @@ -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'); diff --git a/backoffice/api/file.cgi b/backoffice/api/file.cgi index f0af54da..c7673a80 100755 --- a/backoffice/api/file.cgi +++ b/backoffice/api/file.cgi @@ -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'); diff --git a/backoffice/api/index.cgi b/backoffice/api/index.cgi index 56cf9686..58a49ab7 100755 --- a/backoffice/api/index.cgi +++ b/backoffice/api/index.cgi @@ -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'); @@ -6,7 +6,7 @@ use CGI; use CGI::Cookie; #use CGI::Carp qw/fatalsToBrowser/; use File::Basename; -use Business::Tax::VAT::Validation; +use Business::Tax::VAT::Validation; use JSON::PP; use dksconfig qw/$sitecfg/; @@ -169,7 +169,14 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ if ($dbschema->{cnt} > 1){ $dbsnum = int($dbschema->{cnt}) + 1; } - $html->{result}->{newschema} = $cmpy.$dnsnum; + $html->{result}->{newschema} = $cmpy.$dbsnum; + } + if ($p->{fn} eq "installschema"){ + my $schemasql = "select count(*) as cnt from information_schema.schemata where schema_name='".$db->securetext($p->{schemaname})."';"; + my $dbschema = $db->dbquery($schemasql); + if ($dbschema->{cnt} eq "0"){ + $db->createdefinedschema("defaultcompany",$db->securetext($p->{schema})); + } } } diff --git a/backoffice/api/lib/sendemail.pm b/backoffice/api/lib/sendemail.pm index fd53b2cb..65de05f3 100644 --- a/backoffice/api/lib/sendemail.pm +++ b/backoffice/api/lib/sendemail.pm @@ -13,9 +13,9 @@ sub new { 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->{user} = 'ksaffran@dks.lu'; + $self->{password} = "FB1ia1ka"; + $self->{from} = 'support@dks.lu'; return $self; } @@ -35,10 +35,6 @@ sub sendemail(){ 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})){ @@ -46,9 +42,6 @@ sub sendemail(){ 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); $body = $tmpl->{'emailtext'}; @@ -68,14 +61,6 @@ sub sendemail(){ $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 =~ /.+\@.+\..+/)){ @@ -96,10 +81,9 @@ sub sendemail(){ $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); + $cmd .= '-o message-content-type=html '; + $cmd .= '-o message-charset=ISO-8859-1 '; + $cmd .= '-o message-file='.$f.' '; open(EML,">".$f); print EML $bodytmpl; close(EML); @@ -111,14 +95,8 @@ sub sendemail(){ $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; diff --git a/backoffice/api/lib/session.pm b/backoffice/api/lib/session.pm index b44184fc..0814d5fb 100644 --- a/backoffice/api/lib/session.pm +++ b/backoffice/api/lib/session.pm @@ -33,7 +33,7 @@ sub checklogin(){ $login =~ s/^\s+//; $login =~ s/\s+$//; - $ret->{message} = "Mot de passe ou Login pas inconnue!"; + $ret->{message} = "Mot de passe ou Login 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}."');"); @@ -60,7 +60,7 @@ sub passwordforgotten(){ my $self = shift; my $email = shift; my $ret->{messagetype} ='w3-red'; - $ret->{message} = "Onbekannt E-mail!"; + $ret->{message} = "email inconnue!"; my $sql = "select id,userpassword from users where username='".$self->{db}->securetext($email)."';"; my $ex = $self->{db}->dbquerysorted($sql); if (keys(%{$ex}) > 0){ @@ -72,10 +72,10 @@ sub passwordforgotten(){ my $mret = $eml->sendemail('user_forgotpasswd',$ex->{0}->{id},$email,$data,undef); if ($mret != 0){ $ret->{messagetype} ='w3-red'; - $ret->{message} = "Den Moment ass et leider nët méglech d'Passwuert autmatesch zreckzesetzen,
wend dech w.e.g. via E-Mail un webmaster\@fld.lu!"; + $ret->{message} = "Pour le moment il n'y est pas possible de recevoir un nouveau mot de passe,
si besoin contacter le support support\@dks.lu!"; return $ret; } - $ret->{message} = "Mir hun dir eng E-Mail, matt engem neien Passwuert gescheckt!"; + $ret->{message} = "nous vous avons envoyés unn nouveau mot de passe par via email!"; $ret->{messagetype} = "w3-green"; } return $ret; @@ -106,18 +106,18 @@ sub registeruser(){ my $user = $self->{db}->dbquerysorted("select id from users where username='".$data->{users_email}."';"); if (keys(%{$user}) > 0){ $ret->{page} = "register.tt"; - $ret->{message} = "Ily existe déjà un utilisateur avec la mème adresse e-mail!"; + $ret->{message} = "Il y existe déjà un utilisateur avec la mème adresse e-mail!"; return $ret; } my $newcode = $self->randomstring(6); my $newuserid = $self->{db}->dbquerysorted("INSERT INTO users (username,vcode) VALUES ('".$data->{users_email}."','".$newcode."') returning id;"); - $self->{db}->dbexec("INSERT INTO useringroups (id_user,id_group) VALUES ('".$newuserid->{0}->{id}."',(select id from usergroups where isdefault=true));"); + #$self->{db}->dbexec("INSERT INTO useringroups (id_user,id_group) VALUES ('".$newuserid->{0}->{id}."',(select id from usergroups where isdefault=true));"); my $company = $self->{db}->dbquerysorted("select id from companies where link=unaccent_string('".$data->{companies_company}."');"); if (keys(%{$company}) == 0 ){ $company = $self->{db}->dbquerysorted("INSERT INTO companies (company,link) VALUES ('".$data->{companies_company}."',unaccent_string('".$data->{companies_company}."')) returning id;"); - $self->{db}->dbexec("INSERT INTO useringroups (id_user,id_group) VALUES ('".$newuserid->{0}->{id}."',(select id from usergroups where usergroup='company'));"); + #$self->{db}->dbexec("INSERT INTO useringroups (id_user,id_group) VALUES ('".$newuserid->{0}->{id}."',(select id from usergroups where usergroup='company'));"); } $self->{db}->dbexec("INSERT INTO members (surname, prename, phone, id_user, id_company, job) VALUES('".$data->{members_surname}."', '".$data->{members_prename}."', '".$data->{members_phone}."', ".$newuserid->{0}->{id}.", ".$company->{0}->{id}.", '".$data->{members_job}."');"); my $maildata->{vcode} = $newcode; diff --git a/backoffice/api/tmp/mailbody_ksaffran_dks.lu.txt b/backoffice/api/tmp/mailbody_ksaffran_dks.lu.txt new file mode 100644 index 00000000..e3ff4730 --- /dev/null +++ b/backoffice/api/tmp/mailbody_ksaffran_dks.lu.txt @@ -0,0 +1,31 @@ + + + + + + +
+ POT - Plan d'organisation de travail +
+
+ Bonjour Kilian Saffran,
+
+Le code pour valider votre e-mail est: +
+rpj0shm
+
+entrez le code ici: http://localhost/backoffice/validationcode.html +
+Méilleurs Salutations,
+
+pot.lu Support Team +
+
+
+ + \ No newline at end of file diff --git a/backoffice/api/tmp/sendmail.log b/backoffice/api/tmp/sendmail.log new file mode 100644 index 00000000..7983e135 --- /dev/null +++ b/backoffice/api/tmp/sendmail.log @@ -0,0 +1 @@ +SEND EMAIL CMD:perl "/usr/home/dksalu/public_html/pot_lu/backoffice/api/sendEmail" -f support@dks.lu -s "mail.your-server.de:587" -xu "ksaffran@dks.lu" -xp "FB1ia1ka" -q -o tls=auto -t "ksaffran@dks.lu" -u "Validation de votre Email pour le site pot.lu" diff --git a/backoffice/api/tmp/sql.log b/backoffice/api/tmp/sql.log deleted file mode 100644 index fd658842..00000000 --- a/backoffice/api/tmp/sql.log +++ /dev/null @@ -1,20 +0,0 @@ - -== -DELETE FROM portanova. WHERE id='3'; -== - -== -DELETE FROM portanova.workplans WHERE id='3'; -== - -== -DELETE FROM portanova.workplans WHERE id='2'; -== - -== -DELETE FROM portanova.workplans WHERE id='4'; -== - -== -DELETE FROM portanova.workplans WHERE id='5'; -== diff --git a/backoffice/api/upload.cgi b/backoffice/api/upload.cgi index 194fca86..a3cabbe4 100755 --- a/backoffice/api/upload.cgi +++ b/backoffice/api/upload.cgi @@ -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'); diff --git a/backoffice/data/schemata/defaultcompany.schema.sql b/backoffice/data/schemata/defaultcompany.schema.sql index f7db8e9a..027a8213 100644 --- a/backoffice/data/schemata/defaultcompany.schema.sql +++ b/backoffice/data/schemata/defaultcompany.schema.sql @@ -1,46 +1,6 @@ CREATE SCHEMA %%NEWSCHEMA%%; -CREATE TABLE %%NEWSCHEMA%%.defaultweekworkplan ( - id integer NOT NULL, - id_staff integer, - startdate date, - mon json, - tue json, - wed json, - thu json, - fri json, - sat json, - sun json -); - -CREATE SEQUENCE %%NEWSCHEMA%%.defaultweekworkplan_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - -ALTER SEQUENCE %%NEWSCHEMA%%.defaultweekworkplan_id_seq OWNED BY %%NEWSCHEMA%%.defaultweekworkplan.id; - -CREATE TABLE %%NEWSCHEMA%%.defaultworkplan ( - id bigint NOT NULL, - id_staff integer, - daydate date, - plannedtimes json, - vacancytimes json, - presencetimes json -); - -CREATE SEQUENCE %%NEWSCHEMA%%.defaultworkplan_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - -ALTER SEQUENCE %%NEWSCHEMA%%.defaultworkplan_id_seq OWNED BY %%NEWSCHEMA%%.defaultworkplan.id; - CREATE TABLE %%NEWSCHEMA%%.reportperiod ( id integer NOT NULL, periodname text, @@ -1125,10 +1085,6 @@ CREATE SEQUENCE %%NEWSCHEMA%%.worktypes_id_seq ALTER SEQUENCE %%NEWSCHEMA%%.worktypes_id_seq OWNED BY %%NEWSCHEMA%%.worktypes.id; -ALTER TABLE ONLY %%NEWSCHEMA%%.defaultweekworkplan ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.defaultweekworkplan_id_seq'::regclass); - -ALTER TABLE ONLY %%NEWSCHEMA%%.defaultworkplan ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.defaultworkplan_id_seq'::regclass); - ALTER TABLE ONLY %%NEWSCHEMA%%.reportperiod ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.reportperiod_id_seq'::regclass); ALTER TABLE ONLY %%NEWSCHEMA%%.sites ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.sites_id_seq'::regclass); @@ -1151,12 +1107,6 @@ ALTER TABLE ONLY %%NEWSCHEMA%%.workplans ALTER COLUMN id SET DEFAULT nextval('%% ALTER TABLE ONLY %%NEWSCHEMA%%.worktypes ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.worktypes_id_seq'::regclass); -ALTER TABLE ONLY %%NEWSCHEMA%%.defaultweekworkplan - ADD CONSTRAINT defaultweekworkplan_pkey PRIMARY KEY (id); - -ALTER TABLE ONLY %%NEWSCHEMA%%.defaultworkplan - ADD CONSTRAINT defaultworkplan_pkey PRIMARY KEY (id); - ALTER TABLE ONLY %%NEWSCHEMA%%.reportperiod ADD CONSTRAINT reportperiod_pkey PRIMARY KEY (id); @@ -1191,3 +1141,4 @@ ALTER TABLE ONLY %%NEWSCHEMA%%.worktypes ADD CONSTRAINT worktypes_pkey PRIMARY KEY (id); CREATE TRIGGER trg_upd_%%NEWSCHEMA%%_weekhours BEFORE UPDATE OF weekhours ON %%NEWSCHEMA%%.staffperiodbase FOR EACH ROW EXECUTE PROCEDURE public.trg_update_monthhours(); + diff --git a/backoffice/img/icons/calendar.svg b/backoffice/img/icons/calendar.svg index 6b51e035..2e7a8a21 100644 --- a/backoffice/img/icons/calendar.svg +++ b/backoffice/img/icons/calendar.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/backoffice/img/icons/calendar_white.svg b/backoffice/img/icons/calendar_white.svg index c738ec5a..2e7a8a21 100644 --- a/backoffice/img/icons/calendar_white.svg +++ b/backoffice/img/icons/calendar_white.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/backoffice/img/icons/poticon.svg b/backoffice/img/icons/poticon.svg new file mode 100644 index 00000000..f96b1f77 --- /dev/null +++ b/backoffice/img/icons/poticon.svg @@ -0,0 +1,150 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backoffice/img/pottop.png b/backoffice/img/pottop.png new file mode 100644 index 00000000..5f159c55 Binary files /dev/null and b/backoffice/img/pottop.png differ diff --git a/backoffice/index.cgi b/backoffice/index.cgi index ecd3994b..e26f7748 100755 --- a/backoffice/index.cgi +++ b/backoffice/index.cgi @@ -1,4 +1,4 @@ -#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl +#!/usr/local/bin/perl use strict; use lib ('api/lib/perl5'); diff --git a/backoffice/js/admin.js b/backoffice/js/admin.js index 3cc25111..d43a4bc6 100644 --- a/backoffice/js/admin.js +++ b/backoffice/js/admin.js @@ -82,7 +82,7 @@ document.addEventListener("DOMContentLoaded", function() { }); function getschemata(){ - req.reqdata("POST","db.cgi",{"get":"companylist"},fillschematalist); + req.reqdata("POST","db.cgi",{"get":"companieslist"},fillschematalist); } function fillschematalist(data){ diff --git a/backoffice/js/formsave.js b/backoffice/js/formsave.js index 8611d493..1b6f9a7c 100644 --- a/backoffice/js/formsave.js +++ b/backoffice/js/formsave.js @@ -1,7 +1,7 @@ function saveform(frmid,aftercallback){ var flds=getformcontent(frmid,null); flds["fn"] ="saveform"; - flds["schemata"]=parent.admin.getcurrentSchemata(); + flds["schemata"]=schemata; console.log(flds); if (aftercallback){ req.reqdata("POST","index.cgi",flds,aftercallback); @@ -86,6 +86,8 @@ function getformcontent(frmid,dataflds){ } } + console.log("Fields to Save"); + console.log(flds); return flds; } @@ -233,7 +235,7 @@ function fillformbydataclass2(dataclass,choices,data){ for (var f in frm){ //console.log(frm[f]); if (data[frm[f].id]){ - //console.log(frm[f].id + " => " + data[frm[f].id]); + console.log(frm[f].id + " => " + data[frm[f].id]); if (frm[f].tagName == 'INPUT'){ if (frm[f].type == "checkbox"){ diff --git a/backoffice/js/module_global.js b/backoffice/js/module_global.js index 8cc297bf..b0fac45d 100644 --- a/backoffice/js/module_global.js +++ b/backoffice/js/module_global.js @@ -56,6 +56,24 @@ var timecalc = { while (str.length < length) str = padString + str; return str; + }, + mondayBefore: function(sdate){ + if (sdate == null){ + sdate=new Date(); + } + var day = sdate.getDay(); + var prevMonday = new Date(); + if(sdate.getDay() == 0){ + prevMonday = new Date().setDate(sdate.getDate() - 0); + } + else{ + prevMonday = new Date().setDate(sdate.getDate() - day); + } + + return new Date(prevMonday); + }, + sundayAfter: function(sdate){ + var nextSunday = new Date(); } } diff --git a/backoffice/js/request.js b/backoffice/js/request.js index d63cf1d4..d8ea62ed 100644 --- a/backoffice/js/request.js +++ b/backoffice/js/request.js @@ -52,7 +52,8 @@ var req = { if (callback){ async=true; } - + console.log("DATA to send:"); + console.log(data); var request = new XMLHttpRequest(); if (typeof data == 'object'){ var xdata = []; @@ -78,7 +79,7 @@ var req = { request.open(method.toUpperCase(), sendurl, true); request.onload = function(){ if (request.status >= 200 && request.status <= 400){ - console.log("Status returned: " + request.status + "resp:" + request.getResponseHeader("Content-Type")); + //console.log("Status returned: " + request.status + "resp:" + request.getResponseHeader("Content-Type")); if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0){ if (request.responseText){ console.log(request.responseText); diff --git a/backoffice/tmp/sql.log b/backoffice/tmp/sql.log deleted file mode 100644 index e69de29b..00000000 diff --git a/backoffice/tmpl/block/dlgdeleterow.tt b/backoffice/tmpl/block/dlgdeleterow.tt index 903ec61a..b3d5fb79 100644 --- a/backoffice/tmpl/block/dlgdeleterow.tt +++ b/backoffice/tmpl/block/dlgdeleterow.tt @@ -1,3 +1,4 @@ +[% PROCESS macro/fields.tt %]
@@ -36,7 +37,7 @@ function deleterow_confirmed(){ //var deltbl = "ident_"+ document.getElementById('dlgdeltable').value + "_id"; req.reqdata("POST", "db.cgi", { "del2": "1", - "schemata": parent.admin.getcurrentSchemata(), + "schemata": schemata, "id" : document.getElementById('dlgdelrowid').value, "table": document.getElementById('dlgdeltable').value }, afterdelete); @@ -47,16 +48,18 @@ function deleterow_confirmed(){ } function afterdelete(){ - if (afterdeletecallback){ + + if (afterdeletecallback != null){ console.log("lauch after callback"); console.log(afterdeletecallback); - call(afterdeletecallback); + afterdeletecallback(null); } document.getElementById('dlgdeleterow').style.display='none'; var sb = document.getElementById("snackbar"); sb.className="show w3-green"; sb.innerHTML = 'Les données ont été supprimées!'; setTimeout(function(){ sb.className = sb.className.replace("show w3-green", ""); }, 3000); + afterdeletecallback =null; return false; } \ No newline at end of file diff --git a/backoffice/tmpl/module/companies/index.js b/backoffice/tmpl/module/companies/index.js index dc07ef2e..9a6202c3 100644 --- a/backoffice/tmpl/module/companies/index.js +++ b/backoffice/tmpl/module/companies/index.js @@ -5,176 +5,4 @@ function initpage(){ console.log("Current Schema:" + schemata); companies.inittable(); module.viewpanel("tbl_companies"); - //call("reportperiod","inittable"); -// flatpickr(".timefield",{ -// //altInput: true, -// //altFormat: "H:i", -// dateFormat: "H:i", -// //allowInput: true, -// defaultHour:'', -// defaultMinute:'', -// enableTime: true, -// noCalendar: true, -// time_24hr: true, -// "locale": "fr", -// }); } - -// var tbl = null; -// [% sid = session.id %] -// [% IF(session.usergroups.search('admin') != 1) %] -// [% qcompany = dksdb.query("select id_company from vw_userlist where id=$sid;") %] -// [% company = qcompany.get_all() %] -// var idcompany = "[% company.0.id_company %]"; -// [% ELSE %] -// var idcompany = null; -// [% END %] -// //var choice = {"submissionaccess":{"projects":null,"cdm":null,"cdm_requests":null}}; - -// function initpage() { -// [% IF(session.usergroups.search('admin') == 1) %] - -// tbl = new Tabulator("#tbl_companies", { -// headerFilterPlaceholder: "filter...", -// height: "95vh", -// layout: "fitDataFill", -// selectable: 1, -// responsiveLayout: "collapse", -// columns: [{ -// title: "entreprise", -// field: "company", -// headerFilter: "input" -// }, { -// title: "address", -// field: "address", -// headerFilter: "input" -// }, { -// title: "cp", -// field: "zip", -// headerFilter: "input" -// }, { -// title: "ville", -// field: "city", -// headerFilter: "input" -// }, { -// title: "pays", -// field: "country", -// headerFilter: "input" -// }] -// }); -// gettbldata(); - -// [% ELSE %] -// getcompanydata(idcompany); -// [% END %] - - -// } -// [% IF(session.usergroups.search('admin') == 1) %] - - - -// function gettbldata() { -// req.reqdata("POST", "db.cgi", { -// "get": "companylist" -// }, loadtbldata); - -// } - -// function loadtbldata(data) { -// if (data && data.sqldata) { -// tbl.setData(data.sqldata); -// } -// } - -// function edit() { - -// var udata = tbl.getSelectedData(); -// console.log(udata[0]); -// if (udata[0]) { -// var uid = udata[0].id; -// getcompanydata(uid); - -// } - -// } - -// function add() { -// cleanform('companies'); -// viewform(); -// } - -// function remove() { -// var udata = tbl.getSelectedData(); -// if (udata[0]) { -// if (confirm("Êtes vous sûre de supprimer l'entreprise selectionné?")) { -// req.reqdata("POST", "db.cgi", { -// "del": "1", -// "ident_companies_id": udata[0].id -// }, gettbldata); -// } -// } - -// } -// [% END %] - - -// function getcompanydata(id) { -// req.reqdata("POST", "db.cgi", {"get": "companydata","filter": "id=" + id}, fillformcompany); -// } - -// function fillformcompany(data) { -// cleanform('companies'); -// var isreadonly = false; -// [% IF(session.usergroups.search('admin') != 1) %] -// if (data.sqldata[0]["validated"] == 1) { -// isreadonly = true; -// } -// [% END %] -// if (data && data.sqldata) { -// fillformbydataclass('companies', data.sqldata[0], isreadonly); -// } -// if (isreadonly == true) { -// document.getElementById("btnsave_companies").style.display = 'none'; -// } -// } - -// function viewtable() { -// gettbldata(); -// document.getElementById("pnl_table").style.display = 'block'; -// document.getElementById("pnl_company").style.display = 'none'; -// } - -// function viewform(){ -// document.getElementById("pnl_table").style.display = 'none'; -// document.getElementById("pnl_company").style.display = 'block'; -// } - -//[% IF(session.usergroups.search('admin') == 1) %] -// function getprojects(){ -// req.reqdata("POST","db.cgi",{"get":"projectlist"},fillprojectlist); -// } - -// function fillprojectlist(data){ -// console.log("fill projectlist"); -// fillselectlist(choice["submissionaccess"]["projects"],data.sqldata,'id','project'); -// return false; -// } - -//[% END %] - -// function getcdms(){ -// req.reqdata("POST","db.cgi",{"get":"cdmlist"},fillcdmlist); -// } - -// function fillcdmlist(data){ -// console.log("fill cdmlist"); -// fillselectlist(choice["submissionaccess"]["cdm_requests"],data.sqldata,'id','cdm'); -// //var cdmlist = []; -// [% IF (session.usergroups.search('admin') == 1) %] -// fillselectlist(choice["submissionaccess"]["cdm"],data.sqldata,'id','cdm'); -// //choice["submissionaccess"]["cdm"].clearStore(); -// [% END %] - -// return false; -// } \ No newline at end of file diff --git a/backoffice/tmpl/module/companies/index.tt b/backoffice/tmpl/module/companies/index.tt index f59f8b08..6c2f2b72 100644 --- a/backoffice/tmpl/module/companies/index.tt +++ b/backoffice/tmpl/module/companies/index.tt @@ -1,7 +1,7 @@
- + [% INCLUDE "module/$module/widgets/companies/tbar_companies.tt" %]
diff --git a/backoffice/tmpl/module/companies/widgets/companies/companies.js b/backoffice/tmpl/module/companies/widgets/companies/companies.js index d3eb7510..4c9bbec1 100644 --- a/backoffice/tmpl/module/companies/widgets/companies/companies.js +++ b/backoffice/tmpl/module/companies/widgets/companies/companies.js @@ -6,7 +6,7 @@ var companies ={ name: "companies", choices:{}, initform: function(){ - + }, inittable: function(){ companies.initform(); @@ -52,9 +52,12 @@ var companies ={ }, add: function(){ cleanform2(companies.name,companies.choices); + document.getElementById("company").addEventListener('blur', function(event){companies.checkschema(event,this.id);},true); module.viewpanel('frm_' + companies.name); }, edit: function(){ + console.log("force remove event"); + document.getElementById("company").removeEventListener('blur',function(){},true); var udata = companies.tbl.getSelectedData(); if (udata[0]) { cleanform2(companies.name,companies.choices); @@ -63,9 +66,9 @@ var companies ={ } }, fillform: function(data){ - console.log("Fill Form 1"); + //console.log("Fill Form 1"); if (data && data.sqldata){ - console.log("Fill Form 2"); + //console.log("Fill Form 2"); fillformbydataclass2(companies.name,companies.choices,data.sqldata[0]); } }, @@ -73,15 +76,36 @@ var companies ={ var udata = companies.tbl.getSelectedData(); if (udata[0]) { var uid = udata[0].id; - //TODO: delete Data - module.viewpanel('tbl_' + companies.name); + showdeletedlg("companies",uid,"Êtes vous sûre de supprimer l'entrprise sélectionnée?",companies.afterdeletecallback); + //module.viewpanel('tbl_' + companies.name); } }, saveform: function(){ - var wpdata = getformcontent(companies.name); + //var wpdata = getformcontent(companies.name); //TODO: save form - console.log(wpdata); + //console.log(wpdata); + saveform(companies.name); + if (document.getElementById("id").value == ""){ + console.log("Install new schema now!"); + } + }, + checkschema(ev,fieldid){ + var companyname = document.getElementById(fieldid).value; + //var curschemaval = document.getElementById("schemata").value; + //if (curschemaval == ""){ + req.reqdata("POST","index.cgi",{"fn":"getfreeschema","companyname":companyname},companies.setnewschema); + //} + }, + setnewschema(data){ + if (data && data.newschema){ + document.getElementById("schemata").value = data.newschema; + } }, + afterdeletecallback: function(data){ + companies.gettbldata(); + } + + // getcompany: function(ev,id){ // console.log(id + "=>" + ev.detail.value); // req.reqdata("POST","db.cgi",{"get":companies.name + "data","schemata":schemata,"filter":"id='" + ev.detail.value + "'"},companies.setcompany); diff --git a/backoffice/tmpl/module/companies/widgets/companies/frm_companies.tt b/backoffice/tmpl/module/companies/widgets/companies/frm_companies.tt index 3638f51d..e3211b28 100644 --- a/backoffice/tmpl/module/companies/widgets/companies/frm_companies.tt +++ b/backoffice/tmpl/module/companies/widgets/companies/frm_companies.tt @@ -9,14 +9,14 @@ [% fieldhidden('id','companies','ident') %]
[% fieldeditbox('company','companies','Entreprise','w3-half','','','') %] - [% fieldeditbox('socialtype','companies','dénom. Sociale','w3-quarter','','','') %] + [% fieldeditbox('socialtype','companies','dénom. Sociale','w3-quarter','','','s.à r.l.') %] [% fieldeditbox('address','companies','Adresse','','','','') %] [% fieldeditbox('zip','companies','CP','w3-fifth','','','') %] [% fieldeditbox('city','companies','Ville','w3-half','','','') %] - [% fieldeditbox('country','companies','Pays','w3-quarter','','','') %] + [% fieldeditbox('country','companies','Pays','w3-quarter','','','Luxembourg') %]
- [% fieldeditbox('comregister','companies','No. Registre de Commerce','w3-quarter','','','') %] - [% fieldeditbox('vatnumber','companies','No TVA Internationale','w3-quarter','','','') %] + [% fieldeditbox('comregister','companies','No. Registre de Commerce','w3-third','','','B123456') %] + [% fieldeditbox('vatnumber','companies','No TVA Internationale','w3-third','','','LU12345678') %]
[% fieldeditbox('email','companies','E-Mail','w3-half','','','') %]
diff --git a/backoffice/tmpl/module/dashboard/index.tt b/backoffice/tmpl/module/dashboard/index.tt index a0c53771..b8145c67 100644 --- a/backoffice/tmpl/module/dashboard/index.tt +++ b/backoffice/tmpl/module/dashboard/index.tt @@ -1,4 +1,7 @@ -[% appaccess = dksdb.prepare("select replace(ap.icon,'.svg','_white.svg') as icon,ap.app,ap.name,ug.usergroup from useringroups uig join apps ap on (uig.id_group=ap.id_usergroup) join usergroups ug on (uig.id_group=ug.id) where uig.id_user=? and ap.app != 'dashboard' order by ap.sort; ") %] +[% appaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,ug.usergroup +from (SELECT users.id,json_array_elements_text(users.id_usergroups)::INT4 AS id_usergroup FROM users) uig +join apps ap on (uig.id_usergroup=ap.id_usergroup) +join usergroups ug on (uig.id_usergroup=ug.id) where uig.id=? and ap.app != 'dashboard' order by ap.sort; ") %]
diff --git a/backoffice/tmpl/module/planning/index.tt b/backoffice/tmpl/module/planning/index.tt index d797cf08..b36f380f 100644 --- a/backoffice/tmpl/module/planning/index.tt +++ b/backoffice/tmpl/module/planning/index.tt @@ -3,7 +3,7 @@
- + [% INCLUDE "module/$module/widgets/reportperiod/tbar_reportperiod.tt" %] [% INCLUDE "module/$module/widgets/staffworkplan/tbar_staffworkplan.tt" %]
diff --git a/backoffice/tmpl/module/planning/widgets/reportperiod/dlg_reportperiod.tt b/backoffice/tmpl/module/planning/widgets/reportperiod/dlg_reportperiod.tt index f1f65081..deca2e18 100644 --- a/backoffice/tmpl/module/planning/widgets/reportperiod/dlg_reportperiod.tt +++ b/backoffice/tmpl/module/planning/widgets/reportperiod/dlg_reportperiod.tt @@ -1,5 +1,5 @@ [% PROCESS macro/fields.tt %] -
+
@@ -23,7 +23,7 @@
\ No newline at end of file diff --git a/backoffice/tmpl/module/staff/widgets/staff/frm_staff.tt b/backoffice/tmpl/module/staff/widgets/staff/frm_staff.tt new file mode 100644 index 00000000..0134e783 --- /dev/null +++ b/backoffice/tmpl/module/staff/widgets/staff/frm_staff.tt @@ -0,0 +1,45 @@ +[% PROCESS macro/fields.tt %] + \ No newline at end of file diff --git a/backoffice/tmpl/module/staff/widgets/staff/staff.js b/backoffice/tmpl/module/staff/widgets/staff/staff.js new file mode 100644 index 00000000..e4484d5f --- /dev/null +++ b/backoffice/tmpl/module/staff/widgets/staff/staff.js @@ -0,0 +1,148 @@ +//var tbl_staff = null; +//var weekdays= ["mon","tue","wed","thu","fri","sat","sun"]; +var staff ={ + tbl: null, + tblperiodbase: null, + current_user: null, + name: "staff", + choices:{}, + initform: function(){ + flatpickr(".datefield",{altInput: true, + altFormat: "d.m.Y", + dateFormat: "Y-m-d", + allowInput: true, + "locale": "fr", + }); + }, + inittable: function(){ + staff.initform(); + staff.tbl = new Tabulator("#tbl_" + staff.name, { + headerFilterPlaceholder: "filter...", + height: "92vh", + layout: "fitData", + selectable: 1, + rowContext:function(e, row){ + //e - the click event object + //row - row component + e.preventDefault(); // prevent the browsers default context menu form appearing. + }, + columns: [{ + title: "No.", + field: "staffnumber", + headerFilter: "input" + }, { + title: "Prénom", + field: "prename", + headerFilter: "input" + },{ + title: "Nom", + field: "surname", + headerFilter: "input" + }, { + title: "Job", + field: "job", + headerFilter: "input" + }, { + title: "entrée", + field: "entrydate", + headerFilter: "input",align: "right",formatter:"datetime", formatterParams:{ + inputFormat:"yyyy-mm-dd", + outputFormat:"DD.MM.YYYY", + invalidPlaceholder:""} + }, { + title: "sorite", + field: "leavedate",align: "right",formatter:"datetime", formatterParams:{ + inputFormat:"yyyy-mm-dd", + outputFormat:"DD.MM.YYYY", + invalidPlaceholder:""}, + headerFilter: "input" + }] + }); + staff.tblperiodbase = new Tabulator("#tbl_staffperiodbase", { + headerFilterPlaceholder: "filter...", + //height: "94vh", + layout: "fitDataFill", + selectable: 1, + rowContext:function(e, row){ + //e - the click event object + //row - row component + //var contextMenu = CtxMenu(); + //contextMenu.addItem("Editer", edit()); + // Add our custom function to the menu + //contextMenu.addItem("Hello World", ContextMenuExampleFunction); + + // Add a seperator + //contextMenu.addSeperator(); + e.preventDefault(); // prevent the browsers default context menu form appearing. + }, + columns: [ + { + title: "début", + field: "startdate", + align: "right", + formatter:"datetime",formatterParams:{inputFormat:"yyyy-mm-dd",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""} + },{ + title: "h/semaine", + field: "weekhours", + align: "right", + sorter:"number", + formatter:"money",formatterParams:{decimal:",",thousand:".",symbol:" ",symbolAfter:"",precision:2}, + },{ + title: "h/mois", + field: "monthhours", + align: "right", + sorter:"number", + formatter:"money",formatterParams:{decimal:",",thousand:".",symbol:" ",symbolAfter:"",precision:2}, + }] +}); + staff.gettbldata(); + staff.gettblperiodbasedata(); + }, + gettbldata: function(){ + req.reqdata("POST", "db.cgi", { "get": staff.name + "list","schemata":schemata}, staff.loadtbldata); + }, + loadtbldata: function(data){ + if (data && data.sqldata) { staff.tbl.setData(data.sqldata);} + }, + gettblperiodbasedata: function(){ + req.reqdata("POST", "db.cgi", { "get": "staffperiodbaselist","schemata":schemata}, staff.loadtblperiodbasedata); + }, + loadtblperiodbasedata: function(data){ + if (data && data.sqldata) { staff.tblperiodbase.setData(data.sqldata);} + }, + add: function(){ + cleanform2("staff",staff.choices); + module.viewpanel(staff.name); + //module.viewdialog(staff.name,null); + //document.getElementById("company").addEventListener('blur', function(event){staff.checkschema(event,this.id);},true); + //module.viewpanel('frm_' + staff.name); + }, + edit: function(){ + //console.log("force remove event"); + //document.getElementById("company").removeEventListener('blur',function(){},true); + var udata = staff.tbl.getSelectedData(); + if (udata[0]) { + cleanform2(staff.name,staff.choices); + req.reqdata("POST", "db.cgi", { "get": staff.name + "data","schemata":schemata, "filter":"id='" + udata[0].id + "'"}, staff.fillform); + module.viewpanel("frm_" + staff.name); + } + }, + fillform: function(data){ + //console.log("Fill Form 1"); + if (data && data.sqldata){ + //console.log("Fill Form 2"); + fillformbydataclass2(staff.name,staff.choices,data.sqldata[0]); + } + }, + remove: function(){ + var udata = staff.tbl.getSelectedData(); + if (udata[0]) { + var uid = udata[0].id; + showdeletedlg("staff",uid,"Êtes vous sûre de supprimer l'employé(e) sélectionnée?",staff.afterdeletecallback); + //module.viewpanel('tbl_' + staff.name); + } + }, + afterdeletecallback: function(data){ + staff.gettbldata(); + } +} diff --git a/backoffice/tmpl/module/staff/widgets/staff/tbar_staff.tt b/backoffice/tmpl/module/staff/widgets/staff/tbar_staff.tt new file mode 100644 index 00000000..24caf128 --- /dev/null +++ b/backoffice/tmpl/module/staff/widgets/staff/tbar_staff.tt @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/backoffice/tmpl/module/staff/widgets/staff/tbl_staff.tt b/backoffice/tmpl/module/staff/widgets/staff/tbl_staff.tt new file mode 100644 index 00000000..ca148b5e --- /dev/null +++ b/backoffice/tmpl/module/staff/widgets/staff/tbl_staff.tt @@ -0,0 +1,3 @@ +
+
+
\ No newline at end of file diff --git a/backoffice/tmpl/module/users/index.js b/backoffice/tmpl/module/users/index.js index fc4471c6..6caacd6f 100644 --- a/backoffice/tmpl/module/users/index.js +++ b/backoffice/tmpl/module/users/index.js @@ -1,266 +1,9 @@ -[% sid = session.id %] -[% IF (session.usergroups.search('admin') != 1) %] -[% qcompany = dksdb.query("select id_company from vw_userlist where id=$sid;") %] -[% company = qcompany.get_all() %] -[% END %] -var tbl= null; -var sel_usergroups = null; -var choice = {"members":{"id_company":null}}; +var schemata = "public"; +var currentview = null; function initpage(){ - [% IF (session.usergroups.search('admin') == 1) %] - sel_usergroups = new Choices('#usergroup_ids',{ - searchEnabled: false, - itemSelectText: '', - removeItemButton: true, - choices : [] - }); - choice["members"]["id_company"] = new Choices('#id_company',{ - searchEnabled: false, - itemSelectText: '', - removeItemButton: true, - choices : [] - }); - tbl = new Tabulator("#tbl_users", { - headerFilterPlaceholder:"filter...", - height: "95vh", - layout:"fitDataFill", - selectable:1, - responsiveLayout:"collapse", - columns:[ - {title:"Entreprise", field:"company",headerFilter:"input",download:true}, - {title:"Nom", field:"surname",headerFilter:"input",download:true}, - {title:"Prénom", field:"prename",headerFilter:"input",download:true}, - {title:"Accès",field:"group_ids",download:true,headerFilter:"input"}, - {title:"Position",field:"job",download:true}, - {title:"Téléphone",field:"phone",download:true}, - {title:"E-mail",field:"username",download:true}, - {title:"Bloqué", field:"blocked",download:true}, - ], -}); -getusergroups(); - [% ELSE %] - tbl = new Tabulator("#tbl_users", { - headerFilterPlaceholder:"filter...", - height: "95vh", - layout:"fitDataFill", - selectable:1, - responsiveLayout:"collapse", - columns:[ - {title:"Entreprise", field:"company",}, - {title:"Nom", field:"surname",headerFilter:"input"}, - {title:"Prénom", field:"prename",headerFilter:"input"}, - {title:"Accès",field:"group_ids"}, - {title:"Position",field:"job"}, - {title:"Téléphone",field:"phone"}, - {title:"E-mail",field:"username"}, - ], -}); - [% END %] - gettbldata(); - getcompanies(); -} - -function gettbldata(){ - [% IF (session.usergroups.search('admin') == 1) %] - req.reqdata("POST","db.cgi",{"get":"userlist"},loadtbldata); - [% ELSE %] - req.reqdata("POST","db.cgi",{"get":"userlist","filter":"id_company=[% company.0.id_company %]"},loadtbldata); - [% END %] -} - -function loadtbldata(data){ - if (data && data.sqldata){ - tbl.setData(data.sqldata); - } -} - - -function edit(){ - var udata = tbl.getSelectedData(); - if (udata[0]){ - req.reqdata("POST","db.cgi",{"get":"userlist","filter":"id_member=" + udata[0].id_member},fillmemberform); - } -} - -function fillmemberform(data){ - cleanform("members"); - if (data && data.sqldata){ - fillformbydataclass("members",data.sqldata[0],false); - } - - document.getElementById('dlgmembers').style.display='block'; -} - -function getcompanies(){ - req.reqdata("POST","db.cgi",{"get":"companylist"},fillcompanylist); -} - -function fillcompanylist(data){ - fillselectlist(choice["members"]["id_company"],data.sqldata,'id','company'); - - return false; -} - - -function closedlgmembers(){ - gettbldata(); - document.getElementById('dlgmembers').style.display='none'; - return false; -} - -[% IF (session.usergroups.search('admin') == 1) %] -function remove(){ - var udata = tbl.getSelectedData(); - if (udata[0]){ - if (confirm("Êtes vous sûre de supprimer l'utilisateur selectionné?")){ - req.reqdata("POST","db.cgi",{"del":"1","ident_users_id":udata[0].id},gettbldata); - } - } - -} - function setusergroups(){ - var udata = tbl.getSelectedData(); - if (udata[0]){ - var uid = udata[0].id; - req.reqdata("POST","db.cgi",{"get":"userdata","filter":"id=" + uid},fillusergroupform); - } - } - function fillusergroupform(data){ - - if (data && data.sqldata){ - var frm = document.querySelectorAll('.data_users,.data_display,.data_useringroups'); - for (var f in frm){ - - if (data.sqldata[0][frm[f].id]){ - if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')) { - if (frm[f].id == "usergroup_ids"){ - - var argrp = data.sqldata[0][frm[f].id].split(","); - //console.log(argrp); - sel_usergroups.setChoiceByValue(argrp); - } else { - frm[f].value=data.sqldata[0][frm[f].id]; - } - } - } - } - document.getElementById('dlgusergroups').style.display='block'; - } - - } - - function getusergroups(){ - req.reqdata("POST","db.cgi",{"get":"usergroups"},fillusergroups); - return false; - } - function fillusergroups(data){ - var pug = []; - if (data && data.sqldata){ - for (var i in data.sqldata){ - pug.push({value:data.sqldata[i].id,label:data.sqldata[i].groupname}); - } - } - sel_usergroups.setChoices(pug, 'value', 'label', true); - - return false; - } - - function saveusergroupsform(){ - var flds = getformcontent("usergroups",{}); - //console.log(flds); - - req.reqdata("POST","db.cgi",{"fn":"setgroupaccess","params": flds.ident_users_id + ",'{" + flds.useringroups_usergroup_ids.join(',') +"}'"},ugsaved); - return false; - } - - function ugsaved(data){ - //console.log(data); - gettbldata(); - document.getElementById('dlgusergroups').style.display='none'; - formsaved(null); - } - - function setlogin(){ - var udata = tbl.getSelectedData(); - document.getElementById("nunmsg").innerHTML = '' - if (udata[0]){ - var uid = udata[0].id; - req.reqdata("POST","db.cgi",{"get":"userdata","filter":"id=" + uid},fillloginform); - } - } - function fillloginform(data){ - document.getElementById("blocked").checked = false; - document.getElementById("username").value = ""; - if (data && data.sqldata){ - var frm = document.querySelectorAll('.data_users,.data_display,.data_useringroups'); - for (var f in frm){ - - if (data.sqldata[0][frm[f].id]){ - if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')) { - - if (frm[f].type == "checkbox"){ - document.getElementById("blocked").checked = true; - } else { - frm[f].value=data.sqldata[0][frm[f].id]; - } - } - } - } - document.getElementById('dlglogin').style.display='block'; - } - } - - function setusername(){ - var flds = getformcontent("users",{}); - //console.log(flds); - flds["set"] = 1; - req.reqdata("POST","db.cgi",flds,loginsaved); - return false; - } - - function loginsaved(data){ - //console.log(data); - gettbldata(); - document.getElementById('dlglogin').style.display='none'; - formsaved(null); - } - function ugsaved(data){ - //console.log(data); - gettbldata(); - document.getElementById('dlgusergroups').style.display='none'; - formsaved(null); - } - - function sendnewpassword(){ - var flds = getformcontent("login",{}); - //console.log(flds); - return false; - } - - function checkemail(){ - var newusername = document.getElementById("username").value; - //console.log("username: " + newusername); - if (validateEmail(newusername)){ - req.reqdata("POST","db.cgi",{"get":"userdata","filter":"username='"+ newusername+ "' and id != " + document.getElementById("id").value},checkmailreturn); - }else { - document.getElementById("nunmsg").innerHTML= '
w.e.g. eng richteg email agin!
'; - } - return false; - } - - function checkmailreturn(data){ - //console.log(data); - if (data && data.sqldata.length > 0){ - document.getElementById("nunmsg").innerHTML= '
Et existéiert schon een aaneren Kont matt deser E-mail!
'; - } else { - setusername(); - } - return false; - } - - function validateEmail(email) { - var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - return re.test(String(email).toLowerCase()); - } -[% END %] \ No newline at end of file + //schemata = parent.admin.getcurrentSchemata(); + console.log("Current Schema:" + schemata); + users.inittable(); + module.viewpanel("tbl_users"); +} \ No newline at end of file diff --git a/backoffice/tmpl/module/users/index.tt b/backoffice/tmpl/module/users/index.tt index 4c3bca5f..2ea0ed29 100644 --- a/backoffice/tmpl/module/users/index.tt +++ b/backoffice/tmpl/module/users/index.tt @@ -1,98 +1,14 @@ -[% PROCESS macro/fields.tt %] -[% IF (session.usergroups.search('admin') == 1) %] -
-
- - - - - - - - - - - -
-
-[% END %] -[% #inputdisabled = 'readonly' %] -[% #IF (session.usergroups.search('fld') == 1) %] -[% #inputdisabled = '' %] -[% #END %] -
-
-
-
- × -

Benotzer Accès

-
-
- [% fieldeditbox("surname","display","Nom",'w3-half','readonly','') %] - [% fieldeditbox("prename","display","Prénom",'w3-half','readonly','') %] -
- [% fieldhidden("id","users","ident",'') %] - [% fieldmultiselectbox("usergroup_ids","useringroups","Accès",'','','') %] -
-
-
- - - -
-
-
-
-
-
- × -

Benotzer E-Mail

-
-
-
- [% fieldeditbox("surname","display","Nom",'w3-half','readonly','') %] - [% fieldeditbox("prename","display","Prénom",'w3-half','readonly','') %] -
- [% fieldhidden("id","users","ident",'') %] - [% fieldeditbox("username","users","Login / E-Mail",'','','') %] - [% fieldcheckbox("blocked","users","compte blocké",'','','1') %] -
-
-
- - - -
-
-
-
-
-
- × -

Donnée de l'utilsateur

-
-
-
- [% fieldhidden('id','members','ident') %] - [% fieldeditbox('surname','members','Nom','','') %] - [% fieldeditbox('prename','members','Prénom','','') %] - [% fieldeditbox('job','members','Position','','') %] - [% fieldeditbox('phone','members','Téléphone','','') %] - [% fieldselectbox('id_company','members','Entreprise','','','','') %] -
+ +
+
+
+ + [% INCLUDE "module/$module/widgets/users/tbar_users.tt" %]
-
- - - [% formdlgsavebutton('members','sauvegarder','closedlgmembers();') %] -
+ [% INCLUDE "module/$module/widgets/users/tbl_users.tt" %]
-[% #IF (session.usergroups.search('admin') != 1) %] -[% #INCLUDE "module/$module/javascript.tt" %] -[% #END %] +[% INCLUDE block/dlgdeleterow.tt %] +[% INCLUDE "module/$module/widgets/users/dlg_users.tt" %] + diff --git a/backoffice/tmpl/module/users/widgets/users/dlg_users.tt b/backoffice/tmpl/module/users/widgets/users/dlg_users.tt new file mode 100644 index 00000000..597fe653 --- /dev/null +++ b/backoffice/tmpl/module/users/widgets/users/dlg_users.tt @@ -0,0 +1,30 @@ +[% PROCESS macro/fields.tt %] +
+
+
+ × +

Données de base du utilisateur

+
+
+
+
+ [% fieldhidden('id','users','ident') %] + [% fieldeditbox("username","users","Login / E-Mail",'w3-twothird','','') %] + [% fieldcheckbox("blocked","users","compte blocké",'w3-third','','1') %] + [% fieldeditbox('surname','users','Nom','w3-half','') %] + [% fieldeditbox('prename','users','Prénom','w3-half','') %] + [% fieldeditbox('job','users','Position','w3-half','') %] + [% fieldeditbox('phone','users','Téléphone','w3-half','') %] + [% fieldselectbox('id_company','users','Entreprise','','','','') %] + [% fieldmultiselectbox("id_usergroups","users","Accès Groupes",'','','') %] + [% fieldmultiselectbox("schemaaccess","users","Accès Schemata",'','','') %] +
+
+
+ + + +
+
+
\ No newline at end of file diff --git a/backoffice/tmpl/module/users/widgets/users/tbar_users.tt b/backoffice/tmpl/module/users/widgets/users/tbar_users.tt new file mode 100644 index 00000000..a7e4226c --- /dev/null +++ b/backoffice/tmpl/module/users/widgets/users/tbar_users.tt @@ -0,0 +1,5 @@ + diff --git a/backoffice/tmpl/module/users/widgets/users/tbl_users.tt b/backoffice/tmpl/module/users/widgets/users/tbl_users.tt new file mode 100644 index 00000000..8d562c7b --- /dev/null +++ b/backoffice/tmpl/module/users/widgets/users/tbl_users.tt @@ -0,0 +1,3 @@ +
+
+
\ No newline at end of file diff --git a/backoffice/tmpl/module/users/widgets/users/users.js b/backoffice/tmpl/module/users/widgets/users/users.js new file mode 100644 index 00000000..98a6e339 --- /dev/null +++ b/backoffice/tmpl/module/users/widgets/users/users.js @@ -0,0 +1,159 @@ +//var tbl_users = null; +//var weekdays= ["mon","tue","wed","thu","fri","sat","sun"]; +var users ={ + tbl: null, + current_user: null, + name: "users", + choices:{"id_company":null,"id_usergroups":null,"schemaaccess":null}, + initform: function(){ + users.choices["id_company"] = new Choices('#id_company',{ + searchEnabled: false, + itemSelectText: '', + removeItemButton: true, + choices : [] + }); + users.choices["id_usergroups"] = new Choices('#id_usergroups',{ + searchEnabled: false, + itemSelectText: '', + removeItemButton: true, + choices : [] + }); + users.choices["schemaaccess"] = new Choices('#schemaaccess',{ + searchEnabled: false, + itemSelectText: '', + removeItemButton: true, + choices : [] + }); + users.getcompanies(); + users.getusergroups(); + users.getschemata(); + }, + inittable: function(){ + users.initform(); + users.tbl = new Tabulator("#tbl_" + users.name, { + headerFilterPlaceholder: "filter...", + height: "92vh", + layout: "fitData", + selectable: 1, + rowContext:function(e, row){ + //e - the click event object + //row - row component + e.preventDefault(); // prevent the browsers default context menu form appearing. + }, + columns:[ + {title:"Entreprise", field:"company",headerFilter:"input"}, + {title:"Nom", field:"surname",headerFilter:"input"}, + {title:"Prénom", field:"prename",headerFilter:"input"}, + {title:"Accès",field:"group_ids",headerFilter:"input"}, + {title:"Position",field:"job"}, + {title:"Téléphone",field:"phone"}, + {title:"E-mail",field:"username"}, + {title:"Bloqué", field:"blocked"}, + ], + }); + users.gettbldata(); + }, + gettbldata: function(){ + req.reqdata("POST", "db.cgi", { "get": users.name + "list","schemata":schemata}, users.loadtbldata); + }, + loadtbldata: function(data){ + if (data && data.sqldata) { users.tbl.setData(data.sqldata);} + }, + add: function(){ + cleanform2("users",users.choices); + module.viewdialog(users.name); + //module.viewdialog(users.name,null); + //document.getElementById("company").addEventListener('blur', function(event){users.checkschema(event,this.id);},true); + //module.viewpanel('frm_' + users.name); + }, + edit: function(){ + //console.log("force remove event"); + //document.getElementById("company").removeEventListener('blur',function(){},true); + var udata = users.tbl.getSelectedData(); + if (udata[0]) { + cleanform2(users.name,users.choices); + req.reqdata("POST", "db.cgi", { "get": users.name + "data","schemata":schemata, "filter":"id='" + udata[0].id + "'"}, users.fillform); + module.viewdialog(users.name); + } + }, + fillform: function(data){ + //console.log("Fill Form 1"); + if (data && data.sqldata){ + //console.log("Fill Form 2"); + fillformbydataclass2(users.name,users.choices,data.sqldata[0]); + } + }, + remove: function(){ + var udata = users.tbl.getSelectedData(); + if (udata[0]) { + var uid = udata[0].id; + showdeletedlg("users",uid,"Êtes vous sûre de supprimer l'utilisateur sélectionnée?",users.afterdeletecallback); + //module.viewpanel('tbl_' + users.name); + } + }, + validateform: function(){ + users.checkemail(); + }, + sendnewpassword: function(){ + //users.saveform(); + + }, + afterdeletecallback: function(data){ + users.gettbldata(); + }, + afteruseradded: function(data){ + users.gettbldata(); + document.getElementById('dlg_users').style.display='none'; + return false; + }, + getcompanies: function(){ + req.reqdata("POST","db.cgi",{"get":"companieslist","schemata":schemata},users.fillcompanies); + }, + fillcompanies: function(data){ + fillselectlist(users.choices["id_company"],data.sqldata,'id','company'); + }, + getusergroups: function(){ + req.reqdata("POST","db.cgi",{"get":"usergroupslist","schemata":schemata},users.fillusergroups); + }, + fillusergroups: function(data){ + fillselectlist(users.choices["id_usergroups"],data.sqldata,'id','groupname'); + }, + getschemata: function(){ + req.reqdata("POST","db.cgi",{"get":"schemata","schemata":schemata},users.fillschemata); + }, + fillschemata: function(data){ + fillselectlist(users.choices["schemaaccess"],data.sqldata,'schemaname','schemaname'); + }, + checkemail: function(){ + var newusername = document.getElementsByName("users_username").value; + console.log("username: " + newusername); + if (users.validateEmail(newusername)){ + req.reqdata("POST","db.cgi",{"get":"userdata","filter":"username='"+ newusername+ "' and id != " + document.getElementById("id").value},users.checkmailreturn); + }else { + document.getElementById("usermsg").innerHTML= '
inserez un email valide s.v.p.!
'; + } + return false; + }, + checkmailreturn:function (data){ + //console.log(data); + if (data && data.sqldata.length > 0){ + document.getElementById("usermsg").innerHTML= '
Il existe déjà uncompte avec cette addresse E-Mail!
'; + } else { + users.savedata(); + } + return false; + }, + validateEmail: function (email) { + var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + return re.test(String(email).toLowerCase()); + }, + savedata: function(){ + saveform("users",users.userformsaved); + }, + userformsaved: function (data){ + //console.log(data); + users.gettbldata(); + document.getElementById('dlg_users').style.display='none'; + formsaved(null); + } +} diff --git a/backoffice/tmpl/skeleton/index.tt b/backoffice/tmpl/skeleton/index.tt index 149fece6..1523e58a 100644 --- a/backoffice/tmpl/skeleton/index.tt +++ b/backoffice/tmpl/skeleton/index.tt @@ -1,9 +1,15 @@ [% PROCESS macro/fields.tt %] [% USE dksdb = DBI(dsn, dbuser, dbpassword) %] -[% appgaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,ug.usergroup from useringroups uig join apps ap on (uig.id_group=ap.id_usergroup) join usergroups ug on (uig.id_group=ug.id) where uig.id_user=? -group by ap.id,ug.id order by ap.sort;") %] -[% appsaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,ug.usergroup from useringroups uig join apps ap on (uig.id_group=ap.id_usergroup) join usergroups ug on (uig.id_group=ug.id) where uig.id_user=? and menutype = 'schema' -group by ap.id,ug.id order by ap.sort;") %] +[% appgaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,ug.usergroup +from (SELECT users.id,json_array_elements_text(users.id_usergroups)::INT4 AS id_usergroup FROM users) uig +join apps ap on (uig.id_usergroup=ap.id_usergroup) +join usergroups ug on (uig.id_usergroup=ug.id) where uig.id=? +order by ap.sort;") %] +[% appsaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,ug.usergroup +from (SELECT users.id,json_array_elements_text(users.id_usergroups)::INT4 AS id_usergroup FROM users) uig +join apps ap on (uig.id_usergroup=ap.id_usergroup) +join usergroups ug on (uig.id_usergroup=ug.id) where uig.id=? and ap.menutype = 'schema' +order by ap.sort;") %] @@ -16,7 +22,7 @@ group by ap.id,ug.id order by ap.sort;") %]
- POT + POT @@ -37,7 +43,7 @@ group by ap.id,ug.id order by ap.sort;") %]