diff options
Diffstat (limited to 'src/application/views')
-rw-r--r-- | src/application/views/form_addpost.php | 2 | ||||
-rw-r--r-- | src/application/views/form_delete_post_confirm.php | 17 | ||||
-rw-r--r-- | src/application/views/form_login.php | 2 | ||||
-rw-r--r-- | src/application/views/template_end.php | 8 | ||||
-rw-r--r-- | src/application/views/template_start.php | 4 | ||||
-rw-r--r-- | src/application/views/view_post.php | 53 | ||||
-rw-r--r-- | src/application/views/view_topic_start.php | 28 | ||||
-rw-r--r-- | src/application/views/view_user.php | 154 |
8 files changed, 232 insertions, 36 deletions
diff --git a/src/application/views/form_addpost.php b/src/application/views/form_addpost.php index b3cd6ca..88eda27 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:</label> + <label for="i_files">Attachments: <small>(max. 4 files, max. 2 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_post_confirm.php b/src/application/views/form_delete_post_confirm.php index 9d04095..2dc417d 100644 --- a/src/application/views/form_delete_post_confirm.php +++ b/src/application/views/form_delete_post_confirm.php @@ -1,16 +1,21 @@ <div class="panel panel-danger"> <div class="panel-heading"> - <h3 class="panel-title">Do you want to delete your post?</h3> + <?php if ($postAuthor->id === $GLOBALS["currentUser"]->id): ?> + <h3 class="panel-title">Do you want to delete your post?</h3> + <?php else: ?> + <h3 class="panel-title">Do you want to delete <?= htmlentities($postAuthor->displayName) ?>'s post?</h3> + <?php endif; ?> </div> <div class="panel-body"> - Are you sure you want to delete the following post: - <div class="well"> - <?= renderPost($post->content); ?> - </div> + Are you sure you want to delete the following post:<br> + <?php _view("view_post", [ + ...$___PARAMS, + "hide_actions" => true + ]) ?> </div> <div class="panel-footer"> <div class="text-right"> - <form action="." method="get" class="seamless-inline"> + <form action=".#post-<?= htmlentities(urlencode($post->id)) ?>" method="get" class="seamless-inline"> <input type="hidden" name="_action" value="viewtopic"> <input type="hidden" name="topic" value="<?= htmlentities($post->topicId) ?>"> <button class="btn btn-default">Keep my post</button> diff --git a/src/application/views/form_login.php b/src/application/views/form_login.php index 0e98a24..8ddb22e 100644 --- a/src/application/views/form_login.php +++ b/src/application/views/form_login.php @@ -20,7 +20,7 @@ if (($_formError = RequestUtils::getAndClearFormError()) !== null) { <form action="<?= htmlentities($_SERVER["REQUEST_URI"]) ?>" method="post"> <div class="form-group"> <label for="i_username">Username:</label> - <input class="form-control" type="text" id="i_username" name="username" value="<?= htmlentities($lastForm["username"] ?? "") ?>" required> + <input class="form-control" type="text" id="i_username" name="username" value="<?= htmlentities($lastForm["username"] ?? "") ?>" required autofocus> </div> <div class="form-group"> diff --git a/src/application/views/template_end.php b/src/application/views/template_end.php index f7f70a9..27fc3ba 100644 --- a/src/application/views/template_end.php +++ b/src/application/views/template_end.php @@ -15,6 +15,14 @@ $(function() { var date = new Date($(e).text()); $(e).text(date.toLocaleString()); }); + $("._date").each(function(i, e) { + var date = new Date($(e).text()); + $(e).text(date.toLocaleDateString()); + }); + $("._time-only").each(function(i, e) { + var date = new Date($(e).text()); + $(e).text(date.toLocaleTimeString()); + }); }); </script> diff --git a/src/application/views/template_start.php b/src/application/views/template_start.php index e011f74..4cfdb74 100644 --- a/src/application/views/template_start.php +++ b/src/application/views/template_start.php @@ -8,9 +8,7 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title><?= htmlentities($_title ?? "") ?></title> - <link rel="stylesheet" href="/ui/dist/css/bootstrap.min.css"> - <link rel="stylesheet" href="/ui/dist/css/bootstrap-theme.min.css"> - <link rel="stylesheet" href="/ui/site.css"> + <link rel="stylesheet" href="/ui/theme-default.css"> <script src="/ui/jquery-1.12.4.min.js"></script> <script src="/ui/dist/js/bootstrap.min.js"></script> <script src="/ui/modernizr-2.6.2.min.js"></script> diff --git a/src/application/views/view_post.php b/src/application/views/view_post.php index 0776fb5..5022d4a 100644 --- a/src/application/views/view_post.php +++ b/src/application/views/view_post.php @@ -11,36 +11,49 @@ $canReply = $GLOBALS["currentUser"]?->hasPermission(UserPermissions::CREATE_OWN_ $canDelete = ($GLOBALS["currentUser"]?->id === $postAuthor?->id && $postAuthor?->hasPermission(UserPermissions::DELETE_OWN_POST)) || ($GLOBALS["currentUser"]?->hasPermission(UserPermissions::DELETE_OTHER_POST)); +$hide_actions ??= false; +$hide_pfp ??= false; +$your_are_the_author = $GLOBALS["currentUser"]?->id === $postAuthor?->id; + ?> <?php if ($post->deleted): ?> -<div class="media"> +<div class="media" id="post-<?= htmlentities($post->id) ?>"> <div class="media-left hidden-sm hidden-xs"> <div class="media-object" style="width:64px"></div> </div> <div class="media-body"> - <div class="well"> + <div class="well icon-well text-warning"> + <span class="glyphicon glyphicon-exclamation-sign color-warning" aria-hidden="true"></span> <em>This post has been deleted</em> </div> </div> </div> <?php else: ?> -<div class="media"> +<div class="media" id="post-<?= htmlentities($post->id) ?>"> +<?php if (!$hide_pfp): ?> <div class="media-left hidden-sm hidden-xs"> <?php if ($postAuthor): ?> - <a href="?_action=viewuser&user=<?= htmlentities(urlencode($postAuthor->id)) ?>"> - <img class="media-object" src="/ui/placeholder.svg" alt="" width="64" height="64"> - </a> + <?php if ($hide_actions): ?> + <img class="media-object" alt="Profile picture" src="?_action=profilepicture&user=<?= htmlentities(urlencode($postAuthor->id)) ?>" alt="" width="64" height="64"> + <?php else: ?> + <a href="?_action=viewuser&user=<?= htmlentities(urlencode($postAuthor->id)) ?>"> + <img class="media-object" alt="Profile picture" src="?_action=profilepicture&user=<?= htmlentities(urlencode($postAuthor->id)) ?>" alt="" width="64" height="64"> + </a> + <?php endif; ?> <?php else: ?> <div class="media-object" style="width:64px;height:64px"></div> <?php endif; ?> </div> +<?php endif; ?> <div class="media-body"> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title"> + <?php if (!$hide_actions): ?> <div class="pull-right"> <?php if ($canReply): ?> + <a href="#post-<?= htmlentities(urlencode($post->id)) ?>" class="btn btn-default"><span class="glyphicon glyphicon-link" aria-hidden="true"></span><span class="sr-only">Permalink</span></a> <button data-text="<?= htmlentities($post->content) ?>" class="btn btn-default js-only _reply-post"><span class="glyphicon glyphicon-share-alt" aria-hidden="true"></span><span class="sr-only">Reply to post</span></button> <?php endif; ?> <?php if ($canDelete): ?> @@ -50,8 +63,16 @@ $canDelete = ($GLOBALS["currentUser"]?->id === $postAuthor?->id && $postAuthor?- </form> <?php endif; ?> </div> + <?php endif; ?> <?php if ($postAuthor): ?> - <a href="?_action=viewuser&user=<?= htmlentities(urlencode($postAuthor->id)) ?>"><?= htmlentities($postAuthor->displayName) ?></a> + <?php if ($hide_actions): ?> + <?= htmlentities($postAuthor->displayName) ?> + <?php else: ?> + <a href="?_action=viewuser&user=<?= htmlentities(urlencode($postAuthor->id)) ?>"><?= htmlentities($postAuthor->displayName) ?></a> + <?php endif; ?> + <?php if ($your_are_the_author): ?> + <span class="text-normal label label-primary">You</span> + <?php endif; ?> <?php else: ?> <em class="text-muted">(deleted)</em> <?php endif; ?> @@ -63,9 +84,15 @@ $canDelete = ($GLOBALS["currentUser"]?->id === $postAuthor?->id && $postAuthor?- <?php if (count($imageAttachments) > 0): ?> <div class="post-images clearfix"> <?php /** @var Attachment $attachment */ foreach ($imageAttachments as $attachment): ?> - <a class="image-attachment" href="?_action=attachment&attachment=<?= htmlentities(urlencode($attachment->id)) ?>" title="<?= htmlentities($attachment->name) ?>"> - <img class="image-attachment-image" src="?_action=thumb&attachment=<?= htmlentities(urlencode($attachment->id)) ?>" alt="" width="110"> - </a> + <?php if ($hide_actions): ?> + <span class="image-attachment" title="<?= htmlentities($attachment->name) ?>"> + <img class="image-attachment-image" src="?_action=thumb&attachment=<?= htmlentities(urlencode($attachment->id)) ?>" alt="" width="110"> + </span> + <?php else: ?> + <a class="image-attachment" href="?_action=attachment&attachment=<?= htmlentities(urlencode($attachment->id)) ?>" title="<?= htmlentities($attachment->name) ?>"> + <img class="image-attachment-image" src="?_action=thumb&attachment=<?= htmlentities(urlencode($attachment->id)) ?>" alt="" width="110"> + </a> + <?php endif; ?> <?php endforeach; ?> </div> <?php endif; ?> @@ -74,7 +101,11 @@ $canDelete = ($GLOBALS["currentUser"]?->id === $postAuthor?->id && $postAuthor?- <div class="panel-footer"> <div class="btn-group"> <?php /** @var Attachment $attachment */ foreach ($fileAttachments as $attachment): ?> - <a class="btn btn-default" href="?_action=attachment&attachment=<?= htmlentities(urlencode($attachment->id)) ?>"><?= htmlentities($attachment->name) ?></a> + <?php if ($hide_actions): ?> + <button class="btn btn-default"><?= htmlentities($attachment->name) ?></button> + <?php else: ?> + <a class="btn btn-default" href="?_action=attachment&attachment=<?= htmlentities(urlencode($attachment->id)) ?>"><?= htmlentities($attachment->name) ?></a> + <?php endif; ?> <?php endforeach; ?> </div> </div> diff --git a/src/application/views/view_topic_start.php b/src/application/views/view_topic_start.php index 5818483..84a29de 100644 --- a/src/application/views/view_topic_start.php +++ b/src/application/views/view_topic_start.php @@ -6,19 +6,21 @@ $canReply = $GLOBALS["currentUser"]?->hasPermission(UserPermissions::CREATE_OWN_ $canDelete = ($GLOBALS["currentUser"]?->id === $topicAuthor->id && $topicAuthor->hasPermission(UserPermissions::DELETE_OWN_TOPIC)) || ($GLOBALS["currentUser"]?->hasPermission(UserPermissions::DELETE_OTHER_TOPIC)); ?> -<div role="heading" class="h1"> -<?= htmlentities($topic->title) ?> -<div class="pull-right"> -<?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; ?> -<?php if ($canDelete): ?> -<form action="?_action=deletetopic" method="post" class="seamless-inline"> -<input type="hidden" name="topic" value="<?= htmlentities($topic->id) ?>"> -<button type="submit" class="btn btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Delete topic</button> -</form> -<?php endif; ?> -</div> +<div class="page-header margin-top-0"> + <div role="heading" class="h1 margin-top-0"> + <?= htmlentities($topic->title) ?> + <div class="pull-right"> + <?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; ?> + <?php if ($canDelete): ?> + <form action="?_action=deletetopic" method="post" class="seamless-inline"> + <input type="hidden" name="topic" value="<?= htmlentities($topic->id) ?>"> + <button type="submit" class="btn btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Delete topic</button> + </form> + <?php endif; ?> + </div> + </div> </div> <p> Started by diff --git a/src/application/views/view_user.php b/src/application/views/view_user.php index 334928b..23d2b71 100644 --- a/src/application/views/view_user.php +++ b/src/application/views/view_user.php @@ -1 +1,153 @@ -<h1><?= htmlentities($user->displayName) ?></h1> +<?php + +use mystic\forum\orm\UserPermissions; +use mystic\forum\utils\RequestUtils; +use mystic\forum\utils\StringUtils; + +/** @var mystic\forum\orm\User $user */ +/** @var bool $lastNameChangeTooRecent */ + +$canEdit = ($user->id === $GLOBALS["currentUser"]?->id && $user->hasPermission(UserPermissions::EDIT_OWN_USER)) + || $GLOBALS["currentUser"]?->hasPermission(UserPermissions::EDIT_OTHER_USER); + +$isOwnProfile = $user->id === $GLOBALS["currentUser"]?->id; + +$sIsOwn_your = ""; +if ($isOwnProfile) + $sIsOwn_your = " your"; + +$sUserPossessive = ""; +if ($isOwnProfile) + $sUserPossessive = "Your"; +else + $sUserPossessive = $user->displayName . "'s"; + +$dateJoined = DateTime::createFromImmutable($user->created); +$dateJoined->setTime(0, 0, 0, 0); +?> + +<div class="clearfix"> + <img class="pull-left margin-right" src="?_action=profilepicture&user=<?= htmlentities(urlencode($user->id)) ?>"> + <span class="h1"><?= htmlentities($user->displayName) ?></span> + <?php if ($isOwnProfile): ?> + <span class="label label-primary">You</span> + <?php endif; ?><br> + @<?= htmlentities($user->name) ?> • <span class="text-muted">Member since <span class="_date"><?= htmlentities($dateJoined->format("c")); ?></span> +</div> + +<?php if ($canEdit): ?> +<div class="row"> +<div class="col-md-9"> +<?php endif; ?> + +<h3><?= $sUserPossessive ?> posts</h3> + +<?php if (count($posts) > 0): ?> + <div class="post-container"> + <div class="post-container-posts"> + <div class="list-group margin-top"> + <?php foreach ($posts as $post): if ($post->deleted) continue; ?> + <a href="?_action=viewtopic&topic=<?= htmlentities(urlencode($post->topicId)) ?>#post-<?= htmlentities(urlencode($post->id)) ?>" class="list-group-item"> + <?= htmlentities(StringUtils::truncate(strip_tags(renderPost($post->content)), 100)) ?><br> + <span class="text-muted">posted on <span class="_time"><?= htmlentities($post->postDate->format("c")) ?></span> in <em><?= htmlentities($topics[$post->topicId]?->title ?? "unknown") ?></em></span> + </a> + <?php endforeach; ?> + </div> + </div> + <div class="post-container-controls"> + <button class="btn btn-default">Show all posts</button> + </div> + </div> +<?php else: ?> + <div class="well icon-well text-info margin-top margin-bottom"> + <span class="glyphicon glyphicon-info-sign color-info" aria-hidden="true"></span> + <em>This user has not posted anything yet</em> + </div> +<?php endif; ?> + +<?php if ($canEdit): ?> +</div> + +<div class="col-md-3"> +<h3>Edit<?= $sIsOwn_your ?> profile</h3> +<?php +if (($_formError = RequestUtils::getAndClearFormError()) !== null) { + _view("alert_error", ["message" => $_formError]); +} +?> +<form action="<?= htmlentities($_SERVER["REQUEST_URI"]) ?>" method="post" enctype="multipart/form-data"> + <div class="form-group"> + <label for="i_display_name">Display name:</label> + <input required class="form-control" type="text" name="display_name" id="i_display_name" value="<?= htmlentities($user->displayName) ?>"> + </div> + <div class="form-group"> + <label for="i_name">Login name:</label> + <?php if ($lastNameChangeTooRecent): ?> + <input required class="form-control" type="text" id="i_name" value="<?= htmlentities($user->name) ?>" disabled> + <small class="text-danger"><strong>You can only change your username every 30 days!</strong></small> + <?php else: ?> + <input required class="form-control" type="text" name="name" id="i_name" value="<?= htmlentities($user->name) ?>"> + <?php endif; ?> + </div> + <div class="form-group"> + <label for="i_email">Email address:</label> + <input required class="form-control" type="email" id="i_email" value="<?= htmlentities($user->email) ?>" disabled> + </div> + <div class="form-group"> + <label>Profile picture:</label> +<?php +$_checkbox_disabled = empty($user->profilePicture); +$_checkbox_disabled_class = $_checkbox_disabled ? " disabled" : ""; +?> + <div class="radio margin-top-0 <?= $_checkbox_disabled_class ?>"> + <label> + <input type="radio" name="pfp_action" id="pfp_action_1" value="keep"<?= !empty($user->profilePicture) ? ' checked' : ' disabled' ?>> + Existing profile picture + </label> + </div> + <div class="radio"> + <label> + <input type="radio" name="pfp_action" id="pfp_action_2" value="remove"<?= empty($user->profilePicture) ? ' checked' : '' ?>> + No profile picture + </label> + </div> + <div class="radio"> + <label> + <input type="radio" name="pfp_action" value="replace" id="pfp_action_3"> + Upload new profile picture + </label> + </div> + <input type="file" name="pfp" id="i_pfp" accept="image/png,image/jpeg" class="margin-left-3x"> + </div> + <div class="form-group"> + <button type="submit" class="btn btn-success">Save changes</button> + </div> +</form> +</div> + +</div> +<?php endif; ?> + +<script> +$(function() { + $(".post-container").each(function(i, e) { + if ($(e).height() > 900) { // more than 800 so it doesn't collapse just a few pixels + $(e).addClass("collapsed"); + } + $(e).find(".post-container-controls button").click(function() { + $(e).removeClass("collapsed"); + }); + }); +}); +<?php if ($canEdit): ?> +$(function() { + $("#i_pfp").hide().prop("disabled", true).prop("required", false); + $("[name='pfp_action']").on("change input check click", function() { + if ($("#pfp_action_3").is(":checked")) + $("#i_pfp").show().prop("disabled", false).prop("required", true); + else + $("#i_pfp").hide().prop("disabled", true).prop("required", false); + }) +}); +<?php endif; ?> +</script> |