summaryrefslogtreecommitdiff
path: root/src/application
diff options
context:
space:
mode:
Diffstat (limited to 'src/application')
-rw-r--r--src/application/mystic/forum/orm/UserPermissions.php5
-rw-r--r--src/application/views/form_addpost.php2
-rw-r--r--src/application/views/form_delete_topic_confirm.php22
-rw-r--r--src/application/views/nav_guest.php4
-rw-r--r--src/application/views/nav_logged_in.php2
-rw-r--r--src/application/views/view_topic_start.php39
6 files changed, 66 insertions, 8 deletions
diff --git a/src/application/mystic/forum/orm/UserPermissions.php b/src/application/mystic/forum/orm/UserPermissions.php
index cd2fdf4..47af076 100644
--- a/src/application/mystic/forum/orm/UserPermissions.php
+++ b/src/application/mystic/forum/orm/UserPermissions.php
@@ -33,6 +33,7 @@ final class UserPermissions {
public const DELETE_OTHER_USER = 0x8000;
public const DELETE_OTHER_TOPIC = 0x10000;
+ public const EDIT_OTHER_TOPIC = 0x20000;
////////
@@ -40,6 +41,7 @@ final class UserPermissions {
| self::EDIT_OWN_POST
| self::DELETE_OWN_POST
| self::CREATE_OWN_TOPIC
+ | self::EDIT_OWN_TOPIC
| self::DELETE_OWN_TOPIC
| self::CREATE_OWN_ATTACHMENT
| self::EDIT_OWN_ATTACHMENT
@@ -50,7 +52,8 @@ final class UserPermissions {
public const GROUP_MOD = self::GROUP_USER
| self::EDIT_OTHER_POST
| self::DELETE_OTHER_USER
- | self::DELETE_OTHER_TOPIC;
+ | self::DELETE_OTHER_TOPIC
+ | self::EDIT_OTHER_TOPIC;
public const GROUP_ADMIN = self::GROUP_MOD
| self::CREATE_OTHER_USER
diff --git a/src/application/views/form_addpost.php b/src/application/views/form_addpost.php
index 88eda27..88648b4 100644
--- a/src/application/views/form_addpost.php
+++ b/src/application/views/form_addpost.php
@@ -20,7 +20,7 @@ if (($_formError = RequestUtils::getAndClearFormError()) !== null) {
<textarea class="form-control" id="i_message" name="message" required rows="12" cols="60" style="resize:vertical;max-height:499px"></textarea>
</div>
<div class="form-group">
- <label for="i_files">Attachments: <small>(max. 4 files, max. 2 MiB each)</small></label>
+ <label for="i_files">Attachments: <small>(max. <?= htmlentities(MAX_ATTACHMENT_COUNT) ?> files, max. <?= htmlentities(MAX_ATTACHMENT_SIZE >> 20) ?> MiB each)</small></label>
<input type="file" name="files[]" id="i_files" multiple accept="*/*">
</div>
<button type="submit" class="btn btn-success">Post reply</button>
diff --git a/src/application/views/form_delete_topic_confirm.php b/src/application/views/form_delete_topic_confirm.php
new file mode 100644
index 0000000..d38ffaa
--- /dev/null
+++ b/src/application/views/form_delete_topic_confirm.php
@@ -0,0 +1,22 @@
+<div class="panel panel-danger">
+ <div class="panel-heading">
+ <h3 class="panel-title">Do you want to delete this topic?</h3>
+ </div>
+ <div class="panel-body">
+ Are you sure you want to delete the topic <strong><em><?= htmlentities($topic->title) ?></em></strong> <strong>including all posts and attachments</strong>?<br>
+ </div>
+ <div class="panel-footer">
+ <div class="text-right">
+ <form action="." method="get" class="seamless-inline">
+ <input type="hidden" name="_action" value="viewtopic">
+ <input type="hidden" name="topic" value="<?= htmlentities($topic->id) ?>">
+ <button class="btn btn-default">Keep topic</button>
+ </form>
+ <form action="?_action=deletetopic" method="post" class="seamless-inline">
+ <input type="hidden" name="topic" value="<?= htmlentities($topic->id) ?>">
+ <input type="hidden" name="confirm" value="<?= htmlentities(base64_encode(hash("sha256", "confirm" . $topic->id, true))); ?>">
+ <button class="btn btn-danger">Delete topic &amp; posts</button>
+ </form>
+ </div>
+ </div>
+</div>
diff --git a/src/application/views/nav_guest.php b/src/application/views/nav_guest.php
index 433c487..f897763 100644
--- a/src/application/views/nav_guest.php
+++ b/src/application/views/nav_guest.php
@@ -1,6 +1,6 @@
<ul class="nav navbar-nav navbar-right">
-<li<?= $GLOBALS["action"] === "auth" ? ' class="active"' : '' ?>><a href="?_action=auth">Log in</a></li>
+<li<?= $GLOBALS["action"] === "auth" ? ' class="active"' : '' ?>><a href="?_action=auth&amp;next=<?= htmlentities(urlencode($_SERVER["REQUEST_URI"])) ?>">Log in</a></li>
<?php if (REGISTRATION_ENABLED): ?>
-<li<?= $GLOBALS["action"] === "register" ? ' class="active"' : '' ?>><a href="?_action=register">Register</a></li>
+<li<?= $GLOBALS["action"] === "register" ? ' class="active"' : '' ?>><a href="?_action=register&amp;next=<?= htmlentities(urlencode($_SERVER["REQUEST_URI"])) ?>">Register</a></li>
<?php endif; ?>
</ul> \ No newline at end of file
diff --git a/src/application/views/nav_logged_in.php b/src/application/views/nav_logged_in.php
index fd46d6e..f899ad8 100644
--- a/src/application/views/nav_logged_in.php
+++ b/src/application/views/nav_logged_in.php
@@ -10,5 +10,5 @@ use mystic\forum\orm\User;
<?php endif; ?>
</p></li>
<li><a href="?_action=viewuser&amp;user=<?= htmlentities(urlencode($user->id)) ?>"><span class="glyphicon glyphicon-user" aria-hidden="true"><span class="sr-only">View profile</span></a></li>
-<li><a href="?_action=logout"><span class="glyphicon glyphicon-log-out" aria-hidden="true"><span class="sr-only">Log out</span></a></li>
+<li><a href="?_action=logout&amp;next=<?= htmlentities(urlencode($_SERVER["REQUEST_URI"])) ?>"><span class="glyphicon glyphicon-log-out" aria-hidden="true"><span class="sr-only">Log out</span></a></li>
</ul>
diff --git a/src/application/views/view_topic_start.php b/src/application/views/view_topic_start.php
index 84a29de..4006982 100644
--- a/src/application/views/view_topic_start.php
+++ b/src/application/views/view_topic_start.php
@@ -3,13 +3,19 @@ use mystic\forum\orm\UserPermissions;
$canReply = $GLOBALS["currentUser"]?->hasPermission(UserPermissions::CREATE_OWN_POST) ?? false;
+$canEdit = ($GLOBALS["currentUser"]?->id === $topicAuthor->id && $topicAuthor->hasPermission(UserPermissions::EDIT_OWN_TOPIC))
+ || ($GLOBALS["currentUser"]?->hasPermission(UserPermissions::EDIT_OTHER_TOPIC));
+
$canDelete = ($GLOBALS["currentUser"]?->id === $topicAuthor->id && $topicAuthor->hasPermission(UserPermissions::DELETE_OWN_TOPIC))
|| ($GLOBALS["currentUser"]?->hasPermission(UserPermissions::DELETE_OTHER_TOPIC));
?>
-<div class="page-header margin-top-0">
- <div role="heading" class="h1 margin-top-0">
+<div class="page-header margin-top-0 clearfix">
+ <div role="heading" class="h1 margin-top-0" id="displayHeading">
<?= htmlentities($topic->title) ?>
<div class="pull-right">
+ <?php if ($canEdit): ?>
+ <button id="btn-edit-title" class="btn btn-default js-only"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Edit title</button>
+ <?php endif; ?>
<?php if ($canReply): ?>
<button id="btn-reply" class="btn btn-default js-only"><span class="glyphicon glyphicon-share-alt" aria-hidden="true"></span> Reply</button>
<?php endif; ?>
@@ -21,6 +27,20 @@ $canDelete = ($GLOBALS["currentUser"]?->id === $topicAuthor->id && $topicAuthor-
<?php endif; ?>
</div>
</div>
+ <?php if ($canEdit): ?>
+ <form action="?_action=updatetopic" method="post" id="editHeading" style="display: none;" class="form-inline seamless-inline" style="display: block">
+ <input type="hidden" name="topic" value="<?= htmlentities(urlencode($topic->id)) ?>">
+ <div class="row">
+ <div class="col-md-8">
+ <input type="text" class="form-control" name="title" id="i_edit_title" value="<?= htmlentities($topic->title) ?>" style="box-sizing: border-box; width: 100%">
+ </div>
+ <div class="col-md-4 text-right">
+ <button type="button" id="topicTitleEditCancel" class="btn btn-default"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Cancel</button>
+ <button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span> Save changes</button>
+ </div>
+ </div>
+ </form>
+ <?php endif; ?>
</div>
<p>
Started by
@@ -31,8 +51,21 @@ Started by
<?php endif; ?>
on <span class="_time"><?= htmlentities($topic->creationDate->format("c")) ?></span>
</p>
-<?php if ($canReply): ?>
<script>
+<?php if ($canEdit): ?>
+$(function() {
+ $("#btn-edit-title").click(function() {
+ $("#displayHeading").hide();
+ $("#editHeading").show();
+ $("#i_edit_title").focus();
+ });
+ $("#topicTitleEditCancel").click(function() {
+ $("#displayHeading").show();
+ $("#editHeading").hide();
+ });
+});
+<?php endif; ?>
+<?php if ($canReply): ?>
$(function() {
function focusReplyBox() {
var msgInput = $("#i_message");