diff of 467c17448d3aa42b28548e4e1b3d257d33841e9d
467c17448d3aa42b28548e4e1b3d257d33841e9d
diff --git a/src/rss/reader-db.lisp b/src/rss/reader-db.lisp
index 80ae51e..541dd0f 100644
--- a/src/rss/reader-db.lisp
+++ b/src/rss/reader-db.lisp
@@ -3,7 +3,7 @@
(:import-from :halisql :defqueries)
(:import-from :lisp-fixup :partial :compose)
(:import-from :cl-date-time-parser :parse-date-time)
- (:export :*last-updated* :get-user-feeds2 :get-feed-name-and-url :*updates* :get-user-feeds :subscribe-to-feed :mark-as-read :delete-feed :download))
+ (:export :*last-updated* :subscribe-to-feed2 :get-user-feeds2 :get-feed-name-and-url :*updates* :get-user-feeds :subscribe-to-feed :mark-as-read :delete-feed :download))
(in-package :murja.rss.reader-db)
@@ -45,6 +45,9 @@
(defun subscribe-to-feed (feed-name feed-url owner)
(insert-feed feed-name feed-url (gethash "id" owner)))
+(defun subscribe-to-feed2 (feed-name feed-url owner)
+ (insert-feed feed-name feed-url (murja.model.user:user-id owner)))
+
(defun download (url modified-since)
"Drakma decides to return either strings or array<byte>s based on random
(can't find the documentation about this logic) whims. This function performs
diff --git a/src/view/rss.lisp b/src/view/rss.lisp
index 3c34957..c611f83 100644
--- a/src/view/rss.lisp
+++ b/src/view/rss.lisp
@@ -87,6 +87,15 @@ ORDER BY pubdate DESC" feed-id (not (not archived))))
(when (confirm (+ "Are you sure you wish to DELETE " (@ e target dataset feedname) "?"))
(delete-feed (@ e target dataset feedid)))))))))))))
+(defroute new-feed ("/blog/feed/"
+ :decorators (@db
+ @ssr-authenticated)
+ :method :post)
+ (&post feed_name feed_url)
+ (murja.rss.reader-db:subscribe-to-feed2 feed_name feed_url *user*)
+ (let ((referer (hunchentoot:header-in* "referer")))
+ (hunchentoot:redirect referer)))
+
(deftab rss (:url "/blog/feeds/"
:title "RSS Feeds"
:require-login t)
@@ -103,4 +112,10 @@ ORDER BY pubdate DESC" feed-id (not (not archived))))
(:div ("Last updated ~a" (unless (equalp last-modified :NULL)
(lisp-fixup:fix-timestamp last-modified))))
- (:button.remove-feed :data-feedid id :data-feedname name "DELETE THIS FEED")))))))
+ (:button.remove-feed :data-feedid id :data-feedname name "DELETE THIS FEED")))))
+
+ (:form :method "POST" :action (easy-routes:genurl 'new-feed)
+ (:h* "Subscribe into a new feed?")
+ (:label "Feed name: " (:input :type :text :name "feed_name"))
+ (:label "Feed url: " (:input :type :text :name "feed_url"))
+ (:input :type :submit))))