cms.document.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. <?php
  2. if (core::ifGet("id") == FALSE and access::ifAccesss("add-document") == FALSE) {
  3. get::page("unknow");
  4. exit();
  5. }
  6. if (core::getGet("id") == NULL) {
  7. $titre = "Ajouter un document";
  8. $id_form = '<input type="hidden" name="id" value="add">';
  9. $submit = "Ajouter ce nouveau document";
  10. $document = session::getTemp("document");
  11. } else {
  12. $datas = document::get(core::getGet("id"));
  13. $document = $datas["document"];
  14. $files = $datas["files"];
  15. if (empty($document["id"])) {
  16. get::page("unknow");
  17. exit();
  18. }
  19. $id_form = '<input type="hidden" name="id" value="' . $document["id"] . '">';
  20. $submit = "Modifier ce document";
  21. $badgeCSS = " font-size:0.4em; margin-top:-5px;";
  22. $titre = "[#" . $document["id"] . "] " . $document["titre"];
  23. }
  24. if (core::isDebug()) {
  25. debug::log($datas, "Données brutes");
  26. }
  27. $userTags = user::getUserById(session::getId())["tags"];
  28. ?>
  29. <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
  30. <h2 class="bd-title" id="content">
  31. <span><?php echo $titre ?></span>
  32. </h2>
  33. </header>
  34. <?php
  35. if (core::ifGet("add")) {
  36. $labelFil = "Ajouter un document";
  37. $lienFil = "/add-document.html";
  38. } else {
  39. $labelFil = "[#" . $document["id"] . "] " . $document["titre"];
  40. $lienFil = "/document-" . core::getGet("id") . ".html";
  41. }
  42. echo core::filAriane(array(
  43. "current" => $labelFil,
  44. "arbo" => array(
  45. "Factures" => NULL,
  46. "Listes des documents" => "/documents.html",
  47. $labelFil => $lienFil
  48. )
  49. ));
  50. if (isset($document["id"])) {
  51. ?>
  52. <div style="float:right; margin-top: -60px;">
  53. <a href="/submit.php?from=document-delete&id=<?php echo $document["id"] ?>" style="color: #dc3545; text-decoration:none;" onclick="return confirm('Voulez-vous supprimer ce document ?')"><button type="submit" class="btn btn-outline-danger btn-sm"><span data-feather="trash-2"></span> Supprimer</button></a>
  54. </div>
  55. <?php
  56. }
  57. ?>
  58. <link rel="stylesheet" href="css/dragAndDrop.css">
  59. <form id="form-document" method="post" action="/submit.php" enctype="multipart/form-data" onsubmit="return(false);">
  60. <div class="row">
  61. <div class="col">
  62. <input type="hidden" name="from" value="document">
  63. <?php echo $id_form; ?>
  64. <?php $_titre = (isset($document["titre"])) ? $document["titre"] : NULL; ?>
  65. <div class="form-group">
  66. <label>Titre</label>
  67. <input type="text" class="form-control" value="<?php core::printFormValue($_titre) ?>" name="titre" placeholder="" required>
  68. </div>
  69. <br />
  70. <?php
  71. $_type_document = (isset($document["id_type"])) ? $document["id_type"] : NULL;
  72. $_label_type_document = document::getTypes();
  73. ?>
  74. <div class="form-group">
  75. <label>Type de document</label>
  76. <select name="id_type" class="form-select">
  77. <option value=""></option>
  78. <option value="1" <?php core::printFormSelectOption($_type_document, 1) ?>><?php echo $_label_type_document[1]["label"] ?></option>
  79. <option value="2" <?php core::printFormSelectOption($_type_document, 2) ?>><?php echo $_label_type_document[2]["label"] ?></option>
  80. <option value="3" <?php core::printFormSelectOption($_type_document, 3) ?>><?php echo $_label_type_document[3]["label"] ?></option>
  81. <option value="0" <?php core::printFormSelectOption($_type_document, 0) ?>><?php echo $_label_type_document[0]["label"] ?></option>
  82. </select>
  83. </div>
  84. <br />
  85. <?php $_tagsSupplier = (isset($document["tagsSupplier"])) ? $document["tagsSupplier"] : NULL; ?>
  86. <div class="form-group">
  87. <label>Tags associés</label>
  88. <input type="text" value="<?php core::printFormValue($_tagsSupplier) ?>" name="tagsSupplier" id="tagsSupplier" />
  89. </div>
  90. <br />
  91. <?php $_date = (isset($document["date"])) ? $document["date"] : NULL; ?>
  92. <div class="form-group">
  93. <label>Date associée à ce document</label>
  94. <input type="date" class="form-control" name="date" value="<?php core::printFormValue($_date) ?>" placeholder="" required>
  95. </div>
  96. <br />
  97. <?php $_deadline = (isset($document["deadline"])) ? $document["deadline"] : NULL; ?>
  98. <div class="form-group">
  99. <label>Date limite de traitement</label>
  100. <input type="date" class="form-control" name="deadline" value="<?php core::printFormValue($_deadline) ?>" placeholder="" required>
  101. </div>
  102. <br />
  103. <?php $_description = (isset($document["description"])) ? $document["description"] : NULL; ?>
  104. <div class="form-group">
  105. <label>Description et commentaires</label>
  106. <textarea class="form-control" name="description" style="height:100%;"><?php core::printFormValue($_description) ?></textarea>
  107. </div>
  108. <br />
  109. <?php $_tagsUser = (isset($document["tagsUser"])) ? $document["tagsUser"] : NULL; ?>
  110. <div class="form-group">
  111. <label>Attribution</label>
  112. <input type="text" value="<?php core::printFormValue($_tagsUser) ?>" name="tagsUser" id="tagsUser" />
  113. </div>
  114. <br />
  115. <?php if (isset($files[0]["id"])) { ?>
  116. <div style="border:1px #CCCCCC solid; background-color:#F6F6F6; padding:20px;">
  117. <?php if (isset($document) and tags::compareUserDocument($userTags, $document["tagsUser"]) == TRUE) {
  118. $checkDone = (isset($document["id_user_done"])) ? " checked disabled" : NULL;
  119. $checkText = (isset($document["id_user_done"])) ? "Ce document a été traité par " . $document["doneUser"] . " le " . $document["date_done"] : "Déclarer ce document comme traité.";
  120. ?>
  121. <div class="form-check form-switch">
  122. <input class="form-check-input" style="width:40px; height:20px;" type="checkbox" name="done" id="doneDocument" <?php echo $checkDone ?>>
  123. <label class="form-check-label" style="font-size:larger; margin-left:10px;" for="doneDocument" id="doneDocumentTxt"><?php echo $checkText ?></label>
  124. </div>
  125. <br />
  126. <?php } ?>
  127. <?php document::printAttachement($files); ?>
  128. <div class="file-drop-area">
  129. <span class="choose-file-button">Ajouter une pièce jointe</span>
  130. <span class="file-message">ou drag & drop</span>
  131. <input id="attachement-document" class="import-excel" name="attachement-document" type="file" onchange="dargAndDropAttachment()">
  132. </div>
  133. </div>
  134. <br />
  135. <?php } ?>
  136. </div>
  137. <div class="col">
  138. <?php if (empty($files[0]["id"])) { ?>
  139. <div class="file-drop-area" style="margin-top:22px;" id="file-document-import">
  140. <span class="choose-file-button">Choisissez votre document</span>
  141. <span class="file-message">ou drag & drop</span>
  142. <input id="document-import" class="import-excel" name="document-import" type="file" onchange="dargAndDrop()" required>
  143. </div>
  144. <br />
  145. <?php } else {
  146. $heigh = (mime_content_type(file::download($files[0]["id"], DIR_DATAS_DOCS)) == "application/pdf") ? "height:110vh;" : NULL;
  147. echo ' <div style="margin-top:22px;">
  148. <embed src="/document.php?id=' . $files[0]["id"] . '" style="width:100%; margin-top:10px;' . $heigh . '" /></embed>
  149. </div><br />
  150. ';
  151. }
  152. ?>
  153. </div>
  154. </div>
  155. <input class="btn btn-primary btn-lg" style="width: 100%;" type="button" value="<?php echo $submit ?>" onclick="validateAndSubmit()">
  156. <br /><br />
  157. </form>
  158. <script>
  159. function validateAndSubmit() {
  160. const form = document.getElementById('form-document');
  161. const requiredFields = form.querySelectorAll('[required]');
  162. let allFieldsFilled = true;
  163. requiredFields.forEach(field => {
  164. if (!field.value.trim()) {
  165. alert(field.name);
  166. if (field.name === "document-import") {
  167. const fileDoc = document.getElementById('file-document-import');
  168. fileDoc.style.borderColor = 'red';
  169. }
  170. allFieldsFilled = false;
  171. field.style.borderColor = 'red';
  172. } else {
  173. field.style.borderColor = '';
  174. if (typeof fileDoc !== 'undefined' && fileDoc !== null) {
  175. fileDoc.style.borderColor = '';
  176. }
  177. }
  178. });
  179. if (allFieldsFilled) {
  180. form.submit();
  181. }
  182. }
  183. function dargAndDrop() {
  184. var fileName = $("#document-import").val().split('\\').pop();
  185. $(".file-message").text($(".file-message").text().replace("ou drag & drop", fileName));
  186. }
  187. function dargAndDropAttachment() {
  188. var fileName = $("#attachement-document").val().split('\\').pop();
  189. $(".file-message").text($(".file-message").text().replace("ou drag & drop", fileName));
  190. }
  191. function deleteAttachment(id){
  192. const elementsCadre = $('#attach-' + id);
  193. const elementsAlerte = $('#select-attach-' + id);
  194. const elementsButton = $('#button-attach-' + id);
  195. if($('#del-jquery-' + id).length) {
  196. const elementsRevert = $('#del-jquery-' + id);
  197. elementsCadre.css('background-color', '');
  198. elementsAlerte.html('');
  199. elementsButton.html('<i class="bi bi-trash"></i>');
  200. } else {
  201. elementsCadre.css('background-color', '#f8d7da');
  202. elementsAlerte.html('Ce document sera supprimé à la validation du formulaire.<input id="del-jquery-' + id + '" type="hidden" name="delete-attachement[]" value="' + id + '">');
  203. elementsButton.html('<i class="bi bi-x-square-fill"></i>');
  204. }
  205. }
  206. function upperCase(input) {
  207. input.value = input.value.toUpperCase();
  208. }
  209. $(document).ready(function() {
  210. $('#tagsUser').inputTags({
  211. autocomplete: {
  212. values: <?php echo tags::getJquery(1) ?>,
  213. only: true
  214. },
  215. max: 3
  216. });
  217. $('#tagsSupplier').inputTags({
  218. autocomplete: {
  219. values: <?php echo tags::getJquery(2) ?>
  220. },
  221. max: 3
  222. });
  223. });
  224. </script>