@ -546,7 +546,6 @@
( destructuring-bind
( &key title page-content authenticity-token &allow-other-keys )
( utils:request-params ( lack.request:request-body-parameters ningle:*request* ) )
( format t "~a" page-content )
( cond ( ( not ( string= authenticity-token ( auth:csrf-token ) ) )
` ( , +forbidden+ ( :content-type "text/plain" ) ( "Denied" ) ) )
( t ( hermetic:auth
@ -636,7 +635,6 @@
( destructuring-bind
( &key slug page-content authenticity-token &allow-other-keys )
( utils:request-params ( lack.request:request-body-parameters ningle:*request* ) )
( format t "~a" page-content )
( cond ( ( not ( string= authenticity-token ( auth:csrf-token ) ) )
` ( , +forbidden+ ( :content-type "text/plain" ) ( "Denied" ) ) )
( t ( hermetic:auth
@ -791,7 +789,7 @@
( nera:add-storage-file file-name
( utils:slugify file-name )
( caddr storage-file ) )
( utils:create-thumbnail ( utils:slugify file-name ) )
( utils:create-thumbnail "media" ( utils:slugify file-name ) )
( utils:set-alert "File uploaded." )
( redirect "/storage/manage" ) ) )
;; Not Authorised
@ -824,7 +822,7 @@
( nera:add-storage-file ( caddr item )
( utils:slugify ( caddr item ) )
( cadddr item ) )
( utils:create-thumbnail ( utils:slugify ( caddr item ) ) ) )
( utils:create-thumbnail "media" ( utils:slugify ( caddr item ) ) ) )
( utils:set-alert "Multi-File upload complete." )
( redirect "/storage/manage" ) ) )
;; Not Authorised
@ -890,6 +888,7 @@
( null ( nera:get-storage-file :slug slug ) ) )
( utils:set-alert "Unable to find entry in database. Deleted file from system." )
( storage:remove-file "" "media" slug )
;; Delete thumbnail if there is one (for image files only)
( when ( storage:file-exists-p
"" "media" ( format nil "thumbnail-~a" slug ) )
( storage:remove-file
@ -916,6 +915,110 @@
( progn ( utils:set-alert "You are not authorised to delete page." )
( redirect "/login" ) ) ) ) ) ) )
( defroute ( "/archive" :method :GET ) ( )
( let ( ( alert ( utils:get-and-reset-alert ) ) )
( render #P"archive.html"
( append ( if ( hermetic:logged-in-p )
( auth:auth-user-data ) )
` ( :alert , alert
:system-data , ( nera:system-data )
:archive-entries , ( nera:get-all-archive-entries ) ) ) ) ) )
( defroute ( "/view/archive/:slug" :method :GET ) ( &key slug )
( format nil "Page not implemented" ) )
;; (let ((alert (utils:get-and-reset-alert)))
;; (if (storage:file-exists-p "" "pages" slug)
;; (render #P"archive.html"
;; (append (if (hermetic:logged-in-p)
;; (auth:auth-user-data))
;; `(:alert ,alert
;; :db-data ,(nera:get-page slug)
;; :system-data ,(nera:system-data)
;; :data ,(storage:open-text-file
;; "" "pages" slug))))
;; (on-exception *web* 404))))
( defroute ( "/user/archive" :method :GET ) ( )
( hermetic:auth ( :logged-in )
;; Authorised
( let ( ( alert ( utils:get-and-reset-alert ) ) )
( render "/user/archive.html"
( append ( auth:auth-user-data )
` ( :alert , alert
:system-data , ( nera:system-data )
:archive-entries , ( nera:get-all-archive-entries ) ) ) ) )
;; Not Authorised
( progn
( utils:set-alert "You are not logged in." )
( redirect "/login" ) ) ) )
( defroute ( "/create/archive-entry" :method :GET ) ( )
( hermetic:auth ( :logged-in )
;; Authorised
( let ( ( alert ( utils:get-and-reset-alert ) ) )
( render "/user/create-archive.html"
( append ( auth:auth-user-data )
` ( :alert , alert
:system-data , ( nera:system-data ) ) ) ) )
;; Not Authorised
( progn
( utils:set-alert "You are not logged in." )
( redirect "/login" ) ) ) )
( defroute ( "/create/archive-entry" :method :POST ) ( )
( destructuring-bind
( &key title keywords thumbnail-file page-content
authenticity-token &allow-other-keys )
( utils:request-params
( lack.request:request-body-parameters ningle:*request* ) )
( step
( cond ( ( not ( string= authenticity-token ( auth:csrf-token ) ) )
` ( , +forbidden+ ( :content-type "text/plain" ) ( "Denied" ) ) )
( t ( hermetic:auth
( :logged-in )
;; Authorised
( cond ( ( find t ( mapcar #' utils:string-is-nil-or-empty? ` ( , title , keywords ) ) )
( render
"/user/create-archive.html"
( append ( auth:auth-user-data )
` ( :alert "Data is missing. Unable to create entry."
:title , title
:keywords , keywords
:data , page-content ) ) ) )
( ( not ( null ( nera:get-archive-entry :title title ) ) )
( render
"/user/create-archive.html"
( append ( auth:auth-user-data )
` ( :alert "Entry with that title already exists. Unable to create entry."
:title , title
:keywords , keywords
:data , page-content ) ) ) )
;; Add condition to check thumbnail-file is an image file.
( t ( nera:create-archive-entry
title
( utils:create-timestamp-id )
( utils:slugify title )
;; Add the 'thumbnail' pre-fix here?
( utils:slugify ( cadr thumbnail-file ) ) ; File Name
( caddr thumbnail-file ) ; File Type
( utils:asciify keywords ) )
;; parse info and enter into meilisearch database.
;; Use placeholder thumbnail if one not detected.
( storage:store-text "" "archive" ( utils:slugify title ) page-content )
( storage:store-file
"" "archive" ( utils:slugify ( cadr thumbnail-file ) ) thumbnail-file )
;; Add pre-fix option and just overwrite the original file?
( utils:create-thumbnail "archive" ( utils:slugify ( cadr thumbnail-file ) ) )
( utils:set-alert "Archive entry created. Great Success!" )
( storage:remove-file "" "archive" ( utils:slugify ( cadr thumbnail-file ) ) )
( redirect "/dashboard" ) ) )
;; Not Authorised
( progn ( utils:set-alert "You are not logged in." )
( redirect "/login" ) ) ) ) ) ) ) )
;;
;; Error pages