From 3aa991c01e81fe32626dd4958097e62be190bb58 Mon Sep 17 00:00:00 2001
From: echicken <echicken@bbs.electronicchicken.com>
Date: Tue, 22 Nov 2016 18:51:31 -0500
Subject: [PATCH] Incomplete add-poll stuff.

---
 web/root/api/forum.ssjs | 10 +++++
 web/root/js/forum.js    | 99 ++++++++++++++++++++++++++++++++++++++---
 2 files changed, 103 insertions(+), 6 deletions(-)

diff --git a/web/root/api/forum.ssjs b/web/root/api/forum.ssjs
index 37d10b7e23..aa3357b010 100644
--- a/web/root/api/forum.ssjs
+++ b/web/root/api/forum.ssjs
@@ -160,6 +160,16 @@ if ((http_request.method === 'GET' || http_request.method === 'POST') &&
                 }
                 break;
 
+            case 'submit-poll':
+                if (typeof http_request.query.subject !== 'undefined' &&
+                    typeof http_request.query.sub !== 'undefined' &&
+                    typeof http_request.query.votes !== 'undefined' &&
+                    typeof http_request.query.answer !== 'undefined'
+                ) {
+                    reply = "barf";
+                }
+                break;
+
             default:
                 handled = false;
                 break;
diff --git a/web/root/js/forum.js b/web/root/js/forum.js
index 11ba915f11..703b26b1d7 100644
--- a/web/root/js/forum.js
+++ b/web/root/js/forum.js
@@ -119,10 +119,101 @@ function addNew(sub) {
 	);
 	window.location.hash = '#newmessage';
 	$('#newmessage-body').keydown(
-		function (evt) {
-			evt.stopImmediatePropagation();
+		function (evt) { evt.stopImmediatePropagation(); }
+	);
+}
+
+function submitPoll(sub) {
+
+	if ($('input[name="newpoll-answers"]:checked').length !== 1) return;
+
+	var subject = $('#newpoll-subject').val();
+	if (subject.length < 1) return;
+
+	var answerCount = $('input[name="newpoll-answers"]:checked:first').val();
+	if (answerCount == 2) answerCount = $('input[name="newpoll-answer-count"]').val();
+	if (answerCount < 0 || answerCount > 15) return;
+
+	var answers = [];
+	for (var i = 0; i < 16; i++) {
+		if ($('#newpoll-answer-' + i).length < 1) continue;
+		var val = $('#newpoll-answer-' + i).val();
+		if (val.length < 1) continue;
+		answers.push(val);
+	}
+	if (answers.length < 1) return;
+
+	$.getJSON(
+		'./api/forum.ssjs?call=submit-poll&sub=' + sub + '&subject=' + subject + '&votes=' + answerCount + '&answer=' + answers.join('&answer='),
+		function (data) {
+			console.log(data);
+			$('#newpoll').remove();
 		}
 	);
+
+}
+
+function addQuestion(elem) {
+	var count = $('div[name="newpoll-answer"]').length;
+	if (count > 15) return;
+	var number = count + 1;
+	$(	'<div id="newpoll-answer-container-' + number + '" name="newpoll-answer" class="form-group">' +
+			'<label for="newpoll-answer-' + number + '" class="col-sm-2 control-label">Answer</label>' +
+			'<div class="col-sm-9">' +
+				'<input id="newpoll-answer-' + number + '" class="form-control" type="text"> ' +
+			'</div>' +
+			'<div class="col-sm-1">' +
+				'<button type="button" class="btn btn-danger" onclick="$(\'#newpoll-answer-container-' + number + '\').remove()">' +
+					'<span class="glyphicon glyphicon-remove"></span>' +
+				'</button> ' +
+			'</div>' +
+		'</div>'
+	).insertBefore(elem);
+	$('#newpoll-answer-' + number).keydown(
+		function (evt) { evt.stopImmediatePropagation(); }
+	);
+}
+
+function addPoll(sub) {
+	$('#forum-list-container').append(
+		'<li id="newpoll" class="list-group-item">' +
+			'<strong>Add a new poll</strong>' +
+			'<form id="newpoll-form" class="form-horizontal">' +
+				'<div class="form-group">' +
+					'<label for="newpoll-subject" class="col-sm-2 control-label">Subject</label>' +
+					'<div class="col-sm-10">' +
+						'<input id="newpoll-subject" class="form-control" type="text" placeholder="Subject">' +
+					'</div>' +
+				'</div>' +
+				'<div class="form-group">' +
+					'<label for="newpoll-answers" class="col-sm-2 control-label">Selection</label>' +
+					'<div class="col-sm-10">' +
+						'<label class="radio-inline">' +
+							'<input type="radio" name="newpoll-answers" value="1" checked> Single' +
+						'</label>' +
+						'<label class="radio-inline">' +
+							'<input type="radio" name="newpoll-answers" value="2"> Multiple ' +
+							'<input type="number" name="newpoll-answer-count" min="1" max="15" value="1">' +
+						'</label>' +
+					'</div>' +
+				'</div>' +
+				'<div id="newpoll-button" class="form-group">' +
+					'<div class="col-sm-offset-2 col-sm-10">' +
+						'<button id="newpoll-submit" type="button" class="btn btn-primary" onclick="submitPoll(\'' + sub + '\')">' +
+							'Submit' +
+						'</button>' +
+						'<div class="pull-right">' +
+							'<button type="button" class="btn btn-success" onclick="addQuestion(\'#newpoll-button\')">' +
+								'<span class="glypicon glyphicon-plus"></span>' +
+							'</button> ' +
+						'</div>' +
+				    '</div>' +
+				'</div>' +
+			'</form>' +
+		'</li>'
+	);
+	addQuestion('#newpoll-button');
+	window.location.hash = '#newpoll';
 }
 
 // Add a reply input form to the page for message with number 'id' in sub 'sub'
@@ -441,8 +532,4 @@ function getPollData(sub, id) {
 			}
 		}
 	);
-}
-
-function addPoll(sub) {
-
 }
\ No newline at end of file
-- 
GitLab