diff options
Diffstat (limited to 'src/application/templates/old/view_user.twig')
-rw-r--r-- | src/application/templates/old/view_user.twig | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/src/application/templates/old/view_user.twig b/src/application/templates/old/view_user.twig new file mode 100644 index 0000000..311dfb1 --- /dev/null +++ b/src/application/templates/old/view_user.twig @@ -0,0 +1,196 @@ +{% set canEdit = + currentUser is not null + and ( + ( + ctx.user.id == currentUser.id + and currentUser.hasPermission(permission("EDIT_OWN_USER")) + ) + or currentUser.hasPermission(permission("EDIT_OTHER_USER")) + ) %} + +{% set isOwnProfile = + currentUser is not null + and currentUser.id == ctx.user.id %} + +{% set sUserPossessive = isOwnProfile ? "Your posts" : "%display_name%'s posts" %} + +{% set emailPending = isOwnProfile and ctx.user.pendingEmail is not null %} + +{% set title = ctx.user.displayName %} + +{% extends "base.twig" %} + +{% block content %} + +<div class="clearfix"> + <img class="pull-left m-r-lg" src="?_action=profilepicture&user={{ ctx.user.id|url_encode }}" alt="{{ __("Profile picture") }}" width="64" height="64"> + <span class="h1">{{ ctx.user.displayName }}</span> + {% if isOwnProfile %} + <font color="red">[{{ __("You") }}]</font> + {% endif %}<br> + @{{ ctx.user.name }}<br> + <font color="gray">{{ __("Member since %join_date%", { + "join_date": '<span class="_date">' ~ (ctx.dateJoined.format("c")|e("html")) ~ '</span>', + }) }}</font> +</div> +<hr color="silver" noshade> + +{% if canEdit %} +<table> +<tr> +<td valign="top" width="100%"> +{% endif %} + +<h3>{{ __(sUserPossessive, { + "display_name": ctx.user.displayName|e("html"), +}) }}</h3> + +{% if ctx.posts|length > 0 %} + <table border="1" width="100%" cellspacing="0" cellpadding="4" bordercolor="silver"> + {% for post in ctx.posts %} + <tr> + <td> + {% set hasAttachments = ctx.attachments[post.id] is defined and ctx.attachments[post.id]|length > 0 %} + {% if hasAttachments %} + <img src="/ui/theme-files/old/paperclip_small.gif" class="inline-icon" width="10" height="10" draggable="false" alt=""> + {% endif %} + <a href="?_action=viewtopic&topic={{ post.topicId|url_encode }}#post-{{ post.id|url_encode }}">{{ renderPostSummary(post.content) }}</a> + <br> + {{ __("posted on %post_date% in %topic%", { + "post_date": '<span class="_time">' ~ post.postDate.format("c")|e("html") ~ '</span>', + "topic": '<br><font color="green">' + ~ (ctx.topics[post.topicId].isLocked ? ('<img src="/ui/theme-files/old/lock_small.gif" class="inline-icon" width="10" height="10" draggable="false" alt="' ~ __("This topic has been locked") ~ '"> ') : '') + ~ (ctx.topics[post.topicId] ? ctx.topics[post.topicId].title : null)|default(__("unknown"))|e("html") ~ '</font>', + }) }} + </td> + </tr> + {% endfor %} + </table> +{% else %} + {% include "components/alert_info.twig" with { message: __("This user has not posted anything yet") } %} +{% endif %} + +{% if canEdit %} +</td> +<td width="250" valign="top"> + <h3>{{ __("Edit profile") }}</h3> + {% set formId = "update_profile" %} + {% set formError = getAndClearFormError(formId) %} + {% if formError %} + {% include "components/alert_error.twig" with { message: formError } %} + {% endif %} + <form action="{{ g.server.REQUEST_URI }}" method="post" enctype="multipart/form-data"> + <input type="hidden" name="form_id" value="{{ formId }}"> + + <label for="i_display_name">{{ __("Display name:") }}</label><br> + <input required type="text" name="display_name" id="i_display_name" value="{{ ctx.user.displayName }}"><br> + <br> + + <label for="i_name">{{ __("Username:") }}</label><br> + {% if ctx.lastNameChangeTooRecent %} + <input type="text" id="i_name" value="{{ ctx.user.name }}" disabled><br> + <font color="red"><small><strong>{{ __("You can only change your username every 30 days!") }}</strong></small></font><br> + {% else %} + <input required type="text" name="name" id="i_name" value="{{ ctx.user.name }}"><br> + {% endif %} + <br> + + <label for="i_email">{{ __("Email address:") }}</label><br> + {% if emailPending %} + <input type="email" id="i_email" value="{{ ctx.user.email }}" disabled><br> + {% else %} + <input required type="email" id="i_email" name="email" value="{{ ctx.user.email }}"><br> + {% endif %} + + + <label>{{ __("Profile picture:") }}</label><br> + <div class="radio margin-top-0 {{ ctx.user.profilePicture is empty ? " disabled text-muted" }}"> + <label> + <input type="radio" name="pfp_action" id="pfp_action_1" value="keep"{{ ctx.user.profilePicture is not empty ? ' checked' : ' disabled' }}> + {{ __("Keep current profile picture") }} + </label> + </div> + <div class="radio"> + <label> + <input type="radio" name="pfp_action" id="pfp_action_2" value="remove"{{ ctx.user.profilePicture is empty ? ' checked' : '' }}> + {% if ctx.user.profilePicture is empty %} + {{ __("No profile picture") }} + {% else %} + {{ __("Remove profile picture") }} + {% endif %} + </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="m-l-lg" style="width:180px"><br> + <br> + + <button type="submit">{{ __("Save changes") }}</button><br> + </form> + {% if isOwnProfile %} + <hr color="silver" noshade> + <h3>{{ __("Change password") }}</h3> + {% set formId = "update_password" %} + {% set formError = getAndClearFormError(formId) %} + {% if formError %} + {% include "components/alert_error.twig" with { message: formError } %} + {% endif %} + <form action="{{ g.server.REQUEST_URI }}" method="post"> + <input type="hidden" name="form_id" value="{{ formId }}"> + + <label for="i_current_password">{{ __("Current password:") }}</label><br> + <input autocomplete="current-password" required class="form-control" type="password" name="current_password" id="i_current_password" required><br> + <br> + + <label for="i_new_password">{{ __("New password:") }}</label><br> + <input autocomplete="new-password" required class="form-control" type="password" name="new_password" id="i_new_password" required><br> + <br> + + <label for="i_retype_password">{{ __("Retype password:") }}</label><br> + <input autocomplete="new-password" required class="form-control" type="password" name="retype_password" id="i_retype_password" required><br> + <br> + + <button type="submit">{{ __("Change password") }}</button> + </form> + {% endif %} +</td> +</tr> +</table> +{% 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"); + }); + }); +}); +{% if canEdit %} +$(function() { + function _hide() { + $("#i_pfp").hide().prop("disabled", true).prop("required", false); + $("#i_pfp + .file-input-group").hide().find("button").prop("disabled", true); + } + _hide(); + setTimeout(_hide, 10); + $("[name='pfp_action']").on("change input check click", function() { + if ($("#pfp_action_3").is(":checked")) { + $("#i_pfp").show().prop("disabled", false).prop("required", true); + $("#i_pfp + .file-input-group").show().find("button").prop("disabled", false); + } else { + _hide(); + } + }) +}); +{% endif %} +</script> + +{% endblock %} |