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))))