Add edit page for media.
This commit is contained in:
parent
8a933e55b9
commit
1a100e27d3
1
main.rkt
1
main.rkt
|
@ -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"
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue