styling for multi-file-inputs
This commit is contained in:
parent
aebdd51d4f
commit
e7d31c0efb
@ -14,7 +14,7 @@ CourseEditOk tid@TermIdentifier courseShortHand@Text: Kurs #{termToText ti
|
|||||||
CourseNewDupShort tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} konnte nicht erstellt werden: Es gibt bereits einen anderen Kurs mit dem Kürzel #{courseShortHand} in diesem Semester.
|
CourseNewDupShort tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} konnte nicht erstellt werden: Es gibt bereits einen anderen Kurs mit dem Kürzel #{courseShortHand} in diesem Semester.
|
||||||
CourseEditDupShort tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} konnte nicht geändert werden: Es gibt bereits einen anderen Kurs mit dem Kürzel #{courseShortHand} in diesem Semester.
|
CourseEditDupShort tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} konnte nicht geändert werden: Es gibt bereits einen anderen Kurs mit dem Kürzel #{courseShortHand} in diesem Semester.
|
||||||
FFSheetName: Name
|
FFSheetName: Name
|
||||||
TermCourseListHeading tid@TermIdentifier: Kursübersicht #{termToText tid}
|
TermCourseListHeading tid@TermIdentifier: Kursübersicht #{termToText tid}
|
||||||
TermCourseListTitle tid@TermIdentifier: Kurse #{termToText tid}
|
TermCourseListTitle tid@TermIdentifier: Kurse #{termToText tid}
|
||||||
CourseEditHeading: Kurs editieren/anlegen
|
CourseEditHeading: Kurs editieren/anlegen
|
||||||
CourseEditTitle: Kurs editieren/anlegen
|
CourseEditTitle: Kurs editieren/anlegen
|
||||||
@ -75,3 +75,5 @@ SheetExercise: Aufgabenstellung
|
|||||||
SheetHint: Hinweise
|
SheetHint: Hinweise
|
||||||
SheetSolution: Lösung
|
SheetSolution: Lösung
|
||||||
SheetMarking: Korrekturhinweise
|
SheetMarking: Korrekturhinweise
|
||||||
|
|
||||||
|
MultiFileUploadInfo: (Mehrere Dateien mit Shift oder Strg auswählen)
|
||||||
|
|||||||
@ -9,6 +9,13 @@ $forall FileUploadInfo{..} <- fileInfos
|
|||||||
$# new files
|
$# new files
|
||||||
<input type="file" name=#{fieldName} id=#{fieldId} multiple :req:required="required">
|
<input type="file" name=#{fieldName} id=#{fieldId} multiple :req:required="required">
|
||||||
|
|
||||||
|
<div .file-input__multi-info>
|
||||||
|
_{MsgMultiFileUploadInfo}
|
||||||
|
|
||||||
<div .file-input__unpack>
|
<div .file-input__unpack>
|
||||||
<label for=#{fieldId}_zip>ZIPs entpacken
|
<label for=#{fieldId}_zip>ZIPs automatisch entpacken
|
||||||
<input type=checkbox id=#{fieldId}_zip name=#{fieldName} value=#{unpackZips}>
|
<input type=checkbox id=#{fieldId}_zip name=#{fieldName} value=#{unpackZips}>
|
||||||
|
<span .unpack-zip-info-toggler>?
|
||||||
|
|
||||||
|
$# TODO: make modal available in this scope
|
||||||
|
$# ^{modal ".unpack-zip-info-toggler" (Just "Entpackt zips automatisch nach dem Upload und fügt den Inhalt im Stamm-Verzeichnis ein.")}
|
||||||
|
|||||||
37
templates/multiFileField.lucius
Normal file
37
templates/multiFileField.lucius
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
.file-input__unpack {
|
||||||
|
font-size: .9rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 10px;
|
||||||
|
|
||||||
|
.checkbox {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-input__multi-info {
|
||||||
|
font-size: .9rem;
|
||||||
|
font-style: italic;
|
||||||
|
margin-top: 10px;
|
||||||
|
color: var(--color-fontsec);
|
||||||
|
}
|
||||||
|
|
||||||
|
.unpack-zip-info-toggler {
|
||||||
|
background-color: var(--color-dark);
|
||||||
|
border-radius: 50%;
|
||||||
|
height: 1.5rem;
|
||||||
|
width: 1.5rem;
|
||||||
|
line-height: 1.5rem;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
color: white;
|
||||||
|
display: inline-block;
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-input__list {
|
||||||
|
margin-left: 15px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
@ -6,7 +6,7 @@
|
|||||||
// allows for multiple file uploads with separate inputs
|
// allows for multiple file uploads with separate inputs
|
||||||
window.utils.initializeFileUpload = function(input) {
|
window.utils.initializeFileUpload = function(input) {
|
||||||
var isMulti = input.hasAttribute('multiple');
|
var isMulti = input.hasAttribute('multiple');
|
||||||
var fileList = addFileList();
|
var fileList = isMulti ? addFileList() : null;
|
||||||
var label = addFileLabel();
|
var label = addFileLabel();
|
||||||
|
|
||||||
function renderFileList(files) {
|
function renderFileList(files) {
|
||||||
@ -19,43 +19,45 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function updateLabel(files) {
|
function updateLabel(files) {
|
||||||
if (isMulti) {
|
if (files.length) {
|
||||||
label.innerText = files.length + ' Dateien ausgwählt';
|
if (isMulti) {
|
||||||
|
label.innerText = files.length + ' Dateien ausgwählt';
|
||||||
|
} else {
|
||||||
|
label.innerHTML = files[0].name;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
label.innerHTML = files[0].name;
|
resetFileLabel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function addFileList() {
|
function addFileList() {
|
||||||
var list = document.createElement('ol');
|
var list = document.createElement('ol');
|
||||||
list.classList.add('file-input__list');
|
list.classList.add('file-input__list');
|
||||||
input.parentElement.appendChild(list);
|
var unpackEl = input.parentElement.querySelector('.file-input__unpack');
|
||||||
|
if (unpackEl) {
|
||||||
|
input.parentElement.insertBefore(list, unpackEl);
|
||||||
|
} else {
|
||||||
|
input.parentElement.appendChild(list);
|
||||||
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
function addFileLabel() {
|
function addFileLabel() {
|
||||||
var label = document.createElement('label');
|
var label = document.createElement('label');
|
||||||
label.classList.add('file-input__label');
|
label.classList.add('file-input__label');
|
||||||
// interpolate translated String here
|
|
||||||
label.innerText = 'Datei' + (isMulti ? 'en' : '') + ' auswählen';
|
|
||||||
label.setAttribute('for', input.id);
|
label.setAttribute('for', input.id);
|
||||||
input.parentElement.insertBefore(label, input);
|
input.parentElement.insertBefore(label, input);
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
function addMultiInfo() {
|
function resetFileLabel() {
|
||||||
var info = document.createElement('div');
|
|
||||||
info.classList.add('file-input__info');
|
|
||||||
// interpolate translated String here
|
// interpolate translated String here
|
||||||
info.innerText = '(Mehrere Dateien mit Shift oder Strg auswählen)';
|
label.innerText = 'Datei' + (isMulti ? 'en' : '') + ' auswählen';
|
||||||
input.parentElement.insertBefore(info, input);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// initial setup
|
// initial setup
|
||||||
|
resetFileLabel();
|
||||||
input.classList.add('file-input__input--hidden');
|
input.classList.add('file-input__input--hidden');
|
||||||
if (isMulti) {
|
|
||||||
addMultiInfo();
|
|
||||||
}
|
|
||||||
input.addEventListener('change', function() {
|
input.addEventListener('change', function() {
|
||||||
if (isMulti) {
|
if (isMulti) {
|
||||||
renderFileList(input.files);
|
renderFileList(input.files);
|
||||||
@ -99,6 +101,7 @@
|
|||||||
|
|
||||||
if (!input.parentElement.classList.contains(type)) {
|
if (!input.parentElement.classList.contains(type)) {
|
||||||
var parentEl = input.parentElement;
|
var parentEl = input.parentElement;
|
||||||
|
var siblingEl = input.nextElementSibling;
|
||||||
var wrapperEl = document.createElement('div');
|
var wrapperEl = document.createElement('div');
|
||||||
var labelEl = document.createElement('label');
|
var labelEl = document.createElement('label');
|
||||||
wrapperEl.classList.add(type);
|
wrapperEl.classList.add(type);
|
||||||
@ -106,7 +109,11 @@
|
|||||||
wrapperEl.appendChild(input);
|
wrapperEl.appendChild(input);
|
||||||
wrapperEl.appendChild(labelEl);
|
wrapperEl.appendChild(labelEl);
|
||||||
|
|
||||||
parentEl.appendChild(wrapperEl);
|
if (siblingEl) {
|
||||||
|
parentEl.insertBefore(wrapperEl, siblingEl);
|
||||||
|
} else {
|
||||||
|
parentEl.appendChild(wrapperEl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user