Add edit page for media.

This commit is contained in:
Feufochmar 2021-05-12 17:36:49 +02:00
parent 8a933e55b9
commit 1a100e27d3
2 changed files with 64 additions and 3 deletions

View File

@ -88,6 +88,7 @@
("list" weblet pages:notepad:media-list)
("show/{media}" matching-weblet pages:notepad:media-show)
("new" weblet pages:notepad:media-new)
("edit/{media}" matching-weblet pages:notepad:media-edit)
("delete/{media}" matching-weblet pages:notepad:media-delete)
)
("user" symlink "/user/list"

View File

@ -23,6 +23,7 @@
pages:notepad:media-list
pages:notepad:media-show
pages:notepad:media-new
pages:notepad:media-edit
pages:notepad:media-delete
pages:notepad:user-list
pages:notepad:user-show
@ -391,6 +392,7 @@
(define connected-usr (get-user-from-weblet-parameter param))
(define secured? (check-secured? param))
(define method (weblet-parameter-method param))
(define failed? (equal? "t" (weblet-parameter-ref param 'error #f)))
(cond
( (and connected-usr secured? (eq? method 'get))
; User connected, get method : new media form
@ -400,7 +402,10 @@
#:content
; Display the page as a form
`(article
(form ((action ,(string-append "/media/new"))
,@(if failed?
'("Erreur lors de l'ajout du fichier." (br))
'())
(form ((action "/media/new")
(method "post")
(enctype "multipart/form-data"))
(label ((for "filename")) "Fichier à ajouter") (br)
@ -429,7 +434,7 @@
( #t
; Redirect: upload failed
(redirect-to
(string-append "/media/new")
"/media/new?error=t"
see-other))))
( #t
; Not allowed
@ -437,7 +442,62 @@
; /media/edit/xxx
; Edit a media (move it). User must be logged in.
; TODO
; Get => Form to edit a media
; Post => Process the upload, and show the media
(define (pages:notepad:media-edit param)
(define connected-usr (get-user-from-weblet-parameter param))
(define secured? (check-secured? param))
(define method (weblet-parameter-method param))
(define media (weblet-parameter-ref param 'media #f))
(define file (and media (string-append media-dir "/" media)))
(define has-media? (file-exists? file))
(define image? (ormap (lambda (x) (string-suffix? media x)) '(".png" ".jpg" ".gif" ".jpeg" ".svg")))
(define direct-link (string-append "/media/get/" media))
(define failed? (equal? "t" (weblet-parameter-ref param 'error #f)))
(cond
( (and has-media? connected-usr secured? (eq? method 'get))
; User connected, get method : edit media form
( (pages:template
#:title "Éditer un fichier"
#:author (user-name connected-usr)
#:content
; Display the page as a form
`(article
,@(if failed?
'("Erreur lors du renommage du fichier. Le nom doit être valide." (br))
'())
(form ((action ,(string-append "/media/edit/" media))
(method "post"))
(label ((for "filename")) "Nom du fichier") " "
(input ((id "filename")(name "filename")(type "text")(value ,media))) (br)
(input ((type "submit")
(value "Renommer le fichier")))
)))
param))
( (and has-media? connected-usr secured? (eq? method 'post))
(define filename (weblet-parameter-ref param 'filename #f))
(cond
( (and filename (not (equal? filename "")) (not (equal? filename media)))
; Move file
(rename-file-or-directory
file
(string-append media-dir "/" filename))
; Redirect
(redirect-to
(string-append "/media/show/" filename)
see-other))
( #t
; Redirect: upload failed
(redirect-to
(string-append "/media/edit/" media "?error=t")
see-other))))
( has-media?
; Not allowed
(pages:notepad:error param 'unauthorized))
( #t
; Not found
(pages:notepad:error param 'not-found))))
; /media/delete/xxx
; Remove an existing media. User must be logged in.