Browse Source

Some template fixes

Peter Justin 3 years ago
parent
commit
5ec47c8751

+ 5 - 5
docs/_templates/layout.html

@@ -73,14 +73,14 @@
 {%- if theme_fixed_sidebar|lower == 'true' %}
   <div class="container">
     {% if render_sidebar %}
-        <div class="col-xs-12 col-sm-4 col-md-4 col-lg-3">
+        <div class="col-12 col-sm-4 col-md-4 col-lg-3">
             {{ sidebar() }}
         </div>
     {% endif %}
 
     {%- block document %}
 
-          <div class="col-xs-12 col-sm-8 col-md-8 col-lg-9 page-content" role="main">
+          <div class="col-12 col-sm-8 col-md-8 col-lg-9 page-content" role="main">
             <div class="paper">
             {% block body %} {% endblock %}
             </div>
@@ -99,18 +99,18 @@
 <footer>
     <div class="container">
         <div class="row">
-            <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4">
+            <div class="col-4 col-sm-4 col-md-4 col-lg-4">
                 <p class="copyright text-muted small pull-left">
                     &copy; 2013 - 2021 <a href="https://flaskbb.org">FlaskBB Team</a>
                 </p>
             </div>
-            <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4">
+            <div class="col-4 col-sm-4 col-md-4 col-lg-4">
                 <p class="made-in text-muted small" style="text-align: center">
                     <i style="color: white" class="fa fa-fw fa-code"></i> with
                     <i style="color: red" class="fa fa-fw fa-heart"></i> on Earth
                 </p>
             </div>
-            <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4">
+            <div class="col-4 col-sm-4 col-md-4 col-lg-4">
                 <p class="powered-by text-muted small pull-right">
                     Powered by <a href="http://sphinx-doc.org/">Sphinx {{ sphinx_version }}</a>
                     {%- if show_source and has_source and sourcename %}

+ 2 - 1
flaskbb/templates/_macros/navigation.html

@@ -19,7 +19,8 @@
     {% if item.content_type == NavigationContentType.link %}
     {{ topnav(item.endpoint, item.name, item.icon, '', item.active) }}
     {% else %}
-    {# skip unsupported types #}
+    {# custom markup provided #}
+    {{ item|safe }}
     {% endif %}
 {% endfor %}
 {% endmacro %}

+ 1 - 2
flaskbb/templates/forum/forum.html

@@ -4,7 +4,6 @@
 {% extends theme("layout.html") %}
 {% block content %}
 {% from theme('_macros/pagination.html') import render_pagination, topic_pages %}
-{% from theme('_macros/forum.html') import forum_meta, forum_row %}
 
 <div class="forum-view">
     <ol class="breadcrumb flaskbb-breadcrumb bg-light">
@@ -20,7 +19,7 @@
 
         {% if current_user|post_topic(forum) %}
         <div class="col-auto g-0">
-            <form class="inline-form" method="post" action="{{ url_for('forum.markread', forum_id=forum.id, slug=forum.slug) }}">
+            <form class="d-inline" method="post" action="{{ url_for('forum.markread', forum_id=forum.id, slug=forum.slug) }}">
                 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
                 <button class="btn btn-white">
                     <span class="fas fa-check fa-fw"></span> {% trans %}Mark as Read{% endtrans %}

+ 2 - 2
flaskbb/templates/forum/search_result.html

@@ -27,9 +27,9 @@
 
                     <!-- check if user is online or not -->
                     {% if post.user|is_online %}
-                    <div class="author-online" data-toggle="tooltip" data-placement="top" title="{% trans %}online{% endtrans %}"></div>
+                    <div class="author-online" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}online{% endtrans %}"></div>
                     {% else %}
-                    <div class="author-offline" data-toggle="tooltip" data-placement="top" title="{% trans %}offline{% endtrans %}"></div>
+                    <div class="author-offline" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}offline{% endtrans %}"></div>
                     {% endif %}
                     <div class="author-title"><h5>{{ post.user.primary_group.name }}</h5></div>
 

+ 9 - 9
flaskbb/templates/forum/topic.html

@@ -66,9 +66,9 @@
                     <div class="author-adminactions">
                         {# Ban user #}
                         {% if current_user|can_ban_user and not user.permissions['banned'] %}
-                        <form class="inline-form" method="post" action="{{ url_for('management.ban_user', user_id=user.id) }}">
+                        <form class="d-inline" method="post" action="{{ url_for('management.ban_user', user_id=user.id) }}">
                             <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
-                            <button class="btn btn-sm btn-danger">
+                            <button class="btn btn-sm btn-danger text-white">
                                 <span class="fas fa-ban"></span> {% trans %}Ban{% endtrans %}
                             </button>
                         </form>
@@ -76,7 +76,7 @@
 
                         {# Unban user #}
                         {% if current_user|can_ban_user and user.permissions['banned'] %}
-                        <form class="inline-form" method="post" action="{{ url_for('management.unban_user', user_id=user.id) }}">
+                        <form class="d-inline" method="post" action="{{ url_for('management.unban_user', user_id=user.id) }}">
                             <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
                             <button class="btn btn-sm btn-warning">
                                 <span class="fas fa-ban"></span> {% trans %}Unban{% endtrans %}
@@ -164,14 +164,14 @@
                             <!-- Delete Post/Topic -->
                             {% if topic.first_post_id == post.id %}
                                 {% if current_user|delete_topic(topic) %}
-                                <form class="inline-form" method="post" action="{{ url_for('forum.delete_topic', topic_id=topic.id, slug=topic.slug) }}">
+                                <form class="d-inline" method="post" action="{{ url_for('forum.delete_topic', topic_id=topic.id, slug=topic.slug) }}">
                                     <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
                                     <button class="btn btn-icon far fa-trash-alt text-red" name="confirmDialog" data-bs-toggle="tooltip" title="{% trans %}Delete this topic{% endtrans %}"></button>
                                 </form>
                                 {% endif %}
                             {% else %}
                                 {% if current_user|delete_post(post) %}
-                                <form class="inline-form" method="post" action="{{ url_for('forum.delete_post', post_id=post.id) }}">
+                                <form class="d-inline" method="post" action="{{ url_for('forum.delete_post', post_id=post.id) }}">
                                     <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
                                     <button  class="btn btn-icon far fa-trash-alt text-red" name="confirmDialog" data-bs-toggle="tooltip" title="{% trans %}Delete this post{% endtrans %}"></button>
                                 </form>
@@ -188,24 +188,24 @@
                             {% if current_user.permissions.get('makehidden') %}
                                 {% if topic.first_post_id == post.id %}
                                     {% if topic.hidden %}
-                                    <form class="inline-form" method="post" action="{{ url_for('forum.unhide_topic', topic_id=topic.id) }}">
+                                    <form class="d-inline" method="post" action="{{ url_for('forum.unhide_topic', topic_id=topic.id) }}">
                                         <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
                                         <button class="btn btn-icon far fa-eye" type="button" data-bs-toggle="modal" data-bs-target="#confirmModal" name="unhide" title="{% trans %}Unhide this topic{% endtrans %}"></button>
                                     </form>
                                     {% else %}
-                                    <form class="inline-form" method="post" action="{{ url_for('forum.hide_topic', topic_id=topic.id) }}">
+                                    <form class="d-inline" method="post" action="{{ url_for('forum.hide_topic', topic_id=topic.id) }}">
                                         <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
                                         <button class="btn btn-icon far fa-eye-slash" type="button" data-bs-toggle="modal" data-bs-target="#confirmModal" name="hide" title="{% trans %}Hide this topic{% endtrans %}"></button>
                                     </form>
                                     {% endif %}
                                 {% else %}
                                     {% if post.hidden %}
-                                    <form class="inline-form" method="post" action="{{ url_for('forum.unhide_post', post_id=post.id) }}">
+                                    <form class="d-inline" method="post" action="{{ url_for('forum.unhide_post', post_id=post.id) }}">
                                         <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
                                         <button class="btn btn-icon far fa-eye" type="button" data-bs-toggle="modal" data-bs-target="#confirmModal" name="unhide" title="{% trans %}Unhide this post{% endtrans %}"></button>
                                     </form>
                                     {% else %}
-                                    <form class="inline-form" method="post" action="{{ url_for('forum.hide_post', post_id=post.id) }}">
+                                    <form class="d-inline" method="post" action="{{ url_for('forum.hide_post', post_id=post.id) }}">
                                         <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
                                         <button class="btn btn-icon far fa-eye-slash" type="button" data-bs-toggle="modal" data-bs-target="#confirmModal" name="hide" title="{% trans %}Hide this post{% endtrans %}"></button>
                                     </form>

+ 1 - 1
flaskbb/templates/forum/topic_controls.html

@@ -15,7 +15,7 @@
 
             {% if current_user|delete_topic(topic) %}
             <li>
-                <form class="inline-form" method="post" action="{{ url_for('forum.delete_topic', topic_id=topic.id, slug=topic.slug) }}">
+                <form class="d-inline" method="post" action="{{ url_for('forum.delete_topic', topic_id=topic.id, slug=topic.slug) }}">
                     <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
                     <button class="btn btn-link">
                         <span class="fas fa-trash fa-fw"></span> {% trans %}Delete Topic{% endtrans %}

+ 18 - 18
flaskbb/templates/forum/topic_horizontal.html

@@ -44,9 +44,9 @@
 
                             <!-- check whether user is online or not -->
                             {% if user|is_online %}
-                            <div class="author-online" data-toggle="tooltip" data-placement="top" title="{% trans %}online{% endtrans %}"></div>
+                            <div class="author-online" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}online{% endtrans %}"></div>
                             {% else %}
-                            <div class="author-offline" data-toggle="tooltip" data-placement="top" title="{% trans %}offline{% endtrans %}"></div>
+                            <div class="author-offline" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}offline{% endtrans %}"></div>
                             {% endif %}
                             <div class="author-title"><h5>{{ user.primary_group.name }}</h5></div>
                             {{ run_hook("flaskbb_tpl_before_post_author_info", user=user, post=post) }}
@@ -104,28 +104,28 @@
 
                             {% if current_user|post_reply(topic) %}
                             <!-- Quick quote -->
-                                <a href="#" class="btn btn-icon icon-reply quote-btn" data-post-id="{{ post.id }}" data-toggle="tooltip" data-placement="top" title="{% trans %}Quote this post{% endtrans %}"></a>
+                                <a href="#" class="btn btn-icon icon-reply quote-btn" data-post-id="{{ post.id }}" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}Quote this post{% endtrans %}"></a>
                             <!-- Full quote/reply -->
-                                <a href="{{ url_for('forum.reply_post', topic_id=topic.id, post_id=post.id) }}" class="btn btn-icon icon-replyall" data-toggle="tooltip" data-placement="top" title="{% trans %}Full Reply{% endtrans %}"></a>
+                                <a href="{{ url_for('forum.reply_post', topic_id=topic.id, post_id=post.id) }}" class="btn btn-icon icon-replyall" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}Full Reply{% endtrans %}"></a>
                             {% endif %}
 
                             {% if current_user|edit_post(post) %}
                             <!-- Edit Post -->
-                            <a href="{{ url_for('forum.edit_post', post_id=post.id) }}" class="btn btn-icon icon-edit" data-toggle="tooltip" data-placement="top" title="{% trans %}Edit this post{% endtrans %}"></a>
+                            <a href="{{ url_for('forum.edit_post', post_id=post.id) }}" class="btn btn-icon icon-edit" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}Edit this post{% endtrans %}"></a>
                             {% endif %}
                             {% if topic.first_post == post %}
                                 {% if current_user|delete_topic(topic) %}
-                                <form class="inline-form" method="post" action="{{ url_for('forum.delete_topic', topic_id=topic.id, slug=topic.slug) }}">
+                                <form class="d-inline" method="post" action="{{ url_for('forum.delete_topic', topic_id=topic.id, slug=topic.slug) }}">
                                     <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
-                                    <button class="btn btn-icon icon-delete" data-toggle="tooltip" data-placement="top" title="{% trans %}Delete this topic{% endtrans %}"></button>
+                                    <button class="btn btn-icon icon-delete" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}Delete this topic{% endtrans %}"></button>
                                 </form>
                                 {% endif %}
                             {% else %}
                                 {% if current_user|delete_post(post) %}
                             <!-- Delete Post -->
-                                <form class="inline-form" method="post" action="{{ url_for('forum.delete_post', post_id=post.id) }}">
+                                <form class="d-inline" method="post" action="{{ url_for('forum.delete_post', post_id=post.id) }}">
                                     <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
-                                    <button  class="btn btn-icon icon-delete" data-toggle="tooltip" data-placement="top" title="{% trans %}Delete this post{% endtrans %}"></button>
+                                    <button  class="btn btn-icon icon-delete" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}Delete this post{% endtrans %}"></button>
                                 </form>
                                 {% endif %}
 
@@ -133,32 +133,32 @@
 
                             {% if current_user.is_authenticated %}
                             <!-- Report post -->
-                                <a href="{{ url_for('forum.report_post', post_id=post.id) }}" onclick="window.open(this.href, 'wio_window','width=500,height=500'); return false;" class="btn btn-icon icon-report" data-toggle="tooltip" data-placement="top" title="{% trans %}Report this post{% endtrans %}"></a>
+                                <a href="{{ url_for('forum.report_post', post_id=post.id) }}" onclick="window.open(this.href, 'wio_window','width=500,height=500'); return false;" class="btn btn-icon icon-report" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}Report this post{% endtrans %}"></a>
                             {% endif %}
 
                             {% if current_user.permissions.get('makehidden') %}
                                 {% if topic.first_post_id == post.id %}
                                     {% if topic.hidden %}
-                                    <form class="inline-form" method="post" action="{{ url_for('forum.unhide_topic', topic_id=topic.id) }}">
+                                    <form class="d-inline" method="post" action="{{ url_for('forum.unhide_topic', topic_id=topic.id) }}">
                                         <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
-                                        <button class="btn btn-icon fa fa-user" name="unhide" data-toggle="tooltip" data-placement="top" title="{% trans %}Unhide this topic{% endtrans %}"></button>
+                                        <button class="btn btn-icon fa fa-user" name="unhide" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}Unhide this topic{% endtrans %}"></button>
                                     </form>
                                     {% else %}
-                                    <form class="inline-form" method="post" action="{{ url_for('forum.hide_topic', topic_id=topic.id) }}">
+                                    <form class="d-inline" method="post" action="{{ url_for('forum.hide_topic', topic_id=topic.id) }}">
                                         <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
-                                        <button class="btn btn-icon fa fa-user-secret" name="hide" data-toggle="tooltip" data-placement="top" title="{% trans %}Hide this topic{% endtrans %}"></button>
+                                        <button class="btn btn-icon fa fa-user-secret" name="hide" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}Hide this topic{% endtrans %}"></button>
                                     </form>
                                     {% endif %}
                                 {% else %}
                                     {% if post.hidden %}
-                                    <form class="inline-form" method="post" action="{{ url_for('forum.unhide_post', post_id=post.id) }}">
+                                    <form class="d-inline" method="post" action="{{ url_for('forum.unhide_post', post_id=post.id) }}">
                                         <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
-                                        <button class="btn btn-icon fa fa-user" name="unhide" data-toggle="tooltip" data-placement="top" title="{% trans %}Unhide this post{% endtrans %}"></button>
+                                        <button class="btn btn-icon fa fa-user" name="unhide" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}Unhide this post{% endtrans %}"></button>
                                     </form>
                                     {% else %}
-                                    <form class="inline-form" method="post" action="{{ url_for('forum.hide_post', post_id=post.id) }}">
+                                    <form class="d-inline" method="post" action="{{ url_for('forum.hide_post', post_id=post.id) }}">
                                         <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
-                                        <button class="btn btn-icon fa fa-user-secret" name="hide" data-toggle="tooltip" data-placement="top" title="{% trans %}Hide this post{% endtrans %}"></button>
+                                        <button class="btn btn-icon fa fa-user-secret" name="hide" data-bs-toggle="tooltip" data-placement="top" title="{% trans %}Hide this post{% endtrans %}"></button>
                                     </form>
                                     {% endif %}
                                 {% endif %}

+ 85 - 98
flaskbb/templates/layout.html

@@ -83,107 +83,94 @@
                             }}
                         </ul>
 
-                        <ul class="navbar-nav">
-                            {{ topnavitems(
-                                run_hook(
-                                    "flaskbb_tpl_user_nav_loggedin_before",
-                                    is_markup=False
-                                ))
-                            }}
 
-                            {% if current_user and current_user.is_authenticated %}
-                            <!-- User Menu -->
-                            <li class="nav-item">
-                                <div class="btn-group">
-                                    <a class="btn btn-primary" href="{{ url_for('user.profile', username=current_user.username) }}">
-                                        <span class="far fa-user fa-fw"></span> {{ current_user.username }}
-                                    </a>
-                                    <button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-                                        <span class="visually-hidden">Toggle Dropdown</span>
-                                    </button>
-                                    <ul class="dropdown-menu">
-                                        <li>
-                                            <a class="dropdown-item" href="{{ url_for('forum.topictracker') }}">
-                                                <span class="fa fa-book fa-fw"></span> {% trans %}Topic Tracker{% endtrans %}
-                                            </a>
-                                        </li>
-
-                                        <li>
-                                            <hr class="dropdown-divider">
-                                        </li>
-
-                                        <li>
-                                            <a class="dropdown-item" href="{{ url_for('user.settings') }}"><span
-                                                    class="fa fa-cog fa-fw"></span> {% trans %}Settings{% endtrans %}
-                                            </a>
-                                        </li>
-
-                                        {% if current_user|is_admin_or_moderator %}
-                                        <li>
-                                            <a class="dropdown-item" href="{{ url_for('management.overview') }}">
-                                                <span class="fa fa-lock fa-fw"></span> {% trans %}Management{% endtrans %}
-                                            </a>
-                                        </li>
-
-                                        <li>
-                                            <hr class="dropdown-divider">
-                                        </li>
-                                        {% endif %}
-
-                                        <li>
-                                            <a class="dropdown-item" href="{{ url_for('auth.logout') }}">
-                                                <span class="fa fa-power-off fa-fw"></span> {% trans %}Logout{% endtrans %}
-                                            </a>
-                                        </li>
-                                    </ul>
-                                </div>
-                            </li>
-                            {{ topnavitems(
-                                run_hook(
-                                    "flaskbb_tpl_user_nav_loggedin_after",
-                                    user=current_user,
-                                    is_markup=False
-                                ))
-                            }}
+                        {% if current_user and current_user.is_authenticated %}
+
+                            {{ run_hook("flaskbb_tpl_user_nav_loggedin_before") }}
 
-                            {% else %}
+                            <!-- User Menu -->
+                            <div class="btn-group">
+                                <a class="btn btn-primary" href="{{ url_for('user.profile', username=current_user.username) }}">
+                                    <span class="far fa-user fa-fw"></span> {{ current_user.username }}
+                                </a>
+                                <button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
+                                    <span class="visually-hidden">Toggle Dropdown</span>
+                                </button>
+                                <ul class="dropdown-menu">
+                                    <li>
+                                        <a class="dropdown-item" href="{{ url_for('forum.topictracker') }}">
+                                            <span class="fa fa-book fa-fw"></span> {% trans %}Topic Tracker{% endtrans %}
+                                        </a>
+                                    </li>
+
+                                    <li>
+                                        <hr class="dropdown-divider">
+                                    </li>
+
+                                    <li>
+                                        <a class="dropdown-item" href="{{ url_for('user.settings') }}"><span
+                                                class="fa fa-cog fa-fw"></span> {% trans %}Settings{% endtrans %}
+                                        </a>
+                                    </li>
+
+                                    {% if current_user|is_admin_or_moderator %}
+                                    <li>
+                                        <a class="dropdown-item" href="{{ url_for('management.overview') }}">
+                                            <span class="fa fa-lock fa-fw"></span> {% trans %}Management{% endtrans %}
+                                        </a>
+                                    </li>
+
+                                    <li>
+                                        <hr class="dropdown-divider">
+                                    </li>
+                                    {% endif %}
+
+                                    <li>
+                                        <a class="dropdown-item" href="{{ url_for('auth.logout') }}">
+                                            <span class="fa fa-power-off fa-fw"></span> {% trans %}Logout{% endtrans %}
+                                        </a>
+                                    </li>
+                                </ul>
+                            </div>
+
+                            {{ run_hook("flaskbb_tpl_user_nav_loggedin_after", user=current_user, is_markup=False) }}
+
+                        {% else %}
                             <!-- Not logged in - Login/Register -->
-                            <li class="nav-item">
-                                <div class="btn-group">
-                                    <a class="btn btn-primary" href="{{ url_for('auth.login') }}">
-                                        <span class="fa fa-user fa-fw"></span> {% trans %}Login{% endtrans %}
-                                    </a>
-                                    <button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-                                        <span class="visually-hidden">Toggle Dropdown</span>
-                                    </button>
-                                    <ul class="dropdown-menu">
-                                        {# MAYBE(anr): Move this into a hook?? #}
-                                        {% if flaskbb_config["REGISTRATION_ENABLED"] %}
-                                        <li>
-                                            <a class="dropdown-item" href="{{ url_for('auth.register') }}">
-                                                <span class="fas fa-user-plus fa-fw"></span> {% trans %}Register{% endtrans %}
-                                            </a>
-                                        </li>
-                                        {% endif %}
-                                        <li>
-                                            <a class="dropdown-item" href="{{ url_for('auth.forgot_password') }}">
-                                                <span class="fas fa-undo fa-fw"></span> {% trans %}Reset Password{% endtrans %}
-                                            </a>
-                                        </li>
-                                        {% if flaskbb_config["ACTIVATE_ACCOUNT"] %}
-                                        <li>
-                                            <a class="dropdown-item"
-                                                href="{{ url_for('auth.request_activation_token') }}">
-                                                <span class="fas fa-fw fa-user-check"></span> {% trans %}Activate Account{% endtrans %}
-                                            </a>
-                                        </li>
-                                        {% endif %}
-
-                                    </ul>
-                                </div>
-                            </li>
-                            {% endif %}
-                        </ul>
+                            <div class="btn-group">
+                                <a class="btn btn-primary" href="{{ url_for('auth.login') }}">
+                                    <span class="fa fa-user fa-fw"></span> {% trans %}Login{% endtrans %}
+                                </a>
+                                <button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
+                                    <span class="visually-hidden">Toggle Dropdown</span>
+                                </button>
+                                <ul class="dropdown-menu">
+                                    {# MAYBE(anr): Move this into a hook?? #}
+                                    {% if flaskbb_config["REGISTRATION_ENABLED"] %}
+                                    <li>
+                                        <a class="dropdown-item" href="{{ url_for('auth.register') }}">
+                                            <span class="fas fa-user-plus fa-fw"></span> {% trans %}Register{% endtrans %}
+                                        </a>
+                                    </li>
+                                    {% endif %}
+                                    <li>
+                                        <a class="dropdown-item" href="{{ url_for('auth.forgot_password') }}">
+                                            <span class="fas fa-undo fa-fw"></span> {% trans %}Reset Password{% endtrans %}
+                                        </a>
+                                    </li>
+                                    {% if flaskbb_config["ACTIVATE_ACCOUNT"] %}
+                                    <li>
+                                        <a class="dropdown-item"
+                                            href="{{ url_for('auth.request_activation_token') }}">
+                                            <span class="fas fa-fw fa-user-check"></span> {% trans %}Activate Account{% endtrans %}
+                                        </a>
+                                    </li>
+                                    {% endif %}
+
+                                </ul>
+                            </div>
+                        {% endif %}
+
 
                     </div>
                 </div>

+ 8 - 3
flaskbb/templates/user/profile_layout.html

@@ -35,7 +35,7 @@
                                 {%- endif %}
                             </small>
                         </div>
-                        <div class="mt-2">
+                        <div class="mt-2 profile-actions">
 
                             {% if current_user|can_edit_user %}
                             <a class="btn btn-sm btn-primary" href="{{ url_for('management.edit_user', user_id=user.id)}}">
@@ -61,9 +61,11 @@
                             </form>
                             {% endif %}
 
+                            {{ run_hook("flaskbb_tpl_profile_actions", user=user) }}
+
                         </div>
                     </div>
-                    <div class="text-sm-right col-2">
+                    <div class="text-sm-right col-2 profile-stats">
                         <!-- TODO: Make this nicer -->
                         <div class="row">
                             <div class="col text-end text-nowrap" style="max-width: 80px;">Joined:</div>
@@ -79,6 +81,9 @@
                             <div class="col text-end text-nowrap" style="max-width: 80px;">Topics:</div>
                             <div class="col ps-0 float-start text-nowrap">{{ user.topic_count }}</div>
                         </div>
+
+                        {{ run_hook("flaskbb_tpl_profile_stats", user=user) }}
+
                     </div>
                 </div>
 
@@ -87,7 +92,7 @@
 
                 {{ sidebar(
                     run_hook(
-                        "flaskbb_tpl_profile_sidebar_links",
+                        "flaskbb_tpl_profile_links",
                         user=user,
                         is_markup=False
                     ),

+ 4 - 0
flaskbb/themes/aurora/src/scss/_button.scss

@@ -20,6 +20,10 @@
     );
 }
 
+.btn-danger {
+    color: $white;
+}
+
 .btn-xs {
     $btn-xs-py: 1px;
     $btn-xs-px: 5px;

+ 37 - 7
flaskbb/themes/aurora/src/scss/_misc.scss

@@ -63,6 +63,23 @@ body {
     border-left: 1px solid $border-color;
     border-right: 1px solid $border-color;
     margin-bottom: 1rem;
+
+    &.navbar {
+        padding-top: 0;
+        padding-bottom: 0;
+    }
+
+    .nav-link {
+        padding: 1rem 1rem;
+
+        &:hover,
+        &.active,
+        &.dropdown-toggle.show {
+            background-color: $fbb-navigation-hover-color;
+        }
+    }
+
+
 }
 
 .flaskbb-breadcrumb {
@@ -97,13 +114,6 @@ p.flaskbb-stats {
     padding: 0;
 }
 
-.inline-form {
-    display: inline;
-}
-
-.form {
-    padding-bottom: 1.5em;
-}
 
 .cheatsheet {
     h2 {
@@ -133,3 +143,23 @@ p.flaskbb-stats {
         }
     }
 }
+
+.EasyMDEContainer {
+
+    .CodeMirror {
+        border-color: $border-color !important;
+    }
+
+    .editor-toolbar {
+        border-color: $border-color;
+        //background-color: #e8ecf1;
+    }
+
+    .CodeMirror-focused {
+        //color: #212529;
+        //background-color: #f6f9fc;
+        border-color: #99bddb;
+        outline: 0;
+        box-shadow: 0 0 0 0.25rem rgba(51, 122, 183, 0.25);
+    }
+}

+ 4 - 0
flaskbb/themes/aurora/src/scss/_text.scss

@@ -37,3 +37,7 @@
         color: $light-blue;
     }
 }
+
+.text-small {
+    font-size: .75rem;
+}

+ 39 - 24
flaskbb/themes/aurora/src/scss/_variables.scss

@@ -1,15 +1,30 @@
-// bootstrap3 colros
+// bootstrap5 colors
+//$blue: #0d6efd;
+//$indigo: #6610f2;
+//$purple: #6f42c1;
+//$pink: #d63384;
+//$red: #dc3545;
+//$orange: #fd7e14;
+//$yellow: #ffc107;
+$green: #198754;
+//$teal: #20c997;
+//$cyan: #0dcaf0;
+
+// flaskbb + bootstrap3 colors
 $blue: #337ab7;
+//$green: #5cb85c;
+$red: #d9534f;
 $fresh-blue: #0088cc;
 $light-blue: #5bc0de;
-$green: #5cb85c;
 $dark-green: #3C763D;
 $orange: #f0ad4e;
-$red: #d9534f;
 $gray: #555;
+$black: #000;
+$white: #fff;
 
 
 // FlaskBB Variables
+$fbb-color: #212529; // bs5 gray-900
 $fbb-bg: #f6f9fc;
 $fbb-border-color: #cad7e1;
 $fbb-active-bg: #e7e7e7;
@@ -19,6 +34,7 @@ $fbb-link-hover-color: #275b89;
 $fbb-bg-dark: #f6f9fc;
 $fbb-bg-light: #fff;
 
+
 // header && footer colors
 $fbb-header-title-color: #fff;
 $fbb-header-subtitle-color: #E8F1F2;
@@ -49,7 +65,6 @@ $post-signature-border: $page-meta-bg;
 $post-footer-border: $fbb-border-color;
 $post-footer-bg: $page-bg;
 
-
 $author-box-bg: #e8ecf1;
 $author-online: $green;
 $author-offline: $gray;
@@ -62,42 +77,42 @@ $author-offline: $gray;
 // https://github.com/twbs/bootstrap/blob/main/scss/_variables.scss
 // raw: https://raw.githubusercontent.com/twbs/bootstrap/main/scss/_variables.scss
 //
-
 $body-bg:                   $fbb-bg;
+$body-color:                $fbb-color;
 
 // Links
-//
-// Style anchor elements.
-$link-color:                              $fbb-link-color !default;
-$link-decoration:                         none !default;
-$link-shade-percentage:                   20% !default;
-$link-hover-decoration:                   underline !default;
+$link-color:                              $fbb-link-color;
+$link-decoration:                         none;
+$link-shade-percentage:                   20%;
+$link-hover-decoration:                   underline;
 
 
-// Components
-//
-// Define common padding and border radius sizes and more.
-
-$border-width:                1px !default;
+// Border
+$border-width:                1px;
 $border-widths: (
   1: 1px,
   2: 2px,
   3: 3px,
   4: 4px,
   5: 5px
-) !default;
+);
 
 $border-color:                $fbb-border-color;
-$border-radius:               .25rem !default;
-$border-radius-sm:            .2rem !default;
-$border-radius-lg:            .3rem !default;
-$border-radius-pill:          50rem !default;
+$border-radius:               .25rem;
+$border-radius-sm:            .2rem;
+$border-radius-lg:            .3rem;
+$border-radius-pill:          50rem;
 
 
 // Cards
 $card-border-radius: none;
 
+
 // Navbar
-$navbar-light-color:                $link-color;
-$navbar-light-hover-color:          $link-hover-decoration;
-$navbar-light-active-color:         $link-color;
+$navbar-light-color:                $fbb-color;
+$navbar-light-hover-color:          $fbb-color;
+$navbar-light-active-color:         $fbb-color;
+
+
+// Forms
+$input-bg: $white;  // default is $body-bg