diff options
author | citrons <citrons> | 2021-08-05 11:28:53 +0000 |
---|---|---|
committer | citrons <citrons> | 2021-08-05 11:28:53 +0000 |
commit | 76cb3a6be912e55ffe7f6e7c221000f57cff6d4a (patch) | |
tree | 7b3f47687d9b41e112c15055ea71a279a322ff60 /apioforum/templates | |
parent | fd04b1ea444b2b77cb56ed7a67b8ac2225cfa6bd (diff) |
make many of the permissions do things. somewhat functional menus for role configuration and assignment. big brother thoughtcrime message deletion. mark roles next to usernames on posts. other things I may have forgot
Diffstat (limited to 'apioforum/templates')
-rw-r--r-- | apioforum/templates/common.html | 45 | ||||
-rw-r--r-- | apioforum/templates/delete_thread.html | 18 | ||||
-rw-r--r-- | apioforum/templates/edit_permissions.html | 9 | ||||
-rw-r--r-- | apioforum/templates/role_assignment.html | 53 | ||||
-rw-r--r-- | apioforum/templates/view_forum.html | 27 | ||||
-rw-r--r-- | apioforum/templates/view_thread.html | 9 |
6 files changed, 137 insertions, 24 deletions
diff --git a/apioforum/templates/common.html b/apioforum/templates/common.html index b0bf713..9e60e81 100644 --- a/apioforum/templates/common.html +++ b/apioforum/templates/common.html @@ -6,28 +6,55 @@ {{url_for('thread.view_thread', thread_id=post.thread)}}#post_{{post.id}} {%- endmacro %} -{% macro disp_post(post, buttons=False) %} -<div class="post" id="post_{{post.id}}"> +{% macro disp_post(post, buttons=False, forum=None) %} +<div class="post {% if post.deleted %}deleted-post{% endif %}" id="post_{{post.id}}"> <div class="post-heading"> <span class="post-heading-a"> - {{disp_user(post.author)}} + {% if not post.deleted %} + {{disp_user(post.author)}} + {% else %} + <span class="username">big brother</span> + {% endif %} + + {% if forum != None %} + {% set role = get_user_role(forum, post.author) %} + {% if post.deleted %} + <span class="user-role"> + (bureaucrat) + </span> + {% elif role != "other" %} + <span class="user-role"> + ({{ role }}) + </span> + {% endif %} + {% endif %} + {{ts(post.created)}} + {% if post.edited %} (edited {{ts(post.updated)}}) {% endif %} </span> <span class="post-heading-b"> - {% if buttons and post.author == g.user %} - <a class="actionbutton" - href="{{url_for('thread.edit_post',post_id=post.id)}}">edit</a> - <a class="actionbutton" - href="{{url_for('thread.delete_post',post_id=post.id)}}">delete</a> + {% if buttons and not post.deleted %} + {% if post.author == g.user %} + <a class="actionbutton" + href="{{url_for('thread.edit_post',post_id=post.id)}}">edit</a> + {% endif %} + {% if post.author == g.user or (forum and has_permission(forum, g.user, "p_delete_posts")) %} + <a class="actionbutton" + href="{{url_for('thread.delete_post',post_id=post.id)}}">delete</a> + {% endif %} {% endif %} <a class="post-anchor-link" href="{{post_url(post)}}">#{{post.id}}</a> </span> </div> <div class="post-content"> - {{ post.content|md|safe }} + {% if not post.deleted %} + {{ post.content|md|safe }} + {% else %} + this post never existed. + {% endif %} </div> </div> {% endmacro %} diff --git a/apioforum/templates/delete_thread.html b/apioforum/templates/delete_thread.html new file mode 100644 index 0000000..aaf1de3 --- /dev/null +++ b/apioforum/templates/delete_thread.html @@ -0,0 +1,18 @@ +{% from 'common.html' import ts %} +{% extends 'base.html' %} +{% block header %} +<h1>{% block title %}delete thread '{{thread.title}}'{% endblock %}</h1> +{% endblock %} + +{% block content %} + +<form method="post"> +<p>deleting thread created {{ts(thread.created)}} ago with {{post_count}} posts</p> +{% if post_count > 50 %} +<p class="warning">thread contains more than 50 posts!</p> +{% endif %} +<p>confirm delete?</p> +<input type="submit" value="delete"> +<a href="{{url_for('thread.view_thread',thread_id=thread.id)}}">cancel</a> +</form> +{% endblock %} diff --git a/apioforum/templates/edit_permissions.html b/apioforum/templates/edit_permissions.html index 1e4e848..f91c710 100644 --- a/apioforum/templates/edit_permissions.html +++ b/apioforum/templates/edit_permissions.html @@ -1,5 +1,4 @@ {% extends 'base.html' %} -{% from 'common.html' import tag %} {% block header %}<h1>{% block title %}role permissions for '{{forum.name}}'{% endblock %}</h1>{% endblock %} {% block content %} <p> @@ -37,11 +36,13 @@ {{perm("p_view_threads","view threads", "allow users with the role to view threads in the forum")}} {{perm("p_manage_threads","configure others' threads", - "allow users with the role to delete, lock, or modify the title/tags for others' threads")}} + "allow users with the role to modify the title/tags for others' threads or lock it to prevent new posts")}} + {{perm("p_delete_posts","delete others' posts and threads", + "allow users with the role to delete others' posts and threads")}} {{perm("p_create_polls","create polls", - "allow users with the role to create poll threads")}} + "allow users with the role to add a poll to a thread")}} {{perm("p_vote","vote", - "allow users with the role to vote on poll threads")}} + "allow users with the role to vote in polls")}} {{perm("p_create_subforum","create subforæ", "allow users with the role to create subforæ in this forum. " + "they will automatically become a bureaucrat in this subforum.")}} diff --git a/apioforum/templates/role_assignment.html b/apioforum/templates/role_assignment.html new file mode 100644 index 0000000..d56c060 --- /dev/null +++ b/apioforum/templates/role_assignment.html @@ -0,0 +1,53 @@ +{% extends 'base.html' %} +{% block header %}<h1>{% block title %}configure user role in '{{forum.name}}'{% endblock %}</h1>{% endblock %} +{% block content %} +<p> + each user has a role in the forum. + here, a user may be assigned a role in the forum. + otherwise, the user's role is the same as the parent forum. + everyone's role is "other" by default. +</p> +{% if not is_bureaucrat(forum.id, g.user) %} + <p> + you are only allowed to approve members in this forum. + </p> +{% endif %} +<form method="post" action="{{url_for('forum.view_user_role',forum_id=forum.id)}}"> + <label for="user">role settings for user: </label> + <input type="text" class="name-input" id="user" name="user" value="{{user}}"/> + <input type="submit" value="view"/> +</form> + +{% if invalid_user %} + <p>requested user does not exist.</p> + <p> + <a href="{{url_for('forum.view_forum',forum_id=forum.id)}}">cancel</a> + </p> +{% elif user %} +<hr/> +<form method="post"> + <p>{{user}}'s role in this forum is "{{role}}"</p> + {% if role == "other" or is_bureaucrat(forum.id, g.user) %} + <label for="role">assign role: </label> + <select name="role" id="role" value=""> + <option value="">(no assigned role)</option> + {% for role in forum_roles %} + <option value="{{role}}">{{role}}</option> + {% endfor %} + </select> + {% else %} + <p>you do not have permission to change the role of this user</p> + {% endif %} + <p>confirm changes?</p> + <p> + <input type="submit" value="confirm"> + <a href="{{url_for('forum.view_forum',forum_id=forum.id)}}">cancel</a> + </p> +</form> +{% else %} +<p> + <a href="{{url_for('forum.view_forum',forum_id=forum.id)}}">cancel</a> +</p> +{% endif %} + +{% endblock %} diff --git a/apioforum/templates/view_forum.html b/apioforum/templates/view_forum.html index c5666c8..a3563be 100644 --- a/apioforum/templates/view_forum.html +++ b/apioforum/templates/view_forum.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% from 'common.html' import ts, tag, disp_user, post_url, forum_breadcrumb %} {% block header %} -<h1>{% block title %}{{forum.name}}{%endblock%}</h1> +<h1>{% block title %}{{forum.name}}{% endblock %} <span class="thing-id">#{{forum.id}}</span></h1> {% if forum.id != 1 %} {{ forum_breadcrumb(forum) }} {% endif %} @@ -9,11 +9,15 @@ {%block content%} {{forum.description|md|safe}} -{% if is_bureaucrat(forum.id, g.user) %} - <p><a class="actionbutton" href="{{url_for('forum.edit_roles',forum_id=forum.id)}}">role/permission settings</a></p> -{% endif %} -<hr/> - +<p> + {% if is_bureaucrat(forum.id, g.user) %} + <a class="actionbutton" href="{{url_for('forum.edit_roles',forum_id=forum.id)}}">role/permission settings</a> + <a class="actionbutton" href="{{url_for('forum.view_user_role',forum_id=forum.id)}}">assign roles</a> + {% endif %} + {% if not is_bureaucrat(forum.id, g.user) and has_permission(forum.id, g.user, "p_approve") %} + <a class="actionbutton" href="{{url_for('forum.view_user_role',forum_id=forum.id)}}">approve users</a> + {% endif %} +</p> {% if subforums %} <h2>subforæ</h2> <div class="forum-list"> @@ -67,7 +71,7 @@ {{ ts(thread.created) }} </div> </div> - {#{% if thread.mrp_id %}#} + {% if not thread.mrp_deleted %} <div class="listing-caption"> {{ disp_user(thread.mrp_author) }} <span class="thread-preview-ts"> @@ -79,7 +83,14 @@ </a> </span> </div> - {#{% endif %}#} + {% else %} + <div class="listing-caption"> + <a class="thread-preview-post" + href="{{url_for('thread.view_thread',thread_id=thread.id)}}#post_{{thread.mrp_id}}"> + latest post + </a> + </div> + {% endif %} </div> {%endfor%} </div> diff --git a/apioforum/templates/view_thread.html b/apioforum/templates/view_thread.html index dd41d87..da8df74 100644 --- a/apioforum/templates/view_thread.html +++ b/apioforum/templates/view_thread.html @@ -1,16 +1,19 @@ {% from 'common.html' import disp_post,tag,thread_breadcrumb %} {% extends 'base.html' %} {% block header %} -<h1>{%block title %}{{thread.title}}{% endblock %}</h1> +<h1>{%block title %}{{thread.title}}{% endblock %} <span class="thing-id">#{{thread.id}}</span></h1> {{ thread_breadcrumb(thread) }} {% endblock %} {%block content%} <div class="thread-top-bar"> <span class="thread-top-bar-a"> - {% if g.user == thread.creator %} + {% if g.user == thread.creator or has_permission(thread.forum, g.user, "p_manage_threads") %} <a class="actionbutton" href="{{url_for('thread.config_thread',thread_id=thread.id)}}">configure thread</a> {% endif %} + {% if has_permission(thread.forum, g.user, "p_delete_posts") %} + <a class="actionbutton" href="{{url_for('thread.delete_thread',thread_id=thread.id)}}">delete thread</a> + {% endif %} </span> <span class="thread-top-bar-b"> @@ -22,7 +25,7 @@ <div class="posts"> {% for post in posts %} - {{ disp_post(post, True) }} + {{ disp_post(post, buttons=True, forum=thread.forum) }} {% endfor %} </div> {% if g.user %} |