basic support for new pages

This commit is contained in:
iou1name 2018-09-24 08:22:01 -04:00
parent 5eb19761bd
commit fb7ffc4d78
4 changed files with 51 additions and 29 deletions

View File

@ -406,6 +406,21 @@ def write_in(socket, data):
socket.send('update_post', data)
def new_page(socket, data):
"""
Called when the QM creates a new page.
"""
title = data.get('page_title')
quest = Quest.objects.get(id=socket.quest_id)
p = PageTitle(
quest=quest,
page_num=PageTitle.objects.filter(quest=quest).count() + 1,
title=title,
)
p.save()
events = {}
for obj in dir():
if type(locals()[obj]) == types.FunctionType:

View File

@ -37,7 +37,7 @@ class PollForm(forms.Form):
continue
self.fields[key] = forms.CharField(max_length=200)
class EditQuest(forms.Form):
class EditQuestForm(forms.Form):
"""
Form for the /edit_quest page.
"""

View File

@ -46,13 +46,13 @@
{{ localtime(post.timestamp).strftime('%Y-%m-%d %H:%M') }}
{% if request.user == quest.owner %}
{% if post.post_type == "text" %}
<br /><a href="javascript:void(0);" id="editPost-{{ post.id }}" onclick="edit_post({{ post.id }})">Edit</a>
<br><a href="javascript:void(0);" id="editPost-{{ post.id }}" onclick="edit_post({{ post.id }})">Edit</a>
<a href="javascript:void(0);" id="savePost-{{ post.id }}" onclick="save_post('{{ post.id }}')" style="display:none;">Save</a>
{% elif post.post_type == "dice" %}
<br /><a href="javascript:void(0);" id="closePost-{{ post.id }}" onclick="close_post_send({{ post.id }})"{% if not post.dicecall.open %} style="display:none;"{% endif %}>Close</a>
<br><a href="javascript:void(0);" id="closePost-{{ post.id }}" onclick="close_post_send({{ post.id }})"{% if not post.dicecall.open %} style="display:none;"{% endif %}>Close</a>
<a href="javascript:void(0);" id="openPost-{{ post.id }}" onclick="open_post_send({{ post.id }})"{% if post.dicecall.open %} style="display:none;"{% endif %}>Open</a>
{% elif post.post_type == "poll" %}
<br /><a href="javascript:void(0);" id="closePost-{{ post.id }}" onclick="close_post_send({{ post.id }})"{% if not post.poll.open %} style="display:none;"{% endif %}>Close</a>
<br><a href="javascript:void(0);" id="closePost-{{ post.id }}" onclick="close_post_send({{ post.id }})"{% if not post.poll.open %} style="display:none;"{% endif %}>Close</a>
<a href="javascript:void(0);" id="openPost-{{ post.id }}" onclick="open_post_send({{ post.id }})"{% if post.poll.open %} style="display:none;"{% endif %}>Open</a>
{% endif %}
{% endif %}
@ -75,7 +75,7 @@
{% for option in poll_options.filter(poll=post.poll).order_by("id") %}
<tr id="optionRow-{{ option.id }}">
<td class="pollCheckBox">
<input type="checkbox" {% if poll_votes.filter(option=option, ip_address=ip_address) %}checked="true"{% endif %} id="pollInput-{{ option.id }}" onchange="vote({{ post.id }}, {{ option.id }})"{% if not post.poll.open %} disabled{% endif %}/>
<input type="checkbox" {% if poll_votes.filter(option=option, ip_address=ip_address) %}checked="true"{% endif %} id="pollInput-{{ option.id }}" onchange="vote({{ post.id }}, {{ option.id }})"{% if not post.poll.open %} disabled{% endif %}>
<label for="pollInput-{{ option.id }}"></label>
</td>
<td class="option_text">{{ option.text }}</td>
@ -85,8 +85,8 @@
</table>
{% if post.poll.open and post.poll.allow_writein %}
<div id="writeinContainer-{{ post.id }}">
Write-in: <input type="text" id="writeinInput-{{ post.id }}" placeholder="Custom choice..." maxlength="200" /><br />
<input type="submit" id="writeinSubmit-{{ post.id }}" value="Submit" onclick="submitWritein({{ post.id }});"/>
Write-in: <input type="text" id="writeinInput-{{ post.id }}" placeholder="Custom choice..." maxlength="200"><br>
<input type="submit" id="writeinSubmit-{{ post.id }}" value="Submit" onclick="submitWritein({{ post.id }});">
</div>
{% endif %}
{% endif %}
@ -101,27 +101,28 @@
<li><a class="QMPostTab active" href="javascript:void(0);" onclick="openPostTab(event, 'QMPostText')">Text</a></li>
<li><a class="QMPostTab" href="javascript:void(0);" onclick="openPostTab(event, 'QMPostDice')">Dice</a></li>
<li><a class="QMPostTab" href="javascript:void(0);" onclick="openPostTab(event, 'QMPostPoll')">Poll</a></li>
<li><a class="QMPostTab" href="javascript:void(0);" onclick="openPostTab(event, 'QMPage')">Page</a></li>
</ul>
</div>
<div id="QMPostText" class="QMPostTabContent" style="display:initial;">
<textarea id="postTextArea"></textarea><br />
<input type="submit" name="newPost" value="Post" onclick="makePost();"/>
<textarea id="postTextArea"></textarea><br>
<input type="submit" name="newPost" value="Post" onclick="makePost();">
</div>
<div id="QMPostDice" class="QMPostTabContent" style="display:none;">
Dice for the dice god.<br />
Dice for the dice god.<br>
<form id="QMDicePostForm" action="javascript:void(0);" onsubmit="form_post('QMDicePostForm', 'dice_post');">
Dice: <input type="number" name="diceNum" min="1" max="99" required/>
d <input type="number" name="diceSides" min="1" max="99" required/>
±<input type="number" name="diceMod" min="-999" max="999"/>
<input type="checkbox" name="diceStrict"/>
<span class="tooltip" title="Only take matching rolls.">Strict</span><br />
<input type="checkbox" onclick="document.getElementById('diceChal').disabled=!this.checked;"/>
Dice: <input type="number" name="diceNum" min="1" max="99" required>
d <input type="number" name="diceSides" min="1" max="99" required>
±<input type="number" name="diceMod" min="-999" max="999">
<input type="checkbox" name="diceStrict">
<span class="tooltip" title="Only take matching rolls.">Strict</span><br>
<input type="checkbox" onclick="document.getElementById('diceChal').disabled=!this.checked;">
<span class="tooltip" title="Dice challenge">DC:</span>
<input type="number" name="diceChal" id="diceChal" min="1" max="999" disabled/><br />
<input type="checkbox" onclick="document.getElementById('diceRollsTaken').disabled=!this.checked;"/>
<input type="number" name="diceChal" id="diceChal" min="1" max="999" disabled><br>
<input type="checkbox" onclick="document.getElementById('diceRollsTaken').disabled=!this.checked;">
<span class="tooltip" title="Automatically close the dice call after this many rolls have been made.">Rolls Taken:</span>
<input type="number" name="diceRollsTaken" id="diceRollsTaken" min="1" max="99" disabled/><br />
<input type="submit" name="submit" value="Roll 'em"/>
<input type="number" name="diceRollsTaken" id="diceRollsTaken" min="1" max="99" disabled><br>
<input type="submit" name="submit" value="Roll 'em">
</form>
</div>
<div id="QMPostPoll" class="QMPostTabContent" style="display:none;">
@ -130,13 +131,19 @@
<a href="javascript:void(0);" id="pollInsertNewOption" onclick="insertPollOption()">[+]</a>
<a href="javascript:void(0);" onclick="removePollOption()">[-]</a>
<div id="pollOptions">
<div><input type="text" name="pollOption-1" class="pollOption" placeholder="Option 1" maxlength="200" /></div>
<div><input type="text" name="pollOption-2" class="pollOption" placeholder="Option 2" maxlength="200" /></div>
<div><input type="text" name="pollOption-1" class="pollOption" placeholder="Option 1" maxlength="200"></div>
<div><input type="text" name="pollOption-2" class="pollOption" placeholder="Option 2" maxlength="200"></div>
</div>
<hr>
<input type="checkbox" name="multi_choice" />Allow multiple choices<br />
<input type="checkbox" name="allow_writein" />Allow user-created options<br />
<input type="submit" name="submit" value="Submit" />
<input type="checkbox" name="multi_choice">Allow multiple choices<br>
<input type="checkbox" name="allow_writein">Allow user-created options<br>
<input type="submit" name="submit" value="Submit">
</form>
</div>
<div id="QMPage" class="QMPostTabContent" style="display:none;">
<form id="QMPageForm" action="javascript:void(0);" onsubmit="form_post('QMPageForm', 'new_page');">
New Page: <input type="text" name="page_title" maxlength="200" value="Page {{ pages.count() + 1 }}"><br>
<input type="submit" name="submit" value="Submit">
</form>
</div>
</div>
@ -159,7 +166,7 @@
{% endfor %}
{% endautoescape %}
</div>
<div id="messageTextDiv"><textarea id="messageTextArea"></textarea></div>
<div id="messageTextDiv"><textarea id="messageTextArea" maxlength="512"></textarea></div>
</div>
<div id="preview" style="display:none;"></div>
{% endblock %}

View File

@ -6,7 +6,7 @@ from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import Quest, DiceRoll, PollOption, PollVote, PageTitle
from .forms import EditQuest
from .forms import EditQuestForm
def index(request):
"""
@ -22,7 +22,7 @@ def quest(request, quest_id, page_num=1):
quest = Quest.objects.get(id=quest_id)
pages = PageTitle.objects.filter(quest=quest).order_by('page_num')
messages = quest.message_set.all()
posts = quest.post_set.all()
posts = quest.post_set.filter(page_num=page_num)
dice_rolls = DiceRoll.objects.filter(dicecall__post__quest=quest)
poll_options = PollOption.objects.filter(poll__post__quest=quest)
poll_votes = PollVote.objects.filter(option__poll__post__quest=quest)
@ -39,7 +39,7 @@ def edit_quest(request, quest_id, page_num=1):
if quest.owner != request.user:
return redirect('quest:quest', quest_id=quest_id, page_num=page_num)
if request.method == 'POST':
form = EditQuest(request.POST)
form = EditQuestForm(request.POST)
if form.is_valid():
quest.anon_name = form.cleaned_data['anon_name']
quest.save()