templates/project/crud/galleryscript.html.twig line 1

Open in your IDE?
  1. html = '<div class="input-group mb-3">';
  2. html += '<input type="text" class="form-control" name="Page[Image]" id="Projet_recaptchaConfigFile" data-bs-toggle="modal" data-bs-target="#modal-gallery">';
  3. // html += '<input type="text" id="Projet_recaptchaConfigFile" name="Page[image]" data-ea-align="left" class="form-control">';
  4. html += '<label class="input-group-text" for="Projet_recaptchaConfigFile">Upload</label>';
  5. html += '</div>';
  6. //$("#Projet_recaptchaConfigFile").parent().html(html);
  7. var indexOfPoint,
  8.     indexOf,
  9.     element,
  10.     dropArea,
  11.     dragText,
  12.     button,
  13.     input,
  14.     nfile,
  15.     fileType,
  16.     validExtensions,
  17.     fileReader,
  18.     fileURL,
  19.     mvalidExtension;
  20. $("#Projet_recaptchaConfigFile").attr('data-bs-toggle', 'modal');
  21. $("#Projet_recaptchaConfigFile").attr('data-bs-target', '#modal-gallery');
  22. $("#Projet_recaptchaConfigFile").prop('readonly', true);
  23. $("#Projet_recaptchaConfigFile").attr('onclick', 'getdirfiles(document.getElementById("Projet_recaptchaConfigFile").value, "nnvalid")');
  24. $("<div class='input-group-prepend' style='margin-bottom: -3%; margin-left: 100%;'><i class='fa fa-trash-o mx-2' style='cursor: pointer;' onclick='trashgall()'></i></div>").insertBefore("#Projet_recaptchaConfigFile");
  25. $('#Projet_recaptchaConfigFile').keypress(function (e) {
  26.     return false;
  27. });
  28. // onclick="sendCode('', 'text-')"
  29. function getdirfiles(dirname, valid) {
  30.     selected = '';
  31.     indexOfPoint = dirname.lastIndexOf(".");
  32.     if (indexOfPoint >= 0) {
  33.         const substring = dirname.slice(indexOfPoint, dirname.length);
  34.         if (dirname.includes(substring)) {
  35.             indexOf = dirname.lastIndexOf("/");
  36.             selected = dirname.slice(indexOf, dirname.length);
  37.             dirname = dirname.replace(selected, '') + '/';
  38.             // "data-123".replace(/data-/g,'');
  39.         }
  40.     }
  41.     if ('{{entity.instance.switchEnLigne}}') {
  42.         $.ajax({
  43.             url: "{{ path('get_dirs_content_projet') }}",
  44.             type: 'POST',
  45.             timeout: 15000,
  46.             data: {
  47.                 'dirname': dirname,
  48.                 'selected': selected,
  49.                 'validinput': valid,
  50.                 'imageFtpServer': '{{entity.instance.imageFtpServerEnligne}}',
  51.                 'imageFtpLogin': '{{entity.instance.imageFtpLoginEnligne}}',
  52.                 'imageFtpMdp': '{{entity.instance.imageFtpMdpEnligne}}',
  53.                 'imageHttpServer': '{{entity.instance.imageHttpServerEnligne}}',
  54.             },
  55.             dataType: 'json',
  56.             success: function (data) {
  57.                 $('#valdircontent').html(data.content);
  58.                 // dirPathNiveauIndicator
  59.                 $('#dirPathNiveauIndicator').html(data.niveauindicator);
  60.             }
  61.         });
  62.     } else {
  63.         $.ajax({
  64.             url: "{{ path('get_dirs_content_projet') }}",
  65.             type: 'POST',
  66.             timeout: 15000,
  67.             data: {
  68.                 'dirname': dirname,
  69.                 'selected': selected,
  70.                 'validinput': valid,
  71.                 'imageFtpServer': '{{entity.instance.imageFtpServer}}',
  72.                 'imageFtpLogin': '{{entity.instance.imageFtpLogin}}',
  73.                 'imageFtpMdp': '{{entity.instance.imageFtpMdp}}',
  74.                 'imageHttpServer': '{{entity.instance.imageHttpServer}}',
  75.             },
  76.             dataType: 'json',
  77.             success: function (data) {
  78.                 $('#valdircontent').html(data.content);
  79.                 // dirPathNiveauIndicator
  80.                 $('#dirPathNiveauIndicator').html(data.niveauindicator);
  81.             }
  82.         });
  83.     }
  84. }
  85. function selectedimage(obj) {
  86.     element = $(obj);
  87.     $('.selectedFtpImg').css("border", "0px");
  88.     $('.selectedFtpImg').css("border-color", "");
  89.     $('.selectedFtpImg').css("background-color", "white");
  90.     element.css("border", "1px solid #5656b5;");
  91.     element.css("border-color", "#5656b5");
  92.     element.css("background-color", "#5656b5");
  93.     $('#Projet_recaptchaConfigFile').val(element.attr('data-dir'));
  94.     rescheckext = checkcurrentExtProjet($('#Projet_recaptchaConfigFile').val());
  95.     if (rescheckext == 'file') {
  96.         var setrecaptchafile = '<img id="imagepreviewtoremove" src="images/fileicon.webp" class="img-fluid mt-2" style="max-height: 100px;">';
  97.     } else if (rescheckext == 'json') {
  98.         var setrecaptchafile = '<img id="imagepreviewtoremove" src="images/jsonfileicon.png" class="img-fluid mt-2" style="max-height: 100px;">';
  99.     } else {
  100.         var setrecaptchafile = '<img id="imagepreviewtoremove" src="' + element.attr('data-racine') + $('#Projet_recaptchaConfigFile').val() + '" class="img-fluid w-100 mt-2" style="max-height: 100px;">';
  101.     }
  102.     $("#imagepreviewtoremove").remove();
  103.     $(".setrecaptchafile").append(setrecaptchafile);
  104. }
  105. // clickedImg
  106. // image preview
  107. const imgphtml = $(".setrecaptchafile");
  108. rescheckext = checkcurrentExtProjet($('#Projet_recaptchaConfigFile').val());
  109. if (rescheckext == 'file') {
  110.     var setrecaptchafile = '<img id="imagepreviewtoremove" src="images/fileicon.webp" class="img-fluid mt-2" style="max-height: 100px;">';
  111. } else if (rescheckext == 'json') {
  112.     var setrecaptchafile = '<img id="imagepreviewtoremove" src="images/jsonfileicon.png" class="img-fluid mt-2" style="max-height: 100px;">';
  113. } else {
  114.     if ('{{entity.instance.switchEnLigne}}') {
  115.         var setrecaptchafile = '<img id="imagepreviewtoremove" src="{{entity.instance.imageHttpServerEnligne}}' + $('#Projet_recaptchaConfigFile').val() + '" class="img-fluid w-100 mt-2" style="max-height: 100px;">';
  116.     } else {
  117.         var setrecaptchafile = '<img id="imagepreviewtoremove" src="{{entity.instance.imageHttpServer}}' + $('#Projet_recaptchaConfigFile').val() + '" class="img-fluid w-100 mt-2" style="max-height: 100px;">';
  118.     }
  119.     
  120. }
  121. if ($('#Projet_recaptchaConfigFile').val() != '' && $('#Projet_recaptchaConfigFile').val() != undefined) {
  122.     imgphtml.append(setrecaptchafile);
  123. }
  124. $(".setrecaptchafile").change(function () {
  125.     $("#imagepreviewtoremove").remove();
  126. });
  127. // reset text in image
  128. function trashgall() {
  129.     $('#Projet_recaptchaConfigFile').val('');
  130.     $("#imagepreviewtoremove").remove();
  131. }
  132. // umpload image script
  133. submit = false;
  134. // selecting all required elements
  135. dropArea = document.querySelector(".drag-area");
  136. dragText = dropArea.querySelector("header");
  137. button = dropArea.querySelector("button");
  138. input = dropArea.querySelector("input");
  139. nfile; // this is a global variable and we'll use it inside multiple functions
  140. button.onclick = () => {
  141.     input.click(); // if user click on the button then the input also clicked
  142. };
  143. input.addEventListener("change", function () { // getting user select file and [0] this means if user select multiple files then we'll select only the first one
  144.     nfile = this.files[0];
  145.     dropArea.classList.add("active");
  146.     //file.forEach(showFile);
  147.     showFile(); // calling function
  148. });
  149. // If user Drag File Over DropArea
  150. dropArea.addEventListener("dragover", (event) => {
  151.     event.preventDefault(); // preventing from default behaviour
  152.     dropArea.classList.add("active");
  153.     dragText.textContent = "Libérer pour télécharger le fichier";
  154. });
  155. // If user leave dragged File from DropArea
  156. dropArea.addEventListener("dragleave", () => {
  157.     dropArea.classList.remove("active");
  158.     dragText.textContent = "Drag & Drop pour télécharger le fichier";
  159. });
  160. // If user drop File on DropArea
  161. dropArea.addEventListener("drop", (event) => {
  162.     event.preventDefault();
  163.     // preventing from default behaviour
  164.     // getting user select file and [0] this means if user select multiple files then we'll select only the first one
  165.     nfile = event.dataTransfer.files[0];
  166.     input.file = event.dataTransfer.files[0];
  167.     //file.forEach(showFile);
  168.     showFile(); // calling function
  169. });
  170. function showFile() {
  171.     fileType = nfile.type; //getting selected file type
  172.     validExtensions = ["application/json"]; //adding some valid image extensions in array
  173.     // alert(fileType);
  174.     if (validExtensions.includes(fileType)) { //if user selected file is an image file
  175.         fileReader = new FileReader(); //creating new FileReader object
  176.         fileReader.onload = () => {
  177.             fileURL = fileReader.result; //passing user file source in fileURL variable
  178.             // UNCOMMENT THIS BELOW LINE. I GOT AN ERROR WHILE UPLOADING THIS POST SO I COMMENTED IT
  179.             // imgTag = `<img src="${fileURL}" alt="image">`; //creating an img tag and passing user selected file source inside src attribute
  180.             // dropArea.innerHTML = imgTag; //adding that created img tag inside dropArea container
  181.             imgTag = `Fichier déposé avec succès  <br>`;
  182.             filename = '<img src="' + fileURL + '" data-name="' + nfile.name + '" id="jsonToUpload" class="h-100 d-none">';
  183.             filename += '<img src="images/jsonfileicon.png" data-name="' + nfile.name + '" id="imageToUpload" class="h-100">';
  184.             $("#uploadedimgdisplay").html(filename);
  185.             $("#dropImageArea").removeClass("d-none");
  186.             $("#dragArea").addClass("d-none");
  187.         }
  188.         fileReader.readAsDataURL(nfile);
  189.     } else {
  190.         /* alert("This is not an Image File!");
  191.         dropArea.classList.remove("active");
  192.         dragText.textContent = "Drag & Drop to Upload File"; */
  193.         //alert("Ceci n'est pas un Image!");
  194.         dropArea.classList.remove("active");
  195.         dragText.textContent = "Drag & Drop pour télécharger le fichier";
  196.         submit = false;
  197.     }
  198. }
  199. function mySubmitFunctionbtn(e) {
  200.     submit = true;
  201.     document.getElementById("mform_id").submit();
  202. }
  203. function mySubmitFunction(e) {
  204.     if (!submit) {
  205.         e.preventDefault();
  206.     }
  207. }
  208. function setuploadimgvalue() {
  209.     /* console.log($("#imageToUpload").attr('src'));
  210.     console.log($("#imageToUpload").attr('data-name')); */
  211.     $('#Projet_recaptchaConfigFile').val('/upload/' + $("#imageToUpload").attr('data-name'));
  212.     rescheckext = checkcurrentExtProjet($("#imageToUpload").attr('src'));
  213.     if (rescheckext == 'file') {
  214.         var setrecaptchafile = '<img id="imagepreviewtoremove" src="images/fileicon.webp" class="img-fluid mt-2" style="max-height: 100px;">';
  215.     } else if (rescheckext == 'json') {
  216.         var setrecaptchafile = '<img id="imagepreviewtoremove" src="images/jsonfileicon.png" class="img-fluid mt-2" style="max-height: 100px;">';
  217.     } else {
  218.         var setrecaptchafile = '<img id="imagepreviewtoremove" src="' + $("#imageToUpload").attr('src') + '" class="img-fluid mt-2" style="max-height: 100px;">';
  219.     }
  220.     $("#imagepreviewtoremove").remove();
  221.     $(".setrecaptchafile").append(setrecaptchafile);
  222.     if ('{{entity.instance.switchEnLigne}}') {
  223.         $.ajax({
  224.             url: "{{ path('get_image_projet_upload_json') }}",
  225.             type: 'POST',
  226.             timeout: 15000,
  227.             data: {
  228.                 'file': $("#jsonToUpload").attr('src'),
  229.                 'name': $("#jsonToUpload").attr('data-name'),
  230.                 'imageFtpServer': '{{entity.instance.imageFtpServerEnligne}}',
  231.                 'imageFtpLogin': '{{entity.instance.imageFtpLoginEnligne}}',
  232.                 'imageFtpMdp': '{{entity.instance.imageFtpMdpEnligne}}',
  233.                 'imageHttpServer': '{{entity.instance.imageHttpServerEnligne}}',
  234.             },
  235.             dataType: 'json',
  236.             success: function (data) {
  237.                 // console.log(data.content);
  238.                 // console.log();
  239.                 // console.log(data.msg);
  240.             }
  241.         });
  242.     } else {
  243.         $.ajax({
  244.             url: "{{ path('get_image_projet_upload_json') }}",
  245.             type: 'POST',
  246.             timeout: 15000,
  247.             data: {
  248.                 'file': $("#jsonToUpload").attr('src'),
  249.                 'name': $("#jsonToUpload").attr('data-name'),
  250.                 'imageFtpServer': '{{entity.instance.imageFtpServer}}',
  251.                 'imageFtpLogin': '{{entity.instance.imageFtpLogin}}',
  252.                 'imageFtpMdp': '{{entity.instance.imageFtpMdp}}',
  253.                 'imageHttpServer': '{{entity.instance.imageHttpServer}}',
  254.             },
  255.             dataType: 'json',
  256.             success: function (data) {
  257.                 // console.log(data.content);
  258.                 // console.log();
  259.                 // console.log(data.msg);
  260.             }
  261.         });
  262.     }
  263. }
  264. function resetuploadvalues() {
  265.     $("#dropImageArea").addClass("d-none");
  266.     $("#dragArea").removeClass("d-none");
  267.     $("#imageToUpload").attr("src", "");
  268. }
  269. function getFileExtension(filename) {
  270.     var ext = /^.+\.([^.]+)$/.exec(filename);
  271.     return ext == null ? "" : ext[1];
  272. }
  273. function checkImageGalleyExt() {
  274.     mvalidExtension = ["jpg",
  275.         "jpeg", "bmp",
  276.         "gif", "png",
  277.         "apng", "webp",
  278.         "ico", "icon", "cur",
  279.         "jfif", "pjpeg",
  280.         "pjp", "svg"];
  281.     $('[id=imagegellery]').each(function () {
  282.         // console.log($(this).attr("src"));
  283.         // console.log(mvalidExtension.includes(getFileExtension($(this).attr("src"))));
  284.         // console.log(getFileExtension($(this).attr("src")));
  285.         if (getFileExtension($(this).attr("src")) == 'json') {
  286.             $(this).attr("src", "images/jsonfileicon.png");
  287.             $(this).css("width", "80px");
  288.         }
  289.         if (!mvalidExtension.includes(getFileExtension($(this).attr("src")))) {
  290.             $(this).attr("src", "images/fileicon.webp");
  291.             $(this).css("width", "80px");
  292.         }
  293.     });
  294. }
  295. function checkcurrentExtProjet(idtocheck) {
  296.     mvalidExtension = ["jpg",
  297.         "jpeg", "bmp",
  298.         "gif", "png",
  299.         "apng", "webp",
  300.         "ico", "icon", "cur",
  301.         "jfif", "pjpeg",
  302.         "pjp", "svg"];
  303.     if (getFileExtension(idtocheck) == 'json') {
  304.         return 'json';
  305.     } else if (mvalidExtension.includes(getFileExtension(idtocheck))) {
  306.         return 'image';
  307.     } else {
  308.         return 'file';
  309.     }
  310. }