From bf38f3722474e3c5d9e1439ee8cb5cf6b1a0eeec Mon Sep 17 00:00:00 2001 From: Corey Date: Fri, 23 Jan 2015 14:42:32 -0500 Subject: [PATCH 1/3] Migrated html generation to use frames --- doclet/src/clojure/play_clj_doclet/html.clj | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/doclet/src/clojure/play_clj_doclet/html.clj b/doclet/src/clojure/play_clj_doclet/html.clj index 11fa3bf..d8ad688 100644 --- a/doclet/src/clojure/play_clj_doclet/html.clj +++ b/doclet/src/clojure/play_clj_doclet/html.clj @@ -20,7 +20,7 @@ (cons [:div {:class "ns"} ns] (for [{:keys [name]} groups] [:div {:class "name"} - [:a {:href (str->filename ns name)} + [:a {:href (str->filename ns name) :target "content-frame"} name]])))]) (defn java-param @@ -61,14 +61,13 @@ [:pre raw]]]]) (defn create-site-file - [name sidebar content] + [name content] (html [:html [:head [:title name] [:link {:rel "stylesheet" :href "highlight.css"}] [:link {:rel "stylesheet" :href "main.css"}]] [:body - sidebar content [:script {:src "highlight.js"}] [:script {:src "main.js"}]]])) @@ -82,6 +81,12 @@ (spit (io/file dir file-name) (-> file-name io/resource slurp))) +(defn index-frameset + [] + (html [:frameset + [:frame {:src "sidebar.html"} + :frame {:name "content-frame"}]])) + (defn create-site! [dir parsed-files] (.mkdir (io/file dir)) @@ -92,9 +97,11 @@ (doseq [[ns groups] parsed-files] (doseq [{:keys [name] :as group} groups] (spit (io/file dir (str->filename ns name)) - (create-site-file name (sidebar parsed-files) (content group))))) + (create-site-file name (content group))))) + (spit (io/file dir "sidebar.html") + (sidebar parsed-files)) (spit (io/file dir "index.html") - (create-site-file "play-clj docs" (sidebar parsed-files) nil)) + (create-site-file "play-clj docs" (index-frameset))) (println "Created" (str dir "/"))) (defn create-embed! From 03cc86e159a7f30c45eba0af039e1c7ac6de6cd4 Mon Sep 17 00:00:00 2001 From: Corey Date: Fri, 23 Jan 2015 17:06:37 -0500 Subject: [PATCH 2/3] Reworked doclet to work with frames Hash in url bar is page to load for frames When you click a nav link, it sets the hash If you go to nav link in new tab, and click home, it will load the same page, but in the frames --- doclet/resources/main.css | 8 +++- doclet/resources/main.js | 2 +- doclet/resources/nav.js | 9 ++++ doclet/src/clojure/play_clj_doclet/html.clj | 53 ++++++++++++++------- 4 files changed, 52 insertions(+), 20 deletions(-) create mode 100644 doclet/resources/nav.js diff --git a/doclet/resources/main.css b/doclet/resources/main.css index b82e02c..3adcf5c 100644 --- a/doclet/resources/main.css +++ b/doclet/resources/main.css @@ -30,7 +30,6 @@ a:hover { height: 100%; top: 0px; left: 0px; - position: fixed; overflow: auto; padding: 0px 0px 0px 10px; opacity: 0.6; @@ -54,9 +53,14 @@ a:hover { text-indent: 10px; } +.headbar { + padding: 5px 0px 5px 5px; + width: 100%; + border-bottom: 1px solid black +} + .content { padding: 20px 0px 20px 20px; - margin-left: 250px; } .content code { diff --git a/doclet/resources/main.js b/doclet/resources/main.js index a254ba7..6a15493 100644 --- a/doclet/resources/main.js +++ b/doclet/resources/main.js @@ -1,4 +1,4 @@ var elems = document.getElementsByTagName("pre"); for (var i = 0; i < elems.length; i++) { hljs.highlightBlock(elems[i]); -} \ No newline at end of file +} diff --git a/doclet/resources/nav.js b/doclet/resources/nav.js new file mode 100644 index 0000000..ebc7476 --- /dev/null +++ b/doclet/resources/nav.js @@ -0,0 +1,9 @@ +function goToHash(){ + if(window.location.hash != ""){ + document.getElementById("content-frame").src = window.location.hash.substr(1) + } +} + +function setHash(link){ + window.parent.location.hash = link.getAttribute("newHash") +} diff --git a/doclet/src/clojure/play_clj_doclet/html.clj b/doclet/src/clojure/play_clj_doclet/html.clj index d8ad688..6430595 100644 --- a/doclet/src/clojure/play_clj_doclet/html.clj +++ b/doclet/src/clojure/play_clj_doclet/html.clj @@ -20,7 +20,7 @@ (cons [:div {:class "ns"} ns] (for [{:keys [name]} groups] [:div {:class "name"} - [:a {:href (str->filename ns name) :target "content-frame"} + [:a {:href (str->filename ns name) :target "content-frame" :onClick (str "setHash(this)") :newHash (str->filename ns name)} name]])))]) (defn java-param @@ -61,16 +61,23 @@ [:pre raw]]]]) (defn create-site-file - [name content] - (html [:html - [:head - [:title name] - [:link {:rel "stylesheet" :href "highlight.css"}] - [:link {:rel "stylesheet" :href "main.css"}]] - [:body - content - [:script {:src "highlight.js"}] - [:script {:src "main.js"}]]])) + ([name content home-link-hash] + (html [:html + [:head + [:title name] + [:script {:src "nav.js"}] + [:link {:rel "stylesheet" :href "highlight.css"}] + [:link {:rel "stylesheet" :href "main.css"}]] + [:body + (when home-link-hash + [:div {:class "headbar"} + [:a {:href (str "index.html" (if (not-empty home-link-hash) + (str "#" home-link-hash) + "")) + :target "_top"} "Home"]]) + content + [:script {:src "highlight.js"}] + [:script {:src "main.js"}]]]))) (defn create-embed-file [content] @@ -83,25 +90,37 @@ (defn index-frameset [] - (html [:frameset - [:frame {:src "sidebar.html"} - :frame {:name "content-frame"}]])) + (html + [:html + [:head + [:title "play-clj docs"] + [:script {:src "nav.js"}] + [:link {:rel "stylesheet" :href "highlight.css"}] + [:link {:rel "stylesheet" :href "main.css"}]] + [:frameset {:cols "250px,100%" :onLoad "goToHash();"} + [:frame {:src "sidebar.html"}] + [:frame {:src "blank.html" :name "content-frame" :id "content-frame"}] + [:script {:src "highlight.js"}] + [:script {:src "main.js"}]]])) (defn create-site! [dir parsed-files] (.mkdir (io/file dir)) (copy-from-res dir "main.css") (copy-from-res dir "main.js") + (copy-from-res dir "nav.js") (copy-from-res dir "highlight.css") (copy-from-res dir "highlight.js") (doseq [[ns groups] parsed-files] (doseq [{:keys [name] :as group} groups] (spit (io/file dir (str->filename ns name)) - (create-site-file name (content group))))) + (create-site-file name (content group) (str->filename ns name))))) (spit (io/file dir "sidebar.html") - (sidebar parsed-files)) + (create-site-file "sidebar" (sidebar parsed-files) nil)) + (spit (io/file dir "blank.html") + (create-site-file "blank" nil "")) (spit (io/file dir "index.html") - (create-site-file "play-clj docs" (index-frameset))) + (index-frameset)) (println "Created" (str dir "/"))) (defn create-embed! From c95dda06b17578121533991afa1aaaf1c23d8872 Mon Sep 17 00:00:00 2001 From: Corey Date: Fri, 23 Jan 2015 17:08:30 -0500 Subject: [PATCH 3/3] Renamed Home to Frames --- doclet/src/clojure/play_clj_doclet/html.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doclet/src/clojure/play_clj_doclet/html.clj b/doclet/src/clojure/play_clj_doclet/html.clj index 6430595..9ce92e0 100644 --- a/doclet/src/clojure/play_clj_doclet/html.clj +++ b/doclet/src/clojure/play_clj_doclet/html.clj @@ -74,7 +74,7 @@ [:a {:href (str "index.html" (if (not-empty home-link-hash) (str "#" home-link-hash) "")) - :target "_top"} "Home"]]) + :target "_top"} "Frames"]]) content [:script {:src "highlight.js"}] [:script {:src "main.js"}]]])))