Selmer style and script tags are not working cleanly for me.

This commit is contained in:
Simon Brooke 2021-05-17 08:22:21 +01:00
parent a805f3ccc5
commit d43eb22cd3
No known key found for this signature in database
GPG key ID: A7A4F18D1D4DF987
6 changed files with 84 additions and 63 deletions

8
.gitignore vendored
View file

@ -49,3 +49,11 @@ youyesyet\.dump\.20180816
*.tar
src/clj/youyesyet/cache\.clj
.lsp/sqlite.db
.settings/
.classpath
.project

View file

@ -51,7 +51,7 @@
[ring/ring-servlet "1.7.1"]
[ring-webjars "0.2.0"]
[secretary "1.2.3"]
[selmer "1.12.17"]]
[selmer "1.12.40"]]
:deploy-repositories [["releases" :clojars]
["snapshots" :clojars]]

View file

@ -42,13 +42,13 @@
{% endblock %}
{% block extra-tail %}
<!-- scripts and styles -->
<!-- ATTENTION \/ -->
<!-- ATTENTION /\ -->
<!-- Leaflet -->
<link rel="stylesheet" href="js/lib/node_modules/leaflet/dist/leaflet.css" />
{% script "js/lib/node_modules/signature_pad/dist/signature_pad.min.js" %}
{% script "js/lib/node_modules/leaflet/dist/leaflet.js" %}
{% script "/js/app.js" %}
<link rel="stylesheet" href="{{servlet-context}}/js/lib/node_modules/leaflet/dist/leaflet.css" />
<script src="{{servlet-context}}/js/lib/node_modules/leaflet/dist/leaflet.js"></script>
<!-- Signature pad -->
<script src="{{servlet-context}}/js/lib/node_modules/signature_pad/dist/signature_pad.min.js"></script>
<!-- our actual app -->
<script src="{{servlet-context}}/js/app.js"></script>
{% endblock %}

View file

@ -6,17 +6,20 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="referrer" content="same-origin">
{% style "/css/yyy-common.css" %}
{% style "/css/yyy-site.css" %}
{% style "/css/spinner.css" %}
<link rel="stylesheet" type="text/css" href="{{servlet-context}}/css/yyy-common.css" />
<link rel="stylesheet" type="text/css" href="{{servlet-context}}/css/yyy-site.css" />
<link rel="stylesheet" type="text/css" href="{{servlet-context}}/css/spinner.css" />
<link href="https://fonts.googleapis.com/css?family=Archivo+Black|Archivo+Narrow" rel="stylesheet"/>
{% script "/js/lib/node_modules/jquery/dist/jquery.min.js" %}
<script src="{{servlet-context}}/js/lib/node_modules/jquery/dist/jquery.min.js"></script>
<title>{{site-title}}: {{title}}</title>
{% endblock %}
{% block extra-head %}
<!-- extra-head: put any additional markup to go into the head of your document into this block -->
<!-- e.g. script tags, link tags -->
{% endblock %}
{% if servlet-context %}
<!-- Servlet context is {{servlet-context}} -->
{% endif %}
</head>
<body>
{% block whole-page %}
@ -87,12 +90,12 @@
<!-- foot: override this block if you don't want the standard footer -->
<footer>
<div id="credits">
<!-- div>
<div>
<img src="{{servlet-context}}/img/credits/ric-logo.png" width="24" height="24"/>
A project of the
<a href="https://radical.scot/">Radical Independence Campaign</a> ||
Version {{version}}
</div -->
</div>
<div>
<img height="16" width="16" alt="Clojure" src="{{servlet-context}}/img/credits/luminus-logo.png"/>Built with <a href="http://www.luminusweb.net/">LuminusWeb</a> ||
<img height="16" width="16" alt="Clojure" src="{{servlet-context}}/img/credits/clojure-icon.gif"/> Powered by <a href="http://clojure.org">Clojure</a> ||

View file

@ -12,8 +12,7 @@
[youyesyet.db.core :as db-core]
[youyesyet.layout :as layout]
[youyesyet.oauth :as oauth]
[compojure.core :refer [defroutes GET POST]]
))
[compojure.core :refer [defroutes GET POST]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;
@ -48,27 +47,30 @@
(if (.exists motd) (slurp motd) "")))
(defn about-page []
(defn about-page [request]
(layout/render "md.html" {:title
(str "About " (:site-title env))
:content (md-to-html-string (slurp (io/resource "about.md")))}))
(str "About " (:site-title env))
:servlet-context (:servlet-context request)
:content (md-to-html-string (slurp (io/resource "about.md")))}))
(defn call-me-page [request]
(if
request
request
(do
;; do something to store it in the database
(layout/render "call-me-accepted.html" (:session request) (:params request)))
(layout/render "call-me.html" (:session request)
{:title "Please call me!"
:servlet-context (:servlet-context request)
;; TODO: Issues need to be fetched from the database
:concerns (db-core/list-issues db-core/*db* {})})))
(defn home-page []
(layout/render "home.html" {:title "You yes yet?"
:motd (md-to-html-string (motd))}))
(defn home-page [request]
(layout/render "home.html" {:title "You yes yet?"
:servlet-context (:servlet-context request)
:motd (md-to-html-string (motd))}))
(defn login-page
@ -77,58 +79,62 @@
(let [params (keywordize-keys (:params request))
session (:session request)
username (:username params)
user (if username (db-core/get-canvasser-by-username db-core/*db* {:username username}))
user (when username (db-core/get-canvasser-by-username db-core/*db* {:username username}))
password (:password params)
redirect-to (or
(:redirect-to params)
(str (:servlet-context request) "/roles"))]
(cond
(:authority params)
(let [auth (oauth/authority! (:authority params))]
(if auth
(do
(log/info "Attempting to authorise with authority " (:authority params))
(oauth/fetch-request-token
(assoc request :session (assoc session :authority auth))
auth))
(throw (Exception. (str "No such authority: " (:authority params))))))
(:authority params)
(let [auth (oauth/authority! (:authority params))]
(if auth
(do
(log/info "Attempting to authorise with authority " (:authority params))
(oauth/fetch-request-token
(assoc request :session (assoc session :authority auth))
auth))
(throw (Exception. (str "No such authority: " (:authority params))))))
;; this is obviously, ABSURDLY, insecure. I don't want to put just-about-good-enough,
;; it-will-do-for-now security in place; instead, I want this to be test code only
;; until we have o-auth properly working.
(and user (= username password))
(let
(and user (= username password))
(let
[roles (layout/get-user-roles user)]
(log/info (str "Logged in user '" username "' with roles " roles))
(assoc
(log/info (str "Logged in user '" username "' with roles " roles))
(assoc
(response/found redirect-to)
:session
(assoc session :user (assoc user :roles roles))))
;; if we've got a username but either no user object or else
;; the password doesn't match
username
username
(layout/render
"login.html"
{:title (str "User " username " is unknown")
:servlet-context (:servlet-context request)
:redirect-to redirect-to
:warnings ["Your user name was not recognised or your password did not match"]})
;; if we've no username, just invite the user to log in
:else
:else
(layout/render
"login.html"
{:title "Please log in"
:servlet-context (:servlet-context request)
:redirect-to redirect-to
:authorities (db-core/list-authorities db-core/*db*)}))))
(defroutes home-routes
(GET "/" [] (home-page))
(GET "/home" [] (home-page))
(GET "/about" [] (about-page))
(GET "/call-me" [] (call-me-page nil))
(GET "/" [request] (home-page request))
(GET "/home" [request] (home-page request))
(GET "/about" [request] (about-page request))
(GET "/call-me" [request] (call-me-page request))
(POST "/call-me" request (call-me-page request))
(GET "/login" request (login-page request))
(POST "/login" request (login-page request))
(GET "/notyet" [] (layout/render "notyet.html"
{:title "Can we persuade you?"}))
(GET "/supporter" [] (layout/render "supporter.html"
{:title "Have you signed up as a canvasser yet?"})))
(GET "/notyet" [request] (layout/render "notyet.html"
{:title "Can we persuade you?"
:servlet-context (:servlet-context request)}))
(GET "/supporter" [request] (layout/render "supporter.html"
{:title "Have you signed up as a canvasser yet?"
:servlet-context (:servlet-context request)})))

View file

@ -15,30 +15,33 @@
[youyesyet.routes.auto :as auto]))
(defn roles-page [request]
(defn roles-page
"Render the routing page for the roles the currently logged in user is member of."
[request]
(let
[session (:session request)
user (-> request :session :user)
roles (if
user
(db-core/list-roles-by-canvasser db-core/*db* {:id (:id user)}))]
[session (:session request)
user (-> request :session :user)
roles (if
user
(db-core/list-roles-by-canvasser db-core/*db* {:id (:id user)}))]
(log/info (str "Roles routing page; user is " user "; roles are " roles))
(if
roles
roles
(layout/render
"roles.html"
{:title (str "Welcome " (:fullname user) ", what do you want to do?")
:user user
:roles (map #(assoc % :link (safe-name (:name %) :sql)) roles)})
"roles.html"
{:title (str "Welcome " (:fullname user) ", what do you want to do?")
:servlet-context (:servlet-context request)
:user user
:roles (map #(assoc % :link (safe-name (:name %) :sql)) roles)})
(assoc (response/found "/login") :session (dissoc session :user)))))
(defn admins-page
[request]
(layout/render
(support/resolve-template "application-index.html")
{:title "Administrative menu"}))
(support/resolve-template "application-index.html")
{:title "Administrative menu"
:servlet-context (:servlet-context request)}))
(defn analysts-page
@ -47,22 +50,23 @@
anything sophisticated here."
[request]
(layout/render
(support/resolve-template "application-index.html")
{:title "Administrative menu"}))
(support/resolve-template "application-index.html")
{:title "Administrative menu"
:servlet-context (:servlet-context request)}))
(defn canvassers-page
[request]
(layout/render
"roles/canvasser.html"
{}))
{:servlet-context (:servlet-context request)}))
(defn team-organisers-page
[request]
(layout/render
"roles/team-orgenisers.html"
{}))
{:servlet-context (:servlet-context request)}))
(defroutes roles-routes