Your IP : 18.219.182.48


Current Path : /data/web/virtuals/51568/virtual/www/www/uploader/
Upload File :
Current File : /data/web/virtuals/51568/virtual/www/www/uploader/uploader-soubory-forma.php

<?php
?>
<div class="alert alert-info h5 my-2 py-1 rounded-0" id="uploader-sada-nazev"></div>
<div id="rowBtn">
  <div class="upload-div d-flex flex-row wrap" >
      <input type="file" id="fileInput" accept=".doc,.docx,.xml,.ppt,.pptx,.pdf,.xls,.xlsx,.rtf,.zip" hidden multiple>   
      <button name="btnUkazSouboryVSade" id="btnUkazSouboryVSade" class="btn btn-primary rounded-0 ml-3"   onclick="ukazSouboryVSade()">Soubory v sadě</button>
      <button type="button" class="btn btn-outline-success rounded-0 ml-auto" id="virtualFile" name="virtualFile">Vyber nové</button>
      <button id="btnUploadExecute" name="submit" id="submit" class="btn btn-warning rounded-0 ml-3 d-none" onclick="uploadExecute()">Nové na server</button>    
  </div>
</div>
<div id="progress" class="progress mt-2 d-none">
  <div id="bar" class="progress-bar bg-info" role="progressbar" aria-valuemin="0" aria-valuemax="100">
  </div>
</div>

<div id="formaDetail" class="mt-2">
    <?php include "uploader-soubory-edit.php"?>
</div>

<script src="www/uploader/upload-soubory.js"></script>
<script>
{

    let souboryProUpload = [],
        souboryProAJAX = [],
        souborIndex = 0,
        uploadIndex = 0,
        totalSize = 0, 
        uploadetSize = 0; 
        
function odstranHacCar(inputText) {
    let r = inputText.toLowerCase();
    r = r.replace(new RegExp(/\s/g), "-");
    r = r.replace(new RegExp(/[àáâãäå]/g), "a");
    r = r.replace(new RegExp(/[æ]/g), "ae");
    r = r.replace(new RegExp(/[çč]/g), "c");
    r = r.replace(new RegExp(/[ď]/g), "d");
    r = r.replace(new RegExp(/[èéêëě]/g), "e");
    r = r.replace(new RegExp(/[ìíîï]/g), "i");
    r = r.replace(new RegExp(/[ñň]/g), "n");
    r = r.replace(new RegExp(/[òóôõö]/g), "o");
    r = r.replace(new RegExp(/[œ]/g), "oe");
    r = r.replace(new RegExp(/[ř]/g), "r");
    r = r.replace(new RegExp(/[š]/g), "s");
    r = r.replace(new RegExp(/[ť]/g), "t");
    r = r.replace(new RegExp(/[ůùúûü]/g), "u");
    r = r.replace(new RegExp(/[ýÿ]/g), "y");
    r = r.replace(new RegExp(/[ž]/g), "z");
    // r = r.replace(new RegExp(/\W/g), ""); //non-word character //BOHUŽEL i "-"
    return r;
}        

    function formatBytes(bytes, decimals = 2) {
        if (bytes === 0) return '0 Bytes';
        const k = 1024;
        const dm = decimals < 0 ? 0 : decimals;
        const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
        const i = Math.floor(Math.log(bytes) / Math.log(k));   
        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
    }

    function text_truncate(str, length) {
        if (length == null) {
            length = 100;
        }
        ending = '...';
        if (str.length > length) {
              return str.substring(0, length - ending.length) + ending;
      } else {
            return str;
        }
    };

    $('#virtualFile').on("click", function () { // toto vyvola event file select
        $('#fileInput').click();     
    });

    function odstranSoubor(id) {
        $('#filRad' + id).remove();
        souboryProUpload[id] = false;
    }
    
   function vyberIkonu(fileName){
     if (!fileName) return "";
     dots = fileName.split(".")
     fileType = dots[dots.length-1].toLowerCase();
     if (['docx', 'doc', 'rtf'].indexOf(fileType) != -1) {return '<i class="far fa-file-word" style="color: blue; font-weight: 400"></i>';}
     if (['pptx', 'ppt'].indexOf(fileType) != -1) {return '<i class="far fa-file-powerpoint" style="color: #D57833;"></i>';}
     if (['pdf'].indexOf(fileType) != -1) {return '<i class="far fa-file-pdf" style="color: red;"></i>';}
     if (['xls', 'xlsx'].indexOf(fileType) != -1) {return '<i class="far fa-file-excel" style="color: green;"></i>';}
     if (['zip'].indexOf(fileType) != -1) {return '<i class="far fa-file-archive"></i>';}
     return '<i class="far fa-file"></i>';
    }

    $("#fileInput").change(function () {
        $("#btnUploadExecute").removeClass("d-none");
        $("#btnUkazSouboryVSade").addClass("btn-outline-primary").removeClass("btn-primary");
        $("#virtualFile").removeClass("btn-outline-success").addClass("btn-success");   
    
        if (!$('#tabulkaNaPridani').length){
           $('#formaDetail').html(
` <div id="tabulkaNaPridani" class="tabulka-overflow">
      <table role="presentation" class="table table-striped my-2">
          <tbody class="files" id="tblFiles">
          </tbody>
      </table>
  </div>`
);
        }
        let vstup = document.getElementById("fileInput");
        for (let i = 0; i < vstup.files.length; i++) {
            let soubor = vstup.files[i],
                velikost = formatBytes(soubor.size),
                id = souborIndex++,
                jmenoSouboru = text_truncate(soubor.name, 50),
                htm = '';
                soubor.id = id, 
                ikona = vyberIkonu(jmenoSouboru);
            souboryProUpload.push(soubor);
            htm += `
<tr id="filRad${id}">
  <td style="font-size: 3rem">${ikona}</td>
  <td class="tdUpload-name">
    <div> ${jmenoSouboru} </div>
    <div id="progress${id}" class="progress mt-2 d-none">
      <div id="bar${id}" class="progress-bar bg-success" role="progressbar" aria-valuemin="0" aria-valuemax="100">
      </div>
    </div>
    <div>
      <div class="form-group row align-items-center mt-2 mb-0" id="altDiv${id}">
        <label for="alternativ${id}" class="col-sm-2 col-form-label">Popis:</label>
        <div class="col-sm-9">
          <input type="text" class="form-control ml-2 rounded-0" name="alternativ${id}" id="alternativ${id}"
            placeholder="...bližší popis souboru...">
        </div>
      </div>
      <div id="errFile${id}" class="d-none text-danger"></div>
    </div>
  </td>
  <td class="text-right tdUpload-size" style="vertical-align: middle;">${velikost}</td>
  <td id="filDel${id}" class="ikonaForm" style="vertical-align: middle;"><i class="far fa-trash-alt text-danger"
      onclick="odstranSoubor(${id})"></td>
</tr>
`;
          $("#tblFiles").prepend(htm);
      }
  });

  function uploadExecute() {
      $("#btnUploadExecute").addClass('d-none');
      $("#rowBtn").addClass("d-none");
      totalSize = 0;
      uploadetSize = 0;
      $("#bar").width(0 + '%');
      $("#bar").html(0 + '%');
      for (let i = 0; i < souboryProUpload.length; i++) {
          if (souboryProUpload[i]) {
              souboryProAJAX.push(souboryProUpload[i]) ;
              totalSize += souboryProUpload[i].size;
              $("#filDel"+souboryProUpload[i].id).addClass('d-none');
          }
      }
           
     $('[id^="altDiv"]').addClass('d-none'); 
     $('[id^="progress"]').removeClass('d-none');    
      uploadIndex = 0;
      kopirujNaServer(uploadIndex);
  }

  function kopirujNaServer(i) { 
      let fd = new FormData(),
          ix = souboryProAJAX[i].id,
          popis = $("#alternativ" + ix).val(),
          galerieInfo =  $("#sadaDetail").attr("dest-folder"),
          info = galerieInfo.split('#')
          byloLoaded = 0;
          
      fd.append("popis", popis);
      fd.append("poradi", ix + 1);
      fd.append("folder", info[1]);
      fd.append("galerie_id", info[0]);
      fd.append("jmbezhac", odstranHacCar(souboryProAJAX[i].name)); 
      fd.append('lastModified',  new Date(souboryProAJAX[i].lastModified).toLocaleString('cs-CZ'));   
      fd.append('size', formatBytes(souboryProAJAX[i].size));
      
      fd.append("filesToUpload[]", souboryProAJAX[i]);   
      $.ajax({
          xhr: function () {
              let xhr = new window.XMLHttpRequest();
              xhr.upload.addEventListener("progress", function (evt) {
                  if (evt.lengthComputable) {
                    
                    uploadetSize = uploadetSize - byloLoaded + evt.loaded;
                    byloLoaded = evt.loaded;                        
                      let percentComplete = Math.floor((evt.loaded / evt.total) * 100),
                          percentCompleteTotal = Math.floor((uploadetSize / totalSize) * 100);;
                                              
                      $("#bar" + ix).width(percentComplete + '%');
                      $("#bar" + ix).html(percentComplete + '%');
                      $("#bar").width(percentCompleteTotal + '%');
                      $("#bar").html(percentCompleteTotal + '%');
                      
                  }
              }, false);                                                                //   <i class="fas fa-file-export"></i>
              return xhr;
          },

          type: 'POST',
          url: 'www/uploader/uploader-soubor-upload.php',
          cache: false,
          contentType: false,
          processData: false,
          data: fd,
          success: function (result) {         
              navrat = result.split('#');
              if (navrat.length = 1) {
                  let id = navrat[0];
                  $("#filDel" + ix).html('<i class="fas fa-check fa-lg text-success"></i>');
                  $("#filDel" + ix).removeClass('d-none');
                  uploadIndex++;   
                    
                  if (uploadIndex < souboryProAJAX.length) {
                      $('#altDiv' + ix).addClass('d-none');
                      $('#progress' + ix).removeClass('d-none');
                      kopirujNaServer(uploadIndex);                      
                   } else {
                     $("#rowBtn").removeClass("d-none");
                     souboryProUpload = [];
                     souboryProAJAX = [];
                     souborIndex = 0;
                     $("#progress").addClass('d-none');   
                      let destfolder = $("#sadaDetail").attr("dest-folder").split("#"),
                          galerie_id = destfolder[0];                                                   
                   }                 
              } 

          },
          error: function (err) {
              $("#filDel" + i).html('<i class="fas fa-times fa-lg text-danger"></i>');
              $("#errFile" + i).html(err);
              $("#errFile" + i).removeClass('d-none');
              $("#filDel" + i).removeClass('d-none');
              $("#progress").addClass('d-none');              
          },
      });
  }


  function ukazSouboryVSade(){ 
      $("#btnUkazSouboryVSade").removeClass("btn-outline-primary").addClass("btn-primary");
      $("#virtualFile").removeClass("btn-success").addClass("btn-outline-success");
      $("#btnUploadExecute").addClass("d-none");  
    let galerieInfo =  $("#sadaDetail").attr("dest-folder"),
        info = galerieInfo.split('#'),
        galerie_id = info[0];
      $.ajax({
          url: "www/uploader/uploader-soubory-edit.php",
          type: 'POST',
          dataType: 'HTML',
          data: {
            'galerie_id': galerie_id,
          },
          success: function (result) {
            $("#formaDetail").html(result);
            $("#uploader-galerie-nazev").html($("#galerieNadpis" + galerie_id).html());
            
          }
      });          
  }
  
  
  function usporadejFotky(){ 
      $("#btnGalerieShow").removeClass("btn-primary").addClass("btn-outline-primary"); 
      $("#btnUsporadejFotky").removeClass("btn-outline-primary").addClass("btn-primary");
      $("#btnUkazFotkyZGalerie").addClass("btn-outline-primary").removeClass("btn-primary");
      $("#virtualFile").removeClass("btn-success").addClass("btn-outline-success");
      $("#btnUploadExecute").addClass("d-none");  
    let galerieInfo =  $("#sadaDetail").attr("dest-folder"),
        info = galerieInfo.split('#'),
        galerie_id = info[0];
      $.ajax({
          url: "www/uploader/uploader-img-poskladat.php",
          type: 'POST',
          dataType: 'HTML',
          data: {
            'galerie_id': galerie_id,
          },
          success: function (result) {
            $("#formaDetail").html(result);
            $("#uploader-galerie-nazev").html($("#galerieNadpis" + galerie_id).html());
            
          }
      });          
  }  
  
   function galerieShow (){
      $("#btnGalerieShow").removeClass("btn-outline-primary").addClass("btn-primary");
      $("#btnUsporadejFotky").addClass("btn-outline-primary").removeClass("btn-primary");
      $("#btnUkazFotkyZGalerie").addClass("btn-outline-primary").removeClass("btn-primary");
      $("#virtualFile").removeClass("btn-success").addClass("btn-outline-success");
      $("#btnUploadExecute").addClass("d-none");  
    let galerieInfo =  $("#sadaDetail").attr("dest-folder"),
        info = galerieInfo.split('#'),
        galerie_id = info[0];         
      $.ajax({
          url: "www/uploader/uploader-galerie-show.php",
          type: 'POST',
          dataType: 'HTML',
          data: {
            'id': galerie_id,
          },
          success: function (result) {
            $("#formaDetail").html(result);
          }
      });      
   
   };  

}
</script>