mirror of
https://github.com/grocy/grocy.git
synced 2025-08-14 17:54:40 +00:00
Add user-field-type "file" (#977)
* Add user-field-type "file" * Add userfield-type "picture" * Also limit image height on userfieldsform * Prevent empty userfields (cause warnings in tables after deleting a file) * Show files in dialogs Co-authored-by: Bernd Bestel <bernd@berrnd.de>
This commit is contained in:
committed by
GitHub
parent
318db53818
commit
07beee93a9
@@ -28,6 +28,36 @@ Grocy.Components.UserfieldsForm.Save = function(success, error)
|
||||
jsonData[fieldName] = "1";
|
||||
}
|
||||
}
|
||||
else if (input.attr("type") == "file")
|
||||
{
|
||||
var old_file = input.data('old-file')
|
||||
if (old_file) {
|
||||
Grocy.Api.Delete('files/userfiles/' + old_file, null, null,
|
||||
function (xhr) {
|
||||
Grocy.FrontendHelpers.ShowGenericError('Could not delete file', xhr);
|
||||
});
|
||||
jsonData[fieldName] = "";
|
||||
}
|
||||
if (input[0].files.length > 0){
|
||||
// Files service requires an extension
|
||||
var fileName = RandomString() + '.' + input[0].files[0].name.split('.').reverse()[0];
|
||||
|
||||
jsonData[fieldName] = btoa(fileName) + '_' + btoa(input[0].files[0].name);
|
||||
Grocy.Api.UploadFile(input[0].files[0], 'userfiles', fileName,
|
||||
function (result)
|
||||
{
|
||||
},
|
||||
function (xhr)
|
||||
{
|
||||
Grocy.FrontendHelpers.ShowGenericError('Error while saving, probably this item already exists', xhr.response)
|
||||
}
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
//jsonData[fieldName] = null;
|
||||
}
|
||||
}
|
||||
else if ($(this).hasAttr("multiple"))
|
||||
{
|
||||
jsonData[fieldName] = $(this).val().join(",");
|
||||
@@ -79,6 +109,28 @@ Grocy.Components.UserfieldsForm.Load = function()
|
||||
input.val(value.split(","));
|
||||
$(".selectpicker").selectpicker("render");
|
||||
}
|
||||
if (input.attr('type') == "file")
|
||||
{
|
||||
if (value != null && !value.isEmpty()) {
|
||||
var file_name = atob(value.split('_')[1]);
|
||||
var file_src = value.split('_')[0];
|
||||
input.hide();
|
||||
var file_info = input.siblings('.userfield-file');
|
||||
file_info.removeClass('d-none');
|
||||
file_info.find('a.userfield-current-file')
|
||||
.attr('href', U('/files/userfiles/' + value))
|
||||
.text(file_name);
|
||||
file_info.find('img.userfield-current-file')
|
||||
.attr('src', U('/files/userfiles/' + value + '?force_serve_as=picture&best_fit_width=250&best_fit_height=250'))
|
||||
file_info.find('button.userfield-file-delete').click(
|
||||
function () {
|
||||
file_info.addClass('d-none');
|
||||
input.data('old-file', file_src);
|
||||
input.show();
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
input.val(value);
|
||||
|
Reference in New Issue
Block a user