billjee and application bug fix
authorKilian Saffran <ksaffran@dks.lu>
Wed, 14 Aug 2019 16:16:46 +0000 (18:16 +0200)
committerKilian Saffran <ksaffran@dks.lu>
Wed, 14 Aug 2019 16:16:46 +0000 (18:16 +0200)
29 files changed:
backoffice/api/lib/dksinvoice.pm
backoffice/api/process.cgi
backoffice/css/w3pro.css
backoffice/images/icons/chevron-down.svg [new file with mode: 0644]
backoffice/js/request.js
backoffice/tmpl/block/calendar.tt
backoffice/tmpl/block/dlgcontactpublisher.tt
backoffice/tmpl/block/dlgdelete.tt
backoffice/tmpl/block/dlgpublish.tt
backoffice/tmpl/block/toolbar.tt
backoffice/tmpl/module/applications/index.js
backoffice/tmpl/module/applications/index.tt
backoffice/tmpl/module/billjee/courts.js [new file with mode: 0644]
backoffice/tmpl/module/billjee/form_billet.js
backoffice/tmpl/module/billjee/form_billet.tt
backoffice/tmpl/module/billjee/form_settings.js
backoffice/tmpl/module/billjee/form_settings.tt
backoffice/tmpl/module/billjee/index.js
backoffice/tmpl/module/billjee/index.tt
backoffice/tmpl/module/billjee/mybookings.js [new file with mode: 0644]
backoffice/tmpl/module/billjee/mybookings.tt [new file with mode: 0644]
backoffice/tmpl/module/billjee/mytickets.js
backoffice/tmpl/module/billjee/privatetickets.js [new file with mode: 0644]
backoffice/tmpl/module/billjee/privatetickets.tt [new file with mode: 0644]
backoffice/tmpl/module/js/modules_global.js
backoffice/tmpl/module/rendezvous/timesheets.js
backoffice/tmpl/skeleton/module.tt
tmpl/block/avocatlist.tt
tmpl/block/domaines.tt

index 1c3331a..123a334 100644 (file)
@@ -10,6 +10,7 @@ use Data::Dumper;
 use dksdb;
 use dksreport;
 use dksapp;
+use Encode;
 
 sub new {
     my $class = shift;
@@ -116,7 +117,11 @@ sub newinvoice(){
 
   } 
   my @insql = $self->{db}->create_ddl_insert($inv);
-
+  open(LOG,">>tmp/sql.log");
+  print LOG $insql[0]."\n";
+  print LOG ();
+  close(LOG);
+  $insql[0] = encode("utf-8",$insql[0]);
   my $newinvid = $self->{db}->dbquery($insql[0]);
   $prd->{invoiceelements_id_invoice} = $newinvid->{id};
   @insql = $self->{db}->create_ddl_insert($prd);
index 9757262..5337dd3 100644 (file)
@@ -61,7 +61,7 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
     elsif ($p->{fn} eq "generatevouchers"){
       if ($sess->{othergroups} =~ /admin/){
         my $sql = "INSERT INTO vouchers (voucher, id_price, used, percentdiscount, expiration) VALUES (substring(md5(random()::text),1,9), ".$p->{id_price}.", false, ".$p->{discount}.", date('".$p->{expiration}."'));";
-        foreach (my $i=0..$p->{num}){
+        foreach (my $i=0;$i<$p->{num};$i++){
           $db->dbexec($sql);
         }
         $html->{result} = "OK";
@@ -265,14 +265,26 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
     #   $html->{result}->{events} = $res;
     # }
     elsif($p->{fn} eq "getmonthbilljees"){
-      my $sql = "select eventdate,count(*) from billjeetickets where eventdate between date('".$p->{startdate}."') and date(date('".$p->{startdate}."') + interval '41 days') and isdisabled is null and id_user not in (".$sess->{id}.") and (invites is null or invites::text like '%\"' || (select senderemail from billjee where id_user=".$sess->{id}.") || '\"%') group by eventdate order by eventdate;";
-      # my $sql = "select eventdate,count(*) from billjeetickets where eventdate between date('".$p->{startdate}."') and date(date('".$p->{startdate}."') + interval '41 days') and isdisabled is null and id_user not in (".$sess->{id}.") and (invites is null or bt.invites::text like '%\"' || (select senderemail from billjee where id_user=".$sess->{id}.") || '\"%') group by eventdate order by eventdate;";
+     # my $sql = "select eventdate,count(*) from billjeetickets where eventdate between date('".$p->{startdate}."') and date(date('".$p->{startdate}."') + interval '41 days') and isdisabled is null and id_user not in (".$sess->{id}.") and (invites is null or invites::text like '%\"' || (select senderemail from billjee where id_user=".$sess->{id}.") || '\"%') group by eventdate order by eventdate;";
+      $html->{result}->{events} = ();
+      if (exists($p->{type}) &&  exists($p->{startdate})){
+      my $sql = "select eventdate,count(*) from billjeetickets where eventdate between date('".$p->{startdate}."') and date(date('".$p->{startdate}."') + interval '41 days') and isdisabled is null and id_user not in (".$sess->{id}.") and invites is null group by eventdate order by eventdate;";
+      if ($p->{type} eq "user"){
+        $sql = "select eventdate,count(*) from billjeetickets where eventdate between date('".$p->{startdate}."') and date(date('".$p->{startdate}."') + interval '41 days') and id_user=".$sess->{id}." group by eventdate order by eventdate;";
+      }
+      if ($p->{type} eq "private"){
+        $sql = "select eventdate,count(*) from billjeetickets where eventdate between date('".$p->{startdate}."') and date(date('".$p->{startdate}."') + interval '41 days') and isdisabled is null and id_user not in (".$sess->{id}.") and invites::text like '%\"' || (select senderemail from billjee where id_user=".$sess->{id}.") || '\"%' group by eventdate order by eventdate;";
+      }
+      if ($p->{type} eq "bookings"){
+        $sql = "select bt.eventdate,count(*) from billjeetickets bt join billjeebooking bb on (bt.id=bb.id_billjeeticket and bb.id_user=".$sess->{id}.") where eventdate between date('".$p->{startdate}."') and date(date('".$p->{startdate}."') + interval '41 days') group by eventdate order by eventdate;";
+      }
       my $res = $db->dbquerybykey("eventdate",$sql);
       $html->{result}->{events} = $res;
+      }
       # $html->{result}->{sql} = $sql;
     } 
     elsif($p->{fn} eq "getbilljeeeditor"){
-      my $sqlins = "INSERT INTO billjeebooking (".$p->{id}.", ".$sess->{id}.", bookingtime) VALUES(0, 0, current_timestamp);";
+      my $sqlins = "INSERT INTO billjeebooking (id_billjeeticket, id_user, bookingtime) VALUES(".$p->{id}.", ".$sess->{id}.", now());";
       $db->dbexec($sqlins);
       my $sql = "select bt.court,bt.room,to_char(bt.eventdate,'DD.MM.YYYY') as dspdate,eventtype,case when eventtype ='offer' then 'offre' else 'demande' end as dspeventtype,bt.dayperiod,bj.senderemail as recipient from billjeetickets bt join billjee bj on (bt.id_user=bj.id_user and bt.id=".$p->{id}.")";
       my $res = $db->dbquerysorted($sql);
@@ -283,47 +295,77 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
       }
       $html->{result}->{contact} = $res->{0};
     } 
-    elsif($p->{fn} eq "getmonthbilljeesbyuser"){
-      
-      my $sql = "select eventdate,count(*) from billjeetickets where eventdate between date('".$p->{startdate}."') and date(date('".$p->{startdate}."') + interval '41 days') and id_user=".$sess->{id}." group by eventdate order by eventdate;";
-      my $res = $db->dbquerybykey("eventdate",$sql);
-      $html->{result}->{events} = $res;
-    } 
+    # elsif($p->{fn} eq "getmonthbilljeesbyuser"){
+    
+    #   my $res = $db->dbquerybykey("eventdate",$sql);
+    #   $html->{result}->{events} = $res;
+    # } 
     elsif($p->{fn} eq "getbilljeeevents"){
       #ownevents
+      $html->{result}->{events} = ();
+      if (exists($p->{type}) &&  exists($p->{startdate}) && exists($p->{enddate})){
       my $olyf = "";
       if ($p->{onlyfuture} eq "true"){
         $olyf = "and bt.eventdate >= CURRENT_DATE";
       }
-      my $sql ="select bt.id,bt.id_user,bt.isdisabled,bt.court,bt.room,to_char(bt.eventdate,'DD.MM.YYYY') as dspdate,bt.dayperiod,bt.eventmsg as msg ,bt.eventtype,case when bt.eventtype ='offer' then 'offre' else 'demande' end as dspeventtype,us.prename,us.surname
+  
+#       my $sql ="select bt.id,bt.id_user,bt.isdisabled,bt.court,bt.room,to_char(bt.eventdate,'DD.MM.YYYY') as dspdate,bt.dayperiod,bt.eventmsg as msg ,bt.eventtype,case when bt.eventtype ='offer' then 'offre' else 'demande' end as dspeventtype,us.prename,us.surname
+# from billjeetickets  bt 
+# join billjee bj on (bj.id_user=bt.id_user)
+# join (select users.id,users.prename,users.surname,appaccess.privateenabled from users join appaccess on (appaccess.id_user=users.id) and appaccess.id_app=7) us on (bt.id_user=us.id)
+# where bt.eventdate between date('".$p->{startdate}."') and date('".$p->{enddate}."') and us.privateenabled=true 
+# and isdisabled is null ".$olyf." 
+# and bt.id_user not in (".$sess->{id}.") 
+# and (bt.invites is null or bt.invites::text like '%\"' || (select senderemail from billjee where id_user=".$sess->{id}.")|| '\"%')
+# order by bt.eventdate,us.surname,us.prename;";
+my $sql ="select bt.id,bt.id_user,bt.isdisabled,bt.court,bt.room,to_char(bt.eventdate,'DD.MM.YYYY') as dspdate,substr(bt.starttime::TEXT,0,5) as starttime,bt.eventmsg as msg ,bt.eventtype,us.prename,us.surname
 from billjeetickets  bt 
 join billjee bj on (bj.id_user=bt.id_user)
 join (select users.id,users.prename,users.surname,appaccess.privateenabled from users join appaccess on (appaccess.id_user=users.id) and appaccess.id_app=7) us on (bt.id_user=us.id)
-where bt.eventdate between date('".$p->{startdate}."') and date('".$p->{enddate}."') and us.privateenabled=true 
-and isdisabled is null ".$olyf." 
-and bt.id_user not in (".$sess->{id}.") 
-and (bt.invites is null or bt.invites::text like '%\"' || (select senderemail from billjee where id_user=".$sess->{id}.")|| '\"%')
-order by bt.eventdate,us.surname,us.prename;";
-
+where bt.eventdate between date('".$p->{startdate}."') and date('".$p->{enddate}."') 
+and us.privateenabled=true and isdisabled is null ".$olyf." 
+and bt.invites is null order by bt.eventdate,us.surname,us.prename;";
+       if ($p->{type} eq "private"){
+         $sql ="select bt.id,bt.id_user,bt.isdisabled,bt.court,bt.room,to_char(bt.eventdate,'DD.MM.YYYY') as dspdate,substr(bt.starttime::TEXT,0,5) as starttime,bt.eventmsg as msg ,bt.eventtype,us.prename,us.surname
+from billjeetickets  bt 
+join billjee bj on (bj.id_user=bt.id_user)
+join (select users.id,users.prename,users.surname,appaccess.privateenabled from users join appaccess on (appaccess.id_user=users.id) and appaccess.id_app=7) us on (bt.id_user=us.id)
+where bt.eventdate between date('".$p->{startdate}."') and date('".$p->{enddate}."') 
+and us.privateenabled=true and isdisabled is null ".$olyf." 
+and and bt.invites::text like '%\"' || (select senderemail from billjee where id_user=".$sess->{id}.")|| '\"%') order by bt.eventdate,us.surname,us.prename;";
+       }
+       if ($p->{type} eq "user"){
+         $sql ="select bt.id,bt.id_user,bt.isdisabled,bt.court,bt.room,to_char(bt.eventdate,'DD.MM.YYYY') as dspdate,substr(bt.starttime::TEXT,0,5) as starttime,bt.eventmsg as msg ,bt.eventtype,bt.eventtype,us.prename,us.surname ,'[' || string_agg(bdata::TEXT,',')|| ']' as bookings
+from billjeetickets  bt 
+join billjee bj on (bj.id_user=bt.id_user)
+left join (select bbook.id_user,bbook.id_billjeeticket,row_to_json(bbook) as bdata from (
+select us1.prename,us1.surname,bb1.id_billjeeticket,bb1.id_user,to_char(bb1.bookingtime,'DD.MM.YYYY HH:MI') as bookingtime,bt1.senderemail from billjeebooking bb1 join billjee bt1 on (bb1.id_user=bt1.id_user) join users us1 on (bb1.id_user=us1.id)  order by bb1.bookingtime ASC) as bbook) bb on (bt.id=bb.id_billjeeticket)
+join (select users.id,users.prename,users.surname,appaccess.privateenabled from users join appaccess on (appaccess.id_user=users.id)  and appaccess.id_app=7) us on (bt.id_user=us.id)
+where bt.eventdate between date('".$p->{startdate}."') and date('".$p->{enddate}."') and us.id=".$sess->{id}." group by bt.id,us.prename,us.surname;";
+       }
+       if ($p->{type} eq "bookings"){
+         $sql ="select bt.id,bt.id_user,bt.isdisabled,bt.court,bt.room,to_char(bt.eventdate,'DD.MM.YYYY') as dspdate,substr(bt.starttime::TEXT,0,5) as starttime,bt.eventmsg as msg ,bt.eventtype,bt.eventtype,us.prename,us.surname ,'[' || string_agg(bdata::TEXT,',')|| ']' as bookings
+from billjeetickets  bt 
+join billjee bj on (bj.id_user=bt.id_user)
+left join (select bbook.id_user,bbook.id_billjeeticket,row_to_json(bbook) as bdata from (
+select us1.prename,us1.surname,bb1.id_billjeeticket,bb1.id_user,to_char(bb1.bookingtime,'DD.MM.YYYY HH:MI') as bookingtime,bt1.senderemail from billjeebooking bb1 join billjee bt1 on (bb1.id_user=bt1.id_user) join users us1 on (bb1.id_user=us1.id)  order by bb1.bookingtime ASC) as bbook) bb on (bt.id=bb.id_billjeeticket)
+join (select users.id,users.prename,users.surname,appaccess.privateenabled from users join appaccess on (appaccess.id_user=users.id) and appaccess.id_app=7) us on (bt.id_user=us.id)
+where bt.eventdate between date('".$p->{startdate}."') and date('".$p->{enddate}."') and bdata.id_user=".$sess->{id}." group by bt.id,us.prename,us.surname;";
+       }
        my $res = $db->dbquerysorted($sql);
        #$html->{result}->{onlyfuture} = $p->{onlyfuture};
        $html->{result}->{events} = $res;
+       }
        #$html->{result}->{sql} = $sql;
     }
-    elsif($p->{fn} eq "getbilljeeeventsbyuser"){
-      #ownevents
-      my $sql ="select bt.id,bt.id_user,bt.isdisabled,bt.court,bt.room,to_char(bt.eventdate,'DD.MM.YYYY') as dspdate,bt.dayperiod,bt.eventmsg as msg ,bt.eventtype,case when bt.eventtype ='offer' then 'offre' else 'demande' end as dspeventtype,us.prename,us.surname ,'[' || string_agg(bdata::TEXT,',')|| ']' as bookings
-from billjeetickets  bt 
-join billjee bj on (bj.id_user=bt.id_user)
-left join (select bbook.id_billjeeticket,row_to_json(bbook) as bdata from (
-select us1.prename,us1.surname,bb1.id_billjeeticket,bb1.id_user,to_char(bb1.bookingtime,'DD.MM.YYYY HH:MI') as bookingtime,bt1.senderemail from billjeebooking bb1 join billjee bt1 on (bb1.id_user=bt1.id_user) join users us1 on (bb1.id_user=us1.id)  order by bb1.bookingtime ASC) as bbook) bb on (bt.id=bb.id_billjeeticket)
-join (select users.id,users.prename,users.surname,appaccess.privateenabled from users join appaccess on (appaccess.id_user=users.id) and appaccess.id_app=7) us on (bt.id_user=us.id)
-where bt.eventdate between date('".$p->{startdate}."') and date('".$p->{enddate}."') and us.privateenabled=true and us.id=".$sess->{id}." group by bt.id,us.prename,us.surname;";
+    # elsif($p->{fn} eq "getbilljeeeventsbyuser"){
+    #   #ownevents
+    #   my 
 
-      my $res = $db->dbquerysorted($sql);
+      my $res = $db->dbquerysorted($sql);
    
-      $html->{result}->{events} = $res;
-    }
+      $html->{result}->{events} = $res;
+    }
     elsif($p->{fn} eq "billjeepublishevent"){
       $html->{result}->{id} = $p->{id};
       my $sql = "UPDATE billjeetickets set isdisabled=true where id=".$p->{id}." and id_user=".$sess->{id}.";";
index a9a7f24..a0ed743 100644 (file)
@@ -51,7 +51,7 @@ hr{border:0;border-top:1px solid #eee;margin:20px 0}
 .w3-dropdown-hover:hover .w3-dropdown-content{display:block; }
 .w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000}
 .w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000}
-.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
+.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1000}
 .w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px}
 .w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
 .w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%}
@@ -107,7 +107,7 @@ hr{border:0;border-top:1px solid #eee;margin:20px 0}
 .w3-circle{border-radius:50%}
 .w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px}
 .w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px}
-.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
+.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:0px;margin-bottom:0px}
 .w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px}
 .w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
 .w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
diff --git a/backoffice/images/icons/chevron-down.svg b/backoffice/images/icons/chevron-down.svg
new file mode 100644 (file)
index 0000000..4ac4828
--- /dev/null
@@ -0,0 +1,3 @@
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+  <path id="chevron-down" d="M26.91425,13.12115,16.70709,23.32849a.99988.99988,0,0,1-1.41418,0L5.08575,13.12115a.50007.50007,0,0,1,0-.70715l2.8285-2.82806a.5.5,0,0,1,.70709,0L16,16.96436l7.37866-7.37842a.5.5,0,0,1,.70709,0l2.8285,2.82806A.50007.50007,0,0,1,26.91425,13.12115Z"/>
+</svg>
index 02024ee..cd43031 100644 (file)
@@ -36,10 +36,10 @@ var req = {
     request.open(method.toUpperCase(), sendurl, false);
     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){
           var xparse = JSON.parse(request.responseText);
-          //console.log(xparse);
+          console.log(xparse);
           ret = xparse.result;
         }else if (request.getResponseHeader("Content-Type").indexOf('application/vnd.ms-excel') == 0){
           var filename = "";
index a731c61..0716f5b 100644 (file)
@@ -102,14 +102,8 @@ function loadcalendars(){
     document.getElementById("week" + w).innerHTML = '<button class="w3-button w3-block w3-orange" data-datefrom="'+wdatemon+'" data-dateto="'+wdatesun+'" onclick="selectPeriod(this);return false;" '+ disabled+'>'+ weeks +'</button>';
     weeks++;
   }
-  //console.log(lmday);
-  //console.log("LAST DAY: DATE:" + lmday.getUTCDate() + "DOW:" + lmday.getUTCDay());
-  //console.log("First DAY: DATE:" + fmday.getUTCDate() + "DOW:" + fmday.getUTCDay());
-  var evfn = "getmonthbilljees";
-  if (onlyuser && onlyuser==true){
-    evfn = "getmonthbilljeesbyuser";
-  }
-    req.reqdata("POST","process.cgi",{fn:evfn,"startdate":fmday.toJSON().substring(0,10),"enddate":lmday.toJSON().substring(0,10)},set_calendarevents);
+
+    req.reqdata("POST","process.cgi",{fn:"getmonthbilljees","type":bltype,"startdate":fmday.toJSON().substring(0,10),"enddate":lmday.toJSON().substring(0,10)},set_calendarevents);
     return false;
  }
 
index e260057..b39dc05 100644 (file)
@@ -3,7 +3,7 @@
     <header class="w3-container"> 
       <span onclick="document.getElementById('dlgcontactpublisher').style.display='none'; return false;" 
       class="w3-button w3-display-topright">&times;</span>
-      <h2>Êtes-vous sûre de contacter l'éditeur de ce billjee?</h2>
+      <h2>Êtes-vous sûr de contacter l'éditeur de ce billjee?</h2>
     </header>
     <div class="w3-container" >
       <div class="w3-container w3-border" id="dlgcontactpublisher_details"></div>
index a6e51bb..6c0987f 100644 (file)
@@ -3,7 +3,7 @@
     <header class="w3-container"> 
       <span onclick="document.getElementById('dlgdelete').style.display='none'; return false;" 
       class="w3-button w3-display-topright">&times;</span>
-      <h2>Êtes-vous sûre de supprimer ce billjee?</h2>
+      <h2>Êtes-vous sûr de supprimer ce billjee?</h2>
     </header>
     <div class="w3-container" id="dlgdelete_details">
       
index b38813d..b7dada2 100644 (file)
@@ -16,8 +16,8 @@
   </div>
 </div>
 <script>
-var dlgstates={ "publish":{"msg":"Êtes-vous sûre de publier ce billjee?","btn":'<img src="[% abspath %]images/icons/unpublish.svg" style="width: 24px;" />&nbsp;Enlever '},
-  "unpublish":{"msg":"Êtes-vous sûre d'enlever ce billjee?","btn":'<img src="[% abspath %]images/icons/publish.svg" style="width: 24px;" />&nbsp;Publier '}
+var dlgstates={ "publish":{"msg":"Êtes-vous sûr de publier ce billjee?","btn":'<img src="[% abspath %]images/icons/unpublish.svg" style="width: 24px;" />&nbsp;Enlever '},
+  "unpublish":{"msg":"Êtes-vous sûr d'enlever ce billjee?","btn":'<img src="[% abspath %]images/icons/publish.svg" style="width: 24px;" />&nbsp;Publier '}
 }
 var cpublstate = null;
 function publish_event(id){
index 12016c0..0704035 100644 (file)
@@ -1,8 +1,18 @@
 [% IF module == 'billjee' %]
-<header class="w3-top w3-bar w3-border-bottom w3-theme-light tblshort">
-        <button class="w3-bar-item w3-button w3-border" id="btnsidebar" onclick="parent.backoffice.loadpage('module/[% module %]/index.html','Billjee');"><img src="[% abspath %]images/icons/search.svg" style="width: 24px;"/></button>
-        <button class="w3-bar-item w3-button w3-border" id="btnsidebar" onclick="parent.backoffice.loadpage('module/[% module %]/mytickets.html','Mes billets');"><img src="[% abspath %]images/icons/list.svg" style="width: 24px;"/></button>
-        <button class="w3-bar-item w3-button w3-border" id="btnsidebar" onclick="parent.backoffice.loadpage('module/[% module %]/form_billet.html','Nouveau billet');"><img src="[% abspath %]images/icons/plus.svg" style="width: 24px;" /></button>
-        <button class="w3-bar-item w3-button w3-border" id="btnsidebar" onclick="parent.backoffice.loadpage('module/[% module %]/form_settings.html','Configuration');"><img src="[% abspath %]images/icons/settings.svg" style="width: 24px;" /></button>
-      </header>
+<div class="w3-top">
+<div class="w3-bar w3-border-bottom w3-theme-light">
+    <div class="w3-dropdown-hover w3-border">
+        <button class="w3-button w3-theme-light">Billjee'en <img src="[% abspath %]images/icons/chevron-down.svg" style="width: 24px;" /></button>
+        <div class="w3-dropdown-content w3-bar-block w3-card-4">
+          <a href="javascript:parent.backoffice.loadpage('module/[% module %]/index.html','Recherche public');" class="w3-bar-item w3-button">Recherche Public</a>
+          <a href="javascript:parent.backoffice.loadpage('module/[% module %]/privatetickets.html','Recherche privé');" class="w3-bar-item w3-button">Recherche privé</a>
+          <a href="javascript:parent.backoffice.loadpage('module/[% module %]/mytickets.html','Mes billets');" class="w3-bar-item w3-button">Mes billets</a>
+          <a href="javascript:parent.backoffice.loadpage('module/[% module %]/mybookings.html','Mes envois');" class="w3-bar-item w3-button">Mes envois</a>
+        </div>
+      </div>
+        <a class="w3-bar-item w3-button w3-border"  href="javascript:parent.backoffice.loadpage('module/[% module %]/form_billet.html','Nouveau billet');"><img src="[% abspath %]images/icons/plus.svg" style="width: 24px;" /></a>
+        <a class="w3-bar-item w3-button w3-border"  href="javascript:parent.backoffice.loadpage('module/[% module %]/form_settings.html','Configuration');"><img src="[% abspath %]images/icons/settings.svg" style="width: 24px;" /></a>
+        
+</div>
+</div>
 [% END %]
\ No newline at end of file
index 03a1c3d..835ba22 100644 (file)
@@ -190,7 +190,7 @@ function sendmodrequest(idapp){
     return;
   }
 
-  process_data({"fn":"setbilljeeemail":"email_moderated":seml},reload_application);
+  process_data({"fn":"setbilljeeemail","email_moderated":seml},reload_application);
 }
 
 function reload_application(data){
index adca085..f91b3d4 100644 (file)
@@ -45,8 +45,8 @@
                     [% END %]
                   </div>
               </div>
-              [% END %]
-              [% IF modules.renew %]
+              
+              [% IF modules.renew == "1" %]
               <div class="row">
                   <div class="col">
                       <button class="btn btn-primary" id="btn_appvoucher" type="button" onclick="subscribeplan('[% modules.id %]',null,'voucher');return false;">Prolonger avec coupon </button>
                     
                   [% IF NOT price.evaluation %]
                   <div class="col">
-                  <button class="btn btn-primary" id="btn_subscribe"  onclick="subscribeplan('[% modules.id %]','[% price.package %]',null);return false;">Prolonger [% price.duration %] mois</button><br/><small class="text-gray">([% price.price %]€ hTVA / mois)</small>
+                  <button class="btn btn-primary" id="btn_subscribe"  onclick="subscribeplan('[% modules.id %]','[% price.package %]',null);return false;">Prolonger [% price.duration %] mois</button><br/><small class="text-gray">[% price.evaluation %]([% price.price %]€ hTVA / mois)</small>
                   </div>
                   [% END %] 
                 
                   [% END %]
               
               </div>
+              [% END %]
               
-              [% ELSE %]
+              [% ELSE  %]
               <div class="row">
                   
                   [% IF modules.moderated && modules.moderatedval == undef %]
@@ -87,7 +88,7 @@
                   <div class="col">
                   [% IF price.evaluation %]
                     <button class="btn btn-primary" id="btn_evaluation" onclick="subscribeplan('[% modules.id %]','[% price.package %]','eval');return false;">Evaluer</button>
-                  [% ELSE %]
+                  [% ELSIF price.price > 0  %]
                   <button class="btn btn-primary" id="btn_subscribe"  onclick="subscribeplan('[% modules.id %]','[% price.package %]',null);return false;">Souscire [% price.duration %] mois</button><br/><small class="text-gray">([% price.price %]€ hTVA / mois)</small>  
                   [% END %]  
                   </div>
diff --git a/backoffice/tmpl/module/billjee/courts.js b/backoffice/tmpl/module/billjee/courts.js
new file mode 100644 (file)
index 0000000..bf6af70
--- /dev/null
@@ -0,0 +1,9 @@
+var court = {
+"Cour Supérieure de Justice – Cour de Cassation": ["CR.0.19"],
+"Cour Supérieure de Justice – Cour d'Appel":[ "CR.2.28 ","CR.2.29","CR.0.19","CR.1.25","CR.4.31"]
+,"Tribunal d'Arrondissement – Luxembourg": ["CO1.01","CO1.02","TL0.11","TL1.04","TL1.07","TL1.10","TL1.11","TL3.05","TL3.06","TL3.09","TJ1.02","TJ0.02"]
+,"Tribunal d'Arrondissement – Diekirch": ["Salle I ","Salle II","Salle de réunion III"]
+,"Justice de Paix – Luxembourg": ["JP.0.02","JP.0.15","JP.1.19"]
+,"Justice de Paix – Esch-sur-Alzette": ["Salle 1","Salle 2","Salle 3"]
+,"Justice de Paix – Diekirch": ["Salle 1"]
+}
\ No newline at end of file
index 41c0463..5adb940 100644 (file)
@@ -1,11 +1,31 @@
+[% INCLUDE "module/$module/courts.js" %]
+var selcourt = null;
+var selroom = null;
+var seltype = null;
 function initpage(){
   console.log("et:" + JSON.stringify(document.getElementById("eventtype").dataset));
   //console.log("vet:" + document.getElementById("eventtype").value);
-  const onlychoices = new Choices('.onlyselect',{
+  var optcourts = [];
+  for (var i in court){
+    console.log(i);
+    var opt = { value: i, label: i };
+    optcourts.push(opt);
+  }
+  console.log(optcourts);
+  selcourt = new Choices('#court',{
+    searchEnabled: false,
+    itemSelectText: 'Sélectionner...',
+    choices: optcourts
+  });
+  selroom = new Choices('#room',{
     searchEnabled: false,
     itemSelectText: 'Sélectionner...',
-    
   });
+  seltype = new Choices('#eventtype',{
+    searchEnabled: false,
+    itemSelectText: 'Sélectionner...',
+  });
+  setrooms();
  
   // const onlychoices = new Choices('#eventtype',{
   //   searchEnabled: false,
@@ -69,19 +89,27 @@ function initpage(){
     minDate: mindate
     //defaultDate: evdate
   });
+  flatpickr("#starttime",{
+    enableTime: true,
+    noCalendar: true,
+    dateFormat: "H:i",
+    "locale": "fr",
+    defaultDate: "09:00"
+  });
   //console.log("TEXT: evdate" + evdate);
   
   //console.log("et:" + JSON.stringify(document.getElementById("eventtype").dataset));
 }
 
 
-function save_billet(){
+function save_billet(){ 
+  document.getElementById("msgsaved").innerHTML = '';
   var rfields = []
   var tdata = {"fn":"saveform","ident":"ident_billjeetickets_id"};
   var inp = document.querySelectorAll('input,select,textarea');
   for (var i in inp){
     if ((inp[i].name) && (inp[i].name.startsWith("billjeetickets") || inp[i].name.startsWith("ident_billjeetickets"))){
-      if (inp[i].name == "billjeetickets_invites"){
+      if (inp[i].name == "billjeetickets_invites" && inp[i].value != ''){
         var addr =  inp[i].value.split(",");
         tdata[inp[i].name] = addr;
       }else {
@@ -100,6 +128,8 @@ function save_billet(){
 
 function saved_result(data){
   //console.log("Retrned data!");
+  document.getElementById("msgsaved").innerHTML = '<div class="w3-panel w3-green"><p>le billjee à été sauvegardé.</p></div>';
+  setTimeout("cleanmsg();",3000);
   if ((data) && (data.id)){
     //console.log("SET ID to" + data.id);
     document.getElementById("id").value=data.id;
@@ -115,4 +145,32 @@ function getStats(id) {
       chars: text.length,
       words: text.split(/[\w\u2019\'-]+/).length
   };
-}
\ No newline at end of file
+}
+
+function cleanmsg(){
+  document.getElementById("msgsaved").innerHTML = '';
+  return false;
+}
+
+function setrooms(){
+  var tr = document.getElementById("court").value;
+  var ro = document.getElementById("room").value;
+  console.log(ro);
+  var optrooms = [];
+  //console.log(court[tr]);
+  var sel = null;
+  for (var i in court[tr]){
+  
+  var opt = { value: court[tr][i], label: court[tr][i] };
+    if (ro == court[tr][i]){ sel = court[tr][i];}
+    optrooms.push(opt);
+  }
+  //console.log(optrooms);
+  selroom.setChoices(optrooms,'value','label',true);
+  if (!sel){
+    console.log("clean selection");
+    selroom.setChoiceByValue(optrooms[0].value);
+    //document.getElementById("room").value = '';
+  }
+  return false;
+}
index 037dc92..35f23cf 100644 (file)
@@ -1,6 +1,6 @@
 
 [% IF params.id %]
- [% qbill = dksdb.prepare("select bt.id,bt.id_user,bt.court,bt.room,bt.eventdate,bt.dayperiod,
+ [% qbill = dksdb.prepare("select bt.id,bt.id_user,bt.court,bt.room,bt.eventdate,bt.starttime,
 bt.eventmsg, bt.eventtype,  binv.invites
 from billjeetickets  bt 
 join billjee bj on (bj.id_user=bt.id_user)
@@ -10,7 +10,7 @@ where bt.id = ? group by bt.id,binv.invites;") %]
   [% rbill = qbill.execute(params.id) %]
   [% bill = rbill.get_first(); %]
 [% ELSE %]
-[% qbill = dksdb.prepare("select null as id,bj.id_user, null as court, null as room, CURRENT_DATE as eventdate, null as dayperiod,
+[% qbill = dksdb.prepare("select null as id,bj.id_user, null as court, null as room, CURRENT_DATE as eventdate, '09:00' as starttime,
 null as eventmsg,  null as eventtype,  binv.invites FROM billjee bj 
  left join (select id,string_agg(invites,',') as invites from (select id,json_array_elements_text(invites) as invites from billjee ) as x group by id ) binv on (bj.id=binv.id)
  where bj.id_user= ?;") %]
@@ -31,7 +31,7 @@ null as eventmsg,  null as eventtype,  binv.invites FROM billjee bj
         <div class="w3-container m4 w3-col ">
             <label for="eventtype" class="w3-label">Type [% bill.0.eventtype %]</label>
             <select class="w3-select onlyselect" id="eventtype" name="billjeetickets_eventtype"  >
-            [% etypes = {offer = 'Offre',request = 'Demande' } %]
+            [% etypes = {offer = 'Offre de disponibilité',request = 'Demande de service' } %]
             [% FOREACH k IN etypes.keys %]
             <option value="[% k %]" [% IF k == bill.0.eventtype %] selected[% END %]>[% etypes.$k %]</option>
             [% END %]
@@ -45,36 +45,25 @@ null as eventmsg,  null as eventtype,  binv.invites FROM billjee bj
               
           </div>
           <div class="w3-container m4 w3-col ">
-              <label for="times" class="w3-label">Heures</label>
-              <select class="w3-select onlyselect" id="times" name="billjeetickets_dayperiod" value="[% bill.0.dayperiod %]">
-              [% etimes = {'matin' = 'matin','après-midi' = 'après-midi' } %]
-            [% FOREACH k IN etimes.keys %]
-            <option value="[% k %]" [% IF k == bill.0.dayperiod %] selected[% END %]>[% etimes.$k %]</option>
-            [% END %] 
-              </select>
+              <label for="times" class="w3-label">Heure</label>
+              
+              <input type="time" class="choices__inner timeselect" id="starttime" name="billjeetickets_starttime" value="[% bill.0.starttime %]" />
+              
               
             </div>
     </div>
     <div class="w3-row">
         <div class="w3-container m6 w3-col">
             <label class="w3-label">Tribunal</label>
-          <select  class="w3-select onlyselect" id="court"  name="billjeetickets_court" value="[% bill.0.court %]">
-           [% ecourt = {
-             'jp-luxembourg' = 'justices de paix - Luxembourg',
-             'jp-esch' = 'justices de paix - Esch/Alzette',
-              'jp-diekirch' = 'justices de paix - Diekirch',
-              'ta-luxembourg' = 'tribunal d\'arrondissement - Luxembourg',
-              'ta-diekirch' = 'tribunal d\'arrondissement - Diekirch'
-            } %]
-            [% FOREACH k IN ecourt.keys %]
-            <option value="[% k %]" [% IF k == bill.0.court %] selected[% END %]>[% ecourt.$k %]</option>
-            [% END %] 
-        
+          <select  class="w3-select onlyselect" id="court"  name="billjeetickets_court" value="[% bill.0.court %]" onchange="setrooms();">
+           
           </select>
         </div>
         <div class="w3-container m6 w3-col">
             <label class="w3-label">Chambre(s)</label>
-          <input class="w3-input selectedit" id="room"  name="billjeetickets_room" value="[% bill.0.room %]">
+            <select  class="w3-select onlyselect" id="room"  name="billjeetickets_room" value="[% bill.0.room %]">
+           
+          </select>
           
           </div>
     </div>
@@ -92,10 +81,18 @@ null as eventmsg,  null as eventtype,  binv.invites FROM billjee bj
             <label class="w3-label">visible pour tous ou ...</label>
             
           <input class="w3-input selectedit" id="invites"  name="billjeetickets_invites" value="[% bill.0.invites %]" placeholder="ajouter des emails...@barreau.lu" />
-        <div class="w3-container w3-padding">
-            <button class="w3-button w3-theme w3-xxlarge w3-block" onclick="save_billet();return false;">Sauvegarder</button>
-          </div> 
-        
+        </div>
+         <div class="w3-container w3-padding w3-row">
+            <div class="w3-col w3-third w3-padding">
+                <button class="w3-button w3-theme  w3-block" onclick="save_billet();return false;">Sauvegarder</button>
+                
+            </div>
+            <div class="w3-col w3-twothird">
+                <div id="msgsaved"></div>
+            </div>
+            
+          </div>
+        </div>
     </form>
   </div>
   
index 22d5da4..f798c85 100644 (file)
@@ -10,38 +10,39 @@ function initpage(){
     },
   });
 
-  // tinymce.init({
-  //   selector: '.richeditarea',
-  //   branding: false,
-  //   menubar:false,
-  //   statusbar: true,
-  //   plugins: 'searchreplace autolink directionality visualblocks visualchars advlist lists textcolor colorpicker textpattern wordcount',
-  //   toolbar: 'bold italic underline strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify  | numlist bullist outdent indent  | removeformat',
-  //   image_advtab: true,
-  //   language: 'fr_FR',
-  //   init_instance_callback: function (editor) {
-  //     editor.on('blur', function (e) {
-  //       // console.log('Editor was blurred!');
-  //       console.log(e.target.id);
-  //       document.getElementById(e.target.id).innerHTML = editor.getContent(); 
-  //       // $("#" + e.target.id).html(editor.getContent());
-  //       //console.log(editor.getContent());
-  //       // if (savefield){
-  //         // savefield(e.target.id);
-  //       // }
-  //     });
-  //   }
-  // });
+  tinymce.init({
+    selector: '.richeditarea',
+    branding: false,
+    menubar:false,
+    statusbar: true,
+    plugins: 'searchreplace autolink directionality visualblocks visualchars advlist lists textcolor colorpicker textpattern wordcount',
+    toolbar: 'bold italic underline strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify  | numlist bullist outdent indent  | removeformat',
+    image_advtab: true,
+    language: 'fr_FR',
+    init_instance_callback: function (editor) {
+      editor.on('blur', function (e) {
+        // console.log('Editor was blurred!');
+        console.log(e.target.id);
+        document.getElementById(e.target.id).innerHTML = editor.getContent(); 
+        // $("#" + e.target.id).html(editor.getContent());
+        //console.log(editor.getContent());
+        // if (savefield){
+          // savefield(e.target.id);
+        // }
+      });
+    }
+  });
 
 }
 
 function save_settings(){
+  document.getElementById("msgsaved").innerHTML = '';
   var rfields = []
   var tdata = {"fn":"saveform","ident":"ident_billjee_id"};
   var inp = document.querySelectorAll('input,select,textarea');
   for (var i in inp){
     if ((inp[i].name) && (inp[i].name.startsWith("billjee") || inp[i].name.startsWith("ident_billjee"))){
-      if (inp[i].name == "billjee_invites"){
+      if (inp[i].name == "billjee_invites" && inp[i].value != ''){
         var addr =  inp[i].value.split(",");
         tdata[inp[i].name] = addr;
       }else {
@@ -54,12 +55,13 @@ function save_settings(){
   }
   
   req.reqdata("POST","process.cgi",tdata,saved_result);
-  //console.log(JSON.stringify(tdata));
+  console.log(JSON.stringify(tdata));
   return false;
 }
 
 function saved_result(data){
-  //console.log(data);
+  document.getElementById("msgsaved").innerHTML = '<div class="w3-panel w3-green"><p>Configuration à été sauvegardée!</p></div>';
+  setTimeout("cleanmsg();",3000);
   return false;
 }
 
@@ -71,3 +73,8 @@ function getStats(id) {
       words: text.split(/[\w\u2019\'-]+/).length
   };
 }
+
+function cleanmsg(){
+  document.getElementById("msgsaved").innerHTML = '';
+  return false;
+}
index 8710a43..2e14663 100644 (file)
@@ -1,4 +1,4 @@
-[% qcfg = dksdb.prepare("SELECT bj.id, bj.id_user, bj.senderemail, bj.msgoffer, bj.msgrequest, binv.invites FROM billjee bj 
+[% qcfg = dksdb.prepare("SELECT bj.id, bj.id_user, bj.senderemail, bj.msgoffer, bj.msgrequest,bj.textdefaultoffer,bj.textdefaultrequest, binv.invites FROM billjee bj 
  left join (select id,string_agg(invites,',') as invites from (select id,json_array_elements_text(invites) as invites from billjee ) as x group by id ) binv on (bj.id=binv.id)
  where bj.id_user= ?;") %]
   [% rcfg = qcfg.execute(session.id) %]
     <input type="hidden" id="id" name="ident_billjee_id" value="[% cfg.0.id %]"/>
   <div class="w3-row">
     <div class="w3-container  ">
-      <label for="senderemail" class="w3-label">Email (...@barreau.lu)</label>
+      <label for="senderemail" class="w3-label">Email (...@barreau.lu ou email de l'étude)</label>
       <input type="text" class="w3-input w3-border" id="senderemail" name="billjee_senderemail" value="[% cfg.0.senderemail %]" />
     </div>
-    <div class="w3-container">
-            <label for="eventmsg" class="w3-label">Message pour des demandes</label>
-            
+    
+  <div class="w3-container">
+        <label for="textdefaultrequest" class="w3-label">Text standard pour demandes de services</label>
+            <textarea  style="height: 200px;" class="w3-input w3-border richeditarea" id="textdefaultrequest" name="billjee_textdefaultrequest" >[% cfg.0.textdefaultrequest %]</textarea>
+        </div>
+        <div class="w3-container">
+            <label for="textdefaultoffer" class="w3-label">Texte standard pour offres de disonibilités</label>        
+            <textarea style="height: 200px;" class="w3-input w3-border richeditarea" id="textdefaultoffer" name="billjee_textdefaultoffer" >[% cfg.0.textdefaultoffer %]</textarea>
+        </div>
+        <div class="w3-container">
+        <label for="msgrequest" class="w3-label">Message e-mail standard des demandes de services</label>
             <textarea  style="height: 200px;" class="w3-input w3-border" id="msgrequest" name="billjee_msgrequest" >[% cfg.0.msgrequest %]</textarea>
-
         </div>
         <div class="w3-container">
-            <label for="eventmsg" class="w3-label">Message pour des offres</label>
-            
+            <label for="msgoffer" class="w3-label">Message e-mail standard pour des offres de disponibilités</label>
             <textarea style="height: 200px;" class="w3-input w3-border" id="msgoffer" name="billjee_msgoffer" >[% cfg.0.msgoffer %]</textarea>
-
-        </div>
+        </div>      
         <div class="w3-container">
-            <label class="w3-label">visible par défault pour ...</label>
-            
+            <label class="w3-label">visible par défault seulement pour ...</label>
           <input class="w3-input selectedit" id="invites"  name="billjee_invites" value="[% cfg.0.invites %]" placeholder="ajouter des emails...@barreau.lu" />
-        <div class="w3-container w3-padding">
-            <button class="w3-button w3-theme w3-xxlarge w3-block" onclick="save_settings();return false;">Sauvegarder</button>
+        </div>  
+        <div class="w3-container w3-padding w3-row">
+            <div class="w3-col w3-third w3-padding">
+                <button class="w3-button w3-theme  w3-block" onclick="save_settings();return false;">Sauvegarder</button>
+                
+            </div>
+            <div class="w3-col w3-twothird">
+                <div id="msgsaved"></div>
+            </div>
+            
           </div> 
         
+      </div>
     </form>
-  </div>
   
+  </div>
 </div>
 </div>
\ No newline at end of file
index 919a97e..91f980d 100644 (file)
@@ -1,15 +1,9 @@
 
 var userid="[% session.id %]";
-var onlyuser=false;
+var bltype="public";
 var setnearest = true;
 var onlyfuture = true;
-var courts = {
-  "jp-luxembourg":"justices de paix - Luxembourg",
-  "jp-esch":"justices de paix - Esch/Alzette",
-  "jp-diekirch":"justices de paix - Diekirch",
-  "ta-luxembourg":"tribunal d'arrondissement - Luxembourg",
-  "ta-diekirch":"tribunal d'arrondissement - Diekirch"
-}
+
 function initpage(){
  loadcalendars();
  
@@ -19,7 +13,7 @@ function search_data(){
   //document.getElementById('pnlresult').innerHTML = '';
   var start = document.getElementById("filterdatefrom").value;
   var end = document.getElementById("filterdateto").value;
-  req.reqdata("POST","process.cgi",{"fn":"getbilljeeevents","startdate":start,"enddate":end,"onlyfuture":onlyfuture},display_results);
+  req.reqdata("POST","process.cgi",{"fn":"getbilljeeevents","type":"public","startdate":start,"enddate":end,"onlyfuture":onlyfuture},display_results);
 
 }
 
@@ -30,8 +24,8 @@ function display_results(data){
   for (var i in data.events){
     
     var card = '<div class="w3-card-4" id="event_'+data.events[i].id+'">';
-    card += '<div class="w3-container w3-theme-d3"><h4 id="event_'+data.events[i].id+'_info1">' + data.events[i].dspdate + ' - ' + data.events[i].dayperiod + ' - ' + data.events[i].dspeventtype + ' de ' + data.events[i].surname + ' ' + data.events[i].prename  +'</h4>'+
-    '</div><div class="w3-container w3-theme-d4"><h5 id="event_'+data.events[i].id+'_info2">' + courts[data.events[i].court] + ((data.events[i].room)?' (' + data.events[i].room + ')':'') + '</h5>'+'</div>';
+    card += '<div class="w3-container w3-theme-d3"><h4 id="event_'+data.events[i].id+'_info1">' + data.events[i].dspdate + ' - ' + data.events[i].starttime + ' - ' + data.events[i].court + ' - ' + data.events[i].room  +'</h4>'+
+    '</div><div class="w3-container '+ ((data.events[i].eventtype == 'offer')?'w3-orange':'w3-yellow')+'"><h5 id="event_'+data.events[i].id+'_info2">' + ((data.events[i].eventtype == 'offer')?'Offre de disponibilité':'Demande de service') +  ((data.events[i].id_user != userid)?' de ' + data.events[i].surname + ' ' + data.events[i].prename:'') + '</h5>'+'</div>';
     card += '<div class="w3-container">' + data.events[i].msg + '</div>';
     card += '<footer class="w3-container w3-right-align w3-padding-16">';
     card += '<button class=" w3-btn w3-theme-l2 w3-margin-right" onclick="contact_publisher(\''+ data.events[i].id +'\');"><img src="[% abspath %]images/icons/send.svg"  style="width: 24px;" />&nbsp;Contacter </button>';
index 602b8a6..54aace4 100644 (file)
@@ -1,55 +1,11 @@
 <div class="w3-display-container" >
-      
   <div class="w3-container"  style="margin: 0px;  padding: 0px;">
       [% INCLUDE block/toolbar.tt %]
       <div class="w3-container" style="margin-top: 50px;" id="pnlsearch">
-        <!-- <form id="frmsearch" name="frmsearch" action="" method="POST"> -->
       [% INCLUDE block/calendar.tt %]
-     
-    
-    <!-- <div class="w3-container">
-        <label class="w3-label">Type</label>
-        <select  class="w3-select" id="filtertype" title="rien selectionné" multiple="multiple" name="filtertype" >
-            <option value="offer">Offres</option>
-            <option value="request">Demandes</option>
-            <option value="myoffers">Mes billets</option>
-          </select>
-      </div> -->
-      <!-- <div class="w3-container">
-        <label class="w3-label">Tribunal</label>
-      <select  class="w3-select" id="filtercourt" title="rien selectionné" multiple="multiple" name="filtercourt" >
-          <option value="jp-luxembourg">justices de paix - Luxembourg</option>
-          <option value="jp-esch">justices de paix - Esch/Alzette</option>
-          <option value="jp-diekirch">justices de paix - Diekirch</option>
-          <option value="ta-luxembourg">tribunal d'arrondissement - Luxembourg</option>
-          <option value="ta-diekirch">tribunal d'arrondissement - Diekirch</option>
-      </select>
-      </div> -->
-      <!-- <div class="w3-container">
-          <label class="w3-label">Chambre</label>
-        <select class="w3-select" id="filterroom" title="rien selectionné" multiple="multiple" name="filterroom" >
-          
-        </select>
-        </div> -->
-        <!-- <div class="w3-container">
-            <label class="w3-label">Avocat</label>
-          <select class="w3-select" id="filterlawyer" title="rien selectionné" multiple="multiple" name="filterlawyer" >
-            
-          </select>
-          </div> -->
-         <!-- </form> -->
-      <!-- <div class="w3-container w3-padding">
-        <button type="button" class="w3-button w3-theme w3-xxlarge w3-block" onclick="search_data();">Rechercher</button>
-      </div>    -->
+
     </div>
     <div class="w3-container w3-margin" id="pnlresult"  >
-      
-      <!-- <h2>données trouvées:</h2> -->
-      
-      
-      
-        
-          
     </div>
 </div> 
 </div>
diff --git a/backoffice/tmpl/module/billjee/mybookings.js b/backoffice/tmpl/module/billjee/mybookings.js
new file mode 100644 (file)
index 0000000..68ce9eb
--- /dev/null
@@ -0,0 +1,78 @@
+
+
+var userid="[% session.id %]";
+var bltype="bookings";
+var setnearest=true;
+var onlyfuture = false;
+// var courts = {
+//   "jp-luxembourg":"justices de paix - Luxembourg",
+//   "jp-esch":"justices de paix - Esch/Alzette",
+//   "jp-diekirch":"justices de paix - Diekirch",
+//   "ta-luxembourg":"tribunal d'arrondissement - Luxembourg",
+//   "ta-diekirch":"tribunal d'arrondissement - Diekirch"
+// }
+
+function initpage(){
+ loadcalendars();
+}
+
+function search_data(){
+  //document.getElementById('pnlresult').innerHTML = '';
+  var start = document.getElementById("filterdatefrom").value;
+  var end = document.getElementById("filterdateto").value;
+  req.reqdata("POST","process.cgi",{"fn":"getbilljeeevents","type":"bookings","startdate":start,"enddate":end,"onlyfuture":onlyfuture},display_results);
+
+}
+
+function display_results(data){
+
+  var res =  document.getElementById('pnlresult');
+  res.innerHTML = '';
+  for (var i in data.events){
+    
+    var card = '<div class="w3-card-4" id="event_'+data.events[i].id+'">';
+    card += '<div class="w3-container w3-theme-d3"><h4 id="event_'+data.events[i].id+'_info1">' + data.events[i].dspdate + ' - ' + data.events[i].starttime + ' - ' + data.events[i].court + ' - ' + data.events[i].room  +'</h4>'+
+    '</div><div class="w3-container '+ ((data.events[i].eventtype == 'offer')?'w3-orange':'w3-yellow')+'"><h5 id="event_'+data.events[i].id+'_info2">' + ((data.events[i].eventtype == 'offer')?'Offre de disponibilité':'Demande de service') +  ((data.events[i].id_user != userid)?' de ' + data.events[i].surname + ' ' + data.events[i].prename:'') + '</h5>'+'</div>';
+    card += '<div class="w3-container">' + data.events[i].msg + '</div>';
+    card += '<footer class="w3-container w3-right-align w3-padding-16">';
+    
+      card += '<button class="w3-btn w3-theme-l2 w3-margin-right" onclick="edit_event(\''+ data.events[i].id +'\');"><img src="[% abspath %]images/icons/edit.svg" style="width: 24px;" data-id="\''+ data.events[i].id +'\'"/>&nbsp;Editer </button>';
+      //if (data.events.isdisabled)
+      //card += '<button class="w3-btn w3-theme-l2 w3-margin-right" ><img src="[% abspath %]images/icons/publish.svg" style="width: 24px;" />&nbsp;Publier </button>';
+      //console.log("Dis: " + data.events[i].isdisabled) ;
+       
+      card += '<button class="w3-btn w3-theme-l2 w3-margin-right" id="btnpublish_'+data.events[i].id+'" data-isdisabled="'+ ((data.events[i].isdisabled == 1)?1:'') + '" onclick="publish_event(\''+ data.events[i].id +'\');">';
+      if (data.events[i].isdisabled == "1"){
+        card += dlgstates.unpublish.btn;
+      } else {
+        card += dlgstates.publish.btn;
+      }
+      
+      card += '</button>';
+      card += '<button class="w3-btn w3-red w3-text-black"  onclick="delete_event(\''+ data.events[i].id +'\');"><img src="[% abspath %]images/icons/remove.svg" style="width: 24px;" />&nbsp;Supprimer </button>';
+      card += '</footer>';
+      if (data.events[i].bookings){
+        var bibok = JSON.parse(data.events[i].bookings);
+        card += '<div class="w3-container">'
+        card += '<h4>Utilisateurs interessés</h4><ul class="w3-ul">';
+        for (var b in bibok){
+          card += '<li>'+ bibok[i].bookingtime + ' <a href="mailto:'+ bibok[i].senderemail+'">'  + bibok[b].prename + ' - ' + bibok[b].surname +'</a></li>';
+        }
+        card += '</ul></div>';
+      }
+    
+
+    card += '</div>';
+    res.innerHTML = res.innerHTML +  card;
+  }
+//  
+return false;
+}
+
+function edit_event(id){
+  parent.backoffice.loadpage('module/[% module %]/form_billet.html?id=' + id,'Editer Billjee');
+  return false;
+}
+
+
diff --git a/backoffice/tmpl/module/billjee/mybookings.tt b/backoffice/tmpl/module/billjee/mybookings.tt
new file mode 100644 (file)
index 0000000..c83c0a9
--- /dev/null
@@ -0,0 +1,24 @@
+<div class="w3-display-container" >
+      
+  <div class="w3-container"  style="margin: 0px;  padding: 0px;">
+      [% INCLUDE block/toolbar.tt %]
+      <div class="w3-container" style="margin-top: 50px;" id="pnlsearch">
+        <!-- <form id="frmsearch" name="frmsearch" action="" method="POST"> -->
+      [% INCLUDE block/calendar.tt %]
+     
+    
+    
+    </div>
+    <div class="w3-container w3-margin" id="pnlresult"  >
+      
+   
+      
+      
+      
+        
+          
+    </div>
+</div> 
+</div>
+[% INCLUDE block/dlgdelete.tt %]
+[% INCLUDE block/dlgpublish.tt %]
\ No newline at end of file
index 5729e43..2559ab0 100644 (file)
@@ -1,16 +1,16 @@
 
 
 var userid="[% session.id %]";
-var onlyuser=true;
+var bltype="user";
 var setnearest=true;
 var onlyfuture = false;
-var courts = {
-  "jp-luxembourg":"justices de paix - Luxembourg",
-  "jp-esch":"justices de paix - Esch/Alzette",
-  "jp-diekirch":"justices de paix - Diekirch",
-  "ta-luxembourg":"tribunal d'arrondissement - Luxembourg",
-  "ta-diekirch":"tribunal d'arrondissement - Diekirch"
-}
+// var courts = {
+//   "jp-luxembourg":"justices de paix - Luxembourg",
+//   "jp-esch":"justices de paix - Esch/Alzette",
+//   "jp-diekirch":"justices de paix - Diekirch",
+//   "ta-luxembourg":"tribunal d'arrondissement - Luxembourg",
+//   "ta-diekirch":"tribunal d'arrondissement - Diekirch"
+// }
 
 function initpage(){
  loadcalendars();
@@ -21,7 +21,7 @@ function search_data(){
   //document.getElementById('pnlresult').innerHTML = '';
   var start = document.getElementById("filterdatefrom").value;
   var end = document.getElementById("filterdateto").value;
-  req.reqdata("POST","process.cgi",{"fn":"getbilljeeeventsbyuser","startdate":start,"enddate":end,"onlyfuture":onlyfuture},display_results);
+  req.reqdata("POST","process.cgi",{"fn":"getbilljeeevents","type":"user","startdate":start,"enddate":end,"onlyfuture":onlyfuture},display_results);
 
 }
 
@@ -32,8 +32,8 @@ function display_results(data){
   for (var i in data.events){
     
     var card = '<div class="w3-card-4" id="event_'+data.events[i].id+'">';
-    card += '<div class="w3-container w3-theme-d3"><h4 id="event_'+data.events[i].id+'_info1">' + data.events[i].dspdate + ' - ' + data.events[i].dayperiod + ' - ' + data.events[i].dspeventtype+ ((data.events[i].id_user != userid)?' de ' + data.events[i].surname + ' ' + data.events[i].prename:'') +'</h4>'+
-    '</div><div class="w3-container w3-theme-d4"><h5 id="event_'+data.events[i].id+'_info2">' + courts[data.events[i].court] + ((data.events[i].room)?' (' + data.events[i].room + ')':'') + '</h5>'+'</div>';
+    card += '<div class="w3-container w3-theme-d3"><h4 id="event_'+data.events[i].id+'_info1">' + data.events[i].dspdate + ' - ' + data.events[i].starttime + ' - ' + data.events[i].court + ' - ' + data.events[i].room  +'</h4>'+
+    '</div><div class="w3-container '+ ((data.events[i].eventtype == 'offer')?'w3-orange':'w3-yellow')+'"><h5 id="event_'+data.events[i].id+'_info2">' + ((data.events[i].eventtype == 'offer')?'Offre de disponibilité':'Demande de service') +  ((data.events[i].id_user != userid)?' de ' + data.events[i].surname + ' ' + data.events[i].prename:'') + '</h5>'+'</div>';
     card += '<div class="w3-container">' + data.events[i].msg + '</div>';
     card += '<footer class="w3-container w3-right-align w3-padding-16">';
     
diff --git a/backoffice/tmpl/module/billjee/privatetickets.js b/backoffice/tmpl/module/billjee/privatetickets.js
new file mode 100644 (file)
index 0000000..ce3901c
--- /dev/null
@@ -0,0 +1,53 @@
+
+var userid="[% session.id %]";
+var bltype="private";
+var setnearest = true;
+var onlyfuture = true;
+// var courts = {
+//   "jp-luxembourg":"justices de paix - Luxembourg",
+//   "jp-esch":"justices de paix - Esch/Alzette",
+//   "jp-diekirch":"justices de paix - Diekirch",
+//   "ta-luxembourg":"tribunal d'arrondissement - Luxembourg",
+//   "ta-diekirch":"tribunal d'arrondissement - Diekirch"
+// }
+function initpage(){
+ loadcalendars();
+}
+
+function search_data(){
+  //document.getElementById('pnlresult').innerHTML = '';
+  var start = document.getElementById("filterdatefrom").value;
+  var end = document.getElementById("filterdateto").value;
+  req.reqdata("POST","process.cgi",{"fn":"getbilljeeevents","type":"private","startdate":start,"enddate":end,"onlyfuture":onlyfuture},display_results);
+
+}
+
+function display_results(data){
+
+  var res =  document.getElementById('pnlresult');
+  res.innerHTML = '';
+  for (var i in data.events){
+    
+    var card = '<div class="w3-card-4" id="event_'+data.events[i].id+'">';
+    card += '<div class="w3-container w3-theme-d3"><h4 id="event_'+data.events[i].id+'_info1">' + data.events[i].dspdate + ' - ' + data.events[i].starttime + ' - ' + data.events[i].court + ' - ' + data.events[i].room  +'</h4>'+
+    '</div><div class="w3-container '+ ((data.events[i].eventtype == 'offer')?'w3-orange':'w3-yellow')+'"><h5 id="event_'+data.events[i].id+'_info2">' + ((data.events[i].eventtype == 'offer')?'Offre de disponibilité':'Demande de service') +  ((data.events[i].id_user != userid)?' de ' + data.events[i].surname + ' ' + data.events[i].prename:'') + '</h5>'+'</div>';
+    card += '<div class="w3-container">' + data.events[i].msg + '</div>';
+    card += '<footer class="w3-container w3-right-align w3-padding-16">';
+    card += '<button class=" w3-btn w3-theme-l2 w3-margin-right" onclick="contact_publisher(\''+ data.events[i].id +'\');"><img src="[% abspath %]images/icons/send.svg"  style="width: 24px;" />&nbsp;Contacter </button>';
+    card += '</footer>';
+    card += '</div>';
+    res.innerHTML = res.innerHTML +  card;
+  }
+  
+  return false;
+}
+
+function edit_event(id){
+  //console.log(this);
+  
+  parent.backoffice.loadpage('module/[% module %]/form_billet.html?id=' + id,'Editer Billjee');
+  return false;
+}
+
+
diff --git a/backoffice/tmpl/module/billjee/privatetickets.tt b/backoffice/tmpl/module/billjee/privatetickets.tt
new file mode 100644 (file)
index 0000000..1aa1a9b
--- /dev/null
@@ -0,0 +1,19 @@
+<div class="w3-display-container" >
+      
+  <div class="w3-container"  style="margin: 0px;  padding: 0px;">
+      [% INCLUDE block/toolbar.tt %]
+      <div class="w3-container" style="margin-top: 50px;" id="pnlsearch">
+        <!-- <form id="frmsearch" name="frmsearch" action="" method="POST"> -->
+      [% INCLUDE block/calendar.tt %]
+     
+    </div>
+    <div class="w3-container w3-margin" id="pnlresult"  >
+
+    </div>
+</div> 
+</div>
+[% INCLUDE block/dlgcontactpublisher.tt %]
+
+
+
+
index ff47410..e97bab3 100644 (file)
@@ -29,8 +29,9 @@
       return false;
     },
     error: function(data){
-  
       console.log("Process Error detected!");
+      console.log(data);
+      
     },
     async:true
   });
index a23d3df..1ca530a 100644 (file)
@@ -11,7 +11,7 @@ function edit_timesheet(id){
 }\r
 \r
 function delete_timesheet(id){\r
-  if (confirm("êtes-vous sûre de supprimer cet horaire?")){\r
+  if (confirm("êtes-vous sûr de supprimer cet horaire?")){\r
     //process_data({"fn":"delete_row","ident_id":id},delete_ts_callback);\r
   }\r
 }\r
index b0ed0d2..626d265 100644 (file)
@@ -39,7 +39,7 @@
   [% ELSE %]\r
   [% END %]\r
   [% INCLUDE "module/$module/javascript.tt" %]\r
-  <script src="[% abspath %]js/request.js"></script> \r
+  <script src="[% abspath %]js/request.js?v=1"></script> \r
   <script src="[% abspath %]js/module_global.js"></script>\r
   [% ELSE %]\r
   <div class="alert alert-danger">\r
index 598d506..d865c74 100644 (file)
@@ -33,9 +33,9 @@ order by lc.surname, lc.prename, lc.company;'); %]
               <div class="hover-bg"> \r
               <a href="[% abspath %]backoffice/register.html" >\r
                 <div class="hover-text">\r
-                  <h4 style="color: red;font-weight: bold;">Vous êtes avocat?<br><span style="font-size: 11px; color: red;font-weight: bold; ">Registrez vous!</span></h4>\r
+                  <h4 style="color: green;font-weight: bold;">Vous êtes avocat?<br><span style="font-size: 11px; color: green;font-weight: bold; ">Enregistrez-vous!</span></h4>\r
                 </div>\r
-                <div class="default-text" style="width: 100%; text-align: center; color: red; font-weight: bold">Vous êtes avocat?<br/>Registrez vous!</div>     \r
+                <div class="default-text" style="width: 100%; text-align: center; color: green; font-weight: bold">Vous êtes avocat?<br/>Enregistrez-vous!</div>     \r
                 <img src="[% abspath %]img/user-plus.svg" class="img-responsive" style="height: 145px; " alt="Register User"> </a>\r
                  </div>\r
             </div>\r
index c79a096..be04bca 100644 (file)
@@ -6,7 +6,7 @@
             [% FOREACH cats = dksdb.query("select cat.link,cat.category from lawyercategories lcat \r
 join categories cat on (lcat.id_category=cat.id) \r
 join lawyercatalog lc on (lcat.id_catalog=lc.id)\r
-join appaccess ac on (ac.id_user=lc.id_user and ac.id_app='2' and lcat.selection=true and ac.publicenabled = true)\r
+-- join appaccess ac on (ac.id_user=lc.id_user and ac.id_app='2' and lcat.selection=true and ac.publicenabled = true)\r
 group by cat.id order by category;") %]\r
             <li><a href="[% abspath%]domaine/[% cats.link %].html" >[% cats.category %]</a></li>\r
             \r