Skip to content
Snippets Groups Projects
Commit f21f35fe authored by echicken's avatar echicken :chicken:
Browse files

A nice-looking poll-creation / posting thing which is pretty ugly underneath.

parent 35fc1bed
No related branches found
No related tags found
No related merge requests found
...@@ -125,6 +125,8 @@ function addNew(sub) { ...@@ -125,6 +125,8 @@ function addNew(sub) {
function submitPoll(sub) { function submitPoll(sub) {
$('#newpoll-submit').attr('disabled', true);
if ($('input[name="newpoll-answers"]:checked').length !== 1) return; if ($('input[name="newpoll-answers"]:checked').length !== 1) return;
var subject = $('#newpoll-subject').val(); var subject = $('#newpoll-subject').val();
...@@ -134,57 +136,91 @@ function submitPoll(sub) { ...@@ -134,57 +136,91 @@ function submitPoll(sub) {
if (answerCount == 2) answerCount = $('input[name="newpoll-answer-count"]').val(); if (answerCount == 2) answerCount = $('input[name="newpoll-answer-count"]').val();
if (answerCount < 0 || answerCount > 15) return; if (answerCount < 0 || answerCount > 15) return;
var results = parseInt($('input[name="newpoll-results"]:checked').val());
if (results < 0 || results > 3) return;
var answers = []; var answers = [];
for (var i = 0; i < 16; i++) { $('input[name="newpoll-answer-input"]').each(
if ($('#newpoll-answer-' + i).length < 1) continue; function () {
var val = $('#newpoll-answer-' + i).val(); var val = $(this).val();
if (val.length < 1) continue; if (val !== '') answers.push(val);
answers.push(val);
} }
);
if (answers.length < 1) return; if (answers.length < 1) return;
var comments = [];
$('input[name="newpoll-comment-input"]').each(
function () {
var val = $(this).val();
if (val !== '') comments.push(val);
}
);
var url =
'./api/forum.ssjs?call=submit-poll' +
'&sub=' + sub +
'&subject=' + subject +
'&votes=' + answerCount +
'&results=' + results +
'&answer=' + answers.join('&answer=');
if (comments.length > 0) url += '&comment=' + comments.join('&comment=');
$.getJSON( $.getJSON(
'./api/forum.ssjs?call=submit-poll&sub=' + sub + '&subject=' + subject + '&votes=' + answerCount + '&answer=' + answers.join('&answer='), url, function (data) {
function (data) { $('#newpoll-submit').attr('disabled', false);
console.log(data); if (data.success) {
$('#newpoll').remove(); $('#newpoll').remove();
insertParam('notice', 'Your poll has been posted.');
}
} }
); );
} }
function addQuestion(elem) { function addPollField(type, elem) {
var count = $('div[name="newpoll-answer"]').length;
if (count > 15) return; var prefix = 'newpoll-' + type;
var count = $('div[name="' + prefix + '"]').length;
if (type === 'answer' && count > 15) return;
var number = count + 1; 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>' + $(elem).append(
'<div id="' + prefix + '-container-' + number + '" name="' + prefix + '" class="form-group">' +
'<label for="' + prefix + '-' + number + '" class="col-sm-2 control-label">' +
(type === 'answer' ? 'Answer' : 'Comment') +
'</label>' +
'<div class="col-sm-9">' + '<div class="col-sm-9">' +
'<input id="newpoll-answer-' + number + '" class="form-control" type="text"> ' + '<input id="' + prefix + '-' + number + '" class="form-control" name="' + prefix + '-input" type="text"> ' +
'</div>' + '</div>' +
'<div class="col-sm-1">' + '<div class="col-sm-1">' +
'<button type="button" class="btn btn-danger" onclick="$(\'#newpoll-answer-container-' + number + '\').remove()">' + '<button type="button" class="btn btn-danger" onclick="$(\'#' + prefix + '-container-' + number + '\').remove()">' +
'<span class="glyphicon glyphicon-remove"></span>' + '<span class="glyphicon glyphicon-remove"></span>' +
'</button> ' + '</button> ' +
'</div>' + '</div>' +
'</div>' '</div>'
).insertBefore(elem); );
$('#newpoll-answer-' + number).keydown(
$('#' + prefix + '-' + number).keydown(
function (evt) { evt.stopImmediatePropagation(); } function (evt) { evt.stopImmediatePropagation(); }
); );
} }
function addPoll(sub) { function addPoll(sub) {
if ($('#newpoll').length > 0) return;
$('#forum-list-container').append( $('#forum-list-container').append(
'<li id="newpoll" class="list-group-item">' + '<li id="newpoll" class="list-group-item">' +
'<strong>Add a new poll</strong>' + '<strong>Add a new poll</strong>' +
'<form id="newpoll-form" class="form-horizontal">' + '<form id="newpoll-form" class="form-horizontal">' +
'<div class="form-group">' + '<div class="form-group">' +
'<label for="newpoll-subject" class="col-sm-2 control-label">Subject</label>' + '<label for="newpoll-subject" class="col-sm-2 control-label">Question</label>' +
'<div class="col-sm-10">' + '<div class="col-sm-10">' +
'<input id="newpoll-subject" class="form-control" type="text" placeholder="Subject">' + '<input id="newpoll-subject" class="form-control" type="text" placeholder="Required">' +
'</div>' + '</div>' +
'</div>' + '</div>' +
'<div id="newpoll-comment-group"></div>' +
'<div class="form-group">' + '<div class="form-group">' +
'<label for="newpoll-answers" class="col-sm-2 control-label">Selection</label>' + '<label for="newpoll-answers" class="col-sm-2 control-label">Selection</label>' +
'<div class="col-sm-10">' + '<div class="col-sm-10">' +
...@@ -197,14 +233,35 @@ function addPoll(sub) { ...@@ -197,14 +233,35 @@ function addPoll(sub) {
'</label>' + '</label>' +
'</div>' + '</div>' +
'</div>' + '</div>' +
'<div class="form-group">' +
'<label for="newpoll-results" class="col-sm-2 control-label">Show results</label>' +
'<div class="col-sm-10">' +
'<label class="radio-inline">' +
'<input type="radio" name="newpoll-results" value="0" checked> Voters' +
'</label>' +
'<label class="radio-inline">' +
'<input type="radio" name="newpoll-results" value="1"> Everyone' +
'</label>' +
'<label class="radio-inline">' +
'<input type="radio" name="newpoll-results" value="2"> Me Only (Until closed) ' +
'</label>' +
'<label class="radio-inline">' +
'<input type="radio" name="newpoll-results" value="3"> Me Only ' +
'</label>' +
'</div>' +
'</div>' +
'<div id="newpoll-answer-group"></div>' +
'<div id="newpoll-button" class="form-group">' + '<div id="newpoll-button" class="form-group">' +
'<div class="col-sm-offset-2 col-sm-10">' + '<div class="col-sm-offset-2 col-sm-10">' +
'<button id="newpoll-submit" type="button" class="btn btn-primary" onclick="submitPoll(\'' + sub + '\')">' + '<button id="newpoll-submit" type="button" class="btn btn-primary" onclick="submitPoll(\'' + sub + '\')">' +
'Submit' + 'Submit' +
'</button>' + '</button>' +
'<div class="pull-right">' + '<div class="pull-right">' +
'<button type="button" class="btn btn-success" onclick="addQuestion(\'#newpoll-button\')">' + '<button type="button" title="Add another comment" class="btn btn-success" onclick="addPollField(\'comment\', \'#newpoll-comment-group\')">' +
'<span class="glypicon glyphicon-plus"></span>' + '<span class="glyphicon glyphicon-pencil"></span>' +
'</button> ' +
'<button type="button" title="Add another answer" class="btn btn-success" onclick="addPollField(\'answer\', \'#newpoll-answer-group\')">' +
'<span class="glyphicon glyphicon-plus"></span>' +
'</button> ' + '</button> ' +
'</div>' + '</div>' +
'</div>' + '</div>' +
...@@ -212,7 +269,9 @@ function addPoll(sub) { ...@@ -212,7 +269,9 @@ function addPoll(sub) {
'</form>' + '</form>' +
'</li>' '</li>'
); );
addQuestion('#newpoll-button'); addPollField('comment', '#newpoll-comment-group');
addPollField('answer', '#newpoll-answer-group');
addPollField('answer', '#newpoll-answer-group');
window.location.hash = '#newpoll'; window.location.hash = '#newpoll';
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment