diff options
Diffstat (limited to 'src/application')
-rw-r--r-- | src/application/mystic/forum/orm/UserPermissions.php | 5 | ||||
-rw-r--r-- | src/application/views/form_addpost.php | 2 | ||||
-rw-r--r-- | src/application/views/form_delete_topic_confirm.php | 22 | ||||
-rw-r--r-- | src/application/views/nav_guest.php | 4 | ||||
-rw-r--r-- | src/application/views/nav_logged_in.php | 2 | ||||
-rw-r--r-- | src/application/views/view_topic_start.php | 39 |
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 & 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&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&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&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&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"); |