Skip to content

Commit

Permalink
made feeds in editor language-aware
Browse files Browse the repository at this point in the history
  • Loading branch information
fmw committed Feb 29, 2012
1 parent 69bcb97 commit 6ae195c
Show file tree
Hide file tree
Showing 8 changed files with 224 additions and 73 deletions.
15 changes: 10 additions & 5 deletions cljs/src/document.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,17 @@

(defn get-feeds-list
([callback]
(get-feeds-list callback nil))
(get-feeds-list callback nil nil))
([callback default-document-type]
(let [uri (if default-document-type
(str "/json/list-feeds?default-document-type="
default-document-type)
"/json/list-feeds")]
(get-feeds-list callback default-document-type nil))
([callback default-document-type language]
(let [uri (str "/json/list-feeds"
(when default-document-type
(str "?default-document-type=" default-document-type))
(when language
(if default-document-type
(str "&language=" language)
(str "?language=" language))))]
(xhrio/send uri callback))))

(defn get-feed [language feed-name callback]
Expand Down
27 changes: 20 additions & 7 deletions cljs/src/views/editor.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@
(butlast img-uri-pairs))
modified-html))))

(defn display-image-feeds []
(defn display-image-feeds [language]
(document/get-feeds-list
(fn [e]
(let [xhr (.-target e)
Expand All @@ -117,7 +117,8 @@
(display-images (.-language first-feed) (.-name first-feed) json)
(ui/render-template (dom/getElement "editor-images")
tpl/no-image-feeds-found))))
"image"))
"image"
language))

(defn display-images
([language feed-name all-feeds]
Expand Down Expand Up @@ -628,7 +629,7 @@
tpl/document-link-options
{:documents documents})))

(defn call-with-feeds-and-documents [f]
(defn call-with-feeds-and-documents [language f]
(document/get-feeds-list
(fn [e]
(let [feeds (filter #(not (= "menu"
Expand All @@ -641,7 +642,9 @@
(fn [e]
(let [documents (.-documents (. (.-target e) (getResponseJson)))]
(do
(f feeds documents)))))))))
(f feeds documents)))))))
nil
language))

(defn update-menu-builder [el links new nested feeds documents]
(ui/render-template el
Expand Down Expand Up @@ -980,8 +983,16 @@
title (util/get-select-option-name-by-value link-el
slug)]
(update-image-in-dialog {:title title
:slug slug})))))))))))
"image"))
:slug slug}))))))))
(ui/display-dialog
"Error"
(ui/render-template-as-string
tpl/error-dialog
{:message "No image feeds for this language."})
#(ui/remove-dialog)
:ok))))
"image"
language))

(defn add-related-page-link-callback [self-slug feeds evt]
(let [feeds (filter #(not (= "image"
Expand Down Expand Up @@ -1293,7 +1304,8 @@
"editor-images")]
(if (. editor-images-el (hasChildNodes))
(set! (.-innerHTML editor-images-el) "")
(display-image-feeds))))))))
(display-image-feeds (:language
feed)))))))))

(when (= mode :with-description)
(classes/remove (dom/getElement "description-container") "hide")
Expand Down Expand Up @@ -1427,6 +1439,7 @@
:default-document-type ("default-document-type" json)}]

(call-with-feeds-and-documents
(:language feed)
(fn [feeds documents]
(cond
(= (:default-document-type feed) "image")
Expand Down
9 changes: 9 additions & 0 deletions soy/editor.soy
Original file line number Diff line number Diff line change
Expand Up @@ -714,3 +714,12 @@
Document not found. Are you sure it hasn't been deleted?
</h3>
{/template}


/**
*
* @param message
*/
{template .error_dialog}
{$message}
{/template}
7 changes: 5 additions & 2 deletions src/database-views/map_feeds_by_default_document_type.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
function(doc) {
if(doc.type === "feed") {
emit(doc["default-document-type"], doc);
emit([doc["default-document-type"],
doc["language"],
doc["name"]],
doc);
}
}
}
48 changes: 33 additions & 15 deletions src/vix/db.clj
Original file line number Diff line number Diff line change
Expand Up @@ -101,23 +101,41 @@
(view-get db-server db-name design-doc view-name view-options))
(.printStackTrace e)))))

(defn list-feeds [db-server db-name]
(if-let [feeds (:rows (view-get db-server
db-name
"views"
"feeds"
{:descending true}))]
(map #(:value %) feeds)))
(defn list-feeds
([db-server db-name]
(list-feeds db-server db-name nil))
([db-server db-name language]
(if-let [feeds (:rows (view-get db-server
db-name
"views"
"feeds"
(if language
{:descending true
:startkey [language {}]
:endkey [language nil]}
{:descending true})))]
(map #(:value %) feeds))))

(defn list-feeds-by-default-document-type
[db-server db-name default-document-type]
(if-let [feeds (:rows (view-get db-server
db-name
"views"
"feeds_by_default_document_type"
{:descending true
:key default-document-type}))]
(map #(:value %) feeds)))
([db-server db-name default-document-type]
(list-feeds-by-default-document-type db-server
db-name
default-document-type
nil))
([db-server db-name default-document-type language]
(if-let [feeds (:rows (view-get db-server
db-name
"views"
"feeds_by_default_document_type"

{:descending true
:startkey [default-document-type
(or language {})
{}]
:endkey [default-document-type
language
nil]}))]
(map #(:value %) feeds))))

(defn get-feed [db-server db-name language feed-name]
(let [feed (view-get db-server
Expand Down
9 changes: 6 additions & 3 deletions src/vix/routes.clj
Original file line number Diff line number Diff line change
Expand Up @@ -187,13 +187,16 @@
startkey-published
startkey_docid))))
(GET "/json/list-feeds"
{session :session {ddt :default-document-type} :params}
{session :session
{ddt :default-document-type
language :language} :params}
(when (authorize session nil :* :GET)
(json-response (if ddt
(db/list-feeds-by-default-document-type db-server
database
ddt)
(db/list-feeds db-server database)))))
ddt
language)
(db/list-feeds db-server database language)))))
(POST "/json/new-feed"
request
(when (authorize (:session request) nil :* :POST)
Expand Down
90 changes: 76 additions & 14 deletions test/vix/test/db.clj
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,13 @@
(is (= (:map (:feeds_by_default_document_type (:views view-doc)))
(str "function(doc) {\n"
" if(doc.type === \"feed\") {\n"
" emit(doc[\"default-document-type\"], doc);\n"
" emit([doc[\"default-document-type\"],\n"
" doc[\"language\"],\n"
" doc[\"name\"]],\n"
" doc);\n"
" }\n"
"}")))
"}\n")
))

(is (= (:map (:by_slug (:views view-doc)))
(str "function(doc) {\n"
Expand Down Expand Up @@ -597,6 +601,7 @@
+test-db+
{:title "Weblog"
:subtitle "Vix Weblog!"
:language "en"
:name "blog"
:default-slug-format
"/{feed-name}/{document-title}"
Expand All @@ -605,29 +610,86 @@
+test-db+
{:title "Pages"
:subtitle "Web Pages"
:language "en"
:name "pages"
:default-slug-format "/{document-title}"
:default-document-type "standard"})
images-feed (create-feed +test-server+
+test-db+
{:title "Images"
:subtitle "Internal feed with images"
:language "en"
:name "images"
:default-slug-format
"/media/{document-title}"
:default-document-type "image"})
feeds (list-feeds +test-server+ +test-db+)]

(is (= (count feeds) 3))

(is (some #{blog-feed} feeds))
(is (some #{pages-feed} feeds))
(is (some #{images-feed} feeds))

(is (= (list-feeds-by-default-document-type +test-server+
+test-db+
"image")
[images-feed]))))
blog-feed-nl (create-feed +test-server+
+test-db+
{:title "Weblog"
:subtitle "Vix Weblog!"
:language "nl"
:name "blog"
:default-slug-format
"/{feed-name}/{document-title}"
:default-document-type
"with-description"})
pages-feed-nl (create-feed +test-server+
+test-db+
{:title "Pages"
:subtitle "Web Pages"
:language "nl"
:name "pages"
:default-slug-format "/{document-title}"
:default-document-type "standard"})
images-feed-nl (create-feed +test-server+
+test-db+
{:title "Images"
:subtitle "Internal feed with images"
:language "nl"
:name "images"
:default-slug-format
"/media/{document-title}"
:default-document-type "image"})]

(testing "test without providing a language"
(is (= [pages-feed-nl
images-feed-nl
blog-feed-nl
pages-feed
images-feed
blog-feed]
(list-feeds +test-server+ +test-db+))))

(testing "test with a language argument"
(is (= [pages-feed
images-feed
blog-feed]
(list-feeds +test-server+ +test-db+ "en")))

(is (= [pages-feed-nl
images-feed-nl
blog-feed-nl]
(list-feeds +test-server+ +test-db+ "nl"))))


(testing "test with default-document-type without a language argument"
(is (= (list-feeds-by-default-document-type +test-server+
+test-db+
"image")
[images-feed-nl images-feed])))

(testing "test with default-document-type and a language argument"
(is (= (list-feeds-by-default-document-type +test-server+
+test-db+
"image"
"en")
[images-feed]))

(is (= (list-feeds-by-default-document-type +test-server+
+test-db+
"image"
"nl")
[images-feed-nl])))))

(deftest test-update-document
(let [new-doc (create-document
Expand Down
Loading

0 comments on commit 6ae195c

Please sign in to comment.