From 603b8a8b4a854efb168953da70e7b43ae99b50d9 Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Mon, 27 Jan 2020 08:50:20 +0100
Subject: [PATCH] Add chat to Hall, clickable FEN, fix contact form

---
 client/src/components/BaseGame.vue    | 6 +++++-
 client/src/components/ContactForm.vue | 4 +++-
 client/src/translations/en.js         | 4 ++--
 client/src/views/Hall.vue             | 8 ++++++--
 server/routes/messages.js             | 9 ++++++---
 5 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue
index 6d9904e6..e880de5f 100644
--- a/client/src/components/BaseGame.vue
+++ b/client/src/components/BaseGame.vue
@@ -17,7 +17,7 @@ div
         button(@click="gotoBegin") GotoBegin
         button(@click="gotoEnd") GotoEnd
       #fenDiv(v-if="showFen && !!vr")
-        p {{ vr.getFen() }}
+        p(@click="gotoFenContent") {{ vr.getFen() }}
       #pgnDiv
         a#download(href="#")
         button(@click="download") {{ st.tr["Download PGN"] }}
@@ -104,6 +104,10 @@ export default {
       this.cursor = L-1;
       this.lastMove = (L > 0 ? this.moves[L-1]  : null);
     },
+    gotoFenContent: function(event) {
+      this.$router.push("/analyze/" + this.game.vname +
+        "/?fen=" + event.target.innerText.replace(/ /g, "_"));
+    },
     download: function() {
       const content = this.getPgn();
       // Prepare and trigger download link
diff --git a/client/src/components/ContactForm.vue b/client/src/components/ContactForm.vue
index 20d35b0e..aae0a504 100644
--- a/client/src/components/ContactForm.vue
+++ b/client/src/components/ContactForm.vue
@@ -16,13 +16,15 @@ div
         br
         textarea#mailContent
       fieldset
-        button(type="button" onClick="trySendMessage()") Send
+        button(type="button" @click="trySendMessage") Send
         p#emailSent {{ st.tr["Email sent!"] }}
 </template>
 
 <script>
 import { ajax } from "../utils/ajax";
 import { store } from "@/store";
+import { checkNameEmail } from "@/data/userCheck";
+
 export default {
   name: "my-contact-form",
   data: function() {
diff --git a/client/src/translations/en.js b/client/src/translations/en.js
index 23bb487e..2a50968c 100644
--- a/client/src/translations/en.js
+++ b/client/src/translations/en.js
@@ -4,8 +4,8 @@ export const translations =
   "Variants": "Variants",
   "My games": "My games",
   "Forum": "Forum",
-  "Contact form": "Contact form",
-  "Source code": "Source code",
+  "Contact": "Contact",
+  "About": "About",
 
   "Language": "Language",
   "Email": "Email",
diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue
index 3a579445..e090d9e6 100644
--- a/client/src/views/Hall.vue
+++ b/client/src/views/Hall.vue
@@ -26,10 +26,12 @@ main
         input#inputFen(type="text" v-model="newchallenge.fen")
       button(@click="newChallenge") {{ st.tr["Send challenge"] }}
   .row
-    .col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
+    .col-sm-12.col-md-9.col-md-offset-3
       button(onClick="doClick('modalNewgame')") New game
   .row
-    .col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
+    .col-sm-12.col-md-3
+      Chat(:players="[]")
+    .col-sm-12.col-md-9
       .collapse
         input#challengeSection(type="radio" checked aria-hidden="true" name="accordion")
         label(for="challengeSection" aria-hidden="true") Challenges
@@ -73,12 +75,14 @@ import { checkChallenge } from "@/data/challengeCheck";
 import { ArrayFun } from "@/utils/array";
 import { ajax } from "@/utils/ajax";
 import { getRandString, shuffle } from "@/utils/alea";
+import Chat from "@/components/Chat.vue";
 import GameList from "@/components/GameList.vue";
 import ChallengeList from "@/components/ChallengeList.vue";
 import { GameStorage } from "@/utils/gameStorage";
 export default {
   name: "my-hall",
   components: {
+    Chat,
     GameList,
     ChallengeList,
   },
diff --git a/server/routes/messages.js b/server/routes/messages.js
index 74ec8bd4..02ddec55 100644
--- a/server/routes/messages.js
+++ b/server/routes/messages.js
@@ -2,16 +2,19 @@
 
 let router = require("express").Router();
 const mailer = require(__dirname.replace("/routes", "/utils/mailer"));
+const params = require(__dirname.replace("/routes", "/config/parameters"));
 
 // Send a message through contact form
 router.post("/messages", (req,res,next) => {
 	if (!req.xhr)
 		return res.json({errmsg: "Unauthorized access"});
-	const from = req.body["email"];
+  console.log(req.body);
+  const from = req.body["email"];
 	const subject = req.body["subject"];
-	const body = req.body["body"];
+	const body = req.body["content"];
+
 	// TODO: sanitize ?
-	mailer.send(from, mailer.contact, subject, body, err => {
+	mailer(from, params.mail.contact, subject, body, err => {
 		if (!!err)
 			return res.json({errmsg:err});
 		// OK, everything fine
-- 
2.44.0