Merge remote-tracking branch 'origin/feature/60' into feature/60
This commit is contained in:
commit
e0a310a7e5
17
.classpath
17
.classpath
|
@ -58,5 +58,22 @@
|
||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" path="target/generated-sources/annotations">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
<classpathentry kind="output" path="target/classes"/>
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
11
.project
11
.project
|
@ -26,4 +26,15 @@
|
||||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
<nature>ccw.nature</nature>
|
<nature>ccw.nature</nature>
|
||||||
</natures>
|
</natures>
|
||||||
|
<filteredResources>
|
||||||
|
<filter>
|
||||||
|
<id>1621149723161</id>
|
||||||
|
<name></name>
|
||||||
|
<type>30</type>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||||
|
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||||
|
</matcher>
|
||||||
|
</filter>
|
||||||
|
</filteredResources>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.5
|
org.eclipse.jdt.core.compiler.compliance=1.5
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||||
|
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
||||||
|
org.eclipse.jdt.core.compiler.processAnnotations=disabled
|
||||||
org.eclipse.jdt.core.compiler.release=disabled
|
org.eclipse.jdt.core.compiler.release=disabled
|
||||||
org.eclipse.jdt.core.compiler.source=1.5
|
org.eclipse.jdt.core.compiler.source=1.5
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
<div id="nav">
|
<div id="nav">
|
||||||
<img id="nav-icon" src="{{servlet-context}}/img/threelines.png" alt="Menu"/>
|
<img id="nav-icon" src="{{servlet-context}}/img/threelines.png" alt="Menu"/>
|
||||||
<menu id="nav-menu" class="nav">
|
<menu id="nav-menu" class="nav">
|
||||||
<li class=""><a href="{{servlet-context}}/home">Home</a></li>
|
<li class=""><a href="{{servlet-context}}/">Home</a></li>
|
||||||
<li class=""><a href="https://library.projecthope.scot/">Library</a></li>
|
<li class=""><a href="https://library.projecthope.scot/">Library</a></li>
|
||||||
{% if user %}
|
{% if user %}
|
||||||
<li class=""><a href="{{servlet-context}}/roles">Roles</a></li>
|
<li class=""><a href="{{servlet-context}}/roles">Roles</a></li>
|
||||||
|
|
|
@ -1,17 +1,15 @@
|
||||||
(ns ^{:doc "Routes/pages available to unauthenticated users."
|
(ns ^{:doc "Routes/pages available to unauthenticated users."
|
||||||
:author "Simon Brooke"} youyesyet.routes.home
|
:author "Simon Brooke"} youyesyet.routes.home
|
||||||
(:require [adl-support.utils :refer [safe-name]]
|
(:require [clojure.java.io :as io]
|
||||||
[clojure.java.io :as io]
|
|
||||||
[clojure.string :as s]
|
|
||||||
[clojure.tools.logging :as log]
|
[clojure.tools.logging :as log]
|
||||||
[clojure.walk :refer [keywordize-keys]]
|
[clojure.walk :refer [keywordize-keys]]
|
||||||
[markdown.core :refer [md-to-html-string]]
|
[markdown.core :refer [md-to-html-string]]
|
||||||
[noir.util.route :as route]
|
|
||||||
[ring.util.http-response :as response]
|
[ring.util.http-response :as response]
|
||||||
[youyesyet.config :refer [env]]
|
[youyesyet.config :refer [env]]
|
||||||
[youyesyet.db.core :as db-core]
|
[youyesyet.db.core :as db-core]
|
||||||
[youyesyet.layout :as layout]
|
[youyesyet.layout :as layout]
|
||||||
[youyesyet.oauth :as oauth]
|
[youyesyet.oauth :as oauth]
|
||||||
|
[youyesyet.routes.utils :refer [with-servlet-context]]
|
||||||
[compojure.core :refer [defroutes GET POST]]))
|
[compojure.core :refer [defroutes GET POST]]))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
@ -47,30 +45,41 @@
|
||||||
(if (.exists motd) (slurp motd) "")))
|
(if (.exists motd) (slurp motd) "")))
|
||||||
|
|
||||||
|
|
||||||
(defn about-page [request]
|
(defn about-page
|
||||||
|
"Render a page describing the app and its purpose."
|
||||||
|
[request]
|
||||||
(layout/render "md.html" {:title
|
(layout/render "md.html" {:title
|
||||||
(str "About " (:site-title env))
|
(str "About " (:site-title env))
|
||||||
:servlet-context (:servlet-context request)
|
:servlet-context (:servlet-context request)
|
||||||
:content (md-to-html-string (slurp (io/resource "about.md")))}))
|
:content (md-to-html-string (slurp (io/resource "about.md")))}))
|
||||||
|
|
||||||
|
|
||||||
(defn call-me-page [request]
|
(defn call-me-page
|
||||||
|
"Render a page requesting a call to a particular elector from a member of the
|
||||||
|
telephone canvassing team."
|
||||||
|
[request]
|
||||||
(if
|
(if
|
||||||
request
|
request
|
||||||
(do
|
(do
|
||||||
;; do something to store it in the database
|
;; do something to store it in the database
|
||||||
(layout/render "call-me-accepted.html" (:session request) (:params request)))
|
(layout/render
|
||||||
(layout/render "call-me.html" (:session request)
|
"call-me-accepted.html"
|
||||||
{:title "Please call me!"
|
(:session request)
|
||||||
:servlet-context (:servlet-context request)
|
(assoc (:params request) :servlet-context (:servlet-context request)))
|
||||||
|
(layout/render "call-me.html" (:session request)
|
||||||
|
(with-servlet-context {:title "Please call me!"
|
||||||
;; TODO: Issues need to be fetched from the database
|
;; TODO: Issues need to be fetched from the database
|
||||||
:concerns (db-core/list-issues db-core/*db* {})})))
|
:concerns (db-core/list-issues db-core/*db* {})}
|
||||||
|
request)))))
|
||||||
|
|
||||||
|
|
||||||
(defn home-page [request]
|
(defn home-page
|
||||||
(layout/render "home.html" {:title "You yes yet?"
|
"Render the default page."
|
||||||
:servlet-context (:servlet-context request)
|
[request]
|
||||||
:motd (md-to-html-string (motd))}))
|
(layout/render "home.html" (with-servlet-context
|
||||||
|
{:title "You yes yet?"
|
||||||
|
:motd (md-to-html-string (motd))}
|
||||||
|
request)))
|
||||||
|
|
||||||
|
|
||||||
(defn login-page
|
(defn login-page
|
||||||
|
@ -110,18 +119,20 @@
|
||||||
username
|
username
|
||||||
(layout/render
|
(layout/render
|
||||||
"login.html"
|
"login.html"
|
||||||
{:title (str "User " username " is unknown")
|
(with-servlet-context
|
||||||
:servlet-context (:servlet-context request)
|
{:title (str "User " username " is unknown")
|
||||||
:redirect-to redirect-to
|
:redirect-to redirect-to
|
||||||
:warnings ["Your user name was not recognised or your password did not match"]})
|
:warnings ["Your user name was not recognised or your password did not match"]}
|
||||||
|
request))
|
||||||
;; if we've no username, just invite the user to log in
|
;; if we've no username, just invite the user to log in
|
||||||
:else
|
:else
|
||||||
(layout/render
|
(layout/render
|
||||||
"login.html"
|
"login.html"
|
||||||
{:title "Please log in"
|
(with-servlet-context
|
||||||
:servlet-context (:servlet-context request)
|
{:title "Please log in"
|
||||||
:redirect-to redirect-to
|
:redirect-to redirect-to
|
||||||
:authorities (db-core/list-authorities db-core/*db*)}))))
|
:authorities (db-core/list-authorities db-core/*db*)}
|
||||||
|
request)))))
|
||||||
|
|
||||||
|
|
||||||
(defroutes home-routes
|
(defroutes home-routes
|
||||||
|
@ -132,9 +143,13 @@
|
||||||
(POST "/call-me" request (call-me-page request))
|
(POST "/call-me" request (call-me-page request))
|
||||||
(GET "/login" request (login-page request))
|
(GET "/login" request (login-page request))
|
||||||
(POST "/login" request (login-page request))
|
(POST "/login" request (login-page request))
|
||||||
(GET "/notyet" [request] (layout/render "notyet.html"
|
(GET "/notyet" [request] (layout/render
|
||||||
{:title "Can we persuade you?"
|
"notyet.html"
|
||||||
:servlet-context (:servlet-context request)}))
|
(with-servlet-context
|
||||||
(GET "/supporter" [request] (layout/render "supporter.html"
|
{:title "Can we persuade you?"}
|
||||||
{:title "Have you signed up as a canvasser yet?"
|
request)))
|
||||||
:servlet-context (:servlet-context request)})))
|
(GET "/supporter" [request] (layout/render
|
||||||
|
"supporter.html"
|
||||||
|
(with-servlet-context
|
||||||
|
{:title "Have you signed up as a canvasser yet?"}
|
||||||
|
request))))
|
||||||
|
|
|
@ -1,23 +1,15 @@
|
||||||
(ns ^{:doc "Manually maintained routes which handle data transfer to/from the canvasser app."
|
(ns ^{:doc "Manually maintained routes which handle data transfer to/from the canvasser app."
|
||||||
:author "Simon Brooke"} youyesyet.routes.rest
|
:author "Simon Brooke"} youyesyet.routes.rest
|
||||||
(:require [adl-support.rest-support :refer :all]
|
(:require [adl-support.core :refer [massage-params]]
|
||||||
[adl-support.core :refer [massage-params do-or-log-error
|
[adl-support.rest-support :refer [do-or-server-fail valid-user-or-forbid with-params-or-error]]
|
||||||
do-or-return-reason]]
|
|
||||||
[clojure.core.memoize :as memo]
|
[clojure.core.memoize :as memo]
|
||||||
[clojure.data.json :as json]
|
[clojure.data.json :as json]
|
||||||
[clojure.java.io :as io]
|
|
||||||
[clojure.string :as s]
|
|
||||||
[clojure.tools.logging :as log]
|
[clojure.tools.logging :as log]
|
||||||
[clojure.walk :refer [keywordize-keys]]
|
[compojure.core :refer [defroutes GET]]
|
||||||
[compojure.core :refer [defroutes GET POST]]
|
|
||||||
[java-time :as jt]
|
[java-time :as jt]
|
||||||
[mount.core :as mount]
|
|
||||||
[noir.response :as nresponse]
|
|
||||||
[noir.util.route :as route]
|
[noir.util.route :as route]
|
||||||
[ring.util.http-response :as response]
|
|
||||||
[youyesyet.locality :as l]
|
[youyesyet.locality :as l]
|
||||||
[youyesyet.db.core :as db]
|
[youyesyet.db.core :as db]
|
||||||
[youyesyet.utils :refer :all]
|
|
||||||
))
|
))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
|
@ -3,16 +3,15 @@
|
||||||
(:require [adl-support.core :as support]
|
(:require [adl-support.core :as support]
|
||||||
[adl-support.utils :refer [safe-name]]
|
[adl-support.utils :refer [safe-name]]
|
||||||
[clojure.tools.logging :as log]
|
[clojure.tools.logging :as log]
|
||||||
[clojure.walk :refer [keywordize-keys]]
|
|
||||||
[compojure.core :refer [defroutes GET POST]]
|
[compojure.core :refer [defroutes GET POST]]
|
||||||
[noir.util.route :as route]
|
[noir.util.route :as route]
|
||||||
[ring.util.http-response :as response]
|
[ring.util.http-response :as response]
|
||||||
[youyesyet.config :refer [env]]
|
|
||||||
[youyesyet.db.core :as db-core]
|
[youyesyet.db.core :as db-core]
|
||||||
[youyesyet.routes.issue-experts :as expert]
|
[youyesyet.routes.issue-experts :as expert]
|
||||||
[youyesyet.layout :as layout]
|
[youyesyet.layout :as layout]
|
||||||
[youyesyet.oauth :as oauth]
|
[youyesyet.oauth :as oauth]
|
||||||
[youyesyet.routes.auto :as auto]))
|
[youyesyet.routes.auto :as auto]
|
||||||
|
[youyesyet.routes.utils :refer [with-servlet-context]]))
|
||||||
|
|
||||||
|
|
||||||
(defn roles-page
|
(defn roles-page
|
||||||
|
@ -40,8 +39,7 @@
|
||||||
[request]
|
[request]
|
||||||
(layout/render
|
(layout/render
|
||||||
(support/resolve-template "application-index.html")
|
(support/resolve-template "application-index.html")
|
||||||
{:title "Administrative menu"
|
(with-servlet-context {:title "Administrative menu"} request)))
|
||||||
:servlet-context (:servlet-context request)}))
|
|
||||||
|
|
||||||
|
|
||||||
(defn analysts-page
|
(defn analysts-page
|
||||||
|
@ -51,22 +49,21 @@
|
||||||
[request]
|
[request]
|
||||||
(layout/render
|
(layout/render
|
||||||
(support/resolve-template "application-index.html")
|
(support/resolve-template "application-index.html")
|
||||||
{:title "Administrative menu"
|
(with-servlet-context {:title "Administrative menu"} request)))
|
||||||
:servlet-context (:servlet-context request)}))
|
|
||||||
|
|
||||||
|
|
||||||
(defn canvassers-page
|
(defn canvassers-page
|
||||||
[request]
|
[request]
|
||||||
(layout/render
|
(layout/render
|
||||||
"roles/canvasser.html"
|
"roles/canvasser.html"
|
||||||
{:servlet-context (:servlet-context request)}))
|
(with-servlet-context {} request)))
|
||||||
|
|
||||||
|
|
||||||
(defn team-organisers-page
|
(defn team-organisers-page
|
||||||
[request]
|
[request]
|
||||||
(layout/render
|
(layout/render
|
||||||
"roles/team-orgenisers.html"
|
"roles/team-orgenisers.html"
|
||||||
{:servlet-context (:servlet-context request)}))
|
(with-servlet-context {} request)))
|
||||||
|
|
||||||
|
|
||||||
(defroutes roles-routes
|
(defroutes roles-routes
|
||||||
|
|
12
src/clj/youyesyet/routes/utils.clj
Normal file
12
src/clj/youyesyet/routes/utils.clj
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
(ns youyesyet.routes.utils)
|
||||||
|
|
||||||
|
(defn with-servlet-context
|
||||||
|
"Returns a map like `m` into which the servlet context from `request`,
|
||||||
|
expected to be a request map, has been merged. When an app is served from
|
||||||
|
Tomcat, there will be a `:servlet-context` key in the map, and it matters;
|
||||||
|
when served from Jetty or other lightweight servlet containers, there won't
|
||||||
|
be. TODO: should probably be moved (or copied) to adl-support."
|
||||||
|
[m request]
|
||||||
|
(if (:servlet-context m)
|
||||||
|
(assoc m :servlet-context (:servlet-context request))
|
||||||
|
m))
|
Loading…
Reference in a new issue