Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

Index.cshtml 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. @{
  2. Layout = "~/Views/Shared/_Layout.cshtml";
  3. }
  4. @using SecureSharing.Business.Infrastructure
  5. @model MessageModel
  6. <body>
  7. <h1>Share files</h1>
  8. <form method="post" enctype="multipart/form-data" asp-controller="Home" asp-action="CreateMessage" class="share-files-form">
  9. <div class="mb-3">
  10. <label class="label-text">Sharing link avaliability</label>
  11. <div class="button-box row">
  12. <div class="single-button-input col-4">
  13. <input id="OneTime" checked="checked" class="radio-input" type="radio" asp-for="ChosenPeriod" value="@PeriodOfValidity.ONE_TIME">
  14. <label for="OneTime" class="label-available"><span style="color:#FFA463">One</span> Time</label>
  15. </div>
  16. <div class="single-button-input d-none">
  17. <input id="OneHour" class="radio-input" type="radio" asp-for="ChosenPeriod" value="@PeriodOfValidity.ONE_HOUR"/> <label for="OneHour" class="label-available">1 hour</label>
  18. </div>
  19. <div class="single-button-input col-4">
  20. <input id="OneDay" class="radio-input" type="radio" asp-for="ChosenPeriod" value="@PeriodOfValidity.ONE_DAY"/> <label for="OneDay" class="label-available">1 day</label>
  21. </div>
  22. <div class="single-button-input col-4">
  23. <input id="SevenDays" class="radio-input" type="radio" asp-for="ChosenPeriod" value="@PeriodOfValidity.ONE_WEEK"/> <label for="SevenDays" class="label-available">7 days</label>
  24. </div>
  25. </div>
  26. </div>
  27. <div class="mb-3">
  28. <label class="label-text">Message (optional)</label>
  29. <textarea asp-for="Text" class="input-message"></textarea>
  30. </div>
  31. <div class="mb-3">
  32. <label class="label-text">Upload files</label>
  33. <div class="drop-here">
  34. <img class="image-file-upload" src="~/img/file-upload-image.png" alt=""/>
  35. <div class="default-text text-files-upload">
  36. <label for="fileInput" class="btn browse-button">
  37. <span style="color:#0D1C52">Drag and drop files here or</span> browse
  38. </label>
  39. <input asp-for="Files" id="fileInput" type="file" multiple style="display: none"/>
  40. <input asp-for="FilesAsText" id="fileInputAsText" type="text" style="display:none" value="978682e8-3ce7-4258-b731-d027b5b213aa"/>
  41. </div>
  42. </div>
  43. </div>
  44. <div class="mb-3">
  45. <div class="label-text">
  46. Your files
  47. </div>
  48. <div id="filesUploaded">
  49. </div>
  50. </div>
  51. <div class="button-box row">
  52. <div class="mb-3">
  53. <label class="label-text">Anonymous share</label>
  54. <div class="tooltip-div">
  55. <i class="fas fa-info"></i>
  56. <span class="tooltip-label">This indicates that this message will be visible to people outside diligent network.</span>
  57. </div>
  58. <label class="switch">
  59. <input id="Anonymous" type="checkbox" asp-for="Anonymous" value="true">
  60. <span class="slider round"></span>
  61. </label>
  62. </div>
  63. <div class="mb-3">
  64. <label class="label-text">Allow editing</label>
  65. <div class="tooltip-div">
  66. <i class="fas fa-info"></i>
  67. <span class="tooltip-label">This indicates that this message can be edited by everyone.</span>
  68. </div>
  69. <label class="switch">
  70. <input id="AllowEditing" type="checkbox" asp-for="AllowEditing" value="true">
  71. <span class="slider round"></span>
  72. </label>
  73. </div>
  74. </div>
  75. <button class=" btn btn-light share-button" type="submit">Share</button>
  76. </form>
  77. </body>
  78. <script src="~/plugins/jquery/jquery.js" type="text/javascript"></script>
  79. <script type="text/javascript">
  80. let filesUploaded = document.getElementById("filesUploaded");
  81. $('#fileInput').change(function() {
  82. let files = $('#fileInput')[0].files
  83. for (let i = 0; i < files.length; i++){
  84. filesUploaded.innerHTML +='<p>' + files[i].name + '</p>';
  85. }
  86. });
  87. document.getElementById("AllowEditing").onchange = () => {
  88. if (document.getElementById("AllowEditing").checked === true){
  89. document.getElementById("Anonymous").checked = true;
  90. }
  91. };
  92. document.getElementById("Anonymous").onchange = () => {
  93. if (document.getElementById("AllowEditing").checked === true){
  94. document.getElementById("Anonymous").checked = true;
  95. }
  96. };
  97. let selectedFiles;
  98. $(document).ready(() => {
  99. let box;
  100. box = document.body;
  101. box.addEventListener("dragenter", OnDragEnter, false);
  102. box.addEventListener("dragover", OnDragOver, false);
  103. box.addEventListener("drop", OnDrop, false);
  104. })
  105. function OnDragEnter(e) {
  106. e.stopPropagation();
  107. e.preventDefault();
  108. }
  109. function OnDragOver(e) {
  110. e.stopPropagation();
  111. e.preventDefault();
  112. }
  113. function OnDrop(e) {
  114. e.stopPropagation();
  115. e.preventDefault();
  116. let selectedFiles = e.dataTransfer.files;
  117. let formData = new FormData();
  118. let fileInput = document.getElementById("fileInputAsText");
  119. for (let i = 0; i < selectedFiles.length; i++){
  120. formData.append(selectedFiles[i].name, selectedFiles[i]);
  121. }
  122. $.ajax({
  123. url: '/Home/UploadTemporaryFile',
  124. type: "POST",
  125. contentType: false,
  126. processData: false,
  127. data: formData,
  128. success: function (result) {
  129. for (let i = 0; i < selectedFiles.length; i++){
  130. fileInput.value += result + ':' + selectedFiles[i].name + ';';
  131. filesUploaded.innerHTML += '<p>' + selectedFiles[i].name + '</p>';
  132. }
  133. },
  134. error: function (err) {
  135. console.log(err)
  136. }
  137. });
  138. }
  139. </script>