yavsc/src/Yavsc.Org/Views/Shared/_DropFiles.cshtml

84 lines
2.2 KiB
Text
Raw Normal View History

2016-05-17 18:22:18 +02:00
@section header{
<style>
.box__dragndrop,
.box__uploading,
.box__success,
.box__error {
display: none;
}
.box.has-advanced-upload {
background-color: white;
outline: 2px dashed black;
outline-offset: -10px;
}
.box.has-advanced-upload .box__dragndrop {
display: inline;
}
.box.is-dragover {
background-color: grey;
}
</style>
2026-06-14 15:47:28 +01:00
<link rel="stylesheet" href="~/css/main/dropzone.min.css" asp-append-version="true"/>
<link rel="stylesheet" href="~/css/main/dropzone-basic.min.css" asp-append-version="true"/>
refac: separate front assets into esbuild bundles Sort ~50 Mo de libs tierces hors du repo et regroupe le code front en 6 bundles thématiques + 2 assets statiques. Bundles produits par esbuild : - core.bundle.min.js : jQuery + jQuery UI + Bootstrap 4 + validation + tout le code applicatif 'core' (site, signout, signin, input-lib, md-helpers, audiovideoinput, parallax, google.geocode, google-geoloc). Chargé par _Layout.cshtml. - chat.bundle.min.js : core subset (sans Bootstrap) + chat.js + comment.js (SignalR client chargé séparément, voir plus bas) - dropzone.bundle.min.js : jQuery + dropzone + yavsc-remote-fs - datetime.bundle.min.js : jQuery + jQuery UI + eonasdan datetimepicker + jquery-timepicker - timepicker.bundle.min.js : jQuery + jQuery UI + jquery-timepicker - quill.bundle.min.js : Quill rich text editor Assets statiques (non bundlés, copiés depuis node_modules) : - signalr.min.js : client SignalR 2.x (legacy server) - moment-with-locales.min.js : moment + 137 locales (require dynamique non résolvable statiquement par esbuild) CSS vendor copiées comme assets statiques vers wwwroot/css/ : bootstrap.min.css, jquery-ui.min.css, dropzone.min.css, dropzone-basic.min.css, bootstrap-datetimepicker.min.css, jquery.timepicker.css Exception gitignore : jonthornton-Datepair/jquery.datepair.min.js n'est pas sur npm, conservé comme asset statique sous wwwroot/lib/jonthornton-Datepair/ (téléchargé depuis upstream). Vues Razor mises à jour (15 fichiers) pour pointer vers les bundles et les CSS vendor. Suppression de la majorité de wwwroot/lib/ (1300+ fichiers). Suppression des jquery*.js, quill.js, showdown.js, to-markdown.js, jquery.signalR-2.2.1.js, dropzone.js et de leurs .min.js associés. 'jquery-datepair' et 'jquery-ui-map' non publiés sur npm : - jquery-ui-map n'est utilisé nulle part dans le repo (vérifié), la dépendance est purement historique. - datepair reste en static sous wwwroot/lib/jonthornton-Datepair/.
2026-06-14 14:11:33 +01:00
<script src="~/js/dropzone.bundle.min.js" asp-append-version="true"></script>
2016-05-17 18:22:18 +02:00
}
@section scripts{
<script>
$(document).ready(function(){
var isAdvancedUpload = function() {
var div = document.createElement('div');
return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && 'FormData' in window && 'FileReader' in window;
}();
var $form = $('.box');
if (isAdvancedUpload) {
$form.addClass('has-advanced-upload');
}
if (isAdvancedUpload) {
2023-03-20 09:13:16 +00:00
var droppedFiles = "false";
2016-05-17 18:22:18 +02:00
$form.on('drag dragstart dragend dragover dragenter dragleave drop', function(e) {
e.preventDefault();
e.stopPropagation();
})
.on('dragover dragenter', function() {
$form.addClass('is-dragover');
})
.on('dragleave dragend drop', function() {
$form.removeClass('is-dragover');
})
.on('drop', function(e) {
droppedFiles = e.originalEvent.dataTransfer.files;
});
}
$form.on('submit', function(e) {
if ($form.hasClass('is-uploading')) return false;
$form.addClass('is-uploading').removeClass('is-error');
if (isAdvancedUpload) {
// ajax for modern browsers
} else {
// ajax for legacy browsers
}
});
});
</script>
}
<form class="box" method="post" action="~/UserFiles/Create" enctype="multipart/form-data">
<div class="box__input">
<input class="box__file" type="file" name="files[]" id="file" data-multiple-caption="{count} files selected" multiple />
<label for="file"><strong>Choose a file</strong><span class="box__dragndrop"> or drag it here</span>.</label>
<button class="box__button" type="submit">Upload</button>
</div>
<div class="box__uploading">Uploading&hellip;</div>
<div class="box__success">Done!</div>
<div class="box__error">Error! <span></span>.</div>
2023-03-20 09:13:16 +00:00
</form>