article video function added
authorKilian Saffran <ksaffran@dks.lu>
Fri, 3 Sep 2021 10:28:59 +0000 (12:28 +0200)
committerKilian Saffran <ksaffran@dks.lu>
Fri, 3 Sep 2021 10:28:59 +0000 (12:28 +0200)
api/bin/getapidata.pl
public_html/qubeshop/lib/lang/fr.php
public_html/qubeshop/log/logintest.log
public_html/qubeshop/tmpl/dialogs/dlgvideo.html [new file with mode: 0644]
public_html/qubeshop/tmpl/index.html
public_html/qubeshop/tmpl/js/myapp.js
public_html/qubeshop/tmpl/js/shop.js
public_html/qubeshop/tmpl/panels/pnl_basket.html

index 353b36c..139adf5 100644 (file)
@@ -535,15 +535,46 @@ if ($onlyget == 0){
         if ($cpr != 0){
           $api->writelog("cmd failed:".$cmd."!");
         }
-        $agfiche = $db->exec($upselsql);
         $cmd = 'rsync -av '.$cfg->{datapath}.'/art_bro_pdf/ '.$cfg->{mediapath}.'brochure/';
         $cpr = system($cmd);
         if ($cpr != 0){
           $api->writelog("cmd failed:".$cmd."!");
         }
       }
-    
+
+      $api->writelog("update article_groups brochure...");
+     $upselsql = "update wiges_ole_article as woa, article_groups as ag
+      set ag.brochure = case when woa.nom_fichier is null then null else replace(replace(woa.nom_fichier,'art_brochure','brochure'),'art_bro_pdf','brochure') end
+      where woa.article = ag.article and woa.code_document in  ('art_brochure','art_bro_pdf') ; ";
+      if ($cfg->{dryrun} == 1){
+        print $upselsql."\n";
+      } else {
+        my $agfiche = $db->exec($upselsql);
+        my $cmd = 'rsync -av '.$cfg->{datapath}.'/art_brochure/ '.$cfg->{mediapath}.'brochure/';
+        my $cpr = system($cmd);
+        if ($cpr != 0){
+          $api->writelog("cmd failed:".$cmd."!");
+        }
+        $cmd = 'rsync -av '.$cfg->{datapath}.'/art_bro_pdf/ '.$cfg->{mediapath}.'brochure/';
+        $cpr = system($cmd);
+        if ($cpr != 0){
+          $api->writelog("cmd failed:".$cmd."!");
+        }
+      }
+
+      $api->writelog("update article_groups video...");
+     $upselsql = "update wiges_ole_article as woa, article_groups as ag
+      set ag.videolink = case when woa.commentaire is null then null else woa.commentaire end
+      where woa.article = ag.article and woa.code_document in  ('art_video');";
+      if ($cfg->{dryrun} == 1){
+        print $upselsql."\n";
+      } else {
+        my $agfiche = $db->exec($upselsql);
+      }
+
+     
      $api->writelog("End Copy article_groups...");
+
   }
   if ($steps =~ /articles,/){
     $api->writelog("copy articles...");
@@ -610,6 +641,15 @@ if ($onlyget == 0){
        if ($cpr != 0){
           $api->writelog("cmd failed:".$cmd."!");
        }
+      $api->writelog("update article_groups video...");
+     my $upselsql = "update wiges_ole_article as woa, articles as ag
+      set ag.videolink = case when woa.commentaire is null then null else woa.commentaire end
+      where woa.article = ag.article and woa.code_document in  ('art_video');";
+      if ($cfg->{dryrun} == 1){
+        print $upselsql."\n";
+      } else {
+        my $agvid = $db->exec($upselsql);
+      }
      #}
     #  foreach my $r (@{$agfiche}){
     #    if (-e $cfg->{datapath}.'/'.$r->{nom_fichier}){
index 4521cf0..96715d8 100644 (file)
@@ -6,6 +6,7 @@
    "cancel" => "Abondonner",\r
    "save" => "Sauvegarder",\r
    "ok" => "OK",\r
+   "close" => "Fermer",\r
    "groupname" => "Groupe",\r
    "filter" => "filtrer...",\r
    "clientaccess" => "Accès Shop",\r
@@ -63,6 +64,7 @@
   "msgccc" => "Contrat Cadre qui a été négociée individuellement pour votre entreprise",\r
   "lblccc" => "VOIR LES PRODUITS",\r
   "msgorders" => "Les commandes que vous avez envoyés via le shop en ligne<br/><br/>",\r
-  "lblorders" => "VOIR MES COMMANDES"\r
+  "lblorders" => "VOIR MES COMMANDES",\r
+  "video" => "Video",\r
   );\r
 ?>
\ No newline at end of file
index 83ddf95..2720233 100644 (file)
@@ -68,3 +68,43 @@ USER: select id,usertype from users where lower(useremail)=lower('ksaffran@dks.l
     [id] => ef3b63ab-24a5-4972-86fb-8c3a4f36e75c
     [usertype] => admin
 )
+USER: select id,usertype from users where lower(useremail)=lower('ksaffran@dks.lu') and userpassword = 'a1b496fa520a1c52edd076ca7a59e56667e7ebeb5ba5ba966d2d01628e165359' and userpassword is not null and userpassword != '' and isenabled='1'; - USER: select id,usertype from users where lower(useremail)=lower('ksaffran@dks.lu') and userpassword = '0ecf731e2426a8a469f06e9f4a3bcbed6f8071d9d3e3ef7ef5fd9165021e27ec' and userpassword is not null and userpassword != '' and isenabled='1'; - Array
+(
+    [id] => ef3b63ab-24a5-4972-86fb-8c3a4f36e75c
+    [usertype] => admin
+)
+USER: select id,usertype from users where lower(useremail)=lower('ksaffran@dks.lu') and userpassword = '0ecf731e2426a8a469f06e9f4a3bcbed6f8071d9d3e3ef7ef5fd9165021e27ec' and userpassword is not null and userpassword != '' and isenabled='1'; - Array
+(
+    [id] => ef3b63ab-24a5-4972-86fb-8c3a4f36e75c
+    [usertype] => admin
+)
+USER: select id,usertype from users where lower(useremail)=lower('ksaffran@dks.lu') and userpassword = '0ecf731e2426a8a469f06e9f4a3bcbed6f8071d9d3e3ef7ef5fd9165021e27ec' and userpassword is not null and userpassword != '' and isenabled='1'; - Array
+(
+    [id] => ef3b63ab-24a5-4972-86fb-8c3a4f36e75c
+    [usertype] => admin
+)
+USER: select id,usertype from users where lower(useremail)=lower('ksaffran@dks.lu') and userpassword = '0ecf731e2426a8a469f06e9f4a3bcbed6f8071d9d3e3ef7ef5fd9165021e27ec' and userpassword is not null and userpassword != '' and isenabled='1'; - Array
+(
+    [id] => ef3b63ab-24a5-4972-86fb-8c3a4f36e75c
+    [usertype] => admin
+)
+USER: select id,usertype from users where lower(useremail)=lower('ksaffran@dks.lu') and userpassword = '0ecf731e2426a8a469f06e9f4a3bcbed6f8071d9d3e3ef7ef5fd9165021e27ec' and userpassword is not null and userpassword != '' and isenabled='1'; - Array
+(
+    [id] => ef3b63ab-24a5-4972-86fb-8c3a4f36e75c
+    [usertype] => admin
+)
+USER: select id,usertype from users where lower(useremail)=lower('ksaffran@dks.lu') and userpassword = '0ecf731e2426a8a469f06e9f4a3bcbed6f8071d9d3e3ef7ef5fd9165021e27ec' and userpassword is not null and userpassword != '' and isenabled='1'; - Array
+(
+    [id] => ef3b63ab-24a5-4972-86fb-8c3a4f36e75c
+    [usertype] => admin
+)
+USER: select id,usertype from users where lower(useremail)=lower('ksaffran@dks.lu') and userpassword = '0ecf731e2426a8a469f06e9f4a3bcbed6f8071d9d3e3ef7ef5fd9165021e27ec' and userpassword is not null and userpassword != '' and isenabled='1'; - Array
+(
+    [id] => ef3b63ab-24a5-4972-86fb-8c3a4f36e75c
+    [usertype] => admin
+)
+USER: select id,usertype from users where lower(useremail)=lower('ksaffran@dks.lu') and userpassword = '0ecf731e2426a8a469f06e9f4a3bcbed6f8071d9d3e3ef7ef5fd9165021e27ec' and userpassword is not null and userpassword != '' and isenabled='1'; - Array
+(
+    [id] => ef3b63ab-24a5-4972-86fb-8c3a4f36e75c
+    [usertype] => admin
+)
diff --git a/public_html/qubeshop/tmpl/dialogs/dlgvideo.html b/public_html/qubeshop/tmpl/dialogs/dlgvideo.html
new file mode 100644 (file)
index 0000000..9b39c7e
--- /dev/null
@@ -0,0 +1,16 @@
+<div id="dlgvideo" class="modal">
+
+  <div class="modal-content animate-top card-4">
+    <header> 
+      <span onclick="document.getElementById('dlgvideo').style.display='none'; return false;" 
+       class="button toolbarbtn display-topright" ><span class="icon icon-close" style="font-size: 18px;"></span></span>
+      <h2 id="dlgvideo_title">{{lbl.video}}</h2>
+    </header>
+    <div class="container">
+      <iframe style="width: 100%;height: 480px !important;" id="dlgvideo_src" src="" frameborder="0" allowfullscreen></iframe>
+    </div>
+    <footer>
+    <button class="button actionbtn margin-right border" onclick="document.getElementById('dlgvideo').style.display='none'; return false;">{{ lbl.close }}</button>  
+    </footer>
+  </div>
+</div>
\ No newline at end of file
index c46082d..d5400bb 100644 (file)
@@ -56,6 +56,7 @@
 <link rel="stylesheet" href="{{ abspath }}vendor/slimselect/slimselect.css?v={{ version }}">\r
 <link rel="stylesheet" href="{{ abspath }}vendor/flatpickr/flatpickr.min.css?v={{version}}">\r
 <link rel="stylesheet" href="{{ abspath }}vendor/flatpickr/themes/airbnb.css?v={{version}}">\r
+<link rel="stylesheet" href="{{ abspath }}vendor/mediabox/mediabox.css?v={{version}}">\r
 </head>\r
 <body>\r
   {# <div class="top"> #}\r
   </div>\r
   {{ include('dialogs/dlgconfirm.html') }}\r
   {{ include('dialogs/dlgmessage.html') }}\r
+  {{ include('dialogs/dlgvideo.html') }}\r
   <script type="text/javascript" src="{{ abspath }}vendor/tabulator/js/tabulator.min.js?v={{ version }}"></script>\r
   <script type="text/javascript" src="{{ abspath }}vendor/moment/moment-with-locales.min.js?v={{ version }}"></script>\r
   <script type="text/javascript" src="{{ abspath }}vendor/slimselect/slimselect.min.js?v={{ version }}"></script>\r
   <script type="text/javascript" src="{{ abspath }}vendor/flatpickr/flatpickr.min.js?v={{version}}"></script> \r
   <script type="text/javascript" src="{{ abspath }}vendor/flatpickr/l10n/de.js?v={{version}}" ></script> \r
   <script type="text/javascript" src="{{ abspath }}vendor/flatpickr/l10n/fr.js?v={{version}}" ></script> \r
+  <script type="text/javascript" src="{{ abspath }}vendor/mediabox/mediabox.js?v={{version}}" ></script> \r
   <script type="text/javascript" src="{{ abspath }}js/request.js?v={{ version }}"></script>\r
   <script type="text/javascript" src="{{ abspath }}js/myapp.js?v={{ version }}"></script>\r
   <script type="text/javascript" src="{{ abspath }}js/dataform.js?v={{ version }}"></script>\r
index e69e02f..28fbebf 100644 (file)
@@ -56,6 +56,25 @@ let myapp = {
       document.getElementById('dlgmessage').style.display='block';\r
       return false;\r
     },\r
+    dlgvideo: function(url){\r
+      let service = {};\r
+      if (matches = url.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/)) {\r
+        service.provider = "youtube";\r
+        service.id       = matches[2];\r
+      } else if (matches = url.match(/https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)/)) {\r
+        service.provider = "vimeo";\r
+        service.id       = matches[3];\r
+      }\r
+      let embedLink="";\r
+      if (service.provider === 'youtube') {\r
+        embedLink = 'https://www.youtube.com/embed/' + service.id;\r
+      } else if (service.provider === 'vimeo') {\r
+        embedLink = 'https://player.vimeo.com/video/' + service.id;\r
+      } \r
+      document.getElementById('dlgvideo_src').src= embedLink;\r
+      document.getElementById('dlgvideo').style.display='block';\r
+      return false;\r
+    },\r
     setpref: function(key,value){\r
       db.execAsync("REPLACE INTO defaultdata (id,pref) VALUES ('"+key+"','"+value+"');").then(res => {\r
         //myapp.loadpreferences();\r
index 002ae4c..6739207 100644 (file)
@@ -25,6 +25,13 @@ let shop= {
       select: "#askprice_type",\r
       showSearch: false\r
     });\r
+    shop.selects["ccaddress"] = new SlimSelect({\r
+      select: "#ccaddress",\r
+      showSearch: false,\r
+      afterClose: function(){\r
+        shop.setAddress();\r
+      }\r
+    });\r
     shop.tblgroups = new Tabulator("#tbl_groups", {\r
       height: "calc(100vh - 158px)",\r
       layout: "fitDataStretch",\r
@@ -123,7 +130,7 @@ let shop= {
   setArticleGroup: function(gdx,grpdata,articledata,type){\r
     //console.log("artdata",articledata);\r
     let grparticle = grpdata['article'];\r
-    //console.log("Group Article",grparticle);\r
+    \r
     let strartgrp = '<div class="container margin padding border">'+\r
             '<div class="cell-row">'+\r
             '<div class="quarter" style="padding-right: 20px; padding-bottom: 10px;" ><img src="'+ ((grpdata.image != null)?'img/'+grpdata.image + '?v=' + grpdata.imgversion:'img/qubenoimg.jpg')+ '" style="max-width: 175px;"  alt="image"/></div>'+\r
@@ -134,8 +141,9 @@ let shop= {
             ((grpdata.brochure != null)?'<button class="bar-item button text-white" style="text-align: right!important;" onclick="shop.openpdf(\''+grpdata.brochure+ '\');">{{ lbl.doc_brpr }}&nbsp;<span class="icon icon-pdf"></span></button>':'')+\r
             ((grpdata.fichetechnique != null)?'<button class="bar-item button text-white" style="text-align: right!important;" onclick="shop.openpdf(\''+grpdata.fichetechnique+ '\');">{{ lbl.doc_fite }}&nbsp;<span class="icon icon-pdf"></span></button>':'')+\r
             ((grpdata.noticemontage != null)?'<button class="bar-item button text-white" style="text-align: right!important;" onclick="shop.openpdf(\''+grpdata.noticemontage+ '\');">{{ lbl.doc_nomo }}&nbsp;<span class="icon icon-pdf"></span></button>':'')+\r
+            ((grpdata.videolink != null)?'<button class="bar-item button text-white" style="text-align: right!important;" onclick="myapp.dlgvideo(\''+grpdata.videolink+ '\');">{{ lbl.video }}&nbsp;<span class="icon icon-video"></span></button>':'')+\r
             '</div>'+ '</div>'+ '</div>';\r
-            //onsole.log("grp",grparticle);\r
+            //console.log("grp",grparticle);\r
             //console.log("adata",articledata);\r
             //console.log("articledata",articledata[grparticle]);\r
             let stf= shop.getCounterfield([grpdata.c01_label,grpdata.c02_label,grpdata.c03_label,grpdata.c04_label,grpdata.c05_label],((articledata[grparticle])?articledata[grparticle][0].unite_quantite:null));\r
@@ -194,9 +202,11 @@ let shop= {
                     strartgrp +=  '<td style="text-align: right;">&nbsp;</td>';\r
                     // strartgrp +=  '<td style="text-align: right;">'+ ((articledata[grparticle][adx].prix_net && articledata[grparticle][adx].prix_net != '0.0000')?articledata[grparticle][adx].prix_net.replace(/\./,',')+ ' €':'&nbsp;')+'</td>';\r
                   }\r
-                  strartgrp +=  '<td><div class="bar">'+((articledata[grparticle][adx].doc_ft != null)?'<button class="bar-item button bodybtn border" onclick="shop.openpdf(\''+articledata[grparticle][adx].doc_ft+ '\');"><span class="icon icon-pdf">&nbsp;FT</span></button>':'')\r
-                  +((articledata[grparticle][adx].doc_mo != null)?'<button class=" bar-item button bodybtn border" onclick="shop.openpdf(\''+articledata[grparticle][adx].doc_mo+ '\');"><span class="icon icon-pdf">&nbsp;MO</span></button>':'')\r
-                  +((articledata[grparticle][adx].doc_fs != null)?'<button class="bar-itembutton bodybtn border" onclick="shop.openpdf(\''+articledata[grparticle][adx].doc_fs+ '\');"><span class="icon icon-pdf">&nbsp;FS</span></button>':'')+'</div></td>'+\r
+                  strartgrp +=  '<td><div class="bar">'+((articledata[grparticle][adx].doc_ft != null)?'<button class="bar-item button bodybtn border" onclick="shop.openpdf(\''+articledata[grparticle][adx].doc_ft+ '\');"><span class="icon icon-pdf">&nbsp;FT</span></button>':'')+\r
+                  ((articledata[grparticle][adx].doc_mo != null)?'<button class=" bar-item button bodybtn border" onclick="shop.openpdf(\''+articledata[grparticle][adx].doc_mo+ '\');"><span class="icon icon-pdf">&nbsp;MO</span></button>':'')+\r
+                  ((articledata[grparticle][adx].doc_fs != null)?'<button class="bar-item button bodybtn border" onclick="shop.openpdf(\''+articledata[grparticle][adx].doc_fs+ '\');"><span class="icon icon-pdf">&nbsp;FS</span></button>':'')+\r
+                  ((articledata[grparticle][adx].videolink != null)?'<button class="bar-item button bodybtn border" onclick="myapp.dlgvideo(\''+articledata[grparticle][adx].videolink+ '\');"><span class="icon icon-pdf">&nbsp;FS</span></button>':'')+\r
+                  '</div></td>'+\r
                   '</tr>';\r
                 }\r
               } else {\r
@@ -248,7 +258,6 @@ let shop= {
           myapp.viewpanel("shop");\r
         });\r
       }).catch(e => { console.log(e)});\r
-      \r
     }\r
   },\r
   articlequantityplus: function(artid,step){\r
@@ -269,7 +278,6 @@ let shop= {
       cval = cval +step;\r
       document.getElementById('art_' + artid).value = cval;\r
     }\r
-    \r
     return false;\r
   },\r
   articlequantityminus: function(artid,step){\r
@@ -393,6 +401,33 @@ let shop= {
 \r
     return false;\r
   },\r
+  setAddress: function(){\r
+\r
+  },\r
+  loadBasket: function(){\r
+    let pdata;\r
+\r
+    //{% if (session.usertype == 'admin') %}\r
+\r
+    pdata = {"cl":"ContratCadre","fn":"getClients"};\r
+\r
+    //{% else %}\r
+\r
+    pdata = {"cl":"ContratCadre","fn":"getContractsByUser","iduser":"{{session.id_user}}"};\r
+\r
+    //{% endif %}\r
+\r
+    postData(pdata).then(data => {\r
+      console.log("CC list",data.data);\r
+      contratcadre.ccnum = data.data.length;\r
+      \r
+      dataform.fillselectlist(contratcadre.selects["ccaddress"],data.data,'client','name_display');\r
+      //if (data.data.length == 1 ){\r
+        //contratcadre.idclient = data.data[0].client;\r
+        //contratcadre.loadContratCadre(true);\r
+      //}\r
+    });\r
+  },\r
   setBasket: function(){\r
     let bs = document.getElementById("tblbody_basket");\r
     bs.innerHTML ='';\r
index 5b28013..6a668b2 100644 (file)
@@ -8,10 +8,17 @@
   <div  id="lst_basket" style="height: calc(100vh - 218px); overflow-y: auto;">\r
     <form id="frm_basket">\r
     <div class="row">\r
-      <div class="container quarter">\r
-        <label class="label" for="basket_invoiceaddress">{{ lbl.invoiceaddress }}</label>\r
-        <textarea class="input border data_basket readonly" rows="5"  data-id="" data-column="invoiceaddress" data-table="basket"  id="basket_invoiceaddress" readonly></textarea>\r
+      <div class="quarter">\r
+        <div class="container" >\r
+          <label class="label" for="ccaddress">Selection Adresse</label>\r
+          <select class="select border data_admin" id="ccaddress"></select>\r
+        </div>\r
+        <div class="container">\r
+          <label class="label" for="basket_invoiceaddress">{{ lbl.invoiceaddress }}</label>\r
+          <textarea class="input border data_basket readonly" rows="5"  data-id="" data-column="invoiceaddress" data-table="basket"  id="basket_invoiceaddress" readonly></textarea>\r
+        </div>\r
       </div>\r
+     \r
       <div class="container quarter">\r
         <label class="label" for="basket_deliveryaddress">{{ lbl.deliveryaddress }}</label>\r
         <textarea class="input border data_basket" rows="5"  data-id="" data-column="deliveryaddress" data-table="basket"  id="basket_deliveryaddress" ></textarea>\r